@pepperi-addons/ngx-lib 0.2.60 → 0.2.61-query-builder.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -39
- package/address/address.component.theme.scss +5 -8
- 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 +1 -3
- package/attachment/pepperi-addons-ngx-lib-attachment.metadata.json +1 -1
- package/bread-crumbs/bread-crumbs.component.theme.scss +9 -9
- package/bread-crumbs/pepperi-addons-ngx-lib-bread-crumbs.metadata.json +1 -1
- package/bundles/pepperi-addons-ngx-lib-address.umd.js +2 -2
- 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 +2 -2
- package/bundles/pepperi-addons-ngx-lib-bread-crumbs.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-button.umd.js +2 -2
- package/bundles/pepperi-addons-ngx-lib-button.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-carousel.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js +5 -2
- package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-color.umd.js +9 -4
- package/bundles/pepperi-addons-ngx-lib-color.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-date.umd.js +6 -4
- package/bundles/pepperi-addons-ngx-lib-date.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-dialog.umd.js +3 -3
- package/bundles/pepperi-addons-ngx-lib-dialog.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-field-title.umd.js +2 -2
- package/bundles/pepperi-addons-ngx-lib-field-title.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-files-uploader.umd.js +2 -2
- package/bundles/pepperi-addons-ngx-lib-files-uploader.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-form.umd.js +27 -24
- package/bundles/pepperi-addons-ngx-lib-form.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-group-buttons.umd.js +2 -2
- package/bundles/pepperi-addons-ngx-lib-group-buttons.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-icon.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 +9 -9
- package/bundles/pepperi-addons-ngx-lib-list.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-menu.umd.js +2 -2
- package/bundles/pepperi-addons-ngx-lib-menu.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-page-layout.umd.js +1 -1
- package/bundles/pepperi-addons-ngx-lib-page-layout.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 +1101 -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-search.umd.js +1 -1
- package/bundles/pepperi-addons-ngx-lib-search.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 +10 -2
- package/bundles/pepperi-addons-ngx-lib-separator.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-side-bar.umd.js +2 -2
- 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-size-detector.umd.js +1 -1
- package/bundles/pepperi-addons-ngx-lib-size-detector.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-slider.umd.js +2 -2
- package/bundles/pepperi-addons-ngx-lib-slider.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js +308 -41
- 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-icon.umd.js +1 -1
- package/bundles/pepperi-addons-ngx-lib-textbox-icon.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-textbox.umd.js +6 -4
- package/bundles/pepperi-addons-ngx-lib-textbox.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-top-bar.umd.js +2 -2
- package/bundles/pepperi-addons-ngx-lib-top-bar.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib.umd.js +38 -36
- 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 +169 -175
- 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/common/services/addon.service.d.ts +1 -2
- package/core/common/services/file.service.d.ts +4 -4
- package/core/customization/customization.service.d.ts +1 -0
- package/date/date.component.theme.scss +0 -169
- package/date/pepperi-addons-ngx-lib-date.metadata.json +1 -1
- package/dialog/dialog.component.theme.scss +5 -5
- package/dialog/pepperi-addons-ngx-lib-dialog.metadata.json +1 -1
- package/esm2015/address/address.component.js +3 -3
- package/esm2015/address/address.module.js +1 -1
- package/esm2015/address/public-api.js +1 -1
- package/esm2015/attachment/attachment.component.js +8 -3
- package/esm2015/attachment/attachment.module.js +1 -1
- package/esm2015/attachment/public-api.js +1 -1
- package/esm2015/bread-crumbs/bread-crumbs.component.js +3 -3
- package/esm2015/bread-crumbs/bread-crumbs.model.js +1 -1
- package/esm2015/bread-crumbs/bread-crumbs.module.js +1 -1
- package/esm2015/bread-crumbs/public-api.js +1 -1
- package/esm2015/button/button.component.js +3 -3
- package/esm2015/button/button.model.js +1 -1
- package/esm2015/button/button.module.js +1 -1
- package/esm2015/button/public-api.js +1 -1
- package/esm2015/carousel/carousel-item.directive.js +1 -1
- package/esm2015/carousel/carousel.component.js +15 -15
- package/esm2015/carousel/carousel.module.js +1 -1
- package/esm2015/carousel/public-api.js +1 -1
- package/esm2015/checkbox/checkbox.component.js +6 -3
- package/esm2015/checkbox/checkbox.module.js +1 -1
- package/esm2015/checkbox/public-api.js +1 -1
- package/esm2015/color/color-picker.component.js +29 -29
- package/esm2015/color/color.component.js +8 -3
- package/esm2015/color/color.model.js +1 -1
- package/esm2015/color/color.module.js +1 -1
- package/esm2015/color/public-api.js +1 -1
- package/esm2015/core/clipboard/clipboard.directive.js +1 -1
- package/esm2015/core/clipboard/clipboard.service.js +1 -1
- package/esm2015/core/clipboard/index.js +1 -1
- package/esm2015/core/clipboard/public-api.js +1 -1
- package/esm2015/core/common/directives/auto-width.directive.js +1 -1
- package/esm2015/core/common/directives/button-blur.directive.js +1 -1
- package/esm2015/core/common/directives/button-loader.directive.js +1 -1
- package/esm2015/core/common/directives/data-qa.directive.js +1 -1
- package/esm2015/core/common/directives/index.js +1 -1
- package/esm2015/core/common/directives/menu-blur.directive.js +1 -1
- package/esm2015/core/common/directives/prevent-multi-click.directive.js +1 -1
- package/esm2015/core/common/directives/public-api.js +1 -1
- package/esm2015/core/common/index.js +1 -1
- package/esm2015/core/common/model/index.js +1 -1
- package/esm2015/core/common/model/papi.model.js +1 -1
- package/esm2015/core/common/model/public-api.js +1 -1
- package/esm2015/core/common/model/utilities.model.js +1 -1
- package/esm2015/core/common/model/wapi.model.js +1 -1
- package/esm2015/core/common/pipes/common-pipes.js +1 -1
- package/esm2015/core/common/pipes/index.js +1 -1
- package/esm2015/core/common/pipes/public-api.js +1 -1
- package/esm2015/core/common/public-api.js +1 -1
- package/esm2015/core/common/services/addon.service.js +4 -19
- package/esm2015/core/common/services/color.service.js +1 -1
- package/esm2015/core/common/services/cookie.service.js +1 -1
- package/esm2015/core/common/services/data-convertor.service.js +1 -1
- package/esm2015/core/common/services/file.service.js +9 -9
- package/esm2015/core/common/services/index.js +1 -1
- package/esm2015/core/common/services/jwt-helper.service.js +1 -1
- package/esm2015/core/common/services/public-api.js +1 -1
- package/esm2015/core/common/services/session.service.js +1 -1
- package/esm2015/core/common/services/utilities.service.js +25 -4
- package/esm2015/core/common/services/validator.service.js +1 -1
- package/esm2015/core/common/services/window-scrolling.service.js +5 -5
- package/esm2015/core/customization/customization.model.js +1 -1
- package/esm2015/core/customization/customization.service.js +4 -2
- package/esm2015/core/customization/index.js +1 -1
- package/esm2015/core/customization/public-api.js +1 -1
- package/esm2015/core/http/index.js +1 -1
- package/esm2015/core/http/interceptors/error.interceptor.js +1 -1
- package/esm2015/core/http/interceptors/index.js +1 -1
- package/esm2015/core/http/interceptors/loader.interceptor.js +1 -1
- package/esm2015/core/http/interceptors/profiler.interceptor.js +1 -1
- package/esm2015/core/http/public-api.js +1 -1
- package/esm2015/core/http/services/http.service.js +1 -1
- package/esm2015/core/http/services/loader.service.js +1 -1
- package/esm2015/core/index.js +1 -1
- package/esm2015/core/layout/index.js +1 -1
- package/esm2015/core/layout/layout.service.js +1 -1
- package/esm2015/core/layout/public-api.js +1 -1
- package/esm2015/core/layout/rtl.directive.js +1 -1
- package/esm2015/core/portal/attach.directive.js +1 -1
- package/esm2015/core/portal/index.js +1 -1
- package/esm2015/core/portal/portal.service.js +1 -1
- package/esm2015/core/portal/public-api.js +1 -1
- package/esm2015/core/portal/target.directive.js +1 -1
- package/esm2015/core/public-api.js +1 -1
- package/esm2015/core/scroll-to/index.js +1 -1
- package/esm2015/core/scroll-to/public-api.js +1 -1
- package/esm2015/core/scroll-to/scroll-to.service.js +1 -1
- package/esm2015/date/date.component.js +7 -5
- package/esm2015/date/date.module.js +1 -1
- package/esm2015/date/public-api.js +1 -1
- package/esm2015/dialog/default-dialog.component.js +2 -2
- package/esm2015/dialog/dialog.component.js +3 -3
- package/esm2015/dialog/dialog.model.js +1 -1
- package/esm2015/dialog/dialog.module.js +1 -1
- package/esm2015/dialog/dialog.service.js +1 -1
- package/esm2015/dialog/public-api.js +1 -1
- package/esm2015/field-title/field-title.component.js +3 -3
- package/esm2015/field-title/field-title.module.js +1 -1
- package/esm2015/field-title/public-api.js +1 -1
- package/esm2015/files-uploader/files-uploader.component.js +3 -3
- package/esm2015/files-uploader/files-uploader.module.js +1 -1
- package/esm2015/files-uploader/public-api.js +1 -1
- package/esm2015/form/field-generator.component.js +2 -2
- package/esm2015/form/form.component.js +2 -2
- package/esm2015/form/form.module.js +1 -1
- package/esm2015/form/indicators.component.js +3 -3
- package/esm2015/form/internal-button.component.js +21 -18
- package/esm2015/form/internal-carusel.component.js +2 -2
- package/esm2015/form/internal-carusel.service.js +1 -1
- package/esm2015/form/internal-list.component.js +2 -2
- package/esm2015/form/internal-menu.component.js +2 -2
- package/esm2015/form/internal-page.component.js +2 -2
- package/esm2015/form/internal-page.service.js +1 -1
- package/esm2015/form/public-api.js +1 -1
- package/esm2015/group-buttons/group-buttons.component.js +3 -3
- package/esm2015/group-buttons/group-buttons.module.js +1 -1
- package/esm2015/group-buttons/public-api.js +1 -1
- package/esm2015/icon/icon-generated-all.model.js +1 -1
- package/esm2015/icon/icon-generated.model.js +1 -1
- package/esm2015/icon/icon-registry.service.js +2 -2
- package/esm2015/icon/icon.component.js +1 -1
- package/esm2015/icon/icon.module.js +1 -1
- package/esm2015/icon/public-api.js +1 -1
- package/esm2015/image/image.component.js +8 -3
- package/esm2015/image/image.module.js +1 -1
- package/esm2015/image/public-api.js +1 -1
- package/esm2015/images-filmstrip/images-filmstrip.component.js +8 -3
- package/esm2015/images-filmstrip/images-filmstrip.module.js +1 -1
- package/esm2015/images-filmstrip/public-api.js +1 -1
- package/esm2015/list/list-actions.component.js +2 -2
- package/esm2015/list/list-carousel.component.js +2 -2
- package/esm2015/list/list-chooser.component.js +2 -2
- package/esm2015/list/list-pager.component.js +2 -2
- package/esm2015/list/list-sorting.component.js +2 -2
- package/esm2015/list/list-total.component.js +3 -3
- package/esm2015/list/list-views.component.js +2 -2
- package/esm2015/list/list.component.js +2 -2
- package/esm2015/list/list.model.js +1 -1
- package/esm2015/list/list.module.js +1 -1
- package/esm2015/list/public-api.js +1 -1
- package/esm2015/menu/menu-item.component.js +2 -2
- package/esm2015/menu/menu.component.js +2 -2
- package/esm2015/menu/menu.model.js +1 -1
- package/esm2015/menu/menu.module.js +1 -1
- package/esm2015/menu/public-api.js +1 -1
- package/esm2015/ngx-lib.module.js +1 -1
- package/esm2015/page-layout/page-layout.component.js +2 -2
- package/esm2015/page-layout/page-layout.module.js +1 -1
- package/esm2015/page-layout/public-api.js +1 -1
- package/esm2015/public-api.js +1 -1
- package/esm2015/quantity-selector/public-api.js +1 -1
- package/esm2015/quantity-selector/quantity-selector-validation.directive.js +1 -1
- package/esm2015/quantity-selector/quantity-selector.component.js +8 -3
- package/esm2015/quantity-selector/quantity-selector.module.js +1 -1
- package/esm2015/quantity-selector/quantity-selector.pipes.js +1 -1
- 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 +115 -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 +280 -0
- package/esm2015/rich-html-textarea/public-api.js +1 -1
- package/esm2015/rich-html-textarea/rich-html-textarea.component.js +8 -3
- package/esm2015/rich-html-textarea/rich-html-textarea.module.js +1 -1
- package/esm2015/search/public-api.js +1 -1
- package/esm2015/search/search.component.js +2 -2
- package/esm2015/search/search.model.js +1 -1
- package/esm2015/search/search.module.js +1 -1
- package/esm2015/select/public-api.js +1 -1
- package/esm2015/select/select.component.js +8 -3
- package/esm2015/select/select.module.js +1 -1
- package/esm2015/separator/public-api.js +1 -1
- package/esm2015/separator/separator.component.js +11 -3
- package/esm2015/separator/separator.module.js +1 -1
- package/esm2015/side-bar/public-api.js +1 -1
- package/esm2015/side-bar/side-bar.component.js +3 -3
- package/esm2015/side-bar/side-bar.model.js +1 -1
- package/esm2015/side-bar/side-bar.module.js +1 -1
- package/esm2015/signature/public-api.js +1 -1
- package/esm2015/signature/signature.component.js +8 -3
- package/esm2015/signature/signature.module.js +1 -1
- package/esm2015/size-detector/public-api.js +1 -1
- package/esm2015/size-detector/size-detector.component.js +2 -2
- package/esm2015/size-detector/size-detector.module.js +1 -1
- package/esm2015/slider/public-api.js +1 -1
- package/esm2015/slider/slider.component.js +3 -3
- package/esm2015/slider/slider.module.js +1 -1
- package/esm2015/smart-filters/boolean-filter/boolean-filter.component.js +23 -3
- package/esm2015/smart-filters/common/filter-actions.component.js +2 -2
- 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/filter.js +1 -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 +3 -3
- 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/public-api.js +1 -1
- package/esm2015/textarea/textarea.component.js +8 -3
- package/esm2015/textarea/textarea.module.js +1 -1
- package/esm2015/textbox/public-api.js +1 -1
- package/esm2015/textbox/textbox-validation.directive.js +1 -1
- package/esm2015/textbox/textbox.component.js +7 -5
- package/esm2015/textbox/textbox.module.js +1 -1
- package/esm2015/textbox-icon/public-api.js +1 -1
- package/esm2015/textbox-icon/textbox-icon.component.js +2 -2
- package/esm2015/textbox-icon/textbox-icon.module.js +1 -1
- package/esm2015/top-bar/public-api.js +1 -1
- package/esm2015/top-bar/top-bar.component.js +3 -3
- package/esm2015/top-bar/top-bar.model.js +1 -1
- package/esm2015/top-bar/top-bar.module.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-address.js +2 -2
- 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 +2 -2
- package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-button.js +2 -2
- package/fesm2015/pepperi-addons-ngx-lib-button.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-carousel.js +14 -14
- package/fesm2015/pepperi-addons-ngx-lib-carousel.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-checkbox.js +5 -2
- package/fesm2015/pepperi-addons-ngx-lib-checkbox.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-color.js +35 -30
- package/fesm2015/pepperi-addons-ngx-lib-color.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-date.js +6 -4
- package/fesm2015/pepperi-addons-ngx-lib-date.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-dialog.js +3 -3
- package/fesm2015/pepperi-addons-ngx-lib-dialog.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-field-title.js +2 -2
- package/fesm2015/pepperi-addons-ngx-lib-field-title.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-files-uploader.js +2 -2
- package/fesm2015/pepperi-addons-ngx-lib-files-uploader.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-form.js +27 -24
- package/fesm2015/pepperi-addons-ngx-lib-form.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-group-buttons.js +2 -2
- package/fesm2015/pepperi-addons-ngx-lib-group-buttons.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-icon.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-icon.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 +9 -9
- package/fesm2015/pepperi-addons-ngx-lib-list.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-menu.js +2 -2
- package/fesm2015/pepperi-addons-ngx-lib-menu.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-page-layout.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-page-layout.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 +1011 -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-search.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-search.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 +10 -2
- package/fesm2015/pepperi-addons-ngx-lib-separator.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-side-bar.js +2 -2
- 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-size-detector.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-size-detector.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-slider.js +2 -2
- package/fesm2015/pepperi-addons-ngx-lib-slider.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js +295 -38
- 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-icon.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-textbox-icon.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-textbox.js +6 -4
- package/fesm2015/pepperi-addons-ngx-lib-textbox.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-top-bar.js +2 -2
- package/fesm2015/pepperi-addons-ngx-lib-top-bar.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib.js +42 -34
- 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 +0 -2
- package/files-uploader/pepperi-addons-ngx-lib-files-uploader.metadata.json +1 -1
- package/form/indicators.component.theme.scss +7 -7
- 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 +15 -15
- 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 +33 -35
- 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 +33 -32
- package/images-filmstrip/pepperi-addons-ngx-lib-images-filmstrip.metadata.json +1 -1
- package/list/list-total.component.theme.scss +10 -10
- package/list/pepperi-addons-ngx-lib-list.metadata.json +1 -1
- package/menu/pepperi-addons-ngx-lib-menu.metadata.json +1 -1
- package/package.json +5 -5
- package/page-layout/page-layout.component.theme.scss +7 -7
- package/page-layout/pepperi-addons-ngx-lib-page-layout.metadata.json +1 -1
- 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 +77 -77
- package/query-builder/common/model/filter.d.ts +6 -0
- package/query-builder/common/model/legacy.d.ts +26 -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 +241 -237
- package/search/pepperi-addons-ngx-lib-search.metadata.json +1 -1
- 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 +0 -2
- package/separator/pepperi-addons-ngx-lib-separator.metadata.json +1 -1
- package/separator/separator.component.theme.scss +2 -2
- package/side-bar/pepperi-addons-ngx-lib-side-bar.metadata.json +1 -1
- package/side-bar/side-bar.component.theme.scss +26 -25
- 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 +8 -28
- package/size-detector/pepperi-addons-ngx-lib-size-detector.metadata.json +1 -1
- package/slider/pepperi-addons-ngx-lib-slider.metadata.json +1 -1
- package/slider/slider.component.theme.scss +66 -65
- 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 +9 -10
- package/smart-filters/text-filter/text-filter.component.d.ts +17 -0
- package/src/assets/i18n/de.ngx-lib.json +77 -77
- package/src/assets/i18n/en.ngx-lib.json +139 -138
- package/src/assets/i18n/es.ngx-lib.json +77 -77
- package/src/assets/i18n/fr.ngx-lib.json +78 -78
- package/src/assets/i18n/he.ngx-lib.json +78 -78
- package/src/assets/i18n/hu.ngx-lib.json +78 -78
- package/src/assets/i18n/it.ngx-lib.json +78 -78
- package/src/assets/i18n/ja.ngx-lib.json +78 -78
- package/src/assets/i18n/nl.ngx-lib.json +78 -78
- package/src/assets/i18n/pl.ngx-lib.json +78 -78
- package/src/assets/i18n/pt.ngx-lib.json +78 -78
- package/src/assets/i18n/ru.ngx-lib.json +78 -78
- package/src/assets/i18n/zh.ngx-lib.json +76 -76
- package/src/assets/images/no-image.svg +41 -41
- package/src/core/style/abstracts/breakpoints.scss +37 -35
- package/src/core/style/abstracts/functions.scss +439 -422
- package/src/core/style/abstracts/mixins.scss +800 -797
- package/src/core/style/abstracts/variables.scss +545 -545
- package/src/core/style/base/base.scss +874 -873
- package/src/core/style/base/grids.scss +4 -4
- package/src/core/style/base/helpers.scss +70 -70
- package/src/core/style/base/typography.scss +259 -255
- package/src/core/style/components/button.scss +346 -349
- package/src/core/style/components/checkbox.scss +476 -473
- package/src/core/style/components/datetime.scss +182 -22
- package/src/core/style/components/file.scss +223 -219
- package/src/core/style/components/general.scss +1002 -1086
- package/src/core/style/components/input.scss +98 -94
- package/src/core/style/components/quantity-selector.scss +17 -14
- package/src/core/style/components/radio-button.scss +171 -168
- package/src/core/style/components/select.scss +187 -185
- package/src/core/style/components/signature.scss +14 -12
- package/src/core/style/components/splitter.scss +67 -64
- package/src/core/style/components/textarea.scss +198 -195
- package/src/core/style/themes/black-theme.scss +7 -7
- package/src/core/style/themes/default-theme.scss +144 -144
- package/src/core/style/themes/light-theme.scss +7 -7
- package/src/core/style/themes/nature-theme.scss +7 -7
- package/src/core/style/vendors/normalize.scss +497 -497
- 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 +2 -2
- package/textbox/pepperi-addons-ngx-lib-textbox.metadata.json +1 -1
- package/textbox/textbox.component.theme.scss +3 -3
- package/textbox-icon/pepperi-addons-ngx-lib-textbox-icon.metadata.json +1 -1
- package/theming.scss +125 -220
- package/top-bar/pepperi-addons-ngx-lib-top-bar.metadata.json +1 -1
- package/top-bar/top-bar.component.theme.scss +9 -9
- 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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pepperi-addons-ngx-lib-query-builder.umd.js","sources":["../../../projects/ngx-lib/query-builder/common/model/operator.ts","../../../projects/ngx-lib/query-builder/common/services/type-convertor.service.ts","../../../projects/ngx-lib/query-builder/query-builder-section/query-builder-section.component.ts","../../../projects/ngx-lib/query-builder/query-builder-item/query-builder-item.component.ts","../../../projects/ngx-lib/query-builder/common/model/type-map.ts","../../../projects/ngx-lib/query-builder/common/model/operator-unit.ts","../../../projects/ngx-lib/query-builder/common/services/output-query.service.ts","../../../projects/ngx-lib/query-builder/common/model/type.ts","../../../projects/ngx-lib/query-builder/query-builder.service.ts","../../../projects/ngx-lib/query-builder/query-builder.component.ts","../../../projects/ngx-lib/query-builder/query-builder.module.ts","../../../projects/ngx-lib/query-builder/public-api.ts","../../../projects/ngx-lib/query-builder/pepperi-addons-ngx-lib-query-builder.ts"],"sourcesContent":["import { PepSmartFilterOperators, IPepSmartFilterOperator } from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { PepSmartFilterType } from '@pepperi-addons/ngx-lib/smart-filters';\r\n\r\nexport interface IPepQueryBuilderOperator {\r\n legacy: string, //legacy Operator \r\n smartFilter: IPepSmartFilterOperator, //smart filter operator \r\n type: PepSmartFilterType[] | null //smart filter type\r\n}\r\n\r\nconst Equals: IPepQueryBuilderOperator = {\r\n legacy: 'IsEqual',\r\n smartFilter: PepSmartFilterOperators.Equals,\r\n type: ['boolean', 'int', 'text']\r\n};\r\n\r\nconst NotEqual: IPepQueryBuilderOperator = {\r\n legacy: 'IsNotEqual',\r\n smartFilter: PepSmartFilterOperators.NotEqual,\r\n type: null\r\n};\r\n\r\nconst LessThan: IPepQueryBuilderOperator = {\r\n legacy: '<',\r\n smartFilter: PepSmartFilterOperators.LessThan,\r\n type: null\r\n};\r\n\r\nconst GreaterThan: IPepQueryBuilderOperator = {\r\n legacy: '>',\r\n smartFilter: PepSmartFilterOperators.GreaterThan,\r\n type: null\r\n};\r\n\r\n/*\r\nconst GreaterThanOrEquals: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: '>=',\r\n type: 'Integer'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.GreaterThanOrEquals,\r\n type: 'int'\r\n }\r\n};\r\n\r\nconst LessThanOrEquals: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: '<=',\r\n type: 'Integer'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.LessThanOrEquals,\r\n type: 'int',\r\n type: 'Integer'\r\n }\r\n}; */\r\n\r\nconst NumberRange: IPepQueryBuilderOperator = {\r\n legacy: 'Between',\r\n smartFilter: PepSmartFilterOperators.NumberRange,\r\n type: ['int']\r\n};\r\n\r\nconst Contains: IPepQueryBuilderOperator = {\r\n legacy: 'Contains',\r\n smartFilter: PepSmartFilterOperators.Contains,\r\n type: null\r\n};\r\n\r\n/*\r\nconst BeginsWith: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: 'BeginsWith',\r\n type: 'String'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.BeginsWith,\r\n type: 'text'\r\n }\r\n};\r\n\r\nconst EndsWith: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: 'EndsWith',\r\n type: 'String'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.EndsWith,\r\n type: 'text'\r\n }\r\n};\r\n\r\nconst Before: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: 'Before',\r\n type: 'Date'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.Before,\r\n type: 'date'\r\n }\r\n};\r\n\r\nconst After: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: 'After',\r\n type: 'Date'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.After,\r\n type: 'date'\r\n }\r\n}; */\r\n\r\nconst InTheLast: IPepQueryBuilderOperator = {\r\n legacy: 'InTheLast',\r\n smartFilter: PepSmartFilterOperators.InTheLast,\r\n type: null\r\n};\r\n\r\nconst NotInTheLast: IPepQueryBuilderOperator = {\r\n legacy: 'NotInTheLast',\r\n smartFilter: PepSmartFilterOperators.NotInTheLast,\r\n type: null\r\n};\r\n\r\nconst Today: IPepQueryBuilderOperator = {\r\n legacy: 'Today',\r\n smartFilter: PepSmartFilterOperators.Today,\r\n type: null\r\n};\r\n\r\nconst ThisWeek: IPepQueryBuilderOperator = {\r\n legacy: 'ThisWeek',\r\n smartFilter: PepSmartFilterOperators.ThisWeek,\r\n type: null\r\n};\r\n\r\nconst ThisMonth: IPepQueryBuilderOperator = {\r\n legacy: 'ThisMonth',\r\n smartFilter: PepSmartFilterOperators.ThisMonth,\r\n type: null\r\n};\r\n\r\nconst DateRange: IPepQueryBuilderOperator = {\r\n legacy: 'Between',\r\n smartFilter: PepSmartFilterOperators.DateRange,\r\n type: ['date-time']\r\n};\r\n\r\nconst DueIn: IPepQueryBuilderOperator = {\r\n legacy: 'DueIn',\r\n smartFilter: PepSmartFilterOperators.DueIn,\r\n type: null\r\n};\r\n\r\nconst NotDueIn: IPepQueryBuilderOperator = {\r\n legacy: 'NotDueIn',\r\n smartFilter: PepSmartFilterOperators.NotDueIn,\r\n type: null\r\n};\r\n\r\nconst On: IPepQueryBuilderOperator = {\r\n legacy: 'On',\r\n smartFilter: PepSmartFilterOperators.On,\r\n type: null\r\n};\r\n\r\nconst IsEmpty: IPepQueryBuilderOperator = {\r\n legacy: 'IsEmpty',\r\n smartFilter: PepSmartFilterOperators.IsEmpty,\r\n type: null\r\n};\r\n\r\nconst IsNotEmpty: IPepQueryBuilderOperator = {\r\n legacy: 'IsNotEmpty',\r\n smartFilter: PepSmartFilterOperators.IsNotEmpty,\r\n type: null\r\n};\r\n\r\nconst In: IPepQueryBuilderOperator = {\r\n legacy: 'IsEqual',\r\n smartFilter: PepSmartFilterOperators.In,\r\n type: ['multi-select']\r\n};\r\n\r\n\r\nconst PepQueryBuilderOperators = [\r\n Equals,\r\n NotEqual,\r\n LessThan,\r\n // LessThanOrEquals,\r\n GreaterThan,\r\n // GreaterThanOrEquals,\r\n NumberRange,\r\n Contains,\r\n // BeginsWith,\r\n // EndsWith,\r\n // After,\r\n // Before,\r\n InTheLast,\r\n NotInTheLast,\r\n Today,\r\n ThisWeek,\r\n ThisMonth,\r\n DateRange,\r\n DueIn,\r\n NotDueIn,\r\n On,\r\n IsEmpty,\r\n IsNotEmpty,\r\n In\r\n]\r\n\r\n/**\r\n * gets a smart filter operator item\r\n * @param operator legacy operator\r\n * @param type smart filter's type\r\n * @returns smart filter operator item\r\n */\r\nexport function getSmartBuilderOperator(operator: string, type: PepSmartFilterType): IPepSmartFilterOperator | null {\r\n const smartFilterOperator = PepQueryBuilderOperators.find(item =>\r\n item.legacy === operator &&\r\n (item.type === null || item.type.includes(type))\r\n );\r\n return smartFilterOperator ? smartFilterOperator.smartFilter : null;\r\n}\r\n\r\n/**\r\n * gets a legacy operator value\r\n * @param operator smart filter operator item\r\n * @param type smart filter's type\r\n * @returns legacy operator value\r\n */\r\nexport function getLegacyOperator(operator: IPepSmartFilterOperator, type: PepSmartFilterType): string | null {\r\n const legacyOperator = PepQueryBuilderOperators.find(item =>\r\n item.smartFilter === operator &&\r\n (item.type === null || item.type.includes(type))\r\n );\r\n return legacyOperator ? legacyOperator.legacy : null;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\r\n\r\n@Injectable(/*{\r\n providedIn: 'root'\r\n}*/)\r\nexport class PepTypeConvertorService {\r\n private readonly _operators: IPepOption[] = [];\r\n private readonly _booleans: IPepOption[] = [];\r\n\r\n public get operators(): IPepOption[] {\r\n return this._operators;\r\n }\r\n\r\n public get booleans(): IPepOption[] {\r\n return this._booleans;\r\n }\r\n\r\n constructor() {\r\n this.initOperators();\r\n this.initBooleans();\r\n }\r\n\r\n private initOperators() {\r\n this._operators.push({\r\n key: 'AND',\r\n value: 'And'\r\n });\r\n this._operators.push({\r\n key: 'OR',\r\n value: 'Or'\r\n });\r\n }\r\n\r\n private initBooleans() {\r\n this._booleans.push({\r\n key: 'True',\r\n value: 'True'\r\n });\r\n this._booleans.push({\r\n key: 'False',\r\n value: 'False'\r\n });\r\n }\r\n\r\n}","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n ViewChild,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport {\r\n IPepButtonClickEvent,\r\n PepButton,\r\n} from '@pepperi-addons/ngx-lib/button';\r\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\r\nimport { PepTypeConvertorService } from '../common/services/type-convertor.service';\r\nimport { IPepQueryDepth } from '../common/model/structure';\r\n\r\n@Component({\r\n selector: 'pep-query-builder-section',\r\n templateUrl: './query-builder-section.component.html',\r\n styleUrls: ['./query-builder-section.component.scss', './query-builder-section.component.theme.scss'],\r\n})\r\nexport class PepQueryBuilderSectionComponent {\r\n @Input() form: FormGroup;\r\n @Input() depth: IPepQueryDepth;\r\n @Input() hasFields = true;\r\n\r\n @Output()\r\n createSection = new EventEmitter();\r\n @Output()\r\n createItem = new EventEmitter();\r\n @Output()\r\n remove = new EventEmitter();\r\n @Output()\r\n operatorChange = new EventEmitter();\r\n\r\n @ViewChild('sectionContainer', { read: ViewContainerRef, static: true }) sectionContainer: ViewContainerRef;\r\n\r\n toggleButtons: Array<PepButton>;\r\n\r\n constructor(private _typeConvertorService: PepTypeConvertorService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.initOperators();\r\n }\r\n\r\n get f() {\r\n return this.form.controls;\r\n }\r\n\r\n initOperators() {\r\n this.toggleButtons = this._typeConvertorService.operators.map((operator: IPepOption) => {\r\n return {\r\n key: operator.key,\r\n value: operator.value,\r\n callback: (event: IPepButtonClickEvent) =>\r\n this.onOperatorChanged(event)\r\n } as PepButton\r\n });\r\n }\r\n\r\n onOperatorChanged(event) {\r\n if (event?.source?.key) {\r\n this.f.operator.setValue(event.source.key);\r\n this.operatorChange.emit();\r\n }\r\n }\r\n\r\n onAddRuleClicked() {\r\n this.createItem.emit();\r\n }\r\n\r\n onAddRuleSetClicked() {\r\n this.createSection.emit();\r\n }\r\n\r\n onDeleteSectionClicked() {\r\n this.remove.emit();\r\n }\r\n\r\n\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { PepSmartFilterBaseField, IPepSmartFilterField } from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { IPepSmartFilterData } from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\r\nimport { PepTypeConvertorService } from '../common/services/type-convertor.service';\r\nimport { IPepQueryBuilderFieldContainer } from '../common/model/legacy';\r\n\r\n@Component({\r\n selector: 'pep-query-builder-item',\r\n templateUrl: './query-builder-item.component.html',\r\n styleUrls: ['./query-builder-item.component.scss'],\r\n})\r\nexport class PepQueryBuilderItemComponent {\r\n @Input() formKey: string;\r\n _fields: Array<IPepQueryBuilderFieldContainer> = [];\r\n _options: IPepOption[] = [];\r\n @Input()\r\n set fields(list: Array<IPepQueryBuilderFieldContainer>) {\r\n if (list?.length > 0) {\r\n this._fields = list;\r\n this._options = list.map(field => {\r\n return {\r\n key: field.field.id,\r\n value: field.field.name\r\n }\r\n })\r\n }\r\n }\r\n _selectedField: PepSmartFilterBaseField = null;\r\n @Input()\r\n set selected(value: IPepQueryBuilderFieldContainer) {\r\n if (value) {\r\n this._selectedField = value.field;\r\n this.queryForm.fieldType.setValue(value.fieldType);\r\n }\r\n }\r\n _filter: IPepSmartFilterData;\r\n @Input()\r\n set filter(value: IPepSmartFilterData) {\r\n if (value) {\r\n this._filter = value;\r\n }\r\n }\r\n _parentForm: FormGroup;\r\n @Input()\r\n set parentForm(value: FormGroup) {\r\n if (value) {\r\n this._parentForm = value;\r\n this.addToParentForm();\r\n }\r\n }\r\n\r\n @Output()\r\n filterChange = new EventEmitter();\r\n @Output()\r\n remove = new EventEmitter();\r\n\r\n form: FormGroup;\r\n\r\n constructor(\r\n private _fb: FormBuilder,\r\n public typeConvertorService: PepTypeConvertorService\r\n ) {\r\n this.setupForm(null);\r\n }\r\n\r\n ngOnInit() {\r\n //\r\n }\r\n\r\n get f() {\r\n return this.form.controls;\r\n }\r\n\r\n get queryForm() {\r\n return (this.f.query as FormGroup).controls;\r\n }\r\n\r\n setupForm(fieldType) {\r\n this.form = this._fb.group({\r\n smart: this._fb.group({\r\n fieldId: this._fb.control(null),\r\n fieldType: this._fb.control(null),\r\n operator: this._fb.control(null),\r\n operatorUnit: this._fb.control(null),\r\n values: this._fb.group({\r\n first: this._fb.control(null),\r\n second: this._fb.control(null)\r\n })\r\n }),\r\n query: this._fb.group({\r\n fieldType: this._fb.control(fieldType)\r\n })\r\n });\r\n }\r\n\r\n addToParentForm() {\r\n this._parentForm.setControl(this.formKey, this.form);\r\n }\r\n\r\n onFieldChanged(key) {\r\n const item = this._fields.find(field => field.field.id === key);\r\n\r\n this.setupForm(item.fieldType);\r\n this.addToParentForm();\r\n\r\n /**\r\n * hack due to angular's change detection bug -\r\n * ERROR Error: There is no FormControl instance attached to form control element with name: [formControlName]\r\n */\r\n this._selectedField = null;\r\n setTimeout(() => {\r\n this._selectedField = item ? item.field : null;\r\n }, 0);\r\n\r\n this._filter = null;\r\n }\r\n\r\n onFilterChanged() {\r\n if (this.form.valid) {\r\n this.filterChange.emit();\r\n }\r\n }\r\n\r\n onDeleteItemClicked() {\r\n this.remove.emit();\r\n }\r\n\r\n\r\n\r\n}\r\n","import { PepSmartFilterType } from '@pepperi-addons/ngx-lib/smart-filters';\r\n\r\n\r\nexport class PepQueryBuilderTypeMap {\r\n private map: Map<string, PepSmartFilterType>;\r\n\r\n constructor() {\r\n this.loadTypes();\r\n }\r\n\r\n private loadTypes() {\r\n this.map = new Map<string, PepSmartFilterType>();\r\n this.map.set('Bool', 'boolean');\r\n this.map.set('JsonBool', 'boolean');\r\n this.map.set('Integer', 'int');\r\n this.map.set('Double', 'int');\r\n this.map.set('String', 'text');\r\n this.map.set('Guid', 'text');\r\n this.map.set('Date', 'date');\r\n this.map.set('DateTime', 'date-time');\r\n this.map.set('MultipleStringValues', 'multi-select');\r\n }\r\n\r\n /**\r\n * Converts legacy field type to smart builder type\r\n * @param type legacy type\r\n * @returns smart builder field type\r\n */\r\n getSmartBuilderType(key: string): PepSmartFilterType | null {\r\n const item = this.map.get(key);\r\n return item ? item : null;\r\n }\r\n\r\n}\r\n\r\n","\r\nimport { IPepSmartFilterOperatorUnit, PepSmartFilterOperatorUnits } from '@pepperi-addons/ngx-lib/smart-filters';\r\n\r\ninterface IPepQueryBuilderOperationUnit {\r\n legacy: string,\r\n smartFilter: IPepSmartFilterOperatorUnit,\r\n}\r\n\r\nconst Days: IPepQueryBuilderOperationUnit = {\r\n legacy: 'Days',\r\n smartFilter: PepSmartFilterOperatorUnits.Days\r\n};\r\n\r\nconst Weeks: IPepQueryBuilderOperationUnit = {\r\n legacy: 'Weeks',\r\n smartFilter: PepSmartFilterOperatorUnits.Weeks\r\n};\r\n\r\nconst Months: IPepQueryBuilderOperationUnit = {\r\n legacy: 'Months',\r\n smartFilter: PepSmartFilterOperatorUnits.Months\r\n};\r\n\r\nconst Years: IPepQueryBuilderOperationUnit = {\r\n legacy: 'Years',\r\n smartFilter: PepSmartFilterOperatorUnits.Years\r\n};\r\n\r\nconst PepQueryBuilderOperationUnit = [\r\n Days,\r\n Weeks,\r\n Months,\r\n Years,\r\n];\r\n\r\n/**\r\n * gets a smart filter operation unit item\r\n * @param operationUnit legacy operation unit\r\n * @returns smart filter operation unit item\r\n */\r\nexport function getSmartBuilderOperationUnit(operationUnit: string): IPepSmartFilterOperatorUnit | null {\r\n const smartFilterOperationUnit: IPepQueryBuilderOperationUnit = PepQueryBuilderOperationUnit.find(unit => unit.legacy === operationUnit);\r\n return smartFilterOperationUnit ? smartFilterOperationUnit.smartFilter : null;\r\n}\r\n\r\n/**\r\n * gets a legacy operation unit value\r\n * @param operationUnit smart filter operation unit item\r\n * @returns legacy operation unit value\r\n */\r\nexport function getLegacyOperationUnit(operationUnit: IPepSmartFilterOperatorUnit): string | null {\r\n const legacyOperationUnit: IPepQueryBuilderOperationUnit = PepQueryBuilderOperationUnit.find(unit => unit.smartFilter === operationUnit);\r\n return legacyOperationUnit ? legacyOperationUnit.legacy : null;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IPepQuerySection, IPepQueryItem } from '../model/legacy';\r\nimport { getLegacyOperator } from '../model/operator';\r\nimport { PepOperatorTypes } from '../model/type';\r\nimport { getLegacyOperationUnit } from '../model/operator-unit';\r\nimport { PepSmartFilterOperators } from '@pepperi-addons/ngx-lib/smart-filters';\r\n\r\n\r\n@Injectable(/*{\r\n providedIn: 'root'\r\n}*/)\r\nexport class PepOutputQueryService {\r\n private _complexIdCounter: number;\r\n private _expressionIdCounter: number;\r\n\r\n constructor() {\r\n //\r\n }\r\n\r\n /**\r\n * generates a legacy query structure \r\n * @param filters UI smart filters structure \r\n * @returns legacy query\r\n */\r\n generateQuery(filters: any) {\r\n this.initParams();\r\n\r\n return this.sectionWalk(filters);\r\n }\r\n\r\n /**\r\n * init params\r\n */\r\n private initParams() {\r\n this._complexIdCounter = 1;\r\n this._expressionIdCounter = 1;\r\n }\r\n\r\n /**\r\n * a recursive function dynamically builds legacy query structure\r\n * @param current UI object represents either a section or filter component\r\n * @returns section query data\r\n */\r\n private sectionWalk(current: any) {\r\n let section: IPepQuerySection | IPepQueryItem = null;\r\n\r\n Object.keys(current).forEach(key => {\r\n if (key.includes('item')) {\r\n section = this.addToSection(section, {\r\n ExpressionId: (this._expressionIdCounter++).toString(),\r\n ApiName: current[key].smart.fieldId,\r\n FieldType: current[key].query.fieldType,\r\n Operation: getLegacyOperator(current[key].smart.operator, current[key].smart.fieldType),\r\n Values: this.getItemValues(current[key].smart)\r\n } as IPepQueryItem, current.operator);\r\n } else if (key.includes('section')) {\r\n const childSection = this.sectionWalk(current[key]);\r\n if (childSection) {\r\n section = this.addToSection(section, childSection, current.operator);\r\n }\r\n }\r\n });\r\n\r\n return section;\r\n }\r\n\r\n /**\r\n * adds a legacy filter object to the current query structure\r\n * @param section section query data\r\n * @param item filter item\r\n * @param operator query operator\r\n * @returns \r\n */\r\n private addToSection(section: any, item: any, operator: string): any {\r\n return section ? this.createSection(section, item, operator) : item;\r\n }\r\n\r\n /**\r\n * creates a legacy complex object\r\n * @param left LeftNode object\r\n * @param right RightNode object\r\n * @param operator query operator\r\n * @returns legacy complex object\r\n */\r\n private createSection(left: any, right: any, operator: string): IPepQuerySection {\r\n return {\r\n ComplexId: (this._complexIdCounter++).toString(),\r\n LeftNode: left,\r\n RightNode: right,\r\n Operation: <PepOperatorTypes>operator\r\n }\r\n }\r\n\r\n /**\r\n * gets legacy filter values object\r\n * @param current UI filter object's values\r\n * @returns an array represents legacy values\r\n */\r\n private getItemValues(current: any) {\r\n let values: any[] = [];\r\n\r\n if (current?.values?.first) {\r\n if (current.operator === PepSmartFilterOperators.In) { //multi select \r\n values = current.values.first;\r\n } else if (\r\n current.operator === PepSmartFilterOperators.InTheLast ||\r\n current.operator === PepSmartFilterOperators.NotInTheLast ||\r\n current.operator === PepSmartFilterOperators.DueIn ||\r\n current.operator === PepSmartFilterOperators.NotDueIn\r\n ) { //operation unit \r\n values.push(current.values.first);\r\n if (current.operatorUnit) {\r\n values.push(getLegacyOperationUnit(current.operatorUnit));\r\n }\r\n } else {\r\n values.push(current.values.first);\r\n if (current.values.second) {\r\n values.push(current.values.second);\r\n }\r\n }\r\n }\r\n\r\n return values;\r\n }\r\n\r\n}","export enum PepOperatorTypes {\r\n And = 'AND',\r\n Or = 'OR'\r\n}\r\n\r\n","import { Injectable, ViewContainerRef, ComponentFactoryResolver } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { } from 'lodash';\r\nimport { IPepQueryBuilderField, IPepQuerySection, IPepQueryItem } from './common/model/legacy';\r\nimport {\r\n IPepSmartFilterField,\r\n IPepSmartFilterData,\r\n PepSmartFilterOperators,\r\n IPepSmartFilterOperator,\r\n PepSmartFilterType,\r\n createSmartFilter,\r\n createSmartFilterField,\r\n PepSmartFilterBaseField\r\n} from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { getSmartBuilderOperator } from './common/model/operator';\r\nimport { PepQueryBuilderSectionComponent } from './query-builder-section/query-builder-section.component';\r\nimport { PepQueryBuilderItemComponent } from './query-builder-item/query-builder-item.component';\r\nimport { IPepQueryBuilderFieldContainer } from './common/model/legacy';\r\nimport { PepQueryBuilderTypeMap } from './common/model/type-map';\r\nimport { getSmartBuilderOperationUnit } from './common/model/operator-unit';\r\nimport { PepOutputQueryService } from './common/services/output-query.service';\r\nimport { IPepQueryBuilderValues } from './common/model/filter';\r\nimport { PepOperatorTypes } from './common/model/type';\r\n\r\nconst MAX_STRUCTURE_DEPTH = 3;\r\n\r\n@Injectable()\r\nexport class PepQueryBuilderService {\r\n private _outputQuery$ = new BehaviorSubject<IPepQuerySection | IPepQueryItem>(null);\r\n\r\n private _smartFilterFields: Array<IPepQueryBuilderFieldContainer>;\r\n private _form: FormGroup;\r\n private _maxStructureDepth = MAX_STRUCTURE_DEPTH;\r\n\r\n public outputQuery$ = this._outputQuery$.asObservable();\r\n\r\n constructor(private _fb: FormBuilder, private _resolver: ComponentFactoryResolver, private _outputQueryService: PepOutputQueryService) {\r\n\r\n }\r\n\r\n set maxDepth(value) {\r\n this._maxStructureDepth = value;\r\n }\r\n\r\n get maxDepth() {\r\n return this._maxStructureDepth;\r\n }\r\n\r\n set fields(list: Array<IPepQueryBuilderField>) {\r\n this._smartFilterFields = this.convertToSmartFilterFields(list);\r\n }\r\n\r\n get hasFields(): boolean {\r\n return this._smartFilterFields?.length > 0;\r\n }\r\n\r\n set form(value: FormGroup) {\r\n this._form = value;\r\n }\r\n\r\n get form() {\r\n return this._form;\r\n }\r\n\r\n /**\r\n * builds a dynamic UI query structure\r\n * might has a different structure than the query's due to parent-child elements merge\r\n * @param query legacy query \r\n * @param containerRef reference to root element\r\n */\r\n buildQueryStructure(\r\n query: IPepQuerySection | IPepQueryItem,\r\n containerRef: ViewContainerRef\r\n ) {\r\n //update root operator \r\n if (this.hasProperty(query, 'ComplexId') &&\r\n query?.Operation &&\r\n query.Operation !== this._form.get('operator').value) {\r\n this._form.get('operator').setValue(query.Operation);\r\n }\r\n this.flatten(this._form.get('operator').value, query, containerRef, this._form, 0);\r\n }\r\n\r\n /**\r\n * checks if the object contains property\r\n * @param obj object\r\n * @param prop property name\r\n * @returns true if contains, false otherwise\r\n */\r\n private hasProperty(obj, prop) {\r\n return Object.prototype.hasOwnProperty.call(obj, prop);\r\n }\r\n\r\n /**\r\n * a recursive function dynamically builds UI filters structure\r\n * @param parentOperator legacy complex operator\r\n * @param current child legacy object (either another complex or expression type)\r\n * @param containerRef parent element\r\n * @param parentForm parent form\r\n */\r\n private flatten(parentOperator: string, current: IPepQuerySection | IPepQueryItem, containerRef: ViewContainerRef, parentForm: FormGroup, depth: number) {\r\n if (this.hasProperty(current, 'ComplexId')) {\r\n const section = current as IPepQuerySection;\r\n if (parentOperator === current.Operation) {\r\n this.flatten(current.Operation, section.LeftNode, containerRef, parentForm, depth);\r\n this.flatten(current.Operation, section.RightNode, containerRef, parentForm, depth);\r\n } else {\r\n const result = this.createSection(section.Operation, containerRef, parentForm, depth);\r\n this.flatten(section.Operation, section.LeftNode, result.containerRef, result.parentForm, depth + 1);\r\n this.flatten(section.Operation, section.RightNode, result.containerRef, result.parentForm, depth + 1);\r\n }\r\n } else if (this.hasProperty(current, 'ExpressionId')) {\r\n this.createItem(current as IPepQueryItem, containerRef, parentForm);\r\n }\r\n }\r\n\r\n /**\r\n * creates a container object of two or more child filter items\r\n * @param operator AND/OR operator\r\n * @param containerRef parent element\r\n * @param parentForm parent form\r\n * @param depth\r\n * @returns an object containing the current element and current form\r\n */\r\n createSection(operator: PepOperatorTypes, containerRef: ViewContainerRef, parentForm: FormGroup, depth: number) {\r\n const factory = this._resolver.resolveComponentFactory(PepQueryBuilderSectionComponent);\r\n const componentRef = containerRef.createComponent(factory);\r\n\r\n const sectionGroup = this._fb.group({\r\n operator: this._fb.control(operator)\r\n });\r\n let counter = 1;\r\n Object.keys(parentForm.controls).forEach(item => { if (item.includes('section')) { counter++; } });\r\n const formKey = `section${counter}`;\r\n parentForm.addControl(formKey, sectionGroup);\r\n\r\n componentRef.instance.form = sectionGroup;\r\n componentRef.instance.depth = {\r\n current: depth,\r\n max: this._maxStructureDepth\r\n };\r\n componentRef.instance.createSection.subscribe(() => {\r\n const section = this.createSection(PepOperatorTypes.And, componentRef.instance.sectionContainer, sectionGroup, depth + 1);\r\n this.createItem(null, section.containerRef, section.parentForm);\r\n });\r\n componentRef.instance.createItem.subscribe(() => {\r\n this.createItem(null, componentRef.instance.sectionContainer, sectionGroup);\r\n });\r\n componentRef.instance.remove.subscribe(() => {\r\n parentForm.removeControl(formKey);\r\n componentRef.destroy();\r\n this.createOutputQuery();\r\n });\r\n componentRef.instance.operatorChange.subscribe(() => {\r\n this.createOutputQuery();\r\n });\r\n\r\n return {\r\n containerRef: componentRef.instance.sectionContainer,\r\n parentForm: sectionGroup\r\n };\r\n }\r\n\r\n /**\r\n * creates a component represents filter item (leaf element - has no childs)\r\n * @param current filter legacy element\r\n * @param containerRef parent element\r\n * @param parentForm parent form\r\n */\r\n createItem(current: IPepQueryItem, containerRef: ViewContainerRef, parentForm: FormGroup) {\r\n const factory = this._resolver.resolveComponentFactory(PepQueryBuilderItemComponent);\r\n const componentRef = containerRef.createComponent(factory);\r\n\r\n let counter = 1;\r\n Object.keys(parentForm.controls).forEach(item => { if (item.includes('item')) { counter++; } });\r\n const formKey = `item${counter}`;\r\n\r\n componentRef.instance.formKey = formKey;\r\n componentRef.instance.fields = this._smartFilterFields;\r\n const selectedField = this.getSelectedField(current);\r\n if (selectedField) {\r\n componentRef.instance.selected = selectedField;\r\n if (current) {\r\n componentRef.instance.filter = this.getFilter(current, selectedField.field);\r\n }\r\n }\r\n componentRef.instance.parentForm = parentForm;\r\n componentRef.instance.filterChange.subscribe(() => {\r\n this.createOutputQuery();\r\n });\r\n componentRef.instance.remove.subscribe(() => {\r\n parentForm.removeControl(formKey);\r\n componentRef.destroy();\r\n this.createOutputQuery();\r\n });\r\n }\r\n\r\n /**\r\n * creates a smart filter object\r\n * @param current filter legacy element\r\n * @param field filter's selected field\r\n * @returns smart filter object\r\n */\r\n private getFilter(current: IPepQueryItem, field: PepSmartFilterBaseField): IPepSmartFilterData | null {\r\n const operator: IPepSmartFilterOperator = getSmartBuilderOperator(current.Operation, field.type);\r\n if (operator) {\r\n const filterValues: IPepQueryBuilderValues = this.getFilterValues(current, operator, field);\r\n return createSmartFilter(\r\n current.ApiName,\r\n operator,\r\n filterValues.first,\r\n filterValues.second,\r\n filterValues.operationUnit\r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * get smart filter field\r\n * @param current filter legacy element\r\n * @returns smart filter field, if not found returns the first field\r\n */\r\n private getSelectedField(current: IPepQueryItem): IPepQueryBuilderFieldContainer | null {\r\n if (current) {\r\n const item = this._smartFilterFields.find(field => field.field.id === current.ApiName);\r\n return item ? item : this._smartFilterFields?.length > 0 ? this._smartFilterFields[0] : null;\r\n } else {\r\n return this._smartFilterFields?.length > 0 ? this._smartFilterFields[0] : null;\r\n }\r\n }\r\n\r\n /**\r\n * gets smart filter's values data\r\n * @param current filter legacy element\r\n * @param operator smart filter operator\r\n * @param field filter's selected field\r\n * @returns object contains the filter values data\r\n */\r\n private getFilterValues(current: IPepQueryItem, operator: IPepSmartFilterOperator, field: any) {\r\n const data: IPepQueryBuilderValues = {\r\n first: null,\r\n second: null,\r\n operationUnit: null\r\n };\r\n\r\n if (operator === PepSmartFilterOperators.In) { //multi select \r\n //filter keys don't exist on field options\r\n data.first = current?.Values?.length > 0 ? current.Values.filter(item => {\r\n return field.options.find(option => option.key === item);\r\n }) : null;\r\n } else if (\r\n operator === PepSmartFilterOperators.InTheLast ||\r\n operator === PepSmartFilterOperators.NotInTheLast ||\r\n operator === PepSmartFilterOperators.DueIn ||\r\n operator === PepSmartFilterOperators.NotDueIn\r\n ) { //operation unit\r\n data.first = current?.Values?.length > 0 ? current.Values[0] : null;\r\n if (current?.Values?.length === 2) {\r\n data.operationUnit = getSmartBuilderOperationUnit(current.Values[1]);\r\n }\r\n } else {\r\n data.first = current?.Values?.length > 0 ? current.Values[0] : null;\r\n data.second = current?.Values?.length === 2 ? current.Values[1] : null;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * converts legacy fields to smart filter fields\r\n * @param fields legacy fields array\r\n * @returns smart filter fields array\r\n */\r\n private convertToSmartFilterFields(fields: Array<IPepQueryBuilderField>): Array<IPepQueryBuilderFieldContainer> {\r\n if (fields?.length > 0) {\r\n const typeMapper = new PepQueryBuilderTypeMap();\r\n\r\n return fields.map((field) => {\r\n return {\r\n field: createSmartFilterField(\r\n {\r\n id: field.FieldID,\r\n name: field.Title,\r\n options: field.OptionalValues?.map(option => {\r\n return {\r\n key: option.Key,\r\n value: option.Value\r\n }\r\n })\r\n }, typeMapper.getSmartBuilderType(field.FieldType) as PepSmartFilterType),\r\n fieldType: field.FieldType\r\n }\r\n })\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n /**\r\n * creates a legacy output query \r\n */\r\n createOutputQuery() {\r\n if (this._form.valid) {\r\n const query = this._outputQueryService.generateQuery(this._form.value);\r\n this._outputQuery$.next(query);\r\n }\r\n }\r\n\r\n}","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n OnInit,\r\n OnDestroy,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormBuilder } from '@angular/forms';\r\nimport { PepQueryBuilderSectionComponent } from './query-builder-section/query-builder-section.component';\r\nimport { IPepQueryBuilderField, IPepQuerySection, IPepQueryItem } from './common/model/legacy';\r\nimport { PepQueryBuilderService } from './query-builder.service';\r\nimport { PepTypeConvertorService } from './common/services/type-convertor.service';\r\nimport { PepOutputQueryService } from './common/services/output-query.service';\r\nimport { IPepQueryDepth } from './common/model/structure';\r\nimport { PepOperatorTypes } from './common/model/type';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'pep-query-builder',\r\n templateUrl: './query-builder.component.html',\r\n styleUrls: ['./query-builder.component.scss'],\r\n providers: [PepQueryBuilderService, PepTypeConvertorService, PepOutputQueryService]\r\n})\r\nexport class PepQueryBuilderComponent implements OnInit, OnDestroy {\r\n _query: IPepQuerySection | IPepQueryItem = null;\r\n @Input()\r\n set query(object: IPepQuerySection | IPepQueryItem) {\r\n this._query = object;\r\n this.loadQuery()\r\n }\r\n @Input()\r\n set fields(list: Array<IPepQueryBuilderField>) {\r\n this.queryBuilderService.fields = list;\r\n this.hasFields = this.queryBuilderService.hasFields;\r\n this.loadQuery();\r\n }\r\n @Input()\r\n set maxDepth(value: number) {\r\n this.queryBuilderService.maxDepth = value;\r\n }\r\n\r\n @Output()\r\n queryChange: EventEmitter<IPepQuerySection | IPepQueryItem> = new EventEmitter<IPepQuerySection | IPepQueryItem>();\r\n @Output()\r\n formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n @ViewChild('rootContainer', { static: true }) root: PepQueryBuilderSectionComponent;\r\n\r\n _formSubscription$: Subscription;\r\n _outputQuerySubscription$: Subscription;\r\n _lastFormValidStatus = true;\r\n depth: IPepQueryDepth;\r\n hasFields = false;\r\n\r\n constructor(\r\n private _fb: FormBuilder,\r\n public queryBuilderService: PepQueryBuilderService\r\n ) {\r\n this.setupForm();\r\n this.initDepth();\r\n this._formSubscription$ = this.queryBuilderService.form.valueChanges.subscribe((val) => {\r\n if (this.queryBuilderService.form.valid !== this._lastFormValidStatus) {\r\n this._lastFormValidStatus = this.queryBuilderService.form.valid;\r\n this.formValidationChange.emit(this._lastFormValidStatus);\r\n }\r\n });\r\n this._outputQuerySubscription$ = this.queryBuilderService.outputQuery$.subscribe((outputQuery) => {\r\n this.queryChange.emit(outputQuery);\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n //\r\n }\r\n\r\n setupForm() {\r\n this.queryBuilderService.form = this._fb.group({\r\n operator: this._fb.control(PepOperatorTypes.And)\r\n });\r\n }\r\n\r\n initDepth() {\r\n this.depth = {\r\n current: 0,\r\n max: this.queryBuilderService.maxDepth\r\n }\r\n }\r\n\r\n /**\r\n * builds UI query structure as soon as both the fields and query loads\r\n */\r\n loadQuery() {\r\n if (\r\n this._query &&\r\n this.queryBuilderService.hasFields &&\r\n this.root?.sectionContainer\r\n ) {\r\n this.queryBuilderService.buildQueryStructure(this._query, this.root.sectionContainer);\r\n }\r\n }\r\n\r\n onCreateSection() {\r\n const section = this.queryBuilderService.createSection(PepOperatorTypes.And, this.root.sectionContainer, this.queryBuilderService.form, 1);\r\n this.queryBuilderService.createItem(null, section.containerRef, section.parentForm);\r\n }\r\n\r\n onCreateItem() {\r\n this.queryBuilderService.createItem(null, this.root.sectionContainer, this.queryBuilderService.form);\r\n }\r\n\r\n onOperatorChange() {\r\n this.queryBuilderService.createOutputQuery();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this._formSubscription$) {\r\n this._formSubscription$.unsubscribe();\r\n }\r\n if (this._outputQuerySubscription$) {\r\n this._outputQuerySubscription$.unsubscribe();\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { PepSmartFiltersModule } from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { PepSelectModule } from '@pepperi-addons/ngx-lib/select';\r\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\r\nimport { PepGroupButtonsModule } from '@pepperi-addons/ngx-lib/group-buttons';\r\n\r\nimport { PepQueryBuilderComponent } from './query-builder.component';\r\nimport { PepQueryBuilderSectionComponent } from './query-builder-section/query-builder-section.component';\r\nimport { PepQueryBuilderItemComponent } from './query-builder-item/query-builder-item.component';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FlexLayoutModule,\r\n PepSelectModule,\r\n PepButtonModule,\r\n PepGroupButtonsModule,\r\n PepSmartFiltersModule\r\n ],\r\n exports: [\r\n PepQueryBuilderComponent\r\n ],\r\n declarations: [\r\n PepQueryBuilderComponent,\r\n PepQueryBuilderSectionComponent,\r\n PepQueryBuilderItemComponent\r\n ]\r\n})\r\nexport class PepQueryBuilderModule { }\r\n","/*\r\n * Public API Surface of ngx-lib/query-builder\r\n */\r\nexport * from './query-builder.module';\r\nexport * from './query-builder.component';\r\nexport * from './query-builder.service';\r\nexport * from './common/model/legacy';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {PepOutputQueryService as ɵa} from './common/services/output-query.service';\nexport {PepTypeConvertorService as ɵb} from './common/services/type-convertor.service';\nexport {PepQueryBuilderItemComponent as ɵd} from './query-builder-item/query-builder-item.component';\nexport {PepQueryBuilderSectionComponent as ɵc} from './query-builder-section/query-builder-section.component';"],"names":["PepSmartFilterOperators","Injectable","EventEmitter","Component","Input","Output","ViewChild","ViewContainerRef","FormBuilder","PepSmartFilterOperatorUnits","BehaviorSubject","createSmartFilter","createSmartFilterField","ComponentFactoryResolver","NgModule","CommonModule","ReactiveFormsModule","FlexLayoutModule","PepSelectModule","PepButtonModule","PepGroupButtonsModule","PepSmartFiltersModule"],"mappings":"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"}
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
this.form = null;
|
|
25
25
|
this.isActive = false;
|
|
26
26
|
this.showTitle = true;
|
|
27
|
+
this.renderTitle = true;
|
|
27
28
|
this._layoutType = 'form';
|
|
28
29
|
this.inlineMode = false;
|
|
29
30
|
this.valueChange = new core.EventEmitter();
|
|
@@ -104,6 +105,9 @@
|
|
|
104
105
|
this.setFieldHeight();
|
|
105
106
|
this.setDefaultForm();
|
|
106
107
|
this.renderer.addClass(this.element.nativeElement, ngxLib.PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME);
|
|
108
|
+
if (!this.renderTitle) {
|
|
109
|
+
this.renderer.addClass(this.element.nativeElement, ngxLib.PepCustomizationService.STAND_ALONE_FIELD_NO_SPACING_CLASS_NAME);
|
|
110
|
+
}
|
|
107
111
|
}
|
|
108
112
|
this.quillContent = this.value;
|
|
109
113
|
};
|
|
@@ -200,9 +204,9 @@
|
|
|
200
204
|
PepRichHtmlTextareaComponent.decorators = [
|
|
201
205
|
{ type: core.Component, args: [{
|
|
202
206
|
selector: 'pep-rich-html-textarea',
|
|
203
|
-
template: "<ng-container [formGroup]=\"form\">\n <ng-template #pepTemplate let-isFormView=\"isFormView\">\n <div class=\"pep-textarea-container pep-report-textarea\" [ngClass]=\"{ 'stand-alone': standAlone,\n 'right-alignment': xAlignment == 'right', 'one-row': !isFormView && rowSpan === 1,\n 'pep-textarea-card-container': layoutType === 'card'}\">\n <pep-field-title *ngIf=\"isFormView\" [label]=\"label\" [mandatory]=\"mandatory\" [disabled]=\"disabled\"\n [maxFieldCharacters]=\"inlineMode && !disabled && !readonly ? maxFieldCharacters : 0\"\n [xAlignment]=\"xAlignment\" [showTitle]=\"showTitle\" [inputLength]=\"quillContent?.length\">\n </pep-field-title>\n <mat-form-field appearance=\"outline\" dir=\"{{ xAlignment == 'right' ? 'rtl' : 'ltr' }}\"\n [ngClass]=\"{ 'pep-table-textarea': layoutType === 'table', 'active': active, 'ignore-disabled': disabled }\">\n <textarea [hidden]=\"true\" matInput [formControlName]=\"key\"></textarea>\n\n <ng-container *ngIf=\"inlineMode; then inlineBlock; else notInlineBlock\"></ng-container>\n\n <ng-template #inlineBlock>\n <ng-container *ngTemplateOutlet=\"quilTemplate; context: {inDialog: false}\"></ng-container>\n </ng-template>\n <ng-template #notInlineBlock>\n\n <!-- We can use the quill-view-html\n <quill-view-html class=\"body-sm rich-text-cont \"\n [ngStyle]=\"{ 'text-align': xAlignment == 'right' ? 'right' : 'left' }\" [content]=\"value | pepSafeHtml\"\n theme=\"snow\" [style.height]=\"fieldHeight\"></quill-view-html> \n -->\n\n <div class=\"body-sm rich-text-cont \"\n [ngStyle]=\"{ 'text-align': xAlignment == 'right' ? 'right' : 'left' }\"\n [innerHtml]=\"value | pepSafeHtml\" [style.height]=\"fieldHeight\">\n </div>\n </ng-template>\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\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 <div class=\"pep-textarea-card-container card-flex-container\"\n [ngClass]=\"{'one-row': rowSpan === 1, 'pep-button weak': isActive && !disabled}\"\n [ngStyle]=\"{ '-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\" class=\"body-sm value wrap\" [innerHtml]=\"value | pepSafeHtml\"></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-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 <div class=\"pep-textarea-card-container card-flex-container one-row\">\n <span [id]=\"key\" class=\"wrap\" [innerHtml]=\"value | pepSafeHtml\"></span>\n </div>\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 #richTextEditorDialogTemplate>\n <div class=\"rich-text-editor-container\">\n <button mat-button [mat-dialog-close]=\"null\" class=\"pep-button icon-button md weak pull-right flip\">\n <mat-icon>\n <pep-icon name=\"system_close\">\n </pep-icon>\n </mat-icon>\n </button>\n <ng-container *ngTemplateOutlet=\"quilTemplate; context: {inDialog: true}\"></ng-container>\n <div mat-dialog-actions class=\" pep-border-top\">\n <div class=\"pep-spacing-element-negative\">\n <button mat-button [mat-dialog-close]=\"null\" class=\"pep-spacing-element pep-button md weak\">\n {{'ACTIONS.CANCEL' | translate}}\n </button>\n <button mat-button [mat-dialog-close]=\"quillContentDialog || ''\" [disabled]=\"disabled\"\n class=\"pep-spacing-element pep-button md strong \">\n {{'ACTIONS.SAVE' | translate}}\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #quilTemplate let-inDialog=\"inDialog\">\n <quill-editor id=\"{{inDialog ? 'quill-editor-dialog' : 'quill-editor-inline'}}\"\n [class]=\"inDialog ? 'dialog-quill' : 'inline-quill'\" [ngClass]=\"{ 'rich-text-cont': !inDialog }\"\n placeholder=\"{{'RICH_TEXTAREA.HINT' | translate}}\" [ngModel]=\"inDialog ? quillContentDialog : quillContent\"\n [sanitize]=\"true\" [readOnly]=\"disabled\" [maxLength]=\"maxFieldCharacters\" [required]=\"mandatory\"\n (onEditorCreated)=\"onEditorCreated($event, inDialog)\" (onContentChanged)=\"onContentChanged($event, inDialog)\"\n (onBlur)=\"onBlur($event, inDialog)\" (onFocus)=\"onFocus($event, inDialog)\" theme=\"\">\n <div *ngIf=\"!disabled\" quill-editor-toolbar>\n <div class=\"pep-spacing-element-negative\">\n <span class=\"ql-formats\">\n <select *ngIf=\"toolbarOptions?.font\"\n class=\"pep-spacing-element pep-button icon-button md weak ql-font select-arrow\">\n <option selected></option>\n <option value=\"serif\"></option>\n <option value=\"monospace\"></option>\n </select>\n <select *ngIf=\"toolbarOptions?.size\"\n class=\"pep-spacing-element pep-button icon-button md weak ql-size select-arrow\">\n <option value=\"small\"></option>\n <option selected></option>\n <option value=\"large\"></option>\n <option value=\"huge\"></option>\n </select>\n </span>\n <span class=\"ql-formats\">\n <select *ngIf=\"toolbarOptions?.header\"\n class=\"pep-spacing-element pep-button icon-button md weak ql-header select-arrow\">\n <option value=\"1\"></option>\n <option value=\"2\"></option>\n <option value=\"3\"></option>\n <!-- \n <option value=\"4\"></option>\n <option value=\"5\"></option>\n <option value=\"6\"></option> \n -->\n <option value=\"false\" selected></option>\n </select>\n </span>\n <!-- <hr class=\"vertical-separator\" /> -->\n <span class=\"ql-formats\">\n <button mat-button *ngIf=\"toolbarOptions?.bold\"\n class=\"pep-spacing-element pep-button icon-button md weak ql-bold\"></button>\n <button mat-button *ngIf=\"toolbarOptions?.italic\"\n class=\"pep-spacing-element pep-button icon-button md weak ql-italic\"></button>\n <button mat-button *ngIf=\"toolbarOptions?.underline\"\n class=\"pep-spacing-element pep-button icon-button md weak ql-underline\"></button>\n <button mat-button *ngIf=\"toolbarOptions?.strike\"\n class=\"pep-spacing-element pep-button icon-button md weak ql-strike\"></button>\n </span>\n <span class=\"ql-formats\">\n <button mat-button *ngIf=\"toolbarOptions?.link\"\n class=\"pep-spacing-element pep-button icon-button md weak ql-link\"></button>\n <button mat-button *ngIf=\"toolbarOptions?.image\"\n class=\"pep-spacing-element pep-button icon-button md weak ql-image\"></button>\n </span>\n <!-- <hr class=\"vertical-separator\" /> -->\n <span class=\"ql-formats\">\n <button mat-button *ngIf=\"toolbarOptions?.ordered\"\n class=\"pep-spacing-element pep-button icon-button md weak ql-list\" value=\"ordered\"></button>\n <button mat-button *ngIf=\"toolbarOptions?.bullet\"\n class=\"pep-spacing-element pep-button icon-button md weak ql-list\" value=\"bullet\"></button>\n </span>\n <!-- <hr class=\"vertical-separator\" /> -->\n <span class=\"ql-formats\">\n <select *ngIf=\"toolbarOptions?.color\"\n class=\"pep-spacing-element pep-button icon-button md weak ql-color\"></select>\n <select *ngIf=\"toolbarOptions?.background\"\n class=\"pep-spacing-element pep-button icon-button md weak ql-background\"></select>\n </span>\n <span class=\"ql-formats\">\n <select *ngIf=\"toolbarOptions?.align\"\n class=\"pep-spacing-element pep-button icon-button md weak ql-align\">\n <option selected></option>\n <option value=\"center\"></option>\n <option value=\"right\"></option>\n <option value=\"justify\"></option>\n </select>\n </span>\n </div>\n </div>\n </quill-editor>\n</ng-template>",
|
|
207
|
+
template: "<ng-container [formGroup]=\"form\">\r\n <ng-template #pepTemplate let-isFormView=\"isFormView\">\r\n <div class=\"pep-textarea-container pep-report-textarea\" [ngClass]=\"{ 'stand-alone': standAlone,\r\n 'right-alignment': xAlignment == 'right', 'one-row': !isFormView && rowSpan === 1,\r\n 'pep-textarea-card-container': layoutType === 'card'}\">\r\n <pep-field-title *ngIf=\"renderTitle && isFormView\" [label]=\"label\" [mandatory]=\"mandatory\"\r\n [disabled]=\"disabled\"\r\n [maxFieldCharacters]=\"inlineMode && !disabled && !readonly ? maxFieldCharacters : 0\"\r\n [xAlignment]=\"xAlignment\" [showTitle]=\"showTitle\" [inputLength]=\"quillContent?.length\">\r\n </pep-field-title>\r\n <mat-form-field appearance=\"outline\" dir=\"{{ xAlignment == 'right' ? 'rtl' : 'ltr' }}\"\r\n [ngClass]=\"{ 'pep-table-textarea': layoutType === 'table', 'active': active, 'ignore-disabled': disabled }\">\r\n <textarea [hidden]=\"true\" matInput [formControlName]=\"key\"></textarea>\r\n\r\n <ng-container *ngIf=\"inlineMode; then inlineBlock; else notInlineBlock\"></ng-container>\r\n\r\n <ng-template #inlineBlock>\r\n <ng-container *ngTemplateOutlet=\"quilTemplate; context: {inDialog: false}\"></ng-container>\r\n </ng-template>\r\n <ng-template #notInlineBlock>\r\n\r\n <!-- We can use the quill-view-html\r\n <quill-view-html class=\"body-sm rich-text-cont \"\r\n [ngStyle]=\"{ 'text-align': xAlignment == 'right' ? 'right' : 'left' }\" [content]=\"value | pepSafeHtml\"\r\n theme=\"snow\" [style.height]=\"fieldHeight\"></quill-view-html> \r\n -->\r\n\r\n <div class=\"body-sm rich-text-cont \"\r\n [ngStyle]=\"{ 'text-align': xAlignment == 'right' ? 'right' : 'left' }\"\r\n [innerHtml]=\"value | pepSafeHtml\" [style.height]=\"fieldHeight\">\r\n </div>\r\n </ng-template>\r\n <pep-textbox-icon matSuffix [value]=\"value\" [label]=\"label\" [type]=\"controlType\"\r\n [disabled]=\"disabled || readonly\"\r\n [ngClass]=\"{ 'card-one-row-icon': layoutType === 'card' && rowSpan === 1 }\"\r\n (iconClick)=\"openDialog()\">\r\n </pep-textbox-icon>\r\n <mat-error>\r\n <span class=\"body-xs\"\r\n [title]=\"mandatory && value.length == 0 ? ('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label }) : ('MESSAGES.ERROR_IS_NOT_VALID' | translate: { field: label })\"\r\n [innerText]=\"mandatory && value.length == 0 ? ('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label }) : ('MESSAGES.ERROR_IS_NOT_VALID' | translate: { field: label })\"></span>\r\n </mat-error>\r\n\r\n </mat-form-field>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"layoutType === 'form'\">\r\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: true }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"layoutType === 'card'\">\r\n <div class=\"pep-textarea-card-container card-flex-container\"\r\n [ngClass]=\"{'one-row': rowSpan === 1, 'pep-button weak': isActive && !disabled}\"\r\n [ngStyle]=\"{ '-webkit-line-clamp': rowSpan }\" [class]=\"'text-align-' + xAlignment\"\r\n (click)=\"!disabled ? cardTemplateClicked($event) : ''\" [style.height]=\"fieldHeight\">\r\n <span *ngIf=\"showTitle && label != ''\" class=\"body-xs title no-shrink\" title=\"{{ label }}\">{{ label\r\n }}: </span>\r\n <span [id]=\"key\" class=\"body-sm value wrap\" [innerHtml]=\"value | pepSafeHtml\"></span>\r\n <button *ngIf=\"isActive && !disabled\" class=\"pep-button weak card-edit-button self-start\"\r\n [ngClass]=\"{'self-end' : value && value !== ''}\" mat-button>\r\n <mat-icon>\r\n <pep-icon name=\"system_edit\">\r\n </pep-icon>\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"layoutType === 'table'\">\r\n <ng-container *ngIf=\"isActive && !disabled; then selectedBlock; else notSelectedBlock\"></ng-container>\r\n <ng-template #selectedBlock>\r\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: false }\"></ng-container>\r\n </ng-template>\r\n <ng-template #notSelectedBlock>\r\n <ng-container *ngIf=\"value?.length > 0; then notEmptyBlock; else emptyBlock\"></ng-container>\r\n <ng-template #notEmptyBlock>\r\n <div class=\"pep-textarea-card-container card-flex-container one-row\">\r\n <span [id]=\"key\" class=\"wrap\" [innerHtml]=\"value | pepSafeHtml\"></span>\r\n </div>\r\n </ng-template>\r\n <ng-template #emptyBlock>\r\n <span> </span>\r\n </ng-template>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #richTextEditorDialogTemplate>\r\n <div class=\"rich-text-editor-container\">\r\n <button mat-button [mat-dialog-close]=\"null\" class=\"pep-button icon-button md weak pull-right flip\">\r\n <mat-icon>\r\n <pep-icon name=\"system_close\">\r\n </pep-icon>\r\n </mat-icon>\r\n </button>\r\n <ng-container *ngTemplateOutlet=\"quilTemplate; context: {inDialog: true}\"></ng-container>\r\n <div mat-dialog-actions class=\" pep-border-top\">\r\n <div class=\"pep-spacing-element-negative\">\r\n <button mat-button [mat-dialog-close]=\"null\" class=\"pep-spacing-element pep-button md weak\">\r\n {{'ACTIONS.CANCEL' | translate}}\r\n </button>\r\n <button mat-button [mat-dialog-close]=\"quillContentDialog || ''\" [disabled]=\"disabled\"\r\n class=\"pep-spacing-element pep-button md strong \">\r\n {{'ACTIONS.SAVE' | translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #quilTemplate let-inDialog=\"inDialog\">\r\n <quill-editor id=\"{{inDialog ? 'quill-editor-dialog' : 'quill-editor-inline'}}\"\r\n [class]=\"inDialog ? 'dialog-quill' : 'inline-quill'\" [ngClass]=\"{ 'rich-text-cont': !inDialog }\"\r\n placeholder=\"{{'RICH_TEXTAREA.HINT' | translate}}\" [ngModel]=\"inDialog ? quillContentDialog : quillContent\"\r\n [sanitize]=\"true\" [readOnly]=\"disabled\" [maxLength]=\"maxFieldCharacters\" [required]=\"mandatory\"\r\n (onEditorCreated)=\"onEditorCreated($event, inDialog)\" (onContentChanged)=\"onContentChanged($event, inDialog)\"\r\n (onBlur)=\"onBlur($event, inDialog)\" (onFocus)=\"onFocus($event, inDialog)\" theme=\"\">\r\n <div *ngIf=\"!disabled\" quill-editor-toolbar>\r\n <div class=\"pep-spacing-element-negative\">\r\n <span class=\"ql-formats\">\r\n <select *ngIf=\"toolbarOptions?.font\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-font select-arrow\">\r\n <option selected></option>\r\n <option value=\"serif\"></option>\r\n <option value=\"monospace\"></option>\r\n </select>\r\n <select *ngIf=\"toolbarOptions?.size\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-size select-arrow\">\r\n <option value=\"small\"></option>\r\n <option selected></option>\r\n <option value=\"large\"></option>\r\n <option value=\"huge\"></option>\r\n </select>\r\n </span>\r\n <span class=\"ql-formats\">\r\n <select *ngIf=\"toolbarOptions?.header\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-header select-arrow\">\r\n <option value=\"1\"></option>\r\n <option value=\"2\"></option>\r\n <option value=\"3\"></option>\r\n <!-- \r\n <option value=\"4\"></option>\r\n <option value=\"5\"></option>\r\n <option value=\"6\"></option> \r\n -->\r\n <option value=\"false\" selected></option>\r\n </select>\r\n </span>\r\n <!-- <hr class=\"vertical-separator\" /> -->\r\n <span class=\"ql-formats\">\r\n <button mat-button *ngIf=\"toolbarOptions?.bold\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-bold\"></button>\r\n <button mat-button *ngIf=\"toolbarOptions?.italic\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-italic\"></button>\r\n <button mat-button *ngIf=\"toolbarOptions?.underline\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-underline\"></button>\r\n <button mat-button *ngIf=\"toolbarOptions?.strike\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-strike\"></button>\r\n </span>\r\n <span class=\"ql-formats\">\r\n <button mat-button *ngIf=\"toolbarOptions?.link\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-link\"></button>\r\n <button mat-button *ngIf=\"toolbarOptions?.image\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-image\"></button>\r\n </span>\r\n <!-- <hr class=\"vertical-separator\" /> -->\r\n <span class=\"ql-formats\">\r\n <button mat-button *ngIf=\"toolbarOptions?.ordered\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-list\" value=\"ordered\"></button>\r\n <button mat-button *ngIf=\"toolbarOptions?.bullet\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-list\" value=\"bullet\"></button>\r\n </span>\r\n <!-- <hr class=\"vertical-separator\" /> -->\r\n <span class=\"ql-formats\">\r\n <select *ngIf=\"toolbarOptions?.color\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-color\"></select>\r\n <select *ngIf=\"toolbarOptions?.background\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-background\"></select>\r\n </span>\r\n <span class=\"ql-formats\">\r\n <select *ngIf=\"toolbarOptions?.align\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-align\">\r\n <option selected></option>\r\n <option value=\"center\"></option>\r\n <option value=\"right\"></option>\r\n <option value=\"justify\"></option>\r\n </select>\r\n </span>\r\n </div>\r\n </div>\r\n </quill-editor>\r\n</ng-template>",
|
|
204
208
|
changeDetection: core.ChangeDetectionStrategy.OnPush,
|
|
205
|
-
styles: [":host{height:inherit;display:block}.pep-textarea-container ::ng-deep.mat-form-field-infix,.pepperi-textarea-container ::ng-deep.mat-form-field-infix{margin-left:calc(.75rem * -1);margin-left:calc(var(--pep-spacing-md, .75rem) * -1)}.pep-textarea-container.right-alignment ::ng-deep.mat-form-field-infix,.pepperi-textarea-container.right-alignment ::ng-deep.mat-form-field-infix{margin-left:unset;margin-right:calc(.75rem * -1);margin-right:calc(var(--pep-spacing-md, .75rem) * -1)}.vertical-separator{display:none}"]
|
|
209
|
+
styles: [":host{height:inherit;display:block}.pep-textarea-container ::ng-deep.mat-form-field-infix,.pepperi-textarea-container ::ng-deep.mat-form-field-infix{margin-left:calc(.75rem * -1);margin-left:calc(var(--pep-spacing-md, .75rem) * -1)}.pep-textarea-container.right-alignment ::ng-deep.mat-form-field-infix,.pepperi-textarea-container.right-alignment ::ng-deep.mat-form-field-infix{margin-left:unset;margin-right:calc(.75rem * -1);margin-right:calc(var(--pep-spacing-md, .75rem) * -1)}.vertical-separator{display:none}", ".mat-form-field.mat-form-field-disabled .mat-form-field-flex{color:#1a1a1a;color:hsl(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%))}.right-alignment quill-editor.inline-quill .ql-container .ql-editor{padding-right:unset;padding-left:calc(.5rem + 1rem);padding-left:calc(var(--pep-spacing-sm, .5rem) + 1rem)}quill-editor.inline-quill .ql-container .ql-editor{width:calc(100% + 1rem);padding-right:calc(.5rem + 1rem);padding-right:calc(var(--pep-spacing-sm, .5rem) + 1rem)}quill-editor .ql-toolbar{display:flex;padding:0!important;border:unset}quill-editor .ql-toolbar .ql-transparent{opacity:.9}quill-editor .ql-toolbar .ql-formats{margin-right:0!important;margin-bottom:.5rem}quill-editor .ql-toolbar .ql-formats button{height:2.5rem}quill-editor .ql-toolbar .ql-formats button svg{width:1.25rem!important;float:unset!important}quill-editor .ql-toolbar .ql-formats button.ql-active{box-shadow:0 .125rem .25rem 0 rgba(26,26,26,.08);box-shadow:var(--pep-shadow-xs-offset,0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.08);position:relative}quill-editor .ql-toolbar .ql-formats button.ql-active:not(.keep-background-on-focus){background:#fff;background:hsl(var(--pep-color-system-primary-invert-h,255),var(--pep-color-system-primary-invert-s,100%),var(--pep-color-system-primary-invert-l,100%))}quill-editor .ql-toolbar .ql-formats button.ql-active:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;top:0;bottom:0;left:0;right:0;border-radius:inherit;border:1px solid #1a1a1a;border:1px solid hsl(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%))}quill-editor .ql-toolbar .ql-formats button:focus{box-shadow:0 .125rem .25rem 0 rgba(26,26,26,.08);box-shadow:var(--pep-shadow-xs-offset,0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.08);position:relative}quill-editor .ql-toolbar .ql-formats button:focus:not(.keep-background-on-focus){background:#fff;background:hsl(var(--pep-color-system-primary-invert-h,255),var(--pep-color-system-primary-invert-s,100%),var(--pep-color-system-primary-invert-l,100%))}quill-editor .ql-toolbar .ql-formats button:focus:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;top:0;bottom:0;left:0;right:0;border-radius:inherit;border:1px solid #1a1a1a;border:1px solid hsl(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%))}quill-editor .ql-toolbar .ql-formats button:active{box-shadow:0 .125rem .25rem 0 rgba(26,26,26,.08);box-shadow:var(--pep-shadow-xs-offset,0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.08);position:relative}quill-editor .ql-toolbar .ql-formats button:active:not(.keep-background-on-focus){background:#fff;background:hsl(var(--pep-color-system-primary-invert-h,255),var(--pep-color-system-primary-invert-s,100%),var(--pep-color-system-primary-invert-l,100%))}quill-editor .ql-toolbar .ql-formats button:active:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;top:0;bottom:0;left:0;right:0;border-radius:inherit;border:1px solid #1a1a1a;border:1px solid hsl(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%))}quill-editor .ql-toolbar .ql-formats .ql-stroke{stroke:rgba(26,26,26,.8);stroke:hsla(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%),.8)}quill-editor .ql-toolbar .ql-formats .ql-fill{fill:rgba(26,26,26,.8);fill:hsla(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%),.8)}quill-editor .ql-toolbar .ql-formats .ql-picker:not(.ql-color-picker) .ql-picker-options .ql-picker-item{outline:unset!important;width:100%;height:auto;padding:.25rem .5rem;padding:var(--pep-spacing-xs,.25rem) var(--pep-spacing-sm,.5rem);display:grid}quill-editor .ql-toolbar .ql-formats .ql-picker:not(.ql-color-picker) .ql-picker-options .ql-picker-item:hover{background:rgba(26,26,26,.16);background:hsla(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%),.16)}quill-editor .ql-toolbar .ql-formats .ql-picker:not(.ql-color-picker) .ql-picker-options .ql-picker-item:active{box-shadow:0 .125rem .25rem 0 rgba(26,26,26,.08);box-shadow:var(--pep-shadow-xs-offset,0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.08);background:rgba(26,26,26,.24)!important;background:hsla(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%),.24)!important}quill-editor .ql-toolbar .ql-formats .ql-picker:not(.ql-color-picker) .ql-picker-options .ql-picker-item:active:not(.keep-background-on-focus){background:#fff;background:hsl(var(--pep-color-system-primary-invert-h,255),var(--pep-color-system-primary-invert-s,100%),var(--pep-color-system-primary-invert-l,100%))}quill-editor .ql-toolbar .ql-formats .ql-picker:not(.ql-color-picker) .ql-picker-options .ql-picker-item:disabled{box-shadow:unset;border:unset;color:rgba(26,26,26,.35)!important;color:hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.35)!important;background:rgba(26,26,26,.04)!important;background:hsla(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%),.04)!important}quill-editor .ql-toolbar .ql-formats .ql-picker:not(.ql-color-picker) .ql-picker-options .ql-picker-item:disabled:after{border:unset}quill-editor .ql-toolbar .ql-formats .ql-picker:not(.ql-color-picker) .ql-picker-options .ql-picker-item:disabled .svg-icon{fill:rgba(26,26,26,.35);fill:hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.35)}quill-editor .ql-toolbar .ql-formats .ql-picker:not(.ql-color-picker) .ql-picker-options .ql-picker-item:disabled .svg-icon.stroke{fill:unset;stroke:rgba(26,26,26,.35);stroke:hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.35)}quill-editor .ql-toolbar .ql-formats .ql-picker.ql-color-picker,quill-editor .ql-toolbar .ql-formats .ql-picker.ql-icon-picker{width:unset}quill-editor .ql-toolbar .ql-formats .ql-picker .ql-picker-label{outline:none;display:grid;grid-auto-flow:column;align-items:center;line-height:1rem;border:unset}quill-editor .ql-toolbar .ql-formats .ql-picker .ql-picker-label svg{width:1.5rem}quill-editor .ql-toolbar .ql-formats .ql-picker .ql-picker-label:after{content:url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgaWQ9InN2ZzQiCiAgIHZlcnNpb249IjEuMSIKICAgdmlld0JveD0iMCAwIDI0IDI0IgogICBoZWlnaHQ9IjE2IgogICB3aWR0aD0iMTYiPgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTEwIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzOCIgLz4KICA8cGF0aAogICAgIGlkPSJwYXRoMiIKICAgICBkPSJNNS44MDAzMjE0OCw5LjI4Njc0MzU0IEwxMS4yNTQyODI0LDEzLjIwMjc1ODMgQzExLjY2NjEzMDksMTMuNTg1MDgzIDEyLjMzMzg2OTEsMTMuNTg1MDgzIDEyLjc0NTcxNzYsMTMuMjAyNzU4MyBMMTguMTk5Njc4NSw5LjI4Njc0MzU0IEMxOC42MTE1MjcsOC45MDQ0MTg4MiAxOS4yNzkyNjUyLDguOTA0NDE4ODIgMTkuNjkxMTEzNyw5LjI4Njc0MzU0IEMyMC4xMDI5NjIxLDkuNjY5MDY4MjYgMjAuMTAyOTYyMSwxMC4yODg5MzkxIDE5LjY5MTExMzcsMTAuNjcxMjYzOCBMMTMuNDkxNDM1MSwxNi40MjY1MTI5IEMxMi42Njc3MzgzLDE3LjE5MTE2MjQgMTEuMzMyMjYxNywxNy4xOTExNjI0IDEwLjUwODU2NDksMTYuNDI2NTEyOSBMNC4zMDg4ODYzMywxMC42NzEyNjM4IEMzLjg5NzAzNzg5LDEwLjI4ODkzOTEgMy44OTcwMzc4OSw5LjY2OTA2ODI2IDQuMzA4ODg2MzMsOS4yODY3NDM1NCBDNC43MjA3MzQ3OCw4LjkwNDQxODgyIDUuMzg4NDczMDMsOC45MDQ0MTg4MiA1LjgwMDMyMTQ4LDkuMjg2NzQzNTQgWiIKICAgICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgICAgZmlsbC1vcGFjaXR5PSIuNSIgLz4KPC9zdmc+Cg==\");cursor:pointer;display:grid;height:inherit;justify-content:center;align-content:center}quill-editor .ql-toolbar .ql-formats .ql-picker.select-arrow .ql-picker-label:before{line-height:unset}quill-editor .ql-toolbar .ql-formats .ql-picker.select-arrow .ql-picker-label svg{display:none}quill-editor .ql-toolbar .ql-formats .ql-picker .ql-picker-options{border-radius:.25rem;border-radius:var(--pep-border-radius-md,.25rem);box-sizing:content-box;padding:unset;box-shadow:0 .25rem .5rem 0 rgba(26,26,26,.32);box-shadow:var(--pep-shadow-sm-offset,0 .25rem .5rem 0) hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.32);border:1px solid #1a1a1a;border:1px solid hsl(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%))}quill-editor .ql-toolbar .ql-formats .ql-picker.ql-color-picker .ql-picker-options{padding:.25rem .5rem;padding:var(--pep-spacing-xs,.25rem) var(--pep-spacing-sm,.5rem);width:140px}quill-editor .ql-toolbar .ql-formats .ql-picker.ql-color-picker .ql-picker-options .ql-picker-item:focus,quill-editor .ql-toolbar .ql-formats .ql-picker.ql-color-picker .ql-picker-options:focus{outline:unset!important}quill-editor .ql-toolbar .ql-formats .ql-picker.ql-expanded{box-shadow:0 .125rem .25rem 0 rgba(26,26,26,.08);box-shadow:var(--pep-shadow-xs-offset,0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.08);position:relative}quill-editor .ql-toolbar .ql-formats .ql-picker.ql-expanded:not(.keep-background-on-focus){background:#fff;background:hsl(var(--pep-color-system-primary-invert-h,255),var(--pep-color-system-primary-invert-s,100%),var(--pep-color-system-primary-invert-l,100%))}quill-editor .ql-toolbar .ql-formats .ql-picker.ql-expanded:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;top:0;bottom:0;left:0;right:0;border-radius:inherit;border:1px solid #1a1a1a;border:1px solid hsl(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%))}quill-editor .ql-toolbar .ql-formats .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#1766a6;stroke:hsl(var(--pep-color-text-link-h,207),var(--pep-color-text-link-s,76%),var(--pep-color-text-link-l,37%))}quill-editor .ql-toolbar .ql-formats .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#1766a6;fill:hsl(var(--pep-color-text-link-h,207),var(--pep-color-text-link-s,76%),var(--pep-color-text-link-l,37%))}quill-editor .ql-toolbar .ql-formats .ql-picker.ql-expanded .ql-picker-label{border:unset}quill-editor .ql-toolbar .vertical-separator{border-color:rgba(26,26,26,.24);border-color:hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.24)}@media (max-width:568px){quill-editor .ql-toolbar .ql-list{display:none}}@media (max-width:599px){quill-editor .ql-toolbar .ql-italic,quill-editor .ql-toolbar .ql-underline{display:none}}@media (max-width:460px){quill-editor .ql-toolbar .ql-header,quill-editor .ql-toolbar .ql-image,quill-editor .ql-toolbar .ql-italic,quill-editor .ql-toolbar .ql-list,quill-editor .ql-toolbar .ql-underline{display:none}}quill-editor .ql-container{height:16rem;border:unset;border-top:1px solid rgba(26,26,26,.24)!important;border-top:1px solid hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.24)!important}quill-editor .ql-container .ql-editor{padding:.5rem 0;padding:var(--pep-spacing-sm,.5rem) 0}quill-editor .ql-container .ql-editor.ql-blank:before{right:0;left:0}quill-editor .ql-container .ql-tooltip.ql-flip{left:0!important}"]
|
|
206
210
|
},] }
|
|
207
211
|
];
|
|
208
212
|
PepRichHtmlTextareaComponent.ctorParameters = function () { return [
|
|
@@ -226,6 +230,7 @@
|
|
|
226
230
|
form: [{ type: core.Input }],
|
|
227
231
|
isActive: [{ type: core.Input }],
|
|
228
232
|
showTitle: [{ type: core.Input }],
|
|
233
|
+
renderTitle: [{ type: core.Input }],
|
|
229
234
|
layoutType: [{ type: core.Input }],
|
|
230
235
|
inlineMode: [{ type: core.Input }],
|
|
231
236
|
toolbarOptions: [{ type: core.Input }],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pepperi-addons-ngx-lib-rich-html-textarea.umd.js","sources":["../../../projects/ngx-lib/rich-html-textarea/rich-html-textarea.component.ts","../../../projects/ngx-lib/rich-html-textarea/rich-html-textarea.module.ts","../../../projects/ngx-lib/rich-html-textarea/public-api.ts","../../../projects/ngx-lib/rich-html-textarea/pepperi-addons-ngx-lib-rich-html-textarea.ts"],"sourcesContent":["import {\n Component,\n OnInit,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n OnDestroy,\n ElementRef,\n Renderer2,\n TemplateRef,\n ViewChild,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport {\n PepLayoutType,\n PepCustomizationService,\n PepHorizontalAlignment,\n DEFAULT_HORIZONTAL_ALIGNMENT,\n PepRichHtmlTextareaField,\n} from '@pepperi-addons/ngx-lib';\nimport {\n PepDialogService,\n PepDialogData,\n} from '@pepperi-addons/ngx-lib/dialog';\nimport { SafeHtml, DomSanitizer } from '@angular/platform-browser';\n\nexport interface IPepRichHtmlTextareaToolbarOptions {\n font?: any;\n size?: any;\n header?: any;\n bold?: any;\n italic?: any;\n underline?: any;\n strike?: any;\n link?: any;\n image?: any;\n ordered?: any;\n bullet?: any;\n color?: any;\n background?: any;\n align?: any;\n}\n\n@Component({\n selector: 'pep-rich-html-textarea',\n templateUrl: './rich-html-textarea.component.html',\n styleUrls: ['./rich-html-textarea.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepRichHtmlTextareaComponent\n implements OnInit, OnChanges, 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() 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 controlType = 'richhtmltextarea';\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 @Input() inlineMode = false;\n\n protected _toolbarOptions: IPepRichHtmlTextareaToolbarOptions;\n @Input()\n get toolbarOptions(): IPepRichHtmlTextareaToolbarOptions {\n return this._toolbarOptions;\n }\n set toolbarOptions(options: IPepRichHtmlTextareaToolbarOptions) {\n if (options) {\n this._toolbarOptions = options;\n }\n }\n\n @Output()\n valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n @ViewChild('richTextEditorDialogTemplate', { read: TemplateRef })\n richTextEditorDialogTemplate: TemplateRef<any>;\n quillContent = '';\n quillContentDialog = '';\n\n fieldHeight = '';\n standAlone = false;\n active = false;\n\n constructor(\n private sanitizer: DomSanitizer,\n private dialogService: PepDialogService,\n private customizationService: PepCustomizationService,\n private renderer: Renderer2,\n private element: ElementRef\n ) {\n this.toolbarOptions = this.getDefaultToolbarOptions();\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 PepRichHtmlTextareaField({\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 this.quillContent = this.value;\n }\n\n ngOnChanges(): void {\n if (this.standAlone) {\n this.setDefaultForm();\n }\n }\n\n ngOnDestroy(): void {\n //\n }\n\n getDefaultToolbarOptions(): IPepRichHtmlTextareaToolbarOptions {\n return {\n font: false,\n size: false,\n header: true,\n bold: true,\n italic: true,\n underline: true,\n strike: false,\n link: true,\n image: true,\n ordered: true,\n bullet: true,\n color: true,\n background: false,\n align: true,\n };\n }\n\n changeValue(value: any): void {\n if (value !== this.value) {\n this.value = value;\n this.quillContent = 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 // minWidth: '50vw',\n // maxWidth: '90vw',\n // maxHeight: '90vh',\n },\n 'large'\n );\n\n // If disabled open regular modal as html mode.\n if (this.disabled || this.readonly) {\n const data = new PepDialogData({\n title: this.label,\n content: this.quillContent,\n showFooter: false,\n });\n this.dialogService.openDefaultDialog(data, config);\n } else {\n this.quillContentDialog = this.quillContent;\n const dialogRef = this.dialogService.openDialog(\n this.richTextEditorDialogTemplate,\n {},\n config\n );\n\n dialogRef.afterClosed().subscribe((value) => {\n if (value !== undefined && value !== null) {\n this.changeValue(value);\n }\n });\n }\n }\n\n // Init quillContent in case that there are html tags...\n onEditorCreated(quill: any, inDialog: boolean): void {\n if (!inDialog) {\n this.quillContent = quill.getText();\n }\n }\n\n onContentChanged(obj: any, inDialog: boolean): void {\n if (inDialog) {\n this.quillContentDialog = obj.html;\n } else {\n this.quillContent = obj.html;\n }\n }\n\n onBlur(obj: any, inDialog: boolean): void {\n if (!inDialog) {\n this.active = false;\n this.changeValue(this.quillContent);\n }\n }\n\n onFocus(obj: any, inDialog: boolean): void {\n if (!inDialog) {\n this.active = true;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormsModule } 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 { MatMenuModule } from '@angular/material/menu';\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 { QuillModule } from 'ngx-quill';\n\nimport { PepRichHtmlTextareaComponent } from './rich-html-textarea.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n // Material modules,\n MatCommonModule,\n MatButtonModule,\n MatFormFieldModule,\n MatInputModule,\n MatMenuModule,\n MatIconModule,\n MatDialogModule,\n // External modules\n QuillModule.forRoot(),\n // ngx-lib modules\n PepNgxLibModule,\n PepIconModule,\n PepFieldTitleModule,\n PepTextboxIconModule,\n PepDialogModule,\n ],\n exports: [PepRichHtmlTextareaComponent],\n declarations: [PepRichHtmlTextareaComponent],\n})\nexport class PepRichHtmlTextareaModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconSystemEdit,\n pepIconSystemClose,\n ]);\n }\n}\n","/*\n * Public API Surface of ngx-lib/rich-html-textarea\n */\nexport * from './rich-html-textarea.module';\nexport * from './rich-html-textarea.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DEFAULT_HORIZONTAL_ALIGNMENT","EventEmitter","PepRichHtmlTextareaField","PepCustomizationService","PepDialogData","Component","ChangeDetectionStrategy","DomSanitizer","PepDialogService","Renderer2","ElementRef","Input","Output","ViewChild","TemplateRef","pepIconSystemEdit","pepIconSystemClose","NgModule","CommonModule","ReactiveFormsModule","FormsModule","MatCommonModule","MatButtonModule","MatFormFieldModule","MatInputModule","MatMenuModule","MatIconModule","MatDialogModule","QuillModule","PepNgxLibModule","PepIconModule","PepFieldTitleModule","PepTextboxIconModule","PepDialogModule","PepIconRegistry"],"mappings":";;;;;;;QAsII,sCACY,SAAuB,EACvB,aAA+B,EAC/B,oBAA6C,EAC7C,QAAmB,EACnB,OAAmB;YAJnB,cAAS,GAAT,SAAS,CAAc;YACvB,kBAAa,GAAb,aAAa,CAAkB;YAC/B,yBAAoB,GAApB,oBAAoB,CAAyB;YAC7C,aAAQ,GAAR,QAAQ,CAAW;YACnB,YAAO,GAAP,OAAO,CAAY;YArFtB,QAAG,GAAG,EAAE,CAAC;YACT,UAAK,GAAG,EAAE,CAAC;YACX,UAAK,GAAG,EAAE,CAAC;YACX,cAAS,GAAG,KAAK,CAAC;YAClB,aAAQ,GAAG,KAAK,CAAC;YACjB,aAAQ,GAAG,KAAK,CAAC;YAEjB,eAAU,GAA2BA,mCAA4B,CAAC;YAEnE,aAAQ,GAAG,CAAC,CAAC;YAUb,aAAQ,GAAG,IAAI,CAAC;YAoBxB,gBAAW,GAAG,kBAAkB,CAAC;YAExB,SAAI,GAAc,IAAI,CAAC;YACvB,aAAQ,GAAG,KAAK,CAAC;YACjB,cAAS,GAAG,IAAI,CAAC;YAElB,gBAAW,GAAkB,MAAM,CAAC;YAUnC,eAAU,GAAG,KAAK,CAAC;YAc5B,gBAAW,GAAyB,IAAIC,iBAAY,EAAU,CAAC;YAI/D,iBAAY,GAAG,EAAE,CAAC;YAClB,uBAAkB,GAAG,EAAE,CAAC;YAExB,gBAAW,GAAG,EAAE,CAAC;YACjB,eAAU,GAAG,KAAK,CAAC;YACnB,WAAM,GAAG,KAAK,CAAC;YASX,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACzD;QA9ED,sBACI,iDAAO;iBAIX;gBACI,OAAO,IAAI,CAAC,QAAQ,CAAC;aACxB;iBAPD,UACY,KAAK;gBACb,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACtB,IAAI,CAAC,cAAc,EAAE,CAAC;aACzB;;;WAAA;QAMD,sBACI,iDAAO;iBAcX;gBACI,OAAO,IAAI,CAAC,QAAQ,CAAC;aACxB;iBAjBD,UACY,OAAgB;gBACxB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;gBACxB,IAAI,OAAO,EAAE;oBACT,IAAI,CAAC,QAAQ,CAAC,WAAW,CACrB,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,gBAAgB,CACnB,CAAC;iBACL;qBAAM;oBACH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAClB,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,gBAAgB,CACnB,CAAC;iBACL;aACJ;;;WAAA;QAYD,sBACI,oDAAU;iBAId;gBACI,OAAO,IAAI,CAAC,WAAW,CAAC;aAC3B;iBAPD,UACe,KAAoB;gBAC/B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,IAAI,CAAC,cAAc,EAAE,CAAC;aACzB;;;WAAA;QAQD,sBACI,wDAAc;iBADlB;gBAEI,OAAO,IAAI,CAAC,eAAe,CAAC;aAC/B;iBACD,UAAmB,OAA2C;gBAC1D,IAAI,OAAO,EAAE;oBACT,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;iBAClC;aACJ;;;WALA;QA6BO,qDAAc,GAAd;YACJ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAC7D,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,UAAU,CAClB,CAAC;SACL;QAEO,qDAAc,GAAd;YACJ,IAAM,QAAQ,GAAG,IAAIC,+BAAwB,CAAC;gBAC1C,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;aAC9C,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;SACvE;QAED,+CAAQ,GAAR;YACI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;gBACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,CAAC,cAAc,EAAE,CAAC;gBAEtB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAClB,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1BC,8BAAuB,CAAC,4BAA4B,CACvD,CAAC;aACL;YAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;SAClC;QAED,kDAAW,GAAX;YACI,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,cAAc,EAAE,CAAC;aACzB;SACJ;QAED,kDAAW,GAAX;;SAEC;QAED,+DAAwB,GAAxB;YACI,OAAO;gBACH,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,IAAI;gBACZ,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,IAAI;gBACX,UAAU,EAAE,KAAK;gBACjB,KAAK,EAAE,IAAI;aACd,CAAC;SACL;QAED,kDAAW,GAAX,UAAY,KAAU;YAClB,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;gBACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC1B,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAC1C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,GAAG,EACR,KAAK,CACR,CAAC;gBACF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAChC;SACJ;QAED,0DAAmB,GAAnB,UAAoB,KAAU;YAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QAED,iDAAU,GAAV;YAAA,iBAgCC;YA/BG,IAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAC7C;;;;aAIC,EACD,OAAO,CACV,CAAC;;YAGF,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAChC,IAAM,IAAI,GAAG,IAAIC,oBAAa,CAAC;oBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,OAAO,EAAE,IAAI,CAAC,YAAY;oBAC1B,UAAU,EAAE,KAAK;iBACpB,CAAC,CAAC;gBACH,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;aACtD;iBAAM;gBACH,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC;gBAC5C,IAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAC3C,IAAI,CAAC,4BAA4B,EACjC,EAAE,EACF,MAAM,CACT,CAAC;gBAEF,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,UAAC,KAAK;oBACpC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;wBACvC,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;qBAC3B;iBACJ,CAAC,CAAC;aACN;SACJ;;QAGD,sDAAe,GAAf,UAAgB,KAAU,EAAE,QAAiB;YACzC,IAAI,CAAC,QAAQ,EAAE;gBACX,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;aACvC;SACJ;QAED,uDAAgB,GAAhB,UAAiB,GAAQ,EAAE,QAAiB;YACxC,IAAI,QAAQ,EAAE;gBACV,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC,IAAI,CAAC;aACtC;iBAAM;gBACH,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC;aAChC;SACJ;QAED,6CAAM,GAAN,UAAO,GAAQ,EAAE,QAAiB;YAC9B,IAAI,CAAC,QAAQ,EAAE;gBACX,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aACvC;SACJ;QAED,8CAAO,GAAP,UAAQ,GAAQ,EAAE,QAAiB;YAC/B,IAAI,CAAC,QAAQ,EAAE;gBACX,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;aACtB;SACJ;;;;gBA/OJC,cAAS,SAAC;oBACP,QAAQ,EAAE,wBAAwB;oBAClC,4yWAAkD;oBAElD,eAAe,EAAEC,4BAAuB,CAAC,MAAM;;iBAClD;;;gBAxBkBC,4BAAY;gBAH3BC,uBAAgB;gBANhBL,8BAAuB;gBATvBM,cAAS;gBADTC,eAAU;;;sBA8CTC,UAAK;wBACLA,UAAK;wBACLA,UAAK;4BACLA,UAAK;2BACLA,UAAK;2BACLA,UAAK;qCACLA,UAAK;6BACLA,UAAK;0BAGLA,UAAK;0BAULA,UAAK;uBAqBLA,UAAK;2BACLA,UAAK;4BACLA,UAAK;6BAGLA,UAAK;6BASLA,UAAK;iCAGLA,UAAK;8BAULC,WAAM;+CAGNC,cAAS,SAAC,8BAA8B,EAAE,EAAE,IAAI,EAAEC,gBAAW,EAAE;;;;QCxEhE,mCAAoB,eAAgC;YAAhC,oBAAe,GAAf,eAAe,CAAiB;YAChD,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;gBAC/BC,sBAAiB;gBACjBC,uBAAkB;aACrB,CAAC,CAAC;SACN;;;;gBA/BJC,aAAQ,SAAC;oBACN,OAAO,EAAE;wBACLC,mBAAY;wBACZC,yBAAmB;wBACnBC,iBAAW;;wBAEXC,sBAAe;wBACfC,sBAAe;wBACfC,4BAAkB;wBAClBC,oBAAc;wBACdC,kBAAa;wBACbC,oBAAa;wBACbC,wBAAe;;wBAEfC,oBAAW,CAAC,OAAO,EAAE;;wBAErBC,sBAAe;wBACfC,kBAAa;wBACbC,8BAAmB;wBACnBC,gCAAoB;wBACpBC,sBAAe;qBAClB;oBACD,OAAO,EAAE,CAAC,4BAA4B,CAAC;oBACvC,YAAY,EAAE,CAAC,4BAA4B,CAAC;iBAC/C;;;gBApCGC,oBAAe;;;ICfnB;;;;ICAA;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"pepperi-addons-ngx-lib-rich-html-textarea.umd.js","sources":["../../../projects/ngx-lib/rich-html-textarea/rich-html-textarea.component.ts","../../../projects/ngx-lib/rich-html-textarea/rich-html-textarea.module.ts","../../../projects/ngx-lib/rich-html-textarea/public-api.ts","../../../projects/ngx-lib/rich-html-textarea/pepperi-addons-ngx-lib-rich-html-textarea.ts"],"sourcesContent":["import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy,\r\n OnDestroy,\r\n ElementRef,\r\n Renderer2,\r\n TemplateRef,\r\n ViewChild,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport {\r\n PepLayoutType,\r\n PepCustomizationService,\r\n PepHorizontalAlignment,\r\n DEFAULT_HORIZONTAL_ALIGNMENT,\r\n PepRichHtmlTextareaField,\r\n} from '@pepperi-addons/ngx-lib';\r\nimport {\r\n PepDialogService,\r\n PepDialogData,\r\n} from '@pepperi-addons/ngx-lib/dialog';\r\nimport { SafeHtml, DomSanitizer } from '@angular/platform-browser';\r\n\r\nexport interface IPepRichHtmlTextareaToolbarOptions {\r\n font?: any;\r\n size?: any;\r\n header?: any;\r\n bold?: any;\r\n italic?: any;\r\n underline?: any;\r\n strike?: any;\r\n link?: any;\r\n image?: any;\r\n ordered?: any;\r\n bullet?: any;\r\n color?: any;\r\n background?: any;\r\n align?: any;\r\n}\r\n\r\n@Component({\r\n selector: 'pep-rich-html-textarea',\r\n templateUrl: './rich-html-textarea.component.html',\r\n styleUrls: ['./rich-html-textarea.component.scss', './rich-html-textarea.component.theme.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PepRichHtmlTextareaComponent\r\n implements OnInit, OnChanges, OnDestroy {\r\n @Input() key = '';\r\n @Input() value = '';\r\n @Input() label = '';\r\n @Input() mandatory = false;\r\n @Input() disabled = false;\r\n @Input() readonly = false;\r\n @Input() maxFieldCharacters: number;\r\n @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\r\n\r\n private _rowSpan = 1;\r\n @Input()\r\n set rowSpan(value) {\r\n this._rowSpan = value;\r\n this.setFieldHeight();\r\n }\r\n get rowSpan(): number {\r\n return this._rowSpan;\r\n }\r\n\r\n private _visible = true;\r\n @Input()\r\n set visible(visible: boolean) {\r\n this._visible = visible;\r\n if (visible) {\r\n this.renderer.removeClass(\r\n this.element.nativeElement,\r\n 'hidden-element'\r\n );\r\n } else {\r\n this.renderer.addClass(\r\n this.element.nativeElement,\r\n 'hidden-element'\r\n );\r\n }\r\n }\r\n get visible(): boolean {\r\n return this._visible;\r\n }\r\n\r\n controlType = 'richhtmltextarea';\r\n\r\n @Input() form: FormGroup = null;\r\n @Input() isActive = false;\r\n @Input() showTitle = true;\r\n @Input() renderTitle = true;\r\n\r\n private _layoutType: PepLayoutType = 'form';\r\n @Input()\r\n set layoutType(value: PepLayoutType) {\r\n this._layoutType = value;\r\n this.setFieldHeight();\r\n }\r\n get layoutType(): PepLayoutType {\r\n return this._layoutType;\r\n }\r\n\r\n @Input() inlineMode = false;\r\n\r\n protected _toolbarOptions: IPepRichHtmlTextareaToolbarOptions;\r\n @Input()\r\n get toolbarOptions(): IPepRichHtmlTextareaToolbarOptions {\r\n return this._toolbarOptions;\r\n }\r\n set toolbarOptions(options: IPepRichHtmlTextareaToolbarOptions) {\r\n if (options) {\r\n this._toolbarOptions = options;\r\n }\r\n }\r\n\r\n @Output()\r\n valueChange: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n @ViewChild('richTextEditorDialogTemplate', { read: TemplateRef })\r\n richTextEditorDialogTemplate: TemplateRef<any>;\r\n quillContent = '';\r\n quillContentDialog = '';\r\n\r\n fieldHeight = '';\r\n standAlone = false;\r\n active = false;\r\n\r\n constructor(\r\n private sanitizer: DomSanitizer,\r\n private dialogService: PepDialogService,\r\n private customizationService: PepCustomizationService,\r\n private renderer: Renderer2,\r\n private element: ElementRef\r\n ) {\r\n this.toolbarOptions = this.getDefaultToolbarOptions();\r\n }\r\n\r\n private setFieldHeight(): void {\r\n this.fieldHeight = this.customizationService.calculateFieldHeight(\r\n this.layoutType,\r\n this.rowSpan,\r\n this.standAlone\r\n );\r\n }\r\n\r\n private setDefaultForm(): void {\r\n const pepField = new PepRichHtmlTextareaField({\r\n key: this.key,\r\n value: this.value,\r\n mandatory: this.mandatory,\r\n readonly: this.readonly,\r\n disabled: this.disabled,\r\n maxFieldCharacters: this.maxFieldCharacters,\r\n });\r\n this.form = this.customizationService.getDefaultFromGroup(pepField);\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.form === null) {\r\n this.standAlone = true;\r\n this.setFieldHeight();\r\n this.setDefaultForm();\r\n\r\n this.renderer.addClass(\r\n this.element.nativeElement,\r\n PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME\r\n );\r\n\r\n if (!this.renderTitle) {\r\n this.renderer.addClass(\r\n this.element.nativeElement,\r\n PepCustomizationService.STAND_ALONE_FIELD_NO_SPACING_CLASS_NAME\r\n );\r\n }\r\n }\r\n\r\n this.quillContent = this.value;\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (this.standAlone) {\r\n this.setDefaultForm();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n //\r\n }\r\n\r\n getDefaultToolbarOptions(): IPepRichHtmlTextareaToolbarOptions {\r\n return {\r\n font: false,\r\n size: false,\r\n header: true,\r\n bold: true,\r\n italic: true,\r\n underline: true,\r\n strike: false,\r\n link: true,\r\n image: true,\r\n ordered: true,\r\n bullet: true,\r\n color: true,\r\n background: false,\r\n align: true,\r\n };\r\n }\r\n\r\n changeValue(value: any): void {\r\n if (value !== this.value) {\r\n this.value = value;\r\n this.quillContent = value;\r\n this.customizationService.updateFormFieldValue(\r\n this.form,\r\n this.key,\r\n value\r\n );\r\n this.valueChange.emit(value);\r\n }\r\n }\r\n\r\n cardTemplateClicked(event: any): void {\r\n this.openDialog();\r\n }\r\n\r\n openDialog(): void {\r\n const config = this.dialogService.getDialogConfig(\r\n {\r\n // minWidth: '50vw',\r\n // maxWidth: '90vw',\r\n // maxHeight: '90vh',\r\n },\r\n 'large'\r\n );\r\n\r\n // If disabled open regular modal as html mode.\r\n if (this.disabled || this.readonly) {\r\n const data = new PepDialogData({\r\n title: this.label,\r\n content: this.quillContent,\r\n showFooter: false,\r\n });\r\n this.dialogService.openDefaultDialog(data, config);\r\n } else {\r\n this.quillContentDialog = this.quillContent;\r\n const dialogRef = this.dialogService.openDialog(\r\n this.richTextEditorDialogTemplate,\r\n {},\r\n config\r\n );\r\n\r\n dialogRef.afterClosed().subscribe((value) => {\r\n if (value !== undefined && value !== null) {\r\n this.changeValue(value);\r\n }\r\n });\r\n }\r\n }\r\n\r\n // Init quillContent in case that there are html tags...\r\n onEditorCreated(quill: any, inDialog: boolean): void {\r\n if (!inDialog) {\r\n this.quillContent = quill.getText();\r\n }\r\n }\r\n\r\n onContentChanged(obj: any, inDialog: boolean): void {\r\n if (inDialog) {\r\n this.quillContentDialog = obj.html;\r\n } else {\r\n this.quillContent = obj.html;\r\n }\r\n }\r\n\r\n onBlur(obj: any, inDialog: boolean): void {\r\n if (!inDialog) {\r\n this.active = false;\r\n this.changeValue(this.quillContent);\r\n }\r\n }\r\n\r\n onFocus(obj: any, inDialog: boolean): void {\r\n if (!inDialog) {\r\n this.active = true;\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\n\r\nimport { MatCommonModule } from '@angular/material/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\n\r\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\r\nimport {\r\n PepIconModule,\r\n PepIconRegistry,\r\n pepIconSystemEdit,\r\n pepIconSystemClose,\r\n} from '@pepperi-addons/ngx-lib/icon';\r\nimport { PepTextboxIconModule } from '@pepperi-addons/ngx-lib/textbox-icon';\r\nimport { PepFieldTitleModule } from '@pepperi-addons/ngx-lib/field-title';\r\nimport { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';\r\n\r\nimport { QuillModule } from 'ngx-quill';\r\n\r\nimport { PepRichHtmlTextareaComponent } from './rich-html-textarea.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n // Material modules,\r\n MatCommonModule,\r\n MatButtonModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatDialogModule,\r\n // External modules\r\n QuillModule.forRoot(),\r\n // ngx-lib modules\r\n PepNgxLibModule,\r\n PepIconModule,\r\n PepFieldTitleModule,\r\n PepTextboxIconModule,\r\n PepDialogModule,\r\n ],\r\n exports: [PepRichHtmlTextareaComponent],\r\n declarations: [PepRichHtmlTextareaComponent],\r\n})\r\nexport class PepRichHtmlTextareaModule {\r\n constructor(private pepIconRegistry: PepIconRegistry) {\r\n this.pepIconRegistry.registerIcons([\r\n pepIconSystemEdit,\r\n pepIconSystemClose,\r\n ]);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ngx-lib/rich-html-textarea\r\n */\r\nexport * from './rich-html-textarea.module';\r\nexport * from './rich-html-textarea.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DEFAULT_HORIZONTAL_ALIGNMENT","EventEmitter","PepRichHtmlTextareaField","PepCustomizationService","PepDialogData","Component","ChangeDetectionStrategy","DomSanitizer","PepDialogService","Renderer2","ElementRef","Input","Output","ViewChild","TemplateRef","pepIconSystemEdit","pepIconSystemClose","NgModule","CommonModule","ReactiveFormsModule","FormsModule","MatCommonModule","MatButtonModule","MatFormFieldModule","MatInputModule","MatMenuModule","MatIconModule","MatDialogModule","QuillModule","PepNgxLibModule","PepIconModule","PepFieldTitleModule","PepTextboxIconModule","PepDialogModule","PepIconRegistry"],"mappings":"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"}
|
|
@@ -218,7 +218,7 @@
|
|
|
218
218
|
PepSearchComponent.decorators = [
|
|
219
219
|
{ type: core.Component, args: [{
|
|
220
220
|
selector: 'pep-search',
|
|
221
|
-
template: "<!-- <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: false, hasParent: false }\">\n</ng-container> -->\n<ng-container *ngIf=\"shrinkInSmallScreen; then shrinkBlock; else staticBlock\"></ng-container>\n<ng-template #shrinkBlock>\n <div pepRtlClass class=\"pep-search-container {{ sizeType }}\" [ngClass]=\"{ 'pep-floating-search': isFloating}\"\n [@fadeInOut]=\"fadeState\">\n <div class=\"pep-search-input\">\n <ng-container *ngIf=\"type === 'auto-complete'\">\n <ng-container *ngTemplateOutlet=\"autoCompleteBlock\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"type === 'regular'\">\n <ng-container *ngTemplateOutlet=\"regularBlock\"></ng-container>\n </ng-container>\n </div>\n </div>\n <button *ngIf=\"isFloating && fadeState !='fadeIn' && showFloatSrcBtn\"\n class=\"pep-button icon-button {{ sizeType }} weak\" mat-button (click)=\"animateSearch()\">\n <mat-icon>\n <pep-icon name=\"system_search\"></pep-icon>\n </mat-icon>\n </button>\n</ng-template>\n<ng-template #staticBlock>\n <div pepRtlClass class=\"pep-search-container {{ sizeType }}\">\n <div class=\"pep-search-input\">\n <ng-container *ngIf=\"type === 'auto-complete'\">\n <ng-container *ngTemplateOutlet=\"autoCompleteBlock\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"type === 'regular'\">\n <ng-container *ngTemplateOutlet=\"regularBlock\"></ng-container>\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #autoCompleteBlock>\n <mat-form-field appearance=\"outline\">\n <!-- (@slideInOut.done)=\"animateSearchDone()\" [@slideInOut]=\"state\" -->\n <input #searchInput class=\"body-sm pep-search-input\" matInput autocomplete=\"off\"\n [ngStyle]=\"{ textAlign: isRtl ? 'right' : 'left' }\" type=\"text\" (keyup.enter)=\"onSearch($event)\" results=\"5\"\n [formControl]=\"searchControl\" placeholder=\"{{ 'SEARCH.HINT' | translate }}...\" [matAutocomplete]=\"auto\" />\n <mat-autocomplete #auto=\"matAutocomplete\" class=\"pep-select\">\n <mat-option *ngFor=\"let value of autoCompleteValues\" [value]=\"value\" (click)=\"triggerSearch()\">\n {{value}}\n </mat-option>\n <mat-option *ngIf=\"autoCompleteValues?.length > autoCompleteTop - 1\" [value]=\"value\"\n (click)=\"triggerSearch()\">{{ 'SEARCH.MORE_RESULTS' | translate }}</mat-option>\n </mat-autocomplete>\n <div matSuffix class=\"flex align-center\">\n <ng-container *ngIf=\"triggerOn === 'click'\">\n <ng-container *ngTemplateOutlet=\"triggerOnClickBlock\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"triggerOn === 'keydown'\">\n <ng-container *ngTemplateOutlet=\"triggerOnKeydownBlock\"></ng-container>\n </ng-container>\n </div>\n </mat-form-field>\n</ng-template>\n\n<ng-template #regularBlock>\n <mat-form-field appearance=\"outline\">\n <input #searchInput class=\"body-sm pep-search-input\" matInput autocomplete=\"off\"\n [ngStyle]=\"{ textAlign: isRtl ? 'right' : 'left' }\" type=\"text\" (keyup.enter)=\"onSearch($event)\"\n [formControl]=\"searchControl\" placeholder=\"{{ 'SEARCH.HINT' | translate }}...\" />\n <div matSuffix class=\"flex align-center\">\n <ng-container *ngIf=\"triggerOn === 'click'\">\n <ng-container *ngTemplateOutlet=\"triggerOnClickBlock\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"triggerOn === 'keydown'\">\n <ng-container *ngTemplateOutlet=\"triggerOnKeydownBlock\"></ng-container>\n </ng-container>\n </div>\n </mat-form-field>\n</ng-template>\n\n<ng-template #triggerOnClickBlock>\n <!-- <ng-container *ngIf=\"(state == 'open' && searchControl.value?.length > 0)\"> -->\n <ng-container *ngIf=\"(state == 'open')\">\n <mat-icon class=\"pep-text-icon pep-pointer\" (click)=\"onClearClicked($event)\">\n <pep-icon name=\"system_close\"></pep-icon>\n </mat-icon>\n <span class=\"pep-text-icon pep-spacing-element pep-v-separator\">|</span>\n </ng-container>\n <mat-icon class=\"pep-text-icon pep-pointer\" (click)=\"onSearchClicked()\">\n <pep-icon name=\"system_search\"></pep-icon>\n </mat-icon>\n</ng-template>\n\n<ng-template #triggerOnKeydownBlock>\n <ng-container *ngIf=\"searchControl.value?.length > 0; then clearBlock; else searchBlock\"></ng-container>\n <ng-template #clearBlock>\n <button class=\"pep-button regular {{ sizeType }}\" mat-button (click)=\"onClearClicked($event)\">\n <mat-icon>\n <pep-icon name=\"system_close\"></pep-icon>\n </mat-icon>\n </button>\n </ng-template>\n <ng-template #searchBlock>\n <mat-icon class=\"pep-text-icon\">\n <pep-icon name=\"system_search\"></pep-icon>\n </mat-icon>\n </ng-template>\n</ng-template>",
|
|
221
|
+
template: "<!-- <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: false, hasParent: false }\">\r\n</ng-container> -->\r\n<ng-container *ngIf=\"shrinkInSmallScreen; then shrinkBlock; else staticBlock\"></ng-container>\r\n<ng-template #shrinkBlock>\r\n <div pepRtlClass class=\"pep-search-container {{ sizeType }}\" [ngClass]=\"{ 'pep-floating-search': isFloating}\"\r\n [@fadeInOut]=\"fadeState\">\r\n <div class=\"pep-search-input\">\r\n <ng-container *ngIf=\"type === 'auto-complete'\">\r\n <ng-container *ngTemplateOutlet=\"autoCompleteBlock\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"type === 'regular'\">\r\n <ng-container *ngTemplateOutlet=\"regularBlock\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <button *ngIf=\"isFloating && fadeState !='fadeIn' && showFloatSrcBtn\"\r\n class=\"pep-button icon-button {{ sizeType }} weak\" mat-button (click)=\"animateSearch()\">\r\n <mat-icon>\r\n <pep-icon name=\"system_search\"></pep-icon>\r\n </mat-icon>\r\n </button>\r\n</ng-template>\r\n<ng-template #staticBlock>\r\n <div pepRtlClass class=\"pep-search-container {{ sizeType }}\">\r\n <div class=\"pep-search-input\">\r\n <ng-container *ngIf=\"type === 'auto-complete'\">\r\n <ng-container *ngTemplateOutlet=\"autoCompleteBlock\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"type === 'regular'\">\r\n <ng-container *ngTemplateOutlet=\"regularBlock\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #autoCompleteBlock>\r\n <mat-form-field appearance=\"outline\">\r\n <!-- (@slideInOut.done)=\"animateSearchDone()\" [@slideInOut]=\"state\" -->\r\n <input #searchInput class=\"body-sm pep-search-input\" matInput autocomplete=\"off\"\r\n [ngStyle]=\"{ textAlign: isRtl ? 'right' : 'left' }\" type=\"text\" (keyup.enter)=\"onSearch($event)\" results=\"5\"\r\n [formControl]=\"searchControl\" placeholder=\"{{ 'SEARCH.HINT' | translate }}...\" [matAutocomplete]=\"auto\" />\r\n <mat-autocomplete #auto=\"matAutocomplete\" class=\"pep-select\">\r\n <mat-option *ngFor=\"let value of autoCompleteValues\" [value]=\"value\" (click)=\"triggerSearch()\">\r\n {{value}}\r\n </mat-option>\r\n <mat-option *ngIf=\"autoCompleteValues?.length > autoCompleteTop - 1\" [value]=\"value\"\r\n (click)=\"triggerSearch()\">{{ 'SEARCH.MORE_RESULTS' | translate }}</mat-option>\r\n </mat-autocomplete>\r\n <div matSuffix class=\"flex align-center\">\r\n <ng-container *ngIf=\"triggerOn === 'click'\">\r\n <ng-container *ngTemplateOutlet=\"triggerOnClickBlock\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"triggerOn === 'keydown'\">\r\n <ng-container *ngTemplateOutlet=\"triggerOnKeydownBlock\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </mat-form-field>\r\n</ng-template>\r\n\r\n<ng-template #regularBlock>\r\n <mat-form-field appearance=\"outline\">\r\n <input #searchInput class=\"body-sm pep-search-input\" matInput autocomplete=\"off\"\r\n [ngStyle]=\"{ textAlign: isRtl ? 'right' : 'left' }\" type=\"text\" (keyup.enter)=\"onSearch($event)\"\r\n [formControl]=\"searchControl\" placeholder=\"{{ 'SEARCH.HINT' | translate }}...\" />\r\n <div matSuffix class=\"flex align-center\">\r\n <ng-container *ngIf=\"triggerOn === 'click'\">\r\n <ng-container *ngTemplateOutlet=\"triggerOnClickBlock\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"triggerOn === 'keydown'\">\r\n <ng-container *ngTemplateOutlet=\"triggerOnKeydownBlock\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </mat-form-field>\r\n</ng-template>\r\n\r\n<ng-template #triggerOnClickBlock>\r\n <!-- <ng-container *ngIf=\"(state == 'open' && searchControl.value?.length > 0)\"> -->\r\n <ng-container *ngIf=\"(state == 'open')\">\r\n <mat-icon class=\"pep-text-icon pep-pointer\" (click)=\"onClearClicked($event)\">\r\n <pep-icon name=\"system_close\"></pep-icon>\r\n </mat-icon>\r\n <span class=\"pep-text-icon pep-spacing-element pep-v-separator\">|</span>\r\n </ng-container>\r\n <mat-icon class=\"pep-text-icon pep-pointer\" (click)=\"onSearchClicked()\">\r\n <pep-icon name=\"system_search\"></pep-icon>\r\n </mat-icon>\r\n</ng-template>\r\n\r\n<ng-template #triggerOnKeydownBlock>\r\n <ng-container *ngIf=\"searchControl.value?.length > 0; then clearBlock; else searchBlock\"></ng-container>\r\n <ng-template #clearBlock>\r\n <button class=\"pep-button regular {{ sizeType }}\" mat-button (click)=\"onClearClicked($event)\">\r\n <mat-icon>\r\n <pep-icon name=\"system_close\"></pep-icon>\r\n </mat-icon>\r\n </button>\r\n </ng-template>\r\n <ng-template #searchBlock>\r\n <mat-icon class=\"pep-text-icon\">\r\n <pep-icon name=\"system_search\"></pep-icon>\r\n </mat-icon>\r\n </ng-template>\r\n</ng-template>",
|
|
222
222
|
animations: [
|
|
223
223
|
animations.trigger('slideInOut', [
|
|
224
224
|
animations.state('close', animations.style({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pepperi-addons-ngx-lib-search.umd.js","sources":["../../../projects/ngx-lib/search/search.component.ts","../../../projects/ngx-lib/search/search.module.ts","../../../projects/ngx-lib/search/public-api.ts","../../../projects/ngx-lib/search/pepperi-addons-ngx-lib-search.ts"],"sourcesContent":["import {\n Component,\n OnInit,\n Injectable,\n Input,\n OnDestroy,\n Output,\n EventEmitter,\n ViewChild,\n ElementRef,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport {\n trigger,\n state,\n style,\n transition,\n animate,\n} from '@angular/animations';\nimport { FormControl } from '@angular/forms';\nimport {\n PepLayoutService,\n PepScreenSizeType,\n PepSizeType,\n} from '@pepperi-addons/ngx-lib';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport {\n IPepSearchClickEvent,\n IPepSearchAutocompleteChangeEvent,\n IPepSearchStateChangeEvent,\n PepSearchType,\n PepSearchTriggerType,\n} from './search.model';\n\n@Component({\n selector: 'pep-search',\n templateUrl: './search.component.html',\n styleUrls: ['./search.component.scss'],\n animations: [\n trigger('slideInOut', [\n state(\n 'close',\n style({\n width: '0',\n padding: '0',\n border: 'none',\n })\n ),\n state(\n 'open',\n style({\n width: 'inherit',\n })\n ),\n transition('close => open', animate('500ms ease-in-out')),\n transition('open => close', animate('500ms ease-in-out')),\n ]),\n trigger('fadeInOut', [\n state(\n 'fadeOut',\n style({\n opacity: 0,\n width: '1px',\n })\n ),\n state(\n 'fadeIn',\n style({\n opacity: 1,\n width: '100%',\n })\n ),\n transition(\n 'fadeOut => fadeIn',\n animate(300, style({ opacity: 1, width: '100%' }))\n ),\n transition(\n 'fadeIn => fadeOut',\n animate(350, style({ opacity: 0, width: '1px' }))\n ),\n ]),\n ],\n})\n@Injectable()\nexport class PepSearchComponent implements OnInit, OnDestroy {\n @Input() triggerOn: PepSearchTriggerType = 'click';\n @Input() autoCompleteTop = 20;\n private _autoCompleteValues = [];\n @Input()\n set autoCompleteValues(val: any[]) {\n this.type = 'auto-complete';\n this._autoCompleteValues = val;\n }\n get autoCompleteValues(): any[] {\n return this._autoCompleteValues;\n }\n\n @Input() shrinkInSmallScreen = true;\n\n @Input()\n set value(val: string) {\n this.createSearchControlIfNotExist();\n this.searchControl.setValue(val);\n }\n get value(): string {\n return this.searchControl.value || '';\n }\n\n private _searchControl: FormControl = null;\n @Input()\n set searchControl(ctrl: FormControl) {\n this._searchControl = ctrl;\n }\n get searchControl(): FormControl {\n return this._searchControl;\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 /**\n * The size of the button.\n *\n * @type {PepSizeType}\n * @memberof PepButtonComponent\n */\n @Input() sizeType: PepSizeType = 'md';\n\n @Output()\n search: EventEmitter<IPepSearchClickEvent> = new EventEmitter<IPepSearchClickEvent>();\n @Output()\n autocompleteChange: EventEmitter<IPepSearchAutocompleteChangeEvent> = new EventEmitter<IPepSearchAutocompleteChangeEvent>();\n @Output()\n stateChange: EventEmitter<IPepSearchStateChangeEvent> = new EventEmitter<IPepSearchStateChangeEvent>();\n\n @ViewChild('searchInput') searchInput: ElementRef;\n\n private readonly _destroyed = new Subject<void>();\n type: PepSearchType = 'regular';\n fadeState: 'fadeOut' | 'fadeIn';\n state: 'open' | 'close' = 'open';\n lastValue = null;\n showFloatSrcBtn = true;\n isRtl = false;\n isFloating = false;\n screenSize: PepScreenSizeType;\n\n constructor(\n private hostElement: ElementRef,\n private layoutService: PepLayoutService\n ) {\n //\n }\n\n ngOnInit(): void {\n this.layoutService.onResize$.pipe().subscribe((size) => {\n this.screenSize = size;\n\n if (this.shrinkInSmallScreen) {\n this.isFloating = this.screenSize > PepScreenSizeType.SM;\n }\n\n // Just for the smoote animation\n if (this.isFloating) {\n this.showFloatSrcBtn = false;\n\n this.showFloatingButton();\n } else {\n this.fadeState = 'fadeIn';\n }\n });\n\n this.isRtl = this.layoutService.isRtl();\n this.createSearchControlIfNotExist();\n\n this.searchControl.valueChanges\n .pipe(debounceTime(1000), takeUntil(this._destroyed))\n .subscribe((newValue) => {\n if (this.type === 'auto-complete') {\n this.autoCompleteValues = [];\n if (\n newValue &&\n newValue.length > 2 &&\n newValue !== this.lastValue\n ) {\n this.autocompleteChange.emit({\n value: newValue,\n top: this.autoCompleteTop,\n });\n }\n } else if (this.type === 'regular') {\n if (this.triggerOn === 'keydown') {\n this.emitSearchClick();\n }\n }\n });\n }\n\n ngOnDestroy(): void {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n private exportFunctionsOnHostElement() {\n // This is for web component usage for use those functions.\n this.hostElement.nativeElement.initSearch = this.initSearch.bind(this);\n }\n\n private createSearchControlIfNotExist(): void {\n if (!this.searchControl) {\n this.searchControl = new FormControl();\n }\n }\n\n private blur() {\n setTimeout(() => {\n this.searchInput.nativeElement.blur();\n }, 0);\n }\n\n private showFloatingButton() {\n this.fadeState = 'fadeOut';\n\n setTimeout(() => {\n this.stateChange.emit({ state: 'close' });\n this.showFloatSrcBtn = true;\n }, 500);\n\n // close the phone keyboard\n this.blur();\n }\n\n initSearch() {\n this.lastValue = null;\n this.searchControl.setValue('');\n }\n\n onClearClicked(event: any) {\n if (this.type === 'auto-complete') {\n this.autoCompleteValues = [];\n }\n\n this.initSearch();\n this.search.emit({ value: '' });\n\n event.preventDefault();\n\n if (this.isFloating) {\n this.showFloatingButton();\n }\n }\n\n onSearchClicked() {\n if (this.isFloating) {\n this.triggerSearch();\n } else {\n if (this.state === 'open') {\n this.triggerSearch();\n } else {\n this.state = 'open';\n }\n }\n }\n\n onSearch(event: Event) {\n // Stop the event propagation - cause we don't want fire two events.\n event.stopPropagation();\n this.triggerSearch();\n }\n\n triggerSearch() {\n if (this.type === 'auto-complete') {\n this.autoCompleteValues = [];\n }\n\n this.blur();\n this.emitSearchClick();\n }\n\n animateSearch() {\n if (this.state === 'open') {\n this.fadeState =\n this.fadeState === 'fadeOut' ? 'fadeIn' : 'fadeOut';\n if (this.fadeState === 'fadeIn') {\n this.stateChange.emit({ state: 'open' });\n this.showFloatSrcBtn = false;\n this.searchInput.nativeElement.focus();\n }\n } else {\n this.fadeState = 'fadeIn';\n }\n }\n\n // do the emit just when done because of the line break when closing the search\n // component and showen all other components before\n animateSearchDone() {\n if (this.state !== 'open') {\n this.stateChange.emit({ state: 'close' });\n }\n }\n\n emitSearchClick() {\n const value = this.searchControl.value;\n\n if (value !== this.lastValue) {\n this.lastValue = value;\n this.search.emit({ value });\n }\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 { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconSystemClose,\n pepIconSystemSearch,\n} from '@pepperi-addons/ngx-lib/icon';\n\nimport { PepSearchComponent } from './search.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n // Material modules,\n MatCommonModule,\n MatAutocompleteModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepIconModule,\n MatInputModule,\n ],\n exports: [PepSearchComponent],\n declarations: [PepSearchComponent],\n})\nexport class PepSearchModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconSystemClose,\n pepIconSystemSearch,\n ]);\n }\n}\n","/*\n * Public API Surface of ngx-lib/search\n */\nexport * from './search.module';\nexport * from './search.model';\nexport * from './search.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["EventEmitter","Subject","PepScreenSizeType","debounceTime","takeUntil","FormControl","Component","trigger","state","style","transition","animate","Injectable","ElementRef","PepLayoutService","Input","Output","ViewChild","pepIconSystemClose","pepIconSystemSearch","NgModule","CommonModule","ReactiveFormsModule","MatCommonModule","MatAutocompleteModule","MatButtonModule","MatFormFieldModule","MatIconModule","PepNgxLibModule","PepIconModule","MatInputModule","PepIconRegistry"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pepperi-addons-ngx-lib-search.umd.js","sources":["../../../projects/ngx-lib/search/search.component.ts","../../../projects/ngx-lib/search/search.module.ts","../../../projects/ngx-lib/search/public-api.ts","../../../projects/ngx-lib/search/pepperi-addons-ngx-lib-search.ts"],"sourcesContent":["import {\r\n Component,\r\n OnInit,\r\n Injectable,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n ElementRef,\r\n} from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\nimport { FormControl } from '@angular/forms';\r\nimport {\r\n PepLayoutService,\r\n PepScreenSizeType,\r\n PepSizeType,\r\n} from '@pepperi-addons/ngx-lib';\r\nimport { debounceTime, takeUntil } from 'rxjs/operators';\r\nimport {\r\n IPepSearchClickEvent,\r\n IPepSearchAutocompleteChangeEvent,\r\n IPepSearchStateChangeEvent,\r\n PepSearchType,\r\n PepSearchTriggerType,\r\n} from './search.model';\r\n\r\n@Component({\r\n selector: 'pep-search',\r\n templateUrl: './search.component.html',\r\n styleUrls: ['./search.component.scss'],\r\n animations: [\r\n trigger('slideInOut', [\r\n state(\r\n 'close',\r\n style({\r\n width: '0',\r\n padding: '0',\r\n border: 'none',\r\n })\r\n ),\r\n state(\r\n 'open',\r\n style({\r\n width: 'inherit',\r\n })\r\n ),\r\n transition('close => open', animate('500ms ease-in-out')),\r\n transition('open => close', animate('500ms ease-in-out')),\r\n ]),\r\n trigger('fadeInOut', [\r\n state(\r\n 'fadeOut',\r\n style({\r\n opacity: 0,\r\n width: '1px',\r\n })\r\n ),\r\n state(\r\n 'fadeIn',\r\n style({\r\n opacity: 1,\r\n width: '100%',\r\n })\r\n ),\r\n transition(\r\n 'fadeOut => fadeIn',\r\n animate(300, style({ opacity: 1, width: '100%' }))\r\n ),\r\n transition(\r\n 'fadeIn => fadeOut',\r\n animate(350, style({ opacity: 0, width: '1px' }))\r\n ),\r\n ]),\r\n ],\r\n})\r\n@Injectable()\r\nexport class PepSearchComponent implements OnInit, OnDestroy {\r\n @Input() triggerOn: PepSearchTriggerType = 'click';\r\n @Input() autoCompleteTop = 20;\r\n private _autoCompleteValues = [];\r\n @Input()\r\n set autoCompleteValues(val: any[]) {\r\n this.type = 'auto-complete';\r\n this._autoCompleteValues = val;\r\n }\r\n get autoCompleteValues(): any[] {\r\n return this._autoCompleteValues;\r\n }\r\n\r\n @Input() shrinkInSmallScreen = true;\r\n\r\n @Input()\r\n set value(val: string) {\r\n this.createSearchControlIfNotExist();\r\n this.searchControl.setValue(val);\r\n }\r\n get value(): string {\r\n return this.searchControl.value || '';\r\n }\r\n\r\n private _searchControl: FormControl = null;\r\n @Input()\r\n set searchControl(ctrl: FormControl) {\r\n this._searchControl = ctrl;\r\n }\r\n get searchControl(): FormControl {\r\n return this._searchControl;\r\n }\r\n\r\n private _useAsWebComponent = false;\r\n @Input()\r\n set useAsWebComponent(value: boolean) {\r\n if (value) {\r\n this.exportFunctionsOnHostElement();\r\n }\r\n }\r\n get useAsWebComponent(): boolean {\r\n return this._useAsWebComponent;\r\n }\r\n\r\n /**\r\n * The size of the button.\r\n *\r\n * @type {PepSizeType}\r\n * @memberof PepButtonComponent\r\n */\r\n @Input() sizeType: PepSizeType = 'md';\r\n\r\n @Output()\r\n search: EventEmitter<IPepSearchClickEvent> = new EventEmitter<IPepSearchClickEvent>();\r\n @Output()\r\n autocompleteChange: EventEmitter<IPepSearchAutocompleteChangeEvent> = new EventEmitter<IPepSearchAutocompleteChangeEvent>();\r\n @Output()\r\n stateChange: EventEmitter<IPepSearchStateChangeEvent> = new EventEmitter<IPepSearchStateChangeEvent>();\r\n\r\n @ViewChild('searchInput') searchInput: ElementRef;\r\n\r\n private readonly _destroyed = new Subject<void>();\r\n type: PepSearchType = 'regular';\r\n fadeState: 'fadeOut' | 'fadeIn';\r\n state: 'open' | 'close' = 'open';\r\n lastValue = null;\r\n showFloatSrcBtn = true;\r\n isRtl = false;\r\n isFloating = false;\r\n screenSize: PepScreenSizeType;\r\n\r\n constructor(\r\n private hostElement: ElementRef,\r\n private layoutService: PepLayoutService\r\n ) {\r\n //\r\n }\r\n\r\n ngOnInit(): void {\r\n this.layoutService.onResize$.pipe().subscribe((size) => {\r\n this.screenSize = size;\r\n\r\n if (this.shrinkInSmallScreen) {\r\n this.isFloating = this.screenSize > PepScreenSizeType.SM;\r\n }\r\n\r\n // Just for the smoote animation\r\n if (this.isFloating) {\r\n this.showFloatSrcBtn = false;\r\n\r\n this.showFloatingButton();\r\n } else {\r\n this.fadeState = 'fadeIn';\r\n }\r\n });\r\n\r\n this.isRtl = this.layoutService.isRtl();\r\n this.createSearchControlIfNotExist();\r\n\r\n this.searchControl.valueChanges\r\n .pipe(debounceTime(1000), takeUntil(this._destroyed))\r\n .subscribe((newValue) => {\r\n if (this.type === 'auto-complete') {\r\n this.autoCompleteValues = [];\r\n if (\r\n newValue &&\r\n newValue.length > 2 &&\r\n newValue !== this.lastValue\r\n ) {\r\n this.autocompleteChange.emit({\r\n value: newValue,\r\n top: this.autoCompleteTop,\r\n });\r\n }\r\n } else if (this.type === 'regular') {\r\n if (this.triggerOn === 'keydown') {\r\n this.emitSearchClick();\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._destroyed.next();\r\n this._destroyed.complete();\r\n }\r\n\r\n private exportFunctionsOnHostElement() {\r\n // This is for web component usage for use those functions.\r\n this.hostElement.nativeElement.initSearch = this.initSearch.bind(this);\r\n }\r\n\r\n private createSearchControlIfNotExist(): void {\r\n if (!this.searchControl) {\r\n this.searchControl = new FormControl();\r\n }\r\n }\r\n\r\n private blur() {\r\n setTimeout(() => {\r\n this.searchInput.nativeElement.blur();\r\n }, 0);\r\n }\r\n\r\n private showFloatingButton() {\r\n this.fadeState = 'fadeOut';\r\n\r\n setTimeout(() => {\r\n this.stateChange.emit({ state: 'close' });\r\n this.showFloatSrcBtn = true;\r\n }, 500);\r\n\r\n // close the phone keyboard\r\n this.blur();\r\n }\r\n\r\n initSearch() {\r\n this.lastValue = null;\r\n this.searchControl.setValue('');\r\n }\r\n\r\n onClearClicked(event: any) {\r\n if (this.type === 'auto-complete') {\r\n this.autoCompleteValues = [];\r\n }\r\n\r\n this.initSearch();\r\n this.search.emit({ value: '' });\r\n\r\n event.preventDefault();\r\n\r\n if (this.isFloating) {\r\n this.showFloatingButton();\r\n }\r\n }\r\n\r\n onSearchClicked() {\r\n if (this.isFloating) {\r\n this.triggerSearch();\r\n } else {\r\n if (this.state === 'open') {\r\n this.triggerSearch();\r\n } else {\r\n this.state = 'open';\r\n }\r\n }\r\n }\r\n\r\n onSearch(event: Event) {\r\n // Stop the event propagation - cause we don't want fire two events.\r\n event.stopPropagation();\r\n this.triggerSearch();\r\n }\r\n\r\n triggerSearch() {\r\n if (this.type === 'auto-complete') {\r\n this.autoCompleteValues = [];\r\n }\r\n\r\n this.blur();\r\n this.emitSearchClick();\r\n }\r\n\r\n animateSearch() {\r\n if (this.state === 'open') {\r\n this.fadeState =\r\n this.fadeState === 'fadeOut' ? 'fadeIn' : 'fadeOut';\r\n if (this.fadeState === 'fadeIn') {\r\n this.stateChange.emit({ state: 'open' });\r\n this.showFloatSrcBtn = false;\r\n this.searchInput.nativeElement.focus();\r\n }\r\n } else {\r\n this.fadeState = 'fadeIn';\r\n }\r\n }\r\n\r\n // do the emit just when done because of the line break when closing the search\r\n // component and showen all other components before\r\n animateSearchDone() {\r\n if (this.state !== 'open') {\r\n this.stateChange.emit({ state: 'close' });\r\n }\r\n }\r\n\r\n emitSearchClick() {\r\n const value = this.searchControl.value;\r\n\r\n if (value !== this.lastValue) {\r\n this.lastValue = value;\r\n this.search.emit({ value });\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { MatCommonModule } from '@angular/material/core';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\n\r\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\r\nimport {\r\n PepIconModule,\r\n PepIconRegistry,\r\n pepIconSystemClose,\r\n pepIconSystemSearch,\r\n} from '@pepperi-addons/ngx-lib/icon';\r\n\r\nimport { PepSearchComponent } from './search.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n // Material modules,\r\n MatCommonModule,\r\n MatAutocompleteModule,\r\n MatButtonModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n // ngx-lib modules\r\n PepNgxLibModule,\r\n PepIconModule,\r\n MatInputModule,\r\n ],\r\n exports: [PepSearchComponent],\r\n declarations: [PepSearchComponent],\r\n})\r\nexport class PepSearchModule {\r\n constructor(private pepIconRegistry: PepIconRegistry) {\r\n this.pepIconRegistry.registerIcons([\r\n pepIconSystemClose,\r\n pepIconSystemSearch,\r\n ]);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ngx-lib/search\r\n */\r\nexport * from './search.module';\r\nexport * from './search.model';\r\nexport * from './search.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["EventEmitter","Subject","PepScreenSizeType","debounceTime","takeUntil","FormControl","Component","trigger","state","style","transition","animate","Injectable","ElementRef","PepLayoutService","Input","Output","ViewChild","pepIconSystemClose","pepIconSystemSearch","NgModule","CommonModule","ReactiveFormsModule","MatCommonModule","MatAutocompleteModule","MatButtonModule","MatFormFieldModule","MatIconModule","PepNgxLibModule","PepIconModule","MatInputModule","PepIconRegistry"],"mappings":"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"}
|
|
@@ -340,6 +340,7 @@
|
|
|
340
340
|
this.isActive = false;
|
|
341
341
|
this.showTitle = true;
|
|
342
342
|
this.emptyOption = true;
|
|
343
|
+
this.renderTitle = true;
|
|
343
344
|
this.valueChange = new core.EventEmitter();
|
|
344
345
|
this.formValidationChange = new core.EventEmitter();
|
|
345
346
|
this.standAlone = false;
|
|
@@ -445,6 +446,9 @@
|
|
|
445
446
|
this.standAlone = true;
|
|
446
447
|
this.setDefaultForm();
|
|
447
448
|
this.renderer.addClass(this.element.nativeElement, ngxLib.PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME);
|
|
449
|
+
if (!this.renderTitle) {
|
|
450
|
+
this.renderer.addClass(this.element.nativeElement, ngxLib.PepCustomizationService.STAND_ALONE_FIELD_NO_SPACING_CLASS_NAME);
|
|
451
|
+
}
|
|
448
452
|
}
|
|
449
453
|
};
|
|
450
454
|
PepSelectComponent.prototype.ngOnChanges = function (changes) {
|
|
@@ -512,9 +516,9 @@
|
|
|
512
516
|
PepSelectComponent.decorators = [
|
|
513
517
|
{ type: core.Component, args: [{
|
|
514
518
|
selector: 'pep-select',
|
|
515
|
-
template: "<ng-container [formGroup]=\"form\">\n <ng-template #pepTemplate>\n <ng-container *ngIf=\"type == 'multi'; then multiSelectBlock; else regularSelectBlock\"></ng-container>\n <ng-template #regularSelectBlock>\n <mat-form-field appearance=\"outline\" dir=\"{{ xAlignment === 'right' ? 'rtl' : 'ltr' }}\">\n <mat-select #select [required]=\"mandatory ? mandatory : undefined\" matInput disableOptionCentering\n class=\"body-sm text-align-{{ xAlignment }}\" [id]=\"key\"\n [ngClass]=\"{'right-alignment': xAlignment === 'right'}\"\n [placeholder]=\"disabled || readonly ? '' : ('SELECT.HINT' | translate)\"\n [(ngModel)]=\"selectedValueModel\" [ngModelOptions]=\"{standalone: true}\" [disabled]=\"disabled\"\n (selectionChange)=\"selectionChange($event)\" (openedChange)=\"openedChange($event)\"\n title=\"{{ fieldFormattedValue }}\">\n <mat-option *ngIf=\"emptyOption\" value=\"\" [title]=\"'LIST.NONE' | translate\">{{ 'LIST.NONE' |\n translate }}</mat-option>\n <mat-option *ngFor=\"let option of options\" [value]=\"option.key\" [title]=\"option.value\">{{\n option.value }}</mat-option>\n </mat-select>\n <mat-error>\n <span class=\"body-xs\" [title]=\"'MESSAGES.ERROR_IS_REQUIRED' | translate: {field: label}\"\n [innerText]=\"'MESSAGES.ERROR_IS_REQUIRED' | translate: {field: label}\"></span>\n </mat-error>\n </mat-form-field>\n </ng-template>\n <ng-template #multiSelectBlock>\n <mat-form-field appearance=\"outline\" dir=\"{{ xAlignment === 'right' ? 'rtl' : 'ltr' }}\">\n <mat-select #select multiple [required]=\"mandatory ? mandatory : undefined\" matInput\n disableOptionCentering class=\"body-sm text-align-{{ xAlignment }}\" [id]=\"key\"\n [ngClass]=\"{'right-alignment': xAlignment === 'right'}\"\n [placeholder]=\"disabled || readonly ? '' : ('SELECT.HINT' | translate)\"\n [(ngModel)]=\"selectedValuesModel\" [ngModelOptions]=\"{standalone: true}\" [disabled]=\"disabled\"\n (openedChange)=\"openedChange($event)\" title=\"{{ fieldFormattedValue }}\">\n <mat-option *ngFor=\"let option of options\" [value]=\"option.key\" [title]=\"option.value\">{{\n option.value }}</mat-option>\n </mat-select>\n <mat-error><span class=\"body-xs\" [title]=\"'MESSAGES.ERROR_IS_REQUIRED' | translate: {field: label}\"\n [innerText]=\"'MESSAGES.ERROR_IS_REQUIRED' | translate: {field: label}\"> </span>\n </mat-error>\n </mat-form-field>\n </ng-template>\n </ng-template>\n\n <ng-container *ngIf=\"layoutType === 'form'\">\n <pep-field-title *ngIf=\"!parentFieldKey\" [label]=\"label\" [mandatory]=\"mandatory\"
|
|
519
|
+
template: "<ng-container [formGroup]=\"form\">\r\n <ng-template #pepTemplate>\r\n <ng-container *ngIf=\"type == 'multi'; then multiSelectBlock; else regularSelectBlock\"></ng-container>\r\n <ng-template #regularSelectBlock>\r\n <mat-form-field appearance=\"outline\" dir=\"{{ xAlignment === 'right' ? 'rtl' : 'ltr' }}\">\r\n <mat-select #select [required]=\"mandatory ? mandatory : undefined\" matInput disableOptionCentering\r\n class=\"body-sm text-align-{{ xAlignment }}\" [id]=\"key\"\r\n [ngClass]=\"{'right-alignment': xAlignment === 'right'}\"\r\n [placeholder]=\"disabled || readonly ? '' : ('SELECT.HINT' | translate)\"\r\n [(ngModel)]=\"selectedValueModel\" [ngModelOptions]=\"{standalone: true}\" [disabled]=\"disabled\"\r\n (selectionChange)=\"selectionChange($event)\" (openedChange)=\"openedChange($event)\"\r\n title=\"{{ fieldFormattedValue }}\">\r\n <mat-option *ngIf=\"emptyOption\" value=\"\" [title]=\"'LIST.NONE' | translate\">{{ 'LIST.NONE' |\r\n translate }}</mat-option>\r\n <mat-option *ngFor=\"let option of options\" [value]=\"option.key\" [title]=\"option.value\">{{\r\n option.value }}</mat-option>\r\n </mat-select>\r\n <mat-error>\r\n <span class=\"body-xs\" [title]=\"'MESSAGES.ERROR_IS_REQUIRED' | translate: {field: label}\"\r\n [innerText]=\"'MESSAGES.ERROR_IS_REQUIRED' | translate: {field: label}\"></span>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n <ng-template #multiSelectBlock>\r\n <mat-form-field appearance=\"outline\" dir=\"{{ xAlignment === 'right' ? 'rtl' : 'ltr' }}\">\r\n <mat-select #select multiple [required]=\"mandatory ? mandatory : undefined\" matInput\r\n disableOptionCentering class=\"body-sm text-align-{{ xAlignment }}\" [id]=\"key\"\r\n [ngClass]=\"{'right-alignment': xAlignment === 'right'}\"\r\n [placeholder]=\"disabled || readonly ? '' : ('SELECT.HINT' | translate)\"\r\n [(ngModel)]=\"selectedValuesModel\" [ngModelOptions]=\"{standalone: true}\" [disabled]=\"disabled\"\r\n (openedChange)=\"openedChange($event)\" title=\"{{ fieldFormattedValue }}\">\r\n <mat-option *ngFor=\"let option of options\" [value]=\"option.key\" [title]=\"option.value\">{{\r\n option.value }}</mat-option>\r\n </mat-select>\r\n <mat-error><span class=\"body-xs\" [title]=\"'MESSAGES.ERROR_IS_REQUIRED' | translate: {field: label}\"\r\n [innerText]=\"'MESSAGES.ERROR_IS_REQUIRED' | translate: {field: label}\"> </span>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"layoutType === 'form'\">\r\n <pep-field-title *ngIf=\"!parentFieldKey && renderTitle\" [label]=\"label\" [mandatory]=\"mandatory\"\r\n [disabled]=\"disabled\" [xAlignment]=\"xAlignment\" [showTitle]=\"showTitle\">\r\n </pep-field-title>\r\n <ng-container *ngTemplateOutlet=\"pepTemplate\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"layoutType === 'card'\">\r\n <ng-container *ngIf=\"isInEditMode; then editBlock; else readOnlyBlock\"></ng-container>\r\n <ng-template #editBlock>\r\n <div [ngClass]=\"{'one-row': rowSpan === 1}\">\r\n <ng-container *ngTemplateOutlet=\"pepTemplate\"></ng-container>\r\n </div>\r\n </ng-template>\r\n <ng-template #readOnlyBlock>\r\n <div class=\"pep-card-input card-flex-container\"\r\n [ngClass]=\"{'one-row': rowSpan === 1, 'pep-button weak': isActive && !disabled}\"\r\n [class]=\"'text-align-' + xAlignment\" (click)=\"!disabled ? cardTemplateClicked($event) : ''\">\r\n <span *ngIf=\"showTitle && label != ''\" class=\"body-xs title\" title=\"{{ label }}\">{{ label\r\n }} </span>\r\n <span [id]=\"key\" title=\"{{ fieldFormattedValue }}\" class=\"body-sm value\">{{ fieldFormattedValue\r\n }}</span>\r\n <button *ngIf=\"isActive && !disabled\" class=\"pep-button weak card-edit-button\" mat-button>\r\n <mat-icon>\r\n <pep-icon name=\"system_edit\">\r\n </pep-icon>\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"layoutType === 'table'\">\r\n <ng-container *ngIf=\"isActive && !disabled; then selectedBlock; else notSelectedBlock\"></ng-container>\r\n <ng-template #selectedBlock>\r\n <ng-container *ngTemplateOutlet=\"pepTemplate\"></ng-container>\r\n </ng-template>\r\n <ng-template #notSelectedBlock>\r\n <span [id]=\"key\" class=\"body-sm pep-report-input\" [ngClass]=\"{readonly: disabled}\"\r\n title=\"{{ fieldFormattedValue }}\">{{ fieldFormattedValue }}</span>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>",
|
|
516
520
|
changeDetection: core.ChangeDetectionStrategy.OnPush,
|
|
517
|
-
styles: [":host{height:inherit;display:grid}:host>*{align-self:center}"]
|
|
521
|
+
styles: [":host{height:inherit;display:grid}:host>*{align-self:center}", ""]
|
|
518
522
|
},] }
|
|
519
523
|
];
|
|
520
524
|
PepSelectComponent.ctorParameters = function () { return [
|
|
@@ -540,6 +544,7 @@
|
|
|
540
544
|
isActive: [{ type: core.Input }],
|
|
541
545
|
showTitle: [{ type: core.Input }],
|
|
542
546
|
emptyOption: [{ type: core.Input }],
|
|
547
|
+
renderTitle: [{ type: core.Input }],
|
|
543
548
|
valueChange: [{ type: core.Output }],
|
|
544
549
|
formValidationChange: [{ type: core.Output }],
|
|
545
550
|
select: [{ type: core.ViewChild, args: ['select',] }]
|