@pepperi-addons/ngx-lib 0.2.59 → 0.2.61-beta.3
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/address/address.component.theme.scss +4 -7
- package/address/pepperi-addons-ngx-lib-address.metadata.json +1 -1
- package/attachment/attachment.component.d.ts +1 -0
- package/attachment/attachment.component.theme.scss +3 -2
- package/attachment/pepperi-addons-ngx-lib-attachment.metadata.json +1 -1
- package/bread-crumbs/bread-crumbs.component.theme.scss +7 -7
- package/bread-crumbs/pepperi-addons-ngx-lib-bread-crumbs.metadata.json +1 -1
- package/bundles/pepperi-addons-ngx-lib-address.umd.js +1 -1
- package/bundles/pepperi-addons-ngx-lib-address.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-attachment.umd.js +7 -2
- package/bundles/pepperi-addons-ngx-lib-attachment.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-bread-crumbs.umd.js +1 -1
- package/bundles/pepperi-addons-ngx-lib-bread-crumbs.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-button.umd.js +1 -1
- package/bundles/pepperi-addons-ngx-lib-button.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js +4 -1
- package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-color.umd.js +8 -3
- package/bundles/pepperi-addons-ngx-lib-color.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-date.umd.js +4 -1
- package/bundles/pepperi-addons-ngx-lib-date.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-dialog.umd.js +1 -1
- package/bundles/pepperi-addons-ngx-lib-dialog.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-field-title.umd.js +1 -1
- package/bundles/pepperi-addons-ngx-lib-field-title.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-files-uploader.umd.js +1 -1
- package/bundles/pepperi-addons-ngx-lib-files-uploader.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-form.umd.js +19 -16
- package/bundles/pepperi-addons-ngx-lib-form.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-group-buttons.umd.js +1 -1
- package/bundles/pepperi-addons-ngx-lib-group-buttons.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-image.umd.js +7 -2
- package/bundles/pepperi-addons-ngx-lib-image.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-images-filmstrip.umd.js +7 -2
- package/bundles/pepperi-addons-ngx-lib-images-filmstrip.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-list.umd.js +1 -1
- package/bundles/pepperi-addons-ngx-lib-list.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-quantity-selector.umd.js +7 -2
- package/bundles/pepperi-addons-ngx-lib-quantity-selector.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-query-builder.umd.js +1104 -0
- package/bundles/pepperi-addons-ngx-lib-query-builder.umd.js.map +1 -0
- package/bundles/pepperi-addons-ngx-lib-rich-html-textarea.umd.js +7 -2
- package/bundles/pepperi-addons-ngx-lib-rich-html-textarea.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-select.umd.js +7 -2
- package/bundles/pepperi-addons-ngx-lib-select.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-separator.umd.js +9 -1
- package/bundles/pepperi-addons-ngx-lib-separator.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-side-bar.umd.js +1 -1
- package/bundles/pepperi-addons-ngx-lib-side-bar.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-signature.umd.js +7 -2
- package/bundles/pepperi-addons-ngx-lib-signature.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-slider.umd.js +1 -1
- package/bundles/pepperi-addons-ngx-lib-slider.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js +306 -39
- package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-textarea.umd.js +7 -2
- package/bundles/pepperi-addons-ngx-lib-textarea.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-textbox.umd.js +5 -3
- package/bundles/pepperi-addons-ngx-lib-textbox.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-top-bar.umd.js +1 -1
- package/bundles/pepperi-addons-ngx-lib-top-bar.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib.umd.js +3 -1
- package/bundles/pepperi-addons-ngx-lib.umd.js.map +1 -1
- package/button/button.component.theme.scss +0 -2
- package/button/pepperi-addons-ngx-lib-button.metadata.json +1 -1
- package/checkbox/checkbox.component.theme.scss +0 -2
- package/checkbox/pepperi-addons-ngx-lib-checkbox.metadata.json +1 -1
- package/color/color-picker.component.theme.scss +123 -128
- package/color/color.component.d.ts +1 -0
- package/color/color.component.theme.scss +0 -7
- package/color/pepperi-addons-ngx-lib-color.metadata.json +1 -1
- package/core/customization/customization.service.d.ts +1 -0
- package/date/date.component.theme.scss +163 -169
- package/date/pepperi-addons-ngx-lib-date.metadata.json +1 -1
- package/dialog/dialog.component.theme.scss +4 -4
- package/dialog/pepperi-addons-ngx-lib-dialog.metadata.json +1 -1
- package/esm2015/address/address.component.js +2 -2
- package/esm2015/attachment/attachment.component.js +8 -3
- package/esm2015/bread-crumbs/bread-crumbs.component.js +2 -2
- package/esm2015/button/button.component.js +2 -2
- package/esm2015/checkbox/checkbox.component.js +5 -2
- package/esm2015/color/color-picker.component.js +2 -2
- package/esm2015/color/color.component.js +8 -3
- package/esm2015/core/customization/customization.service.js +4 -2
- package/esm2015/date/date.component.js +5 -2
- package/esm2015/dialog/dialog.component.js +2 -2
- package/esm2015/field-title/field-title.component.js +2 -2
- package/esm2015/files-uploader/files-uploader.component.js +2 -2
- package/esm2015/form/indicators.component.js +2 -2
- package/esm2015/form/internal-button.component.js +20 -17
- package/esm2015/group-buttons/group-buttons.component.js +2 -2
- package/esm2015/image/image.component.js +8 -3
- package/esm2015/images-filmstrip/images-filmstrip.component.js +8 -3
- package/esm2015/list/list-total.component.js +2 -2
- package/esm2015/quantity-selector/quantity-selector.component.js +8 -3
- package/esm2015/query-builder/common/model/field.js +2 -0
- package/esm2015/query-builder/common/model/filter.js +2 -0
- package/esm2015/query-builder/common/model/legacy.js +2 -0
- package/esm2015/query-builder/common/model/operator-unit.js +42 -0
- package/esm2015/query-builder/common/model/operator.js +207 -0
- package/esm2015/query-builder/common/model/structure.js +2 -0
- package/esm2015/query-builder/common/model/type-map.js +27 -0
- package/esm2015/query-builder/common/model/type.js +6 -0
- package/esm2015/query-builder/common/services/output-query.service.js +111 -0
- package/esm2015/query-builder/common/services/type-convertor.service.js +40 -0
- package/esm2015/query-builder/pepperi-addons-ngx-lib-query-builder.js +9 -0
- package/esm2015/query-builder/public-api.js +8 -0
- package/esm2015/query-builder/query-builder-item/query-builder-item.component.js +116 -0
- package/esm2015/query-builder/query-builder-section/query-builder-section.component.js +64 -0
- package/esm2015/query-builder/query-builder.component.js +104 -0
- package/esm2015/query-builder/query-builder.module.js +35 -0
- package/esm2015/query-builder/query-builder.service.js +282 -0
- package/esm2015/rich-html-textarea/rich-html-textarea.component.js +8 -3
- package/esm2015/select/select.component.js +8 -3
- package/esm2015/separator/separator.component.js +10 -2
- package/esm2015/side-bar/side-bar.component.js +2 -2
- package/esm2015/signature/signature.component.js +8 -3
- package/esm2015/slider/slider.component.js +2 -2
- package/esm2015/smart-filters/boolean-filter/boolean-filter.component.js +23 -3
- package/esm2015/smart-filters/common/model/base-filter-component.js +35 -8
- package/esm2015/smart-filters/common/model/creator.js +8 -2
- package/esm2015/smart-filters/common/model/field.js +12 -1
- package/esm2015/smart-filters/common/model/operator.js +8 -8
- package/esm2015/smart-filters/common/model/type.js +1 -1
- package/esm2015/smart-filters/date-filter/date-filter.component.js +45 -2
- package/esm2015/smart-filters/multi-select-filter/multi-select-filter.component.js +53 -14
- package/esm2015/smart-filters/number-filter/number-filter.component.js +27 -2
- package/esm2015/smart-filters/public-api.js +2 -1
- package/esm2015/smart-filters/smart-filters.component.js +2 -2
- package/esm2015/smart-filters/smart-filters.module.js +16 -3
- package/esm2015/smart-filters/text-filter/text-filter.component.js +79 -0
- package/esm2015/textarea/textarea.component.js +8 -3
- package/esm2015/textbox/textbox.component.js +6 -4
- package/esm2015/top-bar/top-bar.component.js +2 -2
- package/fesm2015/pepperi-addons-ngx-lib-address.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-address.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-attachment.js +7 -2
- package/fesm2015/pepperi-addons-ngx-lib-attachment.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-button.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-button.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-checkbox.js +4 -1
- package/fesm2015/pepperi-addons-ngx-lib-checkbox.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-color.js +8 -3
- package/fesm2015/pepperi-addons-ngx-lib-color.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-date.js +4 -1
- package/fesm2015/pepperi-addons-ngx-lib-date.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-dialog.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-dialog.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-field-title.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-field-title.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-files-uploader.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-files-uploader.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-form.js +19 -16
- package/fesm2015/pepperi-addons-ngx-lib-form.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-group-buttons.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-group-buttons.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-image.js +7 -2
- package/fesm2015/pepperi-addons-ngx-lib-image.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.js +7 -2
- package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-list.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-list.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.js +7 -2
- package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-query-builder.js +1014 -0
- package/fesm2015/pepperi-addons-ngx-lib-query-builder.js.map +1 -0
- package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.js +7 -2
- package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-select.js +7 -2
- package/fesm2015/pepperi-addons-ngx-lib-select.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-separator.js +9 -1
- package/fesm2015/pepperi-addons-ngx-lib-separator.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-side-bar.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-side-bar.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-signature.js +7 -2
- package/fesm2015/pepperi-addons-ngx-lib-signature.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-slider.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-slider.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js +293 -36
- package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-textarea.js +7 -2
- package/fesm2015/pepperi-addons-ngx-lib-textarea.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-textbox.js +5 -3
- package/fesm2015/pepperi-addons-ngx-lib-textbox.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-top-bar.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-top-bar.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib.js +3 -1
- package/fesm2015/pepperi-addons-ngx-lib.js.map +1 -1
- package/field-title/field-title.component.theme.scss +0 -2
- package/field-title/pepperi-addons-ngx-lib-field-title.metadata.json +1 -1
- package/files-uploader/files-uploader.component.theme.scss +3 -2
- package/files-uploader/pepperi-addons-ngx-lib-files-uploader.metadata.json +1 -1
- package/form/indicators.component.theme.scss +5 -5
- package/form/internal-button.component.d.ts +0 -1
- package/form/pepperi-addons-ngx-lib-form.metadata.json +1 -1
- package/group-buttons/group-buttons.component.theme.scss +11 -11
- package/group-buttons/pepperi-addons-ngx-lib-group-buttons.metadata.json +1 -1
- package/image/image.component.d.ts +1 -0
- package/image/image.component.theme.scss +28 -27
- package/image/pepperi-addons-ngx-lib-image.metadata.json +1 -1
- package/images-filmstrip/images-filmstrip.component.d.ts +1 -0
- package/images-filmstrip/images-filmstrip.component.theme.scss +27 -26
- package/images-filmstrip/pepperi-addons-ngx-lib-images-filmstrip.metadata.json +1 -1
- package/list/list-total.component.theme.scss +6 -6
- package/list/pepperi-addons-ngx-lib-list.metadata.json +1 -1
- package/package.json +5 -5
- package/page-layout/page-layout.component.theme.scss +6 -6
- package/pepperi-addons-ngx-lib.metadata.json +1 -1
- package/quantity-selector/pepperi-addons-ngx-lib-quantity-selector.metadata.json +1 -1
- package/quantity-selector/quantity-selector.component.d.ts +1 -0
- package/quantity-selector/quantity-selector.component.theme.scss +21 -21
- package/query-builder/common/model/field.d.ts +8 -0
- package/query-builder/common/model/filter.d.ts +6 -0
- package/query-builder/common/model/legacy.d.ts +29 -0
- package/query-builder/common/model/operator-unit.d.ts +13 -0
- package/query-builder/common/model/operator.d.ts +21 -0
- package/query-builder/common/model/structure.d.ts +4 -0
- package/query-builder/common/model/type-map.d.ts +12 -0
- package/query-builder/common/model/type.d.ts +4 -0
- package/query-builder/common/services/output-query.service.d.ts +44 -0
- package/query-builder/common/services/type-convertor.service.d.ts +10 -0
- package/query-builder/package.json +14 -0
- package/query-builder/pepperi-addons-ngx-lib-query-builder.d.ts +8 -0
- package/query-builder/pepperi-addons-ngx-lib-query-builder.metadata.json +1 -0
- package/query-builder/public-api.d.ts +4 -0
- package/query-builder/query-builder-item/query-builder-item.component.d.ts +37 -0
- package/query-builder/query-builder-section/query-builder-section.component.d.ts +27 -0
- package/query-builder/query-builder-section/query-builder-section.component.theme.scss +7 -0
- package/query-builder/query-builder.component.d.ts +35 -0
- package/query-builder/query-builder.module.d.ts +2 -0
- package/query-builder/query-builder.service.d.ts +94 -0
- package/rich-html-textarea/pepperi-addons-ngx-lib-rich-html-textarea.metadata.json +1 -1
- package/rich-html-textarea/rich-html-textarea.component.d.ts +1 -0
- package/rich-html-textarea/rich-html-textarea.component.theme.scss +77 -70
- package/select/pepperi-addons-ngx-lib-select.metadata.json +1 -1
- package/select/select.component.d.ts +1 -0
- package/select/select.component.theme.scss +98 -2
- package/separator/pepperi-addons-ngx-lib-separator.metadata.json +1 -1
- package/separator/separator.component.theme.scss +1 -1
- package/side-bar/pepperi-addons-ngx-lib-side-bar.metadata.json +1 -1
- package/side-bar/side-bar.component.theme.scss +17 -16
- package/signature/pepperi-addons-ngx-lib-signature.metadata.json +1 -1
- package/signature/signature.component.d.ts +1 -0
- package/signature/signature.component.theme.scss +5 -21
- package/slider/pepperi-addons-ngx-lib-slider.metadata.json +1 -1
- package/slider/slider.component.theme.scss +55 -53
- package/smart-filters/boolean-filter/boolean-filter.component.d.ts +6 -1
- package/smart-filters/common/model/base-filter-component.d.ts +7 -0
- package/smart-filters/common/model/field.d.ts +4 -0
- package/smart-filters/common/model/operator.d.ts +1 -0
- package/smart-filters/common/model/type.d.ts +2 -2
- package/smart-filters/date-filter/date-filter.component.d.ts +8 -1
- package/smart-filters/multi-select-filter/multi-select-filter.component.d.ts +6 -0
- package/smart-filters/number-filter/number-filter.component.d.ts +5 -0
- package/smart-filters/pepperi-addons-ngx-lib-smart-filters.metadata.json +1 -1
- package/smart-filters/public-api.d.ts +1 -0
- package/smart-filters/smart-filters.component.theme.scss +6 -7
- package/smart-filters/text-filter/text-filter.component.d.ts +17 -0
- package/src/assets/i18n/en.ngx-lib.json +2 -1
- package/src/core/style/abstracts/breakpoints.scss +4 -2
- package/src/core/style/abstracts/functions.scss +233 -216
- package/src/core/style/abstracts/mixins.scss +191 -188
- package/src/core/style/base/base.scss +125 -124
- package/src/core/style/base/grids.scss +1 -1
- package/src/core/style/base/typography.scss +66 -62
- package/src/core/style/components/button.scss +57 -60
- package/src/core/style/components/checkbox.scss +41 -38
- package/src/core/style/components/datetime.scss +182 -22
- package/src/core/style/components/file.scss +159 -141
- package/src/core/style/components/general.scss +180 -278
- package/src/core/style/components/input.scss +21 -24
- package/src/core/style/components/quantity-selector.scss +15 -12
- package/src/core/style/components/radio-button.scss +22 -38
- package/src/core/style/components/select.scss +184 -182
- package/src/core/style/components/signature.scss +14 -12
- package/src/core/style/components/splitter.scss +58 -55
- package/src/core/style/components/textarea.scss +89 -78
- package/textarea/pepperi-addons-ngx-lib-textarea.metadata.json +1 -1
- package/textarea/textarea.component.d.ts +1 -0
- package/textarea/textarea.component.theme.scss +3 -2
- package/textbox/pepperi-addons-ngx-lib-textbox.metadata.json +1 -1
- package/textbox/textbox.component.theme.scss +1 -1
- package/theming.scss +50 -144
- package/top-bar/pepperi-addons-ngx-lib-top-bar.metadata.json +1 -1
- package/top-bar/top-bar.component.theme.scss +7 -7
- package/form/form.component.theme.scss +0 -2
- package/form/internal-button.component.theme.scss +0 -2
- package/form/internal-menu.component.theme.scss +0 -3
- package/list/list-actions.component.theme.scss +0 -3
- package/list/list-carousel.component.theme.scss +0 -9
- package/list/list-chooser.component.theme.scss +0 -3
- package/list/list-pager.component.theme.scss +0 -3
- package/list/list-sorting.component.theme.scss +0 -3
- package/list/list-views.component.theme.scss +0 -3
- package/list/list.component.theme.scss +0 -5
- package/list/list_old.component.theme.scss +0 -5
- package/menu/menu.component.theme.scss +0 -2
- package/search/search.component.theme.scss +0 -3
- package/textbox-icon/textbox-icon.component.theme.scss +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pepperi-addons-ngx-lib-smart-filters.js","sources":["../../../projects/ngx-lib/smart-filters/smart-filters.component.ts","../../../projects/ngx-lib/smart-filters/common/filter-actions.component.ts","../../../projects/ngx-lib/smart-filters/common/model/operator.ts","../../../projects/ngx-lib/smart-filters/common/model/base-filter-component.ts","../../../projects/ngx-lib/smart-filters/boolean-filter/boolean-filter.component.ts","../../../projects/ngx-lib/smart-filters/date-filter/date-filter.component.ts","../../../projects/ngx-lib/smart-filters/multi-select-filter/multi-select-filter.component.ts","../../../projects/ngx-lib/smart-filters/number-filter/number-filter.component.ts","../../../projects/ngx-lib/smart-filters/smart-filters.module.ts","../../../projects/ngx-lib/smart-filters/common/model/field.ts","../../../projects/ngx-lib/smart-filters/common/model/creator.ts","../../../projects/ngx-lib/smart-filters/public-api.ts","../../../projects/ngx-lib/smart-filters/pepperi-addons-ngx-lib-smart-filters.ts"],"sourcesContent":["import {\n Component,\n Input,\n ChangeDetectionStrategy,\n Output,\n EventEmitter,\n ElementRef,\n} from '@angular/core';\nimport {\n IPepSmartFilterField,\n PepSmartFilterBaseField,\n} from './common/model/field';\nimport { PepLayoutService } from '@pepperi-addons/ngx-lib';\nimport { IPepSmartFilterData } from './common/model/filter';\n\n@Component({\n selector: 'pep-smart-filters',\n templateUrl: './smart-filters.component.html',\n styleUrls: ['./smart-filters.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepSmartFiltersComponent {\n\n @Input() title = '';\n\n filtersDataMap: Map<string, IPepSmartFilterData> = new Map<\n string,\n IPepSmartFilterData\n >();\n\n private _filters: IPepSmartFilterData[] = [];\n @Input()\n set filters(value: IPepSmartFilterData[]) {\n this._filters = value;\n this.setupFilters(value);\n }\n get filters(): IPepSmartFilterData[] {\n this._filters = [...this.filtersDataMap.keys()]\n // .filter((key) => this.filtersDataMap.get(key) !== null)\n .map((key) => {\n if (key) {\n return this.filtersDataMap.get(key);\n }\n });\n\n return this._filters;\n }\n\n private _fields: Array<IPepSmartFilterField> = [];\n @Input()\n set fields(value: Array<IPepSmartFilterField>) {\n this._fields = value;\n }\n get fields(): Array<IPepSmartFilterField> {\n return this._fields;\n }\n\n private _useAsWebComponent = false;\n @Input()\n set useAsWebComponent(value: boolean) {\n if (value) {\n this.exportFunctionsOnHostElement();\n }\n }\n get useAsWebComponent(): boolean {\n return this._useAsWebComponent;\n }\n\n // @Output()\n // filtersClear: EventEmitter<void> = new EventEmitter<void>();\n @Output()\n filtersChange: EventEmitter<IPepSmartFilterData[]> = new EventEmitter<\n IPepSmartFilterData[]\n >();\n\n @Output()\n fieldToggleChange: EventEmitter<IPepSmartFilterField> = new EventEmitter<IPepSmartFilterField>();\n\n expansionPanelHeaderHeight = '*';\n\n constructor(\n private hostElement: ElementRef,\n public layoutService: PepLayoutService\n ) { }\n\n private exportFunctionsOnHostElement() {\n // This is for web component usage for use those functions.\n this.hostElement.nativeElement.clearFilters = this.clearFilters.bind(\n this\n );\n this.hostElement.nativeElement.clearFilter = this.clearFilter.bind(\n this\n );\n this.hostElement.nativeElement.toggleField = this.toggleField.bind(\n this\n );\n }\n\n private setupFilters(value: IPepSmartFilterData[]) {\n this.filtersDataMap.clear();\n if (value) {\n value.forEach((filter) => {\n // Validate before add the filter into the map.\n let currentField = null;\n\n if (this.fields && this.fields.length > 0) {\n currentField = this.fields.find(\n (field) => field.id === filter.fieldId\n ) as PepSmartFilterBaseField;\n }\n\n if (currentField) {\n // Only if the operator is from the same type\n if (\n filter.operator.componentType.includes(\n currentField.componentType\n )\n ) {\n let isOperatorUnitValid = true;\n if (filter.operatorUnit) {\n // Only if the operator unit is not from the same type\n if (\n !filter.operatorUnit.componentType.includes(\n currentField.componentType\n )\n ) {\n isOperatorUnitValid = false;\n }\n }\n\n // Add the filter.\n if (isOperatorUnitValid) {\n this.filtersDataMap.set(filter.fieldId, filter);\n }\n }\n }\n });\n }\n }\n\n private raiseFiltersChange(): void {\n this.filtersChange.emit(this.filters);\n }\n\n toggleField(index: number, isOpen: boolean): void {\n this.fields[index].isOpen = isOpen;\n this.fieldToggleChange.emit(this.fields[index]);\n }\n\n clearFilters() {\n this.filtersDataMap.clear();\n }\n\n clearFilter(fieldId: string) {\n this.filtersDataMap.delete(fieldId);\n }\n\n // Clear all the filters and raise event that filters has change.\n onFiltersClear() {\n this.clearFilters();\n this.raiseFiltersChange();\n }\n\n // Clear the filter and raise event that filters has change.\n onFilterClear(field: IPepSmartFilterField) {\n this.clearFilter(field.id);\n this.raiseFiltersChange();\n }\n\n // Set the filter and raise event that filters has change.\n onFilterChange(\n field: IPepSmartFilterField,\n filterData: IPepSmartFilterData\n ) {\n this.clearFilter(field.id);\n this.filtersDataMap.set(field.id, filterData);\n this.raiseFiltersChange();\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n@Component({\n selector: 'pep-filter-actions',\n templateUrl: './filter-actions.component.html',\n styleUrls: ['./filter-actions.component.scss'],\n})\nexport class PepFilterActionsComponent {\n @Input() form: FormGroup;\n\n @Output() clearClick: EventEmitter<void> = new EventEmitter<void>();\n @Output() applyClick: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n clear() {\n this.clearClick.emit();\n }\n\n apply() {\n this.applyClick.emit();\n }\n}\n","import {\n PepSmartFilterComponentType,\n PepSmartFilterOperatorType,\n PepSmartFilterOperatorUnitType,\n} from './type';\nexport class IPepSmartFilterOperator {\n id: PepSmartFilterOperatorType;\n name: string;\n short: string;\n componentType: PepSmartFilterComponentType[];\n}\n\nconst Equals: IPepSmartFilterOperator = {\n id: 'eq',\n name: 'EQUAL',\n short: '=',\n componentType: [\n 'number',\n 'boolean'\n // 'multi-select',\n // 'date',\n // 'text',\n // 'auto-complete',\n // 'select',\n ],\n};\n\nconst NotEqual: IPepSmartFilterOperator = {\n id: 'neq',\n name: 'NOT_EQUAL',\n short: '<>',\n componentType: [\n 'number',\n // 'multi-select',\n // 'date',\n // 'text',\n // 'auto-complete',\n // 'select',\n ],\n};\n\nconst LessThan: IPepSmartFilterOperator = {\n id: 'lt',\n name: 'LESS_THEN',\n short: '<',\n componentType: ['number'],\n};\n\n// const LessThanOrEquals: IPepSmartFilterOperator = {\n// id: 'ltoe',\n// name: 'LESS_THEN_OR_EQUAL',\n// short: '<=',\n// type: ['number'],\n// };\n\nconst GreaterThan: IPepSmartFilterOperator = {\n id: 'gt',\n name: 'GREATER_THEN',\n short: '>',\n componentType: ['number'],\n};\n\n// const GreaterThanOrEquals: IPepSmartFilterOperator = {\n// id: 'gtoe',\n// name: 'GREATER_THEN_OR_EQUAL',\n// short: '>=',\n// type: ['number'],\n// };\n\nconst NumberRange: IPepSmartFilterOperator = {\n id: 'numberRange',\n name: 'NUMBER_RANGE',\n short: 'Range',\n componentType: ['number'],\n};\n\n// const Contains: Operator = {\n// id: 'contains',\n// name: 'Contains',\n// short: 'Contains',\n// type: ['text'],\n// };\n\n// const BeginsWith: Operator = {\n// id: 'beginsWith',\n// name: 'Begins With',\n// short: 'Begins With',\n// type: ['text'],\n// };\n\n// const EndsWith: Operator = {\n// id: 'endsWith',\n// name: 'Ends With',\n// short: 'End With',\n// type: ['text'],\n// };\n\n// const After: Operator = {\n// id: 'after',\n// name: 'After',\n// short: 'After',\n// type: ['date'],\n// };\n\n// const Before: Operator = {\n// id: 'before',\n// name: 'Before',\n// short: 'Before',\n// type: ['date'],\n// };\n\nconst InTheLast: IPepSmartFilterOperator = {\n id: 'inTheLast',\n name: 'IN_THE_LAST',\n short: 'In the last',\n componentType: ['date'],\n};\n\nconst Today: IPepSmartFilterOperator = {\n id: 'today',\n name: 'TODAY',\n short: 'Today',\n componentType: ['date'],\n};\n\nconst ThisWeek: IPepSmartFilterOperator = {\n id: 'thisWeek',\n name: 'THIS_WEEK',\n short: 'This week',\n componentType: ['date'],\n};\n\nconst ThisMonth: IPepSmartFilterOperator = {\n id: 'thisMonth',\n name: 'THIS_MONTH',\n short: 'This month',\n componentType: ['date'],\n};\n\nconst DateRange: IPepSmartFilterOperator = {\n id: 'dateRange',\n name: 'DATE_RANGE',\n short: 'Range',\n componentType: ['date'],\n};\n\nconst DueIn: IPepSmartFilterOperator = {\n id: 'dueIn',\n name: 'DUE_IN',\n short: 'Due in',\n componentType: ['date'],\n};\n\nconst On: IPepSmartFilterOperator = {\n id: 'on',\n name: 'ON',\n short: 'On',\n componentType: ['date'],\n};\n\nconst NotInTheLast: IPepSmartFilterOperator = {\n id: 'notInTheLast',\n name: 'NOT_IN_THE_LAST',\n short: 'Not in the last',\n componentType: ['date'],\n};\n\nconst NotDueIn: IPepSmartFilterOperator = {\n id: 'notDueIn',\n name: 'NOT_DUE_IN',\n short: 'Not due in',\n componentType: ['date'],\n};\n\nconst IsEmpty: IPepSmartFilterOperator = {\n id: 'isEmpty',\n name: 'IS_EMPTY',\n short: 'Is empty',\n componentType: ['date'],\n};\n\nconst IsNotEmpty: IPepSmartFilterOperator = {\n id: 'isNotEmpty',\n name: 'IS_NOT_EMPTY',\n short: 'Is not empty',\n componentType: ['date'],\n};\n\nconst In: IPepSmartFilterOperator = {\n id: 'in',\n name: 'IN',\n short: 'In',\n componentType: ['multi-select'],\n};\n\nexport const PepSmartFilterOperators = {\n Equals: Equals,\n NotEqual: NotEqual,\n LessThan: LessThan,\n // LessThanOrEquals: LessThanOrEquals,\n GreaterThan: GreaterThan,\n // GreaterThanOrEquals: GreaterThanOrEquals,\n NumberRange: NumberRange,\n // Contains: Contains,\n // BeginsWith: BeginsWith,\n // EndsWith: EndsWith,\n // After: After,\n // Before: Before,\n InTheLast: InTheLast,\n Today: Today,\n ThisWeek: ThisWeek,\n ThisMonth: ThisMonth,\n DateRange: DateRange,\n DueIn: DueIn,\n On: On,\n NotInTheLast: NotInTheLast,\n NotDueIn: NotDueIn,\n IsEmpty: IsEmpty,\n IsNotEmpty: IsNotEmpty,\n In: In,\n};\n\nexport class IPepSmartFilterOperatorUnit {\n id: PepSmartFilterOperatorUnitType;\n name: string;\n componentType: PepSmartFilterComponentType[];\n}\n\nconst Days: IPepSmartFilterOperatorUnit = {\n id: 'days',\n name: 'DAYS',\n componentType: ['date'],\n};\n\nconst Weeks: IPepSmartFilterOperatorUnit = {\n id: 'weeks',\n name: 'WEEKS',\n componentType: ['date'],\n};\n\nconst Months: IPepSmartFilterOperatorUnit = {\n id: 'months',\n name: 'MONTHS',\n componentType: ['date'],\n};\n\nconst Years: IPepSmartFilterOperatorUnit = {\n id: 'years',\n name: 'YEARS',\n componentType: ['date'],\n};\n\nexport const PepSmartFilterOperatorUnits = {\n Days: Days,\n Weeks: Weeks,\n Months: Months,\n Years: Years,\n};\n","import {\n Directive,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n AfterViewInit,\n Output,\n ChangeDetectorRef,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n ViewChild,\n ComponentFactoryResolver,\n ComponentFactory,\n ComponentRef,\n Injector,\n ElementRef,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { Observable, Subject } from 'rxjs';\nimport { PepValidatorService } from '@pepperi-addons/ngx-lib';\nimport {\n IPepSmartFilterOperator,\n IPepSmartFilterOperatorUnit,\n PepSmartFilterOperators,\n PepSmartFilterOperatorUnits,\n} from './operator';\nimport { forwardRef } from '@angular/core';\nimport { IPepSmartFilterData, IPepSmartFilterDataValue } from './filter';\nimport { PepSmartFilterBaseField } from './field';\nimport { takeUntil } from 'rxjs/operators';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PepFilterActionsComponent } from '../filter-actions.component';\n\n@Directive({})\nexport abstract class BaseFilterComponent\n implements OnInit, OnChanges, OnDestroy {\n private readonly _destroyed: Subject<void>;\n private actionsContainerRef: ComponentRef<PepFilterActionsComponent>;\n\n private _fieldIdWithNoDots = '';\n private _field: PepSmartFilterBaseField;\n @Input()\n set field(value: PepSmartFilterBaseField) {\n this._field = value;\n this._fieldIdWithNoDots = value ? value.id.replace(/\\./g, '_') : '';\n this.setupForm();\n }\n get field(): PepSmartFilterBaseField {\n return this._field;\n }\n\n private _filter: IPepSmartFilterData;\n @Input()\n set filter(value: IPepSmartFilterData) {\n this._filter = value;\n this.setupFilter();\n }\n get filter(): IPepSmartFilterData {\n return this._filter;\n }\n\n @Output() filterClear: EventEmitter<void> = new EventEmitter<void>();\n @Output()\n filterChange: EventEmitter<IPepSmartFilterData> = new EventEmitter<IPepSmartFilterData>();\n\n private _operator: IPepSmartFilterOperator;\n set operator(operator: IPepSmartFilterOperator) {\n if (operator?.id != this._operator?.id) {\n // Validate operator\n const index = this.operators.findIndex((o) => o.id === operator.id);\n if (index >= 0) {\n this._operator = this.operators[index];\n } else {\n this._operator = this.operators[0];\n }\n\n this.form.reset();\n this.updateValidity();\n }\n }\n get operator(): IPepSmartFilterOperator {\n return this._operator;\n }\n\n private _operatorUnit: IPepSmartFilterOperatorUnit;\n set operatorUnit(operatorUnit: IPepSmartFilterOperatorUnit) {\n // Validate operator unit\n if (operatorUnit === undefined) {\n this._operatorUnit = undefined;\n } else {\n const index = this.operatorUnits.findIndex(\n (ou) => ou.id === operatorUnit.id\n );\n if (index >= 0) {\n this._operatorUnit = this.operatorUnits[index];\n } else {\n this._operatorUnit = this.operatorUnits[0];\n }\n }\n }\n get operatorUnit(): IPepSmartFilterOperatorUnit {\n return this._operatorUnit;\n }\n\n get firstControlKey() {\n return this.field ? `${this._fieldIdWithNoDots}_first` : 'first';\n }\n get firstControl(): AbstractControl {\n return this.form.get(this.firstControlKey);\n }\n get secondControlKey() {\n return this.field ? `${this._fieldIdWithNoDots}_second` : 'second';\n }\n get secondControl(): AbstractControl {\n return this.form.get(this.secondControlKey);\n }\n\n protected operators: IPepSmartFilterOperator[];\n protected operatorUnits: IPepSmartFilterOperatorUnit[];\n\n protected readonly OPERATORS_TRANSLATION_PREFIX = 'SMART_FILTERS.OPERATORS';\n protected readonly OPERATOR_UNITS_TRANSLATION_PREFIX =\n 'SMART_FILTERS.OPERATOR_UNITS';\n\n form: FormGroup;\n\n constructor(\n private viewContainerRef: ViewContainerRef,\n private injector: Injector,\n private resolver: ComponentFactoryResolver,\n private builder: FormBuilder,\n protected translate: TranslateService,\n protected validator: PepValidatorService,\n protected renderer: Renderer2\n ) {\n this._destroyed = new Subject();\n }\n\n private createActionsComponent() {\n const factory: ComponentFactory<PepFilterActionsComponent> = this.resolver.resolveComponentFactory(\n PepFilterActionsComponent\n );\n\n this.actionsContainerRef = factory.create(this.injector);\n this.actionsContainerRef.instance.form = this.form;\n this.actionsContainerRef.instance.applyClick.subscribe(() =>\n this.applyFilter()\n );\n this.actionsContainerRef.instance.clearClick.subscribe(() =>\n this.clearFilter()\n );\n\n this.viewContainerRef.insert(this.actionsContainerRef.hostView);\n }\n\n private setupForm() {\n const formValue = {};\n formValue[this.firstControlKey] = [];\n formValue[this.secondControlKey] = [];\n // this.form.patchValue(formValue);\n\n this.form = this.builder.group(formValue);\n // this.form[this.firstControlKey] = [];\n // this.form[this.secondControlKey] = [];\n\n this.setupOperators();\n\n this.createActionsComponent();\n }\n\n private setupOperators() {\n // Get the operators by componentType.\n this.operators = Object.keys(PepSmartFilterOperators)\n .filter((key) => {\n return PepSmartFilterOperators[key].componentType.includes(\n this.field.componentType\n );\n })\n .map((key) => PepSmartFilterOperators[key]);\n\n // Filter by from field.operators input if exist.\n if (this.field.operators?.length > 0) {\n this.operators = this.operators.filter((o1) =>\n this.field.operators.some((o2) => o1.id === o2)\n );\n }\n\n // Get the operator units by componentType.\n this.operatorUnits = Object.keys(PepSmartFilterOperatorUnits)\n .filter((key) => {\n return PepSmartFilterOperatorUnits[key].componentType.includes(\n this.field.componentType\n );\n })\n .map((key) => PepSmartFilterOperatorUnits[key]);\n\n // Filter by from field.operatorsUnits input if exist.\n if (this.field.operatorUnits?.length > 0) {\n this.operatorUnits = this.operatorUnits.filter((o1) =>\n this.field.operatorUnits.some((o2) => o1.id === o2)\n );\n }\n\n // Load translation before get the options in the children.\n this.translate.get('SMART_FILTERS.TITLE').subscribe((res) => {\n this.loadOperatorsOptions();\n });\n }\n\n private setupFilter() {\n if (this.filter) {\n this.operator = this.filter.operator;\n this.operatorUnit = this.filter.operatorUnit;\n const formValue = {};\n formValue[this.firstControlKey] = this.filter.value.first;\n formValue[this.secondControlKey] = this.filter.value.second;\n this.form.patchValue(formValue);\n } else {\n this.operator = this.getDefaultOperator();\n this.operatorUnit = this.getDefaultOperatorUnit();\n this.clearFilter(false);\n }\n }\n\n protected getDestroyer() {\n return takeUntil(this._destroyed);\n }\n\n private updateValidity() {\n this.setFieldsStateAndValidators();\n\n this.firstControl.updateValueAndValidity();\n this.secondControl.updateValueAndValidity();\n }\n // Load the operators options from the translation.\n protected loadOperatorsOptions(): void {\n // Not implemented in the base\n }\n\n // Set default validators - some childs override this.\n protected setFieldsStateAndValidators(): void {\n this.firstControl.setValidators(Validators.required);\n this.secondControl.setValidators(Validators.required);\n this.secondControl.disable();\n }\n\n // Return undefined - some childs override this.\n protected getDefaultOperatorUnit(): IPepSmartFilterOperatorUnit {\n return undefined;\n }\n\n protected initFilter() {\n // Not implemented in the base\n }\n\n abstract getDefaultOperator(): IPepSmartFilterOperator;\n abstract getFilterValue(): IPepSmartFilterDataValue;\n\n clearFilter(emitEvent = true) {\n this._filter = null;\n this.form.reset();\n this.initFilter();\n\n if (emitEvent) {\n this.filterClear.emit();\n }\n }\n\n applyFilter() {\n const filterValue = this.getFilterValue();\n\n // If the filter is not null declare it, else - clear it.\n if (filterValue) {\n const filter = {\n fieldId: this.field.id,\n operator: this.operator,\n operatorUnit: this.operatorUnit,\n value: filterValue,\n };\n this._filter = filter;\n this.filterChange.emit(filter);\n } else {\n this.clearFilter();\n }\n }\n\n ngOnInit(): void {\n if (this.form) {\n this.updateValidity();\n }\n }\n\n ngOnChanges(): void {\n // if (this.form) {\n // this.updateValidity();\n // }\n }\n\n ngOnDestroy(): void {\n this._destroyed.next();\n this._destroyed.complete();\n\n this.actionsContainerRef.destroy();\n }\n\n // writeValue(value: IPepSmartFilterDataValue): void {\n // if (value) {\n // this.form.setValue(\n // {\n // first: value.first,\n // second: value.second || null,\n // },\n // { emitEvent: false }\n // );\n // } else {\n // this.form.reset();\n // }\n // }\n\n // registerOnChange(fn: any): void {\n // this.form.valueChanges.subscribe(fn);\n // }\n\n // onTouched: () => void = () => {\n // /* Do nothing */\n // };\n\n // registerOnTouched(fn: any): void {\n // this.onTouched = fn;\n // }\n\n // setDisabledState?(isDisabled: boolean): void {\n // isDisabled ? this.form.disable() : this.form.enable();\n // }\n\n // validate(control: AbstractControl): ValidationErrors {\n // return this.form.valid ? null : { PepFilterIsNotValid: true };\n // }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n PepSmartFilterOperators,\n} from '../common/model/operator';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\n\n@Component({\n selector: 'pep-boolean-filter',\n templateUrl: './boolean-filter.component.html',\n styleUrls: ['./boolean-filter.component.scss'],\n})\nexport class PepBooleanFilterComponent extends BaseFilterComponent {\n // Override\n getDefaultOperator(): IPepSmartFilterOperator {\n return PepSmartFilterOperators.Equals;\n }\n\n // Override\n getFilterValue(): IPepSmartFilterDataValue {\n const filterValue = { first: this.firstControl.value || false };\n return filterValue;\n }\n\n // // Override\n // setFieldsStateAndValidators(): void {\n // this.secondControl.disable();\n // }\n}\n","import { Component } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n IPepSmartFilterOperatorUnit,\n PepSmartFilterOperators,\n PepSmartFilterOperatorUnits,\n} from '../common/model/operator';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\nimport { Validators } from '@angular/forms';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\n\n@Component({\n selector: 'pep-date-filter',\n templateUrl: './date-filter.component.html',\n styleUrls: ['./date-filter.component.scss'],\n})\nexport class PepDateFilterComponent extends BaseFilterComponent {\n PepSmartFilterOperators = PepSmartFilterOperators;\n chooseTimeOptions: Array<IPepOption> = [];\n chooseTimeUnitOptions: Array<IPepOption> = [];\n\n // Override\n getDefaultOperator(): IPepSmartFilterOperator {\n return PepSmartFilterOperators.InTheLast;\n }\n\n // Override\n getDefaultOperatorUnit(): IPepSmartFilterOperatorUnit {\n if (this.operator === PepSmartFilterOperators.InTheLast ||\n this.operator === PepSmartFilterOperators.NotInTheLast ||\n this.operator === PepSmartFilterOperators.DueIn ||\n this.operator === PepSmartFilterOperators.NotDueIn) {\n return PepSmartFilterOperatorUnits.Months;\n } else {\n return undefined;\n }\n }\n\n // Override\n getFilterValue(): IPepSmartFilterDataValue {\n const filterValue = {\n first: this.firstControl.value,\n };\n\n if (this.operator === PepSmartFilterOperators.DateRange) {\n filterValue['second'] = this.secondControl.value;\n }\n\n return filterValue;\n }\n\n // Override\n loadOperatorsOptions() {\n this.chooseTimeOptions = this.operators.map((operator) => {\n return {\n key: operator.id,\n value: this.translate.instant(\n `${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`\n ),\n };\n });\n\n this.chooseTimeUnitOptions = this.operatorUnits.map((operatorUnit) => {\n return {\n key: operatorUnit.id,\n value: this.translate.instant(\n `${this.OPERATOR_UNITS_TRANSLATION_PREFIX}.${operatorUnit.name}`\n ),\n };\n });\n }\n\n // Override\n setFieldsStateAndValidators(): void {\n this.firstControl.enable();\n\n if (this.operator === PepSmartFilterOperators.DateRange) {\n this.firstControl.setValidators(Validators.required);\n this.secondControl.enable();\n this.secondControl.setValidators(Validators.required);\n } else if (\n this.operator === PepSmartFilterOperators.InTheLast ||\n this.operator === PepSmartFilterOperators.NotInTheLast ||\n this.operator === PepSmartFilterOperators.DueIn ||\n this.operator === PepSmartFilterOperators.NotDueIn\n ) {\n this.firstControl.setValidators([\n Validators.required,\n this.validator.numberValidator(),\n ]);\n this.secondControl.disable();\n } else {\n // Disable 'first' field.\n if (\n this.operator === PepSmartFilterOperators.Today ||\n this.operator === PepSmartFilterOperators.ThisWeek ||\n this.operator === PepSmartFilterOperators.ThisMonth ||\n this.operator === PepSmartFilterOperators.IsEmpty ||\n this.operator === PepSmartFilterOperators.IsNotEmpty\n ) {\n this.firstControl.disable();\n }\n\n // Default disable 'second' field.\n super.setFieldsStateAndValidators();\n }\n }\n\n onOperatorChanged(value: string) {\n const operator = Object.values(PepSmartFilterOperators).find(\n (operator) => operator.id === value\n );\n\n this.operator = operator;\n this.operatorUnit = this.getDefaultOperatorUnit();\n }\n\n onTimeUnitChanged(value: string) {\n const operatorUnit = Object.values(PepSmartFilterOperatorUnits).find(\n (operatorUnit) => operatorUnit.id === value\n );\n this.operatorUnit = operatorUnit;\n }\n}\n","import {\n AfterViewInit,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { Component, OnInit } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n PepSmartFilterOperators,\n} from '../common/model/operator';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\nimport { IPepSmartFilterFieldOption } from '../common/model/field';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map, startWith } from 'rxjs/operators';\nimport { FormControl } from '@angular/forms';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\nimport { VirtualScrollerComponent } from 'ngx-virtual-scroller';\n\nclass PepMultiSelectFilterOption implements IPepSmartFilterFieldOption {\n value: string;\n count?: number;\n selected = false;\n}\n\n@Component({\n selector: 'pep-multi-select-filter',\n templateUrl: './multi-select-filter.component.html',\n styleUrls: ['./multi-select-filter.component.scss'],\n})\nexport class PepMultiSelectFilterComponent\n extends BaseFilterComponent\n implements OnInit, AfterViewInit {\n options: PepMultiSelectFilterOption[] = [];\n filteredOptions$: Observable<any>;\n searchControl = new FormControl();\n\n @ViewChild('optionsContainer')\n optionsContainer: ElementRef;\n\n private readonly MAX_OPTIONS_TO_SHOW = 6.35;\n @ViewChild(VirtualScrollerComponent)\n private virtualScroller: VirtualScrollerComponent;\n\n numberOptionsToShowSearch = 10;\n\n ngOnInit() {\n super.ngOnInit;\n\n if (this.field.options?.length > 0) {\n this.options = this.field.options.map((opt) => {\n return { value: opt.value, count: opt.count, selected: false };\n });\n } else {\n this.searchControl.disable();\n }\n\n // Init the selected values from first value.\n const firstControl = this.firstControl;\n if (firstControl.value) {\n this.initOptionsSelectedValues(firstControl.value);\n }\n\n // Add subscription for the first value change to set the selected options.\n firstControl.valueChanges\n .pipe(this.getDestroyer(), distinctUntilChanged())\n .subscribe((selectedValues: string[]) => {\n this.initOptionsSelectedValues(selectedValues);\n });\n\n // Filter the options by the search control.\n this.filteredOptions$ = this.searchControl.valueChanges.pipe(\n this.getDestroyer(),\n startWith<any>(''),\n map((option) =>\n typeof option === 'string' ? option : option && option.value\n ),\n map((value) => (value ? this.filterOptions(value) : this.options))\n );\n\n // Each time the filter change.\n this.filteredOptions$.subscribe(\n (filterdOptions: PepMultiSelectFilterOption[]) => {\n this.calcOptionsHeight(filterdOptions.length);\n setTimeout(() => {\n // 8 is the padding top of the multi-select-options\n this.virtualScroller.scrollToPosition(-8);\n }, 125);\n }\n );\n }\n\n ngAfterViewInit(): void {\n // Calc for the first time.\n this.calcOptionsHeight(this.options.length);\n }\n\n initOptionsSelectedValues(selectedValues: string[]): void {\n this.options.forEach((opt) => {\n const isValueSelected =\n selectedValues && selectedValues.includes(opt.value);\n opt.selected = isValueSelected;\n });\n }\n\n private calcOptionsHeight(optionsCount: number) {\n if (this.optionsContainer) {\n const optionsToShow =\n optionsCount > this.MAX_OPTIONS_TO_SHOW\n ? this.MAX_OPTIONS_TO_SHOW\n : optionsCount;\n // optionsToShow * 2.25 is 1 option height + 1 is the padding top & bottom of the container.\n const optionsHeight = optionsToShow * 2.25 + 1 + 'rem';\n\n this.renderer.setStyle(\n this.optionsContainer.nativeElement,\n 'height',\n optionsHeight\n );\n }\n }\n\n private filterOptions(value: string): any[] {\n const filterValue = value.toLowerCase();\n return this.options.filter(\n (opt) =>\n opt.value &&\n opt.value.toLowerCase().includes(filterValue.toLowerCase())\n );\n }\n\n // Override\n getDefaultOperator(): IPepSmartFilterOperator {\n return PepSmartFilterOperators.In;\n }\n\n // Override\n getFilterValue(): IPepSmartFilterDataValue {\n const selectedValues = this.options\n .filter((opt) => opt.selected)\n .map((opt) => opt.value);\n const filterValue = {\n first: selectedValues,\n };\n\n return selectedValues.length > 0 ? filterValue : null;\n }\n\n // Override\n initFilter() {\n this.options.forEach((opt) => (opt.selected = false));\n this.searchControl.setValue('');\n }\n\n onOptionChange(\n option: PepMultiSelectFilterOption,\n event: MatCheckboxChange\n ) {\n option.selected = event.checked;\n this.firstControl.setValue(\n this.options.filter((opt) => opt.selected).map((opt) => opt.value),\n { emitEvent: false }\n );\n }\n}\n","import { Component, OnChanges, OnInit } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n PepSmartFilterOperators,\n} from '../common/model/operator';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\nimport { Validators } from '@angular/forms';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\n@Component({\n selector: 'pep-number-filter',\n templateUrl: './number-filter.component.html',\n styleUrls: ['./number-filter.component.scss'],\n})\nexport class PepNumberFilterComponent extends BaseFilterComponent implements OnInit {\n PepSmartFilterOperators = PepSmartFilterOperators;\n chooseTypeOptions: Array<IPepOption> = [];\n\n ngOnInit() {\n this.firstControl.valueChanges\n .pipe(this.getDestroyer(), distinctUntilChanged())\n .subscribe(() => {\n this.setFieldsStateAndValidators();\n });\n\n this.secondControl.valueChanges\n .pipe(this.getDestroyer(), distinctUntilChanged())\n .subscribe(() => {\n this.setFieldsStateAndValidators();\n });\n }\n\n // Override\n getDefaultOperator(): IPepSmartFilterOperator {\n return PepSmartFilterOperators.Equals;\n }\n\n // Override\n getFilterValue(): IPepSmartFilterDataValue {\n const filterValue = {\n first: this.firstControl.value,\n };\n\n if (this.operator === PepSmartFilterOperators.NumberRange) {\n filterValue['second'] = this.secondControl.value;\n }\n\n return filterValue;\n }\n\n // Override\n loadOperatorsOptions() {\n this.chooseTypeOptions = this.operators.map((operator) => {\n return {\n key: operator.id,\n value: this.translate.instant(\n `${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`\n ),\n };\n });\n }\n\n // Override\n setFieldsStateAndValidators(): void {\n if (this.operator === PepSmartFilterOperators.NumberRange) {\n const firstValidators = [Validators.required];\n if (this.secondControl.value) {\n firstValidators.push(this.validator.isLessThan(this.secondControl));\n }\n this.firstControl.setValidators(firstValidators);\n\n\n this.secondControl.enable();\n const secondValidators = [Validators.required];\n if (this.firstControl.value) {\n secondValidators.push(this.validator.isGreaterThan(this.firstControl));\n }\n this.secondControl.setValidators(secondValidators);\n } else {\n super.setFieldsStateAndValidators();\n }\n }\n\n onOperatorChanged(value: string) {\n const operator = Object.values(PepSmartFilterOperators).find(\n (operator) => operator.id === value\n );\n this.operator = operator;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FlexLayoutModule } from '@angular/flex-layout';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatRadioModule } from '@angular/material/radio';\n\nimport { VirtualScrollerModule } from 'ngx-virtual-scroller';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport { PepCheckboxModule } from '@pepperi-addons/ngx-lib/checkbox';\nimport { PepDateModule } from '@pepperi-addons/ngx-lib/date';\nimport { PepSelectModule } from '@pepperi-addons/ngx-lib/select';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\nimport { PepSearchModule } from '@pepperi-addons/ngx-lib/search';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconNumberMinus,\n pepIconNumberPlus,\n} from '@pepperi-addons/ngx-lib/icon';\n\n// import { BaseFilterComponent } from './common/model/base-filter-component';\nimport { PepSmartFiltersComponent } from './smart-filters.component';\nimport { PepFilterActionsComponent } from './common/filter-actions.component';\nimport { PepBooleanFilterComponent } from './boolean-filter/boolean-filter.component';\nimport { PepDateFilterComponent } from './date-filter/date-filter.component';\nimport { PepMultiSelectFilterComponent } from './multi-select-filter/multi-select-filter.component';\nimport { PepNumberFilterComponent } from './number-filter/number-filter.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FlexLayoutModule,\n // Material modules\n MatCommonModule,\n MatCheckboxModule,\n MatChipsModule,\n MatExpansionModule,\n MatIconModule,\n MatFormFieldModule,\n MatInputModule,\n MatRadioModule,\n // External modules\n VirtualScrollerModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepCheckboxModule,\n PepDateModule,\n PepSelectModule,\n PepTextboxModule,\n PepSearchModule,\n PepIconModule,\n ],\n exports: [PepSmartFiltersComponent],\n declarations: [\n // BaseFilterComponent,\n PepSmartFiltersComponent,\n PepFilterActionsComponent,\n PepBooleanFilterComponent,\n PepDateFilterComponent,\n PepMultiSelectFilterComponent,\n PepNumberFilterComponent,\n ],\n})\nexport class PepSmartFiltersModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconNumberMinus,\n pepIconNumberPlus,\n ]);\n }\n}\n","import {\n IPepSmartFilterOperator,\n IPepSmartFilterOperatorUnit,\n} from './operator';\nimport {\n PepSmartFilterComponentType,\n PepSmartFilterType,\n PepSmartFilterOperatorType,\n PepSmartFilterOperatorUnitType,\n} from './type';\n\nexport interface IPepSmartFilterFieldOption {\n value: string;\n count?: number;\n}\n\nexport interface IPepSmartFilterField {\n id: string;\n name: string;\n isOpen?: boolean;\n options?: IPepSmartFilterFieldOption[];\n operators?: PepSmartFilterOperatorType[];\n operatorUnits?: PepSmartFilterOperatorUnitType[];\n}\n\n// Base field\n// ------------------------------\nexport abstract class PepSmartFilterBaseField implements IPepSmartFilterField {\n id: string;\n name: string;\n isOpen?: boolean;\n options?: IPepSmartFilterFieldOption[];\n operators?: PepSmartFilterOperatorType[];\n operatorUnits?: PepSmartFilterOperatorUnitType[];\n\n protected _componentType: PepSmartFilterComponentType;\n get componentType(): PepSmartFilterComponentType {\n return this._componentType;\n }\n\n private _type: PepSmartFilterType;\n get type(): PepSmartFilterType {\n return this._type;\n }\n\n constructor(field: IPepSmartFilterField) {\n this.id = field.id;\n this.name = field.name;\n this.isOpen = field.isOpen;\n this.options = field.options;\n this.operators = field.operators;\n this.operatorUnits = field.operatorUnits;\n\n this._type = this.getType();\n }\n\n protected abstract getType(): PepSmartFilterType;\n}\n\n// Boolean field\n// ------------------------------\nexport class PepSmartFilterBooleanField extends PepSmartFilterBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n this._componentType = 'boolean';\n }\n\n getType(): PepSmartFilterType {\n return 'boolean';\n }\n}\n\n// Date fields\n// ------------------------------\nexport abstract class PepSmartFilterDateBaseField extends PepSmartFilterBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n this._componentType = 'date';\n }\n}\nexport class PepSmartFilterDateField extends PepSmartFilterDateBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'date';\n }\n}\nexport class PepSmartFilterDateTimeField extends PepSmartFilterDateBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'date-time';\n }\n}\n\n// Multi select field\n// ------------------------------\nexport class PepSmartFilterMultiSelectField extends PepSmartFilterBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n this._componentType = 'multi-select';\n }\n\n getType(): PepSmartFilterType {\n return 'multi-select';\n }\n}\n\n// Number fields\n// ------------------------------\nexport abstract class PepSmartFilterNumberBaseField extends PepSmartFilterBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n this._componentType = 'number';\n }\n}\nexport class PepSmartFilterIntField extends PepSmartFilterNumberBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'int';\n }\n}\nexport class PepSmartFilterRealField extends PepSmartFilterNumberBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'real';\n }\n}\nexport class PepSmartFilterCurrencyField extends PepSmartFilterNumberBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'currency';\n }\n}\nexport class PepSmartFilterPercentageField extends PepSmartFilterNumberBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'percentage';\n }\n}\n","import {\n IPepSmartFilterField,\n PepSmartFilterBaseField,\n PepSmartFilterBooleanField,\n PepSmartFilterDateField,\n PepSmartFilterMultiSelectField,\n PepSmartFilterIntField,\n PepSmartFilterDateTimeField,\n PepSmartFilterPercentageField,\n PepSmartFilterCurrencyField,\n PepSmartFilterRealField,\n} from './field';\nimport { IPepSmartFilterData } from './filter';\nimport { IPepSmartFilterOperator, IPepSmartFilterOperatorUnit } from './operator';\nimport { PepSmartFilterType } from './type';\n\nfunction createBooleanSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterBooleanField(data);\n}\n\nfunction createDateSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterDateField(data);\n}\n\nfunction createDateTimeSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterDateTimeField(data);\n}\n\nfunction createMultiSelectSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterMultiSelectField(data);\n}\n\nfunction createIntSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterIntField(data);\n}\n\nfunction createRealSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterRealField(data);\n}\n\nfunction createCurrencySmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterCurrencyField(data);\n}\n\nfunction createPercentageSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterPercentageField(data);\n}\n\nexport function createSmartFilterField(\n data: IPepSmartFilterField,\n type: PepSmartFilterType\n): PepSmartFilterBaseField {\n let field: PepSmartFilterBaseField;\n\n switch (type) {\n case 'boolean':\n field = createBooleanSmartFilterField(data);\n break;\n case 'date':\n field = createDateSmartFilterField(data);\n break;\n case 'date-time':\n field = createDateTimeSmartFilterField(data);\n break;\n case 'multi-select':\n field = createMultiSelectSmartFilterField(data);\n break;\n case 'int':\n field = createIntSmartFilterField(data);\n break;\n case 'real':\n field = createRealSmartFilterField(data);\n break;\n case 'currency':\n field = createCurrencySmartFilterField(data);\n break;\n case 'percentage':\n field = createPercentageSmartFilterField(data);\n break;\n\n default:\n field = createMultiSelectSmartFilterField(data);\n break;\n }\n\n return field;\n}\n\nexport function createSmartFilter(\n fieldId: string,\n operator: IPepSmartFilterOperator,\n first: any,\n second?: any,\n operatorUnit?: IPepSmartFilterOperatorUnit\n): IPepSmartFilterData {\n return {\n fieldId: fieldId,\n operator: operator,\n operatorUnit: operatorUnit,\n value: {\n first: first,\n second: second,\n },\n };\n}","/*\n * Public API Surface of ngx-lib/smart-filters\n */\nexport * from './smart-filters.module';\nexport * from './smart-filters.component';\nexport * from './common/model/base-filter-component';\nexport * from './common/filter-actions.component';\nexport * from './boolean-filter/boolean-filter.component';\nexport * from './date-filter/date-filter.component';\nexport * from './multi-select-filter/multi-select-filter.component';\nexport * from './number-filter/number-filter.component';\n\n// Model\nexport * from './common/model/creator';\nexport * from './common/model/field';\nexport * from './common/model/filter';\nexport * from './common/model/operator';\nexport * from './common/model/type';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pepperi-addons-ngx-lib-smart-filters.js","sources":["../../../projects/ngx-lib/smart-filters/smart-filters.component.ts","../../../projects/ngx-lib/smart-filters/common/filter-actions.component.ts","../../../projects/ngx-lib/smart-filters/common/model/operator.ts","../../../projects/ngx-lib/smart-filters/common/model/base-filter-component.ts","../../../projects/ngx-lib/smart-filters/text-filter/text-filter.component.ts","../../../projects/ngx-lib/smart-filters/boolean-filter/boolean-filter.component.ts","../../../projects/ngx-lib/smart-filters/date-filter/date-filter.component.ts","../../../projects/ngx-lib/smart-filters/multi-select-filter/multi-select-filter.component.ts","../../../projects/ngx-lib/smart-filters/number-filter/number-filter.component.ts","../../../projects/ngx-lib/smart-filters/smart-filters.module.ts","../../../projects/ngx-lib/smart-filters/common/model/field.ts","../../../projects/ngx-lib/smart-filters/common/model/creator.ts","../../../projects/ngx-lib/smart-filters/public-api.ts","../../../projects/ngx-lib/smart-filters/pepperi-addons-ngx-lib-smart-filters.ts"],"sourcesContent":["import {\n Component,\n Input,\n ChangeDetectionStrategy,\n Output,\n EventEmitter,\n ElementRef,\n} from '@angular/core';\nimport {\n IPepSmartFilterField,\n PepSmartFilterBaseField,\n} from './common/model/field';\nimport { PepLayoutService } from '@pepperi-addons/ngx-lib';\nimport { IPepSmartFilterData } from './common/model/filter';\n\n@Component({\n selector: 'pep-smart-filters',\n templateUrl: './smart-filters.component.html',\n styleUrls: ['./smart-filters.component.scss', './smart-filters.component.theme.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepSmartFiltersComponent {\n\n @Input() title = '';\n\n filtersDataMap: Map<string, IPepSmartFilterData> = new Map<\n string,\n IPepSmartFilterData\n >();\n\n private _filters: IPepSmartFilterData[] = [];\n @Input()\n set filters(value: IPepSmartFilterData[]) {\n this._filters = value;\n this.setupFilters(value);\n }\n get filters(): IPepSmartFilterData[] {\n this._filters = [...this.filtersDataMap.keys()]\n // .filter((key) => this.filtersDataMap.get(key) !== null)\n .map((key) => {\n if (key) {\n return this.filtersDataMap.get(key);\n }\n });\n\n return this._filters;\n }\n\n private _fields: Array<IPepSmartFilterField> = [];\n @Input()\n set fields(value: Array<IPepSmartFilterField>) {\n this._fields = value;\n }\n get fields(): Array<IPepSmartFilterField> {\n return this._fields;\n }\n\n private _useAsWebComponent = false;\n @Input()\n set useAsWebComponent(value: boolean) {\n if (value) {\n this.exportFunctionsOnHostElement();\n }\n }\n get useAsWebComponent(): boolean {\n return this._useAsWebComponent;\n }\n\n // @Output()\n // filtersClear: EventEmitter<void> = new EventEmitter<void>();\n @Output()\n filtersChange: EventEmitter<IPepSmartFilterData[]> = new EventEmitter<\n IPepSmartFilterData[]\n >();\n\n @Output()\n fieldToggleChange: EventEmitter<IPepSmartFilterField> = new EventEmitter<IPepSmartFilterField>();\n\n expansionPanelHeaderHeight = '*';\n\n constructor(\n private hostElement: ElementRef,\n public layoutService: PepLayoutService\n ) { }\n\n private exportFunctionsOnHostElement() {\n // This is for web component usage for use those functions.\n this.hostElement.nativeElement.clearFilters = this.clearFilters.bind(\n this\n );\n this.hostElement.nativeElement.clearFilter = this.clearFilter.bind(\n this\n );\n this.hostElement.nativeElement.toggleField = this.toggleField.bind(\n this\n );\n }\n\n private setupFilters(value: IPepSmartFilterData[]) {\n this.filtersDataMap.clear();\n if (value) {\n value.forEach((filter) => {\n // Validate before add the filter into the map.\n let currentField = null;\n\n if (this.fields && this.fields.length > 0) {\n currentField = this.fields.find(\n (field) => field.id === filter.fieldId\n ) as PepSmartFilterBaseField;\n }\n\n if (currentField) {\n // Only if the operator is from the same type\n if (\n filter.operator.componentType.includes(\n currentField.componentType\n )\n ) {\n let isOperatorUnitValid = true;\n if (filter.operatorUnit) {\n // Only if the operator unit is not from the same type\n if (\n !filter.operatorUnit.componentType.includes(\n currentField.componentType\n )\n ) {\n isOperatorUnitValid = false;\n }\n }\n\n // Add the filter.\n if (isOperatorUnitValid) {\n this.filtersDataMap.set(filter.fieldId, filter);\n }\n }\n }\n });\n }\n }\n\n private raiseFiltersChange(): void {\n this.filtersChange.emit(this.filters);\n }\n\n toggleField(index: number, isOpen: boolean): void {\n this.fields[index].isOpen = isOpen;\n this.fieldToggleChange.emit(this.fields[index]);\n }\n\n clearFilters() {\n this.filtersDataMap.clear();\n }\n\n clearFilter(fieldId: string) {\n this.filtersDataMap.delete(fieldId);\n }\n\n // Clear all the filters and raise event that filters has change.\n onFiltersClear() {\n this.clearFilters();\n this.raiseFiltersChange();\n }\n\n // Clear the filter and raise event that filters has change.\n onFilterClear(field: IPepSmartFilterField) {\n this.clearFilter(field.id);\n this.raiseFiltersChange();\n }\n\n // Set the filter and raise event that filters has change.\n onFilterChange(\n field: IPepSmartFilterField,\n filterData: IPepSmartFilterData\n ) {\n this.clearFilter(field.id);\n this.filtersDataMap.set(field.id, filterData);\n this.raiseFiltersChange();\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n@Component({\n selector: 'pep-filter-actions',\n templateUrl: './filter-actions.component.html',\n styleUrls: ['./filter-actions.component.scss'],\n})\nexport class PepFilterActionsComponent {\n @Input() form: FormGroup;\n\n @Output() clearClick: EventEmitter<void> = new EventEmitter<void>();\n @Output() applyClick: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n clear() {\n this.clearClick.emit();\n }\n\n apply() {\n this.applyClick.emit();\n }\n}\n","import {\n PepSmartFilterComponentType,\n PepSmartFilterOperatorType,\n PepSmartFilterOperatorUnitType,\n} from './type';\nexport class IPepSmartFilterOperator {\n id: PepSmartFilterOperatorType;\n name: string;\n short: string;\n componentType: PepSmartFilterComponentType[];\n}\n\nconst Equals: IPepSmartFilterOperator = {\n id: 'eq',\n name: 'EQUAL',\n short: '=',\n componentType: [\n 'number',\n 'boolean'\n // 'multi-select',\n // 'date',\n // 'text',\n // 'auto-complete',\n // 'select',\n ],\n};\n\nconst NotEqual: IPepSmartFilterOperator = {\n id: 'neq',\n name: 'NOT_EQUAL',\n short: '<>',\n componentType: [\n 'number',\n // 'multi-select',\n // 'date',\n // 'text',\n // 'auto-complete',\n // 'select',\n ],\n};\n\nconst LessThan: IPepSmartFilterOperator = {\n id: 'lt',\n name: 'LESS_THEN',\n short: '<',\n componentType: ['number'],\n};\n\n// const LessThanOrEquals: IPepSmartFilterOperator = {\n// id: 'ltoe',\n// name: 'LESS_THEN_OR_EQUAL',\n// short: '<=',\n// type: ['number'],\n// };\n\nconst GreaterThan: IPepSmartFilterOperator = {\n id: 'gt',\n name: 'GREATER_THEN',\n short: '>',\n componentType: ['number'],\n};\n\n// const GreaterThanOrEquals: IPepSmartFilterOperator = {\n// id: 'gtoe',\n// name: 'GREATER_THEN_OR_EQUAL',\n// short: '>=',\n// type: ['number'],\n// };\n\nconst NumberRange: IPepSmartFilterOperator = {\n id: 'numberRange',\n name: 'NUMBER_RANGE',\n short: 'Range',\n componentType: ['number'],\n};\n\nconst Contains: IPepSmartFilterOperator = {\n id: 'contains',\n name: 'CONTAINS',\n short: 'Contains',\n componentType: ['text'],\n};\n\n// const BeginsWith: Operator = {\n// id: 'beginsWith',\n// name: 'Begins With',\n// short: 'Begins With',\n// type: ['text'],\n// };\n\n// const EndsWith: Operator = {\n// id: 'endsWith',\n// name: 'Ends With',\n// short: 'End With',\n// type: ['text'],\n// };\n\n// const After: Operator = {\n// id: 'after',\n// name: 'After',\n// short: 'After',\n// type: ['date'],\n// };\n\n// const Before: Operator = {\n// id: 'before',\n// name: 'Before',\n// short: 'Before',\n// type: ['date'],\n// };\n\nconst InTheLast: IPepSmartFilterOperator = {\n id: 'inTheLast',\n name: 'IN_THE_LAST',\n short: 'In the last',\n componentType: ['date'],\n};\n\nconst Today: IPepSmartFilterOperator = {\n id: 'today',\n name: 'TODAY',\n short: 'Today',\n componentType: ['date'],\n};\n\nconst ThisWeek: IPepSmartFilterOperator = {\n id: 'thisWeek',\n name: 'THIS_WEEK',\n short: 'This week',\n componentType: ['date'],\n};\n\nconst ThisMonth: IPepSmartFilterOperator = {\n id: 'thisMonth',\n name: 'THIS_MONTH',\n short: 'This month',\n componentType: ['date'],\n};\n\nconst DateRange: IPepSmartFilterOperator = {\n id: 'dateRange',\n name: 'DATE_RANGE',\n short: 'Range',\n componentType: ['date'],\n};\n\nconst DueIn: IPepSmartFilterOperator = {\n id: 'dueIn',\n name: 'DUE_IN',\n short: 'Due in',\n componentType: ['date'],\n};\n\nconst On: IPepSmartFilterOperator = {\n id: 'on',\n name: 'ON',\n short: 'On',\n componentType: ['date'],\n};\n\nconst NotInTheLast: IPepSmartFilterOperator = {\n id: 'notInTheLast',\n name: 'NOT_IN_THE_LAST',\n short: 'Not in the last',\n componentType: ['date'],\n};\n\nconst NotDueIn: IPepSmartFilterOperator = {\n id: 'notDueIn',\n name: 'NOT_DUE_IN',\n short: 'Not due in',\n componentType: ['date'],\n};\n\nconst IsEmpty: IPepSmartFilterOperator = {\n id: 'isEmpty',\n name: 'IS_EMPTY',\n short: 'Is empty',\n componentType: ['date'],\n};\n\nconst IsNotEmpty: IPepSmartFilterOperator = {\n id: 'isNotEmpty',\n name: 'IS_NOT_EMPTY',\n short: 'Is not empty',\n componentType: ['date'],\n};\n\nconst In: IPepSmartFilterOperator = {\n id: 'in',\n name: 'IN',\n short: 'In',\n componentType: ['multi-select'],\n};\n\nexport const PepSmartFilterOperators = {\n Equals: Equals,\n NotEqual: NotEqual,\n LessThan: LessThan,\n // LessThanOrEquals: LessThanOrEquals,\n GreaterThan: GreaterThan,\n // GreaterThanOrEquals: GreaterThanOrEquals,\n NumberRange: NumberRange,\n Contains: Contains,\n // BeginsWith: BeginsWith,\n // EndsWith: EndsWith,\n // After: After,\n // Before: Before,\n InTheLast: InTheLast,\n Today: Today,\n ThisWeek: ThisWeek,\n ThisMonth: ThisMonth,\n DateRange: DateRange,\n DueIn: DueIn,\n On: On,\n NotInTheLast: NotInTheLast,\n NotDueIn: NotDueIn,\n IsEmpty: IsEmpty,\n IsNotEmpty: IsNotEmpty,\n In: In,\n};\n\nexport class IPepSmartFilterOperatorUnit {\n id: PepSmartFilterOperatorUnitType;\n name: string;\n componentType: PepSmartFilterComponentType[];\n}\n\nconst Days: IPepSmartFilterOperatorUnit = {\n id: 'days',\n name: 'DAYS',\n componentType: ['date'],\n};\n\nconst Weeks: IPepSmartFilterOperatorUnit = {\n id: 'weeks',\n name: 'WEEKS',\n componentType: ['date'],\n};\n\nconst Months: IPepSmartFilterOperatorUnit = {\n id: 'months',\n name: 'MONTHS',\n componentType: ['date'],\n};\n\nconst Years: IPepSmartFilterOperatorUnit = {\n id: 'years',\n name: 'YEARS',\n componentType: ['date'],\n};\n\nexport const PepSmartFilterOperatorUnits = {\n Days: Days,\n Weeks: Weeks,\n Months: Months,\n Years: Years,\n};\n","import {\n Directive,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n AfterViewInit,\n Output,\n ChangeDetectorRef,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n ViewChild,\n ComponentFactoryResolver,\n ComponentFactory,\n ComponentRef,\n Injector,\n ElementRef,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { Observable, Subject } from 'rxjs';\nimport { PepValidatorService } from '@pepperi-addons/ngx-lib';\nimport {\n IPepSmartFilterOperator,\n IPepSmartFilterOperatorUnit,\n PepSmartFilterOperators,\n PepSmartFilterOperatorUnits,\n} from './operator';\nimport { forwardRef } from '@angular/core';\nimport { IPepSmartFilterData, IPepSmartFilterDataValue } from './filter';\nimport { PepSmartFilterBaseField } from './field';\nimport { takeUntil } from 'rxjs/operators';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PepFilterActionsComponent } from '../filter-actions.component';\n\n\n@Directive({})\nexport abstract class BaseFilterComponent\n implements OnInit, OnChanges, OnDestroy {\n private readonly _destroyed: Subject<void>;\n private actionsContainerRef: ComponentRef<PepFilterActionsComponent>;\n\n private _fieldIdWithNoDots = '';\n private _field: PepSmartFilterBaseField;\n @Input()\n set field(value: PepSmartFilterBaseField) {\n this._field = value;\n this._fieldIdWithNoDots = value ? value.id.replace(/\\./g, '_') : '';\n this.setupForm();\n }\n get field(): PepSmartFilterBaseField {\n return this._field;\n }\n\n private _filter: IPepSmartFilterData;\n @Input()\n set filter(value: IPepSmartFilterData) {\n this._filter = value;\n this.setupFilter();\n }\n get filter(): IPepSmartFilterData {\n return this._filter;\n }\n protected _parentForm: FormGroup;\n @Input()\n set parentForm(form: FormGroup) {\n this._parentForm = form;\n this.updateParentForm();\n }\n @Input() emitOnChange = false;\n @Input() inline = false;\n @Input() showActionButtons = true;\n @Input() renderTitle = true;\n\n @Output() filterClear: EventEmitter<void> = new EventEmitter<void>();\n @Output()\n filterChange: EventEmitter<IPepSmartFilterData> = new EventEmitter<IPepSmartFilterData>();\n\n private _operator: IPepSmartFilterOperator;\n set operator(operator: IPepSmartFilterOperator) {\n if (operator?.id != this._operator?.id) {\n // Validate operator\n const index = this.operators.findIndex((o) => o.id === operator.id);\n if (index >= 0) {\n this._operator = this.operators[index];\n } else {\n this._operator = this.operators[0];\n }\n\n this.form.reset();\n this.updateValidity();\n }\n }\n get operator(): IPepSmartFilterOperator {\n return this._operator;\n }\n\n private _operatorUnit: IPepSmartFilterOperatorUnit;\n set operatorUnit(operatorUnit: IPepSmartFilterOperatorUnit) {\n // Validate operator unit\n if (operatorUnit) {\n const index = this.operatorUnits.findIndex(\n (ou) => ou.id === operatorUnit.id\n );\n if (index >= 0) {\n this._operatorUnit = this.operatorUnits[index];\n } else {\n this._operatorUnit = this.operatorUnits[0];\n }\n } else {\n this._operatorUnit = undefined;\n }\n }\n get operatorUnit(): IPepSmartFilterOperatorUnit {\n return this._operatorUnit;\n }\n\n get firstControlKey() {\n return this.field ? `${this._fieldIdWithNoDots}_first` : 'first';\n }\n get firstControl(): AbstractControl {\n return this.form.get(this.firstControlKey);\n }\n get secondControlKey() {\n return this.field ? `${this._fieldIdWithNoDots}_second` : 'second';\n }\n get secondControl(): AbstractControl {\n return this.form.get(this.secondControlKey);\n }\n\n protected operators: IPepSmartFilterOperator[];\n protected operatorUnits: IPepSmartFilterOperatorUnit[];\n\n protected readonly OPERATORS_TRANSLATION_PREFIX = 'SMART_FILTERS.OPERATORS';\n protected readonly OPERATOR_UNITS_TRANSLATION_PREFIX =\n 'SMART_FILTERS.OPERATOR_UNITS';\n\n form: FormGroup;\n\n constructor(\n private viewContainerRef: ViewContainerRef,\n private injector: Injector,\n private resolver: ComponentFactoryResolver,\n private builder: FormBuilder,\n protected translate: TranslateService,\n protected validator: PepValidatorService,\n protected renderer: Renderer2\n ) {\n this._destroyed = new Subject();\n }\n\n private createActionsComponent() {\n const factory: ComponentFactory<PepFilterActionsComponent> = this.resolver.resolveComponentFactory(\n PepFilterActionsComponent\n );\n\n this.actionsContainerRef = factory.create(this.injector);\n this.actionsContainerRef.instance.form = this.form;\n this.actionsContainerRef.instance.applyClick.subscribe(() =>\n this.applyFilter()\n );\n this.actionsContainerRef.instance.clearClick.subscribe(() =>\n this.clearFilter()\n );\n\n this.viewContainerRef.insert(this.actionsContainerRef.hostView);\n }\n\n private setupForm() {\n const formValue = {};\n formValue[this.firstControlKey] = [];\n formValue[this.secondControlKey] = [];\n // this.form.patchValue(formValue); \n this.form = this.builder.group(formValue);\n // this.form[this.firstControlKey] = [];\n // this.form[this.secondControlKey] = [];\n\n this.setupOperators();\n\n if (this.showActionButtons) {\n this.createActionsComponent();\n }\n }\n\n private setupOperators() {\n // Get the operators by componentType.\n this.operators = Object.keys(PepSmartFilterOperators)\n .filter((key) => {\n return PepSmartFilterOperators[key].componentType.includes(\n this.field.componentType\n );\n })\n .map((key) => PepSmartFilterOperators[key]);\n\n // Filter by from field.operators input if exist.\n if (this.field.operators?.length > 0) {\n this.operators = this.operators.filter((o1) =>\n this.field.operators.some((o2) => o1.id === o2)\n );\n }\n\n // Get the operator units by componentType.\n this.operatorUnits = Object.keys(PepSmartFilterOperatorUnits)\n .filter((key) => {\n return PepSmartFilterOperatorUnits[key].componentType.includes(\n this.field.componentType\n );\n })\n .map((key) => PepSmartFilterOperatorUnits[key]);\n\n // Filter by from field.operatorsUnits input if exist.\n if (this.field.operatorUnits?.length > 0) {\n this.operatorUnits = this.operatorUnits.filter((o1) =>\n this.field.operatorUnits.some((o2) => o1.id === o2)\n );\n }\n\n // Load translation before get the options in the children.\n this.translate.get('SMART_FILTERS.TITLE').subscribe((res) => {\n this.loadOperatorsOptions();\n });\n }\n\n private setupFilter() {\n if (this.filter) {\n this.operator = this.filter.operator;\n this.operatorUnit = this.filter.operatorUnit;\n const formValue = {};\n formValue[this.firstControlKey] = this.filter.value.first;\n formValue[this.secondControlKey] = this.filter.value.second;\n this.form.patchValue(formValue);\n } else {\n this.operator = this.getDefaultOperator();\n this.operatorUnit = this.getDefaultOperatorUnit();\n this.clearFilter(false);\n }\n }\n\n protected updateParentForm() {\n this._parentForm.setControl('fieldId', this.builder.control(this.field.id));\n this._parentForm.setControl('fieldType', this.builder.control(this.field.type));\n this._parentForm.setControl('operator', this.builder.control(this.operator));\n this._parentForm.setControl('operatorUnit', this.builder.control(this.operatorUnit));\n this._parentForm.setControl('values', this.builder.group({\n first: this.firstControl,\n second: this.secondControl\n }));\n }\n\n protected getDestroyer() {\n return takeUntil(this._destroyed);\n }\n\n private updateValidity() {\n this.setFieldsStateAndValidators();\n\n this.firstControl.updateValueAndValidity();\n this.secondControl.updateValueAndValidity();\n }\n // Load the operators options from the translation.\n protected loadOperatorsOptions(): void {\n // Not implemented in the base\n }\n\n // Set default validators - some childs override this.\n protected setFieldsStateAndValidators(): void {\n this.firstControl.setValidators(Validators.required);\n this.secondControl.setValidators(Validators.required);\n this.secondControl.disable();\n }\n\n // Return undefined - some childs override this.\n protected getDefaultOperatorUnit(): IPepSmartFilterOperatorUnit {\n return undefined;\n }\n\n protected initFilter() {\n // Not implemented in the base\n }\n\n abstract getDefaultOperator(): IPepSmartFilterOperator;\n abstract getFilterValue(): IPepSmartFilterDataValue;\n\n clearFilter(emitEvent = true) {\n this._filter = null;\n this.form.reset();\n this.initFilter();\n\n if (emitEvent) {\n this.filterClear.emit();\n }\n }\n\n applyFilter() {\n const filterValue = this.getFilterValue();\n\n // If the filter is not null declare it, else - clear it.\n if (filterValue) {\n const filter = {\n fieldId: this.field.id,\n operator: this.operator,\n operatorUnit: this.operatorUnit,\n value: filterValue,\n };\n this._filter = filter;\n this.filterChange.emit(filter);\n } else {\n this.clearFilter();\n }\n }\n\n ngOnInit(): void {\n if (this.form) {\n this.updateValidity();\n }\n }\n\n ngOnChanges(): void {\n // if (this.form) {\n // this.updateValidity();\n // }\n }\n\n ngOnDestroy(): void {\n this._destroyed.next();\n this._destroyed.complete();\n\n if (this.showActionButtons) {\n this.actionsContainerRef.destroy();\n }\n }\n\n // writeValue(value: IPepSmartFilterDataValue): void {\n // if (value) {\n // this.form.setValue(\n // {\n // first: value.first,\n // second: value.second || null,\n // },\n // { emitEvent: false }\n // );\n // } else {\n // this.form.reset();\n // }\n // }\n\n // registerOnChange(fn: any): void {\n // this.form.valueChanges.subscribe(fn);\n // }\n\n // onTouched: () => void = () => {\n // /* Do nothing */\n // };\n\n // registerOnTouched(fn: any): void {\n // this.onTouched = fn;\n // }\n\n // setDisabledState?(isDisabled: boolean): void {\n // isDisabled ? this.form.disable() : this.form.enable();\n // }\n\n // validate(control: AbstractControl): ValidationErrors {\n // return this.form.valid ? null : { PepFilterIsNotValid: true };\n // }\n}\n","import { Component, OnChanges, OnInit } from '@angular/core';\nimport { Validators } from '@angular/forms';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n PepSmartFilterOperators,\n} from '../common/model/operator';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\n\n@Component({\n selector: 'pep-text-filter',\n templateUrl: './text-filter.component.html',\n styleUrls: ['./text-filter.component.scss'],\n})\nexport class PepTextFilterComponent extends BaseFilterComponent implements OnInit {\n chooseTypeOptions: Array<IPepOption> = [];\n operatorWidth = '38%';\n firstControlWidth = '62%';\n\n ngOnInit() {\n this.firstControl.valueChanges\n .pipe(this.getDestroyer(), distinctUntilChanged())\n .subscribe(() => {\n this.setFieldsStateAndValidators();\n });\n }\n\n // Override\n getDefaultOperator(): IPepSmartFilterOperator {\n return PepSmartFilterOperators.Equals;\n }\n\n // Override\n getFilterValue(): IPepSmartFilterDataValue {\n const filterValue = {\n first: this.firstControl.value,\n };\n\n if (this.operator === PepSmartFilterOperators.NumberRange) {\n filterValue['second'] = this.secondControl.value;\n }\n\n return filterValue;\n }\n\n // Override\n loadOperatorsOptions() {\n this.chooseTypeOptions = this.operators.map((operator) => {\n return {\n key: operator.id,\n value: this.translate.instant(\n `${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`\n ),\n };\n });\n }\n\n // Override\n setFieldsStateAndValidators(): void {\n if (this.operator === PepSmartFilterOperators.NumberRange) {\n const firstValidators = [Validators.required];\n if (this.secondControl.value) {\n firstValidators.push(this.validator.isLessThan(this.secondControl));\n }\n this.firstControl.setValidators(firstValidators);\n } else {\n super.setFieldsStateAndValidators();\n }\n }\n\n onOperatorChanged(value: string) {\n const operator = Object.values(PepSmartFilterOperators).find(\n (operator) => operator.id === value\n );\n this.operator = operator;\n if (this._parentForm) {\n this.updateParentForm();\n }\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n onValueChanged() {\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n}","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n PepSmartFilterOperators,\n} from '../common/model/operator';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\n\n@Component({\n selector: 'pep-boolean-filter',\n templateUrl: './boolean-filter.component.html',\n styleUrls: ['./boolean-filter.component.scss'],\n})\nexport class PepBooleanFilterComponent extends BaseFilterComponent implements OnInit {\n @Input() options: IPepOption[] = [];\n\n ngOnInit() {\n //\n }\n\n\n // Override\n getDefaultOperator(): IPepSmartFilterOperator {\n return PepSmartFilterOperators.Equals;\n }\n\n // Override\n getFilterValue(): IPepSmartFilterDataValue {\n const filterValue = { first: this.firstControl.value || false };\n return filterValue;\n }\n\n onValueChanged(value) {\n this.firstControl.setValue(value);\n\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n // // Override\n // setFieldsStateAndValidators(): void {\n // this.secondControl.disable();\n // }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n IPepSmartFilterOperatorUnit,\n PepSmartFilterOperators,\n PepSmartFilterOperatorUnits,\n} from '../common/model/operator';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\nimport { Validators } from '@angular/forms';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\n\n@Component({\n selector: 'pep-date-filter',\n templateUrl: './date-filter.component.html',\n styleUrls: ['./date-filter.component.scss'],\n})\nexport class PepDateFilterComponent extends BaseFilterComponent implements OnInit {\n PepSmartFilterOperators = PepSmartFilterOperators;\n chooseTimeOptions: Array<IPepOption> = [];\n chooseTimeUnitOptions: Array<IPepOption> = [];\n operatorWidth: string;\n fieldsWidth: string;\n\n ngOnInit() {\n if (this.inline) {\n this.setControlsWidth();\n }\n }\n\n // Override\n getDefaultOperator(): IPepSmartFilterOperator {\n return PepSmartFilterOperators.InTheLast;\n }\n\n // Override\n getDefaultOperatorUnit(): IPepSmartFilterOperatorUnit {\n if (this.operator === PepSmartFilterOperators.InTheLast ||\n this.operator === PepSmartFilterOperators.NotInTheLast ||\n this.operator === PepSmartFilterOperators.DueIn ||\n this.operator === PepSmartFilterOperators.NotDueIn) {\n return PepSmartFilterOperatorUnits.Months;\n } else {\n return undefined;\n }\n }\n\n // Override\n getFilterValue(): IPepSmartFilterDataValue {\n const filterValue = {\n first: this.firstControl.value,\n };\n\n if (this.operator === PepSmartFilterOperators.DateRange) {\n filterValue['second'] = this.secondControl.value;\n }\n\n return filterValue;\n }\n\n // Override\n loadOperatorsOptions() {\n this.chooseTimeOptions = this.operators.map((operator) => {\n return {\n key: operator.id,\n value: this.translate.instant(\n `${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`\n ),\n };\n });\n\n this.chooseTimeUnitOptions = this.operatorUnits.map((operatorUnit) => {\n return {\n key: operatorUnit.id,\n value: this.translate.instant(\n `${this.OPERATOR_UNITS_TRANSLATION_PREFIX}.${operatorUnit.name}`\n ),\n };\n });\n }\n\n // Override\n setFieldsStateAndValidators(): void {\n this.firstControl.enable();\n\n if (this.operator === PepSmartFilterOperators.DateRange) {\n this.firstControl.setValidators(Validators.required);\n this.secondControl.enable();\n this.secondControl.setValidators(Validators.required);\n } else if (\n this.operator === PepSmartFilterOperators.InTheLast ||\n this.operator === PepSmartFilterOperators.NotInTheLast ||\n this.operator === PepSmartFilterOperators.DueIn ||\n this.operator === PepSmartFilterOperators.NotDueIn\n ) {\n this.firstControl.setValidators([\n Validators.required,\n this.validator.numberValidator(),\n ]);\n this.secondControl.disable();\n } else {\n // Disable 'first' field.\n if (\n this.operator === PepSmartFilterOperators.Today ||\n this.operator === PepSmartFilterOperators.ThisWeek ||\n this.operator === PepSmartFilterOperators.ThisMonth ||\n this.operator === PepSmartFilterOperators.IsEmpty ||\n this.operator === PepSmartFilterOperators.IsNotEmpty\n ) {\n this.firstControl.disable();\n }\n\n // Default disable 'second' field.\n super.setFieldsStateAndValidators();\n }\n }\n\n setControlsWidth() {\n if (\n this.operator === PepSmartFilterOperators.Today ||\n this.operator === PepSmartFilterOperators.ThisWeek ||\n this.operator === PepSmartFilterOperators.ThisMonth ||\n this.operator === PepSmartFilterOperators.IsEmpty ||\n this.operator === PepSmartFilterOperators.IsNotEmpty\n ) {\n this.operatorWidth = 'auto';\n this.fieldsWidth = '0%';\n } else if (this.operator === PepSmartFilterOperators.On) {\n this.operatorWidth = '38%';\n this.fieldsWidth = '62%';\n } else {\n this.operatorWidth = '30%';\n this.fieldsWidth = '70%';\n }\n }\n\n onOperatorChanged(value: string) {\n const operator = Object.values(PepSmartFilterOperators).find(\n (operator) => operator.id === value\n );\n\n this.operator = operator;\n this.operatorUnit = this.getDefaultOperatorUnit();\n if (this.inline) {\n this.setControlsWidth();\n }\n if (this._parentForm) {\n this.updateParentForm();\n }\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n onTimeUnitChanged(value: string) {\n const operatorUnit = Object.values(PepSmartFilterOperatorUnits).find(\n (operatorUnit) => operatorUnit.id === value\n );\n this.operatorUnit = operatorUnit;\n if (this._parentForm) {\n this.updateParentForm();\n }\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n onDateValueChanged() {\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n}\n","import {\n AfterViewInit,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { Component, OnInit } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n PepSmartFilterOperators,\n} from '../common/model/operator';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\nimport { IPepSmartFilterFieldOption } from '../common/model/field';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map, startWith } from 'rxjs/operators';\nimport { FormControl } from '@angular/forms';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\nimport { VirtualScrollerComponent } from 'ngx-virtual-scroller';\n\nclass PepMultiSelectFilterOption implements IPepSmartFilterFieldOption {\n value: string;\n count?: number;\n selected = false;\n}\n\n@Component({\n selector: 'pep-multi-select-filter',\n templateUrl: './multi-select-filter.component.html',\n styleUrls: ['./multi-select-filter.component.scss'],\n})\nexport class PepMultiSelectFilterComponent\n extends BaseFilterComponent\n implements OnInit, AfterViewInit {\n options: PepMultiSelectFilterOption[] = [];\n filteredOptions$: Observable<any>;\n searchControl = new FormControl();\n //inline props\n selected = '';\n inlineOptions: IPepOption[] = [];\n\n @ViewChild('optionsContainer')\n optionsContainer: ElementRef;\n\n private readonly MAX_OPTIONS_TO_SHOW = 6.35;\n @ViewChild(VirtualScrollerComponent)\n private virtualScroller: VirtualScrollerComponent;\n\n numberOptionsToShowSearch = 10;\n\n ngOnInit() {\n super.ngOnInit;\n\n if (this.inline) {\n this.inlineControlInit();\n } else {\n this.noneInlineControlInit();\n }\n }\n\n\n ngAfterViewInit(): void {\n // Calc for the first time.\n this.calcOptionsHeight(this.options.length);\n }\n\n private inlineControlInit() {\n //load options from field \n this.inlineOptions = this.field?.options?.length > 0 ? this.field.options as IPepOption[] : [];\n\n // Init the selected values from first value. \n if (this.firstControl?.value?.length > 0) {\n this.selected = this.firstControl.value.join(';');\n }\n }\n\n private noneInlineControlInit() {\n if (this.field.options?.length > 0) {\n this.options = this.field.options.map((opt) => {\n return { value: opt.value, count: opt.count, selected: false };\n });\n } else {\n this.searchControl.disable();\n }\n\n // Init the selected values from first value.\n const firstControl = this.firstControl;\n if (firstControl.value) {\n this.initOptionsSelectedValues(firstControl.value);\n }\n\n // Add subscription for the first value change to set the selected options.\n firstControl.valueChanges\n .pipe(this.getDestroyer(), distinctUntilChanged())\n .subscribe((selectedValues: string[]) => {\n this.initOptionsSelectedValues(selectedValues);\n });\n\n // Filter the options by the search control.\n this.filteredOptions$ = this.searchControl.valueChanges.pipe(\n this.getDestroyer(),\n startWith<any>(''),\n map((option) =>\n typeof option === 'string' ? option : option && option.value\n ),\n map((value) => (value ? this.filterOptions(value) : this.options))\n );\n\n // Each time the filter change.\n this.filteredOptions$.subscribe(\n (filterdOptions: PepMultiSelectFilterOption[]) => {\n this.calcOptionsHeight(filterdOptions.length);\n setTimeout(() => {\n // 8 is the padding top of the multi-select-options\n this.virtualScroller.scrollToPosition(-8);\n }, 125);\n }\n );\n\n }\n\n initOptionsSelectedValues(selectedValues: string[]): void {\n this.options.forEach((opt) => {\n const isValueSelected =\n selectedValues && selectedValues.includes(opt.value);\n opt.selected = isValueSelected;\n });\n }\n\n private calcOptionsHeight(optionsCount: number) {\n if (this.optionsContainer) {\n const optionsToShow =\n optionsCount > this.MAX_OPTIONS_TO_SHOW\n ? this.MAX_OPTIONS_TO_SHOW\n : optionsCount;\n // optionsToShow * 2.25 is 1 option height + 1 is the padding top & bottom of the container.\n const optionsHeight = optionsToShow * 2.25 + 1 + 'rem';\n\n this.renderer.setStyle(\n this.optionsContainer.nativeElement,\n 'height',\n optionsHeight\n );\n }\n }\n\n private filterOptions(value: string): any[] {\n const filterValue = value.toLowerCase();\n return this.options.filter(\n (opt) =>\n opt.value &&\n opt.value.toLowerCase().includes(filterValue.toLowerCase())\n );\n }\n\n // Override\n getDefaultOperator(): IPepSmartFilterOperator {\n return PepSmartFilterOperators.In;\n }\n\n // Override\n getFilterValue(): IPepSmartFilterDataValue {\n if (this.inline) {\n return {\n first: this.firstControl.value\n };\n } else {\n const selectedValues = this.options\n .filter((opt) => opt.selected)\n .map((opt) => opt.value);\n const filterValue = {\n first: selectedValues,\n };\n\n return selectedValues.length > 0 ? filterValue : null;\n }\n\n }\n\n // Override\n initFilter() {\n this.options.forEach((opt) => (opt.selected = false));\n this.searchControl.setValue('');\n }\n\n onOptionChange(\n option: PepMultiSelectFilterOption,\n event: MatCheckboxChange\n ) {\n option.selected = event.checked;\n this.firstControl.setValue(\n this.options.filter((opt) => opt.selected).map((opt) => opt.value),\n { emitEvent: false }\n );\n }\n\n onMultiSelectChanged(value: string) {\n if (value) {\n const selected: string[] = value.split(';');\n this.firstControl.setValue(selected);\n } else {\n this.firstControl.setValue(null);\n }\n\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n}\n","import { Component, OnChanges, OnInit } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n PepSmartFilterOperators,\n} from '../common/model/operator';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\nimport { Validators } from '@angular/forms';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\n@Component({\n selector: 'pep-number-filter',\n templateUrl: './number-filter.component.html',\n styleUrls: ['./number-filter.component.scss'],\n})\nexport class PepNumberFilterComponent extends BaseFilterComponent implements OnInit {\n PepSmartFilterOperators = PepSmartFilterOperators;\n chooseTypeOptions: Array<IPepOption> = [];\n operatorWidth = '38%';\n fieldsWidth = '70%';\n\n ngOnInit() {\n this.firstControl.valueChanges\n .pipe(this.getDestroyer(), distinctUntilChanged())\n .subscribe(() => {\n this.setFieldsStateAndValidators();\n });\n\n this.secondControl.valueChanges\n .pipe(this.getDestroyer(), distinctUntilChanged())\n .subscribe(() => {\n this.setFieldsStateAndValidators();\n });\n this.setControlsWidth();\n }\n\n // Override\n getDefaultOperator(): IPepSmartFilterOperator {\n return PepSmartFilterOperators.Equals;\n }\n\n // Override\n getFilterValue(): IPepSmartFilterDataValue {\n const filterValue = {\n first: this.firstControl.value,\n };\n\n if (this.operator === PepSmartFilterOperators.NumberRange) {\n filterValue['second'] = this.secondControl.value;\n }\n\n return filterValue;\n }\n\n // Override\n loadOperatorsOptions() {\n this.chooseTypeOptions = this.operators.map((operator) => {\n return {\n key: operator.id,\n value: this.translate.instant(\n `${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`\n ),\n };\n });\n }\n\n // Override\n setFieldsStateAndValidators(): void {\n if (this.operator === PepSmartFilterOperators.NumberRange) {\n const firstValidators = [Validators.required];\n if (this.secondControl.value) {\n firstValidators.push(this.validator.isLessThan(this.secondControl));\n }\n this.firstControl.setValidators(firstValidators);\n\n\n this.secondControl.enable();\n const secondValidators = [Validators.required];\n if (this.firstControl.value) {\n secondValidators.push(this.validator.isGreaterThan(this.firstControl));\n }\n this.secondControl.setValidators(secondValidators);\n } else {\n super.setFieldsStateAndValidators();\n }\n }\n\n setControlsWidth() {\n if (this.operator === PepSmartFilterOperators.NumberRange) {\n this.operatorWidth = '30%';\n this.fieldsWidth = '70%';\n } else {\n this.operatorWidth = '38%';\n this.fieldsWidth = '62%';\n }\n }\n\n onOperatorChanged(value: string) {\n const operator = Object.values(PepSmartFilterOperators).find(\n (operator) => operator.id === value\n );\n this.operator = operator;\n if (this._parentForm) {\n this.updateParentForm();\n }\n if (this.emitOnChange) {\n this.applyFilter();\n }\n this.setControlsWidth();\n }\n\n onValueChanged() {\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FlexLayoutModule } from '@angular/flex-layout';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatRadioModule } from '@angular/material/radio';\n\nimport { VirtualScrollerModule } from 'ngx-virtual-scroller';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport { PepCheckboxModule } from '@pepperi-addons/ngx-lib/checkbox';\nimport { PepDateModule } from '@pepperi-addons/ngx-lib/date';\nimport { PepSelectModule } from '@pepperi-addons/ngx-lib/select';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\nimport { PepSearchModule } from '@pepperi-addons/ngx-lib/search';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconNumberMinus,\n pepIconNumberPlus,\n} from '@pepperi-addons/ngx-lib/icon';\nimport { PepGroupButtonsModule } from '@pepperi-addons/ngx-lib/group-buttons';\n\n// import { BaseFilterComponent } from './common/model/base-filter-component';\nimport { PepSmartFiltersComponent } from './smart-filters.component';\nimport { PepFilterActionsComponent } from './common/filter-actions.component';\nimport { PepTextFilterComponent } from './text-filter/text-filter.component';\nimport { PepBooleanFilterComponent } from './boolean-filter/boolean-filter.component';\nimport { PepDateFilterComponent } from './date-filter/date-filter.component';\nimport { PepMultiSelectFilterComponent } from './multi-select-filter/multi-select-filter.component';\nimport { PepNumberFilterComponent } from './number-filter/number-filter.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FlexLayoutModule,\n // Material modules\n MatCommonModule,\n MatCheckboxModule,\n MatChipsModule,\n MatExpansionModule,\n MatIconModule,\n MatFormFieldModule,\n MatInputModule,\n MatRadioModule,\n // External modules\n VirtualScrollerModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepCheckboxModule,\n PepDateModule,\n PepSelectModule,\n PepTextboxModule,\n PepSearchModule,\n PepIconModule,\n PepButtonModule,\n PepGroupButtonsModule\n ],\n exports: [\n PepSmartFiltersComponent,\n PepTextFilterComponent,\n PepBooleanFilterComponent,\n PepDateFilterComponent,\n PepMultiSelectFilterComponent,\n PepNumberFilterComponent\n ],\n declarations: [\n // BaseFilterComponent,\n PepSmartFiltersComponent,\n PepFilterActionsComponent,\n PepTextFilterComponent,\n PepBooleanFilterComponent,\n PepDateFilterComponent,\n PepMultiSelectFilterComponent,\n PepNumberFilterComponent\n ],\n})\nexport class PepSmartFiltersModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconNumberMinus,\n pepIconNumberPlus,\n ]);\n }\n}\n","import {\n IPepSmartFilterOperator,\n IPepSmartFilterOperatorUnit,\n} from './operator';\nimport {\n PepSmartFilterComponentType,\n PepSmartFilterType,\n PepSmartFilterOperatorType,\n PepSmartFilterOperatorUnitType,\n} from './type';\n\nexport interface IPepSmartFilterFieldOption {\n value: string;\n count?: number;\n}\n\nexport interface IPepSmartFilterField {\n id: string;\n name: string;\n isOpen?: boolean;\n options?: IPepSmartFilterFieldOption[];\n operators?: PepSmartFilterOperatorType[];\n operatorUnits?: PepSmartFilterOperatorUnitType[];\n}\n\n// Base field\n// ------------------------------\nexport abstract class PepSmartFilterBaseField implements IPepSmartFilterField {\n id: string;\n name: string;\n isOpen?: boolean;\n options?: IPepSmartFilterFieldOption[];\n operators?: PepSmartFilterOperatorType[];\n operatorUnits?: PepSmartFilterOperatorUnitType[];\n\n protected _componentType: PepSmartFilterComponentType;\n get componentType(): PepSmartFilterComponentType {\n return this._componentType;\n }\n\n private _type: PepSmartFilterType;\n get type(): PepSmartFilterType {\n return this._type;\n }\n\n constructor(field: IPepSmartFilterField) {\n this.id = field.id;\n this.name = field.name;\n this.isOpen = field.isOpen;\n this.options = field.options;\n this.operators = field.operators;\n this.operatorUnits = field.operatorUnits;\n\n this._type = this.getType();\n }\n\n protected abstract getType(): PepSmartFilterType;\n}\n// Text field\n// ------------------------------\nexport class PepSmartFilterTextField extends PepSmartFilterBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n this._componentType = 'text';\n }\n\n getType(): PepSmartFilterType {\n return 'text';\n }\n}\n\n\n// Boolean field\n// ------------------------------\nexport class PepSmartFilterBooleanField extends PepSmartFilterBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n this._componentType = 'boolean';\n }\n\n getType(): PepSmartFilterType {\n return 'boolean';\n }\n}\n\n// Date fields\n// ------------------------------\nexport abstract class PepSmartFilterDateBaseField extends PepSmartFilterBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n this._componentType = 'date';\n }\n}\nexport class PepSmartFilterDateField extends PepSmartFilterDateBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'date';\n }\n}\nexport class PepSmartFilterDateTimeField extends PepSmartFilterDateBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'date-time';\n }\n}\n\n// Multi select field\n// ------------------------------\nexport class PepSmartFilterMultiSelectField extends PepSmartFilterBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n this._componentType = 'multi-select';\n }\n\n getType(): PepSmartFilterType {\n return 'multi-select';\n }\n}\n\n// Number fields\n// ------------------------------\nexport abstract class PepSmartFilterNumberBaseField extends PepSmartFilterBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n this._componentType = 'number';\n }\n}\nexport class PepSmartFilterIntField extends PepSmartFilterNumberBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'int';\n }\n}\nexport class PepSmartFilterRealField extends PepSmartFilterNumberBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'real';\n }\n}\nexport class PepSmartFilterCurrencyField extends PepSmartFilterNumberBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'currency';\n }\n}\nexport class PepSmartFilterPercentageField extends PepSmartFilterNumberBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'percentage';\n }\n}\n","import {\n IPepSmartFilterField,\n PepSmartFilterBaseField,\n PepSmartFilterTextField,\n PepSmartFilterBooleanField,\n PepSmartFilterDateField,\n PepSmartFilterMultiSelectField,\n PepSmartFilterIntField,\n PepSmartFilterDateTimeField,\n PepSmartFilterPercentageField,\n PepSmartFilterCurrencyField,\n PepSmartFilterRealField,\n} from './field';\nimport { IPepSmartFilterData } from './filter';\nimport { IPepSmartFilterOperator, IPepSmartFilterOperatorUnit } from './operator';\nimport { PepSmartFilterType } from './type';\n\nfunction createTextSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterTextField(data);\n}\n\nfunction createBooleanSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterBooleanField(data);\n}\n\nfunction createDateSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterDateField(data);\n}\n\nfunction createDateTimeSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterDateTimeField(data);\n}\n\nfunction createMultiSelectSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterMultiSelectField(data);\n}\n\nfunction createIntSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterIntField(data);\n}\n\nfunction createRealSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterRealField(data);\n}\n\nfunction createCurrencySmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterCurrencyField(data);\n}\n\nfunction createPercentageSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterPercentageField(data);\n}\n\nexport function createSmartFilterField(\n data: IPepSmartFilterField,\n type: PepSmartFilterType\n): PepSmartFilterBaseField {\n let field: PepSmartFilterBaseField;\n\n switch (type) {\n case 'text':\n field = createTextSmartFilterField(data);\n break;\n case 'boolean':\n field = createBooleanSmartFilterField(data);\n break;\n case 'date':\n field = createDateSmartFilterField(data);\n break;\n case 'date-time':\n field = createDateTimeSmartFilterField(data);\n break;\n case 'multi-select':\n field = createMultiSelectSmartFilterField(data);\n break;\n case 'int':\n field = createIntSmartFilterField(data);\n break;\n case 'real':\n field = createRealSmartFilterField(data);\n break;\n case 'currency':\n field = createCurrencySmartFilterField(data);\n break;\n case 'percentage':\n field = createPercentageSmartFilterField(data);\n break;\n default:\n field = createMultiSelectSmartFilterField(data);\n break;\n }\n\n return field;\n}\n\nexport function createSmartFilter(\n fieldId: string,\n operator: IPepSmartFilterOperator,\n first: any,\n second?: any,\n operatorUnit?: IPepSmartFilterOperatorUnit\n): IPepSmartFilterData {\n return {\n fieldId: fieldId,\n operator: operator,\n operatorUnit: operatorUnit,\n value: {\n first: first,\n second: second,\n },\n };\n}","/*\n * Public API Surface of ngx-lib/smart-filters\n */\nexport * from './smart-filters.module';\nexport * from './smart-filters.component';\nexport * from './common/model/base-filter-component';\nexport * from './common/filter-actions.component';\nexport * from './boolean-filter/boolean-filter.component';\nexport * from './date-filter/date-filter.component';\nexport * from './multi-select-filter/multi-select-filter.component';\nexport * from './number-filter/number-filter.component';\nexport * from './text-filter/text-filter.component';\n\n// Model\nexport * from './common/model/creator';\nexport * from './common/model/field';\nexport * from './common/model/filter';\nexport * from './common/model/operator';\nexport * from './common/model/type';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,7 @@ class PepTextareaComponent {
|
|
|
34
34
|
this.form = null;
|
|
35
35
|
this.isActive = false;
|
|
36
36
|
this.showTitle = true;
|
|
37
|
+
this.renderTitle = true;
|
|
37
38
|
this._layoutType = 'form';
|
|
38
39
|
this.valueChange = new EventEmitter();
|
|
39
40
|
this.fieldHeight = '';
|
|
@@ -86,6 +87,9 @@ class PepTextareaComponent {
|
|
|
86
87
|
this.setFieldHeight();
|
|
87
88
|
this.setDefaultForm();
|
|
88
89
|
this.renderer.addClass(this.element.nativeElement, PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME);
|
|
90
|
+
if (!this.renderTitle) {
|
|
91
|
+
this.renderer.addClass(this.element.nativeElement, PepCustomizationService.STAND_ALONE_FIELD_NO_SPACING_CLASS_NAME);
|
|
92
|
+
}
|
|
89
93
|
}
|
|
90
94
|
}
|
|
91
95
|
ngOnChanges(changes) {
|
|
@@ -135,9 +139,9 @@ class PepTextareaComponent {
|
|
|
135
139
|
PepTextareaComponent.decorators = [
|
|
136
140
|
{ type: Component, args: [{
|
|
137
141
|
selector: 'pep-textarea',
|
|
138
|
-
template: "<ng-container [formGroup]=\"form\">\n <ng-template #pepTemplate let-isFormView=\"isFormView\">\n <div class=\"pep-textarea-container\" [ngClass]=\"{ 'stand-alone': standAlone,\n 'right-alignment': xAlignment == 'right', 'one-row': rowSpan === 1,\n 'pep-textarea-card-container': layoutType === 'card'}\">\n <pep-field-title *ngIf=\"isFormView\" [label]=\"label\" [mandatory]=\"mandatory\"
|
|
142
|
+
template: "<ng-container [formGroup]=\"form\">\n <ng-template #pepTemplate let-isFormView=\"isFormView\">\n <div class=\"pep-textarea-container\" [ngClass]=\"{ 'stand-alone': standAlone,\n 'right-alignment': xAlignment == 'right', 'one-row': rowSpan === 1,\n 'pep-textarea-card-container': layoutType === 'card'}\">\n <pep-field-title *ngIf=\"renderTitle && isFormView\" [label]=\"label\" [mandatory]=\"mandatory\"\n [disabled]=\"disabled\" [maxFieldCharacters]=\"disabled || readonly ? 0 : maxFieldCharacters\"\n [xAlignment]=\"xAlignment\" [showTitle]=\"showTitle\" [inputLength]=\"input.value?.length\">\n </pep-field-title>\n <mat-form-field appearance=\"outline\" dir=\"{{ xAlignment == 'right' ? 'rtl' : 'ltr' }}\"\n [ngClass]=\"{ 'pep-table-textarea': layoutType === 'table' }\">\n <textarea #input [hidden]=\"readonly\" [id]=\"key\" class=\"body-sm\" matInput (blur)=\"onBlur($event)\"\n title=\"{{ value }}\" [value]=\"value\"\n maxlength=\"{{ maxFieldCharacters > 0 ? maxFieldCharacters : 99999 }}\"\n [ngStyle]=\"{ color: textColor, 'text-align': xAlignment == 'right' ? 'right' : 'left' }\"\n [formControlName]=\"key\" [style.height]=\"fieldHeight\">\n </textarea>\n <div *ngIf=\"readonly\" class=\"body-sm disable-text-div\" title=\"{{ value }}\"\n [ngStyle]=\"{ color: textColor, 'text-align': xAlignment == 'right' ? 'right' : 'left' }\"\n [innerHtml]=\"value | pepSafeHtml\" [style.height]=\"fieldHeight\">\n </div>\n <!-- <pep-textbox-icon *ngIf=\"xAlignment == 'right'\" matPrefix [value]=\"value\" [label]=\"label\" [type]=\"controlType\" [disabled]=\"disabled\"\n [ngClass]=\"{ 'card-one-row-icon': layoutType === 'card' && rowSpan === 1 }\" (iconClick)=\"openDialog()\">\n </pep-textbox-icon> -->\n <pep-textbox-icon matSuffix [value]=\"value\" [label]=\"label\" [type]=\"controlType\"\n [disabled]=\"disabled || readonly\"\n [ngClass]=\"{ 'card-one-row-icon': layoutType === 'card' && rowSpan === 1 }\"\n (iconClick)=\"openDialog()\">\n </pep-textbox-icon>\n <mat-error>\n <span class=\"body-xs\"\n [title]=\"mandatory && value.length == 0 ? ('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label }) : ('MESSAGES.ERROR_IS_NOT_VALID' | translate: { field: label })\"\n [innerText]=\"mandatory && value.length == 0 ? ('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label }) : ('MESSAGES.ERROR_IS_NOT_VALID' | translate: { field: label })\"></span>\n </mat-error>\n </mat-form-field>\n </div>\n </ng-template>\n\n <ng-container *ngIf=\"layoutType === 'form'\">\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: true }\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"layoutType === 'card'\">\n <ng-container *ngIf=\"isInEditMode; then editBlock; else readOnlyBlock\"></ng-container>\n <ng-template #editBlock>\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: false }\"></ng-container>\n </ng-template>\n <ng-template #readOnlyBlock>\n <div class=\"pep-textarea-card-container card-flex-container\"\n [ngClass]=\"{'one-row': rowSpan === 1, 'pep-button weak': isActive && !disabled}\"\n [ngStyle]=\"{ color: textColor, '-webkit-line-clamp': rowSpan }\" [class]=\"'text-align-' + xAlignment\"\n (click)=\"!disabled ? cardTemplateClicked($event) : ''\" [style.height]=\"fieldHeight\">\n <span *ngIf=\" showTitle && label !=''\" class=\" body-xs title no-shrink\" title=\"{{ label }}\">{{ label\n }} </span>\n <span [id]=\"key\" title=\"{{ value }}\" class=\"body-sm value wrap\">{{ value }}</span>\n <button *ngIf=\"isActive && !disabled\" class=\"pep-button weak card-edit-button self-start\"\n [ngClass]=\"{'self-end' : value && value !== ''}\" mat-button>\n <mat-icon>\n <pep-icon name=\"system_edit\">\n </pep-icon>\n </mat-icon>\n </button>\n </div>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"layoutType === 'table'\">\n <ng-container *ngIf=\"isActive && !disabled; then selectedBlock; else notSelectedBlock\"></ng-container>\n <ng-template #selectedBlock>\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: false }\"></ng-container>\n </ng-template>\n <ng-template #notSelectedBlock>\n <ng-container *ngIf=\"value?.length > 0; then notEmptyBlock; else emptyBlock\"></ng-container>\n <ng-template #notEmptyBlock>\n <mat-form-field appearance=\"outline\" dir=\"{{ xAlignment == 'right' ? 'rtl' : 'ltr' }}\"\n class=\"pep-report-textarea\" [ngClass]=\"{ readonly: disabled }\">\n <input matInput [id]=\"key\" class=\"body-sm pep-report-input\" [ngClass]=\"{ readonly: disabled}\"\n [ngStyle]=\"{ color: textColor, 'text-align': xAlignment == 'center' ? 'center' : xAlignment == 'right' ? 'right' : 'left' }\"\n title=\"{{ value }}\" [formControlName]=\"key\" type=\"text\" [value]=\"value\" [disabled]=\"true\" />\n <pep-textbox-icon *ngIf=\"disabled && xAlignment == 'right'\" matPrefix [value]=\"value\"\n [label]=\"label\" [type]=\"controlType\" [disabled]=\"disabled\" (iconClick)=\"openDialog()\">\n </pep-textbox-icon>\n <pep-textbox-icon *ngIf=\"disabled && (xAlignment == 'left')\" matSuffix [value]=\"value\"\n [label]=\"label\" [type]=\"controlType\" [disabled]=\"disabled\" (iconClick)=\"openDialog()\">\n </pep-textbox-icon>\n </mat-form-field>\n </ng-template>\n <ng-template #emptyBlock>\n <span> </span>\n </ng-template>\n </ng-template>\n </ng-container>\n</ng-container>\n\n<ng-template #textAreaDialogTemplate>\n <pep-dialog class=\"dialog-textarea-container\" [title]=\"label\">\n <ng-container pep-dialog-content>\n <textarea #dialogTextarea [readonly]=\"disabled || readonly\">{{ value }}</textarea>\n </ng-container>\n <div pep-dialog-actions class=\"pep-spacing-element-negative\">\n <ng-container *ngIf=\"disabled || readonly; then notEditableBlock; else editableBlock\">\n </ng-container>\n <ng-template #editableBlock>\n <button mat-button (click)=\"closeDialog()\" class=\"pep-spacing-element pep-button md weak\">\n {{ 'ACTIONS.CANCEL' | translate }}\n </button>\n <button mat-button class=\"pep-spacing-element pep-button md strong\"\n (click)=\"closeDialog(dialogTextarea.value)\">\n {{ 'ACTIONS.SAVE' | translate }}\n </button>\n </ng-template>\n <ng-template #notEditableBlock>\n <button mat-button (click)=\"closeDialog()\" class=\"pep-spacing-element pep-button md weak\">\n {{ 'ACTIONS.CLOSE' | translate }}\n </button>\n </ng-template>\n </div>\n </pep-dialog>\n</ng-template>",
|
|
139
143
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
140
|
-
styles: [":host{height:inherit;display:grid}:host>*{align-self:center}.disable-text-div{display:inline-block;vertical-align:middle;margin:0;padding:.5rem 1.5rem .5rem 0;overflow-y:hidden}.right-alignment .disable-text-div{padding:.5rem 0 .5rem 1.5rem}.dialog-textarea-container textarea{border:none;resize:none;width:25rem;height:13rem}.dialog-textarea-container textarea:focus{outline:none}"]
|
|
144
|
+
styles: [".pep-textarea-container,.pepperi-textarea-container{height:inherit;display:grid;align-items:center}.pep-textarea-container ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-flex,.pepperi-textarea-container ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-flex{display:flex}.pep-textarea-container ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-infix,.pepperi-textarea-container ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-infix{line-height:unset;width:100%;height:100%;overflow:hidden;display:grid!important}.pep-textarea-container ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-input-element,.pepperi-textarea-container ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-input-element{margin:0;padding:.5rem 1.5rem .5rem 0;vertical-align:unset;resize:none;width:calc(100% + 3rem);max-width:unset;overflow-y:scroll;box-sizing:border-box}.pep-textarea-container ::ng-deep .mat-form-field .mat-form-field-prefix,.pep-textarea-container ::ng-deep .mat-form-field .mat-form-field-suffix,.pepperi-textarea-container ::ng-deep .mat-form-field .mat-form-field-prefix,.pepperi-textarea-container ::ng-deep .mat-form-field .mat-form-field-suffix{align-self:flex-end!important;margin-bottom:.5rem}.pep-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-infix .mat-input-element,.pepperi-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-infix .mat-input-element{padding-top:.35rem}.pep-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-prefix,.pep-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-suffix,.pepperi-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-prefix,.pepperi-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-suffix{align-self:center!important;margin-bottom:unset}.pep-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-prefix .card-one-row-icon .pep-button,.pep-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-prefix .card-one-row-icon .pepperi-button,.pep-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-suffix .card-one-row-icon .pep-button,.pep-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-suffix .card-one-row-icon .pepperi-button,.pepperi-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-prefix .card-one-row-icon .pep-button,.pepperi-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-prefix .card-one-row-icon .pepperi-button,.pepperi-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-suffix .card-one-row-icon .pep-button,.pepperi-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-suffix .card-one-row-icon .pepperi-button{width:1rem!important;height:1rem!important}.pep-textarea-container.one-row ::ng-deep .mat-form-field.pep-table-textarea .mat-input-element,.pep-textarea-container.one-row ::ng-deep .mat-form-field.pepperi-table-textarea .mat-input-element,.pepperi-textarea-container.one-row ::ng-deep .mat-form-field.pep-table-textarea .mat-input-element,.pepperi-textarea-container.one-row ::ng-deep .mat-form-field.pepperi-table-textarea .mat-input-element{padding-top:.135rem!important}.pep-textarea-container .rich-text-cont,.pepperi-textarea-container .rich-text-cont{overflow-x:hidden;display:inline-block;vertical-align:unset;margin:0;padding:.5rem 1.5rem .5rem 0;resize:none;width:calc(100% + 3rem);max-width:unset;overflow-y:scroll;box-sizing:border-box}.pep-textarea-container.right-alignment ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-input-element,.pepperi-textarea-container.right-alignment ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-input-element{padding:.5rem 0 .5rem 1.5rem}.pep-textarea-container.right-alignment .rich-text-cont,.pepperi-textarea-container.right-alignment .rich-text-cont{padding:.5rem 0 .5rem 1.5rem}.pep-textarea-card-container ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-flex,.pepperi-textarea-card-container ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-flex{padding-left:.5rem;padding-right:.5rem}.pep-textarea-card-container ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-flex .mat-input-element,.pepperi-textarea-card-container ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-flex .mat-input-element{padding:.25rem 1.5rem .5rem 0}.pep-textarea-card-container.card-flex-container,.pepperi-textarea-card-container.card-flex-container{height:inherit;display:flex;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;white-space:unset;padding:.25rem}.pep-textarea-card-container.card-flex-container.one-row .title,.pepperi-textarea-card-container.card-flex-container.one-row .title{padding-top:.25rem}.pep-textarea-card-container.card-flex-container span.value,.pepperi-textarea-card-container.card-flex-container span.value{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;white-space:unset}.pep-textarea-card-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-infix,.pepperi-textarea-card-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-infix{line-height:0!important}.pep-textarea-card-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-infix .mat-input-element,.pepperi-textarea-card-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-infix .mat-input-element{padding-top:0;padding-bottom:0}.pep-textarea-card-container.right-alignment ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-input-element,.pepperi-textarea-card-container.right-alignment ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-input-element{padding:.25rem 0 .5rem 1.5rem}.pep-report-textarea .mat-form-field-suffix,.pepperi-report-textarea .mat-form-field-suffix{right:0!important}.pep-report-textarea.readonly .mat-form-field-wrapper .mat-form-field-flex,.pepperi-report-textarea.readonly .mat-form-field-wrapper .mat-form-field-flex{padding:0}:host{height:inherit;display:grid}:host>*{align-self:center}.disable-text-div{display:inline-block;vertical-align:middle;margin:0;padding:.5rem 1.5rem .5rem 0;overflow-y:hidden}.right-alignment .disable-text-div{padding:.5rem 0 .5rem 1.5rem}.dialog-textarea-container textarea{border:none;resize:none;width:25rem;height:13rem}.dialog-textarea-container textarea:focus{outline:none}", ".pep-textarea-container,.pepperi-textarea-container{height:inherit;display:grid;align-items:center}.pep-textarea-container ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-flex,.pepperi-textarea-container ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-flex{display:flex}.pep-textarea-container ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-infix,.pepperi-textarea-container ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-infix{line-height:unset;width:100%;height:100%;overflow:hidden;display:grid!important}.pep-textarea-container ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-input-element,.pepperi-textarea-container ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-input-element{margin:0;padding:.5rem 1.5rem .5rem 0;vertical-align:unset;resize:none;width:calc(100% + 3rem);max-width:unset;overflow-y:scroll;box-sizing:border-box}.pep-textarea-container ::ng-deep .mat-form-field .mat-form-field-prefix,.pep-textarea-container ::ng-deep .mat-form-field .mat-form-field-suffix,.pepperi-textarea-container ::ng-deep .mat-form-field .mat-form-field-prefix,.pepperi-textarea-container ::ng-deep .mat-form-field .mat-form-field-suffix{align-self:flex-end!important;margin-bottom:.5rem}.pep-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-infix .mat-input-element,.pepperi-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-infix .mat-input-element{padding-top:.35rem}.pep-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-prefix,.pep-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-suffix,.pepperi-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-prefix,.pepperi-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-suffix{align-self:center!important;margin-bottom:unset}.pep-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-prefix .card-one-row-icon .pep-button,.pep-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-prefix .card-one-row-icon .pepperi-button,.pep-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-suffix .card-one-row-icon .pep-button,.pep-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-suffix .card-one-row-icon .pepperi-button,.pepperi-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-prefix .card-one-row-icon .pep-button,.pepperi-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-prefix .card-one-row-icon .pepperi-button,.pepperi-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-suffix .card-one-row-icon .pep-button,.pepperi-textarea-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-suffix .card-one-row-icon .pepperi-button{width:1rem!important;height:1rem!important}.pep-textarea-container.one-row ::ng-deep .mat-form-field.pep-table-textarea .mat-input-element,.pep-textarea-container.one-row ::ng-deep .mat-form-field.pepperi-table-textarea .mat-input-element,.pepperi-textarea-container.one-row ::ng-deep .mat-form-field.pep-table-textarea .mat-input-element,.pepperi-textarea-container.one-row ::ng-deep .mat-form-field.pepperi-table-textarea .mat-input-element{padding-top:.135rem!important}.pep-textarea-container .rich-text-cont,.pepperi-textarea-container .rich-text-cont{overflow-x:hidden;display:inline-block;vertical-align:unset;margin:0;padding:.5rem 1.5rem .5rem 0;resize:none;width:calc(100% + 3rem);max-width:unset;overflow-y:scroll;box-sizing:border-box}.pep-textarea-container.right-alignment ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-input-element,.pepperi-textarea-container.right-alignment ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-input-element{padding:.5rem 0 .5rem 1.5rem}.pep-textarea-container.right-alignment .rich-text-cont,.pepperi-textarea-container.right-alignment .rich-text-cont{padding:.5rem 0 .5rem 1.5rem}.pep-textarea-card-container ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-flex,.pepperi-textarea-card-container ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-flex{padding-left:.5rem;padding-right:.5rem}.pep-textarea-card-container ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-flex .mat-input-element,.pepperi-textarea-card-container ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-flex .mat-input-element{padding:.25rem 1.5rem .5rem 0}.pep-textarea-card-container.card-flex-container,.pepperi-textarea-card-container.card-flex-container{height:inherit;display:flex;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;white-space:unset;padding:.25rem}.pep-textarea-card-container.card-flex-container.one-row .title,.pepperi-textarea-card-container.card-flex-container.one-row .title{padding-top:.25rem}.pep-textarea-card-container.card-flex-container span.value,.pepperi-textarea-card-container.card-flex-container span.value{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;white-space:unset}.pep-textarea-card-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-infix,.pepperi-textarea-card-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-infix{line-height:0!important}.pep-textarea-card-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-infix .mat-input-element,.pepperi-textarea-card-container.one-row ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-form-field-infix .mat-input-element{padding-top:0;padding-bottom:0}.pep-textarea-card-container.right-alignment ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-input-element,.pepperi-textarea-card-container.right-alignment ::ng-deep .mat-form-field .mat-form-field-wrapper .mat-input-element{padding:.25rem 0 .5rem 1.5rem}.pep-report-textarea .mat-form-field-suffix,.pepperi-report-textarea .mat-form-field-suffix{right:0!important}.pep-report-textarea.readonly .mat-form-field-wrapper .mat-form-field-flex,.pepperi-report-textarea.readonly .mat-form-field-wrapper .mat-form-field-flex{padding:0}.pep-report-textarea ::ng-deep.mat-form-field-flex,.pepperi-report-textarea ::ng-deep.mat-form-field-flex{background:transparent!important}"]
|
|
141
145
|
},] }
|
|
142
146
|
];
|
|
143
147
|
PepTextareaComponent.ctorParameters = () => [
|
|
@@ -161,6 +165,7 @@ PepTextareaComponent.propDecorators = {
|
|
|
161
165
|
form: [{ type: Input }],
|
|
162
166
|
isActive: [{ type: Input }],
|
|
163
167
|
showTitle: [{ type: Input }],
|
|
168
|
+
renderTitle: [{ type: Input }],
|
|
164
169
|
layoutType: [{ type: Input }],
|
|
165
170
|
valueChange: [{ type: Output }],
|
|
166
171
|
textAreaDialogTemplate: [{ type: ViewChild, args: ['textAreaDialogTemplate', { read: TemplateRef },] }]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pepperi-addons-ngx-lib-textarea.js","sources":["../../../projects/ngx-lib/textarea/textarea.component.ts","../../../projects/ngx-lib/textarea/textarea.module.ts","../../../projects/ngx-lib/textarea/public-api.ts","../../../projects/ngx-lib/textarea/pepperi-addons-ngx-lib-textarea.ts"],"sourcesContent":["import {\n Component,\n OnInit,\n OnChanges,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ElementRef,\n ViewChild,\n OnDestroy,\n Renderer2,\n TemplateRef,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport {\n PepLayoutType,\n PepCustomizationService,\n PepHorizontalAlignment,\n DEFAULT_HORIZONTAL_ALIGNMENT,\n PepTextareaField,\n} from '@pepperi-addons/ngx-lib';\nimport { PepDialogService } from '@pepperi-addons/ngx-lib/dialog';\n\n@Component({\n selector: 'pep-textarea',\n templateUrl: './textarea.component.html',\n styleUrls: ['./textarea.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepTextareaComponent implements OnChanges, OnInit, OnDestroy {\n @Input() key = '';\n @Input() value = '';\n @Input() label = '';\n @Input() mandatory = false;\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() maxFieldCharacters: number;\n @Input() textColor = '';\n @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\n\n private _rowSpan = 1;\n @Input()\n set rowSpan(value) {\n this._rowSpan = value;\n this.setFieldHeight();\n }\n get rowSpan(): number {\n return this._rowSpan;\n }\n\n private _visible = true;\n @Input()\n set visible(visible: boolean) {\n this._visible = visible;\n if (visible) {\n this.renderer.removeClass(\n this.element.nativeElement,\n 'hidden-element'\n );\n } else {\n this.renderer.addClass(\n this.element.nativeElement,\n 'hidden-element'\n );\n }\n }\n get visible(): boolean {\n return this._visible;\n }\n\n // @Input() lastFocusField: any;\n\n controlType = 'textarea';\n\n @Input() form: FormGroup = null;\n @Input() isActive = false;\n @Input() showTitle = true;\n\n private _layoutType: PepLayoutType = 'form';\n @Input()\n set layoutType(value: PepLayoutType) {\n this._layoutType = value;\n this.setFieldHeight();\n }\n get layoutType(): PepLayoutType {\n return this._layoutType;\n }\n\n @Output()\n valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n // @ViewChild('input') input: ElementRef;\n @ViewChild('textAreaDialogTemplate', { read: TemplateRef })\n textAreaDialogTemplate: TemplateRef<any>;\n\n fieldHeight = '';\n standAlone = false;\n isInEditMode = false;\n\n dialogRef: MatDialogRef<any>;\n\n constructor(\n private dialogService: PepDialogService,\n private customizationService: PepCustomizationService,\n private renderer: Renderer2,\n private element: ElementRef\n ) {}\n\n private setFieldHeight(): void {\n this.fieldHeight = this.customizationService.calculateFieldHeight(\n this.layoutType,\n this.rowSpan,\n this.standAlone\n );\n }\n\n private setDefaultForm(): void {\n const pepField = new PepTextareaField({\n key: this.key,\n value: this.value,\n mandatory: this.mandatory,\n readonly: this.readonly,\n disabled: this.disabled,\n maxFieldCharacters: this.maxFieldCharacters,\n });\n this.form = this.customizationService.getDefaultFromGroup(pepField);\n }\n\n ngOnInit(): void {\n if (this.form === null) {\n this.standAlone = true;\n this.setFieldHeight();\n this.setDefaultForm();\n\n this.renderer.addClass(\n this.element.nativeElement,\n PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME\n );\n }\n }\n\n ngOnChanges(changes: any): void {\n if (this.standAlone) {\n this.setDefaultForm();\n }\n }\n\n ngOnDestroy(): void {\n //\n }\n\n onBlur(event: any): void {\n const value = event.target ? event.target.value : event;\n this.changeValue(value);\n\n setTimeout(() => {\n if (this.isInEditMode) {\n this.isInEditMode = false;\n }\n }, 0);\n }\n\n changeValue(value: any): void {\n if (value !== this.value) {\n this.value = value;\n this.customizationService.updateFormFieldValue(\n this.form,\n this.key,\n value\n );\n this.valueChange.emit(value);\n }\n }\n\n cardTemplateClicked(event: any): void {\n this.openDialog();\n }\n\n openDialog(): void {\n const config = this.dialogService.getDialogConfig(\n {\n // maxWidth: '90vw',\n // maxHeight: '90vh'\n },\n 'regular'\n );\n\n this.dialogRef = this.dialogService.openDialog(\n this.textAreaDialogTemplate,\n {},\n config\n );\n\n this.dialogRef.afterClosed().subscribe((value) => {\n if (value !== undefined && value !== null) {\n this.changeValue(value);\n }\n });\n }\n\n closeDialog(data: any = null): void {\n this.dialogRef?.close(data);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatDialogModule } from '@angular/material/dialog';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconSystemEdit,\n pepIconSystemClose,\n} from '@pepperi-addons/ngx-lib/icon';\nimport { PepTextboxIconModule } from '@pepperi-addons/ngx-lib/textbox-icon';\nimport { PepFieldTitleModule } from '@pepperi-addons/ngx-lib/field-title';\nimport { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';\n\nimport { PepTextareaComponent } from './textarea.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n // Material modules,\n MatCommonModule,\n MatButtonModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatDialogModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepIconModule,\n PepFieldTitleModule,\n PepTextboxIconModule,\n PepDialogModule,\n ],\n exports: [PepTextareaComponent],\n declarations: [PepTextareaComponent],\n})\nexport class PepTextareaModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconSystemEdit,\n pepIconSystemClose,\n ]);\n }\n}\n","/*\n * Public API Surface of ngx-lib/textarea\n */\nexport * from './textarea.module';\nexport * from './textarea.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pepperi-addons-ngx-lib-textarea.js","sources":["../../../projects/ngx-lib/textarea/textarea.component.ts","../../../projects/ngx-lib/textarea/textarea.module.ts","../../../projects/ngx-lib/textarea/public-api.ts","../../../projects/ngx-lib/textarea/pepperi-addons-ngx-lib-textarea.ts"],"sourcesContent":["import {\n Component,\n OnInit,\n OnChanges,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ElementRef,\n ViewChild,\n OnDestroy,\n Renderer2,\n TemplateRef,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport {\n PepLayoutType,\n PepCustomizationService,\n PepHorizontalAlignment,\n DEFAULT_HORIZONTAL_ALIGNMENT,\n PepTextareaField,\n} from '@pepperi-addons/ngx-lib';\nimport { PepDialogService } from '@pepperi-addons/ngx-lib/dialog';\n\n@Component({\n selector: 'pep-textarea',\n templateUrl: './textarea.component.html',\n styleUrls: ['./textarea.component.scss', './textarea.component.theme.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepTextareaComponent implements OnChanges, OnInit, OnDestroy {\n @Input() key = '';\n @Input() value = '';\n @Input() label = '';\n @Input() mandatory = false;\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() maxFieldCharacters: number;\n @Input() textColor = '';\n @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\n\n private _rowSpan = 1;\n @Input()\n set rowSpan(value) {\n this._rowSpan = value;\n this.setFieldHeight();\n }\n get rowSpan(): number {\n return this._rowSpan;\n }\n\n private _visible = true;\n @Input()\n set visible(visible: boolean) {\n this._visible = visible;\n if (visible) {\n this.renderer.removeClass(\n this.element.nativeElement,\n 'hidden-element'\n );\n } else {\n this.renderer.addClass(\n this.element.nativeElement,\n 'hidden-element'\n );\n }\n }\n get visible(): boolean {\n return this._visible;\n }\n\n // @Input() lastFocusField: any;\n\n controlType = 'textarea';\n\n @Input() form: FormGroup = null;\n @Input() isActive = false;\n @Input() showTitle = true;\n @Input() renderTitle = true;\n\n private _layoutType: PepLayoutType = 'form';\n @Input()\n set layoutType(value: PepLayoutType) {\n this._layoutType = value;\n this.setFieldHeight();\n }\n get layoutType(): PepLayoutType {\n return this._layoutType;\n }\n\n @Output()\n valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n // @ViewChild('input') input: ElementRef;\n @ViewChild('textAreaDialogTemplate', { read: TemplateRef })\n textAreaDialogTemplate: TemplateRef<any>;\n\n fieldHeight = '';\n standAlone = false;\n isInEditMode = false;\n\n dialogRef: MatDialogRef<any>;\n\n constructor(\n private dialogService: PepDialogService,\n private customizationService: PepCustomizationService,\n private renderer: Renderer2,\n private element: ElementRef\n ) { }\n\n private setFieldHeight(): void {\n this.fieldHeight = this.customizationService.calculateFieldHeight(\n this.layoutType,\n this.rowSpan,\n this.standAlone\n );\n }\n\n private setDefaultForm(): void {\n const pepField = new PepTextareaField({\n key: this.key,\n value: this.value,\n mandatory: this.mandatory,\n readonly: this.readonly,\n disabled: this.disabled,\n maxFieldCharacters: this.maxFieldCharacters,\n });\n this.form = this.customizationService.getDefaultFromGroup(pepField);\n }\n\n ngOnInit(): void {\n if (this.form === null) {\n this.standAlone = true;\n this.setFieldHeight();\n this.setDefaultForm();\n\n this.renderer.addClass(\n this.element.nativeElement,\n PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME\n );\n\n if (!this.renderTitle) {\n this.renderer.addClass(\n this.element.nativeElement,\n PepCustomizationService.STAND_ALONE_FIELD_NO_SPACING_CLASS_NAME\n );\n }\n }\n }\n\n ngOnChanges(changes: any): void {\n if (this.standAlone) {\n this.setDefaultForm();\n }\n }\n\n ngOnDestroy(): void {\n //\n }\n\n onBlur(event: any): void {\n const value = event.target ? event.target.value : event;\n this.changeValue(value);\n\n setTimeout(() => {\n if (this.isInEditMode) {\n this.isInEditMode = false;\n }\n }, 0);\n }\n\n changeValue(value: any): void {\n if (value !== this.value) {\n this.value = value;\n this.customizationService.updateFormFieldValue(\n this.form,\n this.key,\n value\n );\n this.valueChange.emit(value);\n }\n }\n\n cardTemplateClicked(event: any): void {\n this.openDialog();\n }\n\n openDialog(): void {\n const config = this.dialogService.getDialogConfig(\n {\n // maxWidth: '90vw',\n // maxHeight: '90vh'\n },\n 'regular'\n );\n\n this.dialogRef = this.dialogService.openDialog(\n this.textAreaDialogTemplate,\n {},\n config\n );\n\n this.dialogRef.afterClosed().subscribe((value) => {\n if (value !== undefined && value !== null) {\n this.changeValue(value);\n }\n });\n }\n\n closeDialog(data: any = null): void {\n this.dialogRef?.close(data);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatDialogModule } from '@angular/material/dialog';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconSystemEdit,\n pepIconSystemClose,\n} from '@pepperi-addons/ngx-lib/icon';\nimport { PepTextboxIconModule } from '@pepperi-addons/ngx-lib/textbox-icon';\nimport { PepFieldTitleModule } from '@pepperi-addons/ngx-lib/field-title';\nimport { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';\n\nimport { PepTextareaComponent } from './textarea.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n // Material modules,\n MatCommonModule,\n MatButtonModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatDialogModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepIconModule,\n PepFieldTitleModule,\n PepTextboxIconModule,\n PepDialogModule,\n ],\n exports: [PepTextareaComponent],\n declarations: [PepTextareaComponent],\n})\nexport class PepTextareaModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconSystemEdit,\n pepIconSystemClose,\n ]);\n }\n}\n","/*\n * Public API Surface of ngx-lib/textarea\n */\nexport * from './textarea.module';\nexport * from './textarea.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|