@delon/abc 13.0.0-beta.1 → 13.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) hide show
  1. package/README.md +1 -1
  2. package/auto-focus/{autoFocus.d.ts → auto-focus.d.ts} +0 -0
  3. package/auto-focus/package.json +6 -6
  4. package/avatar-list/{avatarList.d.ts → avatar-list.d.ts} +0 -0
  5. package/avatar-list/package.json +6 -6
  6. package/date-picker/{datePicker.d.ts → date-picker.d.ts} +0 -0
  7. package/date-picker/package.json +6 -6
  8. package/down-file/{downFile.d.ts → down-file.d.ts} +0 -0
  9. package/down-file/package.json +6 -6
  10. package/ellipsis/ellipsis.component.d.ts +1 -0
  11. package/error-collect/error-collect.component.d.ts +4 -2
  12. package/error-collect/{errorCollect.d.ts → error-collect.d.ts} +0 -0
  13. package/error-collect/package.json +6 -6
  14. package/esm2020/auto-focus/auto-focus.directive.mjs +3 -3
  15. package/esm2020/auto-focus/auto-focus.mjs +5 -0
  16. package/esm2020/auto-focus/auto-focus.module.mjs +4 -4
  17. package/esm2020/avatar-list/avatar-list-item.component.mjs +3 -3
  18. package/esm2020/avatar-list/avatar-list.component.mjs +3 -3
  19. package/esm2020/avatar-list/avatar-list.mjs +5 -0
  20. package/esm2020/avatar-list/avatar-list.module.mjs +4 -4
  21. package/esm2020/count-down/count-down.component.mjs +3 -3
  22. package/esm2020/count-down/count-down.module.mjs +4 -4
  23. package/esm2020/date-picker/date-picker.mjs +5 -0
  24. package/esm2020/date-picker/date-picker.module.mjs +4 -4
  25. package/esm2020/date-picker/range-shortcut.component.mjs +3 -3
  26. package/esm2020/date-picker/range.directive.mjs +3 -3
  27. package/esm2020/down-file/down-file.directive.mjs +3 -3
  28. package/esm2020/down-file/down-file.mjs +5 -0
  29. package/esm2020/down-file/down-file.module.mjs +4 -4
  30. package/esm2020/ellipsis/ellipsis.component.mjs +8 -5
  31. package/esm2020/ellipsis/ellipsis.module.mjs +4 -4
  32. package/esm2020/error-collect/error-collect.component.mjs +12 -8
  33. package/esm2020/error-collect/error-collect.mjs +5 -0
  34. package/esm2020/error-collect/error-collect.module.mjs +4 -4
  35. package/esm2020/exception/exception.component.mjs +3 -3
  36. package/esm2020/exception/exception.module.mjs +4 -4
  37. package/esm2020/footer-toolbar/footer-toolbar.component.mjs +3 -3
  38. package/esm2020/footer-toolbar/footer-toolbar.mjs +5 -0
  39. package/esm2020/footer-toolbar/footer-toolbar.module.mjs +4 -4
  40. package/esm2020/full-content/full-content-toggle.directive.mjs +3 -3
  41. package/esm2020/full-content/full-content.component.mjs +3 -3
  42. package/esm2020/full-content/full-content.mjs +5 -0
  43. package/esm2020/full-content/full-content.module.mjs +4 -4
  44. package/esm2020/full-content/full-content.service.mjs +3 -3
  45. package/esm2020/global-footer/global-footer-item.component.mjs +3 -3
  46. package/esm2020/global-footer/global-footer.component.mjs +3 -3
  47. package/esm2020/global-footer/global-footer.mjs +5 -0
  48. package/esm2020/global-footer/global-footer.module.mjs +4 -4
  49. package/esm2020/image/image.directive.mjs +3 -3
  50. package/esm2020/image/image.module.mjs +4 -4
  51. package/esm2020/let/let.directive.mjs +3 -3
  52. package/esm2020/let/let.module.mjs +4 -4
  53. package/esm2020/loading/loading.component.mjs +3 -3
  54. package/esm2020/loading/loading.module.mjs +4 -4
  55. package/esm2020/loading/loading.service.mjs +3 -3
  56. package/esm2020/lodop/lodop.module.mjs +4 -4
  57. package/esm2020/lodop/lodop.service.mjs +3 -3
  58. package/esm2020/media/media.component.mjs +3 -3
  59. package/esm2020/media/media.module.mjs +4 -4
  60. package/esm2020/media/media.service.mjs +3 -3
  61. package/esm2020/notice-icon/notice-icon-tab.component.mjs +3 -3
  62. package/esm2020/notice-icon/notice-icon.component.mjs +3 -3
  63. package/esm2020/notice-icon/notice-icon.mjs +5 -0
  64. package/esm2020/notice-icon/notice-icon.module.mjs +4 -4
  65. package/esm2020/onboarding/onboarding.component.mjs +3 -3
  66. package/esm2020/onboarding/onboarding.module.mjs +4 -4
  67. package/esm2020/onboarding/onboarding.service.mjs +3 -3
  68. package/esm2020/page-header/page-header.component.mjs +3 -3
  69. package/esm2020/page-header/page-header.mjs +5 -0
  70. package/esm2020/page-header/page-header.module.mjs +4 -4
  71. package/esm2020/pdf/pdf.component.mjs +3 -3
  72. package/esm2020/pdf/pdf.module.mjs +4 -4
  73. package/esm2020/qr/qr.component.mjs +5 -5
  74. package/esm2020/qr/qr.module.mjs +4 -4
  75. package/esm2020/quick-menu/quick-menu.component.mjs +3 -3
  76. package/esm2020/quick-menu/quick-menu.mjs +5 -0
  77. package/esm2020/quick-menu/quick-menu.module.mjs +4 -4
  78. package/esm2020/result/result.component.mjs +3 -3
  79. package/esm2020/result/result.module.mjs +4 -4
  80. package/esm2020/reuse-tab/reuse-tab-context-menu.component.mjs +3 -3
  81. package/esm2020/reuse-tab/reuse-tab-context.component.mjs +3 -3
  82. package/esm2020/reuse-tab/reuse-tab-context.directive.mjs +3 -3
  83. package/esm2020/reuse-tab/reuse-tab-context.service.mjs +3 -3
  84. package/esm2020/reuse-tab/reuse-tab.component.mjs +3 -3
  85. package/esm2020/reuse-tab/reuse-tab.mjs +5 -0
  86. package/esm2020/reuse-tab/reuse-tab.module.mjs +4 -4
  87. package/esm2020/reuse-tab/reuse-tab.service.mjs +3 -3
  88. package/esm2020/se/se-container.component.mjs +6 -6
  89. package/esm2020/se/se.component.mjs +5 -5
  90. package/esm2020/se/se.mjs +5 -0
  91. package/esm2020/se/se.module.mjs +4 -4
  92. package/esm2020/sg/sg-container.component.mjs +3 -3
  93. package/esm2020/sg/sg.component.mjs +3 -3
  94. package/esm2020/sg/sg.mjs +5 -0
  95. package/esm2020/sg/sg.module.mjs +4 -4
  96. package/esm2020/st/st-column-source.mjs +3 -3
  97. package/esm2020/st/st-data-source.mjs +3 -3
  98. package/esm2020/st/st-export.mjs +3 -3
  99. package/esm2020/st/st-filter.component.mjs +3 -3
  100. package/esm2020/st/st-row.directive.mjs +6 -6
  101. package/esm2020/st/st-widget-host.directive.mjs +3 -3
  102. package/esm2020/st/st-widget.mjs +3 -3
  103. package/esm2020/st/st.component.mjs +6 -6
  104. package/esm2020/st/st.mjs +5 -0
  105. package/esm2020/st/st.module.mjs +4 -4
  106. package/esm2020/sv/sv-container.component.mjs +6 -6
  107. package/esm2020/sv/sv-value.component.mjs +3 -3
  108. package/esm2020/sv/sv.component.mjs +3 -3
  109. package/esm2020/sv/sv.mjs +5 -0
  110. package/esm2020/sv/sv.module.mjs +4 -4
  111. package/esm2020/tag-select/tag-select.component.mjs +3 -3
  112. package/esm2020/tag-select/tag-select.mjs +5 -0
  113. package/esm2020/tag-select/tag-select.module.mjs +4 -4
  114. package/esm2020/xlsx/xlsx.directive.mjs +3 -3
  115. package/esm2020/xlsx/xlsx.module.mjs +4 -4
  116. package/esm2020/xlsx/xlsx.service.mjs +3 -3
  117. package/esm2020/zip/zip.module.mjs +4 -4
  118. package/esm2020/zip/zip.service.mjs +3 -3
  119. package/fesm2015/{autoFocus.mjs → auto-focus.mjs} +8 -8
  120. package/fesm2015/auto-focus.mjs.map +1 -0
  121. package/fesm2015/{avatarList.mjs → avatar-list.mjs} +11 -11
  122. package/fesm2015/avatar-list.mjs.map +1 -0
  123. package/fesm2015/count-down.mjs +7 -7
  124. package/fesm2015/{datePicker.mjs → date-picker.mjs} +11 -11
  125. package/fesm2015/date-picker.mjs.map +1 -0
  126. package/fesm2015/{downFile.mjs → down-file.mjs} +8 -8
  127. package/fesm2015/down-file.mjs.map +1 -0
  128. package/fesm2015/ellipsis.mjs +11 -8
  129. package/fesm2015/ellipsis.mjs.map +1 -1
  130. package/fesm2015/{errorCollect.mjs → error-collect.mjs} +16 -12
  131. package/fesm2015/error-collect.mjs.map +1 -0
  132. package/fesm2015/exception.mjs +7 -7
  133. package/fesm2015/{footerToolbar.mjs → footer-toolbar.mjs} +8 -8
  134. package/fesm2015/footer-toolbar.mjs.map +1 -0
  135. package/fesm2015/{fullContent.mjs → full-content.mjs} +14 -14
  136. package/fesm2015/full-content.mjs.map +1 -0
  137. package/fesm2015/{globalFooter.mjs → global-footer.mjs} +11 -11
  138. package/fesm2015/global-footer.mjs.map +1 -0
  139. package/fesm2015/image.mjs +7 -7
  140. package/fesm2015/let.mjs +7 -7
  141. package/fesm2015/loading.mjs +10 -10
  142. package/fesm2015/lodop.mjs +7 -7
  143. package/fesm2015/media.mjs +10 -10
  144. package/{fesm2020/noticeIcon.mjs → fesm2015/notice-icon.mjs} +11 -11
  145. package/fesm2015/notice-icon.mjs.map +1 -0
  146. package/fesm2015/onboarding.mjs +10 -10
  147. package/fesm2015/{pageHeader.mjs → page-header.mjs} +8 -8
  148. package/fesm2015/page-header.mjs.map +1 -0
  149. package/fesm2015/pdf.mjs +7 -7
  150. package/fesm2015/qr.mjs +8 -8
  151. package/fesm2015/qr.mjs.map +1 -1
  152. package/fesm2015/{quickMenu.mjs → quick-menu.mjs} +8 -8
  153. package/fesm2015/quick-menu.mjs.map +1 -0
  154. package/fesm2015/result.mjs +7 -7
  155. package/fesm2015/{reuseTab.mjs → reuse-tab.mjs} +23 -23
  156. package/fesm2015/reuse-tab.mjs.map +1 -0
  157. package/fesm2015/{edit.mjs → se.mjs} +15 -15
  158. package/fesm2015/se.mjs.map +1 -0
  159. package/fesm2015/{grid.mjs → sg.mjs} +11 -11
  160. package/fesm2015/sg.mjs.map +1 -0
  161. package/fesm2015/{table.mjs → st.mjs} +35 -35
  162. package/fesm2015/st.mjs.map +1 -0
  163. package/fesm2015/{view.mjs → sv.mjs} +17 -17
  164. package/fesm2015/sv.mjs.map +1 -0
  165. package/fesm2015/{tagSelect.mjs → tag-select.mjs} +8 -8
  166. package/fesm2015/tag-select.mjs.map +1 -0
  167. package/fesm2015/xlsx.mjs +10 -10
  168. package/fesm2015/zip.mjs +7 -7
  169. package/fesm2020/{autoFocus.mjs → auto-focus.mjs} +8 -8
  170. package/fesm2020/auto-focus.mjs.map +1 -0
  171. package/fesm2020/{avatarList.mjs → avatar-list.mjs} +11 -11
  172. package/fesm2020/avatar-list.mjs.map +1 -0
  173. package/fesm2020/count-down.mjs +7 -7
  174. package/fesm2020/{datePicker.mjs → date-picker.mjs} +11 -11
  175. package/fesm2020/date-picker.mjs.map +1 -0
  176. package/fesm2020/{downFile.mjs → down-file.mjs} +8 -8
  177. package/fesm2020/down-file.mjs.map +1 -0
  178. package/fesm2020/ellipsis.mjs +11 -8
  179. package/fesm2020/ellipsis.mjs.map +1 -1
  180. package/fesm2020/{errorCollect.mjs → error-collect.mjs} +16 -12
  181. package/fesm2020/error-collect.mjs.map +1 -0
  182. package/fesm2020/exception.mjs +7 -7
  183. package/fesm2020/{footerToolbar.mjs → footer-toolbar.mjs} +8 -8
  184. package/fesm2020/footer-toolbar.mjs.map +1 -0
  185. package/fesm2020/{fullContent.mjs → full-content.mjs} +14 -14
  186. package/fesm2020/full-content.mjs.map +1 -0
  187. package/fesm2020/{globalFooter.mjs → global-footer.mjs} +11 -11
  188. package/fesm2020/global-footer.mjs.map +1 -0
  189. package/fesm2020/image.mjs +7 -7
  190. package/fesm2020/let.mjs +7 -7
  191. package/fesm2020/loading.mjs +10 -10
  192. package/fesm2020/lodop.mjs +7 -7
  193. package/fesm2020/media.mjs +10 -10
  194. package/{fesm2015/noticeIcon.mjs → fesm2020/notice-icon.mjs} +11 -11
  195. package/fesm2020/notice-icon.mjs.map +1 -0
  196. package/fesm2020/onboarding.mjs +10 -10
  197. package/fesm2020/{pageHeader.mjs → page-header.mjs} +8 -8
  198. package/fesm2020/page-header.mjs.map +1 -0
  199. package/fesm2020/pdf.mjs +7 -7
  200. package/fesm2020/qr.mjs +8 -8
  201. package/fesm2020/qr.mjs.map +1 -1
  202. package/fesm2020/{quickMenu.mjs → quick-menu.mjs} +8 -8
  203. package/fesm2020/quick-menu.mjs.map +1 -0
  204. package/fesm2020/result.mjs +7 -7
  205. package/fesm2020/{reuseTab.mjs → reuse-tab.mjs} +23 -23
  206. package/fesm2020/reuse-tab.mjs.map +1 -0
  207. package/fesm2020/{edit.mjs → se.mjs} +15 -15
  208. package/fesm2020/se.mjs.map +1 -0
  209. package/fesm2020/{grid.mjs → sg.mjs} +11 -11
  210. package/fesm2020/sg.mjs.map +1 -0
  211. package/fesm2020/{table.mjs → st.mjs} +35 -35
  212. package/fesm2020/st.mjs.map +1 -0
  213. package/fesm2020/{view.mjs → sv.mjs} +17 -17
  214. package/fesm2020/sv.mjs.map +1 -0
  215. package/fesm2020/{tagSelect.mjs → tag-select.mjs} +8 -8
  216. package/fesm2020/tag-select.mjs.map +1 -0
  217. package/fesm2020/xlsx.mjs +10 -10
  218. package/fesm2020/zip.mjs +7 -7
  219. package/footer-toolbar/{footerToolbar.d.ts → footer-toolbar.d.ts} +0 -0
  220. package/footer-toolbar/package.json +6 -6
  221. package/full-content/{fullContent.d.ts → full-content.d.ts} +0 -0
  222. package/full-content/package.json +6 -6
  223. package/global-footer/{globalFooter.d.ts → global-footer.d.ts} +0 -0
  224. package/global-footer/package.json +6 -6
  225. package/notice-icon/{noticeIcon.d.ts → notice-icon.d.ts} +0 -0
  226. package/notice-icon/package.json +6 -6
  227. package/package.json +106 -106
  228. package/page-header/package.json +6 -6
  229. package/page-header/{pageHeader.d.ts → page-header.d.ts} +0 -0
  230. package/qr/qr.component.d.ts +1 -1
  231. package/quick-menu/package.json +6 -6
  232. package/quick-menu/{quickMenu.d.ts → quick-menu.d.ts} +0 -0
  233. package/reuse-tab/package.json +6 -6
  234. package/reuse-tab/{reuseTab.d.ts → reuse-tab.d.ts} +0 -0
  235. package/se/package.json +6 -6
  236. package/se/{edit.d.ts → se.d.ts} +0 -0
  237. package/se/style/index.less +2 -0
  238. package/sg/package.json +6 -6
  239. package/sg/{grid.d.ts → sg.d.ts} +0 -0
  240. package/st/package.json +6 -6
  241. package/st/{table.d.ts → st.d.ts} +0 -0
  242. package/sv/package.json +6 -6
  243. package/sv/{view.d.ts → sv.d.ts} +0 -0
  244. package/tag-select/package.json +6 -6
  245. package/tag-select/{tagSelect.d.ts → tag-select.d.ts} +0 -0
  246. package/esm2020/auto-focus/autoFocus.mjs +0 -5
  247. package/esm2020/avatar-list/avatarList.mjs +0 -5
  248. package/esm2020/date-picker/datePicker.mjs +0 -5
  249. package/esm2020/down-file/downFile.mjs +0 -5
  250. package/esm2020/error-collect/errorCollect.mjs +0 -5
  251. package/esm2020/footer-toolbar/footerToolbar.mjs +0 -5
  252. package/esm2020/full-content/fullContent.mjs +0 -5
  253. package/esm2020/global-footer/globalFooter.mjs +0 -5
  254. package/esm2020/notice-icon/noticeIcon.mjs +0 -5
  255. package/esm2020/page-header/pageHeader.mjs +0 -5
  256. package/esm2020/quick-menu/quickMenu.mjs +0 -5
  257. package/esm2020/reuse-tab/reuseTab.mjs +0 -5
  258. package/esm2020/se/edit.mjs +0 -5
  259. package/esm2020/sg/grid.mjs +0 -5
  260. package/esm2020/st/table.mjs +0 -5
  261. package/esm2020/sv/view.mjs +0 -5
  262. package/esm2020/tag-select/tagSelect.mjs +0 -5
  263. package/fesm2015/autoFocus.mjs.map +0 -1
  264. package/fesm2015/avatarList.mjs.map +0 -1
  265. package/fesm2015/datePicker.mjs.map +0 -1
  266. package/fesm2015/downFile.mjs.map +0 -1
  267. package/fesm2015/edit.mjs.map +0 -1
  268. package/fesm2015/errorCollect.mjs.map +0 -1
  269. package/fesm2015/footerToolbar.mjs.map +0 -1
  270. package/fesm2015/fullContent.mjs.map +0 -1
  271. package/fesm2015/globalFooter.mjs.map +0 -1
  272. package/fesm2015/grid.mjs.map +0 -1
  273. package/fesm2015/noticeIcon.mjs.map +0 -1
  274. package/fesm2015/pageHeader.mjs.map +0 -1
  275. package/fesm2015/quickMenu.mjs.map +0 -1
  276. package/fesm2015/reuseTab.mjs.map +0 -1
  277. package/fesm2015/table.mjs.map +0 -1
  278. package/fesm2015/tagSelect.mjs.map +0 -1
  279. package/fesm2015/view.mjs.map +0 -1
  280. package/fesm2020/autoFocus.mjs.map +0 -1
  281. package/fesm2020/avatarList.mjs.map +0 -1
  282. package/fesm2020/datePicker.mjs.map +0 -1
  283. package/fesm2020/downFile.mjs.map +0 -1
  284. package/fesm2020/edit.mjs.map +0 -1
  285. package/fesm2020/errorCollect.mjs.map +0 -1
  286. package/fesm2020/footerToolbar.mjs.map +0 -1
  287. package/fesm2020/fullContent.mjs.map +0 -1
  288. package/fesm2020/globalFooter.mjs.map +0 -1
  289. package/fesm2020/grid.mjs.map +0 -1
  290. package/fesm2020/noticeIcon.mjs.map +0 -1
  291. package/fesm2020/pageHeader.mjs.map +0 -1
  292. package/fesm2020/quickMenu.mjs.map +0 -1
  293. package/fesm2020/reuseTab.mjs.map +0 -1
  294. package/fesm2020/table.mjs.map +0 -1
  295. package/fesm2020/tagSelect.mjs.map +0 -1
  296. package/fesm2020/view.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"view.mjs","sources":["../../../../packages/abc/sv/sv-container.component.ts","../../../../packages/abc/sv/sv-value.component.ts","../../../../packages/abc/sv/sv.component.ts","../../../../packages/abc/sv/sv.component.html","../../../../packages/abc/sv/sv.module.ts","../../../../packages/abc/sv/view.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Host,\n Input,\n OnInit,\n Optional,\n Renderer2,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { AlainConfigService } from '@delon/util/config';\nimport { BooleanInput, InputBoolean, InputNumber, NumberInput } from '@delon/util/decorator';\n\n@Component({\n selector: 'sv-container, [sv-container]',\n exportAs: 'svContainer',\n template: `\n <div class=\"ant-row\" [ngStyle]=\"{ 'margin-left.px': -(gutter / 2), 'margin-right.px': -(gutter / 2) }\">\n <sv-title *ngIf=\"title\">\n <ng-container *nzStringTemplateOutlet=\"title\">{{ title }}</ng-container>\n </sv-title>\n <ng-content></ng-content>\n </div>\n `,\n host: {\n '[class.sv__container]': 'true',\n '[class.sv__horizontal]': `layout === 'horizontal'`,\n '[class.sv__vertical]': `layout === 'vertical'`,\n '[class.sv__small]': `size === 'small'`,\n '[class.sv__large]': `size === 'large'`,\n '[class.clearfix]': `true`\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SVContainerComponent {\n static ngAcceptInputType_gutter: NumberInput;\n static ngAcceptInputType_labelWidth: NumberInput;\n static ngAcceptInputType_col: NumberInput;\n static ngAcceptInputType_default: BooleanInput;\n static ngAcceptInputType_noColon: BooleanInput;\n\n @Input() title?: string | TemplateRef<void>;\n @Input() size!: 'small' | 'large';\n /** 列表项间距,单位为 `px` */\n @Input() @InputNumber() gutter!: number;\n @Input() layout!: 'horizontal' | 'vertical';\n @Input() @InputNumber() labelWidth?: number;\n /** 指定信息最多分几列展示,最终一行几列由 col 配置结合响应式规则决定 */\n @Input() @InputNumber() col!: number;\n @Input() @InputBoolean() default!: boolean;\n @Input() @InputBoolean() noColon = false;\n\n constructor(configSrv: AlainConfigService) {\n configSrv.attach(this, 'sv', {\n size: 'large',\n gutter: 32,\n layout: 'horizontal',\n col: 3,\n default: true\n });\n }\n}\n\n@Component({\n selector: 'sv-title, [sv-title]',\n exportAs: 'svTitle',\n template: '<ng-content></ng-content>',\n host: {\n '[class.sv__title]': 'true'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SVTitleComponent implements OnInit {\n private el: HTMLElement;\n constructor(el: ElementRef, @Host() @Optional() private parent: SVContainerComponent, private ren: Renderer2) {\n if (parent == null) {\n throw new Error(`[sv-title] must include 'sv-container' component`);\n }\n this.el = el.nativeElement;\n }\n\n private setClass(): void {\n const { gutter } = this.parent;\n const { el } = this;\n this.ren.setStyle(el, 'padding-left', `${gutter / 2}px`);\n this.ren.setStyle(el, 'padding-right', `${gutter / 2}px`);\n }\n\n ngOnInit(): void {\n this.setClass();\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\nimport type { NzTSType } from 'ng-zorro-antd/core/types';\n\n@Component({\n selector: 'sv-value, [sv-value]',\n exportAs: 'svValue',\n template: `\n <em *ngIf=\"prefix\" class=\"sv__value-prefix\" [innerHTML]=\"prefix\"></em>\n <span nz-tooltip [nzTooltipTitle]=\"tooltip\" class=\"sv__value-text\"><ng-content></ng-content></span>\n <em *ngIf=\"unit\" class=\"sv__value-unit\" [innerHTML]=\"unit\"></em>\n `,\n host: {\n '[class.sv__value]': 'true',\n '[class.sv__value-small]': `size === 'small'`,\n '[class.sv__value-large]': `size === 'large'`\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SVValueComponent {\n @Input() prefix?: string;\n @Input() unit?: string;\n @Input() tooltip?: NzTSType | null;\n @Input() size: 'large' | 'small' | 'default' = 'default';\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Host,\n Input,\n OnChanges,\n Optional,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { ResponsiveService } from '@delon/theme';\nimport { isEmpty } from '@delon/util/browser';\nimport { BooleanInput, InputBoolean, InputNumber, NumberInput } from '@delon/util/decorator';\n\nimport { SVContainerComponent } from './sv-container.component';\n\nconst prefixCls = `sv`;\n\n@Component({\n selector: 'sv, [sv]',\n exportAs: 'sv',\n templateUrl: './sv.component.html',\n host: {\n '[style.padding-left.px]': 'paddingValue',\n '[style.padding-right.px]': 'paddingValue'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SVComponent implements AfterViewInit, OnChanges {\n static ngAcceptInputType_col: NumberInput;\n static ngAcceptInputType_default: BooleanInput;\n static ngAcceptInputType_noColon: BooleanInput;\n\n @ViewChild('conEl', { static: false })\n private conEl!: ElementRef;\n private el: HTMLElement;\n private clsMap: string[] = [];\n _noColon = false;\n\n // #region fields\n\n @Input() optional?: string | TemplateRef<void> | null;\n @Input() optionalHelp?: string | TemplateRef<void> | null;\n @Input() optionalHelpColor?: string;\n @Input() label?: string | TemplateRef<void> | null;\n @Input() unit?: string | TemplateRef<void> | null;\n @Input() @InputNumber(null) col?: number | null;\n @Input() @InputBoolean(null) default?: boolean | null;\n @Input() type?: 'primary' | 'success' | 'danger' | 'warning';\n @Input() @InputBoolean(null) noColon?: boolean | null;\n\n // #endregion\n\n get paddingValue(): number {\n return this.parent && this.parent.gutter / 2;\n }\n\n get labelWidth(): number | null | undefined {\n const { labelWidth, layout } = this.parent;\n return layout === 'horizontal' ? labelWidth : null;\n }\n\n constructor(\n el: ElementRef,\n @Host() @Optional() public parent: SVContainerComponent,\n private rep: ResponsiveService,\n private ren: Renderer2\n ) {\n if (parent == null) {\n throw new Error(`[sv] must include 'sv-container' component`);\n }\n this.el = el.nativeElement;\n }\n\n private setClass(): void {\n const { el, ren, col, clsMap, type, rep, noColon, parent } = this;\n this._noColon = noColon != null ? noColon : parent.noColon;\n clsMap.forEach(cls => ren.removeClass(el, cls));\n clsMap.length = 0;\n clsMap.push(...rep.genCls(col != null ? col : this.parent.col));\n clsMap.push(`${prefixCls}__item`);\n if (this.parent.labelWidth) clsMap.push(`${prefixCls}__item-fixed`);\n if (type) clsMap.push(`${prefixCls}__type-${type}`);\n clsMap.forEach(cls => ren.addClass(el, cls));\n }\n\n ngAfterViewInit(): void {\n this.setClass();\n this.checkContent();\n }\n\n ngOnChanges(): void {\n this.setClass();\n }\n\n checkContent(): void {\n const { conEl } = this;\n const def = this.default;\n if (!(def != null ? def : this.parent.default)) {\n return;\n }\n const el = conEl.nativeElement as HTMLElement;\n const cls = `sv__default`;\n if (el.classList.contains(cls)) {\n el.classList.remove(cls);\n }\n if (isEmpty(el)) {\n el.classList.add(cls);\n }\n }\n}\n","<div\n class=\"sv__label\"\n [class.sv__label-empty]=\"!label\"\n [class.sv__label-width]=\"labelWidth !== null && labelWidth !== undefined\"\n [class.sv__no-colon]=\"_noColon\"\n [style.width.px]=\"labelWidth\"\n>\n <span class=\"sv__label-text\">\n <ng-container *nzStringTemplateOutlet=\"label\">{{ label }}</ng-container>\n </span>\n <span *ngIf=\"optional || optionalHelp\" class=\"sv__label-optional\" [class.sv__label-optional-no-text]=\"!optional\">\n <ng-container *nzStringTemplateOutlet=\"optional\">{{ optional }}</ng-container>\n <i\n *ngIf=\"optionalHelp\"\n nz-tooltip\n [nzTooltipTitle]=\"optionalHelp\"\n [nzTooltipColor]=\"optionalHelpColor\"\n nz-icon\n nzType=\"question-circle\"\n ></i>\n </span>\n</div>\n<div class=\"sv__detail\">\n <span (cdkObserveContent)=\"checkContent()\" #conEl>\n <ng-content></ng-content>\n </span>\n <ng-container *ngIf=\"!!unit\">\n <span class=\"sv__unit\" *nzStringTemplateOutlet=\"unit\">{{ unit }}</span>\n </ng-container>\n</div>\n","import { ObserversModule } from '@angular/cdk/observers';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzToolTipModule } from 'ng-zorro-antd/tooltip';\n\nimport { SVContainerComponent, SVTitleComponent } from './sv-container.component';\nimport { SVValueComponent } from './sv-value.component';\nimport { SVComponent } from './sv.component';\n\nconst COMPONENTS = [SVContainerComponent, SVComponent, SVTitleComponent, SVValueComponent];\n\n@NgModule({\n imports: [CommonModule, ObserversModule, NzToolTipModule, NzIconModule, NzOutletModule],\n declarations: COMPONENTS,\n exports: COMPONENTS\n})\nexport class SVModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"autoFocus.mjs","sources":["../../../../packages/abc/auto-focus/auto-focus.directive.ts","../../../../packages/abc/auto-focus/auto-focus.module.ts","../../../../packages/abc/auto-focus/autoFocus.ts"],"sourcesContent":["import { AfterViewInit, ChangeDetectorRef, Directive, ElementRef, Input, OnDestroy } from '@angular/core';\n\nimport { BooleanInput, InputBoolean, InputNumber, NumberInput } from '@delon/util/decorator';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\n@Directive({\n selector: '[auto-focus], input[autofocus=\"autofocus\"], textarea[autofocus=\"autofocus\"]',\n exportAs: 'autoFocus'\n})\nexport class AutoFocusDirective implements AfterViewInit, OnDestroy {\n static ngAcceptInputType_enabled: BooleanInput;\n static ngAcceptInputType_delay: NumberInput;\n\n private _focusoutTimeout: NzSafeAny;\n @Input() @InputBoolean() enabled = true;\n @Input() @InputNumber() delay = 300;\n\n constructor(private el: ElementRef<HTMLElement>, private cdr: ChangeDetectorRef) {}\n\n ngAfterViewInit(): void {\n const el = this.el.nativeElement;\n if (!(el instanceof HTMLElement) || !this.enabled) {\n return;\n }\n this._focusoutTimeout = setTimeout(() => {\n el.focus({ preventScroll: false });\n this.cdr.markForCheck();\n }, this.delay);\n }\n\n ngOnDestroy(): void {\n if (this._focusoutTimeout) {\n clearTimeout(this._focusoutTimeout);\n this._focusoutTimeout = null;\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { AutoFocusDirective } from './auto-focus.directive';\n\nconst COMPONENTS = [AutoFocusDirective];\n\n@NgModule({\n declarations: COMPONENTS,\n exports: COMPONENTS\n})\nexport class AutoFocusModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MASa,kBAAkB;IAQ7B,YAAoB,EAA2B,EAAU,GAAsB;QAA3D,OAAE,GAAF,EAAE,CAAyB;QAAU,QAAG,GAAH,GAAG,CAAmB;QAHtD,YAAO,GAAG,IAAI,CAAC;QAChB,UAAK,GAAG,GAAG,CAAC;KAE+C;IAEnF,eAAe;QACb,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;QACjC,IAAI,EAAE,EAAE,YAAY,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjD,OAAO;SACR;QACD,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC;YACjC,EAAE,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;SACzB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KAChB;IAED,WAAW;QACT,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACpC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAC9B;KACF;;+GA1BU,kBAAkB;mGAAlB,kBAAkB;AAKJ;IAAf,YAAY,EAAE;mDAAgB;AAChB;IAAd,WAAW,EAAE;iDAAa;2FANzB,kBAAkB;kBAJ9B,SAAS;mBAAC;oBACT,QAAQ,EAAE,6EAA6E;oBACvF,QAAQ,EAAE,WAAW;iBACtB;iIAM0B,OAAO;sBAA/B,KAAK;gBACkB,KAAK;sBAA5B,KAAK;;;ACXR,MAAM,UAAU,GAAG,CAAC,kBAAkB,CAAC,CAAC;MAM3B,eAAe;;4GAAf,eAAe;6GAAf,eAAe,iBANR,kBAAkB,aAAlB,kBAAkB;6GAMzB,eAAe;2FAAf,eAAe;kBAJ3B,QAAQ;mBAAC;oBACR,YAAY,EAAE,UAAU;oBACxB,OAAO,EAAE,UAAU;iBACpB;;;ACTD;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"avatarList.mjs","sources":["../../../../packages/abc/avatar-list/avatar-list-item.component.ts","../../../../packages/abc/avatar-list/avatar-list.component.ts","../../../../packages/abc/avatar-list/avatar-list.component.html","../../../../packages/abc/avatar-list/avatar-list.module.ts","../../../../packages/abc/avatar-list/avatarList.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'avatar-list-item, [avatar-list-item]',\n exportAs: 'avatarListItem',\n template: `<ng-content></ng-content>`,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class AvatarListItemComponent {\n @Input() src?: string;\n @Input() text?: string;\n @Input() icon?: string;\n @Input() tips?: string;\n}\n","import { Direction, Directionality } from '@angular/cdk/bidi';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { InputNumber, NumberInput } from '@delon/util/decorator';\nimport type { NgStyleInterface, NzSizeLDSType } from 'ng-zorro-antd/core/types';\n\nimport { AvatarListItemComponent } from './avatar-list-item.component';\n\n@Component({\n selector: 'avatar-list',\n exportAs: 'avatarList',\n templateUrl: './avatar-list.component.html',\n host: {\n '[class.avatar-list]': 'true',\n '[class.avatar-list-rtl]': `dir === 'rtl'`\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class AvatarListComponent implements AfterViewInit, OnChanges, OnDestroy {\n static ngAcceptInputType_maxLength: NumberInput;\n\n private inited = false;\n @ContentChildren(AvatarListItemComponent, { descendants: false })\n private _items!: QueryList<AvatarListItemComponent>;\n private destroy$ = new Subject<void>();\n\n items: AvatarListItemComponent[] = [];\n exceedCount = 0;\n dir: Direction = 'ltr';\n\n cls = '';\n avatarSize: NzSizeLDSType = 'default';\n @Input()\n set size(value: 'large' | 'small' | 'mini' | 'default') {\n this.cls = `avatar-list__item${value === 'default' ? '' : ` avatar-list__${value}`}`;\n switch (value) {\n case 'large':\n case 'small':\n case 'default':\n this.avatarSize = value;\n break;\n default:\n this.avatarSize = 'small';\n break;\n }\n }\n @Input() @InputNumber() maxLength = 0;\n @Input() excessItemsStyle: NgStyleInterface | null = null;\n\n constructor(private cdr: ChangeDetectorRef, @Optional() private directionality: Directionality) {}\n\n private gen(): void {\n const { _items } = this;\n const maxLength = this.maxLength > 0 ? this.maxLength : _items.length;\n const numOfChildren = _items.length;\n const numToShow = maxLength > 0 && maxLength >= numOfChildren ? numOfChildren : maxLength;\n this.items = _items.toArray().slice(0, numToShow);\n this.exceedCount = numToShow < numOfChildren ? numOfChildren - maxLength : 0;\n this.cdr.detectChanges();\n }\n\n ngAfterViewInit(): void {\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\n this.dir = direction;\n });\n this.gen();\n this.inited = true;\n }\n\n ngOnChanges(): void {\n if (this.inited) {\n this.gen();\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<ul class=\"avatar-list__wrap\">\n <li *ngFor=\"let i of items\" [ngClass]=\"cls\">\n <nz-avatar\n *ngIf=\"i.tips\"\n nz-tooltip\n [nzTooltipTitle]=\"i.tips\"\n [nzSrc]=\"i.src\"\n [nzText]=\"i.text\"\n [nzIcon]=\"i.icon\"\n [nzSize]=\"avatarSize\"\n ></nz-avatar>\n <nz-avatar *ngIf=\"!i.tips\" [nzSrc]=\"i.src\" [nzText]=\"i.text\" [nzIcon]=\"i.icon\" [nzSize]=\"avatarSize\"></nz-avatar>\n </li>\n <li *ngIf=\"exceedCount > 0\" [ngClass]=\"cls\">\n <nz-avatar\n [nzSize]=\"avatarSize\"\n style=\"cursor: auto\"\n [ngStyle]=\"excessItemsStyle\"\n [nzText]=\"'+' + exceedCount\"\n ></nz-avatar>\n </li>\n</ul>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NzAvatarModule } from 'ng-zorro-antd/avatar';\nimport { NzToolTipModule } from 'ng-zorro-antd/tooltip';\n\nimport { AvatarListItemComponent } from './avatar-list-item.component';\nimport { AvatarListComponent } from './avatar-list.component';\n\nconst COMPONENTS = [AvatarListComponent, AvatarListItemComponent];\n\n@NgModule({\n imports: [CommonModule, NzAvatarModule, NzToolTipModule],\n declarations: COMPONENTS,\n exports: COMPONENTS\n})\nexport class AvatarListModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"datePicker.mjs","sources":["../../../../packages/abc/date-picker/range-shortcut.component.ts","../../../../packages/abc/date-picker/range.directive.ts","../../../../packages/abc/date-picker/date-picker.module.ts","../../../../packages/abc/date-picker/datePicker.ts"],"sourcesContent":["import { Component, TemplateRef, ViewChild } from '@angular/core';\n\nimport { AlainDateRangePickerShortcutItem } from '@delon/util/config';\n\n@Component({\n selector: '',\n template: `\n <ng-template #tpl>\n <a\n *ngFor=\"let i of list; let first = first\"\n (click)=\"click(i)\"\n [innerHTML]=\"i._text\"\n [ngClass]=\"{ 'ml-sm': !first }\"\n ></a>\n </ng-template>\n `\n})\nexport class RangePickerShortcutTplComponent {\n @ViewChild('tpl', { static: true })\n tpl!: TemplateRef<void>;\n\n list: AlainDateRangePickerShortcutItem[] = [];\n\n click(_: AlainDateRangePickerShortcutItem): void {}\n}\n","import {\n AfterViewInit,\n ComponentFactoryResolver,\n ComponentRef,\n Directive,\n EventEmitter,\n Host,\n Injector,\n Input,\n OnDestroy,\n Optional,\n Output,\n TemplateRef\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Subject } from 'rxjs';\n\nimport { AlainConfigService, AlainDateRangePickerShortcut, AlainDateRangePickerShortcutItem } from '@delon/util/config';\nimport { fixEndTimeOfRange, getTimeDistance } from '@delon/util/date-time';\nimport { assert, deepMergeKey } from '@delon/util/other';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzDatePickerComponent, NzRangePickerComponent } from 'ng-zorro-antd/date-picker';\nimport { DatePickerService } from 'ng-zorro-antd/date-picker/date-picker.service';\n\nimport { RangePickerShortcutTplComponent } from './range-shortcut.component';\n\n@Directive({\n selector: 'nz-range-picker[extend]',\n exportAs: 'extendRangePicker'\n})\nexport class RangePickerDirective implements OnDestroy, AfterViewInit {\n static ngAcceptInputType_shortcut: AlainDateRangePickerShortcut | string | null;\n\n private defaultShortcuts: AlainDateRangePickerShortcut;\n private _shortcut: AlainDateRangePickerShortcut | null = null;\n private destroy$ = new Subject<void>();\n private shortcutFactory: ComponentRef<RangePickerShortcutTplComponent> | null = null;\n start: Date | null = null;\n end: Date | null = null;\n\n @Input()\n set shortcut(val: AlainDateRangePickerShortcut | null) {\n const item = deepMergeKey(\n { list: [] },\n true,\n this.defaultShortcuts,\n val == null ? {} : val\n ) as AlainDateRangePickerShortcut;\n if (typeof val !== 'object') {\n item.enabled = val !== false;\n }\n (item.list || []).forEach(i => {\n i._text = this.dom.bypassSecurityTrustHtml(i.text);\n });\n this._shortcut = item;\n this.refreshShortcut();\n }\n get shortcut(): AlainDateRangePickerShortcut | null {\n return this._shortcut;\n }\n @Input() ngModelEnd: NzSafeAny;\n @Output() readonly ngModelEndChange = new EventEmitter<NzSafeAny>();\n\n private get dp(): NzDatePickerComponent {\n return this.nativeComp.datePicker;\n }\n\n private get srv(): DatePickerService {\n return this.dp.datePickerService;\n }\n\n constructor(\n private dom: DomSanitizer,\n configSrv: AlainConfigService,\n @Host() @Optional() private nativeComp: NzRangePickerComponent,\n private resolver: ComponentFactoryResolver,\n private injector: Injector\n ) {\n assert(\n !!nativeComp,\n `It should be attached to nz-range-picker component, for example: '<nz-range-picker [(ngModel)]=\"i.start\" extend [(ngModelEnd)]=\"i.end\" shortcut></nz-range-picker>'`\n );\n const cog = configSrv.merge('dataRange', {\n nzFormat: 'yyyy-MM-dd',\n nzAllowClear: true,\n nzAutoFocus: false,\n nzPopupStyle: { position: 'relative' },\n nzShowToday: true,\n shortcuts: {\n enabled: false,\n closed: true,\n list: [\n {\n text: '今天',\n fn: () => getTimeDistance('today')\n },\n {\n text: '昨天',\n fn: () => getTimeDistance('yesterday')\n },\n {\n text: '近3天',\n fn: () => getTimeDistance(-2)\n },\n {\n text: '近7天',\n fn: () => getTimeDistance(-6)\n },\n {\n text: '本周',\n fn: () => getTimeDistance('week')\n },\n {\n text: '本月',\n fn: () => getTimeDistance('month')\n },\n {\n text: '全年',\n fn: () => getTimeDistance('year')\n }\n ]\n }\n })!;\n this.defaultShortcuts = { ...cog.shortcuts } as AlainDateRangePickerShortcut;\n Object.assign(this, cog);\n }\n\n private cd(): void {\n (this.dp as NzSafeAny).cdr.markForCheck();\n }\n\n private overrideNative(): void {\n const dp = this.dp;\n dp.writeValue = (value: Date) => {\n const dates = (value && this.ngModelEnd ? [value, this.ngModelEnd] : []).filter(w => !!w);\n this.srv.setValue(this.srv.makeValue(dates));\n this.start = dates.length > 0 ? dates[0] : null;\n this.end = dates.length > 0 ? dates[1] : null;\n this.cd();\n };\n\n const oldOnChangeFn = dp.onChangeFn;\n dp.onChangeFn = (list: Array<Date | null>) => {\n let start: Date | null = null;\n let end: Date | null = null;\n if (list.length > 0 && list.filter(w => w != null).length === 2) {\n [start, end] = fixEndTimeOfRange([list[0]!, list[1]!]);\n }\n this.start = start;\n this.end = end;\n oldOnChangeFn(start);\n this.ngModelEnd = end;\n this.ngModelEndChange.emit(end);\n };\n }\n\n private refreshShortcut(): void {\n if (!this._shortcut) {\n return;\n }\n const { enabled, list } = this._shortcut;\n let extraFooter: TemplateRef<NzSafeAny> | undefined;\n if (!this.nativeComp || !enabled) {\n extraFooter = undefined;\n } else {\n if (!this.shortcutFactory) {\n const factory = this.resolver.resolveComponentFactory(RangePickerShortcutTplComponent);\n this.shortcutFactory = factory.create(this.injector);\n }\n const { instance } = this.shortcutFactory;\n instance.list = list!;\n instance.click = (item: AlainDateRangePickerShortcutItem) => {\n const res = item.fn([this.start, this.end]);\n this.srv.setValue(this.srv.makeValue(res as Date[]));\n this.dp.onChangeFn(res);\n this.dp.close();\n };\n extraFooter = instance.tpl;\n }\n this.nativeComp.datePicker.extraFooter = extraFooter;\n Promise.resolve().then(() => this.cd());\n }\n\n ngAfterViewInit(): void {\n this.overrideNative();\n this.refreshShortcut();\n }\n\n private destoryShortcut(): void {\n if (this.shortcutFactory != null) {\n this.shortcutFactory.destroy();\n }\n }\n\n ngOnDestroy(): void {\n this.destoryShortcut();\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { NzDatePickerModule } from 'ng-zorro-antd/date-picker';\n\nimport { RangePickerShortcutTplComponent } from './range-shortcut.component';\nimport { RangePickerDirective } from './range.directive';\n\nconst COMPONENTS = [RangePickerDirective, RangePickerShortcutTplComponent];\n\n@NgModule({\n imports: [CommonModule, FormsModule, NzDatePickerModule],\n declarations: COMPONENTS,\n exports: COMPONENTS\n})\nexport class DatePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"downFile.mjs","sources":["../../../../packages/abc/down-file/down-file.directive.ts","../../../../packages/abc/down-file/down-file.module.ts","../../../../packages/abc/down-file/downFile.ts"],"sourcesContent":["import { HttpResponse } from '@angular/common/http';\nimport { Directive, ElementRef, EventEmitter, Input, Output } from '@angular/core';\nimport { finalize } from 'rxjs/operators';\n\nimport { saveAs } from 'file-saver';\n\nimport { _HttpClient } from '@delon/theme';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\n@Directive({\n selector: '[down-file]',\n exportAs: 'downFile',\n host: {\n '(click)': '_click($event)'\n }\n})\nexport class DownFileDirective {\n private isFileSaverSupported = true;\n @Input('http-data') httpData: NzSafeAny;\n @Input('http-body') httpBody: NzSafeAny;\n @Input('http-method') httpMethod: string = 'get';\n @Input('http-url') httpUrl!: string;\n @Input('file-name') fileName?: string | ((rep: HttpResponse<Blob>) => string);\n @Input() pre?: (ev: MouseEvent) => Promise<boolean>;\n @Output() readonly success = new EventEmitter<HttpResponse<Blob>>();\n @Output() readonly error = new EventEmitter<NzSafeAny>();\n\n private getDisposition(data: string | null): NzSafeAny {\n const arr: Array<Record<string, string>> = (data || '')\n .split(';')\n .filter(i => i.includes('='))\n .map(v => {\n const strArr = v.split('=');\n const utfId = `UTF-8''`;\n let value = strArr[1];\n if (value.startsWith(utfId)) value = value.substring(utfId.length);\n return { [strArr[0].trim()]: value };\n });\n return arr.reduce((_o, item) => item, {});\n }\n\n constructor(private el: ElementRef<HTMLButtonElement>, private _http: _HttpClient) {\n let isFileSaverSupported = false;\n try {\n isFileSaverSupported = !!new Blob();\n } catch {}\n this.isFileSaverSupported = isFileSaverSupported;\n if (!isFileSaverSupported) {\n el.nativeElement.classList.add(`down-file__not-support`);\n }\n }\n\n private setDisabled(status: boolean): void {\n const el = this.el.nativeElement;\n el.disabled = status;\n el.classList[status ? 'add' : 'remove'](`down-file__disabled`);\n }\n\n async _click(ev: MouseEvent): Promise<void> {\n if (!this.isFileSaverSupported || (typeof this.pre === 'function' && !(await this.pre(ev)))) {\n ev.stopPropagation();\n ev.preventDefault();\n return;\n }\n this.setDisabled(true);\n this._http\n .request(this.httpMethod, this.httpUrl, {\n params: this.httpData || {},\n responseType: 'blob',\n observe: 'response',\n body: this.httpBody\n })\n .pipe(finalize(() => this.setDisabled(false)))\n .subscribe({\n next: (res: HttpResponse<Blob>) => {\n if (res.status !== 200 || res.body!.size <= 0) {\n this.error.emit(res);\n return;\n }\n const disposition = this.getDisposition(res.headers.get('content-disposition'));\n let fileName = this.fileName;\n if (typeof fileName === 'function') fileName = fileName(res);\n fileName =\n fileName ||\n disposition[`filename*`] ||\n disposition[`filename`] ||\n res.headers.get('filename') ||\n res.headers.get('x-filename');\n saveAs(res.body!, decodeURI(fileName as string));\n this.success.emit(res);\n },\n error: err => this.error.emit(err)\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { AlainThemeModule } from '@delon/theme';\n\nimport { DownFileDirective } from './down-file.directive';\n\nconst DIRECTIVES = [DownFileDirective];\n\n@NgModule({\n imports: [CommonModule, AlainThemeModule],\n declarations: [...DIRECTIVES],\n exports: [...DIRECTIVES]\n})\nexport class DownFileModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"edit.mjs","sources":["../../../../packages/abc/se/se-container.component.ts","../../../../packages/abc/se/se.component.ts","../../../../packages/abc/se/se.component.html","../../../../packages/abc/se/se.module.ts","../../../../packages/abc/se/se.types.ts","../../../../packages/abc/se/edit.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Host,\n Input,\n OnInit,\n Optional,\n Renderer2,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport type { REP_TYPE } from '@delon/theme';\nimport { AlainConfigService } from '@delon/util/config';\nimport { BooleanInput, InputBoolean, InputNumber, NumberInput, toNumber } from '@delon/util/decorator';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { SEErrorRefresh, SELayout } from './se.types';\n\n@Component({\n selector: 'se-container, [se-container]',\n exportAs: 'seContainer',\n template: `\n <div se-title *ngIf=\"title\">\n <ng-container *nzStringTemplateOutlet=\"title\">{{ title }}</ng-container>\n </div>\n <ng-content></ng-content>\n `,\n host: {\n '[class.ant-row]': `true`,\n '[class.se__container]': `true`,\n '[class.se__horizontal]': `nzLayout === 'horizontal'`,\n '[class.se__vertical]': `nzLayout === 'vertical'`,\n '[class.se__inline]': `nzLayout === 'inline'`,\n '[class.se__compact]': `size === 'compact'`,\n '[style.margin-left.px]': `margin`,\n '[style.margin-right.px]': `margin`\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SEContainerComponent {\n static ngAcceptInputType_gutter: NumberInput;\n static ngAcceptInputType_col: NumberInput;\n static ngAcceptInputType_colInCon: NumberInput;\n static ngAcceptInputType_labelWidth: NumberInput;\n static ngAcceptInputType_firstVisual: BooleanInput;\n static ngAcceptInputType_ingoreDirty: BooleanInput;\n static ngAcceptInputType_line: BooleanInput;\n static ngAcceptInputType_noColon: BooleanInput;\n\n private errorNotify$ = new BehaviorSubject<SEErrorRefresh>(null as NzSafeAny);\n @Input('se-container') @InputNumber(null) colInCon?: REP_TYPE;\n @Input() @InputNumber(null) col!: REP_TYPE;\n @Input() @InputNumber(null) labelWidth!: number;\n @Input() @InputBoolean() noColon = false;\n @Input() title?: string | TemplateRef<void> | null;\n\n @Input()\n get gutter(): number {\n return this.nzLayout === 'horizontal' ? this._gutter : 0;\n }\n set gutter(value: number) {\n this._gutter = toNumber(value);\n }\n private _gutter!: number;\n\n @Input()\n get nzLayout(): SELayout {\n return this._nzLayout;\n }\n set nzLayout(value: SELayout) {\n this._nzLayout = value;\n if (value === 'inline') {\n this.size = 'compact';\n }\n }\n private _nzLayout!: SELayout;\n\n @Input() size!: 'default' | 'compact';\n @Input() @InputBoolean() firstVisual!: boolean;\n @Input() @InputBoolean() ingoreDirty!: boolean;\n @Input() @InputBoolean() line = false;\n @Input()\n set errors(val: SEErrorRefresh[]) {\n this.setErrors(val);\n }\n\n get margin(): number {\n return -((this.gutter as number) / 2);\n }\n\n get errorNotify(): Observable<SEErrorRefresh> {\n return this.errorNotify$.pipe(filter(v => v != null));\n }\n\n constructor(configSrv: AlainConfigService) {\n configSrv.attach(this, 'se', {\n size: 'default',\n nzLayout: 'horizontal',\n gutter: 32,\n col: 2,\n labelWidth: 150,\n firstVisual: false,\n ingoreDirty: false\n });\n }\n\n setErrors(errors: SEErrorRefresh[]): void {\n for (const error of errors) {\n this.errorNotify$.next(error);\n }\n }\n}\n\n@Component({\n selector: 'se-title, [se-title]',\n exportAs: 'seTitle',\n template: '<ng-content></ng-content>',\n host: {\n '[class.se__title]': 'true'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SETitleComponent implements OnInit {\n private el: HTMLElement;\n constructor(\n @Host()\n @Optional()\n private parent: SEContainerComponent,\n el: ElementRef,\n private ren: Renderer2\n ) {\n if (parent == null) {\n throw new Error(`[se-title] must include 'se-container' component`);\n }\n this.el = el.nativeElement;\n }\n\n private setClass(): void {\n const { el } = this;\n const gutter = this.parent.gutter as number;\n this.ren.setStyle(el, 'padding-left', `${gutter / 2}px`);\n this.ren.setStyle(el, 'padding-right', `${gutter / 2}px`);\n }\n\n ngOnInit(): void {\n this.setClass();\n }\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n Host,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { FormControlName, NgModel, RequiredValidator, Validator } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { ResponsiveService } from '@delon/theme';\nimport { isEmpty } from '@delon/util/browser';\nimport { BooleanInput, InputBoolean, InputNumber, NumberInput } from '@delon/util/decorator';\nimport { helpMotion } from 'ng-zorro-antd/core/animation';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { SEContainerComponent } from './se-container.component';\nimport { SEError, SEErrorType } from './se.types';\n\nconst prefixCls = `se`;\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'se',\n exportAs: 'se',\n templateUrl: './se.component.html',\n host: {\n '[style.padding-left.px]': 'paddingValue',\n '[style.padding-right.px]': 'paddingValue',\n '[class.se__hide-label]': 'hideLabel',\n '[class.ant-form-item-has-error]': 'invalid',\n '[class.ant-form-item-with-help]': 'showErr'\n },\n preserveWhitespaces: false,\n animations: [helpMotion],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SEComponent implements OnChanges, AfterContentInit, AfterViewInit, OnDestroy {\n static ngAcceptInputType_col: NumberInput;\n static ngAcceptInputType_required: BooleanInput;\n static ngAcceptInputType_line: BooleanInput;\n static ngAcceptInputType_labelWidth: NumberInput;\n static ngAcceptInputType_noColon: BooleanInput;\n static ngAcceptInputType_hideLabel: BooleanInput;\n\n private el: HTMLElement;\n private unsubscribe$ = new Subject<void>();\n @ContentChild(NgModel, { static: true }) private readonly ngModel?: NgModel;\n @ContentChild(FormControlName, { static: true })\n private readonly formControlName?: FormControlName;\n @ViewChild('contentElement', { static: true }) private readonly contentElement!: ElementRef;\n private clsMap: string[] = [];\n private inited = false;\n private onceFlag = false;\n private errorData: SEError = {};\n private isBindModel = false;\n invalid = false;\n _labelWidth: number | null = null;\n _noColon: boolean | null = null;\n _error?: string | TemplateRef<void>;\n\n // #region fields\n\n @Input() optional?: string | TemplateRef<void> | null = null;\n @Input() optionalHelp?: string | TemplateRef<void> | null = null;\n @Input() optionalHelpColor?: string;\n @Input()\n set error(val: SEErrorType) {\n this.errorData = typeof val === 'string' || val instanceof TemplateRef ? { '': val } : val;\n }\n @Input() extra?: string | TemplateRef<void> | null;\n @Input() label?: string | TemplateRef<void> | null;\n @Input() @InputNumber(null) col?: number | null;\n @Input() @InputBoolean() required = false;\n @Input() controlClass?: string | null = '';\n @Input() @InputBoolean(null) line?: boolean | null;\n @Input() @InputNumber(null) labelWidth?: number | null;\n @Input() @InputBoolean(null) noColon?: boolean | null;\n @Input() @InputBoolean() hideLabel = false;\n\n @Input()\n set id(value: string) {\n this._id = value;\n this._autoId = false;\n }\n\n _id = `_se-${++nextUniqueId}`;\n _autoId = true;\n\n // #endregion\n\n get paddingValue(): number {\n return (this.parent.gutter as number) / 2;\n }\n\n get showErr(): boolean {\n return this.invalid && !!this._error && !this.compact;\n }\n\n get compact(): boolean {\n return this.parent.size === 'compact';\n }\n\n private get ngControl(): NgModel | FormControlName | null | undefined {\n return this.ngModel || this.formControlName;\n }\n\n constructor(\n el: ElementRef,\n @Optional() @Host() private parent: SEContainerComponent,\n private rep: ResponsiveService,\n private ren: Renderer2,\n private cdr: ChangeDetectorRef\n ) {\n if (parent == null) {\n throw new Error(`[se] must include 'se-container' component`);\n }\n this.el = el.nativeElement;\n parent.errorNotify\n .pipe(\n takeUntil(this.unsubscribe$),\n filter(w => this.inited && this.ngControl != null && this.ngControl.name === w.name)\n )\n .subscribe(item => {\n this.error = item.error;\n this.updateStatus(this.ngControl!.invalid!);\n });\n }\n\n private setClass(): this {\n const { el, ren, clsMap, col, parent, cdr, line, labelWidth, rep, noColon } = this;\n this._noColon = noColon != null ? noColon : parent.noColon;\n this._labelWidth = parent.nzLayout === 'horizontal' ? (labelWidth != null ? labelWidth : parent.labelWidth) : null;\n clsMap.forEach(cls => ren.removeClass(el, cls));\n clsMap.length = 0;\n const repCls =\n parent.nzLayout === 'horizontal' ? rep.genCls(col != null ? col : parent.colInCon || parent.col) : [];\n clsMap.push(`ant-form-item`, ...repCls, `${prefixCls}__item`);\n if (line || parent.line) {\n clsMap.push(`${prefixCls}__line`);\n }\n clsMap.forEach(cls => ren.addClass(el, cls));\n cdr.detectChanges();\n return this;\n }\n\n private bindModel(): void {\n if (!this.ngControl || this.isBindModel) return;\n\n this.isBindModel = true;\n this.ngControl\n .statusChanges!.pipe(takeUntil(this.unsubscribe$))\n .subscribe(res => this.updateStatus(res === 'INVALID'));\n if (this._autoId) {\n const controlAccessor = this.ngControl.valueAccessor as NzSafeAny;\n const control = (controlAccessor?.elementRef || controlAccessor?._elementRef)?.nativeElement as HTMLElement;\n if (!!control) {\n if (control.id) {\n this._id = control.id;\n } else {\n control.id = this._id;\n }\n }\n }\n // auto required\n if (this.required !== true) {\n const rawValidators = (this.ngControl as NzSafeAny)?._rawValidators as Validator[];\n this.required = rawValidators.find(w => w instanceof RequiredValidator) != null;\n this.cdr.detectChanges();\n }\n }\n\n private updateStatus(invalid: boolean): void {\n if (this.ngControl?.disabled || this.ngControl?.isDisabled) {\n return;\n }\n this.invalid =\n !this.onceFlag && invalid && this.parent.ingoreDirty === false && !this.ngControl?.dirty ? false : invalid;\n const errors = this.ngControl?.errors;\n if (errors != null && Object.keys(errors).length > 0) {\n const key = Object.keys(errors)[0] || '';\n const err = this.errorData[key];\n this._error = err != null ? err : this.errorData[''] || '';\n }\n\n this.cdr.detectChanges();\n }\n\n checkContent(): void {\n const el = this.contentElement.nativeElement;\n const cls = `${prefixCls}__item-empty`;\n if (isEmpty(el)) {\n this.ren.addClass(el, cls);\n } else {\n this.ren.removeClass(el, cls);\n }\n }\n\n ngAfterContentInit(): void {\n this.checkContent();\n }\n\n ngOnChanges(): void {\n this.onceFlag = this.parent.firstVisual;\n if (this.inited) {\n this.setClass().bindModel();\n }\n }\n\n ngAfterViewInit(): void {\n this.setClass().bindModel();\n this.inited = true;\n if (this.onceFlag) {\n Promise.resolve().then(() => {\n this.updateStatus(this.ngControl?.invalid!);\n this.onceFlag = false;\n });\n }\n }\n\n ngOnDestroy(): void {\n const { unsubscribe$ } = this;\n unsubscribe$.next();\n unsubscribe$.complete();\n }\n}\n","<div class=\"ant-form-item-label\" [class.se__nolabel]=\"hideLabel || !label\" [style.width.px]=\"_labelWidth\">\n <label\n *ngIf=\"label\"\n [attr.for]=\"_id\"\n class=\"se__label\"\n [ngClass]=\"{ 'ant-form-item-required': required, 'se__no-colon': _noColon }\"\n >\n <span class=\"se__label-text\">\n <ng-container *nzStringTemplateOutlet=\"label\">{{ label }}</ng-container>\n </span>\n <span *ngIf=\"optional || optionalHelp\" class=\"se__label-optional\" [class.se__label-optional-no-text]=\"!optional\">\n <ng-container *nzStringTemplateOutlet=\"optional\">{{ optional }}</ng-container>\n <i\n *ngIf=\"optionalHelp\"\n nz-tooltip\n [nzTooltipTitle]=\"optionalHelp\"\n [nzTooltipColor]=\"optionalHelpColor\"\n nz-icon\n nzType=\"question-circle\"\n ></i>\n </span>\n </label>\n</div>\n<div class=\"ant-form-item-control se__control\">\n <div class=\"ant-form-item-control-input {{ controlClass }}\">\n <div class=\"ant-form-item-control-input-content\" (cdkObserveContent)=\"checkContent()\" #contentElement>\n <ng-content></ng-content>\n </div>\n </div>\n <div class=\"ant-form-item-explain ant-form-item-explain-error\" *ngIf=\"showErr\">\n <div @helpMotion>\n <ng-container *nzStringTemplateOutlet=\"_error\">{{ _error }}</ng-container>\n </div>\n </div>\n <div *ngIf=\"extra && !compact\" class=\"ant-form-item-extra\">\n <ng-container *nzStringTemplateOutlet=\"extra\">{{ extra }}</ng-container>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzToolTipModule } from 'ng-zorro-antd/tooltip';\n\nimport { SEContainerComponent, SETitleComponent } from './se-container.component';\nimport { SEComponent } from './se.component';\n\nconst COMPONENTS = [SEContainerComponent, SEComponent, SETitleComponent];\n\n@NgModule({\n imports: [CommonModule, NzToolTipModule, NzIconModule, NzOutletModule],\n declarations: COMPONENTS,\n exports: COMPONENTS\n})\nexport class SEModule {}\n","import { TemplateRef } from '@angular/core';\n\nexport type SELayout = 'horizontal' | 'vertical' | 'inline';\n\nexport type SESize = 'default' | 'compact';\n\nexport type SEErrorType = string | TemplateRef<void> | SEError;\n\nexport interface SEError {\n [key: string]: string | TemplateRef<void>;\n}\n\nexport interface SEErrorRefresh {\n name: string;\n error: SEErrorType;\n}\n\n// /**\n// * Error collection\n// * - `name`: The value of` ngModel` or `formControlName`\n// * - `error`: Replaced error value\n// */\n// errors: Array<{ name: string; error: SEErrorType }>;\n// /**\n// * Whether force show error, even if the form component has not invalid, Default: `false`\n// * - `false`: Whether to display error by `invalid`\n// * - `true`: Force show display error\n// */\n// force?: boolean;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"errorCollect.mjs","sources":["../../../../packages/abc/error-collect/error-collect.component.ts","../../../../packages/abc/error-collect/error-collect.module.ts","../../../../packages/abc/error-collect/errorCollect.ts"],"sourcesContent":["import { Direction, Directionality } from '@angular/cdk/bidi';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n ViewEncapsulation\n} from '@angular/core';\nimport { interval, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { AlainConfigService } from '@delon/util/config';\nimport { InputNumber } from '@delon/util/decorator';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\n@Component({\n selector: 'error-collect, [error-collect]',\n exportAs: 'errorCollect',\n template: `\n <i nz-icon nzType=\"exclamation-circle\"></i>\n <span class=\"error-collect__count\">{{ count }}</span>\n `,\n host: {\n '[class.error-collect]': 'true',\n '[class.error-collect-rtl]': `dir === 'rtl'`,\n '[class.d-none]': '_hiden',\n '(click)': '_click()'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class ErrorCollectComponent implements OnInit, OnDestroy {\n private formEl: HTMLFormElement | null = null;\n private destroy$ = new Subject<void>();\n\n _hiden = true;\n count = 0;\n dir: Direction = 'ltr';\n\n @Input() @InputNumber() freq!: number;\n @Input() @InputNumber() offsetTop!: number;\n\n constructor(\n private el: ElementRef,\n private cdr: ChangeDetectorRef,\n @Inject(DOCUMENT) private doc: NzSafeAny,\n configSrv: AlainConfigService,\n @Optional() private directionality: Directionality\n ) {\n configSrv.attach(this, 'errorCollect', { freq: 500, offsetTop: 65 + 64 + 8 * 2 });\n }\n\n private get errEls(): NodeListOf<HTMLElement> {\n return this.formEl!.querySelectorAll('.ant-form-item-has-error');\n }\n\n private update(): void {\n const count = this.errEls.length;\n if (count === this.count) return;\n this.count = count;\n this._hiden = count === 0;\n this.cdr.markForCheck();\n }\n\n _click(): boolean {\n if (this.count === 0) return false;\n // nz-form-control\n const els = this.errEls;\n const formItemEl = this.findParent(els[0], '[nz-form-control]') || els[0];\n formItemEl.scrollIntoView(true);\n // fix header height\n this.doc.documentElement.scrollTop -= this.offsetTop;\n return true;\n }\n\n private install(): void {\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\n this.dir = direction;\n });\n interval(this.freq)\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.update());\n this.update();\n }\n\n private findParent(el: Element, selector: string): HTMLFormElement | null {\n let retEl: HTMLFormElement | null = null;\n while (el) {\n if (el.querySelector(selector)) {\n retEl = el as HTMLFormElement;\n break;\n }\n el = el.parentElement as HTMLFormElement;\n }\n return retEl;\n }\n\n ngOnInit(): void {\n this.formEl = this.findParent(this.el.nativeElement, 'form');\n if (this.formEl === null) throw new Error('No found form element');\n this.install();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NzIconModule } from 'ng-zorro-antd/icon';\n\nimport { ErrorCollectComponent } from './error-collect.component';\n\nconst COMPONENTS = [ErrorCollectComponent];\n\n@NgModule({\n imports: [CommonModule, NzIconModule],\n declarations: COMPONENTS,\n exports: COMPONENTS\n})\nexport class ErrorCollectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"footerToolbar.mjs","sources":["../../../../packages/abc/footer-toolbar/footer-toolbar.component.ts","../../../../packages/abc/footer-toolbar/footer-toolbar.component.html","../../../../packages/abc/footer-toolbar/footer-toolbar.module.ts","../../../../packages/abc/footer-toolbar/footerToolbar.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { BooleanInput, InputBoolean } from '@delon/util/decorator';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nconst CLSBODY = 'footer-toolbar__body';\n\n@Component({\n selector: 'footer-toolbar',\n exportAs: 'footerToolbar',\n templateUrl: './footer-toolbar.component.html',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class FooterToolbarComponent implements OnInit, OnDestroy {\n static ngAcceptInputType_errorCollect: BooleanInput;\n\n @Input() @InputBoolean() errorCollect = false;\n @Input() extra?: string | TemplateRef<void>;\n\n constructor(private el: ElementRef, private renderer: Renderer2, @Inject(DOCUMENT) private doc: NzSafeAny) {}\n\n private get bodyCls(): DOMTokenList {\n return (this.doc.querySelector('body') as HTMLElement).classList;\n }\n\n ngOnInit(): void {\n this.renderer.addClass(this.el.nativeElement, 'footer-toolbar');\n this.bodyCls.add(CLSBODY);\n }\n\n ngOnDestroy(): void {\n this.bodyCls.remove(CLSBODY);\n }\n}\n","<div class=\"footer-toolbar__left\">\n <ng-container *nzStringTemplateOutlet=\"extra\">{{ extra }}</ng-container>\n</div>\n<div class=\"footer-toolbar__right\">\n <error-collect *ngIf=\"errorCollect\"></error-collect>\n <ng-content></ng-content>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ErrorCollectModule } from '@delon/abc/error-collect';\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\n\nimport { FooterToolbarComponent } from './footer-toolbar.component';\n\nconst COMPONENTS = [FooterToolbarComponent];\n\n@NgModule({\n imports: [CommonModule, ErrorCollectModule, NzOutletModule],\n declarations: COMPONENTS,\n exports: COMPONENTS\n})\nexport class FooterToolbarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;AAiBA,MAAM,OAAO,GAAG,sBAAsB,CAAC;MAU1B,sBAAsB;IAMjC,YAAoB,EAAc,EAAU,QAAmB,EAA4B,GAAc;QAArF,OAAE,GAAF,EAAE,CAAY;QAAU,aAAQ,GAAR,QAAQ,CAAW;QAA4B,QAAG,GAAH,GAAG,CAAW;QAHhF,iBAAY,GAAG,KAAK,CAAC;KAG+D;IAE7G,IAAY,OAAO;QACjB,OAAQ,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAiB,CAAC,SAAS,CAAC;KAClE;IAED,QAAQ;QACN,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KAC3B;IAED,WAAW;QACT,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KAC9B;;mHAnBU,sBAAsB,qEAMwC,QAAQ;uGANtE,sBAAsB,6IC3BnC,oQAOA;ADuB2B;IAAf,YAAY,EAAE;4DAAsB;2FAHnC,sBAAsB;kBARlC,SAAS;+BACE,gBAAgB,YAChB,eAAe,uBAEJ,KAAK,mBACT,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI;;0BAQ6B,MAAM;2BAAC,QAAQ;4CAHxD,YAAY;sBAApC,KAAK;gBACG,KAAK;sBAAb,KAAK;;;AEvBR,MAAM,UAAU,GAAG,CAAC,sBAAsB,CAAC,CAAC;MAO/B,mBAAmB;;gHAAnB,mBAAmB;iHAAnB,mBAAmB,iBAPZ,sBAAsB,aAG9B,YAAY,EAAE,kBAAkB,EAAE,cAAc,aAHxC,sBAAsB;iHAO7B,mBAAmB,YAJrB,CAAC,YAAY,EAAE,kBAAkB,EAAE,cAAc,CAAC;2FAIhD,mBAAmB;kBAL/B,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,cAAc,CAAC;oBAC3D,YAAY,EAAE,UAAU;oBACxB,OAAO,EAAE,UAAU;iBACpB;;;ACdD;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fullContent.mjs","sources":["../../../../packages/abc/full-content/full-content.service.ts","../../../../packages/abc/full-content/full-content.component.ts","../../../../packages/abc/full-content/full-content-toggle.directive.ts","../../../../packages/abc/full-content/full-content.module.ts","../../../../packages/abc/full-content/fullContent.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { share } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class FullContentService {\n private _change = new BehaviorSubject<boolean | null>(null);\n\n /** 切换全屏工作区状态 */\n toggle(): void {\n this._change.next(true);\n }\n\n get change(): Observable<boolean | null> {\n return this._change.pipe(share());\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport { ActivationEnd, ActivationStart, Event, Router } from '@angular/router';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { debounceTime, filter } from 'rxjs/operators';\n\nimport { BooleanInput, InputBoolean, InputNumber, NumberInput } from '@delon/util/decorator';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { FullContentService } from './full-content.service';\n\nconst wrapCls = `full-content__body`;\nconst openedCls = `full-content__opened`;\nconst hideTitleCls = `full-content__hidden-title`;\n\n@Component({\n selector: 'full-content',\n exportAs: 'fullContent',\n template: ` <ng-content></ng-content> `,\n host: {\n '[class.full-content]': 'true',\n '[style.height.px]': '_height'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class FullContentComponent implements AfterViewInit, OnInit, OnChanges, OnDestroy {\n static ngAcceptInputType_fullscreen: BooleanInput;\n static ngAcceptInputType_hideTitle: BooleanInput;\n static ngAcceptInputType_padding: NumberInput;\n\n private bodyEl!: HTMLElement;\n private inited = false;\n private srv$?: Subscription;\n private route$?: Subscription;\n private id = `_full-content-${Math.random().toString(36).substring(2)}`;\n private scroll$: Subscription | null = null;\n\n _height = 0;\n\n @Input() @InputBoolean() fullscreen?: boolean;\n @Input() @InputBoolean() hideTitle = true;\n @Input() @InputNumber() padding = 24;\n @Output() readonly fullscreenChange = new EventEmitter<boolean>();\n\n constructor(\n private el: ElementRef<HTMLElement>,\n private cdr: ChangeDetectorRef,\n private srv: FullContentService,\n private router: Router,\n @Inject(DOCUMENT) private doc: NzSafeAny\n ) {}\n\n private updateCls(): void {\n const clss = this.bodyEl.classList;\n if (this.fullscreen) {\n clss.add(openedCls);\n if (this.hideTitle) {\n clss.add(hideTitleCls);\n }\n } else {\n clss.remove(openedCls);\n if (this.hideTitle) {\n clss.remove(hideTitleCls);\n }\n }\n }\n\n private update(): void {\n this.updateCls();\n this.updateHeight();\n this.fullscreenChange.emit(this.fullscreen);\n }\n\n private updateHeight(): void {\n this._height =\n this.bodyEl.getBoundingClientRect().height - this.el.nativeElement.getBoundingClientRect().top - this.padding;\n this.cdr.detectChanges();\n }\n\n private removeInBody(): void {\n this.bodyEl.classList.remove(wrapCls, openedCls, hideTitleCls);\n }\n\n ngOnInit(): void {\n this.inited = true;\n this.bodyEl = this.doc.querySelector('body');\n this.bodyEl.classList.add(wrapCls);\n this.el.nativeElement.id = this.id;\n\n this.updateCls();\n\n // when window resize\n this.scroll$ = fromEvent(window, 'resize')\n .pipe(debounceTime(200))\n .subscribe(() => this.updateHeight());\n\n // when servier changed\n this.srv$ = this.srv.change.pipe(filter(res => res !== null)).subscribe(() => this.toggle());\n\n // when router changed\n this.route$ = this.router.events\n .pipe(\n filter((e: Event) => e instanceof ActivationStart || e instanceof ActivationEnd),\n debounceTime(200)\n )\n .subscribe(() => {\n if (!!this.doc.querySelector(`#${this.id}`)) {\n this.bodyEl.classList.add(wrapCls);\n this.updateCls();\n } else {\n this.removeInBody();\n }\n });\n }\n\n toggle(): void {\n this.fullscreen = !this.fullscreen;\n this.update();\n this.updateHeight();\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => this.updateHeight());\n }\n\n ngOnChanges(): void {\n if (this.inited) this.update();\n }\n\n ngOnDestroy(): void {\n this.removeInBody();\n this.scroll$!.unsubscribe();\n this.srv$?.unsubscribe();\n this.route$?.unsubscribe();\n }\n}\n","import { Directive } from '@angular/core';\n\nimport { FullContentComponent } from './full-content.component';\n\n@Directive({\n selector: '[full-toggle]',\n exportAs: 'fullToggle',\n host: {\n '(click)': '_click()'\n }\n})\nexport class FullContentToggleDirective {\n constructor(private parent: FullContentComponent) {}\n\n _click(): void {\n this.parent.toggle();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FullContentToggleDirective } from './full-content-toggle.directive';\nimport { FullContentComponent } from './full-content.component';\n\nconst COMPONENTS = [FullContentComponent, FullContentToggleDirective];\n\n@NgModule({\n imports: [CommonModule],\n declarations: COMPONENTS,\n exports: COMPONENTS\n})\nexport class FullContentModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"globalFooter.mjs","sources":["../../../../packages/abc/global-footer/global-footer-item.component.ts","../../../../packages/abc/global-footer/global-footer.component.ts","../../../../packages/abc/global-footer/global-footer.component.html","../../../../packages/abc/global-footer/global-footer.module.ts","../../../../packages/abc/global-footer/globalFooter.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\n\nimport { BooleanInput, InputBoolean } from '@delon/util/decorator';\n\n@Component({\n selector: 'global-footer-item',\n exportAs: 'globalFooterItem',\n template: ` <ng-template #host><ng-content></ng-content></ng-template> `,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class GlobalFooterItemComponent {\n static ngAcceptInputType_blankTarget: BooleanInput;\n\n @ViewChild('host', { static: true }) host!: TemplateRef<void>;\n\n @Input() href?: string;\n @Input() @InputBoolean() blankTarget?: boolean;\n}\n","import { Direction, Directionality } from '@angular/cdk/bidi';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Router } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { WINDOW } from '@delon/util/token';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { GlobalFooterItemComponent } from './global-footer-item.component';\nimport { GlobalFooterLink } from './global-footer.types';\n\n@Component({\n selector: 'global-footer',\n exportAs: 'globalFooter',\n templateUrl: './global-footer.component.html',\n host: {\n '[class.global-footer]': 'true',\n '[class.global-footer-rtl]': `dir === 'rtl'`\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class GlobalFooterComponent implements OnInit, OnDestroy {\n private destroy$ = new Subject<void>();\n private _links: GlobalFooterLink[] = [];\n\n dir: Direction = 'ltr';\n\n @Input()\n set links(val: GlobalFooterLink[]) {\n val.forEach(i => (i._title = this.dom.bypassSecurityTrustHtml(i.title)));\n this._links = val;\n }\n get links(): GlobalFooterLink[] {\n return this._links;\n }\n\n @ContentChildren(GlobalFooterItemComponent) items!: QueryList<GlobalFooterItemComponent>;\n\n constructor(\n private router: Router,\n @Inject(WINDOW) private win: NzSafeAny,\n private dom: DomSanitizer,\n @Optional() private directionality: Directionality\n ) {}\n\n to(item: GlobalFooterLink | GlobalFooterItemComponent): void {\n if (!item.href) {\n return;\n }\n if (item.blankTarget) {\n this.win.open(item.href);\n return;\n }\n if (/^https?:\\/\\//.test(item.href)) {\n this.win.location.href = item.href;\n } else {\n this.router.navigateByUrl(item.href);\n }\n }\n\n ngOnInit(): void {\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\n this.dir = direction;\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<div *ngIf=\"links.length > 0 || items.length > 0\" class=\"global-footer__links\">\n <a *ngFor=\"let i of links\" class=\"global-footer__links-item\" (click)=\"to(i)\" [innerHTML]=\"i._title\"></a>\n <a *ngFor=\"let i of items\" class=\"global-footer__links-item\" (click)=\"to(i)\">\n <ng-container *ngTemplateOutlet=\"i.host\"></ng-container>\n </a>\n</div>\n<div class=\"global-footer__copyright\">\n <ng-content></ng-content>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { GlobalFooterItemComponent } from './global-footer-item.component';\nimport { GlobalFooterComponent } from './global-footer.component';\n\nconst COMPONENTS = [GlobalFooterComponent, GlobalFooterItemComponent];\n\n@NgModule({\n imports: [CommonModule, RouterModule],\n declarations: COMPONENTS,\n exports: COMPONENTS\n})\nexport class GlobalFooterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"grid.mjs","sources":["../../../../packages/abc/sg/sg-container.component.ts","../../../../packages/abc/sg/sg.component.ts","../../../../packages/abc/sg/sg.module.ts","../../../../packages/abc/sg/grid.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\nimport { REP_TYPE } from '@delon/theme';\nimport { AlainConfigService } from '@delon/util/config';\nimport { InputNumber, NumberInput } from '@delon/util/decorator';\n\n@Component({\n selector: 'sg-container, [sg-container]',\n exportAs: 'sgContainer',\n template: ` <ng-content></ng-content> `,\n host: {\n '[style.margin-left.px]': 'marginValue',\n '[style.margin-right.px]': 'marginValue',\n '[class.ant-row]': 'true',\n '[class.sg__wrap]': 'true'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SGContainerComponent {\n static ngAcceptInputType_gutter: NumberInput;\n static ngAcceptInputType_colInCon: NumberInput;\n static ngAcceptInputType_col: NumberInput;\n\n @Input() @InputNumber() gutter!: number;\n @Input('sg-container') @InputNumber(null) colInCon?: REP_TYPE;\n @Input() @InputNumber(null) col!: REP_TYPE;\n\n get marginValue(): number {\n return -(this.gutter / 2);\n }\n\n constructor(configSrv: AlainConfigService) {\n configSrv.attach(this, 'sg', {\n gutter: 32,\n col: 2\n });\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Host,\n Input,\n OnChanges,\n Optional,\n Renderer2,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { ResponsiveService } from '@delon/theme';\nimport { InputNumber, NumberInput } from '@delon/util/decorator';\n\nimport { SGContainerComponent } from './sg-container.component';\n\nconst prefixCls = `sg`;\n\n@Component({\n selector: 'sg',\n exportAs: 'sg',\n template: ` <ng-content></ng-content> `,\n host: {\n '[style.padding-left.px]': 'paddingValue',\n '[style.padding-right.px]': 'paddingValue'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SGComponent implements OnChanges, AfterViewInit {\n static ngAcceptInputType_col: NumberInput;\n\n private el: HTMLElement;\n private clsMap: string[] = [];\n private inited = false;\n\n @Input() @InputNumber(null) col: number | null = null;\n\n get paddingValue(): number {\n return this.parent.gutter / 2;\n }\n\n constructor(\n el: ElementRef,\n private ren: Renderer2,\n @Optional() @Host() private parent: SGContainerComponent,\n private rep: ResponsiveService\n ) {\n if (parent == null) {\n throw new Error(`[sg] must include 'sg-container' component`);\n }\n this.el = el.nativeElement;\n }\n\n private setClass(): this {\n const { el, ren, clsMap, col, parent } = this;\n clsMap.forEach(cls => ren.removeClass(el, cls));\n clsMap.length = 0;\n clsMap.push(...this.rep.genCls(col != null ? col : parent.colInCon || parent.col), `${prefixCls}__item`);\n clsMap.forEach(cls => ren.addClass(el, cls));\n return this;\n }\n\n ngOnChanges(): void {\n if (this.inited) this.setClass();\n }\n\n ngAfterViewInit(): void {\n this.setClass();\n this.inited = true;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { SGContainerComponent } from './sg-container.component';\nimport { SGComponent } from './sg.component';\n\nconst COMPONENTS = [SGContainerComponent, SGComponent];\n\n@NgModule({\n imports: [CommonModule],\n declarations: COMPONENTS,\n exports: COMPONENTS\n})\nexport class SGModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"noticeIcon.mjs","sources":["../../../../packages/abc/notice-icon/notice-icon-tab.component.ts","../../../../packages/abc/notice-icon/notice-icon-tab.component.html","../../../../packages/abc/notice-icon/notice-icon.component.ts","../../../../packages/abc/notice-icon/notice-icon.component.html","../../../../packages/abc/notice-icon/notice-icon.module.ts","../../../../packages/abc/notice-icon/noticeIcon.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\n\nimport { LocaleData } from '@delon/theme';\n\nimport { NoticeIconSelect, NoticeItem } from './notice-icon.types';\n\n@Component({\n selector: 'notice-icon-tab',\n exportAs: 'noticeIconTab',\n templateUrl: './notice-icon-tab.component.html',\n preserveWhitespaces: false,\n encapsulation: ViewEncapsulation.None\n})\nexport class NoticeIconTabComponent {\n @Input() locale: LocaleData = {};\n @Input() data!: NoticeItem;\n @Output() readonly select = new EventEmitter<NoticeIconSelect>();\n @Output() readonly clear = new EventEmitter<string>();\n\n onClick(item: NoticeItem): void {\n this.select.emit({ title: this.data.title, item });\n }\n\n onClear(): void {\n this.clear.emit(this.data.title);\n }\n}\n","<div *ngIf=\"data.list?.length === 0; else listTpl\" class=\"notice-icon__notfound\">\n <img class=\"notice-icon__notfound-img\" *ngIf=\"data.emptyImage\" [attr.src]=\"data.emptyImage\" alt=\"not found\" />\n <p>\n <ng-container *nzStringTemplateOutlet=\"data.emptyText\">\n {{ data.emptyText || locale.emptyText }}\n </ng-container>\n </p>\n</div>\n<ng-template #listTpl>\n <nz-list [nzDataSource]=\"data.list\" [nzRenderItem]=\"item\">\n <ng-template #item let-item>\n <nz-list-item (click)=\"onClick(item)\" [ngClass]=\"{ 'notice-icon__item-read': item.read }\">\n <nz-list-item-meta [nzTitle]=\"nzTitle\" [nzDescription]=\"nzDescription\" [nzAvatar]=\"item.avatar\">\n <ng-template #nzTitle>\n <ng-container *nzStringTemplateOutlet=\"item.title; context: { $implicit: item }\">{{\n item.title\n }}</ng-container>\n <div class=\"notice-icon__item-extra\" *ngIf=\"item.extra\">\n <nz-tag [nzColor]=\"item.color\">{{ item.extra }}</nz-tag>\n </div>\n </ng-template>\n <ng-template #nzDescription>\n <div *ngIf=\"item.description\" class=\"notice-icon__item-desc\">\n <ng-container *nzStringTemplateOutlet=\"item.description; context: { $implicit: item }\">{{\n item.description\n }}</ng-container>\n </div>\n <div *ngIf=\"item.datetime\" class=\"notice-icon__item-time\">{{ item.datetime }}</div>\n </ng-template>\n </nz-list-item-meta>\n </nz-list-item>\n </ng-template>\n </nz-list>\n <div class=\"notice-icon__clear\" (click)=\"onClear()\">{{ data.clearText || locale.clearText }}</div>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DelonLocaleService, LocaleData } from '@delon/theme';\nimport { BooleanInput, InputBoolean, InputNumber, NumberInput } from '@delon/util/decorator';\nimport type { NgClassType } from 'ng-zorro-antd/core/types';\n\nimport { NoticeIconSelect, NoticeItem } from './notice-icon.types';\n\n@Component({\n selector: 'notice-icon',\n exportAs: 'noticeIcon',\n templateUrl: './notice-icon.component.html',\n host: { '[class.notice-icon__btn]': 'true' },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class NoticeIconComponent implements OnInit, OnChanges, OnDestroy {\n static ngAcceptInputType_count: NumberInput;\n static ngAcceptInputType_loading: BooleanInput;\n static ngAcceptInputType_popoverVisible: BooleanInput;\n\n private i18n$!: Subscription;\n locale: LocaleData = {};\n\n @Input() data: NoticeItem[] = [];\n @Input() @InputNumber() count?: number;\n @Input() @InputBoolean() loading = false;\n @Input() @InputBoolean() popoverVisible = false;\n @Input() btnClass?: NgClassType;\n @Input() btnIconClass?: NgClassType;\n @Output() readonly select = new EventEmitter<NoticeIconSelect>();\n @Output() readonly clear = new EventEmitter<string>();\n @Output() readonly popoverVisibleChange = new EventEmitter<boolean>();\n\n constructor(private i18n: DelonLocaleService, private cdr: ChangeDetectorRef) {}\n\n onVisibleChange(result: boolean): void {\n this.popoverVisibleChange.emit(result);\n }\n\n onSelect(i: NoticeIconSelect): void {\n this.select.emit(i);\n }\n\n onClear(title: string): void {\n this.clear.emit(title);\n }\n\n ngOnInit(): void {\n this.i18n$ = this.i18n.change.subscribe(() => {\n this.locale = this.i18n.getData('noticeIcon');\n this.cdr.markForCheck();\n });\n }\n\n ngOnChanges(): void {\n this.cdr.markForCheck();\n }\n\n ngOnDestroy(): void {\n this.i18n$.unsubscribe();\n }\n}\n","<ng-template #badgeTpl>\n <nz-badge [nzCount]=\"count\" [ngClass]=\"btnClass!\" [nzStyle]=\"{ 'box-shadow': 'none' }\">\n <i nz-icon nzType=\"bell\" [ngClass]=\"btnIconClass!\"></i>\n </nz-badge>\n</ng-template>\n<div *ngIf=\"data!.length === 0\">\n <ng-template [ngTemplateOutlet]=\"badgeTpl\"></ng-template>\n</div>\n<div\n *ngIf=\"data!.length > 0\"\n nz-dropdown\n [nzVisible]=\"popoverVisible\"\n (nzVisibleChange)=\"onVisibleChange($event)\"\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n nzOverlayClassName=\"header-dropdown notice-icon\"\n [nzDropdownMenu]=\"noticeMenu\"\n>\n <ng-template [ngTemplateOutlet]=\"badgeTpl\"></ng-template>\n</div>\n<nz-dropdown-menu #noticeMenu=\"nzDropdownMenu\">\n <nz-spin [nzSpinning]=\"loading\" [nzDelay]=\"0\">\n <nz-tabset nzSelectedIndex=\"0\">\n <nz-tab *ngFor=\"let i of data\" [nzTitle]=\"i.title\">\n <notice-icon-tab\n [locale]=\"locale\"\n [data]=\"i\"\n (select)=\"onSelect($event)\"\n (clear)=\"onClear($event)\"\n ></notice-icon-tab>\n </nz-tab>\n </nz-tabset>\n </nz-spin>\n</nz-dropdown-menu>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DelonLocaleModule } from '@delon/theme';\nimport { NzBadgeModule } from 'ng-zorro-antd/badge';\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzListModule } from 'ng-zorro-antd/list';\nimport { NzSpinModule } from 'ng-zorro-antd/spin';\nimport { NzTabsModule } from 'ng-zorro-antd/tabs';\nimport { NzTagModule } from 'ng-zorro-antd/tag';\n\nimport { NoticeIconTabComponent } from './notice-icon-tab.component';\nimport { NoticeIconComponent } from './notice-icon.component';\n\nconst COMPONENTS = [NoticeIconComponent];\n\n@NgModule({\n imports: [\n CommonModule,\n DelonLocaleModule,\n NzBadgeModule,\n NzDropDownModule,\n NzIconModule,\n NzListModule,\n NzSpinModule,\n NzTabsModule,\n NzTagModule,\n NzOutletModule\n ],\n declarations: [...COMPONENTS, NoticeIconTabComponent],\n exports: COMPONENTS\n})\nexport class NoticeIconModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pageHeader.mjs","sources":["../../../../packages/abc/page-header/page-header.component.ts","../../../../packages/abc/page-header/page-header.component.html","../../../../packages/abc/page-header/page-header.module.ts","../../../../packages/abc/page-header/pageHeader.ts"],"sourcesContent":["import { Direction, Directionality } from '@angular/cdk/bidi';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { merge, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { ReuseTabService } from '@delon/abc/reuse-tab';\nimport { AlainI18NService, ALAIN_I18N_TOKEN, Menu, MenuService, SettingsService, TitleService } from '@delon/theme';\nimport { isEmpty } from '@delon/util/browser';\nimport { AlainConfigService } from '@delon/util/config';\nimport { BooleanInput, InputBoolean, InputNumber, NumberInput } from '@delon/util/decorator';\nimport { NzAffixComponent } from 'ng-zorro-antd/affix';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\ninterface PageHeaderPath {\n title?: string;\n link?: string[];\n}\n\n@Component({\n selector: 'page-header',\n exportAs: 'pageHeader',\n templateUrl: './page-header.component.html',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class PageHeaderComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n static ngAcceptInputType_loading: BooleanInput;\n static ngAcceptInputType_wide: BooleanInput;\n static ngAcceptInputType_autoBreadcrumb: BooleanInput;\n static ngAcceptInputType_autoTitle: BooleanInput;\n static ngAcceptInputType_syncTitle: BooleanInput;\n static ngAcceptInputType_fixed: BooleanInput;\n static ngAcceptInputType_fixedOffsetTop: NumberInput;\n static ngAcceptInputType_recursiveBreadcrumb: BooleanInput;\n\n private destroy$ = new Subject<void>();\n @ViewChild('conTpl', { static: false }) private conTpl!: ElementRef;\n @ViewChild('affix', { static: false }) private affix!: NzAffixComponent;\n inited = false;\n isBrowser = true;\n dir: Direction = 'ltr';\n\n private get menus(): Menu[] {\n return this.menuSrv.getPathByUrl(this.router.url, this.recursiveBreadcrumb);\n }\n\n _titleVal: string | null = '';\n paths: PageHeaderPath[] = [];\n\n // #region fields\n\n _title: string | null = null;\n _titleTpl: TemplateRef<NzSafeAny> | null = null;\n @Input()\n set title(value: string | TemplateRef<void> | null) {\n if (value instanceof TemplateRef) {\n this._title = null;\n this._titleTpl = value;\n this._titleVal = '';\n } else {\n this._title = value;\n this._titleVal = this._title;\n }\n }\n\n @Input() @InputBoolean() loading = false;\n @Input() @InputBoolean() wide = false;\n @Input() home?: string;\n @Input() homeLink?: string;\n @Input() homeI18n?: string;\n @Input() @InputBoolean() autoBreadcrumb!: boolean;\n @Input() @InputBoolean() autoTitle!: boolean;\n @Input() @InputBoolean() syncTitle!: boolean;\n @Input() @InputBoolean() fixed!: boolean;\n @Input() @InputNumber() fixedOffsetTop!: number;\n @Input() breadcrumb?: TemplateRef<NzSafeAny> | null = null;\n @Input() @InputBoolean() recursiveBreadcrumb!: boolean;\n @Input() logo?: TemplateRef<void> | null = null;\n @Input() action?: TemplateRef<void> | null = null;\n @Input() content?: TemplateRef<void> | null = null;\n @Input() extra?: TemplateRef<void> | null = null;\n @Input() tab?: TemplateRef<void> | null = null;\n\n // #endregion\n\n constructor(\n settings: SettingsService,\n private renderer: Renderer2,\n private router: Router,\n private menuSrv: MenuService,\n @Optional() @Inject(ALAIN_I18N_TOKEN) private i18nSrv: AlainI18NService,\n @Optional() @Inject(TitleService) private titleSrv: TitleService,\n @Optional() @Inject(ReuseTabService) private reuseSrv: ReuseTabService,\n private cdr: ChangeDetectorRef,\n configSrv: AlainConfigService,\n platform: Platform,\n @Optional() private directionality: Directionality\n ) {\n this.isBrowser = platform.isBrowser;\n configSrv.attach(this, 'pageHeader', {\n home: '首页',\n homeLink: '/',\n autoBreadcrumb: true,\n recursiveBreadcrumb: false,\n autoTitle: true,\n syncTitle: true,\n fixed: false,\n fixedOffsetTop: 64\n });\n settings.notify\n .pipe(\n takeUntil(this.destroy$),\n filter(w => this.affix && w.type === 'layout' && w.name === 'collapsed')\n )\n .subscribe(() => this.affix.updatePosition({} as NzSafeAny));\n\n merge(menuSrv.change, router.events.pipe(filter(ev => ev instanceof NavigationEnd)), i18nSrv.change)\n .pipe(\n filter(() => this.inited),\n takeUntil(this.destroy$)\n )\n .subscribe(() => this.refresh());\n }\n\n refresh(): void {\n this.setTitle().genBreadcrumb();\n this.cdr.detectChanges();\n }\n\n private genBreadcrumb(): void {\n if (this.breadcrumb || !this.autoBreadcrumb || this.menus.length <= 0) {\n this.paths = [];\n return;\n }\n const paths: PageHeaderPath[] = [];\n this.menus.forEach(item => {\n if (typeof item.hideInBreadcrumb !== 'undefined' && item.hideInBreadcrumb) return;\n let title = item.text;\n if (item.i18n && this.i18nSrv) title = this.i18nSrv.fanyi(item.i18n);\n paths.push({ title, link: (item.link && [item.link]) as string[] });\n });\n // add home\n if (this.home) {\n paths.splice(0, 0, {\n title: (this.homeI18n && this.i18nSrv && this.i18nSrv.fanyi(this.homeI18n)) || this.home,\n link: [this.homeLink!]\n });\n }\n this.paths = paths;\n }\n\n private setTitle(): this {\n if (this._title == null && this._titleTpl == null && this.autoTitle && this.menus.length > 0) {\n const item = this.menus[this.menus.length - 1];\n let title = item.text;\n if (item.i18n && this.i18nSrv) {\n title = this.i18nSrv.fanyi(item.i18n);\n }\n this._titleVal = title!;\n }\n\n if (this._titleVal && this.syncTitle) {\n if (this.titleSrv) {\n this.titleSrv.setTitle(this._titleVal);\n }\n if (!this.inited && this.reuseSrv) {\n this.reuseSrv.title = this._titleVal;\n }\n }\n\n return this;\n }\n\n checkContent(): void {\n if (isEmpty(this.conTpl.nativeElement)) {\n this.renderer.setAttribute(this.conTpl.nativeElement, 'hidden', '');\n } else {\n this.renderer.removeAttribute(this.conTpl.nativeElement, 'hidden');\n }\n }\n\n ngOnInit(): void {\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\n this.dir = direction;\n this.cdr.detectChanges();\n });\n this.refresh();\n this.inited = true;\n }\n\n ngAfterViewInit(): void {\n this.checkContent();\n }\n\n ngOnChanges(): void {\n if (this.inited) {\n this.refresh();\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<nz-affix #affix *ngIf=\"isBrowser && fixed; else phTpl\" [nzOffsetTop]=\"fixedOffsetTop\">\n <ng-template [ngTemplateOutlet]=\"phTpl\"></ng-template>\n</nz-affix>\n<ng-template #phTpl>\n <div class=\"page-header\" [class.page-header-rtl]=\"dir === 'rtl'\">\n <div [ngClass]=\"{ 'page-header__wide': wide }\">\n <nz-skeleton\n [nzLoading]=\"loading\"\n [nzTitle]=\"false\"\n [nzActive]=\"true\"\n [nzParagraph]=\"{ rows: 3 }\"\n [nzAvatar]=\"{ size: 'large', shape: 'circle' }\"\n class=\"d-block\"\n >\n <ng-container *ngIf=\"!breadcrumb; else breadcrumb!\">\n <nz-breadcrumb *ngIf=\"paths && paths.length > 0\">\n <nz-breadcrumb-item *ngFor=\"let i of paths\">\n <ng-container *ngIf=\"i.link\">\n <a [routerLink]=\"i.link\">{{ i.title }}</a>\n </ng-container>\n <ng-container *ngIf=\"!i.link\">{{ i.title }}</ng-container>\n </nz-breadcrumb-item>\n </nz-breadcrumb>\n </ng-container>\n <div class=\"page-header__detail\">\n <div *ngIf=\"logo\" class=\"page-header__logo\">\n <ng-template [ngTemplateOutlet]=\"logo\"></ng-template>\n </div>\n <div class=\"page-header__main\">\n <div class=\"page-header__row\">\n <h1 *ngIf=\"_titleVal || _titleTpl\" class=\"page-header__title\">\n <ng-container *ngIf=\"_titleVal; else _titleTpl\">{{ _titleVal }}</ng-container>\n </h1>\n <div *ngIf=\"action\" class=\"page-header__action\">\n <ng-template [ngTemplateOutlet]=\"action\"></ng-template>\n </div>\n </div>\n <div class=\"page-header__row\">\n <div class=\"page-header__desc\" (cdkObserveContent)=\"checkContent()\" #conTpl>\n <ng-content></ng-content>\n <ng-template [ngTemplateOutlet]=\"content!\"></ng-template>\n </div>\n <div *ngIf=\"extra\" class=\"page-header__extra\">\n <ng-template [ngTemplateOutlet]=\"extra\"></ng-template>\n </div>\n </div>\n </div>\n </div>\n <ng-template [ngTemplateOutlet]=\"tab!\"></ng-template>\n </nz-skeleton>\n </div>\n </div>\n</ng-template>\n","import { ObserversModule } from '@angular/cdk/observers';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { NzAffixModule } from 'ng-zorro-antd/affix';\nimport { NzBreadCrumbModule } from 'ng-zorro-antd/breadcrumb';\nimport { NzSkeletonModule } from 'ng-zorro-antd/skeleton';\n\nimport { PageHeaderComponent } from './page-header.component';\n\nconst COMPONENTS = [PageHeaderComponent];\n\n@NgModule({\n imports: [CommonModule, RouterModule, ObserversModule, NzAffixModule, NzSkeletonModule, NzBreadCrumbModule],\n declarations: COMPONENTS,\n exports: COMPONENTS\n})\nexport class PageHeaderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"quickMenu.mjs","sources":["../../../../packages/abc/quick-menu/quick-menu.component.ts","../../../../packages/abc/quick-menu/quick-menu.component.html","../../../../packages/abc/quick-menu/quick-menu.module.ts","../../../../packages/abc/quick-menu/quickMenu.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n Renderer2,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { BooleanInput, InputBoolean, InputNumber, NumberInput } from '@delon/util/decorator';\n\n@Component({\n selector: 'quick-menu',\n exportAs: 'quickMenu',\n templateUrl: './quick-menu.component.html',\n host: {\n '[class.quick-menu]': 'true',\n '(click)': '_click()'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class QuickMenuComponent implements OnInit, OnChanges {\n static ngAcceptInputType_top: NumberInput;\n static ngAcceptInputType_width: NumberInput;\n static ngAcceptInputType_expand: BooleanInput;\n\n constructor(private cdr: ChangeDetectorRef, private el: ElementRef, private render: Renderer2) {}\n ctrlStyle: { [key: string]: string | undefined } = {};\n\n @Input() icon: string | TemplateRef<void> = 'question-circle';\n @Input() @InputNumber() top = 120;\n @Input() @InputNumber() width = 200;\n @Input() bgColor?: string;\n @Input() borderColor?: string;\n @Input() @InputBoolean() expand: boolean = false;\n @Output() readonly expandChange = new EventEmitter<boolean>();\n\n private show = false;\n private initFlag = false;\n\n _click(): void {\n this.show = !this.show;\n this.expandChange.emit(this.show);\n this.setStyle();\n }\n\n private setStyle(): void {\n this.ctrlStyle = {\n 'background-color': this.bgColor,\n 'border-color': this.borderColor\n };\n\n const res: string[] = [\n `top:${this.top}px`,\n `width:${this.width}px`,\n `margin-right:-${this.show ? 0 : this.width}px`\n ];\n if (this.bgColor) {\n res.push(`background-color:${this.bgColor}`);\n }\n if (this.borderColor) {\n res.push(`border-color:${this.borderColor}`);\n }\n this.render.setAttribute(this.el.nativeElement, 'style', res.join(';'));\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n this.initFlag = true;\n this.setStyle();\n }\n\n ngOnChanges(): void {\n this.show = this.expand;\n if (this.initFlag) {\n this.setStyle();\n }\n }\n}\n","<div class=\"quick-menu__inner\">\n <div class=\"quick-menu__ctrl\" [ngStyle]=\"ctrlStyle\">\n <div class=\"quick-menu__ctrl-icon\">\n <ng-container *nzStringTemplateOutlet=\"icon\">\n <i nz-icon [nzType]=\"$any(icon)\"></i>\n </ng-container>\n </div>\n </div>\n <ng-content></ng-content>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\n\nimport { QuickMenuComponent } from './quick-menu.component';\n\nconst COMPONENTS = [QuickMenuComponent];\n\n@NgModule({\n imports: [CommonModule, NzIconModule, NzOutletModule],\n declarations: COMPONENTS,\n exports: COMPONENTS\n})\nexport class QuickMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"reuseTab.mjs","sources":["../../../../packages/abc/reuse-tab/reuse-tab-context-menu.component.ts","../../../../packages/abc/reuse-tab/reuse-tab-context-menu.component.html","../../../../packages/abc/reuse-tab/reuse-tab-context.service.ts","../../../../packages/abc/reuse-tab/reuse-tab-context.component.ts","../../../../packages/abc/reuse-tab/reuse-tab-context.directive.ts","../../../../packages/abc/reuse-tab/reuse-tab.interfaces.ts","../../../../packages/abc/reuse-tab/reuse-tab.service.ts","../../../../packages/abc/reuse-tab/reuse-tab.component.ts","../../../../packages/abc/reuse-tab/reuse-tab.component.html","../../../../packages/abc/reuse-tab/reuse-tab.strategy.ts","../../../../packages/abc/reuse-tab/reuse-tab.module.ts","../../../../packages/abc/reuse-tab/reuseTab.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { DelonLocaleService } from '@delon/theme';\n\nimport {\n CloseType,\n ReuseContextCloseEvent,\n ReuseContextI18n,\n ReuseCustomContextMenu,\n ReuseItem\n} from './reuse-tab.interfaces';\n\n@Component({\n selector: 'reuse-tab-context-menu',\n templateUrl: './reuse-tab-context-menu.component.html',\n host: {\n '(document:click)': 'closeMenu($event)',\n '(document:contextmenu)': 'closeMenu($event)'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class ReuseTabContextMenuComponent implements OnInit {\n private _i18n!: ReuseContextI18n;\n @Input()\n set i18n(value: ReuseContextI18n) {\n this._i18n = {\n ...this.i18nSrv.getData('reuseTab'),\n ...value\n };\n }\n get i18n(): ReuseContextI18n {\n return this._i18n;\n }\n @Input() item!: ReuseItem;\n @Input() event!: MouseEvent;\n @Input() customContextMenu!: ReuseCustomContextMenu[];\n @Output() readonly close = new EventEmitter<ReuseContextCloseEvent>();\n\n get includeNonCloseable(): boolean {\n return this.event.ctrlKey;\n }\n\n constructor(private i18nSrv: DelonLocaleService) {}\n\n private notify(type: CloseType): void {\n this.close.next({\n type,\n item: this.item,\n includeNonCloseable: this.includeNonCloseable\n });\n }\n\n ngOnInit(): void {\n if (this.includeNonCloseable) this.item.closable = true;\n }\n\n click(e: MouseEvent, type: CloseType, custom?: ReuseCustomContextMenu): void {\n e.preventDefault();\n e.stopPropagation();\n if (type === 'close' && !this.item.closable) return;\n if (type === 'closeRight' && this.item.last) return;\n\n if (custom) {\n if (this.isDisabled(custom)) return;\n custom.fn(this.item, custom);\n }\n this.notify(type);\n }\n\n isDisabled(custom: ReuseCustomContextMenu): boolean {\n return custom.disabled ? custom.disabled(this.item) : false;\n }\n\n closeMenu(event: MouseEvent): void {\n if (event.type === 'click' && event.button === 2) return;\n this.notify(null);\n }\n}\n","<ul nz-menu>\n <li\n *ngIf=\"item.active\"\n nz-menu-item\n (click)=\"click($event, 'refresh')\"\n data-type=\"refresh\"\n [innerHTML]=\"i18n.refresh\"\n ></li>\n <li\n nz-menu-item\n (click)=\"click($event, 'close')\"\n data-type=\"close\"\n [nzDisabled]=\"!item.closable\"\n [innerHTML]=\"i18n.close\"\n ></li>\n <li nz-menu-item (click)=\"click($event, 'closeOther')\" data-type=\"closeOther\" [innerHTML]=\"i18n.closeOther\"></li>\n <li\n nz-menu-item\n (click)=\"click($event, 'closeRight')\"\n data-type=\"closeRight\"\n [nzDisabled]=\"item.last\"\n [innerHTML]=\"i18n.closeRight\"\n ></li>\n <ng-container *ngIf=\"customContextMenu!.length > 0\">\n <li nz-menu-divider></li>\n <li\n *ngFor=\"let i of customContextMenu\"\n nz-menu-item\n [attr.data-type]=\"i.id\"\n [nzDisabled]=\"isDisabled(i)\"\n (click)=\"click($event, 'custom', i)\"\n [innerHTML]=\"i.title\"\n ></li>\n </ng-container>\n</ul>\n","import { ConnectionPositionPair, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Injectable } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\n\nimport { ReuseTabContextMenuComponent } from './reuse-tab-context-menu.component';\nimport {\n ReuseContextCloseEvent,\n ReuseContextEvent,\n ReuseContextI18n,\n ReuseCustomContextMenu\n} from './reuse-tab.interfaces';\n\n@Injectable()\nexport class ReuseTabContextService {\n private ref: OverlayRef | null = null;\n i18n?: ReuseContextI18n;\n\n show: Subject<ReuseContextEvent> = new Subject<ReuseContextEvent>();\n close: Subject<ReuseContextCloseEvent> = new Subject<ReuseContextCloseEvent>();\n\n constructor(private overlay: Overlay) {}\n\n remove(): void {\n if (!this.ref) return;\n this.ref.detach();\n this.ref.dispose();\n this.ref = null;\n }\n\n open(context: ReuseContextEvent): void {\n this.remove();\n const { event, item, customContextMenu } = context;\n const { x, y } = event;\n const positions = [\n new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }),\n new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' })\n ];\n const positionStrategy = this.overlay.position().flexibleConnectedTo({ x, y }).withPositions(positions);\n this.ref = this.overlay.create({\n positionStrategy,\n panelClass: 'reuse-tab__cm',\n scrollStrategy: this.overlay.scrollStrategies.close()\n });\n const comp = this.ref.attach(new ComponentPortal(ReuseTabContextMenuComponent));\n const instance = comp.instance;\n instance.i18n = this.i18n!;\n instance.item = { ...item };\n instance.customContextMenu = customContextMenu as ReuseCustomContextMenu[];\n instance.event = event;\n\n const sub$ = new Subscription();\n sub$.add(\n instance.close.subscribe((res: ReuseContextCloseEvent) => {\n this.close.next(res);\n this.remove();\n })\n );\n comp.onDestroy(() => sub$.unsubscribe());\n }\n}\n","import { Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ReuseTabContextService } from './reuse-tab-context.service';\nimport { ReuseContextCloseEvent, ReuseContextI18n } from './reuse-tab.interfaces';\n\n@Component({\n selector: 'reuse-tab-context',\n template: ``\n})\nexport class ReuseTabContextComponent implements OnDestroy {\n private sub$: Subscription = new Subscription();\n\n @Input()\n set i18n(value: ReuseContextI18n | undefined) {\n this.srv.i18n = value;\n }\n\n @Output() readonly change = new EventEmitter<ReuseContextCloseEvent>();\n\n constructor(private srv: ReuseTabContextService) {\n this.sub$.add(srv.show.subscribe(context => this.srv.open(context)));\n this.sub$.add(srv.close.subscribe(res => this.change.emit(res)));\n }\n\n ngOnDestroy(): void {\n this.sub$.unsubscribe();\n }\n}\n","import { Directive, Input } from '@angular/core';\n\nimport { ReuseTabContextService } from './reuse-tab-context.service';\nimport { ReuseCustomContextMenu, ReuseItem } from './reuse-tab.interfaces';\n\n@Directive({\n selector: '[reuse-tab-context-menu]',\n exportAs: 'reuseTabContextMenu',\n host: {\n '(contextmenu)': '_onContextMenu($event)'\n }\n})\nexport class ReuseTabContextDirective {\n @Input('reuse-tab-context-menu') item!: ReuseItem;\n @Input() customContextMenu!: ReuseCustomContextMenu[];\n\n constructor(private srv: ReuseTabContextService) {}\n\n _onContextMenu(event: MouseEvent): void {\n this.srv.show.next({\n event,\n item: this.item,\n customContextMenu: this.customContextMenu\n });\n event.preventDefault();\n event.stopPropagation();\n }\n}\n","import { ActivatedRouteSnapshot } from '@angular/router';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { ReuseTabContextComponent } from './reuse-tab-context.component';\n\n/**\n * 复用匹配模式\n */\nexport enum ReuseTabMatchMode {\n /**\n * (推荐)按菜单 `Menu` 配置\n *\n * 可复用:\n * - `{ text:'Dashboard' }`\n * - `{ text:'Dashboard', reuse: true }`\n *\n * 不可复用:\n * - `{ text:'Dashboard', reuse: false }`\n */\n Menu,\n /**\n * 按菜单 `Menu` 强制配置\n *\n * 可复用:\n * - `{ text:'Dashboard', reuse: true }`\n *\n * 不可复用:\n * - `{ text:'Dashboard' }`\n * - `{ text:'Dashboard', reuse: false }`\n */\n MenuForce,\n /**\n * 对所有路由有效,可以配合 `excludes` 过滤无须复用路由\n */\n URL\n}\n\nexport type ReuseTabRouteParamMatchMode = 'strict' | 'loose';\n\nexport interface ReuseTitle {\n text?: string;\n i18n?: string;\n}\n\nexport interface ReuseTabCached {\n title: ReuseTitle;\n\n url: string;\n\n /** 是否允许关闭,默认:`true` */\n closable?: boolean;\n\n /** 当前滚动条位置 */\n position?: [number, number] | null;\n\n _snapshot: ActivatedRouteSnapshot;\n\n _handle: ReuseComponentHandle;\n}\n\nexport interface ReuseTabNotify {\n /** 事件类型 */\n active: 'add' | 'override' | 'title' | 'clear' | 'closable' | 'close' | 'closeRight' | 'move' | 'refresh';\n url?: string;\n title?: ReuseTitle;\n item?: ReuseTabCached;\n list?: ReuseTabCached[];\n [key: string]: NzSafeAny;\n}\n\nexport interface ReuseItem {\n url: string;\n title: string;\n closable: boolean;\n index: number;\n active: boolean;\n last: boolean;\n}\n\nexport interface ReuseContextEvent {\n event: MouseEvent;\n item: ReuseItem;\n comp?: ReuseTabContextComponent;\n customContextMenu?: ReuseCustomContextMenu[];\n}\n\nexport type CloseType = 'close' | 'closeOther' | 'closeRight' | 'custom' | 'refresh' | null;\n\nexport interface ReuseContextCloseEvent {\n type: CloseType;\n item: ReuseItem;\n includeNonCloseable: boolean;\n}\n\nexport interface ReuseContextI18n {\n close?: string;\n closeOther?: string;\n closeRight?: string;\n refresh?: string;\n}\n\nexport interface ReuseCustomContextMenu {\n id: string;\n title: string;\n fn: (item: ReuseItem, menu: ReuseCustomContextMenu) => void;\n disabled?: (item: ReuseItem) => boolean;\n}\n\nexport interface ReuseComponentHandle {\n componentRef: ReuseComponentRef;\n}\n\nexport interface ReuseComponentRef {\n instance: ReuseComponentInstance;\n}\n\nexport type ReuseHookTypes = '_onReuseInit' | '_onReuseDestroy';\n\nexport type ReuseHookOnReuseInitType = 'init' | 'refresh';\n\nexport interface ReuseComponentInstance {\n _onReuseInit: (type: ReuseHookOnReuseInitType) => void;\n _onReuseDestroy: () => void;\n destroy: () => void;\n}\n","import { Injectable, Injector, OnDestroy } from '@angular/core';\nimport {\n ActivatedRoute,\n ActivatedRouteSnapshot,\n ExtraOptions,\n NavigationEnd,\n NavigationStart,\n Router,\n ROUTER_CONFIGURATION\n} from '@angular/router';\nimport { BehaviorSubject, Observable, timer, Unsubscribable } from 'rxjs';\n\nimport { Menu, MenuService } from '@delon/theme';\nimport { ScrollService } from '@delon/util/browser';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport {\n ReuseComponentRef,\n ReuseHookOnReuseInitType,\n ReuseHookTypes,\n ReuseTabCached,\n ReuseTabMatchMode,\n ReuseTabNotify,\n ReuseTabRouteParamMatchMode,\n ReuseTitle\n} from './reuse-tab.interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class ReuseTabService implements OnDestroy {\n private _inited = false;\n private _max = 10;\n private _keepingScroll = false;\n private _cachedChange = new BehaviorSubject<ReuseTabNotify | null>(null);\n private _cached: ReuseTabCached[] = [];\n private _titleCached: { [url: string]: ReuseTitle } = {};\n private _closableCached: { [url: string]: boolean } = {};\n private _router$?: Unsubscribable;\n private removeUrlBuffer: string | null = null;\n private positionBuffer: { [url: string]: [number, number] } = {};\n componentRef?: ReuseComponentRef;\n debug = false;\n routeParamMatchMode: ReuseTabRouteParamMatchMode = 'strict';\n mode = ReuseTabMatchMode.Menu;\n /** 排除规则,限 `mode=URL` */\n excludes: RegExp[] = [];\n\n private get snapshot(): ActivatedRouteSnapshot {\n return this.injector.get(ActivatedRoute).snapshot;\n }\n\n // #region public\n\n /**\n * Get init status\n *\n * 是否已经初始化完成\n */\n get inited(): boolean {\n return this._inited;\n }\n\n /**\n * Current routing address\n *\n * 当前路由地址\n */\n get curUrl(): string {\n return this.getUrl(this.snapshot);\n }\n\n /**\n * 允许最多复用多少个页面,取值范围 `2-100`,值发生变更时会强制关闭且忽略可关闭条件\n */\n set max(value: number) {\n this._max = Math.min(Math.max(value, 2), 100);\n for (let i = this._cached.length; i > this._max; i--) {\n this._cached.pop();\n }\n }\n set keepingScroll(value: boolean) {\n this._keepingScroll = value;\n this.initScroll();\n }\n get keepingScroll(): boolean {\n return this._keepingScroll;\n }\n keepingScrollContainer?: Element;\n /** 获取已缓存的路由 */\n get items(): ReuseTabCached[] {\n return this._cached;\n }\n /** 获取当前缓存的路由总数 */\n get count(): number {\n return this._cached.length;\n }\n /** 订阅缓存变更通知 */\n get change(): Observable<ReuseTabNotify | null> {\n return this._cachedChange.asObservable(); // .pipe(filter(w => w !== null));\n }\n /** 自定义当前标题 */\n set title(value: string | ReuseTitle) {\n const url = this.curUrl;\n if (typeof value === 'string') value = { text: value };\n this._titleCached[url] = value;\n this.di('update current tag title: ', value);\n this._cachedChange.next({\n active: 'title',\n url,\n title: value,\n list: this._cached\n });\n }\n /** 获取指定路径缓存所在位置,`-1` 表示无缓存 */\n index(url: string): number {\n return this._cached.findIndex(w => w.url === url);\n }\n /** 获取指定路径缓存是否存在 */\n exists(url: string): boolean {\n return this.index(url) !== -1;\n }\n /** 获取指定路径缓存 */\n get(url?: string): ReuseTabCached | null {\n return url ? this._cached.find(w => w.url === url) || null : null;\n }\n private remove(url: string | number, includeNonCloseable: boolean): boolean {\n const idx = typeof url === 'string' ? this.index(url) : url;\n const item = idx !== -1 ? this._cached[idx] : null;\n if (!item || (!includeNonCloseable && !item.closable)) return false;\n\n this.destroy(item._handle);\n\n this._cached.splice(idx, 1);\n delete this._titleCached[url];\n return true;\n }\n /**\n * 根据URL移除标签\n *\n * @param [includeNonCloseable=false] 是否强制包含不可关闭\n */\n close(url: string, includeNonCloseable: boolean = false): boolean {\n this.removeUrlBuffer = url;\n\n this.remove(url, includeNonCloseable);\n\n this._cachedChange.next({ active: 'close', url, list: this._cached });\n\n this.di('close tag', url);\n return true;\n }\n /**\n * 清除右边\n *\n * @param [includeNonCloseable=false] 是否强制包含不可关闭\n */\n closeRight(url: string, includeNonCloseable: boolean = false): boolean {\n const start = this.index(url);\n for (let i = this.count - 1; i > start; i--) {\n this.remove(i, includeNonCloseable);\n }\n\n this.removeUrlBuffer = null;\n\n this._cachedChange.next({ active: 'closeRight', url, list: this._cached });\n\n this.di('close right tages', url);\n return true;\n }\n /**\n * 清除所有缓存\n *\n * @param [includeNonCloseable=false] 是否强制包含不可关闭\n */\n clear(includeNonCloseable: boolean = false): void {\n this._cached.forEach(w => {\n if (!includeNonCloseable && w.closable) this.destroy(w._handle);\n });\n this._cached = this._cached.filter(w => !includeNonCloseable && !w.closable);\n\n this.removeUrlBuffer = null;\n\n this._cachedChange.next({ active: 'clear', list: this._cached });\n\n this.di('clear all catch');\n }\n /**\n * 移动缓存数据\n *\n * @param url 要移动的URL地址\n * @param position 新位置,下标从 `0` 开始\n *\n * @example\n * ```\n * // source\n * [ '/a/1', '/a/2', '/a/3', '/a/4', '/a/5' ]\n * move('/a/1', 2);\n * // output\n * [ '/a/2', '/a/3', '/a/1', '/a/4', '/a/5' ]\n * move('/a/1', -1);\n * // output\n * [ '/a/2', '/a/3', '/a/4', '/a/5', '/a/1' ]\n * ```\n */\n move(url: string, position: number): void {\n const start = this._cached.findIndex(w => w.url === url);\n if (start === -1) return;\n const data = this._cached.slice();\n data.splice(position < 0 ? data.length + position : position, 0, data.splice(start, 1)[0]);\n this._cached = data;\n this._cachedChange.next({\n active: 'move',\n url,\n position,\n list: this._cached\n });\n }\n /**\n * 强制关闭当前路由(包含不可关闭状态),并重新导航至 `newUrl` 路由\n */\n replace(newUrl: string): void {\n const url = this.curUrl;\n if (this.exists(url)) {\n this.close(url, true);\n } else {\n this.removeUrlBuffer = url;\n }\n this.injector.get<Router>(Router).navigateByUrl(newUrl);\n }\n /**\n * 获取标题,顺序如下:\n *\n * 1. 组件内使用 `ReuseTabService.title = 'new title'` 重新指定文本\n * 2. 路由配置中 data 属性中包含 titleI18n > title\n * 3. 菜单数据中 text 属性\n *\n * @param url 指定URL\n * @param route 指定路由快照\n */\n getTitle(url: string, route?: ActivatedRouteSnapshot): ReuseTitle {\n if (this._titleCached[url]) {\n return this._titleCached[url];\n }\n\n if (route && route.data && (route.data.titleI18n || route.data.title)) {\n return {\n text: route.data.title,\n i18n: route.data.titleI18n\n } as ReuseTitle;\n }\n\n const menu = this.getMenu(url);\n return menu ? { text: menu.text, i18n: menu.i18n } : { text: url };\n }\n\n /**\n * 清除标题缓存\n */\n clearTitleCached(): void {\n this._titleCached = {};\n }\n /** 自定义当前 `closable` 状态 */\n set closable(value: boolean) {\n const url = this.curUrl;\n this._closableCached[url] = value;\n this.di('update current tag closable: ', value);\n this._cachedChange.next({\n active: 'closable',\n closable: value,\n list: this._cached\n });\n }\n /**\n * 获取 `closable` 状态,顺序如下:\n *\n * 1. 组件内使用 `ReuseTabService.closable = true` 重新指定 `closable` 状态\n * 2. 路由配置中 data 属性中包含 `reuseClosable`\n * 3. 菜单数据中 `reuseClosable` 属性\n *\n * @param url 指定URL\n * @param route 指定路由快照\n */\n getClosable(url: string, route?: ActivatedRouteSnapshot): boolean {\n if (typeof this._closableCached[url] !== 'undefined') return this._closableCached[url];\n\n if (route && route.data && typeof route.data.reuseClosable === 'boolean') return route.data.reuseClosable;\n\n const menu = this.mode !== ReuseTabMatchMode.URL ? this.getMenu(url) : null;\n if (menu && typeof menu.reuseClosable === 'boolean') return menu.reuseClosable;\n\n return true;\n }\n /**\n * 清空 `closable` 缓存\n */\n clearClosableCached(): void {\n this._closableCached = {};\n }\n getTruthRoute(route: ActivatedRouteSnapshot): ActivatedRouteSnapshot {\n let next = route;\n while (next.firstChild) next = next.firstChild;\n return next;\n }\n /**\n * 根据快照获取URL地址\n */\n getUrl(route: ActivatedRouteSnapshot): string {\n let next = this.getTruthRoute(route);\n const segments: string[] = [];\n while (next) {\n segments.push(next.url.join('/'));\n next = next.parent!;\n }\n const url = `/${segments\n .filter(i => i)\n .reverse()\n .join('/')}`;\n return url;\n }\n /**\n * 检查快照是否允许被复用\n */\n can(route: ActivatedRouteSnapshot): boolean {\n const url = this.getUrl(route);\n if (url === this.removeUrlBuffer) return false;\n\n if (route.data && typeof route.data.reuse === 'boolean') return route.data.reuse;\n\n if (this.mode !== ReuseTabMatchMode.URL) {\n const menu = this.getMenu(url);\n if (!menu) return false;\n if (this.mode === ReuseTabMatchMode.Menu) {\n if (menu.reuse === false) return false;\n } else {\n if (!menu.reuse || menu.reuse !== true) return false;\n }\n return true;\n }\n return !this.isExclude(url);\n }\n\n isExclude(url: string): boolean {\n return this.excludes.findIndex(r => r.test(url)) !== -1;\n }\n\n /**\n * 刷新,触发一个 refresh 类型事件\n */\n refresh(data?: NzSafeAny): void {\n this._cachedChange.next({ active: 'refresh', data });\n }\n // #endregion\n\n // #region privates\n\n private destroy(_handle: NzSafeAny): void {\n if (_handle && _handle.componentRef && _handle.componentRef.destroy) _handle.componentRef.destroy();\n }\n\n private di(...args: NzSafeAny[]): void {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.debug) return;\n console.warn(...args);\n }\n }\n\n // #endregion\n\n constructor(private injector: Injector, private menuService: MenuService) {}\n\n init(): void {\n this.initScroll();\n this._inited = true;\n }\n\n private getMenu(url: string): Menu | null | undefined {\n const menus = this.menuService.getPathByUrl(url);\n if (!menus || menus.length === 0) return null;\n return menus.pop();\n }\n\n runHook(\n method: ReuseHookTypes,\n comp: ReuseComponentRef | number | undefined,\n type: ReuseHookOnReuseInitType = 'init'\n ): void {\n if (typeof comp === 'number') {\n const item = this._cached[comp];\n comp = item._handle.componentRef;\n }\n if (comp == null || !comp.instance) {\n return;\n }\n const compThis = comp.instance;\n const fn = compThis[method];\n if (typeof fn !== 'function') {\n return;\n }\n if (method === '_onReuseInit') {\n fn.call(compThis, type);\n } else {\n (fn as () => void).call(compThis);\n }\n }\n\n private hasInValidRoute(route: ActivatedRouteSnapshot): boolean {\n return !route.routeConfig || !!route.routeConfig.loadChildren || !!route.routeConfig.children;\n }\n\n /**\n * 决定是否允许路由复用,若 `true` 会触发 `store`\n */\n shouldDetach(route: ActivatedRouteSnapshot): boolean {\n if (this.hasInValidRoute(route)) return false;\n this.di('#shouldDetach', this.can(route), this.getUrl(route));\n return this.can(route);\n }\n\n /**\n * 存储\n */\n store(_snapshot: ActivatedRouteSnapshot, _handle: NzSafeAny): void {\n const url = this.getUrl(_snapshot);\n const idx = this.index(url);\n const isAdd = idx === -1;\n\n const item: ReuseTabCached = {\n title: this.getTitle(url, _snapshot),\n closable: this.getClosable(url, _snapshot),\n position: this.getKeepingScroll(url, _snapshot) ? this.positionBuffer[url] : null,\n url,\n _snapshot,\n _handle\n };\n if (isAdd) {\n if (this.count >= this._max) {\n // Get the oldest closable location\n const closeIdx = this._cached.findIndex(w => w.closable!);\n if (closeIdx !== -1) this.remove(closeIdx, false);\n }\n this._cached.push(item);\n } else {\n // Current handler is null when activate routes\n // For better reliability, we need to wait for the component to be attached before call _onReuseInit\n const cahcedComponentRef = this._cached[idx]._handle?.componentRef;\n if (_handle == null && cahcedComponentRef != null) {\n timer(100).subscribe(() => this.runHook('_onReuseInit', cahcedComponentRef));\n }\n this._cached[idx] = item;\n }\n this.removeUrlBuffer = null;\n\n this.di('#store', isAdd ? '[new]' : '[override]', url);\n\n if (_handle && _handle.componentRef) {\n this.runHook('_onReuseDestroy', _handle.componentRef);\n }\n\n if (!isAdd) {\n this._cachedChange.next({ active: 'override', item, list: this._cached });\n }\n }\n\n /**\n * 决定是否允许应用缓存数据\n */\n shouldAttach(route: ActivatedRouteSnapshot): boolean {\n if (this.hasInValidRoute(route)) return false;\n const url = this.getUrl(route);\n const data = this.get(url);\n const ret = !!(data && data._handle);\n this.di('#shouldAttach', ret, url);\n if (!ret) {\n this._cachedChange.next({ active: 'add', url, list: this._cached });\n }\n return ret;\n }\n\n /**\n * 提取复用数据\n */\n retrieve(route: ActivatedRouteSnapshot): NzSafeAny | null {\n if (this.hasInValidRoute(route)) return null;\n const url = this.getUrl(route);\n const data = this.get(url);\n const ret = (data && data._handle) || null;\n this.di('#retrieve', url, ret);\n return ret;\n }\n\n /**\n * 决定是否应该进行复用路由处理\n */\n shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\n let ret = future.routeConfig === curr.routeConfig;\n if (!ret) return false;\n\n const path = ((future.routeConfig && future.routeConfig.path) || '') as string;\n if (path.length > 0 && ~path.indexOf(':')) {\n if (this.routeParamMatchMode === 'strict') {\n ret = this.getUrl(future) === this.getUrl(curr);\n } else {\n ret = path === ((curr.routeConfig && curr.routeConfig.path) || '');\n }\n }\n this.di('=====================');\n this.di('#shouldReuseRoute', ret, `${this.getUrl(curr)}=>${this.getUrl(future)}`, future, curr);\n return ret;\n }\n\n // #region scroll\n\n /**\n * 获取 `keepingScroll` 状态,顺序如下:\n *\n * 1. 路由配置中 data 属性中包含 `keepingScroll`\n * 2. 菜单数据中 `keepingScroll` 属性\n * 3. 组件 `keepingScroll` 值\n */\n getKeepingScroll(url: string, route?: ActivatedRouteSnapshot): boolean {\n if (route && route.data && typeof route.data.keepingScroll === 'boolean') return route.data.keepingScroll;\n\n const menu = this.mode !== ReuseTabMatchMode.URL ? this.getMenu(url) : null;\n if (menu && typeof menu.keepingScroll === 'boolean') return menu.keepingScroll;\n\n return this.keepingScroll;\n }\n\n private get isDisabledInRouter(): boolean {\n const routerConfig = this.injector.get<ExtraOptions>(ROUTER_CONFIGURATION, {} as NzSafeAny);\n return routerConfig.scrollPositionRestoration === 'disabled';\n }\n\n private get ss(): ScrollService {\n return this.injector.get(ScrollService);\n }\n\n private initScroll(): void {\n if (this._router$) {\n this._router$.unsubscribe();\n }\n\n this._router$ = this.injector.get<Router>(Router).events.subscribe(e => {\n if (e instanceof NavigationStart) {\n const url = this.curUrl;\n if (this.getKeepingScroll(url, this.getTruthRoute(this.snapshot))) {\n this.positionBuffer[url] = this.ss.getScrollPosition(this.keepingScrollContainer);\n } else {\n delete this.positionBuffer[url];\n }\n } else if (e instanceof NavigationEnd) {\n const url = this.curUrl;\n const item = this.get(url);\n if (item && item.position && this.getKeepingScroll(url, this.getTruthRoute(this.snapshot))) {\n if (this.isDisabledInRouter) {\n this.ss.scrollToPosition(this.keepingScrollContainer, item.position);\n } else {\n setTimeout(() => this.ss.scrollToPosition(this.keepingScrollContainer, item.position!), 1);\n }\n }\n }\n });\n }\n\n // #endregion\n\n ngOnDestroy(): void {\n const { _cachedChange, _router$ } = this;\n this.clear();\n this._cached = [];\n _cachedChange.complete();\n\n if (_router$) {\n _router$.unsubscribe();\n }\n }\n}\n","import { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n SimpleChange,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport { debounceTime, filter, takeUntil } from 'rxjs/operators';\n\nimport { AlainI18NService, ALAIN_I18N_TOKEN } from '@delon/theme';\nimport { BooleanInput, InputBoolean, InputNumber, NumberInput } from '@delon/util/decorator';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzTabSetComponent } from 'ng-zorro-antd/tabs';\n\nimport { ReuseTabContextService } from './reuse-tab-context.service';\nimport {\n ReuseContextCloseEvent,\n ReuseContextI18n,\n ReuseCustomContextMenu,\n ReuseItem,\n ReuseTabCached,\n ReuseTabMatchMode,\n ReuseTabNotify,\n ReuseTabRouteParamMatchMode,\n ReuseTitle\n} from './reuse-tab.interfaces';\nimport { ReuseTabService } from './reuse-tab.service';\n\n@Component({\n selector: 'reuse-tab, [reuse-tab]',\n exportAs: 'reuseTab',\n templateUrl: './reuse-tab.component.html',\n host: {\n '[class.reuse-tab]': 'true',\n '[class.reuse-tab__line]': `tabType === 'line'`,\n '[class.reuse-tab__card]': `tabType === 'card'`,\n '[class.reuse-tab__disabled]': `disabled`\n },\n providers: [ReuseTabContextService],\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class ReuseTabComponent implements OnInit, OnChanges, OnDestroy {\n static ngAcceptInputType_debug: BooleanInput;\n static ngAcceptInputType_max: NumberInput;\n static ngAcceptInputType_tabMaxWidth: NumberInput;\n static ngAcceptInputType_allowClose: BooleanInput;\n static ngAcceptInputType_keepingScroll: BooleanInput;\n static ngAcceptInputType_disabled: BooleanInput;\n\n @ViewChild('tabset') private tabset!: NzTabSetComponent;\n private destroy$ = new Subject<void>();\n private _keepingScrollContainer?: Element;\n list: ReuseItem[] = [];\n item?: ReuseItem;\n pos = 0;\n\n // #region fields\n\n @Input() mode: ReuseTabMatchMode = ReuseTabMatchMode.Menu;\n @Input() i18n?: ReuseContextI18n;\n @Input() @InputBoolean() debug = false;\n @Input() @InputNumber() max?: number;\n @Input() @InputNumber() tabMaxWidth?: number;\n @Input() excludes?: RegExp[];\n @Input() @InputBoolean() allowClose = true;\n @Input() @InputBoolean() keepingScroll = false;\n @Input()\n set keepingScrollContainer(value: string | Element) {\n this._keepingScrollContainer = typeof value === 'string' ? this.doc.querySelector(value) : value;\n }\n @Input() customContextMenu: ReuseCustomContextMenu[] = [];\n @Input() tabBarExtraContent?: TemplateRef<void>;\n @Input() tabBarGutter?: number;\n @Input() tabBarStyle: { [key: string]: string } | null = null;\n @Input() tabType: 'line' | 'card' = 'line';\n @Input() routeParamMatchMode: ReuseTabRouteParamMatchMode = 'strict';\n @Input() @InputBoolean() disabled = false;\n @Input() titleRender?: TemplateRef<{ $implicit: ReuseItem }>;\n @Output() readonly change = new EventEmitter<ReuseItem>();\n @Output() readonly close = new EventEmitter<ReuseItem | null>();\n\n // #endregion\n\n constructor(\n private srv: ReuseTabService,\n private cdr: ChangeDetectorRef,\n private router: Router,\n private route: ActivatedRoute,\n @Optional() @Inject(ALAIN_I18N_TOKEN) private i18nSrv: AlainI18NService,\n @Inject(DOCUMENT) private doc: NzSafeAny,\n private platform: Platform\n ) {}\n\n private genTit(title: ReuseTitle): string {\n return title.i18n && this.i18nSrv ? this.i18nSrv.fanyi(title.i18n) : title.text!;\n }\n\n private get curUrl(): string {\n return this.srv.getUrl(this.route.snapshot);\n }\n\n private genCurItem(): ReuseItem {\n const url = this.curUrl;\n const snapshotTrue = this.srv.getTruthRoute(this.route.snapshot);\n return {\n url,\n title: this.genTit(this.srv.getTitle(url, snapshotTrue)),\n closable: this.allowClose && this.srv.count > 0 && this.srv.getClosable(url, snapshotTrue),\n active: false,\n last: false,\n index: 0\n };\n }\n\n private genList(notify: ReuseTabNotify | null): void {\n const ls = this.srv.items.map(\n (item: ReuseTabCached, index: number) =>\n ({\n url: item.url,\n title: this.genTit(item.title),\n closable: this.allowClose && item.closable && this.srv.count > 0,\n index,\n active: false,\n last: false\n } as ReuseItem)\n );\n // debugger;\n\n const url = this.curUrl;\n let addCurrent = ls.findIndex(w => w.url === url) === -1;\n if (notify && notify.active === 'close' && notify.url === url) {\n addCurrent = false;\n let toPos = 0;\n const curItem = this.list.find(w => w.url === url)!;\n if (curItem.index === ls.length) {\n // When closed is last\n toPos = ls.length - 1;\n } else if (curItem.index < ls.length) {\n // Should be actived next tab when closed is middle\n toPos = Math.max(0, curItem.index);\n }\n this.router.navigateByUrl(ls[toPos].url);\n }\n\n if (addCurrent) {\n ls.splice(this.pos + 1, 0, this.genCurItem());\n }\n\n ls.forEach((item, index) => (item.index = index));\n if (ls.length === 1) {\n ls[0].closable = false;\n }\n this.list = ls;\n this.cdr.detectChanges();\n this.updatePos();\n }\n\n private updateTitle(res: ReuseTabNotify): void {\n const item = this.list.find(w => w.url === res!.url);\n if (!item) return;\n item.title = this.genTit(res!.title!);\n this.cdr.detectChanges();\n }\n\n private refresh(item: ReuseItem): void {\n this.srv.runHook('_onReuseInit', this.pos === item.index ? this.srv.componentRef : item.index, 'refresh');\n }\n\n // #region UI\n\n contextMenuChange(res: ReuseContextCloseEvent): void {\n let fn: (() => void) | null = null;\n switch (res.type) {\n case 'refresh':\n this.refresh(res.item);\n break;\n case 'close':\n this._close(null, res.item.index, res.includeNonCloseable);\n break;\n case 'closeRight':\n fn = () => {\n this.srv.closeRight(res.item.url, res.includeNonCloseable);\n this.close.emit(null);\n };\n break;\n case 'closeOther':\n fn = () => {\n this.srv.clear(res.includeNonCloseable);\n this.close.emit(null);\n };\n break;\n }\n if (!fn) {\n return;\n }\n if (!res.item.active && res.item.index <= this.list.find(w => w.active)!.index) {\n this._to(res.item.index, fn);\n } else {\n fn();\n }\n }\n\n _to(index: number, cb?: () => void): void {\n index = Math.max(0, Math.min(index, this.list.length - 1));\n const item = this.list[index];\n this.router.navigateByUrl(item.url).then(res => {\n if (!res) return;\n this.item = item;\n this.change.emit(item);\n if (cb) {\n cb();\n }\n });\n }\n\n _close(e: Event | null, idx: number, includeNonCloseable: boolean): boolean {\n if (e != null) {\n e.preventDefault();\n e.stopPropagation();\n }\n const item = this.list[idx];\n this.srv.close(item.url, includeNonCloseable);\n this.close.emit(item);\n this.cdr.detectChanges();\n return false;\n }\n\n activate(instance: NzSafeAny): void {\n this.srv.componentRef = { instance };\n }\n\n private updatePos(): void {\n const url = this.srv.getUrl(this.route.snapshot);\n const ls = this.list.filter(w => w.url === url || !this.srv.isExclude(w.url));\n if (ls.length === 0) {\n return;\n }\n\n const last = ls[ls.length - 1];\n const item = ls.find(w => w.url === url);\n last.last = true;\n const pos = item == null ? last.index : item.index;\n ls.forEach((i, idx) => (i.active = pos === idx));\n this.pos = pos;\n // TODO: 目前无法知道为什么 `pos` 无法通过 `nzSelectedIndex` 生效,因此强制使用组件实例的方式来修改,这种方式是安全的\n // https://github.com/ng-alain/ng-alain/issues/1736\n this.tabset.nzSelectedIndex = pos;\n this.list = ls;\n this.cdr.detectChanges();\n }\n\n // #endregion\n\n ngOnInit(): void {\n if (!this.platform.isBrowser) {\n return;\n }\n\n this.srv.change.pipe(takeUntil(this.destroy$)).subscribe(res => {\n switch (res?.active) {\n case 'title':\n this.updateTitle(res);\n return;\n case 'override':\n if (res?.list?.length === this.list.length) {\n this.updatePos();\n return;\n }\n break;\n }\n this.genList(res);\n });\n\n this.i18nSrv.change\n .pipe(\n filter(() => this.srv.inited),\n takeUntil(this.destroy$),\n debounceTime(100)\n )\n .subscribe(() => this.genList({ active: 'title' }));\n\n this.srv.init();\n }\n\n ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges): void {\n if (!this.platform.isBrowser) {\n return;\n }\n\n if (changes.max) this.srv.max = this.max!;\n if (changes.excludes) this.srv.excludes = this.excludes!;\n if (changes.mode) this.srv.mode = this.mode;\n if (changes.routeParamMatchMode) this.srv.routeParamMatchMode = this.routeParamMatchMode;\n if (changes.keepingScroll) {\n this.srv.keepingScroll = this.keepingScroll;\n this.srv.keepingScrollContainer = this._keepingScrollContainer;\n }\n\n this.srv.debug = this.debug;\n\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n const { destroy$ } = this;\n destroy$.next();\n destroy$.complete();\n }\n}\n","<nz-tabset\n #tabset\n [nzSelectedIndex]=\"pos\"\n [nzAnimated]=\"false\"\n [nzType]=\"tabType\"\n [nzTabBarExtraContent]=\"tabBarExtraContent\"\n [nzTabBarGutter]=\"tabBarGutter\"\n [nzTabBarStyle]=\"tabBarStyle\"\n>\n <nz-tab *ngFor=\"let i of list; let index = index\" [nzTitle]=\"titleTemplate\" (nzClick)=\"_to(index)\">\n <ng-template #titleTemplate>\n <div\n [reuse-tab-context-menu]=\"i\"\n [customContextMenu]=\"customContextMenu\"\n class=\"reuse-tab__name\"\n [attr.title]=\"i.title\"\n >\n <span [class.reuse-tab__name-width]=\"tabMaxWidth\" [style.max-width.px]=\"tabMaxWidth\">\n <ng-container\n *ngIf=\"titleRender; else defaultTitle\"\n [ngTemplateOutlet]=\"titleRender\"\n [ngTemplateOutletContext]=\"{ $implicit: i }\"\n ></ng-container>\n <ng-template #defaultTitle>{{ i.title }}</ng-template>\n </span>\n </div>\n <i *ngIf=\"i.closable\" nz-icon nzType=\"close\" class=\"reuse-tab__op\" (click)=\"_close($event, index, false)\"></i>\n </ng-template>\n </nz-tab>\n</nz-tabset>\n<reuse-tab-context [i18n]=\"i18n\" (change)=\"contextMenuChange($event)\"></reuse-tab-context>\n","import { ActivatedRouteSnapshot, RouteReuseStrategy } from '@angular/router';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { ReuseTabService } from './reuse-tab.service';\n\nexport class ReuseTabStrategy implements RouteReuseStrategy {\n constructor(private srv: ReuseTabService) {}\n\n shouldDetach(route: ActivatedRouteSnapshot): boolean {\n return this.srv.shouldDetach(route);\n }\n store(route: ActivatedRouteSnapshot, handle: unknown): void {\n this.srv.store(route, handle);\n }\n shouldAttach(route: ActivatedRouteSnapshot): boolean {\n return this.srv.shouldAttach(route);\n }\n retrieve(route: ActivatedRouteSnapshot): NzSafeAny | null {\n return this.srv.retrieve(route);\n }\n shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\n return this.srv.shouldReuseRoute(future, curr);\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { DelonLocaleModule } from '@delon/theme';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzMenuModule } from 'ng-zorro-antd/menu';\nimport { NzTabsModule } from 'ng-zorro-antd/tabs';\n\nimport { ReuseTabContextMenuComponent } from './reuse-tab-context-menu.component';\nimport { ReuseTabContextComponent } from './reuse-tab-context.component';\nimport { ReuseTabContextDirective } from './reuse-tab-context.directive';\nimport { ReuseTabComponent } from './reuse-tab.component';\n\nconst COMPONENTS = [ReuseTabComponent];\nconst NOEXPORTS = [ReuseTabContextMenuComponent, ReuseTabContextComponent, ReuseTabContextDirective];\n\n@NgModule({\n imports: [CommonModule, RouterModule, DelonLocaleModule, NzMenuModule, NzTabsModule, NzIconModule, OverlayModule],\n declarations: [...COMPONENTS, ...NOEXPORTS],\n exports: COMPONENTS\n})\nexport class ReuseTabModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}