@ng-nest/ui 12.0.8 → 12.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (454) hide show
  1. package/alert/alert.component.d.ts +2 -1
  2. package/auto-complete/auto-complete-portal.component.d.ts +1 -3
  3. package/auto-complete/auto-complete.component.d.ts +1 -1
  4. package/back-top/back-top.component.d.ts +1 -2
  5. package/bundles/ng-nest-ui-alert.umd.js +6 -1
  6. package/bundles/ng-nest-ui-alert.umd.js.map +1 -1
  7. package/bundles/ng-nest-ui-anchor.umd.js +1 -1
  8. package/bundles/ng-nest-ui-anchor.umd.js.map +1 -1
  9. package/bundles/ng-nest-ui-auto-complete.umd.js +7 -6
  10. package/bundles/ng-nest-ui-auto-complete.umd.js.map +1 -1
  11. package/bundles/ng-nest-ui-back-top.umd.js +2 -2
  12. package/bundles/ng-nest-ui-back-top.umd.js.map +1 -1
  13. package/bundles/ng-nest-ui-badge.umd.js +2 -1
  14. package/bundles/ng-nest-ui-badge.umd.js.map +1 -1
  15. package/bundles/ng-nest-ui-button.umd.js +4 -3
  16. package/bundles/ng-nest-ui-button.umd.js.map +1 -1
  17. package/bundles/ng-nest-ui-calendar.umd.js +4 -3
  18. package/bundles/ng-nest-ui-calendar.umd.js.map +1 -1
  19. package/bundles/ng-nest-ui-carousel.umd.js +13 -12
  20. package/bundles/ng-nest-ui-carousel.umd.js.map +1 -1
  21. package/bundles/ng-nest-ui-cascade.umd.js +9 -9
  22. package/bundles/ng-nest-ui-cascade.umd.js.map +1 -1
  23. package/bundles/ng-nest-ui-checkbox.umd.js +3 -2
  24. package/bundles/ng-nest-ui-checkbox.umd.js.map +1 -1
  25. package/bundles/ng-nest-ui-color-picker.umd.js +9 -10
  26. package/bundles/ng-nest-ui-color-picker.umd.js.map +1 -1
  27. package/bundles/ng-nest-ui-color.umd.js +1 -1
  28. package/bundles/ng-nest-ui-color.umd.js.map +1 -1
  29. package/bundles/ng-nest-ui-comment.umd.js +3 -2
  30. package/bundles/ng-nest-ui-comment.umd.js.map +1 -1
  31. package/bundles/ng-nest-ui-container.umd.js.map +1 -1
  32. package/bundles/ng-nest-ui-core.umd.js +3 -3
  33. package/bundles/ng-nest-ui-core.umd.js.map +1 -1
  34. package/bundles/ng-nest-ui-crumb.umd.js +3 -2
  35. package/bundles/ng-nest-ui-crumb.umd.js.map +1 -1
  36. package/bundles/ng-nest-ui-date-picker.umd.js +34 -44
  37. package/bundles/ng-nest-ui-date-picker.umd.js.map +1 -1
  38. package/bundles/ng-nest-ui-description.umd.js +5 -6
  39. package/bundles/ng-nest-ui-description.umd.js.map +1 -1
  40. package/bundles/ng-nest-ui-dialog.umd.js +285 -32
  41. package/bundles/ng-nest-ui-dialog.umd.js.map +1 -1
  42. package/bundles/ng-nest-ui-drawer.umd.js +247 -15
  43. package/bundles/ng-nest-ui-drawer.umd.js.map +1 -1
  44. package/bundles/ng-nest-ui-dropdown.umd.js +4 -3
  45. package/bundles/ng-nest-ui-dropdown.umd.js.map +1 -1
  46. package/bundles/ng-nest-ui-find.umd.js +33 -8
  47. package/bundles/ng-nest-ui-find.umd.js.map +1 -1
  48. package/bundles/ng-nest-ui-form.umd.js +6 -10
  49. package/bundles/ng-nest-ui-form.umd.js.map +1 -1
  50. package/bundles/ng-nest-ui-highlight.umd.js +2 -1
  51. package/bundles/ng-nest-ui-highlight.umd.js.map +1 -1
  52. package/bundles/ng-nest-ui-i18n.umd.js +2 -1
  53. package/bundles/ng-nest-ui-i18n.umd.js.map +1 -1
  54. package/bundles/ng-nest-ui-icon.umd.js +3 -2
  55. package/bundles/ng-nest-ui-icon.umd.js.map +1 -1
  56. package/bundles/ng-nest-ui-inner.umd.js +1 -1
  57. package/bundles/ng-nest-ui-inner.umd.js.map +1 -1
  58. package/bundles/ng-nest-ui-input.umd.js +9 -7
  59. package/bundles/ng-nest-ui-input.umd.js.map +1 -1
  60. package/bundles/ng-nest-ui-list.umd.js +4 -3
  61. package/bundles/ng-nest-ui-list.umd.js.map +1 -1
  62. package/bundles/ng-nest-ui-loading.umd.js +2 -1
  63. package/bundles/ng-nest-ui-loading.umd.js.map +1 -1
  64. package/bundles/ng-nest-ui-menu.umd.js +6 -6
  65. package/bundles/ng-nest-ui-menu.umd.js.map +1 -1
  66. package/bundles/ng-nest-ui-message-box.umd.js +28 -26
  67. package/bundles/ng-nest-ui-message-box.umd.js.map +1 -1
  68. package/bundles/ng-nest-ui-message.umd.js +53 -17
  69. package/bundles/ng-nest-ui-message.umd.js.map +1 -1
  70. package/bundles/ng-nest-ui-notification.umd.js +1 -1
  71. package/bundles/ng-nest-ui-notification.umd.js.map +1 -1
  72. package/bundles/ng-nest-ui-pagination.umd.js +3 -2
  73. package/bundles/ng-nest-ui-pagination.umd.js.map +1 -1
  74. package/bundles/ng-nest-ui-popconfirm.umd.js +33 -4
  75. package/bundles/ng-nest-ui-popconfirm.umd.js.map +1 -1
  76. package/bundles/ng-nest-ui-popover.umd.js +15 -3
  77. package/bundles/ng-nest-ui-popover.umd.js.map +1 -1
  78. package/bundles/ng-nest-ui-portal.umd.js +8 -8
  79. package/bundles/ng-nest-ui-portal.umd.js.map +1 -1
  80. package/bundles/ng-nest-ui-progress.umd.js +236 -20
  81. package/bundles/ng-nest-ui-progress.umd.js.map +1 -1
  82. package/bundles/ng-nest-ui-radio.umd.js +3 -2
  83. package/bundles/ng-nest-ui-radio.umd.js.map +1 -1
  84. package/bundles/ng-nest-ui-rate.umd.js +5 -5
  85. package/bundles/ng-nest-ui-rate.umd.js.map +1 -1
  86. package/bundles/ng-nest-ui-ripple.umd.js.map +1 -1
  87. package/bundles/ng-nest-ui-select.umd.js +7 -6
  88. package/bundles/ng-nest-ui-select.umd.js.map +1 -1
  89. package/bundles/ng-nest-ui-skeleton.umd.js +2 -1
  90. package/bundles/ng-nest-ui-skeleton.umd.js.map +1 -1
  91. package/bundles/ng-nest-ui-slider.umd.js +7 -8
  92. package/bundles/ng-nest-ui-slider.umd.js.map +1 -1
  93. package/bundles/ng-nest-ui-statistic.umd.js +6 -4
  94. package/bundles/ng-nest-ui-statistic.umd.js.map +1 -1
  95. package/bundles/ng-nest-ui-steps.umd.js +23 -10
  96. package/bundles/ng-nest-ui-steps.umd.js.map +1 -1
  97. package/bundles/ng-nest-ui-table.umd.js +13 -10
  98. package/bundles/ng-nest-ui-table.umd.js.map +1 -1
  99. package/bundles/ng-nest-ui-tabs.umd.js +5 -4
  100. package/bundles/ng-nest-ui-tabs.umd.js.map +1 -1
  101. package/bundles/ng-nest-ui-tag.umd.js +2 -1
  102. package/bundles/ng-nest-ui-tag.umd.js.map +1 -1
  103. package/bundles/ng-nest-ui-text-retract.umd.js +2 -1
  104. package/bundles/ng-nest-ui-text-retract.umd.js.map +1 -1
  105. package/bundles/ng-nest-ui-textarea.umd.js +3 -12
  106. package/bundles/ng-nest-ui-textarea.umd.js.map +1 -1
  107. package/bundles/ng-nest-ui-theme.umd.js +2 -2
  108. package/bundles/ng-nest-ui-theme.umd.js.map +1 -1
  109. package/bundles/ng-nest-ui-time-picker.umd.js +32 -15
  110. package/bundles/ng-nest-ui-time-picker.umd.js.map +1 -1
  111. package/bundles/ng-nest-ui-timeline.umd.js +3 -2
  112. package/bundles/ng-nest-ui-timeline.umd.js.map +1 -1
  113. package/bundles/ng-nest-ui-tooltip.umd.js +3 -2
  114. package/bundles/ng-nest-ui-tooltip.umd.js.map +1 -1
  115. package/bundles/ng-nest-ui-transfer.umd.js +3 -2
  116. package/bundles/ng-nest-ui-transfer.umd.js.map +1 -1
  117. package/bundles/ng-nest-ui-tree.umd.js +8 -7
  118. package/bundles/ng-nest-ui-tree.umd.js.map +1 -1
  119. package/bundles/ng-nest-ui-upload.umd.js +5 -4
  120. package/bundles/ng-nest-ui-upload.umd.js.map +1 -1
  121. package/button/buttons.component.d.ts +1 -1
  122. package/calendar/calendar.component.d.ts +2 -2
  123. package/carousel/carousel-panel.component.d.ts +2 -3
  124. package/carousel/carousel.component.d.ts +1 -1
  125. package/cascade/cascade-portal.component.d.ts +4 -7
  126. package/cascade/cascade.component.d.ts +1 -1
  127. package/checkbox/checkbox.component.d.ts +1 -1
  128. package/color/color.component.d.ts +2 -2
  129. package/color-picker/color-picker-portal.component.d.ts +1 -3
  130. package/color-picker/color-picker.component.d.ts +2 -3
  131. package/comment/comment.component.d.ts +1 -1
  132. package/core/config/config.d.ts +7 -0
  133. package/core/interfaces/layout.type.d.ts +1 -1
  134. package/core/services/reuse-strategy.service.d.ts +1 -1
  135. package/crumb/crumb.component.d.ts +1 -1
  136. package/date-picker/date-picker-portal.component.d.ts +1 -3
  137. package/date-picker/date-picker.component.d.ts +3 -4
  138. package/date-picker/date-picker.property.d.ts +1 -16
  139. package/date-picker/date-range-portal.component.d.ts +1 -3
  140. package/date-picker/date-range.component.d.ts +2 -3
  141. package/date-picker/picker-date.component.d.ts +1 -1
  142. package/date-picker/picker-month.component.d.ts +1 -1
  143. package/date-picker/picker-year.component.d.ts +1 -1
  144. package/description/description.component.d.ts +2 -4
  145. package/dialog/dialog-container.component.d.ts +18 -0
  146. package/dialog/dialog-container.directives.d.ts +24 -0
  147. package/dialog/dialog-ref.d.ts +9 -0
  148. package/dialog/dialog.module.d.ts +13 -11
  149. package/dialog/dialog.property.d.ts +84 -6
  150. package/dialog/dialog.service.d.ts +19 -0
  151. package/dialog/public-api.d.ts +4 -0
  152. package/drawer/drawer-container.component.d.ts +18 -0
  153. package/drawer/drawer-container.directives.d.ts +19 -0
  154. package/drawer/drawer-ref.d.ts +9 -0
  155. package/drawer/drawer.module.d.ts +8 -6
  156. package/drawer/drawer.property.d.ts +83 -2
  157. package/drawer/drawer.service.d.ts +19 -0
  158. package/drawer/public-api.d.ts +5 -0
  159. package/dropdown/dropdown-portal.component.d.ts +1 -3
  160. package/dropdown/dropdown.component.d.ts +2 -2
  161. package/esm2015/alert/alert.component.js +8 -3
  162. package/esm2015/anchor/anchor.component.js +2 -2
  163. package/esm2015/anchor/anchor.property.js +1 -1
  164. package/esm2015/auto-complete/auto-complete-portal.component.js +4 -4
  165. package/esm2015/auto-complete/auto-complete.component.js +5 -4
  166. package/esm2015/auto-complete/auto-complete.property.js +1 -1
  167. package/esm2015/back-top/back-top.component.js +3 -3
  168. package/esm2015/badge/badge.component.js +3 -2
  169. package/esm2015/button/button.component.js +5 -4
  170. package/esm2015/button/buttons.component.js +1 -1
  171. package/esm2015/calendar/calendar.component.js +5 -4
  172. package/esm2015/carousel/carousel-panel.component.js +12 -11
  173. package/esm2015/carousel/carousel.component.js +4 -3
  174. package/esm2015/cascade/cascade-portal.component.js +6 -7
  175. package/esm2015/cascade/cascade.component.js +5 -4
  176. package/esm2015/checkbox/checkbox.component.js +4 -3
  177. package/esm2015/checkbox/checkbox.property.js +1 -1
  178. package/esm2015/color/color.component.js +2 -2
  179. package/esm2015/color-picker/color-picker-portal.component.js +3 -3
  180. package/esm2015/color-picker/color-picker.component.js +8 -9
  181. package/esm2015/comment/comment.component.js +4 -3
  182. package/esm2015/container/container.component.js +2 -2
  183. package/esm2015/core/animation/fade.js +1 -1
  184. package/esm2015/core/config/config.js +1 -1
  185. package/esm2015/core/interfaces/layout.type.js +1 -1
  186. package/esm2015/core/services/http.service.js +2 -2
  187. package/esm2015/core/services/preloading-strategy.service.js +2 -2
  188. package/esm2015/core/services/reuse-strategy.service.js +2 -2
  189. package/esm2015/crumb/crumb.component.js +4 -3
  190. package/esm2015/date-picker/date-picker-portal.component.js +4 -4
  191. package/esm2015/date-picker/date-picker.component.js +9 -13
  192. package/esm2015/date-picker/date-picker.property.js +8 -17
  193. package/esm2015/date-picker/date-range-portal.component.js +2 -2
  194. package/esm2015/date-picker/date-range.component.js +7 -7
  195. package/esm2015/date-picker/picker-date.component.js +4 -3
  196. package/esm2015/date-picker/picker-month.component.js +4 -3
  197. package/esm2015/date-picker/picker-year.component.js +4 -3
  198. package/esm2015/description/description.component.js +6 -7
  199. package/esm2015/dialog/dialog-container.component.js +59 -0
  200. package/esm2015/dialog/dialog-container.directives.js +73 -0
  201. package/esm2015/dialog/dialog-ref.js +17 -0
  202. package/esm2015/dialog/dialog.component.js +4 -3
  203. package/esm2015/dialog/dialog.module.js +37 -7
  204. package/esm2015/dialog/dialog.property.js +17 -16
  205. package/esm2015/dialog/dialog.service.js +67 -0
  206. package/esm2015/dialog/public-api.js +5 -1
  207. package/esm2015/drawer/drawer-container.component.js +59 -0
  208. package/esm2015/drawer/drawer-container.directives.js +57 -0
  209. package/esm2015/drawer/drawer-ref.js +17 -0
  210. package/esm2015/drawer/drawer.component.js +4 -3
  211. package/esm2015/drawer/drawer.module.js +22 -6
  212. package/esm2015/drawer/drawer.property.js +22 -6
  213. package/esm2015/drawer/drawer.service.js +65 -0
  214. package/esm2015/drawer/public-api.js +6 -1
  215. package/esm2015/dropdown/dropdown-portal.component.js +2 -2
  216. package/esm2015/dropdown/dropdown.component.js +4 -3
  217. package/esm2015/find/find.component.js +18 -8
  218. package/esm2015/find/find.property.js +18 -2
  219. package/esm2015/form/control.component.js +1 -1
  220. package/esm2015/form/form.component.js +6 -5
  221. package/esm2015/form/form.property.js +3 -8
  222. package/esm2015/highlight/highlight.component.js +3 -2
  223. package/esm2015/highlight/highlight.property.js +1 -1
  224. package/esm2015/i18n/i18n.directive.js +3 -2
  225. package/esm2015/icon/icon.component.js +4 -3
  226. package/esm2015/inner/inner.component.js +2 -2
  227. package/esm2015/input/input-group.component.js +2 -4
  228. package/esm2015/input/input.component.js +9 -5
  229. package/esm2015/input/input.property.js +1 -1
  230. package/esm2015/list/list.component.js +5 -4
  231. package/esm2015/list/list.property.js +1 -1
  232. package/esm2015/loading/loading.component.js +3 -2
  233. package/esm2015/menu/menu-node.component.js +1 -1
  234. package/esm2015/menu/menu.component.js +7 -7
  235. package/esm2015/message/message-ref.js +12 -0
  236. package/esm2015/message/message.component.js +4 -4
  237. package/esm2015/message/message.property.js +2 -2
  238. package/esm2015/message/message.service.js +37 -15
  239. package/esm2015/message/public-api.js +2 -1
  240. package/esm2015/message-box/message-box.component.js +17 -21
  241. package/esm2015/message-box/message-box.service.js +7 -5
  242. package/esm2015/notification/notification.component.js +2 -2
  243. package/esm2015/notification/notification.property.js +1 -1
  244. package/esm2015/pagination/pagination.component.js +4 -3
  245. package/esm2015/popconfirm/popconfirm.component.js +25 -4
  246. package/esm2015/popconfirm/popconfirm.property.js +10 -3
  247. package/esm2015/popover/popover.directive.js +10 -3
  248. package/esm2015/popover/popover.property.js +7 -2
  249. package/esm2015/portal/portal.module.js +4 -3
  250. package/esm2015/portal/portal.service.js +8 -9
  251. package/esm2015/progress/progress.component.js +178 -15
  252. package/esm2015/progress/progress.property.js +50 -3
  253. package/esm2015/radio/radio.component.js +4 -3
  254. package/esm2015/radio/radio.property.js +1 -1
  255. package/esm2015/rate/rate.component.js +6 -6
  256. package/esm2015/ripple/ripple.directive.js +1 -1
  257. package/esm2015/ripple/ripple.property.js +1 -1
  258. package/esm2015/select/select-portal.component.js +3 -3
  259. package/esm2015/select/select.component.js +6 -5
  260. package/esm2015/skeleton/skeleton.component.js +3 -2
  261. package/esm2015/slider/slider.component.js +8 -9
  262. package/esm2015/statistic/countdown.component.js +5 -4
  263. package/esm2015/statistic/statistic.component.js +3 -2
  264. package/esm2015/steps/steps.component.js +18 -10
  265. package/esm2015/steps/steps.property.js +8 -3
  266. package/esm2015/table/drag.directive.js +2 -2
  267. package/esm2015/table/table-body.component.js +4 -3
  268. package/esm2015/table/table-foot.component.js +1 -1
  269. package/esm2015/table/table-head.component.js +5 -4
  270. package/esm2015/table/table.component.js +6 -5
  271. package/esm2015/table/table.property.js +1 -1
  272. package/esm2015/tabs/tab.component.js +1 -1
  273. package/esm2015/tabs/tabs.component.js +6 -5
  274. package/esm2015/tag/tag.component.js +3 -2
  275. package/esm2015/text-retract/text-retract.component.js +3 -2
  276. package/esm2015/textarea/textarea.component.js +3 -2
  277. package/esm2015/textarea/textarea.property.js +2 -12
  278. package/esm2015/theme/theme.component.js +3 -3
  279. package/esm2015/theme/theme.property.js +1 -1
  280. package/esm2015/time-picker/time-picker-frame.component.js +9 -5
  281. package/esm2015/time-picker/time-picker-portal.component.js +2 -2
  282. package/esm2015/time-picker/time-picker.component.js +25 -12
  283. package/esm2015/timeline/timeline.component.js +4 -3
  284. package/esm2015/tooltip/tooltip.directive.js +4 -3
  285. package/esm2015/tooltip/tooltip.property.js +1 -1
  286. package/esm2015/transfer/transfer.component.js +4 -3
  287. package/esm2015/tree/tree-node.component.js +2 -2
  288. package/esm2015/tree/tree.component.js +8 -7
  289. package/esm2015/tree/tree.property.js +1 -1
  290. package/esm2015/upload/upload-portal.component.js +2 -2
  291. package/esm2015/upload/upload.component.js +5 -4
  292. package/fesm2015/ng-nest-ui-alert.js +7 -2
  293. package/fesm2015/ng-nest-ui-alert.js.map +1 -1
  294. package/fesm2015/ng-nest-ui-anchor.js +1 -1
  295. package/fesm2015/ng-nest-ui-anchor.js.map +1 -1
  296. package/fesm2015/ng-nest-ui-auto-complete.js +7 -6
  297. package/fesm2015/ng-nest-ui-auto-complete.js.map +1 -1
  298. package/fesm2015/ng-nest-ui-back-top.js +2 -2
  299. package/fesm2015/ng-nest-ui-back-top.js.map +1 -1
  300. package/fesm2015/ng-nest-ui-badge.js +2 -1
  301. package/fesm2015/ng-nest-ui-badge.js.map +1 -1
  302. package/fesm2015/ng-nest-ui-button.js +4 -3
  303. package/fesm2015/ng-nest-ui-button.js.map +1 -1
  304. package/fesm2015/ng-nest-ui-calendar.js +4 -3
  305. package/fesm2015/ng-nest-ui-calendar.js.map +1 -1
  306. package/fesm2015/ng-nest-ui-carousel.js +12 -11
  307. package/fesm2015/ng-nest-ui-carousel.js.map +1 -1
  308. package/fesm2015/ng-nest-ui-cascade.js +9 -9
  309. package/fesm2015/ng-nest-ui-cascade.js.map +1 -1
  310. package/fesm2015/ng-nest-ui-checkbox.js +3 -2
  311. package/fesm2015/ng-nest-ui-checkbox.js.map +1 -1
  312. package/fesm2015/ng-nest-ui-color-picker.js +9 -10
  313. package/fesm2015/ng-nest-ui-color-picker.js.map +1 -1
  314. package/fesm2015/ng-nest-ui-color.js +1 -1
  315. package/fesm2015/ng-nest-ui-color.js.map +1 -1
  316. package/fesm2015/ng-nest-ui-comment.js +3 -2
  317. package/fesm2015/ng-nest-ui-comment.js.map +1 -1
  318. package/fesm2015/ng-nest-ui-container.js +1 -1
  319. package/fesm2015/ng-nest-ui-container.js.map +1 -1
  320. package/fesm2015/ng-nest-ui-core.js +3 -3
  321. package/fesm2015/ng-nest-ui-core.js.map +1 -1
  322. package/fesm2015/ng-nest-ui-crumb.js +3 -2
  323. package/fesm2015/ng-nest-ui-crumb.js.map +1 -1
  324. package/fesm2015/ng-nest-ui-date-picker.js +34 -44
  325. package/fesm2015/ng-nest-ui-date-picker.js.map +1 -1
  326. package/fesm2015/ng-nest-ui-description.js +5 -6
  327. package/fesm2015/ng-nest-ui-description.js.map +1 -1
  328. package/fesm2015/ng-nest-ui-dialog.js +256 -26
  329. package/fesm2015/ng-nest-ui-dialog.js.map +1 -1
  330. package/fesm2015/ng-nest-ui-drawer.js +226 -14
  331. package/fesm2015/ng-nest-ui-drawer.js.map +1 -1
  332. package/fesm2015/ng-nest-ui-dropdown.js +4 -3
  333. package/fesm2015/ng-nest-ui-dropdown.js.map +1 -1
  334. package/fesm2015/ng-nest-ui-find.js +34 -8
  335. package/fesm2015/ng-nest-ui-find.js.map +1 -1
  336. package/fesm2015/ng-nest-ui-form.js +7 -11
  337. package/fesm2015/ng-nest-ui-form.js.map +1 -1
  338. package/fesm2015/ng-nest-ui-highlight.js +2 -1
  339. package/fesm2015/ng-nest-ui-highlight.js.map +1 -1
  340. package/fesm2015/ng-nest-ui-i18n.js +2 -1
  341. package/fesm2015/ng-nest-ui-i18n.js.map +1 -1
  342. package/fesm2015/ng-nest-ui-icon.js +3 -2
  343. package/fesm2015/ng-nest-ui-icon.js.map +1 -1
  344. package/fesm2015/ng-nest-ui-inner.js +1 -1
  345. package/fesm2015/ng-nest-ui-inner.js.map +1 -1
  346. package/fesm2015/ng-nest-ui-input.js +9 -7
  347. package/fesm2015/ng-nest-ui-input.js.map +1 -1
  348. package/fesm2015/ng-nest-ui-list.js +4 -3
  349. package/fesm2015/ng-nest-ui-list.js.map +1 -1
  350. package/fesm2015/ng-nest-ui-loading.js +2 -1
  351. package/fesm2015/ng-nest-ui-loading.js.map +1 -1
  352. package/fesm2015/ng-nest-ui-menu.js +6 -6
  353. package/fesm2015/ng-nest-ui-menu.js.map +1 -1
  354. package/fesm2015/ng-nest-ui-message-box.js +22 -24
  355. package/fesm2015/ng-nest-ui-message-box.js.map +1 -1
  356. package/fesm2015/ng-nest-ui-message.js +51 -18
  357. package/fesm2015/ng-nest-ui-message.js.map +1 -1
  358. package/fesm2015/ng-nest-ui-notification.js +1 -1
  359. package/fesm2015/ng-nest-ui-notification.js.map +1 -1
  360. package/fesm2015/ng-nest-ui-pagination.js +3 -2
  361. package/fesm2015/ng-nest-ui-pagination.js.map +1 -1
  362. package/fesm2015/ng-nest-ui-popconfirm.js +33 -5
  363. package/fesm2015/ng-nest-ui-popconfirm.js.map +1 -1
  364. package/fesm2015/ng-nest-ui-popover.js +15 -3
  365. package/fesm2015/ng-nest-ui-popover.js.map +1 -1
  366. package/fesm2015/ng-nest-ui-portal.js +10 -10
  367. package/fesm2015/ng-nest-ui-portal.js.map +1 -1
  368. package/fesm2015/ng-nest-ui-progress.js +226 -17
  369. package/fesm2015/ng-nest-ui-progress.js.map +1 -1
  370. package/fesm2015/ng-nest-ui-radio.js +3 -2
  371. package/fesm2015/ng-nest-ui-radio.js.map +1 -1
  372. package/fesm2015/ng-nest-ui-rate.js +5 -5
  373. package/fesm2015/ng-nest-ui-rate.js.map +1 -1
  374. package/fesm2015/ng-nest-ui-ripple.js.map +1 -1
  375. package/fesm2015/ng-nest-ui-select.js +7 -6
  376. package/fesm2015/ng-nest-ui-select.js.map +1 -1
  377. package/fesm2015/ng-nest-ui-skeleton.js +2 -1
  378. package/fesm2015/ng-nest-ui-skeleton.js.map +1 -1
  379. package/fesm2015/ng-nest-ui-slider.js +7 -8
  380. package/fesm2015/ng-nest-ui-slider.js.map +1 -1
  381. package/fesm2015/ng-nest-ui-statistic.js +6 -4
  382. package/fesm2015/ng-nest-ui-statistic.js.map +1 -1
  383. package/fesm2015/ng-nest-ui-steps.js +24 -11
  384. package/fesm2015/ng-nest-ui-steps.js.map +1 -1
  385. package/fesm2015/ng-nest-ui-table.js +13 -10
  386. package/fesm2015/ng-nest-ui-table.js.map +1 -1
  387. package/fesm2015/ng-nest-ui-tabs.js +5 -4
  388. package/fesm2015/ng-nest-ui-tabs.js.map +1 -1
  389. package/fesm2015/ng-nest-ui-tag.js +2 -1
  390. package/fesm2015/ng-nest-ui-tag.js.map +1 -1
  391. package/fesm2015/ng-nest-ui-text-retract.js +2 -1
  392. package/fesm2015/ng-nest-ui-text-retract.js.map +1 -1
  393. package/fesm2015/ng-nest-ui-textarea.js +3 -12
  394. package/fesm2015/ng-nest-ui-textarea.js.map +1 -1
  395. package/fesm2015/ng-nest-ui-theme.js +2 -2
  396. package/fesm2015/ng-nest-ui-theme.js.map +1 -1
  397. package/fesm2015/ng-nest-ui-time-picker.js +33 -16
  398. package/fesm2015/ng-nest-ui-time-picker.js.map +1 -1
  399. package/fesm2015/ng-nest-ui-timeline.js +3 -2
  400. package/fesm2015/ng-nest-ui-timeline.js.map +1 -1
  401. package/fesm2015/ng-nest-ui-tooltip.js +3 -2
  402. package/fesm2015/ng-nest-ui-tooltip.js.map +1 -1
  403. package/fesm2015/ng-nest-ui-transfer.js +3 -2
  404. package/fesm2015/ng-nest-ui-transfer.js.map +1 -1
  405. package/fesm2015/ng-nest-ui-tree.js +8 -7
  406. package/fesm2015/ng-nest-ui-tree.js.map +1 -1
  407. package/fesm2015/ng-nest-ui-upload.js +5 -4
  408. package/fesm2015/ng-nest-ui-upload.js.map +1 -1
  409. package/find/find.component.d.ts +1 -1
  410. package/find/find.property.d.ts +31 -1
  411. package/form/control.component.d.ts +1 -1
  412. package/form/form.component.d.ts +1 -1
  413. package/form/form.property.d.ts +6 -6
  414. package/inner/inner.component.d.ts +1 -1
  415. package/input/input-group.component.d.ts +2 -4
  416. package/list/list.component.d.ts +2 -2
  417. package/menu/menu.component.d.ts +1 -1
  418. package/message/message-ref.d.ts +8 -0
  419. package/message/message.component.d.ts +3 -3
  420. package/message/message.property.d.ts +24 -4
  421. package/message/message.service.d.ts +4 -1
  422. package/message/public-api.d.ts +1 -0
  423. package/message-box/message-box.component.d.ts +2 -1
  424. package/notification/notification.component.d.ts +1 -1
  425. package/package.json +1 -1
  426. package/pagination/pagination.component.d.ts +1 -1
  427. package/popconfirm/popconfirm.component.d.ts +6 -2
  428. package/popconfirm/popconfirm.property.d.ts +13 -2
  429. package/popover/popover.property.d.ts +6 -1
  430. package/portal/portal.module.d.ts +1 -1
  431. package/portal/portal.service.d.ts +2 -3
  432. package/progress/progress.component.d.ts +31 -3
  433. package/progress/progress.property.d.ts +80 -5
  434. package/radio/radio.component.d.ts +1 -1
  435. package/rate/rate.component.d.ts +5 -5
  436. package/select/select-portal.component.d.ts +1 -3
  437. package/select/select.component.d.ts +1 -1
  438. package/slider/slider.component.d.ts +1 -1
  439. package/steps/steps.component.d.ts +1 -1
  440. package/steps/steps.property.d.ts +7 -2
  441. package/table/table-body.component.d.ts +1 -1
  442. package/table/table-head.component.d.ts +1 -1
  443. package/table/table.component.d.ts +1 -1
  444. package/table/table.property.d.ts +11 -1
  445. package/textarea/textarea.property.d.ts +1 -6
  446. package/theme/theme.component.d.ts +1 -1
  447. package/time-picker/time-picker-frame.component.d.ts +1 -0
  448. package/time-picker/time-picker-portal.component.d.ts +1 -3
  449. package/time-picker/time-picker.component.d.ts +5 -3
  450. package/timeline/timeline.component.d.ts +1 -1
  451. package/transfer/transfer.component.d.ts +1 -1
  452. package/tree/tree-node.component.d.ts +1 -1
  453. package/tree/tree.component.d.ts +1 -1
  454. package/upload/upload.component.d.ts +3 -3
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Component, ViewEncapsulation, ChangeDetectionStrategy, Injectable, NgModule } from '@angular/core';
3
3
  import * as i2$1 from '@ng-nest/ui/core';
