@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.
- package/alert/alert.component.d.ts +2 -1
- package/auto-complete/auto-complete-portal.component.d.ts +1 -3
- package/auto-complete/auto-complete.component.d.ts +1 -1
- package/back-top/back-top.component.d.ts +1 -2
- package/bundles/ng-nest-ui-alert.umd.js +6 -1
- package/bundles/ng-nest-ui-alert.umd.js.map +1 -1
- package/bundles/ng-nest-ui-anchor.umd.js +1 -1
- package/bundles/ng-nest-ui-anchor.umd.js.map +1 -1
- package/bundles/ng-nest-ui-auto-complete.umd.js +7 -6
- package/bundles/ng-nest-ui-auto-complete.umd.js.map +1 -1
- package/bundles/ng-nest-ui-back-top.umd.js +2 -2
- package/bundles/ng-nest-ui-back-top.umd.js.map +1 -1
- package/bundles/ng-nest-ui-badge.umd.js +2 -1
- package/bundles/ng-nest-ui-badge.umd.js.map +1 -1
- package/bundles/ng-nest-ui-button.umd.js +4 -3
- package/bundles/ng-nest-ui-button.umd.js.map +1 -1
- package/bundles/ng-nest-ui-calendar.umd.js +4 -3
- package/bundles/ng-nest-ui-calendar.umd.js.map +1 -1
- package/bundles/ng-nest-ui-carousel.umd.js +13 -12
- package/bundles/ng-nest-ui-carousel.umd.js.map +1 -1
- package/bundles/ng-nest-ui-cascade.umd.js +9 -9
- package/bundles/ng-nest-ui-cascade.umd.js.map +1 -1
- package/bundles/ng-nest-ui-checkbox.umd.js +3 -2
- package/bundles/ng-nest-ui-checkbox.umd.js.map +1 -1
- package/bundles/ng-nest-ui-color-picker.umd.js +9 -10
- package/bundles/ng-nest-ui-color-picker.umd.js.map +1 -1
- package/bundles/ng-nest-ui-color.umd.js +1 -1
- package/bundles/ng-nest-ui-color.umd.js.map +1 -1
- package/bundles/ng-nest-ui-comment.umd.js +3 -2
- package/bundles/ng-nest-ui-comment.umd.js.map +1 -1
- package/bundles/ng-nest-ui-container.umd.js.map +1 -1
- package/bundles/ng-nest-ui-core.umd.js +3 -3
- package/bundles/ng-nest-ui-core.umd.js.map +1 -1
- package/bundles/ng-nest-ui-crumb.umd.js +3 -2
- package/bundles/ng-nest-ui-crumb.umd.js.map +1 -1
- package/bundles/ng-nest-ui-date-picker.umd.js +34 -44
- package/bundles/ng-nest-ui-date-picker.umd.js.map +1 -1
- package/bundles/ng-nest-ui-description.umd.js +5 -6
- package/bundles/ng-nest-ui-description.umd.js.map +1 -1
- package/bundles/ng-nest-ui-dialog.umd.js +285 -32
- package/bundles/ng-nest-ui-dialog.umd.js.map +1 -1
- package/bundles/ng-nest-ui-drawer.umd.js +247 -15
- package/bundles/ng-nest-ui-drawer.umd.js.map +1 -1
- package/bundles/ng-nest-ui-dropdown.umd.js +4 -3
- package/bundles/ng-nest-ui-dropdown.umd.js.map +1 -1
- package/bundles/ng-nest-ui-find.umd.js +33 -8
- package/bundles/ng-nest-ui-find.umd.js.map +1 -1
- package/bundles/ng-nest-ui-form.umd.js +6 -10
- package/bundles/ng-nest-ui-form.umd.js.map +1 -1
- package/bundles/ng-nest-ui-highlight.umd.js +2 -1
- package/bundles/ng-nest-ui-highlight.umd.js.map +1 -1
- package/bundles/ng-nest-ui-i18n.umd.js +2 -1
- package/bundles/ng-nest-ui-i18n.umd.js.map +1 -1
- package/bundles/ng-nest-ui-icon.umd.js +3 -2
- package/bundles/ng-nest-ui-icon.umd.js.map +1 -1
- package/bundles/ng-nest-ui-inner.umd.js +1 -1
- package/bundles/ng-nest-ui-inner.umd.js.map +1 -1
- package/bundles/ng-nest-ui-input.umd.js +9 -7
- package/bundles/ng-nest-ui-input.umd.js.map +1 -1
- package/bundles/ng-nest-ui-list.umd.js +4 -3
- package/bundles/ng-nest-ui-list.umd.js.map +1 -1
- package/bundles/ng-nest-ui-loading.umd.js +2 -1
- package/bundles/ng-nest-ui-loading.umd.js.map +1 -1
- package/bundles/ng-nest-ui-menu.umd.js +6 -6
- package/bundles/ng-nest-ui-menu.umd.js.map +1 -1
- package/bundles/ng-nest-ui-message-box.umd.js +28 -26
- package/bundles/ng-nest-ui-message-box.umd.js.map +1 -1
- package/bundles/ng-nest-ui-message.umd.js +53 -17
- package/bundles/ng-nest-ui-message.umd.js.map +1 -1
- package/bundles/ng-nest-ui-notification.umd.js +1 -1
- package/bundles/ng-nest-ui-notification.umd.js.map +1 -1
- package/bundles/ng-nest-ui-pagination.umd.js +3 -2
- package/bundles/ng-nest-ui-pagination.umd.js.map +1 -1
- package/bundles/ng-nest-ui-popconfirm.umd.js +33 -4
- package/bundles/ng-nest-ui-popconfirm.umd.js.map +1 -1
- package/bundles/ng-nest-ui-popover.umd.js +15 -3
- package/bundles/ng-nest-ui-popover.umd.js.map +1 -1
- package/bundles/ng-nest-ui-portal.umd.js +8 -8
- package/bundles/ng-nest-ui-portal.umd.js.map +1 -1
- package/bundles/ng-nest-ui-progress.umd.js +236 -20
- package/bundles/ng-nest-ui-progress.umd.js.map +1 -1
- package/bundles/ng-nest-ui-radio.umd.js +3 -2
- package/bundles/ng-nest-ui-radio.umd.js.map +1 -1
- package/bundles/ng-nest-ui-rate.umd.js +5 -5
- package/bundles/ng-nest-ui-rate.umd.js.map +1 -1
- package/bundles/ng-nest-ui-ripple.umd.js.map +1 -1
- package/bundles/ng-nest-ui-select.umd.js +7 -6
- package/bundles/ng-nest-ui-select.umd.js.map +1 -1
- package/bundles/ng-nest-ui-skeleton.umd.js +2 -1
- package/bundles/ng-nest-ui-skeleton.umd.js.map +1 -1
- package/bundles/ng-nest-ui-slider.umd.js +7 -8
- package/bundles/ng-nest-ui-slider.umd.js.map +1 -1
- package/bundles/ng-nest-ui-statistic.umd.js +6 -4
- package/bundles/ng-nest-ui-statistic.umd.js.map +1 -1
- package/bundles/ng-nest-ui-steps.umd.js +23 -10
- package/bundles/ng-nest-ui-steps.umd.js.map +1 -1
- package/bundles/ng-nest-ui-table.umd.js +13 -10
- package/bundles/ng-nest-ui-table.umd.js.map +1 -1
- package/bundles/ng-nest-ui-tabs.umd.js +5 -4
- package/bundles/ng-nest-ui-tabs.umd.js.map +1 -1
- package/bundles/ng-nest-ui-tag.umd.js +2 -1
- package/bundles/ng-nest-ui-tag.umd.js.map +1 -1
- package/bundles/ng-nest-ui-text-retract.umd.js +2 -1
- package/bundles/ng-nest-ui-text-retract.umd.js.map +1 -1
- package/bundles/ng-nest-ui-textarea.umd.js +3 -12
- package/bundles/ng-nest-ui-textarea.umd.js.map +1 -1
- package/bundles/ng-nest-ui-theme.umd.js +2 -2
- package/bundles/ng-nest-ui-theme.umd.js.map +1 -1
- package/bundles/ng-nest-ui-time-picker.umd.js +32 -15
- package/bundles/ng-nest-ui-time-picker.umd.js.map +1 -1
- package/bundles/ng-nest-ui-timeline.umd.js +3 -2
- package/bundles/ng-nest-ui-timeline.umd.js.map +1 -1
- package/bundles/ng-nest-ui-tooltip.umd.js +3 -2
- package/bundles/ng-nest-ui-tooltip.umd.js.map +1 -1
- package/bundles/ng-nest-ui-transfer.umd.js +3 -2
- package/bundles/ng-nest-ui-transfer.umd.js.map +1 -1
- package/bundles/ng-nest-ui-tree.umd.js +8 -7
- package/bundles/ng-nest-ui-tree.umd.js.map +1 -1
- package/bundles/ng-nest-ui-upload.umd.js +5 -4
- package/bundles/ng-nest-ui-upload.umd.js.map +1 -1
- package/button/buttons.component.d.ts +1 -1
- package/calendar/calendar.component.d.ts +2 -2
- package/carousel/carousel-panel.component.d.ts +2 -3
- package/carousel/carousel.component.d.ts +1 -1
- package/cascade/cascade-portal.component.d.ts +4 -7
- package/cascade/cascade.component.d.ts +1 -1
- package/checkbox/checkbox.component.d.ts +1 -1
- package/color/color.component.d.ts +2 -2
- package/color-picker/color-picker-portal.component.d.ts +1 -3
- package/color-picker/color-picker.component.d.ts +2 -3
- package/comment/comment.component.d.ts +1 -1
- package/core/config/config.d.ts +7 -0
- package/core/interfaces/layout.type.d.ts +1 -1
- package/core/services/reuse-strategy.service.d.ts +1 -1
- package/crumb/crumb.component.d.ts +1 -1
- package/date-picker/date-picker-portal.component.d.ts +1 -3
- package/date-picker/date-picker.component.d.ts +3 -4
- package/date-picker/date-picker.property.d.ts +1 -16
- package/date-picker/date-range-portal.component.d.ts +1 -3
- package/date-picker/date-range.component.d.ts +2 -3
- package/date-picker/picker-date.component.d.ts +1 -1
- package/date-picker/picker-month.component.d.ts +1 -1
- package/date-picker/picker-year.component.d.ts +1 -1
- package/description/description.component.d.ts +2 -4
- package/dialog/dialog-container.component.d.ts +18 -0
- package/dialog/dialog-container.directives.d.ts +24 -0
- package/dialog/dialog-ref.d.ts +9 -0
- package/dialog/dialog.module.d.ts +13 -11
- package/dialog/dialog.property.d.ts +84 -6
- package/dialog/dialog.service.d.ts +19 -0
- package/dialog/public-api.d.ts +4 -0
- package/drawer/drawer-container.component.d.ts +18 -0
- package/drawer/drawer-container.directives.d.ts +19 -0
- package/drawer/drawer-ref.d.ts +9 -0
- package/drawer/drawer.module.d.ts +8 -6
- package/drawer/drawer.property.d.ts +83 -2
- package/drawer/drawer.service.d.ts +19 -0
- package/drawer/public-api.d.ts +5 -0
- package/dropdown/dropdown-portal.component.d.ts +1 -3
- package/dropdown/dropdown.component.d.ts +2 -2
- package/esm2015/alert/alert.component.js +8 -3
- package/esm2015/anchor/anchor.component.js +2 -2
- package/esm2015/anchor/anchor.property.js +1 -1
- package/esm2015/auto-complete/auto-complete-portal.component.js +4 -4
- package/esm2015/auto-complete/auto-complete.component.js +5 -4
- package/esm2015/auto-complete/auto-complete.property.js +1 -1
- package/esm2015/back-top/back-top.component.js +3 -3
- package/esm2015/badge/badge.component.js +3 -2
- package/esm2015/button/button.component.js +5 -4
- package/esm2015/button/buttons.component.js +1 -1
- package/esm2015/calendar/calendar.component.js +5 -4
- package/esm2015/carousel/carousel-panel.component.js +12 -11
- package/esm2015/carousel/carousel.component.js +4 -3
- package/esm2015/cascade/cascade-portal.component.js +6 -7
- package/esm2015/cascade/cascade.component.js +5 -4
- package/esm2015/checkbox/checkbox.component.js +4 -3
- package/esm2015/checkbox/checkbox.property.js +1 -1
- package/esm2015/color/color.component.js +2 -2
- package/esm2015/color-picker/color-picker-portal.component.js +3 -3
- package/esm2015/color-picker/color-picker.component.js +8 -9
- package/esm2015/comment/comment.component.js +4 -3
- package/esm2015/container/container.component.js +2 -2
- package/esm2015/core/animation/fade.js +1 -1
- package/esm2015/core/config/config.js +1 -1
- package/esm2015/core/interfaces/layout.type.js +1 -1
- package/esm2015/core/services/http.service.js +2 -2
- package/esm2015/core/services/preloading-strategy.service.js +2 -2
- package/esm2015/core/services/reuse-strategy.service.js +2 -2
- package/esm2015/crumb/crumb.component.js +4 -3
- package/esm2015/date-picker/date-picker-portal.component.js +4 -4
- package/esm2015/date-picker/date-picker.component.js +9 -13
- package/esm2015/date-picker/date-picker.property.js +8 -17
- package/esm2015/date-picker/date-range-portal.component.js +2 -2
- package/esm2015/date-picker/date-range.component.js +7 -7
- package/esm2015/date-picker/picker-date.component.js +4 -3
- package/esm2015/date-picker/picker-month.component.js +4 -3
- package/esm2015/date-picker/picker-year.component.js +4 -3
- package/esm2015/description/description.component.js +6 -7
- package/esm2015/dialog/dialog-container.component.js +59 -0
- package/esm2015/dialog/dialog-container.directives.js +73 -0
- package/esm2015/dialog/dialog-ref.js +17 -0
- package/esm2015/dialog/dialog.component.js +4 -3
- package/esm2015/dialog/dialog.module.js +37 -7
- package/esm2015/dialog/dialog.property.js +17 -16
- package/esm2015/dialog/dialog.service.js +67 -0
- package/esm2015/dialog/public-api.js +5 -1
- package/esm2015/drawer/drawer-container.component.js +59 -0
- package/esm2015/drawer/drawer-container.directives.js +57 -0
- package/esm2015/drawer/drawer-ref.js +17 -0
- package/esm2015/drawer/drawer.component.js +4 -3
- package/esm2015/drawer/drawer.module.js +22 -6
- package/esm2015/drawer/drawer.property.js +22 -6
- package/esm2015/drawer/drawer.service.js +65 -0
- package/esm2015/drawer/public-api.js +6 -1
- package/esm2015/dropdown/dropdown-portal.component.js +2 -2
- package/esm2015/dropdown/dropdown.component.js +4 -3
- package/esm2015/find/find.component.js +18 -8
- package/esm2015/find/find.property.js +18 -2
- package/esm2015/form/control.component.js +1 -1
- package/esm2015/form/form.component.js +6 -5
- package/esm2015/form/form.property.js +3 -8
- package/esm2015/highlight/highlight.component.js +3 -2
- package/esm2015/highlight/highlight.property.js +1 -1
- package/esm2015/i18n/i18n.directive.js +3 -2
- package/esm2015/icon/icon.component.js +4 -3
- package/esm2015/inner/inner.component.js +2 -2
- package/esm2015/input/input-group.component.js +2 -4
- package/esm2015/input/input.component.js +9 -5
- package/esm2015/input/input.property.js +1 -1
- package/esm2015/list/list.component.js +5 -4
- package/esm2015/list/list.property.js +1 -1
- package/esm2015/loading/loading.component.js +3 -2
- package/esm2015/menu/menu-node.component.js +1 -1
- package/esm2015/menu/menu.component.js +7 -7
- package/esm2015/message/message-ref.js +12 -0
- package/esm2015/message/message.component.js +4 -4
- package/esm2015/message/message.property.js +2 -2
- package/esm2015/message/message.service.js +37 -15
- package/esm2015/message/public-api.js +2 -1
- package/esm2015/message-box/message-box.component.js +17 -21
- package/esm2015/message-box/message-box.service.js +7 -5
- package/esm2015/notification/notification.component.js +2 -2
- package/esm2015/notification/notification.property.js +1 -1
- package/esm2015/pagination/pagination.component.js +4 -3
- package/esm2015/popconfirm/popconfirm.component.js +25 -4
- package/esm2015/popconfirm/popconfirm.property.js +10 -3
- package/esm2015/popover/popover.directive.js +10 -3
- package/esm2015/popover/popover.property.js +7 -2
- package/esm2015/portal/portal.module.js +4 -3
- package/esm2015/portal/portal.service.js +8 -9
- package/esm2015/progress/progress.component.js +178 -15
- package/esm2015/progress/progress.property.js +50 -3
- package/esm2015/radio/radio.component.js +4 -3
- package/esm2015/radio/radio.property.js +1 -1
- package/esm2015/rate/rate.component.js +6 -6
- package/esm2015/ripple/ripple.directive.js +1 -1
- package/esm2015/ripple/ripple.property.js +1 -1
- package/esm2015/select/select-portal.component.js +3 -3
- package/esm2015/select/select.component.js +6 -5
- package/esm2015/skeleton/skeleton.component.js +3 -2
- package/esm2015/slider/slider.component.js +8 -9
- package/esm2015/statistic/countdown.component.js +5 -4
- package/esm2015/statistic/statistic.component.js +3 -2
- package/esm2015/steps/steps.component.js +18 -10
- package/esm2015/steps/steps.property.js +8 -3
- package/esm2015/table/drag.directive.js +2 -2
- package/esm2015/table/table-body.component.js +4 -3
- package/esm2015/table/table-foot.component.js +1 -1
- package/esm2015/table/table-head.component.js +5 -4
- package/esm2015/table/table.component.js +6 -5
- package/esm2015/table/table.property.js +1 -1
- package/esm2015/tabs/tab.component.js +1 -1
- package/esm2015/tabs/tabs.component.js +6 -5
- package/esm2015/tag/tag.component.js +3 -2
- package/esm2015/text-retract/text-retract.component.js +3 -2
- package/esm2015/textarea/textarea.component.js +3 -2
- package/esm2015/textarea/textarea.property.js +2 -12
- package/esm2015/theme/theme.component.js +3 -3
- package/esm2015/theme/theme.property.js +1 -1
- package/esm2015/time-picker/time-picker-frame.component.js +9 -5
- package/esm2015/time-picker/time-picker-portal.component.js +2 -2
- package/esm2015/time-picker/time-picker.component.js +25 -12
- package/esm2015/timeline/timeline.component.js +4 -3
- package/esm2015/tooltip/tooltip.directive.js +4 -3
- package/esm2015/tooltip/tooltip.property.js +1 -1
- package/esm2015/transfer/transfer.component.js +4 -3
- package/esm2015/tree/tree-node.component.js +2 -2
- package/esm2015/tree/tree.component.js +8 -7
- package/esm2015/tree/tree.property.js +1 -1
- package/esm2015/upload/upload-portal.component.js +2 -2
- package/esm2015/upload/upload.component.js +5 -4
- package/fesm2015/ng-nest-ui-alert.js +7 -2
- package/fesm2015/ng-nest-ui-alert.js.map +1 -1
- package/fesm2015/ng-nest-ui-anchor.js +1 -1
- package/fesm2015/ng-nest-ui-anchor.js.map +1 -1
- package/fesm2015/ng-nest-ui-auto-complete.js +7 -6
- package/fesm2015/ng-nest-ui-auto-complete.js.map +1 -1
- package/fesm2015/ng-nest-ui-back-top.js +2 -2
- package/fesm2015/ng-nest-ui-back-top.js.map +1 -1
- package/fesm2015/ng-nest-ui-badge.js +2 -1
- package/fesm2015/ng-nest-ui-badge.js.map +1 -1
- package/fesm2015/ng-nest-ui-button.js +4 -3
- package/fesm2015/ng-nest-ui-button.js.map +1 -1
- package/fesm2015/ng-nest-ui-calendar.js +4 -3
- package/fesm2015/ng-nest-ui-calendar.js.map +1 -1
- package/fesm2015/ng-nest-ui-carousel.js +12 -11
- package/fesm2015/ng-nest-ui-carousel.js.map +1 -1
- package/fesm2015/ng-nest-ui-cascade.js +9 -9
- package/fesm2015/ng-nest-ui-cascade.js.map +1 -1
- package/fesm2015/ng-nest-ui-checkbox.js +3 -2
- package/fesm2015/ng-nest-ui-checkbox.js.map +1 -1
- package/fesm2015/ng-nest-ui-color-picker.js +9 -10
- package/fesm2015/ng-nest-ui-color-picker.js.map +1 -1
- package/fesm2015/ng-nest-ui-color.js +1 -1
- package/fesm2015/ng-nest-ui-color.js.map +1 -1
- package/fesm2015/ng-nest-ui-comment.js +3 -2
- package/fesm2015/ng-nest-ui-comment.js.map +1 -1
- package/fesm2015/ng-nest-ui-container.js +1 -1
- package/fesm2015/ng-nest-ui-container.js.map +1 -1
- package/fesm2015/ng-nest-ui-core.js +3 -3
- package/fesm2015/ng-nest-ui-core.js.map +1 -1
- package/fesm2015/ng-nest-ui-crumb.js +3 -2
- package/fesm2015/ng-nest-ui-crumb.js.map +1 -1
- package/fesm2015/ng-nest-ui-date-picker.js +34 -44
- package/fesm2015/ng-nest-ui-date-picker.js.map +1 -1
- package/fesm2015/ng-nest-ui-description.js +5 -6
- package/fesm2015/ng-nest-ui-description.js.map +1 -1
- package/fesm2015/ng-nest-ui-dialog.js +256 -26
- package/fesm2015/ng-nest-ui-dialog.js.map +1 -1
- package/fesm2015/ng-nest-ui-drawer.js +226 -14
- package/fesm2015/ng-nest-ui-drawer.js.map +1 -1
- package/fesm2015/ng-nest-ui-dropdown.js +4 -3
- package/fesm2015/ng-nest-ui-dropdown.js.map +1 -1
- package/fesm2015/ng-nest-ui-find.js +34 -8
- package/fesm2015/ng-nest-ui-find.js.map +1 -1
- package/fesm2015/ng-nest-ui-form.js +7 -11
- package/fesm2015/ng-nest-ui-form.js.map +1 -1
- package/fesm2015/ng-nest-ui-highlight.js +2 -1
- package/fesm2015/ng-nest-ui-highlight.js.map +1 -1
- package/fesm2015/ng-nest-ui-i18n.js +2 -1
- package/fesm2015/ng-nest-ui-i18n.js.map +1 -1
- package/fesm2015/ng-nest-ui-icon.js +3 -2
- package/fesm2015/ng-nest-ui-icon.js.map +1 -1
- package/fesm2015/ng-nest-ui-inner.js +1 -1
- package/fesm2015/ng-nest-ui-inner.js.map +1 -1
- package/fesm2015/ng-nest-ui-input.js +9 -7
- package/fesm2015/ng-nest-ui-input.js.map +1 -1
- package/fesm2015/ng-nest-ui-list.js +4 -3
- package/fesm2015/ng-nest-ui-list.js.map +1 -1
- package/fesm2015/ng-nest-ui-loading.js +2 -1
- package/fesm2015/ng-nest-ui-loading.js.map +1 -1
- package/fesm2015/ng-nest-ui-menu.js +6 -6
- package/fesm2015/ng-nest-ui-menu.js.map +1 -1
- package/fesm2015/ng-nest-ui-message-box.js +22 -24
- package/fesm2015/ng-nest-ui-message-box.js.map +1 -1
- package/fesm2015/ng-nest-ui-message.js +51 -18
- package/fesm2015/ng-nest-ui-message.js.map +1 -1
- package/fesm2015/ng-nest-ui-notification.js +1 -1
- package/fesm2015/ng-nest-ui-notification.js.map +1 -1
- package/fesm2015/ng-nest-ui-pagination.js +3 -2
- package/fesm2015/ng-nest-ui-pagination.js.map +1 -1
- package/fesm2015/ng-nest-ui-popconfirm.js +33 -5
- package/fesm2015/ng-nest-ui-popconfirm.js.map +1 -1
- package/fesm2015/ng-nest-ui-popover.js +15 -3
- package/fesm2015/ng-nest-ui-popover.js.map +1 -1
- package/fesm2015/ng-nest-ui-portal.js +10 -10
- package/fesm2015/ng-nest-ui-portal.js.map +1 -1
- package/fesm2015/ng-nest-ui-progress.js +226 -17
- package/fesm2015/ng-nest-ui-progress.js.map +1 -1
- package/fesm2015/ng-nest-ui-radio.js +3 -2
- package/fesm2015/ng-nest-ui-radio.js.map +1 -1
- package/fesm2015/ng-nest-ui-rate.js +5 -5
- package/fesm2015/ng-nest-ui-rate.js.map +1 -1
- package/fesm2015/ng-nest-ui-ripple.js.map +1 -1
- package/fesm2015/ng-nest-ui-select.js +7 -6
- package/fesm2015/ng-nest-ui-select.js.map +1 -1
- package/fesm2015/ng-nest-ui-skeleton.js +2 -1
- package/fesm2015/ng-nest-ui-skeleton.js.map +1 -1
- package/fesm2015/ng-nest-ui-slider.js +7 -8
- package/fesm2015/ng-nest-ui-slider.js.map +1 -1
- package/fesm2015/ng-nest-ui-statistic.js +6 -4
- package/fesm2015/ng-nest-ui-statistic.js.map +1 -1
- package/fesm2015/ng-nest-ui-steps.js +24 -11
- package/fesm2015/ng-nest-ui-steps.js.map +1 -1
- package/fesm2015/ng-nest-ui-table.js +13 -10
- package/fesm2015/ng-nest-ui-table.js.map +1 -1
- package/fesm2015/ng-nest-ui-tabs.js +5 -4
- package/fesm2015/ng-nest-ui-tabs.js.map +1 -1
- package/fesm2015/ng-nest-ui-tag.js +2 -1
- package/fesm2015/ng-nest-ui-tag.js.map +1 -1
- package/fesm2015/ng-nest-ui-text-retract.js +2 -1
- package/fesm2015/ng-nest-ui-text-retract.js.map +1 -1
- package/fesm2015/ng-nest-ui-textarea.js +3 -12
- package/fesm2015/ng-nest-ui-textarea.js.map +1 -1
- package/fesm2015/ng-nest-ui-theme.js +2 -2
- package/fesm2015/ng-nest-ui-theme.js.map +1 -1
- package/fesm2015/ng-nest-ui-time-picker.js +33 -16
- package/fesm2015/ng-nest-ui-time-picker.js.map +1 -1
- package/fesm2015/ng-nest-ui-timeline.js +3 -2
- package/fesm2015/ng-nest-ui-timeline.js.map +1 -1
- package/fesm2015/ng-nest-ui-tooltip.js +3 -2
- package/fesm2015/ng-nest-ui-tooltip.js.map +1 -1
- package/fesm2015/ng-nest-ui-transfer.js +3 -2
- package/fesm2015/ng-nest-ui-transfer.js.map +1 -1
- package/fesm2015/ng-nest-ui-tree.js +8 -7
- package/fesm2015/ng-nest-ui-tree.js.map +1 -1
- package/fesm2015/ng-nest-ui-upload.js +5 -4
- package/fesm2015/ng-nest-ui-upload.js.map +1 -1
- package/find/find.component.d.ts +1 -1
- package/find/find.property.d.ts +31 -1
- package/form/control.component.d.ts +1 -1
- package/form/form.component.d.ts +1 -1
- package/form/form.property.d.ts +6 -6
- package/inner/inner.component.d.ts +1 -1
- package/input/input-group.component.d.ts +2 -4
- package/list/list.component.d.ts +2 -2
- package/menu/menu.component.d.ts +1 -1
- package/message/message-ref.d.ts +8 -0
- package/message/message.component.d.ts +3 -3
- package/message/message.property.d.ts +24 -4
- package/message/message.service.d.ts +4 -1
- package/message/public-api.d.ts +1 -0
- package/message-box/message-box.component.d.ts +2 -1
- package/notification/notification.component.d.ts +1 -1
- package/package.json +1 -1
- package/pagination/pagination.component.d.ts +1 -1
- package/popconfirm/popconfirm.component.d.ts +6 -2
- package/popconfirm/popconfirm.property.d.ts +13 -2
- package/popover/popover.property.d.ts +6 -1
- package/portal/portal.module.d.ts +1 -1
- package/portal/portal.service.d.ts +2 -3
- package/progress/progress.component.d.ts +31 -3
- package/progress/progress.property.d.ts +80 -5
- package/radio/radio.component.d.ts +1 -1
- package/rate/rate.component.d.ts +5 -5
- package/select/select-portal.component.d.ts +1 -3
- package/select/select.component.d.ts +1 -1
- package/slider/slider.component.d.ts +1 -1
- package/steps/steps.component.d.ts +1 -1
- package/steps/steps.property.d.ts +7 -2
- package/table/table-body.component.d.ts +1 -1
- package/table/table-head.component.d.ts +1 -1
- package/table/table.component.d.ts +1 -1
- package/table/table.property.d.ts +11 -1
- package/textarea/textarea.property.d.ts +1 -6
- package/theme/theme.component.d.ts +1 -1
- package/time-picker/time-picker-frame.component.d.ts +1 -0
- package/time-picker/time-picker-portal.component.d.ts +1 -3
- package/time-picker/time-picker.component.d.ts +5 -3
- package/timeline/timeline.component.d.ts +1 -1
- package/transfer/transfer.component.d.ts +1 -1
- package/tree/tree-node.component.d.ts +1 -1
- package/tree/tree.component.d.ts +1 -1
- 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
|
|
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: [],
|
|
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(
|
|
54
|
-
return
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
176
|
+
msgPlacement.list = [...this.messages[option.placement].list, option];
|
|
152
177
|
}
|
|
153
|
-
this.messageChange(
|
|
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,
|
|
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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"}
|
|
@@ -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
|
-
|
|
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(
|
|
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":"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"}
|
|
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.
|
|
126
|
-
|
|
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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"}
|