@pepperi-addons/ngx-lib 0.5.0-ng16.7 → 0.5.0-ng17.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/core/http/interceptors/index.d.ts +2 -2
- package/esm2022/address/address.component.mjs +6 -6
- package/esm2022/address/address.module.mjs +4 -4
- package/esm2022/attachment/attachment.component.mjs +5 -5
- package/esm2022/attachment/attachment.module.mjs +4 -4
- package/esm2022/bread-crumbs/bread-crumbs.component.mjs +6 -6
- package/esm2022/bread-crumbs/bread-crumbs.module.mjs +5 -5
- package/esm2022/button/button.component.mjs +5 -5
- package/esm2022/button/button.module.mjs +4 -4
- package/esm2022/carousel/carousel-item.directive.mjs +6 -6
- package/esm2022/carousel/carousel.component.mjs +6 -6
- package/esm2022/carousel/carousel.module.mjs +4 -4
- package/esm2022/checkbox/checkbox.component.mjs +5 -5
- package/esm2022/checkbox/checkbox.module.mjs +5 -5
- package/esm2022/chips/chips.component.mjs +6 -6
- package/esm2022/chips/chips.module.mjs +5 -5
- package/esm2022/chips/chips.service.mjs +4 -4
- package/esm2022/color/color-picker.component.mjs +6 -6
- package/esm2022/color/color.component.mjs +5 -5
- package/esm2022/color/color.module.mjs +5 -5
- package/esm2022/core/clipboard/clipboard.directive.mjs +3 -3
- package/esm2022/core/clipboard/clipboard.service.mjs +3 -3
- package/esm2022/core/common/directives/auto-width.directive.mjs +5 -5
- package/esm2022/core/common/directives/base-destroyer.directive.mjs +4 -4
- package/esm2022/core/common/directives/button-blur.directive.mjs +5 -5
- package/esm2022/core/common/directives/button-loader.directive.mjs +6 -6
- package/esm2022/core/common/directives/data-qa.directive.mjs +5 -5
- package/esm2022/core/common/directives/div-loader.directive.mjs +6 -6
- package/esm2022/core/common/directives/menu-blur.directive.mjs +5 -5
- package/esm2022/core/common/directives/prevent-multi-click.directive.mjs +3 -3
- package/esm2022/core/common/directives/print.directive.mjs +3 -3
- package/esm2022/core/common/pipes/common-pipes.mjs +33 -33
- package/esm2022/core/common/pipes/date-ago.pipe.mjs +4 -4
- package/esm2022/core/common/services/addon.service.mjs +5 -5
- package/esm2022/core/common/services/color.service.mjs +3 -3
- package/esm2022/core/common/services/cookie.service.mjs +5 -5
- package/esm2022/core/common/services/data-convertor.service.mjs +3 -3
- package/esm2022/core/common/services/file.service.mjs +4 -4
- package/esm2022/core/common/services/jwt-helper.service.mjs +3 -3
- package/esm2022/core/common/services/session.service.mjs +4 -4
- package/esm2022/core/common/services/translate.service.mjs +4 -4
- package/esm2022/core/common/services/utilities.service.mjs +5 -5
- package/esm2022/core/common/services/validator.service.mjs +5 -5
- package/esm2022/core/common/services/window-scrolling.service.mjs +4 -4
- package/esm2022/core/customization/customization.service.mjs +4 -4
- package/esm2022/core/http/interceptors/error.interceptor.mjs +3 -3
- package/esm2022/core/http/interceptors/loader.interceptor.mjs +4 -4
- package/esm2022/core/http/interceptors/profiler.interceptor.mjs +3 -3
- package/esm2022/core/http/services/http.service.mjs +4 -4
- package/esm2022/core/http/services/loader.service.mjs +4 -4
- package/esm2022/core/layout/layout.service.mjs +5 -5
- package/esm2022/core/layout/rtl.directive.mjs +8 -8
- package/esm2022/core/portal/attach.directive.mjs +5 -5
- package/esm2022/core/portal/portal.service.mjs +4 -4
- package/esm2022/core/portal/target.directive.mjs +5 -5
- package/esm2022/core/scroll-to/scroll-to.service.mjs +3 -3
- package/esm2022/date/date.component.mjs +6 -6
- package/esm2022/date/date.model.mjs +10 -10
- package/esm2022/date/date.module.mjs +5 -5
- package/esm2022/dialog/default-dialog.component.mjs +6 -6
- package/esm2022/dialog/dialog.component.mjs +5 -5
- package/esm2022/dialog/dialog.module.mjs +5 -5
- package/esm2022/dialog/dialog.service.mjs +4 -4
- package/esm2022/draggable-items/draggable-item/draggable-item.component.mjs +5 -5
- package/esm2022/draggable-items/draggable-items.component.mjs +5 -5
- package/esm2022/draggable-items/draggable-items.module.mjs +5 -5
- package/esm2022/field-title/field-title.component.mjs +4 -4
- package/esm2022/field-title/field-title.module.mjs +5 -5
- package/esm2022/files-uploader/files-uploader.component.mjs +6 -6
- package/esm2022/files-uploader/files-uploader.module.mjs +5 -5
- package/esm2022/form/field-generator.component.mjs +4 -4
- package/esm2022/form/form.component.mjs +5 -5
- package/esm2022/form/form.module.mjs +5 -5
- package/esm2022/form/indicators.component.mjs +4 -4
- package/esm2022/form/internal-button.component.mjs +5 -5
- package/esm2022/form/internal-carusel.component.mjs +5 -5
- package/esm2022/form/internal-carusel.service.mjs +4 -4
- package/esm2022/form/internal-field-generator.component.mjs +4 -4
- package/esm2022/form/internal-form.component.mjs +5 -5
- package/esm2022/form/internal-list.component.mjs +5 -5
- package/esm2022/form/internal-menu.component.mjs +4 -4
- package/esm2022/form/internal-page.component.mjs +5 -5
- package/esm2022/form/internal-page.service.mjs +4 -4
- package/esm2022/group-buttons/group-buttons.component.mjs +5 -5
- package/esm2022/group-buttons/group-buttons.module.mjs +5 -5
- package/esm2022/icon/icon-registry.service.mjs +3 -3
- package/esm2022/icon/icon.component.mjs +5 -5
- package/esm2022/icon/icon.module.mjs +4 -4
- package/esm2022/icon/icon.service.mjs +5 -5
- package/esm2022/image/image.component.mjs +5 -5
- package/esm2022/image/image.module.mjs +5 -5
- package/esm2022/image/image.service.mjs +4 -4
- package/esm2022/images-filmstrip/images-filmstrip.component.mjs +6 -6
- package/esm2022/images-filmstrip/images-filmstrip.module.mjs +5 -5
- package/esm2022/link/link.component.mjs +5 -5
- package/esm2022/link/link.module.mjs +5 -5
- package/esm2022/link/link.pipes.mjs +3 -3
- package/esm2022/list/list-actions.component.mjs +5 -5
- package/esm2022/list/list-carousel.component.mjs +6 -6
- package/esm2022/list/list-chooser.component.mjs +5 -5
- package/esm2022/list/list-pager.component.mjs +7 -7
- package/esm2022/list/list-sorting.component.mjs +5 -5
- package/esm2022/list/list-total.component.mjs +5 -5
- package/esm2022/list/list-views.component.mjs +5 -5
- package/esm2022/list/list.component.mjs +5 -5
- package/esm2022/list/list.module.mjs +5 -5
- package/esm2022/list/list.pipes.mjs +6 -6
- package/esm2022/list/virtual-scroller.mjs +10 -10
- package/esm2022/menu/menu-item.component.mjs +5 -5
- package/esm2022/menu/menu.component.mjs +7 -7
- package/esm2022/menu/menu.module.mjs +5 -5
- package/esm2022/ngx-lib.module.mjs +4 -4
- package/esm2022/page-layout/page-layout.component.mjs +5 -5
- package/esm2022/page-layout/page-layout.module.mjs +4 -4
- package/esm2022/profile-data-views-list/profile-data-view/profile-data-view.component.mjs +5 -5
- package/esm2022/profile-data-views-list/profile-data-views-card/profile-data-views-card.component.mjs +5 -5
- package/esm2022/profile-data-views-list/profile-data-views-list.component.mjs +5 -5
- package/esm2022/profile-data-views-list/profile-data-views-list.module.mjs +5 -5
- package/esm2022/quantity-selector/quantity-selector-validation.directive.mjs +5 -5
- package/esm2022/quantity-selector/quantity-selector.component.mjs +7 -7
- package/esm2022/quantity-selector/quantity-selector.module.mjs +5 -5
- package/esm2022/quantity-selector/quantity-selector.pipes.mjs +3 -3
- package/esm2022/query-builder/common/services/output-query.service.mjs +4 -4
- package/esm2022/query-builder/common/services/query-structure.service.mjs +4 -4
- package/esm2022/query-builder/common/services/type-convertor.service.mjs +4 -4
- package/esm2022/query-builder/query-builder-item/query-builder-item.component.mjs +5 -5
- package/esm2022/query-builder/query-builder-section/query-builder-section.component.mjs +5 -5
- package/esm2022/query-builder/query-builder.component.mjs +5 -5
- package/esm2022/query-builder/query-builder.module.mjs +5 -5
- package/esm2022/query-builder/query-builder.service.mjs +4 -4
- package/esm2022/remote-loader/addon-block-loader.component.mjs +5 -5
- package/esm2022/remote-loader/addon-block-loader.service.mjs +4 -4
- package/esm2022/remote-loader/remote-loader-element.component.mjs +6 -6
- package/esm2022/remote-loader/remote-loader.component.mjs +7 -9
- package/esm2022/remote-loader/remote-loader.module.mjs +4 -4
- package/esm2022/remote-loader/remote-loader.service.mjs +4 -4
- package/esm2022/rich-html-textarea/rich-html-textarea.component.mjs +5 -5
- package/esm2022/rich-html-textarea/rich-html-textarea.module.mjs +5 -5
- package/esm2022/search/search.component.mjs +8 -8
- package/esm2022/search/search.module.mjs +5 -5
- package/esm2022/select/select.component.mjs +5 -5
- package/esm2022/select/select.module.mjs +5 -5
- package/esm2022/select-panel/select-panel.component.mjs +5 -5
- package/esm2022/select-panel/select-panel.module.mjs +4 -4
- package/esm2022/separator/separator.component.mjs +5 -5
- package/esm2022/separator/separator.module.mjs +4 -4
- package/esm2022/side-bar/side-bar.component.mjs +7 -7
- package/esm2022/side-bar/side-bar.module.mjs +5 -5
- package/esm2022/signature/signature-dialog.component.mjs +6 -6
- package/esm2022/signature/signature.component.mjs +5 -5
- package/esm2022/signature/signature.module.mjs +5 -5
- package/esm2022/size-detector/size-detector.component.mjs +5 -5
- package/esm2022/size-detector/size-detector.module.mjs +4 -4
- package/esm2022/skeleton-loader/skeleton-loader.component.mjs +6 -6
- package/esm2022/skeleton-loader/skeleton-loader.module.mjs +4 -4
- package/esm2022/slider/slider.component.mjs +5 -5
- package/esm2022/slider/slider.module.mjs +4 -4
- package/esm2022/smart-filters/boolean-filter/boolean-filter.component.mjs +4 -4
- package/esm2022/smart-filters/common/filter-actions.component.mjs +4 -4
- package/esm2022/smart-filters/common/model/base-filter-component.mjs +5 -5
- package/esm2022/smart-filters/date-filter/date-filter.component.mjs +4 -4
- package/esm2022/smart-filters/multi-select-filter/multi-select-filter.component.mjs +4 -4
- package/esm2022/smart-filters/number-filter/number-filter.component.mjs +4 -4
- package/esm2022/smart-filters/smart-filters.component.mjs +5 -5
- package/esm2022/smart-filters/smart-filters.module.mjs +5 -5
- package/esm2022/smart-filters/text-filter/text-filter.component.mjs +4 -4
- package/esm2022/snack-bar/default-snack-bar.component.mjs +6 -6
- package/esm2022/snack-bar/snack-bar.component.mjs +5 -5
- package/esm2022/snack-bar/snack-bar.module.mjs +5 -5
- package/esm2022/snack-bar/snack-bar.service.mjs +4 -4
- package/esm2022/textarea/textarea.component.mjs +5 -5
- package/esm2022/textarea/textarea.module.mjs +5 -5
- package/esm2022/textbox/textbox-validation.directive.mjs +5 -5
- package/esm2022/textbox/textbox.component.mjs +5 -5
- package/esm2022/textbox/textbox.module.mjs +5 -5
- package/esm2022/textbox-icon/textbox-icon.component.mjs +4 -4
- package/esm2022/textbox-icon/textbox-icon.module.mjs +5 -5
- package/esm2022/top-bar/top-bar.component.mjs +5 -5
- package/esm2022/top-bar/top-bar.module.mjs +5 -5
- package/fesm2022/pepperi-addons-ngx-lib-address.mjs +10 -10
- package/fesm2022/pepperi-addons-ngx-lib-address.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-attachment.mjs +9 -9
- package/fesm2022/pepperi-addons-ngx-lib-attachment.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-bread-crumbs.mjs +11 -11
- package/fesm2022/pepperi-addons-ngx-lib-bread-crumbs.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-button.mjs +9 -9
- package/fesm2022/pepperi-addons-ngx-lib-button.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-carousel.mjs +15 -15
- package/fesm2022/pepperi-addons-ngx-lib-carousel.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-checkbox.mjs +10 -10
- package/fesm2022/pepperi-addons-ngx-lib-checkbox.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-chips.mjs +15 -15
- package/fesm2022/pepperi-addons-ngx-lib-chips.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-color.mjs +16 -16
- package/fesm2022/pepperi-addons-ngx-lib-color.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-date.mjs +21 -21
- package/fesm2022/pepperi-addons-ngx-lib-date.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-dialog.mjs +19 -19
- package/fesm2022/pepperi-addons-ngx-lib-dialog.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-draggable-items.mjs +14 -14
- package/fesm2022/pepperi-addons-ngx-lib-draggable-items.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-field-title.mjs +9 -9
- package/fesm2022/pepperi-addons-ngx-lib-field-title.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-files-uploader.mjs +11 -11
- package/fesm2022/pepperi-addons-ngx-lib-files-uploader.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-form.mjs +50 -50
- package/fesm2022/pepperi-addons-ngx-lib-form.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-group-buttons.mjs +10 -10
- package/fesm2022/pepperi-addons-ngx-lib-group-buttons.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-icon.mjs +17 -17
- package/fesm2022/pepperi-addons-ngx-lib-icon.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-image.mjs +14 -14
- package/fesm2022/pepperi-addons-ngx-lib-image.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-images-filmstrip.mjs +11 -11
- package/fesm2022/pepperi-addons-ngx-lib-images-filmstrip.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-link.mjs +13 -13
- package/fesm2022/pepperi-addons-ngx-lib-link.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-list.mjs +47 -47
- package/fesm2022/pepperi-addons-ngx-lib-list.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-menu.mjs +17 -17
- package/fesm2022/pepperi-addons-ngx-lib-menu.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-page-layout.mjs +9 -9
- package/fesm2022/pepperi-addons-ngx-lib-page-layout.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-profile-data-views-list.mjs +18 -18
- package/fesm2022/pepperi-addons-ngx-lib-profile-data-views-list.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-quantity-selector.mjs +20 -20
- package/fesm2022/pepperi-addons-ngx-lib-quantity-selector.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-query-builder.mjs +34 -34
- package/fesm2022/pepperi-addons-ngx-lib-query-builder.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-remote-loader.mjs +28 -30
- package/fesm2022/pepperi-addons-ngx-lib-remote-loader.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-rich-html-textarea.mjs +10 -10
- package/fesm2022/pepperi-addons-ngx-lib-rich-html-textarea.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-search.mjs +14 -14
- package/fesm2022/pepperi-addons-ngx-lib-search.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-select-panel.mjs +9 -9
- package/fesm2022/pepperi-addons-ngx-lib-select-panel.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-select.mjs +10 -10
- package/fesm2022/pepperi-addons-ngx-lib-select.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-separator.mjs +9 -9
- package/fesm2022/pepperi-addons-ngx-lib-separator.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-side-bar.mjs +12 -12
- package/fesm2022/pepperi-addons-ngx-lib-side-bar.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-signature.mjs +15 -15
- package/fesm2022/pepperi-addons-ngx-lib-signature.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-size-detector.mjs +9 -9
- package/fesm2022/pepperi-addons-ngx-lib-size-detector.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-skeleton-loader.mjs +10 -10
- package/fesm2022/pepperi-addons-ngx-lib-skeleton-loader.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-slider.mjs +9 -9
- package/fesm2022/pepperi-addons-ngx-lib-slider.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-smart-filters.mjs +32 -32
- package/fesm2022/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-snack-bar.mjs +19 -19
- package/fesm2022/pepperi-addons-ngx-lib-snack-bar.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-textarea.mjs +10 -10
- package/fesm2022/pepperi-addons-ngx-lib-textarea.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-textbox-icon.mjs +9 -9
- package/fesm2022/pepperi-addons-ngx-lib-textbox-icon.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-textbox.mjs +14 -14
- package/fesm2022/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib-top-bar.mjs +10 -10
- package/fesm2022/pepperi-addons-ngx-lib-top-bar.mjs.map +1 -1
- package/fesm2022/pepperi-addons-ngx-lib.mjs +178 -178
- package/fesm2022/pepperi-addons-ngx-lib.mjs.map +1 -1
- package/package.json +27 -27
- package/src/core/style/base/borderRadius.component.ts +2 -4
- package/src/core/style/base/breakpoints.component.ts +2 -4
- package/src/core/style/base/colors.component.ts +2 -4
- package/src/core/style/base/shadows.component.ts +2 -4
- package/src/core/style/base/spacing.component.ts +2 -4
- package/src/core/style/base/states.component.ts +2 -4
- package/src/core/style/base/typography.component.ts +2 -4
- package/src/core/style/base/zIndex.component.ts +2 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pepperi-addons-ngx-lib-list.mjs","sources":["../../../projects/ngx-lib/list/list.model.ts","../../../projects/ngx-lib/list/list-pager.component.ts","../../../projects/ngx-lib/list/list-pager.component.html","../../../projects/ngx-lib/list/list.component.ts","../../../projects/ngx-lib/list/list.component.html","../../../projects/ngx-lib/list/list-actions.component.ts","../../../projects/ngx-lib/list/list-actions.component.html","../../../projects/ngx-lib/list/list-carousel.component.ts","../../../projects/ngx-lib/list/list-carousel.component.html","../../../projects/ngx-lib/list/list-chooser.component.ts","../../../projects/ngx-lib/list/list-chooser.component.html","../../../projects/ngx-lib/list/list-sorting.component.ts","../../../projects/ngx-lib/list/list-sorting.component.html","../../../projects/ngx-lib/list/list-total.component.ts","../../../projects/ngx-lib/list/list-total.component.html","../../../projects/ngx-lib/list/list-views.component.ts","../../../projects/ngx-lib/list/list-views.component.html","../../../projects/ngx-lib/list/list.pipes.ts","../../../projects/ngx-lib/list/list.module.ts","../../../projects/ngx-lib/list/public-api.ts","../../../projects/ngx-lib/list/pepperi-addons-ngx-lib-list.ts"],"sourcesContent":["import { ObjectsDataRow } from '@pepperi-addons/ngx-lib';\n\nexport type PepListSelectionType =\n | 'none'\n | 'single'\n | 'multi';\n\nexport type PepListPagerType = 'pages' | 'scroll';\n\nexport type PepListViewType = '' | 'cards' | 'lines' | 'table'; // | 'map';\n\nexport type PepListCardSizeType = 'sm' | 'md';\n\nexport type PepListTableViewType = 'compact' | 'regular';\n\nexport interface IPepListItemClickEvent {\n source: ObjectsDataRow;\n viewType: PepListViewType;\n}\n\nexport class PepSelectionData {\n selectionType: number;\n rows: Array<any>;\n rowTypes: Array<any>;\n}\n\nexport interface IPepListLoadItemsEvent {\n fromIndex: number;\n toIndex: number;\n // updateItemsFunc: () => void; //() => any; \n}\n\nexport interface IPepListLoadPageEvent {\n pageIndex: number;\n pageSize: number;\n // updatePageFunc: () => void; //() => any; \n}\n\nexport interface IPepListStartIndexChangeEvent {\n startIndex: number;\n}\n\nexport const DEFAULT_PAGE_SIZE = 50;\n\nexport interface IPepListSortingData {\n sortBy: string;\n isAsc: boolean;\n}\n\nexport type IPepListSortingChangeEvent = IPepListSortingData\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injectable,\n Input,\n Output,\n} from '@angular/core';\nimport { PepLayoutService, } from '@pepperi-addons/ngx-lib';\nimport { DEFAULT_PAGE_SIZE } from './list.model';\n\nexport class IPepListPagerChangeEvent {\n pageIndex: number;\n previousPageIndex: number;\n pageSize: number;\n length: number;\n}\n\n@Component({\n selector: 'pep-list-pager',\n templateUrl: './list-pager.component.html',\n styleUrls: ['./list-pager.component.scss'],\n})\n@Injectable()\nexport class PepListPagerComponent {\n @Input() disabled = false;\n private _pageIndex = 0;\n @Input()\n set pageIndex(value: number) {\n this.setPageIndex(value);\n }\n get pageIndex(): number {\n return this._pageIndex;\n }\n\n @Input() length = 0;\n @Input() pageSize = DEFAULT_PAGE_SIZE;\n\n @Output()\n pagerChange: EventEmitter<IPepListPagerChangeEvent> = new EventEmitter<IPepListPagerChangeEvent>();\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n public layoutService: PepLayoutService) { }\n\n nextPage(): void {\n if (!this.hasNextPage()) {\n return;\n }\n\n this.setPageIndex(this.pageIndex + 1);\n }\n\n previousPage(): void {\n if (!this.hasPreviousPage()) {\n return;\n }\n\n this.setPageIndex(this.pageIndex - 1);\n }\n\n firstPage(): void {\n if (!this.hasPreviousPage()) {\n return;\n }\n\n this.setPageIndex(0);\n }\n\n lastPage(): void {\n if (!this.hasNextPage()) {\n return;\n }\n\n this.setPageIndex(this.getNumberOfPages() - 1);\n }\n\n hasPreviousPage(): boolean {\n return this.pageIndex >= 1 && this.pageSize != 0;\n }\n\n hasNextPage(): boolean {\n const maxPageIndex = this.getNumberOfPages() - 1;\n return this.pageIndex < maxPageIndex && this.pageSize != 0;\n }\n\n getNumberOfPages(): number {\n if (!this.pageSize) {\n return 0;\n }\n\n return Math.ceil(this.length / this.pageSize);\n }\n\n /** Checks whether the buttons for going forwards should be disabled. */\n _nextButtonsDisabled() {\n return this.disabled || !this.hasNextPage();\n }\n\n /** Checks whether the buttons for going backwards should be disabled. */\n _previousButtonsDisabled() {\n return this.disabled || !this.hasPreviousPage();\n }\n\n onValueChange(value: string) {\n const pageNumber = coerceNumberProperty(value);\n this.setPageIndex(pageNumber - 1); // - 1 to convert number into index.\n }\n\n private setPageIndex(newIndex: number) {\n const previousPageIndex = this.pageIndex;\n\n if (newIndex >= 0 && newIndex < this.getNumberOfPages()) {\n this._pageIndex = newIndex;\n } else {\n this._pageIndex = 0;\n }\n\n if (this.pageIndex !== previousPageIndex) {\n this._emitChangeEvent(previousPageIndex);\n }\n }\n\n /** Emits an event notifying that a change of the paginator's properties has been triggered. */\n private _emitChangeEvent(previousPageIndex: number) {\n this.pagerChange.emit({\n previousPageIndex,\n pageIndex: this.pageIndex,\n pageSize: this.pageSize,\n length: this.length,\n });\n }\n}\n","<div class=\"pager-container body-sm\">\n <span class=\"pep-spacing-element\">{{ 'LIST.PAGER_PAGE' | translate }}</span>\n <pep-textbox pepAutoWidth class=\"page-index pep-spacing-element\" [key]=\"'pageIndex'\" [type]=\"'int'\"\n [disabled]=\"disabled\" [xAlignment]=\"'center'\" [renderTitle]=\"false\" [renderError]=\"false\" [renderSymbol]=\"false\"\n [value]=\"pageIndex + 1\" [minValue]=\"1\" [maxValue]=\"this.getNumberOfPages()\"\n [maxFieldCharacters]=\"6\" [mandatory]=\"true\" (valueChange)=\"onValueChange($event)\">\n </pep-textbox>\n <span class=\"pep-spacing-element\">{{ 'LIST.PAGER_OUT_OF' | translate }}</span>\n <span class=\"pep-spacing-element\">{{ getNumberOfPages() }}</span>\n <button mat-button [disabled]=\"disabled || _previousButtonsDisabled()\"\n [ngClass]=\"{ disabled: disabled || _previousButtonsDisabled() }\"\n class=\"pep-button icon-button pep-spacing-element sm weak\" pepRtlDirection pepMenuBlur (click)=\"previousPage()\"\n [title]=\"('LIST.PAGER_PREVIOUS' | translate)\">\n <mat-icon>\n <pep-icon [name]=\"layoutService.isRtl() ? 'arrow_right' : 'arrow_left'\"></pep-icon>\n </mat-icon>\n </button>\n <button mat-button [disabled]=\"disabled || _nextButtonsDisabled()\"\n [ngClass]=\"{ disabled: disabled || _nextButtonsDisabled() }\"\n class=\"pep-button icon-button pep-spacing-element sm weak\" pepRtlDirection pepMenuBlur (click)=\"nextPage()\"\n [title]=\"('LIST.PAGER_NEXT' | translate)\">\n <mat-icon>\n <pep-icon [name]=\"layoutService.isRtl() ? 'arrow_left' : 'arrow_right'\"></pep-icon>\n </mat-icon>\n </button>\n</div>","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n Renderer2,\n ViewChild,\n ElementRef,\n ChangeDetectorRef,\n OnDestroy,\n OnChanges,\n NgZone,\n} from '@angular/core';\nimport { delay } from 'rxjs/operators';\nimport {\n PepLayoutService,\n PepScreenSizeType,\n PepSessionService,\n UIControl,\n UIControlField,\n FIELD_TYPE,\n ObjectsDataRow,\n} from '@pepperi-addons/ngx-lib';\nimport {\n IPepFormFieldValueChangeEvent,\n IPepFormFieldClickEvent,\n} from '@pepperi-addons/ngx-lib/form';\n\nimport { IPageInfo } from './virtual-scroller';\n//import { VirtualScrollerComponent, IPageInfo } from './virtual-scroller';\nimport {\n IPepListLoadItemsEvent,\n IPepListSortingChangeEvent,\n IPepListItemClickEvent,\n PepListSelectionType,\n PepListViewType,\n PepSelectionData,\n PepListPagerType,\n IPepListLoadPageEvent,\n DEFAULT_PAGE_SIZE,\n IPepListStartIndexChangeEvent,\n PepListCardSizeType,\n PepListTableViewType,\n IPepListSortingData,\n} from './list.model';\nimport {\n IPepListPagerChangeEvent,\n PepListPagerComponent,\n} from './list-pager.component';\n\n//import * as tween from '@tweenjs/tween.js';\nimport tween, { Tween, Easing, update } from '@tweenjs/tween.js';\n\n@Component({\n selector: 'pep-list',\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n host: {\n '(window:resize)': 'onWinResize($event)',\n },\n // changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PepListComponent implements OnInit, OnChanges, OnDestroy {\n @ViewChild('listContainerResizable', { read: ElementRef }) private listContainerResizableElementRef: ElementRef;\n\n static TOP_ITEMS_DEFAULT = 100;\n static TOP_ITEMS_TABLE = 100;\n static TOP_ITEMS_THUMBNAILS = 100;\n static TOP_ITEMS_ARRAY = 2500;\n\n static SELECTED_ITEMS_STATE_KEY = 'SelectedItems';\n static UN_SELECTED_ITEMS_STATE_KEY = 'UnSelectedItems';\n static ALL_SELECTED_STATE_KEY = 'AllSelected';\n static SORT_BY_STATE_KEY = 'SortBy';\n static ASCENDING_STATE_KEY = 'IsAscending';\n\n static MINIMUM_COLUMN_WIDTH = 72;\n\n @Input() \n set sorting(value: IPepListSortingData) {\n this.sortBy = value?.sortBy || '';\n this.isAsc = value?.sortBy.length > 0 ? value.isAsc : this.isAsc;\n }\n get sorting(): IPepListSortingData {\n return {\n sortBy: this.sortBy,\n isAsc: this.isAsc\n };\n }\n \n @Input() cacheSize = -1;\n @Input() noDataFoundMsg: string = null;\n @Input() selectionTypeForActions: PepListSelectionType = 'multi';\n @Input() showCardSelection = false;\n @Input() hideAllSelectionInMulti = false;\n\n @Input() cardSize: PepListCardSizeType = 'md';\n @Input() tableViewType: PepListTableViewType = 'regular';\n \n private _viewType: PepListViewType = '';\n @Input()\n set viewType(value: PepListViewType) {\n this._viewType = value;\n this.isTable = value === 'table';\n }\n get viewType(): PepListViewType {\n return this._viewType;\n }\n\n @Input() firstFieldAsLink = false;\n @Input() supportSorting = true;\n @Input() supportSortingFields: string[] = undefined;\n @Input() supportResizing = true;\n\n private _parentScroll: Element | Window = null;\n @Input()\n set parentScroll(value: Element | Window) {\n this._parentScroll = value;\n }\n get parentScroll(): Element | Window {\n return this._parentScroll;\n }\n\n @Input() disabled = false;\n\n private _lockEvents = false;\n @Input()\n set lockEvents(value: boolean) {\n this._lockEvents = value;\n\n if (this._lockEvents) {\n this.renderer.addClass(this.hostElement.nativeElement, 'lock-events');\n } else {\n this.renderer.removeClass(this.hostElement.nativeElement, 'lock-events');\n }\n }\n get lockEvents(): boolean {\n return this._lockEvents;\n }\n\n @Input() lockItemInnerEvents = false;\n @Input() printMode = false;\n @Input() isReport = false;\n @Input() zebraStripes = false;\n @Input() totalsRow = [];\n @Input() pagerType: PepListPagerType = 'scroll';\n @Input() pageSize: number = DEFAULT_PAGE_SIZE;\n @Input() pageIndex = 0;\n // @Input() startIndex = 0;\n\n @Input() bufferAmount = 0;\n @Input() scrollAnimationTime = 500;\n @Input() scrollDebounceTime = 0;\n @Input() scrollThrottlingTime = 0;\n @Input() SEPARATOR = ',';\n private _useAsWebComponent = false;\n @Input()\n set useAsWebComponent(value: boolean) {\n this._useAsWebComponent = value;\n if (value) {\n this.exportFunctionsOnHostElement();\n }\n }\n get useAsWebComponent(): boolean {\n return this._useAsWebComponent;\n }\n\n @Output()\n itemClick: EventEmitter<IPepListItemClickEvent> = new EventEmitter<IPepListItemClickEvent>();\n\n @Output()\n fieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n @Output()\n valueChange: EventEmitter<IPepFormFieldValueChangeEvent> = new EventEmitter<IPepFormFieldValueChangeEvent>();\n\n @Output()\n sortingChange: EventEmitter<IPepListSortingChangeEvent> = new EventEmitter<IPepListSortingChangeEvent>();\n\n @Output()\n selectedItemsChange: EventEmitter<number> = new EventEmitter<number>();\n\n @Output()\n selectedItemChange: EventEmitter<any> = new EventEmitter<any>();\n\n @Output()\n selectAllClick: EventEmitter<any> = new EventEmitter<any>();\n\n // @Output()\n // singleActionClick: EventEmitter<any> = new EventEmitter<any>();\n\n @Output()\n listLoad: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n loadItems: EventEmitter<IPepListLoadItemsEvent> = new EventEmitter<IPepListLoadItemsEvent>();\n\n @Output()\n loadPage: EventEmitter<IPepListLoadPageEvent> = new EventEmitter<IPepListLoadPageEvent>();\n\n @Output()\n startIndexChange: EventEmitter<IPepListStartIndexChangeEvent> = new EventEmitter<IPepListStartIndexChangeEvent>();\n\n // TODO Avner: Remove this when the virtual scroller is implemented\n // @ViewChild(VirtualScrollerComponent) private virtualScroller: VirtualScrollerComponent;\n private virtualScroller = undefined;\n @ViewChild('selectAllCB') selectAllCB: any;\n \n \n private _layout: UIControl = null;\n get layout(): UIControl {\n return this._layout;\n }\n\n totalRows = -1;\n isTable = false;\n private hasColumnWidthOfTypePercentage = true;\n\n private _items: Array<ObjectsDataRow> = null;\n get items(): Array<ObjectsDataRow> {\n return this._items;\n }\n\n private itemsCounter = 0;\n\n currentPageItems: Array<ObjectsDataRow>;\n\n\n isAllSelected = false;\n selectedItems = new Map<string, string>();\n unSelectedItems = new Map<string, string>();\n\n private currentTween: any;\n\n selectedItemId = '';\n hoveredItemId = '';\n\n private containerWidth = 0;\n private tableScrollWidth = 0;\n\n private _loadingItemsFromApi = false;\n get loadingItemsFromApi() {\n return this._loadingItemsFromApi;\n }\n\n screenSize: PepScreenSizeType;\n deviceHasMouse = false;\n\n // For resize\n pressedColumn = '';\n pressedColumnIndex = -1;\n startX = 0;\n startWidth = 0;\n tableStartWidth = 0;\n \n private lastColumnsWidth: Array<{ columnAPIName: string, calcColumnWidth: number, calcTitleColumnWidthString: string, calcColumnWidthString: string }> = [];\n\n // For sorting\n isAsc = false;\n sortBy = '';\n isUserSelected = false;\n checkForChanges: any = null;\n calculatedObjectHeight = 'auto';\n\n constructor(\n private hostElement: ElementRef,\n private layoutService: PepLayoutService,\n private sessionService: PepSessionService,\n private cd: ChangeDetectorRef,\n private renderer: Renderer2,\n private zone: NgZone\n ) {\n // this.nativeWindow = window;\n this.layoutService.onResize$.subscribe((size: PepScreenSizeType) => {\n this.screenSize = size;\n });\n\n this.layoutService.onMouseOver$.subscribe((deviceHasMouse: boolean) => {\n this.deviceHasMouse = deviceHasMouse;\n });\n }\n\n ngOnInit(): void {\n this.containerWidth = 0;\n this.deviceHasMouse = this.layoutService.getDeviceHasMouse();\n }\n\n ngOnChanges(changes): void {\n if (this.containerWidth <= 0) {\n this.setContainerWidth();\n }\n }\n\n ngOnDestroy(): void {\n // if (this.valueChange) {\n // this.valueChange.unsubscribe();\n // }\n\n // if (this.loadItems) {\n // this.loadItems.unsubscribe();\n // }\n\n // if (this.loadPage) {\n // this.loadPage.unsubscribe();\n // }\n\n // if (this.sortingChange) {\n // this.sortingChange.unsubscribe();\n // }\n\n // if (this.fieldClick) {\n // this.fieldClick.unsubscribe();\n // }\n\n // if (this.itemClick) {\n // this.itemClick.unsubscribe();\n // }\n\n // if (this.listLoad) {\n // this.listLoad.unsubscribe();\n // }\n\n this.saveSortingToSession();\n }\n\n getCachedItemsNumber() {\n return this.cacheSize >= 0 ? this.cacheSize : PepListComponent.TOP_ITEMS_ARRAY;\n }\n\n private getScrollingElement() {\n return this.parentScroll ? this.parentScroll : this.virtualScroller?.contentElementRef.nativeElement.parentElement;\n }\n\n private scrollToTop(animate = true) {\n const scrollingElement = this.getScrollingElement();\n if (scrollingElement) {\n const scrollTop = 0;\n\n // totally disable animate\n if (!animate || this.scrollAnimationTime === 0) {\n if (scrollingElement instanceof Window) {\n window.scrollTo(0, scrollTop);\n } else {\n scrollingElement.scrollTop = scrollTop;\n }\n } else {\n let animationRequest;\n const isWindow = scrollingElement instanceof Window;\n const currentScrollTop =\n scrollingElement instanceof Window\n ? window.pageYOffset\n : scrollingElement.scrollTop;\n\n if (this.currentTween !== undefined) {\n this.currentTween.stop();\n }\n this.currentTween = new tween.Tween({ scrollTop: currentScrollTop })\n .to({ scrollTop }, this.scrollAnimationTime)\n .easing(tween.Easing.Quadratic.Out)\n .onUpdate((data) => {\n if (isNaN(data.scrollTop)) {\n return;\n }\n\n if (isWindow) {\n window.scrollTo(0, data.scrollTop);\n } else {\n this.renderer.setProperty(\n scrollingElement,\n 'scrollTop',\n data.scrollTop\n );\n }\n })\n .onStop(() => {\n cancelAnimationFrame(animationRequest);\n })\n .start();\n\n const animate = (time?) => {\n this.currentTween.update(time);\n if (this.currentTween._object.scrollTop !== scrollTop) {\n this.zone.runOutsideAngular(() => {\n animationRequest = requestAnimationFrame(animate);\n });\n }\n };\n\n animate();\n }\n }\n }\n\n private getSelectionCheckBoxWidth(): number {\n return this.selectionTypeForActions === 'multi' ? 44 : (this.selectionTypeForActions === 'single' ? 44 : 0);\n }\n\n private setContainerWidth(): void {\n if (!this.hostElement.nativeElement.parentElement) {\n return;\n }\n\n const rowHeight = 40; // the table row height (2.5rem * 16font-size).\n const style = getComputedStyle(\n this.hostElement.nativeElement.parentElement\n );\n // The container-fluid class padding left + right + border\n const containerFluidSpacing =\n parseInt(style.paddingLeft, 10) + parseInt(style.paddingRight, 10);\n\n const parentContainer =\n this.hostElement.nativeElement.parentElement.parentElement > 0\n ? this.hostElement.nativeElement.parentElement.parentElement\n : this.hostElement.nativeElement.parentElement;\n\n // Calculate if vertical scroll should appear, if so set the scroll width. (this.totalRows + 1) + 1 is for the header row.\n this.tableScrollWidth = parentContainer.clientHeight < rowHeight * (this.totalRows + 1)\n ? this.layoutService.getScrollbarWidth()\n : 0;\n\n // The selectionCheckBoxWidth width + containerFluidSpacing + this.tableScrollWidth.\n const rowHeaderWidthToSub =\n containerFluidSpacing + this.getSelectionCheckBoxWidth() + this.tableScrollWidth;\n this.containerWidth = parentContainer.offsetWidth - rowHeaderWidthToSub;\n }\n\n private saveSortingToSession(): void {\n this.sessionService.setObject(\n PepListComponent.SORT_BY_STATE_KEY,\n this.sortBy\n );\n this.sessionService.setObject(\n PepListComponent.ASCENDING_STATE_KEY,\n this.isAsc\n );\n }\n\n private getTopItems(): number {\n return this.isTable\n ? PepListComponent.TOP_ITEMS_TABLE\n : PepListComponent.TOP_ITEMS_THUMBNAILS;\n }\n\n private disableScroll(disable: boolean) {\n if (disable) {\n this.renderer.addClass(this.hostElement.nativeElement.parentElement, 'lock-events');\n } else {\n this.renderer.removeClass(this.hostElement.nativeElement.parentElement, 'lock-events');\n }\n }\n\n private toggleLoadingItemsFropApi(loadingItemsFromApi: boolean): void {\n this._loadingItemsFromApi = loadingItemsFromApi;\n\n // this.disableScroll(loadingItemsFromApi);\n }\n\n private updateCurrentPageItems(startIndex: number, endIndex: number): void {\n this.currentPageItems = this.items.slice(startIndex, endIndex);\n }\n\n private setSelectionItems(\n itemId: string,\n uniqItemId: string,\n isChecked: boolean\n ): void {\n // Set selected item checkbox\n if (this.isAllSelected) {\n if (isChecked) {\n this.unSelectedItems.delete(itemId);\n this.selectedItems.set(itemId, uniqItemId);\n } else {\n this.selectedItems.delete(itemId);\n this.unSelectedItems.set(itemId, uniqItemId);\n }\n } else {\n if (isChecked) {\n this.unSelectedItems.delete(itemId);\n this.selectedItems.set(itemId, uniqItemId);\n } else {\n this.selectedItems.delete(itemId);\n this.unSelectedItems.set(itemId, uniqItemId);\n }\n }\n }\n\n private getUniqItemId(itemId: string, itemType = ''): string {\n return itemId + this.SEPARATOR + itemType;\n }\n\n private setLayout(): void {\n if (\n this.totalRows === 0 ||\n !this._layout ||\n !this._layout.ControlFields ||\n this._layout.ControlFields.length === 0\n ) {\n return;\n }\n\n this._layout.ControlFields.forEach((cf) => {\n if (cf.ColumnWidth === 0) {\n cf.ColumnWidth = 10;\n }\n\n if (\n this.isTable &&\n (cf.FieldType === FIELD_TYPE.Image ||\n // cf.FieldType === FIELD_TYPE.Indicators || ???\n cf.FieldType === FIELD_TYPE.Signature ||\n cf.FieldType === FIELD_TYPE.NumberIntegerQuantitySelector ||\n cf.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n cf.FieldType === FIELD_TYPE.NumberIntegerForMatrix ||\n cf.FieldType === FIELD_TYPE.NumberRealForMatrix ||\n cf.FieldType === FIELD_TYPE.Package ||\n cf.ApiName === 'UnitsQuantity' ||\n cf.ApiName === 'QuantitySelector')\n ) {\n cf.Layout.XAlignment = 3;\n }\n });\n\n if (!this.cd['destroyed']) {\n this.cd.detectChanges();\n }\n\n // Set the container width.\n if (this.containerWidth <= 0) {\n this.setContainerWidth();\n }\n\n const isLastColumnsWidthSet = this.setLastColumnsWidth();\n \n // Set the layout only if the last columns width couldn't set.\n if (!isLastColumnsWidthSet) {\n this.calcColumnsWidth();\n }\n \n this.checkForChanges = new Date().getTime();\n }\n\n private setLastColumnsWidth(): boolean {\n let res = false;\n\n let totalCalcColsWidth = 0;\n let widthToSet = 'inherit';\n\n if (this.lastColumnsWidth.length > 0) {\n // Check if this is the same UI control for table.\n if (this.lastColumnsWidth.length === this._layout.ControlFields.length) {\n let uiControlsAreTheSame = true;\n\n for (let index = 0; index < this._layout.ControlFields.length; index++) {\n const uiControlField: UIControlField = this._layout.ControlFields[index];\n \n if (uiControlField.ApiName !== this.lastColumnsWidth[index].columnAPIName) {\n uiControlsAreTheSame = false;\n break;\n }\n }\n \n if (uiControlsAreTheSame) {\n for (let index = 0; index < this._layout.ControlFields.length; index++) {\n const uiControlField: UIControlField = this._layout.ControlFields[index];\n uiControlField.calcColumnWidth = this.lastColumnsWidth[index].calcColumnWidth;\n uiControlField.calcTitleColumnWidthString = this.lastColumnsWidth[index].calcTitleColumnWidthString;\n uiControlField.calcColumnWidthString = this.lastColumnsWidth[index].calcColumnWidthString;\n totalCalcColsWidth += this.lastColumnsWidth[index].calcColumnWidth;\n }\n \n widthToSet = (totalCalcColsWidth + this.getSelectionCheckBoxWidth()) + 'px'\n console.log(`setLastColumnsWidth -> widthToSet: ${widthToSet} *** totalCalcColsWidth: ${totalCalcColsWidth}`);\n this.setColumnsWidth(widthToSet);\n\n res = true;\n }\n }\n }\n return res;\n }\n\n private setVirtualScrollWidth(widthToSet: string) {\n if (this.virtualScroller) {\n this.renderer.setStyle(\n this.virtualScroller.contentElementRef.nativeElement,\n 'width',\n widthToSet === 'inherit' ? '100%' : widthToSet\n );\n }\n }\n\n private setColumnsWidth(widthToSet: string) {\n // this.renderer.setStyle(\n // this.hostElement.nativeElement,\n // 'width',\n // widthToSet\n // );\n this.renderer.setStyle(\n this.listContainerResizableElementRef.nativeElement,\n 'width',\n widthToSet\n );\n\n if (this.isTable) {\n this.setVirtualScrollWidth(widthToSet);\n } else {\n // Do this only after UI is change cause the property isTable is Input and can refresh after this thread.\n setTimeout(() => {\n this.setVirtualScrollWidth(widthToSet);\n }, 0);\n }\n }\n\n private calcColumnsWidth(): void {\n const fixedMultiple = 3.78; // for converting em to pixel.\n const length = this._layout.ControlFields.length;\n \n // Is table AND there is at least one column of width type of percentage.\n if (this.isTable) {\n if (this._layout && this._layout.ControlFields) {\n this.hasColumnWidthOfTypePercentage =\n this._layout.ControlFields.filter(\n (cf) => cf.ColumnWidthType === 1\n ).length === 0;\n }\n }\n\n // If the columns size is fixed and the total is small then the container change it to percentage.\n if (!this.hasColumnWidthOfTypePercentage) {\n const totalFixedColsWidth = this._layout.ControlFields.map(\n (cf) => cf.ColumnWidth * fixedMultiple\n ).reduce((sum, current) => sum + current);\n\n if (window.innerWidth > totalFixedColsWidth) {\n this.hasColumnWidthOfTypePercentage = true;\n }\n }\n\n let totalCalcColsWidth = 0;\n\n let widthToSet = 'inherit';\n\n // Calc by percentage\n if (this.hasColumnWidthOfTypePercentage) {\n const totalColsWidth: number = this._layout.ControlFields.map(\n (cf) => cf.ColumnWidth\n ).reduce((sum, current) => sum + current);\n\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this._layout.ControlFields[index];\n const calcColumnWidthPercentage = (100 / totalColsWidth) * uiControlField.ColumnWidth;\n\n uiControlField.calcColumnWidth = Math.floor((this.containerWidth * calcColumnWidthPercentage) / 100);\n\n if (index === length - 1) {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = 'calc(100% - ' + totalCalcColsWidth + 'px)'; // For 100%\n } else {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = uiControlField.calcColumnWidth + 'px';\n totalCalcColsWidth += uiControlField.calcColumnWidth;\n }\n }\n } else {\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this._layout\n .ControlFields[index];\n const currentFixedWidth = Math.floor(\n uiControlField.ColumnWidth * fixedMultiple\n );\n\n if (index === length - 1) {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = currentFixedWidth + 'px';\n } else {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = currentFixedWidth + 'px';\n }\n\n totalCalcColsWidth += currentFixedWidth;\n }\n\n widthToSet = (totalCalcColsWidth + this.getSelectionCheckBoxWidth()) + 'px'\n }\n\n console.log(`calcColumnsWidth -> widthToSet: ${widthToSet} *** totalCalcColsWidth: ${totalCalcColsWidth}`);\n this.setColumnsWidth(widthToSet);\n }\n\n private calcObjectHeight() {\n setTimeout(() => {\n if (this.virtualScroller) {\n const content = this.virtualScroller.getContent();\n console.log(`content.children.length: ${content.children.length}`);\n\n if (content.children.length > 0) {\n const rect = this.virtualScroller.getElementSize(content.children[0]);\n this.calculatedObjectHeight = rect.height + 'px';\n console.log(`this.calculatedObjectHeight: ${this.calculatedObjectHeight}`);\n }\n }\n this.disableScroll(false);\n }, 1000);\n }\n\n private initResizeData(): void {\n this.startX = 0;\n this.startWidth = 0;\n this.tableStartWidth = 0;\n this.pressedColumn = '';\n this.pressedColumnIndex = -1;\n }\n\n private getParent(el, parentSelector): any {\n // If no parentSelector defined will bubble up all the way to *document*\n if (parentSelector === undefined) {\n parentSelector = document;\n }\n const parent = [];\n let p = el.parentNode;\n\n while (\n p &&\n p.className !== '' &&\n p.className.indexOf(parentSelector) === -1 &&\n parentSelector !== document\n ) {\n const o = p;\n p = o.parentNode;\n }\n if (p.className.indexOf(parentSelector) > -1) {\n parent.push(p); // Push that parentSelector you wanted to stop at\n }\n return parent;\n }\n\n private cleanItems(): void {\n this.itemsCounter = 0;\n this._items =\n this.totalRows > 0 ? Array<ObjectsDataRow>(this.totalRows) : [];\n this.currentPageItems = [];\n this.calculatedObjectHeight = 'auto';\n }\n\n private initVariablesFromSession(items: ObjectsDataRow[]): void {\n const selectedItemsObject: Array<any> = this.sessionService.getObject<\n Array<any>\n >(PepListComponent.SELECTED_ITEMS_STATE_KEY);\n const selectedItemsFromMap: Map<string, string> =\n selectedItemsObject && selectedItemsObject.length > 0\n ? new Map(selectedItemsObject)\n : null;\n if (\n selectedItemsFromMap != null &&\n typeof selectedItemsFromMap.size !== 'undefined' &&\n selectedItemsFromMap.size > 0\n ) {\n this.selectedItems = selectedItemsFromMap;\n this.sessionService.removeObject(\n PepListComponent.SELECTED_ITEMS_STATE_KEY\n );\n } else {\n this.selectedItems.clear();\n }\n\n const unSelectedItemsObject: Array<any> = this.sessionService.getObject<\n Array<any>\n >(PepListComponent.UN_SELECTED_ITEMS_STATE_KEY);\n const unSelectedItemsMap: Map<string, string> =\n unSelectedItemsObject && unSelectedItemsObject.length > 0\n ? new Map(unSelectedItemsObject)\n : null;\n if (\n unSelectedItemsMap != null &&\n typeof unSelectedItemsMap.size !== 'undefined' &&\n unSelectedItemsMap.size > 0\n ) {\n this.unSelectedItems = unSelectedItemsMap;\n this.sessionService.removeObject(\n PepListComponent.UN_SELECTED_ITEMS_STATE_KEY\n );\n } else {\n this.unSelectedItems.clear();\n }\n\n const isAllSelected = this.sessionService.getObject(\n PepListComponent.ALL_SELECTED_STATE_KEY\n );\n if (isAllSelected != null) {\n // Comment this in version 0.4.2-beta.103, I don't know why we need this (&& this.getIsAllSelected(items))\n // this.isAllSelected = isAllSelected && this.getIsAllSelected(items);\n this.isAllSelected = isAllSelected;\n this.sessionService.removeObject(\n PepListComponent.ALL_SELECTED_STATE_KEY\n );\n } else {\n this.isAllSelected = false;\n }\n\n const sortBy = this.sessionService.getObject(\n PepListComponent.SORT_BY_STATE_KEY\n );\n if (sortBy && sortBy !== '') {\n this.sortBy = sortBy;\n this.sessionService.removeObject(\n PepListComponent.SORT_BY_STATE_KEY\n );\n } else {\n this.sortBy = '';\n }\n\n const isAsc = this.sessionService.getObject(\n PepListComponent.ASCENDING_STATE_KEY\n );\n if (isAsc != null) {\n this.isAsc = isAsc;\n this.sessionService.removeObject(\n PepListComponent.ASCENDING_STATE_KEY\n );\n } else {\n this.isAsc = true;\n }\n }\n\n private getIsAllSelected(items: Array<ObjectsDataRow>): boolean {\n let result = true;\n\n if (this.selectedItems?.size > 0 && items?.length > 0) {\n for (const item of items) {\n if (!(item && this.selectedItems.has(item?.UID.toString()))) {\n result = false;\n break;\n }\n }\n } else {\n result = false;\n }\n\n return result;\n }\n\n private getNumberOfStartItems(): number {\n let numberOfStartItems = 20;\n\n if (\n this.screenSize === PepScreenSizeType.XL ||\n this.screenSize === PepScreenSizeType.LG\n ) {\n numberOfStartItems = this.isTable ? 50 : 40;\n } else if (this.screenSize === PepScreenSizeType.MD) {\n numberOfStartItems = this.isTable ? 30 : 20;\n } else if (this.screenSize === PepScreenSizeType.SM) {\n numberOfStartItems = this.isTable ? 20 : 10;\n } else if (this.screenSize === PepScreenSizeType.XS) {\n numberOfStartItems = this.isTable ? 15 : 5;\n }\n\n return numberOfStartItems;\n }\n\n private setItemClicked(\n itemId,\n isSelectableForActions: boolean,\n itemType: string,\n isChecked: boolean\n ): void {\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n\n // select the selected item.\n if (isChecked) {\n // Set seleted item\n this.selectedItemId = uniqItemId;\n } else {\n if (this.selectedItemId === uniqItemId) {\n this.selectedItemId = '';\n }\n }\n\n if (this.selectionTypeForActions === 'single') {\n this.selectedItemsChange.emit(\n this.selectedItemId.length === 0 ? 0 : 1\n );\n } else if (this.selectionTypeForActions === 'multi') {\n if (isSelectableForActions) {\n this.setSelectionItems(itemId, uniqItemId, isChecked);\n\n const currentList = this.isAllSelected\n ? this.unSelectedItems\n : this.selectedItems;\n const currentListCount = this.isAllSelected\n ? this.totalRows - currentList.size\n : currentList.size;\n this.selectedItemsChange.emit(currentListCount);\n }\n }\n\n // Raise selected item change event\n if (this.selectionTypeForActions !== 'none') {\n this.selectedItemChange.emit({\n id: itemId,\n selected: isChecked,\n });\n }\n }\n\n private exportFunctionsOnHostElement() {\n // This is for web component usage for use those functions.\n this.hostElement.nativeElement.clear = this.clear.bind(this);\n this.hostElement.nativeElement.initListData = this.initListData.bind(\n this\n );\n this.hostElement.nativeElement.updateItems = this.updateItems.bind(\n this\n );\n this.hostElement.nativeElement.updatePage = this.updatePage.bind(this);\n this.hostElement.nativeElement.updateItem = this.updateItem.bind(this);\n }\n\n // For refresh the UI when change the is selectable for action on item.\n getisItemDisabled(item: ObjectsDataRow): boolean {\n return this.printMode || this.lockItemInnerEvents || (item && !item.IsSelectableForActions)\n }\n\n getIsAllSelectedForActions(): boolean {\n let res = false;\n\n if (this.isAllSelected) {\n if (this.unSelectedItems.size === 0) {\n res = true;\n }\n } else {\n if (this.virtualScroller?.viewPortItems) {\n if (this.selectedItems.size === this.totalRows) {\n res = this.getIsAllSelected(this.virtualScroller.viewPortItems);\n } else if (this.selectedItems.size < this.totalRows) {\n for (const item of this.virtualScroller.viewPortItems) {\n res =\n item && this.selectedItems.has(item?.UID.toString());\n\n if (!res) {\n break;\n }\n }\n }\n }\n }\n\n return res;\n }\n\n setIsAllSelected(isChecked: boolean): void {\n if (this.selectionTypeForActions === 'multi') {\n this.selectAllCB.checked = isChecked;\n this.isAllSelected = isChecked;\n }\n }\n\n selectAllItemsForActions(e: any): void {\n // For material checkbox || radio.\n const isChecked = e.source.checked;\n\n // Indeterminate mode\n let isIndeterminate = false;\n const currentList = this.isAllSelected\n ? this.unSelectedItems\n : this.selectedItems;\n if (currentList.size > 0) {\n isIndeterminate = true;\n this.isAllSelected = false;\n this.selectedItemsChange.emit(0);\n e.source.checked = false;\n }\n\n this.selectedItems.clear();\n this.unSelectedItems.clear();\n\n if (!isIndeterminate) {\n this.isAllSelected = isChecked;\n this.selectAllClick.emit(isChecked);\n\n if (this.selectionTypeForActions === 'multi') {\n if (!isChecked) {\n this.selectedItemsChange.emit(0);\n this.selectedItemId = '';\n } else {\n const filteredItems = this.items.filter(\n (item) => item && item.IsSelectableForActions\n );\n this.selectedItemsChange.emit(filteredItems.length);\n }\n }\n } else {\n // Remove all\n if (this.selectionTypeForActions === 'multi') {\n this.selectAllClick.emit(false);\n }\n }\n }\n\n raiseStartIndexChange(startIndex = 0) {\n // this.startIndex = startIndex;\n this.startIndexChange.emit({ startIndex });\n }\n\n getIsItemSelected(item: ObjectsDataRow): boolean {\n let isSelected = false;\n\n if (item) {\n if (this.selectionTypeForActions === 'single') {\n isSelected = this.selectedItemId === this.getUniqItemId(item.UID, item.Type.toString());\n } else if (this.selectionTypeForActions === 'multi') {\n if (item.IsSelectableForActions) {\n isSelected = (this.isAllSelected && !this.unSelectedItems.has(item.UID)) || this.selectedItems.has(item.UID);\n }\n }\n }\n\n return isSelected;\n }\n\n selectItemForActions(\n e: any,\n itemId: string,\n isSelectableForActions: boolean,\n itemType = ''\n ): void {\n // For material checkbox || radio.\n const isChecked = e.source.checked;\n this.setItemClicked(\n itemId,\n isSelectableForActions,\n itemType,\n isChecked\n );\n }\n\n itemClicked(e: any, item: ObjectsDataRow): void {\n // Set seleted item\n const itemId = item?.UID.toString();\n const itemType = item?.Type.toString();\n let isChecked = false;\n\n if (item && item.IsSelectableForActions) {\n this.selectedItemId = this.getUniqItemId(itemId, itemType);\n isChecked = true;\n }\n // TODO - need to check what we want to do line view\n if (this.isTable || this.viewType === 'cards') {\n if (this.selectionTypeForActions === 'single') {\n this.setItemClicked(\n itemId,\n item.IsSelectableForActions,\n itemType,\n isChecked\n );\n } else if (this.selectionTypeForActions === 'none') {\n // Just mark the row as highlighted\n this.setItemClicked(\n itemId,\n item.IsSelectableForActions,\n itemType,\n true\n );\n }\n } else {\n if (this.disabled) {\n return;\n }\n }\n\n this.itemClick.emit({ source: item, viewType: this.viewType });\n }\n\n onTableRowMouseEnter(event: any, itemId: string, itemType: string): void {\n if (!this.deviceHasMouse) {\n return;\n }\n\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n this.hoveredItemId = uniqItemId;\n }\n\n onTableRowMouseLeave(event: any, itemId: string, itemType: string): void {\n this.hoveredItemId = '';\n }\n\n onTabKeydown(event: any, itemId: string, itemType: string): void {\n const keyboardEvent = event as KeyboardEvent;\n if (keyboardEvent.key === 'Tab') {\n\n const jumpToNextRow = !keyboardEvent.shiftKey;\n\n const eventTarget = event.target || event.srcElement;\n const isLastColumn = this.isLastColunm(eventTarget, 'table-cell', jumpToNextRow);\n\n // If the last column then go to the next row.\n if(isLastColumn) {\n const currentRowEL = this.getParentByClass(eventTarget, 'table-row');\n const nextRow = jumpToNextRow ? currentRowEL?.nextElementSibling : currentRowEL?.previousElementSibling;\n if (nextRow !== null) {\n // Remove the highlight from the current row.\n this.renderer.removeClass(nextRow, 'highlighted');\n // Highlight the next row.\n this.renderer.addClass(nextRow, 'highlighted');\n // Click on the first cell of the next row.\n const indexOfFocusCell = jumpToNextRow ? 0 : nextRow.querySelectorAll('.table-cell').length - 1;\n nextRow.querySelectorAll('.table-cell')[indexOfFocusCell].click(); \n setTimeout(() => {\n nextRow.querySelectorAll('.table-cell')[indexOfFocusCell].focus();\n }, 100);\n \n \n }\n }\n }\n }\n\n isLastColunm(el, parentSelector, isNext = true): boolean {\n const parent = this.getParentByClass(el, parentSelector);\n // check if last column or if shifr pressed and it's the first column\n return isNext ? (parent?.nextElementSibling) === null : (parent?.previousElementSibling === null);\n }\n\n getParentByClass(el, parentSelector /* optional */): any {\n // If no parentSelector defined will bubble up all the way to *document*\n if (parentSelector === undefined) {\n parentSelector = document;\n }\n\n let p = el.parentNode;\n\n while (\n p &&\n !p?.classList?.contains(parentSelector) &&\n parentSelector !== document\n ) {\n const o = p;\n p = o?.parentNode || null;\n }\n\n return p?.className.indexOf(parentSelector) > -1 ? p : null;\n }\n onCardMouseEnter(event: any, itemId: string, itemType: string): void {\n if (!this.deviceHasMouse) {\n return;\n }\n\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n this.hoveredItemId = uniqItemId;\n }\n\n onCardMouseLeave(event: any, itemId: string, itemType: string): void {\n this.hoveredItemId = '';\n }\n\n // trackByFunc(index: number, item: ObjectsDataRow): any {\n // return item && item?.UID ? item?.UID : index;\n // // let res: string = \"\";\n\n // // if (item && item?.UID) {\n // // res = item?.UID + \"_\" + this.listType + \"_\" + (this.isTable ? \"Table\" : \"Thumbnails\");\n // // }\n // // else {\n // // res = index + \"_\" + this.listType + \"_\" + (this.isTable ? \"Table\" : \"Thumbnails\");\n // // }\n\n // // return res;\n // }\n\n clear(): void {\n this.cleanItems();\n this._layout = null;\n }\n\n setSelectedIds(selectedIds: string[], items = null): void {\n this.selectedItems.clear();\n this.isAllSelected = false;\n\n if (selectedIds) {\n // for (let i = 0; i < selected.length; i++) {\n for (const selectedId of selectedIds) {\n const tmp = selectedId.split(this.SEPARATOR);\n\n if (tmp && tmp.length > 0) {\n const itemId = tmp[0];\n const itemType = tmp.length > 1 ? tmp[1] : '';\n\n this.selectedItems.set(\n itemId,\n this.getUniqItemId(itemId, itemType)\n );\n }\n }\n\n this.isAllSelected = this.getIsAllSelected(items ? items : this.virtualScroller?.viewPortItems);\n this.setSelectionDataInSession();\n }\n\n this.refresh();\n }\n\n setSelectionDataInSession(): void {\n if (this.selectedItems.size > 0) {\n this.sessionService.setObject(\n PepListComponent.SELECTED_ITEMS_STATE_KEY,\n JSON.stringify([...this.selectedItems])\n );\n }\n\n if (this.unSelectedItems.size > 0) {\n this.sessionService.setObject(\n PepListComponent.UN_SELECTED_ITEMS_STATE_KEY,\n JSON.stringify([...this.unSelectedItems])\n );\n }\n\n this.sessionService.setObject(\n PepListComponent.ALL_SELECTED_STATE_KEY,\n this.isAllSelected\n );\n }\n\n initListData(\n layout: UIControl,\n totalRows: number,\n items: ObjectsDataRow[],\n selectionTypeForActions: PepListSelectionType | undefined = undefined\n ): void {\n this.initVariablesFromSession(items);\n const selectedItemsList = this.isAllSelected\n ? this.unSelectedItems\n : this.selectedItems;\n const currentListCount = this.isAllSelected\n ? this.totalRows - selectedItemsList.size\n : selectedItemsList.size;\n this.selectedItemsChange.emit(currentListCount);\n\n this._layout = layout;\n this.selectedItemId = ''; \n this.totalRows = totalRows;\n\n // Added to handle if the selectionTypeForActions is set in the html then the input this.selectedItemId will no set cause this function happens before.\n if (selectionTypeForActions) {\n this.selectionTypeForActions = selectionTypeForActions;\n }\n\n // If is all selected is false && the size of the selected items is 1 && selectionTypeForActions is 'single' then set it as the selected item id.\n // We need this in setTimeout cause the selectionTypeForActions is input that can set after this function.\n if (!this.isAllSelected && this.selectedItems.size === 1 && this.selectionTypeForActions === 'single') {\n const [firstValue] = this.selectedItems.values();\n this.selectedItemId = firstValue;\n }\n \n this.scrollToTop(false);\n this.cleanItems();\n this.disableScroll(true);\n\n if (items) {\n if (this.pagerType === 'pages') {\n // If page index out of bounds - init to 0.\n const numberOfPages = Math.ceil(totalRows / this.pageSize);\n\n if (this.pageIndex >= numberOfPages) {\n this.pageIndex = 0;\n }\n\n this.updatePage(items, {\n pageIndex: this.pageIndex,\n pageSize: this.pageSize,\n });\n\n this.disableScroll(false);\n } else {\n const numberOfStartItems = this.getNumberOfStartItems();\n const event = {\n fromIndex: 0,\n toIndex: numberOfStartItems,\n };\n this.updateItems(items, event);\n \n if (this.virtualScroller) {\n this.refresh(() => {\n this.calcObjectHeight();\n });\n } else {\n this.calcObjectHeight();\n }\n }\n }\n\n if (!this.isTable) {\n this.lastColumnsWidth = [];\n }\n\n this.setLayout();\n\n // setTimeout(() => {\n this.onListLoad();\n // }, 0);\n }\n\n updateItems(\n items: ObjectsDataRow[],\n event: IPepListLoadItemsEvent = null\n ): void {\n if (!event) {\n return; // Event isn't supplied.\n }\n\n // Clean array\n if (this.itemsCounter + items.length > this.getCachedItemsNumber()) {\n this.cleanItems();\n }\n\n const startIndex = event.fromIndex ?? 0;\n\n for (let i = 0; i < items.length; i++) {\n if (!this.items[i + startIndex]) {\n this.items[i + startIndex] = items[i];\n this.itemsCounter += 1;\n }\n }\n\n this.toggleLoadingItemsFropApi(false);\n }\n\n updatePage(items: ObjectsDataRow[], event: IPepListLoadPageEvent): void {\n if (!event) {\n return; // Event isn't supplied.\n }\n\n // Clean array\n if (this.itemsCounter + items.length > this.getCachedItemsNumber()) {\n this.cleanItems();\n }\n\n // const loadInChunks = this.itemsCounter === 0;\n const startIndex = Math.min(event.pageIndex * event.pageSize, this.totalRows);\n const endIndex = Math.min(startIndex + event.pageSize, this.totalRows);\n\n for (let i = 0; i < items.length; i++) {\n if (!this.items[i + startIndex]) {\n this.items[i + startIndex] = items[i];\n this.itemsCounter += 1;\n }\n }\n\n this.updateCurrentPageItems(startIndex, endIndex);\n this.toggleLoadingItemsFropApi(false);\n }\n\n updateItem(data: ObjectsDataRow): void {\n const index = this.items.findIndex((i) => i && i?.UID === data?.UID);\n if (index >= 0 && index < this.items.length) {\n this.updateItemProperties(this.items[index], data);\n }\n }\n\n scrollToIndex(index: number, alignToBeginning = true, additionalOffset = 0, animationMilliseconds: number = undefined, animationCompletedCallback: () => void = undefined) {\n this.virtualScroller?.scrollToIndex(index, alignToBeginning, additionalOffset, animationMilliseconds, animationCompletedCallback);\n }\n\n updateItemProperties(itemToUpdate: ObjectsDataRow, data: ObjectsDataRow) {\n Object.assign(itemToUpdate, data);\n }\n\n getSelectedItemsData(isForEdit = false): PepSelectionData {\n const res = new PepSelectionData();\n\n let selectionType = 1;\n const items = [];\n const itemTypes = [];\n\n if (this.selectionTypeForActions === 'single') {\n if (this.selectedItemId.length > 0) {\n const tmp = this.selectedItemId.split(this.SEPARATOR);\n items.push(tmp[0]);\n itemTypes.push(tmp[1]);\n }\n } else if (this.selectionTypeForActions === 'multi') {\n let currentList = [];\n\n // For edit - only the selected items.\n if (isForEdit) {\n if (!this.isAllSelected) {\n currentList = Array.from(this.selectedItems.values());\n } else {\n // Get the id's of the items that not founded in unSelectedItems.\n this.items.forEach((item) => {\n if (\n item &&\n !this.unSelectedItems.has(item?.UID.toString())\n ) {\n currentList.push(\n this.getUniqItemId(\n item?.UID.toString(),\n item?.Type.toString()\n )\n );\n }\n });\n }\n } else {\n // For delete - can be the unselected with select_all functionality.\n currentList = Array.from(\n this.isAllSelected\n ? this.unSelectedItems.values()\n : this.selectedItems.values()\n );\n selectionType = this.isAllSelected ? 0 : 1;\n }\n\n currentList.forEach((item) => {\n const tmp = item.split(this.SEPARATOR);\n\n if (tmp.length === 2) {\n items.push(tmp[0]);\n itemTypes.push(tmp[1]);\n }\n });\n\n }\n\n res.selectionType = selectionType;\n res.rows = items;\n res.rowTypes = itemTypes;\n\n return res;\n }\n\n getIsItemEditable(uid: string): boolean {\n const item = this.items.filter((x) => x?.UID.toString() === uid);\n if (item.length > 0) {\n return item[0].IsEditable;\n } else {\n return false;\n }\n }\n\n getItemDataByID(uid: string): ObjectsDataRow {\n return this.items.find((item) => item?.UID.toString() === uid);\n }\n\n refresh(refreshCompletedCallback: () => void = undefined) {\n this.virtualScroller?.refresh(refreshCompletedCallback);\n }\n\n // ---------------------------------------------------------------\n // Events handlers.\n // ---------------------------------------------------------------\n\n onWinResize(e): void {\n this.refresh();\n\n this.containerWidth = 0;\n this.lastColumnsWidth = [];\n this.setLayout();\n }\n\n onListResizeStart(event, columnKey: string, columnIndex: number): void {\n this.pressedColumn = columnKey;\n this.pressedColumnIndex = columnIndex;\n this.startX = event.x;\n this.startWidth = event.target.closest('.header-column').offsetWidth;\n // this.tableStartWidth = this.hostElement.nativeElement.offsetWidth; // this.virtualScroller?.contentElementRef.nativeElement.offsetWidth;\n this.tableStartWidth = this.listContainerResizableElementRef.nativeElement.offsetWidth; // this.virtualScroller?.contentElementRef.nativeElement.offsetWidth;\n console.log(`tableStartWidth - ${this.tableStartWidth}`);\n }\n\n onListResize(event): void {\n // if (this.pressedColumn.length > 0) {\n if (this.pressedColumnIndex >= 0) {\n let widthToAdd = this.layoutService.isRtl() ? this.startX - event.x : event.x - this.startX;\n\n // Set the width of the column and the container of the whole columns.\n if (this.startWidth + widthToAdd >= PepListComponent.MINIMUM_COLUMN_WIDTH || widthToAdd > 0) {\n const length = this._layout.ControlFields.length;\n let totalCalcColsWidth = 0;\n\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this._layout\n .ControlFields[index];\n\n if (index === length - 1) {\n // Calc the last column only in percentage type.\n if (this.hasColumnWidthOfTypePercentage) {\n const scrollWidth = this.layoutService.getScrollbarWidth();\n widthToAdd += scrollWidth;\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = 'calc(100% - ' + (totalCalcColsWidth + scrollWidth) + 'px)'; // For 100%\n } else {\n // if (uiControlField.ApiName === this.pressedColumn) {\n if (index === this.pressedColumnIndex) {\n uiControlField.calcColumnWidth = this.startWidth + widthToAdd;\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidth + 'px';\n uiControlField.calcColumnWidthString = uiControlField.calcColumnWidth + 'px';\n }\n }\n // } else if (uiControlField.ApiName === this.pressedColumn) {\n } else if (index === this.pressedColumnIndex) {\n uiControlField.calcColumnWidth = this.startWidth + widthToAdd;\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = uiControlField.calcColumnWidth + 'px';\n }\n\n totalCalcColsWidth += uiControlField.calcColumnWidth;\n }\n\n const widthToSet = (this.tableStartWidth + widthToAdd) + 'px';\n console.log(`onListResize -> widthToSet: ${widthToSet} *** widthToAdd: ${widthToAdd}`);\n this.setColumnsWidth(widthToSet);\n this.checkForChanges = new Date().getTime();\n }\n\n }\n }\n\n onListResizeEnd(event): void {\n // if (this.pressedColumn.length > 0) {\n if (this.pressedColumnIndex >= 0) {\n if (\n event &&\n this.getParent(event.srcElement, 'resize-box').length > 0\n ) {\n this.initResizeData();\n } else {\n // Set timeout 0 for onListSortingChange will have the pressedColumn.\n setTimeout(() => {\n this.initResizeData();\n }, 0);\n }\n\n this.lastColumnsWidth = [];\n \n // Set the last columns width\n for (let index = 0; index < this._layout.ControlFields.length; index++) {\n const uiControlField: UIControlField = this._layout.ControlFields[index];\n \n this.lastColumnsWidth.push({ \n columnAPIName: uiControlField.ApiName, \n calcColumnWidth: uiControlField.calcColumnWidth,\n calcTitleColumnWidthString: uiControlField.calcTitleColumnWidthString,\n calcColumnWidthString: uiControlField.calcColumnWidthString\n })\n }\n \n event.stopPropagation();\n }\n }\n\n onListSortingChange(sortBy: string, isAsc: boolean, event = null): void {\n if (\n // this.pressedColumn.length > 0 ||\n this.pressedColumnIndex >= 0 ||\n (event && this.getParent(event.srcElement, 'resize-box').length > 0)\n ) {\n return;\n }\n\n if (this.sortBy !== sortBy || this.isAsc !== isAsc) {\n this.sortBy = sortBy;\n this.isAsc = isAsc;\n this.saveSortingToSession();\n\n this.sortingChange.emit({ sortBy, isAsc });\n }\n }\n\n onListHeaderMouseEnter(event): void {\n // this.headerIsInFocus = true;\n }\n\n onListHeaderMouseLeave(event): void {\n // this.headerIsInFocus = false;\n this.onListResizeEnd(event);\n this.initResizeData();\n }\n\n onPagerChange(event: IPepListPagerChangeEvent): void {\n this.pageIndex = event.pageIndex;\n\n // Scroll to top.\n //this.scrollToTop();\n\n const startIndex = event.pageIndex * event.pageSize;\n const endIndex = Math.min(\n startIndex + event.pageSize,\n this.totalRows\n );\n\n let shouldGetItemsFromApi = false;\n let index: number = startIndex;\n\n while (!shouldGetItemsFromApi && index < endIndex) {\n if (!this.items[index]) {\n shouldGetItemsFromApi = true;\n }\n index++;\n }\n\n // Get bulk from api.\n if (shouldGetItemsFromApi) {\n if (!this.loadingItemsFromApi) {\n this.toggleLoadingItemsFropApi(true);\n\n this.loadPage.emit({\n pageIndex: event.pageIndex,\n pageSize: event.pageSize,\n }); \n \n this.scrollToTop();\n }\n } else {\n setTimeout(() => {\n this.updateCurrentPageItems(startIndex, endIndex);\n this.scrollToTop();\n }, this.scrollAnimationTime);\n }\n }\n\n onVirtualScrollerChange(event: IPageInfo): void {\n this.raiseStartIndexChange(event.startIndex);\n\n if (this.pagerType === 'scroll') {\n // For other events do nothing.\n if (typeof event.startIndex === 'undefined' || event.startIndex < 0 ||\n typeof event.endIndex === 'undefined' || event.endIndex < 0) {\n return;\n }\n\n const addAtStart = event.scrollDirection === 'backward';\n let shouldGetItemsFromApi = false;\n let indexOfMissingItem: number;\n\n if (addAtStart) {\n indexOfMissingItem = event.endIndex;\n while (!shouldGetItemsFromApi && indexOfMissingItem >= event.startIndex) {\n if (!this.items[indexOfMissingItem]) {\n shouldGetItemsFromApi = true;\n }\n\n if (!shouldGetItemsFromApi) {\n indexOfMissingItem--;\n }\n }\n } else {\n indexOfMissingItem = event.startIndex;\n while (!shouldGetItemsFromApi && indexOfMissingItem <= event.endIndex) {\n if (!this.items[indexOfMissingItem]) {\n shouldGetItemsFromApi = true;\n }\n\n if (!shouldGetItemsFromApi) {\n indexOfMissingItem++;\n }\n }\n }\n\n // Get bulk from api.\n if (shouldGetItemsFromApi) {\n if (!this.loadingItemsFromApi) {\n this.toggleLoadingItemsFropApi(true);\n\n const top = this.getTopItems() - 1;\n const fromIndex = addAtStart ? Math.max(indexOfMissingItem - top, 0) : indexOfMissingItem;\n const toIndex = addAtStart ? indexOfMissingItem : Math.min(indexOfMissingItem + top, this.totalRows);\n\n this.loadItems.emit({\n fromIndex,\n toIndex,\n });\n }\n }\n }\n }\n\n onListLoad(): void {\n setTimeout(() => {\n this.listLoad.emit();\n }, 0);\n }\n\n // onChildRectChange(event: any) {\n // // Set the calculatedObjectHeight only if he's not set (this case is only for the initialize when virtual scroll is undefined).\n // // the other cases is handled in calcObjectHeight function.\n // if (this.calculatedObjectHeight === 'auto') {\n // this.calculatedObjectHeight = event?.height + 'px';\n // }\n // }\n\n onValueChanged(valueChange: IPepFormFieldValueChangeEvent): void {\n if (this.disabled) {\n return;\n }\n\n this.valueChange.emit(valueChange);\n }\n\n onCustomizeFieldClick(\n customizeFieldClickedData: IPepFormFieldClickEvent\n ): void {\n if (this.disabled) {\n return;\n }\n\n this.fieldClick.emit(customizeFieldClickedData);\n }\n //added to handle sorting by specific columns----\n isSortableColumn(apiName: string) {\n //case 1 - supportSorting = true and array exists\n if(this.supportSorting) {\n if(this.supportSortingFields?.length) {\n return this.supportSortingFields.includes(apiName);\n //case 2 - supportSorting = true and array does not exist\n } else if (this.supportSortingFields === undefined) {\n return true\n } // case 3 supportSorting = false\n } else return false;\n \n }\n}\n","<ng-container *ngIf=\"totalRows == 0\">\n <ng-container *ngIf=\"noDataFoundMsg; then noDataMsgInputBlock; else noDataMsgDefaultBlock\"></ng-container>\n <ng-template #noDataMsgInputBlock>\n <div class=\"pep-border-bottom\">\n <p class=\"title-xl no-data\">\n {{ noDataFoundMsg }}\n </p>\n </div>\n </ng-template>\n <ng-template #noDataMsgDefaultBlock>\n <div class=\"pep-border-bottom\">\n <p class=\"title-xl no-data\">\n {{ 'LIST.NO_DATA_FOUND' | translate}}\n </p>\n </div>\n <div class=\"no-data-suggestions\">\n <p class=\"suggestions-title title-lg\">\n {{ 'LIST.NO_DATA_FOUND_SUGGESTIONS_TITLE' | translate}}\n </p>\n <ul class=\"suggestions-list body-lg\" [innerHtml]=\"'LIST.NO_DATA_FOUND_SUGGESTIONS_LIST' | translate\"></ul>\n </div>\n </ng-template>\n</ng-container>\n<ng-container *ngIf=\"totalRows > 0\">\n <div class=\"list-container\">\n <div #listContainerResizable class=\"list-container-resizable\">\n <ng-container *ngTemplateOutlet=\"tableHeader\"></ng-container>\n\n <!-- (vsChildRectChange)=\"onChildRectChange($event)\" -->\n <!-- <virtual-scroller #scroller [items]=\"pagerType === 'pages' ? currentPageItems : items\"\n [scrollDebounceTime]=\"scrollDebounceTime\" [scrollThrottlingTime]=\"scrollThrottlingTime\"\n [bufferAmount]=\"printMode ? totalRows : bufferAmount\" [parentScroll]=\"parentScroll\" [disable]=\"loadingItemsFromApi\"\n class=\"virtual-scroller\" [ngClass]=\"{ 'table-body': isTable, 'cards-body': !isTable }\"\n (vsChange)=\"onVirtualScrollerChange($event)\" >\n <ng-container *ngFor=\"let item of scroller.viewPortItems; let index = index; let isFirst = first;\">\n <ng-container *ngTemplateOutlet=\"listData; context: {item: item, index:index}\"></ng-container>\n </ng-container>\n </virtual-scroller> -->\n \n <ng-container *ngTemplateOutlet=\"tableTotal\"></ng-container>\n </div>\n </div>\n <pep-list-pager *ngIf=\"pagerType === 'pages'\" class=\" list-pager\" [disabled]=\"loadingItemsFromApi\"\n [length]=\"totalRows\" [pageSize]=\"pageSize\" [pageIndex]=\"pageIndex\" (pagerChange)=\"onPagerChange($event)\">\n </pep-list-pager>\n</ng-container>\n\n<ng-template #listData let-item=\"item\" let-index=\"index\">\n <ng-container *ngIf=\"isTable\">\n <!-- getIsItemSelected(item) -> item | isItemSelected: selectionTypeForActions : selectedItemId : isAllSelected : selectedItems : unSelectedItems -->\n <div class=\"table-row\" (mouseenter)=\"onTableRowMouseEnter($event, item?.UID, item?.Type)\" (keydown)=\"onTabKeydown($event, item?.UID, item?.Type)\"\n (mouseleave)=\"onTableRowMouseLeave($event, item?.UID, item?.Type)\" [ngClass]=\"{\n 'compact-view': tableViewType === 'compact',\n even: zebraStripes && index % 2 !== 0,\n selected: getIsItemSelected(item),\n highlighted: item?.UID + SEPARATOR + item?.Type === selectedItemId}\" [ngStyle]=\"{ visibility: !loadingItemsFromApi || item ? 'visible' : 'hidden' }\">\n <fieldset class=\"table-row-fieldset\" [ngStyle]=\"{ 'background-color': item?.BackgroundColor }\">\n <mat-checkbox *ngIf=\"selectionTypeForActions == 'multi'\" type=\"checkbox\"\n class=\"pull-left flip row-selection\" [ngClass]=\"{ 'md': tableViewType === 'compact' }\"\n [disabled]=\"false && getisItemDisabled(item)\" [ngStyle]=\"{\n visibility: !deviceHasMouse ||\n item?.UID + SEPARATOR + item?.Type === hoveredItemId || isAllSelected || selectedItems.size > 0 ? 'visible' : 'hidden'\n }\" [checked]=\"getIsItemSelected(item)\"\n (change)=\"selectItemForActions($event, item?.UID, item?.IsSelectableForActions, item?.Type)\">\n </mat-checkbox>\n <mat-radio-button *ngIf=\"selectionTypeForActions == 'single'\" name=\"selection\"\n class=\"pull-left flip row-selection pep-radio-button\" [ngClass]=\"{ 'md': tableViewType === 'compact' }\"\n [disabled]=\"getisItemDisabled(item)\"\n [checked]=\"getIsItemSelected(item)\"\n (change)=\"selectItemForActions($event, item?.UID, item?.IsSelectableForActions, item?.Type)\">\n </mat-radio-button>\n <pep-form [layoutType]=\"'table'\" [checkForChanges]=\"checkForChanges\" [layout]=\"layout\"\n [firstFieldAsLink]=\"firstFieldAsLink\" [data]=\"item\" [canEditObject]=\"!disabled\"\n [lockEvents]=\"lockItemInnerEvents || printMode\" [isReport]=\"isReport\" [isActive]=\"\n (item?.UID + SEPARATOR + item?.Type === selectedItemId ||\n item?.UID + SEPARATOR + item?.Type === hoveredItemId) && deviceHasMouse\n \" (valueChange)=\"onValueChanged($event)\" (fieldClick)=\"onCustomizeFieldClick($event)\"\n (click)=\"itemClicked($event, item)\">\n </pep-form>\n </fieldset>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!isTable\">\n <div (mouseenter)=\"onCardMouseEnter($event, item?.UID, item?.Type)\"\n (mouseleave)=\"onCardMouseLeave($event, item?.UID, item?.Type)\" [ngClass]=\"{\n selected: getIsItemSelected(item),\n highlighted: item?.UID + SEPARATOR + item?.Type === selectedItemId,\n 'line-view': viewType === 'lines',\n 'card-view': viewType === 'cards',\n 'small-card': cardSize === 'sm'\n }\" class=\"pull-left flip\"\n [ngStyle]=\"{ height: calculatedObjectHeight, visibility: !loadingItemsFromApi || item ? 'visible' : 'hidden' }\">\n <mat-checkbox *ngIf=\"showCardSelection\" class=\"pull-left flip card-selection\"\n [disabled]=\"getisItemDisabled(item)\" [checked]=\"getIsItemSelected(item)\"\n (change)=\"selectItemForActions($event, item?.UID, item?.IsSelectableForActions, item?.Type)\">\n </mat-checkbox>\n <pep-form [layoutType]=\"'card'\" [firstFieldAsLink]=\"firstFieldAsLink\" [checkForChanges]=\"checkForChanges\"\n [layout]=\"layout\" [data]=\"item\" [canEditObject]=\"!disabled\"\n [lockEvents]=\"lockItemInnerEvents || printMode\" [isActive]=\"\n (item?.UID + SEPARATOR + item?.Type === selectedItemId ||\n item?.UID + SEPARATOR + item?.Type === hoveredItemId) && deviceHasMouse\n \" (valueChange)=\"onValueChanged($event)\" (fieldClick)=\"onCustomizeFieldClick($event)\"\n (click)=\"itemClicked($event, item)\">\n </pep-form>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #tableHeader>\n <div *ngIf=\"isTable\" class=\"table-header\" (mouseup)=\"onListResizeEnd($event)\"\n (mouseenter)=\"onListHeaderMouseEnter($event)\" (mouseleave)=\"onListHeaderMouseLeave($event)\"\n (mousemove)=\"onListResize($event)\">\n\n <div class=\"table-header-padding-top\"></div>\n <fieldset class=\"table-header-fieldset\">\n <mat-checkbox *ngIf=\"selectionTypeForActions !== 'none'\" #selectAllCB class=\"pull-left flip row-selection\" [ngClass]=\"{ 'md': tableViewType === 'compact' }\"\n type=\"checkbox\" [ngStyle]=\"{\n visibility:\n selectionTypeForActions == 'single' || \n (selectionTypeForActions == 'multi' && hideAllSelectionInMulti) ? 'hidden' : 'visible'\n }\"\n [indeterminate]=\"isAllSelected ? unSelectedItems.size > 0 && unSelectedItems.size < totalRows : (selectedItems.size > 0 && !getIsAllSelectedForActions())\"\n [disabled]=\"disabled || selectionTypeForActions === 'single'\" [checked]=\"getIsAllSelectedForActions()\"\n (change)=\"selectAllItemsForActions($event)\"></mat-checkbox>\n <fieldset>\n <div *ngFor=\"let field of layout?.ControlFields; let j = index\" class=\"header-column pull-left flip\"\n [ngStyle]=\"{ width: field.calcTitleColumnWidthString }\" [ngClass]=\"{\n 'compact-view': tableViewType === 'compact',\n 'support-sorting': isSortableColumn(field.ApiName),\n 'has-sorting': field.ApiName === sortBy,\n 'is-resizing': field.ApiName === pressedColumn,\n 'is-first': j === 0 && selectionTypeForActions !== 'multi',\n 'is-last': j === layout?.ControlFields?.length - 1\n }\"\n (click)=\"isSortableColumn(field.ApiName) ? (onListSortingChange(field.ApiName, sortBy !== null && sortBy != field.ApiName ? true : !isAsc, $event)) : false\">\n\n <label id=\"{{ field.ApiName }}\"\n class=\"header-label body-sm pull-left flip text-align-{{ field.Layout.XAlignment }}\"\n title=\"{{ field.Title }}\">\n <span *ngIf=\"field.Mandatory\" class=\"mandatory\">\n <pep-icon name=\"system_must\"></pep-icon>\n </span>\n {{ field.Title != '' ? field.Title : ' '}}\n </label>\n\n <div *ngIf=\"supportResizing\" class=\"resize-box pull-right flip\"\n (mousedown)=\"onListResizeStart($event, field.ApiName, j)\">\n <div class=\"splitter\"></div>\n </div>\n\n <div *ngIf=\"isSortableColumn(field.ApiName)\" class=\"sorting-box pull-left flip\"\n [ngClass]=\"{ 'has-sorting': field.ApiName === sortBy }\">\n <mat-icon *ngIf=\"field.ApiName !== sortBy\">\n <pep-icon name=\"arrow_either\" class=\"asc\"></pep-icon>\n </mat-icon>\n <ng-container *ngIf=\"field.ApiName === sortBy\">\n <mat-icon *ngIf=\"!isAsc\" [ngClass]=\"{ 'sort-by': field.ApiName === sortBy && isAsc }\"\n title=\"{{ 'LIST.SORT_ASC' | translate }}\">\n <pep-icon name=\"arrow_up\" class=\"asc\"></pep-icon>\n </mat-icon>\n <mat-icon *ngIf=\"isAsc\" [ngClass]=\"{ 'sort-by': field.ApiName === sortBy && !isAsc }\"\n title=\"{{ 'LIST.SORT_DESC' | translate }}\">\n <pep-icon name=\"arrow_down\" class=\"desc\"></pep-icon>\n </mat-icon>\n </ng-container>\n </div>\n </div>\n </fieldset>\n </fieldset>\n </div>\n</ng-template>\n\n<ng-template #tableTotal>\n <div *ngIf=\"isTable && totalsRow?.length > 0 && totalsRow.length <= layout?.ControlFields.length\"\n class=\"table-total\">\n <fieldset class=\"table-header-fieldset\">\n <div *ngFor=\"let field of layout?.ControlFields; let j = index\" class=\"total-column pull-left flip\"\n [ngStyle]=\"{ width: field.calcTitleColumnWidthString }\">\n <label class=\"total-label body-sm text-align-{{ field.Layout.XAlignment }}\">\n {{ totalsRow[j] }}\n </label>\n </div>\n </fieldset>\n </div>\n</ng-template>","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\nimport {\n IPepMenuStateChangeEvent,\n PepMenuItem,\n IPepMenuItemClickEvent,\n} from '@pepperi-addons/ngx-lib/menu';\n\n@Component({\n selector: 'pep-list-actions',\n templateUrl: './list-actions.component.html',\n styleUrls: ['./list-actions.component.scss'],\n})\n@Injectable()\nexport class PepListActionsComponent {\n @Input() actions: Array<PepMenuItem> = null;\n @Input() sizeType: PepSizeType = 'md';\n @Input() xPosition: 'before' | 'after' = 'before';\n @Input() hidden = false;\n\n @Output()\n actionClick: EventEmitter<IPepMenuItemClickEvent> = new EventEmitter<IPepMenuItemClickEvent>();\n @Output()\n stateChange: EventEmitter<IPepMenuStateChangeEvent> = new EventEmitter<IPepMenuStateChangeEvent>();\n @Output()\n menuClick: EventEmitter<void> = new EventEmitter<void>();\n\n onActionClicked(action): void {\n this.actionClick.emit(action);\n }\n\n onStateChanged(menuStateChangeEvent: IPepMenuStateChangeEvent): void {\n this.stateChange.emit(menuStateChangeEvent);\n }\n}\n","<pep-menu [xPosition]=\"xPosition\" [styleType]=\"'strong'\" [sizeType]=\"sizeType\" [items]=\"!hidden ? actions : null\"\n [hideOnEmptyItems]=\"true\" [iconName]=\"'system_edit'\" (menuItemClick)=\"onActionClicked($event)\"\n (stateChange)=\"onStateChanged($event)\" (menuClick)=\"menuClick.emit();\">\n</pep-menu>\n","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n ElementRef,\n Renderer2,\n ChangeDetectorRef,\n OnDestroy,\n AfterViewInit,\n} from '@angular/core';\nimport {\n ObjectsDataRow,\n UIControl,\n PepLayoutService,\n PepScreenSizeType,\n} from '@pepperi-addons/ngx-lib';\nimport { PepCarouselComponent } from '@pepperi-addons/ngx-lib/carousel';\n\nexport type PepListCarouselSizeType = 'xs' | 'sm' | 'md';\n\nexport interface IPepListCarouselItemClickEvent {\n source: ObjectsDataRow;\n}\n\n@Component({\n selector: 'pep-list-carousel',\n templateUrl: './list-carousel.component.html',\n styleUrls: ['./list-carousel.component.scss'],\n})\n@Injectable()\nexport class PepListCarouselComponent implements AfterViewInit, OnDestroy {\n @Input() duration = 1000;\n @Input() layout: UIControl = null;\n @Input() itemsToMove = 3;\n @Input() lockItemInnerEvents = true;\n @Input() hideArrowsInSmallScreen = true;\n\n private _items: Array<ObjectsDataRow> = null;\n @Input()\n set items(value: Array<ObjectsDataRow>) {\n this._items = value;\n this.moveTo(0);\n }\n get items() {\n return this._items;\n }\n\n private _itemSize: PepListCarouselSizeType = 'xs';\n @Input()\n set itemSize(value: PepListCarouselSizeType) {\n this._itemSize = value;\n this.moveTo(0);\n }\n get itemSize() {\n return this._itemSize;\n }\n\n @Output()\n itemClick: EventEmitter<IPepListCarouselItemClickEvent> = new EventEmitter<IPepListCarouselItemClickEvent>();\n\n @ViewChild('carousel', { read: PepCarouselComponent })\n carousel: PepCarouselComponent;\n\n prevDisabled = false;\n nextDisabled = false;\n screenSize: PepScreenSizeType;\n PepScreenSizeType = PepScreenSizeType;\n // deviceHasMouse = false;\n\n constructor(public layoutService: PepLayoutService) {\n // this.deviceHasMouse = this.layoutService.getDeviceHasMouse();\n }\n\n ngAfterViewInit(): void {\n this.layoutService.onResize$.subscribe((size: PepScreenSizeType) => {\n this.screenSize = size;\n });\n\n // this.layoutService.onMouseOver$.subscribe((deviceHasMouse: boolean) => {\n // this.deviceHasMouse = deviceHasMouse;\n // });\n }\n\n ngOnDestroy(): void {\n // if (this.itemClick) {\n // this.itemClick.unsubscribe();\n // }\n }\n\n itemClicked(item: ObjectsDataRow): void {\n this.itemClick.emit({ source: item });\n }\n\n moveLeft() {\n // this.carousel.moveLeft();\n const indexToMove = Math.max(\n this.carousel.currIndex - this.itemsToMove,\n 0\n );\n this.moveTo(indexToMove);\n }\n\n moveRight() {\n // this.carousel.moveRight();\n const indexToMove = Math.min(\n this.carousel.currIndex + this.itemsToMove,\n this.items.length\n );\n this.moveTo(indexToMove);\n }\n\n moveTo(index: number) {\n if (this.carousel) {\n this.carousel.moveTo(index);\n }\n }\n\n onReachesLeftBound(event: boolean) {\n this.prevDisabled = event;\n }\n\n onReachesRightBound(event: boolean) {\n this.nextDisabled = event;\n }\n}\n","<div class=\"carousel-container\">\n <ng-container *ngIf=\"items?.length > 0; then carouselBlock; else emptyBlock\"></ng-container>\n <ng-template #emptyBlock>\n <!-- No items -->\n </ng-template>\n <ng-template #carouselBlock>\n <pep-button *ngIf=\"!(hideArrowsInSmallScreen && screenSize > PepScreenSizeType.SM)\"\n [iconName]=\"'arrow_left_alt'\" [styleType]=\"'regular'\" [disabled]=\"prevDisabled\" (click)=\"moveLeft()\"\n class=\"carousel-arrow start-arrow\">\n </pep-button>\n <pep-carousel #carousel [xWheelEnabled]=\"false\" [snapDuration]=\"duration\"\n (reachesLeftBound)=\"onReachesLeftBound($event)\" (reachesRightBound)=\"onReachesRightBound($event)\">\n <ng-container *ngFor=\"let item of items\">\n <pep-form pepCarouselItem [layout]=\"layout\" [data]=\"item\" [layoutType]=\"'card'\"\n (click)=\"itemClicked(item)\" class=\"card-view \" [lockEvents]=\"lockItemInnerEvents\"\n [ngClass]=\"{ 'x-small-card': itemSize === 'xs', 'small-card': itemSize === 'sm'}\">\n </pep-form>\n </ng-container>\n </pep-carousel>\n <pep-button *ngIf=\"!(hideArrowsInSmallScreen && screenSize > PepScreenSizeType.SM)\"\n [iconName]=\"'arrow_right_alt'\" [styleType]=\"'regular'\" [disabled]=\"nextDisabled\" (click)=\"moveRight()\"\n class=\"carousel-arrow end-arrow\">\n </pep-button>\n </ng-template>\n</div>","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\nimport {\n PepMenuItem,\n IPepMenuItemClickEvent,\n} from '@pepperi-addons/ngx-lib/menu';\nimport { PepBreadCrumbItem } from '@pepperi-addons/ngx-lib/bread-crumbs';\n\nexport class IPepListChooserOption {\n key: string;\n text: string;\n}\n\nexport interface IPepListChooserOptionChangeEvent {\n source: IPepListChooserOption;\n}\n\n@Component({\n selector: 'pep-list-chooser',\n templateUrl: './list-chooser.component.html',\n styleUrls: ['./list-chooser.component.scss'],\n})\n@Injectable()\nexport class PepListChooserComponent {\n private _options: Array<IPepListChooserOption> = null;\n @Input()\n set options(value: Array<IPepListChooserOption>) {\n this._options = value;\n\n this.menuItems = value.map((opt) => {\n return { key: opt.key, text: opt.text };\n });\n\n if (this.menuItems?.length === 1) {\n this.breadCrumbsItems = [];\n this.breadCrumbsItems.push(\n new PepBreadCrumbItem({\n key: this.menuItems[0].key,\n text: this.menuItems[0].text,\n })\n );\n }\n }\n get options(): Array<IPepListChooserOption> {\n return this._options;\n }\n\n private _currentList: IPepListChooserOption = null;\n @Input()\n set currentList(value: IPepListChooserOption) {\n this._currentList = value;\n this.currentItem = this.menuItems.find((mi) => mi.key === value.key);\n }\n get currentList(): IPepListChooserOption {\n return this._currentList;\n }\n\n @Input() sizeType: PepSizeType = 'md';\n\n @Output()\n change: EventEmitter<IPepListChooserOptionChangeEvent> = new EventEmitter<IPepListChooserOptionChangeEvent>();\n\n breadCrumbsItems: Array<PepBreadCrumbItem> = null;\n menuItems: Array<PepMenuItem> = null;\n currentItem: PepMenuItem = null;\n\n onMenuItemClicked(menuItemClickEvent: IPepMenuItemClickEvent): void {\n this.currentList = this.options.find(\n (list) => list.key === menuItemClickEvent.source.key\n );\n this.change.emit({ source: this.currentList });\n }\n}\n","<ng-container *ngIf=\"menuItems?.length > 1\">\n <pep-menu [type]=\"'select'\" [sizeType]=\"sizeType\" [items]=\"menuItems\" [selectedItem]=\"currentItem\"\n [iconName]=\"'arrow_down'\" (menuItemClick)=\"onMenuItemClicked($event)\"></pep-menu>\n</ng-container>\n<ng-container *ngIf=\"menuItems?.length == 1\">\n <pep-bread-crumbs [items]=\"breadCrumbsItems\" [addSpacing]=\"true\"></pep-bread-crumbs>\n</ng-container>","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n OnInit,\n} from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\nimport {\n IPepMenuItemClickEvent,\n PepMenuItem,\n} from '@pepperi-addons/ngx-lib/menu';\nimport { IPepListSortingChangeEvent } from './list.model';\n\nexport class IPepListSortingOption {\n sortBy: string;\n title: string;\n iconName?: string;\n isAsc?: boolean;\n}\n\nexport interface IPepListSortingOptionChangeEvent {\n source: IPepListSortingOption;\n}\n\n@Component({\n selector: 'pep-list-sorting',\n templateUrl: './list-sorting.component.html',\n styleUrls: ['./list-sorting.component.scss'],\n})\n@Injectable()\nexport class PepListSortingComponent implements OnInit {\n private _options: Array<IPepListSortingOption> = null;\n @Input()\n set options(value: Array<IPepListSortingOption>) {\n this._options = value;\n\n this.menuItems = value.map((opt) => {\n return { key: opt.sortBy, text: opt.title, iconName: opt.iconName };\n });\n }\n get options(): Array<IPepListSortingOption> {\n return this._options;\n }\n\n private _currentSorting: IPepListSortingOption = null;\n @Input()\n set currentSorting(value: IPepListSortingOption) {\n this._currentSorting = value;\n this.currentItem = this.menuItems.find((mi) => mi.key === value.sortBy);\n }\n get currentSorting(): IPepListSortingOption {\n return this._currentSorting;\n }\n\n @Input() sizeType: PepSizeType = 'md';\n @Output()\n change: EventEmitter<IPepListSortingOptionChangeEvent> = new EventEmitter<IPepListSortingOptionChangeEvent>();\n\n menuItems: Array<PepMenuItem> = null;\n currentItem: PepMenuItem = null;\n\n ngOnInit(): void {\n if (\n this.currentSorting === null &&\n this.options &&\n this.options.length > 0\n ) {\n this.currentSorting = this.options[0];\n }\n }\n\n onMenuItemClicked(menuItemClickEvent: IPepMenuItemClickEvent): void {\n this.currentSorting = this.options.find(\n (sorting) => sorting.sortBy === menuItemClickEvent.source.key\n );\n this.change.emit({ source: this.currentSorting });\n }\n}\n","<div class=\"sorting-container\">\n <div class=\"body-xs sort-by\">\n <span>{{ 'LIST.SORT_BY' | translate }}</span>\n </div>\n <pep-menu [type]=\"'select'\" [sizeType]=\"sizeType\" [items]=\"menuItems\" [selectedItem]=\"currentItem\"\n [iconName]=\"'arrow_down'\" (menuItemClick)=\"onMenuItemClicked($event)\"></pep-menu>\n</div>","import { Component, Injectable, Input } from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\n\n@Component({\n selector: 'pep-list-total',\n templateUrl: './list-total.component.html',\n styleUrls: ['./list-total.component.scss', './list-total.component.theme.scss'],\n})\n@Injectable()\nexport class PepListTotalComponent {\n @Input() totalRows = -1;\n @Input() totalAmount = -1;\n @Input() isMapView = false;\n @Input() sizeType: PepSizeType = 'md';\n @Input() unknownCount = false;\n}\n","<div class=\"total-items-container\">\n <ng-container *ngIf=\"isMapView; then mapTemplate; else notMapTemplate\"></ng-container>\n\n <ng-template #notMapTemplate>\n <ng-container *ngIf=\"totalRows >= 0\">\n <div class=\"body-{{sizeType}} total-items color-dimmed\"\n [innerHtml]=\"(totalRows === 1 ? 'LIST.TOTAL_RESULT' : 'LIST.TOTAL_RESULTS') | translate: { totalRows: totalRows ,unknownCount: unknownCount === true ? '+' : ''}\">\n </div>\n </ng-container>\n <ng-container *ngIf=\"totalAmount > 0\"> {{ 'LIST.TOTAL_OF' | translate }} {{ totalAmount }} </ng-container>\n </ng-template>\n\n <ng-template #mapTemplate>\n <ng-container *ngIf=\"totalAmount >= 0\">\n </ng-container>\n <ng-container *ngIf=\"totalRows >= 0\">\n <div class=\"body-{{sizeType}} total-items color-dimmed\"\n [innerHtml]=\"(totalRows === 1 ? 'LIST.TOTAL_RESULT_OUT_OF_RESULT' : 'LIST.TOTAL_RESULTS_OUT_OF') | translate: { xRows: totalAmount, totalRows: totalRows }\">\n </div>\n </ng-container>\n </ng-template>\n</div>","import {\n Component,\n OnInit,\n Injectable,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n} from '@angular/core';\nimport { PepSizeType, PepStyleType } from '@pepperi-addons/ngx-lib';\nimport {\n PepMenuItem,\n IPepMenuItemClickEvent,\n} from '@pepperi-addons/ngx-lib/menu';\n\nexport type PepListViewDisplayType = 'menu' | 'buttons';\n\nexport class IPepListView {\n key: string;\n iconName: string;\n title?: string;\n}\n\nexport interface IListViewChangeEvent {\n source: IPepListView;\n}\n\n@Component({\n selector: 'pep-list-views',\n templateUrl: './list-views.component.html',\n styleUrls: ['./list-views.component.scss'],\n})\n@Injectable()\nexport class PepListViewsComponent implements OnInit {\n private _views: Array<IPepListView> = null;\n @Input()\n set views(value: Array<IPepListView>) {\n this._views = value;\n\n this.menuItems = value.map((opt) => {\n return { key: opt.key, text: opt.title, iconName: opt.iconName };\n });\n }\n get views(): Array<IPepListView> {\n return this._views;\n }\n\n private _currentView: IPepListView = null;\n @Input()\n set currentView(value: IPepListView) {\n this._currentView = value;\n\n if (this.displayType === 'menu') {\n this.currentItem = this.menuItems.find(\n (mi) => mi.key === value.key\n );\n }\n }\n get currentView(): IPepListView {\n return this._currentView;\n }\n\n @Input() displayType: PepListViewDisplayType = 'menu';\n @Input() styleType: PepStyleType = 'weak';\n @Input() sizeType: PepSizeType = 'md';\n @Input() classNames = '';\n\n @Output()\n change: EventEmitter<IListViewChangeEvent> = new EventEmitter<IListViewChangeEvent>();\n\n menuItems: Array<PepMenuItem> = null;\n currentItem: PepMenuItem = null;\n\n ngOnInit(): void {\n if (this.displayType === 'buttons') {\n if (\n this.currentView === null &&\n this.views &&\n this.views.length > 0\n ) {\n this.currentView = this.views[0];\n }\n }\n }\n\n onMenuItemClicked(menuItemClickEvent: IPepMenuItemClickEvent): void {\n this.currentView = this.views.find(\n (list) => list.key === menuItemClickEvent.source.key\n );\n this.raiseChangeEvent();\n }\n\n onViewChanged(view: IPepListView): void {\n this.currentView = view;\n this.raiseChangeEvent();\n }\n\n private raiseChangeEvent(): void {\n this.change.emit({ source: this.currentView });\n }\n}\n","<ng-container *ngIf=\"displayType === 'menu' then menuTemplate else buttonsTemplate\">\n</ng-container>\n<ng-template #menuTemplate>\n <pep-menu [type]=\"'select'\" [styleType]=\"styleType\" [sizeType]=\"sizeType\" [classNames]=\"classNames\"\n [items]=\"menuItems\" [selectedItem]=\"currentItem\"\n [iconName]=\"currentItem?.iconName ? currentItem?.iconName : 'arrow_down'\"\n (menuItemClick)=\"onMenuItemClicked($event)\"></pep-menu>\n</ng-template>\n<ng-template #buttonsTemplate>\n <div class=\"buttons-wrapper pep-spacing-element-negative\">\n <button *ngFor=\"let view of views\" mat-button [title]=\"view.title\" [disabled]=\"view.key === currentView?.key\"\n class=\"pep-button icon-button pep-spacing-element {{ sizeType }} {{ styleType }} {{ classNames }}\"\n pepRtlDirection pepMenuBlur (click)=\"onViewChanged(view)\">\n <mat-icon>\n <pep-icon name=\"{{ view?.iconName }}\"></pep-icon>\n </mat-icon>\n </button>\n </div>\n</ng-template>","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { ObjectsDataRow } from '@pepperi-addons/ngx-lib';\r\nimport { PepListSelectionType } from './list.model';\r\n\r\n@Pipe({\r\n name: 'isItemSelected'\r\n})\r\nexport class IsItemSelectedPipe implements PipeTransform {\r\n SEPARATOR = ',';\r\n\r\n private getUniqItemId(itemId: string, itemType = ''): string {\r\n return itemId + this.SEPARATOR + itemType;\r\n }\r\n\r\n transform(item: ObjectsDataRow, selectionTypeForActions: PepListSelectionType, selectedItemId: string, isAllSelected: boolean,\r\n selectedItems: Map<string, string>, unSelectedItems: Map<string, string>): any {\r\n let isSelected = false;\r\n\r\n if (selectionTypeForActions === 'single') {\r\n isSelected = selectedItemId === this.getUniqItemId(item?.UID, item?.Type.toString());\r\n }\r\n // else if (selectionTypeForActions === 'single-action') {\r\n // isSelected = (isAllSelected && !unSelectedItems.has(item?.UID)) || selectedItems.has(item?.UID);\r\n // }\r\n else if (selectionTypeForActions === 'multi') {\r\n if (item?.IsSelectableForActions) {\r\n isSelected = (isAllSelected && !unSelectedItems.has(item?.UID)) || selectedItems.has(item?.UID);\r\n }\r\n }\r\n\r\n return isSelected;\r\n }\r\n}\r\n\r\n@Pipe({\r\n name: 'isItemDisabled'\r\n})\r\nexport class IsItemDisabledPipe implements PipeTransform {\r\n transform(item: ObjectsDataRow, lockItemInnerEvents: boolean, printMode: boolean): any {\r\n return (\r\n printMode || lockItemInnerEvents || (item && !item.IsSelectableForActions)\r\n );\r\n }\r\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport { PepBreadCrumbsModule } from '@pepperi-addons/ngx-lib/bread-crumbs';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { PepCarouselModule } from '@pepperi-addons/ngx-lib/carousel';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconArrowDown,\n pepIconArrowEither,\n pepIconArrowUp,\n pepIconSystemMust,\n pepIconArrowRight,\n pepIconArrowRightAlt,\n pepIconArrowLeft,\n pepIconArrowLeftAlt,\n} from '@pepperi-addons/ngx-lib/icon';\nimport { PepFormModule } from '@pepperi-addons/ngx-lib/form';\nimport { PepMenuModule } from '@pepperi-addons/ngx-lib/menu';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\n\n// import { PepListOldComponent } from './list_old.component';\nimport { PepListComponent } from './list.component';\nimport { PepListActionsComponent } from './list-actions.component';\nimport { PepListCarouselComponent } from './list-carousel.component';\nimport { PepListChooserComponent } from './list-chooser.component';\nimport { PepListPagerComponent } from './list-pager.component';\nimport { PepListSortingComponent } from './list-sorting.component';\nimport { PepListTotalComponent } from './list-total.component';\nimport { PepListViewsComponent } from './list-views.component';\n\nconst listComponents = [\n // PepListOldComponent,\n PepListComponent,\n PepListActionsComponent,\n PepListCarouselComponent,\n PepListChooserComponent,\n PepListPagerComponent,\n PepListSortingComponent,\n PepListTotalComponent,\n PepListViewsComponent,\n];\n\nimport { IsItemDisabledPipe, IsItemSelectedPipe } from './list.pipes';\n\nconst listPipes = [\n IsItemSelectedPipe,\n IsItemDisabledPipe\n];\n\n//import { VirtualScrollerModule } from './virtual-scroller';\n// import { PepVirtualScrollComponent } from './virtual-scroll.component';\n@NgModule({\n imports: [\n CommonModule,\n // Material modules,\n MatCommonModule,\n MatButtonModule,\n MatCheckboxModule,\n MatRadioModule,\n MatIconModule,\n MatMenuModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepBreadCrumbsModule,\n PepButtonModule,\n PepCarouselModule,\n PepIconModule,\n PepFormModule,\n PepMenuModule,\n PepTextboxModule,\n //VirtualScrollerModule\n ],\n exports: [listComponents],\n declarations: [listComponents, listPipes],\n})\nexport class PepListModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconArrowDown,\n pepIconArrowEither,\n pepIconArrowUp,\n pepIconSystemMust,\n pepIconArrowRight,\n pepIconArrowRightAlt,\n pepIconArrowLeft,\n pepIconArrowLeftAlt,\n ]);\n }\n}\n","/*\n * Public API Surface of ngx-lib/list\n */\nexport * from './list.module';\nexport * from './list.model';\n// export * from './list_old.component';\nexport * from './list.component';\nexport * from './list-actions.component';\nexport * from './list-carousel.component';\nexport * from './list-chooser.component';\nexport * from './list-pager.component';\nexport * from './list-sorting.component';\nexport * from './list-total.component';\nexport * from './list-views.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i7","i3","i4","i5","i6","i8.PepListPagerComponent","i9","i1","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pepperi-addons-ngx-lib-list.mjs","sources":["../../../projects/ngx-lib/list/list.model.ts","../../../projects/ngx-lib/list/list-pager.component.ts","../../../projects/ngx-lib/list/list-pager.component.html","../../../projects/ngx-lib/list/list.component.ts","../../../projects/ngx-lib/list/list.component.html","../../../projects/ngx-lib/list/list-actions.component.ts","../../../projects/ngx-lib/list/list-actions.component.html","../../../projects/ngx-lib/list/list-carousel.component.ts","../../../projects/ngx-lib/list/list-carousel.component.html","../../../projects/ngx-lib/list/list-chooser.component.ts","../../../projects/ngx-lib/list/list-chooser.component.html","../../../projects/ngx-lib/list/list-sorting.component.ts","../../../projects/ngx-lib/list/list-sorting.component.html","../../../projects/ngx-lib/list/list-total.component.ts","../../../projects/ngx-lib/list/list-total.component.html","../../../projects/ngx-lib/list/list-views.component.ts","../../../projects/ngx-lib/list/list-views.component.html","../../../projects/ngx-lib/list/list.pipes.ts","../../../projects/ngx-lib/list/list.module.ts","../../../projects/ngx-lib/list/public-api.ts","../../../projects/ngx-lib/list/pepperi-addons-ngx-lib-list.ts"],"sourcesContent":["import { ObjectsDataRow } from '@pepperi-addons/ngx-lib';\n\nexport type PepListSelectionType =\n | 'none'\n | 'single'\n | 'multi';\n\nexport type PepListPagerType = 'pages' | 'scroll';\n\nexport type PepListViewType = '' | 'cards' | 'lines' | 'table'; // | 'map';\n\nexport type PepListCardSizeType = 'sm' | 'md';\n\nexport type PepListTableViewType = 'compact' | 'regular';\n\nexport interface IPepListItemClickEvent {\n source: ObjectsDataRow;\n viewType: PepListViewType;\n}\n\nexport class PepSelectionData {\n selectionType: number;\n rows: Array<any>;\n rowTypes: Array<any>;\n}\n\nexport interface IPepListLoadItemsEvent {\n fromIndex: number;\n toIndex: number;\n // updateItemsFunc: () => void; //() => any; \n}\n\nexport interface IPepListLoadPageEvent {\n pageIndex: number;\n pageSize: number;\n // updatePageFunc: () => void; //() => any; \n}\n\nexport interface IPepListStartIndexChangeEvent {\n startIndex: number;\n}\n\nexport const DEFAULT_PAGE_SIZE = 50;\n\nexport interface IPepListSortingData {\n sortBy: string;\n isAsc: boolean;\n}\n\nexport type IPepListSortingChangeEvent = IPepListSortingData\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injectable,\n Input,\n Output,\n} from '@angular/core';\nimport { PepLayoutService, } from '@pepperi-addons/ngx-lib';\nimport { DEFAULT_PAGE_SIZE } from './list.model';\n\nexport class IPepListPagerChangeEvent {\n pageIndex: number;\n previousPageIndex: number;\n pageSize: number;\n length: number;\n}\n\n@Component({selector: 'pep-list-pager',\n templateUrl: './list-pager.component.html',\n styleUrls: ['./list-pager.component.scss']})\n@Injectable()\nexport class PepListPagerComponent {\n @Input() disabled = false;\n private _pageIndex = 0;\n @Input()\n set pageIndex(value: number) {\n this.setPageIndex(value);\n }\n get pageIndex(): number {\n return this._pageIndex;\n }\n\n @Input() length = 0;\n @Input() pageSize = DEFAULT_PAGE_SIZE;\n\n @Output()\n pagerChange: EventEmitter<IPepListPagerChangeEvent> = new EventEmitter<IPepListPagerChangeEvent>();\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n public layoutService: PepLayoutService) { }\n\n nextPage(): void {\n if (!this.hasNextPage()) {\n return;\n }\n\n this.setPageIndex(this.pageIndex + 1);\n }\n\n previousPage(): void {\n if (!this.hasPreviousPage()) {\n return;\n }\n\n this.setPageIndex(this.pageIndex - 1);\n }\n\n firstPage(): void {\n if (!this.hasPreviousPage()) {\n return;\n }\n\n this.setPageIndex(0);\n }\n\n lastPage(): void {\n if (!this.hasNextPage()) {\n return;\n }\n\n this.setPageIndex(this.getNumberOfPages() - 1);\n }\n\n hasPreviousPage(): boolean {\n return this.pageIndex >= 1 && this.pageSize != 0;\n }\n\n hasNextPage(): boolean {\n const maxPageIndex = this.getNumberOfPages() - 1;\n return this.pageIndex < maxPageIndex && this.pageSize != 0;\n }\n\n getNumberOfPages(): number {\n if (!this.pageSize) {\n return 0;\n }\n\n return Math.ceil(this.length / this.pageSize);\n }\n\n /** Checks whether the buttons for going forwards should be disabled. */\n _nextButtonsDisabled() {\n return this.disabled || !this.hasNextPage();\n }\n\n /** Checks whether the buttons for going backwards should be disabled. */\n _previousButtonsDisabled() {\n return this.disabled || !this.hasPreviousPage();\n }\n\n onValueChange(value: string) {\n const pageNumber = coerceNumberProperty(value);\n this.setPageIndex(pageNumber - 1); // - 1 to convert number into index.\n }\n\n private setPageIndex(newIndex: number) {\n const previousPageIndex = this.pageIndex;\n\n if (newIndex >= 0 && newIndex < this.getNumberOfPages()) {\n this._pageIndex = newIndex;\n } else {\n this._pageIndex = 0;\n }\n\n if (this.pageIndex !== previousPageIndex) {\n this._emitChangeEvent(previousPageIndex);\n }\n }\n\n /** Emits an event notifying that a change of the paginator's properties has been triggered. */\n private _emitChangeEvent(previousPageIndex: number) {\n this.pagerChange.emit({\n previousPageIndex,\n pageIndex: this.pageIndex,\n pageSize: this.pageSize,\n length: this.length,\n });\n }\n}\n","<div class=\"pager-container body-sm\">\n <span class=\"pep-spacing-element\">{{ 'LIST.PAGER_PAGE' | translate }}</span>\n <pep-textbox pepAutoWidth class=\"page-index pep-spacing-element\" [key]=\"'pageIndex'\" [type]=\"'int'\"\n [disabled]=\"disabled\" [xAlignment]=\"'center'\" [renderTitle]=\"false\" [renderError]=\"false\" [renderSymbol]=\"false\"\n [value]=\"pageIndex + 1\" [minValue]=\"1\" [maxValue]=\"this.getNumberOfPages()\"\n [maxFieldCharacters]=\"6\" [mandatory]=\"true\" (valueChange)=\"onValueChange($event)\">\n </pep-textbox>\n <span class=\"pep-spacing-element\">{{ 'LIST.PAGER_OUT_OF' | translate }}</span>\n <span class=\"pep-spacing-element\">{{ getNumberOfPages() }}</span>\n <button mat-button [disabled]=\"disabled || _previousButtonsDisabled()\"\n [ngClass]=\"{ disabled: disabled || _previousButtonsDisabled() }\"\n class=\"pep-button icon-button pep-spacing-element sm weak\" pepRtlDirection pepMenuBlur (click)=\"previousPage()\"\n [title]=\"('LIST.PAGER_PREVIOUS' | translate)\">\n <mat-icon>\n <pep-icon [name]=\"layoutService.isRtl() ? 'arrow_right' : 'arrow_left'\"></pep-icon>\n </mat-icon>\n </button>\n <button mat-button [disabled]=\"disabled || _nextButtonsDisabled()\"\n [ngClass]=\"{ disabled: disabled || _nextButtonsDisabled() }\"\n class=\"pep-button icon-button pep-spacing-element sm weak\" pepRtlDirection pepMenuBlur (click)=\"nextPage()\"\n [title]=\"('LIST.PAGER_NEXT' | translate)\">\n <mat-icon>\n <pep-icon [name]=\"layoutService.isRtl() ? 'arrow_left' : 'arrow_right'\"></pep-icon>\n </mat-icon>\n </button>\n</div>","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n Renderer2,\n ViewChild,\n ElementRef,\n ChangeDetectorRef,\n OnDestroy,\n OnChanges,\n NgZone,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { delay } from 'rxjs/operators';\nimport {\n PepLayoutService,\n PepScreenSizeType,\n PepSessionService,\n UIControl,\n UIControlField,\n FIELD_TYPE,\n ObjectsDataRow,\n} from '@pepperi-addons/ngx-lib';\nimport {\n IPepFormFieldValueChangeEvent,\n IPepFormFieldClickEvent,\n} from '@pepperi-addons/ngx-lib/form';\n\nimport { IPageInfo } from './virtual-scroller';\n//import { VirtualScrollerComponent, IPageInfo } from './virtual-scroller';\nimport {\n IPepListLoadItemsEvent,\n IPepListSortingChangeEvent,\n IPepListItemClickEvent,\n PepListSelectionType,\n PepListViewType,\n PepSelectionData,\n PepListPagerType,\n IPepListLoadPageEvent,\n DEFAULT_PAGE_SIZE,\n IPepListStartIndexChangeEvent,\n PepListCardSizeType,\n PepListTableViewType,\n IPepListSortingData,\n} from './list.model';\nimport {\n IPepListPagerChangeEvent,\n PepListPagerComponent,\n} from './list-pager.component';\n\n//import * as tween from '@tweenjs/tween.js';\nimport tween, { Tween, Easing, update } from '@tweenjs/tween.js';\n\n@Component({\n selector: 'pep-list',\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n host: {\n '(window:resize)': 'onWinResize($event)',\n },\n // changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PepListComponent implements OnInit, OnChanges, OnDestroy {\n @ViewChild('listContainerResizable', { read: ElementRef }) private listContainerResizableElementRef: ElementRef;\n\n static TOP_ITEMS_DEFAULT = 100;\n static TOP_ITEMS_TABLE = 100;\n static TOP_ITEMS_THUMBNAILS = 100;\n static TOP_ITEMS_ARRAY = 2500;\n\n static SELECTED_ITEMS_STATE_KEY = 'SelectedItems';\n static UN_SELECTED_ITEMS_STATE_KEY = 'UnSelectedItems';\n static ALL_SELECTED_STATE_KEY = 'AllSelected';\n static SORT_BY_STATE_KEY = 'SortBy';\n static ASCENDING_STATE_KEY = 'IsAscending';\n\n static MINIMUM_COLUMN_WIDTH = 72;\n\n @Input() \n set sorting(value: IPepListSortingData) {\n this.sortBy = value?.sortBy || '';\n this.isAsc = value?.sortBy.length > 0 ? value.isAsc : this.isAsc;\n }\n get sorting(): IPepListSortingData {\n return {\n sortBy: this.sortBy,\n isAsc: this.isAsc\n };\n }\n \n @Input() cacheSize = -1;\n @Input() noDataFoundMsg: string = null;\n @Input() selectionTypeForActions: PepListSelectionType = 'multi';\n @Input() showCardSelection = false;\n @Input() hideAllSelectionInMulti = false;\n\n @Input() cardSize: PepListCardSizeType = 'md';\n @Input() tableViewType: PepListTableViewType = 'regular';\n \n private _viewType: PepListViewType = '';\n @Input()\n set viewType(value: PepListViewType) {\n this._viewType = value;\n this.isTable = value === 'table';\n }\n get viewType(): PepListViewType {\n return this._viewType;\n }\n\n @Input() firstFieldAsLink = false;\n @Input() supportSorting = true;\n @Input() supportSortingFields: string[] = undefined;\n @Input() supportResizing = true;\n\n private _parentScroll: Element | Window = null;\n @Input()\n set parentScroll(value: Element | Window) {\n this._parentScroll = value;\n }\n get parentScroll(): Element | Window {\n return this._parentScroll;\n }\n\n @Input() disabled = false;\n\n private _lockEvents = false;\n @Input()\n set lockEvents(value: boolean) {\n this._lockEvents = value;\n\n if (this._lockEvents) {\n this.renderer.addClass(this.hostElement.nativeElement, 'lock-events');\n } else {\n this.renderer.removeClass(this.hostElement.nativeElement, 'lock-events');\n }\n }\n get lockEvents(): boolean {\n return this._lockEvents;\n }\n\n @Input() lockItemInnerEvents = false;\n @Input() printMode = false;\n @Input() isReport = false;\n @Input() zebraStripes = false;\n @Input() totalsRow = [];\n @Input() pagerType: PepListPagerType = 'scroll';\n @Input() pageSize: number = DEFAULT_PAGE_SIZE;\n @Input() pageIndex = 0;\n // @Input() startIndex = 0;\n\n @Input() bufferAmount = 0;\n @Input() scrollAnimationTime = 500;\n @Input() scrollDebounceTime = 0;\n @Input() scrollThrottlingTime = 0;\n @Input() SEPARATOR = ',';\n private _useAsWebComponent = false;\n @Input()\n set useAsWebComponent(value: boolean) {\n this._useAsWebComponent = value;\n if (value) {\n this.exportFunctionsOnHostElement();\n }\n }\n get useAsWebComponent(): boolean {\n return this._useAsWebComponent;\n }\n\n @Output()\n itemClick: EventEmitter<IPepListItemClickEvent> = new EventEmitter<IPepListItemClickEvent>();\n\n @Output()\n fieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n @Output()\n valueChange: EventEmitter<IPepFormFieldValueChangeEvent> = new EventEmitter<IPepFormFieldValueChangeEvent>();\n\n @Output()\n sortingChange: EventEmitter<IPepListSortingChangeEvent> = new EventEmitter<IPepListSortingChangeEvent>();\n\n @Output()\n selectedItemsChange: EventEmitter<number> = new EventEmitter<number>();\n\n @Output()\n selectedItemChange: EventEmitter<any> = new EventEmitter<any>();\n\n @Output()\n selectAllClick: EventEmitter<any> = new EventEmitter<any>();\n\n // @Output()\n // singleActionClick: EventEmitter<any> = new EventEmitter<any>();\n\n @Output()\n listLoad: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n loadItems: EventEmitter<IPepListLoadItemsEvent> = new EventEmitter<IPepListLoadItemsEvent>();\n\n @Output()\n loadPage: EventEmitter<IPepListLoadPageEvent> = new EventEmitter<IPepListLoadPageEvent>();\n\n @Output()\n startIndexChange: EventEmitter<IPepListStartIndexChangeEvent> = new EventEmitter<IPepListStartIndexChangeEvent>();\n\n // TODO Avner: Remove this when the virtual scroller is implemented\n // @ViewChild(VirtualScrollerComponent) private virtualScroller: VirtualScrollerComponent;\n private virtualScroller = undefined;\n @ViewChild('selectAllCB') selectAllCB: any;\n \n \n private _layout: UIControl = null;\n get layout(): UIControl {\n return this._layout;\n }\n\n totalRows = -1;\n isTable = false;\n private hasColumnWidthOfTypePercentage = true;\n\n private _items: Array<ObjectsDataRow> = null;\n get items(): Array<ObjectsDataRow> {\n return this._items;\n }\n\n private itemsCounter = 0;\n\n currentPageItems: Array<ObjectsDataRow>;\n\n\n isAllSelected = false;\n selectedItems = new Map<string, string>();\n unSelectedItems = new Map<string, string>();\n\n private currentTween: any;\n\n selectedItemId = '';\n hoveredItemId = '';\n\n private containerWidth = 0;\n private tableScrollWidth = 0;\n\n private _loadingItemsFromApi = false;\n get loadingItemsFromApi() {\n return this._loadingItemsFromApi;\n }\n\n screenSize: PepScreenSizeType;\n deviceHasMouse = false;\n\n // For resize\n pressedColumn = '';\n pressedColumnIndex = -1;\n startX = 0;\n startWidth = 0;\n tableStartWidth = 0;\n \n private lastColumnsWidth: Array<{ columnAPIName: string, calcColumnWidth: number, calcTitleColumnWidthString: string, calcColumnWidthString: string }> = [];\n\n // For sorting\n isAsc = false;\n sortBy = '';\n isUserSelected = false;\n checkForChanges: any = null;\n calculatedObjectHeight = 'auto';\n\n constructor(\n private hostElement: ElementRef,\n private layoutService: PepLayoutService,\n private sessionService: PepSessionService,\n private cd: ChangeDetectorRef,\n private renderer: Renderer2,\n private zone: NgZone\n ) {\n // this.nativeWindow = window;\n this.layoutService.onResize$.subscribe((size: PepScreenSizeType) => {\n this.screenSize = size;\n });\n\n this.layoutService.onMouseOver$.subscribe((deviceHasMouse: boolean) => {\n this.deviceHasMouse = deviceHasMouse;\n });\n }\n\n ngOnInit(): void {\n this.containerWidth = 0;\n this.deviceHasMouse = this.layoutService.getDeviceHasMouse();\n }\n\n ngOnChanges(changes): void {\n if (this.containerWidth <= 0) {\n this.setContainerWidth();\n }\n }\n\n ngOnDestroy(): void {\n // if (this.valueChange) {\n // this.valueChange.unsubscribe();\n // }\n\n // if (this.loadItems) {\n // this.loadItems.unsubscribe();\n // }\n\n // if (this.loadPage) {\n // this.loadPage.unsubscribe();\n // }\n\n // if (this.sortingChange) {\n // this.sortingChange.unsubscribe();\n // }\n\n // if (this.fieldClick) {\n // this.fieldClick.unsubscribe();\n // }\n\n // if (this.itemClick) {\n // this.itemClick.unsubscribe();\n // }\n\n // if (this.listLoad) {\n // this.listLoad.unsubscribe();\n // }\n\n this.saveSortingToSession();\n }\n\n getCachedItemsNumber() {\n return this.cacheSize >= 0 ? this.cacheSize : PepListComponent.TOP_ITEMS_ARRAY;\n }\n\n private getScrollingElement() {\n return this.parentScroll ? this.parentScroll : this.virtualScroller?.contentElementRef.nativeElement.parentElement;\n }\n\n private scrollToTop(animate = true) {\n const scrollingElement = this.getScrollingElement();\n if (scrollingElement) {\n const scrollTop = 0;\n\n // totally disable animate\n if (!animate || this.scrollAnimationTime === 0) {\n if (scrollingElement instanceof Window) {\n window.scrollTo(0, scrollTop);\n } else {\n scrollingElement.scrollTop = scrollTop;\n }\n } else {\n let animationRequest;\n const isWindow = scrollingElement instanceof Window;\n const currentScrollTop =\n scrollingElement instanceof Window\n ? window.pageYOffset\n : scrollingElement.scrollTop;\n\n if (this.currentTween !== undefined) {\n this.currentTween.stop();\n }\n this.currentTween = new tween.Tween({ scrollTop: currentScrollTop })\n .to({ scrollTop }, this.scrollAnimationTime)\n .easing(tween.Easing.Quadratic.Out)\n .onUpdate((data) => {\n if (isNaN(data.scrollTop)) {\n return;\n }\n\n if (isWindow) {\n window.scrollTo(0, data.scrollTop);\n } else {\n this.renderer.setProperty(\n scrollingElement,\n 'scrollTop',\n data.scrollTop\n );\n }\n })\n .onStop(() => {\n cancelAnimationFrame(animationRequest);\n })\n .start();\n\n const animate = (time?) => {\n this.currentTween.update(time);\n if (this.currentTween._object.scrollTop !== scrollTop) {\n this.zone.runOutsideAngular(() => {\n animationRequest = requestAnimationFrame(animate);\n });\n }\n };\n\n animate();\n }\n }\n }\n\n private getSelectionCheckBoxWidth(): number {\n return this.selectionTypeForActions === 'multi' ? 44 : (this.selectionTypeForActions === 'single' ? 44 : 0);\n }\n\n private setContainerWidth(): void {\n if (!this.hostElement.nativeElement.parentElement) {\n return;\n }\n\n const rowHeight = 40; // the table row height (2.5rem * 16font-size).\n const style = getComputedStyle(\n this.hostElement.nativeElement.parentElement\n );\n // The container-fluid class padding left + right + border\n const containerFluidSpacing =\n parseInt(style.paddingLeft, 10) + parseInt(style.paddingRight, 10);\n\n const parentContainer =\n this.hostElement.nativeElement.parentElement.parentElement > 0\n ? this.hostElement.nativeElement.parentElement.parentElement\n : this.hostElement.nativeElement.parentElement;\n\n // Calculate if vertical scroll should appear, if so set the scroll width. (this.totalRows + 1) + 1 is for the header row.\n this.tableScrollWidth = parentContainer.clientHeight < rowHeight * (this.totalRows + 1)\n ? this.layoutService.getScrollbarWidth()\n : 0;\n\n // The selectionCheckBoxWidth width + containerFluidSpacing + this.tableScrollWidth.\n const rowHeaderWidthToSub =\n containerFluidSpacing + this.getSelectionCheckBoxWidth() + this.tableScrollWidth;\n this.containerWidth = parentContainer.offsetWidth - rowHeaderWidthToSub;\n }\n\n private saveSortingToSession(): void {\n this.sessionService.setObject(\n PepListComponent.SORT_BY_STATE_KEY,\n this.sortBy\n );\n this.sessionService.setObject(\n PepListComponent.ASCENDING_STATE_KEY,\n this.isAsc\n );\n }\n\n private getTopItems(): number {\n return this.isTable\n ? PepListComponent.TOP_ITEMS_TABLE\n : PepListComponent.TOP_ITEMS_THUMBNAILS;\n }\n\n private disableScroll(disable: boolean) {\n if (disable) {\n this.renderer.addClass(this.hostElement.nativeElement.parentElement, 'lock-events');\n } else {\n this.renderer.removeClass(this.hostElement.nativeElement.parentElement, 'lock-events');\n }\n }\n\n private toggleLoadingItemsFropApi(loadingItemsFromApi: boolean): void {\n this._loadingItemsFromApi = loadingItemsFromApi;\n\n // this.disableScroll(loadingItemsFromApi);\n }\n\n private updateCurrentPageItems(startIndex: number, endIndex: number): void {\n this.currentPageItems = this.items.slice(startIndex, endIndex);\n }\n\n private setSelectionItems(\n itemId: string,\n uniqItemId: string,\n isChecked: boolean\n ): void {\n // Set selected item checkbox\n if (this.isAllSelected) {\n if (isChecked) {\n this.unSelectedItems.delete(itemId);\n this.selectedItems.set(itemId, uniqItemId);\n } else {\n this.selectedItems.delete(itemId);\n this.unSelectedItems.set(itemId, uniqItemId);\n }\n } else {\n if (isChecked) {\n this.unSelectedItems.delete(itemId);\n this.selectedItems.set(itemId, uniqItemId);\n } else {\n this.selectedItems.delete(itemId);\n this.unSelectedItems.set(itemId, uniqItemId);\n }\n }\n }\n\n private getUniqItemId(itemId: string, itemType = ''): string {\n return itemId + this.SEPARATOR + itemType;\n }\n\n private setLayout(): void {\n if (\n this.totalRows === 0 ||\n !this._layout ||\n !this._layout.ControlFields ||\n this._layout.ControlFields.length === 0\n ) {\n return;\n }\n\n this._layout.ControlFields.forEach((cf) => {\n if (cf.ColumnWidth === 0) {\n cf.ColumnWidth = 10;\n }\n\n if (\n this.isTable &&\n (cf.FieldType === FIELD_TYPE.Image ||\n // cf.FieldType === FIELD_TYPE.Indicators || ???\n cf.FieldType === FIELD_TYPE.Signature ||\n cf.FieldType === FIELD_TYPE.NumberIntegerQuantitySelector ||\n cf.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n cf.FieldType === FIELD_TYPE.NumberIntegerForMatrix ||\n cf.FieldType === FIELD_TYPE.NumberRealForMatrix ||\n cf.FieldType === FIELD_TYPE.Package ||\n cf.ApiName === 'UnitsQuantity' ||\n cf.ApiName === 'QuantitySelector')\n ) {\n cf.Layout.XAlignment = 3;\n }\n });\n\n if (!this.cd['destroyed']) {\n this.cd.detectChanges();\n }\n\n // Set the container width.\n if (this.containerWidth <= 0) {\n this.setContainerWidth();\n }\n\n const isLastColumnsWidthSet = this.setLastColumnsWidth();\n \n // Set the layout only if the last columns width couldn't set.\n if (!isLastColumnsWidthSet) {\n this.calcColumnsWidth();\n }\n \n this.checkForChanges = new Date().getTime();\n }\n\n private setLastColumnsWidth(): boolean {\n let res = false;\n\n let totalCalcColsWidth = 0;\n let widthToSet = 'inherit';\n\n if (this.lastColumnsWidth.length > 0) {\n // Check if this is the same UI control for table.\n if (this.lastColumnsWidth.length === this._layout.ControlFields.length) {\n let uiControlsAreTheSame = true;\n\n for (let index = 0; index < this._layout.ControlFields.length; index++) {\n const uiControlField: UIControlField = this._layout.ControlFields[index];\n \n if (uiControlField.ApiName !== this.lastColumnsWidth[index].columnAPIName) {\n uiControlsAreTheSame = false;\n break;\n }\n }\n \n if (uiControlsAreTheSame) {\n for (let index = 0; index < this._layout.ControlFields.length; index++) {\n const uiControlField: UIControlField = this._layout.ControlFields[index];\n uiControlField.calcColumnWidth = this.lastColumnsWidth[index].calcColumnWidth;\n uiControlField.calcTitleColumnWidthString = this.lastColumnsWidth[index].calcTitleColumnWidthString;\n uiControlField.calcColumnWidthString = this.lastColumnsWidth[index].calcColumnWidthString;\n totalCalcColsWidth += this.lastColumnsWidth[index].calcColumnWidth;\n }\n \n widthToSet = (totalCalcColsWidth + this.getSelectionCheckBoxWidth()) + 'px'\n console.log(`setLastColumnsWidth -> widthToSet: ${widthToSet} *** totalCalcColsWidth: ${totalCalcColsWidth}`);\n this.setColumnsWidth(widthToSet);\n\n res = true;\n }\n }\n }\n return res;\n }\n\n private setVirtualScrollWidth(widthToSet: string) {\n if (this.virtualScroller) {\n this.renderer.setStyle(\n this.virtualScroller.contentElementRef.nativeElement,\n 'width',\n widthToSet === 'inherit' ? '100%' : widthToSet\n );\n }\n }\n\n private setColumnsWidth(widthToSet: string) {\n // this.renderer.setStyle(\n // this.hostElement.nativeElement,\n // 'width',\n // widthToSet\n // );\n this.renderer.setStyle(\n this.listContainerResizableElementRef.nativeElement,\n 'width',\n widthToSet\n );\n\n if (this.isTable) {\n this.setVirtualScrollWidth(widthToSet);\n } else {\n // Do this only after UI is change cause the property isTable is Input and can refresh after this thread.\n setTimeout(() => {\n this.setVirtualScrollWidth(widthToSet);\n }, 0);\n }\n }\n\n private calcColumnsWidth(): void {\n const fixedMultiple = 3.78; // for converting em to pixel.\n const length = this._layout.ControlFields.length;\n \n // Is table AND there is at least one column of width type of percentage.\n if (this.isTable) {\n if (this._layout && this._layout.ControlFields) {\n this.hasColumnWidthOfTypePercentage =\n this._layout.ControlFields.filter(\n (cf) => cf.ColumnWidthType === 1\n ).length === 0;\n }\n }\n\n // If the columns size is fixed and the total is small then the container change it to percentage.\n if (!this.hasColumnWidthOfTypePercentage) {\n const totalFixedColsWidth = this._layout.ControlFields.map(\n (cf) => cf.ColumnWidth * fixedMultiple\n ).reduce((sum, current) => sum + current);\n\n if (window.innerWidth > totalFixedColsWidth) {\n this.hasColumnWidthOfTypePercentage = true;\n }\n }\n\n let totalCalcColsWidth = 0;\n\n let widthToSet = 'inherit';\n\n // Calc by percentage\n if (this.hasColumnWidthOfTypePercentage) {\n const totalColsWidth: number = this._layout.ControlFields.map(\n (cf) => cf.ColumnWidth\n ).reduce((sum, current) => sum + current);\n\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this._layout.ControlFields[index];\n const calcColumnWidthPercentage = (100 / totalColsWidth) * uiControlField.ColumnWidth;\n\n uiControlField.calcColumnWidth = Math.floor((this.containerWidth * calcColumnWidthPercentage) / 100);\n\n if (index === length - 1) {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = 'calc(100% - ' + totalCalcColsWidth + 'px)'; // For 100%\n } else {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = uiControlField.calcColumnWidth + 'px';\n totalCalcColsWidth += uiControlField.calcColumnWidth;\n }\n }\n } else {\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this._layout\n .ControlFields[index];\n const currentFixedWidth = Math.floor(\n uiControlField.ColumnWidth * fixedMultiple\n );\n\n if (index === length - 1) {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = currentFixedWidth + 'px';\n } else {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = currentFixedWidth + 'px';\n }\n\n totalCalcColsWidth += currentFixedWidth;\n }\n\n widthToSet = (totalCalcColsWidth + this.getSelectionCheckBoxWidth()) + 'px'\n }\n\n console.log(`calcColumnsWidth -> widthToSet: ${widthToSet} *** totalCalcColsWidth: ${totalCalcColsWidth}`);\n this.setColumnsWidth(widthToSet);\n }\n\n private calcObjectHeight() {\n setTimeout(() => {\n if (this.virtualScroller) {\n const content = this.virtualScroller.getContent();\n console.log(`content.children.length: ${content.children.length}`);\n\n if (content.children.length > 0) {\n const rect = this.virtualScroller.getElementSize(content.children[0]);\n this.calculatedObjectHeight = rect.height + 'px';\n console.log(`this.calculatedObjectHeight: ${this.calculatedObjectHeight}`);\n }\n }\n this.disableScroll(false);\n }, 1000);\n }\n\n private initResizeData(): void {\n this.startX = 0;\n this.startWidth = 0;\n this.tableStartWidth = 0;\n this.pressedColumn = '';\n this.pressedColumnIndex = -1;\n }\n\n private getParent(el, parentSelector): any {\n // If no parentSelector defined will bubble up all the way to *document*\n if (parentSelector === undefined) {\n parentSelector = document;\n }\n const parent = [];\n let p = el.parentNode;\n\n while (\n p &&\n p.className !== '' &&\n p.className.indexOf(parentSelector) === -1 &&\n parentSelector !== document\n ) {\n const o = p;\n p = o.parentNode;\n }\n if (p.className.indexOf(parentSelector) > -1) {\n parent.push(p); // Push that parentSelector you wanted to stop at\n }\n return parent;\n }\n\n private cleanItems(): void {\n this.itemsCounter = 0;\n this._items =\n this.totalRows > 0 ? Array<ObjectsDataRow>(this.totalRows) : [];\n this.currentPageItems = [];\n this.calculatedObjectHeight = 'auto';\n }\n\n private initVariablesFromSession(items: ObjectsDataRow[]): void {\n const selectedItemsObject: Array<any> = this.sessionService.getObject<\n Array<any>\n >(PepListComponent.SELECTED_ITEMS_STATE_KEY);\n const selectedItemsFromMap: Map<string, string> =\n selectedItemsObject && selectedItemsObject.length > 0\n ? new Map(selectedItemsObject)\n : null;\n if (\n selectedItemsFromMap != null &&\n typeof selectedItemsFromMap.size !== 'undefined' &&\n selectedItemsFromMap.size > 0\n ) {\n this.selectedItems = selectedItemsFromMap;\n this.sessionService.removeObject(\n PepListComponent.SELECTED_ITEMS_STATE_KEY\n );\n } else {\n this.selectedItems.clear();\n }\n\n const unSelectedItemsObject: Array<any> = this.sessionService.getObject<\n Array<any>\n >(PepListComponent.UN_SELECTED_ITEMS_STATE_KEY);\n const unSelectedItemsMap: Map<string, string> =\n unSelectedItemsObject && unSelectedItemsObject.length > 0\n ? new Map(unSelectedItemsObject)\n : null;\n if (\n unSelectedItemsMap != null &&\n typeof unSelectedItemsMap.size !== 'undefined' &&\n unSelectedItemsMap.size > 0\n ) {\n this.unSelectedItems = unSelectedItemsMap;\n this.sessionService.removeObject(\n PepListComponent.UN_SELECTED_ITEMS_STATE_KEY\n );\n } else {\n this.unSelectedItems.clear();\n }\n\n const isAllSelected = this.sessionService.getObject(\n PepListComponent.ALL_SELECTED_STATE_KEY\n );\n if (isAllSelected != null) {\n // Comment this in version 0.4.2-beta.103, I don't know why we need this (&& this.getIsAllSelected(items))\n // this.isAllSelected = isAllSelected && this.getIsAllSelected(items);\n this.isAllSelected = isAllSelected;\n this.sessionService.removeObject(\n PepListComponent.ALL_SELECTED_STATE_KEY\n );\n } else {\n this.isAllSelected = false;\n }\n\n const sortBy = this.sessionService.getObject(\n PepListComponent.SORT_BY_STATE_KEY\n );\n if (sortBy && sortBy !== '') {\n this.sortBy = sortBy;\n this.sessionService.removeObject(\n PepListComponent.SORT_BY_STATE_KEY\n );\n } else {\n this.sortBy = '';\n }\n\n const isAsc = this.sessionService.getObject(\n PepListComponent.ASCENDING_STATE_KEY\n );\n if (isAsc != null) {\n this.isAsc = isAsc;\n this.sessionService.removeObject(\n PepListComponent.ASCENDING_STATE_KEY\n );\n } else {\n this.isAsc = true;\n }\n }\n\n private getIsAllSelected(items: Array<ObjectsDataRow>): boolean {\n let result = true;\n\n if (this.selectedItems?.size > 0 && items?.length > 0) {\n for (const item of items) {\n if (!(item && this.selectedItems.has(item?.UID.toString()))) {\n result = false;\n break;\n }\n }\n } else {\n result = false;\n }\n\n return result;\n }\n\n private getNumberOfStartItems(): number {\n let numberOfStartItems = 20;\n\n if (\n this.screenSize === PepScreenSizeType.XL ||\n this.screenSize === PepScreenSizeType.LG\n ) {\n numberOfStartItems = this.isTable ? 50 : 40;\n } else if (this.screenSize === PepScreenSizeType.MD) {\n numberOfStartItems = this.isTable ? 30 : 20;\n } else if (this.screenSize === PepScreenSizeType.SM) {\n numberOfStartItems = this.isTable ? 20 : 10;\n } else if (this.screenSize === PepScreenSizeType.XS) {\n numberOfStartItems = this.isTable ? 15 : 5;\n }\n\n return numberOfStartItems;\n }\n\n private setItemClicked(\n itemId,\n isSelectableForActions: boolean,\n itemType: string,\n isChecked: boolean\n ): void {\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n\n // select the selected item.\n if (isChecked) {\n // Set seleted item\n this.selectedItemId = uniqItemId;\n } else {\n if (this.selectedItemId === uniqItemId) {\n this.selectedItemId = '';\n }\n }\n\n if (this.selectionTypeForActions === 'single') {\n this.selectedItemsChange.emit(\n this.selectedItemId.length === 0 ? 0 : 1\n );\n } else if (this.selectionTypeForActions === 'multi') {\n if (isSelectableForActions) {\n this.setSelectionItems(itemId, uniqItemId, isChecked);\n\n const currentList = this.isAllSelected\n ? this.unSelectedItems\n : this.selectedItems;\n const currentListCount = this.isAllSelected\n ? this.totalRows - currentList.size\n : currentList.size;\n this.selectedItemsChange.emit(currentListCount);\n }\n }\n\n // Raise selected item change event\n if (this.selectionTypeForActions !== 'none') {\n this.selectedItemChange.emit({\n id: itemId,\n selected: isChecked,\n });\n }\n }\n\n private exportFunctionsOnHostElement() {\n // This is for web component usage for use those functions.\n this.hostElement.nativeElement.clear = this.clear.bind(this);\n this.hostElement.nativeElement.initListData = this.initListData.bind(\n this\n );\n this.hostElement.nativeElement.updateItems = this.updateItems.bind(\n this\n );\n this.hostElement.nativeElement.updatePage = this.updatePage.bind(this);\n this.hostElement.nativeElement.updateItem = this.updateItem.bind(this);\n }\n\n // For refresh the UI when change the is selectable for action on item.\n getisItemDisabled(item: ObjectsDataRow): boolean {\n return this.printMode || this.lockItemInnerEvents || (item && !item.IsSelectableForActions)\n }\n\n getIsAllSelectedForActions(): boolean {\n let res = false;\n\n if (this.isAllSelected) {\n if (this.unSelectedItems.size === 0) {\n res = true;\n }\n } else {\n if (this.virtualScroller?.viewPortItems) {\n if (this.selectedItems.size === this.totalRows) {\n res = this.getIsAllSelected(this.virtualScroller.viewPortItems);\n } else if (this.selectedItems.size < this.totalRows) {\n for (const item of this.virtualScroller.viewPortItems) {\n res =\n item && this.selectedItems.has(item?.UID.toString());\n\n if (!res) {\n break;\n }\n }\n }\n }\n }\n\n return res;\n }\n\n setIsAllSelected(isChecked: boolean): void {\n if (this.selectionTypeForActions === 'multi') {\n this.selectAllCB.checked = isChecked;\n this.isAllSelected = isChecked;\n }\n }\n\n selectAllItemsForActions(e: any): void {\n // For material checkbox || radio.\n const isChecked = e.source.checked;\n\n // Indeterminate mode\n let isIndeterminate = false;\n const currentList = this.isAllSelected\n ? this.unSelectedItems\n : this.selectedItems;\n if (currentList.size > 0) {\n isIndeterminate = true;\n this.isAllSelected = false;\n this.selectedItemsChange.emit(0);\n e.source.checked = false;\n }\n\n this.selectedItems.clear();\n this.unSelectedItems.clear();\n\n if (!isIndeterminate) {\n this.isAllSelected = isChecked;\n this.selectAllClick.emit(isChecked);\n\n if (this.selectionTypeForActions === 'multi') {\n if (!isChecked) {\n this.selectedItemsChange.emit(0);\n this.selectedItemId = '';\n } else {\n const filteredItems = this.items.filter(\n (item) => item && item.IsSelectableForActions\n );\n this.selectedItemsChange.emit(filteredItems.length);\n }\n }\n } else {\n // Remove all\n if (this.selectionTypeForActions === 'multi') {\n this.selectAllClick.emit(false);\n }\n }\n }\n\n raiseStartIndexChange(startIndex = 0) {\n // this.startIndex = startIndex;\n this.startIndexChange.emit({ startIndex });\n }\n\n getIsItemSelected(item: ObjectsDataRow): boolean {\n let isSelected = false;\n\n if (item) {\n if (this.selectionTypeForActions === 'single') {\n isSelected = this.selectedItemId === this.getUniqItemId(item.UID, item.Type.toString());\n } else if (this.selectionTypeForActions === 'multi') {\n if (item.IsSelectableForActions) {\n isSelected = (this.isAllSelected && !this.unSelectedItems.has(item.UID)) || this.selectedItems.has(item.UID);\n }\n }\n }\n\n return isSelected;\n }\n\n selectItemForActions(\n e: any,\n itemId: string,\n isSelectableForActions: boolean,\n itemType = ''\n ): void {\n // For material checkbox || radio.\n const isChecked = e.source.checked;\n this.setItemClicked(\n itemId,\n isSelectableForActions,\n itemType,\n isChecked\n );\n }\n\n itemClicked(e: any, item: ObjectsDataRow): void {\n // Set seleted item\n const itemId = item?.UID.toString();\n const itemType = item?.Type.toString();\n let isChecked = false;\n\n if (item && item.IsSelectableForActions) {\n this.selectedItemId = this.getUniqItemId(itemId, itemType);\n isChecked = true;\n }\n // TODO - need to check what we want to do line view\n if (this.isTable || this.viewType === 'cards') {\n if (this.selectionTypeForActions === 'single') {\n this.setItemClicked(\n itemId,\n item.IsSelectableForActions,\n itemType,\n isChecked\n );\n } else if (this.selectionTypeForActions === 'none') {\n // Just mark the row as highlighted\n this.setItemClicked(\n itemId,\n item.IsSelectableForActions,\n itemType,\n true\n );\n }\n } else {\n if (this.disabled) {\n return;\n }\n }\n\n this.itemClick.emit({ source: item, viewType: this.viewType });\n }\n\n onTableRowMouseEnter(event: any, itemId: string, itemType: string): void {\n if (!this.deviceHasMouse) {\n return;\n }\n\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n this.hoveredItemId = uniqItemId;\n }\n\n onTableRowMouseLeave(event: any, itemId: string, itemType: string): void {\n this.hoveredItemId = '';\n }\n\n onTabKeydown(event: any, itemId: string, itemType: string): void {\n const keyboardEvent = event as KeyboardEvent;\n if (keyboardEvent.key === 'Tab') {\n\n const jumpToNextRow = !keyboardEvent.shiftKey;\n\n const eventTarget = event.target || event.srcElement;\n const isLastColumn = this.isLastColunm(eventTarget, 'table-cell', jumpToNextRow);\n\n // If the last column then go to the next row.\n if(isLastColumn) {\n const currentRowEL = this.getParentByClass(eventTarget, 'table-row');\n const nextRow = jumpToNextRow ? currentRowEL?.nextElementSibling : currentRowEL?.previousElementSibling;\n if (nextRow !== null) {\n // Remove the highlight from the current row.\n this.renderer.removeClass(nextRow, 'highlighted');\n // Highlight the next row.\n this.renderer.addClass(nextRow, 'highlighted');\n // Click on the first cell of the next row.\n const indexOfFocusCell = jumpToNextRow ? 0 : nextRow.querySelectorAll('.table-cell').length - 1;\n nextRow.querySelectorAll('.table-cell')[indexOfFocusCell].click(); \n setTimeout(() => {\n nextRow.querySelectorAll('.table-cell')[indexOfFocusCell].focus();\n }, 100);\n \n \n }\n }\n }\n }\n\n isLastColunm(el, parentSelector, isNext = true): boolean {\n const parent = this.getParentByClass(el, parentSelector);\n // check if last column or if shifr pressed and it's the first column\n return isNext ? (parent?.nextElementSibling) === null : (parent?.previousElementSibling === null);\n }\n\n getParentByClass(el, parentSelector /* optional */): any {\n // If no parentSelector defined will bubble up all the way to *document*\n if (parentSelector === undefined) {\n parentSelector = document;\n }\n\n let p = el.parentNode;\n\n while (\n p &&\n !p?.classList?.contains(parentSelector) &&\n parentSelector !== document\n ) {\n const o = p;\n p = o?.parentNode || null;\n }\n\n return p?.className.indexOf(parentSelector) > -1 ? p : null;\n }\n onCardMouseEnter(event: any, itemId: string, itemType: string): void {\n if (!this.deviceHasMouse) {\n return;\n }\n\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n this.hoveredItemId = uniqItemId;\n }\n\n onCardMouseLeave(event: any, itemId: string, itemType: string): void {\n this.hoveredItemId = '';\n }\n\n // trackByFunc(index: number, item: ObjectsDataRow): any {\n // return item && item?.UID ? item?.UID : index;\n // // let res: string = \"\";\n\n // // if (item && item?.UID) {\n // // res = item?.UID + \"_\" + this.listType + \"_\" + (this.isTable ? \"Table\" : \"Thumbnails\");\n // // }\n // // else {\n // // res = index + \"_\" + this.listType + \"_\" + (this.isTable ? \"Table\" : \"Thumbnails\");\n // // }\n\n // // return res;\n // }\n\n clear(): void {\n this.cleanItems();\n this._layout = null;\n }\n\n setSelectedIds(selectedIds: string[], items = null): void {\n this.selectedItems.clear();\n this.isAllSelected = false;\n\n if (selectedIds) {\n // for (let i = 0; i < selected.length; i++) {\n for (const selectedId of selectedIds) {\n const tmp = selectedId.split(this.SEPARATOR);\n\n if (tmp && tmp.length > 0) {\n const itemId = tmp[0];\n const itemType = tmp.length > 1 ? tmp[1] : '';\n\n this.selectedItems.set(\n itemId,\n this.getUniqItemId(itemId, itemType)\n );\n }\n }\n\n this.isAllSelected = this.getIsAllSelected(items ? items : this.virtualScroller?.viewPortItems);\n this.setSelectionDataInSession();\n }\n\n this.refresh();\n }\n\n setSelectionDataInSession(): void {\n if (this.selectedItems.size > 0) {\n this.sessionService.setObject(\n PepListComponent.SELECTED_ITEMS_STATE_KEY,\n JSON.stringify([...this.selectedItems])\n );\n }\n\n if (this.unSelectedItems.size > 0) {\n this.sessionService.setObject(\n PepListComponent.UN_SELECTED_ITEMS_STATE_KEY,\n JSON.stringify([...this.unSelectedItems])\n );\n }\n\n this.sessionService.setObject(\n PepListComponent.ALL_SELECTED_STATE_KEY,\n this.isAllSelected\n );\n }\n\n initListData(\n layout: UIControl,\n totalRows: number,\n items: ObjectsDataRow[],\n selectionTypeForActions: PepListSelectionType | undefined = undefined\n ): void {\n this.initVariablesFromSession(items);\n const selectedItemsList = this.isAllSelected\n ? this.unSelectedItems\n : this.selectedItems;\n const currentListCount = this.isAllSelected\n ? this.totalRows - selectedItemsList.size\n : selectedItemsList.size;\n this.selectedItemsChange.emit(currentListCount);\n\n this._layout = layout;\n this.selectedItemId = ''; \n this.totalRows = totalRows;\n\n // Added to handle if the selectionTypeForActions is set in the html then the input this.selectedItemId will no set cause this function happens before.\n if (selectionTypeForActions) {\n this.selectionTypeForActions = selectionTypeForActions;\n }\n\n // If is all selected is false && the size of the selected items is 1 && selectionTypeForActions is 'single' then set it as the selected item id.\n // We need this in setTimeout cause the selectionTypeForActions is input that can set after this function.\n if (!this.isAllSelected && this.selectedItems.size === 1 && this.selectionTypeForActions === 'single') {\n const [firstValue] = this.selectedItems.values();\n this.selectedItemId = firstValue;\n }\n \n this.scrollToTop(false);\n this.cleanItems();\n this.disableScroll(true);\n\n if (items) {\n if (this.pagerType === 'pages') {\n // If page index out of bounds - init to 0.\n const numberOfPages = Math.ceil(totalRows / this.pageSize);\n\n if (this.pageIndex >= numberOfPages) {\n this.pageIndex = 0;\n }\n\n this.updatePage(items, {\n pageIndex: this.pageIndex,\n pageSize: this.pageSize,\n });\n\n this.disableScroll(false);\n } else {\n const numberOfStartItems = this.getNumberOfStartItems();\n const event = {\n fromIndex: 0,\n toIndex: numberOfStartItems,\n };\n this.updateItems(items, event);\n \n if (this.virtualScroller) {\n this.refresh(() => {\n this.calcObjectHeight();\n });\n } else {\n this.calcObjectHeight();\n }\n }\n }\n\n if (!this.isTable) {\n this.lastColumnsWidth = [];\n }\n\n this.setLayout();\n\n // setTimeout(() => {\n this.onListLoad();\n // }, 0);\n }\n\n updateItems(\n items: ObjectsDataRow[],\n event: IPepListLoadItemsEvent = null\n ): void {\n if (!event) {\n return; // Event isn't supplied.\n }\n\n // Clean array\n if (this.itemsCounter + items.length > this.getCachedItemsNumber()) {\n this.cleanItems();\n }\n\n const startIndex = event.fromIndex ?? 0;\n\n for (let i = 0; i < items.length; i++) {\n if (!this.items[i + startIndex]) {\n this.items[i + startIndex] = items[i];\n this.itemsCounter += 1;\n }\n }\n\n this.toggleLoadingItemsFropApi(false);\n }\n\n updatePage(items: ObjectsDataRow[], event: IPepListLoadPageEvent): void {\n if (!event) {\n return; // Event isn't supplied.\n }\n\n // Clean array\n if (this.itemsCounter + items.length > this.getCachedItemsNumber()) {\n this.cleanItems();\n }\n\n // const loadInChunks = this.itemsCounter === 0;\n const startIndex = Math.min(event.pageIndex * event.pageSize, this.totalRows);\n const endIndex = Math.min(startIndex + event.pageSize, this.totalRows);\n\n for (let i = 0; i < items.length; i++) {\n if (!this.items[i + startIndex]) {\n this.items[i + startIndex] = items[i];\n this.itemsCounter += 1;\n }\n }\n\n this.updateCurrentPageItems(startIndex, endIndex);\n this.toggleLoadingItemsFropApi(false);\n }\n\n updateItem(data: ObjectsDataRow): void {\n const index = this.items.findIndex((i) => i && i?.UID === data?.UID);\n if (index >= 0 && index < this.items.length) {\n this.updateItemProperties(this.items[index], data);\n }\n }\n\n scrollToIndex(index: number, alignToBeginning = true, additionalOffset = 0, animationMilliseconds: number = undefined, animationCompletedCallback: () => void = undefined) {\n this.virtualScroller?.scrollToIndex(index, alignToBeginning, additionalOffset, animationMilliseconds, animationCompletedCallback);\n }\n\n updateItemProperties(itemToUpdate: ObjectsDataRow, data: ObjectsDataRow) {\n Object.assign(itemToUpdate, data);\n }\n\n getSelectedItemsData(isForEdit = false): PepSelectionData {\n const res = new PepSelectionData();\n\n let selectionType = 1;\n const items = [];\n const itemTypes = [];\n\n if (this.selectionTypeForActions === 'single') {\n if (this.selectedItemId.length > 0) {\n const tmp = this.selectedItemId.split(this.SEPARATOR);\n items.push(tmp[0]);\n itemTypes.push(tmp[1]);\n }\n } else if (this.selectionTypeForActions === 'multi') {\n let currentList = [];\n\n // For edit - only the selected items.\n if (isForEdit) {\n if (!this.isAllSelected) {\n currentList = Array.from(this.selectedItems.values());\n } else {\n // Get the id's of the items that not founded in unSelectedItems.\n this.items.forEach((item) => {\n if (\n item &&\n !this.unSelectedItems.has(item?.UID.toString())\n ) {\n currentList.push(\n this.getUniqItemId(\n item?.UID.toString(),\n item?.Type.toString()\n )\n );\n }\n });\n }\n } else {\n // For delete - can be the unselected with select_all functionality.\n currentList = Array.from(\n this.isAllSelected\n ? this.unSelectedItems.values()\n : this.selectedItems.values()\n );\n selectionType = this.isAllSelected ? 0 : 1;\n }\n\n currentList.forEach((item) => {\n const tmp = item.split(this.SEPARATOR);\n\n if (tmp.length === 2) {\n items.push(tmp[0]);\n itemTypes.push(tmp[1]);\n }\n });\n\n }\n\n res.selectionType = selectionType;\n res.rows = items;\n res.rowTypes = itemTypes;\n\n return res;\n }\n\n getIsItemEditable(uid: string): boolean {\n const item = this.items.filter((x) => x?.UID.toString() === uid);\n if (item.length > 0) {\n return item[0].IsEditable;\n } else {\n return false;\n }\n }\n\n getItemDataByID(uid: string): ObjectsDataRow {\n return this.items.find((item) => item?.UID.toString() === uid);\n }\n\n refresh(refreshCompletedCallback: () => void = undefined) {\n this.virtualScroller?.refresh(refreshCompletedCallback);\n }\n\n // ---------------------------------------------------------------\n // Events handlers.\n // ---------------------------------------------------------------\n\n onWinResize(e): void {\n this.refresh();\n\n this.containerWidth = 0;\n this.lastColumnsWidth = [];\n this.setLayout();\n }\n\n onListResizeStart(event, columnKey: string, columnIndex: number): void {\n this.pressedColumn = columnKey;\n this.pressedColumnIndex = columnIndex;\n this.startX = event.x;\n this.startWidth = event.target.closest('.header-column').offsetWidth;\n // this.tableStartWidth = this.hostElement.nativeElement.offsetWidth; // this.virtualScroller?.contentElementRef.nativeElement.offsetWidth;\n this.tableStartWidth = this.listContainerResizableElementRef.nativeElement.offsetWidth; // this.virtualScroller?.contentElementRef.nativeElement.offsetWidth;\n console.log(`tableStartWidth - ${this.tableStartWidth}`);\n }\n\n onListResize(event): void {\n // if (this.pressedColumn.length > 0) {\n if (this.pressedColumnIndex >= 0) {\n let widthToAdd = this.layoutService.isRtl() ? this.startX - event.x : event.x - this.startX;\n\n // Set the width of the column and the container of the whole columns.\n if (this.startWidth + widthToAdd >= PepListComponent.MINIMUM_COLUMN_WIDTH || widthToAdd > 0) {\n const length = this._layout.ControlFields.length;\n let totalCalcColsWidth = 0;\n\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this._layout\n .ControlFields[index];\n\n if (index === length - 1) {\n // Calc the last column only in percentage type.\n if (this.hasColumnWidthOfTypePercentage) {\n const scrollWidth = this.layoutService.getScrollbarWidth();\n widthToAdd += scrollWidth;\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = 'calc(100% - ' + (totalCalcColsWidth + scrollWidth) + 'px)'; // For 100%\n } else {\n // if (uiControlField.ApiName === this.pressedColumn) {\n if (index === this.pressedColumnIndex) {\n uiControlField.calcColumnWidth = this.startWidth + widthToAdd;\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidth + 'px';\n uiControlField.calcColumnWidthString = uiControlField.calcColumnWidth + 'px';\n }\n }\n // } else if (uiControlField.ApiName === this.pressedColumn) {\n } else if (index === this.pressedColumnIndex) {\n uiControlField.calcColumnWidth = this.startWidth + widthToAdd;\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = uiControlField.calcColumnWidth + 'px';\n }\n\n totalCalcColsWidth += uiControlField.calcColumnWidth;\n }\n\n const widthToSet = (this.tableStartWidth + widthToAdd) + 'px';\n console.log(`onListResize -> widthToSet: ${widthToSet} *** widthToAdd: ${widthToAdd}`);\n this.setColumnsWidth(widthToSet);\n this.checkForChanges = new Date().getTime();\n }\n\n }\n }\n\n onListResizeEnd(event): void {\n // if (this.pressedColumn.length > 0) {\n if (this.pressedColumnIndex >= 0) {\n if (\n event &&\n this.getParent(event.srcElement, 'resize-box').length > 0\n ) {\n this.initResizeData();\n } else {\n // Set timeout 0 for onListSortingChange will have the pressedColumn.\n setTimeout(() => {\n this.initResizeData();\n }, 0);\n }\n\n this.lastColumnsWidth = [];\n \n // Set the last columns width\n for (let index = 0; index < this._layout.ControlFields.length; index++) {\n const uiControlField: UIControlField = this._layout.ControlFields[index];\n \n this.lastColumnsWidth.push({ \n columnAPIName: uiControlField.ApiName, \n calcColumnWidth: uiControlField.calcColumnWidth,\n calcTitleColumnWidthString: uiControlField.calcTitleColumnWidthString,\n calcColumnWidthString: uiControlField.calcColumnWidthString\n })\n }\n \n event.stopPropagation();\n }\n }\n\n onListSortingChange(sortBy: string, isAsc: boolean, event = null): void {\n if (\n // this.pressedColumn.length > 0 ||\n this.pressedColumnIndex >= 0 ||\n (event && this.getParent(event.srcElement, 'resize-box').length > 0)\n ) {\n return;\n }\n\n if (this.sortBy !== sortBy || this.isAsc !== isAsc) {\n this.sortBy = sortBy;\n this.isAsc = isAsc;\n this.saveSortingToSession();\n\n this.sortingChange.emit({ sortBy, isAsc });\n }\n }\n\n onListHeaderMouseEnter(event): void {\n // this.headerIsInFocus = true;\n }\n\n onListHeaderMouseLeave(event): void {\n // this.headerIsInFocus = false;\n this.onListResizeEnd(event);\n this.initResizeData();\n }\n\n onPagerChange(event: IPepListPagerChangeEvent): void {\n this.pageIndex = event.pageIndex;\n\n // Scroll to top.\n //this.scrollToTop();\n\n const startIndex = event.pageIndex * event.pageSize;\n const endIndex = Math.min(\n startIndex + event.pageSize,\n this.totalRows\n );\n\n let shouldGetItemsFromApi = false;\n let index: number = startIndex;\n\n while (!shouldGetItemsFromApi && index < endIndex) {\n if (!this.items[index]) {\n shouldGetItemsFromApi = true;\n }\n index++;\n }\n\n // Get bulk from api.\n if (shouldGetItemsFromApi) {\n if (!this.loadingItemsFromApi) {\n this.toggleLoadingItemsFropApi(true);\n\n this.loadPage.emit({\n pageIndex: event.pageIndex,\n pageSize: event.pageSize,\n }); \n \n this.scrollToTop();\n }\n } else {\n setTimeout(() => {\n this.updateCurrentPageItems(startIndex, endIndex);\n this.scrollToTop();\n }, this.scrollAnimationTime);\n }\n }\n\n onVirtualScrollerChange(event: IPageInfo): void {\n this.raiseStartIndexChange(event.startIndex);\n\n if (this.pagerType === 'scroll') {\n // For other events do nothing.\n if (typeof event.startIndex === 'undefined' || event.startIndex < 0 ||\n typeof event.endIndex === 'undefined' || event.endIndex < 0) {\n return;\n }\n\n const addAtStart = event.scrollDirection === 'backward';\n let shouldGetItemsFromApi = false;\n let indexOfMissingItem: number;\n\n if (addAtStart) {\n indexOfMissingItem = event.endIndex;\n while (!shouldGetItemsFromApi && indexOfMissingItem >= event.startIndex) {\n if (!this.items[indexOfMissingItem]) {\n shouldGetItemsFromApi = true;\n }\n\n if (!shouldGetItemsFromApi) {\n indexOfMissingItem--;\n }\n }\n } else {\n indexOfMissingItem = event.startIndex;\n while (!shouldGetItemsFromApi && indexOfMissingItem <= event.endIndex) {\n if (!this.items[indexOfMissingItem]) {\n shouldGetItemsFromApi = true;\n }\n\n if (!shouldGetItemsFromApi) {\n indexOfMissingItem++;\n }\n }\n }\n\n // Get bulk from api.\n if (shouldGetItemsFromApi) {\n if (!this.loadingItemsFromApi) {\n this.toggleLoadingItemsFropApi(true);\n\n const top = this.getTopItems() - 1;\n const fromIndex = addAtStart ? Math.max(indexOfMissingItem - top, 0) : indexOfMissingItem;\n const toIndex = addAtStart ? indexOfMissingItem : Math.min(indexOfMissingItem + top, this.totalRows);\n\n this.loadItems.emit({\n fromIndex,\n toIndex,\n });\n }\n }\n }\n }\n\n onListLoad(): void {\n setTimeout(() => {\n this.listLoad.emit();\n }, 0);\n }\n\n // onChildRectChange(event: any) {\n // // Set the calculatedObjectHeight only if he's not set (this case is only for the initialize when virtual scroll is undefined).\n // // the other cases is handled in calcObjectHeight function.\n // if (this.calculatedObjectHeight === 'auto') {\n // this.calculatedObjectHeight = event?.height + 'px';\n // }\n // }\n\n onValueChanged(valueChange: IPepFormFieldValueChangeEvent): void {\n if (this.disabled) {\n return;\n }\n\n this.valueChange.emit(valueChange);\n }\n\n onCustomizeFieldClick(\n customizeFieldClickedData: IPepFormFieldClickEvent\n ): void {\n if (this.disabled) {\n return;\n }\n\n this.fieldClick.emit(customizeFieldClickedData);\n }\n //added to handle sorting by specific columns----\n isSortableColumn(apiName: string) {\n //case 1 - supportSorting = true and array exists\n if(this.supportSorting) {\n if(this.supportSortingFields?.length) {\n return this.supportSortingFields.includes(apiName);\n //case 2 - supportSorting = true and array does not exist\n } else if (this.supportSortingFields === undefined) {\n return true\n } // case 3 supportSorting = false\n } else return false;\n \n }\n}\n","<ng-container *ngIf=\"totalRows == 0\">\n <ng-container *ngIf=\"noDataFoundMsg; then noDataMsgInputBlock; else noDataMsgDefaultBlock\"></ng-container>\n <ng-template #noDataMsgInputBlock>\n <div class=\"pep-border-bottom\">\n <p class=\"title-xl no-data\">\n {{ noDataFoundMsg }}\n </p>\n </div>\n </ng-template>\n <ng-template #noDataMsgDefaultBlock>\n <div class=\"pep-border-bottom\">\n <p class=\"title-xl no-data\">\n {{ 'LIST.NO_DATA_FOUND' | translate}}\n </p>\n </div>\n <div class=\"no-data-suggestions\">\n <p class=\"suggestions-title title-lg\">\n {{ 'LIST.NO_DATA_FOUND_SUGGESTIONS_TITLE' | translate}}\n </p>\n <ul class=\"suggestions-list body-lg\" [innerHtml]=\"'LIST.NO_DATA_FOUND_SUGGESTIONS_LIST' | translate\"></ul>\n </div>\n </ng-template>\n</ng-container>\n<ng-container *ngIf=\"totalRows > 0\">\n <div class=\"list-container\">\n <div #listContainerResizable class=\"list-container-resizable\">\n <ng-container *ngTemplateOutlet=\"tableHeader\"></ng-container>\n\n <!-- (vsChildRectChange)=\"onChildRectChange($event)\" -->\n <!-- <virtual-scroller #scroller [items]=\"pagerType === 'pages' ? currentPageItems : items\"\n [scrollDebounceTime]=\"scrollDebounceTime\" [scrollThrottlingTime]=\"scrollThrottlingTime\"\n [bufferAmount]=\"printMode ? totalRows : bufferAmount\" [parentScroll]=\"parentScroll\" [disable]=\"loadingItemsFromApi\"\n class=\"virtual-scroller\" [ngClass]=\"{ 'table-body': isTable, 'cards-body': !isTable }\"\n (vsChange)=\"onVirtualScrollerChange($event)\" >\n <ng-container *ngFor=\"let item of scroller.viewPortItems; let index = index; let isFirst = first;\">\n <ng-container *ngTemplateOutlet=\"listData; context: {item: item, index:index}\"></ng-container>\n </ng-container>\n </virtual-scroller> -->\n \n <ng-container *ngTemplateOutlet=\"tableTotal\"></ng-container>\n </div>\n </div>\n <pep-list-pager *ngIf=\"pagerType === 'pages'\" class=\" list-pager\" [disabled]=\"loadingItemsFromApi\"\n [length]=\"totalRows\" [pageSize]=\"pageSize\" [pageIndex]=\"pageIndex\" (pagerChange)=\"onPagerChange($event)\">\n </pep-list-pager>\n</ng-container>\n\n<ng-template #listData let-item=\"item\" let-index=\"index\">\n <ng-container *ngIf=\"isTable\">\n <!-- getIsItemSelected(item) -> item | isItemSelected: selectionTypeForActions : selectedItemId : isAllSelected : selectedItems : unSelectedItems -->\n <div class=\"table-row\" (mouseenter)=\"onTableRowMouseEnter($event, item?.UID, item?.Type)\" (keydown)=\"onTabKeydown($event, item?.UID, item?.Type)\"\n (mouseleave)=\"onTableRowMouseLeave($event, item?.UID, item?.Type)\" [ngClass]=\"{\n 'compact-view': tableViewType === 'compact',\n even: zebraStripes && index % 2 !== 0,\n selected: getIsItemSelected(item),\n highlighted: item?.UID + SEPARATOR + item?.Type === selectedItemId}\" [ngStyle]=\"{ visibility: !loadingItemsFromApi || item ? 'visible' : 'hidden' }\">\n <fieldset class=\"table-row-fieldset\" [ngStyle]=\"{ 'background-color': item?.BackgroundColor }\">\n <mat-checkbox *ngIf=\"selectionTypeForActions == 'multi'\" type=\"checkbox\"\n class=\"pull-left flip row-selection\" [ngClass]=\"{ 'md': tableViewType === 'compact' }\"\n [disabled]=\"false && getisItemDisabled(item)\" [ngStyle]=\"{\n visibility: !deviceHasMouse ||\n item?.UID + SEPARATOR + item?.Type === hoveredItemId || isAllSelected || selectedItems.size > 0 ? 'visible' : 'hidden'\n }\" [checked]=\"getIsItemSelected(item)\"\n (change)=\"selectItemForActions($event, item?.UID, item?.IsSelectableForActions, item?.Type)\">\n </mat-checkbox>\n <mat-radio-button *ngIf=\"selectionTypeForActions == 'single'\" name=\"selection\"\n class=\"pull-left flip row-selection pep-radio-button\" [ngClass]=\"{ 'md': tableViewType === 'compact' }\"\n [disabled]=\"getisItemDisabled(item)\"\n [checked]=\"getIsItemSelected(item)\"\n (change)=\"selectItemForActions($event, item?.UID, item?.IsSelectableForActions, item?.Type)\">\n </mat-radio-button>\n <pep-form [layoutType]=\"'table'\" [checkForChanges]=\"checkForChanges\" [layout]=\"layout\"\n [firstFieldAsLink]=\"firstFieldAsLink\" [data]=\"item\" [canEditObject]=\"!disabled\"\n [lockEvents]=\"lockItemInnerEvents || printMode\" [isReport]=\"isReport\" [isActive]=\"\n (item?.UID + SEPARATOR + item?.Type === selectedItemId ||\n item?.UID + SEPARATOR + item?.Type === hoveredItemId) && deviceHasMouse\n \" (valueChange)=\"onValueChanged($event)\" (fieldClick)=\"onCustomizeFieldClick($event)\"\n (click)=\"itemClicked($event, item)\">\n </pep-form>\n </fieldset>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!isTable\">\n <div (mouseenter)=\"onCardMouseEnter($event, item?.UID, item?.Type)\"\n (mouseleave)=\"onCardMouseLeave($event, item?.UID, item?.Type)\" [ngClass]=\"{\n selected: getIsItemSelected(item),\n highlighted: item?.UID + SEPARATOR + item?.Type === selectedItemId,\n 'line-view': viewType === 'lines',\n 'card-view': viewType === 'cards',\n 'small-card': cardSize === 'sm'\n }\" class=\"pull-left flip\"\n [ngStyle]=\"{ height: calculatedObjectHeight, visibility: !loadingItemsFromApi || item ? 'visible' : 'hidden' }\">\n <mat-checkbox *ngIf=\"showCardSelection\" class=\"pull-left flip card-selection\"\n [disabled]=\"getisItemDisabled(item)\" [checked]=\"getIsItemSelected(item)\"\n (change)=\"selectItemForActions($event, item?.UID, item?.IsSelectableForActions, item?.Type)\">\n </mat-checkbox>\n <pep-form [layoutType]=\"'card'\" [firstFieldAsLink]=\"firstFieldAsLink\" [checkForChanges]=\"checkForChanges\"\n [layout]=\"layout\" [data]=\"item\" [canEditObject]=\"!disabled\"\n [lockEvents]=\"lockItemInnerEvents || printMode\" [isActive]=\"\n (item?.UID + SEPARATOR + item?.Type === selectedItemId ||\n item?.UID + SEPARATOR + item?.Type === hoveredItemId) && deviceHasMouse\n \" (valueChange)=\"onValueChanged($event)\" (fieldClick)=\"onCustomizeFieldClick($event)\"\n (click)=\"itemClicked($event, item)\">\n </pep-form>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #tableHeader>\n <div *ngIf=\"isTable\" class=\"table-header\" (mouseup)=\"onListResizeEnd($event)\"\n (mouseenter)=\"onListHeaderMouseEnter($event)\" (mouseleave)=\"onListHeaderMouseLeave($event)\"\n (mousemove)=\"onListResize($event)\">\n\n <div class=\"table-header-padding-top\"></div>\n <fieldset class=\"table-header-fieldset\">\n <mat-checkbox *ngIf=\"selectionTypeForActions !== 'none'\" #selectAllCB class=\"pull-left flip row-selection\" [ngClass]=\"{ 'md': tableViewType === 'compact' }\"\n type=\"checkbox\" [ngStyle]=\"{\n visibility:\n selectionTypeForActions == 'single' || \n (selectionTypeForActions == 'multi' && hideAllSelectionInMulti) ? 'hidden' : 'visible'\n }\"\n [indeterminate]=\"isAllSelected ? unSelectedItems.size > 0 && unSelectedItems.size < totalRows : (selectedItems.size > 0 && !getIsAllSelectedForActions())\"\n [disabled]=\"disabled || selectionTypeForActions === 'single'\" [checked]=\"getIsAllSelectedForActions()\"\n (change)=\"selectAllItemsForActions($event)\"></mat-checkbox>\n <fieldset>\n <div *ngFor=\"let field of layout?.ControlFields; let j = index\" class=\"header-column pull-left flip\"\n [ngStyle]=\"{ width: field.calcTitleColumnWidthString }\" [ngClass]=\"{\n 'compact-view': tableViewType === 'compact',\n 'support-sorting': isSortableColumn(field.ApiName),\n 'has-sorting': field.ApiName === sortBy,\n 'is-resizing': field.ApiName === pressedColumn,\n 'is-first': j === 0 && selectionTypeForActions !== 'multi',\n 'is-last': j === layout?.ControlFields?.length - 1\n }\"\n (click)=\"isSortableColumn(field.ApiName) ? (onListSortingChange(field.ApiName, sortBy !== null && sortBy != field.ApiName ? true : !isAsc, $event)) : false\">\n\n <label id=\"{{ field.ApiName }}\"\n class=\"header-label body-sm pull-left flip text-align-{{ field.Layout.XAlignment }}\"\n title=\"{{ field.Title }}\">\n <span *ngIf=\"field.Mandatory\" class=\"mandatory\">\n <pep-icon name=\"system_must\"></pep-icon>\n </span>\n {{ field.Title != '' ? field.Title : ' '}}\n </label>\n\n <div *ngIf=\"supportResizing\" class=\"resize-box pull-right flip\"\n (mousedown)=\"onListResizeStart($event, field.ApiName, j)\">\n <div class=\"splitter\"></div>\n </div>\n\n <div *ngIf=\"isSortableColumn(field.ApiName)\" class=\"sorting-box pull-left flip\"\n [ngClass]=\"{ 'has-sorting': field.ApiName === sortBy }\">\n <mat-icon *ngIf=\"field.ApiName !== sortBy\">\n <pep-icon name=\"arrow_either\" class=\"asc\"></pep-icon>\n </mat-icon>\n <ng-container *ngIf=\"field.ApiName === sortBy\">\n <mat-icon *ngIf=\"!isAsc\" [ngClass]=\"{ 'sort-by': field.ApiName === sortBy && isAsc }\"\n title=\"{{ 'LIST.SORT_ASC' | translate }}\">\n <pep-icon name=\"arrow_up\" class=\"asc\"></pep-icon>\n </mat-icon>\n <mat-icon *ngIf=\"isAsc\" [ngClass]=\"{ 'sort-by': field.ApiName === sortBy && !isAsc }\"\n title=\"{{ 'LIST.SORT_DESC' | translate }}\">\n <pep-icon name=\"arrow_down\" class=\"desc\"></pep-icon>\n </mat-icon>\n </ng-container>\n </div>\n </div>\n </fieldset>\n </fieldset>\n </div>\n</ng-template>\n\n<ng-template #tableTotal>\n <div *ngIf=\"isTable && totalsRow?.length > 0 && totalsRow.length <= layout?.ControlFields.length\"\n class=\"table-total\">\n <fieldset class=\"table-header-fieldset\">\n <div *ngFor=\"let field of layout?.ControlFields; let j = index\" class=\"total-column pull-left flip\"\n [ngStyle]=\"{ width: field.calcTitleColumnWidthString }\">\n <label class=\"total-label body-sm text-align-{{ field.Layout.XAlignment }}\">\n {{ totalsRow[j] }}\n </label>\n </div>\n </fieldset>\n </div>\n</ng-template>","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\nimport {\n IPepMenuStateChangeEvent,\n PepMenuItem,\n IPepMenuItemClickEvent,\n} from '@pepperi-addons/ngx-lib/menu';\n\n@Component({selector: 'pep-list-actions',\n templateUrl: './list-actions.component.html',\n styleUrls: ['./list-actions.component.scss']})\n@Injectable()\nexport class PepListActionsComponent {\n @Input() actions: Array<PepMenuItem> = null;\n @Input() sizeType: PepSizeType = 'md';\n @Input() xPosition: 'before' | 'after' = 'before';\n @Input() hidden = false;\n\n @Output()\n actionClick: EventEmitter<IPepMenuItemClickEvent> = new EventEmitter<IPepMenuItemClickEvent>();\n @Output()\n stateChange: EventEmitter<IPepMenuStateChangeEvent> = new EventEmitter<IPepMenuStateChangeEvent>();\n @Output()\n menuClick: EventEmitter<void> = new EventEmitter<void>();\n\n onActionClicked(action): void {\n this.actionClick.emit(action);\n }\n\n onStateChanged(menuStateChangeEvent: IPepMenuStateChangeEvent): void {\n this.stateChange.emit(menuStateChangeEvent);\n }\n}\n","<pep-menu [xPosition]=\"xPosition\" [styleType]=\"'strong'\" [sizeType]=\"sizeType\" [items]=\"!hidden ? actions : null\"\n [hideOnEmptyItems]=\"true\" [iconName]=\"'system_edit'\" (menuItemClick)=\"onActionClicked($event)\"\n (stateChange)=\"onStateChanged($event)\" (menuClick)=\"menuClick.emit();\">\n</pep-menu>\n","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n ElementRef,\n Renderer2,\n ChangeDetectorRef,\n OnDestroy,\n AfterViewInit,\n} from '@angular/core';\nimport {\n ObjectsDataRow,\n UIControl,\n PepLayoutService,\n PepScreenSizeType,\n} from '@pepperi-addons/ngx-lib';\nimport { PepCarouselComponent } from '@pepperi-addons/ngx-lib/carousel';\n\nexport type PepListCarouselSizeType = 'xs' | 'sm' | 'md';\n\nexport interface IPepListCarouselItemClickEvent {\n source: ObjectsDataRow;\n}\n\n@Component({selector: 'pep-list-carousel',\n templateUrl: './list-carousel.component.html',\n styleUrls: ['./list-carousel.component.scss']})\n@Injectable()\nexport class PepListCarouselComponent implements AfterViewInit, OnDestroy {\n @Input() duration = 1000;\n @Input() layout: UIControl = null;\n @Input() itemsToMove = 3;\n @Input() lockItemInnerEvents = true;\n @Input() hideArrowsInSmallScreen = true;\n\n private _items: Array<ObjectsDataRow> = null;\n @Input()\n set items(value: Array<ObjectsDataRow>) {\n this._items = value;\n this.moveTo(0);\n }\n get items() {\n return this._items;\n }\n\n private _itemSize: PepListCarouselSizeType = 'xs';\n @Input()\n set itemSize(value: PepListCarouselSizeType) {\n this._itemSize = value;\n this.moveTo(0);\n }\n get itemSize() {\n return this._itemSize;\n }\n\n @Output()\n itemClick: EventEmitter<IPepListCarouselItemClickEvent> = new EventEmitter<IPepListCarouselItemClickEvent>();\n\n @ViewChild('carousel', { read: PepCarouselComponent })\n carousel: PepCarouselComponent;\n\n prevDisabled = false;\n nextDisabled = false;\n screenSize: PepScreenSizeType;\n PepScreenSizeType = PepScreenSizeType;\n // deviceHasMouse = false;\n\n constructor(public layoutService: PepLayoutService) {\n // this.deviceHasMouse = this.layoutService.getDeviceHasMouse();\n }\n\n ngAfterViewInit(): void {\n this.layoutService.onResize$.subscribe((size: PepScreenSizeType) => {\n this.screenSize = size;\n });\n\n // this.layoutService.onMouseOver$.subscribe((deviceHasMouse: boolean) => {\n // this.deviceHasMouse = deviceHasMouse;\n // });\n }\n\n ngOnDestroy(): void {\n // if (this.itemClick) {\n // this.itemClick.unsubscribe();\n // }\n }\n\n itemClicked(item: ObjectsDataRow): void {\n this.itemClick.emit({ source: item });\n }\n\n moveLeft() {\n // this.carousel.moveLeft();\n const indexToMove = Math.max(\n this.carousel.currIndex - this.itemsToMove,\n 0\n );\n this.moveTo(indexToMove);\n }\n\n moveRight() {\n // this.carousel.moveRight();\n const indexToMove = Math.min(\n this.carousel.currIndex + this.itemsToMove,\n this.items.length\n );\n this.moveTo(indexToMove);\n }\n\n moveTo(index: number) {\n if (this.carousel) {\n this.carousel.moveTo(index);\n }\n }\n\n onReachesLeftBound(event: boolean) {\n this.prevDisabled = event;\n }\n\n onReachesRightBound(event: boolean) {\n this.nextDisabled = event;\n }\n}\n","<div class=\"carousel-container\">\n <ng-container *ngIf=\"items?.length > 0; then carouselBlock; else emptyBlock\"></ng-container>\n <ng-template #emptyBlock>\n <!-- No items -->\n </ng-template>\n <ng-template #carouselBlock>\n <pep-button *ngIf=\"!(hideArrowsInSmallScreen && screenSize > PepScreenSizeType.SM)\"\n [iconName]=\"'arrow_left_alt'\" [styleType]=\"'regular'\" [disabled]=\"prevDisabled\" (click)=\"moveLeft()\"\n class=\"carousel-arrow start-arrow\">\n </pep-button>\n <pep-carousel #carousel [xWheelEnabled]=\"false\" [snapDuration]=\"duration\"\n (reachesLeftBound)=\"onReachesLeftBound($event)\" (reachesRightBound)=\"onReachesRightBound($event)\">\n <ng-container *ngFor=\"let item of items\">\n <pep-form pepCarouselItem [layout]=\"layout\" [data]=\"item\" [layoutType]=\"'card'\"\n (click)=\"itemClicked(item)\" class=\"card-view \" [lockEvents]=\"lockItemInnerEvents\"\n [ngClass]=\"{ 'x-small-card': itemSize === 'xs', 'small-card': itemSize === 'sm'}\">\n </pep-form>\n </ng-container>\n </pep-carousel>\n <pep-button *ngIf=\"!(hideArrowsInSmallScreen && screenSize > PepScreenSizeType.SM)\"\n [iconName]=\"'arrow_right_alt'\" [styleType]=\"'regular'\" [disabled]=\"nextDisabled\" (click)=\"moveRight()\"\n class=\"carousel-arrow end-arrow\">\n </pep-button>\n </ng-template>\n</div>","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\nimport {\n PepMenuItem,\n IPepMenuItemClickEvent,\n} from '@pepperi-addons/ngx-lib/menu';\nimport { PepBreadCrumbItem } from '@pepperi-addons/ngx-lib/bread-crumbs';\n\nexport class IPepListChooserOption {\n key: string;\n text: string;\n}\n\nexport interface IPepListChooserOptionChangeEvent {\n source: IPepListChooserOption;\n}\n\n@Component({selector: 'pep-list-chooser',\n templateUrl: './list-chooser.component.html',\n styleUrls: ['./list-chooser.component.scss']})\n@Injectable()\nexport class PepListChooserComponent {\n private _options: Array<IPepListChooserOption> = null;\n @Input()\n set options(value: Array<IPepListChooserOption>) {\n this._options = value;\n\n this.menuItems = value.map((opt) => {\n return { key: opt.key, text: opt.text };\n });\n\n if (this.menuItems?.length === 1) {\n this.breadCrumbsItems = [];\n this.breadCrumbsItems.push(\n new PepBreadCrumbItem({\n key: this.menuItems[0].key,\n text: this.menuItems[0].text,\n })\n );\n }\n }\n get options(): Array<IPepListChooserOption> {\n return this._options;\n }\n\n private _currentList: IPepListChooserOption = null;\n @Input()\n set currentList(value: IPepListChooserOption) {\n this._currentList = value;\n this.currentItem = this.menuItems.find((mi) => mi.key === value.key);\n }\n get currentList(): IPepListChooserOption {\n return this._currentList;\n }\n\n @Input() sizeType: PepSizeType = 'md';\n\n @Output()\n change: EventEmitter<IPepListChooserOptionChangeEvent> = new EventEmitter<IPepListChooserOptionChangeEvent>();\n\n breadCrumbsItems: Array<PepBreadCrumbItem> = null;\n menuItems: Array<PepMenuItem> = null;\n currentItem: PepMenuItem = null;\n\n onMenuItemClicked(menuItemClickEvent: IPepMenuItemClickEvent): void {\n this.currentList = this.options.find(\n (list) => list.key === menuItemClickEvent.source.key\n );\n this.change.emit({ source: this.currentList });\n }\n}\n","<ng-container *ngIf=\"menuItems?.length > 1\">\n <pep-menu [type]=\"'select'\" [sizeType]=\"sizeType\" [items]=\"menuItems\" [selectedItem]=\"currentItem\"\n [iconName]=\"'arrow_down'\" (menuItemClick)=\"onMenuItemClicked($event)\"></pep-menu>\n</ng-container>\n<ng-container *ngIf=\"menuItems?.length == 1\">\n <pep-bread-crumbs [items]=\"breadCrumbsItems\" [addSpacing]=\"true\"></pep-bread-crumbs>\n</ng-container>","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n OnInit,\n} from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\nimport {\n IPepMenuItemClickEvent,\n PepMenuItem,\n} from '@pepperi-addons/ngx-lib/menu';\nimport { IPepListSortingChangeEvent } from './list.model';\n\nexport class IPepListSortingOption {\n sortBy: string;\n title: string;\n iconName?: string;\n isAsc?: boolean;\n}\n\nexport interface IPepListSortingOptionChangeEvent {\n source: IPepListSortingOption;\n}\n\n@Component({selector: 'pep-list-sorting',\n templateUrl: './list-sorting.component.html',\n styleUrls: ['./list-sorting.component.scss']})\n@Injectable()\nexport class PepListSortingComponent implements OnInit {\n private _options: Array<IPepListSortingOption> = null;\n @Input()\n set options(value: Array<IPepListSortingOption>) {\n this._options = value;\n\n this.menuItems = value.map((opt) => {\n return { key: opt.sortBy, text: opt.title, iconName: opt.iconName };\n });\n }\n get options(): Array<IPepListSortingOption> {\n return this._options;\n }\n\n private _currentSorting: IPepListSortingOption = null;\n @Input()\n set currentSorting(value: IPepListSortingOption) {\n this._currentSorting = value;\n this.currentItem = this.menuItems.find((mi) => mi.key === value.sortBy);\n }\n get currentSorting(): IPepListSortingOption {\n return this._currentSorting;\n }\n\n @Input() sizeType: PepSizeType = 'md';\n @Output()\n change: EventEmitter<IPepListSortingOptionChangeEvent> = new EventEmitter<IPepListSortingOptionChangeEvent>();\n\n menuItems: Array<PepMenuItem> = null;\n currentItem: PepMenuItem = null;\n\n ngOnInit(): void {\n if (\n this.currentSorting === null &&\n this.options &&\n this.options.length > 0\n ) {\n this.currentSorting = this.options[0];\n }\n }\n\n onMenuItemClicked(menuItemClickEvent: IPepMenuItemClickEvent): void {\n this.currentSorting = this.options.find(\n (sorting) => sorting.sortBy === menuItemClickEvent.source.key\n );\n this.change.emit({ source: this.currentSorting });\n }\n}\n","<div class=\"sorting-container\">\n <div class=\"body-xs sort-by\">\n <span>{{ 'LIST.SORT_BY' | translate }}</span>\n </div>\n <pep-menu [type]=\"'select'\" [sizeType]=\"sizeType\" [items]=\"menuItems\" [selectedItem]=\"currentItem\"\n [iconName]=\"'arrow_down'\" (menuItemClick)=\"onMenuItemClicked($event)\"></pep-menu>\n</div>","import { Component, Injectable, Input } from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\n\n@Component({selector: 'pep-list-total',\n templateUrl: './list-total.component.html',\n styleUrls: ['./list-total.component.scss', './list-total.component.theme.scss']})\n@Injectable()\nexport class PepListTotalComponent {\n @Input() totalRows = -1;\n @Input() totalAmount = -1;\n @Input() isMapView = false;\n @Input() sizeType: PepSizeType = 'md';\n @Input() unknownCount = false;\n}\n","<div class=\"total-items-container\">\n <ng-container *ngIf=\"isMapView; then mapTemplate; else notMapTemplate\"></ng-container>\n\n <ng-template #notMapTemplate>\n <ng-container *ngIf=\"totalRows >= 0\">\n <div class=\"body-{{sizeType}} total-items color-dimmed\"\n [innerHtml]=\"(totalRows === 1 ? 'LIST.TOTAL_RESULT' : 'LIST.TOTAL_RESULTS') | translate: { totalRows: totalRows ,unknownCount: unknownCount === true ? '+' : ''}\">\n </div>\n </ng-container>\n <ng-container *ngIf=\"totalAmount > 0\"> {{ 'LIST.TOTAL_OF' | translate }} {{ totalAmount }} </ng-container>\n </ng-template>\n\n <ng-template #mapTemplate>\n <ng-container *ngIf=\"totalAmount >= 0\">\n </ng-container>\n <ng-container *ngIf=\"totalRows >= 0\">\n <div class=\"body-{{sizeType}} total-items color-dimmed\"\n [innerHtml]=\"(totalRows === 1 ? 'LIST.TOTAL_RESULT_OUT_OF_RESULT' : 'LIST.TOTAL_RESULTS_OUT_OF') | translate: { xRows: totalAmount, totalRows: totalRows }\">\n </div>\n </ng-container>\n </ng-template>\n</div>","import {\n Component,\n OnInit,\n Injectable,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n} from '@angular/core';\nimport { PepSizeType, PepStyleType } from '@pepperi-addons/ngx-lib';\nimport {\n PepMenuItem,\n IPepMenuItemClickEvent,\n} from '@pepperi-addons/ngx-lib/menu';\n\nexport type PepListViewDisplayType = 'menu' | 'buttons';\n\nexport class IPepListView {\n key: string;\n iconName: string;\n title?: string;\n}\n\nexport interface IListViewChangeEvent {\n source: IPepListView;\n}\n\n@Component({selector: 'pep-list-views',\n templateUrl: './list-views.component.html',\n styleUrls: ['./list-views.component.scss']})\n@Injectable()\nexport class PepListViewsComponent implements OnInit {\n private _views: Array<IPepListView> = null;\n @Input()\n set views(value: Array<IPepListView>) {\n this._views = value;\n\n this.menuItems = value.map((opt) => {\n return { key: opt.key, text: opt.title, iconName: opt.iconName };\n });\n }\n get views(): Array<IPepListView> {\n return this._views;\n }\n\n private _currentView: IPepListView = null;\n @Input()\n set currentView(value: IPepListView) {\n this._currentView = value;\n\n if (this.displayType === 'menu') {\n this.currentItem = this.menuItems.find(\n (mi) => mi.key === value.key\n );\n }\n }\n get currentView(): IPepListView {\n return this._currentView;\n }\n\n @Input() displayType: PepListViewDisplayType = 'menu';\n @Input() styleType: PepStyleType = 'weak';\n @Input() sizeType: PepSizeType = 'md';\n @Input() classNames = '';\n\n @Output()\n change: EventEmitter<IListViewChangeEvent> = new EventEmitter<IListViewChangeEvent>();\n\n menuItems: Array<PepMenuItem> = null;\n currentItem: PepMenuItem = null;\n\n ngOnInit(): void {\n if (this.displayType === 'buttons') {\n if (\n this.currentView === null &&\n this.views &&\n this.views.length > 0\n ) {\n this.currentView = this.views[0];\n }\n }\n }\n\n onMenuItemClicked(menuItemClickEvent: IPepMenuItemClickEvent): void {\n this.currentView = this.views.find(\n (list) => list.key === menuItemClickEvent.source.key\n );\n this.raiseChangeEvent();\n }\n\n onViewChanged(view: IPepListView): void {\n this.currentView = view;\n this.raiseChangeEvent();\n }\n\n private raiseChangeEvent(): void {\n this.change.emit({ source: this.currentView });\n }\n}\n","<ng-container *ngIf=\"displayType === 'menu' then menuTemplate else buttonsTemplate\">\n</ng-container>\n<ng-template #menuTemplate>\n <pep-menu [type]=\"'select'\" [styleType]=\"styleType\" [sizeType]=\"sizeType\" [classNames]=\"classNames\"\n [items]=\"menuItems\" [selectedItem]=\"currentItem\"\n [iconName]=\"currentItem?.iconName ? currentItem?.iconName : 'arrow_down'\"\n (menuItemClick)=\"onMenuItemClicked($event)\"></pep-menu>\n</ng-template>\n<ng-template #buttonsTemplate>\n <div class=\"buttons-wrapper pep-spacing-element-negative\">\n <button *ngFor=\"let view of views\" mat-button [title]=\"view.title\" [disabled]=\"view.key === currentView?.key\"\n class=\"pep-button icon-button pep-spacing-element {{ sizeType }} {{ styleType }} {{ classNames }}\"\n pepRtlDirection pepMenuBlur (click)=\"onViewChanged(view)\">\n <mat-icon>\n <pep-icon name=\"{{ view?.iconName }}\"></pep-icon>\n </mat-icon>\n </button>\n </div>\n</ng-template>","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { ObjectsDataRow } from '@pepperi-addons/ngx-lib';\r\nimport { PepListSelectionType } from './list.model';\r\n\r\n@Pipe({\r\n name: 'isItemSelected'\r\n})\r\nexport class IsItemSelectedPipe implements PipeTransform {\r\n SEPARATOR = ',';\r\n\r\n private getUniqItemId(itemId: string, itemType = ''): string {\r\n return itemId + this.SEPARATOR + itemType;\r\n }\r\n\r\n transform(item: ObjectsDataRow, selectionTypeForActions: PepListSelectionType, selectedItemId: string, isAllSelected: boolean,\r\n selectedItems: Map<string, string>, unSelectedItems: Map<string, string>): any {\r\n let isSelected = false;\r\n\r\n if (selectionTypeForActions === 'single') {\r\n isSelected = selectedItemId === this.getUniqItemId(item?.UID, item?.Type.toString());\r\n }\r\n // else if (selectionTypeForActions === 'single-action') {\r\n // isSelected = (isAllSelected && !unSelectedItems.has(item?.UID)) || selectedItems.has(item?.UID);\r\n // }\r\n else if (selectionTypeForActions === 'multi') {\r\n if (item?.IsSelectableForActions) {\r\n isSelected = (isAllSelected && !unSelectedItems.has(item?.UID)) || selectedItems.has(item?.UID);\r\n }\r\n }\r\n\r\n return isSelected;\r\n }\r\n}\r\n\r\n@Pipe({\r\n name: 'isItemDisabled'\r\n})\r\nexport class IsItemDisabledPipe implements PipeTransform {\r\n transform(item: ObjectsDataRow, lockItemInnerEvents: boolean, printMode: boolean): any {\r\n return (\r\n printMode || lockItemInnerEvents || (item && !item.IsSelectableForActions)\r\n );\r\n }\r\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport { PepBreadCrumbsModule } from '@pepperi-addons/ngx-lib/bread-crumbs';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { PepCarouselModule } from '@pepperi-addons/ngx-lib/carousel';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconArrowDown,\n pepIconArrowEither,\n pepIconArrowUp,\n pepIconSystemMust,\n pepIconArrowRight,\n pepIconArrowRightAlt,\n pepIconArrowLeft,\n pepIconArrowLeftAlt,\n} from '@pepperi-addons/ngx-lib/icon';\nimport { PepFormModule } from '@pepperi-addons/ngx-lib/form';\nimport { PepMenuModule } from '@pepperi-addons/ngx-lib/menu';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\n\n// import { PepListOldComponent } from './list_old.component';\nimport { PepListComponent } from './list.component';\nimport { PepListActionsComponent } from './list-actions.component';\nimport { PepListCarouselComponent } from './list-carousel.component';\nimport { PepListChooserComponent } from './list-chooser.component';\nimport { PepListPagerComponent } from './list-pager.component';\nimport { PepListSortingComponent } from './list-sorting.component';\nimport { PepListTotalComponent } from './list-total.component';\nimport { PepListViewsComponent } from './list-views.component';\n\nconst listComponents = [\n // PepListOldComponent,\n PepListComponent,\n PepListActionsComponent,\n PepListCarouselComponent,\n PepListChooserComponent,\n PepListPagerComponent,\n PepListSortingComponent,\n PepListTotalComponent,\n PepListViewsComponent,\n];\n\nimport { IsItemDisabledPipe, IsItemSelectedPipe } from './list.pipes';\n\nconst listPipes = [\n IsItemSelectedPipe,\n IsItemDisabledPipe\n];\n\n//import { VirtualScrollerModule } from './virtual-scroller';\n// import { PepVirtualScrollComponent } from './virtual-scroll.component';\n@NgModule({\n imports: [\n CommonModule,\n // Material modules,\n MatCommonModule,\n MatButtonModule,\n MatCheckboxModule,\n MatRadioModule,\n MatIconModule,\n MatMenuModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepBreadCrumbsModule,\n PepButtonModule,\n PepCarouselModule,\n PepIconModule,\n PepFormModule,\n PepMenuModule,\n PepTextboxModule,\n //VirtualScrollerModule\n ],\n exports: [listComponents],\n declarations: [listComponents, listPipes],\n})\nexport class PepListModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconArrowDown,\n pepIconArrowEither,\n pepIconArrowUp,\n pepIconSystemMust,\n pepIconArrowRight,\n pepIconArrowRightAlt,\n pepIconArrowLeft,\n pepIconArrowLeftAlt,\n ]);\n }\n}\n","/*\n * Public API Surface of ngx-lib/list\n */\nexport * from './list.module';\nexport * from './list.model';\n// export * from './list_old.component';\nexport * from './list.component';\nexport * from './list-actions.component';\nexport * from './list-carousel.component';\nexport * from './list-chooser.component';\nexport * from './list-pager.component';\nexport * from './list-sorting.component';\nexport * from './list-total.component';\nexport * from './list-views.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i7","i3","i4","i5","i6","i8.PepListPagerComponent","i9","i1","i2"],"mappings":"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"}
|