@yinuo-ngm/server 1.0.15 → 1.0.16

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 (326) hide show
  1. package/lib/plugins/error-handler.plugin.js +5 -0
  2. package/lib/routes/api-client/hub-token.routes.js +22 -0
  3. package/lib/routes/index.js +2 -0
  4. package/lib/routes/node-version.routes.d.ts +2 -0
  5. package/lib/routes/node-version.routes.js +56 -0
  6. package/lib/routes/project.routes.js +5 -0
  7. package/lib/routes/sprite-browse.routes.js +19 -5
  8. package/lib/routes/sprite.routes.js +17 -11
  9. package/lib/routes/static-files.routes.js +16 -0
  10. package/lib/routes/task.routes.js +7 -0
  11. package/package.json +3 -3
  12. package/www/3rdpartylicenses.txt +14 -66
  13. package/www/browser/chunk-2BZRE4G7.js +1 -0
  14. package/www/browser/chunk-2X3MRS27.js +1 -0
  15. package/www/browser/chunk-4KETC6EB.js +1 -0
  16. package/www/browser/chunk-5T5KA5PG.js +1 -0
  17. package/www/browser/chunk-6CGHNKJI.js +1 -0
  18. package/www/browser/chunk-76TVIB33.js +63 -0
  19. package/www/browser/chunk-7J24TP36.js +1 -0
  20. package/www/browser/chunk-ACAZUX6C.js +1 -0
  21. package/www/browser/chunk-B6MBYCXI.js +1 -0
  22. package/www/browser/chunk-BYEU6KGP.js +2 -0
  23. package/www/browser/chunk-CZ5AZ3VW.js +1 -0
  24. package/www/browser/chunk-DW7F5PEA.js +1 -0
  25. package/www/browser/chunk-DXF7BVK5.js +1 -0
  26. package/www/browser/chunk-EEVPZGEY.js +1 -0
  27. package/www/browser/chunk-G2W3B7TJ.js +1 -0
  28. package/www/browser/chunk-GDWS2L66.js +1 -0
  29. package/www/browser/chunk-HFZLJHYR.js +1 -0
  30. package/www/browser/chunk-HGONFYP6.js +1 -0
  31. package/www/browser/chunk-HHBPULJW.js +2 -0
  32. package/www/browser/chunk-HRXCR3IN.js +1 -0
  33. package/www/browser/chunk-INL2PELS.js +1 -0
  34. package/www/browser/chunk-JHMEKUZ5.js +1 -0
  35. package/www/browser/chunk-JU3TEDBV.js +37 -0
  36. package/www/browser/chunk-JZULA5JV.js +1 -0
  37. package/www/browser/chunk-KVFR7GFV.js +20 -0
  38. package/www/browser/chunk-L5D75AMV.js +1 -0
  39. package/www/browser/chunk-L7TMCSHV.js +1 -0
  40. package/www/browser/chunk-LQ5OXSW7.js +3 -0
  41. package/www/browser/chunk-MVQTKINJ.js +1 -0
  42. package/www/browser/chunk-N4LRZJBP.js +1 -0
  43. package/www/browser/chunk-O2EYEF7J.js +1 -0
  44. package/www/browser/chunk-OMDHJIUB.js +1 -0
  45. package/www/browser/chunk-OWUAAOHW.js +2 -0
  46. package/www/browser/chunk-PIK5YPIB.js +1 -0
  47. package/www/browser/chunk-RHLQRQDK.js +9 -0
  48. package/www/browser/chunk-RW2JPJV7.js +1 -0
  49. package/www/browser/chunk-S3SJ4VVM.js +11 -0
  50. package/www/browser/chunk-SIVPP74B.js +0 -0
  51. package/www/browser/chunk-SPRWNZHF.js +15 -0
  52. package/www/browser/chunk-SQQNR223.js +1 -0
  53. package/www/browser/chunk-SVQWPHF5.js +1 -0
  54. package/www/browser/chunk-SYCNSLAW.js +4 -0
  55. package/www/browser/chunk-T3KK7ZXB.js +2 -0
  56. package/www/browser/chunk-TMX5TTV3.js +1 -0
  57. package/www/browser/chunk-UFY3FLDK.js +1 -0
  58. package/www/browser/chunk-UJOHBN2Y.js +1 -0
  59. package/www/browser/chunk-UQGCUFNM.js +1 -0
  60. package/www/browser/chunk-UXXWRMM6.js +1 -0
  61. package/www/browser/chunk-UZRJGJTD.js +2 -0
  62. package/www/browser/chunk-WD4IAQR3.js +1 -0
  63. package/www/browser/chunk-WF2QTF5L.js +1 -0
  64. package/www/browser/chunk-WI67LAOV.js +4 -0
  65. package/www/browser/chunk-WNCM6QKB.js +1 -0
  66. package/www/browser/chunk-XJ5KZQNN.js +1 -0
  67. package/www/browser/chunk-YETDFSQE.js +1 -0
  68. package/www/browser/chunk-YMTC5GZK.js +1 -0
  69. package/www/browser/chunk-YVZHJ76K.js +1 -0
  70. package/www/browser/chunk-ZNTJRLVH.js +1 -0
  71. package/www/browser/dark.css +1 -30433
  72. package/www/browser/default.css +1 -30149
  73. package/www/browser/index.html +3 -3
  74. package/www/browser/main-6LN5C22E.js +34 -0
  75. package/www/browser/scripts-U25HCVEI.js +6 -0
  76. package/www/browser/styles-ROAHD7MY.css +1 -0
  77. package/www/browser/add-widget-drawer.component.css.map +0 -7
  78. package/www/browser/advanced-editor.component.css.map +0 -7
  79. package/www/browser/api-client.component.css.map +0 -7
  80. package/www/browser/api-history-drawer.component.css.map +0 -7
  81. package/www/browser/app.css.map +0 -7
  82. package/www/browser/attachment-viewer.component.css.map +0 -7
  83. package/www/browser/auth-editor.component.css.map +0 -7
  84. package/www/browser/body-editor.component.css.map +0 -7
  85. package/www/browser/chunk-2YSUXBGC.js +0 -627
  86. package/www/browser/chunk-2YSUXBGC.js.map +0 -1
  87. package/www/browser/chunk-3G2GEOPV.js +0 -456
  88. package/www/browser/chunk-3G2GEOPV.js.map +0 -1
  89. package/www/browser/chunk-3L72DF3R.js +0 -1683
  90. package/www/browser/chunk-3L72DF3R.js.map +0 -1
  91. package/www/browser/chunk-3MCIETCQ.js +0 -8279
  92. package/www/browser/chunk-3MCIETCQ.js.map +0 -1
  93. package/www/browser/chunk-665WC4RU.js +0 -5383
  94. package/www/browser/chunk-665WC4RU.js.map +0 -1
  95. package/www/browser/chunk-6QMSEZPT.js +0 -10044
  96. package/www/browser/chunk-6QMSEZPT.js.map +0 -1
  97. package/www/browser/chunk-6TBQERYX.js +0 -280
  98. package/www/browser/chunk-6TBQERYX.js.map +0 -1
  99. package/www/browser/chunk-6UW4MRJZ.js +0 -43
  100. package/www/browser/chunk-6UW4MRJZ.js.map +0 -7
  101. package/www/browser/chunk-6XUMIL3W.js +0 -5495
  102. package/www/browser/chunk-6XUMIL3W.js.map +0 -1
  103. package/www/browser/chunk-724YOJI3.js +0 -903
  104. package/www/browser/chunk-724YOJI3.js.map +0 -1
  105. package/www/browser/chunk-766T7YES.js +0 -437
  106. package/www/browser/chunk-766T7YES.js.map +0 -1
  107. package/www/browser/chunk-7FC7DN65.js +0 -728
  108. package/www/browser/chunk-7FC7DN65.js.map +0 -1
  109. package/www/browser/chunk-APGQRYWX.js +0 -156
  110. package/www/browser/chunk-APGQRYWX.js.map +0 -7
  111. package/www/browser/chunk-AQHSGTHS.js +0 -1960
  112. package/www/browser/chunk-AQHSGTHS.js.map +0 -1
  113. package/www/browser/chunk-CTOEAJQK.js +0 -40
  114. package/www/browser/chunk-CTOEAJQK.js.map +0 -7
  115. package/www/browser/chunk-DEGQJKKZ.js +0 -409
  116. package/www/browser/chunk-DEGQJKKZ.js.map +0 -1
  117. package/www/browser/chunk-DIJX2663.js +0 -1166
  118. package/www/browser/chunk-DIJX2663.js.map +0 -1
  119. package/www/browser/chunk-E4XD4GLT.js +0 -427
  120. package/www/browser/chunk-E4XD4GLT.js.map +0 -1
  121. package/www/browser/chunk-EQOY6A3M.js +0 -212
  122. package/www/browser/chunk-EQOY6A3M.js.map +0 -1
  123. package/www/browser/chunk-ETTBRXVA.js +0 -2643
  124. package/www/browser/chunk-ETTBRXVA.js.map +0 -1
  125. package/www/browser/chunk-FLSUSPBD.js +0 -5569
  126. package/www/browser/chunk-FLSUSPBD.js.map +0 -1
  127. package/www/browser/chunk-FZNHBEAZ.js +0 -102
  128. package/www/browser/chunk-FZNHBEAZ.js.map +0 -1
  129. package/www/browser/chunk-GJC7CZIJ.js +0 -361
  130. package/www/browser/chunk-GJC7CZIJ.js.map +0 -7
  131. package/www/browser/chunk-GMCNMOTD.js +0 -844
  132. package/www/browser/chunk-GMCNMOTD.js.map +0 -7
  133. package/www/browser/chunk-H43HGCRW.js +0 -198
  134. package/www/browser/chunk-H43HGCRW.js.map +0 -7
  135. package/www/browser/chunk-J447GBHM.js +0 -160
  136. package/www/browser/chunk-J447GBHM.js.map +0 -1
  137. package/www/browser/chunk-JN3VOWP7.js +0 -384
  138. package/www/browser/chunk-JN3VOWP7.js.map +0 -1
  139. package/www/browser/chunk-KSHAGY2M.js +0 -399
  140. package/www/browser/chunk-KSHAGY2M.js.map +0 -7
  141. package/www/browser/chunk-KV72AKOD.js +0 -59
  142. package/www/browser/chunk-KV72AKOD.js.map +0 -7
  143. package/www/browser/chunk-LAVMY2SJ.js +0 -26
  144. package/www/browser/chunk-LAVMY2SJ.js.map +0 -7
  145. package/www/browser/chunk-LLRVGHG5.js +0 -73
  146. package/www/browser/chunk-LLRVGHG5.js.map +0 -7
  147. package/www/browser/chunk-LPME4AJ3.js +0 -196
  148. package/www/browser/chunk-LPME4AJ3.js.map +0 -1
  149. package/www/browser/chunk-LVPSURVU.js +0 -4615
  150. package/www/browser/chunk-LVPSURVU.js.map +0 -1
  151. package/www/browser/chunk-MMPO7QLO.js +0 -4146
  152. package/www/browser/chunk-MMPO7QLO.js.map +0 -7
  153. package/www/browser/chunk-O7LB6VFM.js +0 -1953
  154. package/www/browser/chunk-O7LB6VFM.js.map +0 -1
  155. package/www/browser/chunk-P5CWA4FO.js +0 -685
  156. package/www/browser/chunk-P5CWA4FO.js.map +0 -1
  157. package/www/browser/chunk-RBWIWNTL.js +0 -203
  158. package/www/browser/chunk-RBWIWNTL.js.map +0 -7
  159. package/www/browser/chunk-RUXJCM3V.js +0 -26199
  160. package/www/browser/chunk-RUXJCM3V.js.map +0 -1
  161. package/www/browser/chunk-S77VVYUZ.js +0 -168
  162. package/www/browser/chunk-S77VVYUZ.js.map +0 -1
  163. package/www/browser/chunk-SCXPYFOB.js +0 -4316
  164. package/www/browser/chunk-SCXPYFOB.js.map +0 -1
  165. package/www/browser/chunk-SS73S33S.js +0 -471
  166. package/www/browser/chunk-SS73S33S.js.map +0 -7
  167. package/www/browser/chunk-T6UAOWNP.js +0 -600
  168. package/www/browser/chunk-T6UAOWNP.js.map +0 -1
  169. package/www/browser/chunk-TEW4MY4J.js +0 -148
  170. package/www/browser/chunk-TEW4MY4J.js.map +0 -7
  171. package/www/browser/chunk-TVORF3SF.js +0 -82
  172. package/www/browser/chunk-TVORF3SF.js.map +0 -7
  173. package/www/browser/chunk-UAN42EUZ.js +0 -2147
  174. package/www/browser/chunk-UAN42EUZ.js.map +0 -1
  175. package/www/browser/chunk-ULOHDK7Y.js +0 -1
  176. package/www/browser/chunk-ULOHDK7Y.js.map +0 -7
  177. package/www/browser/chunk-UYJ3FVRV.js +0 -3978
  178. package/www/browser/chunk-UYJ3FVRV.js.map +0 -1
  179. package/www/browser/chunk-VXHZMSDM.js +0 -5509
  180. package/www/browser/chunk-VXHZMSDM.js.map +0 -1
  181. package/www/browser/chunk-VYNQPZQO.js +0 -281
  182. package/www/browser/chunk-VYNQPZQO.js.map +0 -1
  183. package/www/browser/chunk-W3J23PZI.js +0 -9213
  184. package/www/browser/chunk-W3J23PZI.js.map +0 -1
  185. package/www/browser/chunk-W5HGHCQT.js +0 -1642
  186. package/www/browser/chunk-W5HGHCQT.js.map +0 -7
  187. package/www/browser/chunk-XF5H7E4L.js +0 -4723
  188. package/www/browser/chunk-XF5H7E4L.js.map +0 -1
  189. package/www/browser/chunk-XNFNEBMY.js +0 -398
  190. package/www/browser/chunk-XNFNEBMY.js.map +0 -7
  191. package/www/browser/chunk-XQY5SPGI.js +0 -30811
  192. package/www/browser/chunk-XQY5SPGI.js.map +0 -1
  193. package/www/browser/chunk-Y7JBZHNK.js +0 -514
  194. package/www/browser/chunk-Y7JBZHNK.js.map +0 -1
  195. package/www/browser/chunk-YWHRP4X3.js +0 -406
  196. package/www/browser/chunk-YWHRP4X3.js.map +0 -1
  197. package/www/browser/chunk-Z7FJIV62.js +0 -95
  198. package/www/browser/chunk-Z7FJIV62.js.map +0 -7
  199. package/www/browser/chunk-ZBZHXS46.js +0 -1674
  200. package/www/browser/chunk-ZBZHXS46.js.map +0 -1
  201. package/www/browser/chunk-ZZA5NVAI.js +0 -735
  202. package/www/browser/chunk-ZZA5NVAI.js.map +0 -1
  203. package/www/browser/collection-modal.component.css.map +0 -7
  204. package/www/browser/collection-tree-item.component.css.map +0 -7
  205. package/www/browser/collection-tree.component.css.map +0 -7
  206. package/www/browser/config-change-bar-component.css.map +0 -7
  207. package/www/browser/config-item-component.css.map +0 -7
  208. package/www/browser/config-nav-component.css.map +0 -7
  209. package/www/browser/config-section-component.css.map +0 -7
  210. package/www/browser/create-summary-aside.component.css.map +0 -7
  211. package/www/browser/curl-actions.component.css.map +0 -7
  212. package/www/browser/dark.css.map +0 -7
  213. package/www/browser/dashboard-canvas.component.css.map +0 -7
  214. package/www/browser/dashboard.component.css.map +0 -7
  215. package/www/browser/default.css.map +0 -7
  216. package/www/browser/detail-item-card.component.css.map +0 -7
  217. package/www/browser/ellipsis-text.component.css.map +0 -7
  218. package/www/browser/env-modal.component.css.map +0 -7
  219. package/www/browser/env-picker.component.css.map +0 -7
  220. package/www/browser/feedback.component.css.map +0 -7
  221. package/www/browser/fs-explorer.component.css.map +0 -7
  222. package/www/browser/git-import-modal.component.css.map +0 -7
  223. package/www/browser/hub-v2-personal-token-modal.component.css.map +0 -7
  224. package/www/browser/issue-action-area.component.css.map +0 -7
  225. package/www/browser/issue-add-participants-dialog.component.css.map +0 -7
  226. package/www/browser/issue-assign-dialog.component.css.map +0 -7
  227. package/www/browser/issue-attachment-area.component.css.map +0 -7
  228. package/www/browser/issue-base-info-area.component.css.map +0 -7
  229. package/www/browser/issue-branches.component.css.map +0 -7
  230. package/www/browser/issue-close-dialog.component.css.map +0 -7
  231. package/www/browser/issue-collaborators-panel.component.css.map +0 -7
  232. package/www/browser/issue-comment-editor.component.css.map +0 -7
  233. package/www/browser/issue-create-branch-dialog.component.css.map +0 -7
  234. package/www/browser/issue-description-area.component.css.map +0 -7
  235. package/www/browser/issue-detail.component.css.map +0 -7
  236. package/www/browser/issue-resolve-dialog.component.css.map +0 -7
  237. package/www/browser/issue-start-own-branch-dialog.component.css.map +0 -7
  238. package/www/browser/issues-list-table.component.css.map +0 -7
  239. package/www/browser/issues.component.css.map +0 -7
  240. package/www/browser/kill-port-widget.component.css.map +0 -7
  241. package/www/browser/kv-table.component.css.map +0 -7
  242. package/www/browser/layout-footer.component.css.map +0 -7
  243. package/www/browser/layout-header.component.css.map +0 -7
  244. package/www/browser/layout-menu.component.css.map +0 -7
  245. package/www/browser/layout-project-nav.component.css.map +0 -7
  246. package/www/browser/layout-sidebar.component.css.map +0 -7
  247. package/www/browser/layout.component.css.map +0 -7
  248. package/www/browser/less-viewport-component.css.map +0 -7
  249. package/www/browser/main.js +0 -1872
  250. package/www/browser/main.js.map +0 -1
  251. package/www/browser/markdown-viewer.component.css.map +0 -7
  252. package/www/browser/news-feed-widget.component.css.map +0 -7
  253. package/www/browser/ng-devtool.component.css.map +0 -7
  254. package/www/browser/nginx-config-editor.component.css.map +0 -7
  255. package/www/browser/nginx-log-viewer.component.css.map +0 -7
  256. package/www/browser/nginx-secondary-logs-tab.component.css.map +0 -7
  257. package/www/browser/nginx-secondary-perf-tab.component.css.map +0 -7
  258. package/www/browser/nginx-secondary-settings-tab.component.css.map +0 -7
  259. package/www/browser/nginx-secondary-ssl-tab.component.css.map +0 -7
  260. package/www/browser/nginx-secondary-test-tab.component.css.map +0 -7
  261. package/www/browser/nginx-secondary-traffic-tab.component.css.map +0 -7
  262. package/www/browser/nginx-secondary-upstream-tab.component.css.map +0 -7
  263. package/www/browser/nginx-section-card.component.css.map +0 -7
  264. package/www/browser/nginx-server-drawer.component.css.map +0 -7
  265. package/www/browser/nginx-server-list.component.css.map +0 -7
  266. package/www/browser/nginx-stat-card.component.css.map +0 -7
  267. package/www/browser/nginx.component.css.map +0 -7
  268. package/www/browser/page-layout.component.css.map +0 -7
  269. package/www/browser/pick-workspace-modal.component.css.map +0 -7
  270. package/www/browser/polyfills.js +0 -26584
  271. package/www/browser/polyfills.js.map +0 -7
  272. package/www/browser/project-conf.component.css.map +0 -7
  273. package/www/browser/project-create-modal.component.css.map +0 -7
  274. package/www/browser/project-create.component.css.map +0 -7
  275. package/www/browser/project-deps.component.css.map +0 -7
  276. package/www/browser/project-edit-modal.component.css.map +0 -7
  277. package/www/browser/project-import.component.css.map +0 -7
  278. package/www/browser/project-item-popover.component.css.map +0 -7
  279. package/www/browser/project-item.component.css.map +0 -7
  280. package/www/browser/project-list.component.css.map +0 -7
  281. package/www/browser/projects.component.css.map +0 -7
  282. package/www/browser/quick-task-widget.component.css.map +0 -7
  283. package/www/browser/rd-action-area.component.css.map +0 -7
  284. package/www/browser/rd-advance-stage-dialog.component.css.map +0 -7
  285. package/www/browser/rd-block-dialog.component.css.map +0 -7
  286. package/www/browser/rd-create-dialog.component.css.map +0 -7
  287. package/www/browser/rd-detail.component.css.map +0 -7
  288. package/www/browser/rd-item-card.component.css.map +0 -7
  289. package/www/browser/rd-list-board.component.css.map +0 -7
  290. package/www/browser/rd-list-table.component.css.map +0 -7
  291. package/www/browser/rd.component.css.map +0 -7
  292. package/www/browser/request-collections.component.css.map +0 -7
  293. package/www/browser/request-editor.component.css.map +0 -7
  294. package/www/browser/request-list-item.component.css.map +0 -7
  295. package/www/browser/request-list.component.css.map +0 -7
  296. package/www/browser/request-tabs-bar.component.css.map +0 -7
  297. package/www/browser/request-tabs.component.css.map +0 -7
  298. package/www/browser/request-urlbar.component.css.map +0 -7
  299. package/www/browser/response-viewer.component.css.map +0 -7
  300. package/www/browser/scripts.js +0 -245
  301. package/www/browser/scripts.js.map +0 -7
  302. package/www/browser/setting.component.css.map +0 -7
  303. package/www/browser/sprite-conf-modal.component.css.map +0 -7
  304. package/www/browser/sprite-icons-panel-component.css.map +0 -7
  305. package/www/browser/sprite-images-panel-component.css.map +0 -7
  306. package/www/browser/sprite-result-tabs.component.css.map +0 -7
  307. package/www/browser/sprite-viewport-component.css.map +0 -7
  308. package/www/browser/sprite.component.css.map +0 -7
  309. package/www/browser/step-advance.component.css.map +0 -7
  310. package/www/browser/step-basic.component.css.map +0 -7
  311. package/www/browser/step-config.component.css.map +0 -7
  312. package/www/browser/step-features.component.css.map +0 -7
  313. package/www/browser/step-preset.component.css.map +0 -7
  314. package/www/browser/step-summary-aside.component.css.map +0 -7
  315. package/www/browser/styles.css +0 -258
  316. package/www/browser/styles.css.map +0 -7
  317. package/www/browser/system-log.component.css.map +0 -7
  318. package/www/browser/task-actions.component.css.map +0 -7
  319. package/www/browser/task-console.component.css.map +0 -7
  320. package/www/browser/task-header.component.css.map +0 -7
  321. package/www/browser/task-list.component.css.map +0 -7
  322. package/www/browser/tasks.component.css.map +0 -7
  323. package/www/browser/terminal-view.component.css.map +0 -7
  324. package/www/browser/welcome-widget.component.css.map +0 -7
  325. package/www/browser/widget-base.component.css.map +0 -7
  326. package/www/browser/widget-host.component.css.map +0 -7
@@ -1 +0,0 @@
1
- {"version":3,"sources":["angular:jit:template:src\\app\\pages\\rd\\rd.component.html","angular:jit:style:src\\app\\pages\\rd\\rd.component.less","node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-flex.mjs","angular:jit:style:inline:src\\app\\pages\\rd\\dialog\\rd-advance-stage-dialog\\rd-advance-stage-dialog.component.ts;CiAgICAuc3RhZ2Utc2VsZWN0ewogICAgICB3aWR0aDogMTAwJTsKICAgIH0KICAgIC5lbXB0eXsKICAgICAgZm9udC1zaXplOiAwLjhyZW07CiAgICAgIGNvbG9yOiBncmV5OwogICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgIH0KICA=","src/app/pages/rd/dialog/rd-advance-stage-dialog/rd-advance-stage-dialog.component.ts","angular:jit:style:inline:src\\app\\pages\\rd\\dialog\\rd-block-dialog\\rd-block-dialog.component.ts;CiAgICAubW9kYWwtdGl0bGUgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgfQogICAgLm1vZGFsLXN1YnRpdGxlIHsKICAgICAgY29sb3I6ICM5OTk7CiAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgICB9CiAgICAuYmxvY2staW5wdXQgewogICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICB9CiAg","src/app/pages/rd/dialog/rd-block-dialog/rd-block-dialog.component.ts","angular:jit:template:src\\app\\pages\\rd\\dialog\\rd-create-dialog\\rd-create-dialog.component.html","angular:jit:style:src\\app\\pages\\rd\\dialog\\rd-create-dialog\\rd-create-dialog.component.less","node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-time-picker.mjs","node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-date-picker.mjs","src/app/pages/rd/dialog/rd-create-dialog/rd-create-dialog.component.ts","angular:jit:style:inline:src\\app\\pages\\rd\\rd-detail\\rd-detail.component.ts;CiAgICAudGl0bGUtd3JhcCB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgLnN1YnRpdGxlIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDFyZW07CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgICAgICAgcGFkZGluZzogM3B4IDhweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBiYWNrZ3JvdW5kOiAjZjFmNWY5OwogICAgICAgIGNvbG9yOiAjNjQ3NDhiOwogICAgICB9CiAgICB9CiAgICAud3JhcC10aXRsZSB7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2JiYmJiYjsKICAgIH0KICAgIC5kZXRhaWwtd3JhcCB7CiAgICAgIC5kZXRhaWwtaXRlbSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgfQogICAgICAuZWRpdC1iYXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBlbmQ7CiAgICAgICAgLmVkaXQtYnRuIHsKICAgICAgICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICAgICAgfQogICAgICB9CiAgICAgIC5lZGl0LWFyZWEgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDEycHg7CiAgICAgIH0KICAgICAgLnJkLWxvZy1pdGVtIHsKICAgICAgICBwYWRkaW5nOiA0cHggMCAwOwogICAgICAgIC5tZXRhIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgZ2FwOiAwLjg3NXJlbTsKICAgICAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNjUpOwogICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4OwogICAgICAgICAgLm9wZXJhdG9yIHsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgICB9CiAgICAgICAgICAuY29udGVudCB7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODUpOwogICAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgICB9CiAgICAgICAgICAudGltZSB7CiAgICAgICAgICAgIGZvcm5zaXplOiAxMHB4OwogICAgICAgICAgICBmb250LXdlaWdodDogMzAwOwogICAgICAgICAgICBjb2xvcjogI2JiYmJiYjsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC5lbXB0eSB7CiAgICAgICAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQ1KTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICA6Om5nLWRlZXAgLmFudC1kZXNjcmlwdGlvbnMtaXRlbS1jb250ZW50LAogICAgOjpuZy1kZWVwIC5hbnQtZGVzY3JpcHRpb25zLWl0ZW0tbGFiZWwgewogICAgICBmb250LXNpemU6IDAuODc1cmVtOwogICAgfQogIA==","angular:jit:template:src\\app\\pages\\rd\\rd-detail\\rd-action-area\\rd-action-area.component.html","angular:jit:style:src\\app\\pages\\rd\\rd-detail\\rd-action-area\\rd-action-area.component.less","src/app/pages/rd/services/rd-permission.service.ts","node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-slider.mjs","src/app/pages/rd/rd-detail/rd-action-area/rd-action-area.component.ts","src/app/pages/rd/rd-detail/rd-detail.component.ts","angular:jit:style:src\\app\\pages\\rd\\rd-list-board\\rd-list-board.component.less","angular:jit:style:src\\app\\pages\\rd\\rd-item-card\\rd-item-card.component.less","src/app/pages/rd/rd-item-card/rd-item-card.component.ts","src/app/pages/rd/rd-list-board/rd-list-board.component.ts","angular:jit:style:inline:src\\app\\pages\\rd\\rd-list-table\\rd-list-table.component.ts;CiAgICAudGl0bGUtY29sIHsKICAgICAgLnJkLXRpdGxlIHsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KICAgICAgLnJkLW5vIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTsKICAgICAgICBjb2xvcjogZ3JheTsKICAgICAgICBmb250LXNpemU6IDAuOHJlbTsKICAgICAgfQogICAgfQogICAgLnJkLWl0ZW0tcm93IHsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgfQogIA==","src/app/pages/rd/rd-list-table/rd-list-table.component.ts","src/app/pages/rd/services/rd-token-api.service.ts","src/app/pages/rd/services/rd-api.service.ts","src/app/pages/rd/store/rd.store.ts","src/app/pages/rd/rd.component.ts","src/app/pages/rd/rd-routing.module.ts","src/app/pages/rd/rd.module.ts"],"sourcesContent":["<app-page-layout [title]=\"'研发项'\" [loading]=\"loading()\" [isFullscreen]=\"true\" [isOverflowYAuto]=\"false\">\r\n <div class=\"rd-content\">\r\n <div class=\"toolbar\">\r\n <form [formGroup]=\"form\" nz-form class=\"search-form\">\r\n <!-- 搜索框 -->\r\n <nz-form-item class=\"search-box\">\r\n <nz-form-control>\r\n <nz-input-wrapper>\r\n <nz-icon nzInputPrefix nzType=\"search\" nzTheme=\"outline\"></nz-icon>\r\n <input nz-input type=\"text\" formControlName=\"keyword\" placeholder=\"搜索 RD 编号、标题或描述\" />\r\n </nz-input-wrapper>\r\n </nz-form-control>\r\n </nz-form-item>\r\n\r\n <!-- 阶段选择 -->\r\n <nz-form-item class=\"form-item\">\r\n <nz-form-control>\r\n <nz-select formControlName=\"stageIds\" nzPlaceHolder=\"选择阶段\" [nzPrefix]=\"stageIconTpl\"\r\n nzMode=\"multiple\" [nzMaxTagCount]=\"2\" nzAllowClear>\r\n @for(stage of stages();track stage.id){\r\n <nz-option [nzLabel]=\"stage.name\" [nzValue]=\"stage.id\"\r\n [nzDisabled]=\"!stage.enabled\"></nz-option>\r\n }\r\n </nz-select>\r\n </nz-form-control>\r\n <ng-template #stageIconTpl>\r\n <nz-icon nzType=\"stock\" nzTheme=\"outline\"></nz-icon>\r\n </ng-template>\r\n </nz-form-item>\r\n\r\n <!-- 状态选择 -->\r\n <nz-form-item class=\"form-item\">\r\n <nz-form-control>\r\n <nz-select formControlName=\"status\" nzPlaceHolder=\"选择状态\" nzMode=\"multiple\"\r\n [nzPrefix]=\"statusIconTpl\" [nzMaxTagCount]=\"2\" nzAllowClear>\r\n @for (item of statusOptions; track item.value) {\r\n @if (item.value !== '') {\r\n <nz-option [nzLabel]=\"item.label\" [nzValue]=\"item.value\"></nz-option>\r\n }\r\n }\r\n </nz-select>\r\n </nz-form-control>\r\n <ng-template #statusIconTpl>\r\n <nz-icon nzType=\"thunderbolt\" nzTheme=\"outline\" />\r\n </ng-template>\r\n </nz-form-item>\r\n\r\n <!-- 优先级选择 -->\r\n <nz-form-item class=\"form-item\">\r\n <nz-form-control>\r\n <nz-select formControlName=\"priority\" nzPlaceHolder=\"选择优先级\" [nzPrefix]=\"priorityIconTpl\"\r\n nzMode=\"multiple\" [nzMaxTagCount]=\"2\" nzAllowClear>\r\n @for (item of priorityOptions; track item.value) {\r\n @if (item.value !== '') {\r\n <nz-option [nzLabel]=\"item.label\" [nzValue]=\"item.value\"></nz-option>\r\n }\r\n }\r\n </nz-select>\r\n </nz-form-control>\r\n <ng-template #priorityIconTpl>\r\n <nz-icon nzType=\"tags\" nzTheme=\"outline\" />\r\n </ng-template>\r\n </nz-form-item>\r\n\r\n </form>\r\n <div class=\"right-col\">\r\n <!-- 新建按钮 -->\r\n <!-- <button nz-button nzType=\"primary\" type=\"button\" (click)=\"openCreateDialog()\">\r\n <nz-icon nzType=\"plus\" nzTheme=\"outline\"></nz-icon>\r\n 新建研发项\r\n </button> -->\r\n <!-- 列表视图切换 -->\r\n <nz-radio-group [(ngModel)]=\"viewType\" class=\"view-type\">\r\n <label nz-radio-button nzValue=\"list\">\r\n <nz-icon nzType=\"unordered-list\" nzTheme=\"outline\"></nz-icon>\r\n </label>\r\n <label nz-radio-button nzValue=\"board\">\r\n <nz-icon nzType=\"book\" nzTheme=\"outline\"></nz-icon>\r\n </label>\r\n </nz-radio-group>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- 列表 -->\r\n <div class=\"list-content\">\r\n @if(viewType() === 'list') {\r\n <app-rd-list-table [rdItems]=\"pageRdItems()\" [selectedItem]=\"currentRdItem()\" [stages]=\"stages()\"\r\n (selectItem)=\"selectItem($event)\"></app-rd-list-table>\r\n } @else {\r\n <app-rd-list-board [rdItems]=\"pageRdItems()\" [selectedItem]=\"currentRdItem()\" [stages]=\"stages()\"\r\n (selectItem)=\"selectItem($event)\"></app-rd-list-board>\r\n }\r\n\r\n <div class=\" pagination-bar\">\r\n <nz-pagination [nzPageIndex]=\"query().page\" [nzTotal]=\"total()\" [nzShowTotal]=\"totalTemplate\"\r\n nzShowSizeChanger nzShowQuickJumper (nzPageIndexChange)=\"onPageChange($event)\"\r\n (nzPageSizeChange)=\"onPageSizeChange($event)\" />\r\n <ng-template #totalTemplate let-total>共 {{ total }} 条记录</ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- 新建 -->\r\n <app-rd-create-dialog [open]=\"createDialogOpen()\" (cancel)=\"createDialogOpen.set(false)\"\r\n (create)=\"createRd($event)\"></app-rd-create-dialog>\r\n\r\n <!-- 详情 -->\r\n <app-rd-detail [open]=\"detailDrawerOpen()\" [rdItem]=\"currentRdItem()\" (close)=\"closeDetail()\" [busy]=\"busy()\"\r\n [logs]=\"currentRdLogs()\" [stages]=\"stages()\" (actionClick)=\"handleSelectedAction($event)\"\r\n (progressChange)=\"updateSelectedProgress($event)\" (deleteClick)=\"deleteSelectedItem()\">\r\n </app-rd-detail>\r\n\r\n <!-- 阻塞弹窗 -->\r\n <app-rd-block-dialog [open]=\"blockOpen()\" [busy]=\"busy()\" [item]=\"blockingItem()\" (cancel)=\"closeBlockDialog()\"\r\n (confirm)=\"confirmBlock($event.blockerReason)\" />\r\n\r\n <!-- 推进弹窗 -->\r\n <app-rd-advance-stage-dialog [open]=\"advanceStageOpen()\" [busy]=\"busy()\" [item]=\"currentRdItem()\"\r\n [stages]=\"stages()\" (cancel)=\"advanceStageOpen.set(false)\" (confirm)=\"confirmAdvanceStage($event.stageId)\" />\r\n</app-page-layout>","/* src/app/pages/rd/rd.component.less */\n.rd-content {\n width: 100%;\n min-width: 630px;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n overflow: auto;\n}\n.rd-content .toolbar {\n width: calc(100% - 48px * 2);\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-radius: 8px;\n display: flex;\n justify-content: space-between;\n margin-top: 16px;\n padding: 16px;\n}\n.rd-content .toolbar .search-form {\n width: 62%;\n margin-right: 50px;\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n}\n.rd-content .toolbar .search-form .form-item {\n width: 30%;\n flex-grow: 1;\n margin-bottom: 0px;\n}\n.rd-content .toolbar .search-form .search-box {\n width: 100%;\n}\n.rd-content .toolbar .right-col {\n display: flex;\n flex-direction: column;\n align-items: end;\n justify-content: end;\n}\n.rd-content .toolbar .right-col .view-type {\n display: flex;\n justify-content: end;\n}\n.rd-content .list-content {\n width: 100%;\n padding: 12px 48px 8px;\n min-height: 0;\n flex-grow: 1;\n}\n.rd-content .list-content .pagination-bar {\n padding: 12px;\n display: flex;\n justify-content: end;\n}\n/*# sourceMappingURL=rd.component.css.map */\n","import * as i0 from '@angular/core';\nimport { booleanAttribute, Input, Directive, NgModule } from '@angular/core';\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzFlexDirective {\n nzVertical = false;\n nzJustify = 'normal';\n nzAlign = 'normal';\n nzGap = 0;\n nzWrap = 'nowrap';\n nzFlex = 'unset';\n get gap() {\n switch (this.nzGap) {\n case 'small':\n return '8px';\n case 'middle':\n return '16px';\n case 'large':\n return '24px';\n default:\n if (typeof this.nzGap === 'number') {\n return `${this.nzGap}px`;\n }\n return this.nzGap;\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzFlexDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"20.3.0\", type: NzFlexDirective, isStandalone: true, selector: \"[nz-flex],nz-flex\", inputs: { nzVertical: [\"nzVertical\", \"nzVertical\", booleanAttribute], nzJustify: \"nzJustify\", nzAlign: \"nzAlign\", nzGap: \"nzGap\", nzWrap: \"nzWrap\", nzFlex: \"nzFlex\" }, host: { properties: { \"class.ant-flex-vertical\": \"nzVertical\", \"class.ant-flex-justify-flex-start\": \"nzJustify === 'flex-start'\", \"class.ant-flex-justify-center\": \"nzJustify === 'center'\", \"class.ant-flex-justify-flex-end\": \"nzJustify === 'flex-end'\", \"class.ant-flex-justify-space-between\": \"nzJustify === 'space-between'\", \"class.ant-flex-justify-space-around\": \"nzJustify === 'space-around'\", \"class.ant-flex-justify-space-evenly\": \"nzJustify === 'space-evenly'\", \"class.ant-flex-justify-start\": \"nzJustify === 'start'\", \"class.ant-flex-justify-end\": \"nzJustify === 'end'\", \"class.ant-flex-justify-right\": \"nzJustify === 'right'\", \"class.ant-flex-justify-left\": \"nzJustify === 'left'\", \"class.ant-flex-justify-stretch\": \"nzJustify === 'stretch'\", \"class.ant-flex-justify-normal\": \"nzJustify === 'normal'\", \"class.ant-flex-align-flex-start\": \"nzAlign === 'flex-start'\", \"class.ant-flex-align-center\": \"nzAlign === 'center'\", \"class.ant-flex-align-flex-end\": \"nzAlign === 'flex-end'\", \"class.ant-flex-align-space-between\": \"nzAlign === 'space-between'\", \"class.ant-flex-align-space-around\": \"nzAlign === 'space-around'\", \"class.ant-flex-align-space-evenly\": \"nzAlign === 'space-evenly'\", \"class.ant-flex-align-start\": \"nzAlign === 'start'\", \"class.ant-flex-align-end\": \"nzAlign === 'end'\", \"class.ant-flex-align-right\": \"nzAlign === 'right'\", \"class.ant-flex-align-left\": \"nzAlign === 'left'\", \"class.ant-flex-align-stretch\": \"nzAlign === 'stretch'\", \"class.ant-flex-align-normal\": \"nzAlign === 'normal'\", \"class.ant-flex-wrap-wrap\": \"nzWrap === 'wrap'\", \"class.ant-flex-wrap-wrap-reverse\": \"nzWrap === 'wrap-reverse'\", \"class.ant-flex-wrap-nowrap\": \"nzWrap === 'nowrap'\", \"style.gap\": \"gap\", \"style.flex\": \"nzFlex\" }, classAttribute: \"ant-flex\" }, exportAs: [\"nzFlex\"], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzFlexDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[nz-flex],nz-flex',\n exportAs: 'nzFlex',\n host: {\n class: 'ant-flex',\n '[class.ant-flex-vertical]': `nzVertical`,\n '[class.ant-flex-justify-flex-start]': `nzJustify === 'flex-start'`,\n '[class.ant-flex-justify-center]': `nzJustify === 'center'`,\n '[class.ant-flex-justify-flex-end]': `nzJustify === 'flex-end'`,\n '[class.ant-flex-justify-space-between]': `nzJustify === 'space-between'`,\n '[class.ant-flex-justify-space-around]': `nzJustify === 'space-around'`,\n '[class.ant-flex-justify-space-evenly]': `nzJustify === 'space-evenly'`,\n '[class.ant-flex-justify-start]': `nzJustify === 'start'`,\n '[class.ant-flex-justify-end]': `nzJustify === 'end'`,\n '[class.ant-flex-justify-right]': `nzJustify === 'right'`,\n '[class.ant-flex-justify-left]': `nzJustify === 'left'`,\n '[class.ant-flex-justify-stretch]': `nzJustify === 'stretch'`,\n '[class.ant-flex-justify-normal]': `nzJustify === 'normal'`,\n '[class.ant-flex-align-flex-start]': `nzAlign === 'flex-start'`,\n '[class.ant-flex-align-center]': `nzAlign === 'center'`,\n '[class.ant-flex-align-flex-end]': `nzAlign === 'flex-end'`,\n '[class.ant-flex-align-space-between]': `nzAlign === 'space-between'`,\n '[class.ant-flex-align-space-around]': `nzAlign === 'space-around'`,\n '[class.ant-flex-align-space-evenly]': `nzAlign === 'space-evenly'`,\n '[class.ant-flex-align-start]': `nzAlign === 'start'`,\n '[class.ant-flex-align-end]': `nzAlign === 'end'`,\n '[class.ant-flex-align-right]': `nzAlign === 'right'`,\n '[class.ant-flex-align-left]': `nzAlign === 'left'`,\n '[class.ant-flex-align-stretch]': `nzAlign === 'stretch'`,\n '[class.ant-flex-align-normal]': `nzAlign === 'normal'`,\n '[class.ant-flex-wrap-wrap]': `nzWrap === 'wrap'`,\n '[class.ant-flex-wrap-wrap-reverse]': `nzWrap === 'wrap-reverse'`,\n '[class.ant-flex-wrap-nowrap]': `nzWrap === 'nowrap'`,\n '[style.gap]': `gap`,\n '[style.flex]': `nzFlex`\n }\n }]\n }], propDecorators: { nzVertical: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzJustify: [{\n type: Input\n }], nzAlign: [{\n type: Input\n }], nzGap: [{\n type: Input\n }], nzWrap: [{\n type: Input\n }], nzFlex: [{\n type: Input\n }] } });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzFlexModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzFlexModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.0\", ngImport: i0, type: NzFlexModule, imports: [NzFlexDirective], exports: [NzFlexDirective] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzFlexModule });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzFlexModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [NzFlexDirective],\n exports: [NzFlexDirective]\n }]\n }] });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NzFlexDirective, NzFlexModule };\n\n","/* angular:styles/component:less;47c0181b38f2f94a91aa267293418a33309bad6cc16805ccea4a8047e9e052fd;D:\\ng-manager\\webapp\\src\\app\\pages\\rd\\dialog\\rd-advance-stage-dialog\\rd-advance-stage-dialog.component.ts */\n.stage-select {\n width: 100%;\n}\n.empty {\n font-size: 0.8rem;\n color: grey;\n text-align: right;\n}\n/*# sourceMappingURL=rd-advance-stage-dialog.component.css.map */\n","import { Component, computed, effect, input, output, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RdItemEntity, RdStageEntity } from '@pages/rd/models/rd.model';\r\nimport { NzButtonModule } from 'ng-zorro-antd/button';\r\nimport { NzModalModule } from 'ng-zorro-antd/modal';\r\nimport { NzSelectModule } from 'ng-zorro-antd/select';\r\n\r\n@Component({\r\n selector: 'app-rd-advance-stage-dialog',\r\n imports: [NzModalModule, NzSelectModule, NzButtonModule,FormsModule],\r\n template: `\r\n <nz-modal\r\n [nzVisible]=\"open()\"\r\n [nzTitle]=\"'进入下一阶段'\"\r\n [nzOkText]=\"'确认推进'\"\r\n [nzCancelText]=\"'取消'\"\r\n [nzOkLoading]=\"busy()\"\r\n [nzOkDisabled]=\"busy() || !selectedStageId()\"\r\n (nzOnCancel)=\"cancel.emit()\"\r\n (nzOnOk)=\"confirmSelection()\"\r\n >\r\n <ng-container *nzModalContent>\r\n @if (item(); as current) {\r\n <p class=\"hint\">\r\n 当前研发项:<strong>{{ current.title }}</strong>\r\n </p>\r\n <nz-select\r\n nzShowSearch\r\n nzPlaceHolder=\"选择下一阶段\"\r\n class=\"stage-select\"\r\n [ngModel]=\"selectedStageId()\"\r\n (ngModelChange)=\"selectedStageId.set($event || '')\"\r\n >\r\n @for (stage of candidateStages(); track stage.id) {\r\n <nz-option [nzLabel]=\"stage.name\" [nzValue]=\"stage.id\"></nz-option>\r\n }\r\n </nz-select>\r\n @if (candidateStages().length === 0) {\r\n <p class=\"empty\">提示:当前项目没有可推进的后续阶段。</p>\r\n }\r\n }\r\n </ng-container>\r\n </nz-modal>\r\n `,\r\n styles: `\r\n .stage-select{\r\n width: 100%;\r\n }\r\n .empty{\r\n font-size: 0.8rem;\r\n color: grey;\r\n text-align: right;\r\n }\r\n `,\r\n})\r\nexport class RdAdvanceStageDialogComponent {\r\n readonly open = input(false);\r\n readonly busy = input(false);\r\n readonly item = input<RdItemEntity | null>(null);\r\n readonly stages = input<RdStageEntity[]>([]);\r\n readonly confirm = output<{ stageId: string }>();\r\n readonly cancel = output<void>();\r\n\r\n readonly selectedStageId = signal('');\r\n \r\n readonly candidateStages = computed(() => {\r\n const current = this.item();\r\n const all = [...this.stages()].sort((a, b) => a.sort - b.sort);\r\n if (!current) {\r\n return [];\r\n }\r\n if (!current.stageId) {\r\n return all;\r\n }\r\n const currentStage = all.find((stage) => stage.id === current.stageId);\r\n if (!currentStage) {\r\n return all;\r\n }\r\n return all.filter((stage) => stage.sort > currentStage.sort);\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n if (!this.open()) {\r\n this.selectedStageId.set('');\r\n return;\r\n }\r\n const first = this.candidateStages()[0];\r\n this.selectedStageId.set(first?.id ?? '');\r\n });\r\n }\r\n\r\n confirmSelection(): void {\r\n const stageId = this.selectedStageId().trim();\r\n if (!stageId) {\r\n return;\r\n }\r\n this.confirm.emit({ stageId });\r\n }\r\n}\r\n","/* angular:styles/component:less;4f832b80bea4560b936b16e21b7abb9526d55fb5e17e66c688aebfc1418f6640;D:\\ng-manager\\webapp\\src\\app\\pages\\rd\\dialog\\rd-block-dialog\\rd-block-dialog.component.ts */\n.modal-title {\n display: flex;\n flex-direction: column;\n}\n.modal-subtitle {\n color: #999;\n font-size: 14px;\n line-height: 20px;\n}\n.block-input {\n border-radius: 8px;\n}\n/*# sourceMappingURL=rd-block-dialog.component.css.map */\n","import { Component, effect, input, output, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RdItemEntity } from '@pages/rd/models/rd.model';\r\nimport { NzButtonModule } from 'ng-zorro-antd/button';\r\nimport { NzInputModule } from 'ng-zorro-antd/input';\r\nimport { NzModalModule } from 'ng-zorro-antd/modal';\r\n\r\n@Component({\r\n selector: 'app-rd-block-dialog',\r\n imports: [NzModalModule, FormsModule, NzButtonModule, NzInputModule],\r\n template: `\r\n <nz-modal\r\n [nzVisible]=\"open()\"\r\n nzTitle=\"标记为阻塞\"\r\n [nzWidth]=\"640\"\r\n [nzClosable]=\"true\"\r\n [nzMaskClosable]=\"false\"\r\n [nzOkLoading]=\"busy()\"\r\n (nzOnCancel)=\"cancel.emit()\"\r\n (nzOnOk)=\"submitForm()\"\r\n >\r\n <!-- subtitle(原来的 subtitle 需要手动补) -->\r\n <div *nzModalTitle>\r\n <div class=\"modal-title\">\r\n <span>标记为阻塞</span>\r\n <div class=\"modal-subtitle\">\r\n {{ item() ? item()!.title : '记录当前研发项的阻塞原因。' }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- body -->\r\n <ng-container *nzModalContent>\r\n <form class=\"block-form\" (ngSubmit)=\"submitForm()\">\r\n <!-- <label class=\"block-field dialog-field\"> -->\r\n <!-- <span class=\"label\">阻塞原因:</span> -->\r\n <textarea\r\n nz-input\r\n rows=\"6\"\r\n placeholder=\"请输入阻塞原因。例如:依赖的接口定义尚未冻结,无法继续联调。\"\r\n [ngModel]=\"reason()\"\r\n name=\"reason\"\r\n (ngModelChange)=\"reason.set($event)\"\r\n class=\"block-input\"\r\n ></textarea>\r\n <!-- </label> -->\r\n </form>\r\n </ng-container>\r\n\r\n <!-- footer(自定义按钮) -->\r\n <ng-container *nzModalFooter>\r\n <button nz-button type=\"button\" (click)=\"cancel.emit()\">取消</button>\r\n <button\r\n nz-button\r\n nzType=\"primary\"\r\n [disabled]=\"!reason().trim()\"\r\n [nzLoading]=\"busy()\"\r\n (click)=\"submitForm()\"\r\n >\r\n 确认阻塞\r\n </button>\r\n </ng-container>\r\n </nz-modal>\r\n `,\r\n styles: `\r\n .modal-title {\r\n display: flex;\r\n flex-direction: column;\r\n }\r\n .modal-subtitle {\r\n color: #999;\r\n font-size: 14px;\r\n line-height: 20px;\r\n }\r\n .block-input {\r\n border-radius: 8px;\r\n }\r\n `,\r\n})\r\nexport class RdBlockDialogComponent {\r\n readonly open = input(true);\r\n readonly busy = input(false);\r\n readonly item = input<RdItemEntity | null>(null);\r\n readonly confirm = output<{ blockerReason: string }>();\r\n readonly cancel = output<void>();\r\n\r\n readonly reason = signal('');\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.open()) {\r\n this.reason.set(this.item()?.blockerReason ?? '');\r\n }\r\n });\r\n }\r\n\r\n submitForm(): void {\r\n const blockerReason = this.reason().trim();\r\n if (!blockerReason) {\r\n return;\r\n }\r\n this.confirm.emit({ blockerReason });\r\n }\r\n}\r\n","<nz-modal [nzVisible]=\"open()\" [nzFooter]=\"null\" [nzWidth]=\"720\" [nzClosable]=\"false\" [nzTitle]=\"'新建研发项'\">\r\n <ng-container *nzModalContent>\r\n <form nz-form [formGroup]=\"form\" nzLayout=\"vertical\">\r\n <!-- 标题 -->\r\n <nz-form-item class=\"form-item\">\r\n <nz-form-label nzFor=\"title\" nzRequired>标题</nz-form-label>\r\n <nz-form-control nzErrorTip=\"请输入标题\">\r\n <input nz-input formControlName=\"title\" placeholder=\"请输入标题\" />\r\n </nz-form-control>\r\n </nz-form-item>\r\n\r\n <!-- 描述 -->\r\n <!-- 后面更换成Markdown文档 -->\r\n <nz-form-item>\r\n <nz-form-label nzFor=\"description\">描述</nz-form-label>\r\n <nz-form-control>\r\n <textarea nz-input formControlName=\"description\" rows=\"3\" placeholder=\"请简要描述背景、目标和预期交付\"></textarea>\r\n </nz-form-control>\r\n </nz-form-item>\r\n\r\n <div nz-row [nzGutter]=\"24\">\r\n <!-- 阶段 -->\r\n <div nz-col nzSpan=\"8\">\r\n <nz-form-item>\r\n <nz-form-label nzFor=\"stageId\" nzRequired>阶段</nz-form-label>\r\n <nz-form-control nzErrorTip=\"请选择阶段\">\r\n <nz-select formControlName=\"stageId\" nzPlaceHolder=\"请选择阶段\">\r\n @for(stage of stages(); track stage.id) {\r\n <nz-option [nzValue]=\"stage.id\" [nzLabel]=\"stage.name\"></nz-option>\r\n }\r\n </nz-select>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n\r\n <!-- 类型 -->\r\n <div nz-col nzSpan=\"8\">\r\n <nz-form-item>\r\n <nz-form-label nzFor=\"type\" nzRequired>类型</nz-form-label>\r\n <nz-form-control nzErrorTip=\"请选择类型\">\r\n <nz-select formControlName=\"type\" nzPlaceHolder=\"请选择类型\">\r\n <nz-option nzLabel=\"功能开发\" nzValue=\"feature_dev\"></nz-option>\r\n <nz-option nzLabel=\"技术改造\" nzValue=\"tech_refactor\"></nz-option>\r\n <nz-option nzLabel=\"联调协作\" nzValue=\"integration\"></nz-option>\r\n <nz-option nzLabel=\"环境准备\" nzValue=\"env_setup\"></nz-option>\r\n </nz-select>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n\r\n <!-- 优先级 -->\r\n <div nz-col nzSpan=\"8\">\r\n <nz-form-item>\r\n <nz-form-label nzFor=\"priority\" nzRequired>优先级</nz-form-label>\r\n <nz-form-control nzErrorTip=\"请选择优先级\">\r\n <nz-select formControlName=\"priority\" nzPlaceHolder=\"请选择优先级\">\r\n @for (item of priorityOptions.slice(1); track item.value) {\r\n <nz-option [nzLabel]=\"item.label\" [nzValue]=\"item.value\"></nz-option>\r\n }\r\n </nz-select>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n </div>\r\n\r\n <div nz-row [nzGutter]=\"24\">\r\n <div nz-col nzSpan=\"12\">\r\n <!-- 负责人 -->\r\n <nz-form-item>\r\n <nz-form-label nzFor=\"assigneeId\" nzRequired>负责人</nz-form-label>\r\n <nz-form-control>\r\n <nz-select formControlName=\"assigneeId\" nzPlaceHolder=\"请指派负责人\">\r\n @for (member of members(); track member.id) {\r\n <nz-option [nzLabel]=\"member.displayName\" [nzValue]=\"member.userId\"></nz-option>\r\n }\r\n </nz-select>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n <div nz-col nzSpan=\"12\">\r\n\r\n <!-- 评审人 -->\r\n <nz-form-item>\r\n <nz-form-label nzFor=\"reviewerId\" nzTooltipTitle=\"确认人默认为负责人\">评审人</nz-form-label>\r\n <nz-form-control>\r\n <nz-select formControlName=\"reviewerId\" nzPlaceHolder=\"请指定评审人\">\r\n @for (member of members(); track member.id) {\r\n <nz-option [nzLabel]=\"member.displayName\" [nzValue]=\"member.userId\"></nz-option>\r\n }\r\n </nz-select>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n </div>\r\n\r\n <div nz-row [nzGutter]=\"24\">\r\n <div nz-col nzSpan=\"12\">\r\n <!-- 开始时间 -->\r\n <nz-form-item>\r\n <nz-form-label nzFor=\"planStartAt\">计划开始</nz-form-label>\r\n <nz-form-control>\r\n <nz-flex nzVertical>\r\n <nz-date-picker nzPlaceHolder=\"请选择计划开始时间\" formControlName=\"planStartAt\"\r\n nzStyle=\"width: 100%\"></nz-date-picker>\r\n </nz-flex>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n <div nz-col nzSpan=\"12\">\r\n <!-- 结束时间 -->\r\n <nz-form-item>\r\n <nz-form-label nzFor=\"planEndAt\">计划结束</nz-form-label>\r\n <nz-form-control>\r\n <nz-flex nzVertical>\r\n <nz-date-picker nzPlaceHolder=\"请选择计划结束时间\" formControlName=\"planEndAt\"></nz-date-picker>\r\n </nz-flex>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n </div>\r\n\r\n <!-- 操作按钮 -->\r\n <div style=\"text-align: right; margin-top: 16px;\">\r\n <button nz-button (click)=\"cancel.emit()\">取消</button>\r\n <button nz-button nzType=\"primary\" [disabled]=\"form.invalid\" (click)=\"submit()\" style=\"margin-left: 8px;\">\r\n 新建研发项\r\n </button>\r\n </div>\r\n\r\n </form>\r\n </ng-container>\r\n\r\n</nz-modal>","/* src/app/pages/rd/dialog/rd-create-dialog/rd-create-dialog.component.less */\n/*# sourceMappingURL=rd-create-dialog.component.css.map */\n","import { __esDecorate, __runInitializers } from 'tslib';\nimport { Directionality } from '@angular/cdk/bidi';\nimport * as i6 from '@angular/cdk/overlay';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { Platform, _getEventTarget } from '@angular/cdk/platform';\nimport { NgTemplateOutlet, DecimalPipe, AsyncPipe } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { inject, NgZone, ChangeDetectorRef, ElementRef, DestroyRef, EventEmitter, forwardRef, numberAttribute, booleanAttribute, Input, Output, ViewChild, ChangeDetectionStrategy, ViewEncapsulation, Component, Renderer2, computed, signal, NgModule } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport * as i2$1 from '@angular/forms';\nimport { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { Subject, of } from 'rxjs';\nimport { distinctUntilChanged, withLatestFrom, map } from 'rxjs/operators';\nimport { isValid } from 'date-fns';\nimport { slideMotion } from 'ng-zorro-antd/core/animation';\nimport { WithConfig, NzConfigService } from 'ng-zorro-antd/core/config';\nimport { NzFormStatusService, NzFormNoStatusService, NzFormItemFeedbackIconComponent } from 'ng-zorro-antd/core/form';\nimport { warn } from 'ng-zorro-antd/core/logger';\nimport * as i3$1 from 'ng-zorro-antd/core/outlet';\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport * as i5 from 'ng-zorro-antd/core/overlay';\nimport { NzOverlayModule } from 'ng-zorro-antd/core/overlay';\nimport { isNotNil, isNil, fromEventOutsideAngular, getStatusClassNames } from 'ng-zorro-antd/core/util';\nimport * as i4 from 'ng-zorro-antd/i18n';\nimport { DateHelperService, NzI18nModule, NzI18nService } from 'ng-zorro-antd/i18n';\nimport * as i4$1 from 'ng-zorro-antd/icon';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport * as i1$1 from 'ng-zorro-antd/space';\nimport { NZ_SPACE_COMPACT_SIZE, NZ_SPACE_COMPACT_ITEM_TYPE, NzSpaceCompactItemDirective } from 'ng-zorro-antd/space';\nimport * as i1 from 'ng-zorro-antd/button';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { requestAnimationFrame } from 'ng-zorro-antd/core/polyfill';\nimport * as i2 from 'ng-zorro-antd/core/transition-patch';\nimport * as i3 from 'ng-zorro-antd/core/wave';\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass TimeHolder {\n selected12Hours = undefined;\n _value;\n _use12Hours = false;\n _defaultOpenValue;\n _changes = new Subject();\n setMinutes(value, disabled) {\n if (!disabled) {\n this.initValue();\n this.value.setMinutes(value);\n this.update();\n }\n return this;\n }\n setHours(value, disabled) {\n if (!disabled) {\n this.initValue();\n if (this._use12Hours) {\n if (this.selected12Hours === 'PM' && value !== 12) {\n this.value.setHours(value + 12);\n }\n else if (this.selected12Hours === 'AM' && value === 12) {\n this.value.setHours(0);\n }\n else {\n this.value.setHours(value);\n }\n }\n else {\n this.value.setHours(value);\n }\n this.update();\n }\n return this;\n }\n setSeconds(value, disabled) {\n if (!disabled) {\n this.initValue();\n this.value.setSeconds(value);\n this.update();\n }\n return this;\n }\n setUse12Hours(value) {\n this._use12Hours = value;\n return this;\n }\n get changes() {\n return this._changes.asObservable();\n }\n setValue(value, use12Hours) {\n if (isNotNil(use12Hours)) {\n this._use12Hours = use12Hours;\n }\n if (value !== this.value) {\n this._value = value;\n if (isNotNil(this.value)) {\n if (this._use12Hours && isNotNil(this.hours)) {\n this.selected12Hours = this.hours >= 12 ? 'PM' : 'AM';\n }\n }\n else {\n this._clear();\n }\n }\n return this;\n }\n initValue() {\n if (isNil(this.value)) {\n this.setValue(new Date(), this._use12Hours);\n }\n }\n clear() {\n this._clear();\n this.update();\n }\n get isEmpty() {\n return !(isNotNil(this.hours) || isNotNil(this.minutes) || isNotNil(this.seconds));\n }\n _clear() {\n this._value = undefined;\n this.selected12Hours = undefined;\n }\n update() {\n if (this.isEmpty) {\n this._value = undefined;\n }\n else {\n if (isNotNil(this.hours)) {\n this.value.setHours(this.hours);\n }\n if (isNotNil(this.minutes)) {\n this.value.setMinutes(this.minutes);\n }\n if (isNotNil(this.seconds)) {\n this.value.setSeconds(this.seconds);\n }\n if (this._use12Hours) {\n if (this.selected12Hours === 'PM' && this.hours < 12) {\n this.value.setHours(this.hours + 12);\n }\n if (this.selected12Hours === 'AM' && this.hours >= 12) {\n this.value.setHours(this.hours - 12);\n }\n }\n }\n this.changed();\n }\n changed() {\n this._changes.next(this.value);\n }\n /**\n * @description\n * UI view hours\n * Get viewHours which is selected in `time-picker-panel` and its range is [12, 1, 2, ..., 11]\n */\n get viewHours() {\n return this._use12Hours && isNotNil(this.hours) ? this.calculateViewHour(this.hours) : this.hours;\n }\n setSelected12Hours(value) {\n if (value.toUpperCase() !== this.selected12Hours) {\n this.selected12Hours = value.toUpperCase();\n this.update();\n }\n }\n get value() {\n return this._value || this._defaultOpenValue;\n }\n get hours() {\n return this.value?.getHours();\n }\n get minutes() {\n return this.value?.getMinutes();\n }\n get seconds() {\n return this.value?.getSeconds();\n }\n setDefaultOpenValue(value) {\n this._defaultOpenValue = value;\n return this;\n }\n calculateViewHour(value) {\n const selected12Hours = this.selected12Hours;\n if (selected12Hours === 'PM' && value > 12) {\n return value - 12;\n }\n if (selected12Hours === 'AM' && value === 0) {\n return 12;\n }\n return value;\n }\n}\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction makeRange(length, step = 1, start = 0) {\n return new Array(Math.ceil(length / step)).fill(0).map((_, i) => (i + start) * step);\n}\nclass NzTimePickerPanelComponent {\n dateHelper = inject(DateHelperService);\n ngZone = inject(NgZone);\n cdr = inject(ChangeDetectorRef);\n elementRef = inject(ElementRef);\n destroyRef = inject(DestroyRef);\n _nzHourStep = 1;\n _nzMinuteStep = 1;\n _nzSecondStep = 1;\n onChange;\n onTouch;\n _format = 'HH:mm:ss';\n _disabledHours = () => [];\n _disabledMinutes = () => [];\n _disabledSeconds = () => [];\n _allowEmpty = true;\n time = new TimeHolder();\n hourEnabled = true;\n minuteEnabled = true;\n secondEnabled = true;\n firstScrolled = false;\n enabledColumns = 3;\n hourRange;\n minuteRange;\n secondRange;\n use12HoursRange;\n hourListElement;\n minuteListElement;\n secondListElement;\n use12HoursListElement;\n nzInDatePicker = false; // If inside a date-picker, more diff works need to be done\n nzAddOn;\n nzHideDisabledOptions = false;\n nzClearText;\n nzNowText;\n nzOkText;\n nzPlaceHolder;\n nzUse12Hours = false;\n nzDefaultOpenValue;\n closePanel = new EventEmitter();\n set nzAllowEmpty(value) {\n this._allowEmpty = value;\n }\n get nzAllowEmpty() {\n return this._allowEmpty;\n }\n set nzDisabledHours(value) {\n this._disabledHours = value;\n if (this._disabledHours) {\n this.buildHours();\n }\n }\n get nzDisabledHours() {\n return this._disabledHours;\n }\n set nzDisabledMinutes(value) {\n if (isNotNil(value)) {\n this._disabledMinutes = value;\n this.buildMinutes();\n }\n }\n get nzDisabledMinutes() {\n return this._disabledMinutes;\n }\n set nzDisabledSeconds(value) {\n if (isNotNil(value)) {\n this._disabledSeconds = value;\n this.buildSeconds();\n }\n }\n get nzDisabledSeconds() {\n return this._disabledSeconds;\n }\n set format(value) {\n if (isNotNil(value)) {\n this._format = value;\n this.enabledColumns = 0;\n const charSet = new Set(value);\n this.hourEnabled = charSet.has('H') || charSet.has('h');\n this.minuteEnabled = charSet.has('m');\n this.secondEnabled = charSet.has('s');\n if (this.hourEnabled) {\n this.enabledColumns++;\n }\n if (this.minuteEnabled) {\n this.enabledColumns++;\n }\n if (this.secondEnabled) {\n this.enabledColumns++;\n }\n if (this.nzUse12Hours) {\n this.build12Hours();\n }\n }\n }\n get format() {\n return this._format;\n }\n set nzHourStep(value) {\n this._nzHourStep = value || 1;\n this.buildHours();\n }\n get nzHourStep() {\n return this._nzHourStep;\n }\n set nzMinuteStep(value) {\n this._nzMinuteStep = value || 1;\n this.buildMinutes();\n }\n get nzMinuteStep() {\n return this._nzMinuteStep;\n }\n set nzSecondStep(value) {\n this._nzSecondStep = value || 1;\n this.buildSeconds();\n }\n get nzSecondStep() {\n return this._nzSecondStep;\n }\n buildHours() {\n let hourRanges = 24;\n let disabledHours = this.nzDisabledHours?.();\n let startIndex = 0;\n if (this.nzUse12Hours) {\n hourRanges = 12;\n if (disabledHours) {\n if (this.time.selected12Hours === 'PM') {\n /**\n * Filter and transform hours which greater or equal to 12\n * [0, 1, 2, ..., 12, 13, 14, 15, ..., 23] => [12, 1, 2, 3, ..., 11]\n */\n disabledHours = disabledHours.filter(i => i >= 12).map(i => (i > 12 ? i - 12 : i));\n }\n else {\n /**\n * Filter and transform hours which less than 12\n * [0, 1, 2, ..., 12, 13, 14, 15, ...23] => [12, 1, 2, 3, ..., 11]\n */\n disabledHours = disabledHours.filter(i => i < 12 || i === 24).map(i => (i === 24 || i === 0 ? 12 : i));\n }\n }\n startIndex = 1;\n }\n this.hourRange = makeRange(hourRanges, this.nzHourStep, startIndex).map(r => ({\n index: r,\n disabled: !!disabledHours && disabledHours.indexOf(r) !== -1\n }));\n if (this.nzUse12Hours && this.hourRange[this.hourRange.length - 1].index === 12) {\n const temp = [...this.hourRange];\n temp.unshift(temp[temp.length - 1]);\n temp.splice(temp.length - 1, 1);\n this.hourRange = temp;\n }\n }\n buildMinutes() {\n this.minuteRange = makeRange(60, this.nzMinuteStep).map(r => ({\n index: r,\n disabled: !!this.nzDisabledMinutes && this.nzDisabledMinutes(this.time.hours).indexOf(r) !== -1\n }));\n }\n buildSeconds() {\n this.secondRange = makeRange(60, this.nzSecondStep).map(r => ({\n index: r,\n disabled: !!this.nzDisabledSeconds && this.nzDisabledSeconds(this.time.hours, this.time.minutes).indexOf(r) !== -1\n }));\n }\n build12Hours() {\n const isUpperFormat = this._format.includes('A');\n this.use12HoursRange = [\n {\n index: 0,\n value: isUpperFormat ? 'AM' : 'am'\n },\n {\n index: 1,\n value: isUpperFormat ? 'PM' : 'pm'\n }\n ];\n }\n buildTimes() {\n this.buildHours();\n this.buildMinutes();\n this.buildSeconds();\n this.build12Hours();\n }\n scrollToTime(delay = 0) {\n if (this.hourEnabled && this.hourListElement) {\n this.scrollToSelected(this.hourListElement.nativeElement, this.time.viewHours, delay, 'hour');\n }\n if (this.minuteEnabled && this.minuteListElement) {\n this.scrollToSelected(this.minuteListElement.nativeElement, this.time.minutes, delay, 'minute');\n }\n if (this.secondEnabled && this.secondListElement) {\n this.scrollToSelected(this.secondListElement.nativeElement, this.time.seconds, delay, 'second');\n }\n if (this.nzUse12Hours && this.use12HoursListElement) {\n const selectedHours = this.time.selected12Hours;\n const index = selectedHours === 'AM' ? 0 : 1;\n this.scrollToSelected(this.use12HoursListElement.nativeElement, index, delay, '12-hour');\n }\n }\n selectHour(hour) {\n this.time.setHours(hour.index, hour.disabled);\n if (this._disabledMinutes) {\n this.buildMinutes();\n }\n if (this._disabledSeconds || this._disabledMinutes) {\n this.buildSeconds();\n }\n }\n selectMinute(minute) {\n this.time.setMinutes(minute.index, minute.disabled);\n if (this._disabledSeconds) {\n this.buildSeconds();\n }\n }\n selectSecond(second) {\n this.time.setSeconds(second.index, second.disabled);\n }\n select12Hours(value) {\n this.time.setSelected12Hours(value.value);\n if (this._disabledHours) {\n this.buildHours();\n }\n if (this._disabledMinutes) {\n this.buildMinutes();\n }\n if (this._disabledSeconds) {\n this.buildSeconds();\n }\n }\n scrollToSelected(instance, index, duration = 0, unit) {\n if (!instance) {\n return;\n }\n const transIndex = this.translateIndex(index, unit);\n const currentOption = (instance.children[transIndex] || instance.children[0]);\n this.scrollTo(instance, currentOption.offsetTop, duration);\n }\n translateIndex(index, unit) {\n if (unit === 'hour') {\n return this.calcIndex(this.nzDisabledHours?.(), this.hourRange.map(item => item.index).indexOf(index));\n }\n else if (unit === 'minute') {\n return this.calcIndex(this.nzDisabledMinutes?.(this.time.hours), this.minuteRange.map(item => item.index).indexOf(index));\n }\n else if (unit === 'second') {\n // second\n return this.calcIndex(this.nzDisabledSeconds?.(this.time.hours, this.time.minutes), this.secondRange.map(item => item.index).indexOf(index));\n }\n else {\n // 12-hour\n return this.calcIndex([], this.use12HoursRange.map(item => item.index).indexOf(index));\n }\n }\n scrollTo(element, to, duration) {\n if (duration <= 0) {\n element.scrollTop = to;\n return;\n }\n const difference = to - element.scrollTop;\n const perTick = (difference / duration) * 10;\n this.ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n element.scrollTop = element.scrollTop + perTick;\n if (element.scrollTop === to) {\n return;\n }\n this.scrollTo(element, to, duration - 10);\n });\n });\n }\n calcIndex(array, index) {\n if (array?.length && this.nzHideDisabledOptions) {\n return index - array.reduce((pre, value) => pre + (value < index ? 1 : 0), 0);\n }\n else {\n return index;\n }\n }\n changed() {\n if (this.onChange) {\n this.onChange(this.time.value);\n }\n }\n touched() {\n if (this.onTouch) {\n this.onTouch();\n }\n }\n timeDisabled(value) {\n const hour = value.getHours();\n const minute = value.getMinutes();\n const second = value.getSeconds();\n return ((this.nzDisabledHours?.().indexOf(hour) ?? -1) > -1 ||\n (this.nzDisabledMinutes?.(hour).indexOf(minute) ?? -1) > -1 ||\n (this.nzDisabledSeconds?.(hour, minute).indexOf(second) ?? -1) > -1);\n }\n onClickNow() {\n const now = new Date();\n if (this.timeDisabled(now)) {\n return;\n }\n this.time.setValue(now);\n this.changed();\n this.closePanel.emit();\n }\n onClickOk() {\n this.time.setValue(this.time.value, this.nzUse12Hours);\n this.changed();\n this.closePanel.emit();\n }\n isSelectedHour(hour) {\n return hour.index === this.time.viewHours;\n }\n isSelectedMinute(minute) {\n return minute.index === this.time.minutes;\n }\n isSelectedSecond(second) {\n return second.index === this.time.seconds;\n }\n isSelected12Hours(value) {\n return value.value.toUpperCase() === this.time.selected12Hours;\n }\n ngOnInit() {\n this.time.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.changed();\n this.touched();\n this.scrollToTime(120);\n });\n this.buildTimes();\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.scrollToTime();\n this.firstScrolled = true;\n });\n });\n fromEventOutsideAngular(this.elementRef.nativeElement, 'mousedown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(event => {\n event.preventDefault();\n });\n }\n ngOnChanges(changes) {\n const { nzUse12Hours, nzDefaultOpenValue } = changes;\n if (!nzUse12Hours?.previousValue && nzUse12Hours?.currentValue) {\n this.build12Hours();\n this.enabledColumns++;\n }\n if (nzDefaultOpenValue?.currentValue) {\n this.time.setDefaultOpenValue(this.nzDefaultOpenValue || new Date());\n }\n }\n writeValue(value) {\n this.time.setValue(value, this.nzUse12Hours);\n this.buildTimes();\n if (value && this.firstScrolled) {\n this.scrollToTime(120);\n }\n // Mark this component to be checked manually with internal properties changing (see: https://github.com/angular/angular/issues/10816)\n this.cdr.markForCheck();\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouch = fn;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzTimePickerPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.0\", type: NzTimePickerPanelComponent, isStandalone: true, selector: \"nz-time-picker-panel\", inputs: { nzInDatePicker: [\"nzInDatePicker\", \"nzInDatePicker\", booleanAttribute], nzAddOn: \"nzAddOn\", nzHideDisabledOptions: \"nzHideDisabledOptions\", nzClearText: \"nzClearText\", nzNowText: \"nzNowText\", nzOkText: \"nzOkText\", nzPlaceHolder: \"nzPlaceHolder\", nzUse12Hours: [\"nzUse12Hours\", \"nzUse12Hours\", booleanAttribute], nzDefaultOpenValue: \"nzDefaultOpenValue\", nzAllowEmpty: [\"nzAllowEmpty\", \"nzAllowEmpty\", booleanAttribute], nzDisabledHours: \"nzDisabledHours\", nzDisabledMinutes: \"nzDisabledMinutes\", nzDisabledSeconds: \"nzDisabledSeconds\", format: \"format\", nzHourStep: [\"nzHourStep\", \"nzHourStep\", numberAttribute], nzMinuteStep: [\"nzMinuteStep\", \"nzMinuteStep\", numberAttribute], nzSecondStep: [\"nzSecondStep\", \"nzSecondStep\", numberAttribute] }, outputs: { closePanel: \"closePanel\" }, host: { properties: { \"class.ant-picker-time-panel-column-0\": \"enabledColumns === 0 && !nzInDatePicker\", \"class.ant-picker-time-panel-column-1\": \"enabledColumns === 1 && !nzInDatePicker\", \"class.ant-picker-time-panel-column-2\": \"enabledColumns === 2 && !nzInDatePicker\", \"class.ant-picker-time-panel-column-3\": \"enabledColumns === 3 && !nzInDatePicker\", \"class.ant-picker-time-panel-narrow\": \"enabledColumns < 3\", \"class.ant-picker-time-panel-placement-bottomLeft\": \"!nzInDatePicker\" }, classAttribute: \"ant-picker-time-panel\" }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NzTimePickerPanelComponent),\n multi: true\n }\n ], viewQueries: [{ propertyName: \"hourListElement\", first: true, predicate: [\"hourListElement\"], descendants: true }, { propertyName: \"minuteListElement\", first: true, predicate: [\"minuteListElement\"], descendants: true }, { propertyName: \"secondListElement\", first: true, predicate: [\"secondListElement\"], descendants: true }, { propertyName: \"use12HoursListElement\", first: true, predicate: [\"use12HoursListElement\"], descendants: true }], exportAs: [\"nzTimePickerPanel\"], usesOnChanges: true, ngImport: i0, template: `\n @if (nzInDatePicker) {\n <div class=\"ant-picker-header\">\n <div class=\"ant-picker-header-view\">{{ dateHelper.format($any(time?.value), format) || '&nbsp;' }}</div>\n </div>\n }\n <div class=\"ant-picker-content\">\n @if (hourEnabled) {\n <ul #hourListElement class=\"ant-picker-time-panel-column\" style=\"position: relative;\">\n @for (hour of hourRange; track $index) {\n @if (!(nzHideDisabledOptions && hour.disabled)) {\n <li\n class=\"ant-picker-time-panel-cell\"\n (click)=\"selectHour(hour)\"\n [class.ant-picker-time-panel-cell-selected]=\"isSelectedHour(hour)\"\n [class.ant-picker-time-panel-cell-disabled]=\"hour.disabled\"\n >\n <div class=\"ant-picker-time-panel-cell-inner\">{{ hour.index | number: '2.0-0' }}</div>\n </li>\n }\n }\n </ul>\n }\n @if (minuteEnabled) {\n <ul #minuteListElement class=\"ant-picker-time-panel-column\" style=\"position: relative;\">\n @for (minute of minuteRange; track $index) {\n @if (!(nzHideDisabledOptions && minute.disabled)) {\n <li\n class=\"ant-picker-time-panel-cell\"\n (click)=\"selectMinute(minute)\"\n [class.ant-picker-time-panel-cell-selected]=\"isSelectedMinute(minute)\"\n [class.ant-picker-time-panel-cell-disabled]=\"minute.disabled\"\n >\n <div class=\"ant-picker-time-panel-cell-inner\">{{ minute.index | number: '2.0-0' }}</div>\n </li>\n }\n }\n </ul>\n }\n @if (secondEnabled) {\n <ul #secondListElement class=\"ant-picker-time-panel-column\" style=\"position: relative;\">\n @for (second of secondRange; track $index) {\n @if (!(nzHideDisabledOptions && second.disabled)) {\n <li\n class=\"ant-picker-time-panel-cell\"\n (click)=\"selectSecond(second)\"\n [class.ant-picker-time-panel-cell-selected]=\"isSelectedSecond(second)\"\n [class.ant-picker-time-panel-cell-disabled]=\"second.disabled\"\n >\n <div class=\"ant-picker-time-panel-cell-inner\">{{ second.index | number: '2.0-0' }}</div>\n </li>\n }\n }\n </ul>\n }\n @if (nzUse12Hours) {\n <ul #use12HoursListElement class=\"ant-picker-time-panel-column\" style=\"position: relative;\">\n @for (range of use12HoursRange; track range) {\n <li\n (click)=\"select12Hours(range)\"\n class=\"ant-picker-time-panel-cell\"\n [class.ant-picker-time-panel-cell-selected]=\"isSelected12Hours(range)\"\n >\n <div class=\"ant-picker-time-panel-cell-inner\">{{ range.value }}</div>\n </li>\n }\n </ul>\n }\n </div>\n @if (!nzInDatePicker) {\n <div class=\"ant-picker-footer\">\n @if (nzAddOn) {\n <div class=\"ant-picker-footer-extra\">\n <ng-template [ngTemplateOutlet]=\"nzAddOn\"></ng-template>\n </div>\n }\n <ul class=\"ant-picker-ranges\">\n <li class=\"ant-picker-now\">\n <a (click)=\"onClickNow()\">\n {{ nzNowText || ('Calendar.lang.now' | nzI18n) }}\n </a>\n </li>\n <li class=\"ant-picker-ok\">\n <button nz-button type=\"button\" nzSize=\"small\" nzType=\"primary\" (click)=\"onClickOk()\">\n {{ nzOkText || ('Calendar.lang.ok' | nzI18n) }}\n </button>\n </li>\n </ul>\n </div>\n }\n `, isInline: true, dependencies: [{ kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: NzI18nModule }, { kind: \"ngmodule\", type: NzButtonModule }, { kind: \"component\", type: i1.NzButtonComponent, selector: \"button[nz-button], a[nz-button]\", inputs: [\"nzBlock\", \"nzGhost\", \"nzSearch\", \"nzLoading\", \"nzDanger\", \"disabled\", \"tabIndex\", \"nzType\", \"nzShape\", \"nzSize\"], exportAs: [\"nzButton\"] }, { kind: \"directive\", type: i2.ɵNzTransitionPatchDirective, selector: \"[nz-button], [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group\", inputs: [\"hidden\"] }, { kind: \"directive\", type: i3.NzWaveDirective, selector: \"[nz-wave],button[nz-button]:not([nzType=\\\"link\\\"]):not([nzType=\\\"text\\\"])\", inputs: [\"nzWaveExtraNode\"], exportAs: [\"nzWave\"] }, { kind: \"pipe\", type: DecimalPipe, name: \"number\" }, { kind: \"pipe\", type: i4.NzI18nPipe, name: \"nzI18n\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzTimePickerPanelComponent, decorators: [{\n type: Component,\n args: [{\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'nz-time-picker-panel',\n exportAs: 'nzTimePickerPanel',\n template: `\n @if (nzInDatePicker) {\n <div class=\"ant-picker-header\">\n <div class=\"ant-picker-header-view\">{{ dateHelper.format($any(time?.value), format) || '&nbsp;' }}</div>\n </div>\n }\n <div class=\"ant-picker-content\">\n @if (hourEnabled) {\n <ul #hourListElement class=\"ant-picker-time-panel-column\" style=\"position: relative;\">\n @for (hour of hourRange; track $index) {\n @if (!(nzHideDisabledOptions && hour.disabled)) {\n <li\n class=\"ant-picker-time-panel-cell\"\n (click)=\"selectHour(hour)\"\n [class.ant-picker-time-panel-cell-selected]=\"isSelectedHour(hour)\"\n [class.ant-picker-time-panel-cell-disabled]=\"hour.disabled\"\n >\n <div class=\"ant-picker-time-panel-cell-inner\">{{ hour.index | number: '2.0-0' }}</div>\n </li>\n }\n }\n </ul>\n }\n @if (minuteEnabled) {\n <ul #minuteListElement class=\"ant-picker-time-panel-column\" style=\"position: relative;\">\n @for (minute of minuteRange; track $index) {\n @if (!(nzHideDisabledOptions && minute.disabled)) {\n <li\n class=\"ant-picker-time-panel-cell\"\n (click)=\"selectMinute(minute)\"\n [class.ant-picker-time-panel-cell-selected]=\"isSelectedMinute(minute)\"\n [class.ant-picker-time-panel-cell-disabled]=\"minute.disabled\"\n >\n <div class=\"ant-picker-time-panel-cell-inner\">{{ minute.index | number: '2.0-0' }}</div>\n </li>\n }\n }\n </ul>\n }\n @if (secondEnabled) {\n <ul #secondListElement class=\"ant-picker-time-panel-column\" style=\"position: relative;\">\n @for (second of secondRange; track $index) {\n @if (!(nzHideDisabledOptions && second.disabled)) {\n <li\n class=\"ant-picker-time-panel-cell\"\n (click)=\"selectSecond(second)\"\n [class.ant-picker-time-panel-cell-selected]=\"isSelectedSecond(second)\"\n [class.ant-picker-time-panel-cell-disabled]=\"second.disabled\"\n >\n <div class=\"ant-picker-time-panel-cell-inner\">{{ second.index | number: '2.0-0' }}</div>\n </li>\n }\n }\n </ul>\n }\n @if (nzUse12Hours) {\n <ul #use12HoursListElement class=\"ant-picker-time-panel-column\" style=\"position: relative;\">\n @for (range of use12HoursRange; track range) {\n <li\n (click)=\"select12Hours(range)\"\n class=\"ant-picker-time-panel-cell\"\n [class.ant-picker-time-panel-cell-selected]=\"isSelected12Hours(range)\"\n >\n <div class=\"ant-picker-time-panel-cell-inner\">{{ range.value }}</div>\n </li>\n }\n </ul>\n }\n </div>\n @if (!nzInDatePicker) {\n <div class=\"ant-picker-footer\">\n @if (nzAddOn) {\n <div class=\"ant-picker-footer-extra\">\n <ng-template [ngTemplateOutlet]=\"nzAddOn\"></ng-template>\n </div>\n }\n <ul class=\"ant-picker-ranges\">\n <li class=\"ant-picker-now\">\n <a (click)=\"onClickNow()\">\n {{ nzNowText || ('Calendar.lang.now' | nzI18n) }}\n </a>\n </li>\n <li class=\"ant-picker-ok\">\n <button nz-button type=\"button\" nzSize=\"small\" nzType=\"primary\" (click)=\"onClickOk()\">\n {{ nzOkText || ('Calendar.lang.ok' | nzI18n) }}\n </button>\n </li>\n </ul>\n </div>\n }\n `,\n host: {\n class: 'ant-picker-time-panel',\n '[class.ant-picker-time-panel-column-0]': `enabledColumns === 0 && !nzInDatePicker`,\n '[class.ant-picker-time-panel-column-1]': `enabledColumns === 1 && !nzInDatePicker`,\n '[class.ant-picker-time-panel-column-2]': `enabledColumns === 2 && !nzInDatePicker`,\n '[class.ant-picker-time-panel-column-3]': `enabledColumns === 3 && !nzInDatePicker`,\n '[class.ant-picker-time-panel-narrow]': `enabledColumns < 3`,\n '[class.ant-picker-time-panel-placement-bottomLeft]': `!nzInDatePicker`\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NzTimePickerPanelComponent),\n multi: true\n }\n ],\n imports: [DecimalPipe, NgTemplateOutlet, NzI18nModule, NzButtonModule]\n }]\n }], propDecorators: { hourListElement: [{\n type: ViewChild,\n args: ['hourListElement', { static: false }]\n }], minuteListElement: [{\n type: ViewChild,\n args: ['minuteListElement', { static: false }]\n }], secondListElement: [{\n type: ViewChild,\n args: ['secondListElement', { static: false }]\n }], use12HoursListElement: [{\n type: ViewChild,\n args: ['use12HoursListElement', { static: false }]\n }], nzInDatePicker: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzAddOn: [{\n type: Input\n }], nzHideDisabledOptions: [{\n type: Input\n }], nzClearText: [{\n type: Input\n }], nzNowText: [{\n type: Input\n }], nzOkText: [{\n type: Input\n }], nzPlaceHolder: [{\n type: Input\n }], nzUse12Hours: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzDefaultOpenValue: [{\n type: Input\n }], closePanel: [{\n type: Output\n }], nzAllowEmpty: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzDisabledHours: [{\n type: Input\n }], nzDisabledMinutes: [{\n type: Input\n }], nzDisabledSeconds: [{\n type: Input\n }], format: [{\n type: Input\n }], nzHourStep: [{\n type: Input,\n args: [{ transform: numberAttribute }]\n }], nzMinuteStep: [{\n type: Input,\n args: [{ transform: numberAttribute }]\n }], nzSecondStep: [{\n type: Input,\n args: [{ transform: numberAttribute }]\n }] } });\n\nconst NZ_CONFIG_MODULE_NAME = 'timePicker';\nlet NzTimePickerComponent = (() => {\n let _nzVariant_decorators;\n let _nzVariant_initializers = [];\n let _nzVariant_extraInitializers = [];\n let _nzHourStep_decorators;\n let _nzHourStep_initializers = [];\n let _nzHourStep_extraInitializers = [];\n let _nzMinuteStep_decorators;\n let _nzMinuteStep_initializers = [];\n let _nzMinuteStep_extraInitializers = [];\n let _nzSecondStep_decorators;\n let _nzSecondStep_initializers = [];\n let _nzSecondStep_extraInitializers = [];\n let _nzClearText_decorators;\n let _nzClearText_initializers = [];\n let _nzClearText_extraInitializers = [];\n let _nzNowText_decorators;\n let _nzNowText_initializers = [];\n let _nzNowText_extraInitializers = [];\n let _nzOkText_decorators;\n let _nzOkText_initializers = [];\n let _nzOkText_extraInitializers = [];\n let _nzPopupClassName_decorators;\n let _nzPopupClassName_initializers = [];\n let _nzPopupClassName_extraInitializers = [];\n let _nzFormat_decorators;\n let _nzFormat_initializers = [];\n let _nzFormat_extraInitializers = [];\n let _nzUse12Hours_decorators;\n let _nzUse12Hours_initializers = [];\n let _nzUse12Hours_extraInitializers = [];\n let _nzSuffixIcon_decorators;\n let _nzSuffixIcon_initializers = [];\n let _nzSuffixIcon_extraInitializers = [];\n let _nzAllowEmpty_decorators;\n let _nzAllowEmpty_initializers = [];\n let _nzAllowEmpty_extraInitializers = [];\n let _nzBackdrop_decorators;\n let _nzBackdrop_initializers = [];\n let _nzBackdrop_extraInitializers = [];\n return class NzTimePickerComponent {\n static {\n const _metadata = typeof Symbol === \"function\" && Symbol.metadata ? Object.create(null) : void 0;\n _nzVariant_decorators = [WithConfig()];\n _nzHourStep_decorators = [WithConfig()];\n _nzMinuteStep_decorators = [WithConfig()];\n _nzSecondStep_decorators = [WithConfig()];\n _nzClearText_decorators = [WithConfig()];\n _nzNowText_decorators = [WithConfig()];\n _nzOkText_decorators = [WithConfig()];\n _nzPopupClassName_decorators = [WithConfig()];\n _nzFormat_decorators = [WithConfig()];\n _nzUse12Hours_decorators = [WithConfig()];\n _nzSuffixIcon_decorators = [WithConfig()];\n _nzAllowEmpty_decorators = [WithConfig()];\n _nzBackdrop_decorators = [WithConfig()];\n __esDecorate(null, null, _nzVariant_decorators, { kind: \"field\", name: \"nzVariant\", static: false, private: false, access: { has: obj => \"nzVariant\" in obj, get: obj => obj.nzVariant, set: (obj, value) => { obj.nzVariant = value; } }, metadata: _metadata }, _nzVariant_initializers, _nzVariant_extraInitializers);\n __esDecorate(null, null, _nzHourStep_decorators, { kind: \"field\", name: \"nzHourStep\", static: false, private: false, access: { has: obj => \"nzHourStep\" in obj, get: obj => obj.nzHourStep, set: (obj, value) => { obj.nzHourStep = value; } }, metadata: _metadata }, _nzHourStep_initializers, _nzHourStep_extraInitializers);\n __esDecorate(null, null, _nzMinuteStep_decorators, { kind: \"field\", name: \"nzMinuteStep\", static: false, private: false, access: { has: obj => \"nzMinuteStep\" in obj, get: obj => obj.nzMinuteStep, set: (obj, value) => { obj.nzMinuteStep = value; } }, metadata: _metadata }, _nzMinuteStep_initializers, _nzMinuteStep_extraInitializers);\n __esDecorate(null, null, _nzSecondStep_decorators, { kind: \"field\", name: \"nzSecondStep\", static: false, private: false, access: { has: obj => \"nzSecondStep\" in obj, get: obj => obj.nzSecondStep, set: (obj, value) => { obj.nzSecondStep = value; } }, metadata: _metadata }, _nzSecondStep_initializers, _nzSecondStep_extraInitializers);\n __esDecorate(null, null, _nzClearText_decorators, { kind: \"field\", name: \"nzClearText\", static: false, private: false, access: { has: obj => \"nzClearText\" in obj, get: obj => obj.nzClearText, set: (obj, value) => { obj.nzClearText = value; } }, metadata: _metadata }, _nzClearText_initializers, _nzClearText_extraInitializers);\n __esDecorate(null, null, _nzNowText_decorators, { kind: \"field\", name: \"nzNowText\", static: false, private: false, access: { has: obj => \"nzNowText\" in obj, get: obj => obj.nzNowText, set: (obj, value) => { obj.nzNowText = value; } }, metadata: _metadata }, _nzNowText_initializers, _nzNowText_extraInitializers);\n __esDecorate(null, null, _nzOkText_decorators, { kind: \"field\", name: \"nzOkText\", static: false, private: false, access: { has: obj => \"nzOkText\" in obj, get: obj => obj.nzOkText, set: (obj, value) => { obj.nzOkText = value; } }, metadata: _metadata }, _nzOkText_initializers, _nzOkText_extraInitializers);\n __esDecorate(null, null, _nzPopupClassName_decorators, { kind: \"field\", name: \"nzPopupClassName\", static: false, private: false, access: { has: obj => \"nzPopupClassName\" in obj, get: obj => obj.nzPopupClassName, set: (obj, value) => { obj.nzPopupClassName = value; } }, metadata: _metadata }, _nzPopupClassName_initializers, _nzPopupClassName_extraInitializers);\n __esDecorate(null, null, _nzFormat_decorators, { kind: \"field\", name: \"nzFormat\", static: false, private: false, access: { has: obj => \"nzFormat\" in obj, get: obj => obj.nzFormat, set: (obj, value) => { obj.nzFormat = value; } }, metadata: _metadata }, _nzFormat_initializers, _nzFormat_extraInitializers);\n __esDecorate(null, null, _nzUse12Hours_decorators, { kind: \"field\", name: \"nzUse12Hours\", static: false, private: false, access: { has: obj => \"nzUse12Hours\" in obj, get: obj => obj.nzUse12Hours, set: (obj, value) => { obj.nzUse12Hours = value; } }, metadata: _metadata }, _nzUse12Hours_initializers, _nzUse12Hours_extraInitializers);\n __esDecorate(null, null, _nzSuffixIcon_decorators, { kind: \"field\", name: \"nzSuffixIcon\", static: false, private: false, access: { has: obj => \"nzSuffixIcon\" in obj, get: obj => obj.nzSuffixIcon, set: (obj, value) => { obj.nzSuffixIcon = value; } }, metadata: _metadata }, _nzSuffixIcon_initializers, _nzSuffixIcon_extraInitializers);\n __esDecorate(null, null, _nzAllowEmpty_decorators, { kind: \"field\", name: \"nzAllowEmpty\", static: false, private: false, access: { has: obj => \"nzAllowEmpty\" in obj, get: obj => obj.nzAllowEmpty, set: (obj, value) => { obj.nzAllowEmpty = value; } }, metadata: _metadata }, _nzAllowEmpty_initializers, _nzAllowEmpty_extraInitializers);\n __esDecorate(null, null, _nzBackdrop_decorators, { kind: \"field\", name: \"nzBackdrop\", static: false, private: false, access: { has: obj => \"nzBackdrop\" in obj, get: obj => obj.nzBackdrop, set: (obj, value) => { obj.nzBackdrop = value; } }, metadata: _metadata }, _nzBackdrop_initializers, _nzBackdrop_extraInitializers);\n if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });\n }\n _nzModuleName = NZ_CONFIG_MODULE_NAME;\n nzConfigService = inject(NzConfigService);\n i18n = inject(NzI18nService);\n elementRef = inject(ElementRef);\n renderer = inject(Renderer2);\n cdr = inject(ChangeDetectorRef);\n dateHelper = inject(DateHelperService);\n platform = inject(Platform);\n directionality = inject(Directionality);\n destroyRef = inject(DestroyRef);\n _onChange;\n _onTouched;\n isNzDisableFirstChange = true;\n isInit = false;\n focused = false;\n inputValue = '';\n value = null;\n preValue = null;\n inputSize;\n i18nPlaceHolder$ = of(undefined);\n overlayPositions = [\n {\n offsetY: 3,\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n {\n offsetY: -3,\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n },\n {\n offsetY: 3,\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n },\n {\n offsetY: -3,\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom'\n }\n ];\n dir = 'ltr';\n // status\n prefixCls = 'ant-picker';\n statusCls = {};\n status = '';\n hasFeedback = false;\n get origin() {\n return this.elementRef;\n }\n inputRef;\n nzId = null;\n nzSize = 'default';\n nzStatus = '';\n nzVariant = __runInitializers(this, _nzVariant_initializers, 'outlined');\n nzHourStep = (__runInitializers(this, _nzVariant_extraInitializers), __runInitializers(this, _nzHourStep_initializers, 1));\n nzMinuteStep = (__runInitializers(this, _nzHourStep_extraInitializers), __runInitializers(this, _nzMinuteStep_initializers, 1));\n nzSecondStep = (__runInitializers(this, _nzMinuteStep_extraInitializers), __runInitializers(this, _nzSecondStep_initializers, 1));\n nzClearText = (__runInitializers(this, _nzSecondStep_extraInitializers), __runInitializers(this, _nzClearText_initializers, 'clear'));\n nzNowText = (__runInitializers(this, _nzClearText_extraInitializers), __runInitializers(this, _nzNowText_initializers, ''));\n nzOkText = (__runInitializers(this, _nzNowText_extraInitializers), __runInitializers(this, _nzOkText_initializers, ''));\n nzPopupClassName = (__runInitializers(this, _nzOkText_extraInitializers), __runInitializers(this, _nzPopupClassName_initializers, ''));\n nzPlaceHolder = (__runInitializers(this, _nzPopupClassName_extraInitializers), '');\n nzAddOn;\n nzDefaultOpenValue;\n nzDisabledHours;\n nzDisabledMinutes;\n nzDisabledSeconds;\n nzFormat = __runInitializers(this, _nzFormat_initializers, 'HH:mm:ss');\n nzOpen = (__runInitializers(this, _nzFormat_extraInitializers), false);\n nzUse12Hours = __runInitializers(this, _nzUse12Hours_initializers, false);\n nzSuffixIcon = (__runInitializers(this, _nzUse12Hours_extraInitializers), __runInitializers(this, _nzSuffixIcon_initializers, 'clock-circle'));\n nzOpenChange = (__runInitializers(this, _nzSuffixIcon_extraInitializers), new EventEmitter());\n nzHideDisabledOptions = false;\n nzAllowEmpty = __runInitializers(this, _nzAllowEmpty_initializers, true);\n nzDisabled = (__runInitializers(this, _nzAllowEmpty_extraInitializers), false);\n nzAutoFocus = false;\n nzBackdrop = __runInitializers(this, _nzBackdrop_initializers, false);\n /**\n * @deprecated Will be removed in v21. It is recommended to use `nzVariant` instead.\n */\n nzBorderless = (__runInitializers(this, _nzBackdrop_extraInitializers), false);\n nzInputReadOnly = false;\n emitValue(value) {\n this.setValue(value, true);\n if (this._onChange) {\n this._onChange(this.value);\n }\n if (this._onTouched) {\n this._onTouched();\n }\n }\n setValue(value, syncPreValue = false) {\n if (syncPreValue) {\n this.preValue = isValid(value) ? new Date(value) : null;\n }\n this.value = isValid(value) ? new Date(value) : null;\n this.inputValue = this.dateHelper.format(value, this.nzFormat);\n this.cdr.markForCheck();\n }\n open() {\n if (this.nzDisabled || this.nzOpen) {\n return;\n }\n this.focus();\n this.nzOpen = true;\n this.nzOpenChange.emit(this.nzOpen);\n }\n close() {\n this.nzOpen = false;\n this.cdr.markForCheck();\n this.nzOpenChange.emit(this.nzOpen);\n }\n updateAutoFocus() {\n if (this.isInit && !this.nzDisabled) {\n if (this.nzAutoFocus) {\n this.renderer.setAttribute(this.inputRef.nativeElement, 'autofocus', 'autofocus');\n }\n else {\n this.renderer.removeAttribute(this.inputRef.nativeElement, 'autofocus');\n }\n }\n }\n onClickClearBtn(event) {\n event.stopPropagation();\n this.emitValue(null);\n }\n onClickOutside(event) {\n const target = _getEventTarget(event);\n if (!this.elementRef.nativeElement.contains(target)) {\n this.setCurrentValueAndClose();\n }\n }\n onFocus(value) {\n this.focused = value;\n if (!value) {\n if (this.checkTimeValid(this.value)) {\n this.setCurrentValueAndClose();\n }\n else {\n this.setValue(this.preValue);\n this.close();\n }\n }\n }\n focus() {\n if (this.inputRef.nativeElement) {\n this.inputRef.nativeElement.focus();\n }\n }\n blur() {\n if (this.inputRef.nativeElement) {\n this.inputRef.nativeElement.blur();\n }\n }\n onKeyupEsc() {\n this.setValue(this.preValue);\n }\n onKeyupEnter() {\n if (this.nzOpen && isValid(this.value)) {\n this.setCurrentValueAndClose();\n }\n else if (!this.nzOpen) {\n this.open();\n }\n }\n onInputChange(str) {\n if (!this.platform.TRIDENT && document.activeElement === this.inputRef.nativeElement) {\n this.open();\n this.parseTimeString(str);\n }\n }\n onPanelValueChange(value) {\n this.setValue(value);\n this.focus();\n }\n closePanel() {\n this.inputRef.nativeElement.blur();\n }\n setCurrentValueAndClose() {\n this.emitValue(this.value);\n this.close();\n }\n finalSize = computed(() => {\n if (this.compactSize) {\n return this.compactSize();\n }\n return this.size();\n }, ...(ngDevMode ? [{ debugName: \"finalSize\" }] : []));\n size = signal(this.nzSize, ...(ngDevMode ? [{ debugName: \"size\" }] : []));\n compactSize = inject(NZ_SPACE_COMPACT_SIZE, { optional: true });\n nzFormStatusService = inject(NzFormStatusService, { optional: true });\n nzFormNoStatusService = inject(NzFormNoStatusService, { optional: true });\n ngOnInit() {\n this.nzFormStatusService?.formStatusChanges\n .pipe(distinctUntilChanged((pre, cur) => pre.status === cur.status && pre.hasFeedback === cur.hasFeedback), withLatestFrom(this.nzFormNoStatusService ? this.nzFormNoStatusService.noFormStatus : of(false)), map(([{ status, hasFeedback }, noStatus]) => ({ status: noStatus ? '' : status, hasFeedback })), takeUntilDestroyed(this.destroyRef))\n .subscribe(({ status, hasFeedback }) => {\n this.setStatusStyles(status, hasFeedback);\n });\n this.inputSize = Math.max(8, this.nzFormat.length) + 2;\n this.i18nPlaceHolder$ = this.i18n.localeChange.pipe(map(nzLocale => nzLocale.TimePicker.placeholder));\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(direction => {\n this.dir = direction;\n });\n }\n ngOnChanges({ nzUse12Hours, nzFormat, nzDisabled, nzAutoFocus, nzStatus, nzSize }) {\n if (nzUse12Hours && !nzUse12Hours.previousValue && nzUse12Hours.currentValue && !nzFormat) {\n this.nzFormat = 'h:mm:ss a';\n }\n if (nzDisabled) {\n const value = nzDisabled.currentValue;\n const input = this.inputRef.nativeElement;\n if (value) {\n this.renderer.setAttribute(input, 'disabled', '');\n }\n else {\n this.renderer.removeAttribute(input, 'disabled');\n }\n }\n if (nzAutoFocus) {\n this.updateAutoFocus();\n }\n if (nzStatus) {\n this.setStatusStyles(this.nzStatus, this.hasFeedback);\n }\n if (nzSize) {\n this.size.set(nzSize.currentValue);\n }\n }\n parseTimeString(str) {\n const value = this.dateHelper.parseTime(str, this.nzFormat) || null;\n if (isValid(value)) {\n this.value = value;\n this.cdr.markForCheck();\n }\n }\n ngAfterViewInit() {\n this.isInit = true;\n this.updateAutoFocus();\n }\n writeValue(time) {\n let result;\n if (time instanceof Date) {\n result = time;\n }\n else if (isNil(time)) {\n result = null;\n }\n else {\n warn('Non-Date type is not recommended for time-picker, use \"Date\" type.');\n result = new Date(time);\n }\n this.setValue(result, true);\n }\n registerOnChange(fn) {\n this._onChange = fn;\n }\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n setDisabledState(isDisabled) {\n this.nzDisabled = (this.isNzDisableFirstChange && this.nzDisabled) || isDisabled;\n this.isNzDisableFirstChange = false;\n this.cdr.markForCheck();\n }\n checkTimeValid(value) {\n if (!value) {\n return true;\n }\n const disabledHours = this.nzDisabledHours?.();\n const disabledMinutes = this.nzDisabledMinutes?.(value.getHours());\n const disabledSeconds = this.nzDisabledSeconds?.(value.getHours(), value.getMinutes());\n return !(disabledHours?.includes(value.getHours()) ||\n disabledMinutes?.includes(value.getMinutes()) ||\n disabledSeconds?.includes(value.getSeconds()));\n }\n setStatusStyles(status, hasFeedback) {\n // set inner status\n this.status = status;\n this.hasFeedback = hasFeedback;\n this.cdr.markForCheck();\n // render status if nzStatus is set\n this.statusCls = getStatusClassNames(this.prefixCls, status, hasFeedback);\n Object.keys(this.statusCls).forEach(status => {\n if (this.statusCls[status]) {\n this.renderer.addClass(this.elementRef.nativeElement, status);\n }\n else {\n this.renderer.removeClass(this.elementRef.nativeElement, status);\n }\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzTimePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.0\", type: NzTimePickerComponent, isStandalone: true, selector: \"nz-time-picker\", inputs: { nzId: \"nzId\", nzSize: \"nzSize\", nzStatus: \"nzStatus\", nzVariant: \"nzVariant\", nzHourStep: \"nzHourStep\", nzMinuteStep: \"nzMinuteStep\", nzSecondStep: \"nzSecondStep\", nzClearText: \"nzClearText\", nzNowText: \"nzNowText\", nzOkText: \"nzOkText\", nzPopupClassName: \"nzPopupClassName\", nzPlaceHolder: \"nzPlaceHolder\", nzAddOn: \"nzAddOn\", nzDefaultOpenValue: \"nzDefaultOpenValue\", nzDisabledHours: \"nzDisabledHours\", nzDisabledMinutes: \"nzDisabledMinutes\", nzDisabledSeconds: \"nzDisabledSeconds\", nzFormat: \"nzFormat\", nzOpen: \"nzOpen\", nzUse12Hours: [\"nzUse12Hours\", \"nzUse12Hours\", booleanAttribute], nzSuffixIcon: \"nzSuffixIcon\", nzHideDisabledOptions: [\"nzHideDisabledOptions\", \"nzHideDisabledOptions\", booleanAttribute], nzAllowEmpty: [\"nzAllowEmpty\", \"nzAllowEmpty\", booleanAttribute], nzDisabled: [\"nzDisabled\", \"nzDisabled\", booleanAttribute], nzAutoFocus: [\"nzAutoFocus\", \"nzAutoFocus\", booleanAttribute], nzBackdrop: \"nzBackdrop\", nzBorderless: [\"nzBorderless\", \"nzBorderless\", booleanAttribute], nzInputReadOnly: [\"nzInputReadOnly\", \"nzInputReadOnly\", booleanAttribute] }, outputs: { nzOpenChange: \"nzOpenChange\" }, host: { listeners: { \"click\": \"open()\" }, properties: { \"class.ant-picker-large\": \"finalSize() === 'large'\", \"class.ant-picker-small\": \"finalSize() === 'small'\", \"class.ant-picker-disabled\": \"nzDisabled\", \"class.ant-picker-focused\": \"focused\", \"class.ant-picker-rtl\": \"dir === 'rtl'\", \"class.ant-picker-borderless\": \"nzVariant === 'borderless' || (nzVariant === 'outlined' && nzBorderless)\", \"class.ant-picker-filled\": \"nzVariant === 'filled'\", \"class.ant-picker-underlined\": \"nzVariant === 'underlined'\" }, classAttribute: \"ant-picker\" }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NzTimePickerComponent),\n multi: true\n },\n {\n provide: NZ_SPACE_COMPACT_ITEM_TYPE,\n useValue: 'picker'\n }\n ], viewQueries: [{ propertyName: \"inputRef\", first: true, predicate: [\"inputElement\"], descendants: true, static: true }], exportAs: [\"nzTimePicker\"], usesOnChanges: true, hostDirectives: [{ directive: i1$1.NzSpaceCompactItemDirective }], ngImport: i0, template: `\n <div class=\"ant-picker-input\">\n <input\n #inputElement\n [attr.id]=\"nzId\"\n type=\"text\"\n [size]=\"inputSize\"\n autocomplete=\"off\"\n [placeholder]=\"nzPlaceHolder || (i18nPlaceHolder$ | async)\"\n [(ngModel)]=\"inputValue\"\n [disabled]=\"nzDisabled\"\n [readOnly]=\"nzInputReadOnly\"\n (focus)=\"onFocus(true)\"\n (blur)=\"onFocus(false)\"\n (keyup.enter)=\"onKeyupEnter()\"\n (keyup.escape)=\"onKeyupEsc()\"\n (ngModelChange)=\"onInputChange($event)\"\n />\n <span class=\"ant-picker-suffix\">\n <ng-container *nzStringTemplateOutlet=\"nzSuffixIcon; let suffixIcon\">\n <nz-icon [nzType]=\"suffixIcon\" />\n </ng-container>\n @if (hasFeedback && !!status) {\n <nz-form-item-feedback-icon [status]=\"status\"></nz-form-item-feedback-icon>\n }\n </span>\n @if (nzAllowEmpty && !nzDisabled && value) {\n <span class=\"ant-picker-clear\" (click)=\"onClickClearBtn($event)\">\n <nz-icon nzType=\"close-circle\" nzTheme=\"fill\" [attr.aria-label]=\"nzClearText\" [attr.title]=\"nzClearText\" />\n </span>\n }\n </div>\n\n <ng-template\n cdkConnectedOverlay\n nzConnectedOverlay\n [cdkConnectedOverlayHasBackdrop]=\"nzBackdrop\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"nzOpen\"\n [cdkConnectedOverlayTransformOriginOn]=\"'.ant-picker-dropdown'\"\n (detach)=\"close()\"\n (overlayOutsideClick)=\"onClickOutside($event)\"\n >\n <div [@slideMotion]=\"'enter'\" class=\"ant-picker-dropdown\" style=\"position: relative\">\n <div class=\"ant-picker-panel-container\">\n <div tabindex=\"-1\" class=\"ant-picker-panel\">\n <nz-time-picker-panel\n [class]=\"nzPopupClassName\"\n [format]=\"nzFormat\"\n [nzHourStep]=\"nzHourStep\"\n [nzMinuteStep]=\"nzMinuteStep\"\n [nzSecondStep]=\"nzSecondStep\"\n [nzDisabledHours]=\"nzDisabledHours\"\n [nzDisabledMinutes]=\"nzDisabledMinutes\"\n [nzDisabledSeconds]=\"nzDisabledSeconds\"\n [nzPlaceHolder]=\"nzPlaceHolder || (i18nPlaceHolder$ | async)\"\n [nzHideDisabledOptions]=\"nzHideDisabledOptions\"\n [nzUse12Hours]=\"nzUse12Hours\"\n [nzDefaultOpenValue]=\"nzDefaultOpenValue\"\n [nzAddOn]=\"nzAddOn\"\n [nzClearText]=\"nzClearText\"\n [nzNowText]=\"nzNowText\"\n [nzOkText]=\"nzOkText\"\n [nzAllowEmpty]=\"nzAllowEmpty\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onPanelValueChange($event)\"\n (closePanel)=\"closePanel()\"\n ></nz-time-picker-panel>\n </div>\n </div>\n </div>\n </ng-template>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2$1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i2$1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2$1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: NzOutletModule }, { kind: \"directive\", type: i3$1.NzStringTemplateOutletDirective, selector: \"[nzStringTemplateOutlet]\", inputs: [\"nzStringTemplateOutletContext\", \"nzStringTemplateOutlet\"], exportAs: [\"nzStringTemplateOutlet\"] }, { kind: \"ngmodule\", type: NzIconModule }, { kind: \"directive\", type: i4$1.NzIconDirective, selector: \"nz-icon,[nz-icon]\", inputs: [\"nzSpin\", \"nzRotate\", \"nzType\", \"nzTheme\", \"nzTwotoneColor\", \"nzIconfont\"], exportAs: [\"nzIcon\"] }, { kind: \"component\", type: NzFormItemFeedbackIconComponent, selector: \"nz-form-item-feedback-icon\", inputs: [\"status\"], exportAs: [\"nzFormFeedbackIcon\"] }, { kind: \"component\", type: NzTimePickerPanelComponent, selector: \"nz-time-picker-panel\", inputs: [\"nzInDatePicker\", \"nzAddOn\", \"nzHideDisabledOptions\", \"nzClearText\", \"nzNowText\", \"nzOkText\", \"nzPlaceHolder\", \"nzUse12Hours\", \"nzDefaultOpenValue\", \"nzAllowEmpty\", \"nzDisabledHours\", \"nzDisabledMinutes\", \"nzDisabledSeconds\", \"format\", \"nzHourStep\", \"nzMinuteStep\", \"nzSecondStep\"], outputs: [\"closePanel\"], exportAs: [\"nzTimePickerPanel\"] }, { kind: \"ngmodule\", type: NzOverlayModule }, { kind: \"directive\", type: i5.NzConnectedOverlayDirective, selector: \"[cdkConnectedOverlay][nzConnectedOverlay]\", inputs: [\"nzArrowPointAtCenter\"], exportAs: [\"nzConnectedOverlay\"] }, { kind: \"ngmodule\", type: OverlayModule }, { kind: \"directive\", type: i6.CdkConnectedOverlay, selector: \"[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]\", inputs: [\"cdkConnectedOverlayOrigin\", \"cdkConnectedOverlayPositions\", \"cdkConnectedOverlayPositionStrategy\", \"cdkConnectedOverlayOffsetX\", \"cdkConnectedOverlayOffsetY\", \"cdkConnectedOverlayWidth\", \"cdkConnectedOverlayHeight\", \"cdkConnectedOverlayMinWidth\", \"cdkConnectedOverlayMinHeight\", \"cdkConnectedOverlayBackdropClass\", \"cdkConnectedOverlayPanelClass\", \"cdkConnectedOverlayViewportMargin\", \"cdkConnectedOverlayScrollStrategy\", \"cdkConnectedOverlayOpen\", \"cdkConnectedOverlayDisableClose\", \"cdkConnectedOverlayTransformOriginOn\", \"cdkConnectedOverlayHasBackdrop\", \"cdkConnectedOverlayLockPosition\", \"cdkConnectedOverlayFlexibleDimensions\", \"cdkConnectedOverlayGrowAfterOpen\", \"cdkConnectedOverlayPush\", \"cdkConnectedOverlayDisposeOnNavigation\"], outputs: [\"backdropClick\", \"positionChange\", \"attach\", \"detach\", \"overlayKeydown\", \"overlayOutsideClick\"], exportAs: [\"cdkConnectedOverlay\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }], animations: [slideMotion], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n };\n})();\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzTimePickerComponent, decorators: [{\n type: Component,\n args: [{\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'nz-time-picker',\n exportAs: 'nzTimePicker',\n template: `\n <div class=\"ant-picker-input\">\n <input\n #inputElement\n [attr.id]=\"nzId\"\n type=\"text\"\n [size]=\"inputSize\"\n autocomplete=\"off\"\n [placeholder]=\"nzPlaceHolder || (i18nPlaceHolder$ | async)\"\n [(ngModel)]=\"inputValue\"\n [disabled]=\"nzDisabled\"\n [readOnly]=\"nzInputReadOnly\"\n (focus)=\"onFocus(true)\"\n (blur)=\"onFocus(false)\"\n (keyup.enter)=\"onKeyupEnter()\"\n (keyup.escape)=\"onKeyupEsc()\"\n (ngModelChange)=\"onInputChange($event)\"\n />\n <span class=\"ant-picker-suffix\">\n <ng-container *nzStringTemplateOutlet=\"nzSuffixIcon; let suffixIcon\">\n <nz-icon [nzType]=\"suffixIcon\" />\n </ng-container>\n @if (hasFeedback && !!status) {\n <nz-form-item-feedback-icon [status]=\"status\"></nz-form-item-feedback-icon>\n }\n </span>\n @if (nzAllowEmpty && !nzDisabled && value) {\n <span class=\"ant-picker-clear\" (click)=\"onClickClearBtn($event)\">\n <nz-icon nzType=\"close-circle\" nzTheme=\"fill\" [attr.aria-label]=\"nzClearText\" [attr.title]=\"nzClearText\" />\n </span>\n }\n </div>\n\n <ng-template\n cdkConnectedOverlay\n nzConnectedOverlay\n [cdkConnectedOverlayHasBackdrop]=\"nzBackdrop\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"nzOpen\"\n [cdkConnectedOverlayTransformOriginOn]=\"'.ant-picker-dropdown'\"\n (detach)=\"close()\"\n (overlayOutsideClick)=\"onClickOutside($event)\"\n >\n <div [@slideMotion]=\"'enter'\" class=\"ant-picker-dropdown\" style=\"position: relative\">\n <div class=\"ant-picker-panel-container\">\n <div tabindex=\"-1\" class=\"ant-picker-panel\">\n <nz-time-picker-panel\n [class]=\"nzPopupClassName\"\n [format]=\"nzFormat\"\n [nzHourStep]=\"nzHourStep\"\n [nzMinuteStep]=\"nzMinuteStep\"\n [nzSecondStep]=\"nzSecondStep\"\n [nzDisabledHours]=\"nzDisabledHours\"\n [nzDisabledMinutes]=\"nzDisabledMinutes\"\n [nzDisabledSeconds]=\"nzDisabledSeconds\"\n [nzPlaceHolder]=\"nzPlaceHolder || (i18nPlaceHolder$ | async)\"\n [nzHideDisabledOptions]=\"nzHideDisabledOptions\"\n [nzUse12Hours]=\"nzUse12Hours\"\n [nzDefaultOpenValue]=\"nzDefaultOpenValue\"\n [nzAddOn]=\"nzAddOn\"\n [nzClearText]=\"nzClearText\"\n [nzNowText]=\"nzNowText\"\n [nzOkText]=\"nzOkText\"\n [nzAllowEmpty]=\"nzAllowEmpty\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onPanelValueChange($event)\"\n (closePanel)=\"closePanel()\"\n ></nz-time-picker-panel>\n </div>\n </div>\n </div>\n </ng-template>\n `,\n host: {\n class: 'ant-picker',\n '[class.ant-picker-large]': `finalSize() === 'large'`,\n '[class.ant-picker-small]': `finalSize() === 'small'`,\n '[class.ant-picker-disabled]': `nzDisabled`,\n '[class.ant-picker-focused]': `focused`,\n '[class.ant-picker-rtl]': `dir === 'rtl'`,\n '[class.ant-picker-borderless]': `nzVariant === 'borderless' || (nzVariant === 'outlined' && nzBorderless)`,\n '[class.ant-picker-filled]': `nzVariant === 'filled'`,\n '[class.ant-picker-underlined]': `nzVariant === 'underlined'`,\n '(click)': 'open()'\n },\n hostDirectives: [NzSpaceCompactItemDirective],\n animations: [slideMotion],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NzTimePickerComponent),\n multi: true\n },\n {\n provide: NZ_SPACE_COMPACT_ITEM_TYPE,\n useValue: 'picker'\n }\n ],\n imports: [\n AsyncPipe,\n FormsModule,\n NzOutletModule,\n NzIconModule,\n NzFormItemFeedbackIconComponent,\n NzTimePickerPanelComponent,\n NzOverlayModule,\n OverlayModule\n ]\n }]\n }], propDecorators: { inputRef: [{\n type: ViewChild,\n args: ['inputElement', { static: true }]\n }], nzId: [{\n type: Input\n }], nzSize: [{\n type: Input\n }], nzStatus: [{\n type: Input\n }], nzVariant: [{\n type: Input\n }], nzHourStep: [{\n type: Input\n }], nzMinuteStep: [{\n type: Input\n }], nzSecondStep: [{\n type: Input\n }], nzClearText: [{\n type: Input\n }], nzNowText: [{\n type: Input\n }], nzOkText: [{\n type: Input\n }], nzPopupClassName: [{\n type: Input\n }], nzPlaceHolder: [{\n type: Input\n }], nzAddOn: [{\n type: Input\n }], nzDefaultOpenValue: [{\n type: Input\n }], nzDisabledHours: [{\n type: Input\n }], nzDisabledMinutes: [{\n type: Input\n }], nzDisabledSeconds: [{\n type: Input\n }], nzFormat: [{\n type: Input\n }], nzOpen: [{\n type: Input\n }], nzUse12Hours: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzSuffixIcon: [{\n type: Input\n }], nzOpenChange: [{\n type: Output\n }], nzHideDisabledOptions: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzAllowEmpty: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzDisabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzAutoFocus: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzBackdrop: [{\n type: Input\n }], nzBorderless: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzInputReadOnly: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }] } });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzTimePickerModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzTimePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.0\", ngImport: i0, type: NzTimePickerModule, imports: [NzTimePickerComponent, NzTimePickerPanelComponent], exports: [NzTimePickerPanelComponent, NzTimePickerComponent] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzTimePickerModule, imports: [NzTimePickerComponent, NzTimePickerPanelComponent] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzTimePickerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [NzTimePickerComponent, NzTimePickerPanelComponent],\n exports: [NzTimePickerPanelComponent, NzTimePickerComponent]\n }]\n }] });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NzTimePickerComponent, NzTimePickerModule, NzTimePickerPanelComponent };\n\n","import * as i0 from '@angular/core';\nimport { inject, EventEmitter, booleanAttribute, Output, Input, ChangeDetectionStrategy, ViewEncapsulation, Component, Injectable, Directive, NgModule, ChangeDetectorRef, ElementRef, DestroyRef, Renderer2, computed, signal, DOCUMENT, forwardRef, ViewChildren, ViewChild } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport * as i1 from 'ng-zorro-antd/button';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport * as i3$1 from 'ng-zorro-antd/core/outlet';\nimport { NzStringTemplateOutletDirective, NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport { CandyDate, normalizeRangeValue, cloneDate, wrongSortOrder } from 'ng-zorro-antd/core/time';\nimport { DateHelperService, NzI18nService } from 'ng-zorro-antd/i18n';\nimport * as i2 from 'ng-zorro-antd/core/transition-patch';\nimport * as i3 from 'ng-zorro-antd/core/wave';\nimport { __esDecorate, __runInitializers } from 'tslib';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { CdkConnectedOverlay } from '@angular/cdk/overlay';\nimport { Platform } from '@angular/cdk/platform';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport * as i2$1 from '@angular/forms';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ReplaySubject, Subject, merge, of } from 'rxjs';\nimport { distinctUntilChanged, withLatestFrom, map } from 'rxjs/operators';\nimport { NzResizeObserver } from 'ng-zorro-antd/cdk/resize-observer';\nimport { slideMotion } from 'ng-zorro-antd/core/animation';\nimport { WithConfig, NzConfigService } from 'ng-zorro-antd/core/config';\nimport { NzFormStatusService, NzFormNoStatusService, NzFormItemFeedbackIconComponent } from 'ng-zorro-antd/core/form';\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation';\nimport * as i5 from 'ng-zorro-antd/core/overlay';\nimport { DEFAULT_DATE_PICKER_POSITIONS, DATE_PICKER_POSITION_MAP, NzOverlayModule } from 'ng-zorro-antd/core/overlay';\nimport { valueFunctionProp, fromEventOutsideAngular, toBoolean, getStatusClassNames } from 'ng-zorro-antd/core/util';\nimport * as i4 from 'ng-zorro-antd/icon';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport * as i1$1 from 'ng-zorro-antd/space';\nimport { NZ_SPACE_COMPACT_SIZE, NZ_SPACE_COMPACT_ITEM_TYPE, NzSpaceCompactItemDirective } from 'ng-zorro-antd/space';\nimport * as i11 from 'ng-zorro-antd/time-picker';\nimport { NzTimePickerModule } from 'ng-zorro-antd/time-picker';\nimport { startOfQuarter } from 'date-fns';\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst PREFIX_CLASS = 'ant-picker';\nconst defaultDisabledTime = {\n nzDisabledHours() {\n return [];\n },\n nzDisabledMinutes() {\n return [];\n },\n nzDisabledSeconds() {\n return [];\n }\n};\nfunction getTimeConfig(value, disabledTime) {\n let disabledTimeConfig = disabledTime ? disabledTime(value && value.nativeDate) : {};\n disabledTimeConfig = {\n ...defaultDisabledTime,\n ...disabledTimeConfig\n };\n return disabledTimeConfig;\n}\nfunction isTimeValidByConfig(value, disabledTimeConfig) {\n let invalidTime = false;\n if (value) {\n const hour = value.getHours();\n const minutes = value.getMinutes();\n const seconds = value.getSeconds();\n const disabledHours = disabledTimeConfig.nzDisabledHours();\n if (disabledHours.indexOf(hour) === -1) {\n const disabledMinutes = disabledTimeConfig.nzDisabledMinutes(hour);\n if (disabledMinutes.indexOf(minutes) === -1) {\n const disabledSeconds = disabledTimeConfig.nzDisabledSeconds(hour, minutes);\n invalidTime = disabledSeconds.indexOf(seconds) !== -1;\n }\n else {\n invalidTime = true;\n }\n }\n else {\n invalidTime = true;\n }\n }\n return !invalidTime;\n}\nfunction isTimeValid(value, disabledTime) {\n const disabledTimeConfig = getTimeConfig(value, disabledTime);\n return isTimeValidByConfig(value, disabledTimeConfig);\n}\nfunction isAllowedDate(value, disabledDate, disabledTime) {\n if (!value) {\n return false;\n }\n if (disabledDate) {\n if (disabledDate(value.nativeDate)) {\n return false;\n }\n }\n if (disabledTime) {\n if (!isTimeValid(value, disabledTime)) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n/**\n * Compatible translate the moment-like format pattern to angular's pattern\n * Why? For now, we need to support the existing language formats in AntD, and AntD uses the default temporal syntax.\n *\n * TODO: compare and complete all format patterns\n * Each format docs as below:\n *\n * @link https://momentjs.com/docs/#/displaying/format/\n * @link https://angular.io/api/common/DatePipe#description\n * @param format input format pattern\n */\nfunction transCompatFormat(format) {\n return (format &&\n format\n .replace(/Y/g, 'y') // only support y, yy, yyy, yyyy\n .replace(/D/g, 'd')); // d, dd represent of D, DD for momentjs, others are not support\n}\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass CalendarFooterComponent {\n dateHelper = inject(DateHelperService);\n locale;\n showToday = false;\n showNow = false;\n hasTimePicker = false;\n isRange = false;\n okDisabled = false;\n disabledDate;\n extraFooter;\n rangeQuickSelector = null;\n clickOk = new EventEmitter();\n clickToday = new EventEmitter();\n prefixCls = PREFIX_CLASS;\n isTodayDisabled = false;\n todayTitle = '';\n ngOnChanges(changes) {\n const now = new Date();\n if (changes.disabledDate) {\n this.isTodayDisabled = !!(this.disabledDate && this.disabledDate(now));\n }\n if (changes.locale) {\n // NOTE: Compat for DatePipe formatting rules\n const dateFormat = transCompatFormat(this.locale.dateFormat);\n this.todayTitle = this.dateHelper.format(now, dateFormat);\n }\n }\n onClickToday() {\n const now = new CandyDate();\n this.clickToday.emit(now.clone()); // To prevent the \"now\" being modified from outside, we use clone\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: CalendarFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.0\", type: CalendarFooterComponent, isStandalone: true, selector: \"calendar-footer\", inputs: { locale: \"locale\", showToday: [\"showToday\", \"showToday\", booleanAttribute], showNow: [\"showNow\", \"showNow\", booleanAttribute], hasTimePicker: [\"hasTimePicker\", \"hasTimePicker\", booleanAttribute], isRange: [\"isRange\", \"isRange\", booleanAttribute], okDisabled: [\"okDisabled\", \"okDisabled\", booleanAttribute], disabledDate: \"disabledDate\", extraFooter: \"extraFooter\", rangeQuickSelector: \"rangeQuickSelector\" }, outputs: { clickOk: \"clickOk\", clickToday: \"clickToday\" }, usesOnChanges: true, ngImport: i0, template: `\n <div class=\"{{ prefixCls }}-footer\">\n @if (extraFooter) {\n <div class=\"{{ prefixCls }}-footer-extra\">\n <ng-template [nzStringTemplateOutlet]=\"extraFooter\">{{ extraFooter }}</ng-template>\n </div>\n }\n\n @if (showToday) {\n <a\n class=\"{{ prefixCls }}-today-btn {{ isTodayDisabled ? prefixCls + '-today-btn-disabled' : '' }}\"\n role=\"button\"\n (click)=\"isTodayDisabled ? null : onClickToday()\"\n title=\"{{ todayTitle }}\"\n >\n {{ locale.today }}\n </a>\n }\n\n @if (hasTimePicker || rangeQuickSelector) {\n <ul class=\"{{ prefixCls }}-ranges\">\n <ng-container *ngTemplateOutlet=\"rangeQuickSelector\" />\n @if (showNow) {\n <li class=\"{{ prefixCls }}-now\">\n <a class=\"{{ prefixCls }}-now-btn\" (click)=\"isTodayDisabled ? null : onClickToday()\">\n {{ locale.now }}\n </a>\n </li>\n }\n\n @if (hasTimePicker) {\n <li class=\"{{ prefixCls }}-ok\">\n <button\n nz-button\n type=\"button\"\n nzType=\"primary\"\n nzSize=\"small\"\n [disabled]=\"okDisabled\"\n (click)=\"okDisabled ? null : clickOk.emit()\"\n >\n {{ locale.ok }}\n </button>\n </li>\n }\n </ul>\n }\n </div>\n `, isInline: true, dependencies: [{ kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: NzButtonModule }, { kind: \"component\", type: i1.NzButtonComponent, selector: \"button[nz-button], a[nz-button]\", inputs: [\"nzBlock\", \"nzGhost\", \"nzSearch\", \"nzLoading\", \"nzDanger\", \"disabled\", \"tabIndex\", \"nzType\", \"nzShape\", \"nzSize\"], exportAs: [\"nzButton\"] }, { kind: \"directive\", type: i2.ɵNzTransitionPatchDirective, selector: \"[nz-button], [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group\", inputs: [\"hidden\"] }, { kind: \"directive\", type: i3.NzWaveDirective, selector: \"[nz-wave],button[nz-button]:not([nzType=\\\"link\\\"]):not([nzType=\\\"text\\\"])\", inputs: [\"nzWaveExtraNode\"], exportAs: [\"nzWave\"] }, { kind: \"directive\", type: NzStringTemplateOutletDirective, selector: \"[nzStringTemplateOutlet]\", inputs: [\"nzStringTemplateOutletContext\", \"nzStringTemplateOutlet\"], exportAs: [\"nzStringTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: CalendarFooterComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'calendar-footer',\n imports: [NgTemplateOutlet, NzButtonModule, NzStringTemplateOutletDirective],\n template: `\n <div class=\"{{ prefixCls }}-footer\">\n @if (extraFooter) {\n <div class=\"{{ prefixCls }}-footer-extra\">\n <ng-template [nzStringTemplateOutlet]=\"extraFooter\">{{ extraFooter }}</ng-template>\n </div>\n }\n\n @if (showToday) {\n <a\n class=\"{{ prefixCls }}-today-btn {{ isTodayDisabled ? prefixCls + '-today-btn-disabled' : '' }}\"\n role=\"button\"\n (click)=\"isTodayDisabled ? null : onClickToday()\"\n title=\"{{ todayTitle }}\"\n >\n {{ locale.today }}\n </a>\n }\n\n @if (hasTimePicker || rangeQuickSelector) {\n <ul class=\"{{ prefixCls }}-ranges\">\n <ng-container *ngTemplateOutlet=\"rangeQuickSelector\" />\n @if (showNow) {\n <li class=\"{{ prefixCls }}-now\">\n <a class=\"{{ prefixCls }}-now-btn\" (click)=\"isTodayDisabled ? null : onClickToday()\">\n {{ locale.now }}\n </a>\n </li>\n }\n\n @if (hasTimePicker) {\n <li class=\"{{ prefixCls }}-ok\">\n <button\n nz-button\n type=\"button\"\n nzType=\"primary\"\n nzSize=\"small\"\n [disabled]=\"okDisabled\"\n (click)=\"okDisabled ? null : clickOk.emit()\"\n >\n {{ locale.ok }}\n </button>\n </li>\n }\n </ul>\n }\n </div>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { locale: [{\n type: Input\n }], showToday: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], showNow: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], hasTimePicker: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], isRange: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], okDisabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], disabledDate: [{\n type: Input\n }], extraFooter: [{\n type: Input\n }], rangeQuickSelector: [{\n type: Input\n }], clickOk: [{\n type: Output\n }], clickToday: [{\n type: Output\n }] } });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass DatePickerService {\n initialValue;\n value;\n activeDate;\n activeInput = 'left';\n arrowLeft = 0;\n isRange = false;\n valueChange$ = new ReplaySubject(1);\n emitValue$ = new Subject();\n inputPartChange$ = new Subject();\n initValue(reset = false) {\n if (reset) {\n this.initialValue = this.isRange ? [] : null;\n }\n this.setValue(this.initialValue);\n }\n hasValue(value = this.value) {\n if (Array.isArray(value)) {\n return !!value[0] || !!value[1];\n }\n else {\n return !!value;\n }\n }\n makeValue(value) {\n if (this.isRange) {\n return value ? value.map(val => new CandyDate(val)) : [];\n }\n else {\n return value ? new CandyDate(value) : null;\n }\n }\n setActiveDate(value, hasTimePicker = false, mode = 'month') {\n const parentPanels = {\n date: 'month',\n month: 'year',\n quarter: 'year',\n year: 'decade'\n };\n if (this.isRange) {\n this.activeDate = normalizeRangeValue(value, hasTimePicker, parentPanels[mode], this.activeInput);\n }\n else {\n this.activeDate = cloneDate(value);\n }\n }\n setValue(value) {\n this.value = value;\n this.valueChange$.next(this.value);\n }\n getActiveIndex(part = this.activeInput) {\n return { left: 0, right: 1 }[part];\n }\n ngOnDestroy() {\n this.valueChange$.complete();\n this.emitValue$.complete();\n this.inputPartChange$.complete();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: DatePickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: DatePickerService });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: DatePickerService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass AbstractPanelHeader {\n prefixCls = `ant-picker-header`;\n selectors = [];\n mode;\n value;\n locale;\n showSuperPreBtn = true;\n showSuperNextBtn = true;\n showPreBtn = true;\n showNextBtn = true;\n panelChange = new EventEmitter();\n valueChange = new EventEmitter();\n superPreviousTitle() {\n return this.locale.previousYear;\n }\n previousTitle() {\n return this.locale.previousMonth;\n }\n superNextTitle() {\n return this.locale.nextYear;\n }\n nextTitle() {\n return this.locale.nextMonth;\n }\n superPrevious() {\n this.changeValue(this.value.addYears(-1));\n }\n superNext() {\n this.changeValue(this.value.addYears(1));\n }\n previous() {\n this.changeValue(this.value.addMonths(-1));\n }\n next() {\n this.changeValue(this.value.addMonths(1));\n }\n changeValue(value) {\n if (this.value !== value) {\n this.value = value;\n this.valueChange.emit(this.value);\n this.changeMode(this.mode);\n this.render();\n }\n }\n changeMode(mode) {\n this.panelChange.emit({ mode, date: this.value.nativeDate });\n }\n render() {\n if (this.value) {\n this.selectors = this.getSelectors();\n }\n }\n ngOnInit() {\n if (!this.value) {\n this.value = new CandyDate(); // Show today by default\n }\n this.selectors = this.getSelectors();\n }\n ngOnChanges(changes) {\n if (changes.value || changes.locale) {\n this.render();\n }\n }\n trackBySelector(selector) {\n return `${selector.title}-${selector.label}`;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: AbstractPanelHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"20.3.0\", type: AbstractPanelHeader, isStandalone: true, inputs: { value: \"value\", locale: \"locale\", showSuperPreBtn: [\"showSuperPreBtn\", \"showSuperPreBtn\", booleanAttribute], showSuperNextBtn: [\"showSuperNextBtn\", \"showSuperNextBtn\", booleanAttribute], showPreBtn: [\"showPreBtn\", \"showPreBtn\", booleanAttribute], showNextBtn: [\"showNextBtn\", \"showNextBtn\", booleanAttribute] }, outputs: { panelChange: \"panelChange\", valueChange: \"valueChange\" }, usesOnChanges: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: AbstractPanelHeader, decorators: [{\n type: Directive\n }], propDecorators: { value: [{\n type: Input\n }], locale: [{\n type: Input\n }], showSuperPreBtn: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], showSuperNextBtn: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], showPreBtn: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], showNextBtn: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], panelChange: [{\n type: Output\n }], valueChange: [{\n type: Output\n }] } });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass DecadeHeaderComponent extends AbstractPanelHeader {\n previous() { }\n next() { }\n mode = 'decade';\n get startYear() {\n return parseInt(`${this.value.getYear() / 100}`, 10) * 100;\n }\n get endYear() {\n return this.startYear + 99;\n }\n superPrevious() {\n this.changeValue(this.value.addYears(-100));\n }\n superNext() {\n this.changeValue(this.value.addYears(100));\n }\n getSelectors() {\n return [\n {\n className: `${this.prefixCls}-decade-btn`,\n title: '',\n onClick: () => { },\n label: `${this.startYear}-${this.endYear}`\n }\n ];\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: DecadeHeaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.0\", type: DecadeHeaderComponent, isStandalone: true, selector: \"decade-header\", usesInheritance: true, ngImport: i0, template: \"<div class=\\\"{{ prefixCls }}\\\">\\n <button\\n [style.visibility]=\\\"showSuperPreBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-super-prev-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ superPreviousTitle() }}\\\"\\n (click)=\\\"superPrevious()\\\"\\n >\\n <span class=\\\"ant-picker-super-prev-icon\\\"></span>\\n </button>\\n <button\\n [style.visibility]=\\\"showPreBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-prev-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n title=\\\"{{ previousTitle() }}\\\"\\n tabindex=\\\"-1\\\"\\n (click)=\\\"previous()\\\"\\n >\\n <span class=\\\"ant-picker-prev-icon\\\"></span>\\n </button>\\n\\n <div class=\\\"{{ prefixCls }}-view\\\">\\n @for (selector of selectors; track trackBySelector(selector)) {\\n <button\\n class=\\\"{{ selector.className }}\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n title=\\\"{{ selector.title || null }}\\\"\\n (click)=\\\"selector.onClick()\\\"\\n >\\n {{ selector.label }}\\n </button>\\n }\\n </div>\\n <button\\n [style.visibility]=\\\"showNextBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-next-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ nextTitle() }}\\\"\\n (click)=\\\"next()\\\"\\n >\\n <span class=\\\"ant-picker-next-icon\\\"></span>\\n </button>\\n <button\\n [style.visibility]=\\\"showSuperNextBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-super-next-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ superNextTitle() }}\\\"\\n (click)=\\\"superNext()\\\"\\n >\\n <span class=\\\"ant-picker-super-next-icon\\\"></span>\\n </button>\\n</div>\\n\", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: DecadeHeaderComponent, decorators: [{\n type: Component,\n args: [{ encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, selector: 'decade-header', template: \"<div class=\\\"{{ prefixCls }}\\\">\\n <button\\n [style.visibility]=\\\"showSuperPreBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-super-prev-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ superPreviousTitle() }}\\\"\\n (click)=\\\"superPrevious()\\\"\\n >\\n <span class=\\\"ant-picker-super-prev-icon\\\"></span>\\n </button>\\n <button\\n [style.visibility]=\\\"showPreBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-prev-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n title=\\\"{{ previousTitle() }}\\\"\\n tabindex=\\\"-1\\\"\\n (click)=\\\"previous()\\\"\\n >\\n <span class=\\\"ant-picker-prev-icon\\\"></span>\\n </button>\\n\\n <div class=\\\"{{ prefixCls }}-view\\\">\\n @for (selector of selectors; track trackBySelector(selector)) {\\n <button\\n class=\\\"{{ selector.className }}\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n title=\\\"{{ selector.title || null }}\\\"\\n (click)=\\\"selector.onClick()\\\"\\n >\\n {{ selector.label }}\\n </button>\\n }\\n </div>\\n <button\\n [style.visibility]=\\\"showNextBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-next-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ nextTitle() }}\\\"\\n (click)=\\\"next()\\\"\\n >\\n <span class=\\\"ant-picker-next-icon\\\"></span>\\n </button>\\n <button\\n [style.visibility]=\\\"showSuperNextBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-super-next-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ superNextTitle() }}\\\"\\n (click)=\\\"superNext()\\\"\\n >\\n <span class=\\\"ant-picker-super-next-icon\\\"></span>\\n </button>\\n</div>\\n\" }]\n }] });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass AbstractTable {\n headRow = [];\n bodyRows = [];\n MAX_ROW = 6;\n MAX_COL = 7;\n prefixCls = 'ant-picker';\n value;\n locale;\n activeDate = new CandyDate();\n showWeek = false;\n selectedValue = []; // Range ONLY\n hoverValue = []; // Range ONLY\n disabledDate;\n cellRender;\n fullCellRender;\n canSelectWeek = false;\n valueChange = new EventEmitter();\n cellHover = new EventEmitter(); // Emitted when hover on a day by mouse enter\n render() {\n if (this.activeDate) {\n this.headRow = this.makeHeadRow();\n this.bodyRows = this.makeBodyRows();\n }\n }\n hasRangeValue() {\n return this.selectedValue?.length > 0 || this.hoverValue?.length > 0;\n }\n getClassMap(cell) {\n return {\n [`ant-picker-cell`]: true,\n [`ant-picker-cell-in-view`]: true,\n [`ant-picker-cell-selected`]: cell.isSelected,\n [`ant-picker-cell-disabled`]: cell.isDisabled,\n [`ant-picker-cell-in-range`]: !!cell.isInSelectedRange,\n [`ant-picker-cell-range-start`]: !!cell.isSelectedStart,\n [`ant-picker-cell-range-end`]: !!cell.isSelectedEnd,\n [`ant-picker-cell-range-start-single`]: !!cell.isStartSingle,\n [`ant-picker-cell-range-end-single`]: !!cell.isEndSingle,\n [`ant-picker-cell-range-hover`]: !!cell.isInHoverRange,\n [`ant-picker-cell-range-hover-start`]: !!cell.isHoverStart,\n [`ant-picker-cell-range-hover-end`]: !!cell.isHoverEnd,\n [`ant-picker-cell-range-hover-edge-start`]: !!cell.isFirstCellInPanel,\n [`ant-picker-cell-range-hover-edge-end`]: !!cell.isLastCellInPanel,\n [`ant-picker-cell-range-start-near-hover`]: !!cell.isRangeStartNearHover,\n [`ant-picker-cell-range-end-near-hover`]: !!cell.isRangeEndNearHover\n };\n }\n ngOnInit() {\n this.render();\n }\n ngOnChanges(changes) {\n if (changes.activeDate && !changes.activeDate.currentValue) {\n this.activeDate = new CandyDate();\n }\n if (changes.disabledDate ||\n changes.locale ||\n changes.showWeek ||\n changes.selectWeek ||\n this.isDateRealChange(changes.activeDate) ||\n this.isDateRealChange(changes.value) ||\n this.isDateRealChange(changes.selectedValue) ||\n this.isDateRealChange(changes.hoverValue)) {\n this.render();\n }\n }\n isDateRealChange(change) {\n if (change) {\n const previousValue = change.previousValue;\n const currentValue = change.currentValue;\n if (Array.isArray(currentValue)) {\n return (!Array.isArray(previousValue) ||\n currentValue.length !== previousValue.length ||\n currentValue.some((value, index) => {\n const previousCandyDate = previousValue[index];\n return previousCandyDate instanceof CandyDate\n ? previousCandyDate.isSameDay(value)\n : previousCandyDate !== value;\n }));\n }\n else {\n return !this.isSameDate(previousValue, currentValue);\n }\n }\n return false;\n }\n isSameDate(left, right) {\n return (!left && !right) || (left && right && right.isSameDay(left));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: AbstractTable, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"20.3.0\", type: AbstractTable, isStandalone: true, inputs: { prefixCls: \"prefixCls\", value: \"value\", locale: \"locale\", activeDate: \"activeDate\", showWeek: [\"showWeek\", \"showWeek\", booleanAttribute], selectedValue: \"selectedValue\", hoverValue: \"hoverValue\", disabledDate: \"disabledDate\", cellRender: \"cellRender\", fullCellRender: \"fullCellRender\", canSelectWeek: [\"canSelectWeek\", \"canSelectWeek\", booleanAttribute] }, outputs: { valueChange: \"valueChange\", cellHover: \"cellHover\" }, usesOnChanges: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: AbstractTable, decorators: [{\n type: Directive\n }], propDecorators: { prefixCls: [{\n type: Input\n }], value: [{\n type: Input\n }], locale: [{\n type: Input\n }], activeDate: [{\n type: Input\n }], showWeek: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], selectedValue: [{\n type: Input\n }], hoverValue: [{\n type: Input\n }], disabledDate: [{\n type: Input\n }], cellRender: [{\n type: Input\n }], fullCellRender: [{\n type: Input\n }], canSelectWeek: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], valueChange: [{\n type: Output\n }], cellHover: [{\n type: Output\n }] } });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst MAX_ROW = 4;\nconst MAX_COL = 3;\nclass DecadeTableComponent extends AbstractTable {\n get startYear() {\n return parseInt(`${this.activeDate.getYear() / 100}`, 10) * 100;\n }\n get endYear() {\n return this.startYear + 99;\n }\n makeHeadRow() {\n return [];\n }\n makeBodyRows() {\n const decades = [];\n const currentYear = this.value && this.value.getYear();\n const startYear = this.startYear;\n const endYear = this.endYear;\n const previousYear = startYear - 10;\n let index = 0;\n for (let rowIndex = 0; rowIndex < MAX_ROW; rowIndex++) {\n const row = {\n dateCells: [],\n trackByIndex: rowIndex\n };\n for (let colIndex = 0; colIndex < MAX_COL; colIndex++) {\n const start = previousYear + index * 10;\n const end = previousYear + index * 10 + 9;\n const content = `${start}-${end}`;\n const cell = {\n trackByIndex: colIndex,\n value: this.activeDate.setYear(start).nativeDate,\n content,\n title: content,\n isDisabled: false,\n isSelected: currentYear >= start && currentYear <= end,\n isLowerThanStart: end < startYear,\n isBiggerThanEnd: start > endYear,\n classMap: {},\n onClick() { },\n onMouseEnter() { }\n };\n cell.classMap = this.getClassMap(cell);\n cell.onClick = () => this.chooseDecade(start);\n index++;\n row.dateCells.push(cell);\n }\n decades.push(row);\n }\n return decades;\n }\n getClassMap(cell) {\n return {\n [`${this.prefixCls}-cell`]: true,\n [`${this.prefixCls}-cell-in-view`]: !cell.isBiggerThanEnd && !cell.isLowerThanStart,\n [`${this.prefixCls}-cell-selected`]: cell.isSelected,\n [`${this.prefixCls}-cell-disabled`]: cell.isDisabled\n };\n }\n chooseDecade(year) {\n this.value = this.activeDate.setYear(year);\n this.valueChange.emit(this.value);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: DecadeTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.0\", type: DecadeTableComponent, isStandalone: true, selector: \"decade-table\", usesInheritance: true, ngImport: i0, template: \"<table class=\\\"ant-picker-content\\\" cellspacing=\\\"0\\\" role=\\\"grid\\\">\\n @if (headRow && headRow.length > 0) {\\n <thead>\\n <tr role=\\\"row\\\">\\n @if (showWeek) {\\n <th role=\\\"columnheader\\\"></th>\\n }\\n @for (cell of headRow; track $index) {\\n <th role=\\\"columnheader\\\" [title]=\\\"cell.title\\\"> {{ cell.content }}</th>\\n }\\n </tr>\\n </thead>\\n }\\n\\n <tbody>\\n @for (row of bodyRows; track row.trackByIndex) {\\n <tr [class]=\\\"row.classMap!\\\" role=\\\"row\\\">\\n @if (row.weekNum) {\\n <td role=\\\"gridcell\\\" class=\\\"{{ prefixCls }}-cell-week\\\"> {{ row.weekNum }}</td>\\n }\\n @for (cell of row.dateCells; track cell.trackByIndex) {\\n <td\\n [title]=\\\"cell.title\\\"\\n role=\\\"gridcell\\\"\\n [class]=\\\"cell.classMap!\\\"\\n (click)=\\\"cell.isDisabled ? null : cell.onClick()\\\"\\n (mouseenter)=\\\"cell.onMouseEnter()\\\"\\n >\\n @switch (prefixCls) {\\n @case ('ant-picker') {\\n @if (cell.cellRender) {\\n <ng-template\\n [nzStringTemplateOutlet]=\\\"cell.cellRender\\\"\\n [nzStringTemplateOutletContext]=\\\"{ $implicit: cell.value }\\\"\\n >\\n {{ cell.cellRender }}\\n </ng-template>\\n } @else {\\n <div\\n class=\\\"{{ prefixCls }}-cell-inner\\\"\\n [attr.aria-selected]=\\\"cell.isSelected\\\"\\n [attr.aria-disabled]=\\\"cell.isDisabled\\\"\\n >\\n {{ cell.content }}\\n </div>\\n }\\n }\\n @case ('ant-picker-calendar') {\\n <div\\n class=\\\"{{ prefixCls }}-date ant-picker-cell-inner\\\"\\n [class.ant-picker-calendar-date-today]=\\\"cell.isToday\\\"\\n >\\n @if (cell.fullCellRender) {\\n <ng-container *nzStringTemplateOutlet=\\\"cell.fullCellRender; context: { $implicit: cell.value }\\\">\\n {{ cell.fullCellRender }}\\n </ng-container>\\n } @else {\\n <div class=\\\"{{ prefixCls }}-date-value\\\">{{ cell.content }}</div>\\n <div class=\\\"{{ prefixCls }}-date-content\\\">\\n <ng-container *nzStringTemplateOutlet=\\\"cell.cellRender; context: { $implicit: cell.value }\\\">\\n {{ cell.cellRender }}\\n </ng-container>\\n </div>\\n }\\n </div>\\n }\\n }\\n </td>\\n }\\n </tr>\\n }\\n </tbody>\\n</table>\\n\", dependencies: [{ kind: \"directive\", type: NzStringTemplateOutletDirective, selector: \"[nzStringTemplateOutlet]\", inputs: [\"nzStringTemplateOutletContext\", \"nzStringTemplateOutlet\"], exportAs: [\"nzStringTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: DecadeTableComponent, decorators: [{\n type: Component,\n args: [{ encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, selector: 'decade-table', imports: [NzStringTemplateOutletDirective], template: \"<table class=\\\"ant-picker-content\\\" cellspacing=\\\"0\\\" role=\\\"grid\\\">\\n @if (headRow && headRow.length > 0) {\\n <thead>\\n <tr role=\\\"row\\\">\\n @if (showWeek) {\\n <th role=\\\"columnheader\\\"></th>\\n }\\n @for (cell of headRow; track $index) {\\n <th role=\\\"columnheader\\\" [title]=\\\"cell.title\\\"> {{ cell.content }}</th>\\n }\\n </tr>\\n </thead>\\n }\\n\\n <tbody>\\n @for (row of bodyRows; track row.trackByIndex) {\\n <tr [class]=\\\"row.classMap!\\\" role=\\\"row\\\">\\n @if (row.weekNum) {\\n <td role=\\\"gridcell\\\" class=\\\"{{ prefixCls }}-cell-week\\\"> {{ row.weekNum }}</td>\\n }\\n @for (cell of row.dateCells; track cell.trackByIndex) {\\n <td\\n [title]=\\\"cell.title\\\"\\n role=\\\"gridcell\\\"\\n [class]=\\\"cell.classMap!\\\"\\n (click)=\\\"cell.isDisabled ? null : cell.onClick()\\\"\\n (mouseenter)=\\\"cell.onMouseEnter()\\\"\\n >\\n @switch (prefixCls) {\\n @case ('ant-picker') {\\n @if (cell.cellRender) {\\n <ng-template\\n [nzStringTemplateOutlet]=\\\"cell.cellRender\\\"\\n [nzStringTemplateOutletContext]=\\\"{ $implicit: cell.value }\\\"\\n >\\n {{ cell.cellRender }}\\n </ng-template>\\n } @else {\\n <div\\n class=\\\"{{ prefixCls }}-cell-inner\\\"\\n [attr.aria-selected]=\\\"cell.isSelected\\\"\\n [attr.aria-disabled]=\\\"cell.isDisabled\\\"\\n >\\n {{ cell.content }}\\n </div>\\n }\\n }\\n @case ('ant-picker-calendar') {\\n <div\\n class=\\\"{{ prefixCls }}-date ant-picker-cell-inner\\\"\\n [class.ant-picker-calendar-date-today]=\\\"cell.isToday\\\"\\n >\\n @if (cell.fullCellRender) {\\n <ng-container *nzStringTemplateOutlet=\\\"cell.fullCellRender; context: { $implicit: cell.value }\\\">\\n {{ cell.fullCellRender }}\\n </ng-container>\\n } @else {\\n <div class=\\\"{{ prefixCls }}-date-value\\\">{{ cell.content }}</div>\\n <div class=\\\"{{ prefixCls }}-date-content\\\">\\n <ng-container *nzStringTemplateOutlet=\\\"cell.cellRender; context: { $implicit: cell.value }\\\">\\n {{ cell.cellRender }}\\n </ng-container>\\n </div>\\n }\\n </div>\\n }\\n }\\n </td>\\n }\\n </tr>\\n }\\n </tbody>\\n</table>\\n\" }]\n }] });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass YearHeaderComponent extends AbstractPanelHeader {\n mode = 'year';\n get startYear() {\n return parseInt(`${this.value.getYear() / 10}`, 10) * 10;\n }\n get endYear() {\n return this.startYear + 9;\n }\n superPrevious() {\n this.changeValue(this.value.addYears(-10));\n }\n superNext() {\n this.changeValue(this.value.addYears(10));\n }\n getSelectors() {\n return [\n {\n className: `${this.prefixCls}-year-btn`,\n title: '',\n onClick: () => {\n this.mode = 'decade';\n this.changeMode('decade');\n },\n label: `${this.startYear}-${this.endYear}`\n }\n ];\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: YearHeaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.0\", type: YearHeaderComponent, isStandalone: true, selector: \"year-header\", usesInheritance: true, ngImport: i0, template: \"<div class=\\\"{{ prefixCls }}\\\">\\n <button\\n [style.visibility]=\\\"showSuperPreBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-super-prev-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ superPreviousTitle() }}\\\"\\n (click)=\\\"superPrevious()\\\"\\n >\\n <span class=\\\"ant-picker-super-prev-icon\\\"></span>\\n </button>\\n <button\\n [style.visibility]=\\\"showPreBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-prev-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n title=\\\"{{ previousTitle() }}\\\"\\n tabindex=\\\"-1\\\"\\n (click)=\\\"previous()\\\"\\n >\\n <span class=\\\"ant-picker-prev-icon\\\"></span>\\n </button>\\n\\n <div class=\\\"{{ prefixCls }}-view\\\">\\n @for (selector of selectors; track trackBySelector(selector)) {\\n <button\\n class=\\\"{{ selector.className }}\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n title=\\\"{{ selector.title || null }}\\\"\\n (click)=\\\"selector.onClick()\\\"\\n >\\n {{ selector.label }}\\n </button>\\n }\\n </div>\\n <button\\n [style.visibility]=\\\"showNextBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-next-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ nextTitle() }}\\\"\\n (click)=\\\"next()\\\"\\n >\\n <span class=\\\"ant-picker-next-icon\\\"></span>\\n </button>\\n <button\\n [style.visibility]=\\\"showSuperNextBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-super-next-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ superNextTitle() }}\\\"\\n (click)=\\\"superNext()\\\"\\n >\\n <span class=\\\"ant-picker-super-next-icon\\\"></span>\\n </button>\\n</div>\\n\", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: YearHeaderComponent, decorators: [{\n type: Component,\n args: [{ encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, selector: 'year-header', template: \"<div class=\\\"{{ prefixCls }}\\\">\\n <button\\n [style.visibility]=\\\"showSuperPreBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-super-prev-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ superPreviousTitle() }}\\\"\\n (click)=\\\"superPrevious()\\\"\\n >\\n <span class=\\\"ant-picker-super-prev-icon\\\"></span>\\n </button>\\n <button\\n [style.visibility]=\\\"showPreBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-prev-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n title=\\\"{{ previousTitle() }}\\\"\\n tabindex=\\\"-1\\\"\\n (click)=\\\"previous()\\\"\\n >\\n <span class=\\\"ant-picker-prev-icon\\\"></span>\\n </button>\\n\\n <div class=\\\"{{ prefixCls }}-view\\\">\\n @for (selector of selectors; track trackBySelector(selector)) {\\n <button\\n class=\\\"{{ selector.className }}\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n title=\\\"{{ selector.title || null }}\\\"\\n (click)=\\\"selector.onClick()\\\"\\n >\\n {{ selector.label }}\\n </button>\\n }\\n </div>\\n <button\\n [style.visibility]=\\\"showNextBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-next-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ nextTitle() }}\\\"\\n (click)=\\\"next()\\\"\\n >\\n <span class=\\\"ant-picker-next-icon\\\"></span>\\n </button>\\n <button\\n [style.visibility]=\\\"showSuperNextBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-super-next-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ superNextTitle() }}\\\"\\n (click)=\\\"superNext()\\\"\\n >\\n <span class=\\\"ant-picker-super-next-icon\\\"></span>\\n </button>\\n</div>\\n\" }]\n }] });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass YearTableComponent extends AbstractTable {\n dateHelper = inject(DateHelperService);\n MAX_ROW = 4;\n MAX_COL = 3;\n makeHeadRow() {\n return [];\n }\n makeBodyRows() {\n const currentYear = this.activeDate && this.activeDate.getYear();\n const startYear = parseInt(`${currentYear / 10}`, 10) * 10;\n const endYear = startYear + 9;\n const previousYear = startYear - 1;\n const years = [];\n let yearValue = 0;\n for (let rowIndex = 0; rowIndex < this.MAX_ROW; rowIndex++) {\n const row = {\n dateCells: [],\n trackByIndex: rowIndex\n };\n for (let colIndex = 0; colIndex < this.MAX_COL; colIndex++) {\n const yearNum = previousYear + yearValue;\n const year = this.activeDate.setYear(yearNum);\n const content = this.dateHelper.format(year.nativeDate, 'yyyy');\n const isDisabled = this.isDisabledYear(year);\n const cell = {\n trackByIndex: colIndex,\n value: year.nativeDate,\n isDisabled,\n isSameDecade: yearNum >= startYear && yearNum <= endYear,\n isSelected: yearNum === (this.value && this.value.getYear()),\n content,\n title: content,\n classMap: {},\n isLastCellInPanel: year.getYear() === endYear,\n isFirstCellInPanel: year.getYear() === startYear,\n cellRender: valueFunctionProp(this.cellRender, year), // Customized content\n fullCellRender: valueFunctionProp(this.fullCellRender, year),\n onClick: () => this.chooseYear(cell.value.getFullYear()), // don't use yearValue here,\n onMouseEnter: () => this.cellHover.emit(year)\n };\n this.addCellProperty(cell, year);\n row.dateCells.push(cell);\n yearValue++;\n }\n years.push(row);\n }\n return years;\n }\n getClassMap(cell) {\n return {\n ...super.getClassMap(cell),\n [`ant-picker-cell-in-view`]: !!cell.isSameDecade\n };\n }\n isDisabledYear(year) {\n if (!this.disabledDate) {\n return false;\n }\n const firstOfMonth = year.setMonth(0).setDate(1);\n for (let date = firstOfMonth; date.getYear() === year.getYear(); date = date.addDays(1)) {\n if (!this.disabledDate(date.nativeDate)) {\n return false;\n }\n }\n return true;\n }\n addCellProperty(cell, year) {\n if (this.hasRangeValue()) {\n const [startHover, endHover] = this.hoverValue;\n const [startSelected, endSelected] = this.selectedValue;\n // Selected\n if (startSelected?.isSameYear(year)) {\n cell.isSelectedStart = true;\n cell.isSelected = true;\n }\n if (endSelected?.isSameYear(year)) {\n cell.isSelectedEnd = true;\n cell.isSelected = true;\n }\n if (startHover && endHover) {\n cell.isHoverStart = startHover.isSameYear(year);\n cell.isHoverEnd = endHover.isSameYear(year);\n cell.isInHoverRange = startHover.isBeforeYear(year) && year.isBeforeYear(endHover);\n }\n cell.isStartSingle = startSelected && !endSelected;\n cell.isEndSingle = !startSelected && endSelected;\n cell.isInSelectedRange = startSelected?.isBeforeYear(year) && year?.isBeforeYear(endSelected);\n cell.isRangeStartNearHover = startSelected && cell.isInHoverRange;\n cell.isRangeEndNearHover = endSelected && cell.isInHoverRange;\n }\n else if (year.isSameYear(this.value)) {\n cell.isSelected = true;\n }\n cell.classMap = this.getClassMap(cell);\n }\n chooseYear(year) {\n this.value = this.activeDate.setYear(year);\n this.valueChange.emit(this.value);\n this.render();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: YearTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.0\", type: YearTableComponent, isStandalone: true, selector: \"year-table\", usesInheritance: true, ngImport: i0, template: \"<table class=\\\"ant-picker-content\\\" cellspacing=\\\"0\\\" role=\\\"grid\\\">\\n @if (headRow && headRow.length > 0) {\\n <thead>\\n <tr role=\\\"row\\\">\\n @if (showWeek) {\\n <th role=\\\"columnheader\\\"></th>\\n }\\n @for (cell of headRow; track $index) {\\n <th role=\\\"columnheader\\\" [title]=\\\"cell.title\\\"> {{ cell.content }}</th>\\n }\\n </tr>\\n </thead>\\n }\\n\\n <tbody>\\n @for (row of bodyRows; track row.trackByIndex) {\\n <tr [class]=\\\"row.classMap!\\\" role=\\\"row\\\">\\n @if (row.weekNum) {\\n <td role=\\\"gridcell\\\" class=\\\"{{ prefixCls }}-cell-week\\\"> {{ row.weekNum }}</td>\\n }\\n @for (cell of row.dateCells; track cell.trackByIndex) {\\n <td\\n [title]=\\\"cell.title\\\"\\n role=\\\"gridcell\\\"\\n [class]=\\\"cell.classMap!\\\"\\n (click)=\\\"cell.isDisabled ? null : cell.onClick()\\\"\\n (mouseenter)=\\\"cell.onMouseEnter()\\\"\\n >\\n @switch (prefixCls) {\\n @case ('ant-picker') {\\n @if (cell.cellRender) {\\n <ng-template\\n [nzStringTemplateOutlet]=\\\"cell.cellRender\\\"\\n [nzStringTemplateOutletContext]=\\\"{ $implicit: cell.value }\\\"\\n >\\n {{ cell.cellRender }}\\n </ng-template>\\n } @else {\\n <div\\n class=\\\"{{ prefixCls }}-cell-inner\\\"\\n [attr.aria-selected]=\\\"cell.isSelected\\\"\\n [attr.aria-disabled]=\\\"cell.isDisabled\\\"\\n >\\n {{ cell.content }}\\n </div>\\n }\\n }\\n @case ('ant-picker-calendar') {\\n <div\\n class=\\\"{{ prefixCls }}-date ant-picker-cell-inner\\\"\\n [class.ant-picker-calendar-date-today]=\\\"cell.isToday\\\"\\n >\\n @if (cell.fullCellRender) {\\n <ng-container *nzStringTemplateOutlet=\\\"cell.fullCellRender; context: { $implicit: cell.value }\\\">\\n {{ cell.fullCellRender }}\\n </ng-container>\\n } @else {\\n <div class=\\\"{{ prefixCls }}-date-value\\\">{{ cell.content }}</div>\\n <div class=\\\"{{ prefixCls }}-date-content\\\">\\n <ng-container *nzStringTemplateOutlet=\\\"cell.cellRender; context: { $implicit: cell.value }\\\">\\n {{ cell.cellRender }}\\n </ng-container>\\n </div>\\n }\\n </div>\\n }\\n }\\n </td>\\n }\\n </tr>\\n }\\n </tbody>\\n</table>\\n\", dependencies: [{ kind: \"directive\", type: NzStringTemplateOutletDirective, selector: \"[nzStringTemplateOutlet]\", inputs: [\"nzStringTemplateOutletContext\", \"nzStringTemplateOutlet\"], exportAs: [\"nzStringTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: YearTableComponent, decorators: [{\n type: Component,\n args: [{ encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, selector: 'year-table', imports: [NzStringTemplateOutletDirective], template: \"<table class=\\\"ant-picker-content\\\" cellspacing=\\\"0\\\" role=\\\"grid\\\">\\n @if (headRow && headRow.length > 0) {\\n <thead>\\n <tr role=\\\"row\\\">\\n @if (showWeek) {\\n <th role=\\\"columnheader\\\"></th>\\n }\\n @for (cell of headRow; track $index) {\\n <th role=\\\"columnheader\\\" [title]=\\\"cell.title\\\"> {{ cell.content }}</th>\\n }\\n </tr>\\n </thead>\\n }\\n\\n <tbody>\\n @for (row of bodyRows; track row.trackByIndex) {\\n <tr [class]=\\\"row.classMap!\\\" role=\\\"row\\\">\\n @if (row.weekNum) {\\n <td role=\\\"gridcell\\\" class=\\\"{{ prefixCls }}-cell-week\\\"> {{ row.weekNum }}</td>\\n }\\n @for (cell of row.dateCells; track cell.trackByIndex) {\\n <td\\n [title]=\\\"cell.title\\\"\\n role=\\\"gridcell\\\"\\n [class]=\\\"cell.classMap!\\\"\\n (click)=\\\"cell.isDisabled ? null : cell.onClick()\\\"\\n (mouseenter)=\\\"cell.onMouseEnter()\\\"\\n >\\n @switch (prefixCls) {\\n @case ('ant-picker') {\\n @if (cell.cellRender) {\\n <ng-template\\n [nzStringTemplateOutlet]=\\\"cell.cellRender\\\"\\n [nzStringTemplateOutletContext]=\\\"{ $implicit: cell.value }\\\"\\n >\\n {{ cell.cellRender }}\\n </ng-template>\\n } @else {\\n <div\\n class=\\\"{{ prefixCls }}-cell-inner\\\"\\n [attr.aria-selected]=\\\"cell.isSelected\\\"\\n [attr.aria-disabled]=\\\"cell.isDisabled\\\"\\n >\\n {{ cell.content }}\\n </div>\\n }\\n }\\n @case ('ant-picker-calendar') {\\n <div\\n class=\\\"{{ prefixCls }}-date ant-picker-cell-inner\\\"\\n [class.ant-picker-calendar-date-today]=\\\"cell.isToday\\\"\\n >\\n @if (cell.fullCellRender) {\\n <ng-container *nzStringTemplateOutlet=\\\"cell.fullCellRender; context: { $implicit: cell.value }\\\">\\n {{ cell.fullCellRender }}\\n </ng-container>\\n } @else {\\n <div class=\\\"{{ prefixCls }}-date-value\\\">{{ cell.content }}</div>\\n <div class=\\\"{{ prefixCls }}-date-content\\\">\\n <ng-container *nzStringTemplateOutlet=\\\"cell.cellRender; context: { $implicit: cell.value }\\\">\\n {{ cell.cellRender }}\\n </ng-container>\\n </div>\\n }\\n </div>\\n }\\n }\\n </td>\\n }\\n </tr>\\n }\\n </tbody>\\n</table>\\n\" }]\n }] });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass QuarterHeaderComponent extends AbstractPanelHeader {\n dateHelper = inject(DateHelperService);\n mode = 'quarter';\n getSelectors() {\n return [\n {\n className: `${this.prefixCls}-quarter-btn`,\n title: this.locale.yearSelect,\n onClick: () => {\n this.mode = 'year';\n this.changeMode('year');\n },\n label: this.dateHelper.format(this.value.nativeDate, transCompatFormat(this.locale.yearFormat))\n }\n ];\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: QuarterHeaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.0\", type: QuarterHeaderComponent, isStandalone: true, selector: \"quarter-header\", usesInheritance: true, ngImport: i0, template: \"<div class=\\\"{{ prefixCls }}\\\">\\n <button\\n [style.visibility]=\\\"showSuperPreBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-super-prev-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ superPreviousTitle() }}\\\"\\n (click)=\\\"superPrevious()\\\"\\n >\\n <span class=\\\"ant-picker-super-prev-icon\\\"></span>\\n </button>\\n <button\\n [style.visibility]=\\\"showPreBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-prev-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n title=\\\"{{ previousTitle() }}\\\"\\n tabindex=\\\"-1\\\"\\n (click)=\\\"previous()\\\"\\n >\\n <span class=\\\"ant-picker-prev-icon\\\"></span>\\n </button>\\n\\n <div class=\\\"{{ prefixCls }}-view\\\">\\n @for (selector of selectors; track trackBySelector(selector)) {\\n <button\\n class=\\\"{{ selector.className }}\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n title=\\\"{{ selector.title || null }}\\\"\\n (click)=\\\"selector.onClick()\\\"\\n >\\n {{ selector.label }}\\n </button>\\n }\\n </div>\\n <button\\n [style.visibility]=\\\"showNextBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-next-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ nextTitle() }}\\\"\\n (click)=\\\"next()\\\"\\n >\\n <span class=\\\"ant-picker-next-icon\\\"></span>\\n </button>\\n <button\\n [style.visibility]=\\\"showSuperNextBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-super-next-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ superNextTitle() }}\\\"\\n (click)=\\\"superNext()\\\"\\n >\\n <span class=\\\"ant-picker-super-next-icon\\\"></span>\\n </button>\\n</div>\\n\", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: QuarterHeaderComponent, decorators: [{\n type: Component,\n args: [{ encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, selector: 'quarter-header', template: \"<div class=\\\"{{ prefixCls }}\\\">\\n <button\\n [style.visibility]=\\\"showSuperPreBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-super-prev-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ superPreviousTitle() }}\\\"\\n (click)=\\\"superPrevious()\\\"\\n >\\n <span class=\\\"ant-picker-super-prev-icon\\\"></span>\\n </button>\\n <button\\n [style.visibility]=\\\"showPreBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-prev-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n title=\\\"{{ previousTitle() }}\\\"\\n tabindex=\\\"-1\\\"\\n (click)=\\\"previous()\\\"\\n >\\n <span class=\\\"ant-picker-prev-icon\\\"></span>\\n </button>\\n\\n <div class=\\\"{{ prefixCls }}-view\\\">\\n @for (selector of selectors; track trackBySelector(selector)) {\\n <button\\n class=\\\"{{ selector.className }}\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n title=\\\"{{ selector.title || null }}\\\"\\n (click)=\\\"selector.onClick()\\\"\\n >\\n {{ selector.label }}\\n </button>\\n }\\n </div>\\n <button\\n [style.visibility]=\\\"showNextBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-next-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ nextTitle() }}\\\"\\n (click)=\\\"next()\\\"\\n >\\n <span class=\\\"ant-picker-next-icon\\\"></span>\\n </button>\\n <button\\n [style.visibility]=\\\"showSuperNextBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-super-next-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ superNextTitle() }}\\\"\\n (click)=\\\"superNext()\\\"\\n >\\n <span class=\\\"ant-picker-super-next-icon\\\"></span>\\n </button>\\n</div>\\n\" }]\n }] });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass QuarterTableComponent extends AbstractTable {\n dateHelper = inject(DateHelperService);\n MAX_ROW = 1;\n MAX_COL = 4;\n changeValueFromInside(value) {\n this.activeDate = value.clone();\n this.valueChange.emit(this.activeDate);\n if (!this.activeDate.isSameQuarter(this.value)) {\n this.render();\n }\n }\n makeHeadRow() {\n return [];\n }\n makeBodyRows() {\n const dateCells = [];\n const months = [{ dateCells, trackByIndex: 0 }];\n let quarterValue = 1;\n for (let colIndex = 1; colIndex <= this.MAX_COL; colIndex++, quarterValue++) {\n const date = this.activeDate.setQuarter(quarterValue);\n const isDisabled = this.isDisabledQuarter(date);\n const content = this.dateHelper.format(date.nativeDate, '[Q]Q');\n const cell = {\n trackByIndex: colIndex,\n value: date.nativeDate,\n isDisabled,\n isSelected: date.isSameQuarter(this.value),\n content,\n title: content,\n classMap: {},\n cellRender: valueFunctionProp(this.cellRender, date),\n fullCellRender: valueFunctionProp(this.fullCellRender, date),\n onClick: () => this.changeValueFromInside(date),\n onMouseEnter: () => this.cellHover.emit(date)\n };\n this.addCellProperty(cell, date);\n dateCells.push(cell);\n }\n return months;\n }\n isDisabledQuarter(quarter) {\n if (!this.disabledDate) {\n return false;\n }\n const firstDayOfQuarter = new CandyDate(startOfQuarter(quarter.nativeDate));\n for (let date = firstDayOfQuarter; date.getQuarter() === quarter.getQuarter(); date = date.addMonths(1)) {\n if (!this.disabledDate(date.nativeDate)) {\n return false;\n }\n }\n return true;\n }\n addCellProperty(cell, month) {\n if (this.hasRangeValue()) {\n const [startHover, endHover] = this.hoverValue;\n const [startSelected, endSelected] = this.selectedValue;\n if (startSelected?.isSameQuarter(month)) {\n cell.isSelectedStart = true;\n cell.isSelected = true;\n }\n if (endSelected?.isSameQuarter(month)) {\n cell.isSelectedEnd = true;\n cell.isSelected = true;\n }\n if (startHover && endHover) {\n cell.isHoverStart = startHover.isSameQuarter(month);\n cell.isHoverEnd = endHover.isSameQuarter(month);\n cell.isLastCellInPanel = month.getQuarter() === 4;\n cell.isFirstCellInPanel = month.getQuarter() === 1;\n cell.isInHoverRange = startHover.isBeforeQuarter(month) && month.isBeforeQuarter(endHover);\n }\n cell.isStartSingle = startSelected && !endSelected;\n cell.isEndSingle = !startSelected && endSelected;\n cell.isInSelectedRange = startSelected?.isBeforeQuarter(month) && month?.isBeforeQuarter(endSelected);\n cell.isRangeStartNearHover = startSelected && cell.isInHoverRange;\n cell.isRangeEndNearHover = endSelected && cell.isInHoverRange;\n }\n else if (month.isSameQuarter(this.value)) {\n cell.isSelected = true;\n }\n cell.classMap = this.getClassMap(cell);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: QuarterTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.0\", type: QuarterTableComponent, isStandalone: true, selector: \"quarter-table\", usesInheritance: true, ngImport: i0, template: \"<table class=\\\"ant-picker-content\\\" cellspacing=\\\"0\\\" role=\\\"grid\\\">\\n @if (headRow && headRow.length > 0) {\\n <thead>\\n <tr role=\\\"row\\\">\\n @if (showWeek) {\\n <th role=\\\"columnheader\\\"></th>\\n }\\n @for (cell of headRow; track $index) {\\n <th role=\\\"columnheader\\\" [title]=\\\"cell.title\\\"> {{ cell.content }}</th>\\n }\\n </tr>\\n </thead>\\n }\\n\\n <tbody>\\n @for (row of bodyRows; track row.trackByIndex) {\\n <tr [class]=\\\"row.classMap!\\\" role=\\\"row\\\">\\n @if (row.weekNum) {\\n <td role=\\\"gridcell\\\" class=\\\"{{ prefixCls }}-cell-week\\\"> {{ row.weekNum }}</td>\\n }\\n @for (cell of row.dateCells; track cell.trackByIndex) {\\n <td\\n [title]=\\\"cell.title\\\"\\n role=\\\"gridcell\\\"\\n [class]=\\\"cell.classMap!\\\"\\n (click)=\\\"cell.isDisabled ? null : cell.onClick()\\\"\\n (mouseenter)=\\\"cell.onMouseEnter()\\\"\\n >\\n @switch (prefixCls) {\\n @case ('ant-picker') {\\n @if (cell.cellRender) {\\n <ng-template\\n [nzStringTemplateOutlet]=\\\"cell.cellRender\\\"\\n [nzStringTemplateOutletContext]=\\\"{ $implicit: cell.value }\\\"\\n >\\n {{ cell.cellRender }}\\n </ng-template>\\n } @else {\\n <div\\n class=\\\"{{ prefixCls }}-cell-inner\\\"\\n [attr.aria-selected]=\\\"cell.isSelected\\\"\\n [attr.aria-disabled]=\\\"cell.isDisabled\\\"\\n >\\n {{ cell.content }}\\n </div>\\n }\\n }\\n @case ('ant-picker-calendar') {\\n <div\\n class=\\\"{{ prefixCls }}-date ant-picker-cell-inner\\\"\\n [class.ant-picker-calendar-date-today]=\\\"cell.isToday\\\"\\n >\\n @if (cell.fullCellRender) {\\n <ng-container *nzStringTemplateOutlet=\\\"cell.fullCellRender; context: { $implicit: cell.value }\\\">\\n {{ cell.fullCellRender }}\\n </ng-container>\\n } @else {\\n <div class=\\\"{{ prefixCls }}-date-value\\\">{{ cell.content }}</div>\\n <div class=\\\"{{ prefixCls }}-date-content\\\">\\n <ng-container *nzStringTemplateOutlet=\\\"cell.cellRender; context: { $implicit: cell.value }\\\">\\n {{ cell.cellRender }}\\n </ng-container>\\n </div>\\n }\\n </div>\\n }\\n }\\n </td>\\n }\\n </tr>\\n }\\n </tbody>\\n</table>\\n\", dependencies: [{ kind: \"directive\", type: NzStringTemplateOutletDirective, selector: \"[nzStringTemplateOutlet]\", inputs: [\"nzStringTemplateOutletContext\", \"nzStringTemplateOutlet\"], exportAs: [\"nzStringTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: QuarterTableComponent, decorators: [{\n type: Component,\n args: [{ encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, selector: 'quarter-table', imports: [NzStringTemplateOutletDirective], template: \"<table class=\\\"ant-picker-content\\\" cellspacing=\\\"0\\\" role=\\\"grid\\\">\\n @if (headRow && headRow.length > 0) {\\n <thead>\\n <tr role=\\\"row\\\">\\n @if (showWeek) {\\n <th role=\\\"columnheader\\\"></th>\\n }\\n @for (cell of headRow; track $index) {\\n <th role=\\\"columnheader\\\" [title]=\\\"cell.title\\\"> {{ cell.content }}</th>\\n }\\n </tr>\\n </thead>\\n }\\n\\n <tbody>\\n @for (row of bodyRows; track row.trackByIndex) {\\n <tr [class]=\\\"row.classMap!\\\" role=\\\"row\\\">\\n @if (row.weekNum) {\\n <td role=\\\"gridcell\\\" class=\\\"{{ prefixCls }}-cell-week\\\"> {{ row.weekNum }}</td>\\n }\\n @for (cell of row.dateCells; track cell.trackByIndex) {\\n <td\\n [title]=\\\"cell.title\\\"\\n role=\\\"gridcell\\\"\\n [class]=\\\"cell.classMap!\\\"\\n (click)=\\\"cell.isDisabled ? null : cell.onClick()\\\"\\n (mouseenter)=\\\"cell.onMouseEnter()\\\"\\n >\\n @switch (prefixCls) {\\n @case ('ant-picker') {\\n @if (cell.cellRender) {\\n <ng-template\\n [nzStringTemplateOutlet]=\\\"cell.cellRender\\\"\\n [nzStringTemplateOutletContext]=\\\"{ $implicit: cell.value }\\\"\\n >\\n {{ cell.cellRender }}\\n </ng-template>\\n } @else {\\n <div\\n class=\\\"{{ prefixCls }}-cell-inner\\\"\\n [attr.aria-selected]=\\\"cell.isSelected\\\"\\n [attr.aria-disabled]=\\\"cell.isDisabled\\\"\\n >\\n {{ cell.content }}\\n </div>\\n }\\n }\\n @case ('ant-picker-calendar') {\\n <div\\n class=\\\"{{ prefixCls }}-date ant-picker-cell-inner\\\"\\n [class.ant-picker-calendar-date-today]=\\\"cell.isToday\\\"\\n >\\n @if (cell.fullCellRender) {\\n <ng-container *nzStringTemplateOutlet=\\\"cell.fullCellRender; context: { $implicit: cell.value }\\\">\\n {{ cell.fullCellRender }}\\n </ng-container>\\n } @else {\\n <div class=\\\"{{ prefixCls }}-date-value\\\">{{ cell.content }}</div>\\n <div class=\\\"{{ prefixCls }}-date-content\\\">\\n <ng-container *nzStringTemplateOutlet=\\\"cell.cellRender; context: { $implicit: cell.value }\\\">\\n {{ cell.cellRender }}\\n </ng-container>\\n </div>\\n }\\n </div>\\n }\\n }\\n </td>\\n }\\n </tr>\\n }\\n </tbody>\\n</table>\\n\" }]\n }] });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass MonthHeaderComponent extends AbstractPanelHeader {\n dateHelper = inject(DateHelperService);\n mode = 'month';\n getSelectors() {\n return [\n {\n className: `${this.prefixCls}-month-btn`,\n title: this.locale.yearSelect,\n onClick: () => {\n this.mode = 'year';\n this.changeMode('year');\n },\n label: this.dateHelper.format(this.value.nativeDate, transCompatFormat(this.locale.yearFormat))\n }\n ];\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: MonthHeaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.0\", type: MonthHeaderComponent, isStandalone: true, selector: \"month-header\", usesInheritance: true, ngImport: i0, template: \"<div class=\\\"{{ prefixCls }}\\\">\\n <button\\n [style.visibility]=\\\"showSuperPreBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-super-prev-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ superPreviousTitle() }}\\\"\\n (click)=\\\"superPrevious()\\\"\\n >\\n <span class=\\\"ant-picker-super-prev-icon\\\"></span>\\n </button>\\n <button\\n [style.visibility]=\\\"showPreBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-prev-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n title=\\\"{{ previousTitle() }}\\\"\\n tabindex=\\\"-1\\\"\\n (click)=\\\"previous()\\\"\\n >\\n <span class=\\\"ant-picker-prev-icon\\\"></span>\\n </button>\\n\\n <div class=\\\"{{ prefixCls }}-view\\\">\\n @for (selector of selectors; track trackBySelector(selector)) {\\n <button\\n class=\\\"{{ selector.className }}\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n title=\\\"{{ selector.title || null }}\\\"\\n (click)=\\\"selector.onClick()\\\"\\n >\\n {{ selector.label }}\\n </button>\\n }\\n </div>\\n <button\\n [style.visibility]=\\\"showNextBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-next-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ nextTitle() }}\\\"\\n (click)=\\\"next()\\\"\\n >\\n <span class=\\\"ant-picker-next-icon\\\"></span>\\n </button>\\n <button\\n [style.visibility]=\\\"showSuperNextBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-super-next-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ superNextTitle() }}\\\"\\n (click)=\\\"superNext()\\\"\\n >\\n <span class=\\\"ant-picker-super-next-icon\\\"></span>\\n </button>\\n</div>\\n\", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: MonthHeaderComponent, decorators: [{\n type: Component,\n args: [{ encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, selector: 'month-header', template: \"<div class=\\\"{{ prefixCls }}\\\">\\n <button\\n [style.visibility]=\\\"showSuperPreBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-super-prev-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ superPreviousTitle() }}\\\"\\n (click)=\\\"superPrevious()\\\"\\n >\\n <span class=\\\"ant-picker-super-prev-icon\\\"></span>\\n </button>\\n <button\\n [style.visibility]=\\\"showPreBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-prev-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n title=\\\"{{ previousTitle() }}\\\"\\n tabindex=\\\"-1\\\"\\n (click)=\\\"previous()\\\"\\n >\\n <span class=\\\"ant-picker-prev-icon\\\"></span>\\n </button>\\n\\n <div class=\\\"{{ prefixCls }}-view\\\">\\n @for (selector of selectors; track trackBySelector(selector)) {\\n <button\\n class=\\\"{{ selector.className }}\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n title=\\\"{{ selector.title || null }}\\\"\\n (click)=\\\"selector.onClick()\\\"\\n >\\n {{ selector.label }}\\n </button>\\n }\\n </div>\\n <button\\n [style.visibility]=\\\"showNextBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-next-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ nextTitle() }}\\\"\\n (click)=\\\"next()\\\"\\n >\\n <span class=\\\"ant-picker-next-icon\\\"></span>\\n </button>\\n <button\\n [style.visibility]=\\\"showSuperNextBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-super-next-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ superNextTitle() }}\\\"\\n (click)=\\\"superNext()\\\"\\n >\\n <span class=\\\"ant-picker-super-next-icon\\\"></span>\\n </button>\\n</div>\\n\" }]\n }] });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass MonthTableComponent extends AbstractTable {\n dateHelper = inject(DateHelperService);\n MAX_ROW = 4;\n MAX_COL = 3;\n makeHeadRow() {\n return [];\n }\n makeBodyRows() {\n const months = [];\n let monthValue = 0;\n for (let rowIndex = 0; rowIndex < this.MAX_ROW; rowIndex++) {\n const row = {\n dateCells: [],\n trackByIndex: rowIndex\n };\n for (let colIndex = 0; colIndex < this.MAX_COL; colIndex++) {\n const month = this.activeDate.setMonth(monthValue);\n const isDisabled = this.isDisabledMonth(month);\n const content = this.dateHelper.format(month.nativeDate, 'MMM');\n const cell = {\n trackByIndex: colIndex,\n value: month.nativeDate,\n isDisabled,\n isSelected: month.isSameMonth(this.value),\n content,\n title: content,\n classMap: {},\n cellRender: valueFunctionProp(this.cellRender, month), // Customized content\n fullCellRender: valueFunctionProp(this.fullCellRender, month),\n onClick: () => this.chooseMonth(cell.value.getMonth()), // don't use monthValue here,\n onMouseEnter: () => this.cellHover.emit(month)\n };\n this.addCellProperty(cell, month);\n row.dateCells.push(cell);\n monthValue++;\n }\n months.push(row);\n }\n return months;\n }\n isDisabledMonth(month) {\n if (!this.disabledDate) {\n return false;\n }\n const firstOfMonth = month.setDate(1);\n for (let date = firstOfMonth; date.getMonth() === month.getMonth(); date = date.addDays(1)) {\n if (!this.disabledDate(date.nativeDate)) {\n return false;\n }\n }\n return true;\n }\n addCellProperty(cell, month) {\n if (this.hasRangeValue()) {\n const [startHover, endHover] = this.hoverValue;\n const [startSelected, endSelected] = this.selectedValue;\n // Selected\n if (startSelected?.isSameMonth(month)) {\n cell.isSelectedStart = true;\n cell.isSelected = true;\n }\n if (endSelected?.isSameMonth(month)) {\n cell.isSelectedEnd = true;\n cell.isSelected = true;\n }\n if (startHover && endHover) {\n cell.isHoverStart = startHover.isSameMonth(month);\n cell.isHoverEnd = endHover.isSameMonth(month);\n cell.isLastCellInPanel = month.getMonth() === 11;\n cell.isFirstCellInPanel = month.getMonth() === 0;\n cell.isInHoverRange = startHover.isBeforeMonth(month) && month.isBeforeMonth(endHover);\n }\n cell.isStartSingle = startSelected && !endSelected;\n cell.isEndSingle = !startSelected && endSelected;\n cell.isInSelectedRange = startSelected?.isBeforeMonth(month) && month?.isBeforeMonth(endSelected);\n cell.isRangeStartNearHover = startSelected && cell.isInHoverRange;\n cell.isRangeEndNearHover = endSelected && cell.isInHoverRange;\n }\n else if (month.isSameMonth(this.value)) {\n cell.isSelected = true;\n }\n cell.classMap = this.getClassMap(cell);\n }\n chooseMonth(month) {\n this.value = this.activeDate.setMonth(month);\n this.valueChange.emit(this.value);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: MonthTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.0\", type: MonthTableComponent, isStandalone: true, selector: \"month-table\", usesInheritance: true, ngImport: i0, template: \"<table class=\\\"ant-picker-content\\\" cellspacing=\\\"0\\\" role=\\\"grid\\\">\\n @if (headRow && headRow.length > 0) {\\n <thead>\\n <tr role=\\\"row\\\">\\n @if (showWeek) {\\n <th role=\\\"columnheader\\\"></th>\\n }\\n @for (cell of headRow; track $index) {\\n <th role=\\\"columnheader\\\" [title]=\\\"cell.title\\\"> {{ cell.content }}</th>\\n }\\n </tr>\\n </thead>\\n }\\n\\n <tbody>\\n @for (row of bodyRows; track row.trackByIndex) {\\n <tr [class]=\\\"row.classMap!\\\" role=\\\"row\\\">\\n @if (row.weekNum) {\\n <td role=\\\"gridcell\\\" class=\\\"{{ prefixCls }}-cell-week\\\"> {{ row.weekNum }}</td>\\n }\\n @for (cell of row.dateCells; track cell.trackByIndex) {\\n <td\\n [title]=\\\"cell.title\\\"\\n role=\\\"gridcell\\\"\\n [class]=\\\"cell.classMap!\\\"\\n (click)=\\\"cell.isDisabled ? null : cell.onClick()\\\"\\n (mouseenter)=\\\"cell.onMouseEnter()\\\"\\n >\\n @switch (prefixCls) {\\n @case ('ant-picker') {\\n @if (cell.cellRender) {\\n <ng-template\\n [nzStringTemplateOutlet]=\\\"cell.cellRender\\\"\\n [nzStringTemplateOutletContext]=\\\"{ $implicit: cell.value }\\\"\\n >\\n {{ cell.cellRender }}\\n </ng-template>\\n } @else {\\n <div\\n class=\\\"{{ prefixCls }}-cell-inner\\\"\\n [attr.aria-selected]=\\\"cell.isSelected\\\"\\n [attr.aria-disabled]=\\\"cell.isDisabled\\\"\\n >\\n {{ cell.content }}\\n </div>\\n }\\n }\\n @case ('ant-picker-calendar') {\\n <div\\n class=\\\"{{ prefixCls }}-date ant-picker-cell-inner\\\"\\n [class.ant-picker-calendar-date-today]=\\\"cell.isToday\\\"\\n >\\n @if (cell.fullCellRender) {\\n <ng-container *nzStringTemplateOutlet=\\\"cell.fullCellRender; context: { $implicit: cell.value }\\\">\\n {{ cell.fullCellRender }}\\n </ng-container>\\n } @else {\\n <div class=\\\"{{ prefixCls }}-date-value\\\">{{ cell.content }}</div>\\n <div class=\\\"{{ prefixCls }}-date-content\\\">\\n <ng-container *nzStringTemplateOutlet=\\\"cell.cellRender; context: { $implicit: cell.value }\\\">\\n {{ cell.cellRender }}\\n </ng-container>\\n </div>\\n }\\n </div>\\n }\\n }\\n </td>\\n }\\n </tr>\\n }\\n </tbody>\\n</table>\\n\", dependencies: [{ kind: \"directive\", type: NzStringTemplateOutletDirective, selector: \"[nzStringTemplateOutlet]\", inputs: [\"nzStringTemplateOutletContext\", \"nzStringTemplateOutlet\"], exportAs: [\"nzStringTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: MonthTableComponent, decorators: [{\n type: Component,\n args: [{ encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, selector: 'month-table', imports: [NzStringTemplateOutletDirective], template: \"<table class=\\\"ant-picker-content\\\" cellspacing=\\\"0\\\" role=\\\"grid\\\">\\n @if (headRow && headRow.length > 0) {\\n <thead>\\n <tr role=\\\"row\\\">\\n @if (showWeek) {\\n <th role=\\\"columnheader\\\"></th>\\n }\\n @for (cell of headRow; track $index) {\\n <th role=\\\"columnheader\\\" [title]=\\\"cell.title\\\"> {{ cell.content }}</th>\\n }\\n </tr>\\n </thead>\\n }\\n\\n <tbody>\\n @for (row of bodyRows; track row.trackByIndex) {\\n <tr [class]=\\\"row.classMap!\\\" role=\\\"row\\\">\\n @if (row.weekNum) {\\n <td role=\\\"gridcell\\\" class=\\\"{{ prefixCls }}-cell-week\\\"> {{ row.weekNum }}</td>\\n }\\n @for (cell of row.dateCells; track cell.trackByIndex) {\\n <td\\n [title]=\\\"cell.title\\\"\\n role=\\\"gridcell\\\"\\n [class]=\\\"cell.classMap!\\\"\\n (click)=\\\"cell.isDisabled ? null : cell.onClick()\\\"\\n (mouseenter)=\\\"cell.onMouseEnter()\\\"\\n >\\n @switch (prefixCls) {\\n @case ('ant-picker') {\\n @if (cell.cellRender) {\\n <ng-template\\n [nzStringTemplateOutlet]=\\\"cell.cellRender\\\"\\n [nzStringTemplateOutletContext]=\\\"{ $implicit: cell.value }\\\"\\n >\\n {{ cell.cellRender }}\\n </ng-template>\\n } @else {\\n <div\\n class=\\\"{{ prefixCls }}-cell-inner\\\"\\n [attr.aria-selected]=\\\"cell.isSelected\\\"\\n [attr.aria-disabled]=\\\"cell.isDisabled\\\"\\n >\\n {{ cell.content }}\\n </div>\\n }\\n }\\n @case ('ant-picker-calendar') {\\n <div\\n class=\\\"{{ prefixCls }}-date ant-picker-cell-inner\\\"\\n [class.ant-picker-calendar-date-today]=\\\"cell.isToday\\\"\\n >\\n @if (cell.fullCellRender) {\\n <ng-container *nzStringTemplateOutlet=\\\"cell.fullCellRender; context: { $implicit: cell.value }\\\">\\n {{ cell.fullCellRender }}\\n </ng-container>\\n } @else {\\n <div class=\\\"{{ prefixCls }}-date-value\\\">{{ cell.content }}</div>\\n <div class=\\\"{{ prefixCls }}-date-content\\\">\\n <ng-container *nzStringTemplateOutlet=\\\"cell.cellRender; context: { $implicit: cell.value }\\\">\\n {{ cell.cellRender }}\\n </ng-container>\\n </div>\\n }\\n </div>\\n }\\n }\\n </td>\\n }\\n </tr>\\n }\\n </tbody>\\n</table>\\n\" }]\n }] });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass DateHeaderComponent extends AbstractPanelHeader {\n dateHelper = inject(DateHelperService);\n mode = 'date';\n getSelectors() {\n return [\n {\n className: `${this.prefixCls}-year-btn`,\n title: this.locale.yearSelect,\n onClick: () => {\n this.mode = 'year';\n this.changeMode('year');\n },\n label: this.dateHelper.format(this.value.nativeDate, transCompatFormat(this.locale.yearFormat))\n },\n {\n className: `${this.prefixCls}-month-btn`,\n title: this.locale.monthSelect,\n onClick: () => {\n this.mode = 'month';\n this.changeMode('month');\n },\n label: this.dateHelper.format(this.value.nativeDate, this.locale.monthFormat || 'MMM')\n }\n ];\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: DateHeaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.0\", type: DateHeaderComponent, isStandalone: true, selector: \"date-header\", usesInheritance: true, ngImport: i0, template: \"<div class=\\\"{{ prefixCls }}\\\">\\n <button\\n [style.visibility]=\\\"showSuperPreBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-super-prev-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ superPreviousTitle() }}\\\"\\n (click)=\\\"superPrevious()\\\"\\n >\\n <span class=\\\"ant-picker-super-prev-icon\\\"></span>\\n </button>\\n <button\\n [style.visibility]=\\\"showPreBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-prev-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n title=\\\"{{ previousTitle() }}\\\"\\n tabindex=\\\"-1\\\"\\n (click)=\\\"previous()\\\"\\n >\\n <span class=\\\"ant-picker-prev-icon\\\"></span>\\n </button>\\n\\n <div class=\\\"{{ prefixCls }}-view\\\">\\n @for (selector of selectors; track trackBySelector(selector)) {\\n <button\\n class=\\\"{{ selector.className }}\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n title=\\\"{{ selector.title || null }}\\\"\\n (click)=\\\"selector.onClick()\\\"\\n >\\n {{ selector.label }}\\n </button>\\n }\\n </div>\\n <button\\n [style.visibility]=\\\"showNextBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-next-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ nextTitle() }}\\\"\\n (click)=\\\"next()\\\"\\n >\\n <span class=\\\"ant-picker-next-icon\\\"></span>\\n </button>\\n <button\\n [style.visibility]=\\\"showSuperNextBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-super-next-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ superNextTitle() }}\\\"\\n (click)=\\\"superNext()\\\"\\n >\\n <span class=\\\"ant-picker-super-next-icon\\\"></span>\\n </button>\\n</div>\\n\", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: DateHeaderComponent, decorators: [{\n type: Component,\n args: [{ encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, selector: 'date-header', template: \"<div class=\\\"{{ prefixCls }}\\\">\\n <button\\n [style.visibility]=\\\"showSuperPreBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-super-prev-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ superPreviousTitle() }}\\\"\\n (click)=\\\"superPrevious()\\\"\\n >\\n <span class=\\\"ant-picker-super-prev-icon\\\"></span>\\n </button>\\n <button\\n [style.visibility]=\\\"showPreBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-prev-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n title=\\\"{{ previousTitle() }}\\\"\\n tabindex=\\\"-1\\\"\\n (click)=\\\"previous()\\\"\\n >\\n <span class=\\\"ant-picker-prev-icon\\\"></span>\\n </button>\\n\\n <div class=\\\"{{ prefixCls }}-view\\\">\\n @for (selector of selectors; track trackBySelector(selector)) {\\n <button\\n class=\\\"{{ selector.className }}\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n title=\\\"{{ selector.title || null }}\\\"\\n (click)=\\\"selector.onClick()\\\"\\n >\\n {{ selector.label }}\\n </button>\\n }\\n </div>\\n <button\\n [style.visibility]=\\\"showNextBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-next-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ nextTitle() }}\\\"\\n (click)=\\\"next()\\\"\\n >\\n <span class=\\\"ant-picker-next-icon\\\"></span>\\n </button>\\n <button\\n [style.visibility]=\\\"showSuperNextBtn ? 'visible' : 'hidden'\\\"\\n class=\\\"{{ prefixCls }}-super-next-btn\\\"\\n role=\\\"button\\\"\\n type=\\\"button\\\"\\n tabindex=\\\"-1\\\"\\n title=\\\"{{ superNextTitle() }}\\\"\\n (click)=\\\"superNext()\\\"\\n >\\n <span class=\\\"ant-picker-super-next-icon\\\"></span>\\n </button>\\n</div>\\n\" }]\n }] });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass DateTableComponent extends AbstractTable {\n format;\n i18n = inject(NzI18nService);\n dateHelper = inject(DateHelperService);\n changeValueFromInside(value) {\n // Only change date, does not change time\n this.activeDate = this.activeDate.setYear(value.getYear()).setMonth(value.getMonth()).setDate(value.getDate());\n this.valueChange.emit(this.activeDate);\n if (!this.activeDate.isSameMonth(this.value)) {\n this.render();\n }\n }\n makeHeadRow() {\n const weekDays = [];\n const start = this.activeDate.calendarStart({ weekStartsOn: this.dateHelper.getFirstDayOfWeek() });\n for (let colIndex = 0; colIndex < this.MAX_COL; colIndex++) {\n const day = start.addDays(colIndex);\n weekDays.push({\n trackByIndex: null,\n value: day.nativeDate,\n title: this.dateHelper.format(day.nativeDate, 'E'), // eg. Tue\n content: this.dateHelper.format(day.nativeDate, this.getVeryShortWeekFormat()), // eg. Tu,\n isSelected: false,\n isDisabled: false,\n onClick() { },\n onMouseEnter() { }\n });\n }\n return weekDays;\n }\n getVeryShortWeekFormat() {\n return this.i18n.getLocaleId().toLowerCase().indexOf('zh') === 0 ? 'EEEEE' : 'EEEEEE'; // Use extreme short for chinese\n }\n makeBodyRows() {\n const weekRows = [];\n const firstDayOfMonth = this.activeDate.calendarStart({ weekStartsOn: this.dateHelper.getFirstDayOfWeek() });\n for (let week = 0; week < this.MAX_ROW; week++) {\n const weekStart = firstDayOfMonth.addDays(week * 7);\n const row = {\n isActive: false,\n dateCells: [],\n trackByIndex: week\n };\n for (let day = 0; day < 7; day++) {\n const date = weekStart.addDays(day);\n const dateFormat = transCompatFormat(this.format ?? this.i18n.getLocaleData('DatePicker.lang.dateFormat', 'YYYY-MM-DD'));\n const title = this.dateHelper.format(date.nativeDate, dateFormat);\n const label = this.dateHelper.format(date.nativeDate, 'dd');\n const cell = {\n trackByIndex: day,\n value: date.nativeDate,\n label,\n isSelected: false,\n isDisabled: false,\n isToday: false,\n title,\n cellRender: valueFunctionProp(this.cellRender, date), // Customized content\n fullCellRender: valueFunctionProp(this.fullCellRender, date),\n content: `${date.getDate()}`,\n onClick: () => this.changeValueFromInside(date),\n onMouseEnter: () => this.cellHover.emit(date)\n };\n this.addCellProperty(cell, date);\n if (this.showWeek && !row.weekNum) {\n row.weekNum = this.dateHelper.getISOWeek(date.nativeDate);\n }\n if (date.isSameDay(this.value)) {\n row.isActive = date.isSameDay(this.value);\n }\n row.dateCells.push(cell);\n }\n row.classMap = {\n [`ant-picker-week-panel-row`]: this.canSelectWeek,\n [`ant-picker-week-panel-row-selected`]: this.canSelectWeek && row.isActive\n };\n weekRows.push(row);\n }\n return weekRows;\n }\n addCellProperty(cell, date) {\n if (this.hasRangeValue() && !this.canSelectWeek) {\n const [startHover, endHover] = this.hoverValue;\n const [startSelected, endSelected] = this.selectedValue;\n // Selected\n if (startSelected?.isSameDay(date)) {\n cell.isSelectedStart = true;\n cell.isSelected = true;\n }\n if (endSelected?.isSameDay(date)) {\n cell.isSelectedEnd = true;\n cell.isSelected = true;\n }\n if (startHover && endHover) {\n cell.isHoverStart = startHover.isSameDay(date);\n cell.isHoverEnd = endHover.isSameDay(date);\n cell.isLastCellInPanel = date.isLastDayOfMonth();\n cell.isFirstCellInPanel = date.isFirstDayOfMonth();\n cell.isInHoverRange = startHover.isBeforeDay(date) && date.isBeforeDay(endHover);\n }\n cell.isStartSingle = startSelected && !endSelected;\n cell.isEndSingle = !startSelected && endSelected;\n cell.isInSelectedRange = startSelected?.isBeforeDay(date) && date.isBeforeDay(endSelected);\n cell.isRangeStartNearHover = startSelected && cell.isInHoverRange;\n cell.isRangeEndNearHover = endSelected && cell.isInHoverRange;\n }\n cell.isToday = date.isToday();\n cell.isSelected = date.isSameDay(this.value);\n cell.isDisabled = !!this.disabledDate?.(date.nativeDate);\n cell.classMap = this.getClassMap(cell);\n }\n getClassMap(cell) {\n const date = new CandyDate(cell.value);\n return {\n ...super.getClassMap(cell),\n [`ant-picker-cell-today`]: !!cell.isToday,\n [`ant-picker-cell-in-view`]: date.isSameMonth(this.activeDate)\n };\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: DateTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.0\", type: DateTableComponent, isStandalone: true, selector: \"date-table\", inputs: { format: \"format\" }, usesInheritance: true, ngImport: i0, template: \"<table class=\\\"ant-picker-content\\\" cellspacing=\\\"0\\\" role=\\\"grid\\\">\\n @if (headRow && headRow.length > 0) {\\n <thead>\\n <tr role=\\\"row\\\">\\n @if (showWeek) {\\n <th role=\\\"columnheader\\\"></th>\\n }\\n @for (cell of headRow; track $index) {\\n <th role=\\\"columnheader\\\" [title]=\\\"cell.title\\\"> {{ cell.content }}</th>\\n }\\n </tr>\\n </thead>\\n }\\n\\n <tbody>\\n @for (row of bodyRows; track row.trackByIndex) {\\n <tr [class]=\\\"row.classMap!\\\" role=\\\"row\\\">\\n @if (row.weekNum) {\\n <td role=\\\"gridcell\\\" class=\\\"{{ prefixCls }}-cell-week\\\"> {{ row.weekNum }}</td>\\n }\\n @for (cell of row.dateCells; track cell.trackByIndex) {\\n <td\\n [title]=\\\"cell.title\\\"\\n role=\\\"gridcell\\\"\\n [class]=\\\"cell.classMap!\\\"\\n (click)=\\\"cell.isDisabled ? null : cell.onClick()\\\"\\n (mouseenter)=\\\"cell.onMouseEnter()\\\"\\n >\\n @switch (prefixCls) {\\n @case ('ant-picker') {\\n @if (cell.cellRender) {\\n <ng-template\\n [nzStringTemplateOutlet]=\\\"cell.cellRender\\\"\\n [nzStringTemplateOutletContext]=\\\"{ $implicit: cell.value }\\\"\\n >\\n {{ cell.cellRender }}\\n </ng-template>\\n } @else {\\n <div\\n class=\\\"{{ prefixCls }}-cell-inner\\\"\\n [attr.aria-selected]=\\\"cell.isSelected\\\"\\n [attr.aria-disabled]=\\\"cell.isDisabled\\\"\\n >\\n {{ cell.content }}\\n </div>\\n }\\n }\\n @case ('ant-picker-calendar') {\\n <div\\n class=\\\"{{ prefixCls }}-date ant-picker-cell-inner\\\"\\n [class.ant-picker-calendar-date-today]=\\\"cell.isToday\\\"\\n >\\n @if (cell.fullCellRender) {\\n <ng-container *nzStringTemplateOutlet=\\\"cell.fullCellRender; context: { $implicit: cell.value }\\\">\\n {{ cell.fullCellRender }}\\n </ng-container>\\n } @else {\\n <div class=\\\"{{ prefixCls }}-date-value\\\">{{ cell.content }}</div>\\n <div class=\\\"{{ prefixCls }}-date-content\\\">\\n <ng-container *nzStringTemplateOutlet=\\\"cell.cellRender; context: { $implicit: cell.value }\\\">\\n {{ cell.cellRender }}\\n </ng-container>\\n </div>\\n }\\n </div>\\n }\\n }\\n </td>\\n }\\n </tr>\\n }\\n </tbody>\\n</table>\\n\", dependencies: [{ kind: \"directive\", type: NzStringTemplateOutletDirective, selector: \"[nzStringTemplateOutlet]\", inputs: [\"nzStringTemplateOutletContext\", \"nzStringTemplateOutlet\"], exportAs: [\"nzStringTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: DateTableComponent, decorators: [{\n type: Component,\n args: [{ encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, selector: 'date-table', imports: [NzStringTemplateOutletDirective], template: \"<table class=\\\"ant-picker-content\\\" cellspacing=\\\"0\\\" role=\\\"grid\\\">\\n @if (headRow && headRow.length > 0) {\\n <thead>\\n <tr role=\\\"row\\\">\\n @if (showWeek) {\\n <th role=\\\"columnheader\\\"></th>\\n }\\n @for (cell of headRow; track $index) {\\n <th role=\\\"columnheader\\\" [title]=\\\"cell.title\\\"> {{ cell.content }}</th>\\n }\\n </tr>\\n </thead>\\n }\\n\\n <tbody>\\n @for (row of bodyRows; track row.trackByIndex) {\\n <tr [class]=\\\"row.classMap!\\\" role=\\\"row\\\">\\n @if (row.weekNum) {\\n <td role=\\\"gridcell\\\" class=\\\"{{ prefixCls }}-cell-week\\\"> {{ row.weekNum }}</td>\\n }\\n @for (cell of row.dateCells; track cell.trackByIndex) {\\n <td\\n [title]=\\\"cell.title\\\"\\n role=\\\"gridcell\\\"\\n [class]=\\\"cell.classMap!\\\"\\n (click)=\\\"cell.isDisabled ? null : cell.onClick()\\\"\\n (mouseenter)=\\\"cell.onMouseEnter()\\\"\\n >\\n @switch (prefixCls) {\\n @case ('ant-picker') {\\n @if (cell.cellRender) {\\n <ng-template\\n [nzStringTemplateOutlet]=\\\"cell.cellRender\\\"\\n [nzStringTemplateOutletContext]=\\\"{ $implicit: cell.value }\\\"\\n >\\n {{ cell.cellRender }}\\n </ng-template>\\n } @else {\\n <div\\n class=\\\"{{ prefixCls }}-cell-inner\\\"\\n [attr.aria-selected]=\\\"cell.isSelected\\\"\\n [attr.aria-disabled]=\\\"cell.isDisabled\\\"\\n >\\n {{ cell.content }}\\n </div>\\n }\\n }\\n @case ('ant-picker-calendar') {\\n <div\\n class=\\\"{{ prefixCls }}-date ant-picker-cell-inner\\\"\\n [class.ant-picker-calendar-date-today]=\\\"cell.isToday\\\"\\n >\\n @if (cell.fullCellRender) {\\n <ng-container *nzStringTemplateOutlet=\\\"cell.fullCellRender; context: { $implicit: cell.value }\\\">\\n {{ cell.fullCellRender }}\\n </ng-container>\\n } @else {\\n <div class=\\\"{{ prefixCls }}-date-value\\\">{{ cell.content }}</div>\\n <div class=\\\"{{ prefixCls }}-date-content\\\">\\n <ng-container *nzStringTemplateOutlet=\\\"cell.cellRender; context: { $implicit: cell.value }\\\">\\n {{ cell.cellRender }}\\n </ng-container>\\n </div>\\n }\\n </div>\\n }\\n }\\n </td>\\n }\\n </tr>\\n }\\n </tbody>\\n</table>\\n\" }]\n }], propDecorators: { format: [{\n type: Input\n }] } });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n/**\n * A collection module of standard output for all lib components\n */\nclass LibPackerModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: LibPackerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.0\", ngImport: i0, type: LibPackerModule, imports: [DateHeaderComponent,\n DateTableComponent,\n DecadeHeaderComponent,\n DecadeTableComponent,\n MonthHeaderComponent,\n MonthTableComponent,\n YearHeaderComponent,\n YearTableComponent,\n QuarterHeaderComponent,\n QuarterTableComponent], exports: [DateHeaderComponent,\n DateTableComponent,\n DecadeHeaderComponent,\n DecadeTableComponent,\n MonthHeaderComponent,\n MonthTableComponent,\n YearHeaderComponent,\n YearTableComponent,\n QuarterHeaderComponent,\n QuarterTableComponent] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: LibPackerModule });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: LibPackerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n DateHeaderComponent,\n DateTableComponent,\n DecadeHeaderComponent,\n DecadeTableComponent,\n MonthHeaderComponent,\n MonthTableComponent,\n YearHeaderComponent,\n YearTableComponent,\n QuarterHeaderComponent,\n QuarterTableComponent\n ],\n exports: [\n DateHeaderComponent,\n DateTableComponent,\n DecadeHeaderComponent,\n DecadeTableComponent,\n MonthHeaderComponent,\n MonthTableComponent,\n YearHeaderComponent,\n YearTableComponent,\n QuarterHeaderComponent,\n QuarterTableComponent\n ]\n }]\n }] });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass InnerPopupComponent {\n activeDate;\n endPanelMode;\n panelMode;\n showWeek;\n locale;\n showTimePicker;\n timeOptions;\n disabledDate;\n dateRender;\n selectedValue; // Range ONLY\n hoverValue; // Range ONLY\n value;\n partType;\n format;\n panelChange = new EventEmitter();\n // TODO: name is not proper\n headerChange = new EventEmitter(); // Emitted when user changed the header's value\n selectDate = new EventEmitter(); // Emitted when the date is selected by click the date panel\n selectTime = new EventEmitter();\n cellHover = new EventEmitter(); // Emitted when hover on a day by mouse enter\n prefixCls = PREFIX_CLASS;\n /**\n * Hide \"next\" arrow in left panel,\n * hide \"prev\" arrow in right panel\n *\n * @param direction\n * @param panelMode\n */\n enablePrevNext(direction, panelMode) {\n return !(!this.showTimePicker &&\n panelMode === this.endPanelMode &&\n ((this.partType === 'left' && direction === 'next') || (this.partType === 'right' && direction === 'prev')));\n }\n onLeave() {\n this.cellHover.emit(null);\n }\n onSelectTime(date) {\n this.selectTime.emit(new CandyDate(date));\n }\n // The value real changed to outside\n onSelectDate(date) {\n const value = date instanceof CandyDate ? date : new CandyDate(date);\n const timeValue = this.timeOptions && this.timeOptions.nzDefaultOpenValue;\n // Display timeValue when value is null\n if (!this.value && timeValue) {\n value.setHms(timeValue.getHours(), timeValue.getMinutes(), timeValue.getSeconds());\n }\n this.selectDate.emit(value);\n }\n onChooseMonth(value) {\n this.activeDate = this.activeDate.setMonth(value.getMonth());\n if (this.endPanelMode === 'month') {\n this.value = value;\n this.selectDate.emit(value);\n }\n else {\n this.headerChange.emit(value);\n this.panelChange.emit({ mode: this.endPanelMode, date: value.nativeDate });\n }\n }\n onChooseQuarter(value) {\n this.activeDate = this.activeDate.setQuarter(value.getQuarter());\n this.value = value;\n this.selectDate.emit(value);\n }\n onChooseYear(value) {\n this.activeDate = this.activeDate.setYear(value.getYear());\n if (this.endPanelMode === 'year') {\n this.value = value;\n this.selectDate.emit(value);\n }\n else {\n this.headerChange.emit(value);\n this.panelChange.emit({ mode: this.endPanelMode, date: value.nativeDate });\n }\n }\n onChooseDecade(value) {\n this.activeDate = this.activeDate.setYear(value.getYear());\n if (this.endPanelMode === 'decade') {\n this.value = value;\n this.selectDate.emit(value);\n }\n else {\n this.headerChange.emit(value);\n this.panelChange.emit({ mode: 'year', date: value.nativeDate });\n }\n }\n ngOnChanges(changes) {\n if (changes.activeDate && !changes.activeDate.currentValue) {\n this.activeDate = new CandyDate();\n }\n // New Antd vesion has merged 'date' ant 'time' to one panel,\n // So there is not 'time' panel\n if (changes.panelMode && changes.panelMode.currentValue === 'time') {\n this.panelMode = 'date';\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: InnerPopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.0\", type: InnerPopupComponent, isStandalone: true, selector: \"inner-popup\", inputs: { activeDate: \"activeDate\", endPanelMode: \"endPanelMode\", panelMode: \"panelMode\", showWeek: [\"showWeek\", \"showWeek\", booleanAttribute], locale: \"locale\", showTimePicker: [\"showTimePicker\", \"showTimePicker\", booleanAttribute], timeOptions: \"timeOptions\", disabledDate: \"disabledDate\", dateRender: \"dateRender\", selectedValue: \"selectedValue\", hoverValue: \"hoverValue\", value: \"value\", partType: \"partType\", format: \"format\" }, outputs: { panelChange: \"panelChange\", headerChange: \"headerChange\", selectDate: \"selectDate\", selectTime: \"selectTime\", cellHover: \"cellHover\" }, usesOnChanges: true, ngImport: i0, template: `\n <div (mouseleave)=\"onLeave()\" [class.ant-picker-datetime-panel]=\"showTimePicker\">\n <div class=\"{{ prefixCls }}-{{ panelMode }}-panel\">\n @switch (panelMode) {\n @case ('decade') {\n <decade-header\n [(value)]=\"activeDate\"\n [locale]=\"locale\"\n [showSuperPreBtn]=\"enablePrevNext('prev', 'decade')\"\n [showSuperNextBtn]=\"enablePrevNext('next', 'decade')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelChange)=\"panelChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\"\n />\n <div class=\"{{ prefixCls }}-body\">\n <decade-table\n [activeDate]=\"activeDate\"\n [value]=\"value\"\n [locale]=\"locale\"\n (valueChange)=\"onChooseDecade($event)\"\n [disabledDate]=\"disabledDate\"\n />\n </div>\n }\n @case ('year') {\n <year-header\n [(value)]=\"activeDate\"\n [locale]=\"locale\"\n [showSuperPreBtn]=\"enablePrevNext('prev', 'year')\"\n [showSuperNextBtn]=\"enablePrevNext('next', 'year')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelChange)=\"panelChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\"\n />\n <div class=\"{{ prefixCls }}-body\">\n <year-table\n [activeDate]=\"activeDate\"\n [value]=\"value\"\n [locale]=\"locale\"\n [disabledDate]=\"disabledDate\"\n [selectedValue]=\"selectedValue\"\n [hoverValue]=\"hoverValue\"\n (valueChange)=\"onChooseYear($event)\"\n (cellHover)=\"cellHover.emit($event)\"\n />\n </div>\n }\n @case ('month') {\n <month-header\n [(value)]=\"activeDate\"\n [locale]=\"locale\"\n [showSuperPreBtn]=\"enablePrevNext('prev', 'month')\"\n [showSuperNextBtn]=\"enablePrevNext('next', 'month')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelChange)=\"panelChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\"\n />\n <div class=\"{{ prefixCls }}-body\">\n <month-table\n [value]=\"value\"\n [activeDate]=\"activeDate\"\n [locale]=\"locale\"\n [disabledDate]=\"disabledDate\"\n [selectedValue]=\"selectedValue\"\n [hoverValue]=\"hoverValue\"\n (valueChange)=\"onChooseMonth($event)\"\n (cellHover)=\"cellHover.emit($event)\"\n />\n </div>\n }\n @case ('quarter') {\n <quarter-header\n [(value)]=\"activeDate\"\n [locale]=\"locale\"\n [showSuperPreBtn]=\"enablePrevNext('prev', 'month')\"\n [showSuperNextBtn]=\"enablePrevNext('next', 'month')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelChange)=\"panelChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\"\n />\n <div class=\"{{ prefixCls }}-body\">\n <quarter-table\n [value]=\"value\"\n [activeDate]=\"activeDate\"\n [locale]=\"locale\"\n [disabledDate]=\"disabledDate\"\n [selectedValue]=\"selectedValue\"\n [hoverValue]=\"hoverValue\"\n (valueChange)=\"onChooseQuarter($event)\"\n (cellHover)=\"cellHover.emit($event)\"\n [cellRender]=\"dateRender\"\n />\n </div>\n }\n @default {\n <date-header\n [(value)]=\"activeDate\"\n [locale]=\"locale\"\n [showSuperPreBtn]=\"panelMode === 'week' ? enablePrevNext('prev', 'week') : enablePrevNext('prev', 'date')\"\n [showSuperNextBtn]=\"\n panelMode === 'week' ? enablePrevNext('next', 'week') : enablePrevNext('next', 'date')\n \"\n [showPreBtn]=\"panelMode === 'week' ? enablePrevNext('prev', 'week') : enablePrevNext('prev', 'date')\"\n [showNextBtn]=\"panelMode === 'week' ? enablePrevNext('next', 'week') : enablePrevNext('next', 'date')\"\n (panelChange)=\"panelChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\"\n />\n <div class=\"{{ prefixCls }}-body\">\n <date-table\n [locale]=\"locale\"\n [showWeek]=\"showWeek\"\n [value]=\"value\"\n [activeDate]=\"activeDate\"\n [disabledDate]=\"disabledDate\"\n [cellRender]=\"dateRender\"\n [selectedValue]=\"selectedValue\"\n [hoverValue]=\"hoverValue\"\n [canSelectWeek]=\"panelMode === 'week'\"\n [format]=\"format\"\n (valueChange)=\"onSelectDate($event)\"\n (cellHover)=\"cellHover.emit($event)\"\n />\n </div>\n }\n }\n </div>\n @if (showTimePicker && timeOptions) {\n <nz-time-picker-panel\n [nzInDatePicker]=\"true\"\n [ngModel]=\"value?.nativeDate\"\n (ngModelChange)=\"onSelectTime($event)\"\n [format]=\"$any(timeOptions.nzFormat)\"\n [nzHourStep]=\"$any(timeOptions.nzHourStep)\"\n [nzMinuteStep]=\"$any(timeOptions.nzMinuteStep)\"\n [nzSecondStep]=\"$any(timeOptions.nzSecondStep)\"\n [nzDisabledHours]=\"$any(timeOptions.nzDisabledHours)\"\n [nzDisabledMinutes]=\"$any(timeOptions.nzDisabledMinutes)\"\n [nzDisabledSeconds]=\"$any(timeOptions.nzDisabledSeconds)\"\n [nzHideDisabledOptions]=\"!!timeOptions.nzHideDisabledOptions\"\n [nzDefaultOpenValue]=\"$any(timeOptions.nzDefaultOpenValue)\"\n [nzUse12Hours]=\"!!timeOptions.nzUse12Hours\"\n [nzAddOn]=\"$any(timeOptions.nzAddOn)\"\n />\n }\n </div>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: LibPackerModule }, { kind: \"component\", type: DateHeaderComponent, selector: \"date-header\" }, { kind: \"component\", type: DateTableComponent, selector: \"date-table\", inputs: [\"format\"] }, { kind: \"component\", type: DecadeHeaderComponent, selector: \"decade-header\" }, { kind: \"component\", type: DecadeTableComponent, selector: \"decade-table\" }, { kind: \"component\", type: MonthHeaderComponent, selector: \"month-header\" }, { kind: \"component\", type: MonthTableComponent, selector: \"month-table\" }, { kind: \"component\", type: YearHeaderComponent, selector: \"year-header\" }, { kind: \"component\", type: YearTableComponent, selector: \"year-table\" }, { kind: \"component\", type: QuarterHeaderComponent, selector: \"quarter-header\" }, { kind: \"component\", type: QuarterTableComponent, selector: \"quarter-table\" }, { kind: \"ngmodule\", type: NzTimePickerModule }, { kind: \"component\", type: i11.NzTimePickerPanelComponent, selector: \"nz-time-picker-panel\", inputs: [\"nzInDatePicker\", \"nzAddOn\", \"nzHideDisabledOptions\", \"nzClearText\", \"nzNowText\", \"nzOkText\", \"nzPlaceHolder\", \"nzUse12Hours\", \"nzDefaultOpenValue\", \"nzAllowEmpty\", \"nzDisabledHours\", \"nzDisabledMinutes\", \"nzDisabledSeconds\", \"format\", \"nzHourStep\", \"nzMinuteStep\", \"nzSecondStep\"], outputs: [\"closePanel\"], exportAs: [\"nzTimePickerPanel\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2$1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2$1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: InnerPopupComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'inner-popup',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div (mouseleave)=\"onLeave()\" [class.ant-picker-datetime-panel]=\"showTimePicker\">\n <div class=\"{{ prefixCls }}-{{ panelMode }}-panel\">\n @switch (panelMode) {\n @case ('decade') {\n <decade-header\n [(value)]=\"activeDate\"\n [locale]=\"locale\"\n [showSuperPreBtn]=\"enablePrevNext('prev', 'decade')\"\n [showSuperNextBtn]=\"enablePrevNext('next', 'decade')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelChange)=\"panelChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\"\n />\n <div class=\"{{ prefixCls }}-body\">\n <decade-table\n [activeDate]=\"activeDate\"\n [value]=\"value\"\n [locale]=\"locale\"\n (valueChange)=\"onChooseDecade($event)\"\n [disabledDate]=\"disabledDate\"\n />\n </div>\n }\n @case ('year') {\n <year-header\n [(value)]=\"activeDate\"\n [locale]=\"locale\"\n [showSuperPreBtn]=\"enablePrevNext('prev', 'year')\"\n [showSuperNextBtn]=\"enablePrevNext('next', 'year')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelChange)=\"panelChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\"\n />\n <div class=\"{{ prefixCls }}-body\">\n <year-table\n [activeDate]=\"activeDate\"\n [value]=\"value\"\n [locale]=\"locale\"\n [disabledDate]=\"disabledDate\"\n [selectedValue]=\"selectedValue\"\n [hoverValue]=\"hoverValue\"\n (valueChange)=\"onChooseYear($event)\"\n (cellHover)=\"cellHover.emit($event)\"\n />\n </div>\n }\n @case ('month') {\n <month-header\n [(value)]=\"activeDate\"\n [locale]=\"locale\"\n [showSuperPreBtn]=\"enablePrevNext('prev', 'month')\"\n [showSuperNextBtn]=\"enablePrevNext('next', 'month')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelChange)=\"panelChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\"\n />\n <div class=\"{{ prefixCls }}-body\">\n <month-table\n [value]=\"value\"\n [activeDate]=\"activeDate\"\n [locale]=\"locale\"\n [disabledDate]=\"disabledDate\"\n [selectedValue]=\"selectedValue\"\n [hoverValue]=\"hoverValue\"\n (valueChange)=\"onChooseMonth($event)\"\n (cellHover)=\"cellHover.emit($event)\"\n />\n </div>\n }\n @case ('quarter') {\n <quarter-header\n [(value)]=\"activeDate\"\n [locale]=\"locale\"\n [showSuperPreBtn]=\"enablePrevNext('prev', 'month')\"\n [showSuperNextBtn]=\"enablePrevNext('next', 'month')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelChange)=\"panelChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\"\n />\n <div class=\"{{ prefixCls }}-body\">\n <quarter-table\n [value]=\"value\"\n [activeDate]=\"activeDate\"\n [locale]=\"locale\"\n [disabledDate]=\"disabledDate\"\n [selectedValue]=\"selectedValue\"\n [hoverValue]=\"hoverValue\"\n (valueChange)=\"onChooseQuarter($event)\"\n (cellHover)=\"cellHover.emit($event)\"\n [cellRender]=\"dateRender\"\n />\n </div>\n }\n @default {\n <date-header\n [(value)]=\"activeDate\"\n [locale]=\"locale\"\n [showSuperPreBtn]=\"panelMode === 'week' ? enablePrevNext('prev', 'week') : enablePrevNext('prev', 'date')\"\n [showSuperNextBtn]=\"\n panelMode === 'week' ? enablePrevNext('next', 'week') : enablePrevNext('next', 'date')\n \"\n [showPreBtn]=\"panelMode === 'week' ? enablePrevNext('prev', 'week') : enablePrevNext('prev', 'date')\"\n [showNextBtn]=\"panelMode === 'week' ? enablePrevNext('next', 'week') : enablePrevNext('next', 'date')\"\n (panelChange)=\"panelChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\"\n />\n <div class=\"{{ prefixCls }}-body\">\n <date-table\n [locale]=\"locale\"\n [showWeek]=\"showWeek\"\n [value]=\"value\"\n [activeDate]=\"activeDate\"\n [disabledDate]=\"disabledDate\"\n [cellRender]=\"dateRender\"\n [selectedValue]=\"selectedValue\"\n [hoverValue]=\"hoverValue\"\n [canSelectWeek]=\"panelMode === 'week'\"\n [format]=\"format\"\n (valueChange)=\"onSelectDate($event)\"\n (cellHover)=\"cellHover.emit($event)\"\n />\n </div>\n }\n }\n </div>\n @if (showTimePicker && timeOptions) {\n <nz-time-picker-panel\n [nzInDatePicker]=\"true\"\n [ngModel]=\"value?.nativeDate\"\n (ngModelChange)=\"onSelectTime($event)\"\n [format]=\"$any(timeOptions.nzFormat)\"\n [nzHourStep]=\"$any(timeOptions.nzHourStep)\"\n [nzMinuteStep]=\"$any(timeOptions.nzMinuteStep)\"\n [nzSecondStep]=\"$any(timeOptions.nzSecondStep)\"\n [nzDisabledHours]=\"$any(timeOptions.nzDisabledHours)\"\n [nzDisabledMinutes]=\"$any(timeOptions.nzDisabledMinutes)\"\n [nzDisabledSeconds]=\"$any(timeOptions.nzDisabledSeconds)\"\n [nzHideDisabledOptions]=\"!!timeOptions.nzHideDisabledOptions\"\n [nzDefaultOpenValue]=\"$any(timeOptions.nzDefaultOpenValue)\"\n [nzUse12Hours]=\"!!timeOptions.nzUse12Hours\"\n [nzAddOn]=\"$any(timeOptions.nzAddOn)\"\n />\n }\n </div>\n `,\n imports: [LibPackerModule, NzTimePickerModule, FormsModule]\n }]\n }], propDecorators: { activeDate: [{\n type: Input\n }], endPanelMode: [{\n type: Input\n }], panelMode: [{\n type: Input\n }], showWeek: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], locale: [{\n type: Input\n }], showTimePicker: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], timeOptions: [{\n type: Input\n }], disabledDate: [{\n type: Input\n }], dateRender: [{\n type: Input\n }], selectedValue: [{\n type: Input\n }], hoverValue: [{\n type: Input\n }], value: [{\n type: Input\n }], partType: [{\n type: Input\n }], format: [{\n type: Input\n }], panelChange: [{\n type: Output\n }], headerChange: [{\n type: Output\n }], selectDate: [{\n type: Output\n }], selectTime: [{\n type: Output\n }], cellHover: [{\n type: Output\n }] } });\n\nclass DateRangePopupComponent {\n datePickerService = inject(DatePickerService);\n cdr = inject(ChangeDetectorRef);\n host = inject((ElementRef));\n destroyRef = inject(DestroyRef);\n isRange;\n inline = false;\n showWeek;\n locale;\n disabledDate;\n disabledTime; // This will lead to rebuild time options\n showToday;\n showNow;\n showTime;\n extraFooter;\n ranges;\n dateRender;\n panelMode;\n defaultPickerValue;\n dir = 'ltr';\n format;\n panelModeChange = new EventEmitter();\n calendarChange = new EventEmitter();\n resultOk = new EventEmitter(); // Emitted when done with date selecting\n prefixCls = PREFIX_CLASS;\n endPanelMode = 'date';\n timeOptions = null;\n hoverValue = []; // Range ONLY\n checkedPartArr = [false, false];\n get hasTimePicker() {\n return !!this.showTime;\n }\n get hasFooter() {\n return this.showToday || this.hasTimePicker || !!this.extraFooter || !!this.ranges;\n }\n get arrowPosition() {\n return this.dir === 'rtl'\n ? { right: `${this.datePickerService?.arrowLeft}px` }\n : { left: `${this.datePickerService?.arrowLeft}px` };\n }\n ngOnInit() {\n merge(this.datePickerService.valueChange$, this.datePickerService.inputPartChange$)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.updateActiveDate();\n this.cdr.markForCheck();\n });\n fromEventOutsideAngular(this.host.nativeElement, 'mousedown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(event => event.preventDefault());\n }\n ngOnChanges(changes) {\n // Parse showTime options\n if (changes.showTime || changes.disabledTime) {\n if (this.showTime) {\n this.buildTimeOptions();\n }\n }\n if (changes.panelMode) {\n this.endPanelMode = this.panelMode;\n }\n if (changes.defaultPickerValue) {\n this.updateActiveDate();\n }\n }\n updateActiveDate() {\n const activeDate = this.datePickerService.hasValue()\n ? this.datePickerService.value\n : this.datePickerService.makeValue(this.defaultPickerValue);\n this.datePickerService.setActiveDate(activeDate, this.hasTimePicker, this.getPanelMode(this.endPanelMode));\n }\n onClickOk() {\n const inputIndex = { left: 0, right: 1 }[this.datePickerService.activeInput];\n const value = this.isRange\n ? this.datePickerService.value[inputIndex]\n : this.datePickerService.value;\n this.changeValueFromSelect(value);\n this.resultOk.emit();\n }\n onClickToday(value) {\n this.changeValueFromSelect(value, !this.showTime);\n }\n onCellHover(value) {\n if (!this.isRange) {\n return;\n }\n if (value === null) {\n this.hoverValue = [];\n return;\n }\n const otherInputIndex = { left: 1, right: 0 }[this.datePickerService.activeInput];\n const base = this.datePickerService.value[otherInputIndex];\n if (base) {\n if (base.isBeforeDay(value)) {\n this.hoverValue = [base, value];\n }\n else {\n this.hoverValue = [value, base];\n }\n }\n }\n onPanelModeChange(panelChangeEvent, partType) {\n if (this.isRange) {\n const index = this.datePickerService.getActiveIndex(partType);\n if (index === 0) {\n this.panelMode = [panelChangeEvent.mode, this.panelMode[1]];\n }\n else {\n this.panelMode = [this.panelMode[0], panelChangeEvent.mode];\n }\n this.panelModeChange.emit({\n mode: this.panelMode,\n date: this.datePickerService.activeDate.map(d => d.nativeDate)\n });\n }\n else {\n this.panelMode = panelChangeEvent.mode;\n this.panelModeChange.emit({ mode: this.panelMode, date: panelChangeEvent.date });\n }\n }\n onActiveDateChange(value, partType) {\n if (this.isRange) {\n const activeDate = [];\n activeDate[this.datePickerService.getActiveIndex(partType)] = value;\n this.datePickerService.setActiveDate(activeDate, this.hasTimePicker, this.getPanelMode(this.endPanelMode, partType));\n }\n else {\n this.datePickerService.setActiveDate(value);\n }\n }\n onSelectTime(value, partType) {\n if (this.isRange) {\n const newValue = cloneDate(this.datePickerService.value);\n const index = this.datePickerService.getActiveIndex(partType);\n newValue[index] = this.overrideHms(value, newValue[index]);\n this.datePickerService.setValue(newValue);\n }\n else {\n const newValue = this.overrideHms(value, this.datePickerService.value);\n this.datePickerService.setValue(newValue); // If not select a date currently, use today\n }\n this.datePickerService.inputPartChange$.next(null);\n this.buildTimeOptions();\n }\n changeValueFromSelect(value, emitValue = true) {\n if (this.isRange) {\n const selectedValue = cloneDate(this.datePickerService.value);\n const checkedPart = this.datePickerService.activeInput;\n let nextPart = checkedPart;\n selectedValue[this.datePickerService.getActiveIndex(checkedPart)] = value;\n this.checkedPartArr[this.datePickerService.getActiveIndex(checkedPart)] = true;\n this.hoverValue = selectedValue;\n if (emitValue) {\n if (this.inline) {\n // For UE, Should always be reversed, and clear vaue when next part is right\n nextPart = this.reversedPart(checkedPart);\n if (nextPart === 'right') {\n selectedValue[this.datePickerService.getActiveIndex(nextPart)] = null;\n this.checkedPartArr[this.datePickerService.getActiveIndex(nextPart)] = false;\n }\n this.datePickerService.setValue(selectedValue);\n this.calendarChange.emit(selectedValue);\n if (this.isBothAllowed(selectedValue) && this.checkedPartArr[0] && this.checkedPartArr[1]) {\n this.clearHoverValue();\n this.datePickerService.emitValue$.next();\n }\n }\n else {\n /**\n * if sort order is wrong, clear the other part's value\n */\n if (wrongSortOrder(selectedValue)) {\n nextPart = this.reversedPart(checkedPart);\n selectedValue[this.datePickerService.getActiveIndex(nextPart)] = null;\n this.checkedPartArr[this.datePickerService.getActiveIndex(nextPart)] = false;\n }\n this.datePickerService.setValue(selectedValue);\n /**\n * range date usually selected paired,\n * so we emit the date value only both date is allowed and both part are checked\n */\n if (this.isBothAllowed(selectedValue) && this.checkedPartArr[0] && this.checkedPartArr[1]) {\n this.calendarChange.emit(selectedValue);\n this.clearHoverValue();\n this.datePickerService.emitValue$.next();\n }\n else if (this.isAllowed(selectedValue)) {\n nextPart = this.reversedPart(checkedPart);\n this.calendarChange.emit([value.clone()]);\n }\n }\n }\n else {\n this.datePickerService.setValue(selectedValue);\n }\n this.datePickerService.inputPartChange$.next(nextPart);\n }\n else {\n this.datePickerService.setValue(value);\n this.datePickerService.inputPartChange$.next(null);\n if (emitValue && this.isAllowed(value)) {\n this.datePickerService.emitValue$.next();\n }\n }\n this.buildTimeOptions();\n }\n reversedPart(part) {\n return part === 'left' ? 'right' : 'left';\n }\n getPanelMode(panelMode, partType) {\n if (this.isRange) {\n return panelMode[this.datePickerService.getActiveIndex(partType)];\n }\n else {\n return panelMode;\n }\n }\n // Get single value or part value of a range\n getValue(partType) {\n if (this.isRange) {\n return (this.datePickerService.value || [])[this.datePickerService.getActiveIndex(partType)];\n }\n else {\n return this.datePickerService.value;\n }\n }\n getActiveDate(partType) {\n if (this.isRange) {\n return this.datePickerService.activeDate[this.datePickerService.getActiveIndex(partType)];\n }\n else {\n return this.datePickerService.activeDate;\n }\n }\n disabledStartTime = (value) => this.disabledTime && this.disabledTime(value, 'start');\n disabledEndTime = (value) => this.disabledTime && this.disabledTime(value, 'end');\n isOneAllowed(selectedValue) {\n const index = this.datePickerService.getActiveIndex();\n const disabledTimeArr = [this.disabledStartTime, this.disabledEndTime];\n return isAllowedDate(selectedValue[index], this.disabledDate, disabledTimeArr[index]);\n }\n isBothAllowed(selectedValue) {\n return (isAllowedDate(selectedValue[0], this.disabledDate, this.disabledStartTime) &&\n isAllowedDate(selectedValue[1], this.disabledDate, this.disabledEndTime));\n }\n isAllowed(value, isBoth = false) {\n if (this.isRange) {\n return isBoth ? this.isBothAllowed(value) : this.isOneAllowed(value);\n }\n else {\n return isAllowedDate(value, this.disabledDate, this.disabledTime);\n }\n }\n getTimeOptions(partType) {\n if (this.showTime && this.timeOptions) {\n return this.timeOptions instanceof Array\n ? this.timeOptions[this.datePickerService.getActiveIndex(partType)]\n : this.timeOptions;\n }\n return null;\n }\n onClickPresetRange(val) {\n const value = typeof val === 'function' ? val() : val;\n if (value) {\n this.datePickerService.setValue([new CandyDate(value[0]), new CandyDate(value[1])]);\n this.datePickerService.emitValue$.next();\n }\n }\n onPresetRangeMouseLeave() {\n this.clearHoverValue();\n }\n onHoverPresetRange(val) {\n if (typeof val !== 'function') {\n this.hoverValue = [new CandyDate(val[0]), new CandyDate(val[1])];\n }\n }\n getObjectKeys(obj) {\n return obj ? Object.keys(obj) : [];\n }\n show(partType) {\n const hide = this.showTime && this.isRange && this.datePickerService.activeInput !== partType;\n return !hide;\n }\n clearHoverValue() {\n this.hoverValue = [];\n }\n buildTimeOptions() {\n if (this.showTime) {\n const showTime = typeof this.showTime === 'object' ? this.showTime : {};\n if (this.isRange) {\n const value = this.datePickerService.value;\n this.timeOptions = [\n this.overrideTimeOptions(showTime, value[0], 'start'),\n this.overrideTimeOptions(showTime, value[1], 'end')\n ];\n }\n else {\n this.timeOptions = this.overrideTimeOptions(showTime, this.datePickerService.value);\n }\n }\n else {\n this.timeOptions = null;\n }\n }\n overrideTimeOptions(origin, value, partial) {\n let disabledTimeFn;\n if (partial) {\n disabledTimeFn = partial === 'start' ? this.disabledStartTime : this.disabledEndTime;\n }\n else {\n disabledTimeFn = this.disabledTime;\n }\n return { ...origin, ...getTimeConfig(value, disabledTimeFn) };\n }\n overrideHms(newValue, oldValue) {\n newValue = newValue || new CandyDate();\n oldValue = oldValue || new CandyDate();\n return oldValue.setHms(newValue.getHours(), newValue.getMinutes(), newValue.getSeconds());\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: DateRangePopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.0\", type: DateRangePopupComponent, isStandalone: true, selector: \"date-range-popup\", inputs: { isRange: [\"isRange\", \"isRange\", booleanAttribute], inline: [\"inline\", \"inline\", booleanAttribute], showWeek: [\"showWeek\", \"showWeek\", booleanAttribute], locale: \"locale\", disabledDate: \"disabledDate\", disabledTime: \"disabledTime\", showToday: [\"showToday\", \"showToday\", booleanAttribute], showNow: [\"showNow\", \"showNow\", booleanAttribute], showTime: \"showTime\", extraFooter: \"extraFooter\", ranges: \"ranges\", dateRender: \"dateRender\", panelMode: \"panelMode\", defaultPickerValue: \"defaultPickerValue\", dir: \"dir\", format: \"format\" }, outputs: { panelModeChange: \"panelModeChange\", calendarChange: \"calendarChange\", resultOk: \"resultOk\" }, usesOnChanges: true, ngImport: i0, template: `\n @if (isRange) {\n <div class=\"{{ prefixCls }}-range-wrapper {{ prefixCls }}-date-range-wrapper\">\n <div class=\"{{ prefixCls }}-range-arrow\" [style]=\"arrowPosition\"></div>\n <div class=\"{{ prefixCls }}-panel-container {{ showWeek ? prefixCls + '-week-number' : '' }}\">\n <div class=\"{{ prefixCls }}-panels\">\n @if (hasTimePicker) {\n <ng-container *ngTemplateOutlet=\"tplInnerPopup; context: { partType: datePickerService.activeInput }\" />\n } @else {\n <ng-container *ngTemplateOutlet=\"tplInnerPopup; context: { partType: 'left' }\" />\n <ng-container *ngTemplateOutlet=\"tplInnerPopup; context: { partType: 'right' }\" />\n }\n </div>\n <ng-container *ngTemplateOutlet=\"tplFooter\" />\n </div>\n </div>\n } @else {\n <div\n class=\"{{ prefixCls }}-panel-container {{ showWeek ? prefixCls + '-week-number' : '' }} {{\n hasTimePicker ? prefixCls + '-time' : ''\n }} {{ isRange ? prefixCls + '-range' : '' }}\"\n >\n <div class=\"{{ prefixCls }}-panel\" [class.ant-picker-panel-rtl]=\"dir === 'rtl'\" tabindex=\"-1\">\n <!-- Single ONLY -->\n <ng-container *ngTemplateOutlet=\"tplInnerPopup\" />\n <ng-container *ngTemplateOutlet=\"tplFooter\" />\n </div>\n </div>\n }\n\n <ng-template #tplInnerPopup let-partType=\"partType\">\n <div class=\"{{ prefixCls }}-panel\" [class.ant-picker-panel-rtl]=\"dir === 'rtl'\">\n <!-- TODO(@wenqi73) [selectedValue] [hoverValue] types-->\n <inner-popup\n [showWeek]=\"showWeek\"\n [endPanelMode]=\"getPanelMode(endPanelMode, partType)\"\n [partType]=\"partType\"\n [locale]=\"locale!\"\n [showTimePicker]=\"hasTimePicker\"\n [timeOptions]=\"getTimeOptions(partType)\"\n [panelMode]=\"getPanelMode(panelMode, partType)\"\n (panelChange)=\"onPanelModeChange($event, partType)\"\n [activeDate]=\"getActiveDate(partType)\"\n [value]=\"getValue(partType)\"\n [disabledDate]=\"disabledDate\"\n [dateRender]=\"dateRender\"\n [selectedValue]=\"$any(datePickerService?.value)\"\n [hoverValue]=\"$any(hoverValue)\"\n [format]=\"format\"\n (cellHover)=\"onCellHover($event)\"\n (selectDate)=\"changeValueFromSelect($event, !showTime)\"\n (selectTime)=\"onSelectTime($event, partType)\"\n (headerChange)=\"onActiveDateChange($event, partType)\"\n />\n </div>\n </ng-template>\n\n <ng-template #tplFooter>\n @if (hasFooter) {\n <calendar-footer\n [locale]=\"locale!\"\n [isRange]=\"isRange\"\n [showToday]=\"showToday\"\n [showNow]=\"showNow\"\n [hasTimePicker]=\"hasTimePicker\"\n [okDisabled]=\"!isAllowed($any(datePickerService?.value))\"\n [extraFooter]=\"extraFooter\"\n [rangeQuickSelector]=\"ranges ? tplRangeQuickSelector : null\"\n (clickOk)=\"onClickOk()\"\n (clickToday)=\"onClickToday($event)\"\n />\n }\n </ng-template>\n\n <!-- Range ONLY: Range Quick Selector -->\n <ng-template #tplRangeQuickSelector>\n @for (name of getObjectKeys(ranges); track name) {\n <li\n class=\"{{ prefixCls }}-preset\"\n (click)=\"onClickPresetRange(ranges![name])\"\n (mouseenter)=\"onHoverPresetRange(ranges![name])\"\n (mouseleave)=\"onPresetRangeMouseLeave()\"\n >\n <span class=\"ant-tag ant-tag-blue\">{{ name }}</span>\n </li>\n }\n </ng-template>\n `, isInline: true, dependencies: [{ kind: \"component\", type: InnerPopupComponent, selector: \"inner-popup\", inputs: [\"activeDate\", \"endPanelMode\", \"panelMode\", \"showWeek\", \"locale\", \"showTimePicker\", \"timeOptions\", \"disabledDate\", \"dateRender\", \"selectedValue\", \"hoverValue\", \"value\", \"partType\", \"format\"], outputs: [\"panelChange\", \"headerChange\", \"selectDate\", \"selectTime\", \"cellHover\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: CalendarFooterComponent, selector: \"calendar-footer\", inputs: [\"locale\", \"showToday\", \"showNow\", \"hasTimePicker\", \"isRange\", \"okDisabled\", \"disabledDate\", \"extraFooter\", \"rangeQuickSelector\"], outputs: [\"clickOk\", \"clickToday\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: DateRangePopupComponent, decorators: [{\n type: Component,\n args: [{\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'date-range-popup',\n template: `\n @if (isRange) {\n <div class=\"{{ prefixCls }}-range-wrapper {{ prefixCls }}-date-range-wrapper\">\n <div class=\"{{ prefixCls }}-range-arrow\" [style]=\"arrowPosition\"></div>\n <div class=\"{{ prefixCls }}-panel-container {{ showWeek ? prefixCls + '-week-number' : '' }}\">\n <div class=\"{{ prefixCls }}-panels\">\n @if (hasTimePicker) {\n <ng-container *ngTemplateOutlet=\"tplInnerPopup; context: { partType: datePickerService.activeInput }\" />\n } @else {\n <ng-container *ngTemplateOutlet=\"tplInnerPopup; context: { partType: 'left' }\" />\n <ng-container *ngTemplateOutlet=\"tplInnerPopup; context: { partType: 'right' }\" />\n }\n </div>\n <ng-container *ngTemplateOutlet=\"tplFooter\" />\n </div>\n </div>\n } @else {\n <div\n class=\"{{ prefixCls }}-panel-container {{ showWeek ? prefixCls + '-week-number' : '' }} {{\n hasTimePicker ? prefixCls + '-time' : ''\n }} {{ isRange ? prefixCls + '-range' : '' }}\"\n >\n <div class=\"{{ prefixCls }}-panel\" [class.ant-picker-panel-rtl]=\"dir === 'rtl'\" tabindex=\"-1\">\n <!-- Single ONLY -->\n <ng-container *ngTemplateOutlet=\"tplInnerPopup\" />\n <ng-container *ngTemplateOutlet=\"tplFooter\" />\n </div>\n </div>\n }\n\n <ng-template #tplInnerPopup let-partType=\"partType\">\n <div class=\"{{ prefixCls }}-panel\" [class.ant-picker-panel-rtl]=\"dir === 'rtl'\">\n <!-- TODO(@wenqi73) [selectedValue] [hoverValue] types-->\n <inner-popup\n [showWeek]=\"showWeek\"\n [endPanelMode]=\"getPanelMode(endPanelMode, partType)\"\n [partType]=\"partType\"\n [locale]=\"locale!\"\n [showTimePicker]=\"hasTimePicker\"\n [timeOptions]=\"getTimeOptions(partType)\"\n [panelMode]=\"getPanelMode(panelMode, partType)\"\n (panelChange)=\"onPanelModeChange($event, partType)\"\n [activeDate]=\"getActiveDate(partType)\"\n [value]=\"getValue(partType)\"\n [disabledDate]=\"disabledDate\"\n [dateRender]=\"dateRender\"\n [selectedValue]=\"$any(datePickerService?.value)\"\n [hoverValue]=\"$any(hoverValue)\"\n [format]=\"format\"\n (cellHover)=\"onCellHover($event)\"\n (selectDate)=\"changeValueFromSelect($event, !showTime)\"\n (selectTime)=\"onSelectTime($event, partType)\"\n (headerChange)=\"onActiveDateChange($event, partType)\"\n />\n </div>\n </ng-template>\n\n <ng-template #tplFooter>\n @if (hasFooter) {\n <calendar-footer\n [locale]=\"locale!\"\n [isRange]=\"isRange\"\n [showToday]=\"showToday\"\n [showNow]=\"showNow\"\n [hasTimePicker]=\"hasTimePicker\"\n [okDisabled]=\"!isAllowed($any(datePickerService?.value))\"\n [extraFooter]=\"extraFooter\"\n [rangeQuickSelector]=\"ranges ? tplRangeQuickSelector : null\"\n (clickOk)=\"onClickOk()\"\n (clickToday)=\"onClickToday($event)\"\n />\n }\n </ng-template>\n\n <!-- Range ONLY: Range Quick Selector -->\n <ng-template #tplRangeQuickSelector>\n @for (name of getObjectKeys(ranges); track name) {\n <li\n class=\"{{ prefixCls }}-preset\"\n (click)=\"onClickPresetRange(ranges![name])\"\n (mouseenter)=\"onHoverPresetRange(ranges![name])\"\n (mouseleave)=\"onPresetRangeMouseLeave()\"\n >\n <span class=\"ant-tag ant-tag-blue\">{{ name }}</span>\n </li>\n }\n </ng-template>\n `,\n imports: [InnerPopupComponent, NgTemplateOutlet, CalendarFooterComponent]\n }]\n }], propDecorators: { isRange: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], inline: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], showWeek: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], locale: [{\n type: Input\n }], disabledDate: [{\n type: Input\n }], disabledTime: [{\n type: Input\n }], showToday: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], showNow: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], showTime: [{\n type: Input\n }], extraFooter: [{\n type: Input\n }], ranges: [{\n type: Input\n }], dateRender: [{\n type: Input\n }], panelMode: [{\n type: Input\n }], defaultPickerValue: [{\n type: Input\n }], dir: [{\n type: Input\n }], format: [{\n type: Input\n }], panelModeChange: [{\n type: Output\n }], calendarChange: [{\n type: Output\n }], resultOk: [{\n type: Output\n }] } });\n\nconst POPUP_STYLE_PATCH = { position: 'relative' }; // Aim to override antd's style to support overlay's position strategy (position:absolute will cause it not working because the overlay can't get the height/width of it's content)\nconst NZ_CONFIG_MODULE_NAME = 'datePicker';\n/**\n * The base picker for all common APIs\n */\nlet NzDatePickerComponent = (() => {\n let _nzVariant_decorators;\n let _nzVariant_initializers = [];\n let _nzVariant_extraInitializers = [];\n let _nzSeparator_decorators;\n let _nzSeparator_initializers = [];\n let _nzSeparator_extraInitializers = [];\n let _nzSuffixIcon_decorators;\n let _nzSuffixIcon_initializers = [];\n let _nzSuffixIcon_extraInitializers = [];\n let _nzBackdrop_decorators;\n let _nzBackdrop_initializers = [];\n let _nzBackdrop_extraInitializers = [];\n return class NzDatePickerComponent {\n static {\n const _metadata = typeof Symbol === \"function\" && Symbol.metadata ? Object.create(null) : void 0;\n _nzVariant_decorators = [WithConfig()];\n _nzSeparator_decorators = [WithConfig()];\n _nzSuffixIcon_decorators = [WithConfig()];\n _nzBackdrop_decorators = [WithConfig()];\n __esDecorate(null, null, _nzVariant_decorators, { kind: \"field\", name: \"nzVariant\", static: false, private: false, access: { has: obj => \"nzVariant\" in obj, get: obj => obj.nzVariant, set: (obj, value) => { obj.nzVariant = value; } }, metadata: _metadata }, _nzVariant_initializers, _nzVariant_extraInitializers);\n __esDecorate(null, null, _nzSeparator_decorators, { kind: \"field\", name: \"nzSeparator\", static: false, private: false, access: { has: obj => \"nzSeparator\" in obj, get: obj => obj.nzSeparator, set: (obj, value) => { obj.nzSeparator = value; } }, metadata: _metadata }, _nzSeparator_initializers, _nzSeparator_extraInitializers);\n __esDecorate(null, null, _nzSuffixIcon_decorators, { kind: \"field\", name: \"nzSuffixIcon\", static: false, private: false, access: { has: obj => \"nzSuffixIcon\" in obj, get: obj => obj.nzSuffixIcon, set: (obj, value) => { obj.nzSuffixIcon = value; } }, metadata: _metadata }, _nzSuffixIcon_initializers, _nzSuffixIcon_extraInitializers);\n __esDecorate(null, null, _nzBackdrop_decorators, { kind: \"field\", name: \"nzBackdrop\", static: false, private: false, access: { has: obj => \"nzBackdrop\" in obj, get: obj => obj.nzBackdrop, set: (obj, value) => { obj.nzBackdrop = value; } }, metadata: _metadata }, _nzBackdrop_initializers, _nzBackdrop_extraInitializers);\n if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });\n }\n nzConfigService = inject(NzConfigService);\n datePickerService = inject(DatePickerService);\n i18n = inject(NzI18nService);\n cdr = inject(ChangeDetectorRef);\n renderer = inject(Renderer2);\n elementRef = inject((ElementRef));\n dateHelper = inject(DateHelperService);\n nzResizeObserver = inject(NzResizeObserver);\n platform = inject(Platform);\n directionality = inject(Directionality);\n destroyRef = inject(DestroyRef);\n _nzModuleName = NZ_CONFIG_MODULE_NAME;\n static ngAcceptInputType_nzShowTime;\n static ngAcceptInputType_nzMode;\n isRange = false; // Indicate whether the value is a range value\n extraFooter;\n dir = 'ltr';\n // status\n statusCls = {};\n status = '';\n hasFeedback = false;\n panelMode = 'date';\n isCustomPlaceHolder = false;\n isCustomFormat = false;\n showTime = false;\n isNzDisableFirstChange = true;\n // --- Common API\n nzAllowClear = true;\n nzAutoFocus = false;\n nzDisabled = false;\n /**\n * @deprecated Will be removed in v21. It is recommended to use `nzVariant` instead.\n */\n nzBorderless = false;\n nzInputReadOnly = false;\n nzInline = false;\n nzOpen;\n nzDisabledDate;\n nzLocale;\n nzPlaceHolder = '';\n nzPopupStyle = POPUP_STYLE_PATCH;\n nzDropdownClassName;\n nzSize = 'default';\n nzStatus = '';\n nzFormat;\n nzVariant = __runInitializers(this, _nzVariant_initializers, 'outlined');\n nzDateRender = __runInitializers(this, _nzVariant_extraInitializers);\n nzDisabledTime;\n nzRenderExtraFooter;\n nzShowToday = true;\n nzMode = 'date';\n nzShowNow = true;\n nzRanges;\n nzDefaultPickerValue = null;\n nzSeparator = __runInitializers(this, _nzSeparator_initializers, undefined);\n nzSuffixIcon = (__runInitializers(this, _nzSeparator_extraInitializers), __runInitializers(this, _nzSuffixIcon_initializers, 'calendar'));\n nzBackdrop = (__runInitializers(this, _nzSuffixIcon_extraInitializers), __runInitializers(this, _nzBackdrop_initializers, false));\n nzId = (__runInitializers(this, _nzBackdrop_extraInitializers), null);\n nzPlacement = 'bottomLeft';\n nzShowWeekNumber = false;\n nzOnPanelChange = new EventEmitter();\n nzOnCalendarChange = new EventEmitter();\n nzOnOk = new EventEmitter();\n nzOnOpenChange = new EventEmitter();\n get nzShowTime() {\n return this.showTime;\n }\n set nzShowTime(value) {\n this.showTime = typeof value === 'object' ? value : toBoolean(value);\n }\n // ------------------------------------------------------------------------\n // Input API Start\n // ------------------------------------------------------------------------\n cdkConnectedOverlay;\n panel;\n separatorElement;\n pickerInput;\n rangePickerInputs;\n get origin() {\n return this.elementRef;\n }\n inputSize = 12;\n inputWidth;\n prefixCls = PREFIX_CLASS;\n inputValue;\n activeBarStyle = {};\n overlayOpen = false; // Available when \"nzOpen\" = undefined\n overlayPositions = [...DEFAULT_DATE_PICKER_POSITIONS];\n currentPositionX = 'start';\n currentPositionY = 'bottom';\n get realOpenState() {\n // The value that really decide the open state of overlay\n return this.isOpenHandledByUser() ? !!this.nzOpen : this.overlayOpen;\n }\n finalSize = computed(() => {\n if (this.compactSize) {\n return this.compactSize();\n }\n return this.size();\n }, ...(ngDevMode ? [{ debugName: \"finalSize\" }] : []));\n size = signal(this.nzSize, ...(ngDevMode ? [{ debugName: \"size\" }] : []));\n compactSize = inject(NZ_SPACE_COMPACT_SIZE, { optional: true });\n document = inject(DOCUMENT);\n ngAfterViewInit() {\n if (this.nzAutoFocus) {\n this.focus();\n }\n if (this.isRange && this.platform.isBrowser) {\n this.nzResizeObserver\n .observe(this.elementRef)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.updateInputWidthAndArrowLeft();\n });\n }\n this.datePickerService.inputPartChange$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(partType => {\n if (partType) {\n this.datePickerService.activeInput = partType;\n }\n this.focus();\n this.updateInputWidthAndArrowLeft();\n });\n if (this.platform.isBrowser) {\n // prevent mousedown event to trigger focusout event when click in date picker\n // see: https://github.com/NG-ZORRO/ng-zorro-antd/issues/7450\n fromEventOutsideAngular(this.elementRef.nativeElement, 'mousedown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(event => {\n if (event.target.tagName.toLowerCase() !== 'input') {\n event.preventDefault();\n }\n });\n }\n }\n updateInputWidthAndArrowLeft() {\n this.inputWidth = this.rangePickerInputs?.first?.nativeElement.offsetWidth || 0;\n const baseStyle = { position: 'absolute', width: `${this.inputWidth}px` };\n this.datePickerService.arrowLeft =\n this.datePickerService.activeInput === 'left'\n ? 0\n : this.inputWidth + this.separatorElement?.nativeElement.offsetWidth || 0;\n if (this.dir === 'rtl') {\n this.activeBarStyle = { ...baseStyle, right: `${this.datePickerService.arrowLeft}px` };\n }\n else {\n this.activeBarStyle = { ...baseStyle, left: `${this.datePickerService.arrowLeft}px` };\n }\n this.cdr.markForCheck();\n }\n getInput(partType) {\n if (this.nzInline) {\n return undefined;\n }\n return this.isRange\n ? partType === 'left'\n ? this.rangePickerInputs?.first.nativeElement\n : this.rangePickerInputs?.last.nativeElement\n : this.pickerInput.nativeElement;\n }\n focus() {\n const activeInputElement = this.getInput(this.datePickerService.activeInput);\n if (this.document.activeElement !== activeInputElement) {\n activeInputElement?.focus();\n }\n }\n onFocus(event, partType) {\n event.preventDefault();\n if (partType) {\n this.datePickerService.inputPartChange$.next(partType);\n }\n this.renderClass(true);\n }\n // blur event has not the relatedTarget in IE11, use focusout instead.\n onFocusout(event) {\n event.preventDefault();\n this.onTouchedFn();\n if (!this.elementRef.nativeElement.contains(event.relatedTarget)) {\n this.checkAndClose();\n }\n this.renderClass(false);\n }\n // Show overlay content\n open() {\n if (this.nzInline) {\n return;\n }\n if (!this.realOpenState && !this.nzDisabled) {\n this.updateInputWidthAndArrowLeft();\n this.overlayOpen = true;\n this.nzOnOpenChange.emit(true);\n this.focus();\n this.cdr.markForCheck();\n }\n }\n close() {\n if (this.nzInline) {\n return;\n }\n if (this.realOpenState) {\n this.overlayOpen = false;\n this.nzOnOpenChange.emit(false);\n }\n }\n get showClear() {\n return !this.nzDisabled && !this.isEmptyValue(this.datePickerService.value) && this.nzAllowClear;\n }\n checkAndClose() {\n if (!this.realOpenState) {\n return;\n }\n if (this.panel.isAllowed(this.datePickerService.value, true)) {\n if (Array.isArray(this.datePickerService.value) && wrongSortOrder(this.datePickerService.value)) {\n const index = this.datePickerService.getActiveIndex();\n const value = this.datePickerService.value[index];\n this.panel.changeValueFromSelect(value, true);\n return;\n }\n this.updateInputValue();\n this.datePickerService.emitValue$.next();\n }\n else {\n this.datePickerService.setValue(this.datePickerService.initialValue);\n this.close();\n }\n }\n onClickInputBox(event) {\n event.stopPropagation();\n this.focus();\n if (!this.isOpenHandledByUser()) {\n this.open();\n }\n }\n onOverlayKeydown(event) {\n if (event.keyCode === ESCAPE) {\n this.datePickerService.initValue();\n }\n }\n // NOTE: A issue here, the first time position change, the animation will not be triggered.\n // Because the overlay's \"positionChange\" event is emitted after the content's full shown up.\n // All other components like \"nz-dropdown\" which depends on overlay also has the same issue.\n // See: https://github.com/NG-ZORRO/ng-zorro-antd/issues/1429\n onPositionChange(position) {\n this.currentPositionX = position.connectionPair.originX;\n this.currentPositionY = position.connectionPair.originY;\n this.cdr.detectChanges(); // Take side effects to position styles\n }\n onClickClear(event) {\n event.preventDefault();\n event.stopPropagation();\n this.datePickerService.initValue(true);\n this.datePickerService.emitValue$.next();\n }\n updateInputValue() {\n const newValue = this.datePickerService.value;\n if (this.isRange) {\n this.inputValue = newValue ? newValue.map(v => this.formatValue(v)) : ['', ''];\n }\n else {\n this.inputValue = this.formatValue(newValue);\n }\n this.cdr.markForCheck();\n }\n formatValue(value) {\n return this.dateHelper.format(value && value.nativeDate, this.nzFormat);\n }\n onInputChange(value, isEnter = false) {\n /**\n * in IE11 focus/blur will trigger ngModelChange if placeholder changes,\n * so we forbid IE11 to open panel through input change\n */\n if (!this.platform.TRIDENT &&\n this.document.activeElement === this.getInput(this.datePickerService.activeInput) &&\n !this.realOpenState) {\n this.open();\n return;\n }\n const date = this.checkValidDate(value);\n // Can only change date when it's open\n if (date && this.realOpenState) {\n this.panel.changeValueFromSelect(date, isEnter);\n }\n }\n onKeyupEnter(event) {\n this.onInputChange(event.target.value, true);\n }\n checkValidDate(value) {\n const date = new CandyDate(this.dateHelper.parseDate(value, this.nzFormat));\n if (!date.isValid() || value !== this.dateHelper.format(date.nativeDate, this.nzFormat)) {\n return null;\n }\n return date;\n }\n getPlaceholder(partType) {\n return this.isRange\n ? this.nzPlaceHolder[this.datePickerService.getActiveIndex(partType)]\n : this.nzPlaceHolder;\n }\n isEmptyValue(value) {\n if (value === null) {\n return true;\n }\n else if (this.isRange) {\n return !value || !Array.isArray(value) || value.every(val => !val);\n }\n else {\n return !value;\n }\n }\n // Whether open state is permanently controlled by user himself\n isOpenHandledByUser() {\n return this.nzOpen !== undefined;\n }\n noAnimation = inject(NzNoAnimationDirective, { host: true, optional: true });\n nzFormStatusService = inject(NzFormStatusService, { optional: true });\n nzFormNoStatusService = inject(NzFormNoStatusService, { optional: true });\n // ------------------------------------------------------------------------\n // Input API End\n // ------------------------------------------------------------------------\n ngOnInit() {\n this.nzFormStatusService?.formStatusChanges\n .pipe(distinctUntilChanged((pre, cur) => {\n return pre.status === cur.status && pre.hasFeedback === cur.hasFeedback;\n }), withLatestFrom(this.nzFormNoStatusService ? this.nzFormNoStatusService.noFormStatus : of(false)), map(([{ status, hasFeedback }, noStatus]) => ({ status: noStatus ? '' : status, hasFeedback })), takeUntilDestroyed(this.destroyRef))\n .subscribe(({ status, hasFeedback }) => {\n this.setStatusStyles(status, hasFeedback);\n });\n // Subscribe the every locale change if the nzLocale is not handled by user\n if (!this.nzLocale) {\n this.i18n.localeChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.setLocale());\n }\n // Default value\n this.datePickerService.isRange = this.isRange;\n this.datePickerService.initValue(true);\n this.datePickerService.emitValue$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n const granularityComparison = this.showTime ? 'second' : 'day';\n const value = this.datePickerService.value;\n const datePickerPreviousValue = this.datePickerService.initialValue;\n // Check if the value has change for a simple datepicker, let us avoid notify the control for nothing\n if (!this.isRange &&\n value?.isSame(datePickerPreviousValue?.nativeDate, granularityComparison)) {\n this.onTouchedFn();\n return this.close();\n }\n // check if the value has change for a range picker, let us avoid notify the control for nothing\n if (this.isRange) {\n const [previousStartDate, previousEndDate] = datePickerPreviousValue;\n const [currentStartDate, currentEndDate] = value;\n if (previousStartDate?.isSame(currentStartDate?.nativeDate, granularityComparison) &&\n previousEndDate?.isSame(currentEndDate?.nativeDate, granularityComparison)) {\n this.onTouchedFn();\n return this.close();\n }\n }\n this.datePickerService.initialValue = cloneDate(value);\n if (this.isRange) {\n const vAsRange = value;\n if (vAsRange.length) {\n this.onChangeFn([vAsRange[0]?.nativeDate ?? null, vAsRange[1]?.nativeDate ?? null]);\n }\n else {\n this.onChangeFn([]);\n }\n }\n else {\n if (value) {\n this.onChangeFn(value.nativeDate);\n }\n else {\n this.onChangeFn(null);\n }\n }\n this.onTouchedFn();\n // When value emitted, overlay will be closed\n this.close();\n });\n this.directionality.change?.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(direction => {\n this.dir = direction;\n this.cdr.detectChanges();\n });\n this.dir = this.directionality.value;\n this.inputValue = this.isRange ? ['', ''] : '';\n this.setModeAndFormat();\n this.datePickerService.valueChange$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.updateInputValue();\n });\n }\n ngOnChanges({ nzStatus, nzPlacement, nzPopupStyle, nzPlaceHolder, nzLocale, nzFormat, nzRenderExtraFooter, nzMode, nzSize }) {\n if (nzPopupStyle) {\n // Always assign the popup style patch\n this.nzPopupStyle = this.nzPopupStyle ? { ...this.nzPopupStyle, ...POPUP_STYLE_PATCH } : POPUP_STYLE_PATCH;\n }\n // Mark as customized placeholder by user once nzPlaceHolder assigned at the first time\n if (nzPlaceHolder?.currentValue) {\n this.isCustomPlaceHolder = true;\n }\n if (nzFormat?.currentValue) {\n this.isCustomFormat = true;\n this.updateInputValue();\n }\n if (nzLocale) {\n // The nzLocale is currently handled by user\n this.setDefaultPlaceHolder();\n }\n if (nzRenderExtraFooter) {\n this.extraFooter = valueFunctionProp(this.nzRenderExtraFooter);\n }\n if (nzMode) {\n this.setDefaultPlaceHolder();\n this.setModeAndFormat();\n }\n if (nzStatus) {\n this.setStatusStyles(this.nzStatus, this.hasFeedback);\n }\n if (nzPlacement) {\n this.setPlacement(this.nzPlacement);\n }\n if (nzSize) {\n this.size.set(nzSize.currentValue);\n }\n }\n setModeAndFormat() {\n const inputFormats = {\n year: 'yyyy',\n quarter: 'yyyy-[Q]Q',\n month: 'yyyy-MM',\n week: 'YYYY-ww',\n date: this.nzShowTime ? 'yyyy-MM-dd HH:mm:ss' : 'yyyy-MM-dd'\n };\n if (!this.nzMode) {\n this.nzMode = 'date';\n }\n this.panelMode = this.isRange ? [this.nzMode, this.nzMode] : this.nzMode;\n // Default format when it's empty\n if (!this.isCustomFormat) {\n this.nzFormat = inputFormats[this.nzMode];\n }\n this.inputSize = Math.max(10, this.nzFormat.length) + 2;\n this.updateInputValue();\n }\n /**\n * Triggered when overlayOpen changes (different with realOpenState)\n *\n * @param open The overlayOpen in picker component\n */\n onOpenChange(open) {\n this.nzOnOpenChange.emit(open);\n }\n // ------------------------------------------------------------------------\n // | Control value accessor implements\n // ------------------------------------------------------------------------\n // NOTE: onChangeFn/onTouchedFn will not be assigned if user not use as ngModel\n onChangeFn = () => void 0;\n onTouchedFn = () => void 0;\n writeValue(value) {\n this.setValue(value);\n this.cdr.markForCheck();\n }\n registerOnChange(fn) {\n this.onChangeFn = fn;\n }\n registerOnTouched(fn) {\n this.onTouchedFn = fn;\n }\n setDisabledState(isDisabled) {\n this.nzDisabled = (this.isNzDisableFirstChange && this.nzDisabled) || isDisabled;\n this.cdr.markForCheck();\n this.isNzDisableFirstChange = false;\n }\n // ------------------------------------------------------------------------\n // | Internal methods\n // ------------------------------------------------------------------------\n // Reload locale from i18n with side effects\n setLocale() {\n this.nzLocale = this.i18n.getLocaleData('DatePicker', {});\n this.setDefaultPlaceHolder();\n this.cdr.markForCheck();\n }\n setDefaultPlaceHolder() {\n if (!this.isCustomPlaceHolder && this.nzLocale) {\n const defaultPlaceholder = {\n year: this.getPropertyOfLocale('yearPlaceholder'),\n quarter: this.getPropertyOfLocale('quarterPlaceholder'),\n month: this.getPropertyOfLocale('monthPlaceholder'),\n week: this.getPropertyOfLocale('weekPlaceholder'),\n date: this.getPropertyOfLocale('placeholder')\n };\n const defaultRangePlaceholder = {\n year: this.getPropertyOfLocale('rangeYearPlaceholder'),\n quarter: this.getPropertyOfLocale('rangeQuarterPlaceholder'),\n month: this.getPropertyOfLocale('rangeMonthPlaceholder'),\n week: this.getPropertyOfLocale('rangeWeekPlaceholder'),\n date: this.getPropertyOfLocale('rangePlaceholder')\n };\n this.nzPlaceHolder = this.isRange\n ? defaultRangePlaceholder[this.nzMode]\n : defaultPlaceholder[this.nzMode];\n }\n }\n getPropertyOfLocale(type) {\n return this.nzLocale.lang[type] || this.i18n.getLocaleData(`DatePicker.lang.${type}`);\n }\n // Safe way of setting value with default\n setValue(value) {\n const newValue = this.datePickerService.makeValue(value);\n this.datePickerService.setValue(newValue);\n this.datePickerService.initialValue = cloneDate(newValue);\n this.cdr.detectChanges();\n }\n renderClass(value) {\n // TODO: avoid autoFocus cause change after checked error\n if (value) {\n this.renderer.addClass(this.elementRef.nativeElement, 'ant-picker-focused');\n }\n else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'ant-picker-focused');\n }\n }\n onPanelModeChange(panelChange) {\n this.nzOnPanelChange.emit(panelChange);\n }\n // Emit nzOnCalendarChange when select date by nz-range-picker\n onCalendarChange(value) {\n if (this.isRange && Array.isArray(value)) {\n const rangeValue = value.filter(x => x instanceof CandyDate).map(x => x.nativeDate);\n this.nzOnCalendarChange.emit(rangeValue);\n }\n }\n onResultOk() {\n if (this.isRange) {\n const value = this.datePickerService.value;\n if (value.length) {\n this.nzOnOk.emit([value[0]?.nativeDate || null, value[1]?.nativeDate || null]);\n }\n else {\n this.nzOnOk.emit([]);\n }\n }\n else {\n if (this.datePickerService.value) {\n this.nzOnOk.emit(this.datePickerService.value.nativeDate);\n }\n else {\n this.nzOnOk.emit(null);\n }\n }\n }\n // status\n setStatusStyles(status, hasFeedback) {\n // set inner status\n this.status = status;\n this.hasFeedback = hasFeedback;\n this.cdr.markForCheck();\n // render status if nzStatus is set\n this.statusCls = getStatusClassNames(this.prefixCls, status, hasFeedback);\n Object.keys(this.statusCls).forEach(status => {\n if (this.statusCls[status]) {\n this.renderer.addClass(this.elementRef.nativeElement, status);\n }\n else {\n this.renderer.removeClass(this.elementRef.nativeElement, status);\n }\n });\n }\n setPlacement(placement) {\n const position = DATE_PICKER_POSITION_MAP[placement];\n this.overlayPositions = [position, ...DEFAULT_DATE_PICKER_POSITIONS];\n this.currentPositionX = position.originX;\n this.currentPositionY = position.originY;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzDatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.0\", type: NzDatePickerComponent, isStandalone: true, selector: \"nz-date-picker,nz-week-picker,nz-month-picker,nz-quarter-picker,nz-year-picker,nz-range-picker\", inputs: { nzAllowClear: [\"nzAllowClear\", \"nzAllowClear\", booleanAttribute], nzAutoFocus: [\"nzAutoFocus\", \"nzAutoFocus\", booleanAttribute], nzDisabled: [\"nzDisabled\", \"nzDisabled\", booleanAttribute], nzBorderless: [\"nzBorderless\", \"nzBorderless\", booleanAttribute], nzInputReadOnly: [\"nzInputReadOnly\", \"nzInputReadOnly\", booleanAttribute], nzInline: [\"nzInline\", \"nzInline\", booleanAttribute], nzOpen: [\"nzOpen\", \"nzOpen\", booleanAttribute], nzDisabledDate: \"nzDisabledDate\", nzLocale: \"nzLocale\", nzPlaceHolder: \"nzPlaceHolder\", nzPopupStyle: \"nzPopupStyle\", nzDropdownClassName: \"nzDropdownClassName\", nzSize: \"nzSize\", nzStatus: \"nzStatus\", nzFormat: \"nzFormat\", nzVariant: \"nzVariant\", nzDateRender: \"nzDateRender\", nzDisabledTime: \"nzDisabledTime\", nzRenderExtraFooter: \"nzRenderExtraFooter\", nzShowToday: [\"nzShowToday\", \"nzShowToday\", booleanAttribute], nzMode: \"nzMode\", nzShowNow: [\"nzShowNow\", \"nzShowNow\", booleanAttribute], nzRanges: \"nzRanges\", nzDefaultPickerValue: \"nzDefaultPickerValue\", nzSeparator: \"nzSeparator\", nzSuffixIcon: \"nzSuffixIcon\", nzBackdrop: \"nzBackdrop\", nzId: \"nzId\", nzPlacement: \"nzPlacement\", nzShowWeekNumber: [\"nzShowWeekNumber\", \"nzShowWeekNumber\", booleanAttribute], nzShowTime: \"nzShowTime\" }, outputs: { nzOnPanelChange: \"nzOnPanelChange\", nzOnCalendarChange: \"nzOnCalendarChange\", nzOnOk: \"nzOnOk\", nzOnOpenChange: \"nzOnOpenChange\" }, host: { listeners: { \"click\": \"onClickInputBox($event)\" }, properties: { \"class.ant-picker\": \"true\", \"class.ant-picker-range\": \"isRange\", \"class.ant-picker-large\": \"finalSize() === 'large'\", \"class.ant-picker-small\": \"finalSize() === 'small'\", \"class.ant-picker-disabled\": \"nzDisabled\", \"class.ant-picker-rtl\": \"dir === 'rtl'\", \"class.ant-picker-borderless\": \"nzVariant === 'borderless' || (nzVariant === 'outlined' && nzBorderless)\", \"class.ant-picker-filled\": \"nzVariant === 'filled'\", \"class.ant-picker-underlined\": \"nzVariant === 'underlined'\", \"class.ant-picker-inline\": \"nzInline\" } }, providers: [\n DatePickerService,\n { provide: NZ_SPACE_COMPACT_ITEM_TYPE, useValue: 'picker' },\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => NzDatePickerComponent)\n }\n ], viewQueries: [{ propertyName: \"cdkConnectedOverlay\", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: \"panel\", first: true, predicate: DateRangePopupComponent, descendants: true }, { propertyName: \"separatorElement\", first: true, predicate: [\"separatorElement\"], descendants: true }, { propertyName: \"pickerInput\", first: true, predicate: [\"pickerInput\"], descendants: true }, { propertyName: \"rangePickerInputs\", predicate: [\"rangePickerInput\"], descendants: true }], exportAs: [\"nzDatePicker\"], usesOnChanges: true, hostDirectives: [{ directive: i1$1.NzSpaceCompactItemDirective }], ngImport: i0, template: `\n @if (!nzInline) {\n @if (!isRange) {\n <div class=\"{{ prefixCls }}-input\">\n <input\n #pickerInput\n [attr.id]=\"nzId\"\n [class.ant-input-disabled]=\"nzDisabled\"\n [disabled]=\"nzDisabled\"\n [readOnly]=\"nzInputReadOnly\"\n [(ngModel)]=\"inputValue\"\n placeholder=\"{{ getPlaceholder() }}\"\n [size]=\"inputSize\"\n autocomplete=\"off\"\n (focus)=\"onFocus($event)\"\n (focusout)=\"onFocusout($event)\"\n (ngModelChange)=\"onInputChange($event)\"\n (keyup.enter)=\"onKeyupEnter($event)\"\n />\n <ng-container *ngTemplateOutlet=\"tplRightRest\" />\n </div>\n } @else {\n <div class=\"{{ prefixCls }}-input\">\n <ng-container *ngTemplateOutlet=\"tplRangeInput; context: { partType: 'left' }\" />\n </div>\n <div #separatorElement class=\"{{ prefixCls }}-range-separator\">\n <span class=\"{{ prefixCls }}-separator\">\n <ng-container *nzStringTemplateOutlet=\"nzSeparator; let separator\">\n @if (nzSeparator) {\n {{ nzSeparator }}\n } @else {\n <nz-icon nzType=\"swap-right\" nzTheme=\"outline\" />\n }\n </ng-container>\n </span>\n </div>\n <div class=\"{{ prefixCls }}-input\">\n <ng-container *ngTemplateOutlet=\"tplRangeInput; context: { partType: 'right' }\" />\n </div>\n <ng-container *ngTemplateOutlet=\"tplRightRest\" />\n }\n } @else {\n <ng-template [ngTemplateOutlet]=\"inlineMode\" />\n }\n <!-- Input for Range ONLY -->\n <ng-template #tplRangeInput let-partType=\"partType\">\n <input\n #rangePickerInput\n [attr.id]=\"nzId\"\n [disabled]=\"nzDisabled\"\n [readOnly]=\"nzInputReadOnly\"\n [size]=\"inputSize\"\n autocomplete=\"off\"\n (click)=\"onClickInputBox($event)\"\n (focusout)=\"onFocusout($event)\"\n (focus)=\"onFocus($event, partType)\"\n (keyup.enter)=\"onKeyupEnter($event)\"\n [(ngModel)]=\"inputValue[datePickerService.getActiveIndex(partType)]\"\n (ngModelChange)=\"onInputChange($event)\"\n placeholder=\"{{ getPlaceholder(partType) }}\"\n />\n </ng-template>\n\n <!-- Right operator icons -->\n <ng-template #tplRightRest>\n <div class=\"{{ prefixCls }}-active-bar\" [style]=\"activeBarStyle\"></div>\n @if (showClear) {\n <span class=\"{{ prefixCls }}-clear\" (click)=\"onClickClear($event)\">\n <nz-icon nzType=\"close-circle\" nzTheme=\"fill\" />\n </span>\n }\n\n <span class=\"{{ prefixCls }}-suffix\">\n <ng-container *nzStringTemplateOutlet=\"nzSuffixIcon; let suffixIcon\">\n <nz-icon [nzType]=\"suffixIcon\" />\n </ng-container>\n @if (hasFeedback && !!status) {\n <nz-form-item-feedback-icon [status]=\"status\" />\n }\n </span>\n </ng-template>\n\n <ng-template #inlineMode>\n <div\n class=\"{{ prefixCls }}-dropdown {{ nzDropdownClassName }}\"\n [class.ant-picker-dropdown-rtl]=\"dir === 'rtl'\"\n [class.ant-picker-dropdown-placement-bottomLeft]=\"currentPositionY === 'bottom' && currentPositionX === 'start'\"\n [class.ant-picker-dropdown-placement-topLeft]=\"currentPositionY === 'top' && currentPositionX === 'start'\"\n [class.ant-picker-dropdown-placement-bottomRight]=\"currentPositionY === 'bottom' && currentPositionX === 'end'\"\n [class.ant-picker-dropdown-placement-topRight]=\"currentPositionY === 'top' && currentPositionX === 'end'\"\n [class.ant-picker-dropdown-range]=\"isRange\"\n [class.ant-picker-active-left]=\"datePickerService.activeInput === 'left'\"\n [class.ant-picker-active-right]=\"datePickerService.activeInput === 'right'\"\n [style]=\"nzPopupStyle\"\n >\n <date-range-popup\n [isRange]=\"isRange\"\n [inline]=\"nzInline\"\n [defaultPickerValue]=\"nzDefaultPickerValue\"\n [showWeek]=\"nzShowWeekNumber || nzMode === 'week'\"\n [panelMode]=\"panelMode\"\n (panelModeChange)=\"onPanelModeChange($event)\"\n (calendarChange)=\"onCalendarChange($event)\"\n [locale]=\"nzLocale?.lang!\"\n [showToday]=\"nzMode === 'date' && nzShowToday && !isRange && !nzShowTime\"\n [showNow]=\"nzMode === 'date' && nzShowNow && !isRange && !!nzShowTime\"\n [showTime]=\"nzShowTime\"\n [dateRender]=\"nzDateRender\"\n [disabledDate]=\"nzDisabledDate\"\n [disabledTime]=\"nzDisabledTime\"\n [extraFooter]=\"extraFooter\"\n [ranges]=\"nzRanges\"\n [dir]=\"dir\"\n [format]=\"nzFormat\"\n (resultOk)=\"onResultOk()\"\n />\n </div>\n </ng-template>\n\n <!-- Overlay -->\n <ng-template\n cdkConnectedOverlay\n nzConnectedOverlay\n [cdkConnectedOverlayHasBackdrop]=\"nzBackdrop\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"realOpenState\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayTransformOriginOn]=\"'.ant-picker-wrapper'\"\n (positionChange)=\"onPositionChange($event)\"\n (detach)=\"close()\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n >\n <div\n class=\"ant-picker-wrapper\"\n [nzNoAnimation]=\"!!noAnimation?.nzNoAnimation\"\n [@slideMotion]=\"'enter'\"\n [style.position]=\"'relative'\"\n >\n <ng-container *ngTemplateOutlet=\"inlineMode\"></ng-container>\n </div>\n </ng-template>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2$1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i2$1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2$1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: NzOutletModule }, { kind: \"directive\", type: i3$1.NzStringTemplateOutletDirective, selector: \"[nzStringTemplateOutlet]\", inputs: [\"nzStringTemplateOutletContext\", \"nzStringTemplateOutlet\"], exportAs: [\"nzStringTemplateOutlet\"] }, { kind: \"ngmodule\", type: NzIconModule }, { kind: \"directive\", type: i4.NzIconDirective, selector: \"nz-icon,[nz-icon]\", inputs: [\"nzSpin\", \"nzRotate\", \"nzType\", \"nzTheme\", \"nzTwotoneColor\", \"nzIconfont\"], exportAs: [\"nzIcon\"] }, { kind: \"component\", type: NzFormItemFeedbackIconComponent, selector: \"nz-form-item-feedback-icon\", inputs: [\"status\"], exportAs: [\"nzFormFeedbackIcon\"] }, { kind: \"component\", type: DateRangePopupComponent, selector: \"date-range-popup\", inputs: [\"isRange\", \"inline\", \"showWeek\", \"locale\", \"disabledDate\", \"disabledTime\", \"showToday\", \"showNow\", \"showTime\", \"extraFooter\", \"ranges\", \"dateRender\", \"panelMode\", \"defaultPickerValue\", \"dir\", \"format\"], outputs: [\"panelModeChange\", \"calendarChange\", \"resultOk\"] }, { kind: \"directive\", type: CdkConnectedOverlay, selector: \"[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]\", inputs: [\"cdkConnectedOverlayOrigin\", \"cdkConnectedOverlayPositions\", \"cdkConnectedOverlayPositionStrategy\", \"cdkConnectedOverlayOffsetX\", \"cdkConnectedOverlayOffsetY\", \"cdkConnectedOverlayWidth\", \"cdkConnectedOverlayHeight\", \"cdkConnectedOverlayMinWidth\", \"cdkConnectedOverlayMinHeight\", \"cdkConnectedOverlayBackdropClass\", \"cdkConnectedOverlayPanelClass\", \"cdkConnectedOverlayViewportMargin\", \"cdkConnectedOverlayScrollStrategy\", \"cdkConnectedOverlayOpen\", \"cdkConnectedOverlayDisableClose\", \"cdkConnectedOverlayTransformOriginOn\", \"cdkConnectedOverlayHasBackdrop\", \"cdkConnectedOverlayLockPosition\", \"cdkConnectedOverlayFlexibleDimensions\", \"cdkConnectedOverlayGrowAfterOpen\", \"cdkConnectedOverlayPush\", \"cdkConnectedOverlayDisposeOnNavigation\"], outputs: [\"backdropClick\", \"positionChange\", \"attach\", \"detach\", \"overlayKeydown\", \"overlayOutsideClick\"], exportAs: [\"cdkConnectedOverlay\"] }, { kind: \"ngmodule\", type: NzOverlayModule }, { kind: \"directive\", type: i5.NzConnectedOverlayDirective, selector: \"[cdkConnectedOverlay][nzConnectedOverlay]\", inputs: [\"nzArrowPointAtCenter\"], exportAs: [\"nzConnectedOverlay\"] }, { kind: \"directive\", type: NzNoAnimationDirective, selector: \"[nzNoAnimation]\", inputs: [\"nzNoAnimation\"], exportAs: [\"nzNoAnimation\"] }], animations: [slideMotion], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n };\n})();\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzDatePickerComponent, decorators: [{\n type: Component,\n args: [{\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'nz-date-picker,nz-week-picker,nz-month-picker,nz-quarter-picker,nz-year-picker,nz-range-picker',\n exportAs: 'nzDatePicker',\n template: `\n @if (!nzInline) {\n @if (!isRange) {\n <div class=\"{{ prefixCls }}-input\">\n <input\n #pickerInput\n [attr.id]=\"nzId\"\n [class.ant-input-disabled]=\"nzDisabled\"\n [disabled]=\"nzDisabled\"\n [readOnly]=\"nzInputReadOnly\"\n [(ngModel)]=\"inputValue\"\n placeholder=\"{{ getPlaceholder() }}\"\n [size]=\"inputSize\"\n autocomplete=\"off\"\n (focus)=\"onFocus($event)\"\n (focusout)=\"onFocusout($event)\"\n (ngModelChange)=\"onInputChange($event)\"\n (keyup.enter)=\"onKeyupEnter($event)\"\n />\n <ng-container *ngTemplateOutlet=\"tplRightRest\" />\n </div>\n } @else {\n <div class=\"{{ prefixCls }}-input\">\n <ng-container *ngTemplateOutlet=\"tplRangeInput; context: { partType: 'left' }\" />\n </div>\n <div #separatorElement class=\"{{ prefixCls }}-range-separator\">\n <span class=\"{{ prefixCls }}-separator\">\n <ng-container *nzStringTemplateOutlet=\"nzSeparator; let separator\">\n @if (nzSeparator) {\n {{ nzSeparator }}\n } @else {\n <nz-icon nzType=\"swap-right\" nzTheme=\"outline\" />\n }\n </ng-container>\n </span>\n </div>\n <div class=\"{{ prefixCls }}-input\">\n <ng-container *ngTemplateOutlet=\"tplRangeInput; context: { partType: 'right' }\" />\n </div>\n <ng-container *ngTemplateOutlet=\"tplRightRest\" />\n }\n } @else {\n <ng-template [ngTemplateOutlet]=\"inlineMode\" />\n }\n <!-- Input for Range ONLY -->\n <ng-template #tplRangeInput let-partType=\"partType\">\n <input\n #rangePickerInput\n [attr.id]=\"nzId\"\n [disabled]=\"nzDisabled\"\n [readOnly]=\"nzInputReadOnly\"\n [size]=\"inputSize\"\n autocomplete=\"off\"\n (click)=\"onClickInputBox($event)\"\n (focusout)=\"onFocusout($event)\"\n (focus)=\"onFocus($event, partType)\"\n (keyup.enter)=\"onKeyupEnter($event)\"\n [(ngModel)]=\"inputValue[datePickerService.getActiveIndex(partType)]\"\n (ngModelChange)=\"onInputChange($event)\"\n placeholder=\"{{ getPlaceholder(partType) }}\"\n />\n </ng-template>\n\n <!-- Right operator icons -->\n <ng-template #tplRightRest>\n <div class=\"{{ prefixCls }}-active-bar\" [style]=\"activeBarStyle\"></div>\n @if (showClear) {\n <span class=\"{{ prefixCls }}-clear\" (click)=\"onClickClear($event)\">\n <nz-icon nzType=\"close-circle\" nzTheme=\"fill\" />\n </span>\n }\n\n <span class=\"{{ prefixCls }}-suffix\">\n <ng-container *nzStringTemplateOutlet=\"nzSuffixIcon; let suffixIcon\">\n <nz-icon [nzType]=\"suffixIcon\" />\n </ng-container>\n @if (hasFeedback && !!status) {\n <nz-form-item-feedback-icon [status]=\"status\" />\n }\n </span>\n </ng-template>\n\n <ng-template #inlineMode>\n <div\n class=\"{{ prefixCls }}-dropdown {{ nzDropdownClassName }}\"\n [class.ant-picker-dropdown-rtl]=\"dir === 'rtl'\"\n [class.ant-picker-dropdown-placement-bottomLeft]=\"currentPositionY === 'bottom' && currentPositionX === 'start'\"\n [class.ant-picker-dropdown-placement-topLeft]=\"currentPositionY === 'top' && currentPositionX === 'start'\"\n [class.ant-picker-dropdown-placement-bottomRight]=\"currentPositionY === 'bottom' && currentPositionX === 'end'\"\n [class.ant-picker-dropdown-placement-topRight]=\"currentPositionY === 'top' && currentPositionX === 'end'\"\n [class.ant-picker-dropdown-range]=\"isRange\"\n [class.ant-picker-active-left]=\"datePickerService.activeInput === 'left'\"\n [class.ant-picker-active-right]=\"datePickerService.activeInput === 'right'\"\n [style]=\"nzPopupStyle\"\n >\n <date-range-popup\n [isRange]=\"isRange\"\n [inline]=\"nzInline\"\n [defaultPickerValue]=\"nzDefaultPickerValue\"\n [showWeek]=\"nzShowWeekNumber || nzMode === 'week'\"\n [panelMode]=\"panelMode\"\n (panelModeChange)=\"onPanelModeChange($event)\"\n (calendarChange)=\"onCalendarChange($event)\"\n [locale]=\"nzLocale?.lang!\"\n [showToday]=\"nzMode === 'date' && nzShowToday && !isRange && !nzShowTime\"\n [showNow]=\"nzMode === 'date' && nzShowNow && !isRange && !!nzShowTime\"\n [showTime]=\"nzShowTime\"\n [dateRender]=\"nzDateRender\"\n [disabledDate]=\"nzDisabledDate\"\n [disabledTime]=\"nzDisabledTime\"\n [extraFooter]=\"extraFooter\"\n [ranges]=\"nzRanges\"\n [dir]=\"dir\"\n [format]=\"nzFormat\"\n (resultOk)=\"onResultOk()\"\n />\n </div>\n </ng-template>\n\n <!-- Overlay -->\n <ng-template\n cdkConnectedOverlay\n nzConnectedOverlay\n [cdkConnectedOverlayHasBackdrop]=\"nzBackdrop\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"realOpenState\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayTransformOriginOn]=\"'.ant-picker-wrapper'\"\n (positionChange)=\"onPositionChange($event)\"\n (detach)=\"close()\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n >\n <div\n class=\"ant-picker-wrapper\"\n [nzNoAnimation]=\"!!noAnimation?.nzNoAnimation\"\n [@slideMotion]=\"'enter'\"\n [style.position]=\"'relative'\"\n >\n <ng-container *ngTemplateOutlet=\"inlineMode\"></ng-container>\n </div>\n </ng-template>\n `,\n host: {\n '[class.ant-picker]': `true`,\n '[class.ant-picker-range]': `isRange`,\n '[class.ant-picker-large]': `finalSize() === 'large'`,\n '[class.ant-picker-small]': `finalSize() === 'small'`,\n '[class.ant-picker-disabled]': `nzDisabled`,\n '[class.ant-picker-rtl]': `dir === 'rtl'`,\n '[class.ant-picker-borderless]': `nzVariant === 'borderless' || (nzVariant === 'outlined' && nzBorderless)`,\n '[class.ant-picker-filled]': `nzVariant === 'filled'`,\n '[class.ant-picker-underlined]': `nzVariant === 'underlined'`,\n '[class.ant-picker-inline]': `nzInline`,\n '(click)': 'onClickInputBox($event)'\n },\n hostDirectives: [NzSpaceCompactItemDirective],\n providers: [\n DatePickerService,\n { provide: NZ_SPACE_COMPACT_ITEM_TYPE, useValue: 'picker' },\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => NzDatePickerComponent)\n }\n ],\n animations: [slideMotion],\n imports: [\n FormsModule,\n NgTemplateOutlet,\n NzOutletModule,\n NzIconModule,\n NzFormItemFeedbackIconComponent,\n DateRangePopupComponent,\n CdkConnectedOverlay,\n NzOverlayModule,\n NzNoAnimationDirective\n ]\n }]\n }], propDecorators: { nzAllowClear: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzAutoFocus: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzDisabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzBorderless: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzInputReadOnly: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzInline: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzOpen: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzDisabledDate: [{\n type: Input\n }], nzLocale: [{\n type: Input\n }], nzPlaceHolder: [{\n type: Input\n }], nzPopupStyle: [{\n type: Input\n }], nzDropdownClassName: [{\n type: Input\n }], nzSize: [{\n type: Input\n }], nzStatus: [{\n type: Input\n }], nzFormat: [{\n type: Input\n }], nzVariant: [{\n type: Input\n }], nzDateRender: [{\n type: Input\n }], nzDisabledTime: [{\n type: Input\n }], nzRenderExtraFooter: [{\n type: Input\n }], nzShowToday: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzMode: [{\n type: Input\n }], nzShowNow: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzRanges: [{\n type: Input\n }], nzDefaultPickerValue: [{\n type: Input\n }], nzSeparator: [{\n type: Input\n }], nzSuffixIcon: [{\n type: Input\n }], nzBackdrop: [{\n type: Input\n }], nzId: [{\n type: Input\n }], nzPlacement: [{\n type: Input\n }], nzShowWeekNumber: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzOnPanelChange: [{\n type: Output\n }], nzOnCalendarChange: [{\n type: Output\n }], nzOnOk: [{\n type: Output\n }], nzOnOpenChange: [{\n type: Output\n }], nzShowTime: [{\n type: Input\n }], cdkConnectedOverlay: [{\n type: ViewChild,\n args: [CdkConnectedOverlay, { static: false }]\n }], panel: [{\n type: ViewChild,\n args: [DateRangePopupComponent, { static: false }]\n }], separatorElement: [{\n type: ViewChild,\n args: ['separatorElement', { static: false }]\n }], pickerInput: [{\n type: ViewChild,\n args: ['pickerInput', { static: false }]\n }], rangePickerInputs: [{\n type: ViewChildren,\n args: ['rangePickerInput']\n }] } });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzMonthPickerComponent {\n datePicker = inject(NzDatePickerComponent, { host: true });\n constructor() {\n this.datePicker.nzMode = 'month';\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzMonthPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.0\", type: NzMonthPickerComponent, isStandalone: true, selector: \"nz-month-picker\", exportAs: [\"nzMonthPicker\"], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzMonthPickerComponent, decorators: [{\n type: Directive,\n args: [{\n selector: 'nz-month-picker',\n exportAs: 'nzMonthPicker'\n }]\n }], ctorParameters: () => [] });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzQuarterPickerComponent {\n datePicker = inject(NzDatePickerComponent, { host: true });\n constructor() {\n this.datePicker.nzMode = 'quarter';\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzQuarterPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.0\", type: NzQuarterPickerComponent, isStandalone: true, selector: \"nz-quarter-picker\", exportAs: [\"nzQuarterPicker\"], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzQuarterPickerComponent, decorators: [{\n type: Directive,\n args: [{\n selector: 'nz-quarter-picker',\n exportAs: 'nzQuarterPicker'\n }]\n }], ctorParameters: () => [] });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzRangePickerComponent {\n datePicker = inject(NzDatePickerComponent, { host: true });\n constructor() {\n this.datePicker.isRange = true;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.0\", type: NzRangePickerComponent, isStandalone: true, selector: \"nz-range-picker\", exportAs: [\"nzRangePicker\"], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzRangePickerComponent, decorators: [{\n type: Directive,\n args: [{\n selector: 'nz-range-picker',\n exportAs: 'nzRangePicker'\n }]\n }], ctorParameters: () => [] });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzWeekPickerComponent {\n datePicker = inject(NzDatePickerComponent, { host: true });\n constructor() {\n this.datePicker.nzMode = 'week';\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzWeekPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.0\", type: NzWeekPickerComponent, isStandalone: true, selector: \"nz-week-picker\", exportAs: [\"nzWeekPicker\"], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzWeekPickerComponent, decorators: [{\n type: Directive,\n args: [{\n selector: 'nz-week-picker',\n exportAs: 'nzWeekPicker'\n }]\n }], ctorParameters: () => [] });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzYearPickerComponent {\n datePicker = inject(NzDatePickerComponent, { host: true });\n constructor() {\n this.datePicker.nzMode = 'year';\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzYearPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.0\", type: NzYearPickerComponent, isStandalone: true, selector: \"nz-year-picker\", exportAs: [\"nzYearPicker\"], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzYearPickerComponent, decorators: [{\n type: Directive,\n args: [{\n selector: 'nz-year-picker',\n exportAs: 'nzYearPicker'\n }]\n }], ctorParameters: () => [] });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzDatePickerModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzDatePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.0\", ngImport: i0, type: NzDatePickerModule, imports: [NzDatePickerComponent,\n NzMonthPickerComponent,\n NzYearPickerComponent,\n NzWeekPickerComponent,\n NzRangePickerComponent,\n CalendarFooterComponent,\n InnerPopupComponent,\n DateRangePopupComponent,\n NzQuarterPickerComponent], exports: [NzDatePickerComponent,\n NzRangePickerComponent,\n NzMonthPickerComponent,\n NzYearPickerComponent,\n NzWeekPickerComponent,\n NzQuarterPickerComponent] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzDatePickerModule, imports: [NzDatePickerComponent,\n CalendarFooterComponent,\n InnerPopupComponent,\n DateRangePopupComponent] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzDatePickerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n NzDatePickerComponent,\n NzMonthPickerComponent,\n NzYearPickerComponent,\n NzWeekPickerComponent,\n NzRangePickerComponent,\n CalendarFooterComponent,\n InnerPopupComponent,\n DateRangePopupComponent,\n NzQuarterPickerComponent\n ],\n exports: [\n NzDatePickerComponent,\n NzRangePickerComponent,\n NzMonthPickerComponent,\n NzYearPickerComponent,\n NzWeekPickerComponent,\n NzQuarterPickerComponent\n ]\n }]\n }] });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { LibPackerModule, NzDatePickerComponent, NzDatePickerModule, NzMonthPickerComponent, NzQuarterPickerComponent, NzRangePickerComponent, NzWeekPickerComponent, NzYearPickerComponent, PREFIX_CLASS, getTimeConfig, isAllowedDate, isTimeValid, isTimeValidByConfig, transCompatFormat, AbstractPanelHeader as ɵAbstractPanelHeader, AbstractTable as ɵAbstractTable, CalendarFooterComponent as ɵCalendarFooterComponent, DateHeaderComponent as ɵDateHeaderComponent, DatePickerService as ɵDatePickerService, DateRangePopupComponent as ɵDateRangePopupComponent, DateTableComponent as ɵDateTableComponent, DecadeHeaderComponent as ɵDecadeHeaderComponent, DecadeTableComponent as ɵDecadeTableComponent, InnerPopupComponent as ɵInnerPopupComponent, MonthHeaderComponent as ɵMonthHeaderComponent, MonthTableComponent as ɵMonthTableComponent, QuarterHeaderComponent as ɵQuarterHeaderComponent, QuarterTableComponent as ɵQuarterTableComponent, YearHeaderComponent as ɵYearHeaderComponent, YearTableComponent as ɵYearTableComponent };\n\n","import { Component, effect, inject, input, output } from '@angular/core';\r\nimport { NonNullableFormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { PRIORITY_OPTIONS } from '@app/shared/constants/priority-options';\r\nimport {\r\n CreateRdItemInput,\r\n ProjectMemberEntity,\r\n RdItemPriority,\r\n RdItemType,\r\n RdStageEntity,\r\n} from '@pages/rd/models/rd.model';\r\nimport { NzButtonModule } from 'ng-zorro-antd/button';\r\nimport { NzCardModule } from 'ng-zorro-antd/card';\r\nimport { NzDatePickerModule } from 'ng-zorro-antd/date-picker';\r\nimport { NzFlexModule } from 'ng-zorro-antd/flex';\r\nimport { NzFormModule } from 'ng-zorro-antd/form';\r\nimport { NzInputModule } from 'ng-zorro-antd/input';\r\nimport { NzModalModule } from 'ng-zorro-antd/modal';\r\nimport { NzSelectModule } from 'ng-zorro-antd/select';\r\n\r\ntype Draft = Omit<CreateRdItemInput, 'projectId'>;\r\nconst DEFAULT_DRAFT: Draft = {\r\n title: '',\r\n description: '',\r\n stageId: null,\r\n type: 'feature_dev',\r\n priority: 'medium',\r\n assigneeId: null,\r\n reviewerId: null,\r\n planStartAt: '',\r\n planEndAt: '',\r\n};\r\n\r\n@Component({\r\n selector: 'app-rd-create-dialog',\r\n imports: [\r\n NzModalModule,\r\n NzCardModule,\r\n NzDatePickerModule,\r\n NzSelectModule,\r\n NzFormModule,\r\n ReactiveFormsModule,\r\n NzButtonModule,\r\n NzInputModule,\r\n NzFlexModule,\r\n ],\r\n templateUrl: './rd-create-dialog.component.html',\r\n styleUrl: './rd-create-dialog.component.less',\r\n})\r\nexport class RdCreateDialogComponent {\r\n private fb = inject(NonNullableFormBuilder);\r\n\r\n readonly open = input(false);\r\n readonly stages = input<RdStageEntity[]>([]);\r\n readonly members = input<ProjectMemberEntity[]>([]);\r\n readonly create = output<Draft>();\r\n readonly cancel = output<void>();\r\n\r\n\r\n readonly priorityOptions = PRIORITY_OPTIONS;\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.open()) {\r\n this.form.reset(DEFAULT_DRAFT);\r\n }\r\n });\r\n }\r\n\r\n form = this.fb.group({\r\n title: this.fb.control(DEFAULT_DRAFT.title, [Validators.required]),\r\n description: this.fb.control(DEFAULT_DRAFT.description),\r\n stageId: this.fb.control(DEFAULT_DRAFT.stageId, [Validators.required]),\r\n type: this.fb.control<RdItemType>(DEFAULT_DRAFT.type!, [Validators.required]),\r\n priority: this.fb.control<RdItemPriority>(DEFAULT_DRAFT.priority!, [Validators.required]),\r\n assigneeId: this.fb.control(DEFAULT_DRAFT.assigneeId, [Validators.required]),\r\n reviewerId: this.fb.control(DEFAULT_DRAFT.reviewerId),\r\n planStartAt: this.fb.control(DEFAULT_DRAFT.planStartAt),\r\n planEndAt: this.fb.control(DEFAULT_DRAFT.planEndAt),\r\n });\r\n\r\n updateCtrl(ctrlKey: keyof Draft, value: Draft[keyof Draft]) {\r\n this.form.get(ctrlKey)?.setValue(value);\r\n }\r\n\r\n submit() {\r\n if (this.form.valid) {\r\n this.form.markAllAsTouched();\r\n }\r\n const draft = this.form.getRawValue();\r\n this.create.emit({ ...draft, title: draft.title.trim() });\r\n }\r\n}\r\n","/* angular:styles/component:less;c82d729b23f1ad589e4597159ad144046f8a6f882ca2b34826a4bfb401b2e971;D:\\ng-manager\\webapp\\src\\app\\pages\\rd\\rd-detail\\rd-detail.component.ts */\n.title-wrap {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.title-wrap .subtitle {\n margin-right: 1rem;\n font-size: 12px;\n line-height: 1.4;\n padding: 3px 8px;\n border-radius: 4px;\n white-space: nowrap;\n background: #f1f5f9;\n color: #64748b;\n}\n.wrap-title {\n width: 100%;\n margin-bottom: 12px;\n font-size: 18px;\n font-weight: bold;\n border-bottom: 1px solid #bbbbbb;\n}\n.detail-wrap .detail-item {\n margin-bottom: 20px;\n}\n.detail-wrap .edit-bar {\n width: 100%;\n display: flex;\n justify-content: end;\n}\n.detail-wrap .edit-bar .edit-btn {\n margin-top: 10px;\n}\n.detail-wrap .edit-area {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n.detail-wrap .rd-log-item {\n padding: 4px 0 0;\n}\n.detail-wrap .rd-log-item .meta {\n display: flex;\n align-items: center;\n gap: 0.875rem;\n color: rgba(0, 0, 0, 0.65);\n font-size: 1rem;\n margin-bottom: 4px;\n}\n.detail-wrap .rd-log-item .meta .operator {\n font-weight: bold;\n}\n.detail-wrap .rd-log-item .meta .content {\n color: rgba(0, 0, 0, 0.85);\n font-size: 14px;\n}\n.detail-wrap .rd-log-item .meta .time {\n fornsize: 10px;\n font-weight: 300;\n color: #bbbbbb;\n margin-left: auto;\n}\n.detail-wrap .rd-log-item .empty {\n color: rgba(0, 0, 0, 0.45);\n}\n::ng-deep .ant-descriptions-item-content,\n::ng-deep .ant-descriptions-item-label {\n font-size: 0.875rem;\n}\n/*# sourceMappingURL=rd-detail.component.css.map */\n","<div class=\"rd-action-area\">\r\n @for (action of actionButtons(); track action.key) {\r\n @if (action.confirm) {\r\n <button\r\n nz-button\r\n [nzType]=\"action.primary ? 'primary' : 'default'\"\r\n [disabled]=\"busy()\"\r\n nz-popconfirm\r\n [nzPopconfirmTitle]=\"action.confirm.title\"\r\n [nzPopconfirmPlacement]=\"action.confirm.placement\"\r\n (nzOnConfirm)=\"actionClick.emit(action.key)\"\r\n >\r\n {{ action.label }}\r\n </button>\r\n } @else {\r\n <button\r\n nz-button\r\n [nzType]=\"action.primary ? 'primary' : 'default'\"\r\n [disabled]=\"busy()\"\r\n (click)=\"actionClick.emit(action.key)\"\r\n >\r\n {{ action.label }}\r\n </button>\r\n }\r\n }\r\n @if (actionButtons().length === 0) {\r\n <span class=\"action-empty\">当前状态无可执行操作</span>\r\n }\r\n @if (canDelete()) {\r\n <button\r\n nz-button\r\n nzType=\"default\"\r\n nzDanger\r\n [disabled]=\"busy()\"\r\n nz-popconfirm\r\n nzPopconfirmTitle=\"确认删除该研发项吗?删除后无法恢复。\"\r\n nzPopconfirmPlacement=\"topRight\"\r\n (nzOnConfirm)=\"deleteClick.emit()\"\r\n class=\"delete-btn\"\r\n >\r\n 删除研发项\r\n </button>\r\n }\r\n @if (allowProgressEdit()) {\r\n <div class=\"progress-wrap\">\r\n <div class=\"progress-head\">\r\n <span>进度调节</span> \r\n <span>{{ progressDraft() }}%</span>\r\n </div>\r\n <nz-slider\r\n [nzMin]=\"0\"\r\n [nzMax]=\"100\"\r\n [nzStep]=\"5\"\r\n [nzDisabled]=\"busy()\"\r\n [ngModel]=\"progressDraft()\"\r\n (ngModelChange)=\"updateProgressDraft($event)\"\r\n ></nz-slider>\r\n <div class=\"progress-actions\">\r\n <button\r\n nz-button\r\n nzType=\"default\"\r\n [disabled]=\"busy() || !progressDirty()\"\r\n (click)=\"resetProgress()\"\r\n >\r\n 重置\r\n </button>\r\n <button\r\n nz-button\r\n nzType=\"primary\"\r\n [disabled]=\"busy() || !progressDirty()\"\r\n nz-popconfirm\r\n nzPopconfirmTitle=\"确认保存该研发项进度吗?\"\r\n nzPopconfirmPlacement=\"topRight\"\r\n (nzOnConfirm)=\"saveProgress()\"\r\n >\r\n 保存进度\r\n </button>\r\n </div>\r\n </div>\r\n }\r\n\r\n</div>","/* src/app/pages/rd/rd-detail/rd-action-area/rd-action-area.component.less */\n.rd-action-area {\n width: 100%;\n display: flex;\n flex-wrap: wrap;\n gap: 1rem;\n}\n.rd-action-area .action-empty {\n color: gray;\n font-size: 0.9rem;\n}\n.rd-action-area .delete-btn {\n margin-left: auto;\n}\n.rd-action-area .progress-wrap {\n width: 100%;\n margin-top: 8px;\n padding: 1rem;\n border: 1px solid #f0f0f0;\n border-radius: 10px;\n}\n.rd-action-area .progress-wrap .progress-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n.rd-action-area .progress-wrap .progress-actions {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: end;\n gap: 1rem;\n}\n/*# sourceMappingURL=rd-action-area.component.css.map */\n","import { Injectable } from '@angular/core';\r\n\r\nimport type { ProjectMemberEntity } from '@models/project.model';\r\nimport type { RdItemEntity } from '../models/rd.model';\r\nimport { HubAuthUser } from '@app/core/stores';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RdPermissionService {\r\n canEditProgress(item: RdItemEntity | null, userId: string | null): boolean {\r\n return !!item && !!userId && !!item.assigneeId && item.assigneeId === userId;\r\n }\r\n\r\n canStart(item: RdItemEntity | null, userId: string | null): boolean {\r\n return this.canEditProgress(item, userId);\r\n }\r\n\r\n canComplete(item: RdItemEntity | null, userId: string | null): boolean {\r\n return this.canEditProgress(item, userId);\r\n }\r\n\r\n canEditBasic(\r\n item: RdItemEntity | null,\r\n userId: string | null,\r\n members: ProjectMemberEntity[],\r\n ): boolean {\r\n if (!item || !userId) {\r\n return false;\r\n }\r\n if (item.creatorId === userId || item.assigneeId === userId) {\r\n return true;\r\n }\r\n return this.isProjectAdmin(userId, members);\r\n }\r\n\r\n canDelete(\r\n item: RdItemEntity | null,\r\n userId: string | null,\r\n members: ProjectMemberEntity[],\r\n ): boolean {\r\n if (!item || !userId) {\r\n return false;\r\n }\r\n if (item.creatorId === userId) {\r\n return true;\r\n }\r\n return this.isProjectAdmin(userId, members);\r\n }\r\n\r\n canBlock(\r\n item: RdItemEntity | null,\r\n userId: string | null,\r\n members: ProjectMemberEntity[],\r\n ): boolean {\r\n if (!item || !userId) {\r\n return false;\r\n }\r\n if (item.assigneeId === userId) {\r\n return true;\r\n }\r\n return this.isProjectAdmin(userId, members);\r\n }\r\n\r\n canResume(\r\n item: RdItemEntity | null,\r\n userId: string | null,\r\n members: ProjectMemberEntity[],\r\n ): boolean {\r\n return this.canBlock(item, userId, members);\r\n }\r\n\r\n canAdvance(\r\n item: RdItemEntity | null,\r\n userId: string | null,\r\n members: ProjectMemberEntity[],\r\n ): boolean {\r\n if (!item) {\r\n return false;\r\n }\r\n if (item.status !== 'done' && item.status !== 'accepted') {\r\n return false;\r\n }\r\n return this.canEditBasic(item, userId, members);\r\n }\r\n\r\n // RD 权限检查函数\r\n hasPermissionToRead(user: HubAuthUser | null): boolean {\r\n return !!user && (user.scopes?.includes('rd:read') ?? false);\r\n }\r\n\r\n hasPermissionToTransition(user: HubAuthUser | null): boolean {\r\n return !!user && (user.scopes?.includes('rd:transition:write') ?? false);\r\n }\r\n\r\n hasPermissionToEdit(user: HubAuthUser | null): boolean {\r\n return !!user && (user.scopes?.includes('rd:edit:write') ?? false);\r\n }\r\n\r\n hasPermissionToDelete(user: HubAuthUser | null): boolean {\r\n return !!user && (user.scopes?.includes('rd:delete:write') ?? false);\r\n }\r\n\r\n private isProjectAdmin(userId: string, members: ProjectMemberEntity[]): boolean {\r\n const member = members.find((item) => item.userId === userId);\r\n return !!member && (member.roleCode === 'project_admin' || member.isOwner);\r\n }\r\n}\r\n","import { Directionality } from '@angular/cdk/bidi';\nimport { RIGHT_ARROW, UP_ARROW, LEFT_ARROW, DOWN_ARROW } from '@angular/cdk/keycodes';\nimport { Platform } from '@angular/cdk/platform';\nimport * as i0 from '@angular/core';\nimport { inject, ChangeDetectorRef, booleanAttribute, Input, ViewChild, ViewEncapsulation, ChangeDetectionStrategy, Component, numberAttribute, ElementRef, DestroyRef, EventEmitter, signal, forwardRef, Output, ViewChildren, NgModule } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { fromEvent, merge } from 'rxjs';\nimport { filter, tap, map, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { numberAttributeWithZeroFallback, ensureNumberInRange, silentEvent, getPrecision, getPercent, getElementOffset, isNil, arraysEqual } from 'ng-zorro-antd/core/util';\nimport * as i1 from 'ng-zorro-antd/tooltip';\nimport { NzTooltipModule, NzTooltipDirective } from 'ng-zorro-antd/tooltip';\n\nclass NzSliderHandleComponent {\n cdr = inject(ChangeDetectorRef);\n handleEl;\n tooltip;\n vertical;\n reverse;\n offset;\n value;\n tooltipVisible = 'default';\n tooltipPlacement;\n tooltipFormatter;\n active = false;\n dir = 'ltr';\n dragging;\n tooltipTitle;\n style = {};\n ngOnChanges(changes) {\n const { offset, value, active, tooltipVisible, reverse, dir } = changes;\n if (offset || reverse || dir) {\n this.updateStyle();\n }\n if (value) {\n this.updateTooltipTitle();\n this.updateTooltipPosition();\n }\n if (active) {\n if (active.currentValue) {\n this.toggleTooltip(true);\n }\n else {\n this.toggleTooltip(false);\n }\n }\n if (tooltipVisible?.currentValue === 'always') {\n Promise.resolve().then(() => this.toggleTooltip(true, true));\n }\n }\n enterHandle = () => {\n if (!this.dragging) {\n this.toggleTooltip(true);\n this.updateTooltipPosition();\n this.cdr.detectChanges();\n }\n };\n leaveHandle = () => {\n if (!this.dragging) {\n this.toggleTooltip(false);\n this.cdr.detectChanges();\n }\n };\n focus() {\n this.handleEl?.nativeElement.focus();\n }\n toggleTooltip(show, force = false) {\n if (!force && (this.tooltipVisible !== 'default' || !this.tooltip)) {\n return;\n }\n if (show) {\n this.tooltip?.show();\n }\n else {\n this.tooltip?.hide();\n }\n }\n updateTooltipTitle() {\n if (this.tooltipFormatter) {\n this.tooltipTitle =\n typeof this.tooltipFormatter === 'function' ? this.tooltipFormatter(this.value) : this.tooltipFormatter;\n }\n else {\n this.tooltipTitle = `${this.value}`;\n }\n }\n updateTooltipPosition() {\n if (this.tooltip) {\n Promise.resolve().then(() => this.tooltip?.updatePosition());\n }\n }\n updateStyle() {\n if (this.vertical) {\n this.style = {\n [this.reverse ? 'top' : 'bottom']: `${this.offset}%`,\n [this.reverse ? 'bottom' : 'top']: 'auto',\n transform: this.reverse ? null : `translateY(+50%)`\n };\n }\n else {\n this.style = {\n ...this.getHorizontalStylePosition(),\n transform: `translateX(${this.reverse ? (this.dir === 'rtl' ? '-' : '+') : this.dir === 'rtl' ? '+' : '-'}50%)`\n };\n }\n this.cdr.markForCheck();\n }\n getHorizontalStylePosition() {\n let left = this.reverse ? 'auto' : `${this.offset}%`;\n let right = this.reverse ? `${this.offset}%` : 'auto';\n if (this.dir === 'rtl') {\n [left, right] = [right, left];\n }\n return { left, right };\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzSliderHandleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"16.1.0\", version: \"20.3.0\", type: NzSliderHandleComponent, isStandalone: true, selector: \"nz-slider-handle\", inputs: { vertical: [\"vertical\", \"vertical\", booleanAttribute], reverse: [\"reverse\", \"reverse\", booleanAttribute], offset: [\"offset\", \"offset\", numberAttributeWithZeroFallback], value: [\"value\", \"value\", numberAttributeWithZeroFallback], tooltipVisible: \"tooltipVisible\", tooltipPlacement: \"tooltipPlacement\", tooltipFormatter: \"tooltipFormatter\", active: [\"active\", \"active\", booleanAttribute], dir: \"dir\", dragging: \"dragging\" }, host: { listeners: { \"mouseenter\": \"enterHandle()\", \"mouseleave\": \"leaveHandle()\" } }, viewQueries: [{ propertyName: \"handleEl\", first: true, predicate: [\"handle\"], descendants: true }, { propertyName: \"tooltip\", first: true, predicate: NzTooltipDirective, descendants: true }], exportAs: [\"nzSliderHandle\"], usesOnChanges: true, ngImport: i0, template: `\n <div\n #handle\n class=\"ant-slider-handle\"\n tabindex=\"0\"\n nz-tooltip\n [style]=\"style\"\n [nzTooltipTitle]=\"tooltipFormatter === null || tooltipVisible === 'never' ? null : tooltipTitle\"\n [nzTooltipTitleContext]=\"{ $implicit: value }\"\n [nzTooltipTrigger]=\"null\"\n [nzTooltipPlacement]=\"tooltipPlacement\"\n ></div>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: NzTooltipModule }, { kind: \"directive\", type: i1.NzTooltipDirective, selector: \"[nz-tooltip]\", inputs: [\"nzTooltipTitle\", \"nzTooltipTitleContext\", \"nz-tooltip\", \"nzTooltipTrigger\", \"nzTooltipPlacement\", \"nzTooltipOrigin\", \"nzTooltipVisible\", \"nzTooltipMouseEnterDelay\", \"nzTooltipMouseLeaveDelay\", \"nzTooltipOverlayClassName\", \"nzTooltipOverlayStyle\", \"nzTooltipArrowPointAtCenter\", \"cdkConnectedOverlayPush\", \"nzTooltipColor\"], outputs: [\"nzTooltipVisibleChange\"], exportAs: [\"nzTooltip\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzSliderHandleComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'nz-slider-handle',\n exportAs: 'nzSliderHandle',\n template: `\n <div\n #handle\n class=\"ant-slider-handle\"\n tabindex=\"0\"\n nz-tooltip\n [style]=\"style\"\n [nzTooltipTitle]=\"tooltipFormatter === null || tooltipVisible === 'never' ? null : tooltipTitle\"\n [nzTooltipTitleContext]=\"{ $implicit: value }\"\n [nzTooltipTrigger]=\"null\"\n [nzTooltipPlacement]=\"tooltipPlacement\"\n ></div>\n `,\n host: {\n '(mouseenter)': 'enterHandle()',\n '(mouseleave)': 'leaveHandle()'\n },\n imports: [NzTooltipModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n }]\n }], propDecorators: { handleEl: [{\n type: ViewChild,\n args: ['handle', { static: false }]\n }], tooltip: [{\n type: ViewChild,\n args: [NzTooltipDirective, { static: false }]\n }], vertical: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], reverse: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], offset: [{\n type: Input,\n args: [{ transform: numberAttributeWithZeroFallback }]\n }], value: [{\n type: Input,\n args: [{ transform: numberAttributeWithZeroFallback }]\n }], tooltipVisible: [{\n type: Input\n }], tooltipPlacement: [{\n type: Input\n }], tooltipFormatter: [{\n type: Input\n }], active: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], dir: [{\n type: Input\n }], dragging: [{\n type: Input\n }] } });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzSliderMarksComponent {\n lowerBound = null;\n upperBound = null;\n marksArray = [];\n min;\n max;\n vertical = false;\n included = false;\n reverse;\n marks = [];\n ngOnChanges(changes) {\n const { marksArray, lowerBound, upperBound, reverse } = changes;\n if (marksArray || reverse) {\n this.buildMarks();\n }\n if (marksArray || lowerBound || upperBound || reverse) {\n this.togglePointActive();\n }\n }\n buildMarks() {\n const range = this.max - this.min;\n this.marks = this.marksArray.map(mark => {\n const { value, offset, config } = mark;\n const style = this.getMarkStyles(value, range, config);\n const label = isConfigObject(config) ? config.label : config;\n return {\n label,\n offset,\n style,\n value,\n config,\n active: false\n };\n });\n }\n getMarkStyles(value, range, config) {\n let style;\n const markValue = this.reverse ? this.max + this.min - value : value;\n if (this.vertical) {\n style = {\n marginBottom: '-50%',\n bottom: `${((markValue - this.min) / range) * 100}%`\n };\n }\n else {\n style = {\n transform: `translate3d(-50%, 0, 0)`,\n left: `${((markValue - this.min) / range) * 100}%`\n };\n }\n if (isConfigObject(config) && config.style) {\n style = { ...style, ...config.style };\n }\n return style;\n }\n togglePointActive() {\n if (this.marks && this.lowerBound !== null && this.upperBound !== null) {\n this.marks.forEach(mark => {\n const value = mark.value;\n mark.active = this.included\n ? value <= this.upperBound && value >= this.lowerBound\n : value === this.upperBound;\n });\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzSliderMarksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.0\", type: NzSliderMarksComponent, isStandalone: true, selector: \"nz-slider-marks\", inputs: { lowerBound: \"lowerBound\", upperBound: \"upperBound\", marksArray: \"marksArray\", min: [\"min\", \"min\", numberAttribute], max: [\"max\", \"max\", numberAttribute], vertical: [\"vertical\", \"vertical\", booleanAttribute], included: [\"included\", \"included\", booleanAttribute], reverse: [\"reverse\", \"reverse\", booleanAttribute] }, host: { classAttribute: \"ant-slider-mark\" }, exportAs: [\"nzSliderMarks\"], usesOnChanges: true, ngImport: i0, template: `\n @for (attr of marks; track attr.value) {\n <span\n class=\"ant-slider-mark-text\"\n [class.ant-slider-mark-active]=\"attr.active\"\n [style]=\"attr.style\"\n [innerHTML]=\"attr.label\"\n ></span>\n }\n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzSliderMarksComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'nz-slider-marks',\n exportAs: 'nzSliderMarks',\n template: `\n @for (attr of marks; track attr.value) {\n <span\n class=\"ant-slider-mark-text\"\n [class.ant-slider-mark-active]=\"attr.active\"\n [style]=\"attr.style\"\n [innerHTML]=\"attr.label\"\n ></span>\n }\n `,\n host: {\n class: 'ant-slider-mark'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n }]\n }], propDecorators: { lowerBound: [{\n type: Input\n }], upperBound: [{\n type: Input\n }], marksArray: [{\n type: Input\n }], min: [{\n type: Input,\n args: [{ transform: numberAttribute }]\n }], max: [{\n type: Input,\n args: [{ transform: numberAttribute }]\n }], vertical: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], included: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], reverse: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }] } });\nfunction isConfigObject(config) {\n return typeof config !== 'string';\n}\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzSliderStepComponent {\n lowerBound = null;\n upperBound = null;\n marksArray = [];\n min;\n max;\n vertical = false;\n included = false;\n reverse;\n steps = [];\n ngOnChanges(changes) {\n const { marksArray, lowerBound, upperBound, reverse } = changes;\n if (marksArray || reverse) {\n this.buildSteps();\n }\n if (marksArray || lowerBound || upperBound || reverse) {\n this.togglePointActive();\n }\n }\n buildSteps() {\n const orient = this.vertical ? 'bottom' : 'left';\n this.steps = this.marksArray.map(mark => {\n const { value, config } = mark;\n let offset = mark.offset;\n const range = this.max - this.min;\n if (this.reverse) {\n offset = ((this.max - value) / range) * 100;\n }\n return {\n value,\n offset,\n config,\n active: false,\n style: {\n [orient]: `${offset}%`,\n transform: this.vertical ? 'translateY(50%)' : 'translateX(-50%)'\n }\n };\n });\n }\n togglePointActive() {\n if (this.steps && this.lowerBound !== null && this.upperBound !== null) {\n this.steps.forEach(step => {\n const value = step.value;\n step.active = this.included\n ? value <= this.upperBound && value >= this.lowerBound\n : value === this.upperBound;\n });\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzSliderStepComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.0\", type: NzSliderStepComponent, isStandalone: true, selector: \"nz-slider-step\", inputs: { lowerBound: \"lowerBound\", upperBound: \"upperBound\", marksArray: \"marksArray\", min: [\"min\", \"min\", numberAttribute], max: [\"max\", \"max\", numberAttribute], vertical: [\"vertical\", \"vertical\", booleanAttribute], included: [\"included\", \"included\", booleanAttribute], reverse: [\"reverse\", \"reverse\", booleanAttribute] }, host: { classAttribute: \"ant-slider-step\" }, exportAs: [\"nzSliderStep\"], usesOnChanges: true, ngImport: i0, template: `\n @for (step of steps; track step.value) {\n <span class=\"ant-slider-dot\" [class.ant-slider-dot-active]=\"step.active\" [style]=\"step.style!\"></span>\n }\n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzSliderStepComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: 'nz-slider-step',\n exportAs: 'nzSliderStep',\n template: `\n @for (step of steps; track step.value) {\n <span class=\"ant-slider-dot\" [class.ant-slider-dot-active]=\"step.active\" [style]=\"step.style!\"></span>\n }\n `,\n host: {\n class: 'ant-slider-step'\n }\n }]\n }], propDecorators: { lowerBound: [{\n type: Input\n }], upperBound: [{\n type: Input\n }], marksArray: [{\n type: Input\n }], min: [{\n type: Input,\n args: [{ transform: numberAttribute }]\n }], max: [{\n type: Input,\n args: [{ transform: numberAttribute }]\n }], vertical: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], included: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], reverse: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }] } });\n\nclass NzSliderTrackComponent {\n offset = 0;\n reverse = false;\n dir = 'ltr';\n length = 0;\n vertical = false;\n included = false;\n style = {};\n ngOnChanges() {\n const visibility = this.included ? 'visible' : 'hidden';\n if (this.vertical) {\n this.style = {\n [this.reverse ? 'top' : 'bottom']: `${this.offset}%`,\n [this.reverse ? 'bottom' : 'top']: 'auto',\n height: `${this.length}%`,\n visibility\n };\n }\n else {\n this.style = {\n ...this.getHorizontalStylePosition(),\n width: `${this.length}%`,\n visibility\n };\n }\n }\n getHorizontalStylePosition() {\n let left = this.reverse ? 'auto' : `${this.offset}%`;\n let right = this.reverse ? `${this.offset}%` : 'auto';\n if (this.dir === 'rtl') {\n [left, right] = [right, left];\n }\n return { left, right };\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzSliderTrackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"16.1.0\", version: \"20.3.0\", type: NzSliderTrackComponent, isStandalone: true, selector: \"nz-slider-track\", inputs: { offset: [\"offset\", \"offset\", numberAttribute], reverse: [\"reverse\", \"reverse\", booleanAttribute], dir: \"dir\", length: [\"length\", \"length\", numberAttribute], vertical: [\"vertical\", \"vertical\", booleanAttribute], included: [\"included\", \"included\", booleanAttribute] }, exportAs: [\"nzSliderTrack\"], usesOnChanges: true, ngImport: i0, template: `<div class=\"ant-slider-track\" [style]=\"style\"></div>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzSliderTrackComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'nz-slider-track',\n exportAs: 'nzSliderTrack',\n template: `<div class=\"ant-slider-track\" [style]=\"style\"></div>`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { offset: [{\n type: Input,\n args: [{ transform: numberAttribute }]\n }], reverse: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], dir: [{\n type: Input\n }], length: [{\n type: Input,\n args: [{ transform: numberAttribute }]\n }], vertical: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], included: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }] } });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzSliderComponent {\n slider = inject((ElementRef));\n destroyRef = inject(DestroyRef);\n cdr = inject(ChangeDetectorRef);\n platform = inject(Platform);\n directionality = inject(Directionality);\n handlerComponents;\n nzDisabled = false;\n nzDots = false;\n nzIncluded = true;\n nzRange = false;\n nzVertical = false;\n nzReverse = false;\n nzDefaultValue;\n nzMarks = null;\n nzMax = 100;\n nzMin = 0;\n nzStep = 1;\n nzTooltipVisible = 'default';\n nzTooltipPlacement = 'top';\n nzTipFormatter;\n nzOnAfterChange = new EventEmitter();\n value = null;\n cacheSliderStart = null;\n cacheSliderLength = null;\n activeValueIndex = undefined; // Current activated handle's index ONLY for range=true\n track = { offset: null, length: null }; // Track's offset and length\n handles = []; // Handles' offset\n marksArray = null; // \"steps\" in array type with more data & FILTER out the invalid mark\n bounds = { lower: null, upper: null }; // now for nz-slider-step\n dir = 'ltr';\n dragging = signal(false, ...(ngDevMode ? [{ debugName: \"dragging\" }] : []));\n dragStart$;\n dragMove$;\n dragEnd$;\n dragStart_;\n dragMove_;\n dragEnd_;\n isNzDisableFirstChange = true;\n ngOnInit() {\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(direction => {\n this.dir = direction;\n this.cdr.detectChanges();\n this.updateTrackAndHandles();\n this.onValueChange(this.getValue(true));\n });\n this.handles = generateHandlers(this.nzRange ? 2 : 1);\n this.marksArray = this.nzMarks ? this.generateMarkItems(this.nzMarks) : null;\n this.bindDraggingHandlers();\n this.toggleDragDisabled(this.nzDisabled);\n if (this.getValue() === null) {\n this.setValue(this.formatValue(null));\n }\n }\n ngOnChanges(changes) {\n const { nzDisabled, nzMarks, nzRange } = changes;\n if (nzDisabled && !nzDisabled.firstChange) {\n this.toggleDragDisabled(nzDisabled.currentValue);\n }\n else if (nzMarks && !nzMarks.firstChange) {\n this.marksArray = this.nzMarks ? this.generateMarkItems(this.nzMarks) : null;\n }\n else if (nzRange && !nzRange.firstChange) {\n this.handles = generateHandlers(nzRange.currentValue ? 2 : 1);\n this.setValue(this.formatValue(null));\n }\n }\n writeValue(val) {\n this.setValue(val, true);\n }\n onValueChange(_value) { }\n onTouched() { }\n registerOnChange(fn) {\n this.onValueChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled) {\n this.nzDisabled = (this.isNzDisableFirstChange && this.nzDisabled) || isDisabled;\n this.isNzDisableFirstChange = false;\n this.toggleDragDisabled(this.nzDisabled);\n this.cdr.markForCheck();\n }\n /**\n * Event handler is only triggered when a slider handler is focused.\n */\n onKeyDown(e) {\n if (this.nzDisabled) {\n return;\n }\n const code = e.keyCode;\n const isIncrease = code === RIGHT_ARROW || code === UP_ARROW;\n const isDecrease = code === LEFT_ARROW || code === DOWN_ARROW;\n if (!(isIncrease || isDecrease)) {\n return;\n }\n e.preventDefault();\n const step = (isDecrease ? -this.nzStep : this.nzStep) * (this.nzReverse ? -1 : 1) * (this.dir === 'rtl' ? -1 : 1);\n const newVal = this.nzRange\n ? this.value[this.activeValueIndex] + step\n : this.value + step;\n this.setActiveValue(ensureNumberInRange(newVal, this.nzMin, this.nzMax));\n this.nzOnAfterChange.emit(this.getValue(true));\n }\n onHandleFocusIn(index) {\n this.activeValueIndex = index;\n }\n setValue(value, isWriteValue = false) {\n if (isWriteValue) {\n this.value = this.formatValue(value);\n this.updateTrackAndHandles();\n }\n else if (!valuesEqual(this.value, value)) {\n this.value = value;\n this.updateTrackAndHandles();\n this.onValueChange(this.getValue(true));\n }\n }\n getValue(cloneAndSort = false) {\n if (cloneAndSort && this.value && isValueRange(this.value)) {\n return [...this.value].sort((a, b) => a - b);\n }\n return this.value;\n }\n /**\n * Clone & sort current value and convert them to offsets, then return the new one.\n */\n getValueToOffset(value) {\n let normalizedValue = value;\n if (typeof normalizedValue === 'undefined') {\n normalizedValue = this.getValue(true);\n }\n return isValueRange(normalizedValue)\n ? normalizedValue.map(val => this.valueToOffset(val))\n : this.valueToOffset(normalizedValue);\n }\n /**\n * Find the closest value to be activated.\n */\n setActiveValueIndex(pointerValue) {\n const value = this.getValue();\n if (isValueRange(value)) {\n let minimal = null;\n let gap;\n let activeIndex = -1;\n value.forEach((val, index) => {\n gap = Math.abs(pointerValue - val);\n if (minimal === null || gap < minimal) {\n minimal = gap;\n activeIndex = index;\n }\n });\n this.activeValueIndex = activeIndex;\n this.handlerComponents.toArray()[activeIndex].focus();\n }\n else {\n this.handlerComponents.toArray()[0].focus();\n }\n }\n setActiveValue(pointerValue) {\n if (isValueRange(this.value)) {\n const newValue = [...this.value];\n newValue[this.activeValueIndex] = pointerValue;\n this.setValue(newValue);\n }\n else {\n this.setValue(pointerValue);\n }\n }\n /**\n * Update track and handles' position and length.\n */\n updateTrackAndHandles() {\n const value = this.getValue();\n const offset = this.getValueToOffset(value);\n const valueSorted = this.getValue(true);\n const offsetSorted = this.getValueToOffset(valueSorted);\n const boundParts = isValueRange(valueSorted) ? valueSorted : [0, valueSorted];\n const trackParts = isValueRange(offsetSorted)\n ? [offsetSorted[0], offsetSorted[1] - offsetSorted[0]]\n : [0, offsetSorted];\n this.handles.forEach((handle, index) => {\n handle.offset = isValueRange(offset) ? offset[index] : offset;\n handle.value = isValueRange(value) ? value[index] : value || 0;\n });\n [this.bounds.lower, this.bounds.upper] = boundParts;\n [this.track.offset, this.track.length] = trackParts;\n this.cdr.markForCheck();\n }\n onDragStart(value) {\n this.toggleDragMoving(true);\n this.cacheSliderProperty();\n this.setActiveValueIndex(this.getLogicalValue(value));\n this.setActiveValue(this.getLogicalValue(value));\n this.showHandleTooltip(this.nzRange ? this.activeValueIndex : 0);\n }\n onDragMove(value) {\n this.setActiveValue(this.getLogicalValue(value));\n this.cdr.markForCheck();\n }\n getLogicalValue(value) {\n if (this.nzReverse) {\n if (!this.nzVertical && this.dir === 'rtl') {\n return value;\n }\n return this.nzMax - value + this.nzMin;\n }\n if (!this.nzVertical && this.dir === 'rtl') {\n return this.nzMax - value + this.nzMin;\n }\n return value;\n }\n onDragEnd() {\n this.nzOnAfterChange.emit(this.getValue(true));\n this.toggleDragMoving(false);\n this.cacheSliderProperty(true);\n this.hideAllHandleTooltip();\n this.cdr.markForCheck();\n }\n /**\n * Create user interactions handles.\n */\n bindDraggingHandlers() {\n if (!this.platform.isBrowser) {\n return;\n }\n const pluckFunc = keys => (event) => keys.reduce((acc, key) => acc[key] || acc, event);\n const sliderDOM = this.slider.nativeElement;\n const orientField = this.nzVertical ? 'pageY' : 'pageX';\n const mouse = {\n start: 'mousedown',\n move: 'mousemove',\n end: 'mouseup',\n pluckKey: [orientField]\n };\n const touch = {\n start: 'touchstart',\n move: 'touchmove',\n end: 'touchend',\n pluckKey: ['touches', '0', orientField],\n filter: (e) => e instanceof TouchEvent\n };\n [mouse, touch].forEach(source => {\n const { start, move, end, pluckKey, filter: filterFunc = () => true } = source;\n source.startPlucked$ = fromEvent(sliderDOM, start).pipe(filter(filterFunc), tap(silentEvent), map(pluckFunc(pluckKey)), map((position) => this.findClosestValue(position)));\n source.end$ = fromEvent(document, end);\n source.moveResolved$ = fromEvent(document, move).pipe(filter(filterFunc), tap(silentEvent), map(pluckFunc(pluckKey)), distinctUntilChanged(), map((position) => this.findClosestValue(position)), distinctUntilChanged(), takeUntil(source.end$));\n });\n this.dragStart$ = merge(mouse.startPlucked$, touch.startPlucked$);\n this.dragMove$ = merge(mouse.moveResolved$, touch.moveResolved$);\n this.dragEnd$ = merge(mouse.end$, touch.end$);\n }\n subscribeDrag(periods = ['start', 'move', 'end']) {\n if (periods.indexOf('start') !== -1 && this.dragStart$ && !this.dragStart_) {\n this.dragStart_ = this.dragStart$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(this.onDragStart.bind(this));\n }\n if (periods.indexOf('move') !== -1 && this.dragMove$ && !this.dragMove_) {\n this.dragMove_ = this.dragMove$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.onDragMove.bind(this));\n }\n if (periods.indexOf('end') !== -1 && this.dragEnd$ && !this.dragEnd_) {\n this.dragEnd_ = this.dragEnd$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.onDragEnd.bind(this));\n }\n }\n unsubscribeDrag(periods = ['start', 'move', 'end']) {\n if (periods.includes('start')) {\n this.dragStart_?.unsubscribe();\n this.dragStart_ = null;\n }\n if (periods.includes('move')) {\n this.dragMove_?.unsubscribe();\n this.dragMove_ = null;\n }\n if (periods.includes('end')) {\n this.dragEnd_?.unsubscribe();\n this.dragEnd_ = null;\n }\n }\n toggleDragMoving(movable) {\n const periods = ['move', 'end'];\n if (movable) {\n this.dragging.set(true);\n this.subscribeDrag(periods);\n }\n else {\n this.dragging.set(false);\n this.unsubscribeDrag(periods);\n }\n }\n toggleDragDisabled(disabled) {\n if (disabled) {\n this.unsubscribeDrag();\n }\n else {\n this.subscribeDrag(['start']);\n }\n }\n findClosestValue(position) {\n const sliderStart = this.getSliderStartPosition();\n const sliderLength = this.getSliderLength();\n const ratio = ensureNumberInRange((position - sliderStart) / sliderLength, 0, 1);\n const val = (this.nzMax - this.nzMin) * (this.nzVertical ? 1 - ratio : ratio) + this.nzMin;\n const points = this.nzMarks === null\n ? []\n : Object.keys(this.nzMarks)\n .map(parseFloat)\n .sort((a, b) => a - b);\n if (this.nzStep !== 0 && !this.nzDots) {\n const closestOne = Math.round(val / this.nzStep) * this.nzStep;\n points.push(closestOne);\n }\n const gaps = points.map(point => Math.abs(val - point));\n const closest = points[gaps.indexOf(Math.min(...gaps))];\n return this.nzStep === 0 ? closest : parseFloat(closest.toFixed(getPrecision(this.nzStep)));\n }\n valueToOffset(value) {\n return getPercent(this.nzMin, this.nzMax, value);\n }\n getSliderStartPosition() {\n if (this.cacheSliderStart !== null) {\n return this.cacheSliderStart;\n }\n const offset = getElementOffset(this.slider.nativeElement);\n return this.nzVertical ? offset.top : offset.left;\n }\n getSliderLength() {\n if (this.cacheSliderLength !== null) {\n return this.cacheSliderLength;\n }\n const sliderDOM = this.slider.nativeElement;\n return this.nzVertical ? sliderDOM.clientHeight : sliderDOM.clientWidth;\n }\n /**\n * Cache DOM layout/reflow operations for performance (may not necessary?)\n */\n cacheSliderProperty(remove = false) {\n this.cacheSliderStart = remove ? null : this.getSliderStartPosition();\n this.cacheSliderLength = remove ? null : this.getSliderLength();\n }\n formatValue(value) {\n if (isNil(value)) {\n return this.nzRange ? [this.nzMin, this.nzMax] : this.nzMin;\n }\n else if (assertValueValid(value, this.nzRange)) {\n return isValueRange(value)\n ? value.map(val => ensureNumberInRange(val, this.nzMin, this.nzMax))\n : ensureNumberInRange(value, this.nzMin, this.nzMax);\n }\n else {\n return this.nzDefaultValue ? this.nzDefaultValue : this.nzRange ? [this.nzMin, this.nzMax] : this.nzMin;\n }\n }\n /**\n * Show one handle's tooltip and hide others'.\n */\n showHandleTooltip(handleIndex = 0) {\n this.handles.forEach((handle, index) => (handle.active = index === handleIndex));\n }\n hideAllHandleTooltip() {\n this.handles.forEach(handle => (handle.active = false));\n }\n generateMarkItems(marks) {\n const marksArray = [];\n for (const key in marks) {\n if (marks.hasOwnProperty(key)) {\n const mark = marks[key];\n const val = typeof key === 'number' ? key : parseFloat(key);\n if (val >= this.nzMin && val <= this.nzMax) {\n marksArray.push({ value: val, offset: this.valueToOffset(val), config: mark });\n }\n }\n }\n return marksArray.length ? marksArray : null;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzSliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.0\", type: NzSliderComponent, isStandalone: true, selector: \"nz-slider\", inputs: { nzDisabled: [\"nzDisabled\", \"nzDisabled\", booleanAttribute], nzDots: [\"nzDots\", \"nzDots\", booleanAttribute], nzIncluded: [\"nzIncluded\", \"nzIncluded\", booleanAttribute], nzRange: [\"nzRange\", \"nzRange\", booleanAttribute], nzVertical: [\"nzVertical\", \"nzVertical\", booleanAttribute], nzReverse: [\"nzReverse\", \"nzReverse\", booleanAttribute], nzDefaultValue: \"nzDefaultValue\", nzMarks: \"nzMarks\", nzMax: [\"nzMax\", \"nzMax\", numberAttribute], nzMin: [\"nzMin\", \"nzMin\", numberAttribute], nzStep: [\"nzStep\", \"nzStep\", numberAttributeWithZeroFallback], nzTooltipVisible: \"nzTooltipVisible\", nzTooltipPlacement: \"nzTooltipPlacement\", nzTipFormatter: \"nzTipFormatter\" }, outputs: { nzOnAfterChange: \"nzOnAfterChange\" }, host: { listeners: { \"keydown\": \"onKeyDown($event)\" }, properties: { \"class.ant-slider-rtl\": \"dir === 'rtl'\", \"class.ant-slider-disabled\": \"nzDisabled\", \"class.ant-slider-vertical\": \"nzVertical\", \"class.ant-slider-with-marks\": \"marksArray\" }, classAttribute: \"ant-slider\" }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NzSliderComponent),\n multi: true\n }\n ], viewQueries: [{ propertyName: \"handlerComponents\", predicate: NzSliderHandleComponent, descendants: true }], exportAs: [\"nzSlider\"], usesOnChanges: true, ngImport: i0, template: `\n <div class=\"ant-slider-rail\"></div>\n <nz-slider-track\n [vertical]=\"nzVertical\"\n [included]=\"nzIncluded\"\n [offset]=\"track.offset!\"\n [length]=\"track.length!\"\n [reverse]=\"nzReverse\"\n [dir]=\"dir\"\n ></nz-slider-track>\n @if (marksArray) {\n <nz-slider-step\n [vertical]=\"nzVertical\"\n [min]=\"nzMin\"\n [max]=\"nzMax\"\n [lowerBound]=\"$any(bounds.lower)\"\n [upperBound]=\"$any(bounds.upper)\"\n [marksArray]=\"marksArray\"\n [included]=\"nzIncluded\"\n [reverse]=\"nzReverse\"\n ></nz-slider-step>\n }\n @for (handle of handles; track handle.value; let handleIndex = $index) {\n <nz-slider-handle\n [vertical]=\"nzVertical\"\n [reverse]=\"nzReverse\"\n [offset]=\"handle.offset!\"\n [value]=\"handle.value!\"\n [active]=\"handle.active\"\n [tooltipFormatter]=\"nzTipFormatter\"\n [tooltipVisible]=\"nzTooltipVisible\"\n [tooltipPlacement]=\"nzTooltipPlacement\"\n [dragging]=\"dragging()\"\n [dir]=\"dir\"\n (focusin)=\"onHandleFocusIn(handleIndex)\"\n ></nz-slider-handle>\n }\n @if (marksArray) {\n <nz-slider-marks\n [vertical]=\"nzVertical\"\n [min]=\"nzMin\"\n [max]=\"nzMax\"\n [lowerBound]=\"$any(bounds.lower)\"\n [upperBound]=\"$any(bounds.upper)\"\n [marksArray]=\"marksArray\"\n [included]=\"nzIncluded\"\n [reverse]=\"nzReverse\"\n ></nz-slider-marks>\n }\n `, isInline: true, dependencies: [{ kind: \"component\", type: NzSliderTrackComponent, selector: \"nz-slider-track\", inputs: [\"offset\", \"reverse\", \"dir\", \"length\", \"vertical\", \"included\"], exportAs: [\"nzSliderTrack\"] }, { kind: \"component\", type: NzSliderStepComponent, selector: \"nz-slider-step\", inputs: [\"lowerBound\", \"upperBound\", \"marksArray\", \"min\", \"max\", \"vertical\", \"included\", \"reverse\"], exportAs: [\"nzSliderStep\"] }, { kind: \"component\", type: NzSliderHandleComponent, selector: \"nz-slider-handle\", inputs: [\"vertical\", \"reverse\", \"offset\", \"value\", \"tooltipVisible\", \"tooltipPlacement\", \"tooltipFormatter\", \"active\", \"dir\", \"dragging\"], exportAs: [\"nzSliderHandle\"] }, { kind: \"component\", type: NzSliderMarksComponent, selector: \"nz-slider-marks\", inputs: [\"lowerBound\", \"upperBound\", \"marksArray\", \"min\", \"max\", \"vertical\", \"included\", \"reverse\"], exportAs: [\"nzSliderMarks\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzSliderComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: 'nz-slider',\n exportAs: 'nzSlider',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NzSliderComponent),\n multi: true\n }\n ],\n template: `\n <div class=\"ant-slider-rail\"></div>\n <nz-slider-track\n [vertical]=\"nzVertical\"\n [included]=\"nzIncluded\"\n [offset]=\"track.offset!\"\n [length]=\"track.length!\"\n [reverse]=\"nzReverse\"\n [dir]=\"dir\"\n ></nz-slider-track>\n @if (marksArray) {\n <nz-slider-step\n [vertical]=\"nzVertical\"\n [min]=\"nzMin\"\n [max]=\"nzMax\"\n [lowerBound]=\"$any(bounds.lower)\"\n [upperBound]=\"$any(bounds.upper)\"\n [marksArray]=\"marksArray\"\n [included]=\"nzIncluded\"\n [reverse]=\"nzReverse\"\n ></nz-slider-step>\n }\n @for (handle of handles; track handle.value; let handleIndex = $index) {\n <nz-slider-handle\n [vertical]=\"nzVertical\"\n [reverse]=\"nzReverse\"\n [offset]=\"handle.offset!\"\n [value]=\"handle.value!\"\n [active]=\"handle.active\"\n [tooltipFormatter]=\"nzTipFormatter\"\n [tooltipVisible]=\"nzTooltipVisible\"\n [tooltipPlacement]=\"nzTooltipPlacement\"\n [dragging]=\"dragging()\"\n [dir]=\"dir\"\n (focusin)=\"onHandleFocusIn(handleIndex)\"\n ></nz-slider-handle>\n }\n @if (marksArray) {\n <nz-slider-marks\n [vertical]=\"nzVertical\"\n [min]=\"nzMin\"\n [max]=\"nzMax\"\n [lowerBound]=\"$any(bounds.lower)\"\n [upperBound]=\"$any(bounds.upper)\"\n [marksArray]=\"marksArray\"\n [included]=\"nzIncluded\"\n [reverse]=\"nzReverse\"\n ></nz-slider-marks>\n }\n `,\n imports: [NzSliderTrackComponent, NzSliderStepComponent, NzSliderHandleComponent, NzSliderMarksComponent],\n host: {\n class: 'ant-slider',\n '[class.ant-slider-rtl]': `dir === 'rtl'`,\n '[class.ant-slider-disabled]': 'nzDisabled',\n '[class.ant-slider-vertical]': 'nzVertical',\n '[class.ant-slider-with-marks]': 'marksArray',\n '(keydown)': 'onKeyDown($event)'\n }\n }]\n }], propDecorators: { handlerComponents: [{\n type: ViewChildren,\n args: [NzSliderHandleComponent]\n }], nzDisabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzDots: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzIncluded: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzRange: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzVertical: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzReverse: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzDefaultValue: [{\n type: Input\n }], nzMarks: [{\n type: Input\n }], nzMax: [{\n type: Input,\n args: [{ transform: numberAttribute }]\n }], nzMin: [{\n type: Input,\n args: [{ transform: numberAttribute }]\n }], nzStep: [{\n type: Input,\n args: [{ transform: numberAttributeWithZeroFallback }]\n }], nzTooltipVisible: [{\n type: Input\n }], nzTooltipPlacement: [{\n type: Input\n }], nzTipFormatter: [{\n type: Input\n }], nzOnAfterChange: [{\n type: Output\n }] } });\nfunction getValueTypeNotMatchError() {\n return new Error(`The \"nzRange\" can't match the \"ngModel\"'s type, please check these properties: \"nzRange\", \"ngModel\", \"nzDefaultValue\".`);\n}\nfunction isValueRange(value) {\n if (value instanceof Array) {\n return value.length === 2;\n }\n else {\n return false;\n }\n}\nfunction generateHandlers(amount) {\n return Array(amount)\n .fill(0)\n .map(() => ({ offset: null, value: null, active: false }));\n}\n/**\n * Check if value is valid and throw error if value-type/range not match.\n */\nfunction assertValueValid(value, isRange) {\n if ((!isValueRange(value) && isNaN(value)) || (isValueRange(value) && value.some(v => isNaN(v)))) {\n return false;\n }\n return assertValueTypeMatch(value, isRange);\n}\n/**\n * Assert that if `this.nzRange` is `true`, value is also a range, vice versa.\n */\nfunction assertValueTypeMatch(value, isRange = false) {\n if (isValueRange(value) !== isRange) {\n throw getValueTypeNotMatchError();\n }\n return true;\n}\nfunction valuesEqual(valA, valB) {\n if (typeof valA !== typeof valB) {\n return false;\n }\n return isValueRange(valA) && isValueRange(valB) ? arraysEqual(valA, valB) : valA === valB;\n}\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzSliderModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzSliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.0\", ngImport: i0, type: NzSliderModule, imports: [NzSliderComponent,\n NzSliderTrackComponent,\n NzSliderHandleComponent,\n NzSliderStepComponent,\n NzSliderMarksComponent], exports: [NzSliderComponent,\n NzSliderTrackComponent,\n NzSliderHandleComponent,\n NzSliderStepComponent,\n NzSliderMarksComponent] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzSliderModule, imports: [NzSliderComponent,\n NzSliderHandleComponent] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzSliderModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n NzSliderComponent,\n NzSliderTrackComponent,\n NzSliderHandleComponent,\n NzSliderStepComponent,\n NzSliderMarksComponent\n ],\n exports: [\n NzSliderComponent,\n NzSliderTrackComponent,\n NzSliderHandleComponent,\n NzSliderStepComponent,\n NzSliderMarksComponent\n ]\n }]\n }] });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzMarks {\n}\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NzMarks, NzSliderComponent, NzSliderModule, NzSliderHandleComponent as ɵNzSliderHandleComponent, NzSliderMarksComponent as ɵNzSliderMarksComponent, NzSliderStepComponent as ɵNzSliderStepComponent, NzSliderTrackComponent as ɵNzSliderTrackComponent };\n\n","import { Component, computed, effect, inject, input, OnInit, output, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { UserStore } from '@app/core/stores';\r\nimport { ProjectMemberEntity, RdItemEntity } from '@pages/rd/models/rd.model';\r\nimport { RdPermissionService } from '@pages/rd/services/rd-permission.service';\r\nimport { NzButtonModule } from 'ng-zorro-antd/button';\r\nimport { NzPopconfirmModule } from 'ng-zorro-antd/popconfirm';\r\nimport { NzSliderModule } from 'ng-zorro-antd/slider';\r\ninterface ActionButton {\r\n key: 'start' | 'block' | 'resume' | 'complete' | 'advance';\r\n label: string;\r\n primary?: boolean;\r\n confirm?: {\r\n title: string;\r\n placement:\r\n | 'top'\r\n | 'topLeft'\r\n | 'topRight'\r\n | 'left'\r\n | 'right'\r\n | 'bottom'\r\n | 'bottomLeft'\r\n | 'bottomRight';\r\n };\r\n}\r\n\r\n@Component({\r\n selector: 'app-rd-action-area',\r\n imports: [NzButtonModule, NzPopconfirmModule, NzSliderModule, FormsModule],\r\n templateUrl: './rd-action-area.component.html',\r\n styleUrl: './rd-action-area.component.less',\r\n})\r\nexport class RdActionAreaComponent {\r\n private readonly rdPermission = inject(RdPermissionService);\r\n private readonly userStore = inject(UserStore);\r\n readonly item = input.required<RdItemEntity>();\r\n readonly busy = input();\r\n\r\n readonly actionClick = output<'start' | 'block' | 'resume' | 'complete' | 'advance'>();\r\n readonly deleteClick = output<void>();\r\n readonly progressChange = output<number>();\r\n\r\n // 项目成员\r\n members = input<ProjectMemberEntity[]>([]);\r\n // 当前用户id\r\n currentUser = computed(() => this.userStore.currentUser());\r\n currentUserId = computed(() => this.userStore.currentUserId());\r\n\r\n readonly progressDraft = signal(0);\r\n\r\n constructor() {\r\n effect(() => {\r\n this.item()?.progress && this.progressDraft.set(this.item()?.progress);\r\n });\r\n }\r\n\r\n // 行动按钮\r\n readonly actionButtons = computed<ActionButton[]>(() => {\r\n const current = this.item();\r\n if (!current) {\r\n return [];\r\n }\r\n switch (current.status) {\r\n case 'todo':\r\n return this.canStart() ? [{ key: 'start' as const, label: '开始', primary: true }] : [];\r\n case 'doing':\r\n if (this.canBlock() && this.canComplete()) {\r\n return [\r\n { key: 'block' as const, label: '阻塞', primary: false },\r\n {\r\n key: 'complete' as const,\r\n label: '完成',\r\n primary: true,\r\n confirm: { title: '确认完成该研发项吗?', placement: 'topRight' },\r\n },\r\n ];\r\n }\r\n if (this.canBlock()) {\r\n return [{ key: 'block' as const, label: '阻塞', primary: false }];\r\n }\r\n return this.canComplete()\r\n ? [\r\n {\r\n key: 'complete' as const,\r\n label: '完成',\r\n primary: true,\r\n confirm: { title: '确认完成该研发项吗?', placement: 'topRight' },\r\n },\r\n ]\r\n : [];\r\n case 'blocked':\r\n return this.canResume()\r\n ? [\r\n {\r\n key: 'resume' as const,\r\n label: '继续',\r\n primary: true,\r\n confirm: { title: '确认继续该研发项吗?', placement: 'topRight' },\r\n },\r\n ]\r\n : [];\r\n // case 'done':\r\n // return this.canAdvance()\r\n // ? [{ key: 'advance' as const, label: '进入下一阶段', primary: true }]\r\n // : [];\r\n // case 'accepted':\r\n // return this.canAdvance()\r\n // ? [{ key: 'advance' as const, label: '进入下一阶段', primary: true }]\r\n // : [];\r\n default:\r\n return [];\r\n }\r\n });\r\n\r\n saveProgress(): void {\r\n if (!this.progressDirty() || this.busy()) {\r\n return;\r\n }\r\n this.progressChange.emit(this.progressDraft());\r\n }\r\n\r\n // 更新进度条\r\n updateProgressDraft(value: number): void {\r\n this.progressDraft.set(Math.max(0, Math.min(100, Number(value ?? 0))));\r\n }\r\n\r\n // 重置进度\r\n resetProgress(): void {\r\n this.progressDraft.set(this.item()?.progress ?? 0);\r\n }\r\n\r\n readonly progressDirty = computed(() => this.progressDraft() !== (this.item()?.progress ?? 0));\r\n\r\n // 权限相关计算属性\r\n readonly canEditProgress = computed(() => {\r\n if (!this.rdPermission.hasPermissionToTransition(this.currentUser())) return false;\r\n return this.rdPermission.canEditProgress(this.item(), this.currentUserId());\r\n });\r\n\r\n readonly canStart = computed(() => {\r\n if (!this.rdPermission.hasPermissionToTransition(this.currentUser())) return false;\r\n return this.rdPermission.canStart(this.item(), this.currentUserId());\r\n });\r\n\r\n readonly canComplete = computed(() => {\r\n if (!this.rdPermission.hasPermissionToTransition(this.currentUser())) return false;\r\n return this.rdPermission.canComplete(this.item(), this.currentUserId());\r\n });\r\n\r\n readonly canEditBasic = computed(() => {\r\n if (!this.rdPermission.hasPermissionToEdit(this.currentUser())) return false;\r\n return this.rdPermission.canEditBasic(this.item(), this.currentUserId(), this.members());\r\n });\r\n\r\n readonly canDelete = computed(() => {\r\n if (!this.rdPermission.hasPermissionToDelete(this.currentUser())) return false;\r\n return this.rdPermission.canDelete(this.item(), this.currentUserId(), this.members());\r\n });\r\n\r\n readonly canBlock = computed(() => {\r\n if (!this.rdPermission.hasPermissionToTransition(this.currentUser())) return false;\r\n return this.rdPermission.canBlock(this.item(), this.currentUserId(), this.members());\r\n });\r\n\r\n readonly canResume = computed(() => {\r\n if (!this.rdPermission.hasPermissionToTransition(this.currentUser())) return false;\r\n return this.rdPermission.canResume(this.item(), this.currentUserId(), this.members());\r\n });\r\n\r\n readonly canAdvance = computed(() => {\r\n if (!this.rdPermission.hasPermissionToTransition(this.currentUser())) return false;\r\n return this.rdPermission.canAdvance(this.item(), this.currentUserId(), this.members());\r\n });\r\n\r\n readonly allowProgressEdit = computed(() => {\r\n const status = this.item()?.status;\r\n return this.canEditProgress() && !!status && status !== 'closed';\r\n });\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, computed, input, output } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { PRIORITY_LABELS } from '@app/shared/constants/priority-options';\r\nimport { RD_STATUS_LABELS } from '@app/shared/constants/status-options';\r\nimport {\r\n ProjectMemberEntity,\r\n RdItemEntity,\r\n RdItemPriority,\r\n RdItemStatus,\r\n RdLogEntity,\r\n RdStageEntity,\r\n} from '@pages/rd/models/rd.model';\r\nimport { NzCardModule } from 'ng-zorro-antd/card';\r\nimport { NzDescriptionsModule } from 'ng-zorro-antd/descriptions';\r\nimport { NzDrawerModule, NzDrawerPlacement } from 'ng-zorro-antd/drawer';\r\nimport { NzEmptyModule } from 'ng-zorro-antd/empty';\r\nimport { NzIconModule } from 'ng-zorro-antd/icon';\r\nimport { NzInputModule } from 'ng-zorro-antd/input';\r\nimport { NzTimelineModule } from 'ng-zorro-antd/timeline';\r\nimport { RdActionAreaComponent } from './rd-action-area/rd-action-area.component';\r\nimport { DetailItemCardComponent } from '@app/shared/ui/detail-item-card.component/detail-item-card.component';\r\n\r\n@Component({\r\n selector: 'app-rd-detail',\r\n standalone: true,\r\n imports: [\r\n NzDrawerModule,\r\n NzIconModule,\r\n NzCardModule,\r\n NzDescriptionsModule,\r\n NzTimelineModule,\r\n CommonModule,\r\n NzInputModule,\r\n NzEmptyModule,\r\n FormsModule,\r\n RdActionAreaComponent,\r\n DetailItemCardComponent,\r\n ],\r\n template: `\r\n <nz-drawer\r\n [nzVisible]=\"open()\"\r\n [nzClosable]=\"true\"\r\n [nzMaskClosable]=\"true\"\r\n [nzWidth]=\"776\"\r\n [nzWrapClassName]=\"'rd-detail-drawer'\"\r\n [nzMask]=\"false\"\r\n [nzTitle]=\"drawerTitleTpl\"\r\n (nzOnClose)=\"closeDetaile()\"\r\n >\r\n <ng-template #drawerTitleTpl>\r\n <div class=\"title-wrap\">\r\n <div class=\"title-main\">\r\n @if (subtitleText(); as subtitle) {\r\n <span class=\"subtitle\">{{ subtitle }}</span>\r\n }\r\n <strong>{{ titleText() }}</strong>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template nzDrawerContent>\r\n @if (!rdItem()) {\r\n <nz-empty></nz-empty>\r\n } @else {\r\n <div class=\"detail-wrap\">\r\n <app-detail-item-card title=\"操作\">\r\n <app-rd-action-area\r\n [item]=\"rdItem()!\"\r\n (actionClick)=\"this.actionClick.emit($event)\"\r\n (progressChange)=\"this.progressChange.emit($event)\"\r\n (deleteClick)=\"this.deleteClick.emit()\"\r\n [members]=\"members()\"\r\n [busy]=\"busy()\"\r\n ></app-rd-action-area>\r\n </app-detail-item-card>\r\n\r\n <app-detail-item-card title=\"研发项描述\">\r\n <nz-descriptions nzBordered nzSize=\"small\">\r\n <nz-descriptions-item nzTitle=\"研发项\" [nzSpan]=\"3\">\r\n {{ titleText() }}\r\n </nz-descriptions-item>\r\n <nz-descriptions-item nzTitle=\"研发项描述\" [nzSpan]=\"3\">\r\n {{ rdItem()!.description }}\r\n </nz-descriptions-item>\r\n <nz-descriptions-item nzTitle=\"执行人\">\r\n {{ rdItem()!.assigneeName }}\r\n </nz-descriptions-item>\r\n <nz-descriptions-item nzTitle=\"验收人\">\r\n {{ rdItem()!.reviewerName ?? '_' }}\r\n </nz-descriptions-item>\r\n <nz-descriptions-item nzTitle=\"进度\"\r\n >{{ rdItem()!.progress }}%</nz-descriptions-item\r\n >\r\n <nz-descriptions-item nzTitle=\"状态\">\r\n {{ getStatusLabel(rdItem()!.status) }}\r\n </nz-descriptions-item>\r\n <nz-descriptions-item nzTitle=\"优先级\">\r\n {{ getPriorityLabel(rdItem()!.priority) }}\r\n </nz-descriptions-item>\r\n <nz-descriptions-item nzTitle=\"阶段\">\r\n {{ getStagesName(rdItem()!.stageId) }}\r\n </nz-descriptions-item>\r\n <nz-descriptions-item nzTitle=\"计划开始\">\r\n {{ (rdItem()!.planStartAt | date: 'yyyy-MM-dd') ?? '_' }}\r\n </nz-descriptions-item>\r\n <nz-descriptions-item nzTitle=\"计划结束\">\r\n {{ (rdItem()!.planEndAt | date: 'yyyy-MM-dd') ?? '_' }}\r\n </nz-descriptions-item>\r\n <nz-descriptions-item nzTitle=\"创建时间\">\r\n {{ (rdItem()!.createdAt | date: 'yyyy-MM-dd HH:mm:ss') ?? '_' }}\r\n </nz-descriptions-item>\r\n </nz-descriptions>\r\n </app-detail-item-card>\r\n\r\n <app-detail-item-card title=\"研发动态\">\r\n <nz-timeline>\r\n @for (log of logs(); track log.id) {\r\n <nz-timeline-item>\r\n <div class=\"rd-log-item\">\r\n <div class=\"meta\">\r\n <span class=\"operator\">{{ log.operatorName || '系统' }}</span>\r\n <span class=\"content\">{{ log.content || log.actionType }}</span>\r\n <span class=\"time\">{{ log.createdAt | date: 'MM/dd HH:mm' }}</span>\r\n </div>\r\n </div>\r\n </nz-timeline-item>\r\n }\r\n @if (logs().length === 0) {\r\n <nz-timeline-item>\r\n <span class=\"empty\">暂无动态</span>\r\n </nz-timeline-item>\r\n }\r\n </nz-timeline>\r\n </app-detail-item-card>\r\n </div>\r\n }\r\n </ng-template>\r\n </nz-drawer>\r\n `,\r\n styles: `\r\n .title-wrap {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n .subtitle {\r\n margin-right: 1rem;\r\n font-size: 12px;\r\n line-height: 1.4;\r\n padding: 3px 8px;\r\n border-radius: 4px;\r\n white-space: nowrap;\r\n background: #f1f5f9;\r\n color: #64748b;\r\n }\r\n }\r\n .wrap-title {\r\n width: 100%;\r\n margin-bottom: 12px;\r\n font-size: 18px;\r\n font-weight: bold;\r\n border-bottom: 1px solid #bbbbbb;\r\n }\r\n .detail-wrap {\r\n .detail-item {\r\n margin-bottom: 20px;\r\n }\r\n .edit-bar {\r\n width: 100%;\r\n display: flex;\r\n justify-content: end;\r\n .edit-btn {\r\n margin-top: 10px;\r\n }\r\n }\r\n .edit-area {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 12px;\r\n }\r\n .rd-log-item {\r\n padding: 4px 0 0;\r\n .meta {\r\n display: flex;\r\n align-items: center;\r\n gap: 0.875rem;\r\n color: rgba(0, 0, 0, 0.65);\r\n font-size: 1rem;\r\n margin-bottom: 4px;\r\n .operator {\r\n font-weight: bold;\r\n }\r\n .content {\r\n color: rgba(0, 0, 0, 0.85);\r\n font-size: 14px;\r\n }\r\n .time {\r\n fornsize: 10px;\r\n font-weight: 300;\r\n color: #bbbbbb;\r\n margin-left: auto;\r\n }\r\n }\r\n .empty {\r\n color: rgba(0, 0, 0, 0.45);\r\n }\r\n }\r\n }\r\n\r\n ::ng-deep .ant-descriptions-item-content,\r\n ::ng-deep .ant-descriptions-item-label {\r\n font-size: 0.875rem;\r\n }\r\n `,\r\n})\r\nexport class RdDetailComponent {\r\n readonly rdItem = input.required<RdItemEntity | null>();\r\n readonly open = input(false);\r\n readonly busy = input(false);\r\n readonly logs = input<RdLogEntity[]>([]);\r\n readonly members = input<ProjectMemberEntity[]>([]);\r\n readonly stages = input<RdStageEntity[]>([]);\r\n\r\n readonly close = output();\r\n readonly actionClick = output<'start' | 'block' | 'resume' | 'complete' | 'advance'>();\r\n readonly progressChange = output<number>();\r\n readonly deleteClick = output<void>();\r\n\r\n readonly subtitleText = computed(() => this.rdItem()?.rdNo || '');\r\n readonly titleText = computed(() => this.rdItem()?.title || '研发项详情');\r\n\r\n getPriorityLabel(priority: RdItemPriority) {\r\n return PRIORITY_LABELS[priority];\r\n }\r\n\r\n getStatusLabel(status: RdItemStatus) {\r\n return RD_STATUS_LABELS[status];\r\n }\r\n\r\n closeDetaile() {\r\n this.close.emit();\r\n }\r\n\r\n getStagesName(stageId: string | null) {\r\n if (!stageId) return '';\r\n const stage = this.stages().find((stage) => {\r\n return stage.id === stageId;\r\n });\r\n return stage?.name ?? '';\r\n }\r\n}\r\n","/* src/app/pages/rd/rd-list-board/rd-list-board.component.less */\n.cards-list {\n width: 100%;\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));\n gap: 16px;\n}\n.cards-list .items-card {\n flex-grow: 1;\n overflow: hidden;\n}\n.cards-list .card-title {\n width: 100%;\n display: flex;\n align-items: center;\n}\n.cards-list .card-title span {\n margin-right: auto;\n}\n.rd-title {\n color: #1677ff;\n font-weight: 500;\n cursor: pointer;\n}\n:host ::ng-deep .ant-card-head {\n height: 48px;\n padding: 0 12px;\n}\n:host ::ng-deep .ant-card-head-title {\n padding: 10px 0;\n}\n:host ::ng-deep .ant-card-body {\n display: flex;\n flex-direction: column;\n gap: 10px;\n overflow: auto;\n padding: 0 12px;\n}\n:host ::ng-deep .ant-card-bordered {\n border: 1px solid #e7e7e7;\n border-radius: 8px;\n}\n/*# sourceMappingURL=rd-list-board.component.css.map */\n","/* src/app/pages/rd/rd-item-card/rd-item-card.component.less */\n.task-card {\n width: 100%;\n background: #ffffff;\n border-radius: 8px;\n box-shadow:\n 0 2px 18px rgba(65, 65, 65, 0.027),\n 0 0 0 1px rgba(63, 63, 63, 0.02),\n 0 4px 6px rgba(0, 0, 0, 0.03);\n transition: all 0.25s ease;\n overflow: hidden;\n -webkit-backdrop-filter: blur(0px);\n backdrop-filter: blur(0px);\n cursor: pointer;\n}\n.task-card:hover {\n transform: translateY(-2px);\n box-shadow: 0 12px 32px -12px rgba(0, 0, 0, 0.15), 0 0 0 1px rgba(0, 0, 0, 0.03);\n}\n.task-card-active {\n transform: translateY(2px);\n box-shadow: 0 4px 12px -4px rgba(0, 0, 0, 0.15), 0 0 0 1px rgba(0, 0, 0, 0.03);\n border: 1px solid #188fff75;\n}\n.priority-left-bar {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 4px;\n}\n.card-content {\n padding: 10px;\n}\n.card-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 4px;\n}\n.task-id {\n font-size: 12px;\n font-weight: 500;\n letter-spacing: 0.3px;\n background: #f3f4f8;\n padding: 2px 10px;\n border-radius: 40px;\n color: #94a3b8;\n font-family:\n \"SF Mono\",\n \"Fira Code\",\n monospace;\n background: #f1f5f9;\n display: inline-block;\n}\n.task-title {\n font-size: 16px;\n font-weight: 600;\n line-height: 1.4;\n color: #0f172a;\n letter-spacing: -0.2px;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-break: break-word;\n}\n.progress-section {\n margin-bottom: 0px;\n}\n.meta-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 12px;\n}\n.assignee {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n.assignee-name {\n font-size: 12px;\n font-weight: 500;\n color: #1e293b;\n}\n.due-date {\n display: flex;\n align-items: center;\n gap: 6px;\n background: #f8fafc;\n padding: 4px 10px;\n border-radius: 40px;\n font-size: 12px;\n color: #334155;\n font-weight: 500;\n}\n.footer-note {\n font-size: 11px;\n color: #94a3b8;\n display: flex;\n justify-content: flex-end;\n margin-top: 8px;\n}\n@media (max-width: 480px) {\n .demo-grid {\n gap: 16px;\n }\n .task-card {\n width: 100%;\n max-width: 380px;\n }\n}\n:host ::ng-deep .progress-section {\n margin: 0;\n}\n/*# sourceMappingURL=rd-item-card.component.css.map */\n","import { Component, computed, input, Input, output } from '@angular/core';\r\nimport { NzAvatarModule } from 'ng-zorro-antd/avatar';\r\nimport { NzIconModule } from 'ng-zorro-antd/icon';\r\nimport { NzProgressModule } from 'ng-zorro-antd/progress';\r\nimport { NzTagModule } from 'ng-zorro-antd/tag';\r\nimport { RdItemEntity, RdItemPriority, RdItemStatus, RdStageEntity } from '../models/rd.model';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PRIORITY_COLORS, PRIORITY_LABELS } from '@app/shared/constants/priority-options';\r\nimport { RD_STATUS_LABELS } from '@app/shared/constants/status-options';\r\nconst PRIORITY_COLOR_MAP = {\r\n low: 'default', // 灰\r\n medium: 'processing', // 蓝\r\n high: 'warning', // 橙\r\n critical: 'error', // 红\r\n};\r\n\r\n@Component({\r\n selector: 'app-rd-item-card',\r\n imports: [NzProgressModule, NzTagModule, NzAvatarModule, NzIconModule, CommonModule],\r\n template: `\r\n <div\r\n class=\"task-card\"\r\n [ngClass]=\"{ 'task-card-active': selected() }\"\r\n (click)=\"selectItem.emit(rdItem())\"\r\n >\r\n <!-- 侧边紧急条 -->\r\n <div\r\n [class.priority-left-bar]=\"selected()\"\r\n class=\"priority-left-bar\"\r\n [style.background]=\"'#1890ff'\"\r\n ></div>\r\n <div class=\"card-content\">\r\n <div class=\"card-header\">\r\n <span class=\"task-id\">{{ rdItem().rdNo }}</span>\r\n <div class=\"badge-row\">\r\n <nz-tag [nzColor]=\"'blue'\" class=\"tag\">{{ getStageName(rdItem().stageId) }}</nz-tag>\r\n <nz-tag [nzColor]=\"getPriorityColor(rdItem().priority)\" class=\"tag\">{{\r\n getPriorityLabel(rdItem().priority)\r\n }}</nz-tag>\r\n </div>\r\n </div>\r\n <div class=\"task-title\">{{ rdItem().title }}</div>\r\n <div class=\"progress-section\">\r\n <nz-progress [nzPercent]=\"rdItem().progress\" nzSize=\"small\" />\r\n </div>\r\n\r\n <div class=\"meta-row\">\r\n <div class=\"assignee\">\r\n <nz-avatar [nzText]=\"rdItem().assigneeName?.charAt(0) ?? '?'\" nzSize=\"small\" />\r\n <span class=\"assignee-name\">{{ rdItem().assigneeName }}</span>\r\n </div>\r\n <div class=\"due-date\">\r\n <!-- 这里紧急时可以标红色标记 -->\r\n <nz-icon nzType=\"calendar\" nzTheme=\"outline\" />\r\n {{ rdItem().planEndAt | date: 'yyyy-MM-dd' }}\r\n </div>\r\n </div>\r\n <!-- <div class=\"footer-note\">\r\n 剩余 5 天\r\n </div> -->\r\n </div>\r\n </div>\r\n `,\r\n styleUrl: './rd-item-card.component.less',\r\n})\r\nexport class RdItemCardComponent {\r\n rdItem = input.required<RdItemEntity>();\r\n stages = input<RdStageEntity[]>([]);\r\n selected = input<boolean>(false);\r\n selectItem = output<RdItemEntity>();\r\n\r\n getPriorityColor(priority: RdItemPriority) {\r\n return PRIORITY_COLORS[priority];\r\n }\r\n\r\n getPriorityLabel(priority: RdItemPriority) {\r\n return PRIORITY_LABELS[priority];\r\n }\r\n\r\n getStatusLabel(status: RdItemStatus) {\r\n return RD_STATUS_LABELS[status];\r\n }\r\n\r\n getStageName(stageId: string | null) {\r\n const stage = this.stages().find((s) => s.id === stageId);\r\n return stage ? stage.name : '-';\r\n }\r\n\r\n getStagesName(stageId: string | null) {\r\n if (!stageId) return '';\r\n const stage = this.stages().find((stage) => {\r\n return stage.id === stageId;\r\n });\r\n return stage?.name ?? '';\r\n }\r\n}\r\n","import { Component, computed, input, output } from '@angular/core';\r\nimport { NzBadgeModule } from 'ng-zorro-antd/badge';\r\nimport { NzCardModule } from 'ng-zorro-antd/card';\r\nimport { NzTagModule } from 'ng-zorro-antd/tag';\r\nimport { RdItemCardComponent } from '../rd-item-card/rd-item-card.component';\r\nimport { RdItemEntity, RdStageEntity } from '../models/rd.model';\r\n\r\nconst PRIORITY_ORDER = {\r\n critical: 4,\r\n high: 3,\r\n medium: 2,\r\n low: 1,\r\n};\r\n\r\n@Component({\r\n selector: 'app-rd-list-board',\r\n imports: [NzCardModule, NzBadgeModule, NzTagModule, RdItemCardComponent],\r\n template: `\r\n <div class=\"cards-list\">\r\n @if (rdItems().length > 0) {\r\n @for (col of listCards; track col.key) {\r\n <nz-card [nzTitle]=\"cardTitleTpl\" class=\"items-card\">\r\n @for (item of ItemsGroupedByStatus().get(col.key); track item.id) {\r\n <app-rd-item-card\r\n [rdItem]=\"item\"\r\n [stages]=\"stages()\"\r\n (selectItem)=\"select($event)\"\r\n [selected]=\"selectedItem()?.id === item.id\"\r\n />\r\n }\r\n </nz-card>\r\n <ng-template #cardTitleTpl>\r\n <div class=\"card-title\">\r\n <nz-badge [nzColor]=\"col.color\" />\r\n <span>{{ col.title }}</span>\r\n <nz-badge\r\n nzStandalone\r\n nzShowZero\r\n [nzCount]=\"ItemsGroupedByStatus().get(col.key)?.length ?? 0\"\r\n [nzStyle]=\"{ backgroundColor: col.color }\"\r\n />\r\n </div>\r\n </ng-template>\r\n }\r\n }\r\n </div>\r\n `,\r\n styleUrl: './rd-list-board.component.less',\r\n})\r\nexport class RdListBoardComponent {\r\n readonly rdItems = input<RdItemEntity[]>([]);\r\n readonly stages = input<RdStageEntity[]>([]);\r\n readonly selectedItem = input<RdItemEntity | null>(null);\r\n selectItem = output<RdItemEntity>();\r\n\r\n listCards = [\r\n {\r\n key: 'todo',\r\n title: '待开始',\r\n color: '#d9d9d9',\r\n },\r\n {\r\n key: 'doing',\r\n title: '进行中',\r\n color: '#1890ff',\r\n },\r\n {\r\n key: 'blocked',\r\n title: '阻塞',\r\n color: '#ef7735',\r\n },\r\n {\r\n key: 'done',\r\n title: '待验收',\r\n color: '#52c41a',\r\n },\r\n ];\r\n\r\n // TODO:后面可以改成按照stage分组\r\n ItemsGroupedByStatus = computed(() => {\r\n const map = new Map<string, any[]>();\r\n for (const item of this.rdItems()) {\r\n const key = item.status;\r\n if (!map.has(key)) {\r\n map.set(key, []);\r\n }\r\n map.get(key)!.push(item);\r\n }\r\n // 对每个分组内部排序(高 -> 低)\r\n for (const list of map.values()) {\r\n list.sort(\r\n (a, b) =>\r\n PRIORITY_ORDER[b.priority as keyof typeof PRIORITY_ORDER] -\r\n PRIORITY_ORDER[a.priority as keyof typeof PRIORITY_ORDER],\r\n );\r\n }\r\n return map;\r\n });\r\n\r\n select(item: RdItemEntity) {\r\n this.selectItem.emit(item);\r\n }\r\n}\r\n","/* angular:styles/component:less;ba7780184c67aae019d31a8d987f3c1e632dd346a121d359a3226d06c3b68410;D:\\ng-manager\\webapp\\src\\app\\pages\\rd\\rd-list-table\\rd-list-table.component.ts */\n.title-col .rd-title {\n font-weight: 500;\n font-size: 1rem;\n cursor: pointer;\n}\n.title-col .rd-no {\n padding-left: 0.5rem;\n color: gray;\n font-size: 0.8rem;\n}\n.rd-item-row {\n cursor: pointer;\n}\n/*# sourceMappingURL=rd-list-table.component.css.map */\n","import { Component, input, output } from '@angular/core';\r\nimport { NzTableModule } from 'ng-zorro-antd/table';\r\nimport { RdItemEntity, RdItemPriority, RdItemStatus, RdStageEntity } from '../models/rd.model';\r\nimport { PRIORITY_COLORS, PRIORITY_LABELS } from '@app/shared/constants/priority-options';\r\nimport { NzButtonModule } from 'ng-zorro-antd/button';\r\nimport { NzProgressModule } from 'ng-zorro-antd/progress';\r\nimport { NzTagModule } from 'ng-zorro-antd/tag';\r\nimport {\r\n RD_STATUS_COLORS,\r\n RD_STATUS_FILTER_OPTIONS,\r\n RD_STATUS_LABELS,\r\n} from '@app/shared/constants/status-options';\r\nimport { CommonModule, DatePipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-rd-list-table',\r\n imports: [NzTableModule, NzButtonModule, NzProgressModule, NzTagModule, CommonModule, DatePipe],\r\n template: `\r\n <nz-table\r\n [nzData]=\"rdItems()\"\r\n [nzFrontPagination]=\"false\"\r\n [nzShowPagination]=\"false\"\r\n [nzShowSizeChanger]=\"true\"\r\n class=\"rd-list\"\r\n >\r\n <thead>\r\n <tr>\r\n <th nzWidth=\"30%\">研发项</th>\r\n <th nzWidth=\"10%\">阶段</th>\r\n <th nzWidth=\"7%\">状态</th>\r\n <th nzWidth=\"7%\">优先级</th>\r\n <th nzWidth=\"7%\">负责人</th>\r\n <th nzWidth=\"11%\">进度</th>\r\n <th nzWidth=\"10%\">更新时间</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (item of rdItems(); track item.id) {\r\n <tr\r\n (click)=\"selectItem.emit(item)\"\r\n [style.background-color]=\"item.id === selectedItem()?.id ? '#1890ff24' : ''\"\r\n class=\"rd-item-row\"\r\n >\r\n <td class=\"title-col\">\r\n <span class=\"rd-title\"> {{ item.title }} </span><br />\r\n <span class=\"rd-no\">{{ item.rdNo }}</span>\r\n </td>\r\n <td>{{ getStagesName(item.stageId) || '-' }}</td>\r\n <td>\r\n <nz-tag [nzColor]=\"getStatusColor(item.status)\">\r\n {{ getStatusLabel(item.status) }}</nz-tag\r\n >\r\n </td>\r\n <td>\r\n <nz-tag [nzColor]=\"getPriorityColor(item.priority)\">{{\r\n getPriorityLabel(item.priority)\r\n }}</nz-tag>\r\n </td>\r\n <td>{{ item.assigneeName || '-' }}</td>\r\n <td><nz-progress [nzPercent]=\"item.progress\" nzSize=\"small\" /></td>\r\n <td>{{ item.updatedAt | date: 'MM-dd HH:mm' }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </nz-table>\r\n `,\r\n styles: `\r\n .title-col {\r\n .rd-title {\r\n font-weight: 500;\r\n font-size: 1rem;\r\n cursor: pointer;\r\n }\r\n .rd-no {\r\n padding-left: 0.5rem;\r\n color: gray;\r\n font-size: 0.8rem;\r\n }\r\n }\r\n .rd-item-row {\r\n cursor: pointer;\r\n }\r\n `,\r\n})\r\nexport class RdListTableComponent {\r\n readonly rdItems = input.required<RdItemEntity[]>();\r\n readonly selectedItem = input<RdItemEntity | null>(null);\r\n readonly stages = input<RdStageEntity[]>([]);\r\n readonly selectItem = output<RdItemEntity>();\r\n\r\n getPriorityColor(priority: RdItemPriority) {\r\n return PRIORITY_COLORS[priority];\r\n }\r\n\r\n getPriorityLabel(priority: RdItemPriority) {\r\n return PRIORITY_LABELS[priority];\r\n }\r\n\r\n getStatusLabel(status: RdItemStatus) {\r\n return RD_STATUS_LABELS[status];\r\n }\r\n\r\n getStatusColor(status: RdItemStatus) {\r\n return RD_STATUS_COLORS[status];\r\n }\r\n\r\n getStagesName(stageId: string | null) {\r\n if (!stageId) return '';\r\n const stage = this.stages().find((stage) => {\r\n return stage.id === stageId;\r\n });\r\n return stage?.name ?? '';\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { ApiClient } from '@app/core';\r\nimport { ProjectContextStore } from '@app/core/stores';\r\ntype RdActionType =\r\n | 'accept'\r\n | 'start'\r\n | 'progress'\r\n | 'update'\r\n | 'block'\r\n | 'resume'\r\n | 'complete'\r\n | 'close'\r\n | 'delete';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RdTokenApiService {\r\n private apiClient: ApiClient = inject(ApiClient);\r\n private projectContext = inject(ProjectContextStore)\r\n\r\n /**\r\n * 通过个人token 操作hub v2 的数据(写操作)\r\n */\r\n async rdPostReqWithPK<T>(body: {\r\n // projectId: string;\r\n rdId: string;\r\n // type: 'issues' | 'rd-items';\r\n action: RdActionType;\r\n payload: Object; //{content:string}\r\n }) {\r\n const projectId = this.projectContext.currentProjectId()!;\r\n return this.apiClient.hubRequestWithPersonalToken<T>({\r\n projectId: projectId,\r\n method: 'POST',\r\n path: `/rd-items/${body.rdId}/${body.action}`,\r\n payload: body.payload,\r\n });\r\n }\r\n\r\n /**\r\n * 通过个人token 操作hub v2 的数据(删除操作)\r\n */\r\n async rdDeleteReqWithPK<T>(body: {\r\n // projectId: string;\r\n rdId: string;\r\n // type: 'issues' | 'rd-items';\r\n payload: Object; //{content:string}\r\n }) {\r\n const projectId = this.projectContext.currentProjectId()!;\r\n return this.apiClient.hubRequestWithPersonalToken<T>({\r\n projectId: projectId,\r\n method: 'DELETE',\r\n path: `/rd-items/${body.rdId}`,\r\n payload: body.payload,\r\n });\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { ApiClient } from '@app/core';\r\nimport {\r\n AdvanceRdStageInput,\r\n BlockRdItemInput,\r\n RdItemEntity,\r\n RdListQuery,\r\n RdListResult,\r\n RdStageEntity,\r\n UpdateRdItemInput,\r\n UpdateRdProgressInput,\r\n} from '../models/rd.model';\r\nimport { RdTokenApiService } from './rd-token-api.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RdApiService {\r\n private readonly apiClient = inject(ApiClient);\r\n private readonly rdTokenApi = inject(RdTokenApiService);\r\n\r\n async delete(projectId: string, itemId: string) {\r\n return await this.rdTokenApi.rdDeleteReqWithPK<RdItemEntity>({\r\n rdId: itemId,\r\n payload: {},\r\n });\r\n }\r\n\r\n async close(projectId: string, itemId: string, summary: string): Promise<RdItemEntity> {\r\n return await this.rdTokenApi.rdPostReqWithPK<RdItemEntity>({\r\n rdId: itemId,\r\n action: 'close',\r\n payload: { summary },\r\n });\r\n }\r\n\r\n async accept(projectId: string, itemId: string) {\r\n return await this.rdTokenApi.rdPostReqWithPK<RdItemEntity>({\r\n rdId: itemId,\r\n action: 'accept',\r\n payload: {},\r\n });\r\n }\r\n\r\n async resolve(projectId: string, issueId: string, summary?: string) {\r\n return await this.rdTokenApi.rdPostReqWithPK<RdItemEntity>({\r\n rdId: issueId,\r\n action: 'complete',\r\n payload: { summary },\r\n });\r\n }\r\n\r\n // 阻塞后重开\r\n async resume(projectId: string, itemId: string): Promise<RdItemEntity> {\r\n return await this.rdTokenApi.rdPostReqWithPK<RdItemEntity>({\r\n rdId: itemId,\r\n action: 'resume',\r\n payload: {},\r\n });\r\n }\r\n\r\n async block(projectId: string, itemId: string, input: BlockRdItemInput): Promise<RdItemEntity> {\r\n return await this.rdTokenApi.rdPostReqWithPK<RdItemEntity>({\r\n rdId: itemId,\r\n action: 'block',\r\n payload: input,\r\n });\r\n }\r\n\r\n async start(projectId: string, itemId: string): Promise<RdItemEntity> {\r\n return await this.rdTokenApi.rdPostReqWithPK<RdItemEntity>({\r\n action: 'start',\r\n rdId: itemId,\r\n payload: {},\r\n });\r\n }\r\n\r\n async progress(\r\n projectId: string,\r\n itemId: string,\r\n input: UpdateRdProgressInput,\r\n ): Promise<RdItemEntity> {\r\n return await this.rdTokenApi.rdPostReqWithPK<RdItemEntity>({\r\n rdId: itemId,\r\n action: 'progress',\r\n payload: input,\r\n });\r\n }\r\n\r\n async advanceStage(rdId: string, input: AdvanceRdStageInput) {\r\n // return await this.rdTokenApi.rdPostReqWithPK<RdItemEntity>({\r\n // rdId,\r\n // action:'advance-stage',\r\n // })\r\n }\r\n\r\n async update(projectId: string, itemId: string, input: UpdateRdItemInput): Promise<RdItemEntity> {\r\n return await this.rdTokenApi.rdPostReqWithPK<RdItemEntity>({\r\n rdId: itemId,\r\n action: 'update',\r\n payload: { ...input },\r\n });\r\n }\r\n\r\n // TODO:后面统一设置项目key(现在默认为HUB)\r\n async getRdItemsList(projectId: string, query: RdListQuery) {\r\n return await this.apiClient.hubRequestWithPrjId<RdListResult>({\r\n projectId: projectId,\r\n path: '/rd-items',\r\n query: { ...query },\r\n });\r\n }\r\n async getRdItem(projectId: string, rdItemId: string) {\r\n return await this.apiClient.hubRequestWithPrjId<RdItemEntity>({\r\n projectId: projectId,\r\n path: `/rd-items/${rdItemId}`,\r\n });\r\n }\r\n\r\n async getRdStages(projectId: string) {\r\n return await this.apiClient.hubRequestWithPrjId<{ items: RdStageEntity[] }>({\r\n projectId: projectId,\r\n path: '/rd-stages',\r\n });\r\n }\r\n\r\n async getRdItemLogs(projectId: string, rdItemId: string): Promise<any> {\r\n return await this.apiClient.hubRequestWithPrjId({\r\n projectId: projectId,\r\n path: `/rd-items/${rdItemId}/logs`,\r\n });\r\n }\r\n\r\n async getProjectMenbers(projectId: string): Promise<any> {\r\n return await this.apiClient.hubRequestWithPrjId({\r\n projectId: projectId,\r\n path: '/projects/${projectId}/members',\r\n });\r\n }\r\n}\r\n","import { computed, inject, Injectable, signal } from '@angular/core';\r\nimport { ProjectContextStore } from '@app/core/stores/project-context/project-context.store';\r\nimport { UserStore } from '@app/core/stores/user/user.store';\r\nimport { from } from 'rxjs';\r\nimport {\r\n AdvanceRdStageInput,\r\n BlockRdItemInput,\r\n RdItemEntity,\r\n RdListQuery,\r\n RdLogEntity,\r\n RdStageEntity,\r\n UpdateRdItemInput,\r\n UpdateRdProgressInput\r\n} from '../models/rd.model';\r\nimport { RdApiService } from '../services/rd-api.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RdStore {\r\n private readonly rdApi = inject(RdApiService);\r\n private readonly projectContextStore = inject(ProjectContextStore);\r\n\r\n private readonly projectId = computed(() => this.projectContextStore.currentProjectId());\r\n\r\n private readonly rdItemsPageListState = signal<RdItemEntity[]>([]);\r\n private readonly rdItemsCountState = signal(0);\r\n private readonly currentRdItemState = signal<RdItemEntity | null>(null);\r\n private readonly currentRdLogsState = signal<RdLogEntity[]>([]);\r\n private readonly stagesState = signal<RdStageEntity[]>([]);\r\n private readonly projectMembersState = this.projectContextStore.currentProjectMembers;\r\n private readonly queryState = signal<RdListQuery>({\r\n page: 1,\r\n pageSize: 20,\r\n stageId: '',\r\n status: [],\r\n type: [],\r\n priority: [],\r\n assigneeId: '',\r\n keyword: '',\r\n });\r\n private readonly busyState = signal(false);\r\n private readonly loadingState = signal(false);\r\n\r\n readonly query = computed(() => this.queryState());\r\n readonly currentRdItem = computed(() => this.currentRdItemState());\r\n readonly currentRdLogs = computed(() => this.currentRdLogsState());\r\n readonly stages = computed(() => this.stagesState());\r\n readonly rdItemsCount = computed(() => this.rdItemsCountState());\r\n readonly rdItemsPageList = computed(() => this.rdItemsPageListState());\r\n readonly projectMembers = computed(() => this.projectMembersState());\r\n readonly busy = computed(() => this.busyState());\r\n readonly rdItemsLoading = computed(() => this.loadingState());\r\n\r\n initialize(): void {\r\n try {\r\n const projectId = this.projectId();\r\n if (!projectId) return;\r\n this.loadStages();\r\n this.loadRdItems();\r\n this.projectContextStore.loadProjectMembers(projectId);\r\n } catch (e) {}\r\n }\r\n\r\n async loadRdItems() {\r\n try {\r\n const projectId = this.projectId();\r\n if (!projectId) return;\r\n this.loadingState.set(true);\r\n const res = await this.rdApi.getRdItemsList(projectId, this.query());\r\n this.rdItemsPageListState.set(res.items);\r\n this.rdItemsCountState.set(res.total);\r\n this.loadingState.set(false);\r\n } catch (e) {\r\n this.loadingState.set(false);\r\n }\r\n }\r\n\r\n async loadStages() {\r\n const projectId = this.projectId();\r\n if(!projectId) return;\r\n try {\r\n const stages = (await this.rdApi.getRdStages(projectId)).items;\r\n this.stagesState.set(stages);\r\n } catch (e) {\r\n this.stagesState.set([]);\r\n }\r\n }\r\n\r\n async loadCurrentRdItem(itemId: string) {\r\n const projectId = this.projectId();\r\n if (!projectId) return;\r\n this.busyState.set(true);\r\n const itemRes = (await this.rdApi.getRdItem(projectId, itemId)) as RdItemEntity;\r\n const logsRes = (await this.rdApi.getRdItemLogs(projectId, itemId))\r\n .items as RdLogEntity[];\r\n this.currentRdItemState.set(itemRes);\r\n this.currentRdLogsState.set(logsRes);\r\n this.busyState.set(false);\r\n }\r\n\r\n setCurrentRdItem(item: RdItemEntity | null) {\r\n this.currentRdItemState.set(item);\r\n }\r\n\r\n updateQuery(patch: Partial<RdListQuery>): void {\r\n this.queryState.update((query) => ({\r\n ...query,\r\n ...patch,\r\n page: patch.page ?? query.page ?? 1,\r\n }));\r\n this.loadRdItems();\r\n }\r\n\r\n update(itemId: string, input: UpdateRdItemInput): void {\r\n const projectId = this.projectId();\r\n if (!projectId) return;\r\n this.runAction(() => this.rdApi.update(projectId, itemId, input));\r\n }\r\n\r\n start(itemId: string): void {\r\n const projectId = this.projectId()!;\r\n this.runAction(() => this.rdApi.start(projectId, itemId));\r\n }\r\n\r\n progress(itemId: string, input: UpdateRdProgressInput): void {\r\n this.runAction(() => this.rdApi.progress(this.projectId()!, itemId, input));\r\n }\r\n\r\n block(itemId: string, input: BlockRdItemInput): void {\r\n this.runAction(() => this.rdApi.block(this.projectId()!, itemId, input));\r\n }\r\n\r\n resume(itemId: string): void {\r\n this.runAction(() => this.rdApi.resume(this.projectId()!, itemId));\r\n }\r\n\r\n resolve(itemId: string): void {\r\n const projectId = this.projectId();\r\n\r\n if (!projectId) return;\r\n this.runAction(() => this.rdApi.resolve(projectId, itemId));\r\n }\r\n\r\n advanceStage(itemId: string, input: AdvanceRdStageInput): void {\r\n // this.runAction(() => this.rdApi.advanceStage(itemId, input));\r\n }\r\n\r\n accept(itemId: string): void {\r\n const projectId = this.projectId();\r\n\r\n if (!projectId) return;\r\n this.runAction(() => this.rdApi.accept(projectId, itemId));\r\n }\r\n\r\n close(itemId: string, summary: string): void {\r\n const projectId = this.projectId();\r\n\r\n if (!projectId) return;\r\n this.runAction(() => this.rdApi.close(projectId, itemId, summary));\r\n }\r\n\r\n delete(itemId: string): void {\r\n const projectId = this.projectId()!;\r\n this.busyState.set(true);\r\n from(this.rdApi.delete(projectId, itemId)).subscribe({\r\n next: () => {\r\n this.busyState.set(false);\r\n const list = this.rdItemsPageListState();\r\n if (!list) {\r\n this.loadRdItems();\r\n return;\r\n }\r\n\r\n const items = list.filter((item) => item.id !== itemId);\r\n if (items.length === list.length) {\r\n this.loadRdItems();\r\n return;\r\n }\r\n\r\n this.rdItemsCountState.update((count) => count - 1);\r\n this.rdItemsPageListState.update((list) => items);\r\n },\r\n error: () => {\r\n this.busyState.set(false);\r\n },\r\n });\r\n }\r\n\r\n private runAction(request: () => Promise<RdItemEntity>): void {\r\n this.busyState.set(true);\r\n from(request()).subscribe({\r\n next: (updated) => {\r\n this.busyState.set(false);\r\n this.patchOrRefresh(updated);\r\n },\r\n error: () => {\r\n this.busyState.set(false);\r\n },\r\n });\r\n }\r\n\r\n private patchOrRefresh(updated: RdItemEntity): void {\r\n const list = this.rdItemsPageListState();\r\n if (!list) {\r\n this.loadRdItems();\r\n return;\r\n }\r\n\r\n const index = list.findIndex((item) => item.id === updated.id);\r\n if (index < 0) {\r\n return;\r\n }\r\n\r\n this.loadCurrentRdItem(updated.id);\r\n const items = [...list];\r\n items[index] = updated;\r\n this.rdItemsPageListState.set(items);\r\n }\r\n}\r\n","import { Component, inject, signal } from '@angular/core';\r\nimport { FormsModule, NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\r\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\r\nimport { NzBadgeModule } from 'ng-zorro-antd/badge';\r\nimport { NzButtonModule } from 'ng-zorro-antd/button';\r\nimport { NzCardModule } from 'ng-zorro-antd/card';\r\nimport { NzDrawerPlacement } from 'ng-zorro-antd/drawer';\r\nimport { NzFlexModule } from 'ng-zorro-antd/flex';\r\nimport { NzFormModule } from 'ng-zorro-antd/form';\r\nimport { NzIconModule } from 'ng-zorro-antd/icon';\r\nimport { NzInputModule } from 'ng-zorro-antd/input';\r\nimport { NzPaginationModule } from 'ng-zorro-antd/pagination';\r\nimport { NzProgressModule } from 'ng-zorro-antd/progress';\r\nimport { NzRadioModule } from 'ng-zorro-antd/radio';\r\nimport { NzSelectModule } from 'ng-zorro-antd/select';\r\nimport { NzTableModule } from 'ng-zorro-antd/table';\r\nimport { NzTagModule } from 'ng-zorro-antd/tag';\r\nimport { PageLayoutComponent } from '../../shared';\r\nimport { RdAdvanceStageDialogComponent } from './dialog/rd-advance-stage-dialog/rd-advance-stage-dialog.component';\r\nimport { RdBlockDialogComponent } from './dialog/rd-block-dialog/rd-block-dialog.component';\r\nimport { RdCreateDialogComponent } from './dialog/rd-create-dialog/rd-create-dialog.component';\r\nimport { RdDetailComponent } from './rd-detail/rd-detail.component';\r\nimport { CreateRdItemInput, RdItemEntity, RdItemPriority, RdItemStatus } from './models/rd.model';\r\nimport { RdListBoardComponent } from './rd-list-board/rd-list-board.component';\r\nimport { RdListTableComponent } from './rd-list-table/rd-list-table.component';\r\nimport { RdStore } from './store/rd.store';\r\nimport { RD_STATUS_FILTER_OPTIONS } from '@app/shared/constants/status-options';\r\nimport { PRIORITY_OPTIONS } from '@app/shared/constants/priority-options';\r\nimport { debounceTime, filter } from 'rxjs';\r\nimport { UserStore } from '@app/core/stores/user/user.store';\r\n\r\ntype viewType = 'list' | 'board';\r\n\r\n@Component({\r\n selector: 'app-rd.component',\r\n imports: [\r\n PageLayoutComponent,\r\n NzSelectModule,\r\n NzTableModule,\r\n NzButtonModule,\r\n NzInputModule,\r\n NzIconModule,\r\n NzRadioModule,\r\n NzFormModule,\r\n NzCardModule,\r\n NzProgressModule,\r\n NzBadgeModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n NzFlexModule,\r\n NzTagModule,\r\n NzPaginationModule,\r\n RdListBoardComponent,\r\n RdListTableComponent,\r\n RdCreateDialogComponent,\r\n RdDetailComponent,\r\n RdBlockDialogComponent,\r\n RdAdvanceStageDialogComponent,\r\n ],\r\n templateUrl: './rd.component.html',\r\n styleUrl: './rd.component.less',\r\n})\r\nexport class RdComponent {\r\n private readonly rdStore = inject(RdStore);\r\n protected readonly fb = inject(NonNullableFormBuilder);\r\n protected readonly router = inject(Router);\r\n private readonly route = inject(ActivatedRoute);\r\n private readonly userStore = inject(UserStore);\r\n\r\n // 视图模式\r\n protected readonly viewType = signal<viewType>('list');\r\n\r\n // 新建研发项弹窗\r\n protected readonly createDialogOpen = signal(false);\r\n protected readonly detailDrawerOpen = signal(false);\r\n\r\n // 阻塞处理中的研发项\r\n protected readonly blockingItem = signal<RdItemEntity | null>(null);\r\n protected readonly blockOpen = signal(false);\r\n\r\n // 详情抽屉方向\r\n protected readonly drawerPlacement = signal('right');\r\n\r\n // 推进研发项\r\n readonly advanceStageOpen = signal(false);\r\n\r\n readonly statusOptions = RD_STATUS_FILTER_OPTIONS;\r\n readonly members = this.rdStore.projectMembers;\r\n readonly priorityOptions = PRIORITY_OPTIONS;\r\n\r\n // 用户\r\n readonly currentUserId = this.userStore.currentUserId;\r\n\r\n priorities = ['低', '中', '高'];\r\n\r\n protected readonly loading = this.rdStore.rdItemsLoading;\r\n protected readonly pageRdItems = this.rdStore.rdItemsPageList;\r\n protected readonly currentRdItem = this.rdStore.currentRdItem;\r\n protected readonly currentRdLogs = this.rdStore.currentRdLogs;\r\n protected readonly stages = this.rdStore.stages;\r\n protected readonly total = this.rdStore.rdItemsCount;\r\n protected readonly busy = this.rdStore.busy;\r\n protected readonly query = this.rdStore.query;\r\n\r\n constructor() {\r\n this.rdStore.initialize();\r\n this.form.valueChanges.pipe(debounceTime(500)).subscribe((value) => {\r\n this.rdStore.updateQuery({ ...value });\r\n this.rdStore.loadRdItems();\r\n });\r\n\r\n this.route.queryParamMap.subscribe((params) => {\r\n const detailId = params.get('detail');\r\n\r\n if (detailId) {\r\n this.rdStore.loadCurrentRdItem(detailId);\r\n this.detailDrawerOpen.set(true);\r\n }\r\n });\r\n\r\n // 确保用户token绑定\r\n this.userStore.ensureUserLoaded();\r\n }\r\n\r\n form = this.fb.group({\r\n keyword: this.fb.control<string>(''),\r\n stageIds: this.fb.control<string[]>([]),\r\n status: this.fb.control<RdItemStatus[]>([]),\r\n priority: this.fb.control<RdItemPriority[]>([]),\r\n });\r\n\r\n onPageChange(page: number) {\r\n // this.pageIndex.set(page);\r\n this.rdStore.updateQuery({ page });\r\n }\r\n\r\n onPageSizeChange(size: number) {\r\n this.rdStore.updateQuery({ pageSize: size });\r\n }\r\n\r\n /** 新建研发项 */\r\n createRd(input: Omit<CreateRdItemInput, 'projectId'>): void {\r\n // this.store.create(input, () => this.createOpen.set(false));\r\n }\r\n\r\n /**打开新建研发项弹窗 */\r\n openCreateDialog() {\r\n this.createDialogOpen.set(true);\r\n }\r\n\r\n async selectItem(item: RdItemEntity) {\r\n this.openDetail(item);\r\n this.detailDrawerOpen.set(true);\r\n await this.rdStore.loadCurrentRdItem(item.id);\r\n this.rdStore.setCurrentRdItem(this.rdStore.currentRdItem() ?? item);\r\n }\r\n\r\n // 关闭详情抽屉\r\n closeDetail() {\r\n this.detailDrawerOpen.set(false);\r\n this.rdStore.setCurrentRdItem(null);\r\n this.router.navigate([], {\r\n queryParams: {},\r\n });\r\n }\r\n\r\n handleSelectedAction(action: 'start' | 'block' | 'resume' | 'complete' | 'advance'): void {\r\n const current = this.currentRdItem();\r\n if (!current) {\r\n return;\r\n }\r\n this.handleAction(current, action);\r\n }\r\n\r\n updateSelectedProgress(progress: number): void {\r\n const current = this.currentRdItem();\r\n if (!current) {\r\n return;\r\n }\r\n this.rdStore.progress(current.id, {version: current.version, progress});\r\n }\r\n\r\n deleteSelectedItem(): void {\r\n const current = this.currentRdItem();\r\n if (!current) {\r\n return;\r\n }\r\n this.rdStore.delete(current.id);\r\n this.closeDetail();\r\n }\r\n\r\n handleAction(\r\n item: RdItemEntity,\r\n action: 'start' | 'block' | 'resume' | 'complete' | 'advance',\r\n ): void {\r\n this.openDetail(item);\r\n switch (action) {\r\n case 'start':\r\n this.rdStore.start(item.id);\r\n break;\r\n case 'block':\r\n this.blockingItem.set(item);\r\n this.blockOpen.set(true);\r\n break;\r\n case 'resume':\r\n this.rdStore.resume(item.id);\r\n break;\r\n case 'complete':\r\n this.rdStore.resolve(item.id);\r\n break;\r\n case 'advance':\r\n this.advanceStageOpen.set(true);\r\n break;\r\n }\r\n }\r\n\r\n openDetail(item: RdItemEntity): void {\r\n this.router.navigate([], {\r\n relativeTo: this.route,\r\n queryParams: { detail: item.id },\r\n queryParamsHandling: 'merge',\r\n });\r\n }\r\n\r\n // 阻塞处理\r\n\r\n confirmBlock(blockerReason: string): void {\r\n const item = this.blockingItem();\r\n if (!item) {\r\n return;\r\n }\r\n this.rdStore.block(item.id, { blockerReason });\r\n this.closeBlockDialog();\r\n }\r\n\r\n closeBlockDialog(): void {\r\n this.blockOpen.set(false);\r\n this.blockingItem.set(null);\r\n }\r\n\r\n // 推进研发项\r\n confirmAdvanceStage(stageId: string): void {\r\n // TODO :后面需要再添加\r\n const current = this.currentRdItem();\r\n if (!current || !stageId.trim()) {\r\n return;\r\n }\r\n this.rdStore.advanceStage(current.id, { stageId: stageId.trim() });\r\n this.advanceStageOpen.set(false);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { RdComponent } from './rd.component';\r\n\r\nconst routes: Routes = [{ path: '', component: RdComponent }];\r\n\r\n@NgModule({\r\n imports: [CommonModule, RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class RdRoutingModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RdRoutingModule } from './rd-routing.module';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [CommonModule, RdRoutingModule],\r\n})\r\nexport class RdModule {}\r\n"],"mappings":"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","names":["rd_component_default","RdAdvanceStageDialogComponent","RdBlockDialogComponent","rd_create_dialog_component_default","input","status","NZ_CONFIG_MODULE_NAME","status","RdCreateDialogComponent","rd_action_area_component_default","RdPermissionService","RdActionAreaComponent","RdDetailComponent","stage","RdItemCardComponent","stage","RdListBoardComponent","map","RdListTableComponent","stage","RdTokenApiService","RdApiService","input","RdStore","input","list","RdComponent","input","RdRoutingModule","RdModule"],"x_google_ignoreList":[2,9,10,16]}