4
- import { XIsEmpty, XMoveAnimation, XIsString, XIsXTemplate, fillDefault } from '@ng-nest/ui/core';
4
+ import { XIsEmpty, XMoveAnimation, XIsString, XIsXTemplate, fillDefault, XIsUndefined } from '@ng-nest/ui/core';
5
5
  import { of } from 'rxjs';
6
6
  import { delay } from 'rxjs/operators';
7
7
  import * as i1 from '@ng-nest/ui/alert';
@@ -18,14 +18,14 @@ import { XPortalModule } from '@ng-nest/ui/portal';
18
18
  */
19
19
  const XMessagePrefix = 'x-message';
20
20
  const XMessagePortal = 'x-message-portal';
21
- const X_CONFIG_NAME = 'message';
21
+ const X_MESSAGE_CONFIG_NAME = 'message';
22
22
 
23
23
  class XMessageComponent {
24
24
  constructor(renderer, elementRef, cdr) {
25
25
  this.renderer = renderer;
26
26
  this.elementRef = elementRef;
27
27
  this.cdr = cdr;
28
- this.message = { ref: {}, list: [], currentClose: () => { }, closeAll: () => { } };
28
+ this.message = { ref: {}, list: [], closeAll: () => { } };
29
29
  }
30
30
  onClose(item) {
31
31
  var _a, _b;
@@ -50,8 +50,8 @@ class XMessageComponent {
50
50
  .subscribe(() => this.onClose(item));
51
51
  }
52
52
  }
53
- trackByNode(index, item) {
54
- return `${item.title}-${item.content}`;
53
+ trackByNode(_index, item) {
54
+ return item.id;
55
55
  }
56
56
  }
57
57
  /** @nocollapse */ XMessageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: XMessageComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
@@ -68,6 +68,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImpor
68
68
  }]
69
69
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; } });
70
70
 
