ngx-wapp-components 1.8.2 → 1.8.4
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/ng-package.json +7 -0
- package/package.json +46 -53
- package/src/lib/button/w-button/w-button.component.html +85 -0
- package/src/lib/button/w-button/w-button.component.scss +227 -0
- package/src/lib/button/w-button/w-button.component.spec.ts +23 -0
- package/src/lib/button/w-button/w-button.component.ts +40 -0
- package/src/lib/button/w-buttons-footer/w-buttons-footer.component.html +3 -0
- package/src/lib/button/w-buttons-footer/w-buttons-footer.component.scss +11 -0
- package/src/lib/button/w-buttons-footer/w-buttons-footer.component.spec.ts +23 -0
- package/src/lib/button/w-buttons-footer/w-buttons-footer.component.ts +10 -0
- package/src/lib/button/w-radio-button/w-radio-button.component.html +31 -0
- package/src/lib/button/w-radio-button/w-radio-button.component.scss +114 -0
- package/src/lib/button/w-radio-button/w-radio-button.component.spec.ts +23 -0
- package/src/lib/button/w-radio-button/w-radio-button.component.ts +73 -0
- package/src/lib/button/w-select-button/w-select-button.component.html +29 -0
- package/src/lib/button/w-select-button/w-select-button.component.scss +64 -0
- package/src/lib/button/w-select-button/w-select-button.component.spec.ts +23 -0
- package/src/lib/button/w-select-button/w-select-button.component.ts +65 -0
- package/src/lib/button/w-toggle-button/w-toggle-button.component.html +33 -0
- package/src/lib/button/w-toggle-button/w-toggle-button.component.scss +116 -0
- package/src/lib/button/w-toggle-button/w-toggle-button.component.spec.ts +23 -0
- package/src/lib/button/w-toggle-button/w-toggle-button.component.ts +75 -0
- package/src/lib/edit/w-edit-calendar/w-edit-calendar.component.html +47 -0
- package/src/lib/edit/w-edit-calendar/w-edit-calendar.component.scss +96 -0
- package/src/lib/edit/w-edit-calendar/w-edit-calendar.component.spec.ts +23 -0
- package/src/lib/edit/w-edit-calendar/w-edit-calendar.component.ts +77 -0
- package/src/lib/edit/w-edit-checkbox/w-edit-checkbox.component.html +55 -0
- package/src/lib/edit/w-edit-checkbox/w-edit-checkbox.component.scss +127 -0
- package/src/lib/edit/w-edit-checkbox/w-edit-checkbox.component.spec.ts +23 -0
- package/src/lib/edit/w-edit-checkbox/w-edit-checkbox.component.ts +70 -0
- package/src/lib/edit/w-edit-input-number/w-edit-input-number.component.html +68 -0
- package/src/lib/edit/w-edit-input-number/w-edit-input-number.component.scss +247 -0
- package/src/lib/edit/w-edit-input-number/w-edit-input-number.component.spec.ts +23 -0
- package/src/lib/edit/w-edit-input-number/w-edit-input-number.component.ts +86 -0
- package/src/lib/edit/w-edit-input-text/w-edit-input-text.component.html +65 -0
- package/src/lib/edit/w-edit-input-text/w-edit-input-text.component.scss +220 -0
- package/src/lib/edit/w-edit-input-text/w-edit-input-text.component.spec.ts +23 -0
- package/src/lib/edit/w-edit-input-text/w-edit-input-text.component.ts +91 -0
- package/src/lib/edit/w-edit-input-textarea/w-edit-input-textarea.component.html +106 -0
- package/src/lib/edit/w-edit-input-textarea/w-edit-input-textarea.component.scss +213 -0
- package/src/lib/edit/w-edit-input-textarea/w-edit-input-textarea.component.spec.ts +23 -0
- package/src/lib/edit/w-edit-input-textarea/w-edit-input-textarea.component.ts +72 -0
- package/src/lib/edit/w-edit-multiselect/w-edit-multiselect.component.html +73 -0
- package/src/lib/edit/w-edit-multiselect/w-edit-multiselect.component.scss +330 -0
- package/src/lib/edit/w-edit-multiselect/w-edit-multiselect.component.spec.ts +23 -0
- package/src/lib/edit/w-edit-multiselect/w-edit-multiselect.component.ts +83 -0
- package/src/lib/edit/w-edit-select/w-edit-select.component.html +70 -0
- package/src/lib/edit/w-edit-select/w-edit-select.component.scss +188 -0
- package/src/lib/edit/w-edit-select/w-edit-select.component.spec.ts +23 -0
- package/src/lib/edit/w-edit-select/w-edit-select.component.ts +85 -0
- package/src/lib/edit/w-edit-toggle/w-edit-toggle.component.html +55 -0
- package/src/lib/edit/w-edit-toggle/w-edit-toggle.component.scss +86 -0
- package/src/lib/edit/w-edit-toggle/w-edit-toggle.component.spec.ts +23 -0
- package/src/lib/edit/w-edit-toggle/w-edit-toggle.component.ts +71 -0
- package/src/lib/edit/w-edit-treeselect/w-edit-treeselect.component.html +72 -0
- package/src/lib/edit/w-edit-treeselect/w-edit-treeselect.component.scss +205 -0
- package/src/lib/edit/w-edit-treeselect/w-edit-treeselect.component.spec.ts +23 -0
- package/src/lib/edit/w-edit-treeselect/w-edit-treeselect.component.ts +81 -0
- package/src/lib/file/w-image-cropper/w-image-cropper.component.html +150 -0
- package/src/lib/file/w-image-cropper/w-image-cropper.component.scss +55 -0
- package/src/lib/file/w-image-cropper/w-image-cropper.component.spec.ts +23 -0
- package/src/lib/file/w-image-cropper/w-image-cropper.component.ts +259 -0
- package/src/lib/file/w-image-file-uploader/w-image-file-uploader.component.html +100 -0
- package/src/lib/file/w-image-file-uploader/w-image-file-uploader.component.scss +77 -0
- package/src/lib/file/w-image-file-uploader/w-image-file-uploader.component.spec.ts +23 -0
- package/src/lib/file/w-image-file-uploader/w-image-file-uploader.component.ts +388 -0
- package/src/lib/file/w-preview-image/w-preview-image.component.css +0 -0
- package/src/lib/file/w-preview-image/w-preview-image.component.html +5 -0
- package/src/lib/file/w-preview-image/w-preview-image.component.spec.ts +23 -0
- package/src/lib/file/w-preview-image/w-preview-image.component.ts +17 -0
- package/src/lib/icons/icons.ts +116 -0
- package/src/lib/icons/wapping-icons/w-icons.component.ts +52 -0
- package/src/lib/layout/w-body/w-body.component.html +3 -0
- package/src/lib/layout/w-body/w-body.component.scss +13 -0
- package/src/lib/layout/w-body/w-body.component.spec.ts +23 -0
- package/src/lib/layout/w-body/w-body.component.ts +10 -0
- package/src/lib/layout/w-body-container/w-body-container.component.html +3 -0
- package/src/lib/layout/w-body-container/w-body-container.component.scss +58 -0
- package/src/lib/layout/w-body-container/w-body-container.component.spec.ts +23 -0
- package/src/lib/layout/w-body-container/w-body-container.component.ts +10 -0
- package/src/lib/layout/w-body-grid/w-body-grid.component.html +3 -0
- package/src/lib/layout/w-body-grid/w-body-grid.component.scss +59 -0
- package/src/lib/layout/w-body-grid/w-body-grid.component.spec.ts +23 -0
- package/src/lib/layout/w-body-grid/w-body-grid.component.ts +10 -0
- package/src/lib/layout/w-container/w-container.component.scss +9 -0
- package/src/lib/layout/w-container/w-container.component.ts +14 -0
- package/src/lib/layout/w-footer/w-footer.component.html +11 -0
- package/src/lib/layout/w-footer/w-footer.component.scss +17 -0
- package/src/lib/layout/w-footer/w-footer.component.spec.ts +23 -0
- package/src/lib/layout/w-footer/w-footer.component.ts +19 -0
- package/src/lib/layout/w-header-panel/w-header-panel.component.html +9 -0
- package/src/lib/layout/w-header-panel/w-header-panel.component.scss +29 -0
- package/src/lib/layout/w-header-panel/w-header-panel.component.spec.ts +23 -0
- package/src/lib/layout/w-header-panel/w-header-panel.component.ts +27 -0
- package/src/lib/layout/w-navbar/w-navbar.component.html +26 -0
- package/src/lib/layout/w-navbar/w-navbar.component.scss +26 -0
- package/src/lib/layout/w-navbar/w-navbar.component.spec.ts +23 -0
- package/src/lib/layout/w-navbar/w-navbar.component.ts +48 -0
- package/src/lib/layout/w-panel/w-panel.component.html +14 -0
- package/src/lib/layout/w-panel/w-panel.component.scss +122 -0
- package/src/lib/layout/w-panel/w-panel.component.spec.ts +23 -0
- package/src/lib/layout/w-panel/w-panel.component.ts +47 -0
- package/src/lib/layout/w-panel-grid/w-panel-grid.component.html +3 -0
- package/src/lib/layout/w-panel-grid/w-panel-grid.component.scss +58 -0
- package/src/lib/layout/w-panel-grid/w-panel-grid.component.spec.ts +23 -0
- package/src/lib/layout/w-panel-grid/w-panel-grid.component.ts +10 -0
- package/src/lib/layout/w-panel-subtitle/w-panel-subtitle.component.html +1 -0
- package/src/lib/layout/w-panel-subtitle/w-panel-subtitle.component.scss +6 -0
- package/src/lib/layout/w-panel-subtitle/w-panel-subtitle.component.spec.ts +23 -0
- package/src/lib/layout/w-panel-subtitle/w-panel-subtitle.component.ts +11 -0
- package/src/lib/layout/w-panel-title/w-panel-title.component.html +1 -0
- package/src/lib/layout/w-panel-title/w-panel-title.component.scss +6 -0
- package/src/lib/layout/w-panel-title/w-panel-title.component.spec.ts +23 -0
- package/src/lib/layout/w-panel-title/w-panel-title.component.ts +11 -0
- package/src/lib/logos/logos.ts +7 -0
- package/src/lib/logos/wapping-logos/w-logos.component.ts +47 -0
- package/src/lib/maps/w-maps/w-maps.component.html +43 -0
- package/src/lib/maps/w-maps/w-maps.component.scss +163 -0
- package/src/lib/maps/w-maps/w-maps.component.spec.ts +23 -0
- package/src/lib/maps/w-maps/w-maps.component.ts +151 -0
- package/src/lib/misc/w-badge/w-badge.component.html +3 -0
- package/src/lib/misc/w-badge/w-badge.component.scss +162 -0
- package/src/lib/misc/w-badge/w-badge.component.spec.ts +23 -0
- package/src/lib/misc/w-badge/w-badge.component.ts +13 -0
- package/src/lib/misc/w-chip/w-chip.component.html +27 -0
- package/src/lib/misc/w-chip/w-chip.component.scss +38 -0
- package/src/lib/misc/w-chip/w-chip.component.spec.ts +23 -0
- package/src/lib/misc/w-chip/w-chip.component.ts +35 -0
- package/src/lib/misc/w-filter-panel/w-filter-panel.component.html +312 -0
- package/src/lib/misc/w-filter-panel/w-filter-panel.component.scss +356 -0
- package/src/lib/misc/w-filter-panel/w-filter-panel.component.spec.ts +23 -0
- package/src/lib/misc/w-filter-panel/w-filter-panel.component.ts +457 -0
- package/src/lib/misc/w-filter-panel/w-list-field/w-list-field.component.html +21 -0
- package/src/lib/misc/w-filter-panel/w-list-field/w-list-field.component.scss +64 -0
- package/src/lib/misc/w-filter-panel/w-list-field/w-list-field.component.spec.ts +23 -0
- package/src/lib/misc/w-filter-panel/w-list-field/w-list-field.component.ts +73 -0
- package/src/lib/misc/w-timeline/w-timeline.component.html +44 -0
- package/src/lib/misc/w-timeline/w-timeline.component.scss +61 -0
- package/src/lib/misc/w-timeline/w-timeline.component.spec.ts +23 -0
- package/src/lib/misc/w-timeline/w-timeline.component.ts +27 -0
- package/src/lib/misc/w-wizard/w-wizard.component.html +72 -0
- package/src/lib/misc/w-wizard/w-wizard.component.scss +31 -0
- package/src/lib/misc/w-wizard/w-wizard.component.spec.ts +23 -0
- package/src/lib/misc/w-wizard/w-wizard.component.ts +55 -0
- package/src/lib/report/w-powerbi-report/w-powerbi-report.component.css +18 -0
- package/src/lib/report/w-powerbi-report/w-powerbi-report.component.html +52 -0
- package/src/lib/report/w-powerbi-report/w-powerbi-report.component.spec.ts +23 -0
- package/src/lib/report/w-powerbi-report/w-powerbi-report.component.ts +175 -0
- package/src/lib/search/w-autocomplete-search/w-autocomplete-search.component.html +92 -0
- package/src/lib/search/w-autocomplete-search/w-autocomplete-search.component.scss +144 -0
- package/src/lib/search/w-autocomplete-search/w-autocomplete-search.component.spec.ts +23 -0
- package/src/lib/search/w-autocomplete-search/w-autocomplete-search.component.ts +94 -0
- package/src/lib/search/w-input-search/w-input-search.component.html +140 -0
- package/src/lib/search/w-input-search/w-input-search.component.scss +198 -0
- package/src/lib/search/w-input-search/w-input-search.component.spec.ts +23 -0
- package/src/lib/search/w-input-search/w-input-search.component.ts +86 -0
- package/src/lib/shared/components/w-address-field/w-address-field.component.html +11 -0
- package/src/lib/shared/components/w-address-field/w-address-field.component.scss +24 -0
- package/src/lib/shared/components/w-address-field/w-address-field.component.spec.ts +23 -0
- package/src/lib/shared/components/w-address-field/w-address-field.component.ts +266 -0
- package/src/lib/shared/enums/enum.ts +18 -0
- package/src/lib/shared/models/action-button-response.model.ts +4 -0
- package/src/lib/shared/models/action-button.model.ts +5 -0
- package/src/lib/shared/models/address-maps.model.ts +14 -0
- package/src/lib/shared/models/back-button-config.model.ts +5 -0
- package/{lib/shared/models/components-tenant-storage.model.d.ts → src/lib/shared/models/components-tenant-storage.model.ts} +3 -2
- package/src/lib/shared/models/custom-button-config.model.ts +4 -0
- package/src/lib/shared/models/customer-address.model.ts +16 -0
- package/{lib/shared/models/embed-config.model.d.ts → src/lib/shared/models/embed-config.model.ts} +2 -2
- package/{lib/shared/models/enums.model.d.ts → src/lib/shared/models/enums.model.ts} +30 -23
- package/{lib/shared/models/filter-panel/field.model.d.ts → src/lib/shared/models/filter-panel/field.model.ts} +20 -2
- package/src/lib/shared/models/filter-panel/filter-field.models.ts +15 -0
- package/src/lib/shared/models/filter-panel/filter-panel-translations.model.ts +29 -0
- package/src/lib/shared/models/filter-panel/gmarealevel1.model.ts +4 -0
- package/src/lib/shared/models/filter-panel/gmarealevel2.model.ts +4 -0
- package/src/lib/shared/models/filter-panel/gmcountry-model.ts +4 -0
- package/src/lib/shared/models/filter-panel/gmlocality.model.ts +4 -0
- package/src/lib/shared/models/filter-panel/gmpostalcode.model.ts +4 -0
- package/src/lib/shared/models/filter-panel/last-query.model.ts +6 -0
- package/src/lib/shared/models/filter-panel/qb-filter-entity.model.ts +8 -0
- package/src/lib/shared/models/filter-panel/qb-filter-field.model.ts +12 -0
- package/src/lib/shared/models/filter-panel/qb-operators.model.ts +4 -0
- package/src/lib/shared/models/filter-panel/qb-panel-filter.model.ts +14 -0
- package/src/lib/shared/models/filter-panel/qb-panel-to-fields.model.ts +12 -0
- package/src/lib/shared/models/filter-panel/query-results.model.ts +17 -0
- package/src/lib/shared/models/filter.model.ts +5 -0
- package/src/lib/shared/models/image-b64.model.ts +5 -0
- package/src/lib/shared/models/lazy-element-query-request.model.ts +9 -0
- package/src/lib/shared/models/stored-filter-panel-query.model.ts +6 -0
- package/src/lib/shared/models/w-file-b64.model.ts +6 -0
- package/src/lib/shared/models/w-image-cropper-data.model.ts +7 -0
- package/src/lib/shared/models/w-image-file-uploader-config.model.ts +23 -0
- package/src/lib/shared/models/w-select-button-state.model.ts +4 -0
- package/{lib/shared/models/w-timeline-event-item.model.d.ts → src/lib/shared/models/w-timeline-event-item.model.ts} +3 -2
- package/src/lib/shared/models/w-tree-table.model.ts +38 -0
- package/src/lib/shared/models/wapp-table-lazy-loading.model.ts +57 -0
- package/src/lib/shared/models/wapp-table.model.ts +60 -0
- package/src/lib/shared/pipes/color-text.pipe.ts +20 -0
- package/src/lib/shared/pipes/w-date.pipe.ts +42 -0
- package/src/lib/shared/pipes/w-summary.pipe.ts +11 -0
- package/src/lib/shared/service/api/api.service.ts +116 -0
- package/src/lib/shared/services/form-control.service.spec.ts +16 -0
- package/src/lib/shared/services/form-control.service.ts +15 -0
- package/src/lib/shared/services/modal.service.spec.ts +16 -0
- package/src/lib/shared/services/modal.service.ts +71 -0
- package/src/lib/shared/services/session-storage.service.spec.ts +16 -0
- package/src/lib/shared/services/session-storage.service.ts +49 -0
- package/src/lib/shared/services/tree.service.ts +30 -0
- package/src/lib/shared/skeletons/w-skeleton-edit/w-skeleton-edit.component.css +0 -0
- package/src/lib/shared/skeletons/w-skeleton-edit/w-skeleton-edit.component.html +26 -0
- package/src/lib/shared/skeletons/w-skeleton-edit/w-skeleton-edit.component.spec.ts +23 -0
- package/src/lib/shared/skeletons/w-skeleton-edit/w-skeleton-edit.component.ts +15 -0
- package/src/lib/shared/skeletons/w-skeleton-edit-product/w-skeleton-edit-product.component.css +0 -0
- package/src/lib/shared/skeletons/w-skeleton-edit-product/w-skeleton-edit-product.component.html +37 -0
- package/src/lib/shared/skeletons/w-skeleton-edit-product/w-skeleton-edit-product.component.spec.ts +23 -0
- package/src/lib/shared/skeletons/w-skeleton-edit-product/w-skeleton-edit-product.component.ts +10 -0
- package/src/lib/shared/skeletons/w-skeleton-form/w-skeleton-form.component.css +0 -0
- package/src/lib/shared/skeletons/w-skeleton-form/w-skeleton-form.component.html +3 -0
- package/src/lib/shared/skeletons/w-skeleton-form/w-skeleton-form.component.spec.ts +23 -0
- package/src/lib/shared/skeletons/w-skeleton-form/w-skeleton-form.component.ts +17 -0
- package/src/lib/shared/skeletons/w-skeleton-generic/w-skeleton-generic.component.css +0 -0
- package/src/lib/shared/skeletons/w-skeleton-generic/w-skeleton-generic.component.html +3 -0
- package/src/lib/shared/skeletons/w-skeleton-generic/w-skeleton-generic.component.spec.ts +23 -0
- package/src/lib/shared/skeletons/w-skeleton-generic/w-skeleton-generic.component.ts +10 -0
- package/src/lib/shared/skeletons/w-skeleton-iframe/w-skeleton-iframe.component.css +0 -0
- package/src/lib/shared/skeletons/w-skeleton-iframe/w-skeleton-iframe.component.html +3 -0
- package/src/lib/shared/skeletons/w-skeleton-iframe/w-skeleton-iframe.component.spec.ts +23 -0
- package/src/lib/shared/skeletons/w-skeleton-iframe/w-skeleton-iframe.component.ts +10 -0
- package/src/lib/shared/skeletons/w-skeleton-input-generic/w-skeleton-input-generic.component.css +4 -0
- package/src/lib/shared/skeletons/w-skeleton-input-generic/w-skeleton-input-generic.component.html +6 -0
- package/src/lib/shared/skeletons/w-skeleton-input-generic/w-skeleton-input-generic.component.spec.ts +23 -0
- package/src/lib/shared/skeletons/w-skeleton-input-generic/w-skeleton-input-generic.component.ts +13 -0
- package/src/lib/shared/skeletons/w-skeleton-list/w-skeleton-list.component.css +0 -0
- package/src/lib/shared/skeletons/w-skeleton-list/w-skeleton-list.component.html +12 -0
- package/src/lib/shared/skeletons/w-skeleton-list/w-skeleton-list.component.spec.ts +23 -0
- package/src/lib/shared/skeletons/w-skeleton-list/w-skeleton-list.component.ts +13 -0
- package/src/lib/shared/skeletons/w-skeleton-powerbi-report/w-skeleton-powerbi-report.component.css +0 -0
- package/src/lib/shared/skeletons/w-skeleton-powerbi-report/w-skeleton-powerbi-report.component.html +10 -0
- package/src/lib/shared/skeletons/w-skeleton-powerbi-report/w-skeleton-powerbi-report.component.spec.ts +23 -0
- package/src/lib/shared/skeletons/w-skeleton-powerbi-report/w-skeleton-powerbi-report.component.ts +10 -0
- package/src/lib/shared/skeletons/w-skeleton-profile-sidebar/w-skeleton-profile-sidebar.component.css +0 -0
- package/src/lib/shared/skeletons/w-skeleton-profile-sidebar/w-skeleton-profile-sidebar.component.html +14 -0
- package/src/lib/shared/skeletons/w-skeleton-profile-sidebar/w-skeleton-profile-sidebar.component.spec.ts +23 -0
- package/src/lib/shared/skeletons/w-skeleton-profile-sidebar/w-skeleton-profile-sidebar.component.ts +10 -0
- package/src/lib/shared/skeletons/w-skeleton-query-builder/w-skeleton-query-builder.component.css +0 -0
- package/src/lib/shared/skeletons/w-skeleton-query-builder/w-skeleton-query-builder.component.html +41 -0
- package/src/lib/shared/skeletons/w-skeleton-query-builder/w-skeleton-query-builder.component.spec.ts +23 -0
- package/src/lib/shared/skeletons/w-skeleton-query-builder/w-skeleton-query-builder.component.ts +13 -0
- package/src/lib/shared/skeletons/w-skeleton-sidebar/w-skeleton-sidebar.component.html +8 -0
- package/src/lib/shared/skeletons/w-skeleton-sidebar/w-skeleton-sidebar.component.scss +26 -0
- package/src/lib/shared/skeletons/w-skeleton-sidebar/w-skeleton-sidebar.component.spec.ts +23 -0
- package/src/lib/shared/skeletons/w-skeleton-sidebar/w-skeleton-sidebar.component.ts +14 -0
- package/src/lib/shared/skeletons/w-skeleton-timeline/w-skeleton-timeline.component.css +0 -0
- package/src/lib/shared/skeletons/w-skeleton-timeline/w-skeleton-timeline.component.html +11 -0
- package/src/lib/shared/skeletons/w-skeleton-timeline/w-skeleton-timeline.component.spec.ts +23 -0
- package/src/lib/shared/skeletons/w-skeleton-timeline/w-skeleton-timeline.component.ts +16 -0
- package/src/lib/shared/skeletons/w-skeleton-tree/w-skeleton-tree.component.css +0 -0
- package/src/lib/shared/skeletons/w-skeleton-tree/w-skeleton-tree.component.html +10 -0
- package/src/lib/shared/skeletons/w-skeleton-tree/w-skeleton-tree.component.spec.ts +23 -0
- package/src/lib/shared/skeletons/w-skeleton-tree/w-skeleton-tree.component.ts +18 -0
- package/src/lib/shared/skeletons/w-skeleton-user-profile-info-sidebar/w-skeleton-user-profile-info-sidebar.component.css +0 -0
- package/src/lib/shared/skeletons/w-skeleton-user-profile-info-sidebar/w-skeleton-user-profile-info-sidebar.component.html +55 -0
- package/src/lib/shared/skeletons/w-skeleton-user-profile-info-sidebar/w-skeleton-user-profile-info-sidebar.component.spec.ts +23 -0
- package/src/lib/shared/skeletons/w-skeleton-user-profile-info-sidebar/w-skeleton-user-profile-info-sidebar.component.ts +10 -0
- package/src/lib/sidebar/w-sidebar/w-sidebar.component.html +26 -0
- package/src/lib/sidebar/w-sidebar/w-sidebar.component.scss +89 -0
- package/src/lib/sidebar/w-sidebar/w-sidebar.component.spec.ts +23 -0
- package/src/lib/sidebar/w-sidebar/w-sidebar.component.ts +58 -0
- package/src/lib/tables/w-table/w-table.component.html +272 -0
- package/src/lib/tables/w-table/w-table.component.scss +323 -0
- package/src/lib/tables/w-table/w-table.component.spec.ts +23 -0
- package/src/lib/tables/w-table/w-table.component.ts +238 -0
- package/src/lib/tables/w-table-lazy/w-table-lazy.component.html +253 -0
- package/src/lib/tables/w-table-lazy/w-table-lazy.component.scss +295 -0
- package/src/lib/tables/w-table-lazy/w-table-lazy.component.spec.ts +23 -0
- package/src/lib/tables/w-table-lazy/w-table-lazy.component.ts +268 -0
- package/src/lib/tables/w-tree-table/w-tree-table.component.html +289 -0
- package/src/lib/tables/w-tree-table/w-tree-table.component.scss +283 -0
- package/src/lib/tables/w-tree-table/w-tree-table.component.spec.ts +23 -0
- package/src/lib/tables/w-tree-table/w-tree-table.component.ts +173 -0
- package/src/lib/tabview/w-tabview/w-tabview.component.html +72 -0
- package/src/lib/tabview/w-tabview/w-tabview.component.scss +39 -0
- package/src/lib/tabview/w-tabview/w-tabview.component.spec.ts +23 -0
- package/src/lib/tabview/w-tabview/w-tabview.component.ts +14 -0
- package/src/lib/theme/theme.component.css +0 -0
- package/src/lib/theme/theme.component.html +1 -0
- package/src/lib/theme/theme.component.spec.ts +23 -0
- package/src/lib/theme/theme.component.ts +10 -0
- package/src/lib/tree/w-tree/w-tree.component.html +50 -0
- package/src/lib/tree/w-tree/w-tree.component.scss +114 -0
- package/src/lib/tree/w-tree/w-tree.component.spec.ts +23 -0
- package/src/lib/tree/w-tree/w-tree.component.ts +84 -0
- package/src/lib/view/w-view-boolean/w-view-boolean.component.html +27 -0
- package/src/lib/view/w-view-boolean/w-view-boolean.component.scss +38 -0
- package/src/lib/view/w-view-boolean/w-view-boolean.component.spec.ts +23 -0
- package/src/lib/view/w-view-boolean/w-view-boolean.component.ts +31 -0
- package/src/lib/view/w-view-card-title-text/w-view-card-title-text.component.html +1 -0
- package/src/lib/view/w-view-card-title-text/w-view-card-title-text.component.scss +5 -0
- package/src/lib/view/w-view-card-title-text/w-view-card-title-text.component.spec.ts +23 -0
- package/src/lib/view/w-view-card-title-text/w-view-card-title-text.component.ts +16 -0
- package/src/lib/view/w-view-text/w-view-text.component.html +18 -0
- package/src/lib/view/w-view-text/w-view-text.component.scss +42 -0
- package/src/lib/view/w-view-text/w-view-text.component.spec.ts +23 -0
- package/src/lib/view/w-view-text/w-view-text.component.ts +12 -0
- package/src/lib/w-clipboard/w-clipboard.component.css +12 -0
- package/src/lib/w-clipboard/w-clipboard.component.html +10 -0
- package/src/lib/w-clipboard/w-clipboard.component.spec.ts +23 -0
- package/src/lib/w-clipboard/w-clipboard.component.ts +32 -0
- package/src/lib/wapp-components.component.spec.ts +23 -0
- package/src/lib/wapp-components.component.ts +15 -0
- package/src/lib/wapp-components.module.ts +337 -0
- package/src/lib/wapp-components.service.spec.ts +16 -0
- package/src/lib/wapp-components.service.ts +9 -0
- package/{public-api.d.ts → src/public-api.ts} +20 -6
- package/src/styles/_variables.scss +674 -0
- package/tsconfig.lib.json +14 -0
- package/tsconfig.lib.prod.json +10 -0
- package/tsconfig.spec.json +14 -0
- package/esm2020/lib/button/w-button/w-button.component.mjs +0 -67
- package/esm2020/lib/button/w-buttons-footer/w-buttons-footer.component.mjs +0 -11
- package/esm2020/lib/button/w-radio-button/w-radio-button.component.mjs +0 -86
- package/esm2020/lib/button/w-select-button/w-select-button.component.mjs +0 -84
- package/esm2020/lib/button/w-toggle-button/w-toggle-button.component.mjs +0 -102
- package/esm2020/lib/edit/w-edit-calendar/w-edit-calendar.component.mjs +0 -119
- package/esm2020/lib/edit/w-edit-checkbox/w-edit-checkbox.component.mjs +0 -89
- package/esm2020/lib/edit/w-edit-input-number/w-edit-input-number.component.mjs +0 -134
- package/esm2020/lib/edit/w-edit-input-text/w-edit-input-text.component.mjs +0 -129
- package/esm2020/lib/edit/w-edit-input-textarea/w-edit-input-textarea.component.mjs +0 -112
- package/esm2020/lib/edit/w-edit-multiselect/w-edit-multiselect.component.mjs +0 -114
- package/esm2020/lib/edit/w-edit-select/w-edit-select.component.mjs +0 -119
- package/esm2020/lib/edit/w-edit-toggle/w-edit-toggle.component.mjs +0 -93
- package/esm2020/lib/edit/w-edit-treeselect/w-edit-treeselect.component.mjs +0 -111
- package/esm2020/lib/file/w-image-cropper/w-image-cropper.component.mjs +0 -236
- package/esm2020/lib/file/w-image-file-uploader/w-image-file-uploader.component.mjs +0 -409
- package/esm2020/lib/file/w-preview-image/w-preview-image.component.mjs +0 -20
- package/esm2020/lib/icons/icons.mjs +0 -115
- package/esm2020/lib/icons/wapping-icons/w-icons.component.mjs +0 -57
- package/esm2020/lib/layout/w-body/w-body.component.mjs +0 -18
- package/esm2020/lib/layout/w-body-container/w-body-container.component.mjs +0 -11
- package/esm2020/lib/layout/w-body-grid/w-body-grid.component.mjs +0 -11
- package/esm2020/lib/layout/w-container/w-container.component.mjs +0 -19
- package/esm2020/lib/layout/w-footer/w-footer.component.mjs +0 -27
- package/esm2020/lib/layout/w-header-panel/w-header-panel.component.mjs +0 -36
- package/esm2020/lib/layout/w-navbar/w-navbar.component.mjs +0 -44
- package/esm2020/lib/layout/w-panel/w-panel.component.mjs +0 -77
- package/esm2020/lib/layout/w-panel-grid/w-panel-grid.component.mjs +0 -11
- package/esm2020/lib/layout/w-panel-subtitle/w-panel-subtitle.component.mjs +0 -17
- package/esm2020/lib/layout/w-panel-title/w-panel-title.component.mjs +0 -17
- package/esm2020/lib/logos/logos.mjs +0 -8
- package/esm2020/lib/logos/wapping-logos/w-logos.component.mjs +0 -53
- package/esm2020/lib/maps/w-maps/w-maps.component.mjs +0 -161
- package/esm2020/lib/misc/w-badge/w-badge.component.mjs +0 -29
- package/esm2020/lib/misc/w-chip/w-chip.component.mjs +0 -67
- package/esm2020/lib/misc/w-filter-panel/w-filter-panel.component.mjs +0 -447
- package/esm2020/lib/misc/w-filter-panel/w-list-field/w-list-field.component.mjs +0 -82
- package/esm2020/lib/misc/w-timeline/w-timeline.component.mjs +0 -48
- package/esm2020/lib/misc/w-wizard/w-wizard.component.mjs +0 -87
- package/esm2020/lib/report/w-powerbi-report/w-powerbi-report.component.mjs +0 -206
- package/esm2020/lib/search/w-autocomplete-search/w-autocomplete-search.component.mjs +0 -106
- package/esm2020/lib/search/w-input-search/w-input-search.component.mjs +0 -113
- package/esm2020/lib/shared/components/w-address-field/w-address-field.component.mjs +0 -248
- package/esm2020/lib/shared/enums/enum.mjs +0 -20
- package/esm2020/lib/shared/models/action-button-response.model.mjs +0 -2
- package/esm2020/lib/shared/models/action-button.model.mjs +0 -2
- package/esm2020/lib/shared/models/components-tenant-storage.model.mjs +0 -2
- package/esm2020/lib/shared/models/custom-button-config.model.mjs +0 -2
- package/esm2020/lib/shared/models/customer-address.model.mjs +0 -2
- package/esm2020/lib/shared/models/embed-config.model.mjs +0 -2
- package/esm2020/lib/shared/models/enums.model.mjs +0 -90
- package/esm2020/lib/shared/models/filter-panel/field.model.mjs +0 -2
- package/esm2020/lib/shared/models/filter-panel/filter-field.models.mjs +0 -2
- package/esm2020/lib/shared/models/filter-panel/filter-panel-translations.model.mjs +0 -2
- package/esm2020/lib/shared/models/filter-panel/gmarealevel1.model.mjs +0 -2
- package/esm2020/lib/shared/models/filter-panel/gmarealevel2.model.mjs +0 -2
- package/esm2020/lib/shared/models/filter-panel/gmcountry-model.mjs +0 -2
- package/esm2020/lib/shared/models/filter-panel/gmlocality.model.mjs +0 -2
- package/esm2020/lib/shared/models/filter-panel/gmpostalcode.model.mjs +0 -2
- package/esm2020/lib/shared/models/filter-panel/qb-filter-entity.model.mjs +0 -2
- package/esm2020/lib/shared/models/filter-panel/qb-operators.model.mjs +0 -2
- package/esm2020/lib/shared/models/filter-panel/qb-panel-filter.model.mjs +0 -2
- package/esm2020/lib/shared/models/filter-panel/qb-panel-to-fields.model.mjs +0 -2
- package/esm2020/lib/shared/models/filter-panel/query-results.model.mjs +0 -8
- package/esm2020/lib/shared/models/filter.model.mjs +0 -2
- package/esm2020/lib/shared/models/image-b64.model.mjs +0 -2
- package/esm2020/lib/shared/models/lazy-element-query-request.model.mjs +0 -2
- package/esm2020/lib/shared/models/stored-filter-panel-query.model.mjs +0 -2
- package/esm2020/lib/shared/models/w-file-b64.model.mjs +0 -2
- package/esm2020/lib/shared/models/w-image-cropper-data.model.mjs +0 -2
- package/esm2020/lib/shared/models/w-image-file-uploader-config.model.mjs +0 -2
- package/esm2020/lib/shared/models/w-select-button-state.model.mjs +0 -2
- package/esm2020/lib/shared/models/w-timeline-event-item.model.mjs +0 -2
- package/esm2020/lib/shared/models/w-tree-table.model.mjs +0 -2
- package/esm2020/lib/shared/models/wapp-table-lazy-loading.model.mjs +0 -2
- package/esm2020/lib/shared/models/wapp-table.model.mjs +0 -2
- package/esm2020/lib/shared/pipes/color-text.pipe.mjs +0 -25
- package/esm2020/lib/shared/pipes/w-date.pipe.mjs +0 -44
- package/esm2020/lib/shared/pipes/w-summary.pipe.mjs +0 -16
- package/esm2020/lib/shared/service/api/api.service.mjs +0 -88
- package/esm2020/lib/shared/services/form-control.service.mjs +0 -18
- package/esm2020/lib/shared/services/modal.service.mjs +0 -62
- package/esm2020/lib/shared/services/session-storage.service.mjs +0 -46
- package/esm2020/lib/shared/services/tree.service.mjs +0 -30
- package/esm2020/lib/shared/skeletons/w-skeleton-edit/w-skeleton-edit.component.mjs +0 -26
- package/esm2020/lib/shared/skeletons/w-skeleton-edit-product/w-skeleton-edit-product.component.mjs +0 -17
- package/esm2020/lib/shared/skeletons/w-skeleton-form/w-skeleton-form.component.mjs +0 -24
- package/esm2020/lib/shared/skeletons/w-skeleton-generic/w-skeleton-generic.component.mjs +0 -19
- package/esm2020/lib/shared/skeletons/w-skeleton-iframe/w-skeleton-iframe.component.mjs +0 -12
- package/esm2020/lib/shared/skeletons/w-skeleton-input-generic/w-skeleton-input-generic.component.mjs +0 -30
- package/esm2020/lib/shared/skeletons/w-skeleton-list/w-skeleton-list.component.mjs +0 -27
- package/esm2020/lib/shared/skeletons/w-skeleton-powerbi-report/w-skeleton-powerbi-report.component.mjs +0 -12
- package/esm2020/lib/shared/skeletons/w-skeleton-profile-sidebar/w-skeleton-profile-sidebar.component.mjs +0 -12
- package/esm2020/lib/shared/skeletons/w-skeleton-query-builder/w-skeleton-query-builder.component.mjs +0 -26
- package/esm2020/lib/shared/skeletons/w-skeleton-sidebar/w-skeleton-sidebar.component.mjs +0 -22
- package/esm2020/lib/shared/skeletons/w-skeleton-timeline/w-skeleton-timeline.component.mjs +0 -25
- package/esm2020/lib/shared/skeletons/w-skeleton-tree/w-skeleton-tree.component.mjs +0 -27
- package/esm2020/lib/shared/skeletons/w-skeleton-user-profile-info-sidebar/w-skeleton-user-profile-info-sidebar.component.mjs +0 -12
- package/esm2020/lib/sidebar/w-sidebar/w-sidebar.component.mjs +0 -83
- package/esm2020/lib/tables/w-table/w-table.component.mjs +0 -255
- package/esm2020/lib/tables/w-table-lazy/w-table-lazy.component.mjs +0 -292
- package/esm2020/lib/tables/w-tree-table/w-tree-table.component.mjs +0 -187
- package/esm2020/lib/tabview/w-tabview/w-tabview.component.mjs +0 -27
- package/esm2020/lib/tree/w-tree/w-tree.component.mjs +0 -149
- package/esm2020/lib/view/w-view-boolean/w-view-boolean.component.mjs +0 -60
- package/esm2020/lib/view/w-view-card-title-text/w-view-card-title-text.component.mjs +0 -17
- package/esm2020/lib/view/w-view-text/w-view-text.component.mjs +0 -24
- package/esm2020/lib/w-clipboard/w-clipboard.component.mjs +0 -39
- package/esm2020/lib/wapp-components.component.mjs +0 -19
- package/esm2020/lib/wapp-components.module.mjs +0 -603
- package/esm2020/lib/wapp-components.service.mjs +0 -14
- package/esm2020/ngx-wapp-components.mjs +0 -5
- package/esm2020/public-api.mjs +0 -94
- package/fesm2015/ngx-wapp-components.mjs +0 -6179
- package/fesm2015/ngx-wapp-components.mjs.map +0 -1
- package/fesm2020/ngx-wapp-components.mjs +0 -6191
- package/fesm2020/ngx-wapp-components.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/button/w-button/w-button.component.d.ts +0 -23
- package/lib/button/w-buttons-footer/w-buttons-footer.component.d.ts +0 -5
- package/lib/button/w-radio-button/w-radio-button.component.d.ts +0 -31
- package/lib/button/w-select-button/w-select-button.component.d.ts +0 -27
- package/lib/button/w-toggle-button/w-toggle-button.component.d.ts +0 -32
- package/lib/edit/w-edit-calendar/w-edit-calendar.component.d.ts +0 -38
- package/lib/edit/w-edit-checkbox/w-edit-checkbox.component.d.ts +0 -27
- package/lib/edit/w-edit-input-number/w-edit-input-number.component.d.ts +0 -38
- package/lib/edit/w-edit-input-text/w-edit-input-text.component.d.ts +0 -37
- package/lib/edit/w-edit-input-textarea/w-edit-input-textarea.component.d.ts +0 -33
- package/lib/edit/w-edit-multiselect/w-edit-multiselect.component.d.ts +0 -36
- package/lib/edit/w-edit-select/w-edit-select.component.d.ts +0 -36
- package/lib/edit/w-edit-toggle/w-edit-toggle.component.d.ts +0 -28
- package/lib/edit/w-edit-treeselect/w-edit-treeselect.component.d.ts +0 -35
- package/lib/file/w-image-cropper/w-image-cropper.component.d.ts +0 -69
- package/lib/file/w-image-file-uploader/w-image-file-uploader.component.d.ts +0 -70
- package/lib/file/w-preview-image/w-preview-image.component.d.ts +0 -10
- package/lib/icons/icons.d.ts +0 -1
- package/lib/icons/wapping-icons/w-icons.component.d.ts +0 -15
- package/lib/layout/w-body/w-body.component.d.ts +0 -6
- package/lib/layout/w-body-container/w-body-container.component.d.ts +0 -5
- package/lib/layout/w-body-grid/w-body-grid.component.d.ts +0 -5
- package/lib/layout/w-container/w-container.component.d.ts +0 -5
- package/lib/layout/w-footer/w-footer.component.d.ts +0 -10
- package/lib/layout/w-header-panel/w-header-panel.component.d.ts +0 -15
- package/lib/layout/w-navbar/w-navbar.component.d.ts +0 -16
- package/lib/layout/w-panel/w-panel.component.d.ts +0 -23
- package/lib/layout/w-panel-grid/w-panel-grid.component.d.ts +0 -5
- package/lib/layout/w-panel-subtitle/w-panel-subtitle.component.d.ts +0 -7
- package/lib/layout/w-panel-title/w-panel-title.component.d.ts +0 -7
- package/lib/logos/logos.d.ts +0 -1
- package/lib/logos/wapping-logos/w-logos.component.d.ts +0 -15
- package/lib/maps/w-maps/w-maps.component.d.ts +0 -38
- package/lib/misc/w-badge/w-badge.component.d.ts +0 -9
- package/lib/misc/w-chip/w-chip.component.d.ts +0 -22
- package/lib/misc/w-filter-panel/w-filter-panel.component.d.ts +0 -74
- package/lib/misc/w-filter-panel/w-list-field/w-list-field.component.d.ts +0 -25
- package/lib/misc/w-timeline/w-timeline.component.d.ts +0 -17
- package/lib/misc/w-wizard/w-wizard.component.d.ts +0 -31
- package/lib/report/w-powerbi-report/w-powerbi-report.component.d.ts +0 -40
- package/lib/search/w-autocomplete-search/w-autocomplete-search.component.d.ts +0 -29
- package/lib/search/w-input-search/w-input-search.component.d.ts +0 -34
- package/lib/shared/components/w-address-field/w-address-field.component.d.ts +0 -65
- package/lib/shared/enums/enum.d.ts +0 -16
- package/lib/shared/models/action-button-response.model.d.ts +0 -4
- package/lib/shared/models/action-button.model.d.ts +0 -5
- package/lib/shared/models/custom-button-config.model.d.ts +0 -4
- package/lib/shared/models/customer-address.model.d.ts +0 -16
- package/lib/shared/models/filter-panel/filter-field.models.d.ts +0 -17
- package/lib/shared/models/filter-panel/filter-panel-translations.model.d.ts +0 -29
- package/lib/shared/models/filter-panel/gmarealevel1.model.d.ts +0 -4
- package/lib/shared/models/filter-panel/gmarealevel2.model.d.ts +0 -4
- package/lib/shared/models/filter-panel/gmcountry-model.d.ts +0 -4
- package/lib/shared/models/filter-panel/gmlocality.model.d.ts +0 -4
- package/lib/shared/models/filter-panel/gmpostalcode.model.d.ts +0 -4
- package/lib/shared/models/filter-panel/qb-filter-entity.model.d.ts +0 -7
- package/lib/shared/models/filter-panel/qb-operators.model.d.ts +0 -4
- package/lib/shared/models/filter-panel/qb-panel-filter.model.d.ts +0 -13
- package/lib/shared/models/filter-panel/qb-panel-to-fields.model.d.ts +0 -11
- package/lib/shared/models/filter-panel/query-results.model.d.ts +0 -15
- package/lib/shared/models/filter.model.d.ts +0 -5
- package/lib/shared/models/image-b64.model.d.ts +0 -5
- package/lib/shared/models/lazy-element-query-request.model.d.ts +0 -8
- package/lib/shared/models/stored-filter-panel-query.model.d.ts +0 -6
- package/lib/shared/models/w-file-b64.model.d.ts +0 -6
- package/lib/shared/models/w-image-cropper-data.model.d.ts +0 -7
- package/lib/shared/models/w-image-file-uploader-config.model.d.ts +0 -23
- package/lib/shared/models/w-select-button-state.model.d.ts +0 -4
- package/lib/shared/models/w-tree-table.model.d.ts +0 -34
- package/lib/shared/models/wapp-table-lazy-loading.model.d.ts +0 -55
- package/lib/shared/models/wapp-table.model.d.ts +0 -58
- package/lib/shared/pipes/color-text.pipe.d.ts +0 -7
- package/lib/shared/pipes/w-date.pipe.d.ts +0 -8
- package/lib/shared/pipes/w-summary.pipe.d.ts +0 -7
- package/lib/shared/service/api/api.service.d.ts +0 -24
- package/lib/shared/services/form-control.service.d.ts +0 -8
- package/lib/shared/services/modal.service.d.ts +0 -22
- package/lib/shared/services/session-storage.service.d.ts +0 -14
- package/lib/shared/services/tree.service.d.ts +0 -8
- package/lib/shared/skeletons/w-skeleton-edit/w-skeleton-edit.component.d.ts +0 -8
- package/lib/shared/skeletons/w-skeleton-edit-product/w-skeleton-edit-product.component.d.ts +0 -5
- package/lib/shared/skeletons/w-skeleton-form/w-skeleton-form.component.d.ts +0 -10
- package/lib/shared/skeletons/w-skeleton-generic/w-skeleton-generic.component.d.ts +0 -6
- package/lib/shared/skeletons/w-skeleton-iframe/w-skeleton-iframe.component.d.ts +0 -5
- package/lib/shared/skeletons/w-skeleton-input-generic/w-skeleton-input-generic.component.d.ts +0 -9
- package/lib/shared/skeletons/w-skeleton-list/w-skeleton-list.component.d.ts +0 -7
- package/lib/shared/skeletons/w-skeleton-powerbi-report/w-skeleton-powerbi-report.component.d.ts +0 -5
- package/lib/shared/skeletons/w-skeleton-profile-sidebar/w-skeleton-profile-sidebar.component.d.ts +0 -5
- package/lib/shared/skeletons/w-skeleton-query-builder/w-skeleton-query-builder.component.d.ts +0 -8
- package/lib/shared/skeletons/w-skeleton-sidebar/w-skeleton-sidebar.component.d.ts +0 -8
- package/lib/shared/skeletons/w-skeleton-timeline/w-skeleton-timeline.component.d.ts +0 -9
- package/lib/shared/skeletons/w-skeleton-tree/w-skeleton-tree.component.d.ts +0 -11
- package/lib/shared/skeletons/w-skeleton-user-profile-info-sidebar/w-skeleton-user-profile-info-sidebar.component.d.ts +0 -5
- package/lib/sidebar/w-sidebar/w-sidebar.component.d.ts +0 -25
- package/lib/tables/w-table/w-table.component.d.ts +0 -62
- package/lib/tables/w-table-lazy/w-table-lazy.component.d.ts +0 -61
- package/lib/tables/w-tree-table/w-tree-table.component.d.ts +0 -48
- package/lib/tabview/w-tabview/w-tabview.component.d.ts +0 -8
- package/lib/tree/w-tree/w-tree.component.d.ts +0 -40
- package/lib/view/w-view-boolean/w-view-boolean.component.d.ts +0 -19
- package/lib/view/w-view-card-title-text/w-view-card-title-text.component.d.ts +0 -9
- package/lib/view/w-view-text/w-view-text.component.d.ts +0 -8
- package/lib/w-clipboard/w-clipboard.component.d.ts +0 -12
- package/lib/wapp-components.component.d.ts +0 -5
- package/lib/wapp-components.module.d.ts +0 -120
- package/lib/wapp-components.service.d.ts +0 -6
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
+
|
|
3
|
+
import { WFilterPanelComponent } from './w-filter-panel.component';
|
|
4
|
+
|
|
5
|
+
describe('WFilterPanelComponent', () => {
|
|
6
|
+
let component: WFilterPanelComponent;
|
|
7
|
+
let fixture: ComponentFixture<WFilterPanelComponent>;
|
|
8
|
+
|
|
9
|
+
beforeEach(async () => {
|
|
10
|
+
await TestBed.configureTestingModule({
|
|
11
|
+
declarations: [ WFilterPanelComponent ]
|
|
12
|
+
})
|
|
13
|
+
.compileComponents();
|
|
14
|
+
|
|
15
|
+
fixture = TestBed.createComponent(WFilterPanelComponent);
|
|
16
|
+
component = fixture.componentInstance;
|
|
17
|
+
fixture.detectChanges();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('should create', () => {
|
|
21
|
+
expect(component).toBeTruthy();
|
|
22
|
+
});
|
|
23
|
+
});
|
|
@@ -0,0 +1,457 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
|
|
2
|
+
import { FormBuilder, FormControl } from '@angular/forms';
|
|
3
|
+
import { QBDataTypeEnum } from '../../shared/models/enums.model';
|
|
4
|
+
import { QbPanelFilter } from '../../shared/models/filter-panel/qb-panel-filter.model';
|
|
5
|
+
import { Entity, EntityMap, Field, FieldMap, QueryBuilderConfig, Rule, RuleSet } from '../../shared/models/filter-panel/field.model';
|
|
6
|
+
import { FilterPanelTranslations } from '../../shared/models/filter-panel/filter-panel-translations.model';
|
|
7
|
+
import { QueryResultType, QueryResults } from '../../shared/models/filter-panel/query-results.model';
|
|
8
|
+
import { FilterField } from '../../shared/models/filter-panel/filter-field.models';
|
|
9
|
+
import { QbFilterEntity } from '../../shared/models/filter-panel/qb-filter-entity.model';
|
|
10
|
+
import { ApiService } from '../../shared/service/api/api.service';
|
|
11
|
+
import { StoredFilterPanelQuery } from '../../shared/models/stored-filter-panel-query.model';
|
|
12
|
+
import { SessionStorageService } from '../../shared/services/session-storage.service';
|
|
13
|
+
|
|
14
|
+
@Component({
|
|
15
|
+
selector: 'w-filter-panel',
|
|
16
|
+
templateUrl: './w-filter-panel.component.html',
|
|
17
|
+
styleUrls: ['./w-filter-panel.component.scss']
|
|
18
|
+
})
|
|
19
|
+
export class WFilterPanelComponent implements OnInit {
|
|
20
|
+
public queryCtrl!: FormControl;
|
|
21
|
+
public advancedQueryCtrl!: FormControl;
|
|
22
|
+
public groupedQueryCtrl!: FormControl;
|
|
23
|
+
public persistValueOnFieldChange: boolean = false;
|
|
24
|
+
|
|
25
|
+
queryConfigReady: boolean = false;
|
|
26
|
+
isAdvancedSearch: boolean = false;
|
|
27
|
+
qbDataTypeEnum = QBDataTypeEnum;
|
|
28
|
+
qbDataEnums = Object.values(QBDataTypeEnum);
|
|
29
|
+
basicQueryConfig!: any;
|
|
30
|
+
advancedQueryConfig!: any;
|
|
31
|
+
basicQuery: any = {
|
|
32
|
+
condition: 'and',
|
|
33
|
+
rules: []
|
|
34
|
+
};
|
|
35
|
+
groupedQuery: any = {
|
|
36
|
+
condition: 'and',
|
|
37
|
+
rules: []
|
|
38
|
+
};
|
|
39
|
+
advancedQuery: any = {
|
|
40
|
+
condition: 'and',
|
|
41
|
+
rules: []
|
|
42
|
+
};
|
|
43
|
+
filterPanelObject!: QbPanelFilter;
|
|
44
|
+
entityConfigGrouped: QueryBuilderConfig = { fields: {} };
|
|
45
|
+
entities: any[] = [];
|
|
46
|
+
defaultValues: any[] = [];
|
|
47
|
+
defaultOperators: any[] = [];
|
|
48
|
+
storedQuery!: StoredFilterPanelQuery;
|
|
49
|
+
parentRoute!: string;
|
|
50
|
+
|
|
51
|
+
@Input('apiUrl') authorizationApiUrl!: string;
|
|
52
|
+
@Input('commonDataApiUrl') commonDataApiUrl!: string;
|
|
53
|
+
@Input('segmentationApiUrl') segmentationApiUrl!: string;
|
|
54
|
+
@Input('token') token!: string;
|
|
55
|
+
@Input('commonDataToken') commonDataToken!: string;
|
|
56
|
+
@Input('segmentationToken') segmentationToken!: string;
|
|
57
|
+
@Input('filterId') filterId!: string;
|
|
58
|
+
@Input('dataIsLoadingSearchButton') dataIsLoadingSearchButton: boolean = false;
|
|
59
|
+
@Input('tenantId') tenantId!: string;
|
|
60
|
+
|
|
61
|
+
@Input('translationsObject') translationsObject: FilterPanelTranslations = {
|
|
62
|
+
basicSearchTabLabel: 'Basic search',
|
|
63
|
+
advancedSearchTabLabel: 'Advanced search',
|
|
64
|
+
groupedFilterTitle: 'Grouped filter',
|
|
65
|
+
advancedSearch: {
|
|
66
|
+
andButtonLabel: 'And',
|
|
67
|
+
orButtonLabel: 'Or',
|
|
68
|
+
addRuleButtonLabel: 'Add filter',
|
|
69
|
+
addRuleSetButtonLabel: 'Add filter set',
|
|
70
|
+
removeRuleSetButtonLabel: 'Remove rule set'
|
|
71
|
+
},
|
|
72
|
+
noRulesLabel: 'Add filter or filter set to start',
|
|
73
|
+
searchButtonLabel: 'Clear',
|
|
74
|
+
clearButtonLabel: 'Clear',
|
|
75
|
+
fieldsPlaceholders: {
|
|
76
|
+
boolean: {
|
|
77
|
+
true: 'True',
|
|
78
|
+
false: 'False'
|
|
79
|
+
},
|
|
80
|
+
decimal: 'Insert decimal number',
|
|
81
|
+
list: 'Select an option',
|
|
82
|
+
number: 'Insert a number',
|
|
83
|
+
text: 'Insert text',
|
|
84
|
+
datetime: 'Select a date'
|
|
85
|
+
},
|
|
86
|
+
operators: {
|
|
87
|
+
contains:'contains'
|
|
88
|
+
},
|
|
89
|
+
fields: {
|
|
90
|
+
IdleDeadline: 'Id',
|
|
91
|
+
name: 'Name',
|
|
92
|
+
code: 'Code',
|
|
93
|
+
delete: 'Deleted',
|
|
94
|
+
country: 'Country'
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
@Output('searchClicked') searchClicked = new EventEmitter<QueryResults>();
|
|
99
|
+
@Output('clearClicked') clearClicked = new EventEmitter<boolean>();
|
|
100
|
+
@Output('lastQuery') lastQuery = new EventEmitter<QueryResults>();
|
|
101
|
+
|
|
102
|
+
stateOptions: any[] = [{ label: this.translationsObject.advancedSearch.andButtonLabel, value: 'and' }, { label: this.translationsObject.advancedSearch.orButtonLabel, value: 'or' }];
|
|
103
|
+
|
|
104
|
+
constructor(
|
|
105
|
+
private formBuilder: FormBuilder,
|
|
106
|
+
private apiService: ApiService,
|
|
107
|
+
private sessionStorage: SessionStorageService
|
|
108
|
+
) { }
|
|
109
|
+
|
|
110
|
+
ngOnInit() {
|
|
111
|
+
this.isAdvancedSearch = this.sessionStorage.getLastFilterPanelQuery(this.tenantId, this.filterId)?.advancedQueryValue ? true : false;
|
|
112
|
+
this.storedQuery= this.sessionStorage.getLastFilterPanelQuery(this.tenantId, this.filterId)
|
|
113
|
+
this.getQueryBuilderFilterPanel();
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
initQueryBuilderControls() {
|
|
117
|
+
this.queryCtrl = this.formBuilder.control(this.basicQuery);
|
|
118
|
+
this.advancedQueryCtrl = this.formBuilder.control(this.advancedQuery);
|
|
119
|
+
if(this.filterPanelObject.allowGrouped) {
|
|
120
|
+
this.groupedQueryCtrl = this.formBuilder.control(this.groupedQuery);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if(this.storedQuery) {
|
|
124
|
+
let lastQuery: QueryResults = {
|
|
125
|
+
type: this.getQueryType(),
|
|
126
|
+
basic: this.storedQuery?.basicQueryValue ? Object.assign({}, this.storedQuery?.basicQueryValue) : null,
|
|
127
|
+
advanced: this.storedQuery?.advancedQueryValue ? Object.assign({}, this.storedQuery?.advancedQueryValue) : null,
|
|
128
|
+
grouped: this.isAdvancedSearch && this.filterPanelObject.allowGrouped && this.groupedQueryCtrl ? Object.assign({}, this.groupedQueryCtrl?.value) : null
|
|
129
|
+
}
|
|
130
|
+
lastQuery = this.deleteFieldsWithoutValue(lastQuery);
|
|
131
|
+
lastQuery = this.handleEmptyFieldsQuery(lastQuery);
|
|
132
|
+
this.lastQuery.emit(lastQuery);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
updateSearchType() {
|
|
137
|
+
this.isAdvancedSearch = !this.isAdvancedSearch;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
onSearchClicked() {
|
|
141
|
+
let queries: QueryResults = {
|
|
142
|
+
type: this.getQueryType(),
|
|
143
|
+
basic: this.isAdvancedSearch ? null : Object.assign({}, this.queryCtrl.value),
|
|
144
|
+
advanced: this.isAdvancedSearch ? Object.assign({}, this.advancedQueryCtrl.value) : null,
|
|
145
|
+
grouped: this.isAdvancedSearch && this.filterPanelObject.allowGrouped ? Object.assign({}, this.groupedQueryCtrl.value) : null
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
this.setEntity(queries);
|
|
149
|
+
|
|
150
|
+
queries = this.initializeOperators(queries);
|
|
151
|
+
|
|
152
|
+
let storedQuery: StoredFilterPanelQuery = {
|
|
153
|
+
id: this.filterId,
|
|
154
|
+
basicQueryValue: queries.basic,
|
|
155
|
+
advancedQueryValue: queries.advanced,
|
|
156
|
+
groupedQueryValue: queries.grouped
|
|
157
|
+
}
|
|
158
|
+
this.sessionStorage.setLastFilterPanelQuery(this.tenantId, storedQuery);
|
|
159
|
+
|
|
160
|
+
queries = this.deleteFieldsWithoutValue(queries);
|
|
161
|
+
queries = this.handleEmptyFieldsQuery(queries);
|
|
162
|
+
|
|
163
|
+
this.searchClicked.emit(queries);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
onClearClicked() {
|
|
167
|
+
this.resetBasicQueryValues();
|
|
168
|
+
this.advancedQuery.rules = [];
|
|
169
|
+
this.groupedQuery.rules = [];
|
|
170
|
+
this.sessionStorage.removeLastFilterPanelQuery(this.tenantId, this.filterId);
|
|
171
|
+
this.clearClicked.emit(true);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
handleEmptyFieldsQuery(queries: QueryResults): QueryResults {
|
|
175
|
+
if(queries.advanced != null && queries.advanced?.rules.length == 0) {
|
|
176
|
+
queries.type = 0
|
|
177
|
+
}
|
|
178
|
+
if(queries.basic != null && queries.basic?.rules.length == 0) {
|
|
179
|
+
queries.type = 0
|
|
180
|
+
}
|
|
181
|
+
if(queries.grouped != null && queries.grouped?.rules.length == 0) {
|
|
182
|
+
queries.type = 0
|
|
183
|
+
}
|
|
184
|
+
return queries;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
getQueryType(): QueryResultType {
|
|
188
|
+
if(!this.isAdvancedSearch) {
|
|
189
|
+
return QueryResultType.Basic;
|
|
190
|
+
} else {
|
|
191
|
+
if(this.isAdvancedSearch && this.groupedQueryCtrl?.value) {
|
|
192
|
+
return QueryResultType.Grouped
|
|
193
|
+
} else {
|
|
194
|
+
return QueryResultType.Advanced;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
setEntity(queries: QueryResults) {
|
|
200
|
+
if(this.getQueryType() == QueryResultType.Basic) {
|
|
201
|
+
queries.basic!.rules = queries.basic!.rules.map((r:any) => {
|
|
202
|
+
return {
|
|
203
|
+
field: r.field,
|
|
204
|
+
operator: r.operator,
|
|
205
|
+
value: r.value,
|
|
206
|
+
entity: this.entities.find(e => e.fieldJsonName == r.field).entity
|
|
207
|
+
}
|
|
208
|
+
})
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
getQueryBuilderFilterPanel() {
|
|
213
|
+
this.apiService.getFilterPanel(this.authorizationApiUrl, this.token, this.commonDataApiUrl, this.commonDataToken, this.filterId)
|
|
214
|
+
.subscribe((qbPanelFilter: QbPanelFilter) => {
|
|
215
|
+
this.filterPanelObject = qbPanelFilter;
|
|
216
|
+
let basicFilterIds: number[] = qbPanelFilter.qbpanelToFields.filter(panelToField => panelToField.basic).map(panelToField => panelToField.qbfilterFieldId);
|
|
217
|
+
let advancedFilterIds: number[] = qbPanelFilter.qbpanelToFields.filter(panelToField => !panelToField.basic).map(panelToField => panelToField.qbfilterFieldId);
|
|
218
|
+
this.defaultValues = qbPanelFilter.qbpanelToFields.map(panelToField => {
|
|
219
|
+
return {
|
|
220
|
+
qbfilterFieldId: panelToField.qbfilterFieldId,
|
|
221
|
+
defaultValue: panelToField.defaultValue
|
|
222
|
+
}
|
|
223
|
+
})
|
|
224
|
+
this.defaultOperators = qbPanelFilter.qbpanelToFields.map(panelToField => {
|
|
225
|
+
return {
|
|
226
|
+
qbfilterFieldId: panelToField.qbfilterFieldId,
|
|
227
|
+
qbdefaultOperator: panelToField.qbdefaultOperator
|
|
228
|
+
}
|
|
229
|
+
})
|
|
230
|
+
let filterEntity: QbFilterEntity[] = qbPanelFilter.qbpanelToFields.map(panelToField => {
|
|
231
|
+
return {
|
|
232
|
+
id: panelToField.qbfilterField.qbfilterEntity.id,
|
|
233
|
+
basic: panelToField.basic,
|
|
234
|
+
name: panelToField.qbfilterField.qbfilterEntity.name,
|
|
235
|
+
jsonName: panelToField.qbfilterField.qbfilterEntity.jsonName,
|
|
236
|
+
fields: []
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
let filterFields: FilterField[] = qbPanelFilter.qbpanelToFields.map(p => p.qbfilterField);
|
|
241
|
+
filterEntity.forEach((entity: QbFilterEntity, index: number) => {
|
|
242
|
+
let fields = filterFields.filter(e => e.qbfilterEntity.id == entity.id);
|
|
243
|
+
filterEntity[index].fields = fields ;
|
|
244
|
+
})
|
|
245
|
+
|
|
246
|
+
this.basicQueryConfig = this.initQueryBuilder(filterEntity);
|
|
247
|
+
this.basicQueryConfig = this.filterFieldsById(this.basicQueryConfig, basicFilterIds);
|
|
248
|
+
this.basicQueryConfig.fields = this.translateFields(this.basicQueryConfig.fields);
|
|
249
|
+
this.advancedQueryConfig = this.initQueryBuilder(filterEntity);
|
|
250
|
+
this.advancedQueryConfig = this.filterFieldsById(this.advancedQueryConfig, advancedFilterIds);
|
|
251
|
+
this.advancedQueryConfig.fields = this.translateFields(this.advancedQueryConfig.fields);
|
|
252
|
+
let rules = Object.keys(this.basicQueryConfig.fields)
|
|
253
|
+
.map(fieldKey => {
|
|
254
|
+
let defaultOperator = this.defaultOperators.find(operator => operator.qbfilterFieldId == this.basicQueryConfig.fields[fieldKey].id && operator.qbdefaultOperator != null);
|
|
255
|
+
return {
|
|
256
|
+
field: fieldKey,
|
|
257
|
+
value: this.basicQueryConfig.fields[fieldKey].defaultValue!,
|
|
258
|
+
operator: defaultOperator ? defaultOperator.qbdefaultOperator.symbol : null
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
if(this.storedQuery && this.storedQuery?.id == this.filterId && this.storedQuery?.basicQueryValue) {
|
|
263
|
+
this.basicQuery = this.storedQuery.basicQueryValue;
|
|
264
|
+
} else {
|
|
265
|
+
this.basicQuery = {
|
|
266
|
+
condition: 'and',
|
|
267
|
+
rules: rules
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
if(this.storedQuery && this.storedQuery?.id == this.filterId && this.storedQuery?.advancedQueryValue) {
|
|
271
|
+
this.advancedQuery = this.storedQuery.advancedQueryValue;
|
|
272
|
+
} else {
|
|
273
|
+
this.advancedQuery = {
|
|
274
|
+
condition: 'and',
|
|
275
|
+
rules: []
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
this.queryConfigReady = true;
|
|
280
|
+
this.initQueryBuilderControls();
|
|
281
|
+
})
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
initQueryBuilder(filterEntities: QbFilterEntity[]) {
|
|
285
|
+
let entityConfigAux: QueryBuilderConfig = { fields: {} };
|
|
286
|
+
let entitiesArray: EntityMap[] = [];
|
|
287
|
+
|
|
288
|
+
filterEntities.map((e, index) => {
|
|
289
|
+
let entity: Entity = { name: e.jsonName };
|
|
290
|
+
return entitiesArray[index] = { [e.jsonName]: entity };
|
|
291
|
+
});
|
|
292
|
+
|
|
293
|
+
let entitiesMap: EntityMap = {};
|
|
294
|
+
|
|
295
|
+
for (const entity of entitiesArray) {
|
|
296
|
+
const keys = Object.keys(entity);
|
|
297
|
+
|
|
298
|
+
keys.forEach(key => {
|
|
299
|
+
if(this.translationsObject.entities) {
|
|
300
|
+
let entitiesTranslationsKeys = Object.keys(this.translationsObject.entities);
|
|
301
|
+
let translation = entitiesTranslationsKeys.find(translationKey => translationKey == key);
|
|
302
|
+
if(translation) {
|
|
303
|
+
entitiesMap[key] = { name: this.translationsObject.entities[key] }
|
|
304
|
+
} else {
|
|
305
|
+
entitiesMap[key] = entity[key]
|
|
306
|
+
}
|
|
307
|
+
} else {
|
|
308
|
+
entitiesMap[key] = entity[key]
|
|
309
|
+
}
|
|
310
|
+
});
|
|
311
|
+
|
|
312
|
+
entityConfigAux.entities = entitiesMap;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
let fields: FieldMap[] = [];
|
|
316
|
+
filterEntities.forEach((filterEntity) => {
|
|
317
|
+
return filterEntity.fields.filter((filterField: FilterField) => {
|
|
318
|
+
let index: number = fields.length ?? 0;
|
|
319
|
+
let operatorsFlatArray = filterField.operators.map((o:any) => o.symbol);
|
|
320
|
+
let defaultOperator = this.defaultOperators.find(operator => operator.qbfilterFieldId == filterField.id);
|
|
321
|
+
let field: Field = {
|
|
322
|
+
id: filterField.id,
|
|
323
|
+
name: filterField.name,
|
|
324
|
+
operators: defaultOperator.qbdefaultOperator?.symbol ? this.moveElementToFirstPlace(operatorsFlatArray, defaultOperator.qbdefaultOperator?.symbol) : operatorsFlatArray,
|
|
325
|
+
type: this.getDataType(filterField.dataType),
|
|
326
|
+
defaultValue: this.formatDefaultValue(this.defaultValues.find(value => value.qbfilterFieldId == filterField.id).defaultValue, filterField.dataType),
|
|
327
|
+
defaultOperator: defaultOperator.qbdefaultOperator?.symbol,
|
|
328
|
+
entity: filterEntity.jsonName,
|
|
329
|
+
options: filterField.listOfValues,
|
|
330
|
+
validator: (rule: Rule, parent: RuleSet): any | null => {
|
|
331
|
+
if (rule.operator !== "is null" && rule.operator !== "is not null") {
|
|
332
|
+
if (rule.value === undefined || rule.value === null || rule.value === '' || rule.value.length == 0) {
|
|
333
|
+
return { required: 'empty field' };
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
return null;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
this.entities.push({fieldJsonName: filterField.jsonName, entity: field.entity});
|
|
340
|
+
fields[index] = { [filterField.jsonName]: field };
|
|
341
|
+
});
|
|
342
|
+
});
|
|
343
|
+
|
|
344
|
+
let fieldsMap: FieldMap = {};
|
|
345
|
+
|
|
346
|
+
for (const field of fields) {
|
|
347
|
+
const keys = Object.keys(field);
|
|
348
|
+
keys.forEach(key => {
|
|
349
|
+
fieldsMap[key] = field[key];
|
|
350
|
+
});
|
|
351
|
+
|
|
352
|
+
entityConfigAux.fields = fieldsMap;
|
|
353
|
+
}
|
|
354
|
+
return entityConfigAux;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
filterFieldsById(fieldsObj: any, idArray: number[]): any {
|
|
358
|
+
const filteredFields: any = {};
|
|
359
|
+
|
|
360
|
+
for (const key in fieldsObj.fields) {
|
|
361
|
+
const field = fieldsObj.fields[key];
|
|
362
|
+
if (idArray.includes(field.id)) {
|
|
363
|
+
filteredFields[key] = field;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
return {
|
|
368
|
+
...fieldsObj,
|
|
369
|
+
fields: filteredFields,
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
translateFields(fields: FieldMap) {
|
|
374
|
+
for (const key in fields) {
|
|
375
|
+
if (fields.hasOwnProperty(key)) {
|
|
376
|
+
fields[key].field = key;
|
|
377
|
+
fields[key].name = this.translationsObject.fields[key];
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
return fields;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
moveElementToFirstPlace(array: any[], elementToFirstPlace: string) {
|
|
384
|
+
const index = array.indexOf(elementToFirstPlace);
|
|
385
|
+
if (index !== -1) {
|
|
386
|
+
array.splice(index, 1);
|
|
387
|
+
array.unshift(elementToFirstPlace);
|
|
388
|
+
}
|
|
389
|
+
return array;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
formatDefaultValue(value: any, type: QBDataTypeEnum) {
|
|
393
|
+
if(value) {
|
|
394
|
+
if(type == QBDataTypeEnum.Boolean) {
|
|
395
|
+
return value.toLowerCase() === 'true';
|
|
396
|
+
}
|
|
397
|
+
if(type == this.qbDataTypeEnum.Number || type == this.qbDataTypeEnum.Decimal || type == this.qbDataTypeEnum.List){
|
|
398
|
+
return Number(value);
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
return value;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
getDataType(id: number) {
|
|
405
|
+
return this.qbDataEnums.find(value => value === id)?.toString() ?? "";
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
deleteFieldsWithoutValue(json: any) {
|
|
409
|
+
if (json.basic && json.basic.rules) {
|
|
410
|
+
json.basic.rules = json.basic.rules.filter((rule: any) => rule.value != null);
|
|
411
|
+
json.basic.rules = json.basic.rules.filter((rule: any) => rule.value != undefined);
|
|
412
|
+
json.basic.rules = json.basic.rules.filter((rule: any) => rule.value !== "");
|
|
413
|
+
}
|
|
414
|
+
if(json.advanced && json.advanced.rules?.length != 0) {
|
|
415
|
+
json.advanced.rules = json.advanced.rules.filter((rule: any) => rule.rules?.length != 0);
|
|
416
|
+
}
|
|
417
|
+
if(json.grouped && json.grouped?.rules.length != 0) {
|
|
418
|
+
json.grouped.rules = json.grouped.rules.filter((rule: any) => rule.rules?.length != 0);
|
|
419
|
+
}
|
|
420
|
+
if(json.grouped && json.grouped?.rules.length == 0) {
|
|
421
|
+
json.grouped = null;
|
|
422
|
+
}
|
|
423
|
+
return json;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
initializeOperators(json: any) {
|
|
427
|
+
if (json.basic && json.basic.rules) {
|
|
428
|
+
json.basic.rules.forEach((rule:any) => {
|
|
429
|
+
if(!rule.operator) {
|
|
430
|
+
rule.operator = "=";
|
|
431
|
+
}
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
return json;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
resetBasicQueryValues() {
|
|
438
|
+
this.basicQuery.rules.forEach((rule: Rule) => {
|
|
439
|
+
if(rule.value || rule.value == 0){
|
|
440
|
+
rule.value = null
|
|
441
|
+
}
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
getQueryFieldName(fieldName: string, fields: FieldMap) {
|
|
446
|
+
const fieldEntry = Object.keys(fields).find(key => fields[key].field === fieldName);
|
|
447
|
+
|
|
448
|
+
return fieldEntry && fields[fieldEntry].name ? fields[fieldEntry].name : fieldName;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
fieldIsBoolean(fieldName: string, fields: FieldMap) {
|
|
452
|
+
const fieldEntry = Object.keys(fields).find(key => fields[key].field === fieldName);
|
|
453
|
+
|
|
454
|
+
return fields[fieldEntry!].type == QBDataTypeEnum.Boolean.toString() ? true : false;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<div *ngIf="options.length == 0; else optionsDataReady" class="mx-2 w-list-field-skeleton-container p-dropdown p-component"><p-skeleton width="8rem" height="9px"></p-skeleton></div>
|
|
2
|
+
<ng-template #optionsDataReady>
|
|
3
|
+
<p-multiSelect *ngIf="getDataType() == dataType.Multi"
|
|
4
|
+
appendTo="body"
|
|
5
|
+
[options]="options"
|
|
6
|
+
[(ngModel)]="optionSelected"
|
|
7
|
+
optionLabel="name"
|
|
8
|
+
optionValue="value"
|
|
9
|
+
[placeholder]="placeholder ?? 'Select an option'"
|
|
10
|
+
(onChange)="onOptionSelected()">
|
|
11
|
+
</p-multiSelect>
|
|
12
|
+
<p-dropdown *ngIf="options && getDataType() == dataType.Single"
|
|
13
|
+
appendTo="body"
|
|
14
|
+
[options]="options"
|
|
15
|
+
[(ngModel)]="optionSelected"
|
|
16
|
+
optionLabel="name"
|
|
17
|
+
optionValue="value"
|
|
18
|
+
[placeholder]="placeholder ?? 'Select an option'"
|
|
19
|
+
(onChange)="onOptionSelected()">
|
|
20
|
+
</p-dropdown>
|
|
21
|
+
</ng-template>
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
@import '../../../../styles/_variables.scss';
|
|
2
|
+
|
|
3
|
+
::ng-deep .p-multiselect {
|
|
4
|
+
max-width: 140px;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.w-list-field-skeleton-container{
|
|
8
|
+
padding: 14px;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
:host ::ng-deep .w-edit-select-input-small .p-dropdown{
|
|
12
|
+
font-weight: 600;
|
|
13
|
+
border-width: $borderWidth;
|
|
14
|
+
border-radius: 8px;
|
|
15
|
+
border-color: $black200;
|
|
16
|
+
height: $spacingXXXL;
|
|
17
|
+
margin: $spacingXXS;
|
|
18
|
+
}
|
|
19
|
+
:host ::ng-deep .w-edit-select-input-small .p-dropdown:not(.p-disabled):hover{
|
|
20
|
+
border: $borderWidth solid $primaryColor !important;
|
|
21
|
+
}
|
|
22
|
+
:host ::ng-deep .w-edit-select-input-small .p-dropdown:not(.p-disabled).p-focus {
|
|
23
|
+
box-shadow: $spacingZero $spacingZero 8px $spacingZero rgba($primary500, 0.50);
|
|
24
|
+
border: $borderWidth solid $primary50;
|
|
25
|
+
}
|
|
26
|
+
:host ::ng-deep .w-edit-select-input-small .p-dropdown .p-placeholder {
|
|
27
|
+
color: $text500;
|
|
28
|
+
}
|
|
29
|
+
:host ::ng-deep .w-edit-select-input-small .p-inputtext{
|
|
30
|
+
padding: 6px $spacingZero 6px 12px;
|
|
31
|
+
}
|
|
32
|
+
:host ::ng-deep .w-edit-select-input-small .p-dropdown .pi{
|
|
33
|
+
font-size: .8rem;
|
|
34
|
+
}
|
|
35
|
+
:host ::ng-deep .w-edit-select-input-small .p-dropdown-panel{
|
|
36
|
+
padding: 8px;
|
|
37
|
+
}
|
|
38
|
+
:host ::ng-deep .w-edit-select-input-small .p-dropdown-panel .p-dropdown-items{
|
|
39
|
+
padding: $spacingZero;
|
|
40
|
+
}
|
|
41
|
+
:host ::ng-deep .w-edit-select-input-small .p-dropdown-panel .p-dropdown-items .p-dropdown-item{
|
|
42
|
+
padding: 8px;
|
|
43
|
+
margin-bottom: 4px;
|
|
44
|
+
font-weight: 600;
|
|
45
|
+
}
|
|
46
|
+
:host ::ng-deep .w-edit-select-input-small .p-dropdown-panel .p-dropdown-items .p-dropdown-item:hover{
|
|
47
|
+
background: $primary50;
|
|
48
|
+
border-radius: 8px;
|
|
49
|
+
}
|
|
50
|
+
:host ::ng-deep .w-edit-select-input-small .p-dropdown-panel .p-dropdown-items .p-dropdown-item.p-highlight{
|
|
51
|
+
background: $primary50;
|
|
52
|
+
border-radius: 8px;
|
|
53
|
+
color: $black;
|
|
54
|
+
}
|
|
55
|
+
:host ::ng-deep .w-edit-select-input-small .p-disabled{
|
|
56
|
+
background: $white;
|
|
57
|
+
opacity: 1;
|
|
58
|
+
}
|
|
59
|
+
:host ::ng-deep .w-edit-select-input-small .p-disabled .p-inputtext{
|
|
60
|
+
color: $black400;
|
|
61
|
+
}
|
|
62
|
+
::ng-deep .select-disabled .p-dropdown .p-dropdown-trigger {
|
|
63
|
+
display: none;
|
|
64
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
+
|
|
3
|
+
import { WListFieldComponent } from './w-list-field.component';
|
|
4
|
+
|
|
5
|
+
describe('ListFieldComponent', () => {
|
|
6
|
+
let component: WListFieldComponent;
|
|
7
|
+
let fixture: ComponentFixture<WListFieldComponent>;
|
|
8
|
+
|
|
9
|
+
beforeEach(async () => {
|
|
10
|
+
await TestBed.configureTestingModule({
|
|
11
|
+
declarations: [ WListFieldComponent ]
|
|
12
|
+
})
|
|
13
|
+
.compileComponents();
|
|
14
|
+
|
|
15
|
+
fixture = TestBed.createComponent(WListFieldComponent);
|
|
16
|
+
component = fixture.componentInstance;
|
|
17
|
+
fixture.detectChanges();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('should create', () => {
|
|
21
|
+
expect(component).toBeTruthy();
|
|
22
|
+
});
|
|
23
|
+
});
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Component, Input, OnChanges, OnInit, SimpleChanges, forwardRef } from "@angular/core";
|
|
2
|
+
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from "@angular/forms";
|
|
3
|
+
import { DataTypeEnum, OperatorEnum } from "../../../shared/models/enums.model";
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: 'w-list-field',
|
|
7
|
+
templateUrl: './w-list-field.component.html',
|
|
8
|
+
styleUrls: ['./w-list-field.component.scss'],
|
|
9
|
+
providers: [
|
|
10
|
+
{
|
|
11
|
+
provide: NG_VALUE_ACCESSOR,
|
|
12
|
+
useExisting: forwardRef(() => WListFieldComponent),
|
|
13
|
+
multi: true
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
})
|
|
17
|
+
export class WListFieldComponent implements OnInit, ControlValueAccessor, OnChanges{
|
|
18
|
+
@Input('options') optionsReceived!: any;
|
|
19
|
+
options!: any;
|
|
20
|
+
optionSelected: any;
|
|
21
|
+
@Input('operator') operator: any;
|
|
22
|
+
@Input('placeholder') placeholder!: any;
|
|
23
|
+
@Input('onlyDropdown') onlyDropdown: boolean = false;
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
dataType: typeof DataTypeEnum = DataTypeEnum;
|
|
27
|
+
|
|
28
|
+
private onChange: any = () => {};
|
|
29
|
+
private onTouched: any = () => {};
|
|
30
|
+
|
|
31
|
+
constructor(){}
|
|
32
|
+
|
|
33
|
+
ngOnInit(): void {
|
|
34
|
+
this.options = this.optionsReceived;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
ngOnChanges(changes: SimpleChanges): void {
|
|
38
|
+
if(this.onlyDropdown == true && (changes[this.optionsReceived] != undefined) && (changes[this.optionsReceived].currentValue[0] !== changes[this.optionsReceived].previousValue[0])){
|
|
39
|
+
this.options = this.optionsReceived;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if(this.onlyDropdown == false){
|
|
43
|
+
if(changes[this.operator]?.previousValue != undefined){
|
|
44
|
+
this.optionSelected = null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
onOptionSelected(){
|
|
50
|
+
this.onChange(this.optionSelected);
|
|
51
|
+
this.onTouched();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
writeValue(value: any): void {
|
|
55
|
+
this.optionSelected = value;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
registerOnChange(fn: any): void {
|
|
59
|
+
this.onChange = fn;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
registerOnTouched(fn: any): void {
|
|
63
|
+
this.onTouched = fn;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
getDataType(){
|
|
67
|
+
if(this.operator == OperatorEnum.Equals || this.operator == OperatorEnum.NotEquals){
|
|
68
|
+
return DataTypeEnum.Single;
|
|
69
|
+
}else{
|
|
70
|
+
return DataTypeEnum.Multi;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|