@wavemaker/app-ng-runtime 12.0.0-next.45102 → 12.0.0-next.45127
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 +8 -2
- app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +3 -3
- app-ng-runtime/components/base/esm2022/utils/live-utils.mjs +8 -2
- app-ng-runtime/components/base/fesm2022/index.mjs +8 -2
- 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/base/widgets/common/base/base-field-validations.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/containers/wizard/bundles/index.umd.js +17 -0
- app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +18 -1
- app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +17 -0
- app-ng-runtime/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/wizard/wizard.component.d.ts +1 -0
- app-ng-runtime/components/data/form/bundles/index.umd.js +4 -0
- app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +5 -3
- app-ng-runtime/components/data/form/fesm2022/index.mjs +4 -2
- app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/form-field/form-field.directive.d.ts +1 -0
- 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 +44 -10
- 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 +30 -7
- app-ng-runtime/components/data/table/esm2022/table.props.mjs +3 -1
- app-ng-runtime/components/data/table/fesm2022/index.mjs +45 -11
- app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/table.component.d.ts +8 -1
- 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 +20 -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 +13 -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 +20 -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 +206 -110
- 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 +60 -30
- 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 +51 -14
- 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 +9 -6
- app-ng-runtime/components/input/default/esm2022/textarea/textarea.props.mjs +2 -1
- app-ng-runtime/components/input/default/fesm2022/index.mjs +206 -110
- 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 +4 -4
- 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 +4 -2
- app-ng-runtime/components/input/epoch/bundles/index.umd.js +15 -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 +10 -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 +15 -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 +208 -95
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +206 -98
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.props.mjs +6 -1
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +209 -96
- 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 +17 -11
- 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 +10 -8
- app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +9 -8
- app-ng-runtime/components/navigation/menu/esm2022/menu.props.mjs +2 -1
- app-ng-runtime/components/navigation/menu/esm2022/nav/nav.component.mjs +2 -2
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +10 -8
- 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 +12 -9
- 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 +5 -4
- app-ng-runtime/core/fesm2022/index.mjs +12 -10
- 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 -0
- app-ng-runtime/locales/moment-timezone/moment-timezone-with-data.js +37 -37
- 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/mobile/core/bundles/index.umd.js +18 -2
- app-ng-runtime/mobile/core/esm2022/native.xhr.mjs +19 -3
- app-ng-runtime/mobile/core/fesm2022/index.mjs +18 -2
- app-ng-runtime/mobile/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/bundles/index.umd.js +7 -5
- 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/esm2022/services/i18n.service.mjs +2 -2
- app-ng-runtime/runtime/base/fesm2022/index.mjs +7 -5
- 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/runtime/base/services/i18n.service.d.ts +1 -1
- app-ng-runtime/scripts/@wavemaker/nvd3/build/nv.d3.min.js +1 -1
- app-ng-runtime/scripts/datatable/datatable.js +29 -29
- app-ng-runtime/scripts/summernote/dist/summernote-lite.min.js +2 -3
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/input/epoch/src/picker/picker.component.ts","../../../../../projects/components/widgets/input/epoch/src/date-time/date-time-picker.component.ts","../../../../../projects/components/widgets/input/epoch/src/base-date-time.component.ts","../../../../../projects/components/widgets/input/epoch/src/date/date.props.ts","../../../../../projects/components/widgets/input/epoch/src/date/imaskUtil.ts","../../../../../projects/components/widgets/input/epoch/src/date/date.component.html","../../../../../projects/components/widgets/input/epoch/src/date/date.component.ts","../../../../../projects/components/widgets/input/epoch/src/date-time/date-time.props.ts","../../../../../projects/components/widgets/input/epoch/src/date-time/date-time.component.html","../../../../../projects/components/widgets/input/epoch/src/date-time/date-time.component.ts","../../../../../projects/components/widgets/input/epoch/src/time/time.props.ts","../../../../../projects/components/widgets/input/epoch/src/time/time.component.html","../../../../../projects/components/widgets/input/epoch/src/time/time.component.ts","../../../../../projects/components/widgets/input/epoch/src/epoch.module.ts","../../../../../projects/components/widgets/input/epoch/src/index.ts"],"sourcesContent":["import { AfterViewInit, Component, ElementRef, EventEmitter, Inject, Injector, Input, NgZone, OnDestroy, Output, ViewChild } from '@angular/core';\n\ndeclare const $;\n\n@Component({\n selector: 'wm-pickergroup',\n template: `\n <div class=\"app-picker-group\">\n <ng-content></ng-content>\n </div>\n `\n})\nexport class PickerGroupComponent {\n\n}\n\n@Component({\n selector: 'wm-picker',\n template: `\n <div class=\"app-picker\">\n <div class=\"app-picker-option-container\">\n <div class=\"app-picker-option app-picker-empty-option\">E</div>\n <div class=\"app-picker-option app-picker-empty-option\">E</div>\n <div *ngFor=\"let option of options; index as i;\" class=\"app-picker-option\">\n {{option.label}}\n </div>\n <div class=\"app-picker-option app-picker-empty-option\">E</div>\n <div class=\"app-picker-option app-picker-empty-option\">E</div>\n </div>\n <div class=\"app-picker-ruler\"></div>\n </div>\n `\n})\nexport class PickerComponent implements AfterViewInit {\n\n public $el;\n\n private pickerAnimator;\n\n @Output() change = new EventEmitter<{\n label: string,\n value?: any\n }>();\n\n private _selectedIndex = 0;\n\n private _selectedValue: any;\n\n private _options: Array<{label: string, value?: any}> = [];\n\n noOfEmptyElements = 2;\n\n constructor(protected inj: Injector) {\n this.$el = $(inj.get(ElementRef).nativeElement);\n }\n\n @Input()\n set selectedValue(s: string) {\n this._selectedValue = s;\n this.reRender();\n }\n\n get selectedValue() {\n return this._selectedValue;\n }\n\n @Input()\n set options(opts: Array<{label: string, value?: any}>) {\n this._options = opts.map(o => ({\n label: o.label,\n value: o.value !== undefined ? o.value : o.label\n }));\n this.reRender();\n }\n\n get options() {\n return this._options;\n }\n\n reRender() {\n this._selectedIndex = this.options.findIndex(o => o.value === this.selectedValue);\n this.pickerAnimator?.select(this._selectedIndex + this.noOfEmptyElements);\n }\n\n set selectedIndex(i: number) {\n this._selectedIndex = i;\n this._selectedValue = this.options[i].value;\n this.change.emit(this.options[i]);\n }\n\n get selectedIndex() {\n return this._selectedIndex;\n }\n\n ngAfterViewInit(): void {\n this.pickerAnimator = new PickerAnimator(this);\n }\n\n}\n\nclass PickerAnimator {\n\n constructor(private picker: PickerComponent) {\n let lastSelectedIndex = picker.selectedIndex + picker.noOfEmptyElements;\n const computeIndex = (d: number) => lastSelectedIndex + Math.floor(d / 16);\n this.select(lastSelectedIndex);\n this.getElement().swipey({\n 'direction': $.fn.swipey.DIRECTIONS.VERTICAL,\n 'threshold': 10,\n 'target': picker.$el,\n 'onSwipe': (e, data) => {\n this.select(computeIndex(-1 * data.length));\n },\n 'onSwipeEnd': (e, data) => {\n const nextSelectedIndex = computeIndex(-1 * data.length);\n this.select(nextSelectedIndex);\n lastSelectedIndex = picker.selectedIndex + picker.noOfEmptyElements;\n }\n });\n }\n\n getElement() {\n return this.picker.$el.find('.app-picker-option-container:first');\n }\n\n getOptionElements() {\n return this.getElement().find('.app-picker-option');\n }\n\n select(selectedIndex: number) {\n const options = this.getOptionElements();\n if (selectedIndex < this.picker.noOfEmptyElements\n || selectedIndex >= options.length - this.picker.noOfEmptyElements) {\n return;\n }\n this.getElement()\n .find('.app-picker-option.app-picker-option-selected')\n .removeClass('app-picker-option-selected');\n options.eq(selectedIndex).addClass('app-picker-option-selected');\n this.picker.selectedIndex = selectedIndex - this.picker.noOfEmptyElements;\n const minIndex = selectedIndex - this.picker.noOfEmptyElements;\n const maxIndex = selectedIndex + this.picker.noOfEmptyElements;\n options.each((i, e) => {\n if (i >= minIndex && i <= maxIndex) {\n const rotation = (i - selectedIndex) * 30;\n const opacity = 1 - Math.abs(i - selectedIndex) * 0.3;\n $(e).css({\n transform : 'perspective(500px) rotateX(' + rotation + 'deg)',\n opacity: opacity\n }).show();\n } else {\n $(e).hide();\n }\n });\n }\n}\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Inject, Injector, Input, NgZone, OnDestroy, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { BsDatepickerConfig } from 'ngx-bootstrap/datepicker';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { App } from '@wm/core';\nimport {filter} from \"lodash-es\";\n\ndeclare const $;\ndeclare const moment;\n\n@Component({\n selector: 'wm-datetimepicker',\n template: `\n <ng-template #datetimepickerTemplate>\n <div class=\"app-datetime-picker\">\n <div class=\"modal-body\">\n <div class=\"mobile-datetime-picker-options\">\n\n </div>\n <bs-datepicker-inline\n [bsConfig]=\"bsDatepickerConfig\"\n [datesDisabled]=\"excludedDatesToDisable\"\n bsDatepicker\n [bsValue]=\"changedValue\"\n (bsValueChange)=\"onDateUpdate($event)\"\n *ngIf=\"mode === 'DATE_TIME' || mode === 'DATE'\">\n </bs-datepicker-inline>\n <wm-timepicker\n [value]=\"changedValue\"\n [min]=\"minTime\"\n [max]=\"maxTime\"\n (change)=\"onTimeUpdate($event)\"\n *ngIf=\"mode === 'DATE_TIME' || mode === 'TIME'\"></wm-timepicker>\n <span class=\"text-primary date-picker-value\">\n {{getDateLabel()}}\n </span>\n </div>\n <div class=\"modal-footer\">\n <button\n *ngIf=\"mode === 'DATE_TIME' || mode === 'DATE'\"\n class=\"btn btn-secondary today-btn\"\n (click)=\"setToday()\">{{appLocale.LABEL_TODAY_DATE || \"Today\" }}</button>\n <button\n class=\"btn btn-primary pull-right ok-btn\"\n *ngIf=\"mode === 'DATE_TIME' || mode === 'TIME'\"\n (click)=\"onOkClick()\">{{appLocale.LABEL_OK || \"Ok\" }}</button>\n <button\n class=\"btn btn-secondary pull-right clear-btn\"\n (click)=\"clear()\">{{appLocale.LABEL_CLEAR_DATE || \"Clear\" }}</button>\n </div>\n </div>\n </ng-template>\n `\n})\nexport class DateTimePickerComponent implements AfterViewInit, OnDestroy {\n\n private isDateOpen = true;\n\n private isTimeOpen = false;\n\n private appLocale: any;\n\n @ViewChild('datetimepickerTemplate' , { static: true }) datetimepickerTemplate: TemplateRef<any>;\n\n @Input()\n private mode: 'DATE' | 'TIME' | 'DATE_TIME' = 'DATE_TIME';\n\n @Input()\n private placement: 'MODAL' | 'INLINE' = 'MODAL';\n\n @Input(\"config\")\n private _bsDatepickerConfig: BsDatepickerConfig;\n\n @Input()\n private minTime: Date;\n\n @Input()\n private maxTime: Date;\n\n @Input()\n private _displayFormat: string;\n\n @Output() change = new EventEmitter<Date>();\n\n private _value = new Date();\n\n private changedValue = null;\n\n private modalRef: BsModalRef;\n\n @Input()\n private excludedDatesToDisable;\n\n constructor(\n protected inj: Injector,\n private bsModalService: BsModalService) {\n this.appLocale = inj.get(App).appLocale || {};\n }\n\n @Input()\n set value(d: Date) {\n d = d || new Date();\n this._value = d;\n this.changedValue = d;\n }\n\n\n @Input(\"config\")\n set bsDatepickerConfig(config: BsDatepickerConfig) {\n this._bsDatepickerConfig = config;\n this._bsDatepickerConfig.showClearButton = false;\n this._bsDatepickerConfig.showTodayButton = false;\n }\n\n @Input()\n set excludedDaysToDisable(v: number[]) {\n this._bsDatepickerConfig.daysDisabled = v;\n }\n\n get bsDatepickerConfig() {\n return this._bsDatepickerConfig;\n }\n\n @Input()\n set displayFormat(format: string) {\n if (format) {\n this._displayFormat = format.replace(/y/g, \"Y\").replace(/d/g, \"D\").replace(\"a\", \"A\");\n }\n }\n\n validateSelectedDate() {\n if (!this.changedValue) {\n return true;\n }\n const cd = moment(this.changedValue);\n const minDate = this._bsDatepickerConfig?.minDate;\n const maxDate = this._bsDatepickerConfig?.maxDate;\n if (minDate\n && ((this.mode === 'DATE'\n && moment(minDate).startOf('day').toDate() > this.changedValue)\n || (this.mode !== 'DATE'\n && minDate > this.changedValue))) {\n return false;\n }\n if (maxDate\n && ((this.mode === 'DATE'\n && moment(maxDate).endOf('day').toDate() < this.changedValue)\n || (this.mode !== 'DATE'\n && maxDate < this.changedValue))) {\n return false;\n }\n if (this._bsDatepickerConfig?.daysDisabled?.indexOf(cd.day()) >= 0) {\n return false;\n }\n const cdSt = cd.startOf('day').toDate().getTime();\n if (this.excludedDatesToDisable?.find(d => d.getTime() === cdSt)) {\n return false;\n }\n return true;\n }\n\n get displayFormat() {\n if (this._displayFormat) {\n return this._displayFormat;\n }\n }\n /**\n * This method is used to highlight the current date\n */\n private hightlightToday() {\n const toDay = new Date().getDate().toString();\n filter($(`body > modal-container .date-picker-modal span:contains(${toDay})`)\n .not('.is-other-month,.current-date'), (obj) => {\n if ($(obj).text() === toDay) {\n $(obj).addClass('current-date text-info');\n }\n });\n }\n\n private hideOnClick() {\n $('body>modal-container .date-picker-modal .app-datetime-picker')\n .click(($event) => $event.stopPropagation());\n $('body>modal-container .date-picker-modal').click(() => this.onCancelClick());\n }\n\n getDateLabel() {\n return moment(this.changedValue).format(this.displayFormat);\n }\n\n openDatePicker() {\n this.isTimeOpen = false;\n this.isDateOpen = true;\n }\n\n openTimePicker() {\n this.isTimeOpen = true;\n this.isDateOpen = false;\n }\n\n public onDateUpdate(newVal) {\n const oldVal = this.changedValue;\n if (this.mode === 'DATE') {\n newVal.setHours(0);\n newVal.setMinutes(0);\n newVal.setSeconds(0);\n newVal.setMilliseconds(0);\n } else if (oldVal && newVal) {\n newVal.setHours(oldVal.getHours());\n newVal.setMinutes(oldVal.getMinutes());\n newVal.setSeconds(oldVal.getSeconds());\n newVal.setMilliseconds(oldVal.getMilliseconds());\n }\n this.changedValue = newVal;\n if (this.mode === 'DATE'\n && oldVal !== newVal\n && this.validateSelectedDate()) {\n this.onOkClick();\n }\n }\n\n public onTimeUpdate(newVal) {\n this.changedValue = newVal;\n }\n\n show() {\n this.reset();\n this.modalRef = this.bsModalService.show(this.datetimepickerTemplate, {\n animated: true,\n backdrop: 'static',\n class: 'date-picker-modal modal-dialog-centered'\n });\n setTimeout(() => { this.hideOnClick()}, 500);\n }\n\n clear() {\n this.changedValue = null;\n this.triggerChange();\n this.hideModal();\n }\n\n setToday() {\n const today = moment().startOf('day').toDate();\n this.onDateUpdate(today);\n }\n\n reset() {\n this.changedValue = this._value;\n }\n\n hideModal() {\n if (this.modalRef?.id) {\n this.bsModalService.hide(this.modalRef.id);\n }\n }\n\n onCancelClick() {\n this.changedValue = this._value;\n this.hideModal();\n }\n\n onOkClick() {\n if (this.validateSelectedDate()) {\n this.triggerChange();\n }\n this.hideModal();\n }\n\n triggerChange() {\n if (this.value !== this.changedValue) {\n this.change.emit(this.changedValue);\n }\n }\n\n ngAfterViewInit(): void {\n\n }\n\n ngOnDestroy(): void {\n this.hideModal();\n }\n\n}\n\n\n@Component({\n selector: 'wm-timepicker',\n template: `\n <wm-pickergroup>\n <wm-picker\n [options]=\"options.hour\"\n [selectedValue]=\"hour\"\n (change)=\"set($event, 'HOUR')\"></wm-picker>\n <span class=\"app-time-separator\">:</span>\n <wm-picker\n [options]=\"options.minute\"\n [selectedValue]=\"minute\"\n (change)=\"set($event, 'MINUTE')\"></wm-picker>\n <span class=\"app-time-separator\">:</span>\n <wm-picker\n [options]=\"options.minute\"\n [selectedValue]=\"second\"\n (change)=\"set($event, 'SECOND')\"></wm-picker>\n </wm-pickergroup>\n `\n})\nexport class TimePickerComponent implements AfterViewInit {\n\n options = {\n hour: [],\n minute: [],\n second: [],\n meridian: ['AM', 'PM']\n };\n\n @Input()\n private value = new Date();\n\n @Input()\n private min: Date = null;\n\n @Input()\n private max: Date = null;\n\n @Output() change = new EventEmitter<Date>();\n\n constructor(\n protected inj: Injector) {\n this.options.hour = this.populateNumbers(0, 23);\n this.options.minute = this.populateNumbers(0, 59);\n this.options.second = this.populateNumbers(0, 59);\n }\n\n private populateNumbers(start: number, to: number) {\n const arr = [];\n for(let i = start; i <= to; i++) {\n arr.push({\n label: (i < 10 ? '0' : '') + i,\n value: i\n })\n }\n return arr;\n }\n\n set({index, value}, unit: 'HOUR' | 'MINUTE' | 'SECOND' | 'MERIDIAN') {\n if (unit === 'HOUR') {\n this.value = moment(this.value).hour(parseInt(value)).toDate();\n } else if (unit === 'MINUTE') {\n this.value = moment(this.value).minute(parseInt(value)).toDate();\n } else if (unit === 'SECOND') {\n this.value = moment(this.value).second(parseInt(value)).toDate();\n } else if (unit === 'MERIDIAN') {\n this.value = moment(this.value).minute(value).toDate();\n }\n if (this.min && this.value < this.min) {\n this.value = this.min;\n }\n if (this.max && this.value > this.max) {\n this.value = this.max;\n }\n this.change.emit(this.value);\n }\n\n get hour() {\n return moment(this.value).hour();\n }\n\n get minute() {\n return moment(this.value).minute();\n }\n\n get second() {\n return moment(this.value).second();\n }\n\n get meridian() {\n return 'AM';\n }\n\n public onDateUpdate(newVal) {\n debugger;\n }\n\n ngAfterViewInit(): void {\n\n }\n\n}\n","import {AfterViewInit, Directive, Inject, Injector, OnDestroy, Optional, ViewChild} from '@angular/core';\nimport {AbstractControl, Validator} from '@angular/forms';\nimport {Subscription} from 'rxjs';\nimport {FormStyle, getLocaleDayPeriods, TranslationWidth} from '@angular/common';\nimport {BsDropdownDirective} from 'ngx-bootstrap/dropdown';\nimport {TimepickerComponent, TimepickerConfig} from 'ngx-bootstrap/timepicker';\nimport {\n AbstractI18nService,\n getDateObj,\n getFormattedDate,\n getNativeDateObject,\n hasCordova,\n isIos,\n isMobile,\n setAttr\n} from '@wm/core';\n\nimport {getContainerTargetClass, ToDatePipe} from '@wm/components/base';\nimport {BaseFormCustomComponent} from '@wm/components/input';\nimport {BsDatepickerConfig, BsDatepickerDirective} from 'ngx-bootstrap/datepicker';\nimport {DateTimePickerComponent} from './date-time//date-time-picker.component';\nimport {filter, forEach, get, includes, isNaN as _isNaN, isString, isUndefined, parseInt, split} from \"lodash-es\";\n\ndeclare const $;\ndeclare const moment;\n\nconst CURRENT_DATE = 'CURRENT_DATE';\nconst months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\nconst DATEPICKER_DROPDOWN_OPTIONS = {\n BUTTON: 'button',\n DEFAULT: 'default'\n};\nconst DATAENTRYMODE_DROPDOWN_OPTIONS = {\n PICKER: 'picker',\n DEFAULT: 'default'\n};\n\n// Providing meridians to the timepicker baesd on selected locale\nexport function getTimepickerConfig(i18nService): TimepickerConfig {\n return Object.assign(new TimepickerConfig(), {\n meridians: getLocaleDayPeriods(i18nService.getSelectedLocale(), FormStyle.Format, TranslationWidth.Abbreviated)\n });\n}\n\n@Directive()\nexport abstract class BaseDateTimeComponent extends BaseFormCustomComponent implements AfterViewInit, OnDestroy, Validator {\n public required: boolean;\n public disabled: boolean;\n public tabindex: any;\n public name: string;\n public autofocus: boolean;\n public readonly: boolean;\n public placeholder: string;\n public shortcutkey: string;\n public _triggeredByUser: boolean;\n\n public excludedays: string;\n public excludedDaysToDisable: Array<number>;\n public excludedDatesToDisable: Array<Date>;\n public excludedates;\n public outputformat;\n public mindate;\n public maxdate;\n public dataentrymode;\n protected activeDate;\n private elementScope;\n public datepattern;\n public timepattern;\n protected showseconds: boolean;\n protected ismeridian: boolean;\n protected meridians: any;\n protected datePipe;\n protected i18nService;\n public isReadOnly = false;\n protected selectedLocale: string;\n public selectfromothermonth: boolean;\n public todaybutton: boolean;\n public clearbutton: boolean;\n public removeKeyupListener;\n public loadNativeDateInput;\n public showcustompicker;\n public next;\n public prev;\n public clicked = false;\n\n protected dateNotInRange: boolean;\n protected timeNotInRange: boolean;\n protected invalidDateTimeFormat: boolean;\n\n private dateOnShowSubscription: Subscription;\n private cancelLocaleChangeSubscription;\n public get timeZone() { return this.inj.get(AbstractI18nService).getTimezone(this); }\n\n formatsByLocale = {'timezone': ''};\n\n /**\n * This is an internal property used to map the containerClass, showWeekNumbers etc., to the bsDatepicker\n */\n public _dateOptions: BsDatepickerConfig = new BsDatepickerConfig();\n protected bsDatePickerDirective: BsDatepickerDirective;\n\n @ViewChild(BsDropdownDirective) protected bsDropdown;\n @ViewChild(TimepickerComponent) protected bsTimePicker;\n @ViewChild(DateTimePickerComponent) datetimepickerComponent;\n private validateType: string;\n containerTarget: string;\n\n constructor(inj: Injector, WIDGET_CONFIG, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n this.i18nService = this.inj.get(AbstractI18nService);\n this.invokeEventCallback('beforeload');\n\n this.datePipe = this.inj.get(ToDatePipe);\n this.selectedLocale = this.i18nService.getSelectedLocale();\n this._dateOptions.todayPosition = 'left';\n this._dateOptions.clearPosition = 'right';\n this.meridians = getLocaleDayPeriods(this.selectedLocale, FormStyle.Format, TranslationWidth.Abbreviated);\n this.loadNativeDateInput = isMobile() && !this.showcustompicker;\n\n this.cancelLocaleChangeSubscription = this.getAppInstance().subscribe(\"locale-changed\", (locale) => {\n this.datePipe.datePipe.locale = locale.angular;\n this._dateOptions.todayButtonLabel = this.i18nService.getLocalizedMessage('LABEL_TODAY_DATE');\n this._dateOptions.clearButtonLabel = this.i18nService.getLocalizedMessage('LABEL_CLEAR_DATE');\n });\n }\n\n\n /**\n * returns true if the input value is default (i.e open date picker on input click)\n * @param1 dropdownvalue, user selected value (by default datepicker opens on input click)\n * **/\n protected isDropDownDisplayEnabledOnInput(dropdownvalue) {\n return dropdownvalue === DATEPICKER_DROPDOWN_OPTIONS.DEFAULT;\n }\n\n /**\n * returns true if the input value is default (i.e Data entry can be done either by selecting from the Date/DateTime/Time Picker or by entering manually using the keyboard. )\n * @param1 dropdownvalue, user selected value\n * **/\n protected isDataEntryModeEnabledOnInput(dropdownvalue) {\n return dropdownvalue === DATAENTRYMODE_DROPDOWN_OPTIONS.DEFAULT;\n }\n /**\n * This method is used to show validation message depending on the isNativePicker flag.\n */\n private showValidation($event, displayValue, isNativePicker, msg) {\n if (isNativePicker) {\n console.warn('min max date validation failed ', msg);\n return $($event.target).val(displayValue);\n }\n }\n\n resetDisplayInput() {\n $(this.nativeElement).find('.display-input').val('');\n }\n\n public validate(c: AbstractControl) {\n if (this.invalidDateTimeFormat) {\n return {\n invalidDateTimeFormat: {\n valid: false\n }\n };\n }\n if (!isUndefined(this.dateNotInRange) && this.dateNotInRange) {\n return {\n dateNotInRange: {\n valid: false\n },\n };\n }\n if (!isUndefined(this.timeNotInRange) && this.timeNotInRange) {\n return {\n timeNotInRange: {\n valid: false\n },\n };\n }\n /* WMS-18269 | Extending the existing validation for 'required' */\n if (this['show'] && this['required']) {\n return !!c.value ? null : { required: true };\n }\n this.validateType = '';\n return null;\n }\n\n /**\n * This method is used to validate date pattern and time pattern\n * If user selects one pattern in design time and if he tries to enter the date in another pattern then the device is throwing an error\n */\n protected formatValidation(newVal, inputVal, isNativePicker?: boolean) {\n const pattern = this.datepattern || this.timepattern;\n const timeZone = this.timeZone;\n const formattedDate = getFormattedDate(this.datePipe, newVal, pattern, timeZone, null, null, this);\n inputVal = inputVal.trim();\n if (inputVal) {\n if (pattern === 'timestamp') {\n if (!_isNaN(inputVal) && parseInt(inputVal) !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.validateType = 'incorrectformat';\n this.invokeOnChange(this.datavalue, undefined, false);\n return false;\n }\n } else {\n if (isNativePicker) {\n // format the date value only when inputVal is obtained from $event.target.value, as the format doesnt match.\n inputVal = getFormattedDate(this.datePipe, inputVal, pattern, timeZone);\n }\n if (inputVal !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.validateType = 'incorrectformat';\n this.invokeOnChange(this.datavalue, undefined, false);\n return false;\n }\n }\n\n }\n return true;\n }\n\n /**\n * This method is used to validate min date, max date, exclude dates and exclude days\n * In mobile if invalid dates are entered, device is showing an alert.\n * In web if invalid dates are entered, device is showing validation message.\n */\n protected minDateMaxDateValidationOnInput(newVal, $event?: Event, displayValue?: string, isNativePicker?: boolean) {\n if (newVal) {\n const dateTimeVal = newVal;\n newVal = moment(newVal).startOf('day').toDate();\n const minDate = moment(getDateObj(this.mindate)).startOf('day').toDate();\n const maxDate = moment(getDateObj(this.maxdate)).startOf('day').toDate();\n if (this.mindate && newVal < minDate) {\n const msg = `${this.appLocale.LABEL_MINDATE_VALIDATION_MESSAGE} ${this.mindate}.`;\n this.invokeOnChange(this.datavalue, undefined, false);\n if (isNativePicker && getFormattedDate(this.datePipe, minDate, this.datepattern, this.timeZone, null, null, this) === displayValue) {\n return $($event.target).val(displayValue);\n }\n this.dateNotInRange = true;\n this.validateType = 'mindate';\n return this.showValidation($event, displayValue, isNativePicker, msg);\n }\n if (this.maxdate && newVal > maxDate) {\n const msg = `${this.appLocale.LABEL_MAXDATE_VALIDATION_MESSAGE} ${this.maxdate}.`;\n this.invokeOnChange(this.datavalue, undefined, false);\n if (isNativePicker && getFormattedDate(this.datePipe, maxDate, this.datepattern, this.timeZone, null, null, this) === displayValue) {\n return $($event.target).val(displayValue);\n }\n this.dateNotInRange = true;\n this.validateType = 'maxdate';\n return this.showValidation($event, displayValue, isNativePicker, msg);\n }\n if (this.excludedates) {\n let excludeDatesArray;\n if (isString(this.excludedates)) {\n excludeDatesArray = split(this.excludedates, ',');\n } else {\n excludeDatesArray = this.excludedates;\n }\n excludeDatesArray = excludeDatesArray.map(d => getFormattedDate(this.datePipe, d, this.datepattern, this.timeZone, null, null, this));\n if (excludeDatesArray.indexOf(getFormattedDate(this.datePipe, dateTimeVal, this.datepattern, this.timeZone, null, null, this)) > -1) {\n this.dateNotInRange = true;\n this.validateType = 'excludedates';\n this.invokeOnChange(this.datavalue, undefined, false);\n return;\n }\n }\n if (this.excludedays) {\n const excludeDaysArray = split(this.excludedays, ',');\n const day = get(dateTimeVal, 'getDay') ? dateTimeVal.getDay() : dateTimeVal;\n if (excludeDaysArray.indexOf(day.toString()) > -1) {\n this.dateNotInRange = true;\n this.validateType = 'excludedays';\n this.invokeOnChange(this.datavalue, undefined, false);\n return;\n }\n }\n }\n\n if (!isNativePicker) {\n this.dateNotInRange = false;\n this.invokeOnChange(this.datavalue, undefined, false);\n }\n }\n\n /**\n * This method is used to highlight the current date\n */\n protected hightlightToday(newDate) {\n const activeMonth = $(`.bs-datepicker-head .current`).first().text();\n const activeYear = $(\".bs-datepicker-head .current\").eq(1).text();\n const month = new Date(newDate).toLocaleString('default', { month: 'long' });\n const year = newDate.getFullYear().toString();\n\n if(activeMonth == month && activeYear == new Date().getFullYear() && newDate.getDate() === new Date().getDate() && newDate.getMonth() === new Date().getMonth() && newDate.getFullYear() === new Date().getFullYear()) {\n const toDay = new Date().getDate().toString();\n filter($(`span:contains(${toDay})`).not('.is-other-month'), (obj) => {\n if ($(obj).text() === toDay) {\n $(obj).addClass('current-date text-info');\n }\n });\n }\n }\n\n /**\n * This method is used to find the new date is from another year or not\n * @param newDate - newly selected date value\n */\n private isOtheryear(newDate) {\n return (newDate.getMonth() === 0 && this.activeDate.getMonth() === 11) || (newDate.getMonth() === 11 && this.activeDate.getMonth() === 0);\n }\n\n public showDatePickerModal(bsDataval) {\n bsDataval ? this.activeDate = bsDataval : this.activeDate = new Date();\n this.setNextData(this.activeDate);\n this.datetimepickerComponent.show();\n setTimeout(() => {\n this.addDatepickerMouseEvents();\n this.setActiveDateFocus(this.activeDate, true);\n }, 500);\n return ;\n }\n\n /**\n * This method is used to load other month days or other month or other year\n * @param btnClass - class(previous/next) of the button which we have to click\n * @param timePeriod - String value decides to load other month days or other month or other year\n */\n private goToOtherMonthOryear(btnClass, timePeriod) {\n const $node = $(`.bs-datepicker-head .${btnClass}`);\n if ($node.attr('disabled')) {\n return;\n }\n $node.trigger('click');\n if (timePeriod === 'days') {\n this.loadDays();\n } else if (timePeriod === 'month') {\n this.loadMonths();\n } else if (timePeriod === 'year') {\n this.loadYears();\n }\n }\n\n /**\n * This method is used to set focus for active day\n * @param newDate - newly selected date value\n * @param isMouseEvent - boolean value represents the event is mouse event/ keyboard event\n */\n private setActiveDateFocus(newDate, isMouseEvent?: boolean) {\n this.setNextData(newDate);\n this.clicked = false;\n const activeMonth = this.activeDate.getMonth();\n // check for keyboard event\n if (!isMouseEvent) {\n if (newDate.getMonth() < activeMonth) {\n this.isOtheryear(newDate) ? this.goToOtherMonthOryear('next', 'days') : this.goToOtherMonthOryear('previous', 'days');\n } else if (newDate.getMonth() > activeMonth) {\n this.isOtheryear(newDate) ? this.goToOtherMonthOryear('previous', 'days') : this.goToOtherMonthOryear('next', 'days');\n }\n }\n setTimeout(() => {\n const newDay = newDate.getDate().toString();\n filter($(`span:contains(${newDay})`).not('.is-other-month'), (obj) => {\n const activeMonth = $(`.bs-datepicker-head .current`).first().text();\n const activeYear = $(\".bs-datepicker-head .current\").eq(1).text();\n const monthName = new Date().toLocaleString('default', { month: 'long' });\n if ($(obj).text() === newDay && activeMonth == monthName && activeYear == new Date().getFullYear()) {\n if ($(obj).hasClass('selected')) {\n $(obj).parent().attr('aria-selected', 'true');\n }\n $(obj).attr('aria-label', moment(newDate).format('dddd, MMMM Do YYYY'));\n $('[bsdatepickerdaydecorator]').not('.is-other-month').attr('tabindex', '-1');\n $(obj).attr('tabindex', '0');\n $(obj).focus();\n this.activeDate = newDate;\n }\n });\n if (newDate.getDate() === new Date().getDate() && newDate.getMonth() === new Date().getMonth() && newDate.getFullYear() === new Date().getFullYear()) {\n this.hightlightToday(newDate);\n }\n });\n\n }\n\n private getMonth(date, inc) {\n const currentMonth = new Date(date);\n\n let month = currentMonth.getMonth();\n const year = currentMonth.getFullYear();\n\n month += inc;\n\n const newDate = new Date(year, month);\n\n const fullMonth = newDate.toLocaleString('en-US', { month: 'long' });\n\n return {\n date: newDate,\n fullMonth: fullMonth\n };\n }\n\n /**\n * This method sets focus for months/days depending on the loaded datepicker table\n */\n private setFocusForMonthOrDay() {\n const activeMonthOrYear = $(`.bs-datepicker-head .current`).first().text();\n const datePickerBody = $('.bs-datepicker-body');\n if (datePickerBody.find('table.months').length > 0) {\n if (parseInt(activeMonthOrYear) !== this.activeDate.getFullYear()) {\n this.loadMonths();\n }\n const newDate = new Date(parseInt(activeMonthOrYear), this.activeDate.getMonth(), this.activeDate.getDate());\n this.setActiveMonthFocus(newDate, true);\n } else if (datePickerBody.find('table.days').length > 0) {\n const newMonth = months.indexOf(activeMonthOrYear);\n if (newMonth !== this.activeDate.getMonth()) {\n this.loadDays();\n }\n const newDate = new Date(this.activeDate.getFullYear(), newMonth, 1);\n this.setActiveDateFocus(newDate, true);\n }\n }\n\n /**\n * This method sets focus for months/years depending on the loaded datepicker table\n */\n private setFocusForCurrentMonthOryear() {\n const datePickerBody = $('.bs-datepicker-body');\n if (datePickerBody.find('table.months').length > 0) {\n this.loadMonths();\n this.setActiveMonthFocus(this.activeDate, true);\n } else if (datePickerBody.find('table.years').length > 0) {\n this.loadYears();\n this.setActiveYearFocus(this.activeDate, true);\n }\n }\n\n /**\n * This method sets focus for months/years/days depending on the loaded datepicker table\n */\n private setFocusForDate(count) {\n const datePickerBody = $('.bs-datepicker-body');\n if (datePickerBody.find('table.months').length > 0) {\n this.loadMonths();\n const newDate = new Date(this.activeDate.getFullYear() + count, 0, this.activeDate.getDate());\n this.setActiveMonthFocus(newDate, true);\n } else if (datePickerBody.find('table.years').length > 0) {\n this.loadYears();\n const startYear = datePickerBody.find('table.years span').first().text();\n const newDate = new Date(parseInt(startYear), this.activeDate.getMonth(), this.activeDate.getDate());\n this.setActiveYearFocus(newDate, true);\n } else if (datePickerBody.find('table.days').length > 0) {\n this.loadDays();\n const newDate = new Date(this.activeDate.getFullYear(), this.activeDate.getMonth() + count, 1);\n this.setActiveDateFocus(newDate, true);\n }\n }\n\n /**\n * This method is used to add keyboard events while opening the date picker\n * @param scope - scope of the date/datetime widget\n * @param isDateTime - boolean value represents the loaded widget is date or datetime\n */\n protected addDatepickerKeyboardEvents(scope, isDateTime) {\n this.elementScope = scope;\n const dateContainer = document.querySelector(`.${scope.dateContainerCls}`) as HTMLElement;\n setAttr(dateContainer, 'tabindex', '0');\n dateContainer.onkeydown = (event) => {\n // Check for Shift+Tab key or Tab key or escape\n if (event.key === 'Escape') {\n this.elementScope.hideDatepickerDropdown();\n const displayInputElem = this.elementScope.nativeElement.querySelector('.display-input') as HTMLElement;\n setTimeout(() => displayInputElem.focus());\n }\n };\n this.loadDays();\n this.setActiveDateFocus(this.activeDate);\n }\n private setNextData(nextDate) {\n this.next = this.getMonth(nextDate, 1);\n this.prev = this.getMonth(nextDate, -1);\n }\n /**\n * This method is used to add tabindex, keybord and mouse events for days\n */\n private loadDays() {\n setTimeout(() => {\n $('[bsdatepickerdaydecorator]').not('.is-other-month').attr('tabindex', '0');\n // if (this.clicked === false) {\n // this.next = this.getMonth(this.activeDate, 1);\n // this.prev = this.getMonth(this.activeDate, -1);\n // }\n this.addKeyBoardEventsForDays();\n this.addDatepickerMouseEvents();\n });\n }\n\n /**\n * This method sets keyboard events for days\n */\n private addKeyBoardEventsForDays() {\n const datePickerBody = $('.bs-datepicker-body');\n datePickerBody.keydown((event) => {\n let newdate;\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(+7, 'days').toDate();\n this.setActiveDateFocus(newdate);\n } else if (event.ctrlKey && event.key === 'ArrowUp') {\n // clicking on table header month name to load list of months\n $('.bs-datepicker-head .current').first().click();\n this.loadMonths();\n this.setActiveMonthFocus(this.activeDate);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(-7, 'days').toDate();\n this.setActiveDateFocus(newdate);\n } else if (event.key === 'ArrowLeft') {\n newdate = moment(this.activeDate).add(-1, 'days').toDate();\n this.setActiveDateFocus(newdate);\n } else if (event.key === 'ArrowRight') {\n newdate = moment(this.activeDate).add(+1, 'days').toDate();\n this.setActiveDateFocus(newdate);\n } else if (event.key === 'PageUp') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(-1, 'month').toDate();\n this.setActiveDateFocus(newdate);\n } else if (event.key === 'PageDown') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(+1, 'month').toDate();\n this.setActiveDateFocus(newdate);\n } else if (event.key === 'Enter') {\n if ($(document.activeElement).hasClass('disabled')) {\n return;\n }\n $(document.activeElement).click();\n this.elementScope.hideDatepickerDropdown();\n const displayInputElem = this.elementScope.nativeElement.querySelector('.display-input') as HTMLElement;\n setTimeout(() => displayInputElem.focus());\n }\n });\n this.focusBlurDatePickerHeadButtons();\n }\n\n private focusBlurDatePickerHeadButtons() {\n const datePickerHeadButton = $('.bs-datepicker-head button');\n datePickerHeadButton.on('focus', function() { $(this).css('background-color', '#9AA0A3'); });\n datePickerHeadButton.on('blur', function() { $(this).css('background-color', ''); });\n }\n\n /**\n * This method is used to add tabindex, keybord and mouse events for months\n */\n private loadMonths() {\n setTimeout(() => {\n this.addKeyBoardEventsForMonths();\n this.addDatepickerMouseEvents();\n });\n }\n\n /**\n * This method sets keyboard events for months\n */\n private addKeyBoardEventsForMonths() {\n $('.bs-datepicker-body').keydown((event) => {\n let newdate;\n if ((event.ctrlKey && event.key === 'ArrowDown') || event.key === 'Enter') {\n if ($(document.activeElement).parent().hasClass('disabled')) {\n return;\n }\n $(document.activeElement).click();\n this.loadDays();\n const newDate = new Date(this.activeDate.getFullYear(), this.activeDate.getMonth(), 1);\n this.setActiveDateFocus(newDate);\n } else if (event.ctrlKey && event.key === 'ArrowUp') {\n // clicking on table header year to load list of years\n $('.bs-datepicker-head .current').first().click();\n this.loadYears();\n this.setActiveYearFocus(this.activeDate);\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(+3, 'month').toDate();\n this.setActiveMonthFocus(newdate);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(-3, 'month').toDate();\n this.setActiveMonthFocus(newdate);\n } else if (event.key === 'ArrowLeft') {\n newdate = moment(this.activeDate).add(-1, 'month').toDate();\n this.setActiveMonthFocus(newdate);\n } else if (event.key === 'ArrowRight') {\n newdate = moment(this.activeDate).add(+1, 'month').toDate();\n this.setActiveMonthFocus(newdate);\n }\n });\n this.focusBlurDatePickerHeadButtons();\n }\n\n /**\n * This method is used to add tabindex, keybord and mouse events for years\n */\n private loadYears() {\n setTimeout(() => {\n this.addKeyBoardEventsForYears();\n this.addDatepickerMouseEvents();\n });\n }\n\n /**\n * This method is used to set focus for active month\n */\n private setActiveMonthFocus(newDate, isMoouseEvent?: boolean) {\n this.setNextData(newDate);\n const newMonth = months[newDate.getMonth()];\n // check for keyboard event\n if (!isMoouseEvent) {\n if (newDate.getFullYear() < this.activeDate.getFullYear()) {\n this.goToOtherMonthOryear('previous', 'month');\n } else if (newDate.getFullYear() > this.activeDate.getFullYear()) {\n this.goToOtherMonthOryear('next', 'month');\n }\n }\n setTimeout(() => {\n $(`.bs-datepicker-body table.months span`).attr('tabindex', '-1');\n $(`.bs-datepicker-body table.months span:contains(${newMonth})`).attr('tabindex', '0');\n $(`.bs-datepicker-body table.months span:contains(${newMonth})`).focus();\n this.activeDate = newDate;\n });\n }\n\n /**\n * This method sets keyboard events for years\n */\n private addKeyBoardEventsForYears() {\n $('.bs-datepicker-body').keydown((event) => {\n let newdate;\n if ((event.ctrlKey && event.key === 'ArrowDown') || event.key === 'Enter') {\n if ($(document.activeElement).parent().hasClass('disabled')) {\n return;\n }\n $(document.activeElement).click();\n this.loadMonths();\n this.setActiveMonthFocus(this.activeDate);\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(+4, 'year').toDate();\n this.setActiveYearFocus(newdate);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(-4, 'year').toDate();\n this.setActiveYearFocus(newdate);\n } else if (event.key === 'ArrowLeft') {\n newdate = moment(this.activeDate).add(-1, 'year').toDate();\n this.setActiveYearFocus(newdate);\n } else if (event.key === 'ArrowRight') {\n newdate = moment(this.activeDate).add(+1, 'year').toDate();\n this.setActiveYearFocus(newdate);\n }\n });\n this.focusBlurDatePickerHeadButtons();\n }\n\n /**\n * This method is used to set focus for active year\n */\n private setActiveYearFocus(newDate, isMouseEvent?: boolean) {\n const newYear = newDate.getFullYear();\n const datePickerYears = $('.bs-datepicker-body table.years span');\n const startYear = datePickerYears.first().text();\n const endYear = datePickerYears.last().text();\n // check for keyboard event\n if (!isMouseEvent) {\n if (newDate.getFullYear() < parseInt(startYear)) {\n this.goToOtherMonthOryear('previous', 'year');\n } else if (newDate.getFullYear() > parseInt(endYear)) {\n this.goToOtherMonthOryear('next', 'year');\n }\n }\n setTimeout(() => {\n $(`.bs-datepicker-body table.years span`).attr('tabindex', '-1');\n $(`.bs-datepicker-body table.years span:contains(${newYear})`).attr('tabindex', '0');\n $(`.bs-datepicker-body table.years span:contains(${newYear})`).focus();\n this.activeDate = newDate;\n });\n }\n\n /**\n * This method sets focus for timepicker first input field(hours field) while opening time picker\n * @param scope - scope of the time picker widget\n */\n protected focusTimePickerPopover(scope) {\n this.elementScope = scope;\n // setTimeout is used so that by then time input has the updated value. focus is setting back to the input field\n this.elementScope.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n $('timepicker .form-group').first().find('> input.form-control').focus();\n });\n });\n\n\n }\n /**\n * This function sets the keyboard events to Timepicker popup\n */\n protected bindTimePickerKeyboardEvents() {\n setTimeout(() => {\n const $timepickerPopup = $('body').find('> bs-dropdown-container timepicker');\n $timepickerPopup.attr('tabindex', 0);\n this.addEventsOnTimePicker($timepickerPopup);\n });\n }\n\n protected focusOnInputEl() {\n if ($(this.nativeElement).closest('.caption-floating').length > 0) {\n setTimeout(() => {\n $(this.nativeElement).find('.app-textbox').focus();\n }, 100);\n }\n }\n\n /**\n * This function checks whether the given date is valid or not\n * @returns boolean value, true if date is valid else returns false\n */\n private isValidDate(date) {\n return date && date instanceof Date && !isNaN(date.getTime());\n }\n\n /**\n * This function checks whether the given time is valid or not\n */\n private timeFormatValidation() {\n const enteredDate = $(this.nativeElement).find('input').val();\n const newVal = getNativeDateObject(enteredDate, {meridians: this.meridians, pattern: this.datepattern});\n if (!this.formatValidation(newVal, enteredDate)) {\n return;\n }\n this.invalidDateTimeFormat = false;\n this.invokeOnChange(this.datavalue, undefined, false);\n }\n\n private updateTimeValue(el, value, fieldName) {\n let minEl = el.find('input[aria-label=\"minutes\"]');\n let secEl = el.find('input[aria-label=\"seconds\"]');\n minEl.value = secEl.value = '00';\n if (value.length < 2) {\n setTimeout(() => {\n fieldName === 'minutes' ? this.bsTimePicker.updateMinutes(minEl) : this.bsTimePicker.updateSeconds(secEl);\n }, 500);\n } else {\n fieldName === 'minutes' ? this.bsTimePicker.updateMinutes(minEl) : this.bsTimePicker.updateSeconds(secEl);\n }\n }\n\n /**\n * This function sets the events to given element\n * @param $el - element on which the event is added\n */\n private addEventsOnTimePicker($el: JQuery) {\n const inputFields = $el.find('.bs-timepicker-field');\n // WMS-19382: update minutes and seconds to 0 when we enter hour value\n inputFields.first().on('keyup', evt => {\n const hourValue = (evt.target as any).value;\n forEach(inputFields, (field, index) => {\n // @ts-ignore\n if (evt.target !== field && field.value === '' && hourValue.length) {\n const fieldName = index === 1 ? 'minutes' : 'seconds';\n this.updateTimeValue($el, hourValue, fieldName);\n }\n });\n });\n this.removeKeyupListener = () => {\n inputFields.first().off('keyup');\n };\n $el.on('keydown', event => {\n const $target = $(event.target);\n const $parent = $target.parent();\n const elementScope = this.elementScope;\n\n let stopPropogation, preventDefault;\n\n if (event.key === 'Escape') {\n elementScope.hideTimepickerDropdown();\n }\n\n if ($target.hasClass('bs-timepicker-field')) {\n if ($parent.is(':first-child')) {\n if ((event.shiftKey && event.key === 'Tab') || event.key === 'Enter' || event.key === 'Escape') {\n elementScope.setIsTimeOpen(false);\n this.focus();\n stopPropogation = true;\n preventDefault = true;\n }\n } else if ($parent.is(':last-child') || ($parent.next().next().find('button.disabled').length)) {\n if (event.key === 'Tab' || event.key === 'Escape' || event.key === 'Enter') {\n elementScope.setIsTimeOpen(false);\n this.focus();\n stopPropogation = true;\n preventDefault = true;\n }\n } else {\n if (event.key === 'Enter' || event.key === 'Escape') {\n elementScope.setIsTimeOpen(false);\n this.focus();\n stopPropogation = true;\n preventDefault = true;\n }\n }\n if (stopPropogation) {\n event.stopPropagation();\n }\n if (preventDefault) {\n event.preventDefault();\n }\n if (elementScope.mintime && elementScope.maxtime && !this.isValidDate(elementScope.bsTimeValue)) {\n if (event.key === 'ArrowDown') {\n elementScope.bsTimeValue = elementScope.maxTime;\n } else if (event.key === 'ArrowUp') {\n elementScope.bsTimeValue = elementScope.minTime;\n }\n }\n if (event.key === 'Tab') {\n this.invalidDateTimeFormat = false;\n this.invokeOnChange(this.datavalue, undefined, false);\n const pattern = this.datepattern || this.timepattern;\n if (getFormattedDate(elementScope.datePipe, elementScope.bsTimeValue, pattern, this.timeZone, null, null, this) === elementScope.displayValue) {\n $(this.nativeElement).find('.display-input').val(elementScope.displayValue);\n }\n }\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n this.timeFormatValidation();\n }\n } else if ($target.hasClass('btn-default')) {\n if (event.key === 'Tab' || event.key === 'Escape') {\n elementScope.setIsTimeOpen(false);\n this.focus();\n }\n }\n });\n $el.find('a').on('click', evt => {\n const elementScope = this.elementScope;\n const $target = $(evt.target);\n if (elementScope.mintime && elementScope.maxtime && !this.isValidDate(elementScope.bsTimeValue)) {\n if ($target.find('span').hasClass('bs-chevron-down')) {\n elementScope.bsTimeValue = elementScope.maxTime;\n } else if ($target.find('span').hasClass('bs-chevron-up')) {\n elementScope.bsTimeValue = elementScope.minTime;\n }\n }\n this.timeFormatValidation();\n });\n }\n\n public updateFormat(pattern) {\n if (pattern === 'datepattern') {\n this._dateOptions.dateInputFormat = this.datepattern;\n this.showseconds = includes(this.datepattern, 's');\n this.ismeridian = includes(this.datepattern, 'h');\n } else if (pattern === 'timepattern') {\n this.showseconds = includes(this.timepattern, 's');\n this.ismeridian = includes(this.timepattern, 'h');\n }\n }\n\n getMobileInput() {\n return this.nativeElement.querySelector('.mobile-input') as HTMLElement;\n }\n\n onDateTimeInputBlur() {\n // removing the opacity on blur of the mobile widget\n const displayInputElem = this.getMobileInput();\n if (displayInputElem && !hasCordova()) {\n const children = this.nativeElement.children;\n for (let i = 0; i < children.length; i++) {\n children[i].classList.remove('add-opacity');\n }\n displayInputElem.classList.remove('remove-opacity');\n }\n }\n\n onDateTimeInputFocus(skipFocus: boolean = false): void {\n if (!this.loadNativeDateInput) {\n return;\n }\n const displayInputElem = this.getMobileInput();\n // toggling the classes to show and hide the native widget using opacity\n if (skipFocus && !hasCordova()) {\n const children = this.nativeElement.children;\n for (let i = 0; i < children.length; i++) {\n children[i].classList.add('add-opacity');\n }\n displayInputElem.classList.add('remove-opacity');\n return;\n }\n\n if (displayInputElem && this._triggeredByUser) {\n displayInputElem.focus();\n displayInputElem.click();\n }\n }\n\n getCordovaPluginDatePickerApi() {\n if (isIos()) {\n return get(window, 'cordova.wavemaker.datePicker.selectDate');\n }\n }\n\n /**\n * This method sets the mouse events to Datepicker popup. These events are required when we navigate date picker through mouse.\n */\n private addDatepickerMouseEvents() {\n $(\".bs-datepicker-head .previous span\").attr(\"aria-hidden\", 'true');\n $(\".bs-datepicker-head .next span\").attr(\"aria-hidden\", 'true');\n\n $(\".bs-datepicker-head\").on(\"click\", \".previous\", (event) => {\n this.next = this.getMonth(this.activeDate, 0);\n this.prev = this.getMonth(this.activeDate, -2);\n this.clicked = true;\n // check for original mouse click\n if (event.originalEvent) {\n this.setFocusForDate(-1);\n }\n var prevMon = this.getMonth(this.activeDate, -1);\n\n setTimeout(() => {\n $(\".bs-datepicker-head .previous span\").attr(\"aria-hidden\", 'true');\n $(\".bs-datepicker-head .next span\").attr(\"aria-hidden\", 'true');\n $(\".bs-datepicker-head .next\").attr('aria-label', `Next Month, ${this.next.fullMonth} ${this.next.date.getFullYear()}`);\n $(\".bs-datepicker-head .previous\").attr('aria-label', `Previous Month, ${this.prev.fullMonth} ${this.prev.date.getFullYear()}`);\n $('.bs-datepicker-head .current').first().append(`<h2 aria-hidden=\"false\" aria-atomic=\"true\" aria-live='polite' class=\"sr-only\">Changed to Previous Month, ${prevMon.fullMonth} and year ${prevMon.date.getFullYear()}</h2>`);\n $('.bs-datepicker-head').on('focus', '.current', function () {\n $('.bs-datepicker-head .current').find('h2').remove();\n })\n $(`.bs-datepicker-head .previous`).focus();\n\n });\n\n });\n $(\".bs-datepicker-head\").on(\"click\", \".next\", (event) => {\n this.next = this.getMonth(this.activeDate, 2);\n this.prev = this.getMonth(this.activeDate, 0);\n this.clicked = true;\n // check for original mouse click\n if (event.originalEvent) {\n this.setFocusForDate(1);\n }\n var nextMon = this.getMonth(this.activeDate, 1);\n setTimeout(() => {\n $(\".bs-datepicker-head .previous span\").attr(\"aria-hidden\", 'true');\n $(\".bs-datepicker-head .next span\").attr(\"aria-hidden\", 'true');\n $(\".bs-datepicker-head .next\").attr('aria-label', `Next Month, ${this.next.fullMonth} ${this.next.date.getFullYear()}`);\n $(\".bs-datepicker-head .previous\").attr('aria-label', `Previous Month, ${this.prev.fullMonth} ${this.prev.date.getFullYear()}`);\n $('.bs-datepicker-head .current').first().append(`<h2 aria-hidden=\"false\" aria-atomic=\"true\" aria-live='polite' class=\"sr-only\">Changed to Next Month, ${nextMon.fullMonth} and year ${nextMon.date.getFullYear()}</h2>`);\n $('.bs-datepicker-head').on('focus', '.current', function () {\n $('.bs-datepicker-head .current').find('h2').remove();\n })\n $(`.bs-datepicker-head .next`).focus();\n });\n\n });\n $(\".bs-datepicker-head\").on(\"click\", \".current\", (event) => {\n // check for original mouse click\n if (event.originalEvent) {\n this.setFocusForCurrentMonthOryear();\n }\n });\n $('.bs-datepicker-body').on(\"click\", \".bs-datepicker-action-buttons\", (event) => {\n event.stopPropagation();\n // check for original mouse click\n if (event.originalEvent) {\n this.setFocusForMonthOrDay();\n }\n });\n // if(!this.clicked) {\n $(\".bs-datepicker-head .next\").attr('aria-label', `Next Month, ${this.next.fullMonth} ${this.next.date.getFullYear()}`);\n $(\".bs-datepicker-head .previous\").attr('aria-label', `Previous Month, ${this.prev.fullMonth} ${this.prev.date.getFullYear()}`);\n // }\n }\n\n blurDateInput(isPickerOpen) {\n const displayInputElem = this.nativeElement.querySelector('.display-input') as HTMLElement;\n if (isPickerOpen) {\n setTimeout(() => displayInputElem.blur());\n }\n }\n\n onPropertyChange(key, nv, ov?) {\n\n if (key === 'tabindex') {\n return;\n }\n if (key === 'required') {\n this._onChange(this.datavalue);\n return;\n }\n if (key === 'datepattern') {\n this.updateFormat(key);\n } else if (key === 'showweeks') {\n this._dateOptions.showWeekNumbers = nv;\n } else if (key === 'mindate') {\n this._dateOptions.minDate = (nv === CURRENT_DATE) ? this.mindate = new Date() : getDateObj(nv);\n this.minDateMaxDateValidationOnInput(this.datavalue);\n } else if (key === 'maxdate') {\n this._dateOptions.maxDate = (nv === CURRENT_DATE) ? this.maxdate = new Date() : getDateObj(nv);\n this.minDateMaxDateValidationOnInput(this.datavalue);\n } else if (key === 'excludedates' || key === 'excludedays') {\n if (this.excludedays) {\n this.excludedDaysToDisable = split(this.excludedays, ',').map((day) => {\n return +day;\n });\n }\n if (this.excludedates) {\n this.excludedDatesToDisable = this.excludedates;\n if (isString(this.excludedates)) {\n // @ts-ignore\n this.excludedDatesToDisable = split(this.excludedates, ',');\n }\n this.excludedDatesToDisable = this.excludedDatesToDisable.map(d => getDateObj(d));\n }\n this.minDateMaxDateValidationOnInput(this.datavalue);\n } else if (key === 'selectfromothermonth') {\n this._dateOptions.selectFromOtherMonth = nv;\n\n } else if (key === 'todaybutton') {\n this._dateOptions.showTodayButton = nv;\n } else if (key === 'clearbutton') {\n this._dateOptions.showClearButton = nv;\n } else if (key === 'todaybuttonlabel') {\n this._dateOptions.todayButtonLabel = this.i18nService.getLocalizedMessage(nv) || nv;\n } else if (key === 'clearbuttonlabel') {\n this._dateOptions.clearButtonLabel = this.i18nService.getLocalizedMessage(nv) || nv;\n } else if (key === 'showcustompicker') {\n this.loadNativeDateInput = isMobile() && !this.showcustompicker;\n } else if (key === 'adaptiveposition') {\n this._dateOptions.adaptivePosition = nv;\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n this.containerTarget = getContainerTargetClass(this.nativeElement);\n this.isReadOnly = this.dataentrymode != 'undefined' && !this.isDataEntryModeEnabledOnInput(this.dataentrymode);\n\n // this mobileinput width varies in ios hence setting width here.\n const mobileInput = this.getMobileInput();\n if (mobileInput) {\n setTimeout(() => {\n mobileInput.style.width = '100%';\n mobileInput.style.height = '100%';\n });\n }\n }\n\n ngOnDestroy() {\n if (this.dateOnShowSubscription) {\n this.dateOnShowSubscription.unsubscribe();\n }\n if(this.cancelLocaleChangeSubscription) {\n this.cancelLocaleChangeSubscription();\n }\n\n super.ngOnDestroy();\n }\n\n public ngOnDetach() {\n this.datetimepickerComponent?.hideModal();\n }\n\n setTimezone(locale) {\n this.i18nService.setTimezone(locale, this);\n }\n}\n","import { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget } from '@wm/components/base';\nimport { FormWidgetType, isMobileApp } from '@wm/core';\n\nexport const dateProps = new Map(\n [\n ['autofocus', PROP_BOOLEAN],\n ['class', PROP_STRING],\n ['dataentrymode', { value: 'default', ...PROP_STRING }],\n ['datavaluesource', PROP_ANY],\n ['datavalue', PROP_STRING],\n ['datepattern', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['excludedays', PROP_STRING],\n ['excludedates', PROP_STRING],\n ['hint', PROP_STRING],\n ['maxdate', PROP_STRING],\n ['mindate', PROP_STRING],\n ['name', PROP_STRING],\n ['outputformat', { value: 'yyyy-MM-dd', ...PROP_STRING }],\n ['placeholder', { value: 'Select Date', ...PROP_STRING }],\n ['readonly', PROP_BOOLEAN],\n ['required', PROP_BOOLEAN],\n ['shortcutkey', PROP_STRING],\n ['show', { value: true, ...PROP_BOOLEAN }],\n ['showdropdownon', { value: 'default', ...PROP_STRING }],\n ['showbuttonbar', { value: true, ...PROP_BOOLEAN }], // TODO not addressed\n ['showcustompicker', { value: false, ...PROP_BOOLEAN }],\n ['showindevice', { displayType: 'inline-block', value: 'all', ...PROP_STRING }],\n ['showweeks', { value: false, ...PROP_BOOLEAN }],\n ['tabindex', { value: 0, ...PROP_NUMBER }],\n ['selectfromothermonth', { value: true, ...PROP_BOOLEAN }],\n ['todaybutton', { value: true, ...PROP_BOOLEAN }],\n ['clearbutton', { value: true, ...PROP_BOOLEAN }],\n ['adaptiveposition', {value: true, ...PROP_BOOLEAN}],\n ['todaybuttonlabel', { value: 'LABEL_TODAY_DATE', ...PROP_STRING }],\n ['clearbuttonlabel', { value: 'LABEL_CLEAR_DATE', ...PROP_STRING }],\n ['showdateformatasplaceholder', PROP_BOOLEAN],\n\n ]\n);\n\nexport const registerProps = () => {\n register(\n 'wm-date',\n dateProps\n );\n registerFormWidget(\n FormWidgetType.DATE,\n new Map(dateProps)\n );\n};\n","import IMask from \"imask\";\ndeclare const moment;\n\nexport function validateTheMaskedDate (format, locale) {\n if(format == 'timestamp') {\n return false;\n }\n let modifiedFormat = format.toUpperCase().replace(/E/g, 'd');\n if((modifiedFormat.split('D').length - 1) === 1) {\n modifiedFormat = modifiedFormat.replace('D', 'DD');\n }\n if((modifiedFormat.split('M').length - 1) === 1 ) {\n modifiedFormat = modifiedFormat.replace('M', 'MM');\n }\n const parseFn= str => {\n return moment(str, modifiedFormat).toDate();\n };\n const formatFn = date => {\n return moment(date, modifiedFormat).format(modifiedFormat);\n };\n return {\n mask: Date,\n pattern: modifiedFormat,\n format: formatFn,\n parse: parseFn,\n\n blocks: {\n YYYY: {\n mask: IMask.MaskedRange,\n from: 1900,\n to: 9999,\n placeholderChar:'Y',\n maxLength: 4,\n },\n YYY: {\n mask: IMask.MaskedRange,\n from: 900,\n to: 999,\n placeholderChar:'Y',\n maxLength: 3,\n },\n YY: {\n mask: IMask.MaskedRange,\n from: 0,\n to: 99,\n placeholderChar:'Y',\n maxLength: 2,\n },\n Y: {\n mask: IMask.MaskedRange,\n from: 1900,\n to: 9999,\n placeholderChar:'Y',\n maxLength: 4,\n },\n M: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 12,\n placeholderChar:'M',\n maxLength: 2,\n },\n MM: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 12,\n placeholderChar:'M',\n maxLength: 2,\n },\n MMM: {\n mask: IMask.MaskedEnum,\n enum: Array.from({ length: 12 }, (_, i) =>\n new Date(0, i).toLocaleString(locale, { month: 'short' })\n ),\n placeholderChar:'M',\n maxLength: 3,\n },\n MMMM: {\n mask: IMask.MaskedEnum,\n enum: Array.from({ length: 12 }, (_, i) =>\n new Date(0, i).toLocaleString(locale, { month: 'long' })\n ),\n placeholderChar: \"M\",\n maxLength: 4\n },\n DD: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 31,\n placeholderChar:'D',\n maxLength: 2,\n },\n D: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 31,\n placeholderChar:'D',\n maxLength: 2,\n },\n ddd: {\n mask: IMask.MaskedEnum,\n enum: Array.from({ length: 7 }, (_, i) =>\n new Date(0, 0, i + 1).toLocaleString(locale, { weekday: 'short' })\n ),\n placeholderChar:'E',\n maxLength: 3,\n },\n dddd: {\n mask: IMask.MaskedEnum,\n enum: Array.from({ length: 7 }, (_, i) =>\n new Date(0, 0, i + 1).toLocaleString(locale, { weekday: 'long' })\n ),\n placeholderChar:'E',\n minLength: 6,\n },\n },\n autofix: true,\n lazy: false,\n overwrite: true,\n skipInvalid: true\n }\n}\n"," <input class=\"form-control app-textbox app-dateinput display-input\"\n focus-target\n type=\"text\"\n [name]=\"name\"\n #dateInput\n [imask]=\"mask\"\n [unmask]=\"true\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [value]=\"displayValue\"\n (click)=\"toggleDpDropdown($event, true)\"\n (focus)=\"onDateTimeInputFocus(); invokeOnFocus($event); updateIMask()\"\n (blur)=\"onInputBlur($event)\"\n [disabled]=\"disabled || readonly\"\n [autofocus]=\"autofocus\"\n [required]=\"required\"\n [readOnly]=\"isReadOnly\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-label]=\"hint\"\n (change)=\"onDisplayDateChange($event)\"\n (keydown)=\"this._triggeredByUser = true; onDisplayKeydown($event);\">\n\n <span class=\"input-group-btn\">\n <button type=\"button\"\n class=\"btn btn-default btn-time\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [disabled]=\"disabled || readonly\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : 'Choose date by pressing enter'\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n (click)=\"toggleDpDropdown($event, false)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-calendar\"></i>\n </button>\n </span>\n <div style=\"width: 0;display: inline-block;\">\n <input class=\"model-holder\"\n aria-label=\"datepicker dropdownmenu\"\n aria-controls=\"date\"\n [tabindex]=\"-1\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [container]=\"containerTarget || '.wm-app'\"\n [bsConfig]=\"_dateOptions\"\n [isOpen]=\"isOpen\"\n #datepicker=\"bsDatepicker\"\n bsDatepicker\n [daysDisabled]=\"excludedDaysToDisable\"\n [datesDisabled]=\"excludedDatesToDisable\"\n placement=\"bottom right\"\n [isDisabled]=\"disabled || readonly\"\n [bsValue]=\"bsDataValue\"\n (onShown)=\"onDatePickerOpen()\"\n (onHidden)=\"hideDatepickerDropdown()\"\n (bsValueChange)=\"onDateChange($event)\">\n</div>\n\n<ng-template [ngIf]=\"loadNativeDateInput\">\n <wm-datetimepicker\n dateTimePicker\n mode=\"DATE\"\n [config]=\"_dateOptions\"\n [placement]=\"modal\"\n [excludedDaysToDisable]=\"excludedDaysToDisable\"\n [excludedDatesToDisable]=\"excludedDatesToDisable\"\n [displayFormat]=\"dateInputFormat\"\n [value]=\"bsDataValue\"\n (change)=\"onDateChange($event)\">\n </wm-datetimepicker>\n <div class=\"mobile-input mobile-datepicker-container\"\n [tabindex]=\"tabindex || 0\"\n (click)=\"!(disabled || readonly) && showDatePickerModal(bsDataValue)\"\n (focus)=\"onDateTimeInputFocus(true); invokeOnFocus($event);\"\n (blur)=\"onDateTimeInputBlur(); invokeOnTouched($event)\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : hint || 'Choose Date'\"\n role=\"button\">\n </div>\n</ng-template>\n","import {ChangeDetectorRef, Component, Inject, Injector, Optional, ViewChild} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';\n\nimport { BsDatepickerDirective } from 'ngx-bootstrap/datepicker';\n\n\nimport {\n adjustContainerPosition,\n addEventListenerOnElement,\n AppDefaults,\n EVENT_LIFE,\n FormWidgetType,\n getDateObj,\n getDisplayDateTimeFormat,\n getFormattedDate,\n adjustContainerRightEdges,\n getMomentLocaleObject\n} from '@wm/core';\nimport { IWidgetConfig, provideAs, provideAsWidgetRef, setFocusTrap, styler } from '@wm/components/base';\nimport { BaseDateTimeComponent } from './../base-date-time.component';\nimport { registerProps } from './date.props';\nimport { validateTheMaskedDate } from './imaskUtil';\nimport { IMaskDirective } from 'angular-imask';\nimport {includes, isNaN, parseInt} from \"lodash-es\";\n\ndeclare const _, $;\n\nconst CURRENT_DATE = 'CURRENT_DATE';\nconst DEFAULT_CLS = 'app-date input-group';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-date',\n hostClass: DEFAULT_CLS\n};\n\n@Component({\n selector: '[wmDate]',\n templateUrl: './date.component.html',\n providers: [\n provideAs(DateComponent, NG_VALUE_ACCESSOR, true),\n provideAs(DateComponent, NG_VALIDATORS, true),\n provideAsWidgetRef(DateComponent)\n ]\n})\nexport class DateComponent extends BaseDateTimeComponent {\n static initializeProps = registerProps();\n\n public bsDataValue;\n public showdropdownon: string;\n private dateContainerCls: string;\n public isOpen: boolean = false;\n private isEnterPressedOnDateInput = false;\n private _bsDefaultLoadCheck: boolean;\n public hint: string;\n\n private deregisterEventListener;\n private isCurrentDate;\n private focusTrap;\n private showdateformatasplaceholder = false;\n mask;\n private maskDateInputFormat;\n\n get timestamp() {\n return this.bsDataValue ? this.bsDataValue.valueOf() : undefined;\n }\n\n get dateInputFormat() {\n return this._dateOptions.dateInputFormat || 'yyyy-MM-dd';\n }\n\n get displayValue() {\n if(this.showdateformatasplaceholder && this.imask?.maskRef && this.maskDateInputFormat) {\n return getFormattedDate(this.datePipe, this.bsDataValue, this.maskDateInputFormat, this.timeZone, null, this.isCurrentDate, this) || '';\n }\n return getFormattedDate(this.datePipe, this.bsDataValue, this.dateInputFormat, this.timeZone, null, this.isCurrentDate, this) || '';\n }\n\n get nativeDisplayValue() {\n return getFormattedDate(this.datePipe, this.bsDataValue, 'yyyy-MM-dd', this.timeZone, null, this.isCurrentDate, this) || '';\n }\n\n // @ts-ignore\n get datavalue() {\n return getFormattedDate(this.datePipe, this.bsDataValue, this.outputformat, this.timeZone, null, this.isCurrentDate, this) || '';\n }\n\n // Todo[Shubham]: needs to be redefined\n // sets the dataValue and computes the display model values\n // @ts-ignore\n set datavalue(newVal) {\n if (newVal === CURRENT_DATE) {\n setTimeout(() => {\n this.bsDataValue = this.timeZone ? getMomentLocaleObject(this.timeZone) : new Date();\n }, 50);\n this.isCurrentDate = true;\n } else {\n this.bsDataValue = newVal ? getDateObj(newVal, {isNativePicker: this.loadNativeDateInput}, this.timeZone) : undefined;\n this.isCurrentDate = false;\n }\n // update the previous datavalue.\n this.invokeOnChange(this.datavalue, undefined, true);\n this.cdRef.detectChanges();\n }\n\n @ViewChild(BsDatepickerDirective) protected bsDatePickerDirective;\n @ViewChild('dateInput', {read: IMaskDirective}) imask: IMaskDirective<any>;\n\n // TODO use BsLocaleService to set the current user's locale to see the localized labels\n constructor(\n inj: Injector,\n private cdRef: ChangeDetectorRef,\n private appDefaults: AppDefaults,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n super(inj, WIDGET_CONFIG, explicitContext);\n styler(this.nativeElement, this);\n\n this.dateContainerCls = `app-date-${this.widgetId}`;\n this._dateOptions.containerClass = `app-date ${this.dateContainerCls}`;\n this._dateOptions.showWeekNumbers = false;\n this._bsDefaultLoadCheck = true;\n this.datepattern = this.appDefaults.dateFormat || getDisplayDateTimeFormat(FormWidgetType.DATE);\n this.updateFormat('datepattern');\n }\n /**\n * This is an internal method triggered when the date input changes\n */\n onDisplayDateChange($event, isNativePicker: boolean = false) {\n this.updateIMask();\n if (this.isEnterPressedOnDateInput) {\n this.isEnterPressedOnDateInput = false;\n return;\n }\n const newVal = getDateObj($event.target.value, {pattern: this.datepattern, isNativePicker: isNativePicker});\n // date pattern validation\n // if invalid pattern is entered, device is showing an error.\n if (!this.formatValidation(newVal, $event.target.value, isNativePicker)) {\n return;\n }\n // min date and max date validation in mobile view.\n // if invalid dates are entered, device is showing an alert.\n if (isNativePicker && this.minDateMaxDateValidationOnInput(newVal, $event, this.displayValue, isNativePicker)) {\n return;\n }\n this.setDataValue(newVal);\n }\n\n // sets the dataValue and computes the display model values\n private setDataValue(newVal): void {\n this.invalidDateTimeFormat = false;\n // min date and max date validation in web.\n // if invalid dates are entered, device is showing validation message.\n this.minDateMaxDateValidationOnInput(newVal);\n if (getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, null, this.isCurrentDate, this) === this.displayValue) {\n $(this.nativeElement).find('.display-input').val(this.displayValue);\n }\n if (newVal) {\n this.bsDataValue = newVal;\n this.updateIMask();\n } else {\n this.bsDataValue = undefined;\n }\n this.invokeOnChange(this.datavalue, {}, true);\n }\n\n onDatePickerOpen() {\n this.isOpen = true;\n this.activeDate = this.bsDataValue ? this.bsDataValue : (this.timeZone ? getMomentLocaleObject(this.timeZone) : new Date());\n if (!this.bsDataValue) {\n this.hightlightToday(this.activeDate);\n }\n this.updateIMask();\n\n // We are using the two input tags(To maintain the modal and proxy modal) for the date control.\n // So actual bootstrap input target width we made it to 0, so bootstrap calculating the calendar container top position improperly.\n // To fix the container top position set the width 1px;\n this.$element.find('.model-holder').width('1px');\n const dpContainerEl = $('bs-datepicker-container');\n dpContainerEl.attr('aria-label', 'Use Arrow keys to navigate dates, Choose Date from datepicker');\n $('.bs-calendar-container').removeAttr('role');\n const datePickerContainer = $('.bs-datepicker-container')[0];\n this.focusTrap = setFocusTrap(datePickerContainer, true);\n this.focusTrap.activate();\n this.addDatepickerKeyboardEvents(this, false);\n adjustContainerPosition($('bs-datepicker-container'), this.nativeElement, this.bsDatePickerDirective._datepicker);\n adjustContainerRightEdges($('bs-datepicker-container'), this.nativeElement, this.bsDatePickerDirective._datepicker);\n\n if(this.timeZone) {\n const todayBtn = document.querySelector(`.${this.dateContainerCls} .bs-datepicker-buttons .btn-today-wrapper button`) as HTMLElement;\n const setTodayTZHandler = (event) => {\n const todayTZ = getMomentLocaleObject(this.timeZone);\n if(new Date(this.bsDataValue).toDateString() !== new Date(todayTZ).toDateString()) {\n this.bsDataValue = todayTZ;\n }\n todayBtn.removeEventListener('click', setTodayTZHandler);\n };\n todayBtn.addEventListener('click', setTodayTZHandler)\n }\n }\n onInputBlur($event) {\n this.updateIMask();\n if (!$($event.relatedTarget).hasClass('current-date')) {\n this.invokeOnTouched();\n this.invokeEventCallback('blur', { $event });\n }\n }\n\n updateIMask() {\n this.imask?.maskRef?.updateValue();\n }\n\n public hideDatepickerDropdown() {\n this.invokeOnTouched();\n this.isOpen = false;\n this.focusTrap?.deactivate();\n this.isEnterPressedOnDateInput = false;\n if (this.deregisterEventListener) {\n this.deregisterEventListener();\n }\n this.blurDateInput(this.isOpen);\n }\n\n // change and blur events are added from the template\n protected handleEvent(node: HTMLElement, eventName: string, callback: Function, locals: any) {\n if (!includes(['blur', 'focus', 'change', 'click'], eventName)) {\n super.handleEvent(node, eventName, callback, locals);\n }\n }\n\n /**\n * This is an internal method used to toggle the dropdown of the date widget\n */\n public toggleDpDropdown($event, skipFocus: boolean = false) {\n if (this.loadNativeDateInput) {\n // Fixes click event getting triggred twice in Mobile devices.\n if (!skipFocus) {\n this.onDateTimeInputFocus();\n }\n }\n if ($event.type === 'click') {\n this.invokeEventCallback('click', { $event: $event });\n // this.focusOnInputEl();\n }\n if ($event.target && $($event.target).is('input') && !(this.isDropDownDisplayEnabledOnInput(this.showdropdownon))) {\n $event.stopPropagation();\n return;\n }\n this.bsDatePickerDirective.toggle();\n this.addBodyClickListener(this.bsDatePickerDirective.isOpen);\n }\n\n private addBodyClickListener(skipListener) {\n if (!skipListener) {\n return;\n }\n const bodyElement = document.querySelector('body');\n setTimeout(() => {\n const bsDateContainerElement = bodyElement.querySelector(`.${this.dateContainerCls}`);\n this.deregisterEventListener = addEventListenerOnElement(bodyElement, bsDateContainerElement, this.nativeElement, 'click', this.isDropDownDisplayEnabledOnInput(this.showdropdownon), () => {\n this.isOpen = false;\n }, EVENT_LIFE.ONCE, true);\n }, 350);\n }\n\n /**\n * This is an internal method triggered when pressing key on the date input\n */\n public onDisplayKeydown(event) {\n if (this.isDropDownDisplayEnabledOnInput(this.showdropdownon)) {\n event.stopPropagation();\n if (event.key === 'Enter') {\n const newVal = getDateObj(event.target.value, {pattern: this.datepattern});\n event.preventDefault();\n const formattedDate = getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, null, this.isCurrentDate, this);\n const inputVal = event.target.value.trim();\n if (inputVal && this.datepattern === 'timestamp') {\n if (!isNaN(inputVal) && parseInt(inputVal) !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.invokeOnChange(this.datavalue, event, false);\n }\n } else if (inputVal && inputVal !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.invokeOnChange(this.datavalue, event, false);\n } else {\n this.invalidDateTimeFormat = false;\n this.isEnterPressedOnDateInput = true;\n this.bsDatePickerDirective.bsValue = event.target.value ? newVal : '';\n this.updateIMask();\n }\n this.toggleDpDropdown(event);\n } else {\n this.hideDatepickerDropdown();\n }\n } else {\n this.hideDatepickerDropdown();\n }\n }\n\n /**\n * This is an internal method triggered when the date selection changes\n */\n onDateChange(newVal): void {\n /**\n * Ngx-bootstrap upgrade : To avoid the page load datechange event;\n * TODO:\n * https://github.com/valor-software/ngx-bootstrap/issues/6016\n * For above issue, once we get the solution from Ngx-Bootstrap team, remove the _bsDefaultLoadCheck check and update accordingly.\n * */\n if (this._bsDefaultLoadCheck) {\n this._bsDefaultLoadCheck = false;\n return;\n }\n\n this.setDataValue(newVal);\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'showdateformatasplaceholder') {\n this.showdateformatasplaceholder = nv;\n this.imask?.destroyMask();\n if (this.showdateformatasplaceholder && this.datepattern !== 'timestamp') {\n this.mask = validateTheMaskedDate(this.datepattern, this.selectedLocale);\n this.maskDateInputFormat = this.dateInputFormat;\n this.maskDateInputFormat = (this.dateInputFormat.split('d').length - 1) === 1 ? this.maskDateInputFormat.replace('d', 'dd') : this.maskDateInputFormat;\n this.maskDateInputFormat = (this.dateInputFormat.split('M').length - 1) === 1 ? this.maskDateInputFormat.replace('M', 'MM') : this.maskDateInputFormat;\n this.updateIMask();\n }\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n}\n","import { FormWidgetType, isMobileApp } from '@wm/core';\nimport { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget } from '@wm/components/base';\n\nexport const dateTimeProps = new Map(\n [\n ['autofocus', PROP_BOOLEAN],\n ['class', PROP_STRING],\n ['dataentrymode', { value: 'default', ...PROP_STRING }],\n ['datavaluesource', PROP_ANY],\n ['datavalue', PROP_STRING],\n ['datepattern', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['excludedays', PROP_STRING],\n ['excludedates', PROP_STRING],\n ['hint', PROP_STRING],\n ['hourstep', { value: 1, ...PROP_NUMBER }],\n ['maxdate', PROP_STRING],\n ['mindate', PROP_STRING],\n ['minutestep', { value: 15, ...PROP_NUMBER }],\n ['name', PROP_STRING],\n ['outputformat', { value: 'timestamp', ...PROP_STRING }],\n ['placeholder', { value: 'Select date time', ...PROP_STRING }],\n ['readonly', PROP_BOOLEAN],\n ['required', PROP_BOOLEAN],\n ['secondsstep', { value: 1, ...PROP_NUMBER }],\n ['shortcutkey', PROP_STRING],\n ['show', { value: true, ...PROP_BOOLEAN }],\n ['showdropdownon', { value: 'default', ...PROP_STRING }],\n ['showbuttonbar', PROP_BOOLEAN],\n ['showcustompicker', { value: false, ...PROP_BOOLEAN }],\n ['showindevice', { displayType: 'inline-block', value: 'all', ...PROP_STRING }],\n ['showweeks', PROP_BOOLEAN],\n ['tabindex', { value: 0, ...PROP_NUMBER }],\n ['timestamp', PROP_STRING],\n ['selectfromothermonth', { value: true, ...PROP_BOOLEAN }],\n ['todaybutton', { value: true, ...PROP_BOOLEAN }],\n ['clearbutton', { value: true, ...PROP_BOOLEAN }],\n ['adaptiveposition', {value: true, ...PROP_BOOLEAN}],\n ['todaybuttonlabel', { value: 'LABEL_TODAY_DATE', ...PROP_STRING }],\n ['clearbuttonlabel', { value: 'LABEL_CLEAR_DATE', ...PROP_STRING }]\n\n ]\n);\n\nexport const registerProps = () => {\n register(\n 'wm-datetime',\n dateTimeProps\n );\n registerFormWidget(\n FormWidgetType.DATETIME,\n new Map(dateTimeProps)\n );\n registerFormWidget(\n FormWidgetType.TIMESTAMP,\n new Map(dateTimeProps)\n );\n};\n"," <div dropdown\n [isOpen]=\"isTimeOpen\"\n autoClose=\"false\"\n [container]=\"'body'\"\n (onShown)=\"onTimepickerOpen()\"\n style=\"display: inherit;\">\n <input class=\"form-control app-textbox display-input\"\n [attr.aria-label]=\"hint\"\n focus-target\n [name]=\"name\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n type=\"text\"\n [value]=\"displayValue\"\n (click)=\"toggleDpDropdown($event, true)\"\n (focus)=\"onDateTimeInputFocus(); invokeOnFocus($event);\"\n (blur)=\"onInputBlur($event)\"\n (change)=\"onDateChange($event)\"\n [autofocus]=\"autofocus\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n [required]=\"required\"\n [readOnly]=\"isReadOnly\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n (keydown)=\"this._triggeredByUser = true; onDisplayKeydown($event)\">\n\n <span class=\"input-group-btn\">\n <button type=\"button\"\n class=\"btn btn-default btn-date\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : 'Choose date by pressing enter'\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n (click)=\"toggleDpDropdown($event, false)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-calendar\"></i>\n </button>\n <button type=\"button\"\n class=\"btn btn-default btn-time\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n aria-label=\"Select time\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n (click)=\"toggleTimePicker(!isTimeOpen, $event)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-time\"></i>\n </button>\n </span>\n <div style=\"width: 0;display: inline-block;\">\n <input class=\"model-holder\"\n aria-label=\"datepicker dropdownmenu\"\n aria-controls=\"date\"\n focus-target\n [tabindex]=\"-1\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [container]=\"containerTarget || '.wm-app'\"\n [bsConfig]=\"_dateOptions\"\n [isOpen]=\"isDateOpen\"\n placement=\"bottom right\"\n (onShown)=\"onDatePickerOpen()\"\n (onHidden)=\"hideDatepickerDropdown()\"\n [daysDisabled]=\"excludedDaysToDisable\"\n [datesDisabled]=\"excludedDatesToDisable\"\n #datepicker=bsDatepicker\n bsDatepicker\n [isDisabled]=\"disabled || readonly || isCurrentDate\"\n [bsValue]=\"bsDateValue\"\n (bsValueChange)=\"onModelUpdate($event, 'date')\">\n </div>\n <div *dropdownMenu\n class=\"dropdown-menu\"\n aria-label=\"timepicker dropdown\"\n aria-controls=\"time\"\n (click)=\"preventTpClose($event)\">\n <timepicker class=\"model-holder\"\n [showMeridian]=\"ismeridian\"\n [readonlyInput]=\"disabled || readonly || isCurrentDate\"\n [(ngModel)]=\"bsTimeValue\"\n [ngModelOptions]=\"{standalone: true}\"\n [min]=\"minTime\"\n [max]=\"maxTime\"\n [hourStep]=\"hourstep\"\n [minuteStep]=\"minutestep\"\n [secondsStep]=\"secondsstep\"\n [mousewheel]=\"true\"\n [arrowkeys]=\"true\"\n (isValid)=\"isValid($event)\"\n [showSeconds]=\"showseconds\"\n (ngModelChange)=\"onModelUpdate($event, 'time')\"></timepicker>\n </div>\n </div>\n<ng-template [ngIf]=\"loadNativeDateInput\">\n <wm-datetimepicker\n dateTimePicker\n [config]=\"_dateOptions\"\n [placement]=\"modal\"\n [excludedDaysToDisable]=\"excludedDaysToDisable\"\n [excludedDatesToDisable]=\"excludedDatesToDisable\"\n [displayFormat]=\"dateInputFormat\"\n [value]=\"bsDateValue\"\n (change)=\"onModelUpdate($event, 'date')\">\n </wm-datetimepicker>\n <div class=\"mobile-input mobile-datepicker-container\"\n [tabindex]=\"tabindex || 0\"\n (click)=\"!(disabled || readonly) && showDatePickerModal(bsDateValue)\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : hint || 'Choose Date'\"\n (focus)=\"onDateTimeInputFocus(true); invokeOnFocus($event)\"\n (blur)=\"onDateTimeInputBlur(); invokeOnTouched($event)\"\n role=\"button\">\n </div>\n</ng-template>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Inject,\n Injector,\n NgZone,\n OnDestroy,\n Optional,\n ViewChild\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';\nimport { BsDatepickerDirective } from 'ngx-bootstrap/datepicker';\nimport { TimepickerConfig } from 'ngx-bootstrap/timepicker';\n\nimport {\n AbstractI18nService,\n addClass,\n addEventListenerOnElement,\n adjustContainerPosition,\n AppDefaults,\n EVENT_LIFE,\n FormWidgetType,\n getDateObj,\n getDisplayDateTimeFormat,\n getFormattedDate,\n getNativeDateObject,\n adjustContainerRightEdges,\n App,\n getMomentLocaleObject\n} from '@wm/core';\nimport { provideAsWidgetRef, provideAs, styler, setFocusTrap } from '@wm/components/base';\n\nimport {BaseDateTimeComponent, getTimepickerConfig} from './../base-date-time.component';\nimport { registerProps } from './date-time.props';\nimport {debounce, forEach, includes, isNaN, parseInt} from \"lodash-es\";\n\ndeclare const $;\ndeclare const moment;\n\nconst DEFAULT_CLS = 'app-datetime input-group';\nconst WIDGET_CONFIG = { widgetType: 'wm-datetime', hostClass: DEFAULT_CLS };\n\nconst CURRENT_DATE = 'CURRENT_DATE';\n\n@Component({\n selector: '[wmDateTime]',\n templateUrl: './date-time.component.html',\n providers: [\n provideAs(DatetimeComponent, NG_VALUE_ACCESSOR, true),\n provideAs(DatetimeComponent, NG_VALIDATORS, true),\n provideAsWidgetRef(DatetimeComponent),\n { provide: TimepickerConfig, deps: [AbstractI18nService], useFactory: getTimepickerConfig }\n ]\n})\nexport class DatetimeComponent extends BaseDateTimeComponent implements AfterViewInit, OnDestroy {\n static initializeProps = registerProps();\n /**\n * The below propeties prefixed with \"bs\" always holds the value that is selected from the datepicker.\n * The bsDateTimeValue = bsDateValue + bsTimeValue.\n */\n private bsDateTimeValue: any;\n public bsDateValue;\n private bsTimeValue;\n private proxyModel;\n private app: App;\n public hint: string;\n public showdropdownon: string;\n private deregisterDatepickerEventListener;\n private deregisterTimepickeEventListener;\n private isEnterPressedOnDateInput = false;\n private focusTrap;\n\n get timestamp() {\n return this.proxyModel ? this.proxyModel.valueOf() : undefined;\n }\n\n get dateInputFormat() {\n return this._dateOptions.dateInputFormat || 'yyyy-MM-ddTHH:mm:ss';\n }\n\n /**\n * The displayValue is the display value of the bsDateTimeValue after applying the datePattern on it.\n * @returns {any|string}\n */\n get displayValue(): any {\n return getFormattedDate(this.datePipe, this.proxyModel, this.dateInputFormat, this.timeZone, (this as any).key, this.isCurrentDate, this) || '';\n }\n\n get nativeDisplayValue() {\n return getFormattedDate(this.datePipe, this.proxyModel, 'yyyy-MM-ddTHH:mm:ss', this.timeZone, (this as any).key, this.isCurrentDate, this) || '';\n }\n\n @ViewChild(BsDatepickerDirective) bsDatePickerDirective;\n\n /**\n * This property checks if the timePicker is Open\n */\n public isTimeOpen = false;\n\n /**\n * This property checks if the datePicker is Open\n */\n public isDateOpen = false;\n\n /**\n * This timeinterval is used to run the timer when the time component value is set to CURRENT_TIME in properties panel.\n */\n private timeinterval: any;\n\n /**\n * This property is set to TRUE if the time component value is set to CURRENT_TIME; In this case the timer keeps changing the time value until the widget is available.\n */\n public isCurrentDate = false;\n\n private _debouncedOnChange: Function = debounce(this.invokeOnChange, 10);\n\n private dateContainerCls: string;\n\n // @ts-ignore\n get datavalue(): any {\n if (this.isCurrentDate && !this.proxyModel) {\n return CURRENT_DATE;\n }\n return getFormattedDate(this.datePipe, this.proxyModel, this.outputformat, this.timeZone, null, null, this);\n }\n\n /**Todo[Shubham]: needs to be redefined\n * This property sets the default value for the date selection\n */\n // @ts-ignore\n set datavalue(newVal: any) {\n if (newVal === CURRENT_DATE) {\n this.isCurrentDate = true;\n this.setTimeInterval();\n } else {\n this.proxyModel = newVal ? getDateObj(newVal, {isNativePicker: this.loadNativeDateInput}, this.timeZone) : undefined;\n this.clearTimeInterval();\n this.isCurrentDate = false;\n }\n this.bsTimeValue = this.bsDateValue = this.proxyModel;\n this.cdRef.detectChanges();\n }\n\n constructor(\n inj: Injector,\n private ngZone: NgZone,\n private cdRef: ChangeDetectorRef,\n private appDefaults: AppDefaults,\n app: App,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n super(inj, WIDGET_CONFIG, explicitContext);\n this.registerDestroyListener(() => this.clearTimeInterval());\n styler(this.nativeElement, this);\n this.app = app;\n this.dateContainerCls = `app-date-${this.widgetId}`;\n this._dateOptions.containerClass = `app-date ${this.dateContainerCls}`;\n this._dateOptions.showWeekNumbers = false;\n this.datepattern = this.appDefaults.dateTimeFormat || getDisplayDateTimeFormat(FormWidgetType.DATETIME);\n this.updateFormat('datepattern');\n }\n\n /**\n * This is an internal method used to maintain a time interval to update the time model when the data value is set to CURRENT_TIME\n */\n private setTimeInterval() {\n if (this.timeinterval) {\n return;\n }\n this.timeinterval = setInterval(() => {\n const currentTime = this.timeZone ? getMomentLocaleObject(this.timeZone) : new Date();\n this.onModelUpdate(currentTime);\n }, 1000);\n }\n\n /**\n * This is an internal method used to clear the time interval created\n */\n private clearTimeInterval() {\n if (this.timeinterval) {\n clearInterval(this.timeinterval);\n this.timeinterval = null;\n }\n }\n\n /**\n * This is an internal method to toggle the time picker\n */\n public toggleTimePicker(newVal, $event?: any) {\n if (this.loadNativeDateInput) {\n this.onDateTimeInputFocus();\n return;\n }\n this.isTimeOpen = newVal;\n if ($event && $event.type === 'click') {\n this.invokeEventCallback('click', { $event: $event });\n }\n this.addTimepickerClickListener(this.isTimeOpen);\n }\n\n private addTimepickerClickListener(skipListener) {\n if (!skipListener) {\n return;\n }\n const bodyElement = document.querySelector('body');\n setTimeout(() => {\n const dropdownElement = $(bodyElement).find('>bs-dropdown-container .dropdown-menu').get(0);\n this.deregisterTimepickeEventListener = addEventListenerOnElement(bodyElement, dropdownElement, this.nativeElement, 'click', this.isDropDownDisplayEnabledOnInput(this.showdropdownon), () => {\n this.toggleTimePicker(false);\n }, EVENT_LIFE.ONCE, true);\n }, 350);\n }\n\n /**\n * This function sets the value isOpen/isTimeOpen (i.e when datepicker popup is closed) based on widget type(i.e DateTime, Time)\n * @param val - isOpen/isTimeOpen is set based on the timepicker popup is open/closed\n */\n private setIsTimeOpen(val: boolean) {\n this.isTimeOpen = val;\n }\n\n private hideTimepickerDropdown() {\n this.invokeOnTouched();\n this.toggleTimePicker(false);\n if (this.deregisterTimepickeEventListener) {\n this.deregisterTimepickeEventListener();\n }\n const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n if (parentEl.length > 0) {\n this.app.notify('captionPositionAnimate', {displayVal: this.displayValue, nativeEl: parentEl});\n }\n }\n\n /**\n * This is an internal method to add a click listener once the time dropdown is open\n */\n public onTimepickerOpen() {\n // adding class for time widget dropdown menu\n const tpElements = document.querySelectorAll('timepicker');\n forEach(tpElements, (element) => {\n addClass(element.parentElement as HTMLElement, 'app-datetime', true);\n });\n\n this.bsDatePickerDirective.hide();\n this.focusTimePickerPopover(this);\n this.bindTimePickerKeyboardEvents();\n adjustContainerPosition($('bs-dropdown-container'), this.nativeElement, this.bsDropdown._dropdown, $('bs-dropdown-container .dropdown-menu'));\n adjustContainerRightEdges($('bs-dropdown-container'), this.nativeElement, this.bsDropdown._dropdown, $('bs-dropdown-container .dropdown-menu'));\n }\n\n public onDatePickerOpen() {\n this.isDateOpen = !this.isDateOpen;\n this.toggleTimePicker(false);\n // We are using the two input tags(To maintain the modal and proxy modal) for the date control.\n // So actual bootstrap input target width we made it to 0 so bootstrap calculating the calendar container top position impropery.\n // To fix the container top position set the width 1px;\n this.$element.find('.model-holder').width('1px');\n const dpContainerEl = $('bs-datepicker-container');\n dpContainerEl.attr('aria-label', 'Use Arrow keys to navigate dates, Choose Date from datepicker');\n $('.bs-calendar-container').removeAttr('role');\n const datePickerContainer = $('.bs-datepicker-container')[0];\n this.focusTrap = setFocusTrap(datePickerContainer, true);\n this.focusTrap.activate();\n\n this.bsDateValue ? this.activeDate = this.bsDateValue : this.activeDate = new Date();\n if (!this.bsDateValue) {\n this.hightlightToday(this.activeDate);\n }\n this.addDatepickerKeyboardEvents(this, true);\n adjustContainerPosition($('bs-datepicker-container'), this.nativeElement, this.bsDatePickerDirective._datepicker);\n }\n\n /**\n * This is an internal method to update the model\n */\n public onModelUpdate(newVal, type?) {\n\n if (type === 'date') {\n this.invalidDateTimeFormat = false;\n if (getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, (this as any).key, this.isCurrentDate, this) === this.displayValue) {\n $(this.nativeElement).find('.display-input').val(this.displayValue);\n }\n }\n // min date and max date validation in web.\n // if invalid dates are entered, device is showing validation message.\n this.minDateMaxDateValidationOnInput(newVal);\n if (!newVal) {\n // Set timevalue as 00:00:00 if we remove any one from hours/minutes/seconds field in timepicker after selecting date\n if (this.bsDateValue && this.bsTimePicker && (this.bsTimePicker.hours === '' || this.bsTimePicker.minutes === '' || this.bsTimePicker.seconds === '')) {\n this.bsDateValue = this.bsTimeValue = this.proxyModel = moment(this.bsDateValue).startOf('day').toDate();\n } else {\n this.bsDateValue = this.bsTimeValue = this.proxyModel = undefined;\n }\n // When the datavalue is manually cleared, both newval and datavalue are undefined but prevDataValue exists - trigger change cb\n if (newVal !== this.datavalue || (!this.datavalue && (this as any).prevDatavalue)) {\n this._debouncedOnChange(this.datavalue, {}, true);\n }\n return;\n }\n if (type === 'date') {\n if (this.isDateOpen) {\n this.toggleTimePicker(true);\n }\n }\n this.proxyModel = newVal;\n if (this.proxyModel) {\n this.bsDateValue = this.bsTimeValue = newVal;\n }\n this._debouncedOnChange(this.datavalue, {}, true);\n this.cdRef.detectChanges();\n\n // Update timepicker with formatted time, when timezone is provided.\n const timePickerFields = $('.bs-timepicker-field');\n if (this.timeZone && (this as any).key === 'datetimestamp' && timePickerFields.length) {\n const formattedDate = getFormattedDate(this.datePipe, newVal, this.getTimePattern(), this.timeZone, (this as any).key, null, this);\n this.updateTimepickerFields(formattedDate, timePickerFields);\n }\n }\n\n // deduces the timepattern from datepattern set in the studio\n private getTimePattern() {\n let timepattern;\n const timePatternStartIndex = this.datepattern.toLowerCase().indexOf('h');\n let timePatternEndIndex = this.datepattern.toLowerCase().indexOf(':ss');\n if (timePatternEndIndex > -1) {\n // adding the index to +3 to incluse :ss\n timePatternEndIndex += 3;\n } else {\n timePatternEndIndex = this.datepattern.toLowerCase().indexOf(':mm');\n // adding the index to +3 to incluse :mm\n if (timePatternEndIndex > -1) {\n timePatternEndIndex += 3;\n }\n }\n const hasMeridian = this.datepattern.toLowerCase().indexOf('a');\n timepattern = this.datepattern.substr(timePatternStartIndex, timePatternEndIndex);\n if (hasMeridian > -1)\n timepattern += ' a';\n return timepattern;\n }\n\n private updateTimepickerFields(date, timePickerFields) {\n const meridianField = $('timepicker button.text-center');\n const formattedArr = date.split(' ');\n const formattedTime = formattedArr[0].split(':');\n for (let i=0; i<timePickerFields.length; i++) {\n timePickerFields[i].value = formattedTime[i]\n }\n if (meridianField?.html()?.trim() !== formattedArr[1]) {\n meridianField.text(formattedArr[1]);\n }\n }\n\n /**\n * This is an internal method used to Prevent time picker close while changing time value\n */\n private preventTpClose($event) {\n $event.stopImmediatePropagation();\n }\n\n /**\n * This is an internal method used to toggle the dropdown of the date widget\n */\n public toggleDpDropdown($event, skipFocus: boolean = false) {\n if (this.loadNativeDateInput) {\n //Fixes click event getting triggred twice in Mobile devices.\n if(!skipFocus){\n this.onDateTimeInputFocus();\n }\n return;\n }\n if ($event.type === 'click') {\n this.invokeEventCallback('click', { $event: $event });\n //this.focusOnInputEl();\n }\n if ($event.target && $($event.target).is('input') && !(this.isDropDownDisplayEnabledOnInput(this.showdropdownon))) {\n $event.stopPropagation();\n return;\n }\n this.bsDatePickerDirective.toggle();\n this.addBodyClickListener(this.bsDatePickerDirective.isOpen);\n }\n\n private addBodyClickListener(skipListener) {\n if (!skipListener) {\n return;\n }\n const bodyElement = document.querySelector('body');\n setTimeout(() => {\n const bsDateContainerElement = bodyElement.querySelector(`.${this.dateContainerCls}`);\n this.deregisterDatepickerEventListener = addEventListenerOnElement(bodyElement, bsDateContainerElement, this.nativeElement, 'click', this.isDropDownDisplayEnabledOnInput(this.showdropdownon), () => {\n this.bsDatePickerDirective.hide();\n }, EVENT_LIFE.ONCE, true);\n }, 350);\n }\n\n public hideDatepickerDropdown() {\n this.isDateOpen = false;\n this.focusTrap?.deactivate();\n this.invokeOnTouched();\n this.bsDatePickerDirective.hide();\n\n // To open the timepicker menu when user wants to update time without changing the date.\n if(this.bsDateValue) {\n this.toggleTimePicker(true);\n }\n this.isEnterPressedOnDateInput = false;\n if (this.deregisterDatepickerEventListener) {\n this.deregisterDatepickerEventListener();\n }\n const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n if (parentEl.length > 0) {\n this.app.notify('captionPositionAnimate', {displayVal: this.displayValue, nativeEl: parentEl});\n }\n this.blurDateInput(this.isDateOpen);\n }\n\n public onDateChange($event, isNativePicker?: boolean) {\n if (this.isEnterPressedOnDateInput) {\n this.isEnterPressedOnDateInput = false;\n return;\n }\n let newVal = $event.target.value.trim();\n newVal = newVal ? getNativeDateObject(newVal, {pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians, isNativePicker: this.loadNativeDateInput}) : undefined;\n // datetime pattern validation\n // if invalid pattern is entered, device is showing an error.\n if (!this.formatValidation(newVal, $event.target.value, isNativePicker)) {\n return;\n }\n // min date and max date validation in mobile view.\n // if invalid dates are entered, device is showing an alert.\n if (isNativePicker && this.minDateMaxDateValidationOnInput(newVal, $event, this.displayValue, isNativePicker)) {\n return;\n }\n this.invalidDateTimeFormat = false;\n this.onModelUpdate(newVal);\n }\n\n /**\n * This is an internal method triggered when pressing key on the datetime input\n */\n public onDisplayKeydown(event) {\n if (this.isDropDownDisplayEnabledOnInput(this.showdropdownon)) {\n event.stopPropagation();\n let newVal = event.target.value.trim();\n if (event.key === 'Enter' || event.key === 'ArrowDown') {\n newVal = newVal ? getNativeDateObject(newVal, {pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians}) : undefined;\n event.preventDefault();\n const formattedDate = getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, (this as any).key, this.isCurrentDate, this);\n const inputVal = event.target.value.trim();\n if (inputVal && this.datepattern === 'timestamp') {\n if (!isNaN(inputVal) && parseInt(inputVal) !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.invokeOnChange(this.datavalue, event, false);\n }\n } else if (inputVal && inputVal !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.invokeOnChange(this.datavalue, event, false);\n } else {\n this.invalidDateTimeFormat = false;\n this.isEnterPressedOnDateInput = true;\n this.bsDatePickerDirective.bsValue = newVal;\n }\n this.toggleDpDropdown(event);\n } else {\n this.hideDatepickerDropdown();\n this.hideTimepickerDropdown();\n }\n } else {\n this.hideDatepickerDropdown();\n this.hideTimepickerDropdown();\n }\n }\n\n private isValid(event) {\n if (!event) {\n const enteredDate = $(this.nativeElement).find('input').val();\n const newVal = getNativeDateObject(enteredDate, {pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians, isNativePicker: this.loadNativeDateInput});\n if (!this.formatValidation(newVal, enteredDate)) {\n return;\n }\n }\n }\n\n // change and blur events are added from the template\n protected handleEvent(node: HTMLElement, eventName: string, callback: Function, locals: any) {\n if (!includes(['blur', 'focus', 'change', 'click'], eventName)) {\n super.handleEvent(node, eventName, callback, locals);\n }\n }\n\n onInputBlur($event) {\n if (!$($event.relatedTarget).hasClass('current-date')) {\n this.invokeOnTouched();\n this.invokeEventCallback('blur', { $event });\n }\n }\n}\n","import { FormWidgetType, isMobileApp } from '@wm/core';\n\nimport { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget } from '@wm/components/base';\n\nexport const timeProps = new Map(\n [\n ['autofocus', PROP_BOOLEAN],\n ['class', PROP_STRING],\n ['dataentrymode', {value: 'default', ...PROP_STRING}],\n ['datavaluesource', PROP_ANY],\n ['datavalue', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['hint', PROP_STRING],\n ['hourstep', {value: 1, ...PROP_NUMBER}],\n ['maxtime', PROP_STRING],\n ['mintime', PROP_STRING],\n ['minutestep', {value: 15, ...PROP_NUMBER}],\n ['name', PROP_STRING],\n ['outputformat', {value: 'HH:mm:ss', ...PROP_STRING}],\n ['placeholder', {value: 'Select time', ...PROP_STRING}],\n ['readonly', PROP_BOOLEAN],\n ['required', PROP_BOOLEAN],\n ['shortcutkey', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['showdropdownon', {value: 'default', ...PROP_STRING}],\n ['showcustompicker', { value: false, ...PROP_BOOLEAN }],\n ['secondsstep', {value: 1, ...PROP_NUMBER}],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['timepattern', PROP_STRING],\n ['timestamp', PROP_STRING]\n ]\n);\n\nexport const registerProps = () => {\n register(\n 'wm-time',\n timeProps\n );\n registerFormWidget(\n FormWidgetType.TIME,\n new Map(timeProps)\n );\n};\n"," <div dropdown [isOpen]=\"status.isopen\" (onShown)=\"onShown()\" (onHidden)=\"hideTimepickerDropdown()\" [container]=\"'body'\" style=\"display: inherit\">\n <input class=\"form-control app-textbox display-input\" [attr.aria-label]=\"hint\"\n focus-target\n [tabindex]=\"tabindex\"\n [name]=\"name\"\n type=\"text\"\n role=\"timer\"\n [value]=\"displayValue\"\n [disabled]=\"disabled || readonly || isCurrentTime\"\n [autofocus]=\"autofocus\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-atomic]=\"isCurrentTime ? 'true' : 'false'\"\n [required]=\"required\"\n [readOnly]=\"isReadOnly\"\n (click)=\"toggleDropdown($event, true)\"\n (focus)=\"onDateTimeInputFocus(); invokeOnFocus($event);\"\n (blur)=\"onInputBlur($event)\"\n (change)=\"onDisplayTimeChange($event)\"\n (keydown)=\"this._triggeredByUser = true; onDisplayKeydown($event)\">\n <span class=\"input-group-btn dropdown-toggle\">\n <button type=\"button\" class=\"btn btn-default btn-date\" [tabindex]=\"tabindex\" [disabled]=\"disabled || readonly || isCurrentTime\" aria-label=\"Select time\" aria-haspopup=\"true\" aria-expanded=\"false\" (click)=\"toggleDropdown($event, false)\"><i aria-hidden=\"true\" class=\"app-icon wm-sl-l sl-time\"></i></button>\n </span>\n <div *dropdownMenu class=\"dropdown-menu\" (click)=\"preventTpClose($event)\">\n <timepicker class=\"model-holder\"\n [showMeridian]=\"ismeridian\"\n [readonlyInput]=\"isDisabled\"\n [(ngModel)]=\"bsTimeValue\"\n [ngModelOptions]=\"{standalone: true}\"\n [disabled]=\"disabled || readonly || isCurrentTime\"\n [min]=\"minTime\"\n [max]=\"maxTime\"\n [hourStep]=\"hourstep\"\n [minuteStep]=\"minutestep\"\n [secondsStep]=\"secondsstep\"\n [mousewheel]=\"true\"\n [arrowkeys]=\"true\"\n (isValid)=\"isValid($event)\"\n [showSeconds]=\"showseconds\" (ngModelChange)=\"onTimeChange($event)\"></timepicker>\n </div>\n </div>\n<ng-template [ngIf]=\"loadNativeDateInput\">\n <wm-datetimepicker\n dateTimePicker\n mode=\"TIME\"\n [minTime]=\"minTime\"\n [maxTime]=\"maxTime\"\n [placement]=\"modal\"\n [displayFormat]=\"timepattern\"\n [value]=\"bsTimeValue\"\n (change)=\"onTimeChange($event)\">\n </wm-datetimepicker>\n <div class=\"mobile-input mobile-datepicker-container\"\n tabindex=\"1000000\"\n (click)=\"!(disabled || readonly) && showDatePickerModal(bsTimeValue)\"\n [attr.aria-label]=\"displayValue ? 'Change time ' + displayValue : hint || 'Select time'\"\n (focus)=\"onDateTimeInputFocus(true); invokeOnFocus($event); assignModel()\"\n (blur)=\"onDateTimeInputBlur(); invokeOnTouched($event)\"\n role=\"button\">\n </div>\n</ng-template>\n","import {Component, Inject, Injector, NgZone, OnDestroy, Optional, ViewChild} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';\nimport { TimepickerConfig } from 'ngx-bootstrap/timepicker';\nimport {\n $appDigest,\n AbstractI18nService,\n addClass,\n addEventListenerOnElement,\n adjustContainerPosition,\n App,\n AppDefaults,\n EVENT_LIFE,\n FormWidgetType,\n getDisplayDateTimeFormat,\n getFormattedDate,\n getNativeDateObject,\n getMomentLocaleObject\n} from '@wm/core';\nimport { provideAsWidgetRef, provideAs, styler } from '@wm/components/base';\n\nimport {BaseDateTimeComponent, getTimepickerConfig} from './../base-date-time.component';\nimport { registerProps } from './time.props';\nimport {forEach, get, includes} from \"lodash-es\";\n\ndeclare const $;\ndeclare const moment;\n\nconst CURRENT_TIME = 'CURRENT_TIME';\nconst DEFAULT_CLS = 'input-group app-timeinput';\nconst WIDGET_CONFIG = {widgetType: 'wm-time', hostClass: DEFAULT_CLS};\n\n@Component({\n selector: '[wmTime]',\n templateUrl: './time.component.html',\n providers: [\n provideAs(TimeComponent, NG_VALUE_ACCESSOR, true),\n provideAs(TimeComponent, NG_VALIDATORS, true),\n provideAsWidgetRef(TimeComponent),\n { provide: TimepickerConfig, deps: [AbstractI18nService], useFactory: getTimepickerConfig }\n ]\n})\nexport class TimeComponent extends BaseDateTimeComponent implements OnDestroy {\n static initializeProps = registerProps();\n /**\n * This property sets the display pattern of the time selected\n */\n timepattern: string;\n\n /**\n * This property sets the output format for the selected time datavalue\n */\n outputformat: string;\n\n public showdropdownon: string;\n public mintime;\n public maxtime;\n public hint: string;\n\n private deregisterEventListener;\n private app: App;\n private displayInputElem: HTMLElement;\n\n get timestamp() {\n return this.bsTimeValue ? this.bsTimeValue.valueOf() : undefined;\n }\n\n // @ts-ignore\n get datavalue(): any {\n if (this.isCurrentTime && !this.bsTimeValue) {\n return CURRENT_TIME;\n }\n return getFormattedDate(this.datePipe, this.bsTimeValue, this.outputformat, this.timeZone, null, null, this) || '';\n }\n\n /**Todo[Shubham]: needs to be redefined\n * This property sets the default value for the time selection\n */\n // @ts-ignore\n set datavalue(newVal: any) {\n if (newVal) {\n if (newVal === CURRENT_TIME) {\n this.isCurrentTime = true;\n this.setTimeInterval();\n } else {\n this.clearTimeInterval();\n this.bsTimeValue = getNativeDateObject(newVal, { pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput});\n this.isCurrentTime = false;\n this.mintimeMaxtimeValidation();\n }\n } else {\n this.bsTimeValue = undefined;\n this.clearTimeInterval();\n this.isCurrentTime = false;\n }\n this.invokeOnChange(this.datavalue);\n $appDigest();\n }\n\n get displayValue() {\n return getFormattedDate(this.datePipe, this.bsTimeValue, this.timepattern, this.timeZone, null, null, this) || '';\n }\n\n get nativeDisplayValue() {\n return getFormattedDate(this.datePipe, this.bsTimeValue, 'HH:mm:ss', this.timeZone, null, null, this) || '';\n }\n\n /* Internal property to have a flag to check the given datavalue is of Current time*/\n public isCurrentTime: boolean;\n\n private timeinterval: any;\n\n /**\n * This is an internal property used to map it to the widget\n */\n private minTime: Date;\n\n /**\n * This is an internal property used to map it to the widget\n */\n private maxTime: Date;\n\n /**\n * This is an internal property used to toggle the timepicker dropdown\n */\n public status = { isopen: false };\n\n /**\n * This is an internal property used to map the main model to the time widget\n */\n private bsTimeValue: Date;\n\n constructor(\n inj: Injector,\n private ngZone: NgZone,\n private appDefaults: AppDefaults,\n app: App,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n super(inj, WIDGET_CONFIG, explicitContext);\n\n styler(this.nativeElement, this);\n /**\n * Destroy the timer once the date widget is gone\n */\n this.registerDestroyListener(() => this.clearTimeInterval());\n\n this.timepattern = this.appDefaults.timeFormat || getDisplayDateTimeFormat(FormWidgetType.TIME);\n this.updateFormat('timepattern');\n this.app = app;\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'tabindex') {\n return;\n }\n if (key === 'timepattern') {\n this.updateFormat('timepattern');\n }\n if (key === 'mintime') {\n this.minTime = getNativeDateObject(nv, { pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput }); // TODO it is supposed to be time conversion, not to the day\n this.mintimeMaxtimeValidation();\n } else if (key === 'maxtime') {\n this.maxTime = getNativeDateObject(nv, { pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });\n this.mintimeMaxtimeValidation();\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n setValidateType(min, max, val) {\n if (this.timeNotInRange) {\n if (val < min) {\n (this as any).validateType = 'mintime';\n } else if (val > max) {\n (this as any).validateType = 'maxtime';\n }\n }\n }\n\n /**\n * This is an internal method used to validate mintime and maxtime\n */\n private mintimeMaxtimeValidation() {\n this.timeNotInRange = this.minTime && this.maxTime && (this.bsTimeValue < this.minTime || this.bsTimeValue > this.maxTime);\n this.setValidateType(this.minTime, this.maxTime, this.bsTimeValue);\n this.invokeOnChange(this.datavalue, undefined, false);\n }\n\n /**\n * This is an internal method used to toggle the dropdown of the time widget\n */\n public toggleDropdown($event, skipFocus: boolean = false): void {\n if (this.loadNativeDateInput) {\n //Fixes click event getting triggred twice in Mobile devices.\n if(!skipFocus){\n this.onDateTimeInputFocus();\n }\n return;\n }\n if ($event.type === 'click') {\n this.invokeEventCallback('click', {$event: $event});\n //this.focusOnInputEl();\n }\n if ($event.target && $($event.target).is('input') && !(this.isDropDownDisplayEnabledOnInput(this.showdropdownon))) {\n return;\n }\n this.ngZone.run(() => {\n this.status.isopen = !this.status.isopen;\n });\n this.addBodyClickListener(this.status.isopen);\n }\n\n /**\n * This is an internal method used to Prevent time picker close while changing time value\n */\n private preventTpClose($event) {\n $event.stopImmediatePropagation();\n const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n if (parentEl.length > 0) {\n this.app.notify('captionPositionAnimate', {displayVal: this.displayValue, nativeEl: parentEl});\n }\n }\n\n private addBodyClickListener(skipListener) {\n if (!skipListener) {\n return;\n }\n const bodyElement = document.querySelector('body');\n setTimeout(() => {\n const dropdownElement = $(bodyElement).find('>bs-dropdown-container .dropdown-menu').get(0);\n this.deregisterEventListener = addEventListenerOnElement(bodyElement, dropdownElement, this.nativeElement, 'click', this.isDropDownDisplayEnabledOnInput(this.showdropdownon), () => {\n this.status.isopen = false;\n }, EVENT_LIFE.ONCE, true);\n }, 350);\n }\n\n /**\n * This is an internal method triggered when pressing key on the time input\n */\n public onDisplayKeydown(event) {\n if (this.isDropDownDisplayEnabledOnInput(this.showdropdownon)) {\n event.stopPropagation();\n if (event.key === 'Enter' || event.key === 'ArrowDown') {\n event.preventDefault();\n this.toggleDropdown(event);\n } else {\n this.hideTimepickerDropdown();\n }\n } else {\n this.hideTimepickerDropdown();\n }\n }\n\n /**\n * This is an internal method triggered when the time input changes\n */\n onDisplayTimeChange($event) {\n const newVal = getNativeDateObject($event.target.value, {meridians: this.meridians, pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });\n // time pattern validation\n // if invalid pattern is entered, device is showing an error.\n if (!this.formatValidation(newVal, $event.target.value)) {\n return;\n }\n this.invalidDateTimeFormat = false;\n this.onTimeChange(newVal);\n }\n\n onInputBlur($event) {\n if (!$($event.relatedTarget).hasClass('bs-timepicker-field')) {\n this.invokeOnTouched();\n this.invokeEventCallback('blur', {$event});\n }\n }\n\n /**\n * This is an internal method used to execute the on time change functionality\n */\n private onTimeChange(newVal, isNativePicker?: boolean) {\n let timeValue,\n timeInputValue,\n minTimeMeridian,\n maxTimeMeridian;\n // For nativePicker, newVal is event, get the dateobject from the event.\n if (isNativePicker) {\n newVal = getNativeDateObject(newVal.target.value, { pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });\n }\n if (newVal) {\n this.bsTimeValue = newVal;\n // if the newVal is valid but not in the given range then highlight the input field\n this.timeNotInRange = this.minTime && this.maxTime && (newVal < this.minTime || newVal > this.maxTime);\n this.setValidateType(this.minTime, this.maxTime, newVal);\n } else {\n // sometimes library is not returning the correct value when the min and max time are given, displaying the datavalue based on the value given by the user\n if (this.bsTimePicker && this.bsTimePicker.min && this.bsTimePicker.max) {\n minTimeMeridian = moment(new Date(this.bsTimePicker.min)).format('A');\n maxTimeMeridian = moment(new Date(this.bsTimePicker.max)).format('A');\n timeValue = this.bsTimePicker.hours + ':' + (this.bsTimePicker.minutes || 0) + ':' + (this.bsTimePicker.seconds || 0) + (this.bsTimePicker.showMeridian ? (' ' + minTimeMeridian) : '');\n timeInputValue = getNativeDateObject(timeValue, { pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });\n this.bsTimePicker.meridian = minTimeMeridian;\n this.timeNotInRange = (this.bsTimePicker.min > timeInputValue || this.bsTimePicker.max < timeInputValue);\n this.setValidateType(this.bsTimePicker.min, this.bsTimePicker.max, timeInputValue);\n }\n this.bsTimeValue = timeInputValue;\n }\n this.invokeOnTouched();\n this.invokeOnChange(this.datavalue, {}, true);\n }\n\n /**\n * This is an internal method used to maintain a time interval to update the time model when the data value is set to CURRENT_TIME\n */\n private setTimeInterval() {\n if (this.timeinterval) {\n return;\n }\n this.timeinterval = setInterval( () => {\n const now = this.timeZone ? getMomentLocaleObject(this.timeZone) : new Date();\n now.setSeconds(now.getSeconds() + 1);\n this.datavalue = CURRENT_TIME;\n this.onTimeChange(now);\n }, 1000);\n }\n\n /**\n * This is an internal method used to clear the time interval created\n */\n private clearTimeInterval() {\n if (this.timeinterval) {\n clearInterval(this.timeinterval);\n this.timeinterval = null;\n }\n }\n\n /**\n * This function sets the value isOpen/isTimeOpen (i.e when datepicker popup is closed) based on widget type(i.e DateTime, Time)\n * @param val - isOpen/isTimeOpen is set based on the timepicker popup is open/closed\n */\n private setIsTimeOpen(val: boolean) {\n this.status.isopen = val;\n }\n\n // Change event is registered from the template, Prevent the framework from registering one more event\n protected handleEvent(node: HTMLElement, eventName: string, eventCallback: Function, locals: any) {\n if (!includes(['blur', 'focus', 'change', 'click'], eventName)) {\n super.handleEvent(node, eventName, eventCallback, locals);\n }\n }\n\n public hideTimepickerDropdown() {\n this.invokeOnTouched();\n this.status.isopen = false;\n if (this.deregisterEventListener) {\n this.deregisterEventListener();\n }\n this.removeKeyupListener();\n const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n if (parentEl.length > 0) {\n this.app.notify('captionPositionAnimate', {displayVal: this.displayValue, nativeEl: parentEl});\n }\n this.blurDateInput(true);\n }\n\n private isValid(event) {\n if (!event) {\n const enteredDate = $(this.nativeElement).find('input').val();\n const newVal = getNativeDateObject(enteredDate, {meridians: this.meridians, pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });\n if (!this.formatValidation(newVal, enteredDate)) {\n return;\n }\n }\n }\n /**\n * This is an internal method to add css class for dropdown while opening the time dropdown\n */\n public onShown() {\n const tpElements = document.querySelectorAll('timepicker');\n forEach(tpElements, element => {\n addClass(element.parentElement as HTMLElement, 'app-datetime', true);\n });\n this.focusTimePickerPopover(this);\n this.bindTimePickerKeyboardEvents();\n adjustContainerPosition($('bs-dropdown-container'), this.nativeElement, this.bsDropdown._dropdown, $('bs-dropdown-container .dropdown-menu'));\n }\n\n public assignModel() {\n if (!this.displayInputElem) {\n this.displayInputElem = this.getMobileInput();\n }\n (this.displayInputElem as any).value = get(this, 'nativeDisplayValue');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { TimepickerModule } from 'ngx-bootstrap/timepicker';\nimport { WmComponentsModule } from '@wm/components/base';\n\nimport { DateComponent } from './date/date.component';\nimport { DateTimePickerComponent, TimePickerComponent } from './date-time/date-time-picker.component';\nimport { DatetimeComponent } from './date-time/date-time.component';\nimport { TimeComponent } from './time/time.component';\nimport { PickerComponent, PickerGroupComponent } from './picker/picker.component';\nimport { IMaskModule } from 'angular-imask';\n\n\nconst components = [\n DateComponent,\n DatetimeComponent,\n TimeComponent,\n DateTimePickerComponent,\n TimePickerComponent,\n PickerComponent,\n PickerGroupComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n BsDatepickerModule,\n BsDropdownModule,\n FormsModule,\n TimepickerModule,\n WmComponentsModule,\n IMaskModule\n ],\n declarations: [...components],\n exports: [...components]\n})\nexport class EpochModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["_c0","CURRENT_DATE","_isNaN","parseInt","registerProps","DEFAULT_CLS","WIDGET_CONFIG","isNaN","_c1"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/input/epoch/src/picker/picker.component.ts","../../../../../projects/components/widgets/input/epoch/src/date-time/date-time-picker.component.ts","../../../../../projects/components/widgets/input/epoch/src/base-date-time.component.ts","../../../../../projects/components/widgets/input/epoch/src/date/date.props.ts","../../../../../projects/components/widgets/input/epoch/src/date/imaskUtil.ts","../../../../../projects/components/widgets/input/epoch/src/date/date.component.html","../../../../../projects/components/widgets/input/epoch/src/date/date.component.ts","../../../../../projects/components/widgets/input/epoch/src/date-time/date-time.props.ts","../../../../../projects/components/widgets/input/epoch/src/date-time/date-time.component.html","../../../../../projects/components/widgets/input/epoch/src/date-time/date-time.component.ts","../../../../../projects/components/widgets/input/epoch/src/time/time.props.ts","../../../../../projects/components/widgets/input/epoch/src/time/time.component.html","../../../../../projects/components/widgets/input/epoch/src/time/time.component.ts","../../../../../projects/components/widgets/input/epoch/src/epoch.module.ts","../../../../../projects/components/widgets/input/epoch/src/index.ts"],"sourcesContent":["import { AfterViewInit, Component, ElementRef, EventEmitter, Inject, Injector, Input, NgZone, OnDestroy, Output, ViewChild } from '@angular/core';\n\ndeclare const $;\n\n@Component({\n selector: 'wm-pickergroup',\n template: `\n <div class=\"app-picker-group\">\n <ng-content></ng-content>\n </div>\n `\n})\nexport class PickerGroupComponent {\n\n}\n\n@Component({\n selector: 'wm-picker',\n template: `\n <div class=\"app-picker\">\n <div class=\"app-picker-option-container\">\n <div class=\"app-picker-option app-picker-empty-option\">E</div>\n <div class=\"app-picker-option app-picker-empty-option\">E</div>\n <div *ngFor=\"let option of options; index as i;\" class=\"app-picker-option\">\n {{option.label}}\n </div>\n <div class=\"app-picker-option app-picker-empty-option\">E</div>\n <div class=\"app-picker-option app-picker-empty-option\">E</div>\n </div>\n <div class=\"app-picker-ruler\"></div>\n </div>\n `\n})\nexport class PickerComponent implements AfterViewInit {\n\n public $el;\n\n private pickerAnimator;\n\n @Output() change = new EventEmitter<{\n label: string,\n value?: any\n }>();\n\n private _selectedIndex = 0;\n\n private _selectedValue: any;\n\n private _options: Array<{label: string, value?: any}> = [];\n\n noOfEmptyElements = 2;\n\n constructor(protected inj: Injector) {\n this.$el = $(inj.get(ElementRef).nativeElement);\n }\n\n @Input()\n set selectedValue(s: string) {\n this._selectedValue = s;\n this.reRender();\n }\n\n get selectedValue() {\n return this._selectedValue;\n }\n\n @Input()\n set options(opts: Array<{label: string, value?: any}>) {\n this._options = opts.map(o => ({\n label: o.label,\n value: o.value !== undefined ? o.value : o.label\n }));\n this.reRender();\n }\n\n get options() {\n return this._options;\n }\n\n reRender() {\n this._selectedIndex = this.options.findIndex(o => o.value === this.selectedValue);\n this.pickerAnimator?.select(this._selectedIndex + this.noOfEmptyElements);\n }\n\n set selectedIndex(i: number) {\n this._selectedIndex = i;\n this._selectedValue = this.options[i].value;\n this.change.emit(this.options[i]);\n }\n\n get selectedIndex() {\n return this._selectedIndex;\n }\n\n ngAfterViewInit(): void {\n this.pickerAnimator = new PickerAnimator(this);\n }\n\n}\n\nclass PickerAnimator {\n\n constructor(private picker: PickerComponent) {\n let lastSelectedIndex = picker.selectedIndex + picker.noOfEmptyElements;\n const computeIndex = (d: number) => lastSelectedIndex + Math.floor(d / 16);\n this.select(lastSelectedIndex);\n this.getElement().swipey({\n 'direction': $.fn.swipey.DIRECTIONS.VERTICAL,\n 'threshold': 10,\n 'target': picker.$el,\n 'onSwipe': (e, data) => {\n this.select(computeIndex(-1 * data.length));\n },\n 'onSwipeEnd': (e, data) => {\n const nextSelectedIndex = computeIndex(-1 * data.length);\n this.select(nextSelectedIndex);\n lastSelectedIndex = picker.selectedIndex + picker.noOfEmptyElements;\n }\n });\n }\n\n getElement() {\n return this.picker.$el.find('.app-picker-option-container:first');\n }\n\n getOptionElements() {\n return this.getElement().find('.app-picker-option');\n }\n\n select(selectedIndex: number) {\n const options = this.getOptionElements();\n if (selectedIndex < this.picker.noOfEmptyElements\n || selectedIndex >= options.length - this.picker.noOfEmptyElements) {\n return;\n }\n this.getElement()\n .find('.app-picker-option.app-picker-option-selected')\n .removeClass('app-picker-option-selected');\n options.eq(selectedIndex).addClass('app-picker-option-selected');\n this.picker.selectedIndex = selectedIndex - this.picker.noOfEmptyElements;\n const minIndex = selectedIndex - this.picker.noOfEmptyElements;\n const maxIndex = selectedIndex + this.picker.noOfEmptyElements;\n options.each((i, e) => {\n if (i >= minIndex && i <= maxIndex) {\n const rotation = (i - selectedIndex) * 30;\n const opacity = 1 - Math.abs(i - selectedIndex) * 0.3;\n $(e).css({\n transform : 'perspective(500px) rotateX(' + rotation + 'deg)',\n opacity: opacity\n }).show();\n } else {\n $(e).hide();\n }\n });\n }\n}\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Inject, Injector, Input, NgZone, OnDestroy, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { BsDatepickerConfig } from 'ngx-bootstrap/datepicker';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { App } from '@wm/core';\nimport {filter} from \"lodash-es\";\n\ndeclare const $;\ndeclare const moment;\n\n@Component({\n selector: 'wm-datetimepicker',\n template: `\n <ng-template #datetimepickerTemplate>\n <div class=\"app-datetime-picker\">\n <div class=\"modal-body\">\n <div class=\"mobile-datetime-picker-options\">\n\n </div>\n <bs-datepicker-inline\n [bsConfig]=\"bsDatepickerConfig\"\n [datesDisabled]=\"excludedDatesToDisable\"\n bsDatepicker\n [bsValue]=\"changedValue\"\n (bsValueChange)=\"onDateUpdate($event)\"\n *ngIf=\"mode === 'DATE_TIME' || mode === 'DATE'\">\n </bs-datepicker-inline>\n <wm-timepicker\n [value]=\"changedValue\"\n [min]=\"minTime\"\n [max]=\"maxTime\"\n (change)=\"onTimeUpdate($event)\"\n *ngIf=\"mode === 'DATE_TIME' || mode === 'TIME'\"></wm-timepicker>\n <span class=\"text-primary date-picker-value\">\n {{getDateLabel()}}\n </span>\n </div>\n <div class=\"modal-footer\">\n <button\n *ngIf=\"mode === 'DATE_TIME' || mode === 'DATE'\"\n class=\"btn btn-secondary today-btn\"\n (click)=\"setToday()\">{{appLocale.LABEL_TODAY_DATE || \"Today\" }}</button>\n <button\n class=\"btn btn-primary pull-right ok-btn\"\n *ngIf=\"mode === 'DATE_TIME' || mode === 'TIME'\"\n (click)=\"onOkClick()\">{{appLocale.LABEL_OK || \"Ok\" }}</button>\n <button\n class=\"btn btn-secondary pull-right clear-btn\"\n (click)=\"clear()\">{{appLocale.LABEL_CLEAR_DATE || \"Clear\" }}</button>\n </div>\n </div>\n </ng-template>\n `\n})\nexport class DateTimePickerComponent implements AfterViewInit, OnDestroy {\n\n private isDateOpen = true;\n\n private isTimeOpen = false;\n\n private appLocale: any;\n\n @ViewChild('datetimepickerTemplate' , { static: true }) datetimepickerTemplate: TemplateRef<any>;\n\n @Input()\n private mode: 'DATE' | 'TIME' | 'DATE_TIME' = 'DATE_TIME';\n\n @Input()\n private placement: 'MODAL' | 'INLINE' = 'MODAL';\n\n @Input(\"config\")\n private _bsDatepickerConfig: BsDatepickerConfig;\n\n @Input()\n private minTime: Date;\n\n @Input()\n private maxTime: Date;\n\n @Input()\n private _displayFormat: string;\n\n @Output() change = new EventEmitter<Date>();\n\n private _value = new Date();\n\n private changedValue = null;\n\n private modalRef: BsModalRef;\n\n @Input()\n private excludedDatesToDisable;\n\n constructor(\n protected inj: Injector,\n private bsModalService: BsModalService) {\n this.appLocale = inj.get(App).appLocale || {};\n }\n\n @Input()\n set value(d: Date) {\n d = d || new Date();\n this._value = d;\n this.changedValue = d;\n }\n\n\n @Input(\"config\")\n set bsDatepickerConfig(config: BsDatepickerConfig) {\n this._bsDatepickerConfig = config;\n this._bsDatepickerConfig.showClearButton = false;\n this._bsDatepickerConfig.showTodayButton = false;\n }\n\n @Input()\n set excludedDaysToDisable(v: number[]) {\n this._bsDatepickerConfig.daysDisabled = v;\n }\n\n get bsDatepickerConfig() {\n return this._bsDatepickerConfig;\n }\n\n @Input()\n set displayFormat(format: string) {\n if (format) {\n this._displayFormat = format.replace(/y/g, \"Y\").replace(/d/g, \"D\").replace(\"a\", \"A\");\n }\n }\n\n validateSelectedDate() {\n if (!this.changedValue) {\n return true;\n }\n const cd = moment(this.changedValue);\n const minDate = this._bsDatepickerConfig?.minDate;\n const maxDate = this._bsDatepickerConfig?.maxDate;\n if (minDate\n && ((this.mode === 'DATE'\n && moment(minDate).startOf('day').toDate() > this.changedValue)\n || (this.mode !== 'DATE'\n && minDate > this.changedValue))) {\n return false;\n }\n if (maxDate\n && ((this.mode === 'DATE'\n && moment(maxDate).endOf('day').toDate() < this.changedValue)\n || (this.mode !== 'DATE'\n && maxDate < this.changedValue))) {\n return false;\n }\n if (this._bsDatepickerConfig?.daysDisabled?.indexOf(cd.day()) >= 0) {\n return false;\n }\n const cdSt = cd.startOf('day').toDate().getTime();\n if (this.excludedDatesToDisable?.find(d => d.getTime() === cdSt)) {\n return false;\n }\n return true;\n }\n\n get displayFormat() {\n if (this._displayFormat) {\n return this._displayFormat;\n }\n }\n /**\n * This method is used to highlight the current date\n */\n private hightlightToday() {\n const toDay = new Date().getDate().toString();\n filter($(`body > modal-container .date-picker-modal span:contains(${toDay})`)\n .not('.is-other-month,.current-date'), (obj) => {\n if ($(obj).text() === toDay) {\n $(obj).addClass('current-date text-info');\n }\n });\n }\n\n private hideOnClick() {\n $('body>modal-container .date-picker-modal .app-datetime-picker')\n .click(($event) => $event.stopPropagation());\n $('body>modal-container .date-picker-modal').click(() => this.onCancelClick());\n }\n\n getDateLabel() {\n return moment(this.changedValue).format(this.displayFormat);\n }\n\n openDatePicker() {\n this.isTimeOpen = false;\n this.isDateOpen = true;\n }\n\n openTimePicker() {\n this.isTimeOpen = true;\n this.isDateOpen = false;\n }\n\n public onDateUpdate(newVal) {\n const oldVal = this.changedValue;\n if (this.mode === 'DATE') {\n newVal.setHours(0);\n newVal.setMinutes(0);\n newVal.setSeconds(0);\n newVal.setMilliseconds(0);\n } else if (oldVal && newVal) {\n newVal.setHours(oldVal.getHours());\n newVal.setMinutes(oldVal.getMinutes());\n newVal.setSeconds(oldVal.getSeconds());\n newVal.setMilliseconds(oldVal.getMilliseconds());\n }\n this.changedValue = newVal;\n if (this.mode === 'DATE'\n && oldVal !== newVal\n && this.validateSelectedDate()) {\n this.onOkClick();\n }\n }\n\n public onTimeUpdate(newVal) {\n this.changedValue = newVal;\n }\n\n show() {\n this.reset();\n this.modalRef = this.bsModalService.show(this.datetimepickerTemplate, {\n animated: true,\n backdrop: 'static',\n class: 'date-picker-modal modal-dialog-centered'\n });\n setTimeout(() => { this.hideOnClick()}, 500);\n }\n\n clear() {\n this.changedValue = null;\n this.triggerChange();\n this.hideModal();\n }\n\n setToday() {\n const today = moment().startOf('day').toDate();\n this.onDateUpdate(today);\n }\n\n reset() {\n this.changedValue = this._value;\n }\n\n hideModal() {\n if (this.modalRef?.id) {\n this.bsModalService.hide(this.modalRef.id);\n }\n }\n\n onCancelClick() {\n this.changedValue = this._value;\n this.hideModal();\n }\n\n onOkClick() {\n if (this.validateSelectedDate()) {\n this.triggerChange();\n }\n this.hideModal();\n }\n\n triggerChange() {\n if (this.value !== this.changedValue) {\n this.change.emit(this.changedValue);\n }\n }\n\n ngAfterViewInit(): void {\n\n }\n\n ngOnDestroy(): void {\n this.hideModal();\n }\n\n}\n\n\n@Component({\n selector: 'wm-timepicker',\n template: `\n <wm-pickergroup>\n <wm-picker\n [options]=\"options.hour\"\n [selectedValue]=\"hour\"\n (change)=\"set($event, 'HOUR')\"></wm-picker>\n <span class=\"app-time-separator\">:</span>\n <wm-picker\n [options]=\"options.minute\"\n [selectedValue]=\"minute\"\n (change)=\"set($event, 'MINUTE')\"></wm-picker>\n <span class=\"app-time-separator\">:</span>\n <wm-picker\n [options]=\"options.minute\"\n [selectedValue]=\"second\"\n (change)=\"set($event, 'SECOND')\"></wm-picker>\n </wm-pickergroup>\n `\n})\nexport class TimePickerComponent implements AfterViewInit {\n\n options = {\n hour: [],\n minute: [],\n second: [],\n meridian: ['AM', 'PM']\n };\n\n @Input()\n private value = new Date();\n\n @Input()\n private min: Date = null;\n\n @Input()\n private max: Date = null;\n\n @Output() change = new EventEmitter<Date>();\n\n constructor(\n protected inj: Injector) {\n this.options.hour = this.populateNumbers(0, 23);\n this.options.minute = this.populateNumbers(0, 59);\n this.options.second = this.populateNumbers(0, 59);\n }\n\n private populateNumbers(start: number, to: number) {\n const arr = [];\n for(let i = start; i <= to; i++) {\n arr.push({\n label: (i < 10 ? '0' : '') + i,\n value: i\n })\n }\n return arr;\n }\n\n set({index, value}, unit: 'HOUR' | 'MINUTE' | 'SECOND' | 'MERIDIAN') {\n if (unit === 'HOUR') {\n this.value = moment(this.value).hour(parseInt(value)).toDate();\n } else if (unit === 'MINUTE') {\n this.value = moment(this.value).minute(parseInt(value)).toDate();\n } else if (unit === 'SECOND') {\n this.value = moment(this.value).second(parseInt(value)).toDate();\n } else if (unit === 'MERIDIAN') {\n this.value = moment(this.value).minute(value).toDate();\n }\n if (this.min && this.value < this.min) {\n this.value = this.min;\n }\n if (this.max && this.value > this.max) {\n this.value = this.max;\n }\n this.change.emit(this.value);\n }\n\n get hour() {\n return moment(this.value).hour();\n }\n\n get minute() {\n return moment(this.value).minute();\n }\n\n get second() {\n return moment(this.value).second();\n }\n\n get meridian() {\n return 'AM';\n }\n\n public onDateUpdate(newVal) {\n debugger;\n }\n\n ngAfterViewInit(): void {\n\n }\n\n}\n","import {AfterViewInit, Directive, Inject, Injector, OnDestroy, Optional, ViewChild} from '@angular/core';\nimport {AbstractControl, Validator} from '@angular/forms';\nimport {Subscription} from 'rxjs';\nimport {FormStyle, getLocaleDayPeriods, TranslationWidth} from '@angular/common';\nimport {BsDropdownDirective} from 'ngx-bootstrap/dropdown';\nimport {TimepickerComponent, TimepickerConfig} from 'ngx-bootstrap/timepicker';\nimport {\n AbstractI18nService,\n getDateObj,\n getFormattedDate,\n getNativeDateObject,\n hasCordova,\n isIos,\n isMobile,\n setAttr\n} from '@wm/core';\n\nimport {getContainerTargetClass, ToDatePipe} from '@wm/components/base';\nimport {BaseFormCustomComponent} from '@wm/components/input';\nimport {BsDatepickerConfig, BsDatepickerDirective} from 'ngx-bootstrap/datepicker';\nimport {DateTimePickerComponent} from './date-time//date-time-picker.component';\nimport {filter, forEach, get, includes, isNaN as _isNaN, isString, isUndefined, parseInt, split} from \"lodash-es\";\n\ndeclare const $;\ndeclare const moment;\n\nconst CURRENT_DATE = 'CURRENT_DATE';\nconst months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\nconst DATEPICKER_DROPDOWN_OPTIONS = {\n BUTTON: 'button',\n DEFAULT: 'default'\n};\nconst DATAENTRYMODE_DROPDOWN_OPTIONS = {\n PICKER: 'picker',\n DEFAULT: 'default'\n};\n\n// Providing meridians to the timepicker baesd on selected locale\nexport function getTimepickerConfig(i18nService): TimepickerConfig {\n return Object.assign(new TimepickerConfig(), {\n meridians: getLocaleDayPeriods(i18nService.getSelectedLocale(), FormStyle.Format, TranslationWidth.Abbreviated)\n });\n}\n\n@Directive()\nexport abstract class BaseDateTimeComponent extends BaseFormCustomComponent implements AfterViewInit, OnDestroy, Validator {\n public required: boolean;\n public disabled: boolean;\n public tabindex: any;\n public name: string;\n public autofocus: boolean;\n public readonly: boolean;\n public placeholder: string;\n public shortcutkey: string;\n public _triggeredByUser: boolean;\n\n public excludedays: string;\n public excludedDaysToDisable: Array<number>;\n public excludedDatesToDisable: Array<Date>;\n public excludedates;\n public outputformat;\n public mindate;\n public maxdate;\n public dataentrymode;\n protected activeDate;\n private elementScope;\n public datepattern;\n public timepattern;\n protected showseconds: boolean;\n protected ismeridian: boolean;\n protected meridians: any;\n protected datePipe;\n protected i18nService;\n public isReadOnly = false;\n protected selectedLocale: string;\n public selectfromothermonth: boolean;\n public todaybutton: boolean;\n public clearbutton: boolean;\n public removeKeyupListener;\n public loadNativeDateInput;\n public showcustompicker;\n public next;\n public prev;\n public clicked = false;\n\n protected dateNotInRange: boolean;\n protected timeNotInRange: boolean;\n protected invalidDateTimeFormat: boolean;\n\n private dateOnShowSubscription: Subscription;\n private cancelLocaleChangeSubscription;\n public get timeZone() { return this.inj.get(AbstractI18nService).getTimezone(this); }\n\n formatsByLocale = {'timezone': ''};\n\n /**\n * This is an internal property used to map the containerClass, showWeekNumbers etc., to the bsDatepicker\n */\n public _dateOptions: BsDatepickerConfig = new BsDatepickerConfig();\n protected bsDatePickerDirective: BsDatepickerDirective;\n\n @ViewChild(BsDropdownDirective) protected bsDropdown;\n @ViewChild(TimepickerComponent) protected bsTimePicker;\n @ViewChild(DateTimePickerComponent) datetimepickerComponent;\n private validateType: string;\n containerTarget: string;\n\n constructor(inj: Injector, WIDGET_CONFIG, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n this.i18nService = this.inj.get(AbstractI18nService);\n this.invokeEventCallback('beforeload');\n\n this.datePipe = this.inj.get(ToDatePipe);\n this.selectedLocale = this.i18nService.getSelectedLocale();\n this._dateOptions.todayPosition = 'left';\n this._dateOptions.clearPosition = 'right';\n this.meridians = getLocaleDayPeriods(this.selectedLocale, FormStyle.Format, TranslationWidth.Abbreviated);\n this.loadNativeDateInput = isMobile() && !this.showcustompicker;\n\n this.cancelLocaleChangeSubscription = this.getAppInstance().subscribe(\"locale-changed\", (locale) => {\n this.datePipe.datePipe.locale = locale.angular;\n this._dateOptions.todayButtonLabel = this.i18nService.getLocalizedMessage('LABEL_TODAY_DATE');\n this._dateOptions.clearButtonLabel = this.i18nService.getLocalizedMessage('LABEL_CLEAR_DATE');\n });\n }\n\n\n /**\n * returns true if the input value is default (i.e open date picker on input click)\n * @param1 dropdownvalue, user selected value (by default datepicker opens on input click)\n * **/\n protected isDropDownDisplayEnabledOnInput(dropdownvalue) {\n return dropdownvalue === DATEPICKER_DROPDOWN_OPTIONS.DEFAULT;\n }\n\n /**\n * returns true if the input value is default (i.e Data entry can be done either by selecting from the Date/DateTime/Time Picker or by entering manually using the keyboard. )\n * @param1 dropdownvalue, user selected value\n * **/\n protected isDataEntryModeEnabledOnInput(dropdownvalue) {\n return dropdownvalue === DATAENTRYMODE_DROPDOWN_OPTIONS.DEFAULT;\n }\n /**\n * This method is used to show validation message depending on the isNativePicker flag.\n */\n private showValidation($event, displayValue, isNativePicker, msg) {\n if (isNativePicker) {\n console.warn('min max date validation failed ', msg);\n return $($event.target).val(displayValue);\n }\n }\n\n resetDisplayInput() {\n $(this.nativeElement).find('.display-input').val('');\n }\n\n public validate(c: AbstractControl) {\n if (this.invalidDateTimeFormat) {\n return {\n invalidDateTimeFormat: {\n valid: false\n }\n };\n }\n if (!isUndefined(this.dateNotInRange) && this.dateNotInRange) {\n return {\n dateNotInRange: {\n valid: false\n },\n };\n }\n if (!isUndefined(this.timeNotInRange) && this.timeNotInRange) {\n return {\n timeNotInRange: {\n valid: false\n },\n };\n }\n /* WMS-18269 | Extending the existing validation for 'required' */\n if (this['show'] && this['required']) {\n return !!c.value ? null : { required: true };\n }\n this.validateType = '';\n return null;\n }\n\n /**\n * This method is used to validate date pattern and time pattern\n * If user selects one pattern in design time and if he tries to enter the date in another pattern then the device is throwing an error\n */\n protected formatValidation(newVal, inputVal, isNativePicker?: boolean) {\n const pattern = this.datepattern || this.timepattern;\n const timeZone = this.timeZone;\n const formattedDate = getFormattedDate(this.datePipe, newVal, pattern, timeZone, null, null, this);\n inputVal = inputVal.trim();\n if (inputVal) {\n if (pattern === 'timestamp') {\n if (!_isNaN(inputVal) && parseInt(inputVal) !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.validateType = 'incorrectformat';\n this.invokeOnChange(this.datavalue, undefined, false);\n return false;\n }\n } else {\n if (isNativePicker) {\n // format the date value only when inputVal is obtained from $event.target.value, as the format doesnt match.\n inputVal = getFormattedDate(this.datePipe, inputVal, pattern, timeZone);\n }\n if (inputVal !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.validateType = 'incorrectformat';\n this.invokeOnChange(this.datavalue, undefined, false);\n return false;\n }\n }\n\n }\n return true;\n }\n\n /**\n * This method is used to validate min date, max date, exclude dates and exclude days\n * In mobile if invalid dates are entered, device is showing an alert.\n * In web if invalid dates are entered, device is showing validation message.\n */\n protected minDateMaxDateValidationOnInput(newVal, $event?: Event, displayValue?: string, isNativePicker?: boolean) {\n if (newVal) {\n const dateTimeVal = newVal;\n newVal = moment(newVal).startOf('day').toDate();\n const minDate = moment(getDateObj(this.mindate)).startOf('day').toDate();\n const maxDate = moment(getDateObj(this.maxdate)).startOf('day').toDate();\n if (this.mindate && newVal < minDate) {\n const msg = `${this.appLocale.LABEL_MINDATE_VALIDATION_MESSAGE} ${this.mindate}.`;\n this.invokeOnChange(this.datavalue, undefined, false);\n if (isNativePicker && getFormattedDate(this.datePipe, minDate, this.datepattern, this.timeZone, null, null, this) === displayValue) {\n return $($event.target).val(displayValue);\n }\n this.dateNotInRange = true;\n this.validateType = 'mindate';\n return this.showValidation($event, displayValue, isNativePicker, msg);\n }\n if (this.maxdate && newVal > maxDate) {\n const msg = `${this.appLocale.LABEL_MAXDATE_VALIDATION_MESSAGE} ${this.maxdate}.`;\n this.invokeOnChange(this.datavalue, undefined, false);\n if (isNativePicker && getFormattedDate(this.datePipe, maxDate, this.datepattern, this.timeZone, null, null, this) === displayValue) {\n return $($event.target).val(displayValue);\n }\n this.dateNotInRange = true;\n this.validateType = 'maxdate';\n return this.showValidation($event, displayValue, isNativePicker, msg);\n }\n if (this.excludedates) {\n let excludeDatesArray;\n if (isString(this.excludedates)) {\n excludeDatesArray = split(this.excludedates, ',');\n } else {\n excludeDatesArray = this.excludedates;\n }\n excludeDatesArray = excludeDatesArray.map(d => getFormattedDate(this.datePipe, d, this.datepattern, this.timeZone, null, null, this));\n if (excludeDatesArray.indexOf(getFormattedDate(this.datePipe, dateTimeVal, this.datepattern, this.timeZone, null, null, this)) > -1) {\n this.dateNotInRange = true;\n this.validateType = 'excludedates';\n this.invokeOnChange(this.datavalue, undefined, false);\n return;\n }\n }\n if (this.excludedays) {\n const excludeDaysArray = split(this.excludedays, ',');\n const day = get(dateTimeVal, 'getDay') ? dateTimeVal.getDay() : dateTimeVal;\n if (excludeDaysArray.indexOf(day.toString()) > -1) {\n this.dateNotInRange = true;\n this.validateType = 'excludedays';\n this.invokeOnChange(this.datavalue, undefined, false);\n return;\n }\n }\n }\n\n if (!isNativePicker) {\n this.dateNotInRange = false;\n this.invokeOnChange(this.datavalue, undefined, false);\n }\n }\n\n /**\n * This method is used to highlight the current date\n */\n protected hightlightToday(newDate) {\n const activeMonth = $(`.bs-datepicker-head .current`).first().text();\n const activeYear = $(\".bs-datepicker-head .current\").eq(1).text();\n const month = new Date(newDate).toLocaleString('default', { month: 'long' });\n const year = newDate.getFullYear().toString();\n\n if(activeMonth == month && activeYear == new Date().getFullYear() && newDate.getDate() === new Date().getDate() && newDate.getMonth() === new Date().getMonth() && newDate.getFullYear() === new Date().getFullYear()) {\n const toDay = new Date().getDate().toString();\n filter($(`span:contains(${toDay})`).not('.is-other-month'), (obj) => {\n if ($(obj).text() === toDay) {\n $(obj).addClass('current-date text-info');\n }\n });\n }\n }\n\n /**\n * This method is used to find the new date is from another year or not\n * @param newDate - newly selected date value\n */\n private isOtheryear(newDate) {\n return (newDate.getMonth() === 0 && this.activeDate.getMonth() === 11) || (newDate.getMonth() === 11 && this.activeDate.getMonth() === 0);\n }\n\n public showDatePickerModal(bsDataval) {\n bsDataval ? this.activeDate = bsDataval : this.activeDate = new Date();\n this.setNextData(this.activeDate);\n this.datetimepickerComponent.show();\n setTimeout(() => {\n this.addDatepickerMouseEvents();\n this.setActiveDateFocus(this.activeDate, true);\n }, 500);\n return ;\n }\n\n /**\n * This method is used to load other month days or other month or other year\n * @param btnClass - class(previous/next) of the button which we have to click\n * @param timePeriod - String value decides to load other month days or other month or other year\n */\n private goToOtherMonthOryear(btnClass, timePeriod) {\n const $node = $(`.bs-datepicker-head .${btnClass}`);\n if ($node.attr('disabled')) {\n return;\n }\n $node.trigger('click');\n if (timePeriod === 'days') {\n this.loadDays();\n } else if (timePeriod === 'month') {\n this.loadMonths();\n } else if (timePeriod === 'year') {\n this.loadYears();\n }\n }\n\n /**\n * This method is used to set focus for active day\n * @param newDate - newly selected date value\n * @param isMouseEvent - boolean value represents the event is mouse event/ keyboard event\n */\n private setActiveDateFocus(newDate, isMouseEvent?: boolean) {\n this.setNextData(newDate);\n this.clicked = false;\n const activeMonth = this.activeDate.getMonth();\n // check for keyboard event\n if (!isMouseEvent) {\n if (newDate.getMonth() < activeMonth) {\n this.isOtheryear(newDate) ? this.goToOtherMonthOryear('next', 'days') : this.goToOtherMonthOryear('previous', 'days');\n } else if (newDate.getMonth() > activeMonth) {\n this.isOtheryear(newDate) ? this.goToOtherMonthOryear('previous', 'days') : this.goToOtherMonthOryear('next', 'days');\n }\n }\n setTimeout(() => {\n const newDay = newDate.getDate().toString();\n filter($(`span:contains(${newDay})`).not('.is-other-month'), (obj) => {\n const activeMonth = $(`.bs-datepicker-head .current`).first().text();\n const activeYear = $(\".bs-datepicker-head .current\").eq(1).text();\n const monthName = new Date().toLocaleString('default', { month: 'long' });\n if ($(obj).text() === newDay && activeMonth == monthName && activeYear == new Date().getFullYear()) {\n if ($(obj).hasClass('selected')) {\n $(obj).parent().attr('aria-selected', 'true');\n }\n $(obj).attr('aria-label', moment(newDate).format('dddd, MMMM Do YYYY'));\n $('[bsdatepickerdaydecorator]').not('.is-other-month').attr('tabindex', '-1');\n $(obj).attr('tabindex', '0');\n $(obj).focus();\n this.activeDate = newDate;\n }\n });\n if (newDate.getDate() === new Date().getDate() && newDate.getMonth() === new Date().getMonth() && newDate.getFullYear() === new Date().getFullYear()) {\n this.hightlightToday(newDate);\n }\n });\n\n }\n\n private getMonth(date, inc) {\n const currentMonth = new Date(date);\n\n let month = currentMonth.getMonth();\n const year = currentMonth.getFullYear();\n\n month += inc;\n\n const newDate = new Date(year, month);\n\n const fullMonth = newDate.toLocaleString('en-US', { month: 'long' });\n\n return {\n date: newDate,\n fullMonth: fullMonth\n };\n }\n\n /**\n * This method sets focus for months/days depending on the loaded datepicker table\n */\n private setFocusForMonthOrDay() {\n const activeMonthOrYear = $(`.bs-datepicker-head .current`).first().text();\n const datePickerBody = $('.bs-datepicker-body');\n if (datePickerBody.find('table.months').length > 0) {\n if (parseInt(activeMonthOrYear) !== this.activeDate.getFullYear()) {\n this.loadMonths();\n }\n const newDate = new Date(parseInt(activeMonthOrYear), this.activeDate.getMonth(), this.activeDate.getDate());\n this.setActiveMonthFocus(newDate, true);\n } else if (datePickerBody.find('table.days').length > 0) {\n const newMonth = months.indexOf(activeMonthOrYear);\n if (newMonth !== this.activeDate.getMonth()) {\n this.loadDays();\n }\n const newDate = new Date(this.activeDate.getFullYear(), newMonth, 1);\n this.setActiveDateFocus(newDate, true);\n }\n }\n\n /**\n * This method sets focus for months/years depending on the loaded datepicker table\n */\n private setFocusForCurrentMonthOryear() {\n const datePickerBody = $('.bs-datepicker-body');\n if (datePickerBody.find('table.months').length > 0) {\n this.loadMonths();\n this.setActiveMonthFocus(this.activeDate, true);\n } else if (datePickerBody.find('table.years').length > 0) {\n this.loadYears();\n this.setActiveYearFocus(this.activeDate, true);\n }\n }\n\n /**\n * This method sets focus for months/years/days depending on the loaded datepicker table\n */\n private setFocusForDate(count) {\n const datePickerBody = $('.bs-datepicker-body');\n if (datePickerBody.find('table.months').length > 0) {\n this.loadMonths();\n const newDate = new Date(this.activeDate.getFullYear() + count, 0, this.activeDate.getDate());\n this.setActiveMonthFocus(newDate, true);\n } else if (datePickerBody.find('table.years').length > 0) {\n this.loadYears();\n const startYear = datePickerBody.find('table.years span').first().text();\n const newDate = new Date(parseInt(startYear), this.activeDate.getMonth(), this.activeDate.getDate());\n this.setActiveYearFocus(newDate, true);\n } else if (datePickerBody.find('table.days').length > 0) {\n this.loadDays();\n const newDate = new Date(this.activeDate.getFullYear(), this.activeDate.getMonth() + count, 1);\n this.setActiveDateFocus(newDate, true);\n }\n }\n\n /**\n * This method is used to add keyboard events while opening the date picker\n * @param scope - scope of the date/datetime widget\n * @param isDateTime - boolean value represents the loaded widget is date or datetime\n */\n protected addDatepickerKeyboardEvents(scope, isDateTime) {\n this.elementScope = scope;\n const dateContainer = document.querySelector(`.${scope.dateContainerCls}`) as HTMLElement;\n setAttr(dateContainer, 'tabindex', '0');\n dateContainer.onkeydown = (event) => {\n // Check for Shift+Tab key or Tab key or escape\n if (event.key === 'Escape') {\n this.elementScope.hideDatepickerDropdown();\n const displayInputElem = this.elementScope.nativeElement.querySelector('.display-input') as HTMLElement;\n setTimeout(() => displayInputElem.focus());\n }\n };\n this.loadDays();\n this.setActiveDateFocus(this.activeDate);\n }\n private setNextData(nextDate) {\n this.next = this.getMonth(nextDate, 1);\n this.prev = this.getMonth(nextDate, -1);\n }\n /**\n * This method is used to add tabindex, keybord and mouse events for days\n */\n private loadDays() {\n setTimeout(() => {\n $('[bsdatepickerdaydecorator]').not('.is-other-month').attr('tabindex', '0');\n // if (this.clicked === false) {\n // this.next = this.getMonth(this.activeDate, 1);\n // this.prev = this.getMonth(this.activeDate, -1);\n // }\n this.addKeyBoardEventsForDays();\n this.addDatepickerMouseEvents();\n });\n }\n\n /**\n * This method sets keyboard events for days\n */\n private addKeyBoardEventsForDays() {\n const datePickerBody = $('.bs-datepicker-body');\n datePickerBody.keydown((event) => {\n let newdate;\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(+7, 'days').toDate();\n this.setActiveDateFocus(newdate);\n } else if (event.ctrlKey && event.key === 'ArrowUp') {\n // clicking on table header month name to load list of months\n $('.bs-datepicker-head .current').first().click();\n this.loadMonths();\n this.setActiveMonthFocus(this.activeDate);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(-7, 'days').toDate();\n this.setActiveDateFocus(newdate);\n } else if (event.key === 'ArrowLeft') {\n newdate = moment(this.activeDate).add(-1, 'days').toDate();\n this.setActiveDateFocus(newdate);\n } else if (event.key === 'ArrowRight') {\n newdate = moment(this.activeDate).add(+1, 'days').toDate();\n this.setActiveDateFocus(newdate);\n } else if (event.key === 'PageUp') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(-1, 'month').toDate();\n this.setActiveDateFocus(newdate);\n } else if (event.key === 'PageDown') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(+1, 'month').toDate();\n this.setActiveDateFocus(newdate);\n } else if (event.key === 'Enter') {\n if ($(document.activeElement).hasClass('disabled')) {\n return;\n }\n $(document.activeElement).click();\n this.elementScope.hideDatepickerDropdown();\n const displayInputElem = this.elementScope.nativeElement.querySelector('.display-input') as HTMLElement;\n setTimeout(() => displayInputElem.focus());\n }\n });\n this.focusBlurDatePickerHeadButtons();\n }\n\n private focusBlurDatePickerHeadButtons() {\n const datePickerHeadButton = $('.bs-datepicker-head button');\n datePickerHeadButton.on('focus', function() { $(this).css('background-color', '#9AA0A3'); });\n datePickerHeadButton.on('blur', function() { $(this).css('background-color', ''); });\n }\n\n /**\n * This method is used to add tabindex, keybord and mouse events for months\n */\n private loadMonths() {\n setTimeout(() => {\n this.addKeyBoardEventsForMonths();\n this.addDatepickerMouseEvents();\n });\n }\n\n /**\n * This method sets keyboard events for months\n */\n private addKeyBoardEventsForMonths() {\n $('.bs-datepicker-body').keydown((event) => {\n let newdate;\n if ((event.ctrlKey && event.key === 'ArrowDown') || event.key === 'Enter') {\n if ($(document.activeElement).parent().hasClass('disabled')) {\n return;\n }\n $(document.activeElement).click();\n this.loadDays();\n const newDate = new Date(this.activeDate.getFullYear(), this.activeDate.getMonth(), 1);\n this.setActiveDateFocus(newDate);\n } else if (event.ctrlKey && event.key === 'ArrowUp') {\n // clicking on table header year to load list of years\n $('.bs-datepicker-head .current').first().click();\n this.loadYears();\n this.setActiveYearFocus(this.activeDate);\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(+3, 'month').toDate();\n this.setActiveMonthFocus(newdate);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(-3, 'month').toDate();\n this.setActiveMonthFocus(newdate);\n } else if (event.key === 'ArrowLeft') {\n newdate = moment(this.activeDate).add(-1, 'month').toDate();\n this.setActiveMonthFocus(newdate);\n } else if (event.key === 'ArrowRight') {\n newdate = moment(this.activeDate).add(+1, 'month').toDate();\n this.setActiveMonthFocus(newdate);\n }\n });\n this.focusBlurDatePickerHeadButtons();\n }\n\n /**\n * This method is used to add tabindex, keybord and mouse events for years\n */\n private loadYears() {\n setTimeout(() => {\n this.addKeyBoardEventsForYears();\n this.addDatepickerMouseEvents();\n });\n }\n\n /**\n * This method is used to set focus for active month\n */\n private setActiveMonthFocus(newDate, isMoouseEvent?: boolean) {\n this.setNextData(newDate);\n const newMonth = months[newDate.getMonth()];\n // check for keyboard event\n if (!isMoouseEvent) {\n if (newDate.getFullYear() < this.activeDate.getFullYear()) {\n this.goToOtherMonthOryear('previous', 'month');\n } else if (newDate.getFullYear() > this.activeDate.getFullYear()) {\n this.goToOtherMonthOryear('next', 'month');\n }\n }\n setTimeout(() => {\n $(`.bs-datepicker-body table.months span`).attr('tabindex', '-1');\n $(`.bs-datepicker-body table.months span:contains(${newMonth})`).attr('tabindex', '0');\n $(`.bs-datepicker-body table.months span:contains(${newMonth})`).focus();\n this.activeDate = newDate;\n });\n }\n\n /**\n * This method sets keyboard events for years\n */\n private addKeyBoardEventsForYears() {\n $('.bs-datepicker-body').keydown((event) => {\n let newdate;\n if ((event.ctrlKey && event.key === 'ArrowDown') || event.key === 'Enter') {\n if ($(document.activeElement).parent().hasClass('disabled')) {\n return;\n }\n $(document.activeElement).click();\n this.loadMonths();\n this.setActiveMonthFocus(this.activeDate);\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(+4, 'year').toDate();\n this.setActiveYearFocus(newdate);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(-4, 'year').toDate();\n this.setActiveYearFocus(newdate);\n } else if (event.key === 'ArrowLeft') {\n newdate = moment(this.activeDate).add(-1, 'year').toDate();\n this.setActiveYearFocus(newdate);\n } else if (event.key === 'ArrowRight') {\n newdate = moment(this.activeDate).add(+1, 'year').toDate();\n this.setActiveYearFocus(newdate);\n }\n });\n this.focusBlurDatePickerHeadButtons();\n }\n\n /**\n * This method is used to set focus for active year\n */\n private setActiveYearFocus(newDate, isMouseEvent?: boolean) {\n const newYear = newDate.getFullYear();\n const datePickerYears = $('.bs-datepicker-body table.years span');\n const startYear = datePickerYears.first().text();\n const endYear = datePickerYears.last().text();\n // check for keyboard event\n if (!isMouseEvent) {\n if (newDate.getFullYear() < parseInt(startYear)) {\n this.goToOtherMonthOryear('previous', 'year');\n } else if (newDate.getFullYear() > parseInt(endYear)) {\n this.goToOtherMonthOryear('next', 'year');\n }\n }\n setTimeout(() => {\n $(`.bs-datepicker-body table.years span`).attr('tabindex', '-1');\n $(`.bs-datepicker-body table.years span:contains(${newYear})`).attr('tabindex', '0');\n $(`.bs-datepicker-body table.years span:contains(${newYear})`).focus();\n this.activeDate = newDate;\n });\n }\n\n /**\n * This method sets focus for timepicker first input field(hours field) while opening time picker\n * @param scope - scope of the time picker widget\n */\n protected focusTimePickerPopover(scope) {\n this.elementScope = scope;\n // setTimeout is used so that by then time input has the updated value. focus is setting back to the input field\n this.elementScope.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n $('timepicker .form-group').first().find('> input.form-control').focus();\n });\n });\n\n\n }\n /**\n * This function sets the keyboard events to Timepicker popup\n */\n protected bindTimePickerKeyboardEvents() {\n setTimeout(() => {\n const $timepickerPopup = $('body').find('> bs-dropdown-container timepicker');\n $timepickerPopup.attr('tabindex', 0);\n this.addEventsOnTimePicker($timepickerPopup);\n });\n }\n\n protected focusOnInputEl() {\n if ($(this.nativeElement).closest('.caption-floating').length > 0) {\n setTimeout(() => {\n $(this.nativeElement).find('.app-textbox').focus();\n }, 100);\n }\n }\n\n /**\n * This function checks whether the given date is valid or not\n * @returns boolean value, true if date is valid else returns false\n */\n private isValidDate(date) {\n return date && date instanceof Date && !isNaN(date.getTime());\n }\n\n /**\n * This function checks whether the given time is valid or not\n */\n private timeFormatValidation() {\n const enteredDate = $(this.nativeElement).find('input').val();\n const newVal = getNativeDateObject(enteredDate, {meridians: this.meridians, pattern: this.datepattern});\n if (!this.formatValidation(newVal, enteredDate)) {\n return;\n }\n this.invalidDateTimeFormat = false;\n this.invokeOnChange(this.datavalue, undefined, false);\n }\n\n private updateTimeValue(el, value, fieldName) {\n let minEl = el.find('input[aria-label=\"minutes\"]');\n let secEl = el.find('input[aria-label=\"seconds\"]');\n minEl.value = secEl.value = '00';\n if (value.length < 2) {\n setTimeout(() => {\n fieldName === 'minutes' ? this.bsTimePicker.updateMinutes(minEl) : this.bsTimePicker.updateSeconds(secEl);\n }, 500);\n } else {\n fieldName === 'minutes' ? this.bsTimePicker.updateMinutes(minEl) : this.bsTimePicker.updateSeconds(secEl);\n }\n }\n\n /**\n * This function sets the events to given element\n * @param $el - element on which the event is added\n */\n private addEventsOnTimePicker($el: JQuery) {\n const inputFields = $el.find('.bs-timepicker-field');\n // WMS-19382: update minutes and seconds to 0 when we enter hour value\n inputFields.first().on('keyup', evt => {\n const hourValue = (evt.target as any).value;\n forEach(inputFields, (field, index) => {\n // @ts-ignore\n if (evt.target !== field && field.value === '' && hourValue.length) {\n const fieldName = index === 1 ? 'minutes' : 'seconds';\n this.updateTimeValue($el, hourValue, fieldName);\n }\n });\n });\n this.removeKeyupListener = () => {\n inputFields.first().off('keyup');\n };\n $el.on('keydown', event => {\n const $target = $(event.target);\n const $parent = $target.parent();\n const elementScope = this.elementScope;\n\n let stopPropogation, preventDefault;\n\n if (event.key === 'Escape') {\n elementScope.hideTimepickerDropdown();\n }\n\n if ($target.hasClass('bs-timepicker-field')) {\n if ($parent.is(':first-child')) {\n if ((event.shiftKey && event.key === 'Tab') || event.key === 'Enter' || event.key === 'Escape') {\n elementScope.setIsTimeOpen(false);\n this.focus();\n stopPropogation = true;\n preventDefault = true;\n }\n } else if ($parent.is(':last-child') || ($parent.next().next().find('button.disabled').length)) {\n if (event.key === 'Tab' || event.key === 'Escape' || event.key === 'Enter') {\n elementScope.setIsTimeOpen(false);\n this.focus();\n stopPropogation = true;\n preventDefault = true;\n }\n } else {\n if (event.key === 'Enter' || event.key === 'Escape') {\n elementScope.setIsTimeOpen(false);\n this.focus();\n stopPropogation = true;\n preventDefault = true;\n }\n }\n if (stopPropogation) {\n event.stopPropagation();\n }\n if (preventDefault) {\n event.preventDefault();\n }\n if (elementScope.mintime && elementScope.maxtime && !this.isValidDate(elementScope.bsTimeValue)) {\n if (event.key === 'ArrowDown') {\n elementScope.bsTimeValue = elementScope.maxTime;\n } else if (event.key === 'ArrowUp') {\n elementScope.bsTimeValue = elementScope.minTime;\n }\n }\n if (event.key === 'Tab') {\n this.invalidDateTimeFormat = false;\n this.invokeOnChange(this.datavalue, undefined, false);\n const pattern = this.datepattern || this.timepattern;\n if (getFormattedDate(elementScope.datePipe, elementScope.bsTimeValue, pattern, this.timeZone, null, null, this) === elementScope.displayValue) {\n $(this.nativeElement).find('.display-input').val(elementScope.displayValue);\n }\n }\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n this.timeFormatValidation();\n }\n } else if ($target.hasClass('btn-default')) {\n if (event.key === 'Tab' || event.key === 'Escape') {\n elementScope.setIsTimeOpen(false);\n this.focus();\n }\n }\n });\n $el.find('a').on('click', evt => {\n const elementScope = this.elementScope;\n const $target = $(evt.target);\n if (elementScope.mintime && elementScope.maxtime && !this.isValidDate(elementScope.bsTimeValue)) {\n if ($target.find('span').hasClass('bs-chevron-down')) {\n elementScope.bsTimeValue = elementScope.maxTime;\n } else if ($target.find('span').hasClass('bs-chevron-up')) {\n elementScope.bsTimeValue = elementScope.minTime;\n }\n }\n this.timeFormatValidation();\n });\n }\n\n public updateFormat(pattern) {\n if (pattern === 'datepattern') {\n this._dateOptions.dateInputFormat = this.datepattern;\n this.showseconds = includes(this.datepattern, 's');\n this.ismeridian = includes(this.datepattern, 'h');\n } else if (pattern === 'timepattern') {\n this.showseconds = includes(this.timepattern, 's');\n this.ismeridian = includes(this.timepattern, 'h');\n }\n }\n\n getMobileInput() {\n return this.nativeElement.querySelector('.mobile-input') as HTMLElement;\n }\n\n onDateTimeInputBlur() {\n // removing the opacity on blur of the mobile widget\n const displayInputElem = this.getMobileInput();\n if (displayInputElem && !hasCordova()) {\n const children = this.nativeElement.children;\n for (let i = 0; i < children.length; i++) {\n children[i].classList.remove('add-opacity');\n }\n displayInputElem.classList.remove('remove-opacity');\n }\n }\n\n onDateTimeInputFocus(skipFocus: boolean = false): void {\n if (!this.loadNativeDateInput) {\n return;\n }\n const displayInputElem = this.getMobileInput();\n // toggling the classes to show and hide the native widget using opacity\n if (skipFocus && !hasCordova()) {\n const children = this.nativeElement.children;\n for (let i = 0; i < children.length; i++) {\n children[i].classList.add('add-opacity');\n }\n displayInputElem.classList.add('remove-opacity');\n return;\n }\n\n if (displayInputElem && this._triggeredByUser) {\n displayInputElem.focus();\n displayInputElem.click();\n }\n }\n\n getCordovaPluginDatePickerApi() {\n if (isIos()) {\n return get(window, 'cordova.wavemaker.datePicker.selectDate');\n }\n }\n\n /**\n * This method sets the mouse events to Datepicker popup. These events are required when we navigate date picker through mouse.\n */\n private addDatepickerMouseEvents() {\n $(\".bs-datepicker-head .previous span\").attr(\"aria-hidden\", 'true');\n $(\".bs-datepicker-head .next span\").attr(\"aria-hidden\", 'true');\n\n $(\".bs-datepicker-head\").on(\"click\", \".previous\", (event) => {\n this.next = this.getMonth(this.activeDate, 0);\n this.prev = this.getMonth(this.activeDate, -2);\n this.clicked = true;\n // check for original mouse click\n if (event.originalEvent) {\n this.setFocusForDate(-1);\n }\n var prevMon = this.getMonth(this.activeDate, -1);\n\n setTimeout(() => {\n $(\".bs-datepicker-head .previous span\").attr(\"aria-hidden\", 'true');\n $(\".bs-datepicker-head .next span\").attr(\"aria-hidden\", 'true');\n $(\".bs-datepicker-head .next\").attr('aria-label', `Next Month, ${this.next.fullMonth} ${this.next.date.getFullYear()}`);\n $(\".bs-datepicker-head .previous\").attr('aria-label', `Previous Month, ${this.prev.fullMonth} ${this.prev.date.getFullYear()}`);\n $('.bs-datepicker-head .current').first().append(`<h2 aria-hidden=\"false\" aria-atomic=\"true\" aria-live='polite' class=\"sr-only\">Changed to Previous Month, ${prevMon.fullMonth} and year ${prevMon.date.getFullYear()}</h2>`);\n $('.bs-datepicker-head').on('focus', '.current', function () {\n $('.bs-datepicker-head .current').find('h2').remove();\n })\n $(`.bs-datepicker-head .previous`).focus();\n\n });\n\n });\n $(\".bs-datepicker-head\").on(\"click\", \".next\", (event) => {\n this.next = this.getMonth(this.activeDate, 2);\n this.prev = this.getMonth(this.activeDate, 0);\n this.clicked = true;\n // check for original mouse click\n if (event.originalEvent) {\n this.setFocusForDate(1);\n }\n var nextMon = this.getMonth(this.activeDate, 1);\n setTimeout(() => {\n $(\".bs-datepicker-head .previous span\").attr(\"aria-hidden\", 'true');\n $(\".bs-datepicker-head .next span\").attr(\"aria-hidden\", 'true');\n $(\".bs-datepicker-head .next\").attr('aria-label', `Next Month, ${this.next.fullMonth} ${this.next.date.getFullYear()}`);\n $(\".bs-datepicker-head .previous\").attr('aria-label', `Previous Month, ${this.prev.fullMonth} ${this.prev.date.getFullYear()}`);\n $('.bs-datepicker-head .current').first().append(`<h2 aria-hidden=\"false\" aria-atomic=\"true\" aria-live='polite' class=\"sr-only\">Changed to Next Month, ${nextMon.fullMonth} and year ${nextMon.date.getFullYear()}</h2>`);\n $('.bs-datepicker-head').on('focus', '.current', function () {\n $('.bs-datepicker-head .current').find('h2').remove();\n })\n $(`.bs-datepicker-head .next`).focus();\n });\n\n });\n $(\".bs-datepicker-head\").on(\"click\", \".current\", (event) => {\n // check for original mouse click\n if (event.originalEvent) {\n this.setFocusForCurrentMonthOryear();\n }\n });\n $('.bs-datepicker-body').on(\"click\", \".bs-datepicker-action-buttons\", (event) => {\n event.stopPropagation();\n // check for original mouse click\n if (event.originalEvent) {\n this.setFocusForMonthOrDay();\n }\n });\n // if(!this.clicked) {\n $(\".bs-datepicker-head .next\").attr('aria-label', `Next Month, ${this.next.fullMonth} ${this.next.date.getFullYear()}`);\n $(\".bs-datepicker-head .previous\").attr('aria-label', `Previous Month, ${this.prev.fullMonth} ${this.prev.date.getFullYear()}`);\n // }\n }\n\n blurDateInput(isPickerOpen) {\n const displayInputElem = this.nativeElement.querySelector('.display-input') as HTMLElement;\n if (isPickerOpen) {\n setTimeout(() => displayInputElem.blur());\n }\n }\n\n onPropertyChange(key, nv, ov?) {\n\n if (key === 'tabindex') {\n return;\n }\n if (key === 'required') {\n this._onChange(this.datavalue);\n return;\n }\n if (key === 'datepattern') {\n this.updateFormat(key);\n } else if (key === 'showweeks') {\n this._dateOptions.showWeekNumbers = nv;\n } else if (key === 'mindate') {\n this._dateOptions.minDate = (nv === CURRENT_DATE) ? this.mindate = new Date() : getDateObj(nv);\n this.minDateMaxDateValidationOnInput(this.datavalue);\n } else if (key === 'maxdate') {\n this._dateOptions.maxDate = (nv === CURRENT_DATE) ? this.maxdate = new Date() : getDateObj(nv);\n this.minDateMaxDateValidationOnInput(this.datavalue);\n } else if (key === 'excludedates' || key === 'excludedays') {\n if (this.excludedays) {\n this.excludedDaysToDisable = split(this.excludedays, ',').map((day) => {\n return +day;\n });\n }\n if (this.excludedates) {\n this.excludedDatesToDisable = this.excludedates;\n if (isString(this.excludedates)) {\n // @ts-ignore\n this.excludedDatesToDisable = split(this.excludedates, ',');\n }\n this.excludedDatesToDisable = this.excludedDatesToDisable.map(d => getDateObj(d));\n }\n this.minDateMaxDateValidationOnInput(this.datavalue);\n } else if (key === 'selectfromothermonth') {\n this._dateOptions.selectFromOtherMonth = nv;\n\n } else if (key === 'todaybutton') {\n this._dateOptions.showTodayButton = nv;\n } else if (key === 'clearbutton') {\n this._dateOptions.showClearButton = nv;\n } else if (key === 'todaybuttonlabel') {\n this._dateOptions.todayButtonLabel = this.i18nService.getLocalizedMessage(nv) || nv;\n } else if (key === 'clearbuttonlabel') {\n this._dateOptions.clearButtonLabel = this.i18nService.getLocalizedMessage(nv) || nv;\n } else if (key === 'showcustompicker') {\n this.loadNativeDateInput = isMobile() && !this.showcustompicker;\n } else if (key === 'adaptiveposition') {\n this._dateOptions.adaptivePosition = nv;\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n this.containerTarget = getContainerTargetClass(this.nativeElement);\n this.isReadOnly = this.dataentrymode != 'undefined' && !this.isDataEntryModeEnabledOnInput(this.dataentrymode);\n\n // this mobileinput width varies in ios hence setting width here.\n const mobileInput = this.getMobileInput();\n if (mobileInput) {\n setTimeout(() => {\n mobileInput.style.width = '100%';\n mobileInput.style.height = '100%';\n });\n }\n }\n\n ngOnDestroy() {\n if (this.dateOnShowSubscription) {\n this.dateOnShowSubscription.unsubscribe();\n }\n if(this.cancelLocaleChangeSubscription) {\n this.cancelLocaleChangeSubscription();\n }\n\n super.ngOnDestroy();\n }\n\n public ngOnDetach() {\n this.datetimepickerComponent?.hideModal();\n }\n\n setTimezone(locale) {\n this.i18nService.setTimezone(locale, this);\n }\n}\n","import {PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget} from '@wm/components/base';\nimport {FormWidgetType} from '@wm/core';\n\nexport const dateProps = new Map(\n [\n ['autofocus', PROP_BOOLEAN],\n ['class', PROP_STRING],\n ['dataentrymode', { value: 'default', ...PROP_STRING }],\n ['datavaluesource', PROP_ANY],\n ['datavalue', PROP_STRING],\n ['datepattern', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['excludedays', PROP_STRING],\n ['excludedates', PROP_STRING],\n ['hint', PROP_STRING],\n ['arialabel', PROP_STRING],\n ['maxdate', PROP_STRING],\n ['mindate', PROP_STRING],\n ['name', PROP_STRING],\n ['outputformat', { value: 'yyyy-MM-dd', ...PROP_STRING }],\n ['placeholder', { value: 'Select Date', ...PROP_STRING }],\n ['readonly', PROP_BOOLEAN],\n ['required', PROP_BOOLEAN],\n ['shortcutkey', PROP_STRING],\n ['show', { value: true, ...PROP_BOOLEAN }],\n ['showdropdownon', { value: 'default', ...PROP_STRING }],\n ['showbuttonbar', { value: true, ...PROP_BOOLEAN }], // TODO not addressed\n ['showcustompicker', { value: false, ...PROP_BOOLEAN }],\n ['showindevice', { displayType: 'inline-block', value: 'all', ...PROP_STRING }],\n ['showweeks', { value: false, ...PROP_BOOLEAN }],\n ['tabindex', { value: 0, ...PROP_NUMBER }],\n ['selectfromothermonth', { value: true, ...PROP_BOOLEAN }],\n ['todaybutton', { value: true, ...PROP_BOOLEAN }],\n ['clearbutton', { value: true, ...PROP_BOOLEAN }],\n ['adaptiveposition', {value: true, ...PROP_BOOLEAN}],\n ['todaybuttonlabel', { value: 'LABEL_TODAY_DATE', ...PROP_STRING }],\n ['clearbuttonlabel', { value: 'LABEL_CLEAR_DATE', ...PROP_STRING }],\n ['showdateformatasplaceholder', PROP_BOOLEAN],\n\n ]\n);\n\nexport const registerProps = () => {\n register(\n 'wm-date',\n dateProps\n );\n registerFormWidget(\n FormWidgetType.DATE,\n new Map(dateProps)\n );\n};\n","import IMask from \"imask\";\ndeclare const moment;\n\nexport function validateTheMaskedDate (format, locale) {\n if(format == 'timestamp') {\n return false;\n }\n let modifiedFormat = format.toUpperCase().replace(/E/g, 'd');\n if((modifiedFormat.split('D').length - 1) === 1) {\n modifiedFormat = modifiedFormat.replace('D', 'DD');\n }\n if((modifiedFormat.split('M').length - 1) === 1 ) {\n modifiedFormat = modifiedFormat.replace('M', 'MM');\n }\n const parseFn= str => {\n return moment(str, modifiedFormat).toDate();\n };\n const formatFn = date => {\n return moment(date, modifiedFormat).format(modifiedFormat);\n };\n return {\n mask: Date,\n pattern: modifiedFormat,\n format: formatFn,\n parse: parseFn,\n\n blocks: {\n YYYY: {\n mask: IMask.MaskedRange,\n from: 1900,\n to: 9999,\n placeholderChar:'Y',\n maxLength: 4,\n },\n YYY: {\n mask: IMask.MaskedRange,\n from: 900,\n to: 999,\n placeholderChar:'Y',\n maxLength: 3,\n },\n YY: {\n mask: IMask.MaskedRange,\n from: 0,\n to: 99,\n placeholderChar:'Y',\n maxLength: 2,\n },\n Y: {\n mask: IMask.MaskedRange,\n from: 1900,\n to: 9999,\n placeholderChar:'Y',\n maxLength: 4,\n },\n M: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 12,\n placeholderChar:'M',\n maxLength: 2,\n },\n MM: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 12,\n placeholderChar:'M',\n maxLength: 2,\n },\n MMM: {\n mask: IMask.MaskedEnum,\n enum: Array.from({ length: 12 }, (_, i) =>\n new Date(0, i).toLocaleString(locale, { month: 'short' })\n ),\n placeholderChar:'M',\n maxLength: 3,\n },\n MMMM: {\n mask: IMask.MaskedEnum,\n enum: Array.from({ length: 12 }, (_, i) =>\n new Date(0, i).toLocaleString(locale, { month: 'long' })\n ),\n placeholderChar: \"M\",\n maxLength: 4\n },\n DD: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 31,\n placeholderChar:'D',\n maxLength: 2,\n },\n D: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 31,\n placeholderChar:'D',\n maxLength: 2,\n },\n ddd: {\n mask: IMask.MaskedEnum,\n enum: Array.from({ length: 7 }, (_, i) =>\n new Date(0, 0, i + 1).toLocaleString(locale, { weekday: 'short' })\n ),\n placeholderChar:'E',\n maxLength: 3,\n },\n dddd: {\n mask: IMask.MaskedEnum,\n enum: Array.from({ length: 7 }, (_, i) =>\n new Date(0, 0, i + 1).toLocaleString(locale, { weekday: 'long' })\n ),\n placeholderChar:'E',\n minLength: 6,\n },\n },\n autofix: true,\n lazy: false,\n overwrite: true,\n skipInvalid: true\n }\n}\n"," <input class=\"form-control app-textbox app-dateinput display-input\"\n focus-target\n type=\"text\"\n [name]=\"name\"\n #dateInput\n [imask]=\"mask\"\n [unmask]=\"true\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [value]=\"displayValue\"\n (click)=\"toggleDpDropdown($event, true)\"\n (focus)=\"onDateTimeInputFocus(); invokeOnFocus($event); updateIMask()\"\n (blur)=\"onInputBlur($event)\"\n [disabled]=\"disabled || readonly\"\n [autofocus]=\"autofocus\"\n [required]=\"required\"\n [readOnly]=\"isReadOnly\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-label]=\"arialabel\"\n (change)=\"onDisplayDateChange($event)\"\n (keydown)=\"this._triggeredByUser = true; onDisplayKeydown($event);\">\n\n <span class=\"input-group-btn\">\n <button type=\"button\"\n class=\"btn btn-default btn-time\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [disabled]=\"disabled || readonly\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : 'Choose date by pressing enter'\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n (click)=\"toggleDpDropdown($event, false)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-calendar\"></i>\n </button>\n </span>\n <div style=\"width: 0;display: inline-block;\">\n <input class=\"model-holder\"\n aria-label=\"datepicker dropdownmenu\"\n aria-controls=\"date\"\n [tabindex]=\"-1\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [container]=\"containerTarget || '.wm-app'\"\n [bsConfig]=\"_dateOptions\"\n [isOpen]=\"isOpen\"\n #datepicker=\"bsDatepicker\"\n bsDatepicker\n [daysDisabled]=\"excludedDaysToDisable\"\n [datesDisabled]=\"excludedDatesToDisable\"\n placement=\"bottom right\"\n [isDisabled]=\"disabled || readonly\"\n [bsValue]=\"bsDataValue\"\n (onShown)=\"onDatePickerOpen()\"\n (onHidden)=\"hideDatepickerDropdown()\"\n (bsValueChange)=\"onDateChange($event)\">\n</div>\n\n<ng-template [ngIf]=\"loadNativeDateInput\">\n <wm-datetimepicker\n dateTimePicker\n mode=\"DATE\"\n [config]=\"_dateOptions\"\n [placement]=\"modal\"\n [excludedDaysToDisable]=\"excludedDaysToDisable\"\n [excludedDatesToDisable]=\"excludedDatesToDisable\"\n [displayFormat]=\"dateInputFormat\"\n [value]=\"bsDataValue\"\n (change)=\"onDateChange($event)\">\n </wm-datetimepicker>\n <div class=\"mobile-input mobile-datepicker-container\"\n [tabindex]=\"tabindex || 0\"\n (click)=\"!(disabled || readonly) && showDatePickerModal(bsDataValue)\"\n (focus)=\"onDateTimeInputFocus(true); invokeOnFocus($event);\"\n (blur)=\"onDateTimeInputBlur(); invokeOnTouched($event)\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : arialabel || 'Choose Date'\"\n role=\"button\">\n </div>\n</ng-template>\n","import {ChangeDetectorRef, Component, Inject, Injector, Optional, ViewChild} from '@angular/core';\nimport {NG_VALIDATORS, NG_VALUE_ACCESSOR} from '@angular/forms';\n\nimport {BsDatepickerDirective} from 'ngx-bootstrap/datepicker';\n\n\nimport {\n addEventListenerOnElement,\n adjustContainerPosition,\n adjustContainerRightEdges,\n AppDefaults,\n EVENT_LIFE,\n FormWidgetType,\n getDateObj,\n getDisplayDateTimeFormat,\n getFormattedDate,\n getMomentLocaleObject\n} from '@wm/core';\nimport {IWidgetConfig, provideAs, provideAsWidgetRef, setFocusTrap, styler} from '@wm/components/base';\nimport {BaseDateTimeComponent} from './../base-date-time.component';\nimport {registerProps} from './date.props';\nimport {validateTheMaskedDate} from './imaskUtil';\nimport {IMaskDirective} from 'angular-imask';\nimport {includes, isNaN, parseInt} from \"lodash-es\";\n\ndeclare const _, $;\n\nconst CURRENT_DATE = 'CURRENT_DATE';\nconst DEFAULT_CLS = 'app-date input-group';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-date',\n hostClass: DEFAULT_CLS\n};\n\n@Component({\n selector: '[wmDate]',\n templateUrl: './date.component.html',\n providers: [\n provideAs(DateComponent, NG_VALUE_ACCESSOR, true),\n provideAs(DateComponent, NG_VALIDATORS, true),\n provideAsWidgetRef(DateComponent)\n ]\n})\nexport class DateComponent extends BaseDateTimeComponent {\n static initializeProps = registerProps();\n\n public bsDataValue;\n public showdropdownon: string;\n private dateContainerCls: string;\n public isOpen: boolean = false;\n private isEnterPressedOnDateInput = false;\n private _bsDefaultLoadCheck: boolean;\n public hint: string;\n public arialabel: string;\n\n private deregisterEventListener;\n private isCurrentDate;\n private focusTrap;\n private showdateformatasplaceholder = false;\n mask;\n private maskDateInputFormat;\n\n get timestamp() {\n return this.bsDataValue ? this.bsDataValue.valueOf() : undefined;\n }\n\n get dateInputFormat() {\n return this._dateOptions.dateInputFormat || 'yyyy-MM-dd';\n }\n\n get displayValue() {\n if(this.showdateformatasplaceholder && this.imask?.maskRef && this.maskDateInputFormat) {\n return getFormattedDate(this.datePipe, this.bsDataValue, this.maskDateInputFormat, this.timeZone, null, this.isCurrentDate, this) || '';\n }\n return getFormattedDate(this.datePipe, this.bsDataValue, this.dateInputFormat, this.timeZone, null, this.isCurrentDate, this) || '';\n }\n\n get nativeDisplayValue() {\n return getFormattedDate(this.datePipe, this.bsDataValue, 'yyyy-MM-dd', this.timeZone, null, this.isCurrentDate, this) || '';\n }\n\n // @ts-ignore\n get datavalue() {\n return getFormattedDate(this.datePipe, this.bsDataValue, this.outputformat, this.timeZone, null, this.isCurrentDate, this) || '';\n }\n\n // Todo[Shubham]: needs to be redefined\n // sets the dataValue and computes the display model values\n // @ts-ignore\n set datavalue(newVal) {\n if (newVal === CURRENT_DATE) {\n setTimeout(() => {\n this.bsDataValue = this.timeZone ? getMomentLocaleObject(this.timeZone) : new Date();\n }, 50);\n this.isCurrentDate = true;\n } else {\n this.bsDataValue = newVal ? getDateObj(newVal, {isNativePicker: this.loadNativeDateInput}, this.timeZone) : undefined;\n this.isCurrentDate = false;\n }\n // update the previous datavalue.\n this.invokeOnChange(this.datavalue, undefined, true);\n this.cdRef.detectChanges();\n }\n\n @ViewChild(BsDatepickerDirective) protected bsDatePickerDirective;\n @ViewChild('dateInput', {read: IMaskDirective}) imask: IMaskDirective<any>;\n\n // TODO use BsLocaleService to set the current user's locale to see the localized labels\n constructor(\n inj: Injector,\n private cdRef: ChangeDetectorRef,\n private appDefaults: AppDefaults,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n super(inj, WIDGET_CONFIG, explicitContext);\n styler(this.nativeElement, this);\n\n this.dateContainerCls = `app-date-${this.widgetId}`;\n this._dateOptions.containerClass = `app-date ${this.dateContainerCls}`;\n this._dateOptions.showWeekNumbers = false;\n this._bsDefaultLoadCheck = true;\n this.datepattern = this.appDefaults.dateFormat || getDisplayDateTimeFormat(FormWidgetType.DATE);\n this.updateFormat('datepattern');\n }\n /**\n * This is an internal method triggered when the date input changes\n */\n onDisplayDateChange($event, isNativePicker: boolean = false) {\n this.updateIMask();\n if (this.isEnterPressedOnDateInput) {\n this.isEnterPressedOnDateInput = false;\n return;\n }\n const newVal = getDateObj($event.target.value, {pattern: this.datepattern, isNativePicker: isNativePicker});\n // date pattern validation\n // if invalid pattern is entered, device is showing an error.\n if (!this.formatValidation(newVal, $event.target.value, isNativePicker)) {\n return;\n }\n // min date and max date validation in mobile view.\n // if invalid dates are entered, device is showing an alert.\n if (isNativePicker && this.minDateMaxDateValidationOnInput(newVal, $event, this.displayValue, isNativePicker)) {\n return;\n }\n this.setDataValue(newVal);\n }\n\n // sets the dataValue and computes the display model values\n private setDataValue(newVal): void {\n this.invalidDateTimeFormat = false;\n // min date and max date validation in web.\n // if invalid dates are entered, device is showing validation message.\n this.minDateMaxDateValidationOnInput(newVal);\n if (getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, null, this.isCurrentDate, this) === this.displayValue) {\n $(this.nativeElement).find('.display-input').val(this.displayValue);\n }\n if (newVal) {\n this.bsDataValue = newVal;\n this.updateIMask();\n } else {\n this.bsDataValue = undefined;\n }\n this.invokeOnChange(this.datavalue, {}, true);\n }\n\n onDatePickerOpen() {\n this.isOpen = true;\n this.activeDate = this.bsDataValue ? this.bsDataValue : (this.timeZone ? getMomentLocaleObject(this.timeZone) : new Date());\n if (!this.bsDataValue) {\n this.hightlightToday(this.activeDate);\n }\n this.updateIMask();\n\n // We are using the two input tags(To maintain the modal and proxy modal) for the date control.\n // So actual bootstrap input target width we made it to 0, so bootstrap calculating the calendar container top position improperly.\n // To fix the container top position set the width 1px;\n this.$element.find('.model-holder').width('1px');\n const dpContainerEl = $('bs-datepicker-container');\n dpContainerEl.attr('aria-label', 'Use Arrow keys to navigate dates, Choose Date from datepicker');\n $('.bs-calendar-container').removeAttr('role');\n const datePickerContainer = $('.bs-datepicker-container')[0];\n this.focusTrap = setFocusTrap(datePickerContainer, true);\n this.focusTrap.activate();\n this.addDatepickerKeyboardEvents(this, false);\n adjustContainerPosition($('bs-datepicker-container'), this.nativeElement, this.bsDatePickerDirective._datepicker);\n adjustContainerRightEdges($('bs-datepicker-container'), this.nativeElement, this.bsDatePickerDirective._datepicker);\n\n if(this.timeZone) {\n const todayBtn = document.querySelector(`.${this.dateContainerCls} .bs-datepicker-buttons .btn-today-wrapper button`) as HTMLElement;\n const setTodayTZHandler = (event) => {\n const todayTZ = getMomentLocaleObject(this.timeZone);\n if(new Date(this.bsDataValue).toDateString() !== new Date(todayTZ).toDateString()) {\n this.bsDataValue = todayTZ;\n }\n todayBtn.removeEventListener('click', setTodayTZHandler);\n };\n todayBtn.addEventListener('click', setTodayTZHandler)\n }\n }\n onInputBlur($event) {\n this.updateIMask();\n if (!$($event.relatedTarget).hasClass('current-date')) {\n this.invokeOnTouched();\n this.invokeEventCallback('blur', { $event });\n }\n }\n\n updateIMask() {\n this.imask?.maskRef?.updateValue();\n }\n\n public hideDatepickerDropdown() {\n this.invokeOnTouched();\n this.isOpen = false;\n this.focusTrap?.deactivate();\n this.isEnterPressedOnDateInput = false;\n if (this.deregisterEventListener) {\n this.deregisterEventListener();\n }\n this.blurDateInput(this.isOpen);\n }\n\n // change and blur events are added from the template\n protected handleEvent(node: HTMLElement, eventName: string, callback: Function, locals: any) {\n if (!includes(['blur', 'focus', 'change', 'click'], eventName)) {\n super.handleEvent(node, eventName, callback, locals);\n }\n }\n\n /**\n * This is an internal method used to toggle the dropdown of the date widget\n */\n public toggleDpDropdown($event, skipFocus: boolean = false) {\n if (this.loadNativeDateInput) {\n // Fixes click event getting triggred twice in Mobile devices.\n if (!skipFocus) {\n this.onDateTimeInputFocus();\n }\n }\n if ($event.type === 'click') {\n this.invokeEventCallback('click', { $event: $event });\n // this.focusOnInputEl();\n }\n if ($event.target && $($event.target).is('input') && !(this.isDropDownDisplayEnabledOnInput(this.showdropdownon))) {\n $event.stopPropagation();\n return;\n }\n this.bsDatePickerDirective.toggle();\n this.addBodyClickListener(this.bsDatePickerDirective.isOpen);\n }\n\n private addBodyClickListener(skipListener) {\n if (!skipListener) {\n return;\n }\n const bodyElement = document.querySelector('body');\n setTimeout(() => {\n const bsDateContainerElement = bodyElement.querySelector(`.${this.dateContainerCls}`);\n this.deregisterEventListener = addEventListenerOnElement(bodyElement, bsDateContainerElement, this.nativeElement, 'click', this.isDropDownDisplayEnabledOnInput(this.showdropdownon), () => {\n this.isOpen = false;\n }, EVENT_LIFE.ONCE, true);\n }, 350);\n }\n\n /**\n * This is an internal method triggered when pressing key on the date input\n */\n public onDisplayKeydown(event) {\n if (this.isDropDownDisplayEnabledOnInput(this.showdropdownon)) {\n event.stopPropagation();\n if (event.key === 'Enter') {\n const newVal = getDateObj(event.target.value, {pattern: this.datepattern});\n event.preventDefault();\n const formattedDate = getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, null, this.isCurrentDate, this);\n const inputVal = event.target.value.trim();\n if (inputVal && this.datepattern === 'timestamp') {\n if (!isNaN(inputVal) && parseInt(inputVal) !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.invokeOnChange(this.datavalue, event, false);\n }\n } else if (inputVal && inputVal !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.invokeOnChange(this.datavalue, event, false);\n } else {\n this.invalidDateTimeFormat = false;\n this.isEnterPressedOnDateInput = true;\n this.bsDatePickerDirective.bsValue = event.target.value ? newVal : '';\n this.updateIMask();\n }\n this.toggleDpDropdown(event);\n } else {\n this.hideDatepickerDropdown();\n }\n } else {\n this.hideDatepickerDropdown();\n }\n }\n\n /**\n * This is an internal method triggered when the date selection changes\n */\n onDateChange(newVal): void {\n /**\n * Ngx-bootstrap upgrade : To avoid the page load datechange event;\n * TODO:\n * https://github.com/valor-software/ngx-bootstrap/issues/6016\n * For above issue, once we get the solution from Ngx-Bootstrap team, remove the _bsDefaultLoadCheck check and update accordingly.\n * */\n if (this._bsDefaultLoadCheck) {\n this._bsDefaultLoadCheck = false;\n return;\n }\n\n this.setDataValue(newVal);\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'showdateformatasplaceholder') {\n this.showdateformatasplaceholder = nv;\n this.imask?.destroyMask();\n if (this.showdateformatasplaceholder && this.datepattern !== 'timestamp') {\n this.mask = validateTheMaskedDate(this.datepattern, this.selectedLocale);\n this.maskDateInputFormat = this.dateInputFormat;\n this.maskDateInputFormat = (this.dateInputFormat.split('d').length - 1) === 1 ? this.maskDateInputFormat.replace('d', 'dd') : this.maskDateInputFormat;\n this.maskDateInputFormat = (this.dateInputFormat.split('M').length - 1) === 1 ? this.maskDateInputFormat.replace('M', 'MM') : this.maskDateInputFormat;\n this.updateIMask();\n }\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n}\n","import {FormWidgetType} from '@wm/core';\nimport {PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget} from '@wm/components/base';\n\nexport const dateTimeProps = new Map(\n [\n ['autofocus', PROP_BOOLEAN],\n ['class', PROP_STRING],\n ['dataentrymode', { value: 'default', ...PROP_STRING }],\n ['datavaluesource', PROP_ANY],\n ['datavalue', PROP_STRING],\n ['datepattern', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['excludedays', PROP_STRING],\n ['excludedates', PROP_STRING],\n ['hint', PROP_STRING],\n ['arialabel', PROP_STRING],\n ['hourstep', { value: 1, ...PROP_NUMBER }],\n ['maxdate', PROP_STRING],\n ['mindate', PROP_STRING],\n ['minutestep', { value: 15, ...PROP_NUMBER }],\n ['name', PROP_STRING],\n ['outputformat', { value: 'timestamp', ...PROP_STRING }],\n ['placeholder', { value: 'Select date time', ...PROP_STRING }],\n ['readonly', PROP_BOOLEAN],\n ['required', PROP_BOOLEAN],\n ['secondsstep', { value: 1, ...PROP_NUMBER }],\n ['shortcutkey', PROP_STRING],\n ['show', { value: true, ...PROP_BOOLEAN }],\n ['showdropdownon', { value: 'default', ...PROP_STRING }],\n ['showbuttonbar', PROP_BOOLEAN],\n ['showcustompicker', { value: false, ...PROP_BOOLEAN }],\n ['showindevice', { displayType: 'inline-block', value: 'all', ...PROP_STRING }],\n ['showweeks', PROP_BOOLEAN],\n ['tabindex', { value: 0, ...PROP_NUMBER }],\n ['timestamp', PROP_STRING],\n ['selectfromothermonth', { value: true, ...PROP_BOOLEAN }],\n ['todaybutton', { value: true, ...PROP_BOOLEAN }],\n ['clearbutton', { value: true, ...PROP_BOOLEAN }],\n ['adaptiveposition', {value: true, ...PROP_BOOLEAN}],\n ['todaybuttonlabel', { value: 'LABEL_TODAY_DATE', ...PROP_STRING }],\n ['clearbuttonlabel', { value: 'LABEL_CLEAR_DATE', ...PROP_STRING }]\n\n ]\n);\n\nexport const registerProps = () => {\n register(\n 'wm-datetime',\n dateTimeProps\n );\n registerFormWidget(\n FormWidgetType.DATETIME,\n new Map(dateTimeProps)\n );\n registerFormWidget(\n FormWidgetType.TIMESTAMP,\n new Map(dateTimeProps)\n );\n};\n"," <div dropdown\n [isOpen]=\"isTimeOpen\"\n autoClose=\"false\"\n [container]=\"'body'\"\n (onShown)=\"onTimepickerOpen()\"\n style=\"display: inherit;\">\n <input class=\"form-control app-textbox display-input\"\n [attr.aria-label]=\"arialabel\"\n focus-target\n [name]=\"name\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n type=\"text\"\n [value]=\"displayValue\"\n (click)=\"toggleDpDropdown($event, true)\"\n (focus)=\"onDateTimeInputFocus(); invokeOnFocus($event);\"\n (blur)=\"onInputBlur($event)\"\n (change)=\"onDateChange($event)\"\n [autofocus]=\"autofocus\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n [required]=\"required\"\n [readOnly]=\"isReadOnly\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n (keydown)=\"this._triggeredByUser = true; onDisplayKeydown($event)\">\n\n <span class=\"input-group-btn\">\n <button type=\"button\"\n class=\"btn btn-default btn-date\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : 'Choose date by pressing enter'\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n (click)=\"toggleDpDropdown($event, false)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-calendar\"></i>\n </button>\n <button type=\"button\"\n class=\"btn btn-default btn-time\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n aria-label=\"Select time\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n (click)=\"toggleTimePicker(!isTimeOpen, $event)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-time\"></i>\n </button>\n </span>\n <div style=\"width: 0;display: inline-block;\">\n <input class=\"model-holder\"\n aria-label=\"datepicker dropdownmenu\"\n aria-controls=\"date\"\n focus-target\n [tabindex]=\"-1\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [container]=\"containerTarget || '.wm-app'\"\n [bsConfig]=\"_dateOptions\"\n [isOpen]=\"isDateOpen\"\n placement=\"bottom right\"\n (onShown)=\"onDatePickerOpen()\"\n (onHidden)=\"hideDatepickerDropdown()\"\n [daysDisabled]=\"excludedDaysToDisable\"\n [datesDisabled]=\"excludedDatesToDisable\"\n #datepicker=bsDatepicker\n bsDatepicker\n [isDisabled]=\"disabled || readonly || isCurrentDate\"\n [bsValue]=\"bsDateValue\"\n (bsValueChange)=\"onModelUpdate($event, 'date')\">\n </div>\n <div *dropdownMenu\n class=\"dropdown-menu\"\n aria-label=\"timepicker dropdown\"\n aria-controls=\"time\"\n (click)=\"preventTpClose($event)\">\n <timepicker class=\"model-holder\"\n [showMeridian]=\"ismeridian\"\n [readonlyInput]=\"disabled || readonly || isCurrentDate\"\n [(ngModel)]=\"bsTimeValue\"\n [ngModelOptions]=\"{standalone: true}\"\n [min]=\"minTime\"\n [max]=\"maxTime\"\n [hourStep]=\"hourstep\"\n [minuteStep]=\"minutestep\"\n [secondsStep]=\"secondsstep\"\n [mousewheel]=\"true\"\n [arrowkeys]=\"true\"\n (isValid)=\"isValid($event)\"\n [showSeconds]=\"showseconds\"\n (ngModelChange)=\"onModelUpdate($event, 'time')\"></timepicker>\n </div>\n </div>\n<ng-template [ngIf]=\"loadNativeDateInput\">\n <wm-datetimepicker\n dateTimePicker\n [config]=\"_dateOptions\"\n [placement]=\"modal\"\n [excludedDaysToDisable]=\"excludedDaysToDisable\"\n [excludedDatesToDisable]=\"excludedDatesToDisable\"\n [displayFormat]=\"dateInputFormat\"\n [value]=\"bsDateValue\"\n (change)=\"onModelUpdate($event, 'date')\">\n </wm-datetimepicker>\n <div class=\"mobile-input mobile-datepicker-container\"\n [tabindex]=\"tabindex || 0\"\n (click)=\"!(disabled || readonly) && showDatePickerModal(bsDateValue)\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : arialabel || 'Choose Date'\"\n (focus)=\"onDateTimeInputFocus(true); invokeOnFocus($event)\"\n (blur)=\"onDateTimeInputBlur(); invokeOnTouched($event)\"\n role=\"button\">\n </div>\n</ng-template>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Inject,\n Injector,\n NgZone,\n OnDestroy,\n Optional,\n ViewChild\n} from '@angular/core';\nimport {NG_VALIDATORS, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {BsDatepickerDirective} from 'ngx-bootstrap/datepicker';\nimport {TimepickerConfig} from 'ngx-bootstrap/timepicker';\n\nimport {\n AbstractI18nService,\n addClass,\n addEventListenerOnElement,\n adjustContainerPosition,\n adjustContainerRightEdges,\n App,\n AppDefaults,\n EVENT_LIFE,\n FormWidgetType,\n getDateObj,\n getDisplayDateTimeFormat,\n getFormattedDate,\n getMomentLocaleObject,\n getNativeDateObject\n} from '@wm/core';\nimport {provideAs, provideAsWidgetRef, setFocusTrap, styler} from '@wm/components/base';\n\nimport {BaseDateTimeComponent, getTimepickerConfig} from './../base-date-time.component';\nimport {registerProps} from './date-time.props';\nimport {debounce, forEach, includes, isNaN, parseInt} from \"lodash-es\";\n\ndeclare const $;\ndeclare const moment;\n\nconst DEFAULT_CLS = 'app-datetime input-group';\nconst WIDGET_CONFIG = { widgetType: 'wm-datetime', hostClass: DEFAULT_CLS };\n\nconst CURRENT_DATE = 'CURRENT_DATE';\n\n@Component({\n selector: '[wmDateTime]',\n templateUrl: './date-time.component.html',\n providers: [\n provideAs(DatetimeComponent, NG_VALUE_ACCESSOR, true),\n provideAs(DatetimeComponent, NG_VALIDATORS, true),\n provideAsWidgetRef(DatetimeComponent),\n { provide: TimepickerConfig, deps: [AbstractI18nService], useFactory: getTimepickerConfig }\n ]\n})\nexport class DatetimeComponent extends BaseDateTimeComponent implements AfterViewInit, OnDestroy {\n static initializeProps = registerProps();\n /**\n * The below propeties prefixed with \"bs\" always holds the value that is selected from the datepicker.\n * The bsDateTimeValue = bsDateValue + bsTimeValue.\n */\n private bsDateTimeValue: any;\n public bsDateValue;\n private bsTimeValue;\n private proxyModel;\n private app: App;\n public hint: string;\n public arialabel: string;\n public showdropdownon: string;\n private deregisterDatepickerEventListener;\n private deregisterTimepickeEventListener;\n private isEnterPressedOnDateInput = false;\n private focusTrap;\n\n get timestamp() {\n return this.proxyModel ? this.proxyModel.valueOf() : undefined;\n }\n\n get dateInputFormat() {\n return this._dateOptions.dateInputFormat || 'yyyy-MM-ddTHH:mm:ss';\n }\n\n /**\n * The displayValue is the display value of the bsDateTimeValue after applying the datePattern on it.\n * @returns {any|string}\n */\n get displayValue(): any {\n return getFormattedDate(this.datePipe, this.proxyModel, this.dateInputFormat, this.timeZone, (this as any).key, this.isCurrentDate, this) || '';\n }\n\n get nativeDisplayValue() {\n return getFormattedDate(this.datePipe, this.proxyModel, 'yyyy-MM-ddTHH:mm:ss', this.timeZone, (this as any).key, this.isCurrentDate, this) || '';\n }\n\n @ViewChild(BsDatepickerDirective) bsDatePickerDirective;\n\n /**\n * This property checks if the timePicker is Open\n */\n public isTimeOpen = false;\n\n /**\n * This property checks if the datePicker is Open\n */\n public isDateOpen = false;\n\n /**\n * This timeinterval is used to run the timer when the time component value is set to CURRENT_TIME in properties panel.\n */\n private timeinterval: any;\n\n /**\n * This property is set to TRUE if the time component value is set to CURRENT_TIME; In this case the timer keeps changing the time value until the widget is available.\n */\n public isCurrentDate = false;\n\n private _debouncedOnChange: Function = debounce(this.invokeOnChange, 10);\n\n private dateContainerCls: string;\n\n // @ts-ignore\n get datavalue(): any {\n if (this.isCurrentDate && !this.proxyModel) {\n return CURRENT_DATE;\n }\n return getFormattedDate(this.datePipe, this.proxyModel, this.outputformat, this.timeZone, null, null, this);\n }\n\n /**Todo[Shubham]: needs to be redefined\n * This property sets the default value for the date selection\n */\n // @ts-ignore\n set datavalue(newVal: any) {\n if (newVal === CURRENT_DATE) {\n this.isCurrentDate = true;\n this.setTimeInterval();\n } else {\n this.proxyModel = newVal ? getDateObj(newVal, {isNativePicker: this.loadNativeDateInput}, this.timeZone) : undefined;\n this.clearTimeInterval();\n this.isCurrentDate = false;\n }\n this.bsTimeValue = this.bsDateValue = this.proxyModel;\n this.cdRef.detectChanges();\n }\n\n constructor(\n inj: Injector,\n private ngZone: NgZone,\n private cdRef: ChangeDetectorRef,\n private appDefaults: AppDefaults,\n app: App,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n super(inj, WIDGET_CONFIG, explicitContext);\n this.registerDestroyListener(() => this.clearTimeInterval());\n styler(this.nativeElement, this);\n this.app = app;\n this.dateContainerCls = `app-date-${this.widgetId}`;\n this._dateOptions.containerClass = `app-date ${this.dateContainerCls}`;\n this._dateOptions.showWeekNumbers = false;\n this.datepattern = this.appDefaults.dateTimeFormat || getDisplayDateTimeFormat(FormWidgetType.DATETIME);\n this.updateFormat('datepattern');\n }\n\n /**\n * This is an internal method used to maintain a time interval to update the time model when the data value is set to CURRENT_TIME\n */\n private setTimeInterval() {\n if (this.timeinterval) {\n return;\n }\n this.timeinterval = setInterval(() => {\n const currentTime = this.timeZone ? getMomentLocaleObject(this.timeZone) : new Date();\n this.onModelUpdate(currentTime);\n }, 1000);\n }\n\n /**\n * This is an internal method used to clear the time interval created\n */\n private clearTimeInterval() {\n if (this.timeinterval) {\n clearInterval(this.timeinterval);\n this.timeinterval = null;\n }\n }\n\n /**\n * This is an internal method to toggle the time picker\n */\n public toggleTimePicker(newVal, $event?: any) {\n if (this.loadNativeDateInput) {\n this.onDateTimeInputFocus();\n return;\n }\n this.isTimeOpen = newVal;\n if ($event && $event.type === 'click') {\n this.invokeEventCallback('click', { $event: $event });\n }\n this.addTimepickerClickListener(this.isTimeOpen);\n }\n\n private addTimepickerClickListener(skipListener) {\n if (!skipListener) {\n return;\n }\n const bodyElement = document.querySelector('body');\n setTimeout(() => {\n const dropdownElement = $(bodyElement).find('>bs-dropdown-container .dropdown-menu').get(0);\n this.deregisterTimepickeEventListener = addEventListenerOnElement(bodyElement, dropdownElement, this.nativeElement, 'click', this.isDropDownDisplayEnabledOnInput(this.showdropdownon), () => {\n this.toggleTimePicker(false);\n }, EVENT_LIFE.ONCE, true);\n }, 350);\n }\n\n /**\n * This function sets the value isOpen/isTimeOpen (i.e when datepicker popup is closed) based on widget type(i.e DateTime, Time)\n * @param val - isOpen/isTimeOpen is set based on the timepicker popup is open/closed\n */\n private setIsTimeOpen(val: boolean) {\n this.isTimeOpen = val;\n }\n\n private hideTimepickerDropdown() {\n this.invokeOnTouched();\n this.toggleTimePicker(false);\n if (this.deregisterTimepickeEventListener) {\n this.deregisterTimepickeEventListener();\n }\n const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n if (parentEl.length > 0) {\n this.app.notify('captionPositionAnimate', {displayVal: this.displayValue, nativeEl: parentEl});\n }\n }\n\n /**\n * This is an internal method to add a click listener once the time dropdown is open\n */\n public onTimepickerOpen() {\n // adding class for time widget dropdown menu\n const tpElements = document.querySelectorAll('timepicker');\n forEach(tpElements, (element) => {\n addClass(element.parentElement as HTMLElement, 'app-datetime', true);\n });\n\n this.bsDatePickerDirective.hide();\n this.focusTimePickerPopover(this);\n this.bindTimePickerKeyboardEvents();\n adjustContainerPosition($('bs-dropdown-container'), this.nativeElement, this.bsDropdown._dropdown, $('bs-dropdown-container .dropdown-menu'));\n adjustContainerRightEdges($('bs-dropdown-container'), this.nativeElement, this.bsDropdown._dropdown, $('bs-dropdown-container .dropdown-menu'));\n }\n\n public onDatePickerOpen() {\n this.isDateOpen = !this.isDateOpen;\n this.toggleTimePicker(false);\n // We are using the two input tags(To maintain the modal and proxy modal) for the date control.\n // So actual bootstrap input target width we made it to 0 so bootstrap calculating the calendar container top position impropery.\n // To fix the container top position set the width 1px;\n this.$element.find('.model-holder').width('1px');\n const dpContainerEl = $('bs-datepicker-container');\n dpContainerEl.attr('aria-label', 'Use Arrow keys to navigate dates, Choose Date from datepicker');\n $('.bs-calendar-container').removeAttr('role');\n const datePickerContainer = $('.bs-datepicker-container')[0];\n this.focusTrap = setFocusTrap(datePickerContainer, true);\n this.focusTrap.activate();\n\n this.bsDateValue ? this.activeDate = this.bsDateValue : this.activeDate = new Date();\n if (!this.bsDateValue) {\n this.hightlightToday(this.activeDate);\n }\n this.addDatepickerKeyboardEvents(this, true);\n adjustContainerPosition($('bs-datepicker-container'), this.nativeElement, this.bsDatePickerDirective._datepicker);\n }\n\n /**\n * This is an internal method to update the model\n */\n public onModelUpdate(newVal, type?) {\n\n if (type === 'date') {\n this.invalidDateTimeFormat = false;\n if (getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, (this as any).key, this.isCurrentDate, this) === this.displayValue) {\n $(this.nativeElement).find('.display-input').val(this.displayValue);\n }\n }\n\n if(newVal && !this.bsDateValue && this.timeZone) {\n newVal = getMomentLocaleObject(this.timeZone, newVal);\n }\n // min date and max date validation in web.\n // if invalid dates are entered, device is showing validation message.\n this.minDateMaxDateValidationOnInput(newVal);\n if (!newVal) {\n // Set timevalue as 00:00:00 if we remove any one from hours/minutes/seconds field in timepicker after selecting date\n if (this.bsDateValue && this.bsTimePicker && (this.bsTimePicker.hours === '' || this.bsTimePicker.minutes === '' || this.bsTimePicker.seconds === '')) {\n this.bsDateValue = this.bsTimeValue = this.proxyModel = moment(this.bsDateValue).startOf('day').toDate();\n } else {\n this.bsDateValue = this.bsTimeValue = this.proxyModel = undefined;\n }\n // When the datavalue is manually cleared, both newval and datavalue are undefined but prevDataValue exists - trigger change cb\n if (newVal !== this.datavalue || (!this.datavalue && (this as any).prevDatavalue)) {\n this._debouncedOnChange(this.datavalue, {}, true);\n }\n return;\n }\n if (type === 'date') {\n if (this.isDateOpen) {\n this.toggleTimePicker(true);\n }\n }\n this.proxyModel = newVal;\n if (this.proxyModel) {\n this.bsDateValue = this.bsTimeValue = newVal;\n }\n this._debouncedOnChange(this.datavalue, {}, true);\n this.cdRef.detectChanges();\n\n // Update timepicker with formatted time, when timezone is provided.\n const timePickerFields = $('.bs-timepicker-field');\n if (this.timeZone && (this as any).key === 'datetimestamp' && timePickerFields.length) {\n const formattedDate = getFormattedDate(this.datePipe, newVal, this.getTimePattern(), this.timeZone, (this as any).key, null, this);\n this.updateTimepickerFields(formattedDate, timePickerFields);\n }\n }\n\n // deduces the timepattern from datepattern set in the studio\n private getTimePattern() {\n let timepattern;\n const timePatternStartIndex = this.datepattern.toLowerCase().indexOf('h');\n let timePatternEndIndex = this.datepattern.toLowerCase().indexOf(':ss');\n if (timePatternEndIndex > -1) {\n // adding the index to +3 to incluse :ss\n timePatternEndIndex += 3;\n } else {\n timePatternEndIndex = this.datepattern.toLowerCase().indexOf(':mm');\n // adding the index to +3 to incluse :mm\n if (timePatternEndIndex > -1) {\n timePatternEndIndex += 3;\n }\n }\n const hasMeridian = this.datepattern.toLowerCase().indexOf('a');\n timepattern = this.datepattern.substr(timePatternStartIndex, timePatternEndIndex);\n if (hasMeridian > -1)\n timepattern += ' a';\n return timepattern;\n }\n\n private updateTimepickerFields(date, timePickerFields) {\n const meridianField = $('timepicker button.text-center');\n const formattedArr = date.split(' ');\n const formattedTime = formattedArr[0].split(':');\n for (let i=0; i<timePickerFields.length; i++) {\n timePickerFields[i].value = formattedTime[i]\n }\n if (meridianField?.html()?.trim() !== formattedArr[1]) {\n meridianField.text(formattedArr[1]);\n }\n }\n\n /**\n * This is an internal method used to Prevent time picker close while changing time value\n */\n private preventTpClose($event) {\n $event.stopImmediatePropagation();\n }\n\n /**\n * This is an internal method used to toggle the dropdown of the date widget\n */\n public toggleDpDropdown($event, skipFocus: boolean = false) {\n if (this.loadNativeDateInput) {\n //Fixes click event getting triggred twice in Mobile devices.\n if(!skipFocus){\n this.onDateTimeInputFocus();\n }\n return;\n }\n if ($event.type === 'click') {\n this.invokeEventCallback('click', { $event: $event });\n //this.focusOnInputEl();\n }\n if ($event.target && $($event.target).is('input') && !(this.isDropDownDisplayEnabledOnInput(this.showdropdownon))) {\n $event.stopPropagation();\n return;\n }\n this.bsDatePickerDirective.toggle();\n this.addBodyClickListener(this.bsDatePickerDirective.isOpen);\n }\n\n private addBodyClickListener(skipListener) {\n if (!skipListener) {\n return;\n }\n const bodyElement = document.querySelector('body');\n setTimeout(() => {\n const bsDateContainerElement = bodyElement.querySelector(`.${this.dateContainerCls}`);\n this.deregisterDatepickerEventListener = addEventListenerOnElement(bodyElement, bsDateContainerElement, this.nativeElement, 'click', this.isDropDownDisplayEnabledOnInput(this.showdropdownon), () => {\n this.bsDatePickerDirective.hide();\n }, EVENT_LIFE.ONCE, true);\n }, 350);\n }\n\n public hideDatepickerDropdown() {\n this.isDateOpen = false;\n this.focusTrap?.deactivate();\n this.invokeOnTouched();\n this.bsDatePickerDirective.hide();\n\n // To open the timepicker menu when user wants to update time without changing the date.\n if(this.bsDateValue) {\n this.toggleTimePicker(true);\n }\n this.isEnterPressedOnDateInput = false;\n if (this.deregisterDatepickerEventListener) {\n this.deregisterDatepickerEventListener();\n }\n const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n if (parentEl.length > 0) {\n this.app.notify('captionPositionAnimate', {displayVal: this.displayValue, nativeEl: parentEl});\n }\n this.blurDateInput(this.isDateOpen);\n }\n\n public onDateChange($event, isNativePicker?: boolean) {\n if (this.isEnterPressedOnDateInput) {\n this.isEnterPressedOnDateInput = false;\n return;\n }\n let newVal = $event.target.value.trim();\n newVal = newVal ? getNativeDateObject(newVal, {pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians, isNativePicker: this.loadNativeDateInput}) : undefined;\n // datetime pattern validation\n // if invalid pattern is entered, device is showing an error.\n if (!this.formatValidation(newVal, $event.target.value, isNativePicker)) {\n return;\n }\n // min date and max date validation in mobile view.\n // if invalid dates are entered, device is showing an alert.\n if (isNativePicker && this.minDateMaxDateValidationOnInput(newVal, $event, this.displayValue, isNativePicker)) {\n return;\n }\n this.invalidDateTimeFormat = false;\n this.onModelUpdate(newVal);\n }\n\n /**\n * This is an internal method triggered when pressing key on the datetime input\n */\n public onDisplayKeydown(event) {\n if (this.isDropDownDisplayEnabledOnInput(this.showdropdownon)) {\n event.stopPropagation();\n let newVal = event.target.value.trim();\n if (event.key === 'Enter' || event.key === 'ArrowDown') {\n newVal = newVal ? getNativeDateObject(newVal, {pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians}) : undefined;\n event.preventDefault();\n const formattedDate = getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, (this as any).key, this.isCurrentDate, this);\n const inputVal = event.target.value.trim();\n if (inputVal && this.datepattern === 'timestamp') {\n if (!isNaN(inputVal) && parseInt(inputVal) !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.invokeOnChange(this.datavalue, event, false);\n }\n } else if (inputVal && inputVal !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.invokeOnChange(this.datavalue, event, false);\n } else {\n this.invalidDateTimeFormat = false;\n this.isEnterPressedOnDateInput = true;\n this.bsDatePickerDirective.bsValue = newVal;\n }\n this.toggleDpDropdown(event);\n } else {\n this.hideDatepickerDropdown();\n this.hideTimepickerDropdown();\n }\n } else {\n this.hideDatepickerDropdown();\n this.hideTimepickerDropdown();\n }\n }\n\n private isValid(event) {\n if (!event) {\n const enteredDate = $(this.nativeElement).find('input').val();\n const newVal = getNativeDateObject(enteredDate, {pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians, isNativePicker: this.loadNativeDateInput});\n if (!this.formatValidation(newVal, enteredDate)) {\n return;\n }\n }\n }\n\n // change and blur events are added from the template\n protected handleEvent(node: HTMLElement, eventName: string, callback: Function, locals: any) {\n if (!includes(['blur', 'focus', 'change', 'click'], eventName)) {\n super.handleEvent(node, eventName, callback, locals);\n }\n }\n\n onInputBlur($event) {\n if (!$($event.relatedTarget).hasClass('current-date')) {\n this.invokeOnTouched();\n this.invokeEventCallback('blur', { $event });\n }\n }\n}\n","import {FormWidgetType} from '@wm/core';\n\nimport {PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget} from '@wm/components/base';\n\nexport const timeProps = new Map(\n [\n ['autofocus', PROP_BOOLEAN],\n ['class', PROP_STRING],\n ['dataentrymode', {value: 'default', ...PROP_STRING}],\n ['datavaluesource', PROP_ANY],\n ['datavalue', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['hint', PROP_STRING],\n ['arialabel', PROP_STRING],\n ['hourstep', {value: 1, ...PROP_NUMBER}],\n ['maxtime', PROP_STRING],\n ['mintime', PROP_STRING],\n ['minutestep', {value: 15, ...PROP_NUMBER}],\n ['name', PROP_STRING],\n ['outputformat', {value: 'HH:mm:ss', ...PROP_STRING}],\n ['placeholder', {value: 'Select time', ...PROP_STRING}],\n ['readonly', PROP_BOOLEAN],\n ['required', PROP_BOOLEAN],\n ['shortcutkey', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['showdropdownon', {value: 'default', ...PROP_STRING}],\n ['showcustompicker', { value: false, ...PROP_BOOLEAN }],\n ['secondsstep', {value: 1, ...PROP_NUMBER}],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['timepattern', PROP_STRING],\n ['timestamp', PROP_STRING]\n ]\n);\n\nexport const registerProps = () => {\n register(\n 'wm-time',\n timeProps\n );\n registerFormWidget(\n FormWidgetType.TIME,\n new Map(timeProps)\n );\n};\n"," <div dropdown [isOpen]=\"status.isopen\" (onShown)=\"onShown()\" (onHidden)=\"hideTimepickerDropdown()\" [container]=\"'body'\" style=\"display: inherit\">\n <input [attr.aria-label]=\"arialabel\" class=\"form-control app-textbox display-input\"\n focus-target\n [tabindex]=\"tabindex\"\n [name]=\"name\"\n type=\"text\"\n role=\"timer\"\n [value]=\"displayValue\"\n [disabled]=\"disabled || readonly || isCurrentTime\"\n [autofocus]=\"autofocus\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-atomic]=\"isCurrentTime ? 'true' : 'false'\"\n [required]=\"required\"\n [readOnly]=\"isReadOnly\"\n (click)=\"toggleDropdown($event, true)\"\n (focus)=\"onDateTimeInputFocus(); invokeOnFocus($event);\"\n (blur)=\"onInputBlur($event)\"\n (change)=\"onDisplayTimeChange($event)\"\n (keydown)=\"this._triggeredByUser = true; onDisplayKeydown($event)\">\n <span class=\"input-group-btn dropdown-toggle\">\n <button type=\"button\" class=\"btn btn-default btn-date\" [tabindex]=\"tabindex\" [disabled]=\"disabled || readonly || isCurrentTime\" aria-label=\"Select time\" aria-haspopup=\"true\" aria-expanded=\"false\" (click)=\"toggleDropdown($event, false)\"><i aria-hidden=\"true\" class=\"app-icon wm-sl-l sl-time\"></i></button>\n </span>\n <div *dropdownMenu class=\"dropdown-menu\" (click)=\"preventTpClose($event)\">\n <timepicker class=\"model-holder\"\n [showMeridian]=\"ismeridian\"\n [readonlyInput]=\"isDisabled\"\n [(ngModel)]=\"bsTimeValue\"\n [ngModelOptions]=\"{standalone: true}\"\n [disabled]=\"disabled || readonly || isCurrentTime\"\n [min]=\"minTime\"\n [max]=\"maxTime\"\n [hourStep]=\"hourstep\"\n [minuteStep]=\"minutestep\"\n [secondsStep]=\"secondsstep\"\n [mousewheel]=\"true\"\n [arrowkeys]=\"true\"\n (isValid)=\"isValid($event)\"\n [showSeconds]=\"showseconds\" (ngModelChange)=\"onTimeChange($event)\"></timepicker>\n </div>\n </div>\n<ng-template [ngIf]=\"loadNativeDateInput\">\n <wm-datetimepicker\n dateTimePicker\n mode=\"TIME\"\n [minTime]=\"minTime\"\n [maxTime]=\"maxTime\"\n [placement]=\"modal\"\n [displayFormat]=\"timepattern\"\n [value]=\"bsTimeValue\"\n (change)=\"onTimeChange($event)\">\n </wm-datetimepicker>\n <div class=\"mobile-input mobile-datepicker-container\"\n tabindex=\"1000000\"\n (click)=\"!(disabled || readonly) && showDatePickerModal(bsTimeValue)\"\n [attr.aria-label]=\"displayValue ? 'Change time ' + displayValue : arialabel || 'Select time'\"\n (focus)=\"onDateTimeInputFocus(true); invokeOnFocus($event); assignModel()\"\n (blur)=\"onDateTimeInputBlur(); invokeOnTouched($event)\"\n role=\"button\">\n </div>\n</ng-template>\n","import {Component, Inject, Injector, NgZone, OnDestroy, Optional} from '@angular/core';\nimport {NG_VALIDATORS, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {TimepickerConfig} from 'ngx-bootstrap/timepicker';\nimport {\n $appDigest,\n AbstractI18nService,\n addClass,\n addEventListenerOnElement,\n adjustContainerPosition,\n App,\n AppDefaults,\n EVENT_LIFE,\n FormWidgetType,\n getDisplayDateTimeFormat,\n getFormattedDate,\n getMomentLocaleObject,\n getNativeDateObject\n} from '@wm/core';\nimport {provideAs, provideAsWidgetRef, styler} from '@wm/components/base';\n\nimport {BaseDateTimeComponent, getTimepickerConfig} from './../base-date-time.component';\nimport {registerProps} from './time.props';\nimport {forEach, get, includes} from \"lodash-es\";\n\ndeclare const $;\ndeclare const moment;\n\nconst CURRENT_TIME = 'CURRENT_TIME';\nconst DEFAULT_CLS = 'input-group app-timeinput';\nconst WIDGET_CONFIG = {widgetType: 'wm-time', hostClass: DEFAULT_CLS};\n\n@Component({\n selector: '[wmTime]',\n templateUrl: './time.component.html',\n providers: [\n provideAs(TimeComponent, NG_VALUE_ACCESSOR, true),\n provideAs(TimeComponent, NG_VALIDATORS, true),\n provideAsWidgetRef(TimeComponent),\n { provide: TimepickerConfig, deps: [AbstractI18nService], useFactory: getTimepickerConfig }\n ]\n})\nexport class TimeComponent extends BaseDateTimeComponent implements OnDestroy {\n static initializeProps = registerProps();\n /**\n * This property sets the display pattern of the time selected\n */\n timepattern: string;\n\n /**\n * This property sets the output format for the selected time datavalue\n */\n outputformat: string;\n\n public showdropdownon: string;\n public mintime;\n public maxtime;\n public hint: string;\n public arialabel: string;\n\n private deregisterEventListener;\n private app: App;\n private displayInputElem: HTMLElement;\n\n get timestamp() {\n return this.bsTimeValue ? this.bsTimeValue.valueOf() : undefined;\n }\n\n // @ts-ignore\n get datavalue(): any {\n if (this.isCurrentTime && !this.bsTimeValue) {\n return CURRENT_TIME;\n }\n return getFormattedDate(this.datePipe, this.bsTimeValue, this.outputformat, this.timeZone, null, null, this) || '';\n }\n\n /**Todo[Shubham]: needs to be redefined\n * This property sets the default value for the time selection\n */\n // @ts-ignore\n set datavalue(newVal: any) {\n if (newVal) {\n if (newVal === CURRENT_TIME) {\n this.isCurrentTime = true;\n this.setTimeInterval();\n } else {\n this.clearTimeInterval();\n this.bsTimeValue = getNativeDateObject(newVal, { pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput});\n this.isCurrentTime = false;\n this.mintimeMaxtimeValidation();\n }\n } else {\n this.bsTimeValue = undefined;\n this.clearTimeInterval();\n this.isCurrentTime = false;\n }\n this.invokeOnChange(this.datavalue);\n $appDigest();\n }\n\n get displayValue() {\n return getFormattedDate(this.datePipe, this.bsTimeValue, this.timepattern, this.timeZone, null, null, this) || '';\n }\n\n get nativeDisplayValue() {\n return getFormattedDate(this.datePipe, this.bsTimeValue, 'HH:mm:ss', this.timeZone, null, null, this) || '';\n }\n\n /* Internal property to have a flag to check the given datavalue is of Current time*/\n public isCurrentTime: boolean;\n\n private timeinterval: any;\n\n /**\n * This is an internal property used to map it to the widget\n */\n private minTime: Date;\n\n /**\n * This is an internal property used to map it to the widget\n */\n private maxTime: Date;\n\n /**\n * This is an internal property used to toggle the timepicker dropdown\n */\n public status = { isopen: false };\n\n /**\n * This is an internal property used to map the main model to the time widget\n */\n private bsTimeValue: Date;\n\n constructor(\n inj: Injector,\n private ngZone: NgZone,\n private appDefaults: AppDefaults,\n app: App,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n super(inj, WIDGET_CONFIG, explicitContext);\n\n styler(this.nativeElement, this);\n /**\n * Destroy the timer once the date widget is gone\n */\n this.registerDestroyListener(() => this.clearTimeInterval());\n\n this.timepattern = this.appDefaults.timeFormat || getDisplayDateTimeFormat(FormWidgetType.TIME);\n this.updateFormat('timepattern');\n this.app = app;\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'tabindex') {\n return;\n }\n if (key === 'timepattern') {\n this.updateFormat('timepattern');\n }\n if (key === 'mintime') {\n this.minTime = getNativeDateObject(nv, { pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput }); // TODO it is supposed to be time conversion, not to the day\n this.mintimeMaxtimeValidation();\n } else if (key === 'maxtime') {\n this.maxTime = getNativeDateObject(nv, { pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });\n this.mintimeMaxtimeValidation();\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n setValidateType(min, max, val) {\n if (this.timeNotInRange) {\n if (val < min) {\n (this as any).validateType = 'mintime';\n } else if (val > max) {\n (this as any).validateType = 'maxtime';\n }\n }\n }\n\n /**\n * This is an internal method used to validate mintime and maxtime\n */\n private mintimeMaxtimeValidation() {\n this.timeNotInRange = this.minTime && this.maxTime && (this.bsTimeValue < this.minTime || this.bsTimeValue > this.maxTime);\n this.setValidateType(this.minTime, this.maxTime, this.bsTimeValue);\n this.invokeOnChange(this.datavalue, undefined, false);\n }\n\n /**\n * This is an internal method used to toggle the dropdown of the time widget\n */\n public toggleDropdown($event, skipFocus: boolean = false): void {\n if (this.loadNativeDateInput) {\n //Fixes click event getting triggred twice in Mobile devices.\n if(!skipFocus){\n this.onDateTimeInputFocus();\n }\n return;\n }\n if ($event.type === 'click') {\n this.invokeEventCallback('click', {$event: $event});\n //this.focusOnInputEl();\n }\n if ($event.target && $($event.target).is('input') && !(this.isDropDownDisplayEnabledOnInput(this.showdropdownon))) {\n return;\n }\n this.ngZone.run(() => {\n this.status.isopen = !this.status.isopen;\n });\n this.addBodyClickListener(this.status.isopen);\n }\n\n /**\n * This is an internal method used to Prevent time picker close while changing time value\n */\n private preventTpClose($event) {\n $event.stopImmediatePropagation();\n const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n if (parentEl.length > 0) {\n this.app.notify('captionPositionAnimate', {displayVal: this.displayValue, nativeEl: parentEl});\n }\n }\n\n private addBodyClickListener(skipListener) {\n if (!skipListener) {\n return;\n }\n const bodyElement = document.querySelector('body');\n setTimeout(() => {\n const dropdownElement = $(bodyElement).find('>bs-dropdown-container .dropdown-menu').get(0);\n this.deregisterEventListener = addEventListenerOnElement(bodyElement, dropdownElement, this.nativeElement, 'click', this.isDropDownDisplayEnabledOnInput(this.showdropdownon), () => {\n this.status.isopen = false;\n }, EVENT_LIFE.ONCE, true);\n }, 350);\n }\n\n /**\n * This is an internal method triggered when pressing key on the time input\n */\n public onDisplayKeydown(event) {\n if (this.isDropDownDisplayEnabledOnInput(this.showdropdownon)) {\n event.stopPropagation();\n if (event.key === 'Enter' || event.key === 'ArrowDown') {\n event.preventDefault();\n this.toggleDropdown(event);\n } else {\n this.hideTimepickerDropdown();\n }\n } else {\n this.hideTimepickerDropdown();\n }\n }\n\n /**\n * This is an internal method triggered when the time input changes\n */\n onDisplayTimeChange($event) {\n const newVal = getNativeDateObject($event.target.value, {meridians: this.meridians, pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });\n // time pattern validation\n // if invalid pattern is entered, device is showing an error.\n if (!this.formatValidation(newVal, $event.target.value)) {\n return;\n }\n this.invalidDateTimeFormat = false;\n this.onTimeChange(newVal);\n }\n\n onInputBlur($event) {\n if (!$($event.relatedTarget).hasClass('bs-timepicker-field')) {\n this.invokeOnTouched();\n this.invokeEventCallback('blur', {$event});\n }\n }\n\n /**\n * This is an internal method used to execute the on time change functionality\n */\n private onTimeChange(newVal, isNativePicker?: boolean) {\n let timeValue,\n timeInputValue,\n minTimeMeridian,\n maxTimeMeridian;\n // For nativePicker, newVal is event, get the dateobject from the event.\n if (isNativePicker) {\n newVal = getNativeDateObject(newVal.target.value, { pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });\n }\n if (newVal) {\n this.bsTimeValue = newVal;\n // if the newVal is valid but not in the given range then highlight the input field\n this.timeNotInRange = this.minTime && this.maxTime && (newVal < this.minTime || newVal > this.maxTime);\n this.setValidateType(this.minTime, this.maxTime, newVal);\n } else {\n // sometimes library is not returning the correct value when the min and max time are given, displaying the datavalue based on the value given by the user\n if (this.bsTimePicker && this.bsTimePicker.min && this.bsTimePicker.max) {\n minTimeMeridian = moment(new Date(this.bsTimePicker.min)).format('A');\n maxTimeMeridian = moment(new Date(this.bsTimePicker.max)).format('A');\n timeValue = this.bsTimePicker.hours + ':' + (this.bsTimePicker.minutes || 0) + ':' + (this.bsTimePicker.seconds || 0) + (this.bsTimePicker.showMeridian ? (' ' + minTimeMeridian) : '');\n timeInputValue = getNativeDateObject(timeValue, { pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });\n this.bsTimePicker.meridian = minTimeMeridian;\n this.timeNotInRange = (this.bsTimePicker.min > timeInputValue || this.bsTimePicker.max < timeInputValue);\n this.setValidateType(this.bsTimePicker.min, this.bsTimePicker.max, timeInputValue);\n }\n this.bsTimeValue = timeInputValue;\n }\n this.invokeOnTouched();\n this.invokeOnChange(this.datavalue, {}, true);\n }\n\n /**\n * This is an internal method used to maintain a time interval to update the time model when the data value is set to CURRENT_TIME\n */\n private setTimeInterval() {\n if (this.timeinterval) {\n return;\n }\n this.timeinterval = setInterval( () => {\n const now = this.timeZone ? getMomentLocaleObject(this.timeZone) : new Date();\n now.setSeconds(now.getSeconds() + 1);\n this.datavalue = CURRENT_TIME;\n this.onTimeChange(now);\n }, 1000);\n }\n\n /**\n * This is an internal method used to clear the time interval created\n */\n private clearTimeInterval() {\n if (this.timeinterval) {\n clearInterval(this.timeinterval);\n this.timeinterval = null;\n }\n }\n\n /**\n * This function sets the value isOpen/isTimeOpen (i.e when datepicker popup is closed) based on widget type(i.e DateTime, Time)\n * @param val - isOpen/isTimeOpen is set based on the timepicker popup is open/closed\n */\n private setIsTimeOpen(val: boolean) {\n this.status.isopen = val;\n }\n\n // Change event is registered from the template, Prevent the framework from registering one more event\n protected handleEvent(node: HTMLElement, eventName: string, eventCallback: Function, locals: any) {\n if (!includes(['blur', 'focus', 'change', 'click'], eventName)) {\n super.handleEvent(node, eventName, eventCallback, locals);\n }\n }\n\n public hideTimepickerDropdown() {\n this.invokeOnTouched();\n this.status.isopen = false;\n if (this.deregisterEventListener) {\n this.deregisterEventListener();\n }\n this.removeKeyupListener();\n const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n if (parentEl.length > 0) {\n this.app.notify('captionPositionAnimate', {displayVal: this.displayValue, nativeEl: parentEl});\n }\n this.blurDateInput(true);\n }\n\n private isValid(event) {\n if (!event) {\n const enteredDate = $(this.nativeElement).find('input').val();\n const newVal = getNativeDateObject(enteredDate, {meridians: this.meridians, pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });\n if (!this.formatValidation(newVal, enteredDate)) {\n return;\n }\n }\n }\n /**\n * This is an internal method to add css class for dropdown while opening the time dropdown\n */\n public onShown() {\n const tpElements = document.querySelectorAll('timepicker');\n forEach(tpElements, element => {\n addClass(element.parentElement as HTMLElement, 'app-datetime', true);\n });\n this.focusTimePickerPopover(this);\n this.bindTimePickerKeyboardEvents();\n adjustContainerPosition($('bs-dropdown-container'), this.nativeElement, this.bsDropdown._dropdown, $('bs-dropdown-container .dropdown-menu'));\n }\n\n public assignModel() {\n if (!this.displayInputElem) {\n this.displayInputElem = this.getMobileInput();\n }\n (this.displayInputElem as any).value = get(this, 'nativeDisplayValue');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { TimepickerModule } from 'ngx-bootstrap/timepicker';\nimport { WmComponentsModule } from '@wm/components/base';\n\nimport { DateComponent } from './date/date.component';\nimport { DateTimePickerComponent, TimePickerComponent } from './date-time/date-time-picker.component';\nimport { DatetimeComponent } from './date-time/date-time.component';\nimport { TimeComponent } from './time/time.component';\nimport { PickerComponent, PickerGroupComponent } from './picker/picker.component';\nimport { IMaskModule } from 'angular-imask';\n\n\nconst components = [\n DateComponent,\n DatetimeComponent,\n TimeComponent,\n DateTimePickerComponent,\n TimePickerComponent,\n PickerComponent,\n PickerGroupComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n BsDatepickerModule,\n BsDropdownModule,\n FormsModule,\n TimepickerModule,\n WmComponentsModule,\n IMaskModule\n ],\n declarations: [...components],\n exports: [...components]\n})\nexport class EpochModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["_c0","CURRENT_DATE","_isNaN","parseInt","registerProps","DEFAULT_CLS","WIDGET_CONFIG","isNaN","_c1"],"mappings":"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"}
|