71
+ // TODO: add more function
72
+ class XMessageRef {
73
+ constructor(option) {
74
+ this.close = () => { };
75
+ this.closeAll = () => { };
76
+ this.update = (_option) => { };
77
+ if (!option.id)
78
+ option.id = `${new Date().getTime()}`;
79
+ this.option = option;
80
+ }
81
+ }
82
+
71
83
  class XMessageService {
72
84
  constructor(portal, configService) {
73
85
  this.portal = portal;
@@ -85,7 +97,7 @@ class XMessageService {
85
97
  showIcon: true,
86
98
  hide: false
87
99
  };
88
- this.configDefault = this.configService.getConfigForComponent(X_CONFIG_NAME);
100
+ this.configDefault = this.configService.getConfigForComponent(X_MESSAGE_CONFIG_NAME);
89
101
  Object.assign(this.default, this.configDefault);
90
102
  }
91
103
  info(option) {
@@ -100,6 +112,9 @@ class XMessageService {
100
112
  error(option) {
101
113
  return this.createMessage(option, 'error');
102
114
  }
115
+ loading(option) {
116
+ return this.createMessage(option, 'loading');
117
+ }
103
118
  create(option) {
104
119
  const offset = XIsString(option.offset) ? [option.offset] : option.offset;
105
120
  return this.portal.attach({
@@ -120,7 +135,22 @@ class XMessageService {
120
135
  opt.type = type;
121
136
  }
122
137
  fillDefault(opt, this.default);
123
- return this.createMessagePlacement(opt);
138
+ const ref = new XMessageRef(opt);
139
+ if (XIsUndefined(opt.placement)) {
140
+ return ref;
141
+ }
142
+ ref.close = () => {
143
+ this.removeMessage(opt);
144
+ };
145
+ ref.closeAll = () => {
146
+ this.closeAll();
147
+ };
148
+ ref.update = (_opt) => {
149
+ this.updateMessage(_opt, opt);
150
+ };
151
+ this.setDuration(opt);
152
+ this.createMessagePlacement(opt);
153
+ return ref;
124
154
  }
125
155
  closeAll(excludeOption) {
126
156
  for (let key in this.messages) {
@@ -131,28 +161,22 @@ class XMessageService {
131
161
  }
132
162
  createMessagePlacement(option) {
133
163
  var _a, _b;
134
- if (typeof option.placement === 'undefined')
135
- return { ref: {}, list: [], currentClose: () => { }, closeAll: () => { } };
136
164
  let msgPlacement = this.messages[option.placement];
137
- this.setDuration(option);
138
165
  if (XIsEmpty(msgPlacement) || !((_b = (_a = msgPlacement.ref) === null || _a === void 0 ? void 0 : _a.overlayRef) === null || _b === void 0 ? void 0 : _b.hasAttached())) {
139
166
  this.messages[option.placement] = {
140
167
  ref: this.create(option),
141
168
  list: [option],
142
- currentClose: () => {
143
- this.removeMessage(option);
144
- },
145
169
  closeAll: () => {
146
170
  this.closeAll();
147
171
  }
148
172
  };
173
+ msgPlacement = this.messages[option.placement];
149
174
  }
150
175
  else {
151
- this.messages[option.placement].list = [...this.messages[option.placement].list, option];
176
+ msgPlacement.list = [...this.messages[option.placement].list, option];
152
177
  }
153
- this.messageChange(this.messages[option.placement]);
178
+ this.messageChange(msgPlacement);
154
179
  option.displayType === 'single' && this.closeAll(option);
155
- return this.messages[option.placement];
156
180
  }
157
181
  messageChange(message) {
158
182
  var _a, _b, _c, _d;
@@ -162,7 +186,7 @@ class XMessageService {
162
186
  message.ref.componentRef.instance.cdr.detectChanges();
163
187
  }
164
188
  setDuration(option) {
165
- if (option.duration) {
189
+ if (option.duration && option.type !== 'loading') {
166
190
  option.duration$ = of(true)
167
191
  .pipe(delay(option.duration))
168
192
  .subscribe(() => {
@@ -176,6 +200,15 @@ class XMessageService {
176
200
  return;
177
201
  (_b = (_a = this.messages[option.placement].ref) === null || _a === void 0 ? void 0 : _a.componentRef) === null || _b === void 0 ? void 0 : _b.instance.onClose(option);
178
202
  }
203
+ updateMessage(newOption, oldOption) {
204
+ var _a;
205
+ Object.assign(oldOption, newOption);
206
+ this.setDuration(oldOption);
207
+ const refs = this.messages[oldOption.placement];
208
+ if (refs) {
209
+ (_a = refs.ref.componentRef) === null || _a === void 0 ? void 0 : _a.instance.cdr.detectChanges();
210
+ }
211
+ }
179
212
  }
180
213
  /** @nocollapse */ XMessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: XMessageService, deps: [{ token: i1$1.XPortalService }, { token: i2$1.XConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
181
214
  /** @nocollapse */ XMessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: XMessageService });
@@ -202,5 +235,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImpor
202
235
  * Generated bundle index. Do not edit.
203
236
  */
204
237
 
205
- export { XMessageComponent, XMessageModule, XMessagePortal, XMessagePrefix, XMessageService, X_CONFIG_NAME };
238
+ export { XMessageComponent, XMessageModule, XMessagePortal, XMessagePrefix, XMessageRef, XMessageService, X_MESSAGE_CONFIG_NAME };
206
239
  //# sourceMappingURL=ng-nest-ui-message.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-message.js","sources":["../../../../lib/ng-nest/ui/message/message.property.ts","../../../../lib/ng-nest/ui/message/message.component.ts","../../../../lib/ng-nest/ui/message/message.component.html","../../../../lib/ng-nest/ui/message/message.service.ts","../../../../lib/ng-nest/ui/message/message.module.ts","../../../../lib/ng-nest/ui/message/ng-nest-ui-message.ts"],"sourcesContent":["import { XStatus, XPlace } from '@ng-nest/ui/core';\r\nimport { XAlertOption } from '@ng-nest/ui/alert';\r\nimport { Subscription, Subject } from 'rxjs';\r\nimport { XPortalOverlayRef } from '@ng-nest/ui/portal';\r\nimport { XMessageComponent } from './message.component';\r\n\r\n/**\r\n * Message\r\n * @selector x-message\r\n * @decorator component\r\n */\r\nexport const XMessagePrefix = 'x-message';\r\n\r\nexport const XMessagePortal = 'x-message-portal';\r\nexport const X_CONFIG_NAME = 'message';\r\n\r\n/**\r\n * Message Option\r\n */\r\nexport interface XMessageOption extends XAlertOption {\r\n /**\r\n * @zh_CN 方位,九宫格\r\n * @en_US Direction, nine grid\r\n * @default 'top'\r\n * @withConfig true\r\n */\r\n placement?: XPlace;\r\n /**\r\n * @zh_CN 偏移距离\r\n * @en_US Offset distance\r\n * @default '2rem'\r\n * @withConfig true\r\n */\r\n offset?: string | string[];\r\n /**\r\n * @zh_CN 类型\r\n * @en_US Types of\r\n * @default 'info'\r\n * @withConfig true\r\n */\r\n type?: XMessageType;\r\n /**\r\n * @zh_CN 多个消息的时候,显示类型\r\n * @en_US When multiple messages, the display type\r\n * @default 'list'\r\n * @withConfig true\r\n */\r\n displayType?: XMessageDisplayType;\r\n /**\r\n * @zh_CN 宽度\r\n * @en_US Width\r\n * @default '16rem'\r\n * @withConfig true\r\n */\r\n width?: string;\r\n /**\r\n * @zh_CN 高度\r\n * @en_US Height\r\n */\r\n height?: string;\r\n /**\r\n * @zh_CN 延迟关闭时间\r\n * @en_US Delay off time\r\n * @default 3000\r\n * @withConfig true\r\n */\r\n duration?: number;\r\n /**\r\n * @zh_CN 隐藏关闭按钮\r\n * @en_US Hide close button\r\n * @default true\r\n * @withConfig true\r\n */\r\n hideClose?: boolean;\r\n /**\r\n * @zh_CN 显示图标\r\n * @en_US Show icon\r\n * @default true\r\n * @withConfig true\r\n */\r\n showIcon?: boolean;\r\n /**\r\n * @zh_CN 延迟关闭订阅后的对象,用来释放或取消\r\n * @en_US Delayed closing the subscribed object, used to release or cancel\r\n */\r\n duration$?: Subscription | null;\r\n /**\r\n * @zh_CN 延迟关闭订阅对象\r\n * @en_US Delay in closing the subscription object\r\n */\r\n durationSub?: Subject<any>;\r\n}\r\n\r\n/**\r\n * @zh_CN 创建的消息对象\r\n * @en_US Message object created\r\n */\r\nexport interface XMessageOverlayRef extends XPortalOverlayRef<XMessageComponent> {}\r\n\r\n/**\r\n * @zh_CN 九宫格中的消息对象\r\n * @en_US Message object in Jiugongge\r\n */\r\nexport interface XMessagePlacement {\r\n [property: string]: XMessageRef;\r\n}\r\n\r\nexport interface XMessageRef {\r\n ref: XMessageOverlayRef;\r\n list: XMessageOption[];\r\n currentClose: () => void;\r\n closeAll: () => void;\r\n}\r\n\r\n/**\r\n * @zh_CN 类型\r\n * @en_US Types of\r\n */\r\nexport type XMessageType = XStatus;\r\n\r\n/**\r\n * @zh_CN 多个消息的时候,显示类型\r\n * @en_US When multiple messages, the display type\r\n */\r\nexport type XMessageDisplayType = 'list' | 'single';\r\n","import { Component, ViewEncapsulation, Renderer2, ElementRef, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { XMoveAnimation, XIsEmpty } from '@ng-nest/ui/core';\r\nimport { XMessagePrefix, XMessageOption, XMessageRef } from './message.property';\r\nimport { of } from 'rxjs';\r\nimport { delay } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: `${XMessagePrefix}`,\r\n templateUrl: './message.component.html',\r\n styleUrls: ['./message.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [XMoveAnimation]\r\n})\r\nexport class XMessageComponent {\r\n message: XMessageRef = { ref: {}, list: [], currentClose: () => {}, closeAll: () => {} };\r\n\r\n constructor(public renderer: Renderer2, public elementRef: ElementRef, public cdr: ChangeDetectorRef) {}\r\n\r\n onClose(item: XMessageOption) {\r\n this.message.list?.splice(this.message.list.indexOf(item), 1);\r\n item.duration$?.unsubscribe();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n moveDone($event: { toState: string }) {\r\n if ($event.toState === 'void' && XIsEmpty(this.message.list)) {\r\n this.message.ref?.overlayRef?.detach();\r\n }\r\n }\r\n\r\n onEnter(item: XMessageOption) {\r\n item.duration$?.unsubscribe();\r\n }\r\n\r\n onLeave(item: XMessageOption) {\r\n if (item.duration) {\r\n item.duration$ = of(true)\r\n .pipe(delay(item.duration))\r\n .subscribe(() => this.onClose(item));\r\n }\r\n }\r\n\r\n trackByNode(index: number, item: XMessageOption) {\r\n return `${item.title}-${item.content}`;\r\n }\r\n}\r\n","<div class=\"x-message\">\r\n <ng-container *ngFor=\"let item of message.list; trackBy: trackByNode\">\r\n <x-alert\r\n [@x-move-animation]=\"item.placement\"\r\n (@x-move-animation.done)=\"moveDone($event)\"\r\n (mouseenter)=\"onEnter(item)\"\r\n (mouseleave)=\"onLeave(item)\"\r\n (close)=\"onClose(item)\"\r\n [hide]=\"item.hide\"\r\n [title]=\"item.title\"\r\n [content]=\"item.content\"\r\n [type]=\"item.type\"\r\n [effect]=\"item.effect\"\r\n [hideClose]=\"item.hideClose\"\r\n [closeText]=\"item.closeText\"\r\n [showIcon]=\"item.showIcon\"\r\n duration=\"0\"\r\n manual\r\n disabledAnimation\r\n ></x-alert>\r\n </ng-container>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { XTemplate, XIsXTemplate, XIsEmpty, fillDefault, XIsString, XConfigService, XMessageConfig } from '@ng-nest/ui/core';\r\nimport {\r\n XMessageOverlayRef,\r\n XMessageType,\r\n XMessagePlacement,\r\n XMessageRef,\r\n XMessagePortal,\r\n XMessageOption,\r\n X_CONFIG_NAME\r\n} from './message.property';\r\nimport { XMessageComponent } from './message.component';\r\nimport { of } from 'rxjs';\r\nimport { delay } from 'rxjs/operators';\r\nimport { XPortalService } from '@ng-nest/ui/portal';\r\n\r\n@Injectable()\r\nexport class XMessageService {\r\n messages: XMessagePlacement = {};\r\n\r\n default: XMessageOption = {\r\n type: 'info',\r\n width: '16rem',\r\n placement: 'top',\r\n offset: '2rem',\r\n effect: 'white',\r\n displayType: 'list',\r\n duration: 3000,\r\n hideClose: true,\r\n showIcon: true,\r\n hide: false\r\n };\r\n\r\n configDefault?: XMessageConfig;\r\n\r\n constructor(public portal: XPortalService, public configService: XConfigService) {\r\n this.configDefault = this.configService.getConfigForComponent(X_CONFIG_NAME);\r\n Object.assign(this.default, this.configDefault);\r\n }\r\n\r\n info(option: XTemplate | XMessageOption): XMessageRef {\r\n return this.createMessage(option, 'info');\r\n }\r\n\r\n success(option: XTemplate | XMessageOption): XMessageRef {\r\n return this.createMessage(option, 'success');\r\n }\r\n\r\n warning(option: XTemplate | XMessageOption): XMessageRef {\r\n return this.createMessage(option, 'warning');\r\n }\r\n\r\n error(option: XTemplate | XMessageOption): XMessageRef {\r\n return this.createMessage(option, 'error');\r\n }\r\n\r\n create(option: XMessageOption): XMessageOverlayRef {\r\n const offset = XIsString(option.offset) ? [option.offset as string] : (option.offset as string[]);\r\n\r\n return this.portal.attach({\r\n content: XMessageComponent,\r\n overlayConfig: {\r\n panelClass: XMessagePortal,\r\n positionStrategy: this.portal.setPlace(option.placement, option.width, option.height, ...offset)\r\n }\r\n });\r\n }\r\n\r\n private createMessage(option: XTemplate | XMessageOption, type: XMessageType): XMessageRef {\r\n let opt: XMessageOption;\r\n if (XIsXTemplate(option)) {\r\n opt = { title: option as XTemplate, type: type };\r\n } else {\r\n opt = option as XMessageOption;\r\n opt.type = type;\r\n }\r\n fillDefault(opt, this.default);\r\n return this.createMessagePlacement(opt);\r\n }\r\n\r\n private closeAll(excludeOption?: XMessageOption) {\r\n for (let key in this.messages) {\r\n for (let option of this.messages[key].list) {\r\n option !== excludeOption && this.removeMessage(option);\r\n }\r\n }\r\n }\r\n\r\n private createMessagePlacement(option: XMessageOption): XMessageRef {\r\n if (typeof option.placement === 'undefined') return { ref: {}, list: [], currentClose: () => {}, closeAll: () => {} };\r\n let msgPlacement = this.messages[option.placement];\r\n this.setDuration(option);\r\n if (XIsEmpty(msgPlacement) || !msgPlacement.ref?.overlayRef?.hasAttached()) {\r\n this.messages[option.placement] = {\r\n ref: this.create(option),\r\n list: [option],\r\n currentClose: () => {\r\n this.removeMessage(option);\r\n },\r\n closeAll: () => {\r\n this.closeAll();\r\n }\r\n };\r\n } else {\r\n this.messages[option.placement].list = [...(this.messages[option.placement].list as XMessageOption[]), option];\r\n }\r\n this.messageChange(this.messages[option.placement]);\r\n\r\n option.displayType === 'single' && this.closeAll(option);\r\n\r\n return this.messages[option.placement];\r\n }\r\n\r\n private messageChange(message: XMessageRef) {\r\n if (!message.ref?.overlayRef?.hasAttached() || !message?.ref?.componentRef?.instance) return;\r\n message.ref.componentRef.instance.message = message;\r\n message.ref.componentRef.instance.cdr.detectChanges();\r\n }\r\n\r\n private setDuration(option: XMessageOption) {\r\n if (option.duration) {\r\n option.duration$ = of(true)\r\n .pipe(delay(option.duration))\r\n .subscribe(() => {\r\n this.removeMessage(option);\r\n });\r\n }\r\n }\r\n\r\n private removeMessage(option: XMessageOption) {\r\n if (typeof option.placement === 'undefined') return;\r\n this.messages[option.placement].ref?.componentRef?.instance.onClose(option);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XMessageComponent } from './message.component';\r\nimport { XAlertModule } from '@ng-nest/ui/alert';\r\nimport { XMessageService } from './message.service';\r\nimport { XPortalModule } from '@ng-nest/ui/portal';\r\n\r\n@NgModule({\r\n declarations: [XMessageComponent],\r\n exports: [XMessageComponent],\r\n imports: [CommonModule, XPortalModule, XAlertModule],\r\n providers: [XMessageService]\r\n})\r\nexport class XMessageModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-nest-ui-message.js","sources":["../../../../lib/ng-nest/ui/message/message.property.ts","../../../../lib/ng-nest/ui/message/message.component.ts","../../../../lib/ng-nest/ui/message/message.component.html","../../../../lib/ng-nest/ui/message/message-ref.ts","../../../../lib/ng-nest/ui/message/message.service.ts","../../../../lib/ng-nest/ui/message/message.module.ts","../../../../lib/ng-nest/ui/message/ng-nest-ui-message.ts"],"sourcesContent":["import { XStatus, XPlace } from '@ng-nest/ui/core';\r\nimport { XAlertOption } from '@ng-nest/ui/alert';\r\nimport { Subscription, Subject } from 'rxjs';\r\nimport { XPortalOverlayRef } from '@ng-nest/ui/portal';\r\nimport { XMessageComponent } from './message.component';\r\n\r\n/**\r\n * Message\r\n * @selector x-message\r\n * @decorator component\r\n */\r\nexport const XMessagePrefix = 'x-message';\r\nexport const XMessagePortal = 'x-message-portal';\r\nexport const X_MESSAGE_CONFIG_NAME = 'message';\r\n\r\n/**\r\n * Message Option\r\n */\r\nexport interface XMessageOption extends XAlertOption {\r\n /**\r\n * @zh_CN 消息框的 id\r\n * @en_US Message id\r\n */\r\n id?: string;\r\n /**\r\n * @zh_CN 方位,九宫格\r\n * @en_US Direction, nine grid\r\n * @default 'top'\r\n * @withConfig true\r\n */\r\n placement?: XPlace;\r\n /**\r\n * @zh_CN 偏移距离\r\n * @en_US Offset distance\r\n * @default '2rem'\r\n * @withConfig true\r\n */\r\n offset?: string | string[];\r\n /**\r\n * @zh_CN 类型\r\n * @en_US Types of\r\n * @default 'info'\r\n * @withConfig true\r\n */\r\n type?: XMessageType;\r\n /**\r\n * @zh_CN 多个消息的时候,显示类型\r\n * @en_US When multiple messages, the display type\r\n * @default 'list'\r\n * @withConfig true\r\n */\r\n displayType?: XMessageDisplayType;\r\n /**\r\n * @zh_CN 宽度\r\n * @en_US Width\r\n * @default '16rem'\r\n * @withConfig true\r\n */\r\n width?: string;\r\n /**\r\n * @zh_CN 高度\r\n * @en_US Height\r\n */\r\n height?: string;\r\n /**\r\n * @zh_CN 延迟关闭时间\r\n * @en_US Delay off time\r\n * @default 3000\r\n * @withConfig true\r\n */\r\n duration?: number;\r\n /**\r\n * @zh_CN 隐藏关闭按钮\r\n * @en_US Hide close button\r\n * @default true\r\n * @withConfig true\r\n */\r\n hideClose?: boolean;\r\n /**\r\n * @zh_CN 显示图标\r\n * @en_US Show icon\r\n * @default true\r\n * @withConfig true\r\n */\r\n showIcon?: boolean;\r\n /**\r\n * @zh_CN 延迟关闭订阅后的对象,用来释放或取消\r\n * @en_US Delayed closing the subscribed object, used to release or cancel\r\n */\r\n duration$?: Subscription | null;\r\n /**\r\n * @zh_CN 延迟关闭订阅对象\r\n * @en_US Delay in closing the subscription object\r\n */\r\n durationSub?: Subject<any>;\r\n}\r\n\r\n/**\r\n * @zh_CN 创建的消息对象\r\n * @en_US Message object created\r\n */\r\nexport interface XMessageOverlayRef extends XPortalOverlayRef<XMessageComponent> {}\r\n\r\n/**\r\n * @zh_CN 九宫格中的消息对象\r\n * @en_US Message object in Jiugongge\r\n */\r\nexport interface XMessagePlacement {\r\n [property: string]: XMessagePlacementRef;\r\n}\r\n\r\n/**\r\n * @zh_CN 九宫格中的消息对象\r\n * @en_US Message object in Jiugongge\r\n */\r\nexport interface XMessagePlacementRef {\r\n /**\r\n * @zh_CN 方位对应的 overlayRef\r\n * @en_US Placement overlayRef\r\n */\r\n ref: XMessageOverlayRef;\r\n /**\r\n * @zh_CN 对应的消息 list 数据\r\n * @en_US Corresponding message list data\r\n */\r\n list: XMessageOption[];\r\n /**\r\n * @zh_CN 关闭所有数据\r\n * @en_US Close all data\r\n */\r\n closeAll: () => void;\r\n}\r\n\r\n/**\r\n * @zh_CN 类型\r\n * @en_US Types of\r\n */\r\nexport type XMessageType = XStatus;\r\n\r\n/**\r\n * @zh_CN 多个消息的时候,显示类型\r\n * @en_US When multiple messages, the display type\r\n */\r\nexport type XMessageDisplayType = 'list' | 'single';\r\n","import { Component, ViewEncapsulation, Renderer2, ElementRef, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { XMoveAnimation, XIsEmpty } from '@ng-nest/ui/core';\r\nimport { XMessagePrefix, XMessageOption, XMessagePlacementRef } from './message.property';\r\nimport { of } from 'rxjs';\r\nimport { delay } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: `${XMessagePrefix}`,\r\n templateUrl: './message.component.html',\r\n styleUrls: ['./message.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [XMoveAnimation]\r\n})\r\nexport class XMessageComponent {\r\n message: XMessagePlacementRef = { ref: {}, list: [], closeAll: () => {} };\r\n\r\n constructor(public renderer: Renderer2, public elementRef: ElementRef, public cdr: ChangeDetectorRef) {}\r\n\r\n onClose(item: XMessageOption) {\r\n this.message.list?.splice(this.message.list.indexOf(item), 1);\r\n item.duration$?.unsubscribe();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n moveDone($event: { toState: string }) {\r\n if ($event.toState === 'void' && XIsEmpty(this.message.list)) {\r\n this.message.ref?.overlayRef?.detach();\r\n }\r\n }\r\n\r\n onEnter(item: XMessageOption) {\r\n item.duration$?.unsubscribe();\r\n }\r\n\r\n onLeave(item: XMessageOption) {\r\n if (item.duration) {\r\n item.duration$ = of(true)\r\n .pipe(delay(item.duration))\r\n .subscribe(() => this.onClose(item));\r\n }\r\n }\r\n\r\n trackByNode(_index: number, item: XMessageOption) {\r\n return item.id;\r\n }\r\n}\r\n","<div class=\"x-message\">\r\n <ng-container *ngFor=\"let item of message.list; trackBy: trackByNode\">\r\n <x-alert\r\n [@x-move-animation]=\"item.placement\"\r\n (@x-move-animation.done)=\"moveDone($event)\"\r\n (mouseenter)=\"onEnter(item)\"\r\n (mouseleave)=\"onLeave(item)\"\r\n (close)=\"onClose(item)\"\r\n [hide]=\"item.hide\"\r\n [title]=\"item.title\"\r\n [content]=\"item.content\"\r\n [type]=\"item.type\"\r\n [effect]=\"item.effect\"\r\n [hideClose]=\"item.hideClose\"\r\n [closeText]=\"item.closeText\"\r\n [showIcon]=\"item.showIcon\"\r\n duration=\"0\"\r\n manual\r\n disabledAnimation\r\n ></x-alert>\r\n </ng-container>\r\n</div>\r\n","import { XMessageOption } from './message.property';\r\n\r\n// TODO: add more function\r\nexport class XMessageRef {\r\n option: XMessageOption;\r\n constructor(option: XMessageOption) {\r\n if (!option.id) option.id = `${new Date().getTime()}`;\r\n this.option = option;\r\n }\r\n close = () => {};\r\n closeAll = () => {};\r\n update = (_option: XMessageOption) => {};\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { XTemplate, XIsXTemplate, XIsEmpty, fillDefault, XIsString, XConfigService, XMessageConfig, XIsUndefined } from '@ng-nest/ui/core';\r\nimport {\r\n XMessageOverlayRef,\r\n XMessageType,\r\n XMessagePlacement,\r\n XMessagePortal,\r\n XMessageOption,\r\n X_MESSAGE_CONFIG_NAME,\r\n XMessagePlacementRef\r\n} from './message.property';\r\nimport { XMessageComponent } from './message.component';\r\nimport { of } from 'rxjs';\r\nimport { delay } from 'rxjs/operators';\r\nimport { XPortalService } from '@ng-nest/ui/portal';\r\nimport { XMessageRef } from './message-ref';\r\n\r\n@Injectable()\r\nexport class XMessageService {\r\n messages: XMessagePlacement = {};\r\n\r\n default: XMessageOption = {\r\n type: 'info',\r\n width: '16rem',\r\n placement: 'top',\r\n offset: '2rem',\r\n effect: 'white',\r\n displayType: 'list',\r\n duration: 3000,\r\n hideClose: true,\r\n showIcon: true,\r\n hide: false\r\n };\r\n\r\n configDefault?: XMessageConfig;\r\n\r\n constructor(public portal: XPortalService, public configService: XConfigService) {\r\n this.configDefault = this.configService.getConfigForComponent(X_MESSAGE_CONFIG_NAME);\r\n Object.assign(this.default, this.configDefault);\r\n }\r\n\r\n info(option: XTemplate | XMessageOption): XMessageRef {\r\n return this.createMessage(option, 'info');\r\n }\r\n\r\n success(option: XTemplate | XMessageOption): XMessageRef {\r\n return this.createMessage(option, 'success');\r\n }\r\n\r\n warning(option: XTemplate | XMessageOption): XMessageRef {\r\n return this.createMessage(option, 'warning');\r\n }\r\n\r\n error(option: XTemplate | XMessageOption): XMessageRef {\r\n return this.createMessage(option, 'error');\r\n }\r\n\r\n loading(option: XTemplate | XMessageOption): XMessageRef {\r\n return this.createMessage(option, 'loading');\r\n }\r\n\r\n create(option: XMessageOption): XMessageOverlayRef {\r\n const offset = XIsString(option.offset) ? [option.offset as string] : (option.offset as string[]);\r\n return this.portal.attach({\r\n content: XMessageComponent,\r\n overlayConfig: {\r\n panelClass: XMessagePortal,\r\n positionStrategy: this.portal.setPlace(option.placement, option.width, option.height, ...offset)\r\n }\r\n });\r\n }\r\n\r\n private createMessage(option: XTemplate | XMessageOption, type: XMessageType): XMessageRef {\r\n let opt: XMessageOption;\r\n if (XIsXTemplate(option)) {\r\n opt = { title: option as XTemplate, type: type };\r\n } else {\r\n opt = option as XMessageOption;\r\n opt.type = type;\r\n }\r\n fillDefault(opt, this.default);\r\n const ref = new XMessageRef(opt);\r\n if (XIsUndefined(opt.placement)) {\r\n return ref;\r\n }\r\n ref.close = () => {\r\n this.removeMessage(opt);\r\n };\r\n ref.closeAll = () => {\r\n this.closeAll();\r\n };\r\n ref.update = (_opt) => {\r\n this.updateMessage(_opt, opt);\r\n };\r\n this.setDuration(opt);\r\n this.createMessagePlacement(opt);\r\n\r\n return ref;\r\n }\r\n\r\n private closeAll(excludeOption?: XMessageOption) {\r\n for (let key in this.messages) {\r\n for (let option of this.messages[key].list) {\r\n option !== excludeOption && this.removeMessage(option);\r\n }\r\n }\r\n }\r\n\r\n private createMessagePlacement(option: XMessageOption) {\r\n let msgPlacement = this.messages[option.placement!];\r\n if (XIsEmpty(msgPlacement) || !msgPlacement.ref?.overlayRef?.hasAttached()) {\r\n this.messages[option.placement!] = {\r\n ref: this.create(option),\r\n list: [option],\r\n closeAll: () => {\r\n this.closeAll();\r\n }\r\n };\r\n msgPlacement = this.messages[option.placement!];\r\n } else {\r\n msgPlacement.list = [...(this.messages[option.placement!].list as XMessageOption[]), option];\r\n }\r\n this.messageChange(msgPlacement);\r\n\r\n option.displayType === 'single' && this.closeAll(option);\r\n }\r\n\r\n private messageChange(message: XMessagePlacementRef) {\r\n if (!message.ref?.overlayRef?.hasAttached() || !message?.ref?.componentRef?.instance) return;\r\n message.ref.componentRef.instance.message = message;\r\n message.ref.componentRef.instance.cdr.detectChanges();\r\n }\r\n\r\n private setDuration(option: XMessageOption) {\r\n if (option.duration && option.type !== 'loading') {\r\n option.duration$ = of(true)\r\n .pipe(delay(option.duration))\r\n .subscribe(() => {\r\n this.removeMessage(option);\r\n });\r\n }\r\n }\r\n\r\n private removeMessage(option: XMessageOption) {\r\n if (typeof option.placement === 'undefined') return;\r\n this.messages[option.placement].ref?.componentRef?.instance.onClose(option);\r\n }\r\n\r\n private updateMessage(newOption: XMessageOption, oldOption: XMessageOption) {\r\n Object.assign(oldOption, newOption);\r\n this.setDuration(oldOption);\r\n const refs = this.messages[oldOption.placement!];\r\n if (refs) {\r\n refs.ref.componentRef?.instance.cdr.detectChanges();\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XMessageComponent } from './message.component';\r\nimport { XAlertModule } from '@ng-nest/ui/alert';\r\nimport { XMessageService } from './message.service';\r\nimport { XPortalModule } from '@ng-nest/ui/portal';\r\n\r\n@NgModule({\r\n declarations: [XMessageComponent],\r\n exports: [XMessageComponent],\r\n imports: [CommonModule, XPortalModule, XAlertModule],\r\n providers: [XMessageService]\r\n})\r\nexport class XMessageModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -49,7 +49,7 @@ class XNotificationComponent {
49
49
  });
50
50
  }
51
51
  }
52
- trackByItem(index, item) {
52
+ trackByItem(_index, item) {
53
53
  return `${item.title}-${item.content}`;
54
54
  }
55
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-notification.js","sources":["../../../../lib/ng-nest/ui/notification/notification.property.ts","../../../../lib/ng-nest/ui/notification/notification.component.ts","../../../../lib/ng-nest/ui/notification/notification.component.html","../../../../lib/ng-nest/ui/notification/notification.service.ts","../../../../lib/ng-nest/ui/notification/notification.module.ts","../../../../lib/ng-nest/ui/notification/ng-nest-ui-notification.ts"],"sourcesContent":["import { ComponentRef } from '@angular/core';\r\nimport { XStatus, XCorner } from '@ng-nest/ui/core';\r\nimport { XAlertOption } from '@ng-nest/ui/alert';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { XNotificationComponent } from './notification.component';\r\nimport { XPortalOverlayRef } from '@ng-nest/ui/portal';\r\nimport { Subscription, Subject } from 'rxjs';\r\n\r\n/**\r\n * Notification\r\n * @selector x-notification\r\n * @decorator component\r\n */\r\nexport const XNotificationPrefix = 'x-notification';\r\n\r\nexport const XNotificationPortal = 'x-notification-portal';\r\n\r\n/**\r\n * Notification Option\r\n */\r\nexport interface XNotificationOption extends XAlertOption {\r\n /**\r\n * @zh_CN 方位\r\n * @en_US Placement\r\n * @default 'top-end'\r\n */\r\n placement?: XCorner;\r\n /**\r\n * @zh_CN 偏移距离\r\n * @en_US Offset distance\r\n * @default '0.5rem'\r\n */\r\n offset?: string | string[];\r\n /**\r\n * @zh_CN 类型\r\n * @en_US Types of\r\n * @default 'info'\r\n */\r\n type?: XNotificationType;\r\n /**\r\n * @zh_CN 宽度\r\n * @en_US Width\r\n * @default '20rem'\r\n */\r\n width?: string;\r\n /**\r\n * @zh_CN 高度\r\n * @en_US Height\r\n */\r\n height?: string;\r\n /**\r\n * @zh_CN 延迟关闭时间\r\n * @en_US Delay off time\r\n * @default 4500\r\n */\r\n duration?: number;\r\n /**\r\n * @zh_CN 隐藏关闭按钮\r\n * @en_US Hide close button\r\n * @default true\r\n */\r\n hideClose?: boolean;\r\n /**\r\n * @zh_CN 显示图标\r\n * @en_US Show icon\r\n * @default true\r\n */\r\n showIcon?: boolean;\r\n /**\r\n * @zh_CN 延迟关闭订阅后的对象,用来释放或取消\r\n * @en_US Delayed closing the subscribed object, used to release or cancel\r\n */\r\n duration$?: Subscription | null;\r\n /**\r\n * @zh_CN 延迟关闭订阅对象\r\n * @en_US Delay in closing the subscription object\r\n */\r\n durationSub?: Subject<any>;\r\n}\r\n\r\n/**\r\n * @zh_CN 创建的消息对象\r\n * @en_US Message object created\r\n */\r\nexport interface XNotificationOverlayRef extends XPortalOverlayRef<XNotificationComponent> {}\r\n\r\n/**\r\n * @zh_CN 九宫格中的消息对象\r\n * @en_US Message object in nine grid\r\n */\r\nexport interface XNotificationPlacement {\r\n [property: string]: XNotificationRef;\r\n}\r\n\r\nexport interface XNotificationRef {\r\n ref?: XNotificationOverlayRef;\r\n list?: XNotificationOption[];\r\n}\r\n\r\n/**\r\n * @zh_CN 类型\r\n * @en_US Types of\r\n */\r\nexport type XNotificationType = XStatus;\r\n","import { Component, ViewEncapsulation, Renderer2, ElementRef, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { XMoveAnimation, XIsEmpty } from '@ng-nest/ui/core';\r\nimport { XNotificationPrefix, XNotificationOption, XNotificationRef } from './notification.property';\r\nimport { of } from 'rxjs';\r\nimport { delay } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: `${XNotificationPrefix}`,\r\n templateUrl: './notification.component.html',\r\n styleUrls: ['./notification.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [XMoveAnimation]\r\n})\r\nexport class XNotificationComponent {\r\n notification: XNotificationRef = { list: [] };\r\n\r\n constructor(public renderer: Renderer2, public elementRef: ElementRef, public cdr: ChangeDetectorRef) {}\r\n\r\n onClose(item: XNotificationOption) {\r\n this.notification.list?.splice(this.notification.list.indexOf(item), 1);\r\n item.duration$ && item.duration$.unsubscribe();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n moveDone($event: { toState: string }) {\r\n if ($event.toState === 'void' && XIsEmpty(this.notification.list)) {\r\n this.notification.ref?.overlayRef?.detach();\r\n }\r\n }\r\n\r\n onEnter(item: XNotificationOption) {\r\n item.duration$ && item.duration$.unsubscribe();\r\n }\r\n\r\n onLeave(item: XNotificationOption) {\r\n if (item.duration) {\r\n item.duration$ = of(true)\r\n .pipe(delay(item.duration))\r\n .subscribe(() => {\r\n this.onClose(item);\r\n });\r\n }\r\n }\r\n\r\n trackByItem(index: number, item: XNotificationOption) {\r\n return `${item.title}-${item.content}`;\r\n }\r\n}\r\n","<div class=\"x-notification\">\r\n <ng-container *ngFor=\"let item of notification.list; trackBy: trackByItem\">\r\n <x-alert\r\n [@x-move-animation]=\"item.placement\"\r\n (@x-move-animation.done)=\"moveDone($event)\"\r\n (mouseenter)=\"onEnter(item)\"\r\n (mouseleave)=\"onLeave(item)\"\r\n (close)=\"onClose(item)\"\r\n [hide]=\"item.hide\"\r\n [title]=\"item.title\"\r\n [content]=\"item.content\"\r\n [type]=\"item.type\"\r\n [effect]=\"item.effect\"\r\n [hideClose]=\"item.hideClose\"\r\n [closeText]=\"item.closeText\"\r\n [showIcon]=\"item.showIcon\"\r\n duration=\"0\"\r\n manual\r\n disabledAnimation\r\n ></x-alert>\r\n </ng-container>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { XTemplate, XIsXTemplate, fillDefault, XIsEmpty, XIsString } from '@ng-nest/ui/core';\r\nimport {\r\n XNotificationOption,\r\n XNotificationOverlayRef,\r\n XNotificationType,\r\n XNotificationPlacement,\r\n XNotificationRef,\r\n XNotificationPortal\r\n} from './notification.property';\r\nimport { XNotificationComponent } from './notification.component';\r\nimport { of } from 'rxjs';\r\nimport { delay } from 'rxjs/operators';\r\nimport { XPortalService } from '@ng-nest/ui/portal';\r\n\r\n@Injectable()\r\nexport class XNotificationService {\r\n notifications: XNotificationPlacement = {};\r\n\r\n default: XNotificationOption = {\r\n type: 'info',\r\n width: '20rem',\r\n placement: 'top-end',\r\n offset: '0.5rem',\r\n effect: 'white',\r\n duration: 4500,\r\n showIcon: true\r\n };\r\n\r\n constructor(public portal: XPortalService) {}\r\n\r\n info(option: XTemplate | XNotificationOption): XNotificationRef {\r\n return this.createNotification(option, 'info');\r\n }\r\n\r\n success(option: XTemplate | XNotificationOption): XNotificationRef {\r\n return this.createNotification(option, 'success');\r\n }\r\n\r\n warning(option: XTemplate | XNotificationOption): XNotificationRef {\r\n return this.createNotification(option, 'warning');\r\n }\r\n\r\n error(option: XTemplate | XNotificationOption): XNotificationRef {\r\n return this.createNotification(option, 'error');\r\n }\r\n\r\n create(option: XNotificationOption): XNotificationOverlayRef {\r\n const offset = XIsString(option.offset) ? [option.offset as string] : (option.offset as string[]);\r\n return this.portal.attach({\r\n content: XNotificationComponent,\r\n overlayConfig: {\r\n panelClass: XNotificationPortal,\r\n positionStrategy: this.portal.setPlace(option.placement, option.width, option.height, ...offset)\r\n }\r\n });\r\n }\r\n\r\n private createNotification(option: XTemplate | XNotificationOption, type: XNotificationType): XNotificationRef {\r\n let opt: XNotificationOption;\r\n if (XIsXTemplate(option)) {\r\n opt = { title: option as XTemplate, type: type };\r\n } else {\r\n opt = option as XNotificationOption;\r\n opt.type = type;\r\n }\r\n fillDefault(opt, this.default);\r\n return this.createNotificationPlacement(opt);\r\n }\r\n\r\n private createNotificationPlacement(option: XNotificationOption): XNotificationRef {\r\n if (typeof option.placement === 'undefined') return {};\r\n let msgPlacement = this.notifications[option.placement];\r\n this.setDuration(option);\r\n if (XIsEmpty(msgPlacement) || !msgPlacement.ref?.overlayRef?.hasAttached()) {\r\n this.notifications[option.placement] = {\r\n ref: this.create(option),\r\n list: [option]\r\n };\r\n } else {\r\n this.notifications[option.placement].list = [...(this.notifications[option.placement].list as XNotificationOption[]), option];\r\n }\r\n this.notificationChange(this.notifications[option.placement]);\r\n\r\n return this.notifications[option.placement];\r\n }\r\n\r\n private notificationChange(notification: XNotificationRef) {\r\n if (!notification.ref?.overlayRef?.hasAttached() || !notification?.ref?.componentRef?.instance) return;\r\n notification.ref.componentRef.instance.notification = notification;\r\n notification.ref.componentRef.instance.cdr.detectChanges();\r\n }\r\n\r\n private setDuration(option: XNotificationOption) {\r\n if (option.duration) {\r\n option.duration$ = of(true)\r\n .pipe(delay(option.duration))\r\n .subscribe(() => {\r\n this.removeNotification(option);\r\n option.duration$ && option.duration$.unsubscribe();\r\n });\r\n }\r\n }\r\n\r\n private removeNotification(option: XNotificationOption) {\r\n if (typeof option.placement === 'undefined') return;\r\n this.notifications[option.placement].ref?.componentRef?.instance.onClose(option);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XNotificationComponent } from './notification.component';\r\nimport { XAlertModule } from '@ng-nest/ui/alert';\r\nimport { XPortalModule } from '@ng-nest/ui/portal';\r\nimport { XNotificationService } from './notification.service';\r\n\r\n@NgModule({\r\n declarations: [XNotificationComponent],\r\n exports: [XNotificationComponent],\r\n imports: [CommonModule, XPortalModule, XAlertModule],\r\n providers: [XNotificationService]\r\n})\r\nexport class XNotificationModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-nest-ui-notification.js","sources":["../../../../lib/ng-nest/ui/notification/notification.property.ts","../../../../lib/ng-nest/ui/notification/notification.component.ts","../../../../lib/ng-nest/ui/notification/notification.component.html","../../../../lib/ng-nest/ui/notification/notification.service.ts","../../../../lib/ng-nest/ui/notification/notification.module.ts","../../../../lib/ng-nest/ui/notification/ng-nest-ui-notification.ts"],"sourcesContent":["import { XStatus, XCorner } from '@ng-nest/ui/core';\r\nimport { XAlertOption } from '@ng-nest/ui/alert';\r\nimport { XNotificationComponent } from './notification.component';\r\nimport { XPortalOverlayRef } from '@ng-nest/ui/portal';\r\nimport { Subscription, Subject } from 'rxjs';\r\n\r\n/**\r\n * Notification\r\n * @selector x-notification\r\n * @decorator component\r\n */\r\nexport const XNotificationPrefix = 'x-notification';\r\n\r\nexport const XNotificationPortal = 'x-notification-portal';\r\n\r\n/**\r\n * Notification Option\r\n */\r\nexport interface XNotificationOption extends XAlertOption {\r\n /**\r\n * @zh_CN 方位\r\n * @en_US Placement\r\n * @default 'top-end'\r\n */\r\n placement?: XCorner;\r\n /**\r\n * @zh_CN 偏移距离\r\n * @en_US Offset distance\r\n * @default '0.5rem'\r\n */\r\n offset?: string | string[];\r\n /**\r\n * @zh_CN 类型\r\n * @en_US Types of\r\n * @default 'info'\r\n */\r\n type?: XNotificationType;\r\n /**\r\n * @zh_CN 宽度\r\n * @en_US Width\r\n * @default '20rem'\r\n */\r\n width?: string;\r\n /**\r\n * @zh_CN 高度\r\n * @en_US Height\r\n */\r\n height?: string;\r\n /**\r\n * @zh_CN 延迟关闭时间\r\n * @en_US Delay off time\r\n * @default 4500\r\n */\r\n duration?: number;\r\n /**\r\n * @zh_CN 隐藏关闭按钮\r\n * @en_US Hide close button\r\n * @default true\r\n */\r\n hideClose?: boolean;\r\n /**\r\n * @zh_CN 显示图标\r\n * @en_US Show icon\r\n * @default true\r\n */\r\n showIcon?: boolean;\r\n /**\r\n * @zh_CN 延迟关闭订阅后的对象,用来释放或取消\r\n * @en_US Delayed closing the subscribed object, used to release or cancel\r\n */\r\n duration$?: Subscription | null;\r\n /**\r\n * @zh_CN 延迟关闭订阅对象\r\n * @en_US Delay in closing the subscription object\r\n */\r\n durationSub?: Subject<any>;\r\n}\r\n\r\n/**\r\n * @zh_CN 创建的消息对象\r\n * @en_US Message object created\r\n */\r\nexport interface XNotificationOverlayRef extends XPortalOverlayRef<XNotificationComponent> {}\r\n\r\n/**\r\n * @zh_CN 九宫格中的消息对象\r\n * @en_US Message object in nine grid\r\n */\r\nexport interface XNotificationPlacement {\r\n [property: string]: XNotificationRef;\r\n}\r\n\r\nexport interface XNotificationRef {\r\n ref?: XNotificationOverlayRef;\r\n list?: XNotificationOption[];\r\n}\r\n\r\n/**\r\n * @zh_CN 类型\r\n * @en_US Types of\r\n */\r\nexport type XNotificationType = XStatus;\r\n","import { Component, ViewEncapsulation, Renderer2, ElementRef, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { XMoveAnimation, XIsEmpty } from '@ng-nest/ui/core';\r\nimport { XNotificationPrefix, XNotificationOption, XNotificationRef } from './notification.property';\r\nimport { of } from 'rxjs';\r\nimport { delay } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: `${XNotificationPrefix}`,\r\n templateUrl: './notification.component.html',\r\n styleUrls: ['./notification.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [XMoveAnimation]\r\n})\r\nexport class XNotificationComponent {\r\n notification: XNotificationRef = { list: [] };\r\n\r\n constructor(public renderer: Renderer2, public elementRef: ElementRef, public cdr: ChangeDetectorRef) {}\r\n\r\n onClose(item: XNotificationOption) {\r\n this.notification.list?.splice(this.notification.list.indexOf(item), 1);\r\n item.duration$ && item.duration$.unsubscribe();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n moveDone($event: { toState: string }) {\r\n if ($event.toState === 'void' && XIsEmpty(this.notification.list)) {\r\n this.notification.ref?.overlayRef?.detach();\r\n }\r\n }\r\n\r\n onEnter(item: XNotificationOption) {\r\n item.duration$ && item.duration$.unsubscribe();\r\n }\r\n\r\n onLeave(item: XNotificationOption) {\r\n if (item.duration) {\r\n item.duration$ = of(true)\r\n .pipe(delay(item.duration))\r\n .subscribe(() => {\r\n this.onClose(item);\r\n });\r\n }\r\n }\r\n\r\n trackByItem(_index: number, item: XNotificationOption) {\r\n return `${item.title}-${item.content}`;\r\n }\r\n}\r\n","<div class=\"x-notification\">\r\n <ng-container *ngFor=\"let item of notification.list; trackBy: trackByItem\">\r\n <x-alert\r\n [@x-move-animation]=\"item.placement\"\r\n (@x-move-animation.done)=\"moveDone($event)\"\r\n (mouseenter)=\"onEnter(item)\"\r\n (mouseleave)=\"onLeave(item)\"\r\n (close)=\"onClose(item)\"\r\n [hide]=\"item.hide\"\r\n [title]=\"item.title\"\r\n [content]=\"item.content\"\r\n [type]=\"item.type\"\r\n [effect]=\"item.effect\"\r\n [hideClose]=\"item.hideClose\"\r\n [closeText]=\"item.closeText\"\r\n [showIcon]=\"item.showIcon\"\r\n duration=\"0\"\r\n manual\r\n disabledAnimation\r\n ></x-alert>\r\n </ng-container>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { XTemplate, XIsXTemplate, fillDefault, XIsEmpty, XIsString } from '@ng-nest/ui/core';\r\nimport {\r\n XNotificationOption,\r\n XNotificationOverlayRef,\r\n XNotificationType,\r\n XNotificationPlacement,\r\n XNotificationRef,\r\n XNotificationPortal\r\n} from './notification.property';\r\nimport { XNotificationComponent } from './notification.component';\r\nimport { of } from 'rxjs';\r\nimport { delay } from 'rxjs/operators';\r\nimport { XPortalService } from '@ng-nest/ui/portal';\r\n\r\n@Injectable()\r\nexport class XNotificationService {\r\n notifications: XNotificationPlacement = {};\r\n\r\n default: XNotificationOption = {\r\n type: 'info',\r\n width: '20rem',\r\n placement: 'top-end',\r\n offset: '0.5rem',\r\n effect: 'white',\r\n duration: 4500,\r\n showIcon: true\r\n };\r\n\r\n constructor(public portal: XPortalService) {}\r\n\r\n info(option: XTemplate | XNotificationOption): XNotificationRef {\r\n return this.createNotification(option, 'info');\r\n }\r\n\r\n success(option: XTemplate | XNotificationOption): XNotificationRef {\r\n return this.createNotification(option, 'success');\r\n }\r\n\r\n warning(option: XTemplate | XNotificationOption): XNotificationRef {\r\n return this.createNotification(option, 'warning');\r\n }\r\n\r\n error(option: XTemplate | XNotificationOption): XNotificationRef {\r\n return this.createNotification(option, 'error');\r\n }\r\n\r\n create(option: XNotificationOption): XNotificationOverlayRef {\r\n const offset = XIsString(option.offset) ? [option.offset as string] : (option.offset as string[]);\r\n return this.portal.attach({\r\n content: XNotificationComponent,\r\n overlayConfig: {\r\n panelClass: XNotificationPortal,\r\n positionStrategy: this.portal.setPlace(option.placement, option.width, option.height, ...offset)\r\n }\r\n });\r\n }\r\n\r\n private createNotification(option: XTemplate | XNotificationOption, type: XNotificationType): XNotificationRef {\r\n let opt: XNotificationOption;\r\n if (XIsXTemplate(option)) {\r\n opt = { title: option as XTemplate, type: type };\r\n } else {\r\n opt = option as XNotificationOption;\r\n opt.type = type;\r\n }\r\n fillDefault(opt, this.default);\r\n return this.createNotificationPlacement(opt);\r\n }\r\n\r\n private createNotificationPlacement(option: XNotificationOption): XNotificationRef {\r\n if (typeof option.placement === 'undefined') return {};\r\n let msgPlacement = this.notifications[option.placement];\r\n this.setDuration(option);\r\n if (XIsEmpty(msgPlacement) || !msgPlacement.ref?.overlayRef?.hasAttached()) {\r\n this.notifications[option.placement] = {\r\n ref: this.create(option),\r\n list: [option]\r\n };\r\n } else {\r\n this.notifications[option.placement].list = [...(this.notifications[option.placement].list as XNotificationOption[]), option];\r\n }\r\n this.notificationChange(this.notifications[option.placement]);\r\n\r\n return this.notifications[option.placement];\r\n }\r\n\r\n private notificationChange(notification: XNotificationRef) {\r\n if (!notification.ref?.overlayRef?.hasAttached() || !notification?.ref?.componentRef?.instance) return;\r\n notification.ref.componentRef.instance.notification = notification;\r\n notification.ref.componentRef.instance.cdr.detectChanges();\r\n }\r\n\r\n private setDuration(option: XNotificationOption) {\r\n if (option.duration) {\r\n option.duration$ = of(true)\r\n .pipe(delay(option.duration))\r\n .subscribe(() => {\r\n this.removeNotification(option);\r\n option.duration$ && option.duration$.unsubscribe();\r\n });\r\n }\r\n }\r\n\r\n private removeNotification(option: XNotificationOption) {\r\n if (typeof option.placement === 'undefined') return;\r\n this.notifications[option.placement].ref?.componentRef?.instance.onClose(option);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XNotificationComponent } from './notification.component';\r\nimport { XAlertModule } from '@ng-nest/ui/alert';\r\nimport { XPortalModule } from '@ng-nest/ui/portal';\r\nimport { XNotificationService } from './notification.service';\r\n\r\n@NgModule({\r\n declarations: [XNotificationComponent],\r\n exports: [XNotificationComponent],\r\n imports: [CommonModule, XPortalModule, XAlertModule],\r\n providers: [XNotificationService]\r\n})\r\nexport class XNotificationModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -202,7 +202,8 @@ class XPaginationComponent extends XPaginationProperty {
202
202
  this.i18n.localeChange.pipe(takeUntil(this._unSubject)).subscribe(() => this.cdr.markForCheck());
203
203
  }
204
204
  ngOnChanges(changes) {
205
- XIsChange(changes.total, changes.size, changes.index) && this.setIndexes();
205
+ const { total, size, index } = changes;
206
+ XIsChange(total, size, index) && this.setIndexes();
206
207
  }
207
208
  ngOnDestory() {
208
209
  this._unSubject.next();
@@ -276,7 +277,7 @@ class XPaginationComponent extends XPaginationProperty {
276
277
  getActivated(index) {
277
278
  return Number(this.index) === index;
278
279
  }
279
- trackByItem(index, item) {
280
+ trackByItem(_index, item) {
280
281
  return item;
281
282
  }
282
283
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-pagination.js","sources":["../../../../lib/ng-nest/ui/pagination/pagination.property.ts","../../../../lib/ng-nest/ui/pagination/pagination.component.ts","../../../../lib/ng-nest/ui/pagination/pagination.component.html","../../../../lib/ng-nest/ui/pagination/pagination.module.ts","../../../../lib/ng-nest/ui/pagination/ng-nest-ui-pagination.ts"],"sourcesContent":["import { XProperty, XInputNumber, XNumber, XQuery, XWithConfig, XBoolean, XInputBoolean, XData, XTemplate } from '@ng-nest/ui/core';\r\nimport { Input, Output, EventEmitter, Component } from '@angular/core';\r\nimport { XSelectNode } from '@ng-nest/ui/select';\r\n\r\n/**\r\n * Pagination\r\n * @selector x-pagination\r\n * @decorator component\r\n */\r\nexport const XPaginationPrefix = 'x-pagination';\r\nconst X_CONFIG_NAME = 'pagination';\r\n\r\n/**\r\n * Pagination Property\r\n */\r\n@Component({ template: '' })\r\nexport class XPaginationProperty extends XProperty {\r\n /**\r\n * @zh_CN 当前页码\r\n * @en_US Current page number\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 1) @XInputNumber() index!: XNumber;\r\n /**\r\n * @zh_CN 每页显示条数\r\n * @en_US Number of items displayed per page\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 10) @XInputNumber() size!: XNumber;\r\n /**\r\n * @zh_CN 总数\r\n * @en_US Total\r\n */\r\n @Input() @XInputNumber() total: XNumber = 0;\r\n /**\r\n * @zh_CN 查询条件\r\n * @en_US Query conditions\r\n */\r\n @Input() query: XQuery = {};\r\n /**\r\n * @zh_CN 最多显示的分页数量\r\n * @en_US The largest number of pages display\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 5) @XInputNumber() pageLinkSize!: XNumber;\r\n /**\r\n * @zh_CN 显示首尾页跳转\r\n * @en_US Display the first and last page\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) @XInputBoolean() showEllipsis!: XBoolean;\r\n /**\r\n * @zh_CN 显示总条数\r\n * @en_US Display the total\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) @XInputBoolean() showTotal!: XBoolean;\r\n /**\r\n * @zh_CN 按钮间距,单位 rem (按 1rem = 16px 比例来计算)\r\n * @en_US Button spacing, unit rem (calculated according to the ratio of 1rem = 16px)\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 0) @XInputNumber() space!: XNumber;\r\n /**\r\n * @zh_CN 隐藏边框\r\n * @en_US Hide border\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, false) @XInputBoolean() hiddenBorder!: XBoolean;\r\n /**\r\n * @zh_CN 显示分页条数\r\n * @en_US Show size\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, false) @XInputBoolean() showSize!: XBoolean;\r\n /**\r\n * @zh_CN 分页条数的宽度\r\n * @en_US size with\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 100) @XInputNumber() sizeWidth!: XNumber;\r\n /**\r\n * @zh_CN 分页条数的宽度\r\n * @en_US size with\r\n */\r\n @Input() @XWithConfig<XData<XSelectNode>>(X_CONFIG_NAME, [10, 20, 50, 100]) sizeData!: XData<XSelectNode>;\r\n /**\r\n * @zh_CN 禁用整个分页\r\n * @en_US disabled\r\n */\r\n @Input() @XInputBoolean() disabled!: XBoolean;\r\n /**\r\n * @zh_CN 显示跳转输入框\r\n * @en_US Show size\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, false) @XInputBoolean() showJump!: XBoolean;\r\n /**\r\n * @zh_CN 跳转页的宽度\r\n * @en_US size with\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 50) @XInputNumber() jumpWidth!: XNumber;\r\n /**\r\n * @zh_CN 总数自定义模板\r\n * @en_US Total template\r\n */\r\n @Input() totalTpl?: XTemplate;\r\n /**\r\n * @zh_CN 简单分页\r\n * @en_US Simple\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, false) @XInputBoolean() simple!: XBoolean;\r\n /**\r\n * @zh_CN 简单分页输入框宽度\r\n * @en_US Simple index with\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 130) @XInputNumber() simpleIndexWidth!: XNumber;\r\n /**\r\n * @zh_CN 页码变化的事件\r\n * @en_US Page number change event\r\n */\r\n @Output() queryChange = new EventEmitter<XQuery>();\r\n /**\r\n * @zh_CN 页码变化的事件\r\n * @en_US Page number change event\r\n */\r\n @Output() indexChange = new EventEmitter<number>();\r\n /**\r\n * @zh_CN 每页显示条数变化的事件\r\n * @en_US Show the number of events on each page\r\n */\r\n @Output() sizeChange = new EventEmitter<number>();\r\n}\r\n\r\n/**\r\n * PaginationOption\r\n */\r\nexport interface XPaginationOption {\r\n /**\r\n * @zh_CN 当前页码\r\n * @en_US Current page number\r\n */\r\n index?: XNumber;\r\n /**\r\n * @zh_CN 每页显示条数\r\n * @en_US Number of items displayed per page\r\n */\r\n size?: XNumber;\r\n /**\r\n * @zh_CN 总数\r\n * @en_US total\r\n */\r\n total?: XNumber;\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n OnChanges,\r\n SimpleChanges,\r\n ElementRef,\r\n Renderer2,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { XPaginationPrefix, XPaginationProperty } from './pagination.property';\r\nimport { XIsChange, XConfigService } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { XI18nService } from '@ng-nest/ui/i18n';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { ENTER } from '@angular/cdk/keycodes';\r\n\r\n@Component({\r\n selector: `${XPaginationPrefix}`,\r\n templateUrl: './pagination.component.html',\r\n styleUrls: ['./style/index.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XPaginationComponent extends XPaginationProperty implements OnChanges {\r\n lastIndex!: number;\r\n indexes: number[] = [];\r\n indexFirst: number = 1;\r\n indexLast: number = 1;\r\n jumpPage: number | null = null;\r\n\r\n private _unSubject = new Subject<void>();\r\n\r\n get leftDisabled() {\r\n return Number(this.index) === 1 || Number(this.total) === 0;\r\n }\r\n\r\n get rightDisabled() {\r\n return Number(this.index) === this.lastIndex || Number(this.total) === 0;\r\n }\r\n\r\n get firstActivated() {\r\n return Number(this.index) === 1;\r\n }\r\n\r\n get lastActivated() {\r\n return Number(this.index) === this.lastIndex;\r\n }\r\n\r\n constructor(\r\n public configService: XConfigService,\r\n public elementRef: ElementRef,\r\n public renderer: Renderer2,\r\n public cdr: ChangeDetectorRef,\r\n public i18n: XI18nService\r\n ) {\r\n super();\r\n this.renderer.addClass(this.elementRef.nativeElement, XPaginationPrefix);\r\n }\r\n\r\n ngOnInit() {\r\n this.i18n.localeChange.pipe(takeUntil(this._unSubject)).subscribe(() => this.cdr.markForCheck());\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n XIsChange(changes.total, changes.size, changes.index) && this.setIndexes();\r\n }\r\n\r\n ngOnDestory() {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n sizeChanged() {\r\n this.setIndexes();\r\n this.sizeChange.emit(this.size as number);\r\n }\r\n\r\n setIndexes() {\r\n this.lastIndex = Math.ceil(Number(this.total) / Number(this.size)) || 1;\r\n const indexes: number[] = [];\r\n const current = Number(this.index) - 1;\r\n const maxSize = Number(this.pageLinkSize);\r\n const pages = Math.min(maxSize, this.lastIndex);\r\n let start = Math.max(0, Math.ceil(current - pages / 2)),\r\n end = Math.min(this.lastIndex - 1, start + pages - 1);\r\n var delta = maxSize - (end - start + 1);\r\n start = Math.max(0, start - delta);\r\n\r\n for (let i = start; i <= end; i++) {\r\n indexes.push(i + 1);\r\n }\r\n this.indexes = indexes;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n jump(index: number, isDiff = false) {\r\n const ix = this.validateIndex(isDiff ? Number(this.index) + index : index);\r\n if (ix !== this.index) {\r\n this.index = ix;\r\n this.setIndexes();\r\n this.indexChange.emit(this.index);\r\n }\r\n }\r\n\r\n onKeydown(event: KeyboardEvent) {\r\n if (this.jumpPage !== null && event.keyCode === ENTER) {\r\n if (this.jumpPage <= this.indexFirst) {\r\n this.jump(this.indexFirst);\r\n } else if (this.jumpPage >= this.lastIndex) {\r\n this.jump(this.lastIndex);\r\n } else {\r\n this.jump(this.jumpPage);\r\n }\r\n this.jumpPage = null;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n onSimpleKeydown(event: KeyboardEvent) {\r\n if (this.index !== null && event.keyCode === ENTER) {\r\n if (this.index <= this.indexFirst) {\r\n this.index = this.indexFirst;\r\n } else if (this.index >= this.lastIndex) {\r\n this.index = this.lastIndex;\r\n }\r\n this.jump(this.index as number);\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n validateIndex(value: number): number {\r\n if (value > this.lastIndex) {\r\n return this.lastIndex;\r\n } else if (value < 1) {\r\n return 1;\r\n } else {\r\n return value;\r\n }\r\n }\r\n\r\n getActivated(index: number) {\r\n return Number(this.index) === index;\r\n }\r\n\r\n trackByItem(index: number, item: number) {\r\n return item;\r\n }\r\n}\r\n","<x-buttons *ngIf=\"!simple; else simpleTpl\" [space]=\"space\" [hiddenBorder]=\"hiddenBorder\">\r\n <x-button\r\n *ngIf=\"showEllipsis\"\r\n [icon]=\"'fto-chevrons-left'\"\r\n [title]=\"'pagination.first' | xI18n\"\r\n [disabled]=\"disabled || firstActivated\"\r\n (click)=\"jump(1)\"\r\n ></x-button>\r\n <ng-container *xOutlet=\"previousTpl\"></ng-container>\r\n <x-button\r\n *ngFor=\"let item of indexes; trackBy: trackByItem\"\r\n [disabled]=\"disabled\"\r\n [activated]=\"getActivated(item)\"\r\n (click)=\"jump(item)\"\r\n >{{ item }}</x-button\r\n >\r\n <ng-container *xOutlet=\"nextTpl\"></ng-container>\r\n <x-button\r\n *ngIf=\"showEllipsis && !simple\"\r\n [icon]=\"'fto-chevrons-right'\"\r\n [title]=\"'pagination.last' | xI18n\"\r\n [disabled]=\"disabled || lastActivated\"\r\n (click)=\"jump(lastIndex)\"\r\n ></x-button>\r\n</x-buttons>\r\n<ng-template #simpleTpl>\r\n <div class=\"x-pagination-simple\">\r\n <x-input\r\n [bordered]=\"!hiddenBorder\"\r\n [before]=\"previousTpl\"\r\n [after]=\"nextTpl\"\r\n [style.width.px]=\"simpleIndexWidth\"\r\n [(ngModel)]=\"index\"\r\n (xKeydown)=\"onSimpleKeydown($event)\"\r\n ></x-input>\r\n <span>/</span>\r\n <span>{{ lastIndex }}</span>\r\n </div>\r\n</ng-template>\r\n<x-select\r\n *ngIf=\"showSize\"\r\n [style.width.px]=\"sizeWidth\"\r\n class=\"x-pagination-size\"\r\n [data]=\"sizeData\"\r\n clearable=\"false\"\r\n [disabled]=\"disabled\"\r\n [bordered]=\"!hiddenBorder\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [(ngModel)]=\"size\"\r\n (ngModelChange)=\"sizeChanged()\"\r\n></x-select>\r\n<div *ngIf=\"showJump && !simple\" class=\"x-pagination-jump\">\r\n <span>{{ 'pagination.jump' | xI18n }}</span>\r\n <x-input [bordered]=\"!hiddenBorder\" [style.width.px]=\"jumpWidth\" [(ngModel)]=\"jumpPage\" (xKeydown)=\"onKeydown($event)\"></x-input>\r\n</div>\r\n<x-button *ngIf=\"showTotal\" [disabled]=\"disabled\" class=\"x-pagination-total\" [type]=\"hiddenBorder === true ? 'text' : 'initial'\"\r\n ><ng-container *xOutlet=\"totalTpl; context: { $total: total }\"\r\n >{{ 'pagination.total' | xI18n }} {{ total }} {{ 'pagination.item' | xI18n }}</ng-container\r\n ></x-button\r\n>\r\n\r\n<ng-template #previousTpl>\r\n <x-button\r\n [icon]=\"'fto-chevron-left'\"\r\n [title]=\"'pagination.previous' | xI18n\"\r\n [disabled]=\"disabled || leftDisabled\"\r\n (click)=\"jump(-1, true)\"\r\n ></x-button>\r\n</ng-template>\r\n\r\n<ng-template #nextTpl>\r\n <x-button\r\n [icon]=\"'fto-chevron-right'\"\r\n [title]=\"'pagination.next' | xI18n\"\r\n [disabled]=\"disabled || rightDisabled\"\r\n (click)=\"jump(1, true)\"\r\n ></x-button>\r\n</ng-template>\r\n\r\n<ng-template #nodeTpl let-node=\"$node\">\r\n <ng-container *ngIf=\"node\"> {{ node?.label }} {{ 'pagination.sizePage' | xI18n }} </ng-container>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XPaginationComponent } from './pagination.component';\r\nimport { XButtonModule } from '@ng-nest/ui/button';\r\nimport { XPaginationProperty } from './pagination.property';\r\nimport { XI18nModule } from '@ng-nest/ui/i18n';\r\nimport { XSelectModule } from '@ng-nest/ui/select';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XInputModule } from '@ng-nest/ui/input';\r\nimport { XOutletModule } from '@ng-nest/ui/outlet';\r\n\r\n@NgModule({\r\n declarations: [XPaginationComponent, XPaginationProperty],\r\n exports: [XPaginationComponent],\r\n imports: [CommonModule, FormsModule, XButtonModule, XI18nModule, XSelectModule, XInputModule, XOutletModule]\r\n})\r\nexport class XPaginationModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAIA;;;;;MAKa,iBAAiB,GAAG,eAAe;AAChD,MAAM,aAAa,GAAG,YAAY,CAAC;AAEnC;;;MAIa,mBAAoB,SAAQ,SAAS;IADlD;;;;;;QAgB2B,UAAK,GAAY,CAAC,CAAC;;;;;QAKnC,UAAK,GAAW,EAAE,CAAC;;;;;QA2ElB,gBAAW,GAAG,IAAI,YAAY,EAAU,CAAC;;;;;QAKzC,gBAAW,GAAG,IAAI,YAAY,EAAU,CAAC;;;;;QAKzC,eAAU,GAAG,IAAI,YAAY,EAAU,CAAC;KACnD;;mIA1GY,mBAAmB;uHAAnB,mBAAmB,4kBADT,EAAE;AAM0C;IAAvD,WAAW,CAAU,aAAa,EAAE,CAAC,CAAC;IAAE,YAAY,EAAE;kDAAiB;AAKf;IAAxD,WAAW,CAAU,aAAa,EAAE,EAAE,CAAC;IAAE,YAAY,EAAE;iDAAgB;AAKxD;IAAf,YAAY,EAAE;kDAAoB;AAUqB;IAAvD,WAAW,CAAU,aAAa,EAAE,CAAC,CAAC;IAAE,YAAY,EAAE;yDAAwB;AAKlB;IAA5D,WAAW,CAAW,aAAa,EAAE,IAAI,CAAC;IAAE,aAAa,EAAE;yDAAyB;AAKxB;IAA5D,WAAW,CAAW,aAAa,EAAE,IAAI,CAAC;IAAE,aAAa,EAAE;sDAAsB;AAK1B;IAAvD,WAAW,CAAU,aAAa,EAAE,CAAC,CAAC;IAAE,YAAY,EAAE;kDAAiB;AAKV;IAA7D,WAAW,CAAW,aAAa,EAAE,KAAK,CAAC;IAAE,aAAa,EAAE;yDAAyB;AAKxB;IAA7D,WAAW,CAAW,aAAa,EAAE,KAAK,CAAC;IAAE,aAAa,EAAE;qDAAqB;AAKxB;IAAzD,WAAW,CAAU,aAAa,EAAE,GAAG,CAAC;IAAE,YAAY,EAAE;sDAAqB;AAKX;IAAlE,WAAW,CAAqB,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;qDAA+B;AAKhF;IAAhB,aAAa,EAAE;qDAAqB;AAKyB;IAA7D,WAAW,CAAW,aAAa,EAAE,KAAK,CAAC;IAAE,aAAa,EAAE;qDAAqB;AAKzB;IAAxD,WAAW,CAAU,aAAa,EAAE,EAAE,CAAC;IAAE,YAAY,EAAE;sDAAqB;AAUf;IAA7D,WAAW,CAAW,aAAa,EAAE,KAAK,CAAC;IAAE,aAAa,EAAE;mDAAmB;AAKtB;IAAzD,WAAW,CAAU,aAAa,EAAE,GAAG,CAAC;IAAE,YAAY,EAAE;6DAA4B;2FA1FnF,mBAAmB;kBAD/B,SAAS;mBAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;8BAMwC,KAAK;sBAArE,KAAK;gBAK4D,IAAI;sBAArE,KAAK;gBAKmB,KAAK;sBAA7B,KAAK;gBAKG,KAAK;sBAAb,KAAK;gBAK2D,YAAY;sBAA5E,KAAK;gBAKgE,YAAY;sBAAjF,KAAK;gBAKgE,SAAS;sBAA9E,KAAK;gBAK2D,KAAK;sBAArE,KAAK;gBAKiE,YAAY;sBAAlF,KAAK;gBAKiE,QAAQ;sBAA9E,KAAK;gBAK6D,SAAS;sBAA3E,KAAK;gBAKsE,QAAQ;sBAAnF,KAAK;gBAKoB,QAAQ;sBAAjC,KAAK;gBAKiE,QAAQ;sBAA9E,KAAK;gBAK4D,SAAS;sBAA1E,KAAK;gBAKG,QAAQ;sBAAhB,KAAK;gBAKiE,MAAM;sBAA5E,KAAK;gBAK6D,gBAAgB;sBAAlF,KAAK;gBAKI,WAAW;sBAApB,MAAM;gBAKG,WAAW;sBAApB,MAAM;gBAKG,UAAU;sBAAnB,MAAM;;;MCjGI,oBAAqB,SAAQ,mBAAmB;IAyB3D,YACS,aAA6B,EAC7B,UAAsB,EACtB,QAAmB,EACnB,GAAsB,EACtB,IAAkB;QAEzB,KAAK,EAAE,CAAC;QAND,kBAAa,GAAb,aAAa,CAAgB;QAC7B,eAAU,GAAV,UAAU,CAAY;QACtB,aAAQ,GAAR,QAAQ,CAAW;QACnB,QAAG,GAAH,GAAG,CAAmB;QACtB,SAAI,GAAJ,IAAI,CAAc;QA5B3B,YAAO,GAAa,EAAE,CAAC;QACvB,eAAU,GAAW,CAAC,CAAC;QACvB,cAAS,GAAW,CAAC,CAAC;QACtB,aAAQ,GAAkB,IAAI,CAAC;QAEvB,eAAU,GAAG,IAAI,OAAO,EAAQ,CAAC;QA0BvC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;KAC1E;IAzBD,IAAI,YAAY;QACd,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC7D;IAED,IAAI,aAAa;QACf,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC1E;IAED,IAAI,cAAc;QAChB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KACjC;IAED,IAAI,aAAa;QACf,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC;KAC9C;IAaD,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;KAClG;IAED,WAAW,CAAC,OAAsB;QAChC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;KAC5E;IAED,WAAW;QACT,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KAC/B;IAED,WAAW;QACT,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC;KAC3C;IAED,UAAU;QACR,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QACxE,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EACrD,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;QACxD,IAAI,KAAK,GAAG,OAAO,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;QACxC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC;QAEnC,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;YACjC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SACrB;QACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC1B;IAED,IAAI,CAAC,KAAa,EAAE,MAAM,GAAG,KAAK;QAChC,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;QAC3E,IAAI,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE;YACrB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnC;KACF;IAED,SAAS,CAAC,KAAoB;QAC5B,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE;YACrD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;gBACpC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC5B;iBAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;gBAC1C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAC3B;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC1B;YACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;KACF;IAED,eAAe,CAAC,KAAoB;QAClC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE;YAClD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;aAC9B;iBAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE;gBACvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;aAC7B;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;KACF;IAED,aAAa,CAAC,KAAa;QACzB,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;YAC1B,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;aAAM,IAAI,KAAK,GAAG,CAAC,EAAE;YACpB,OAAO,CAAC,CAAC;SACV;aAAM;YACL,OAAO,KAAK,CAAC;SACd;KACF;IAED,YAAY,CAAC,KAAa;QACxB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;KACrC;IAED,WAAW,CAAC,KAAa,EAAE,IAAY;QACrC,OAAO,IAAI,CAAC;KACb;;oIA3HU,oBAAoB;wHAApB,oBAAoB,gGCxBjC,+2FAkFA;2FD1Da,oBAAoB;kBAPhC,SAAS;mBAAC;oBACT,QAAQ,EAAE,GAAG,iBAAiB,EAAE;oBAChC,WAAW,EAAE,6BAA6B;oBAC1C,SAAS,EAAE,CAAC,oBAAoB,CAAC;oBACjC,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;;;MEPY,iBAAiB;;iIAAjB,iBAAiB;kIAAjB,iBAAiB,iBAJb,oBAAoB,EAAE,mBAAmB,aAE9C,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,aADjG,oBAAoB;kIAGnB,iBAAiB,YAFnB,CAAC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,CAAC;2FAEjG,iBAAiB;kBAL7B,QAAQ;mBAAC;oBACR,YAAY,EAAE,CAAC,oBAAoB,EAAE,mBAAmB,CAAC;oBACzD,OAAO,EAAE,CAAC,oBAAoB,CAAC;oBAC/B,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,CAAC;iBAC7G;;;ACfD;;;;;;"}
1
+ {"version":3,"file":"ng-nest-ui-pagination.js","sources":["../../../../lib/ng-nest/ui/pagination/pagination.property.ts","../../../../lib/ng-nest/ui/pagination/pagination.component.ts","../../../../lib/ng-nest/ui/pagination/pagination.component.html","../../../../lib/ng-nest/ui/pagination/pagination.module.ts","../../../../lib/ng-nest/ui/pagination/ng-nest-ui-pagination.ts"],"sourcesContent":["import { XProperty, XInputNumber, XNumber, XQuery, XWithConfig, XBoolean, XInputBoolean, XData, XTemplate } from '@ng-nest/ui/core';\r\nimport { Input, Output, EventEmitter, Component } from '@angular/core';\r\nimport { XSelectNode } from '@ng-nest/ui/select';\r\n\r\n/**\r\n * Pagination\r\n * @selector x-pagination\r\n * @decorator component\r\n */\r\nexport const XPaginationPrefix = 'x-pagination';\r\nconst X_CONFIG_NAME = 'pagination';\r\n\r\n/**\r\n * Pagination Property\r\n */\r\n@Component({ template: '' })\r\nexport class XPaginationProperty extends XProperty {\r\n /**\r\n * @zh_CN 当前页码\r\n * @en_US Current page number\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 1) @XInputNumber() index!: XNumber;\r\n /**\r\n * @zh_CN 每页显示条数\r\n * @en_US Number of items displayed per page\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 10) @XInputNumber() size!: XNumber;\r\n /**\r\n * @zh_CN 总数\r\n * @en_US Total\r\n */\r\n @Input() @XInputNumber() total: XNumber = 0;\r\n /**\r\n * @zh_CN 查询条件\r\n * @en_US Query conditions\r\n */\r\n @Input() query: XQuery = {};\r\n /**\r\n * @zh_CN 最多显示的分页数量\r\n * @en_US The largest number of pages display\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 5) @XInputNumber() pageLinkSize!: XNumber;\r\n /**\r\n * @zh_CN 显示首尾页跳转\r\n * @en_US Display the first and last page\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) @XInputBoolean() showEllipsis!: XBoolean;\r\n /**\r\n * @zh_CN 显示总条数\r\n * @en_US Display the total\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) @XInputBoolean() showTotal!: XBoolean;\r\n /**\r\n * @zh_CN 按钮间距,单位 rem (按 1rem = 16px 比例来计算)\r\n * @en_US Button spacing, unit rem (calculated according to the ratio of 1rem = 16px)\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 0) @XInputNumber() space!: XNumber;\r\n /**\r\n * @zh_CN 隐藏边框\r\n * @en_US Hide border\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, false) @XInputBoolean() hiddenBorder!: XBoolean;\r\n /**\r\n * @zh_CN 显示分页条数\r\n * @en_US Show size\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, false) @XInputBoolean() showSize!: XBoolean;\r\n /**\r\n * @zh_CN 分页条数的宽度\r\n * @en_US size with\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 100) @XInputNumber() sizeWidth!: XNumber;\r\n /**\r\n * @zh_CN 分页条数的宽度\r\n * @en_US size with\r\n */\r\n @Input() @XWithConfig<XData<XSelectNode>>(X_CONFIG_NAME, [10, 20, 50, 100]) sizeData!: XData<XSelectNode>;\r\n /**\r\n * @zh_CN 禁用整个分页\r\n * @en_US disabled\r\n */\r\n @Input() @XInputBoolean() disabled!: XBoolean;\r\n /**\r\n * @zh_CN 显示跳转输入框\r\n * @en_US Show size\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, false) @XInputBoolean() showJump!: XBoolean;\r\n /**\r\n * @zh_CN 跳转页的宽度\r\n * @en_US size with\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 50) @XInputNumber() jumpWidth!: XNumber;\r\n /**\r\n * @zh_CN 总数自定义模板\r\n * @en_US Total template\r\n */\r\n @Input() totalTpl?: XTemplate;\r\n /**\r\n * @zh_CN 简单分页\r\n * @en_US Simple\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, false) @XInputBoolean() simple!: XBoolean;\r\n /**\r\n * @zh_CN 简单分页输入框宽度\r\n * @en_US Simple index with\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 130) @XInputNumber() simpleIndexWidth!: XNumber;\r\n /**\r\n * @zh_CN 页码变化的事件\r\n * @en_US Page number change event\r\n */\r\n @Output() queryChange = new EventEmitter<XQuery>();\r\n /**\r\n * @zh_CN 页码变化的事件\r\n * @en_US Page number change event\r\n */\r\n @Output() indexChange = new EventEmitter<number>();\r\n /**\r\n * @zh_CN 每页显示条数变化的事件\r\n * @en_US Show the number of events on each page\r\n */\r\n @Output() sizeChange = new EventEmitter<number>();\r\n}\r\n\r\n/**\r\n * PaginationOption\r\n */\r\nexport interface XPaginationOption {\r\n /**\r\n * @zh_CN 当前页码\r\n * @en_US Current page number\r\n */\r\n index?: XNumber;\r\n /**\r\n * @zh_CN 每页显示条数\r\n * @en_US Number of items displayed per page\r\n */\r\n size?: XNumber;\r\n /**\r\n * @zh_CN 总数\r\n * @en_US total\r\n */\r\n total?: XNumber;\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n OnChanges,\r\n SimpleChanges,\r\n ElementRef,\r\n Renderer2,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { XPaginationPrefix, XPaginationProperty } from './pagination.property';\r\nimport { XIsChange, XConfigService } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { XI18nService } from '@ng-nest/ui/i18n';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { ENTER } from '@angular/cdk/keycodes';\r\n\r\n@Component({\r\n selector: `${XPaginationPrefix}`,\r\n templateUrl: './pagination.component.html',\r\n styleUrls: ['./style/index.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XPaginationComponent extends XPaginationProperty implements OnChanges {\r\n lastIndex!: number;\r\n indexes: number[] = [];\r\n indexFirst: number = 1;\r\n indexLast: number = 1;\r\n jumpPage: number | null = null;\r\n\r\n private _unSubject = new Subject<void>();\r\n\r\n get leftDisabled() {\r\n return Number(this.index) === 1 || Number(this.total) === 0;\r\n }\r\n\r\n get rightDisabled() {\r\n return Number(this.index) === this.lastIndex || Number(this.total) === 0;\r\n }\r\n\r\n get firstActivated() {\r\n return Number(this.index) === 1;\r\n }\r\n\r\n get lastActivated() {\r\n return Number(this.index) === this.lastIndex;\r\n }\r\n\r\n constructor(\r\n public configService: XConfigService,\r\n public elementRef: ElementRef,\r\n public renderer: Renderer2,\r\n public cdr: ChangeDetectorRef,\r\n public i18n: XI18nService\r\n ) {\r\n super();\r\n this.renderer.addClass(this.elementRef.nativeElement, XPaginationPrefix);\r\n }\r\n\r\n ngOnInit() {\r\n this.i18n.localeChange.pipe(takeUntil(this._unSubject)).subscribe(() => this.cdr.markForCheck());\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { total, size, index } = changes;\r\n XIsChange(total, size, index) && this.setIndexes();\r\n }\r\n\r\n ngOnDestory() {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n sizeChanged() {\r\n this.setIndexes();\r\n this.sizeChange.emit(this.size as number);\r\n }\r\n\r\n setIndexes() {\r\n this.lastIndex = Math.ceil(Number(this.total) / Number(this.size)) || 1;\r\n const indexes: number[] = [];\r\n const current = Number(this.index) - 1;\r\n const maxSize = Number(this.pageLinkSize);\r\n const pages = Math.min(maxSize, this.lastIndex);\r\n let start = Math.max(0, Math.ceil(current - pages / 2)),\r\n end = Math.min(this.lastIndex - 1, start + pages - 1);\r\n var delta = maxSize - (end - start + 1);\r\n start = Math.max(0, start - delta);\r\n\r\n for (let i = start; i <= end; i++) {\r\n indexes.push(i + 1);\r\n }\r\n this.indexes = indexes;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n jump(index: number, isDiff = false) {\r\n const ix = this.validateIndex(isDiff ? Number(this.index) + index : index);\r\n if (ix !== this.index) {\r\n this.index = ix;\r\n this.setIndexes();\r\n this.indexChange.emit(this.index);\r\n }\r\n }\r\n\r\n onKeydown(event: KeyboardEvent) {\r\n if (this.jumpPage !== null && event.keyCode === ENTER) {\r\n if (this.jumpPage <= this.indexFirst) {\r\n this.jump(this.indexFirst);\r\n } else if (this.jumpPage >= this.lastIndex) {\r\n this.jump(this.lastIndex);\r\n } else {\r\n this.jump(this.jumpPage);\r\n }\r\n this.jumpPage = null;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n onSimpleKeydown(event: KeyboardEvent) {\r\n if (this.index !== null && event.keyCode === ENTER) {\r\n if (this.index <= this.indexFirst) {\r\n this.index = this.indexFirst;\r\n } else if (this.index >= this.lastIndex) {\r\n this.index = this.lastIndex;\r\n }\r\n this.jump(this.index as number);\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n validateIndex(value: number): number {\r\n if (value > this.lastIndex) {\r\n return this.lastIndex;\r\n } else if (value < 1) {\r\n return 1;\r\n } else {\r\n return value;\r\n }\r\n }\r\n\r\n getActivated(index: number) {\r\n return Number(this.index) === index;\r\n }\r\n\r\n trackByItem(_index: number, item: number) {\r\n return item;\r\n }\r\n}\r\n","<x-buttons *ngIf=\"!simple; else simpleTpl\" [space]=\"space\" [hiddenBorder]=\"hiddenBorder\">\r\n <x-button\r\n *ngIf=\"showEllipsis\"\r\n [icon]=\"'fto-chevrons-left'\"\r\n [title]=\"'pagination.first' | xI18n\"\r\n [disabled]=\"disabled || firstActivated\"\r\n (click)=\"jump(1)\"\r\n ></x-button>\r\n <ng-container *xOutlet=\"previousTpl\"></ng-container>\r\n <x-button\r\n *ngFor=\"let item of indexes; trackBy: trackByItem\"\r\n [disabled]=\"disabled\"\r\n [activated]=\"getActivated(item)\"\r\n (click)=\"jump(item)\"\r\n >{{ item }}</x-button\r\n >\r\n <ng-container *xOutlet=\"nextTpl\"></ng-container>\r\n <x-button\r\n *ngIf=\"showEllipsis && !simple\"\r\n [icon]=\"'fto-chevrons-right'\"\r\n [title]=\"'pagination.last' | xI18n\"\r\n [disabled]=\"disabled || lastActivated\"\r\n (click)=\"jump(lastIndex)\"\r\n ></x-button>\r\n</x-buttons>\r\n<ng-template #simpleTpl>\r\n <div class=\"x-pagination-simple\">\r\n <x-input\r\n [bordered]=\"!hiddenBorder\"\r\n [before]=\"previousTpl\"\r\n [after]=\"nextTpl\"\r\n [style.width.px]=\"simpleIndexWidth\"\r\n [(ngModel)]=\"index\"\r\n (xKeydown)=\"onSimpleKeydown($event)\"\r\n ></x-input>\r\n <span>/</span>\r\n <span>{{ lastIndex }}</span>\r\n </div>\r\n</ng-template>\r\n<x-select\r\n *ngIf=\"showSize\"\r\n [style.width.px]=\"sizeWidth\"\r\n class=\"x-pagination-size\"\r\n [data]=\"sizeData\"\r\n clearable=\"false\"\r\n [disabled]=\"disabled\"\r\n [bordered]=\"!hiddenBorder\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [(ngModel)]=\"size\"\r\n (ngModelChange)=\"sizeChanged()\"\r\n></x-select>\r\n<div *ngIf=\"showJump && !simple\" class=\"x-pagination-jump\">\r\n <span>{{ 'pagination.jump' | xI18n }}</span>\r\n <x-input [bordered]=\"!hiddenBorder\" [style.width.px]=\"jumpWidth\" [(ngModel)]=\"jumpPage\" (xKeydown)=\"onKeydown($event)\"></x-input>\r\n</div>\r\n<x-button *ngIf=\"showTotal\" [disabled]=\"disabled\" class=\"x-pagination-total\" [type]=\"hiddenBorder === true ? 'text' : 'initial'\"\r\n ><ng-container *xOutlet=\"totalTpl; context: { $total: total }\"\r\n >{{ 'pagination.total' | xI18n }} {{ total }} {{ 'pagination.item' | xI18n }}</ng-container\r\n ></x-button\r\n>\r\n\r\n<ng-template #previousTpl>\r\n <x-button\r\n [icon]=\"'fto-chevron-left'\"\r\n [title]=\"'pagination.previous' | xI18n\"\r\n [disabled]=\"disabled || leftDisabled\"\r\n (click)=\"jump(-1, true)\"\r\n ></x-button>\r\n</ng-template>\r\n\r\n<ng-template #nextTpl>\r\n <x-button\r\n [icon]=\"'fto-chevron-right'\"\r\n [title]=\"'pagination.next' | xI18n\"\r\n [disabled]=\"disabled || rightDisabled\"\r\n (click)=\"jump(1, true)\"\r\n ></x-button>\r\n</ng-template>\r\n\r\n<ng-template #nodeTpl let-node=\"$node\">\r\n <ng-container *ngIf=\"node\"> {{ node?.label }} {{ 'pagination.sizePage' | xI18n }} </ng-container>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XPaginationComponent } from './pagination.component';\r\nimport { XButtonModule } from '@ng-nest/ui/button';\r\nimport { XPaginationProperty } from './pagination.property';\r\nimport { XI18nModule } from '@ng-nest/ui/i18n';\r\nimport { XSelectModule } from '@ng-nest/ui/select';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XInputModule } from '@ng-nest/ui/input';\r\nimport { XOutletModule } from '@ng-nest/ui/outlet';\r\n\r\n@NgModule({\r\n declarations: [XPaginationComponent, XPaginationProperty],\r\n exports: [XPaginationComponent],\r\n imports: [CommonModule, FormsModule, XButtonModule, XI18nModule, XSelectModule, XInputModule, XOutletModule]\r\n})\r\nexport class XPaginationModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
2
2
  import { EventEmitter, Component, Input, Output, ViewEncapsulation, ChangeDetectionStrategy, NgModule } from '@angular/core';
3
3
  import { __decorate } from 'tslib';
4
4
  import * as i1 from '@ng-nest/ui/core';
5
- import { XProperty, XWithConfig } from '@ng-nest/ui/core';
5
+ import { XProperty, XWithConfig, XInputBoolean } from '@ng-nest/ui/core';
6
6
  import { Subject } from 'rxjs';
7
7
  import { map, takeUntil } from 'rxjs/operators';
8
8
  import * as i2 from '@ng-nest/ui/i18n';
@@ -43,7 +43,7 @@ class XPopconfirmProperty extends XProperty {
43
43
  }
44
44
  }
45
45
  /** @nocollapse */ XPopconfirmProperty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: XPopconfirmProperty, deps: null, target: i0.ɵɵFactoryTarget.Component });
46
- /** @nocollapse */ XPopconfirmProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.5", type: XPopconfirmProperty, selector: "ng-component", inputs: { title: "title", content: "content", placement: "placement", trigger: "trigger", width: "width", icon: "icon", iconColor: "iconColor", cancelText: "cancelText", confirmText: "confirmText" }, outputs: { cancel: "cancel", confirm: "confirm" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
46
+ /** @nocollapse */ XPopconfirmProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.5", type: XPopconfirmProperty, selector: "ng-component", inputs: { title: "title", content: "content", placement: "placement", trigger: "trigger", width: "width", icon: "icon", iconColor: "iconColor", cancelText: "cancelText", confirmText: "confirmText", confirmAsync: "confirmAsync", condition: "condition" }, outputs: { cancel: "cancel", confirm: "confirm" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
47
47
  __decorate([
48
48
  XWithConfig(X_CONFIG_NAME, 'bottom')
49
49
  ], XPopconfirmProperty.prototype, "placement", void 0);
@@ -65,6 +65,9 @@ __decorate([
65
65
  __decorate([
66
66
  XWithConfig(X_CONFIG_NAME)
67
67
  ], XPopconfirmProperty.prototype, "confirmText", void 0);
68
+ __decorate([
69
+ XInputBoolean()
70
+ ], XPopconfirmProperty.prototype, "condition", void 0);
68
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: XPopconfirmProperty, decorators: [{
69
72
  type: Component,
70
73
  args: [{ template: '' }]
@@ -86,6 +89,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImpor
86
89
  type: Input
87
90
  }], confirmText: [{
88
91
  type: Input
92
+ }], confirmAsync: [{
93
+ type: Input
94
+ }], condition: [{
95
+ type: Input
89
96
  }], cancel: [{
90
97
  type: Output
91
98
  }], confirm: [{
@@ -101,7 +108,9 @@ class XPopconfirmComponent extends XPopconfirmProperty {
101
108
  this.configService = configService;
102
109
  this.i18n = i18n;
103
110
  this.locale = {};
111
+ this.loading = false;
104
112
  this._unSubject = new Subject();
113
+ this._asyncUnSub = new Subject();
105
114
  }
106
115
  get getCancelText() {
107
116
  return this.cancelText || this.locale.cancelText;
@@ -117,17 +126,36 @@ class XPopconfirmComponent extends XPopconfirmProperty {
117
126
  this.cdr.markForCheck();
118
127
  });
119
128
  }
129
+ ngOnDestroy() {
130
+ this._unSubject.next();
131
+ this._unSubject.complete();
132
+ }
120
133
  onCancel() {
121
134
  this.visible = false;
122
135
  this.cancel.emit();
123
136
  }
124
137
  onConfirm() {
125
- this.visible = false;
126
- this.confirm.emit();
138
+ if (this.confirmAsync) {
139
+ this.loading = true;
140
+ this.confirmAsync.pipe(takeUntil(this._asyncUnSub)).subscribe(() => {
141
+ this.loading = false;
142
+ this.visible = false;
143
+ this.confirm.emit();
144
+ this.cdr.detectChanges();
145
+ this._asyncUnSub.next();
146
+ });
147
+ }
148
+ else {
149
+ this.visible = false;
150
+ this.confirm.emit();
151
+ }
152
+ }
153
+ onClick() {
154
+ this.condition && this.onConfirm();
127
155
  }
128
156
  }
129
157
  /** @nocollapse */ XPopconfirmComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: XPopconfirmComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.XConfigService }, { token: i2.XI18nService }], target: i0.ɵɵFactoryTarget.Component });
130
- /** @nocollapse */ XPopconfirmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.5", type: XPopconfirmComponent, selector: "x-popconfirm", usesInheritance: true, ngImport: i0, template: "<div\r\n #popconfirm\r\n class=\"x-popconfirm\"\r\n x-popover\r\n [title]=\"titleTpl\"\r\n [content]=\"content\"\r\n [footer]=\"footerTpl\"\r\n [placement]=\"placement\"\r\n [trigger]=\"trigger\"\r\n [width]=\"width\"\r\n [(visible)]=\"visible\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n<ng-template #titleTpl>\r\n <div class=\"x-popconfirm-title\">\r\n <ng-container *xOutlet=\"title\">\r\n <x-icon *ngIf=\"icon\" [style.color]=\"iconColor\" [type]=\"icon\"></x-icon>\r\n <span>{{ title }}</span>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #footerTpl>\r\n <div class=\"x-popconfirm-buttons\">\r\n <x-button (click)=\"onCancel()\">{{ getCancelText }}</x-button>\r\n <x-button type=\"primary\" (click)=\"onConfirm()\">{{ getConfirmText }}</x-button>\r\n </div>\r\n</ng-template>\r\n", styles: [".x-popconfirm{margin:0;padding:0;display:inline-block}.x-popconfirm-buttons{display:flex;justify-content:flex-end}.x-popconfirm-buttons>x-button:not(:first-child){margin-left:.5rem}.x-popconfirm-title{display:flex;align-items:center}.x-popconfirm-title>.x-icon{margin-right:.325rem;font-size:1rem}\n"], components: [{ type: i3.XIconComponent, selector: "x-icon" }, { type: i4.XButtonComponent, selector: "x-button" }], directives: [{ type: i5.XPopoverDirective, selector: "[x-popover], x-popover" }, { type: i6.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
158
+ /** @nocollapse */ XPopconfirmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.5", type: XPopconfirmComponent, selector: "x-popconfirm", usesInheritance: true, ngImport: i0, template: "<div\r\n #popconfirm\r\n class=\"x-popconfirm\"\r\n x-popover\r\n [title]=\"titleTpl\"\r\n [content]=\"content\"\r\n [footer]=\"footerTpl\"\r\n [placement]=\"placement\"\r\n [trigger]=\"trigger\"\r\n [width]=\"width\"\r\n [condition]=\"condition\"\r\n [(visible)]=\"visible\"\r\n (click)=\"onClick()\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n<ng-template #titleTpl>\r\n <div class=\"x-popconfirm-title\">\r\n <ng-container *xOutlet=\"title\">\r\n <x-icon *ngIf=\"icon\" [style.color]=\"iconColor\" [type]=\"icon\"></x-icon>\r\n <span>{{ title }}</span>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #footerTpl>\r\n <div class=\"x-popconfirm-buttons\">\r\n <x-button (click)=\"onCancel()\">{{ getCancelText }}</x-button>\r\n <x-button type=\"primary\" (click)=\"onConfirm()\" [loading]=\"loading\">{{ getConfirmText }}</x-button>\r\n </div>\r\n</ng-template>\r\n", styles: [".x-popconfirm{margin:0;padding:0;display:inline-block}.x-popconfirm-buttons{display:flex;justify-content:flex-end}.x-popconfirm-buttons>x-button:not(:first-child){margin-left:.5rem}.x-popconfirm-title{display:flex;align-items:center}.x-popconfirm-title>.x-icon{margin-right:.325rem;font-size:1rem}\n"], components: [{ type: i3.XIconComponent, selector: "x-icon" }, { type: i4.XButtonComponent, selector: "x-button" }], directives: [{ type: i5.XPopoverDirective, selector: "[x-popover], x-popover" }, { type: i6.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
131
159
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: XPopconfirmComponent, decorators: [{
132
160
  type: Component,
133
161
  args: [{
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-popconfirm.js","sources":["../../../../lib/ng-nest/ui/popconfirm/popconfirm.property.ts","../../../../lib/ng-nest/ui/popconfirm/popconfirm.component.ts","../../../../lib/ng-nest/ui/popconfirm/popconfirm.component.html","../../../../lib/ng-nest/ui/popconfirm/popconfirm.module.ts","../../../../lib/ng-nest/ui/popconfirm/ng-nest-ui-popconfirm.ts"],"sourcesContent":["import { XPlacement, XTemplate, XProperty, XWithConfig } from '@ng-nest/ui/core';\r\nimport { XPopoverTrigger } from '@ng-nest/ui/popover';\r\nimport { Input, Output, EventEmitter, Component } from '@angular/core';\r\n\r\n/**\r\n * Popconfirm\r\n * @selector x-popconfirm\r\n * @decorator component\r\n */\r\nexport const XPopconfirmPrefix = 'x-popconfirm';\r\nconst X_CONFIG_NAME = 'popconfirm';\r\n\r\n/**\r\n * Popconfirm Property\r\n */\r\n@Component({ template: '' })\r\nexport class XPopconfirmProperty extends XProperty {\r\n /**\r\n * @zh_CN 标题,支持自定义模板\r\n * @en_US Title, support custom template\r\n */\r\n @Input() title?: XTemplate;\r\n /**\r\n * @zh_CN 内容,支持自定义模板\r\n * @en_US Content, support custom templates\r\n */\r\n @Input() content?: XTemplate;\r\n /**\r\n * @zh_CN 弹出的位置\r\n * @en_US Pop-up position\r\n */\r\n @Input() @XWithConfig<XPlacement>(X_CONFIG_NAME, 'bottom') placement?: XPlacement;\r\n /**\r\n * @zh_CN 激活方式\r\n * @en_US Activation method\r\n */\r\n @Input() @XWithConfig<XPopoverTrigger>(X_CONFIG_NAME, 'click') trigger?: XPopoverTrigger;\r\n /**\r\n * @zh_CN 宽度\r\n * @en_US Width\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME, '12rem') width?: string;\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME, 'fto-help-circle') icon?: string;\r\n /**\r\n * @zh_CN 图标颜色\r\n * @en_US Icon color\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME, '#e6a23c') iconColor?: string;\r\n /**\r\n * @zh_CN 取消的文字\r\n * @en_US Canceled text\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME) cancelText?: string;\r\n /**\r\n * @zh_CN 确认的文字\r\n * @en_US Confirmed text\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME) confirmText?: string;\r\n /**\r\n * @zh_CN 取消的点击事件\r\n * @en_US Cancelled click event\r\n */\r\n @Output() cancel = new EventEmitter();\r\n /**\r\n * @zh_CN 确认的点击事件\r\n * @en_US Confirmed click event\r\n */\r\n @Output() confirm = new EventEmitter();\r\n}\r\n","import { Renderer2, ElementRef, ChangeDetectorRef, Component, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\r\nimport { XPopconfirmProperty, XPopconfirmPrefix } from './popconfirm.property';\r\nimport { XBoolean, XConfigService } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { XI18nService, XI18nPopconfirm } from '@ng-nest/ui/i18n';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: `${XPopconfirmPrefix}`,\r\n templateUrl: './popconfirm.component.html',\r\n styleUrls: ['./popconfirm.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XPopconfirmComponent extends XPopconfirmProperty {\r\n visible!: XBoolean;\r\n locale: XI18nPopconfirm = {};\r\n\r\n private _unSubject = new Subject<void>();\r\n\r\n get getCancelText() {\r\n return this.cancelText || this.locale.cancelText;\r\n }\r\n\r\n get getConfirmText() {\r\n return this.confirmText || this.locale.confirmText;\r\n }\r\n\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef,\r\n public cdr: ChangeDetectorRef,\r\n public configService: XConfigService,\r\n public i18n: XI18nService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.i18n.localeChange\r\n .pipe(\r\n map((x) => x.popconfirm as XI18nPopconfirm),\r\n takeUntil(this._unSubject)\r\n )\r\n .subscribe((x) => {\r\n this.locale = x;\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n onCancel() {\r\n this.visible = false;\r\n this.cancel.emit();\r\n }\r\n\r\n onConfirm() {\r\n this.visible = false;\r\n this.confirm.emit();\r\n }\r\n}\r\n","<div\r\n #popconfirm\r\n class=\"x-popconfirm\"\r\n x-popover\r\n [title]=\"titleTpl\"\r\n [content]=\"content\"\r\n [footer]=\"footerTpl\"\r\n [placement]=\"placement\"\r\n [trigger]=\"trigger\"\r\n [width]=\"width\"\r\n [(visible)]=\"visible\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n<ng-template #titleTpl>\r\n <div class=\"x-popconfirm-title\">\r\n <ng-container *xOutlet=\"title\">\r\n <x-icon *ngIf=\"icon\" [style.color]=\"iconColor\" [type]=\"icon\"></x-icon>\r\n <span>{{ title }}</span>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #footerTpl>\r\n <div class=\"x-popconfirm-buttons\">\r\n <x-button (click)=\"onCancel()\">{{ getCancelText }}</x-button>\r\n <x-button type=\"primary\" (click)=\"onConfirm()\">{{ getConfirmText }}</x-button>\r\n </div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XPopconfirmComponent } from './popconfirm.component';\r\nimport { XPopoverModule } from '@ng-nest/ui/popover';\r\nimport { XButtonModule } from '@ng-nest/ui/button';\r\nimport { XIconModule } from '@ng-nest/ui/icon';\r\nimport { XOutletModule } from '@ng-nest/ui/outlet';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XPopconfirmProperty } from './popconfirm.property';\r\n\r\n@NgModule({\r\n declarations: [XPopconfirmComponent, XPopconfirmProperty],\r\n exports: [XPopconfirmComponent],\r\n imports: [CommonModule, XPopoverModule, XButtonModule, XIconModule, XOutletModule]\r\n})\r\nexport class XPopconfirmModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-nest-ui-popconfirm.js","sources":["../../../../lib/ng-nest/ui/popconfirm/popconfirm.property.ts","../../../../lib/ng-nest/ui/popconfirm/popconfirm.component.ts","../../../../lib/ng-nest/ui/popconfirm/popconfirm.component.html","../../../../lib/ng-nest/ui/popconfirm/popconfirm.module.ts","../../../../lib/ng-nest/ui/popconfirm/ng-nest-ui-popconfirm.ts"],"sourcesContent":["import { XPlacement, XTemplate, XProperty, XWithConfig, XInputBoolean, XBoolean } from '@ng-nest/ui/core';\r\nimport { XPopoverTrigger } from '@ng-nest/ui/popover';\r\nimport { Input, Output, EventEmitter, Component } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n/**\r\n * Popconfirm\r\n * @selector x-popconfirm\r\n * @decorator component\r\n */\r\nexport const XPopconfirmPrefix = 'x-popconfirm';\r\nconst X_CONFIG_NAME = 'popconfirm';\r\n\r\n/**\r\n * Popconfirm Property\r\n */\r\n@Component({ template: '' })\r\nexport class XPopconfirmProperty extends XProperty {\r\n /**\r\n * @zh_CN 标题,支持自定义模板\r\n * @en_US Title, support custom template\r\n */\r\n @Input() title?: XTemplate;\r\n /**\r\n * @zh_CN 内容,支持自定义模板\r\n * @en_US Content, support custom templates\r\n */\r\n @Input() content?: XTemplate;\r\n /**\r\n * @zh_CN 弹出的位置\r\n * @en_US Pop-up position\r\n */\r\n @Input() @XWithConfig<XPlacement>(X_CONFIG_NAME, 'bottom') placement?: XPlacement;\r\n /**\r\n * @zh_CN 激活方式\r\n * @en_US Activation method\r\n */\r\n @Input() @XWithConfig<XPopoverTrigger>(X_CONFIG_NAME, 'click') trigger?: XPopoverTrigger;\r\n /**\r\n * @zh_CN 宽度\r\n * @en_US Width\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME, '12rem') width?: string;\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME, 'fto-help-circle') icon?: string;\r\n /**\r\n * @zh_CN 图标颜色\r\n * @en_US Icon color\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME, '#e6a23c') iconColor?: string;\r\n /**\r\n * @zh_CN 取消的文字\r\n * @en_US Canceled text\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME) cancelText?: string;\r\n /**\r\n * @zh_CN 确认的文字\r\n * @en_US Confirmed text\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME) confirmText?: string;\r\n /**\r\n * @zh_CN 确认异步 Observable\r\n * @en_US Confirm async\r\n */\r\n @Input() confirmAsync?: Observable<void>;\r\n /**\r\n * @zh_CN 条件触发\r\n * @en_US condition trigger\r\n */\r\n @Input() @XInputBoolean() condition?: XBoolean;\r\n /**\r\n * @zh_CN 取消的点击事件\r\n * @en_US Cancelled click event\r\n */\r\n @Output() cancel = new EventEmitter();\r\n /**\r\n * @zh_CN 确认的点击事件\r\n * @en_US Confirmed click event\r\n */\r\n @Output() confirm = new EventEmitter();\r\n}\r\n","import { Renderer2, ElementRef, ChangeDetectorRef, Component, ChangeDetectionStrategy, ViewEncapsulation, OnDestroy } from '@angular/core';\r\nimport { XPopconfirmProperty, XPopconfirmPrefix } from './popconfirm.property';\r\nimport { XBoolean, XConfigService } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { XI18nService, XI18nPopconfirm } from '@ng-nest/ui/i18n';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: `${XPopconfirmPrefix}`,\r\n templateUrl: './popconfirm.component.html',\r\n styleUrls: ['./popconfirm.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XPopconfirmComponent extends XPopconfirmProperty implements OnDestroy {\r\n visible!: XBoolean;\r\n locale: XI18nPopconfirm = {};\r\n loading = false;\r\n\r\n private _unSubject = new Subject<void>();\r\n private _asyncUnSub = new Subject<void>();\r\n\r\n get getCancelText() {\r\n return this.cancelText || this.locale.cancelText;\r\n }\r\n\r\n get getConfirmText() {\r\n return this.confirmText || this.locale.confirmText;\r\n }\r\n\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef,\r\n public cdr: ChangeDetectorRef,\r\n public configService: XConfigService,\r\n public i18n: XI18nService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.i18n.localeChange\r\n .pipe(\r\n map((x) => x.popconfirm as XI18nPopconfirm),\r\n takeUntil(this._unSubject)\r\n )\r\n .subscribe((x) => {\r\n this.locale = x;\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unSubject.next();\r\n this._unSubject.complete();\r\n }\r\n\r\n onCancel() {\r\n this.visible = false;\r\n this.cancel.emit();\r\n }\r\n\r\n onConfirm() {\r\n if (this.confirmAsync) {\r\n this.loading = true;\r\n this.confirmAsync.pipe(takeUntil(this._asyncUnSub)).subscribe(() => {\r\n this.loading = false;\r\n this.visible = false;\r\n this.confirm.emit();\r\n this.cdr.detectChanges();\r\n this._asyncUnSub.next();\r\n });\r\n } else {\r\n this.visible = false;\r\n this.confirm.emit();\r\n }\r\n }\r\n\r\n onClick() {\r\n this.condition && this.onConfirm();\r\n }\r\n}\r\n","<div\r\n #popconfirm\r\n class=\"x-popconfirm\"\r\n x-popover\r\n [title]=\"titleTpl\"\r\n [content]=\"content\"\r\n [footer]=\"footerTpl\"\r\n [placement]=\"placement\"\r\n [trigger]=\"trigger\"\r\n [width]=\"width\"\r\n [condition]=\"condition\"\r\n [(visible)]=\"visible\"\r\n (click)=\"onClick()\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n<ng-template #titleTpl>\r\n <div class=\"x-popconfirm-title\">\r\n <ng-container *xOutlet=\"title\">\r\n <x-icon *ngIf=\"icon\" [style.color]=\"iconColor\" [type]=\"icon\"></x-icon>\r\n <span>{{ title }}</span>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #footerTpl>\r\n <div class=\"x-popconfirm-buttons\">\r\n <x-button (click)=\"onCancel()\">{{ getCancelText }}</x-button>\r\n <x-button type=\"primary\" (click)=\"onConfirm()\" [loading]=\"loading\">{{ getConfirmText }}</x-button>\r\n </div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XPopconfirmComponent } from './popconfirm.component';\r\nimport { XPopoverModule } from '@ng-nest/ui/popover';\r\nimport { XButtonModule } from '@ng-nest/ui/button';\r\nimport { XIconModule } from '@ng-nest/ui/icon';\r\nimport { XOutletModule } from '@ng-nest/ui/outlet';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XPopconfirmProperty } from './popconfirm.property';\r\n\r\n@NgModule({\r\n declarations: [XPopconfirmComponent, XPopconfirmProperty],\r\n exports: [XPopconfirmComponent],\r\n imports: [CommonModule, XPopoverModule, XButtonModule, XIconModule, XOutletModule]\r\n})\r\nexport class XPopconfirmModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}