@wavemaker/app-ng-runtime 12.0.0-next.45752 → 12.0.0-rc.5849
Sign up to get free protection for your applications and to get access to all the features.
- app-ng-runtime/build-task/bundles/index.umd.js +46 -38
- app-ng-runtime/build-task/esm2022/basic/default/anchor/anchor.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/html/html.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/icon/icon.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/label/label.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/picture/picture.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/spinner/spinner.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/progress/progress-circle/progress-circle.build.mjs +7 -2
- app-ng-runtime/build-task/esm2022/basic/rich-text-editor/rich-text-editor.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/containers/tile/tile.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/device/barcode-scanner/barcode-scanner.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/device/camera/camera.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/dialogs/alert-dialog/alert-dialog.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/calendar/calendar.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/color-picker/color-picker.build.mjs +3 -3
- app-ng-runtime/build-task/esm2022/input/currency/currency.build.mjs +3 -3
- app-ng-runtime/build-task/esm2022/input/default/button/button.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/default/button-group/button-group.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/default/switch/switch.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/file-upload/file-upload.build.mjs +5 -1
- app-ng-runtime/build-task/esm2022/page/footer/footer.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/header/header.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/layout.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/left-panel/left-panel.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/page.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/right-panel/right-panel.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/top-nav/top-nav.build.mjs +2 -2
- app-ng-runtime/build-task/fesm2022/index.mjs +46 -38
- app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +1 -1
- app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +2 -2
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +1 -1
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/bundles/index.umd.js +1 -1
- app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +3 -3
- app-ng-runtime/components/base/fesm2022/index.mjs +1 -1
- app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
- app-ng-runtime/components/basic/default/anchor/anchor.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/audio/audio.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/bundles/index.umd.js +27 -18
- app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +4 -4
- app-ng-runtime/components/basic/default/esm2022/anchor/anchor.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +5 -5
- app-ng-runtime/components/basic/default/esm2022/audio/audio.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/html/html.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/icon/icon.component.mjs +6 -7
- app-ng-runtime/components/basic/default/esm2022/icon/icon.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/iframe/iframe.component.mjs +3 -3
- app-ng-runtime/components/basic/default/esm2022/iframe/iframe.props.mjs +3 -2
- app-ng-runtime/components/basic/default/esm2022/label/label.props.mjs +1 -1
- app-ng-runtime/components/basic/default/esm2022/picture/picture.directive.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/picture/picture.props.mjs +3 -1
- app-ng-runtime/components/basic/default/esm2022/spinner/spinner.props.mjs +3 -2
- app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +5 -4
- app-ng-runtime/components/basic/default/esm2022/video/video.props.mjs +2 -1
- app-ng-runtime/components/basic/default/fesm2022/index.mjs +27 -18
- app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/default/icon/icon.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/iframe/iframe.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/picture/picture.directive.d.ts +2 -1
- app-ng-runtime/components/basic/default/video/video.component.d.ts +1 -0
- app-ng-runtime/components/basic/progress/bundles/index.umd.js +12 -8
- app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +4 -4
- app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.props.mjs +2 -1
- app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +8 -6
- app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.props.mjs +2 -1
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs +12 -8
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/progress/progress-bar/progress-bar.component.d.ts +1 -0
- app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -1
- app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +2 -0
- app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +2 -1
- app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.props.mjs +2 -1
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +2 -0
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/search/bundles/index.umd.js +11 -9
- app-ng-runtime/components/basic/search/esm2022/search.component.mjs +14 -13
- app-ng-runtime/components/basic/search/esm2022/search.props.mjs +2 -1
- app-ng-runtime/components/basic/search/fesm2022/index.mjs +11 -9
- app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/search/search.component.d.ts +1 -0
- app-ng-runtime/components/containers/accordion/bundles/index.umd.js +3 -3
- app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +4 -4
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/panel/bundles/index.umd.js +14 -14
- app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +15 -15
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs +14 -14
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/tabs/bundles/index.umd.js +2 -2
- app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +3 -3
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/live-table/bundles/index.umd.js +2 -2
- app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +3 -3
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/pagination/bundles/index.umd.js +2 -0
- app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +3 -1
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs +2 -0
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/bundles/index.umd.js +42 -8
- app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +14 -5
- app-ng-runtime/components/data/table/esm2022/table.component.mjs +28 -5
- app-ng-runtime/components/data/table/esm2022/table.props.mjs +3 -1
- app-ng-runtime/components/data/table/fesm2022/index.mjs +43 -9
- app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/table.component.d.ts +7 -0
- app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +6 -4
- app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +7 -5
- app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +6 -4
- app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +8 -5
- app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +9 -6
- app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +8 -5
- app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/default/bundles/index.umd.js +9 -3
- app-ng-runtime/components/dialogs/default/dialog-header/dialog-header.component.d.ts +2 -1
- app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +2 -1
- app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +9 -4
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +9 -3
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +4 -4
- app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +5 -5
- app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +9 -5
- app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +10 -6
- app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +9 -5
- app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +9 -5
- app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +10 -6
- app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +9 -5
- app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/calendar/bundles/index.umd.js +2 -4
- app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +3 -5
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs +2 -4
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/chips/bundles/index.umd.js +3 -2
- app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +3 -3
- app-ng-runtime/components/input/chips/esm2022/chips.props.mjs +2 -1
- app-ng-runtime/components/input/chips/fesm2022/index.mjs +3 -2
- app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/color-picker/bundles/index.umd.js +5 -3
- app-ng-runtime/components/input/color-picker/color-picker.component.d.ts +1 -0
- app-ng-runtime/components/input/color-picker/esm2022/color-picker.component.mjs +6 -5
- app-ng-runtime/components/input/color-picker/esm2022/color-picker.props.mjs +2 -1
- app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +5 -3
- app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/currency/bundles/index.umd.js +4 -3
- app-ng-runtime/components/input/currency/currency.component.d.ts +1 -0
- app-ng-runtime/components/input/currency/esm2022/currency.component.mjs +6 -6
- app-ng-runtime/components/input/currency/esm2022/currency.props.mjs +2 -1
- app-ng-runtime/components/input/currency/fesm2022/index.mjs +4 -3
- app-ng-runtime/components/input/currency/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/bundles/index.umd.js +153 -92
- app-ng-runtime/components/input/default/button/button.component.d.ts +1 -0
- app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +1 -0
- app-ng-runtime/components/input/default/esm2022/button/button.component.mjs +1 -1
- app-ng-runtime/components/input/default/esm2022/button/button.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +8 -7
- app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +7 -7
- app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +21 -16
- app-ng-runtime/components/input/default/esm2022/number/number.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/number/number.props.mjs +3 -1
- app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +28 -23
- app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +7 -7
- app-ng-runtime/components/input/default/esm2022/select/select.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +6 -5
- app-ng-runtime/components/input/default/esm2022/switch/switch.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/color/input-color.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/email/input-email.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/email/input-email.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +50 -13
- app-ng-runtime/components/input/default/esm2022/text/number/input-number.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/number/input-number.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/text/input-text.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +6 -6
- app-ng-runtime/components/input/default/esm2022/textarea/textarea.props.mjs +2 -1
- app-ng-runtime/components/input/default/fesm2022/index.mjs +153 -92
- app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/number/number.component.d.ts +1 -0
- app-ng-runtime/components/input/default/select/select.component.d.ts +2 -0
- app-ng-runtime/components/input/default/text/calendar/input-calendar.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/color/input-color.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/email/input-email.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/locale/number-locale.d.ts +1 -0
- app-ng-runtime/components/input/default/text/number/input-number.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/text/input-text.component.d.ts +1 -0
- app-ng-runtime/components/input/default/textarea/textarea.component.d.ts +1 -0
- app-ng-runtime/components/input/epoch/bundles/index.umd.js +12 -9
- app-ng-runtime/components/input/epoch/date/date.component.d.ts +1 -0
- app-ng-runtime/components/input/epoch/date-time/date-time.component.d.ts +2 -1
- app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +6 -6
- app-ng-runtime/components/input/epoch/esm2022/date/date.props.mjs +2 -1
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +7 -7
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.props.mjs +2 -1
- app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +7 -7
- app-ng-runtime/components/input/epoch/esm2022/time/time.props.mjs +2 -1
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs +12 -9
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/epoch/time/time.component.d.ts +1 -0
- app-ng-runtime/components/input/file-upload/bundles/index.umd.js +187 -100
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +184 -102
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.props.mjs +6 -1
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +187 -100
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/file-upload/file-upload.component.d.ts +12 -10
- app-ng-runtime/components/input/slider/bundles/index.umd.js +5 -6
- app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +6 -8
- app-ng-runtime/components/input/slider/esm2022/slider.props.mjs +2 -1
- app-ng-runtime/components/input/slider/fesm2022/index.mjs +5 -6
- app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/slider/slider.component.d.ts +1 -0
- app-ng-runtime/components/navigation/menu/bundles/index.umd.js +8 -6
- app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +8 -7
- app-ng-runtime/components/navigation/menu/esm2022/menu.props.mjs +2 -1
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +8 -6
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/menu/menu.component.d.ts +1 -0
- app-ng-runtime/components/navigation/popover/bundles/index.umd.js +121 -13
- app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +122 -15
- app-ng-runtime/components/navigation/popover/esm2022/popover.props.mjs +2 -1
- app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +121 -13
- app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/popover/popover.component.d.ts +15 -3
- app-ng-runtime/components/page/default/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/default/esm2022/page.props.mjs +4 -3
- app-ng-runtime/components/page/default/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/footer/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/footer/esm2022/footer.props.mjs +3 -2
- app-ng-runtime/components/page/footer/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/footer/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/header/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/header/esm2022/header.props.mjs +3 -2
- app-ng-runtime/components/page/header/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/header/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/left-panel/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/left-panel/esm2022/left-panel.props.mjs +3 -2
- app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/left-panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/right-panel/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/right-panel/esm2022/right-panel.props.mjs +3 -2
- app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/right-panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/top-nav/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/top-nav/esm2022/top-nav.props.mjs +3 -2
- app-ng-runtime/components/page/top-nav/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/top-nav/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/bundles/index.umd.js +15 -13
- app-ng-runtime/core/esm2022/public_api.mjs +2 -2
- app-ng-runtime/core/esm2022/utils/build-utils.mjs +7 -7
- app-ng-runtime/core/esm2022/utils/utils.mjs +4 -5
- app-ng-runtime/core/fesm2022/index.mjs +11 -11
- app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/public_api.d.ts +1 -1
- app-ng-runtime/core/utils/utils.d.ts +1 -1
- app-ng-runtime/mobile/components/device/barcode-scanner/bundles/index.umd.js +2 -1
- app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.props.mjs +3 -2
- app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs +2 -1
- app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/device/camera/bundles/index.umd.js +2 -1
- app-ng-runtime/mobile/components/device/camera/esm2022/camera.props.mjs +3 -2
- app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs +2 -1
- app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/bundles/index.umd.js +6 -4
- app-ng-runtime/runtime/base/components/app-component/app.component.d.ts +2 -3
- app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +5 -5
- app-ng-runtime/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +5 -4
- app-ng-runtime/runtime/base/fesm2022/index.mjs +6 -4
- app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/runtime/base/guards/can-deactivate-page.guard.d.ts +2 -1
- app-ng-runtime/scripts/datatable/datatable.js +23 -26
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/basic/search/src/search.props.ts","../../../../../projects/components/widgets/basic/search/src/data-provider/local-data-provider.ts","../../../../../projects/components/widgets/basic/search/src/data-provider/remote-data-provider.ts","../../../../../projects/components/widgets/basic/search/src/data-provider/data-provider.ts","../../../../../projects/components/widgets/basic/search/src/search.component.html","../../../../../projects/components/widgets/basic/search/src/search.component.ts","../../../../../projects/components/widgets/basic/search/src/scrollable.directive.ts","../../../../../projects/components/widgets/basic/search/src/search.module.ts","../../../../../projects/components/widgets/basic/search/src/index.ts"],"sourcesContent":["import { FormWidgetType } from '@wm/core';\nimport { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget } from '@wm/components/base';\n\nexport const searchProps = new Map(\n [\n ['casesensitive', { value: false, ...PROP_BOOLEAN }],\n ['class', PROP_STRING],\n ['datacompletemsg', { value: 'No more data to load', ...PROP_STRING }],\n ['datafield', { value: 'All Fields', ...PROP_STRING }],\n ['dataoptions', PROP_ANY],\n ['dataset', PROP_ANY],\n ['datasource', PROP_ANY],\n ['datavalue', PROP_STRING],\n ['datavaluesource', PROP_ANY],\n ['dateformat', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['displayimagesrc', PROP_STRING],\n ['displaylabel', PROP_STRING],\n ['displayexpression', PROP_STRING],\n\n ['dropup', PROP_BOOLEAN],\n ['groupby', PROP_STRING],\n ['hint', PROP_STRING],\n ['imagewidth', { value: '16px', ...PROP_STRING }],\n ['limit', PROP_NUMBER],\n ['loadingdatamsg', { value: 'Loading items...', ...PROP_STRING }],\n ['match', PROP_STRING],\n ['matchmode', PROP_STRING],\n ['minchars', PROP_NUMBER],\n ['name', PROP_STRING],\n ['navsearchbar', { value: false, ...PROP_BOOLEAN }],\n ['orderby', PROP_STRING],\n ['placeholder', { value: 'Search', ...PROP_STRING }],\n ['position', PROP_STRING],\n ['query', PROP_STRING],\n ['readonly', PROP_BOOLEAN],\n ['required', PROP_BOOLEAN],\n ['searchkey', PROP_STRING],\n ['searchon', { value: 'typing', ...PROP_STRING }],\n ['shortcutkey', PROP_STRING],\n ['show', { value: true, ...PROP_BOOLEAN }],\n ['showclear', { value: false, ...PROP_BOOLEAN }],\n ['showsearchicon', PROP_BOOLEAN],\n ['tabindex', { value: 0, ...PROP_NUMBER }],\n ['type', { value: 'search', ...PROP_STRING }],\n ['debouncetime', { value: 250, ...PROP_NUMBER }],\n ['width', PROP_STRING]\n ]\n);\n\nexport const registerProps = () => {\n register(\n 'wm-search',\n searchProps\n );\n registerFormWidget(\n FormWidgetType.AUTOCOMPLETE,\n new Map(searchProps)\n );\n registerFormWidget(\n FormWidgetType.TYPEAHEAD,\n new Map(searchProps)\n );\n};\n","import { IDataProvider, IDataProviderConfig } from './data-provider';\nimport {\n endsWith,\n filter,\n get,\n includes,\n isArray,\n isEqual,\n isNumber,\n isObject,\n split,\n startsWith,\n toLower,\n toString,\n values\n} from \"lodash-es\";\n\nexport class LocalDataProvider implements IDataProvider {\n private applyFilter(entry, queryText, filtername?) {\n entry = isNumber(entry) ? entry.toString() : entry;\n if (includes(filtername, 'start')) {\n return startsWith(entry, queryText);\n } else if (includes(filtername, 'end')) {\n return endsWith(entry, queryText);\n } else if (includes(filtername, 'exact')) {\n return isEqual(entry, queryText);\n }\n return includes(entry, queryText);\n }\n\n // LocalData filtering is done based on the searchkey.\n public filter(config: IDataProviderConfig): Promise<any> {\n const entries = config.dataset;\n let casesensitive = config.casesensitive;\n const matchMode = config.matchMode;\n // for supporting existing projects\n if (matchMode && !includes(matchMode, 'ignorecase')) {\n casesensitive = true;\n }\n let queryText = config.query,\n filteredData;\n\n return new Promise((resolve, reject) => {\n /**\n * If searchKey is defined, then check for match string against each item in the dataset with item's field name as the searchKey\n * return the filtered data containing the matching string.\n */\n if (config.searchKey) {\n const keys = split(config.searchKey, ',');\n\n filteredData = filter(config.dataset, (item: any) => {\n return keys.some(key => {\n let a = get(item, key),\n b = queryText;\n if (!casesensitive) {\n a = toLower(toString(a));\n b = toLower(toString(b));\n }\n return this.applyFilter(a, b, matchMode);\n });\n });\n } else {\n // local search on data with array of objects.\n // Iterate over each item and return the filtered data containing the matching string.\n if (isArray(entries) && isObject(entries[0])) {\n filteredData = filter(entries, entry => {\n let a = values(entry).join(' ');\n if (!casesensitive) {\n a = toLower(a);\n // @ts-ignore\n queryText = toLower(queryText);\n }\n return this.applyFilter(a, queryText);\n });\n } else {\n filteredData = filter(entries, entry => {\n if (!casesensitive) {\n entry = toLower(entry);\n // @ts-ignore\n queryText = toLower(queryText);\n }\n return this.applyFilter(entry, queryText, matchMode);\n });\n }\n }\n resolve({\n data: filteredData,\n hasMoreData: false,\n isLastPage: true\n });\n });\n }\n}\n","import { AppConstants, DataSource, findValueOf, getClonedObject } from '@wm/core';\n\nimport { convertDataToObject, interpolateBindExpressions } from '@wm/components/base';\nimport { IDataProvider, IDataProviderConfig } from './data-provider';\nimport {assign, get, indexOf, isArray, isEmpty, isObject, set, slice, split} from \"lodash-es\";\n\nexport class RemoteDataProvider implements IDataProvider {\n public filter(config: IDataProviderConfig): Promise<any> {\n return this.filterData(config).then(response => this.onFilterSuccess(config, response), () => this.onFilterFailure());\n }\n\n private filterData(config) {\n if (config.dataoptions) {\n const dataoptions = config.dataoptions;\n\n const requestParams = config.datasource.execute(DataSource.Operation.GET_REQUEST_PARAMS, config);\n\n // If options are specified, make specifics calls to fetch the results\n // Fetch the related field data\n if (dataoptions.relatedField) {\n return new Promise((resolve, reject) => {\n interpolateBindExpressions(config.viewParent, dataoptions.filterExpr, (filterexpressions) => {\n requestParams.filterExpr = dataoptions.filterExpr = filterexpressions;\n dataoptions.filterExpr = filterexpressions;\n\n config.datasource.execute(\n DataSource.Operation.GET_RELATED_TABLE_DATA, assign({relatedField: dataoptions.relatedField}, requestParams)\n ).then(resolve, reject);\n });\n });\n }\n // Fetch the distinct data\n if (dataoptions.distinctField) {\n return config.datasource.execute(\n DataSource.Operation.GET_DISTINCT_DATA_BY_FIELDS,\n {\n pagesize: config.limit || config.pagesize,\n page: config.page,\n fields: dataoptions.distinctField,\n entityName: dataoptions.tableName,\n filterFields: assign(dataoptions.filterFields, requestParams.filterFields),\n filterExpr: getClonedObject(dataoptions.filterExpr || {})\n\n }\n );\n }\n }\n\n // search records using the searchkey\n return config.datasource.execute(\n DataSource.Operation.SEARCH_RECORDS, config\n );\n }\n\n\n // Check if the page retrieved currently is the last page. If last page, don't send any more request\n protected isLast(page: number, dataSize: number, maxResults: number, currentResults?: number): boolean {\n // if last page info is not returned by backend and current results is less than max results, this is the last page\n if (dataSize === AppConstants.INT_MAX_VALUE) {\n return currentResults !== 0 && currentResults < maxResults;\n }\n const pageCount = ((dataSize > maxResults) ? (Math.ceil(dataSize / maxResults)) : (dataSize < 0 ? 0 : 1));\n return page === pageCount;\n }\n\n // this function transform the response data in case it is not an array\n protected getTransformedData(variable: any, data: any): any {\n const operationResult = variable.operation + 'Result'; // when output is only string it is available as oprationNameResult\n const tempResponse = data[operationResult];\n\n // in case data received is value as string then add that string value to object and convert object into array\n if (tempResponse) {\n const tempObj = {};\n set(tempObj, operationResult, tempResponse);\n data = [tempObj]; // convert data into an array having tempObj\n } else {\n // in case data received is already an object then convert it into an array\n data = [data];\n }\n\n return data;\n }\n\n protected onFilterFailure() {\n return [];\n }\n\n private isLastPageForDistinctApi(data, page, totalElements, _isLastPage) {\n return page > 1 && !_isLastPage && isEmpty(data) && totalElements === AppConstants.INT_MAX_VALUE;\n }\n\n\n // this function processes the response depending on pageOptions, isPageable and prepares the formattedDataset.\n protected onFilterSuccess(config: IDataProviderConfig, response): Promise<any> {\n let data: any = response.data;\n let formattedData: any;\n let _isLastPage: boolean;\n let page: number;\n let isPaginatedData: boolean;\n\n const expressionArray = split(config.binddataset, '.');\n const dataExpression = slice(expressionArray, indexOf(expressionArray, 'dataSet') + 1).join('.');\n const $I = '[$i]';\n\n return new Promise((resolve, reject) => {\n const pageOptions = response.pagination;\n\n if (config.datasource.execute(DataSource.Operation.IS_PAGEABLE)) {\n page = pageOptions.number + 1;\n _isLastPage = this.isLast(page, (config.limit > 0 && config.limit) || pageOptions.totalElements, pageOptions.size, pageOptions.numberOfElements);\n isPaginatedData = true;\n\n if (this.isLastPageForDistinctApi(data, page, pageOptions.totalElements, _isLastPage)) {\n _isLastPage = true;\n resolve({\n data: [],\n isLastPage: _isLastPage,\n hasMoreData: page > 1,\n isPaginatedData,\n page\n });\n return;\n }\n }\n // if data expression exists, extract the data from the expression path\n if (dataExpression) {\n if (isArray(data)) {\n const index = dataExpression.lastIndexOf($I);\n if(index > -1){\n const restExpr = dataExpression.substr(index + 5);\n formattedData = data.map(datum => findValueOf(datum, restExpr));\n }\n } else if (isObject(data)) {\n formattedData = get(data, dataExpression);\n }\n data = formattedData || data;\n }\n if (!isArray(data)) {\n data = this.getTransformedData(config.datasource, data);\n }\n // in case of no data received, resolve the promise with empty array\n if (!data.length) {\n resolve({data: [], isLastPage: _isLastPage, hasMoreData: page > 1, isPaginatedData, page});\n } else {\n resolve({data: data, isLastPage: _isLastPage, hasMoreData: page > 1, isPaginatedData, page});\n }\n });\n }\n}\n","import { DataSource } from '@wm/core';\n\nimport { LocalDataProvider } from './local-data-provider';\nimport { RemoteDataProvider } from './remote-data-provider';\n\nexport interface IDataProviderConfig {\n dataoptions?: any;\n viewParent?: any;\n dataset: any;\n datafield: string;\n binddataset?: string;\n datasource?: any;\n hasData: boolean;\n query: Array<string> | string;\n isLocalFilter: boolean;\n searchKey?: string;\n matchMode?: string;\n casesensitive?: boolean;\n isformfield?: boolean;\n orderby?: string;\n limit?: number;\n pagesize?: number;\n page: number;\n noMoredata?: boolean;\n onBeforeservicecall?: Function;\n}\n\nexport interface IDataProvider {\n hasMoreData?: boolean;\n isLastPage?: boolean;\n hasNoMoreData?: boolean;\n isPaginatedData?: boolean;\n page?: number;\n updateDataset?: boolean;\n\n filter(config: IDataProviderConfig): Promise<any>;\n}\n\nexport class DataProvider implements IDataProvider {\n\n public hasMoreData: boolean;\n public isLastPage: boolean;\n public page: number;\n public isPaginatedData: boolean;\n public updateDataset: boolean;\n\n static remoteDataProvider = new RemoteDataProvider();\n static localDataProvider = new LocalDataProvider();\n\n public filter(config: IDataProviderConfig): Promise<any> {\n\n let promise: Promise<any>;\n\n /**\n * Make call to remoteDataProvider when searchkey is available and data is not from local / model variable.\n * Otherwise use localDataProvider\n * If datasource is a serviceVariable with no input params, then perform local search.\n * when there is no dataset on the datasource when first time make a remote call to set the dataset for service variable.\n */\n const hasNoVariableDataset = config.datasource && config.datasource.execute(DataSource.Operation.IS_UPDATE_REQUIRED, config.hasData);\n if (!config.isLocalFilter && (config.dataoptions || ((config.datasource && config.datasource.execute(DataSource.Operation.IS_API_AWARE))\n && config.searchKey\n && hasNoVariableDataset))) {\n promise = DataProvider.remoteDataProvider.filter(config);\n } else {\n promise = DataProvider.localDataProvider.filter(config);\n }\n\n return promise.then(response => {\n this.updateDataset = config.datasource && !config.datasource.execute(DataSource.Operation.SUPPORTS_CRUD) && hasNoVariableDataset;\n this.hasMoreData = response.hasMoreData;\n this.isLastPage = response.isLastPage;\n this.page = response.page;\n this.isPaginatedData = response.isPaginatedData;\n\n return response;\n });\n }\n}\n","<ng-template #customItemTemplate let-model=\"item\" let-index=\"index\" let-query=\"query\" let-match=\"match\">\n <!-- Default item template -->\n <a *ngIf=\"!content\">\n <img *ngIf=\"model.imgSrc\" [src]=\"model.imgSrc\" alt=\"Search\" [style.width]=\"imagewidth\">\n <span [title]=\"model.label\" [innerHtml]=\"highlight(match, query) || model.label\"></span>\n </a>\n <!-- Custom partial template -->\n <a *ngIf=\"content\" [ngClass]=\"{customTemplate: content}\" partialContainer [wmItemTemplate]=\"content\" [userComponentParams]=\"match.item\">\n <div partial-container-target></div>\n </a>\n</ng-template>\n\n<ng-template #customListTemplate let-matches=\"matches\" let-itemTemplate=\"itemTemplate\" let-query=\"query\">\n <ul #ulElement class=\"app-search dropdown-menu\" scrollable>\n <li #liElements *ngFor=\"let match of matches; let i = index;\" [ngClass]=\"{active: typeaheadContainer && typeaheadContainer.isActive(match), 'list-group-header': match && match.isHeader()}\"\n (mouseenter)=\"typeaheadContainer.selectActive(match);\"\n (click)=\"match && !match.isHeader() && typeaheadContainer.selectMatch(match, $event); $typeaheadEvent = $event; notifySubscriber();\">\n <!-- itemTemplate comes from the <input> -->\n <h4 *ngIf=\"match.isHeader()\" class=\"group-title\">{{match.value}}</h4>\n <ng-container *ngIf=\"!match.isHeader()\" [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{item: match.item, index: i, match: match, query: query}\">\n </ng-container>\n </li>\n <div class=\"status\" [hidden]=\"_loadingItems || !(datacompletemsg && dataProvider.isLastPage)\">\n <span [textContent]=\"datacompletemsg\"></span>\n </div>\n <div class=\"status\" [hidden]=\"!_loadingItems\">\n <i class=\"fa fa-circle-o-notch fa-spin\"></i>\n <span [textContent]=\"loadingdatamsg\"></span>\n </div>\n </ul>\n</ng-template>\n\n<!--This template is for search inside mobile navbar.-->\n<ng-container *ngIf=\"navsearchbar; else searchTemplate\">\n <input [title]=\"query || ''\" type=\"text\" class=\"app-textbox form-control list-of-objs app-search-input\" [placeholder]=\"placeholder || ''\"\n focus-target\n container=\"body\"\n [disabled]=\"disabled\"\n autocomplete=\"off\"\n [(ngModel)]=\"query\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [typeahead]=\"typeaheadDataSource\"\n [typeaheadWaitMs]=\"debouncetime\"\n [typeaheadItemTemplate]=\"customItemTemplate\"\n [optionsListTemplate]=\"customListTemplate\"\n (input)=\"onInputChange($event)\"\n (keydown)=\"listenQuery = true\"\n (keydown.enter)=\"$typeaheadEvent = $event;handleEnterEvent($event)\"\n (keydown.arrowdown)=\"selectNext($event)\"\n (blur)=\"invokeOnTouched($event)\"\n (click)=\"handleFocus($event);\"\n (focus)=\"_unsubscribeDv = false; listenQuery = true; handleFocus($event); invokeOnFocus($event);\"\n (focusout)=\"onFocusOut()\"\n [typeaheadMinLength]=\"minchars\"\n [typeaheadOptionsLimit]=\"limit\"\n (typeaheadLoading)=\"_loadingItems\"\n (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n typeaheadOptionField=\"label\"\n [typeaheadGroupField]=\"groupby ? 'groupby' : null\"\n [typeaheadAsync]=\"true\"\n [typeaheadScrollable]=\"true\"\n [adaptivePosition]=\"true\"\n [typeaheadOptionsInScrollableView]=\"optionslimitinscrollableview\"\n [dropup]=\"dropup\"\n [tabindex]=\"tabindex\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"hint || 'Search field'\"/>\n <i class=\"btn-close wi wi-cancel\" [hidden]=\"!showClosebtn\" (click)=\"clearSearch($event);\"></i>\n</ng-container>\n<!--This template is for both web and fullscreen mode in mobile.-->\n<ng-template #searchTemplate>\n <span class=\"wi wi-arrow-left form-control-feedback back-btn\" aria-hidden=\"true\" (click)=\"closeSearch()\"></span>\n <span class=\"sr-only\">Back button</span>\n <input [title]=\"query || ''\" type=\"text\" class=\"app-textbox form-control list-of-objs app-search-input\" [placeholder]=\"placeholder || ''\"\n focus-target\n [container]=\"containerTarget || '.wm-app'\"\n [disabled]=\"disabled\"\n autocomplete=\"off\"\n [(ngModel)]=\"query\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [typeahead]=\"typeaheadDataSource\"\n [typeaheadWaitMs]=\"debouncetime\"\n [typeaheadItemTemplate]=\"customItemTemplate\"\n [optionsListTemplate]=\"customListTemplate\"\n (input)=\"onInputChange($event)\"\n (keydown)=\"listenQuery = true\"\n (keydown.enter)=\"$typeaheadEvent = $event;handleEnterEvent($event)\"\n (keydown.arrowdown)=\"selectNext($event)\"\n (blur)=\"invokeOnTouched($event); onFocusOut()\"\n (click)=\"handleFocus($event);\"\n (focus)=\"_unsubscribeDv = false; listenQuery = true; handleFocus($event); invokeOnFocus($event)\"\n [typeaheadMinLength]=\"minchars\"\n [typeaheadOptionsLimit]=\"limit\"\n (typeaheadLoading)=\"_loadingItems\"\n (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n typeaheadOptionField=\"label\"\n [typeaheadGroupField]=\"groupby ? 'groupby' : null\"\n [typeaheadAsync]=\"true\"\n [typeaheadScrollable]=\"true\"\n [adaptivePosition]=\"true\"\n [typeaheadOptionsInScrollableView]=\"optionslimitinscrollableview\"\n [tabindex]=\"tabindex\"\n [dropup]=\"dropup\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"hint || 'Search field'\">\n <input class=\"model-holder\" ng-model=\"proxyModel\" ng-required=\"required\" tabindex=\"-1\" aria-hidden=\"true\">\n <span *ngIf=\"_loadingItems\" aria-hidden=\"true\" class=\"fa fa-circle-o-notch fa-spin form-control-feedback\"></span>\n <span class=\"wi wi-close form-control-feedback clear-btn\" [ngClass]=\"{'show-btn': isQueryEntered()}\" (click)=\"clearSearch($event, true)\"></span>\n <span class=\"sr-only\">Clear button</span>\n <span *ngIf=\"showsearchicon\" class=\"input-group-addon\" aria-label=\"search icon\" [ngClass]=\"{'disabled': disabled}\">\n <form>\n <button title=\"Search\" [disabled]=\"disabled\" class=\"app-search-button wm-sl-l sl-search\" type=\"submit\"\n (click)=\"onSearchSelect($event)\"></button>\n </form>\n </span>\n</ng-template>\n","import {\n AfterViewInit,\n Attribute,\n Component,\n ElementRef, Inject,\n Injector,\n OnInit,\n Optional,\n QueryList,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';\n\nimport { Observable, from, of } from 'rxjs';\nimport { filter, mergeMap } from 'rxjs/operators';\n\nimport { TypeaheadContainerComponent, TypeaheadDirective, TypeaheadMatch } from 'ngx-bootstrap/typeahead';\n\nimport {\n addClass,\n adjustContainerPosition,\n App,\n DataSource,\n isDefined,\n isMobile,\n toBoolean\n} from '@wm/core';\nimport { ALLFIELDS, convertDataToObject, DataSetItem, extractDataAsArray, getUniqObjsByDataField, provideAs, provideAsWidgetRef, styler, transformFormData, getContainerTargetClass } from '@wm/components/base';\nimport { DatasetAwareFormComponent } from '@wm/components/input';\n\nimport { registerProps } from './search.props';\nimport { DataProvider, IDataProvider, IDataProviderConfig } from './data-provider/data-provider';\nimport {\n debounce,\n find,\n get,\n includes,\n isArray,\n isEmpty,\n isEqual,\n isObject,\n isUndefined,\n map,\n split,\n toString,\n trim\n} from \"lodash-es\";\n\nconst WIDGET_CONFIG = { widgetType: 'wm-search', hostClass: 'input-group' };\n\n@Component({\n selector: '[wmSearch]',\n templateUrl: './search.component.html',\n providers: [\n provideAs(SearchComponent, NG_VALUE_ACCESSOR, true),\n provideAs(SearchComponent, NG_VALIDATORS, true),\n provideAsWidgetRef(SearchComponent)\n ]\n})\nexport class SearchComponent extends DatasetAwareFormComponent implements OnInit, AfterViewInit {\n static initializeProps = registerProps();\n public casesensitive: boolean;\n public searchkey: string;\n public queryModel: Array<DataSetItem> | string;\n public query = '';\n public limit: any;\n public showsearchicon: boolean;\n public minchars: number;\n public type: string;\n public navsearchbar: any;\n public debouncetime: number;\n public hint: string;\n\n private app: App;\n private typeaheadDataSource: Observable<any>;\n private pagesize: any;\n private page = 1;\n public _loadingItems: boolean;\n private dataProvider: IDataProvider;\n private result: Array<any>; // contains the search result i.e. matches\n private formattedDataset: any;\n private isformfield: boolean;\n private $typeaheadEvent: Event;\n\n public tabindex: number;\n public startIndex: number;\n public binddisplaylabel: string;\n public typeaheadContainer: TypeaheadContainerComponent;\n public containerTarget: string;\n\n @ViewChild(TypeaheadDirective) typeahead: TypeaheadDirective;\n @ViewChild('ulElement') ulElement: ElementRef;\n @ViewChildren('liElements') liElements: QueryList<ElementRef>;\n\n private allowonlyselect: boolean;\n private class: string;\n\n private lastSelectedIndex: number;\n private dataoptions: any;\n public dropdownEl: any;\n private _lastQuery: string;\n private _lastResult: any;\n private _isOpen: boolean; // set to true when dropdown is open\n private showClosebtn: boolean;\n private _unsubscribeDv: boolean;\n private _datasource: any;\n private isScrolled: boolean;\n private parentEl: any;\n private position: string;\n private elIndex: number;\n private listenQuery: boolean;\n private _domUpdated: boolean;\n private searchon: string;\n private showclear: boolean;\n public matchmode: string;\n private clearData: boolean;\n\n\n // getter setter is added to pass the datasource to searchcomponent.\n get datasource() {\n return this._datasource;\n }\n\n set datasource(nv) {\n this._datasource = nv;\n const data = this.datavalue || this.toBeProcessedDatavalue;\n this.updateByDatavalue(data);\n }\n\n constructor(\n inj: Injector,\n app: App,\n @Attribute('datavalue.bind') public binddatavalue,\n @Attribute('dataset.bind') public binddataset,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n super(inj, WIDGET_CONFIG, explicitContext);\n // this flag will not allow the empty datafield values.\n this.allowempty = false;\n this.app = app;\n addClass(this.nativeElement, 'app-search', true);\n\n /**\n * Listens for the change in the ngModel on every search and retrieves the data as observable.\n * This observable data is passed to the typeahead.\n * @type {Observable<any>}\n */\n this.typeaheadDataSource = Observable\n .create((observer: any) => {\n // Runs on every search\n if (this.listenQuery) {\n this._defaultQueryInvoked = false;\n this._loadingItems = true;\n observer.next(this.query);\n }\n // on keydown, while scrolling the dropdown items, when last item is reached next call is triggered\n // unless the call is resolved, we are able to scroll next to first item and soon\n // This shows flickering from first item to next new items appended.\n // By setting container to undefined, key events changes will be stopped while loading items\n if (this.lastSelectedIndex) {\n this.typeahead._container = undefined;\n }\n }).pipe(\n filter(() => {\n this._loadingItems = false;\n return (this.minchars === 0 || (this.query && this.query.length >= this.minchars));\n }),\n mergeMap((token: string) => this.getDataSourceAsObservable(token))\n );\n\n this.dataProvider = new DataProvider();\n\n /**\n * When default datavalue is not found within the dataset, a filter call is made to get the record using fetchDefaultModel.\n * after getting the response, set the queryModel and query.\n */\n const datavalueSubscription = this.datavalue$.subscribe((val: Array<string> | string) => {\n\n const query = (isArray(val) ? val[0] : val) as string;\n\n if (query === null || query === '') {\n this._modelByValue = '';\n // reset the query.\n this.query = this.queryModel = '';\n // on clear or reset filter, empty the lastResults to fetch new records.\n this._lastResult = undefined;\n return;\n }\n\n if (!this._unsubscribeDv) {\n this._defaultQueryInvoked = false;\n // if prev datavalue is not equal to current datavalue then clear the modelByKey and queryModel\n if (!isObject(val) && (this as any).prevDatavalue !== val) {\n this._modelByKey = undefined;\n this.query = this.queryModel = '';\n }\n // if the datafield is ALLFILEDS do not fetch the records\n // update the query model with the values we have\n this.updateByDatavalue(val);\n }\n\n // turn on showCloseBtn when a default value is given\n this.showClosebtn = (this.query !== '');\n });\n this.registerDestroyListener(() => datavalueSubscription.unsubscribe());\n\n const datasetSubscription = this.dataset$.subscribe(() => {\n // set the next item index.\n this.startIndex = this.datasetItems.length;\n this._lastResult = undefined;\n const defaultValue = this.datavalue || this.toBeProcessedDatavalue;\n // invoking updateByDataset only when datavalue is present, as entered value i.e. query is setting back to ''\n if (isDefined(defaultValue)) {\n this.updateByDataset(defaultValue);\n }\n });\n this.registerDestroyListener(() => datasetSubscription.unsubscribe());\n }\n\n // on clear, trigger search with page size 1\n private clearSearch($event, loadOnClear) {\n this.query = '';\n this.onInputChange($event);\n this.dataProvider.isLastPage = false;\n this.listenQuery = false;\n if (loadOnClear) {\n this.listenQuery = true;\n this._unsubscribeDv = false;\n this.loadMoreData();\n }\n this.invokeEventCallback('clearsearch');\n this._loadingItems = false;\n // when search input is cleared, focus on the input field\n if ($event) {\n this.$element.find('.app-search-input').focus();\n }\n }\n\n // function to clear the input value\n public clearText() {\n this.query = '';\n this.showClosebtn = false;\n }\n\n // Close the full screen mode in mobile view of auto complete\n private closeSearch() {\n this._loadingItems = false;\n this.page = 1;\n // after closing the search, insert the element at its previous position (elIndex)\n this.insertAtIndex(this.elIndex);\n this.elIndex = undefined;\n this.parentEl = undefined;\n this.$element.removeClass('full-screen');\n if (this._domUpdated) {\n this._domUpdated = false;\n }\n this.listenQuery = false;\n this._unsubscribeDv = true;\n this.typeahead.hide();\n }\n\n private renderMobileAutoComplete() {\n // Get the parent element of the search element which can be next or prev element, if both are empty then get the parent of element.\n if (!isDefined(this.elIndex)) {\n this.parentEl = this.$element.parent();\n this.elIndex = this.parentEl.children().index(this.$element);\n }\n if (!this.$element.hasClass('full-screen')) {\n // this flag is set to notify that the typeahead-container dom has changed its position\n this._domUpdated = true;\n // Add full screen class on focus of the input element.\n this.$element.addClass('full-screen');\n\n // Add position to set the height to auto\n if (this.position === 'inline') {\n this.$element.addClass(this.position);\n }\n }\n // focus is lost when element is changed to full-screen, keydown to select next items will not work\n // Hence explicitly focusing the input\n if (this.$element.hasClass('full-screen')) {\n this.$element.find('.app-search-input').focus();\n }\n }\n\n private getDataSourceAsObservable(query: string): Observable<any> {\n // show dropdown only when there is change in query. This should not apply when dataoptions with filterFields are updated.\n // when lastResult is not available i.e. still the first call is pending and second query is invoked then do not return.\n if (this._lastQuery === query && !get(this.dataoptions, 'filterFields') && isDefined(this._lastResult)) {\n this._loadingItems = false;\n return of(this._lastResult);\n }\n\n /*\n WMS-19177: On focus of input field for autocomplete type, do not trigger api call when\n a) searchkey and displayexpression are different\n b) binddisplaylabel contains multiple values\n c) binddisplaylabel contains single value which does not match with searchkey\n */\n if (this.type === 'autocomplete' && this.searchkey && this.query && this.datavalue) {\n let bindDisplayLabelArray = [];\n const searchKeyArray = split(this.searchkey, ',');\n let displaylabel;\n if (this.binddisplaylabel) {\n bindDisplayLabelArray = split(this.binddisplaylabel, '+');\n if (bindDisplayLabelArray.length === 1) {\n if (!includes(bindDisplayLabelArray[0], '|')) {\n const regex = /\\[(.*?)\\]/;\n displaylabel = regex.exec(bindDisplayLabelArray[0])[1];\n } else {\n displaylabel = true;\n }\n }\n }\n if ((bindDisplayLabelArray.length > 1 || (displaylabel && !includes(searchKeyArray, displaylabel))\n || (this.displayexpression && !includes(searchKeyArray, this.displayexpression)))) {\n this._loadingItems = false;\n return of([]);\n }\n }\n this._lastQuery = this.query;\n return from(this.getDataSource(query));\n }\n\n protected handleEvent(node: HTMLElement, eventName: string, eventCallback: Function, locals: any) {\n if (!includes(['blur', 'focus', 'select', 'submit', 'change'], eventName)) {\n super.handleEvent(node, eventName, eventCallback, locals);\n }\n }\n\n // highlight the characters in the dropdown matching the query.\n private highlight(match: TypeaheadMatch, query: string) {\n if (this.typeaheadContainer) {\n // highlight of chars will work only when label are strings.\n (match as any).value = match.item.label.toString();\n return this.typeaheadContainer.highlight(match, query);\n }\n }\n\n // inserts the element at the index position\n private insertAtIndex(i) {\n if (i === 0) {\n this.parentEl.prepend(this.$element);\n } else {\n const $elAtIndex = this.parentEl.children().eq(i);\n if ($elAtIndex.length) {\n this.$element.insertBefore(this.parentEl.children().eq(i));\n } else {\n this.$element.insertAfter(this.parentEl.children().eq(i - 1));\n }\n }\n }\n\n // Check if the widget is of type autocomplete in mobile view/ app\n public isMobileAutoComplete() {\n return this.type === 'autocomplete' && isMobile();\n }\n\n // Check if the query is entered in the input and the view is not mobile\n public isQueryEntered() {\n return this.showclear && this.showClosebtn;\n }\n\n private loadMoreData(incrementPage?: boolean) {\n if (this.dataProvider.isLastPage) {\n return;\n }\n // Increase the page number and trigger force query update\n this.page = incrementPage ? this.page + 1 : this.page;\n\n this.isScrolled = true;\n this._loadingItems = true;\n\n // when invoking new set of results, reset the lastQuery.\n if (incrementPage) {\n this._lastQuery = undefined;\n }\n\n // trigger the typeahead change manually to fetch the next set of results.\n this.typeahead.onInput({\n target: {\n value: trim(this.query) || '0' // dummy data to notify the observables\n }\n });\n }\n\n // on focusout, subscribe to the datavalue changes again\n private onFocusOut() {\n this._unsubscribeDv = false;\n this._loadingItems = false;\n // reset the page value on focusout.\n this.page = 1;\n // if domUpdated is true then do not hide the dropdown in the fullscreen\n if (!this._domUpdated && this._isOpen) {\n this.listenQuery = false;\n }\n this._isOpen = false;\n // on outside click, typeahead is hidden. To avoid this, when fullscreen is set, overridding isFocused flag on the typeahead container\n if (this._domUpdated && this.typeahead && (this.typeahead as any)._container) {\n (this.typeahead as any)._container.isFocused = true;\n }\n }\n\n private onInputChange($event) {\n // reset all the previous page details in order to fetch new set of result.\n this.result = [];\n this.page = 1;\n this.listenQuery = this.isUpdateOnKeyPress();\n this._modelByValue = undefined;\n\n // when input is cleared, reset the datavalue\n if (this.query === '') {\n this.queryModel = '';\n this._modelByValue = '';\n this.updatePrevDatavalue(this._lastQuery);\n this.invokeOnChange(this._modelByValue, {}, true);\n\n this.invokeEventCallback('clear', { $event });\n\n // trigger onSubmit only when the search input is cleared off and do not trigger when tab is pressed.\n if ($event && $event.which !== 9) {\n this.invokeEventCallback('submit', { $event });\n }\n } else {\n // invoking change event on every input value change.\n this.invokeEventCallback('change', {\n $event: $event,\n newVal: this._modelByValue || this.query,\n oldVal: (this as any).prevDatavalue\n });\n }\n this.showClosebtn = (this.query !== '');\n }\n\n // Triggered for enter event\n private handleEnterEvent($event) {\n // submit event triggered when there is no search results\n if (!get(this.typeahead, 'matches.length')) {\n this.onSearchSelect($event);\n }\n }\n // Triggerred when typeahead option is selected.\n private onSearchSelect($event: Event) {\n let item;\n // WMS-22533: Before adding active typeahead el, check if the entered query matches with the active el or not\n const isQueryMatch = this.typeaheadContainer?.active?.value === this.query;\n\n if (this.typeaheadContainer && this.typeaheadContainer.active && isQueryMatch) {\n item = this.typeaheadContainer.active.item;\n }\n $event = this.eventData($event, item || {});\n\n // searchOn is set as onBtnClick, then invoke the search api call manually.\n if (!this.isUpdateOnKeyPress()) {\n this.listenQuery = true;\n // trigger the typeahead change manually to fetch the next set of results.\n this.typeahead.onInput({\n target: {\n value: this.query // dummy data to notify the observables\n }\n });\n return;\n }\n // when matches are available.\n if (this.typeaheadContainer && this.liElements.length && isQueryMatch) {\n this.typeaheadContainer.selectActiveMatch();\n } else {\n this.queryModel = this.query;\n this.invokeEventCallback('submit', { $event });\n }\n }\n\n private invokeOnBeforeServiceCall(inputData) {\n this.invokeEventCallback('beforeservicecall', { inputData });\n }\n\n private onDropdownOpen() {\n if (this.clearData) {\n this.typeahead.hide();\n }\n // setting the ulElements, liElement on typeaheadContainer.\n // as we are using customOption template, liElements are not available on typeaheadContainer so append them explicitly.\n const fn = debounce(() => {\n this._isOpen = true;\n this.typeaheadContainer = this.typeahead._container || (this.typeahead as any)._typeahead.instance;\n (this.typeaheadContainer as any).liElements = this.liElements;\n (this.typeaheadContainer as any).ulElement = this.ulElement;\n adjustContainerPosition($('typeahead-container'), this.nativeElement, (this.typeahead as any)._typeahead, $('typeahead-container .dropdown-menu'));\n\n });\n\n fn();\n\n // open full-screen search view\n if (this.isMobileAutoComplete()) {\n if (!this.$element.hasClass('full-screen')) {\n this.renderMobileAutoComplete();\n }\n const dropdownEl = this.dropdownEl.closest('typeahead-container');\n\n dropdownEl.insertAfter(this.$element.find('input').first());\n const screenHeight = this.$element.closest('.app-content').height();\n dropdownEl.css({ position: 'relative', top: 0, height: screenHeight + 'px' });\n this.showClosebtn = this.query && this.query !== '';\n\n if (!isUndefined(this.dataProvider.isLastPage) && !this.dataProvider.isLastPage) {\n this.triggerSearch();\n }\n }\n }\n\n private selectNext() {\n const matches = this.typeaheadContainer.matches;\n\n if (!matches) {\n return;\n }\n const index = matches.indexOf(this.typeaheadContainer.active);\n\n // on keydown, if scroll is at the bottom and next page records are available, fetch next page items.\n if (!this._loadingItems && !this.dataProvider.isLastPage && index + 1 > matches.length - 1) {\n // index is saved in order to select the lastSelected item in the dropdown after fetching next page items.\n this.lastSelectedIndex = index;\n this.loadMoreData(true);\n }\n }\n\n private setLastActiveMatchAsSelected() {\n if (this.lastSelectedIndex) {\n (this.typeaheadContainer as any)._active = this.typeaheadContainer.matches[this.lastSelectedIndex];\n this.typeaheadContainer.nextActiveMatch();\n this.lastSelectedIndex = undefined;\n }\n }\n\n private triggerSearch() {\n if (this.dataProvider.isLastPage || !this.$element.hasClass('full-screen')) {\n return;\n }\n const typeAheadDropDown = this.dropdownEl;\n const $lastItem = typeAheadDropDown.find('li').last();\n\n // Check if last item is not below the full screen\n if ($lastItem.length && typeAheadDropDown.length && (typeAheadDropDown.height() + typeAheadDropDown.position().top > $lastItem.height() + $lastItem.position().top)) {\n this.loadMoreData(true);\n }\n }\n\n private isUpdateOnKeyPress() {\n return this.searchon === 'typing';\n }\n\n private debounceDefaultQuery(data) {\n this._defaultQueryInvoked = true;\n this.getDataSource(data, true).then((response) => {\n if (response.length) {\n this.queryModel = response;\n this._lastQuery = this.query = this.queryModel[0].label || '';\n this._modelByValue = this.queryModel[0].value;\n this._modelByKey = this.queryModel[0].key;\n this.showClosebtn = (this.query !== '');\n } else {\n this._modelByValue = undefined;\n this.queryModel = undefined;\n this.query = '';\n }\n if (this.clearData) {\n if (get((this.typeahead as any), '_typeahead.isShown')) {\n this.typeahead.hide();\n }\n }\n });\n }\n\n private updateByDatavalue(data) {\n this.updateByDataset(data);\n this.updateByDataSource(data);\n }\n\n private updateByDataSource(data) {\n // value is present but the corresponding key is not found then fetch next set\n // modelByKey will be set only when datavalue is available inside the localData otherwise make a N/w call.\n if (isDefined(data) && !isObject(data) && this.datasource && !isDefined(this._modelByKey) && this.datafield !== ALLFIELDS) {\n // Avoid making default query if queryModel already exists.\n if (isDefined(this.queryModel) && !isEmpty(this.queryModel)) {\n this.updateDatavalueFromQueryModel();\n return;\n }\n\n // Make default query call only when datasource supports CRUD (live variable).\n if (!this._defaultQueryInvoked && this.datasource.execute(DataSource.Operation.SUPPORTS_CRUD)) {\n this.debounceDefaultQuery(data);\n }\n }\n }\n\n // updates the model value using queryModel\n private updateDatavalueFromQueryModel() {\n if (isDefined(this.queryModel)) {\n this._modelByValue = isArray(this.queryModel) ? (this.queryModel[0] as DataSetItem).value : this.queryModel;\n this._modelByKey = isArray(this.queryModel) ? (this.queryModel[0] as DataSetItem).key : this.queryModel;\n this.toBeProcessedDatavalue = undefined;\n }\n }\n\n private updateByDataset(data: any) {\n // default query is already invoked then do not make other default query call.\n // For local search i.e. searchkey is undefined, do not return, verify the datavalue against the datasetItems .\n if (this._defaultQueryInvoked && this.searchkey) {\n return;\n }\n const selectedItem = find(this.datasetItems, (item) => {\n return (isObject(item.value) ? isEqual(item.value, data) : (toString(item.value)).toLowerCase() === (toString(data)).toLowerCase());\n });\n\n // set the default only when it is available in dataset.\n if (selectedItem) {\n this.queryModel = [selectedItem];\n } else if (this.datafield === ALLFIELDS && isObject(data)) {\n this.queryModel = this.getTransformedData(extractDataAsArray(data));\n } else {\n // resetting the queryModel only when prevDatavalue is equal to data\n if ((this as any).prevDatavalue !== data) {\n this.queryModel = undefined;\n this.query = '';\n return;\n }\n }\n this.updateDatavalueFromQueryModel();\n\n // Show the label value on input.\n this._lastQuery = this.query = isDefined(this.queryModel) && this.queryModel.length ? get(this.queryModel[0], 'label') : '';\n this.showClosebtn = (this.query !== '');\n }\n\n // If we have last search results then open dropdown on focus\n private handleFocus($event) {\n if (this.type === 'search' && this.query === this._lastQuery && this._lastResult) {\n (this.typeahead as any).keyUpEventEmitter.emit(this.query);\n }\n }\n\n public notifySubscriber() {\n const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n if (parentEl.length > 0) {\n this.app.notify('captionPositionAnimate', {displayVal: true, nativeEl: parentEl});\n }\n }\n\n // This method returns a promise that provides the filtered data from the datasource.\n public getDataSource(query: Array<string> | string, searchOnDataField?: boolean, nextItemIndex?: number): Promise<DataSetItem[]> {\n // For default query, searchOnDataField is set to true, then do not make a n/w call when datafield is ALLFIELDS\n if (searchOnDataField && this.datafield === ALLFIELDS) {\n this._loadingItems = false;\n return Promise.resolve([]);\n }\n\n // For default datavalue, search key as to be on datafield to get the default data from the filter call.\n const dataConfig: IDataProviderConfig = {\n dataset: this.dataset ? convertDataToObject(this.dataset) : undefined,\n binddataset: this.binddataset,\n datasource: this.datasource,\n datafield: this.datafield,\n hasData: this.dataset && this.dataset.length,\n query: query,\n isLocalFilter: !this.searchkey,\n searchKey: searchOnDataField ? this.datafield : this.searchkey,\n // default search call match mode should be startignorecase\n matchMode: searchOnDataField ? 'startignorecase' : this.matchmode,\n casesensitive: this.casesensitive,\n isformfield: this.isformfield,\n orderby: this.orderby,\n limit: this.limit,\n pagesize: this.pagesize,\n page: this.page,\n onBeforeservicecall: this.invokeOnBeforeServiceCall.bind(this)\n };\n\n if (this.dataoptions) {\n dataConfig.dataoptions = this.dataoptions;\n dataConfig.viewParent = this.viewParent;\n }\n\n this._loadingItems = true;\n\n return this.dataProvider.filter(dataConfig)\n .then((response: any) => {\n // response from dataProvider returns always data object.\n response = response.data || response;\n // for service variable, updating the dataset only if it is not defined or empty\n if ((!isDefined(this.dataset) || !this.dataset.length) && this.dataProvider.updateDataset) {\n this.dataset = response;\n }\n\n if (this.dataProvider.hasMoreData) {\n this.formattedDataset = this.formattedDataset.concat(response);\n } else {\n this.formattedDataset = response;\n }\n\n // explicitly setting the optionslimit as the matches more than 20 will be ignored if optionslimit is not specified.\n if (this.formattedDataset.length > 20 && !isDefined(this.limit)) {\n this.typeahead.typeaheadOptionsLimit = this.formattedDataset.length;\n }\n\n // In mobile, trigger the search by default until the results have height upto page height. Other results can be fetched by scrolling\n if (this._isOpen && this.isMobileAutoComplete() && !isUndefined(this.dataProvider.isLastPage) && !this.dataProvider.isLastPage) {\n this.triggerSearch();\n }\n\n const transformedData = this.getTransformedData(this.formattedDataset, nextItemIndex);\n\n // result contains the datafield values.\n this.result = map(transformedData, 'value');\n return transformedData;\n }, (error) => {\n this._loadingItems = false;\n return [];\n }\n ).then(result => {\n if (this.isScrolled) {\n (debounce(() => {\n this.setLastActiveMatchAsSelected();\n }, 30))();\n this.isScrolled = false;\n }\n // When no result is found, set the datavalue to undefined.\n if (!result.length) {\n this._modelByValue = undefined;\n this.queryModel = (query as string);\n }\n // on focusout i.e. on other widget focus, if n/w is pending loading icon is shown, when data is available then dropdown is shown again.\n // on unsubscribing do not show the results.\n if (this._unsubscribeDv) {\n result = [];\n }\n this._loadingItems = false;\n this._lastResult = result;\n return result;\n });\n }\n\n // this method returns the parent context i.e. Page context and not parent component's context.\n private getContext(context) {\n if (context && get(context, 'widget')) {\n return this.getContext(context.viewParent);\n }\n return context;\n }\n\n public getTransformedData(data: any, itemIndex?: number, iscustom?: boolean): DataSetItem[] {\n if (isDefined(itemIndex)) {\n itemIndex++;\n }\n\n const transformedData = transformFormData(\n this.getContext(this.viewParent),\n data,\n this.datafield,\n {\n displayField: this.displaylabel || this.displayfield,\n displayExpr: iscustom ? '' : this.displayexpression,\n bindDisplayExpr: iscustom ? '' : this.binddisplaylabel,\n bindDisplayImgSrc: this.binddisplayimagesrc,\n displayImgSrc: this.displayimagesrc\n },\n itemIndex,\n this\n );\n return getUniqObjsByDataField(transformedData, this.datafield, this.displayfield || this.displaylabel, toBoolean(this.allowempty));\n }\n\n // OptionsListTemplate listens to the scroll event and triggers this function.\n public onScroll($scrollEl: Element, evt: Event) {\n const totalHeight = $scrollEl.scrollHeight,\n clientHeight = $scrollEl.clientHeight;\n\n // If scroll is at the bottom and no request is in progress and next page records are available, fetch next page items.\n if (!this._loadingItems && !this.dataProvider.isLastPage && ($scrollEl.scrollTop + clientHeight >= totalHeight)) {\n this.loadMoreData(true);\n }\n }\n\n public ngOnInit() {\n super.ngOnInit();\n\n if (!isDefined(this.minchars)) {\n // for autocomplete set the minchars to 0\n if (this.type === 'autocomplete') {\n this.minchars = 0;\n } else {\n this.minchars = 1;\n }\n }\n\n this.listenQuery = this.isUpdateOnKeyPress();\n\n // by default for autocomplete do not show the search icon\n // by default show the searchicon for type = search\n this.showsearchicon = isDefined(this.showsearchicon) ? this.showsearchicon : (this.type === 'search');\n }\n\n public ngAfterViewInit() {\n super.ngAfterViewInit();\n\n styler(this.nativeElement as HTMLElement, this);\n this.containerTarget = getContainerTargetClass(this.nativeElement);\n }\n\n private eventData($event, item) {\n if ($event) {\n $event['data'] = {\n item : item.dataObject,\n model : item.value,\n label : item.label,\n query : this.query\n };\n }\n\n return $event;\n }\n\n // triggered on select on option from the list. Set the queryModel, query and modelByKey from the matched item.\n public typeaheadOnSelect(match: TypeaheadMatch, $event: Event): void {\n const item = match.item;\n this.queryModel = item;\n item.selected = true;\n this.query = item.label;\n this.showClosebtn = (this.query !== '');\n $event = $event || this.$typeaheadEvent;\n\n // As item.key can vary from key in the datasetItems\n this._modelByKey = item.key;\n this._modelByValue = item.value;\n\n $event = this.eventData($event, item);\n\n this.invokeOnTouched();\n this.invokeOnChange(this.datavalue, $event || {});\n // updating the variable bound to default value as invokeOnChange is not updating the variable.\n if (this.datavalue !== (this as any).prevDatavalue) {\n this.updateBoundVariable(this.datavalue);\n }\n if (this.$element.hasClass('full-screen')) {\n this.closeSearch();\n }\n this.invokeEventCallback('select', { $event, selectedValue: this.datavalue });\n this.invokeEventCallback('submit', { $event });\n\n this.updatePrevDatavalue(this.datavalue);\n }\n\n onPropertyChange(key: string, nv: any, ov: any) {\n if (key === 'tabindex') {\n return;\n }\n\n // Backward compatability from 10.3.1 to 10.3.2\n // 10.3.1 we had displaylabel as modal value\n // From 10.3.2 onwords we will be having displayexpresion as modal value\n if (this.type === 'autocomplete' && key === 'displaylabel' && this.displaylabel && (!this.displayexpression || (this.displayexpression && !this.datasource))) {\n this.displayexpression = this.displaylabel;\n this.displaylabel = undefined;\n }\n\n // when dataoptions are provided and there is no displaylabel given then displaylabel is set as the relatedfield\n if (key === 'displaylabel' && this.dataoptions && this.binddisplaylabel === null) {\n this.query = get(this._modelByValue, nv) || this._modelByValue;\n }\n\n // when search is disabled, do not load any more data or just clear the data that is already in process or loaded.\n if (key === 'disabled') {\n if (nv === false) {\n this.clearData = false;\n } else {\n this.clearData = true;\n if (get((this.typeahead as any), '_typeahead.isShown')) {\n this.typeahead.hide();\n }\n }\n }\n\n super.onPropertyChange(key, nv, ov);\n }\n}\n","import { AfterContentInit, AfterViewInit, Directive, ElementRef, Injector } from '@angular/core';\n\nimport { SearchComponent } from './search.component';\n\ndeclare const $;\n\n@Directive({\n selector: '[scrollable]'\n})\nexport class ScrollableDirective implements AfterContentInit, AfterViewInit {\n private elementRef: ElementRef;\n\n constructor(inj: Injector, private searchRef: SearchComponent) {\n this.elementRef = inj.get(ElementRef);\n }\n\n ngAfterContentInit() {\n // add the scroll event listener on the ul element.\n this.elementRef.nativeElement.addEventListener('scroll', this.notifyParent.bind(this));\n this.searchRef.dropdownEl = $(this.elementRef.nativeElement);\n (this.searchRef as any).onDropdownOpen();\n }\n\n ngAfterViewInit() {\n if (!this.searchRef.isMobileAutoComplete()) {\n // assigning width for the dropdown.\n const typeAheadInput = this.searchRef.$element.find('input').first();\n this.searchRef.dropdownEl.width(typeAheadInput.outerWidth());\n }\n }\n\n private notifyParent(evt: Event) {\n this.searchRef.onScroll(this.elementRef.nativeElement, evt);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { TypeaheadModule } from 'ngx-bootstrap/typeahead';\n\nimport { WmComponentsModule } from '@wm/components/base';\n\nimport { SearchComponent } from './search.component';\nimport { ScrollableDirective } from './scrollable.directive';\n\nconst components = [\n SearchComponent,\n ScrollableDirective\n];\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n TypeaheadModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components]\n})\nexport class SearchModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["filter","i1.SearchComponent"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/basic/search/src/search.props.ts","../../../../../projects/components/widgets/basic/search/src/data-provider/local-data-provider.ts","../../../../../projects/components/widgets/basic/search/src/data-provider/remote-data-provider.ts","../../../../../projects/components/widgets/basic/search/src/data-provider/data-provider.ts","../../../../../projects/components/widgets/basic/search/src/search.component.html","../../../../../projects/components/widgets/basic/search/src/search.component.ts","../../../../../projects/components/widgets/basic/search/src/scrollable.directive.ts","../../../../../projects/components/widgets/basic/search/src/search.module.ts","../../../../../projects/components/widgets/basic/search/src/index.ts"],"sourcesContent":["import {FormWidgetType} from '@wm/core';\nimport {PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget} from '@wm/components/base';\n\nexport const searchProps = new Map(\n [\n ['casesensitive', { value: false, ...PROP_BOOLEAN }],\n ['class', PROP_STRING],\n ['datacompletemsg', { value: 'No more data to load', ...PROP_STRING }],\n ['datafield', { value: 'All Fields', ...PROP_STRING }],\n ['dataoptions', PROP_ANY],\n ['dataset', PROP_ANY],\n ['datasource', PROP_ANY],\n ['datavalue', PROP_STRING],\n ['datavaluesource', PROP_ANY],\n ['dateformat', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['displayimagesrc', PROP_STRING],\n ['displaylabel', PROP_STRING],\n ['displayexpression', PROP_STRING],\n\n ['dropup', PROP_BOOLEAN],\n ['groupby', PROP_STRING],\n ['hint', PROP_STRING],\n ['arialabel', PROP_STRING],\n ['imagewidth', { value: '16px', ...PROP_STRING }],\n ['limit', PROP_NUMBER],\n ['loadingdatamsg', { value: 'Loading items...', ...PROP_STRING }],\n ['match', PROP_STRING],\n ['matchmode', PROP_STRING],\n ['minchars', PROP_NUMBER],\n ['name', PROP_STRING],\n ['navsearchbar', { value: false, ...PROP_BOOLEAN }],\n ['orderby', PROP_STRING],\n ['placeholder', { value: 'Search', ...PROP_STRING }],\n ['position', PROP_STRING],\n ['query', PROP_STRING],\n ['readonly', PROP_BOOLEAN],\n ['required', PROP_BOOLEAN],\n ['searchkey', PROP_STRING],\n ['searchon', { value: 'typing', ...PROP_STRING }],\n ['shortcutkey', PROP_STRING],\n ['show', { value: true, ...PROP_BOOLEAN }],\n ['showclear', { value: false, ...PROP_BOOLEAN }],\n ['showsearchicon', PROP_BOOLEAN],\n ['tabindex', { value: 0, ...PROP_NUMBER }],\n ['type', { value: 'search', ...PROP_STRING }],\n ['debouncetime', { value: 250, ...PROP_NUMBER }],\n ['width', PROP_STRING]\n ]\n);\n\nexport const registerProps = () => {\n register(\n 'wm-search',\n searchProps\n );\n registerFormWidget(\n FormWidgetType.AUTOCOMPLETE,\n new Map(searchProps)\n );\n registerFormWidget(\n FormWidgetType.TYPEAHEAD,\n new Map(searchProps)\n );\n};\n","import { IDataProvider, IDataProviderConfig } from './data-provider';\nimport {\n endsWith,\n filter,\n get,\n includes,\n isArray,\n isEqual,\n isNumber,\n isObject,\n split,\n startsWith,\n toLower,\n toString,\n values\n} from \"lodash-es\";\n\nexport class LocalDataProvider implements IDataProvider {\n private applyFilter(entry, queryText, filtername?) {\n entry = isNumber(entry) ? entry.toString() : entry;\n if (includes(filtername, 'start')) {\n return startsWith(entry, queryText);\n } else if (includes(filtername, 'end')) {\n return endsWith(entry, queryText);\n } else if (includes(filtername, 'exact')) {\n return isEqual(entry, queryText);\n }\n return includes(entry, queryText);\n }\n\n // LocalData filtering is done based on the searchkey.\n public filter(config: IDataProviderConfig): Promise<any> {\n const entries = config.dataset;\n let casesensitive = config.casesensitive;\n const matchMode = config.matchMode;\n // for supporting existing projects\n if (matchMode && !includes(matchMode, 'ignorecase')) {\n casesensitive = true;\n }\n let queryText = config.query,\n filteredData;\n\n return new Promise((resolve, reject) => {\n /**\n * If searchKey is defined, then check for match string against each item in the dataset with item's field name as the searchKey\n * return the filtered data containing the matching string.\n */\n if (config.searchKey) {\n const keys = split(config.searchKey, ',');\n\n filteredData = filter(config.dataset, (item: any) => {\n return keys.some(key => {\n let a = get(item, key),\n b = queryText;\n if (!casesensitive) {\n a = toLower(toString(a));\n b = toLower(toString(b));\n }\n return this.applyFilter(a, b, matchMode);\n });\n });\n } else {\n // local search on data with array of objects.\n // Iterate over each item and return the filtered data containing the matching string.\n if (isArray(entries) && isObject(entries[0])) {\n filteredData = filter(entries, entry => {\n let a = values(entry).join(' ');\n if (!casesensitive) {\n a = toLower(a);\n // @ts-ignore\n queryText = toLower(queryText);\n }\n return this.applyFilter(a, queryText);\n });\n } else {\n filteredData = filter(entries, entry => {\n if (!casesensitive) {\n entry = toLower(entry);\n // @ts-ignore\n queryText = toLower(queryText);\n }\n return this.applyFilter(entry, queryText, matchMode);\n });\n }\n }\n resolve({\n data: filteredData,\n hasMoreData: false,\n isLastPage: true\n });\n });\n }\n}\n","import { AppConstants, DataSource, findValueOf, getClonedObject } from '@wm/core';\n\nimport { convertDataToObject, interpolateBindExpressions } from '@wm/components/base';\nimport { IDataProvider, IDataProviderConfig } from './data-provider';\nimport {assign, get, indexOf, isArray, isEmpty, isObject, set, slice, split} from \"lodash-es\";\n\nexport class RemoteDataProvider implements IDataProvider {\n public filter(config: IDataProviderConfig): Promise<any> {\n return this.filterData(config).then(response => this.onFilterSuccess(config, response), () => this.onFilterFailure());\n }\n\n private filterData(config) {\n if (config.dataoptions) {\n const dataoptions = config.dataoptions;\n\n const requestParams = config.datasource.execute(DataSource.Operation.GET_REQUEST_PARAMS, config);\n\n // If options are specified, make specifics calls to fetch the results\n // Fetch the related field data\n if (dataoptions.relatedField) {\n return new Promise((resolve, reject) => {\n interpolateBindExpressions(config.viewParent, dataoptions.filterExpr, (filterexpressions) => {\n requestParams.filterExpr = dataoptions.filterExpr = filterexpressions;\n dataoptions.filterExpr = filterexpressions;\n\n config.datasource.execute(\n DataSource.Operation.GET_RELATED_TABLE_DATA, assign({relatedField: dataoptions.relatedField}, requestParams)\n ).then(resolve, reject);\n });\n });\n }\n // Fetch the distinct data\n if (dataoptions.distinctField) {\n return config.datasource.execute(\n DataSource.Operation.GET_DISTINCT_DATA_BY_FIELDS,\n {\n pagesize: config.limit || config.pagesize,\n page: config.page,\n fields: dataoptions.distinctField,\n entityName: dataoptions.tableName,\n filterFields: assign(dataoptions.filterFields, requestParams.filterFields),\n filterExpr: getClonedObject(dataoptions.filterExpr || {})\n\n }\n );\n }\n }\n\n // search records using the searchkey\n return config.datasource.execute(\n DataSource.Operation.SEARCH_RECORDS, config\n );\n }\n\n\n // Check if the page retrieved currently is the last page. If last page, don't send any more request\n protected isLast(page: number, dataSize: number, maxResults: number, currentResults?: number): boolean {\n // if last page info is not returned by backend and current results is less than max results, this is the last page\n if (dataSize === AppConstants.INT_MAX_VALUE) {\n return currentResults !== 0 && currentResults < maxResults;\n }\n const pageCount = ((dataSize > maxResults) ? (Math.ceil(dataSize / maxResults)) : (dataSize < 0 ? 0 : 1));\n return page === pageCount;\n }\n\n // this function transform the response data in case it is not an array\n protected getTransformedData(variable: any, data: any): any {\n const operationResult = variable.operation + 'Result'; // when output is only string it is available as oprationNameResult\n const tempResponse = data[operationResult];\n\n // in case data received is value as string then add that string value to object and convert object into array\n if (tempResponse) {\n const tempObj = {};\n set(tempObj, operationResult, tempResponse);\n data = [tempObj]; // convert data into an array having tempObj\n } else {\n // in case data received is already an object then convert it into an array\n data = [data];\n }\n\n return data;\n }\n\n protected onFilterFailure() {\n return [];\n }\n\n private isLastPageForDistinctApi(data, page, totalElements, _isLastPage) {\n return page > 1 && !_isLastPage && isEmpty(data) && totalElements === AppConstants.INT_MAX_VALUE;\n }\n\n\n // this function processes the response depending on pageOptions, isPageable and prepares the formattedDataset.\n protected onFilterSuccess(config: IDataProviderConfig, response): Promise<any> {\n let data: any = response.data;\n let formattedData: any;\n let _isLastPage: boolean;\n let page: number;\n let isPaginatedData: boolean;\n\n const expressionArray = split(config.binddataset, '.');\n const dataExpression = slice(expressionArray, indexOf(expressionArray, 'dataSet') + 1).join('.');\n const $I = '[$i]';\n\n return new Promise((resolve, reject) => {\n const pageOptions = response.pagination;\n\n if (config.datasource.execute(DataSource.Operation.IS_PAGEABLE)) {\n page = pageOptions.number + 1;\n _isLastPage = this.isLast(page, (config.limit > 0 && config.limit) || pageOptions.totalElements, pageOptions.size, pageOptions.numberOfElements);\n isPaginatedData = true;\n\n if (this.isLastPageForDistinctApi(data, page, pageOptions.totalElements, _isLastPage)) {\n _isLastPage = true;\n resolve({\n data: [],\n isLastPage: _isLastPage,\n hasMoreData: page > 1,\n isPaginatedData,\n page\n });\n return;\n }\n }\n // if data expression exists, extract the data from the expression path\n if (dataExpression) {\n if (isArray(data)) {\n const index = dataExpression.lastIndexOf($I);\n if(index > -1){\n const restExpr = dataExpression.substr(index + 5);\n formattedData = data.map(datum => findValueOf(datum, restExpr));\n }\n } else if (isObject(data)) {\n formattedData = get(data, dataExpression);\n }\n data = formattedData || data;\n }\n if (!isArray(data)) {\n data = this.getTransformedData(config.datasource, data);\n }\n // in case of no data received, resolve the promise with empty array\n if (!data.length) {\n resolve({data: [], isLastPage: _isLastPage, hasMoreData: page > 1, isPaginatedData, page});\n } else {\n resolve({data: data, isLastPage: _isLastPage, hasMoreData: page > 1, isPaginatedData, page});\n }\n });\n }\n}\n","import { DataSource } from '@wm/core';\n\nimport { LocalDataProvider } from './local-data-provider';\nimport { RemoteDataProvider } from './remote-data-provider';\n\nexport interface IDataProviderConfig {\n dataoptions?: any;\n viewParent?: any;\n dataset: any;\n datafield: string;\n binddataset?: string;\n datasource?: any;\n hasData: boolean;\n query: Array<string> | string;\n isLocalFilter: boolean;\n searchKey?: string;\n matchMode?: string;\n casesensitive?: boolean;\n isformfield?: boolean;\n orderby?: string;\n limit?: number;\n pagesize?: number;\n page: number;\n noMoredata?: boolean;\n onBeforeservicecall?: Function;\n}\n\nexport interface IDataProvider {\n hasMoreData?: boolean;\n isLastPage?: boolean;\n hasNoMoreData?: boolean;\n isPaginatedData?: boolean;\n page?: number;\n updateDataset?: boolean;\n\n filter(config: IDataProviderConfig): Promise<any>;\n}\n\nexport class DataProvider implements IDataProvider {\n\n public hasMoreData: boolean;\n public isLastPage: boolean;\n public page: number;\n public isPaginatedData: boolean;\n public updateDataset: boolean;\n\n static remoteDataProvider = new RemoteDataProvider();\n static localDataProvider = new LocalDataProvider();\n\n public filter(config: IDataProviderConfig): Promise<any> {\n\n let promise: Promise<any>;\n\n /**\n * Make call to remoteDataProvider when searchkey is available and data is not from local / model variable.\n * Otherwise use localDataProvider\n * If datasource is a serviceVariable with no input params, then perform local search.\n * when there is no dataset on the datasource when first time make a remote call to set the dataset for service variable.\n */\n const hasNoVariableDataset = config.datasource && config.datasource.execute(DataSource.Operation.IS_UPDATE_REQUIRED, config.hasData);\n if (!config.isLocalFilter && (config.dataoptions || ((config.datasource && config.datasource.execute(DataSource.Operation.IS_API_AWARE))\n && config.searchKey\n && hasNoVariableDataset))) {\n promise = DataProvider.remoteDataProvider.filter(config);\n } else {\n promise = DataProvider.localDataProvider.filter(config);\n }\n\n return promise.then(response => {\n this.updateDataset = config.datasource && !config.datasource.execute(DataSource.Operation.SUPPORTS_CRUD) && hasNoVariableDataset;\n this.hasMoreData = response.hasMoreData;\n this.isLastPage = response.isLastPage;\n this.page = response.page;\n this.isPaginatedData = response.isPaginatedData;\n\n return response;\n });\n }\n}\n","<ng-template #customItemTemplate let-model=\"item\" let-index=\"index\" let-query=\"query\" let-match=\"match\">\n <!-- Default item template -->\n <a *ngIf=\"!content\">\n <img *ngIf=\"model.imgSrc\" [src]=\"model.imgSrc\" alt=\"Search\" [style.width]=\"imagewidth\">\n <span [title]=\"model.label\" [innerHtml]=\"highlight(match, query) || model.label\"></span>\n </a>\n <!-- Custom partial template -->\n <a *ngIf=\"content\" [ngClass]=\"{customTemplate: content}\" partialContainer [wmItemTemplate]=\"content\" [userComponentParams]=\"match.item\">\n <div partial-container-target></div>\n </a>\n</ng-template>\n\n<ng-template #customListTemplate let-matches=\"matches\" let-itemTemplate=\"itemTemplate\" let-query=\"query\">\n <ul #ulElement class=\"app-search dropdown-menu\" scrollable>\n <li #liElements *ngFor=\"let match of matches; let i = index;\" [ngClass]=\"{active: typeaheadContainer && typeaheadContainer.isActive(match), 'list-group-header': match && match.isHeader()}\"\n (mouseenter)=\"typeaheadContainer.selectActive(match);\"\n (click)=\"match && !match.isHeader() && typeaheadContainer.selectMatch(match, $event); $typeaheadEvent = $event; notifySubscriber();\">\n <!-- itemTemplate comes from the <input> -->\n <h4 *ngIf=\"match.isHeader()\" class=\"group-title\">{{match.value}}</h4>\n <ng-container *ngIf=\"!match.isHeader()\" [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{item: match.item, index: i, match: match, query: query}\">\n </ng-container>\n </li>\n <div class=\"status\" [hidden]=\"_loadingItems || !(datacompletemsg && dataProvider.isLastPage)\">\n <span [textContent]=\"datacompletemsg\"></span>\n </div>\n <div class=\"status\" [hidden]=\"!_loadingItems\">\n <i class=\"fa fa-circle-o-notch fa-spin\"></i>\n <span [textContent]=\"loadingdatamsg\"></span>\n </div>\n </ul>\n</ng-template>\n\n<!--This template is for search inside mobile navbar.-->\n<ng-container *ngIf=\"navsearchbar; else searchTemplate\">\n <input [title]=\"query || ''\" type=\"text\" class=\"app-textbox form-control list-of-objs app-search-input\" [placeholder]=\"placeholder || ''\"\n focus-target\n container=\"body\"\n [disabled]=\"disabled\"\n [attr.accesskey]=\"shortcutkey\"\n autocomplete=\"off\"\n [(ngModel)]=\"query\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [typeahead]=\"typeaheadDataSource\"\n [typeaheadWaitMs]=\"debouncetime\"\n [typeaheadItemTemplate]=\"customItemTemplate\"\n [optionsListTemplate]=\"customListTemplate\"\n (input)=\"onInputChange($event)\"\n (keydown)=\"listenQuery = true\"\n (keydown.enter)=\"$typeaheadEvent = $event;handleEnterEvent($event)\"\n (keydown.arrowdown)=\"selectNext($event)\"\n (blur)=\"invokeOnTouched($event)\"\n (click)=\"handleFocus($event);\"\n (focus)=\"_unsubscribeDv = false; listenQuery = true; handleFocus($event); invokeOnFocus($event);\"\n (focusout)=\"onFocusOut()\"\n [typeaheadMinLength]=\"minchars\"\n [typeaheadOptionsLimit]=\"limit\"\n (typeaheadLoading)=\"_loadingItems\"\n (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n typeaheadOptionField=\"label\"\n [typeaheadGroupField]=\"groupby ? 'groupby' : null\"\n [typeaheadAsync]=\"true\"\n [typeaheadScrollable]=\"true\"\n [adaptivePosition]=\"true\"\n [typeaheadOptionsInScrollableView]=\"optionslimitinscrollableview\"\n [dropup]=\"dropup\"\n [tabindex]=\"tabindex\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel || 'Search field'\"/>\n <i class=\"btn-close wi wi-cancel\" [hidden]=\"!showClosebtn\" (click)=\"clearSearch($event);\"></i>\n</ng-container>\n<!--This template is for both web and fullscreen mode in mobile.-->\n<ng-template #searchTemplate>\n <span class=\"wi wi-arrow-left form-control-feedback back-btn\" aria-hidden=\"true\" (click)=\"closeSearch()\"></span>\n <span class=\"sr-only\">Back button</span>\n <input [title]=\"query || ''\" type=\"text\" class=\"app-textbox form-control list-of-objs app-search-input\" [placeholder]=\"placeholder || ''\"\n focus-target\n [container]=\"containerTarget || '.wm-app'\"\n [disabled]=\"disabled\"\n [attr.accesskey]=\"shortcutkey\"\n autocomplete=\"off\"\n [(ngModel)]=\"query\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [typeahead]=\"typeaheadDataSource\"\n [typeaheadWaitMs]=\"debouncetime\"\n [typeaheadItemTemplate]=\"customItemTemplate\"\n [optionsListTemplate]=\"customListTemplate\"\n (input)=\"onInputChange($event)\"\n (keydown)=\"listenQuery = true\"\n (keydown.enter)=\"$typeaheadEvent = $event;handleEnterEvent($event)\"\n (keydown.arrowdown)=\"selectNext($event)\"\n (blur)=\"invokeOnTouched($event); onFocusOut()\"\n (click)=\"handleFocus($event);\"\n (focus)=\"_unsubscribeDv = false; listenQuery = true; handleFocus($event); invokeOnFocus($event)\"\n [typeaheadMinLength]=\"minchars\"\n [typeaheadOptionsLimit]=\"limit\"\n (typeaheadLoading)=\"_loadingItems\"\n (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n typeaheadOptionField=\"label\"\n [typeaheadGroupField]=\"groupby ? 'groupby' : null\"\n [typeaheadAsync]=\"true\"\n [typeaheadScrollable]=\"true\"\n [adaptivePosition]=\"true\"\n [typeaheadOptionsInScrollableView]=\"optionslimitinscrollableview\"\n [tabindex]=\"tabindex\"\n [dropup]=\"dropup\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel || 'Search field'\">\n <input class=\"model-holder\" ng-model=\"proxyModel\" ng-required=\"required\" tabindex=\"-1\" aria-hidden=\"true\">\n <span *ngIf=\"_loadingItems\" aria-hidden=\"true\" class=\"fa fa-circle-o-notch fa-spin form-control-feedback\"></span>\n <span class=\"wi wi-close form-control-feedback clear-btn\" [ngClass]=\"{'show-btn': isQueryEntered()}\" (click)=\"clearSearch($event, true)\"></span>\n <span class=\"sr-only\">Clear button</span>\n <span *ngIf=\"showsearchicon\" [ngClass]=\"{'disabled': disabled}\" class=\"input-group-addon\">\n <form>\n <button title=\"Search\" [disabled]=\"disabled\" class=\"app-search-button wm-sl-l sl-search\" type=\"submit\"\n (click)=\"onSearchSelect($event)\"></button>\n </form>\n </span>\n</ng-template>\n","import {\n AfterViewInit,\n Attribute,\n Component,\n ElementRef,\n Inject,\n Injector,\n OnInit,\n Optional,\n QueryList,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport {NG_VALIDATORS, NG_VALUE_ACCESSOR} from '@angular/forms';\n\nimport {from, Observable, of} from 'rxjs';\nimport {filter, mergeMap} from 'rxjs/operators';\n\nimport {TypeaheadContainerComponent, TypeaheadDirective, TypeaheadMatch} from 'ngx-bootstrap/typeahead';\n\nimport {addClass, adjustContainerPosition, App, DataSource, isDefined, isMobile, toBoolean} from '@wm/core';\nimport {\n ALLFIELDS,\n convertDataToObject,\n DataSetItem,\n extractDataAsArray,\n getContainerTargetClass,\n getUniqObjsByDataField,\n provideAs,\n provideAsWidgetRef,\n styler,\n transformFormData\n} from '@wm/components/base';\nimport {DatasetAwareFormComponent} from '@wm/components/input';\n\nimport {registerProps} from './search.props';\nimport {DataProvider, IDataProvider, IDataProviderConfig} from './data-provider/data-provider';\nimport {\n debounce,\n find,\n get,\n includes,\n isArray,\n isEmpty,\n isEqual,\n isObject,\n isUndefined,\n map,\n split,\n toString,\n trim\n} from \"lodash-es\";\n\nconst WIDGET_CONFIG = { widgetType: 'wm-search', hostClass: 'input-group' };\n\n@Component({\n selector: '[wmSearch]',\n templateUrl: './search.component.html',\n providers: [\n provideAs(SearchComponent, NG_VALUE_ACCESSOR, true),\n provideAs(SearchComponent, NG_VALIDATORS, true),\n provideAsWidgetRef(SearchComponent)\n ]\n})\nexport class SearchComponent extends DatasetAwareFormComponent implements OnInit, AfterViewInit {\n static initializeProps = registerProps();\n public casesensitive: boolean;\n public searchkey: string;\n public queryModel: Array<DataSetItem> | string;\n public query = '';\n public limit: any;\n public showsearchicon: boolean;\n public minchars: number;\n public type: string;\n public navsearchbar: any;\n public debouncetime: number;\n public hint: string;\n public arialabel: string;\n\n private app: App;\n private typeaheadDataSource: Observable<any>;\n private pagesize: any;\n private page = 1;\n public _loadingItems: boolean;\n private dataProvider: IDataProvider;\n private result: Array<any>; // contains the search result i.e. matches\n private formattedDataset: any;\n private isformfield: boolean;\n private $typeaheadEvent: Event;\n\n public tabindex: number;\n public startIndex: number;\n public binddisplaylabel: string;\n public typeaheadContainer: TypeaheadContainerComponent;\n public containerTarget: string;\n\n @ViewChild(TypeaheadDirective) typeahead: TypeaheadDirective;\n @ViewChild('ulElement') ulElement: ElementRef;\n @ViewChildren('liElements') liElements: QueryList<ElementRef>;\n\n private allowonlyselect: boolean;\n private class: string;\n\n private lastSelectedIndex: number;\n private dataoptions: any;\n public dropdownEl: any;\n private _lastQuery: string;\n private _lastResult: any;\n private _isOpen: boolean; // set to true when dropdown is open\n private showClosebtn: boolean;\n private _unsubscribeDv: boolean;\n private _datasource: any;\n private isScrolled: boolean;\n private parentEl: any;\n private position: string;\n private elIndex: number;\n private listenQuery: boolean;\n private _domUpdated: boolean;\n private searchon: string;\n private showclear: boolean;\n public matchmode: string;\n private clearData: boolean;\n\n\n // getter setter is added to pass the datasource to searchcomponent.\n get datasource() {\n return this._datasource;\n }\n\n set datasource(nv) {\n this._datasource = nv;\n const data = this.datavalue || this.toBeProcessedDatavalue;\n this.updateByDatavalue(data);\n }\n\n constructor(\n inj: Injector,\n app: App,\n @Attribute('datavalue.bind') public binddatavalue,\n @Attribute('dataset.bind') public binddataset,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n super(inj, WIDGET_CONFIG, explicitContext);\n // this flag will not allow the empty datafield values.\n this.allowempty = false;\n this.app = app;\n addClass(this.nativeElement, 'app-search', true);\n\n /**\n * Listens for the change in the ngModel on every search and retrieves the data as observable.\n * This observable data is passed to the typeahead.\n * @type {Observable<any>}\n */\n this.typeaheadDataSource = Observable\n .create((observer: any) => {\n // Runs on every search\n if (this.listenQuery) {\n this._defaultQueryInvoked = false;\n this._loadingItems = true;\n observer.next(this.query);\n }\n // on keydown, while scrolling the dropdown items, when last item is reached next call is triggered\n // unless the call is resolved, we are able to scroll next to first item and soon\n // This shows flickering from first item to next new items appended.\n // By setting container to undefined, key events changes will be stopped while loading items\n if (this.lastSelectedIndex) {\n this.typeahead._container = undefined;\n }\n }).pipe(\n filter(() => {\n this._loadingItems = false;\n return (this.minchars === 0 || (this.query && this.query.length >= this.minchars));\n }),\n mergeMap((token: string) => this.getDataSourceAsObservable(token))\n );\n\n this.dataProvider = new DataProvider();\n\n /**\n * When default datavalue is not found within the dataset, a filter call is made to get the record using fetchDefaultModel.\n * after getting the response, set the queryModel and query.\n */\n const datavalueSubscription = this.datavalue$.subscribe((val: Array<string> | string) => {\n\n const query = (isArray(val) ? val[0] : val) as string;\n\n if (query === null || query === '') {\n this._modelByValue = '';\n // reset the query.\n this.query = this.queryModel = '';\n // on clear or reset filter, empty the lastResults to fetch new records.\n this._lastResult = undefined;\n return;\n }\n\n if (!this._unsubscribeDv) {\n this._defaultQueryInvoked = false;\n // if prev datavalue is not equal to current datavalue then clear the modelByKey and queryModel\n if (!isObject(val) && (this as any).prevDatavalue !== val) {\n this._modelByKey = undefined;\n this.query = this.queryModel = '';\n }\n // if the datafield is ALLFILEDS do not fetch the records\n // update the query model with the values we have\n this.updateByDatavalue(val);\n }\n\n // turn on showCloseBtn when a default value is given\n this.showClosebtn = (this.query !== '');\n });\n this.registerDestroyListener(() => datavalueSubscription.unsubscribe());\n\n const datasetSubscription = this.dataset$.subscribe(() => {\n // set the next item index.\n this.startIndex = this.datasetItems.length;\n this._lastResult = undefined;\n const defaultValue = this.datavalue || this.toBeProcessedDatavalue;\n // invoking updateByDataset only when datavalue is present, as entered value i.e. query is setting back to ''\n if (isDefined(defaultValue)) {\n this.updateByDataset(defaultValue);\n }\n });\n this.registerDestroyListener(() => datasetSubscription.unsubscribe());\n }\n\n // on clear, trigger search with page size 1\n private clearSearch($event, loadOnClear) {\n this.query = '';\n this.onInputChange($event);\n this.dataProvider.isLastPage = false;\n this.listenQuery = false;\n if (loadOnClear) {\n this.listenQuery = true;\n this._unsubscribeDv = false;\n this.loadMoreData();\n }\n this.invokeEventCallback('clearsearch');\n this._loadingItems = false;\n // when search input is cleared, focus on the input field\n if ($event) {\n this.$element.find('.app-search-input').focus();\n }\n }\n\n // function to clear the input value\n public clearText() {\n this.query = '';\n this.showClosebtn = false;\n }\n\n // Close the full screen mode in mobile view of auto complete\n private closeSearch() {\n this._loadingItems = false;\n this.page = 1;\n // after closing the search, insert the element at its previous position (elIndex)\n this.insertAtIndex(this.elIndex);\n this.elIndex = undefined;\n this.parentEl = undefined;\n this.$element.removeClass('full-screen');\n if (this._domUpdated) {\n this._domUpdated = false;\n }\n this.listenQuery = false;\n this._unsubscribeDv = true;\n this.typeahead.hide();\n }\n\n private renderMobileAutoComplete() {\n // Get the parent element of the search element which can be next or prev element, if both are empty then get the parent of element.\n if (!isDefined(this.elIndex)) {\n this.parentEl = this.$element.parent();\n this.elIndex = this.parentEl.children().index(this.$element);\n }\n if (!this.$element.hasClass('full-screen')) {\n // this flag is set to notify that the typeahead-container dom has changed its position\n this._domUpdated = true;\n // Add full screen class on focus of the input element.\n this.$element.addClass('full-screen');\n\n // Add position to set the height to auto\n if (this.position === 'inline') {\n this.$element.addClass(this.position);\n }\n }\n // focus is lost when element is changed to full-screen, keydown to select next items will not work\n // Hence explicitly focusing the input\n if (this.$element.hasClass('full-screen')) {\n this.$element.find('.app-search-input').focus();\n }\n }\n\n private getDataSourceAsObservable(query: string): Observable<any> {\n // show dropdown only when there is change in query. This should not apply when dataoptions with filterFields are updated.\n // when lastResult is not available i.e. still the first call is pending and second query is invoked then do not return.\n if (this._lastQuery === query && !get(this.dataoptions, 'filterFields') && isDefined(this._lastResult)) {\n this._loadingItems = false;\n return of(this._lastResult);\n }\n\n /*\n WMS-19177: On focus of input field for autocomplete type, do not trigger api call when\n a) searchkey and displayexpression are different\n b) binddisplaylabel contains multiple values\n c) binddisplaylabel contains single value which does not match with searchkey\n */\n if (this.type === 'autocomplete' && this.searchkey && this.query && this.datavalue) {\n let bindDisplayLabelArray = [];\n const searchKeyArray = split(this.searchkey, ',');\n let displaylabel;\n if (this.binddisplaylabel) {\n bindDisplayLabelArray = split(this.binddisplaylabel, '+');\n if (bindDisplayLabelArray.length === 1) {\n if (!includes(bindDisplayLabelArray[0], '|')) {\n const regex = /\\[(.*?)\\]/;\n displaylabel = regex.exec(bindDisplayLabelArray[0])[1];\n } else {\n displaylabel = true;\n }\n }\n }\n if ((bindDisplayLabelArray.length > 1 || (displaylabel && !includes(searchKeyArray, displaylabel))\n || (this.displayexpression && !includes(searchKeyArray, this.displayexpression)))) {\n this._loadingItems = false;\n return of([]);\n }\n }\n this._lastQuery = this.query;\n return from(this.getDataSource(query));\n }\n\n protected handleEvent(node: HTMLElement, eventName: string, eventCallback: Function, locals: any) {\n if (!includes(['blur', 'focus', 'select', 'submit', 'change'], eventName)) {\n super.handleEvent(node, eventName, eventCallback, locals);\n }\n }\n\n // highlight the characters in the dropdown matching the query.\n private highlight(match: TypeaheadMatch, query: string) {\n if (this.typeaheadContainer) {\n // highlight of chars will work only when label are strings.\n (match as any).value = match.item.label.toString();\n return this.typeaheadContainer.highlight(match, query);\n }\n }\n\n // inserts the element at the index position\n private insertAtIndex(i) {\n if (i === 0) {\n this.parentEl.prepend(this.$element);\n } else {\n const $elAtIndex = this.parentEl.children().eq(i);\n if ($elAtIndex.length) {\n this.$element.insertBefore(this.parentEl.children().eq(i));\n } else {\n this.$element.insertAfter(this.parentEl.children().eq(i - 1));\n }\n }\n }\n\n // Check if the widget is of type autocomplete in mobile view/ app\n public isMobileAutoComplete() {\n return this.type === 'autocomplete' && isMobile();\n }\n\n // Check if the query is entered in the input and the view is not mobile\n public isQueryEntered() {\n return this.showclear && this.showClosebtn;\n }\n\n private loadMoreData(incrementPage?: boolean) {\n if (this.dataProvider.isLastPage) {\n return;\n }\n // Increase the page number and trigger force query update\n this.page = incrementPage ? this.page + 1 : this.page;\n\n this.isScrolled = true;\n this._loadingItems = true;\n\n // when invoking new set of results, reset the lastQuery.\n if (incrementPage) {\n this._lastQuery = undefined;\n }\n\n // trigger the typeahead change manually to fetch the next set of results.\n this.typeahead.onInput({\n target: {\n value: trim(this.query) || '0' // dummy data to notify the observables\n }\n });\n }\n\n // on focusout, subscribe to the datavalue changes again\n private onFocusOut() {\n this._unsubscribeDv = false;\n this._loadingItems = false;\n // reset the page value on focusout.\n this.page = 1;\n // if domUpdated is true then do not hide the dropdown in the fullscreen\n if (!this._domUpdated && this._isOpen) {\n this.listenQuery = false;\n }\n this._isOpen = false;\n // on outside click, typeahead is hidden. To avoid this, when fullscreen is set, overridding isFocused flag on the typeahead container\n if (this._domUpdated && this.typeahead && (this.typeahead as any)._container) {\n (this.typeahead as any)._container.isFocused = true;\n }\n }\n\n private onInputChange($event) {\n // reset all the previous page details in order to fetch new set of result.\n this.result = [];\n this.page = 1;\n this.listenQuery = this.isUpdateOnKeyPress();\n this._modelByValue = undefined;\n\n // when input is cleared, reset the datavalue\n if (this.query === '') {\n this.queryModel = '';\n this._modelByValue = '';\n this.updatePrevDatavalue(this._lastQuery);\n this.invokeOnChange(this._modelByValue, {}, true);\n\n this.invokeEventCallback('clear', { $event });\n\n // trigger onSubmit only when the search input is cleared off and do not trigger when tab is pressed.\n if ($event && $event.which !== 9) {\n this.invokeEventCallback('submit', { $event });\n }\n } else {\n // invoking change event on every input value change.\n this.invokeEventCallback('change', {\n $event: $event,\n newVal: this._modelByValue || this.query,\n oldVal: (this as any).prevDatavalue\n });\n }\n this.showClosebtn = (this.query !== '');\n }\n\n // Triggered for enter event\n private handleEnterEvent($event) {\n // submit event triggered when there is no search results\n if (!get(this.typeahead, 'matches.length')) {\n this.onSearchSelect($event);\n }\n }\n // Triggerred when typeahead option is selected.\n private onSearchSelect($event: Event) {\n let item;\n // WMS-22533: Before adding active typeahead el, check if the entered query matches with the active el or not\n const isQueryMatch = this.typeaheadContainer?.active?.value === this.query;\n\n if (this.typeaheadContainer && this.typeaheadContainer.active && isQueryMatch) {\n item = this.typeaheadContainer.active.item;\n }\n $event = this.eventData($event, item || {});\n\n // searchOn is set as onBtnClick, then invoke the search api call manually.\n if (!this.isUpdateOnKeyPress()) {\n this.listenQuery = true;\n // trigger the typeahead change manually to fetch the next set of results.\n this.typeahead.onInput({\n target: {\n value: this.query // dummy data to notify the observables\n }\n });\n return;\n }\n // when matches are available.\n if (this.typeaheadContainer && this.liElements.length && isQueryMatch) {\n this.typeaheadContainer.selectActiveMatch();\n } else {\n this.queryModel = this.query;\n this.invokeEventCallback('submit', { $event });\n }\n }\n\n private invokeOnBeforeServiceCall(inputData) {\n this.invokeEventCallback('beforeservicecall', { inputData });\n }\n\n private onDropdownOpen() {\n if (this.clearData) {\n this.typeahead.hide();\n }\n // setting the ulElements, liElement on typeaheadContainer.\n // as we are using customOption template, liElements are not available on typeaheadContainer so append them explicitly.\n const fn = debounce(() => {\n this._isOpen = true;\n this.typeaheadContainer = this.typeahead._container || (this.typeahead as any)._typeahead.instance;\n (this.typeaheadContainer as any).liElements = this.liElements;\n (this.typeaheadContainer as any).ulElement = this.ulElement;\n adjustContainerPosition($('typeahead-container'), this.nativeElement, (this.typeahead as any)._typeahead, $('typeahead-container .dropdown-menu'));\n\n });\n\n fn();\n\n // open full-screen search view\n if (this.isMobileAutoComplete()) {\n if (!this.$element.hasClass('full-screen')) {\n this.renderMobileAutoComplete();\n }\n const dropdownEl = this.dropdownEl.closest('typeahead-container');\n\n dropdownEl.insertAfter(this.$element.find('input').first());\n const screenHeight = this.$element.closest('.app-content').height();\n dropdownEl.css({ position: 'relative', top: 0, height: screenHeight + 'px' });\n this.showClosebtn = this.query && this.query !== '';\n\n if (!isUndefined(this.dataProvider.isLastPage) && !this.dataProvider.isLastPage) {\n this.triggerSearch();\n }\n }\n }\n\n private selectNext() {\n const matches = this.typeaheadContainer.matches;\n\n if (!matches) {\n return;\n }\n const index = matches.indexOf(this.typeaheadContainer.active);\n\n // on keydown, if scroll is at the bottom and next page records are available, fetch next page items.\n if (!this._loadingItems && !this.dataProvider.isLastPage && index + 1 > matches.length - 1) {\n // index is saved in order to select the lastSelected item in the dropdown after fetching next page items.\n this.lastSelectedIndex = index;\n this.loadMoreData(true);\n }\n }\n\n private setLastActiveMatchAsSelected() {\n if (this.lastSelectedIndex) {\n (this.typeaheadContainer as any)._active = this.typeaheadContainer.matches[this.lastSelectedIndex];\n this.typeaheadContainer.nextActiveMatch();\n this.lastSelectedIndex = undefined;\n }\n }\n\n private triggerSearch() {\n if (this.dataProvider.isLastPage || !this.$element.hasClass('full-screen')) {\n return;\n }\n const typeAheadDropDown = this.dropdownEl;\n const $lastItem = typeAheadDropDown.find('li').last();\n\n // Check if last item is not below the full screen\n if ($lastItem.length && typeAheadDropDown.length && (typeAheadDropDown.height() + typeAheadDropDown.position().top > $lastItem.height() + $lastItem.position().top)) {\n this.loadMoreData(true);\n }\n }\n\n private isUpdateOnKeyPress() {\n return this.searchon === 'typing';\n }\n\n private debounceDefaultQuery(data) {\n this._defaultQueryInvoked = true;\n this.getDataSource(data, true).then((response) => {\n if (response.length) {\n this.queryModel = response;\n this._lastQuery = this.query = this.queryModel[0].label || '';\n this._modelByValue = this.queryModel[0].value;\n this._modelByKey = this.queryModel[0].key;\n this.showClosebtn = (this.query !== '');\n } else {\n this._modelByValue = undefined;\n this.queryModel = undefined;\n this.query = '';\n }\n if (this.clearData) {\n if (get((this.typeahead as any), '_typeahead.isShown')) {\n this.typeahead.hide();\n }\n }\n });\n }\n\n private updateByDatavalue(data) {\n this.updateByDataset(data);\n this.updateByDataSource(data);\n }\n\n private updateByDataSource(data) {\n // value is present but the corresponding key is not found then fetch next set\n // modelByKey will be set only when datavalue is available inside the localData otherwise make a N/w call.\n if (isDefined(data) && !isObject(data) && this.datasource && !isDefined(this._modelByKey) && this.datafield !== ALLFIELDS) {\n // Avoid making default query if queryModel already exists.\n if (isDefined(this.queryModel) && !isEmpty(this.queryModel)) {\n this.updateDatavalueFromQueryModel();\n return;\n }\n\n // Make default query call only when datasource supports CRUD (live variable).\n if (!this._defaultQueryInvoked && this.datasource.execute(DataSource.Operation.SUPPORTS_CRUD)) {\n this.debounceDefaultQuery(data);\n }\n }\n }\n\n // updates the model value using queryModel\n private updateDatavalueFromQueryModel() {\n if (isDefined(this.queryModel)) {\n this._modelByValue = isArray(this.queryModel) ? (this.queryModel[0] as DataSetItem).value : this.queryModel;\n this._modelByKey = isArray(this.queryModel) ? (this.queryModel[0] as DataSetItem).key : this.queryModel;\n this.toBeProcessedDatavalue = undefined;\n }\n }\n\n private updateByDataset(data: any) {\n // default query is already invoked then do not make other default query call.\n // For local search i.e. searchkey is undefined, do not return, verify the datavalue against the datasetItems .\n if (this._defaultQueryInvoked && this.searchkey) {\n return;\n }\n const selectedItem = find(this.datasetItems, (item) => {\n return (isObject(item.value) ? isEqual(item.value, data) : (toString(item.value)).toLowerCase() === (toString(data)).toLowerCase());\n });\n\n // set the default only when it is available in dataset.\n if (selectedItem) {\n this.queryModel = [selectedItem];\n } else if (this.datafield === ALLFIELDS && isObject(data)) {\n this.queryModel = this.getTransformedData(extractDataAsArray(data));\n } else {\n // resetting the queryModel only when prevDatavalue is equal to data\n if ((this as any).prevDatavalue !== data) {\n this.queryModel = undefined;\n this.query = '';\n return;\n }\n }\n this.updateDatavalueFromQueryModel();\n\n // Show the label value on input.\n this._lastQuery = this.query = isDefined(this.queryModel) && this.queryModel.length ? get(this.queryModel[0], 'label') : '';\n this.showClosebtn = (this.query !== '');\n }\n\n // If we have last search results then open dropdown on focus\n private handleFocus($event) {\n if (this.type === 'search' && this.query === this._lastQuery && this._lastResult) {\n (this.typeahead as any).keyUpEventEmitter.emit(this.query);\n }\n }\n\n public notifySubscriber() {\n const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n if (parentEl.length > 0) {\n this.app.notify('captionPositionAnimate', {displayVal: true, nativeEl: parentEl});\n }\n }\n\n // This method returns a promise that provides the filtered data from the datasource.\n public getDataSource(query: Array<string> | string, searchOnDataField?: boolean, nextItemIndex?: number): Promise<DataSetItem[]> {\n // For default query, searchOnDataField is set to true, then do not make a n/w call when datafield is ALLFIELDS\n if (searchOnDataField && this.datafield === ALLFIELDS) {\n this._loadingItems = false;\n return Promise.resolve([]);\n }\n\n // For default datavalue, search key as to be on datafield to get the default data from the filter call.\n const dataConfig: IDataProviderConfig = {\n dataset: this.dataset ? convertDataToObject(this.dataset) : undefined,\n binddataset: this.binddataset,\n datasource: this.datasource,\n datafield: this.datafield,\n hasData: this.dataset && this.dataset.length,\n query: query,\n isLocalFilter: !this.searchkey,\n searchKey: searchOnDataField ? this.datafield : this.searchkey,\n // default search call match mode should be startignorecase\n matchMode: searchOnDataField ? 'startignorecase' : this.matchmode,\n casesensitive: this.casesensitive,\n isformfield: this.isformfield,\n orderby: this.orderby,\n limit: this.limit,\n pagesize: this.pagesize,\n page: this.page,\n onBeforeservicecall: this.invokeOnBeforeServiceCall.bind(this)\n };\n\n if (this.dataoptions) {\n dataConfig.dataoptions = this.dataoptions;\n dataConfig.viewParent = this.viewParent;\n }\n\n this._loadingItems = true;\n\n return this.dataProvider.filter(dataConfig)\n .then((response: any) => {\n // response from dataProvider returns always data object.\n response = response.data || response;\n // for service variable, updating the dataset only if it is not defined or empty\n if ((!isDefined(this.dataset) || !this.dataset.length) && this.dataProvider.updateDataset) {\n this.dataset = response;\n }\n\n if (this.dataProvider.hasMoreData) {\n this.formattedDataset = this.formattedDataset.concat(response);\n } else {\n this.formattedDataset = response;\n }\n\n // explicitly setting the optionslimit as the matches more than 20 will be ignored if optionslimit is not specified.\n if (this.formattedDataset.length > 20 && !isDefined(this.limit)) {\n this.typeahead.typeaheadOptionsLimit = this.formattedDataset.length;\n }\n\n // In mobile, trigger the search by default until the results have height upto page height. Other results can be fetched by scrolling\n if (this._isOpen && this.isMobileAutoComplete() && !isUndefined(this.dataProvider.isLastPage) && !this.dataProvider.isLastPage) {\n this.triggerSearch();\n }\n\n const transformedData = this.getTransformedData(this.formattedDataset, nextItemIndex);\n\n // result contains the datafield values.\n this.result = map(transformedData, 'value');\n return transformedData;\n }, (error) => {\n this._loadingItems = false;\n return [];\n }\n ).then(result => {\n if (this.isScrolled) {\n (debounce(() => {\n this.setLastActiveMatchAsSelected();\n }, 30))();\n this.isScrolled = false;\n }\n // When no result is found, set the datavalue to undefined.\n if (!result.length) {\n this._modelByValue = undefined;\n this.queryModel = (query as string);\n }\n // on focusout i.e. on other widget focus, if n/w is pending loading icon is shown, when data is available then dropdown is shown again.\n // on unsubscribing do not show the results.\n if (this._unsubscribeDv) {\n result = [];\n }\n this._loadingItems = false;\n this._lastResult = result;\n return result;\n });\n }\n\n // this method returns the parent context i.e. Page context and not parent component's context.\n private getContext(context) {\n if (context && get(context, 'widget')) {\n return this.getContext(context.viewParent);\n }\n return context;\n }\n\n public getTransformedData(data: any, itemIndex?: number, iscustom?: boolean): DataSetItem[] {\n if (isDefined(itemIndex)) {\n itemIndex++;\n }\n\n const transformedData = transformFormData(\n this.getContext(this.viewParent),\n data,\n this.datafield,\n {\n displayField: this.displaylabel || this.displayfield,\n displayExpr: iscustom ? '' : this.displayexpression,\n bindDisplayExpr: iscustom ? '' : this.binddisplaylabel,\n bindDisplayImgSrc: this.binddisplayimagesrc,\n displayImgSrc: this.displayimagesrc\n },\n itemIndex,\n this\n );\n return getUniqObjsByDataField(transformedData, this.datafield, this.displayfield || this.displaylabel, toBoolean(this.allowempty));\n }\n\n // OptionsListTemplate listens to the scroll event and triggers this function.\n public onScroll($scrollEl: Element, evt: Event) {\n const totalHeight = $scrollEl.scrollHeight,\n clientHeight = $scrollEl.clientHeight;\n\n // If scroll is at the bottom and no request is in progress and next page records are available, fetch next page items.\n if (!this._loadingItems && !this.dataProvider.isLastPage && ($scrollEl.scrollTop + clientHeight >= totalHeight)) {\n this.loadMoreData(true);\n }\n }\n\n public ngOnInit() {\n super.ngOnInit();\n\n if (!isDefined(this.minchars)) {\n // for autocomplete set the minchars to 0\n if (this.type === 'autocomplete') {\n this.minchars = 0;\n } else {\n this.minchars = 1;\n }\n }\n\n this.listenQuery = this.isUpdateOnKeyPress();\n\n // by default for autocomplete do not show the search icon\n // by default show the searchicon for type = search\n this.showsearchicon = isDefined(this.showsearchicon) ? this.showsearchicon : (this.type === 'search');\n }\n\n public ngAfterViewInit() {\n super.ngAfterViewInit();\n\n styler(this.nativeElement as HTMLElement, this);\n this.containerTarget = getContainerTargetClass(this.nativeElement);\n $('.app-search-input').removeAttr('aria-expanded');\n }\n\n private eventData($event, item) {\n if ($event) {\n $event['data'] = {\n item : item.dataObject,\n model : item.value,\n label : item.label,\n query : this.query\n };\n }\n\n return $event;\n }\n\n // triggered on select on option from the list. Set the queryModel, query and modelByKey from the matched item.\n public typeaheadOnSelect(match: TypeaheadMatch, $event: Event): void {\n const item = match.item;\n this.queryModel = item;\n item.selected = true;\n this.query = item.label;\n this.showClosebtn = (this.query !== '');\n $event = $event || this.$typeaheadEvent;\n\n // As item.key can vary from key in the datasetItems\n this._modelByKey = item.key;\n this._modelByValue = item.value;\n\n $event = this.eventData($event, item);\n\n this.invokeOnTouched();\n this.invokeOnChange(this.datavalue, $event || {});\n // updating the variable bound to default value as invokeOnChange is not updating the variable.\n if (this.datavalue !== (this as any).prevDatavalue) {\n this.updateBoundVariable(this.datavalue);\n }\n if (this.$element.hasClass('full-screen')) {\n this.closeSearch();\n }\n this.invokeEventCallback('select', { $event, selectedValue: this.datavalue });\n this.invokeEventCallback('submit', { $event });\n\n this.updatePrevDatavalue(this.datavalue);\n }\n\n onPropertyChange(key: string, nv: any, ov: any) {\n if (key === 'tabindex') {\n return;\n }\n\n // Backward compatability from 10.3.1 to 10.3.2\n // 10.3.1 we had displaylabel as modal value\n // From 10.3.2 onwords we will be having displayexpresion as modal value\n if (this.type === 'autocomplete' && key === 'displaylabel' && this.displaylabel && (!this.displayexpression || (this.displayexpression && !this.datasource))) {\n this.displayexpression = this.displaylabel;\n this.displaylabel = undefined;\n }\n\n // when dataoptions are provided and there is no displaylabel given then displaylabel is set as the relatedfield\n if (key === 'displaylabel' && this.dataoptions && this.binddisplaylabel === null) {\n this.query = get(this._modelByValue, nv) || this._modelByValue;\n }\n\n // when search is disabled, do not load any more data or just clear the data that is already in process or loaded.\n if (key === 'disabled') {\n if (nv === false) {\n this.clearData = false;\n } else {\n this.clearData = true;\n if (get((this.typeahead as any), '_typeahead.isShown')) {\n this.typeahead.hide();\n }\n }\n }\n\n super.onPropertyChange(key, nv, ov);\n }\n}\n","import { AfterContentInit, AfterViewInit, Directive, ElementRef, Injector } from '@angular/core';\n\nimport { SearchComponent } from './search.component';\n\ndeclare const $;\n\n@Directive({\n selector: '[scrollable]'\n})\nexport class ScrollableDirective implements AfterContentInit, AfterViewInit {\n private elementRef: ElementRef;\n\n constructor(inj: Injector, private searchRef: SearchComponent) {\n this.elementRef = inj.get(ElementRef);\n }\n\n ngAfterContentInit() {\n // add the scroll event listener on the ul element.\n this.elementRef.nativeElement.addEventListener('scroll', this.notifyParent.bind(this));\n this.searchRef.dropdownEl = $(this.elementRef.nativeElement);\n (this.searchRef as any).onDropdownOpen();\n }\n\n ngAfterViewInit() {\n if (!this.searchRef.isMobileAutoComplete()) {\n // assigning width for the dropdown.\n const typeAheadInput = this.searchRef.$element.find('input').first();\n this.searchRef.dropdownEl.width(typeAheadInput.outerWidth());\n }\n }\n\n private notifyParent(evt: Event) {\n this.searchRef.onScroll(this.elementRef.nativeElement, evt);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { TypeaheadModule } from 'ngx-bootstrap/typeahead';\n\nimport { WmComponentsModule } from '@wm/components/base';\n\nimport { SearchComponent } from './search.component';\nimport { ScrollableDirective } from './scrollable.directive';\n\nconst components = [\n SearchComponent,\n ScrollableDirective\n];\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n TypeaheadModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components]\n})\nexport class SearchModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["filter","i1.SearchComponent"],"mappings":"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"}
|