@openmrs/ngx-formentry 3.2.1-pre.245 → 3.2.1-pre.268
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +13 -0
- package/.eslintrc.json +45 -0
- package/.prettierignore +40 -0
- package/.prettierrc +6 -0
- package/.turbo/turbo-build:lib.log +25 -0
- package/.yarn/plugins/@yarnpkg/plugin-version.cjs +550 -0
- package/.yarn/versions/ac1219f3.yml +0 -0
- package/README.md +429 -0
- package/angular.json +164 -0
- package/{esm2015/components/afe-ng-select.component.js → dist/ngx-formentry/esm2020/components/afe-ng-select.component.mjs} +4 -4
- package/dist/ngx-formentry/esm2020/components/appointments-overview/appointments-overview.component.mjs +116 -0
- package/{esm2015/components/check-box/checkbox.component.js → dist/ngx-formentry/esm2020/components/check-box/checkbox.component.mjs} +6 -10
- package/{esm2015/components/check-box/checkbox.module.js → dist/ngx-formentry/esm2020/components/check-box/checkbox.module.mjs} +5 -5
- package/{esm2015/components/custom-component-wrapper/custom-component-wrapper..module.js → dist/ngx-formentry/esm2020/components/custom-component-wrapper/custom-component-wrapper..module.mjs} +5 -5
- package/dist/ngx-formentry/esm2020/components/custom-component-wrapper/custom-component-wrapper.component.mjs +21 -0
- package/{esm2015/components/custom-control-wrapper/custom-control-wrapper..module.js → dist/ngx-formentry/esm2020/components/custom-control-wrapper/custom-control-wrapper..module.mjs} +5 -5
- package/dist/ngx-formentry/esm2020/components/custom-control-wrapper/custom-control-wrapper.component.mjs +68 -0
- package/dist/ngx-formentry/esm2020/components/date-time-picker/date-picker/date-picker.component.mjs +188 -0
- package/dist/ngx-formentry/esm2020/components/date-time-picker/date-time-picker.component.mjs +115 -0
- package/{esm2015/components/date-time-picker/date-time-picker.module.js → dist/ngx-formentry/esm2020/components/date-time-picker/date-time-picker.module.mjs} +5 -5
- package/dist/ngx-formentry/esm2020/components/date-time-picker/picker-modal/modal.component.mjs +25 -0
- package/{esm2015/components/date-time-picker/pipes/moment.pipe.js → dist/ngx-formentry/esm2020/components/date-time-picker/pipes/moment.pipe.mjs} +4 -4
- package/dist/ngx-formentry/esm2020/components/date-time-picker/time-picker/time-picker.component.mjs +121 -0
- package/{esm2015/components/file-upload/file-upload.component.js → dist/ngx-formentry/esm2020/components/file-upload/file-upload.component.mjs} +8 -13
- package/{esm2015/components/file-upload/file-upload.module.js → dist/ngx-formentry/esm2020/components/file-upload/file-upload.module.mjs} +5 -5
- package/dist/ngx-formentry/esm2020/components/file-upload/secure.pipe.mjs +101 -0
- package/{esm2015/components/input/input.directive.js → dist/ngx-formentry/esm2020/components/input/input.directive.mjs} +4 -4
- package/{esm2015/components/input/input.module.js → dist/ngx-formentry/esm2020/components/input/input.module.mjs} +5 -5
- package/{esm2015/components/input/label.component.js → dist/ngx-formentry/esm2020/components/input/label.component.mjs} +4 -4
- package/{esm2015/components/input/text-area.directive.js → dist/ngx-formentry/esm2020/components/input/text-area.directive.mjs} +4 -4
- package/dist/ngx-formentry/esm2020/components/ngx-datetime-picker/ngx-datetime-picker.component.mjs +76 -0
- package/{esm2015/components/ngx-datetime-picker/ngx-datetime-picker.module.js → dist/ngx-formentry/esm2020/components/ngx-datetime-picker/ngx-datetime-picker.module.mjs} +5 -5
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-adapter.class.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-adapter.class.mjs} +5 -5
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time.module.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time.module.mjs} +9 -9
- package/dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/calendar-body.component.mjs +142 -0
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/calendar-month-view.component.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/calendar-month-view.component.mjs} +5 -11
- package/dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.mjs +373 -0
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.mjs} +5 -11
- package/dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/calendar.component.mjs +342 -0
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.mjs} +5 -11
- package/dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.mjs +392 -0
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.mjs} +4 -4
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-intl.service.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time-picker-intl.service.mjs} +4 -4
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.mjs} +4 -4
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker.component.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time-picker.component.mjs} +5 -11
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time.class.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time.class.mjs} +4 -4
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time.module.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time.module.mjs} +6 -7
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.mjs} +4 -4
- package/dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/timer-box.component.mjs +90 -0
- package/dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/timer.component.mjs +292 -0
- package/{esm2015/components/ngx-pick-datetime/lib/dialog/dialog-container.component.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/dialog/dialog-container.component.mjs} +6 -10
- package/dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/dialog/dialog.module.mjs +26 -0
- package/{esm2015/components/ngx-pick-datetime/lib/dialog/dialog.service.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/dialog/dialog.service.mjs} +4 -4
- package/{esm2015/components/ngx-remote-select/ngx-remote-select.component.js → dist/ngx-formentry/esm2020/components/ngx-remote-select/ngx-remote-select.component.mjs} +6 -10
- package/{esm2015/components/ngx-remote-select/ngx-remote-select.module.js → dist/ngx-formentry/esm2020/components/ngx-remote-select/ngx-remote-select.module.mjs} +5 -5
- package/dist/ngx-formentry/esm2020/components/ngx-tabset/components/ngx-tab-set.component.mjs +72 -0
- package/dist/ngx-formentry/esm2020/components/ngx-tabset/components/tab.component.mjs +33 -0
- package/{esm2015/components/ngx-tabset/directives/hover-class.directive.js → dist/ngx-formentry/esm2020/components/ngx-tabset/directives/hover-class.directive.mjs} +4 -4
- package/{esm2015/components/ngx-tabset/modules/ngx-tabset.module.js → dist/ngx-formentry/esm2020/components/ngx-tabset/modules/ngx-tabset.module.mjs} +5 -5
- package/dist/ngx-formentry/esm2020/components/number-input/number-input.component.mjs +248 -0
- package/{esm2015/components/number-input/number-input.module.js → dist/ngx-formentry/esm2020/components/number-input/number-input.module.mjs} +5 -5
- package/{esm2015/components/number-input/number.directive.js → dist/ngx-formentry/esm2020/components/number-input/number.directive.mjs} +4 -4
- package/dist/ngx-formentry/esm2020/components/radio-button/radio.component.mjs +96 -0
- package/{esm2015/components/radio-button/radio.module.js → dist/ngx-formentry/esm2020/components/radio-button/radio.module.mjs} +5 -5
- package/{esm2015/components/select/optgroup.directive.js → dist/ngx-formentry/esm2020/components/select/optgroup.directive.mjs} +4 -4
- package/{esm2015/components/select/option.directive.js → dist/ngx-formentry/esm2020/components/select/option.directive.mjs} +4 -4
- package/dist/ngx-formentry/esm2020/components/select/select.component.mjs +182 -0
- package/{esm2015/components/select/select.module.js → dist/ngx-formentry/esm2020/components/select/select.module.mjs} +5 -5
- package/{esm2015/form-entry/data-sources/data-sources.js → dist/ngx-formentry/esm2020/form-entry/data-sources/data-sources.mjs} +4 -4
- package/{esm2015/form-entry/directives/collapse.directive.js → dist/ngx-formentry/esm2020/form-entry/directives/collapse.directive.mjs} +5 -5
- package/{esm2015/form-entry/directives/historical-value.directive.js → dist/ngx-formentry/esm2020/form-entry/directives/historical-value.directive.mjs} +4 -4
- package/dist/ngx-formentry/esm2020/form-entry/error-renderer/error-renderer.component.mjs +53 -0
- package/{esm2015/form-entry/expression-runner/expression-runner.js → dist/ngx-formentry/esm2020/form-entry/expression-runner/expression-runner.mjs} +6 -6
- package/{esm2015/form-entry/form-entry.module.js → dist/ngx-formentry/esm2020/form-entry/form-entry.module.mjs} +5 -5
- package/{esm2015/form-entry/form-factory/control-relations.factory.js → dist/ngx-formentry/esm2020/form-entry/form-factory/control-relations.factory.mjs} +4 -4
- package/dist/ngx-formentry/esm2020/form-entry/form-factory/form-control.service.mjs +118 -0
- package/{esm2015/form-entry/form-factory/form.factory.js → dist/ngx-formentry/esm2020/form-entry/form-factory/form.factory.mjs} +4 -4
- package/{esm2015/form-entry/form-factory/hiders-disablers.factory.js → dist/ngx-formentry/esm2020/form-entry/form-factory/hiders-disablers.factory.mjs} +4 -4
- package/dist/ngx-formentry/esm2020/form-entry/form-factory/question.factory.mjs +1000 -0
- package/{esm2015/form-entry/form-factory/show-messages.factory.js → dist/ngx-formentry/esm2020/form-entry/form-factory/show-messages.factory.mjs} +4 -4
- package/{esm2015/form-entry/form-factory/validation.factory.js → dist/ngx-formentry/esm2020/form-entry/form-factory/validation.factory.mjs} +4 -4
- package/dist/ngx-formentry/esm2020/form-entry/form-renderer/form-renderer.component.mjs +264 -0
- package/{esm2015/form-entry/helpers/historical-expression-helper-service.js → dist/ngx-formentry/esm2020/form-entry/helpers/historical-expression-helper-service.mjs} +4 -4
- package/{esm2015/form-entry/helpers/historical-field-helper-service.js → dist/ngx-formentry/esm2020/form-entry/helpers/historical-field-helper-service.mjs} +4 -4
- package/{esm2015/form-entry/helpers/js-expression-helper.js → dist/ngx-formentry/esm2020/form-entry/helpers/js-expression-helper.mjs} +7 -11
- package/{esm2015/form-entry/pipes/time-ago.pipe.js → dist/ngx-formentry/esm2020/form-entry/pipes/time-ago.pipe.mjs} +4 -4
- package/{esm2015/form-entry/services/debug-mode.service.js → dist/ngx-formentry/esm2020/form-entry/services/debug-mode.service.mjs} +4 -4
- package/{esm2015/form-entry/services/form-errors.service.js → dist/ngx-formentry/esm2020/form-entry/services/form-errors.service.mjs} +4 -4
- package/{esm2015/form-entry/services/form-schema-compiler.service.js → dist/ngx-formentry/esm2020/form-entry/services/form-schema-compiler.service.mjs} +4 -4
- package/{esm2015/form-entry/services/historical-encounter-data.service.js → dist/ngx-formentry/esm2020/form-entry/services/historical-encounter-data.service.mjs} +4 -4
- package/dist/ngx-formentry/esm2020/form-entry/value-adapters/diagnosis.adapter.mjs +144 -0
- package/dist/ngx-formentry/esm2020/form-entry/value-adapters/encounter.adapter.mjs +186 -0
- package/dist/ngx-formentry/esm2020/form-entry/value-adapters/obs-adapter-helper.mjs +533 -0
- package/{esm2015/form-entry/value-adapters/obs.adapter.js → dist/ngx-formentry/esm2020/form-entry/value-adapters/obs.adapter.mjs} +4 -4
- package/{esm2015/form-entry/value-adapters/order.adapter.js → dist/ngx-formentry/esm2020/form-entry/value-adapters/order.adapter.mjs} +4 -4
- package/{esm2015/form-entry/value-adapters/patient-identifier.adapter.js → dist/ngx-formentry/esm2020/form-entry/value-adapters/patient-identifier.adapter.mjs} +4 -4
- package/{esm2015/form-entry/value-adapters/person-attribute.adapter.js → dist/ngx-formentry/esm2020/form-entry/value-adapters/person-attribute.adapter.mjs} +4 -4
- package/{esm2015/shared.module.js → dist/ngx-formentry/esm2020/shared.module.mjs} +5 -5
- package/dist/ngx-formentry/fesm2015/openmrs-ngx-formentry.mjs +14714 -0
- package/dist/ngx-formentry/fesm2015/openmrs-ngx-formentry.mjs.map +1 -0
- package/{fesm2015/openmrs-ngx-formentry.js → dist/ngx-formentry/fesm2020/openmrs-ngx-formentry.mjs} +367 -524
- package/dist/ngx-formentry/fesm2020/openmrs-ngx-formentry.mjs.map +1 -0
- package/dist/ngx-formentry/package.json +48 -0
- package/package.json +92 -26
- package/proxy.conf.json +6 -0
- package/scripts/build.sh +2 -0
- package/tsconfig.json +29 -0
- package/turbo.json +18 -0
- package/bundles/openmrs-ngx-formentry.umd.js +0 -16636
- package/bundles/openmrs-ngx-formentry.umd.js.map +0 -1
- package/esm2015/components/appointments-overview/appointments-overview.component.js +0 -121
- package/esm2015/components/custom-component-wrapper/custom-component-wrapper.component.js +0 -24
- package/esm2015/components/custom-control-wrapper/custom-control-wrapper.component.js +0 -74
- package/esm2015/components/date-time-picker/date-picker/date-picker.component.js +0 -192
- package/esm2015/components/date-time-picker/date-time-picker.component.js +0 -120
- package/esm2015/components/date-time-picker/picker-modal/modal.component.js +0 -31
- package/esm2015/components/date-time-picker/time-picker/time-picker.component.js +0 -125
- package/esm2015/components/file-upload/secure.pipe.js +0 -101
- package/esm2015/components/ngx-datetime-picker/ngx-datetime-picker.component.js +0 -81
- package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-body.component.js +0 -149
- package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.js +0 -378
- package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar.component.js +0 -348
- package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.js +0 -399
- package/esm2015/components/ngx-pick-datetime/lib/date-time/timer-box.component.js +0 -96
- package/esm2015/components/ngx-pick-datetime/lib/date-time/timer.component.js +0 -298
- package/esm2015/components/ngx-pick-datetime/lib/dialog/dialog.module.js +0 -27
- package/esm2015/components/ngx-tabset/components/ngx-tab-set.component.js +0 -76
- package/esm2015/components/ngx-tabset/components/tab.component.js +0 -37
- package/esm2015/components/number-input/number-input.component.js +0 -252
- package/esm2015/components/radio-button/radio.component.js +0 -102
- package/esm2015/components/select/select.component.js +0 -187
- package/esm2015/form-entry/error-renderer/error-renderer.component.js +0 -57
- package/esm2015/form-entry/form-factory/form-control.service.js +0 -119
- package/esm2015/form-entry/form-factory/question.factory.js +0 -1001
- package/esm2015/form-entry/form-renderer/form-renderer.component.js +0 -270
- package/esm2015/form-entry/value-adapters/diagnosis.adapter.js +0 -140
- package/esm2015/form-entry/value-adapters/encounter.adapter.js +0 -187
- package/esm2015/form-entry/value-adapters/obs-adapter-helper.js +0 -536
- package/fesm2015/openmrs-ngx-formentry.js.map +0 -1
- /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-control-type.d.ts +0 -0
- /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-form-array.d.ts +0 -0
- /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-form-control.d.ts +0 -0
- /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-form-group.d.ts +0 -0
- /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/control-extensions.d.ts +0 -0
- /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/index.d.ts +0 -0
- /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/value-change.listener.d.ts +0 -0
- /package/{change-tracking → dist/ngx-formentry/change-tracking}/control-relation.d.ts +0 -0
- /package/{change-tracking → dist/ngx-formentry/change-tracking}/control-relations.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/afe-ng-select.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/appointments-overview/appointments-overview.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/check-box/checkbox.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/check-box/checkbox.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/custom-component-wrapper/custom-component-wrapper..module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/custom-component-wrapper/custom-component-wrapper.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/custom-control-wrapper/custom-control-wrapper..module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/custom-control-wrapper/custom-control-wrapper.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/date-time-picker/date-picker/date-picker.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/date-time-picker/date-time-picker.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/date-time-picker/date-time-picker.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/date-time-picker/index.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/date-time-picker/picker-modal/modal.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/date-time-picker/pipes/moment.pipe.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/date-time-picker/time-picker/time-picker.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/file-upload/file-upload.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/file-upload/file-upload.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/file-upload/secure.pipe.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/input/input.directive.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/input/input.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/input/label.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/input/text-area.directive.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-datetime-picker/ngx-datetime-picker.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-datetime-picker/ngx-datetime-picker.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/adapter/date-time-adapter.class.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/adapter/date-time-format.class.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/adapter/native-date-time-adapter.class.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/adapter/native-date-time-format.class.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/adapter/native-date-time.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/calendar-body.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/calendar-month-view.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/calendar-year-view.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/calendar.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time-inline.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time-picker-intl.service.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time-picker.animations.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time-picker.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time.class.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/timer-box.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/timer.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/dialog/dialog-config.class.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/dialog/dialog-container.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/dialog/dialog-ref.class.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/dialog/dialog.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/dialog/dialog.service.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/utils/index.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/utils/object.utils.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-remote-select/ngx-remote-select.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-remote-select/ngx-remote-select.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-tabset/components/ngx-tab-set.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-tabset/components/tab.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-tabset/directives/hover-class.directive.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-tabset/modules/ngx-tabset.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/number-input/number-input.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/number-input/number-input.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/number-input/number.directive.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/radio-button/radio.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/radio-button/radio.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/select/optgroup.directive.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/select/option.directive.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/select/select.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/select/select.module.d.ts +0 -0
- /package/{esm2015/abstract-controls-extension/afe-control-type.js → dist/ngx-formentry/esm2020/abstract-controls-extension/afe-control-type.mjs} +0 -0
- /package/{esm2015/abstract-controls-extension/afe-form-array.js → dist/ngx-formentry/esm2020/abstract-controls-extension/afe-form-array.mjs} +0 -0
- /package/{esm2015/abstract-controls-extension/afe-form-control.js → dist/ngx-formentry/esm2020/abstract-controls-extension/afe-form-control.mjs} +0 -0
- /package/{esm2015/abstract-controls-extension/afe-form-group.js → dist/ngx-formentry/esm2020/abstract-controls-extension/afe-form-group.mjs} +0 -0
- /package/{esm2015/abstract-controls-extension/control-extensions.js → dist/ngx-formentry/esm2020/abstract-controls-extension/control-extensions.mjs} +0 -0
- /package/{esm2015/abstract-controls-extension/index.js → dist/ngx-formentry/esm2020/abstract-controls-extension/index.mjs} +0 -0
- /package/{esm2015/abstract-controls-extension/value-change.listener.js → dist/ngx-formentry/esm2020/abstract-controls-extension/value-change.listener.mjs} +0 -0
- /package/{esm2015/change-tracking/control-relation.js → dist/ngx-formentry/esm2020/change-tracking/control-relation.mjs} +0 -0
- /package/{esm2015/change-tracking/control-relations.js → dist/ngx-formentry/esm2020/change-tracking/control-relations.mjs} +0 -0
- /package/{esm2015/components/date-time-picker/index.js → dist/ngx-formentry/esm2020/components/date-time-picker/index.mjs} +0 -0
- /package/{esm2015/components/ngx-pick-datetime/lib/date-time/adapter/date-time-adapter.class.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/adapter/date-time-adapter.class.mjs} +0 -0
- /package/{esm2015/components/ngx-pick-datetime/lib/date-time/adapter/date-time-format.class.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/adapter/date-time-format.class.mjs} +0 -0
- /package/{esm2015/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-format.class.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-format.class.mjs} +0 -0
- /package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker.animations.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time-picker.animations.mjs} +0 -0
- /package/{esm2015/components/ngx-pick-datetime/lib/dialog/dialog-config.class.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/dialog/dialog-config.class.mjs} +0 -0
- /package/{esm2015/components/ngx-pick-datetime/lib/dialog/dialog-ref.class.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/dialog/dialog-ref.class.mjs} +0 -0
- /package/{esm2015/components/ngx-pick-datetime/lib/utils/index.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/utils/index.mjs} +0 -0
- /package/{esm2015/components/ngx-pick-datetime/lib/utils/object.utils.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/utils/object.utils.mjs} +0 -0
- /package/{esm2015/form-entry/control-alerts/alert-helpers.js → dist/ngx-formentry/esm2020/form-entry/control-alerts/alert-helpers.mjs} +0 -0
- /package/{esm2015/form-entry/control-alerts/can-generate-alert.js → dist/ngx-formentry/esm2020/form-entry/control-alerts/can-generate-alert.mjs} +0 -0
- /package/{esm2015/form-entry/control-calculators/can-calculate.js → dist/ngx-formentry/esm2020/form-entry/control-calculators/can-calculate.mjs} +0 -0
- /package/{esm2015/form-entry/control-hiders-disablers/can-disable.js → dist/ngx-formentry/esm2020/form-entry/control-hiders-disablers/can-disable.mjs} +0 -0
- /package/{esm2015/form-entry/control-hiders-disablers/can-hide.js → dist/ngx-formentry/esm2020/form-entry/control-hiders-disablers/can-hide.mjs} +0 -0
- /package/{esm2015/form-entry/control-hiders-disablers/disabler-helper.js → dist/ngx-formentry/esm2020/form-entry/control-hiders-disablers/disabler-helper.mjs} +0 -0
- /package/{esm2015/form-entry/control-hiders-disablers/hider-helpers.js → dist/ngx-formentry/esm2020/form-entry/control-hiders-disablers/hider-helpers.mjs} +0 -0
- /package/{esm2015/form-entry/data-sources/dummy-data-source.js → dist/ngx-formentry/esm2020/form-entry/data-sources/dummy-data-source.mjs} +0 -0
- /package/{esm2015/form-entry/directives/collapse-animations.js → dist/ngx-formentry/esm2020/form-entry/directives/collapse-animations.mjs} +0 -0
- /package/{esm2015/form-entry/form-factory/form-node.js → dist/ngx-formentry/esm2020/form-entry/form-factory/form-node.mjs} +0 -0
- /package/{esm2015/form-entry/form-factory/form.js → dist/ngx-formentry/esm2020/form-entry/form-factory/form.mjs} +0 -0
- /package/{esm2015/form-entry/form-factory/index.js → dist/ngx-formentry/esm2020/form-entry/form-factory/index.mjs} +0 -0
- /package/{esm2015/form-entry/helpers/risk-dataset-table.js → dist/ngx-formentry/esm2020/form-entry/helpers/risk-dataset-table.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/checkbox.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/checkbox.model.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/conditional-validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/conditional-validation.model.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/custom-control-question.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/custom-control-question.model.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/date-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/date-question.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/date-validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/date-validation.model.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/diagnosis-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/diagnosis-question.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/file-upload-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/file-upload-question.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/group-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/group-question.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/base-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/base-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/checkbox-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/checkbox-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/data-source.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/data-source.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/date-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/date-question-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/diagnosis-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/diagnosis-question-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/file-upload-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/file-upload-question-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/group-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/group-question-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/multi-select-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/multi-select-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/nested-questions.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/nested-questions.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/radio-button-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/radio-button-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/repeating-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/repeating-question-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/select-option.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/select-option.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/select-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/select-question-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/test-order-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/test-order-question-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/text-area-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/text-area-question-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/text-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/text-question-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/ui-select-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/ui-select-question-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/js-expression-validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/js-expression-validation.model.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/max-length-validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/max-length-validation.model.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/max-validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/max-validation.model.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/min-length-validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/min-length-validation.model.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/min-validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/min-validation.model.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/models.js → dist/ngx-formentry/esm2020/form-entry/question-models/models.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/multi-select-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/multi-select-question.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/pair.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/pair.model.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/question-base.js → dist/ngx-formentry/esm2020/form-entry/question-models/question-base.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/radio-button.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/radio-button.model.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/rendering-type.js → dist/ngx-formentry/esm2020/form-entry/question-models/rendering-type.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/repeating-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/repeating-question.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/select-option.js → dist/ngx-formentry/esm2020/form-entry/question-models/select-option.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/select-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/select-question.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/test-order-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/test-order-question.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/text-area-input-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/text-area-input-question.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/text-input-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/text-input-question.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/ui-select-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/ui-select-question.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/validation.model.mjs} +0 -0
- /package/{esm2015/form-entry/validators/conditional-answered.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/conditional-answered.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/conditional-required.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/conditional-required.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/date.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/date.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/future-date-restriction.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/future-date-restriction.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/js-expression.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/js-expression.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/max-date.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/max-date.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/max-length.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/max-length.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/max.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/max.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/min-date.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/min-date.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/min-length.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/min-length.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/min.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/min.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/required.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/required.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/validations.js → dist/ngx-formentry/esm2020/form-entry/validators/validations.mjs} +0 -0
- /package/{esm2015/form-entry/value-adapters/value.adapter.js → dist/ngx-formentry/esm2020/form-entry/value-adapters/value.adapter.mjs} +0 -0
- /package/{esm2015/lib/index.js → dist/ngx-formentry/esm2020/lib/index.mjs} +0 -0
- /package/{esm2015/openmrs-ngx-formentry.js → dist/ngx-formentry/esm2020/openmrs-ngx-formentry.mjs} +0 -0
- /package/{esm2015/public_api.js → dist/ngx-formentry/esm2020/public_api.mjs} +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/control-alerts/alert-helpers.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/control-alerts/can-generate-alert.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/control-calculators/can-calculate.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/can-disable.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/can-hide.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/disabler-helper.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/hider-helpers.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/data-sources/data-sources.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/data-sources/dummy-data-source.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/directives/collapse-animations.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/directives/collapse.directive.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/directives/historical-value.directive.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/error-renderer/error-renderer.component.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/expression-runner/expression-runner.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-entry.module.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/control-relations.factory.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form-control.service.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form-node.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form.factory.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/hiders-disablers.factory.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/index.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/question.factory.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/show-messages.factory.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/validation.factory.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-renderer/form-renderer.component.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/historical-expression-helper-service.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/historical-field-helper-service.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/js-expression-helper.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/risk-dataset-table.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/pipes/time-ago.pipe.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/checkbox.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/conditional-validation.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/custom-control-question.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/date-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/date-validation.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/diagnosis-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/file-upload-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/group-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/base-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/checkbox-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/data-source.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/date-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/diagnosis-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/file-upload-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/group-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/multi-select-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/nested-questions.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/radio-button-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/repeating-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/select-option.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/select-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/test-order-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/text-area-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/text-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/ui-select-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/js-expression-validation.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/max-length-validation.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/max-validation.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/min-length-validation.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/min-validation.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/models.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/multi-select-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/pair.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/question-base.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/radio-button.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/rendering-type.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/repeating-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/select-option.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/select-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/test-order-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/text-area-input-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/text-input-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/ui-select-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/validation.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/services/debug-mode.service.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/services/form-errors.service.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/services/form-schema-compiler.service.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/services/historical-encounter-data.service.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/conditional-answered.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/conditional-required.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/date.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/future-date-restriction.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/js-expression.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/max-date.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/max-length.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/max.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/min-date.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/min-length.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/min.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/required.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/validations.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/diagnosis.adapter.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/encounter.adapter.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/obs-adapter-helper.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/obs.adapter.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/order.adapter.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/patient-identifier.adapter.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/person-attribute.adapter.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/value.adapter.d.ts +0 -0
- /package/{lib → dist/ngx-formentry/lib}/index.d.ts +0 -0
- /package/{openmrs-ngx-formentry.d.ts → dist/ngx-formentry/openmrs-ngx-formentry.d.ts} +0 -0
- /package/{public_api.d.ts → dist/ngx-formentry/public_api.d.ts} +0 -0
- /package/{shared.module.d.ts → dist/ngx-formentry/shared.module.d.ts} +0 -0
- /package/{styles → dist/ngx-formentry/styles}/ngx-formentry.css +0 -0
- /package/{styles → dist/ngx-formentry/styles}/picker.min.css +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openmrs-ngx-formentry.umd.js","sources":["../../../projects/ngx-formentry/src/form-entry/services/debug-mode.service.ts","../../../projects/ngx-formentry/src/form-entry/pipes/time-ago.pipe.ts","../../../projects/ngx-formentry/src/form-entry/services/form-errors.service.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/ngx-formentry/src/change-tracking/control-relation.ts","../../../projects/ngx-formentry/src/change-tracking/control-relations.ts","../../../projects/ngx-formentry/src/form-entry/control-hiders-disablers/hider-helpers.ts","../../../projects/ngx-formentry/src/form-entry/control-alerts/alert-helpers.ts","../../../projects/ngx-formentry/src/form-entry/control-hiders-disablers/disabler-helper.ts","../../../projects/ngx-formentry/src/form-entry/form-factory/form-node.ts","../../../projects/ngx-formentry/src/form-entry/question-models/validation.model.ts","../../../projects/ngx-formentry/src/form-entry/question-models/js-expression-validation.model.ts","../../../projects/ngx-formentry/src/form-entry/question-models/conditional-validation.model.ts","../../../projects/ngx-formentry/src/form-entry/form-factory/control-relations.factory.ts","../../../projects/ngx-formentry/src/form-entry/expression-runner/expression-runner.ts","../../../projects/ngx-formentry/src/abstract-controls-extension/afe-form-control.ts","../../../projects/ngx-formentry/src/abstract-controls-extension/afe-form-group.ts","../../../projects/ngx-formentry/src/abstract-controls-extension/afe-form-array.ts","../../../projects/ngx-formentry/src/abstract-controls-extension/afe-control-type.ts","../../../projects/ngx-formentry/src/form-entry/question-models/question-base.ts","../../../projects/ngx-formentry/src/form-entry/helpers/risk-dataset-table.ts","../../../projects/ngx-formentry/src/form-entry/helpers/js-expression-helper.ts","../../../projects/ngx-formentry/src/form-entry/validators/conditional-required.validator.ts","../../../projects/ngx-formentry/src/form-entry/validators/conditional-answered.validator.ts","../../../projects/ngx-formentry/src/form-entry/validators/required.validator.ts","../../../projects/ngx-formentry/src/form-entry/validators/date.validator.ts","../../../projects/ngx-formentry/src/form-entry/validators/min.validator.ts","../../../projects/ngx-formentry/src/form-entry/validators/max.validator.ts","../../../projects/ngx-formentry/src/form-entry/validators/min-date.validator.ts","../../../projects/ngx-formentry/src/form-entry/validators/max-date.validator.ts","../../../projects/ngx-formentry/src/form-entry/validators/future-date-restriction.validator.ts","../../../projects/ngx-formentry/src/form-entry/validators/validations.ts","../../../projects/ngx-formentry/src/form-entry/validators/js-expression.validator.ts","../../../projects/ngx-formentry/src/form-entry/validators/max-length.validator.ts","../../../projects/ngx-formentry/src/form-entry/validators/min-length.validator.ts","../../../projects/ngx-formentry/src/form-entry/form-factory/validation.factory.ts","../../../projects/ngx-formentry/src/form-entry/form-factory/hiders-disablers.factory.ts","../../../projects/ngx-formentry/src/form-entry/form-factory/show-messages.factory.ts","../../../projects/ngx-formentry/src/form-entry/form-factory/form-control.service.ts","../../../projects/ngx-formentry/src/form-entry/data-sources/data-sources.ts","../../../projects/ngx-formentry/src/components/ngx-tabset/components/tab.component.ts","../../../projects/ngx-formentry/src/components/ngx-tabset/components/tab.component.html","../../../projects/ngx-formentry/src/components/ngx-tabset/directives/hover-class.directive.ts","../../../projects/ngx-formentry/src/components/ngx-tabset/components/ngx-tab-set.component.ts","../../../projects/ngx-formentry/src/components/ngx-tabset/components/ngx-tab-set.component.html","../../../projects/ngx-formentry/src/components/custom-component-wrapper/custom-component-wrapper.component.ts","../../../projects/ngx-formentry/src/components/custom-component-wrapper/custom-component-wrapper.component.html","../../../projects/ngx-formentry/src/components/custom-control-wrapper/custom-control-wrapper.component.ts","../../../projects/ngx-formentry/src/components/custom-control-wrapper/custom-control-wrapper.component.html","../../../projects/ngx-formentry/src/components/select/select.component.ts","../../../projects/ngx-formentry/src/components/select/select.component.html","../../../projects/ngx-formentry/src/components/file-upload/secure.pipe.ts","../../../projects/ngx-formentry/src/components/file-upload/file-upload.component.ts","../../../projects/ngx-formentry/src/components/file-upload/file-upload.component.html","../../../projects/ngx-formentry/src/components/ngx-remote-select/ngx-remote-select.component.ts","../../../projects/ngx-formentry/src/components/ngx-remote-select/remote-select.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/adapter/date-time-format.class.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time-picker-intl.service.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/adapter/date-time-adapter.class.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/calendar-body.component.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/calendar-body.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/calendar-month-view.component.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/calendar-month-view.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/calendar.component.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/calendar.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time-picker.animations.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/timer-box.component.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/timer-box.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/timer.component.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/timer.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time.class.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/dialog/dialog-config.class.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/dialog/dialog-ref.class.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/dialog/dialog-container.component.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/dialog/dialog-container.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/utils/object.utils.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/utils/index.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/dialog/dialog.service.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time-picker.component.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time-picker.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.ts","../../../projects/ngx-formentry/src/components/ngx-datetime-picker/ngx-datetime-picker.component.ts","../../../projects/ngx-formentry/src/components/ngx-datetime-picker/ngx-datetime-picker.html","../../../projects/ngx-formentry/src/components/number-input/number.directive.ts","../../../projects/ngx-formentry/src/components/number-input/number-input.component.ts","../../../projects/ngx-formentry/src/components/number-input/number-input.component.html","../../../projects/ngx-formentry/src/components/radio-button/radio.component.ts","../../../projects/ngx-formentry/src/components/radio-button/radio.component.html","../../../projects/ngx-formentry/src/components/check-box/checkbox.component.ts","../../../projects/ngx-formentry/src/components/check-box/checkbox.component.html","../../../projects/ngx-formentry/src/components/appointments-overview/appointments-overview.component.ts","../../../projects/ngx-formentry/src/components/appointments-overview/appointments-overview.component.html","../../../projects/ngx-formentry/src/form-entry/helpers/historical-field-helper-service.ts","../../../projects/ngx-formentry/src/form-entry/directives/historical-value.directive.ts","../../../projects/ngx-formentry/src/form-entry/directives/collapse-animations.ts","../../../projects/ngx-formentry/src/form-entry/directives/collapse.directive.ts","../../../projects/ngx-formentry/src/components/input/text-area.directive.ts","../../../projects/ngx-formentry/src/components/input/input.directive.ts","../../../projects/ngx-formentry/src/form-entry/form-renderer/form-renderer.component.ts","../../../projects/ngx-formentry/src/form-entry/form-renderer/form-renderer.component.html","../../../projects/ngx-formentry/src/form-entry/error-renderer/error-renderer.component.ts","../../../projects/ngx-formentry/src/form-entry/error-renderer/error-renderer.component.html","../../../projects/ngx-formentry/src/components/number-input/number-input.module.ts","../../../projects/ngx-formentry/src/shared.module.ts","../../../projects/ngx-formentry/src/components/file-upload/file-upload.module.ts","../../../projects/ngx-formentry/src/components/date-time-picker/picker-modal/modal.component.ts","../../../projects/ngx-formentry/src/components/date-time-picker/picker-modal/modal.component.html","../../../projects/ngx-formentry/src/components/date-time-picker/pipes/moment.pipe.ts","../../../projects/ngx-formentry/src/components/date-time-picker/date-picker/date-picker.component.ts","../../../projects/ngx-formentry/src/components/date-time-picker/date-picker/date-picker.component.html","../../../projects/ngx-formentry/src/components/date-time-picker/time-picker/time-picker.component.ts","../../../projects/ngx-formentry/src/components/date-time-picker/time-picker/time-picker.component.html","../../../projects/ngx-formentry/src/components/date-time-picker/date-time-picker.component.ts","../../../projects/ngx-formentry/src/components/date-time-picker/date-time-picker.component.html","../../../projects/ngx-formentry/src/components/date-time-picker/date-time-picker.module.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.html","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/dialog/dialog.module.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/date-time.module.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-adapter.class.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-format.class.ts","../../../projects/ngx-formentry/src/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time.module.ts","../../../projects/ngx-formentry/src/components/ngx-datetime-picker/ngx-datetime-picker.module.ts","../../../projects/ngx-formentry/src/form-entry/question-models/select-option.ts","../../../projects/ngx-formentry/src/components/afe-ng-select.component.ts","../../../projects/ngx-formentry/src/form-entry/services/form-schema-compiler.service.ts","../../../projects/ngx-formentry/src/form-entry/question-models/text-input-question.ts","../../../projects/ngx-formentry/src/form-entry/question-models/text-area-input-question.ts","../../../projects/ngx-formentry/src/form-entry/question-models/select-question.ts","../../../projects/ngx-formentry/src/form-entry/question-models/ui-select-question.ts","../../../projects/ngx-formentry/src/form-entry/question-models/date-question.ts","../../../projects/ngx-formentry/src/form-entry/question-models/multi-select-question.ts","../../../projects/ngx-formentry/src/form-entry/question-models/interfaces/nested-questions.ts","../../../projects/ngx-formentry/src/form-entry/question-models/group-question.ts","../../../projects/ngx-formentry/src/form-entry/question-models/repeating-question.ts","../../../projects/ngx-formentry/src/form-entry/question-models/checkbox.model.ts","../../../projects/ngx-formentry/src/form-entry/question-models/radio-button.model.ts","../../../projects/ngx-formentry/src/form-entry/form-factory/form.ts","../../../projects/ngx-formentry/src/form-entry/question-models/file-upload-question.ts","../../../projects/ngx-formentry/src/form-entry/question-models/test-order-question.ts","../../../projects/ngx-formentry/src/form-entry/question-models/date-validation.model.ts","../../../projects/ngx-formentry/src/form-entry/question-models/max-validation.model.ts","../../../projects/ngx-formentry/src/form-entry/question-models/min-validation.model.ts","../../../projects/ngx-formentry/src/form-entry/data-sources/dummy-data-source.ts","../../../projects/ngx-formentry/src/form-entry/services/historical-encounter-data.service.ts","../../../projects/ngx-formentry/src/form-entry/helpers/historical-expression-helper-service.ts","../../../projects/ngx-formentry/src/form-entry/question-models/diagnosis-question.ts","../../../projects/ngx-formentry/src/form-entry/question-models/max-length-validation.model.ts","../../../projects/ngx-formentry/src/form-entry/question-models/min-length-validation.model.ts","../../../projects/ngx-formentry/src/form-entry/form-factory/question.factory.ts","../../../projects/ngx-formentry/src/form-entry/form-factory/form.factory.ts","../../../projects/ngx-formentry/src/form-entry/value-adapters/order.adapter.ts","../../../projects/ngx-formentry/src/form-entry/value-adapters/diagnosis.adapter.ts","../../../projects/ngx-formentry/src/form-entry/value-adapters/obs-adapter-helper.ts","../../../projects/ngx-formentry/src/form-entry/value-adapters/obs.adapter.ts","../../../projects/ngx-formentry/src/form-entry/value-adapters/encounter.adapter.ts","../../../projects/ngx-formentry/src/form-entry/value-adapters/person-attribute.adapter.ts","../../../projects/ngx-formentry/src/components/ngx-remote-select/ngx-remote-select.module.ts","../../../projects/ngx-formentry/src/components/check-box/checkbox.module.ts","../../../projects/ngx-formentry/src/components/radio-button/radio.module.ts","../../../projects/ngx-formentry/src/components/ngx-tabset/modules/ngx-tabset.module.ts","../../../projects/ngx-formentry/src/components/select/option.directive.ts","../../../projects/ngx-formentry/src/components/select/optgroup.directive.ts","../../../projects/ngx-formentry/src/components/select/select.module.ts","../../../projects/ngx-formentry/src/components/input/label.component.ts","../../../projects/ngx-formentry/src/components/input/input.module.ts","../../../projects/ngx-formentry/src/components/custom-control-wrapper/custom-control-wrapper..module.ts","../../../projects/ngx-formentry/src/components/custom-component-wrapper/custom-component-wrapper..module.ts","../../../projects/ngx-formentry/src/form-entry/value-adapters/patient-identifier.adapter.ts","../../../projects/ngx-formentry/src/form-entry/form-entry.module.ts","../../../projects/ngx-formentry/src/form-entry/question-models/pair.model.ts","../../../projects/ngx-formentry/src/form-entry/question-models/rendering-type.ts","../../../projects/ngx-formentry/src/components/date-time-picker/index.ts","../../../projects/ngx-formentry/src/lib/index.ts","../../../projects/ngx-formentry/src/openmrs-ngx-formentry.ts"],"sourcesContent":["/*\nThis service checks if the debug mode on ng2-amrs\nhas been enabled by checking cookies.\nIf the debug mode has been enabled then\nit returns true and all fields are displayed\nfor use by testers\n*/\n\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class DebugModeService {\n public cookieKey = 'formDebug';\n\n constructor() {}\n public debugEnabled(): boolean {\n // check if the hidefield\n return false;\n }\n}\n","import {\n Pipe,\n PipeTransform,\n NgZone,\n ChangeDetectorRef,\n OnDestroy\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n@Pipe({\n name: 'timeAgo',\n pure: false\n})\nexport class TimeAgoPipe implements PipeTransform, OnDestroy {\n private timer: number;\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private ngZone: NgZone,\n public translate: TranslateService\n ) {}\n transform(value: string) {\n this.removeTimer();\n const d = new Date(value);\n const now = new Date();\n const seconds = Math.round(Math.abs((now.getTime() - d.getTime()) / 1000));\n const timeToUpdate = Number.isNaN(seconds)\n ? 1000\n : this.getSecondsUntilUpdate(seconds) * 1000;\n this.timer = this.ngZone.runOutsideAngular(() => {\n if (typeof window !== 'undefined') {\n return window.setTimeout(() => {\n this.ngZone.run(() => this.changeDetectorRef.markForCheck());\n }, timeToUpdate);\n }\n return null;\n });\n const minutes = Math.round(Math.abs(seconds / 60));\n const hours = Math.round(Math.abs(minutes / 60));\n const days = Math.round(Math.abs(hours / 24));\n const months = Math.round(Math.abs(days / 30.416));\n const years = Math.round(Math.abs(days / 365));\n if (Number.isNaN(seconds)) {\n return '';\n } else if (seconds <= 45) {\n return this.translate.instant('aMinuteAgo');\n } else if (seconds <= 90) {\n return this.translate.instant('minutesAgo');\n } else if (minutes <= 45) {\n return minutes + ' ' + this.translate.instant('minutesAgo');\n } else if (minutes <= 90) {\n return this.translate.instant('anHourAgo');\n } else if (hours <= 22) {\n return hours + ' ' + this.translate.instant('hoursAgo');\n } else if (hours <= 36) {\n return this.translate.instant('aDayAgo');\n } else if (days <= 25) {\n return days + ' ' + this.translate.instant('daysAgo');\n } else if (days <= 45) {\n return this.translate.instant('aMonthAgo');\n } else if (days <= 345) {\n return months + ' ' + this.translate.instant('monthsAgo');\n } else if (days <= 545) {\n return this.translate.instant('aYearAgo');\n } else {\n // (days > 545)\n return years + ' ' + this.translate.instant('yearsAgo');\n }\n }\n ngOnDestroy(): void {\n this.removeTimer();\n }\n private removeTimer() {\n if (this.timer) {\n window.clearTimeout(this.timer);\n this.timer = null;\n }\n }\n private getSecondsUntilUpdate(seconds: number) {\n const min = 60;\n const hr = min * 60;\n const day = hr * 24;\n if (seconds < min) {\n // less than 1 min, update every 2 secs\n return 2;\n } else if (seconds < hr) {\n // less than an hour, update every 30 secs\n return 30;\n } else if (seconds < day) {\n // less then a day, update every 5 mins\n return 300;\n } else {\n // update every hour\n return 3600;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\nimport { AbstractControl } from '@angular/forms';\nimport { AfeFormControl } from '../../public_api';\nimport { AfeFormArray, AfeFormGroup } from '../../abstract-controls-extension';\n\n@Injectable()\nexport class FormErrorsService {\n // Observable string sources\n public static control: AfeFormControl | AfeFormArray | AfeFormGroup = null;\n public static tab: number = null;\n public announceErrorFieldSource = new Subject<string>();\n public announceErrorField$: Observable<\n any\n > = this.announceErrorFieldSource.asObservable();\n public announceErrorField(error: string) {\n this.announceErrorFieldSource.next(error);\n }\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { AbstractControl } from '@angular/forms';\n\n// import { CanHide } from '../form-entry/control-hiders-disablers/can-hide';\n// import { CanDisable } from '../form-entry/control-hiders-disablers/can-disable';\n\nexport class ControlRelation {\n private _control: AbstractControl;\n private _relatedTo: AbstractControl;\n private _lastUpdateValue: any;\n\n constructor(control: AbstractControl, relatedTo: AbstractControl) {\n this._control = control;\n this._relatedTo = relatedTo;\n this._registerForChangesFromRelatedControl();\n }\n\n get control(): AbstractControl {\n return this._control;\n }\n\n get relatedTo(): AbstractControl {\n return this._relatedTo;\n }\n\n get lastUpdateValue(): any {\n return this._lastUpdateValue;\n }\n\n updateControlBasedOnRelation(newValue: any): boolean {\n if (newValue !== this._lastUpdateValue) {\n this._lastUpdateValue = newValue;\n\n if ((this._control as any).updateCalculatedValue) {\n (this._control as any).updateCalculatedValue();\n }\n\n this._control.updateValueAndValidity();\n if ((this._control as any).updateHiddenState) {\n (this._control as any).updateHiddenState();\n }\n\n if ((this._control as any).updateDisabledState) {\n (this._control as any).updateDisabledState();\n }\n\n if ((this._control as any).updateAlert) {\n (this._control as any).updateAlert();\n }\n return true;\n }\n return false;\n }\n\n private _registerForChangesFromRelatedControl() {\n this._relatedTo.valueChanges.subscribe((value) => {\n this.updateControlBasedOnRelation(value);\n });\n }\n}\n","import { AbstractControl } from '@angular/forms';\n\nimport { ControlRelation } from './control-relation';\n\nexport class ControlRelations {\n private _relationFor: AbstractControl;\n private _relations: ControlRelation[];\n private _otherRelations: any = [];\n\n constructor(\n relationFor: AbstractControl,\n relatedTo?: AbstractControl | AbstractControl[]\n ) {\n this._relationFor = relationFor;\n this._relations = [];\n\n if (relatedTo) {\n this.addRelatedControls(relatedTo);\n }\n }\n\n get relationsFor(): AbstractControl {\n return this._relationFor;\n }\n\n get relations(): ControlRelation[] {\n return this._relations;\n }\n\n get otherRelations() {\n return this._otherRelations;\n }\n\n addRelatedControls(relatedTo: AbstractControl | AbstractControl[]) {\n if (relatedTo instanceof AbstractControl) {\n this.relations.push(new ControlRelation(this._relationFor, relatedTo));\n }\n\n if (relatedTo instanceof Array) {\n for (let i = 0; i < relatedTo.length; i++) {\n this.relations.push(\n new ControlRelation(this._relationFor, relatedTo[i])\n );\n }\n }\n }\n}\n","import { CanHide, Hider } from './can-hide';\nexport class HiderHelper {\n public hideControl(control: CanHide) {\n control.hidden = true;\n if (control.disable) {\n control.disable();\n }\n }\n\n public showControl(control: CanHide) {\n control.hidden = false;\n }\n\n public setHiderForControl(control: CanHide, hider: Hider) {\n control.hiders.push(hider);\n }\n\n public clearHidersForControl(control: CanHide) {\n control.hiders.splice(0);\n control.hidden = false;\n }\n\n public evaluateControlHiders(control: CanHide) {\n let hiddenValue = false;\n control.hiders.forEach((hider) => {\n hider.reEvaluateHidingExpression();\n if (hider.toHide === true) {\n hiddenValue = true;\n }\n });\n\n control.hidden = hiddenValue;\n if (control.hidden && control.disable) {\n control.disable();\n // control.setValue(null);\n }\n }\n\n public setUpReEvaluationWhenValueChanges(control: CanHide) {\n if (control.updateHiddenState) {\n control.valueChanges.subscribe((val) => {\n control.updateHiddenState();\n });\n }\n }\n}\n","import { CanGenerateAlert, Alert } from './can-generate-alert';\nexport class AlertHelper {\n public hideAlert(control: Alert) {\n control.shown = false;\n }\n\n public showAlert(control: Alert) {\n control.shown = true;\n }\n\n public setAlertsForControl(control: CanGenerateAlert, alert: Alert) {\n control.alerts.push(alert);\n }\n\n public clearAlertsForControl(control: CanGenerateAlert) {\n control.alerts.splice(0);\n control.alert = '';\n }\n\n public evaluateControlAlerts(control: CanGenerateAlert) {\n let messageValue = '';\n control.alerts.forEach((message) => {\n message.reEvaluateAlertExpression();\n if (message.shown === true) {\n messageValue = message.alertMessage;\n } else {\n messageValue = '';\n }\n });\n\n control.alert = messageValue;\n // if (control.message && control.disable) {\n // control.disable();\n // // control.setValue(null);\n // }\n }\n\n public setUpReEvaluationWhenValueChanges(control: CanGenerateAlert) {\n if (control.updateAlert) {\n control.valueChanges.subscribe((val) => {\n control.updateAlert();\n });\n }\n }\n}\n","import { CanDisable, Disabler } from './can-disable';\nexport class DisablerHelper {\n public setDisablerForControl(control: CanDisable, disabler: Disabler) {\n control.disablers.push(disabler);\n }\n\n public clearDisablersForControl(control: CanDisable) {\n control.disablers.splice(0);\n control.disable();\n }\n\n public evaluateControlDisablers(control: CanDisable) {\n let toDisable = false;\n control.disablers.forEach((hider) => {\n hider.reEvaluateDisablingExpression();\n if (hider.toDisable === true) {\n toDisable = true;\n }\n });\n\n if (toDisable) {\n control.disable();\n } else {\n control.enable();\n }\n }\n\n public setUpReEvaluationWhenValueChanges(control: CanDisable) {\n if (control.updateDisabledState) {\n control.valueChanges.subscribe((val) => {\n control.updateDisabledState();\n });\n }\n }\n}\n","import { FormFactory } from './form.factory';\nimport { Form } from './form';\n\n// import { AfeControlType, AfeFormArray, AfeFormGroup, AfeFormControl } from '../../abstract-controls-extension';\nimport { QuestionBase, RepeatingQuestion } from '../question-models/models';\nimport {\n AfeFormControl,\n AfeFormArray,\n AfeFormGroup\n} from '../../abstract-controls-extension';\nimport { TranslateService } from '@ngx-translate/core';\nexport interface ChildNodeCreatedListener {\n addChildNodeCreatedListener(func: any);\n\n fireChildNodeCreatedListener(node: GroupNode);\n}\n\nexport type CreateArrayChildNodeFunction = (\n question: RepeatingQuestion,\n node: ArrayNode,\n factory?: FormFactory,\n position?: number\n) => GroupNode;\n\nexport interface RemoveArrayChildNodeFunction {\n (index: number, node: ArrayNode);\n}\n\nexport abstract class NodeBase {\n public abstract children?: any;\n public nodeIndex?: Number;\n private _control: AfeFormControl | AfeFormArray | AfeFormGroup;\n private _questionModel: QuestionBase;\n private _form: Form;\n private _path: string;\n\n public initialValue: any;\n\n constructor(\n question: QuestionBase,\n control?: AfeFormControl | AfeFormArray | AfeFormGroup,\n form?: Form,\n parentPath?: string\n ) {\n this._control = control;\n this._questionModel = question;\n this._form = form;\n this._path = parentPath ? parentPath + '.' + question.key : question.key;\n }\n\n public get question(): QuestionBase {\n return this._questionModel;\n }\n\n public get control(): AfeFormControl | AfeFormArray | AfeFormGroup {\n return this._control;\n }\n\n public get form(): Form {\n return this._form;\n }\n\n public get path(): string {\n return this._path;\n }\n removeAt(index: number) {}\n\n createChildNode() {}\n removeChildNode() {}\n}\n\nexport class LeafNode extends NodeBase {\n get children() {\n return null;\n }\n constructor(\n question: QuestionBase,\n control?: AfeFormControl | AfeFormArray | AfeFormGroup,\n parentControl?: AfeFormControl | AfeFormArray | AfeFormGroup,\n form?: Form,\n parentPath?: string\n ) {\n super(question, control, form, parentPath);\n }\n}\n\nexport class GroupNode extends NodeBase {\n private _children: any;\n constructor(\n question: QuestionBase,\n control?: AfeFormControl | AfeFormArray | AfeFormGroup,\n parentControl?: AfeFormControl | AfeFormArray | AfeFormGroup,\n form?: Form,\n parentPath?: string\n ) {\n super(question, control, form, parentPath);\n this._children = {};\n }\n\n public get children(): any {\n return this._children;\n }\n\n public setChild(key: string, node: NodeBase) {\n this.children[key] = node;\n }\n}\n\nexport class ArrayNode extends NodeBase implements ChildNodeCreatedListener {\n private childNodeCreatedEvents: any[] = [];\n private _children: GroupNode[];\n public createChildFunc: CreateArrayChildNodeFunction;\n public removeChildFunc: RemoveArrayChildNodeFunction;\n\n constructor(\n question: QuestionBase,\n public translate: TranslateService,\n control?: AfeFormControl | AfeFormArray | AfeFormGroup,\n parentControl?: AfeFormControl | AfeFormArray | AfeFormGroup,\n private formFactory?: FormFactory,\n form?: Form,\n parentPath?: string\n ) {\n super(question, control, form, parentPath);\n this._children = [];\n this.childNodeCreatedEvents = [];\n }\n\n public get children(): GroupNode[] {\n return this._children;\n }\n\n public createChildNode(): GroupNode {\n if (this.children.length >= this.question.extras.questionOptions.max) {\n confirm(\n this.translate\n .instant('maxEntries')\n .replace('{max}', this.question.extras.questionOptions.max)\n );\n return;\n }\n if (this.createChildFunc) {\n const g: GroupNode = this.createChildFunc(\n this.question as RepeatingQuestion,\n this,\n this.formFactory\n );\n this.fireChildNodeCreatedListener(g);\n return g;\n }\n return null;\n }\n\n public removeAt(index: number) {\n if (this.children.length <= this.question.extras.questionOptions.min) {\n const clearPrompt = confirm(this.translate.instant('clearEntry'));\n if (clearPrompt && this.removeChildFunc && this.createChildNode) {\n this.removeChildFunc(index, this);\n\n const g: GroupNode = this.createChildFunc(\n this.question as RepeatingQuestion,\n this,\n this.formFactory,\n index\n );\n this.fireChildNodeCreatedListener(g);\n return g;\n }\n } else {\n const removePrompt = confirm(this.translate.instant('deleteEntry'));\n if (removePrompt) {\n if (this.removeChildFunc) {\n this.removeChildFunc(index, this);\n }\n }\n }\n }\n\n addChildNodeCreatedListener(func: any) {\n this.childNodeCreatedEvents.push(func);\n }\n\n fireChildNodeCreatedListener(node: GroupNode) {\n for (let i = 0; i < this.childNodeCreatedEvents.length; i++) {\n const func: any = this.childNodeCreatedEvents[i];\n func(node);\n }\n }\n}\n","export class ValidationModel {\n type: string;\n\n message: string;\n\n constructor(validations: any) {\n this.type = validations.type;\n this.message = validations.message || null;\n }\n}\n","import { ValidationModel } from './validation.model';\n\nexport class JsExpressionValidationModel extends ValidationModel {\n failsWhenExpression: string;\n\n constructor(validations: any) {\n super(validations);\n this.failsWhenExpression = validations.failsWhenExpression;\n }\n}\n","import { ValidationModel } from './validation.model';\n\nexport class ConditionalValidationModel extends ValidationModel {\n referenceQuestionId: string;\n referenceQuestionAnswers: any;\n\n constructor(validations: any) {\n super(validations);\n this.referenceQuestionId = validations.referenceQuestionId;\n this.referenceQuestionAnswers = validations.referenceQuestionAnswers;\n }\n}\n","import { Injectable } from '@angular/core';\n\n// import { ControlRelation } from '../../change-tracking/control-relation';\nimport { QuestionBase } from '../question-models/question-base';\nimport { JsExpressionValidationModel } from '../question-models/js-expression-validation.model';\nimport { ConditionalValidationModel } from '../question-models/conditional-validation.model';\nimport { NodeBase, GroupNode, LeafNode, ArrayNode } from './form-node';\nimport { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\nimport { AfeFormArray } from '../../abstract-controls-extension/afe-form-array';\nimport { Form } from './form';\n\n@Injectable()\nexport class ControlRelationsFactory {\n constructor() {}\n\n buildRelations(rootNode: GroupNode) {\n const controlsStore: any = this.mapControlIds(rootNode, {});\n\n for (const key in controlsStore) {\n if (controlsStore.hasOwnProperty(key)) {\n const nodeBase: NodeBase = controlsStore[key];\n\n this.setRelations(controlsStore, nodeBase);\n }\n }\n }\n\n buildArrayNodeRelations(node: GroupNode) {\n const form: Form = node.form;\n\n if (!form) {\n return;\n }\n const rootNode: GroupNode = form.rootNode;\n\n // build relations for controls in the same array\n this.buildRelations(node);\n\n // build relations for control outside the array\n const rootControlsStore: any = this.mapControlIds(rootNode, {});\n const arrayControlStore: any = this.mapControlIds(node, {});\n\n for (const key in rootControlsStore) {\n if (rootControlsStore.hasOwnProperty(key)) {\n const child: NodeBase = rootControlsStore[key];\n\n if (child instanceof LeafNode) {\n const questionBase: QuestionBase = (child as LeafNode).question;\n\n if (questionBase.key && questionBase.key.length > 0) {\n this.setRelations(arrayControlStore, child);\n }\n }\n }\n }\n\n // define relations for controls outside the group to controls in this group\n this.createRelationsToArrayControls(node);\n\n // fire relations\n for (const id in arrayControlStore) {\n if (arrayControlStore.hasOwnProperty(id)) {\n const child: NodeBase = arrayControlStore[id];\n const control: AfeFormControl | AfeFormArray = child.control as\n | AfeFormControl\n | AfeFormArray;\n control.updateHiddenState();\n control.updateAlert();\n }\n }\n }\n\n createRelationsToArrayControls(node: GroupNode) {\n const form: Form = node.form;\n\n const rootNode: GroupNode = form.rootNode;\n\n // build relations for control outside the array\n const rootControlsStore: any = this.mapControlIds(rootNode, {});\n const arrayControlStore: any = this.mapControlIds(node, {});\n\n // loop through form controls\n for (const key in rootControlsStore) {\n if (rootControlsStore.hasOwnProperty(key)) {\n const rChild: NodeBase = rootControlsStore[key];\n\n const parentNodePath = node.path.substring(\n 0,\n node.path.lastIndexOf('.')\n );\n\n if (rChild.path.indexOf(parentNodePath + '.') === -1) {\n // loop through controls in the array group\n for (const id in arrayControlStore) {\n if (arrayControlStore.hasOwnProperty(id)) {\n const aChild: NodeBase = arrayControlStore[id];\n const aChildId = aChild.question.key;\n if (this.hasRelation(aChildId, rChild.question)) {\n const nodes: Array<NodeBase> = node.form.searchNodeByPath(\n rootNode,\n parentNodePath,\n []\n );\n if (nodes.length > 0) {\n const an = nodes[0] as ArrayNode;\n const rootControl = rChild.control as\n | AfeFormControl\n | AfeFormArray;\n\n if (\n rootControl.controlRelations.otherRelations.indexOf(an) ===\n -1\n ) {\n rootControl.controlRelations.otherRelations.push(an);\n }\n\n (aChild.control as\n | AfeFormControl\n | AfeFormArray).addValueChangeListener((value) => {\n if ((rootControl as any).updateCalculatedValue) {\n (rootControl as any).updateCalculatedValue();\n }\n\n rootControl.updateValueAndValidity();\n if ((rootControl as any).updateHiddenState) {\n (rootControl as any).updateHiddenState();\n }\n\n if ((rootControl as any).updateAlert) {\n (rootControl as any).updateAlert();\n }\n\n if ((rootControl as any).updateDisabledState) {\n (rootControl as any).updateDisabledState();\n }\n });\n }\n }\n }\n }\n }\n }\n }\n }\n\n getRelationsForControl(\n id,\n node: GroupNode\n ): Array<AfeFormControl | AfeFormArray> {\n const relations: Array<AfeFormControl | AfeFormArray> = new Array<\n AfeFormControl | AfeFormArray\n >();\n\n const nodeBaseArray: Array<NodeBase> = node.form.searchNodeByQuestionId(id);\n\n if (nodeBaseArray.length > 0) {\n const nodeBase: NodeBase = nodeBaseArray[0];\n\n const controlList: any = this.mapControlIds(node, {});\n\n for (const key in controlList) {\n if (controlList.hasOwnProperty(key)) {\n if (\n this.hasRelation(controlList[key].question.key, nodeBase.question)\n ) {\n relations.push(controlList[key].control);\n }\n }\n }\n }\n return relations;\n }\n\n mapControlIds(node: GroupNode, controlsStore: any) {\n const children: NodeBase = node.children;\n\n for (const key in children) {\n if (children.hasOwnProperty(key)) {\n const child: NodeBase = children[key];\n\n if (child instanceof GroupNode) {\n this.mapControlIds(child, controlsStore);\n } else if (child instanceof LeafNode) {\n const questionBase: QuestionBase = (child as LeafNode).question;\n\n if (questionBase.key && questionBase.key.length > 0) {\n controlsStore[questionBase.key] = child;\n }\n } else if (child instanceof ArrayNode) {\n const questionBase: QuestionBase = (child as ArrayNode).question;\n\n if (questionBase.key && questionBase.key.length > 0) {\n controlsStore[questionBase.key] = child;\n }\n }\n }\n }\n\n return controlsStore;\n }\n\n setRelations(controlsStore: any, nodeBase: NodeBase) {\n const questionBase: QuestionBase = nodeBase.question;\n\n const id = questionBase.key;\n\n for (const key in controlsStore) {\n if (controlsStore.hasOwnProperty(key) && key !== id) {\n const node: NodeBase = controlsStore[key];\n const question: QuestionBase = node.question;\n\n if (this.hasRelation(id, question, nodeBase)) {\n this.addRelationToControl(\n node.control as AfeFormControl | AfeFormArray,\n nodeBase.control as AfeFormControl | AfeFormArray\n );\n }\n\n // add conditional required and conditional answered relations\n if (typeof question.required === 'object') {\n const required: any = question.required;\n\n if (required.type === 'conditionalRequired') {\n if (required.referenceQuestionId === id) {\n this.addRelationToControl(\n node.control as AfeFormControl | AfeFormArray,\n nodeBase.control as AfeFormControl | AfeFormArray\n );\n }\n }\n }\n }\n }\n }\n\n hasRelation(id: string, questionBase: QuestionBase, nodeBase?: NodeBase) {\n let hasRelation = false;\n\n if (questionBase.validators && questionBase.validators.length > 0) {\n questionBase.validators.forEach((element) => {\n if (element instanceof JsExpressionValidationModel) {\n const model: JsExpressionValidationModel = element as JsExpressionValidationModel;\n\n const failsWhenExpression: string = model.failsWhenExpression;\n if (failsWhenExpression && failsWhenExpression.indexOf(id) !== -1) {\n hasRelation = true;\n }\n } else if (\n element instanceof ConditionalValidationModel &&\n element.type === 'conditionalAnswered' &&\n element.referenceQuestionId === id\n ) {\n hasRelation = true;\n }\n });\n }\n\n // add hiders and disablers relations\n if (!hasRelation) {\n if (typeof questionBase.hide === 'string') {\n const hide: string = questionBase.hide as string;\n\n if (hide.length > 0 && hide.indexOf(id) !== -1) {\n hasRelation = true;\n }\n } else if (typeof questionBase.hide === 'object') {\n const hideObj: any = questionBase.hide;\n\n if (hideObj.field === id) {\n hasRelation = true;\n }\n }\n\n if (questionBase.alert && typeof questionBase.alert === 'object') {\n hasRelation = true;\n }\n\n if (typeof questionBase.disable === 'string') {\n const disable: string = questionBase.disable as string;\n\n if (disable.length > 0 && disable.indexOf(id) !== -1) {\n hasRelation = true;\n }\n }\n }\n\n // add calculate expressions relations\n if (\n !hasRelation &&\n questionBase.calculateExpression &&\n questionBase.calculateExpression.length > 0 &&\n questionBase.calculateExpression.indexOf(id) !== -1\n ) {\n hasRelation = true;\n }\n\n return hasRelation;\n }\n\n addRelationToControl(\n control: AfeFormControl | AfeFormArray,\n related: AfeFormControl | AfeFormArray\n ) {\n // let relations = control.controlRelations.relations;\n //\n // let hasRelation = false;\n //\n // relations.forEach(element => {\n //\n // let controlRelation: ControlRelation = element as ControlRelation;\n //\n // let relation: AfeFormControl | AfeFormArray = controlRelation.control as AfeFormControl | AfeFormArray;\n //\n // if ( control.uuid !== undefined && control.uuid === relation.uuid ) {\n // hasRelation = true;\n // }\n // });\n\n // if ( !hasRelation ) {\n control.controlRelations.addRelatedControls(related);\n // }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport {\n AfeFormControl,\n AfeFormArray,\n AfeFormGroup\n} from '../../abstract-controls-extension/control-extensions';\nimport { ArrayNode } from '../form-factory/form-node';\nimport { ControlRelationsFactory } from '../form-factory/control-relations.factory';\nimport { Form } from '../form-factory/form';\nimport moment from 'moment';\n@Injectable()\nexport class ExpressionRunner {\n getRunnable(\n expression: string,\n control: AfeFormArray | AfeFormGroup | AfeFormControl,\n helper: any,\n dataDependencies: any,\n form?: Form\n ): Runnable {\n const runner = this;\n const runnable: Runnable = {\n run: () => {\n let scope: any = {};\n if (control.uuid) {\n scope[control.uuid] = control.value;\n }\n window['moment'] = moment;\n // scope.moment = moment;\n scope['myValue'] = control.value;\n scope['FORM'] = {};\n runner.setControlQuestion(control, form, scope);\n runner.getControlRelationValueString(control, scope);\n runner.getHelperMethods(helper, scope);\n runner.getDataDependencies(dataDependencies, scope);\n if (form) {\n // console.error('Form defined', form);\n runner.getDataDependencies(\n form.dataSourcesContainer.dataSources,\n scope\n );\n }\n\n let paramList = '';\n let argList = '';\n for (let o in scope) {\n paramList = paramList === '' ? paramList + o : paramList + ',' + o;\n argList =\n argList === ''\n ? argList + \"scope['\" + o + \"']\"\n : argList + \",scope['\" + o + \"']\";\n }\n\n // prevent more than one return statements\n if (expression.indexOf('return') === -1) {\n expression = 'return ' + expression;\n }\n\n try {\n const afeDynamicFunc = new Function(paramList, expression);\n scope[Symbol.iterator] = function* () {\n var k;\n for (k in this) {\n yield this[k];\n }\n };\n if (Object.keys(scope).indexOf('undefined') >= 0) {\n console.warn('Missing reference found', expression, scope);\n return false;\n }\n return afeDynamicFunc.call(this, ...scope);\n } catch (error) {\n // if (window['error_count']) {\n // window['error_count'] = window['error_count'] + 1;\n // } else {\n // window['error_count'] = 1;\n // }\n // console.error(window['error_count'] + ' Error running expression:' + expression + '. ',\n // e, control, 'Effective Expression', (funcDeclarationCode + funcCallCode));\n // console.error('Error running expression:' + expression + '. ',\n // e, control, 'Effective Expression', (funcDeclarationCode + funcCallCode));\n\n // Uncomment the line above during debugging\n // console.error(`Error running expression: ${expression} scope: ${scope} error: ${error}`);\n\n return false;\n }\n /* eslint-enable */\n }\n };\n return runnable;\n }\n\n private getControlRelationValueString(\n control: AfeFormArray | AfeFormGroup | AfeFormControl,\n scope: any\n ) {\n if (\n control &&\n control.controlRelations &&\n control.controlRelations.relations\n ) {\n control.controlRelations.relations.forEach((relation) => {\n if (relation.relatedTo) {\n const related = relation.relatedTo as any;\n const relatedAsControl = relation.relatedTo as AbstractControl;\n if (relatedAsControl && Array.isArray(relatedAsControl.value)) {\n scope[related.uuid] = relation.relatedTo.value;\n } else {\n scope[related.uuid] =\n relation.relatedTo.value && relation.relatedTo.value.value\n ? relation.relatedTo.value.value\n : relation.relatedTo.value;\n }\n }\n });\n }\n\n if (\n control &&\n control.controlRelations &&\n control.controlRelations.otherRelations &&\n control.controlRelations.otherRelations.length > 0\n ) {\n control.controlRelations.otherRelations.forEach((node) => {\n if (node instanceof ArrayNode) {\n const arrayNode: ArrayNode = node as ArrayNode;\n const uuid = control.uuid;\n\n const controlRelationsFactory: ControlRelationsFactory = new ControlRelationsFactory();\n let relationsForControl: Array<AfeFormControl | AfeFormArray> = [];\n // get all related controls\n arrayNode.children.forEach((child) => {\n relationsForControl = relationsForControl.concat(\n controlRelationsFactory.getRelationsForControl(uuid, child)\n );\n });\n\n this.setControlArrayValues(\n control as AfeFormControl | AfeFormArray,\n relationsForControl,\n scope\n );\n }\n });\n }\n }\n\n private setControlQuestion(\n control: AfeFormArray | AfeFormGroup | AfeFormControl,\n form: Form,\n scope: any\n ) {\n if (\n form &&\n control &&\n control.controlRelations &&\n control.controlRelations.relations\n ) {\n control.controlRelations.relations.forEach((relation) => {\n const related = relation.relatedTo as any;\n const question = form.searchNodeByQuestionId(related.uuid)[0]?.question\n ?.extras;\n scope['FORM'][related.uuid] = question;\n });\n }\n }\n\n private setControlArrayValues(\n control: AfeFormControl | AfeFormArray,\n relationsForControl: Array<AfeFormControl | AfeFormArray>,\n scope: any\n ) {\n const keys: Array<string> = this._getFormControlKeys(relationsForControl);\n\n keys.forEach((key) => {\n const values: any = this._getValuesForKey(key, relationsForControl);\n scope[key] = values;\n });\n }\n\n private _getFormControlKeys(\n array: Array<AfeFormControl | AfeFormArray>\n ): Array<string> {\n const keys: Array<string> = [];\n array.forEach((control) => {\n if (keys.indexOf(control.uuid) === -1) {\n keys.push(control.uuid);\n }\n });\n\n return keys;\n }\n\n private _getValuesForKey(\n key: string,\n array: Array<AfeFormControl | AfeFormArray>\n ): any {\n const values: any = [];\n\n array.forEach((control) => {\n if (control.uuid === key) {\n values.push(control.value);\n }\n });\n\n return values;\n }\n\n private getHelperMethods(obj: any, scope?: any) {\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n scope[key] = obj[key];\n }\n }\n }\n\n private getDataDependencies(obj: any, scope?: any) {\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n scope[key] = obj[key];\n }\n }\n }\n}\n\nexport interface Runnable {\n run();\n}\n","import {\n FormControl,\n ValidatorFn,\n AsyncValidatorFn,\n AbstractControlOptions\n} from '@angular/forms';\n\nimport { ControlRelations } from '../change-tracking/control-relations';\nimport { ValueChangeListener } from './value-change.listener';\nimport {\n CanHide,\n Hider\n} from '../form-entry/control-hiders-disablers/can-hide';\nimport {\n CanDisable,\n Disabler\n} from '../form-entry/control-hiders-disablers/can-disable';\nimport {\n CanGenerateAlert,\n Alert\n} from '../form-entry/control-alerts/can-generate-alert';\nimport { HiderHelper } from '../form-entry/control-hiders-disablers/hider-helpers';\nimport { AlertHelper } from '../form-entry/control-alerts/alert-helpers';\nimport { DisablerHelper } from '../form-entry/control-hiders-disablers/disabler-helper';\nimport { CanCalculate } from '../form-entry/control-calculators/can-calculate';\nimport { ExpressionRunner } from '../form-entry/expression-runner/expression-runner';\n\nclass AfeFormControl\n extends FormControl\n implements\n CanHide,\n CanDisable,\n CanCalculate,\n CanGenerateAlert,\n ValueChangeListener {\n private _controlRelations: ControlRelations;\n private _valueChangeListener: any;\n private _previousValue;\n public uuid: string;\n public pathFromRoot: string;\n\n hidden = false;\n hiders: Hider[];\n alert: string;\n alerts: Alert[];\n calculator: Function;\n disablers: Disabler[];\n\n private hiderHelper: HiderHelper = new HiderHelper();\n private disablerHelper: DisablerHelper = new DisablerHelper();\n private AlertHelper: AlertHelper = new AlertHelper();\n constructor(\n formState?: any,\n validator?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null,\n asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null\n ) {\n super(formState, validator, asyncValidator);\n this._controlRelations = new ControlRelations(this);\n this.hiders = [];\n this.disablers = [];\n this.alerts = [];\n\n this.valueChanges.subscribe((value) => {\n if (this._previousValue !== value) {\n this.fireValueChangeListener(value);\n this._previousValue = value;\n }\n });\n }\n\n get controlRelations(): ControlRelations {\n return this._controlRelations;\n }\n\n disable(param?: { onlySelf?: boolean; emitEvent?: boolean }) {\n super.disable(param);\n if (\n this.disablers.some((disabler) => disabler.resetValueOnDisable === true)\n ) {\n super.setValue('');\n }\n }\n\n hide() {\n this.hiderHelper.hideControl(this);\n }\n\n show() {\n this.hiderHelper.showControl(this);\n }\n\n setHidingFn(newHider: Hider) {\n this.hiderHelper.setHiderForControl(this, newHider);\n }\n\n setCalculatorFn(newCalculator: Function) {\n this.calculator = newCalculator;\n }\n\n updateCalculatedValue() {\n if (this.calculator) {\n const _val = this.calculator.call(ExpressionRunner, {});\n this.setValue(_val);\n }\n }\n\n clearHidingFns() {\n this.hiderHelper.clearHidersForControl(this);\n }\n\n updateHiddenState() {\n this.hiderHelper.evaluateControlHiders(this);\n }\n\n setDisablingFn(newDisabler: Disabler) {\n this.disablerHelper.setDisablerForControl(this, newDisabler);\n }\n\n clearDisablingFns() {\n this.disablerHelper.clearDisablersForControl(this);\n }\n\n updateDisabledState() {\n this.disablerHelper.evaluateControlDisablers(this);\n }\n\n setAlertFn(newHider: Alert) {\n this.AlertHelper.setAlertsForControl(this, newHider);\n }\n\n clearMessageFns() {\n this.AlertHelper.clearAlertsForControl(this);\n }\n\n updateAlert() {\n this.AlertHelper.evaluateControlAlerts(this);\n }\n\n addValueChangeListener(func: any) {\n this._valueChangeListener = func;\n }\n\n fireValueChangeListener(value: any) {\n if (\n this._valueChangeListener &&\n typeof this._valueChangeListener === 'function'\n ) {\n this._valueChangeListener(value);\n }\n }\n\n setValue(value: any) {\n super.setValue(value);\n }\n}\nexport { AfeFormControl };\n","import {\n FormGroup,\n ValidatorFn,\n AsyncValidatorFn,\n AbstractControl\n} from '@angular/forms';\n\nimport { ControlRelations } from '../change-tracking/control-relations';\n\nimport {\n CanHide,\n Hider\n} from '../form-entry/control-hiders-disablers/can-hide';\nimport {\n CanDisable,\n Disabler\n} from '../form-entry/control-hiders-disablers/can-disable';\nimport {\n CanGenerateAlert,\n Alert\n} from '../form-entry/control-alerts/can-generate-alert';\nimport { HiderHelper } from '../form-entry/control-hiders-disablers/hider-helpers';\nimport { DisablerHelper } from '../form-entry/control-hiders-disablers/disabler-helper';\nimport { AlertHelper } from '../form-entry/control-alerts/alert-helpers';\n\nexport class AfeFormGroup\n extends FormGroup\n implements CanHide, CanDisable, CanGenerateAlert {\n private _controlRelations: ControlRelations;\n\n public uuid: string;\n public pathFromRoot: string;\n\n hidden: false;\n hiders: Hider[];\n alert: string;\n alerts: Alert[];\n\n disablers: Disabler[];\n\n private hiderHelper: HiderHelper = new HiderHelper();\n private disablerHelper: DisablerHelper = new DisablerHelper();\n private AlertHelper: AlertHelper = new AlertHelper();\n\n constructor(\n controls: { [key: string]: AbstractControl },\n validator?: ValidatorFn,\n asyncValidator?: AsyncValidatorFn\n ) {\n super(controls, validator, asyncValidator);\n this._controlRelations = new ControlRelations(this);\n this.hiders = [];\n this.disablers = [];\n this.alerts = [];\n }\n\n get controlRelations(): ControlRelations {\n return this._controlRelations;\n }\n\n hide() {\n this.hiderHelper.hideControl(this);\n }\n\n show() {\n this.hiderHelper.showControl(this);\n }\n\n disable(param?: { onlySelf?: boolean; emitEvent?: boolean }) {\n super.disable(param);\n if (\n this.disablers.some((disabler) => disabler.resetValueOnDisable === true)\n ) {\n super.setValue({});\n }\n }\n\n setHidingFn(newHider: Hider) {\n this.hiderHelper.setHiderForControl(this, newHider);\n }\n\n clearHidingFns() {\n this.hiderHelper.clearHidersForControl(this);\n }\n\n updateHiddenState() {\n this.hiderHelper.evaluateControlHiders(this);\n }\n\n setDisablingFn(newDisabler: Disabler) {\n this.disablerHelper.setDisablerForControl(this, newDisabler);\n }\n\n clearDisablingFns() {\n this.disablerHelper.clearDisablersForControl(this);\n }\n\n updateDisabledState() {\n this.disablerHelper.evaluateControlDisablers(this);\n }\n\n setAlertFn(newHider: Alert) {\n this.AlertHelper.setAlertsForControl(this, newHider);\n }\n\n clearMessageFns() {\n this.AlertHelper.clearAlertsForControl(this);\n }\n\n updateAlert() {\n this.AlertHelper.evaluateControlAlerts(this);\n }\n setValue(value: any) {\n super.setValue(value);\n }\n}\n","import {\n FormArray,\n ValidatorFn,\n AsyncValidatorFn,\n AbstractControl\n} from '@angular/forms';\n\nimport { ControlRelations } from '../change-tracking/control-relations';\nimport { ValueChangeListener } from './value-change.listener';\nimport {\n CanHide,\n Hider\n} from '../form-entry/control-hiders-disablers/can-hide';\nimport {\n CanGenerateAlert,\n Alert\n} from '../form-entry/control-alerts/can-generate-alert';\nimport {\n CanDisable,\n Disabler\n} from '../form-entry/control-hiders-disablers/can-disable';\nimport { HiderHelper } from '../form-entry/control-hiders-disablers/hider-helpers';\nimport { AlertHelper } from '../form-entry/control-alerts/alert-helpers';\nimport { DisablerHelper } from '../form-entry/control-hiders-disablers/disabler-helper';\n\nexport class AfeFormArray\n extends FormArray\n implements CanHide, CanDisable, CanGenerateAlert, ValueChangeListener {\n private _controlRelations: ControlRelations;\n private _valueChangeListener: any;\n private _previousValue;\n private _uuid: string;\n public pathFromRoot: string;\n\n hidden: false;\n hiders: Hider[];\n\n alert: string;\n alerts: Alert[];\n\n disablers: Disabler[];\n\n private hiderHelper: HiderHelper = new HiderHelper();\n private AlertHelper: AlertHelper = new AlertHelper();\n private disablerHelper: DisablerHelper = new DisablerHelper();\n\n constructor(\n controls: AbstractControl[],\n validator?: ValidatorFn,\n asyncValidator?: AsyncValidatorFn\n ) {\n super(controls, validator, asyncValidator);\n this._controlRelations = new ControlRelations(this);\n this.hiders = [];\n this.alerts = [];\n this.disablers = [];\n\n this.valueChanges.subscribe((value) => {\n if (this._previousValue !== value) {\n this.fireValueChangeListener(value);\n this._previousValue = value;\n }\n });\n }\n\n get uuid(): string {\n return this._uuid;\n }\n set uuid(val: string) {\n this._uuid = val;\n }\n\n get controlRelations(): ControlRelations {\n return this._controlRelations;\n }\n\n hide() {\n this.hiderHelper.hideControl(this);\n }\n\n show() {\n this.hiderHelper.showControl(this);\n }\n\n disable(param?: { onlySelf?: boolean; emitEvent?: boolean }) {\n super.disable(param);\n if (\n this.disablers.some((disabler) => disabler.resetValueOnDisable === true)\n ) {\n super.setValue([]);\n }\n }\n\n setHidingFn(newHider: Hider) {\n this.hiderHelper.setHiderForControl(this, newHider);\n }\n\n clearHidingFns() {\n this.hiderHelper.clearHidersForControl(this);\n }\n\n updateHiddenState() {\n this.hiderHelper.evaluateControlHiders(this);\n }\n\n setDisablingFn(newDisabler: Disabler) {\n this.disablerHelper.setDisablerForControl(this, newDisabler);\n }\n\n clearDisablingFns() {\n this.disablerHelper.clearDisablersForControl(this);\n }\n\n updateDisabledState() {\n this.disablerHelper.evaluateControlDisablers(this);\n }\n\n setAlertFn(newHider: Alert) {\n this.AlertHelper.setAlertsForControl(this, newHider);\n }\n\n clearMessageFns() {\n this.AlertHelper.clearAlertsForControl(this);\n }\n\n updateAlert() {\n this.AlertHelper.evaluateControlAlerts(this);\n }\n\n addValueChangeListener(func: any) {\n this._valueChangeListener = func;\n }\n\n fireValueChangeListener(value: any) {\n if (this.alerts.length > 0) {\n this.updateAlert();\n }\n if (\n this._valueChangeListener &&\n typeof this._valueChangeListener === 'function'\n ) {\n this._valueChangeListener(value);\n }\n }\n\n setValue(value: any) {\n super.setValue(value);\n }\n}\n","export enum AfeControlType {\n AfeFormControl,\n AfeFormArray,\n AfeFormGroup,\n None\n}\n","import { BaseOptions } from './interfaces/base-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\nimport { ValidationModel } from './validation.model';\n\nexport class QuestionBase implements BaseOptions {\n type: string;\n order?: number;\n questionOptions?: any;\n questions?: any;\n placeholder?: any;\n hidden?: any;\n showTime?: any;\n showWeek?: any;\n historicalDisplay?: any;\n rows?: any;\n showWeeksAdder?: any;\n datePickerFormat: string;\n key: string;\n alert?: any;\n\n label?: string;\n prefix?: string;\n renderingType: string;\n\n orientation?: string;\n defaultValue?: any;\n originalValue?: any;\n enableHistoricalValue?: boolean;\n showHistoricalValueDate?: boolean;\n historicalDataValue?: any;\n extras?: any;\n dataSource?: string;\n dataSourceOptions?: any;\n\n controlType?: AfeControlType;\n validators?: Array<ValidationModel>;\n required?: boolean;\n hide?: string | boolean;\n resetValueOnDisable?: boolean;\n disable?: string | boolean;\n readOnly?: string | boolean;\n calculateExpression?: string;\n componentConfigs: Array<any>;\n options?: any;\n questionIndex?: Number;\n\n allowUnselect?: boolean;\n\n constructor(options: BaseOptions) {\n this.defaultValue = options.defaultValue;\n this.originalValue = options.originalValue;\n this.extras = options.extras;\n this.renderingType = options.type;\n this.key = options.key || '';\n this.label = options.label || '';\n this.validators = options.validators || [];\n this.required = options.required;\n this.hide = options.hide;\n this.disable = options.disable;\n this.readOnly = options.readOnly;\n this.alert = options.alert;\n this.historicalDataValue = options.historicalDataValue;\n this.calculateExpression = options.calculateExpression;\n this.allowUnselect = options.allowUnselect;\n }\n\n setHistoricalValue(v: boolean) {\n this.enableHistoricalValue = v;\n }\n showHistoricalEncounterDate(v?: boolean) {\n this.showHistoricalValueDate = v === undefined ? true : v;\n }\n}\n","// South East Asia Non Laboratory CVD Risk Array of Arrays\n\n// Vertically we have the BMI value eg for the first array [26(bmi < 20), 28(bmi 20 - 24), 30(bmi 25 - 29), 32(bmi 30 - 35), 34(bmi >= 35)]\n\nexport const southEastAsiaCvdRiskTables = [\n // Men\n [\n // Non smoker\n [\n // Age 70 - 74\n [\n [26, 28, 30, 32, 34], // SBP ≥180\n [21, 23, 25, 26, 28], // SBP 160-179\n [17, 19, 20, 21, 23], // SBP 140-159\n [14, 15, 16, 17, 18], // SBP 120-139\n [11, 12, 13, 14, 15] // sbp < 120\n ],\n // Age 65 - 69\n [\n [20, 22, 24, 26, 28], // sbp ≥180\n [16, 17, 19, 21, 22], // sbp 160-179\n [12, 14, 15, 16, 18], // sbp 140-159\n [10, 11, 12, 13, 14], // sbp 120-139\n [8, 8, 9, 10, 11] // < 120\n ],\n // Age 60 - 64\n [\n [15, 17, 19, 21, 23], // sbp ≥180\n [12, 13, 14, 16, 18], // sbp 160-179\n [9, 10, 11, 12, 14], // sbp 140-159\n [7, 8, 8, 9, 10], // sbp 120-139\n [5, 6, 6, 7, 8] // sbp < 120\n ],\n // Age 55 - 59\n [\n [12, 13, 15, 16, 18], // sbp ≥180\n [9, 10, 11, 12, 14], // sbp 160-179\n [7, 7, 8, 9, 10], // sbp 140-159\n [5, 5, 6, 7, 8], // sbp 120-139\n [4, 4, 4, 5, 6] // sbp < 120\n ],\n // Age 50 - 54\n [\n [9, 10, 11, 13, 15], // sbp ≥180\n [7, 7, 8, 9, 11], // sbp 160-179\n [5, 5, 6, 7, 8], // sbp 140-159\n [3, 4, 4, 5, 6], // sbp 120-139\n [2, 3, 3, 4, 4] // sbp < 120\n ],\n // Age 45 - 49\n [\n [7, 8, 9, 10, 12], // ≥180\n [5, 6, 6, 7, 8], // 160-179\n [3, 4, 4, 5, 6], // 140-159\n [2, 3, 3, 4, 4], // 120-139\n [2, 2, 2, 2, 3] // < 120\n ],\n // Age 40 - 44\n [\n [5, 6, 7, 8, 10], // ≥180\n [4, 4, 5, 6, 7], // 160-179\n [2, 3, 3, 4, 4], // 140-159\n [2, 2, 2, 3, 3], // 120-139\n [1, 1, 2, 2, 2]\n ]\n ],\n\n // Smoker\n [\n // Age 70 - 74\n [\n [34, 36, 39, 41, 44], // ≥180\n [28, 30, 32, 34, 36], // 160-179\n [23, 24, 26, 28, 30], // 140-159\n [18, 20, 21, 23, 24], // 120-139\n [15, 16, 17, 18, 20] // < 120\n ],\n // Age 65 - 69\n [\n [28, 30, 33, 36, 39], // ≥180\n [22, 24, 26, 29, 31], // 160-179\n [18, 19, 21, 23, 25], // 140-159\n [14, 15, 16, 18, 20], // 120-139\n [11, 12, 13, 14, 16] // < 120\n ],\n // Age 60 - 64\n [\n [23, 25, 28, 31, 34], // ≥180\n [18, 18, 20, 22, 24], // 160-179\n [14, 15, 17, 19, 21], // 140-159\n [10, 12, 13, 14, 16], // 120-139\n [8, 9, 10, 11, 12] // < 120\n ],\n // Age 55 - 59\n [\n [19, 21, 24, 27, 30], // ≥180\n [14, 16, 18, 20, 23], // 160-179\n [11, 12, 13, 15, 17], // 140-159\n [8, 9, 10, 11, 13], // 120-139\n [6, 7, 7, 8, 10]\n ],\n // Age 50 - 54\n [\n [15, 18, 20, 23, 27], // ≥180\n [11, 13, 15, 17, 20], // 160-179\n [8, 9, 11, 12, 14], // 140-159\n [6, 7, 8, 9, 11], // 120-139\n [4, 5, 6, 7, 8]\n ],\n // Age 45 - 49\n [\n [13, 15, 17, 20, 23], // ≥180\n [9, 10, 12, 14, 17], // 160-179\n [6, 7, 9, 10, 12], // 140-159\n [4, 5, 6, 7, 8], // 120-139\n [3, 4, 4, 5, 6]\n ],\n // Age 40 - 44\n [\n [10, 12, 14, 17, 20], // ≥180\n [7, 8, 10, 12, 14], // 160-179\n [5, 6, 7, 8, 10], // 140-159\n [3, 4, 5, 6, 7], // 120-139\n [2, 3, 3, 4, 5]\n ]\n ]\n ],\n\n // Women\n [\n // Non smoker\n [\n // Age 70 -74\n [\n [21, 22, 22, 23, 24], // ≥180\n [17, 18, 19, 19, 20], // 160-179\n [15, 15, 16, 16, 17], // 140-159\n [12, 12, 13, 13, 14], // 120-139\n [10, 10, 11, 11, 11] // < 120\n ],\n // Age 65 - 69\n [\n [16, 17, 18, 18, 19], // ≥180\n [13, 14, 14, 15, 15], // 160-179\n [11, 11, 11, 12, 12], // 140-159\n [9, 9, 9, 10, 10], // 120-139\n [7, 7, 7, 8, 8]\n ],\n // Age 60 - 64\n [\n [13, 13, 14, 14, 15], // ≥180\n [10, 10, 11, 11, 12], // 160-179\n [8, 8, 8, 9, 9], // 140-159\n [6, 6, 7, 7, 7], // 120-139\n [5, 5, 5, 5, 6]\n ],\n // Age 55 - 59\n [\n [10, 10, 11, 11, 12], // ≥180\n [8, 8, 8, 9, 9], // 160-179\n [6, 6, 6, 7, 7], // 140-159\n [4, 5, 5, 5, 5], // 120-139\n [3, 3, 4, 4, 4]\n ],\n // Age 50 - 54\n [\n [8, 8, 8, 9, 9], // ≥180\n [6, 6, 6, 7, 7], // 160-179\n [4, 4, 5, 5, 5], // 140-159\n [3, 3, 3, 4, 4], // 120-139\n [2, 2, 3, 3, 3]\n ],\n // Age 45 - 49\n [\n [6, 6, 7, 7, 7], // ≥180\n [4, 5, 5, 5, 5], // 160-179\n [3, 3, 3, 4, 4], // 140-159\n [2, 2, 2, 3, 3], // 120-139\n [2, 2, 2, 2, 2]\n ],\n // Age 40 - 44\n [\n [5, 5, 5, 5, 6], // ≥180\n [3, 3, 4, 4, 4], // 160-179\n [2, 2, 3, 3, 3], // 140-159\n [2, 2, 2, 2, 2], // 120-139\n [1, 1, 1, 1, 1]\n ]\n ],\n\n // Smoker\n [\n // Age 70 - 74\n [\n [30, 31, 32, 33, 34], // ≥180\n [25, 26, 27, 28, 29], // 160-179\n [21, 22, 22, 23, 24], // 140-159\n [17, 18, 19, 19, 20], // 120-139\n [14, 15, 15, 16, 17]\n ],\n // Age 65 - 69\n [\n [25, 26, 27, 29, 30], // ≥180\n [21, 22, 22, 23, 24], // 160-179\n [17, 18, 18, 19, 20], // 140-159\n [14, 14, 15, 15, 16], // 120-139\n [11, 11, 12, 12, 13]\n ],\n // Age 60 - 64\n [\n [21, 22, 23, 25, 26], // ≥180\n [17, 18, 19, 20, 21], // 160-179\n [13, 14, 15, 16, 16], // 140-159\n [11, 11, 12, 12, 13], // 120-139\n [8, 9, 9, 10, 10]\n ],\n // Age 55 - 59\n [\n [18, 19, 20, 21, 22], // ≥180\n [14, 15, 15, 16, 17], // 160-179\n [11, 11, 12, 13, 13], // 140-159\n [8, 9, 9, 10, 10], // 120-139\n [6, 7, 7, 7, 8]\n ],\n // Age 50 - 54\n [\n [15, 16, 17, 18, 19], // ≥180\n [11, 12, 13, 14, 14], // 160-179\n [9, 9, 10, 10, 11], // 140-159\n [6, 7, 7, 8, 8], // 120-139\n [5, 5, 5, 6, 6]\n ],\n // Age 45 - 49\n [\n [13, 14, 14, 15, 16], // ≥180\n [9, 10, 11, 11, 12], // 160-179\n [7, 7, 8, 8, 9], // 140-159\n [5, 5, 6, 6, 6], // 120-139\n [4, 4, 4, 4, 5]\n ],\n // Age 40 - 44\n [\n [11, 11, 12, 13, 14], // ≥180\n [8, 8, 9, 9, 10], // 160-179\n [5, 6, 6, 7, 7], // 140-159\n [4, 4, 4, 5, 5], // 120-139\n [3, 3, 3, 3, 4]\n ]\n ]\n ]\n];\n","import * as _ from 'lodash';\nimport { Injectable } from '@angular/core';\nimport { southEastAsiaCvdRiskTables } from './risk-dataset-table';\n\n@Injectable()\nexport class JsExpressionHelper {\n calcBMI(height, weight) {\n let r;\n if (height && weight) {\n r = (weight / (((height / 100) * height) / 100)).toFixed(1);\n }\n return height && weight ? parseFloat(r) : null;\n }\n\n calcBSA(height: number, weight: number) {\n let result;\n if (height && weight) {\n result = Math.sqrt((height * weight) / 3600).toFixed(2);\n }\n return height && weight ? parseFloat(result) : null;\n }\n\n calcBMIForAgeZscore(bmiForAgeRef, height, weight) {\n let bmi;\n const maxAgeInDays = 1856;\n if (height && weight) {\n bmi = (weight / (((height / 100) * height) / 100)).toFixed(1);\n }\n const refSectionObject = _.first(bmiForAgeRef);\n let formattedSDValue;\n if (refSectionObject) {\n const refObjectValues = Object.keys(refSectionObject)\n .map((key) => refSectionObject[key])\n .map((x) => x);\n const refObjectKeys = Object.keys(refSectionObject);\n const minimumValue = refObjectValues[1];\n const minReferencePoint = [];\n if (bmi < minimumValue) {\n minReferencePoint.push(minimumValue);\n } else {\n _.forEach(refObjectValues, (value) => {\n if (value <= bmi) {\n minReferencePoint.push(value);\n }\n });\n }\n const lastReferenceValue = _.last(minReferencePoint);\n const lastValueIndex = _.findIndex(refObjectValues, (o) => {\n return o === lastReferenceValue;\n });\n const SDValue = refObjectKeys[lastValueIndex];\n formattedSDValue = SDValue.replace('SD', '');\n if (formattedSDValue.includes('neg')) {\n formattedSDValue = formattedSDValue.substring(1, 0);\n formattedSDValue = '-' + formattedSDValue;\n }\n\n if (\n formattedSDValue === 'S' ||\n formattedSDValue === 'L' ||\n formattedSDValue === 'M' ||\n formattedSDValue === '-5'\n ) {\n formattedSDValue = '-4';\n }\n }\n\n return bmi && refSectionObject ? formattedSDValue : null;\n }\n calcWeightForHeightZscore(weightForHeightRef, height, weight) {\n let refSection;\n let formattedSDValue;\n if (height && weight) {\n height = parseFloat(height).toFixed(1);\n }\n const standardHeightMin = 45;\n const standardMaxHeight = 110;\n if (height < standardHeightMin || height > standardMaxHeight) {\n formattedSDValue = -4;\n } else {\n refSection = _.filter(weightForHeightRef, (refObject) => {\n return parseFloat(refObject['Length']).toFixed(1) === height;\n });\n }\n\n const refSectionObject = _.first(refSection);\n if (refSectionObject) {\n const refObjectValues = Object.keys(refSectionObject)\n .map((key) => refSectionObject[key])\n .map((x) => x);\n const refObjectKeys = Object.keys(refSectionObject);\n const minimumValue = refObjectValues[1];\n const minReferencePoint = [];\n if (weight < minimumValue) {\n minReferencePoint.push(minimumValue);\n } else {\n _.forEach(refObjectValues, (value) => {\n if (value <= weight) {\n minReferencePoint.push(value);\n }\n });\n }\n const lastReferenceValue = _.last(minReferencePoint);\n const lastValueIndex = _.findIndex(refObjectValues, (o) => {\n return o === lastReferenceValue;\n });\n const SDValue = refObjectKeys[lastValueIndex];\n formattedSDValue = SDValue.replace('SD', '');\n if (formattedSDValue.includes('neg')) {\n formattedSDValue = formattedSDValue.substring(1, 0);\n formattedSDValue = '-' + formattedSDValue;\n }\n if (\n formattedSDValue === 'S' ||\n formattedSDValue === 'L' ||\n formattedSDValue === 'M' ||\n formattedSDValue === '-5'\n ) {\n formattedSDValue = '-4';\n }\n }\n\n return height && weight ? formattedSDValue : null;\n }\n\n calcHeightForAgeZscore(heightForAgeRef, height, weight) {\n const refSectionObject = _.first(heightForAgeRef);\n let formattedSDValue;\n if (refSectionObject) {\n const refObjectValues = Object.keys(refSectionObject)\n .map((key) => refSectionObject[key])\n .map((x) => x);\n const refObjectKeys = Object.keys(refSectionObject);\n const minimumValue = refObjectValues[1];\n const minReferencePoint = [];\n if (height < minimumValue) {\n minReferencePoint.push(minimumValue);\n } else {\n _.forEach(refObjectValues, (value) => {\n if (value <= height) {\n minReferencePoint.push(value);\n }\n });\n }\n const lastReferenceValue = _.last(minReferencePoint);\n const lastValueIndex = _.findIndex(refObjectValues, (o) => {\n return o === lastReferenceValue;\n });\n const SDValue = refObjectKeys[lastValueIndex];\n formattedSDValue = SDValue.replace('SD', '');\n if (formattedSDValue.includes('neg')) {\n formattedSDValue = formattedSDValue.substring(1, 0);\n formattedSDValue = '-' + formattedSDValue;\n }\n\n if (\n formattedSDValue === 'S' ||\n formattedSDValue === 'L' ||\n formattedSDValue === 'M' ||\n formattedSDValue === '-5'\n ) {\n formattedSDValue = '-4';\n }\n }\n\n return height && weight && refSectionObject ? formattedSDValue : null;\n }\n\n calcSouthEastAsiaNonLabCVDRisk(\n sex: 'M' | 'F',\n smoker?: boolean,\n age?: number,\n sbp?: number,\n bmi?: number\n ) {\n const hasValidValues =\n typeof sex === 'string' &&\n typeof smoker === 'boolean' &&\n typeof age === 'number' &&\n typeof sbp === 'number' &&\n typeof bmi === 'number';\n\n if (!hasValidValues) {\n return null;\n }\n // Bin functions\n const getAgeBin = (age) =>\n Math.floor((Math.min(Math.max(40, age), 74) - 40) / 5);\n const getSbpBin = (sbp) =>\n Math.max(0, Math.floor((Math.min(sbp, 180) - 120) / 20) + 1);\n const getBmiBin = (bmi) =>\n Math.max(0, Math.floor((Math.min(bmi, 35) - 20) / 5) + 1);\n\n // Variables\n const sexIdx = sex === 'M' ? 0 : 1;\n const smokerIdx = smoker ? 1 : 0;\n const ageIdx = 6 - getAgeBin(age);\n const bmiIdx = getBmiBin(bmi);\n const sbpIdx = 4 - getSbpBin(sbp);\n\n return southEastAsiaCvdRiskTables[sexIdx][smokerIdx][ageIdx][sbpIdx][\n bmiIdx\n ];\n }\n\n isEmpty(val) {\n if (\n val === undefined ||\n val === null ||\n val === '' ||\n val === 'null' ||\n val === 'undefined'\n ) {\n return true;\n }\n\n if (Array.isArray(val) && val.length === 0) {\n return true;\n }\n return false;\n }\n\n arrayContains(array, members) {\n if (Array.isArray(members)) {\n if (members.length === 0) {\n return true;\n }\n\n let contains = true;\n\n for (let i = 0; i < members.length; i++) {\n const val = members[i];\n if (array.indexOf(val) === -1) {\n contains = false;\n }\n }\n\n return contains;\n } else {\n return array.indexOf(members) !== -1;\n }\n }\n extractRepeatingGroupValues(key, array) {\n const values = array.map(function (item) {\n return item[key];\n });\n return values;\n }\n formatDate(value, format, offset) {\n format = format || 'yyyy-MM-dd';\n offset = offset || '+0300';\n\n if (!(value instanceof Date)) {\n value = new Date(value);\n if (value === null || value === undefined) {\n throw new Error(\n 'DateFormatException: value passed ' + 'is not a valid date'\n );\n }\n }\n\n return value; // TODO implement this\n // return $filter('date')(value, format, offset);\n }\n\n arrayContainsAny(array, members) {\n if (Array.isArray(members)) {\n if (members.length === 0) {\n return true;\n }\n let contains = false;\n\n for (let i = 0; i < members.length; i++) {\n const val = members[i];\n if (array.indexOf(val) !== -1) {\n contains = true;\n }\n }\n return contains;\n } else {\n return array.indexOf(members) !== -1;\n }\n }\n\n /**\n * Takes a target control, an encounter and concept uuid. If the target control has a value it returns it\n * otherwise it tries to find it in the encounter. Finally it returns null of it can't find either of them.\n * @param targetControl\n * @param rawEncounter\n * @param uuid\n * @returns\n */\n getObsFromControlOrEncounter(targetControl, rawEncounter, uuid): any {\n const findObs = (obs, uuid) => {\n let result;\n obs?.some(\n (o) =>\n (result =\n o?.concept?.uuid === uuid ? o : findObs(o.groupMembers || [], uuid))\n );\n return result;\n };\n const obsValue = findObs(rawEncounter?.obs, uuid)?.value;\n return !!targetControl\n ? targetControl\n : typeof obsValue === 'object'\n ? obsValue.uuid\n : !!obsValue\n ? obsValue\n : null;\n }\n\n doesNotMatchExpression(\n regexString: string,\n val: string | null | undefined\n ): boolean {\n if (!val || ['undefined', 'null', ''].includes(val.toString())) {\n return true;\n }\n const pattern = new RegExp(regexString);\n if (!pattern.test(val)) {\n return true;\n }\n return false;\n }\n\n calcGravida(parityTerm, parityAbortion) {\n let gravida = 0;\n\n if (Number.isInteger(parityTerm)) {\n gravida += parityTerm + 1;\n }\n\n if (Number.isInteger(parityAbortion)) {\n gravida += parityAbortion + 1;\n }\n\n if (Number.isInteger(parityTerm) && Number.isInteger(parityAbortion)) {\n gravida = parityTerm + parityAbortion + 1;\n }\n\n return gravida;\n }\n\n get helperFunctions() {\n const helper = this;\n return {\n arrayContainsAny: helper.arrayContainsAny,\n calcBMI: helper.calcBMI,\n calcBMIForAgeZscore: helper.calcBMIForAgeZscore,\n calcWeightForHeightZscore: helper.calcWeightForHeightZscore,\n calcHeightForAgeZscore: helper.calcHeightForAgeZscore,\n calcSouthEastAsiaNonLabCVDRisk: helper.calcSouthEastAsiaNonLabCVDRisk,\n isEmpty: helper.isEmpty,\n arrayContains: helper.arrayContains,\n extractRepeatingGroupValues: helper.extractRepeatingGroupValues,\n getObsFromControlOrEncounter: helper.getObsFromControlOrEncounter,\n doesNotMatchExpression: helper.doesNotMatchExpression,\n calcGravida: helper.calcGravida\n };\n }\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\nimport { ConditionalValidationModel } from '../question-models/conditional-validation.model';\n\nexport class ConditionalRequiredValidator {\n constructor() {}\n\n validate(model: ConditionalValidationModel) {\n // convert helper functions to string\n return (control: AfeFormControl): { [key: string]: any } => {\n const value = control.value;\n let relationValue = null;\n const referenceQuestionId: string = model.referenceQuestionId;\n const referenceQuestionAnswers: any = model.referenceQuestionAnswers;\n let isRequired: boolean;\n\n if (\n control &&\n control.controlRelations &&\n control.controlRelations.relations\n ) {\n control.controlRelations.relations.forEach((relation) => {\n const relatedAsControl = relation.relatedTo as any;\n if (relatedAsControl.uuid === referenceQuestionId) {\n if (relatedAsControl && Array.isArray(relatedAsControl.value)) {\n relationValue = relation.relatedTo.value;\n } else {\n relationValue =\n relation.relatedTo.value && relation.relatedTo.value.value\n ? relation.relatedTo.value.value\n : relation.relatedTo.value;\n }\n }\n });\n }\n\n if (\n typeof referenceQuestionAnswers === 'object' &&\n referenceQuestionAnswers.indexOf(relationValue) !== -1\n ) {\n isRequired = true;\n }\n\n if (isRequired && !value) {\n return { conditional_required: { message: model.message } };\n }\n\n return null;\n };\n }\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\nimport { ConditionalValidationModel } from '../question-models/conditional-validation.model';\n\nexport class ConditionalAnsweredValidator {\n constructor() {}\n\n validate(model: ConditionalValidationModel) {\n return (control: AfeFormControl): { [key: string]: any } => {\n const value = control.value;\n let relationValue = null;\n const referenceQuestionId: string = model.referenceQuestionId;\n const referenceQuestionAnswers: any = model.referenceQuestionAnswers;\n let successCondition: any = true;\n\n if (value) {\n if (\n control &&\n control.controlRelations &&\n control.controlRelations.relations\n ) {\n control.controlRelations.relations.forEach((relation) => {\n const relatedAsControl = relation.relatedTo as any;\n if (relatedAsControl.uuid === referenceQuestionId) {\n if (Array.isArray(relatedAsControl.value)) {\n relationValue = relatedAsControl.value;\n } else {\n relationValue =\n relatedAsControl.value &&\n typeof relatedAsControl.value === 'object' &&\n relatedAsControl.value.value\n ? relatedAsControl.value.value\n : relatedAsControl.value;\n }\n }\n\n if (!relationValue) {\n successCondition = false;\n } else if (\n typeof referenceQuestionAnswers === 'object' &&\n referenceQuestionAnswers.indexOf(relationValue) === -1\n ) {\n successCondition = false;\n }\n });\n }\n }\n\n if (!successCondition) {\n return { conditional_answered: { message: model.message } };\n }\n\n return null;\n };\n }\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\n\nexport class RequiredValidator {\n validate(control: AfeFormControl) {\n if (control.hidden) {\n return null;\n }\n\n const value: any = control.value;\n const isEmpty: boolean =\n value == null || (typeof value === 'string' && value.length === 0);\n\n return isEmpty ? { required: true } : null;\n }\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\n\nexport class DateValidator {\n constructor() {}\n\n validate(control: AfeFormControl) {\n if (control.hidden) {\n return null;\n }\n\n const value = control.value;\n\n if (value && value.length !== 0) {\n // YYYY-MM-DD or DD-MM-YYYY\n const test: boolean = !/Invalid|NaN/.test(new Date(value).toString());\n\n return test ? null : { date: true };\n } else {\n return null;\n }\n }\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\n\nexport class MinValidator {\n validate(min: number) {\n return (control: AfeFormControl): { [key: string]: any } => {\n if (control.hidden) {\n return null;\n }\n\n // Case 1: control.value is a number\n // all the numbers should be passed for validation\n // Case 2: control.value is not a number:\n // if its empty string or null or undefined it will return false else it will pass through for validation\n if (typeof control.value === 'number' || control.value) {\n const v: number = control.value;\n return v >= min\n ? null\n : { min: { requiredValue: min, actualValue: v } };\n }\n\n return null;\n };\n }\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\n\nexport class MaxValidator {\n validate(max: number) {\n return (control: AfeFormControl): { [key: string]: any } => {\n if (control.hidden) {\n return null;\n }\n\n // Case 1: control.value is a number\n // all the numbers should be passed for validation\n // Case 2: control.value is not a number:\n // if its empty string or null or undefined it will return false else it will pass through for validation\n if (typeof control.value === 'number' || control.value) {\n const v: number = control.value;\n return v <= max\n ? null\n : { max: { requiredValue: max, actualValue: v } };\n }\n\n return null;\n };\n }\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\nimport { DateValidator } from './date.validator';\n\nexport class MinDateValidator {\n validate(min: Date) {\n return (control: AfeFormControl): { [key: string]: any } => {\n if (control.hidden) {\n return null;\n }\n\n if (control.value && control.value.length !== 0) {\n if (!new DateValidator().validate(control.value)) {\n const newDate: Date = new Date(control.value);\n\n return newDate.getTime() < min.getTime()\n ? { mindate: { requiredDate: min, actualDate: newDate } }\n : null;\n } else {\n return { mindate: { requiredDate: min } };\n }\n }\n\n return null;\n };\n }\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\nimport { DateValidator } from './date.validator';\n\nexport class MaxDateValidator {\n validate(max: Date) {\n return (control: AfeFormControl): { [key: string]: any } => {\n if (control.hidden) {\n return null;\n }\n\n if (control.value && control.value.length !== 0) {\n if (!new DateValidator().validate(control.value)) {\n const newDate: Date = new Date(control.value);\n\n return newDate.getTime() > max.getTime()\n ? { maxdate: { requiredDate: max, actualDate: newDate } }\n : null;\n } else {\n return { maxdate: { requiredDate: max } };\n }\n }\n\n return null;\n };\n }\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\nimport { DateValidator } from './date.validator';\n\nexport class FutureDateRestrictionValidator {\n constructor() {}\n\n validate(control: AfeFormControl) {\n if (control.hidden) {\n return null;\n }\n\n const value = control.value;\n const now: Date = new Date();\n\n if (value && value.length !== 0) {\n if (!new DateValidator().validate(value)) {\n const d: Date = new Date(value);\n\n return d.getTime() > now.getTime()\n ? { futureDateRestriction: true }\n : null;\n }\n }\n\n return null;\n }\n}\n","export class Validations {\n public static JSExpressionValidatorsEnabled = false;\n\n constructor() {}\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\nimport { ExpressionRunner } from '../expression-runner/expression-runner';\nimport { JsExpressionHelper } from '../helpers/js-expression-helper';\nimport { JsExpressionValidationModel } from '../question-models/js-expression-validation.model';\nimport { Validations } from './validations';\n\nexport class JsExpressionValidator {\n constructor() {}\n\n validate(model: JsExpressionValidationModel, form?: any) {\n // convert helper functions to string\n return (control: AfeFormControl): { [key: string]: any } => {\n if (!Validations.JSExpressionValidatorsEnabled) {\n return null;\n }\n\n const expression = model.failsWhenExpression;\n const helper = new JsExpressionHelper();\n const dataDependencies = {};\n\n const helperFunctions = helper.helperFunctions;\n const runnable = new ExpressionRunner().getRunnable(\n expression,\n control,\n helperFunctions,\n dataDependencies,\n form\n );\n\n if (runnable.run()) {\n return {\n js_expression: { expression: expression, message: model.message }\n };\n }\n\n return null;\n };\n }\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\n\nexport class MaxLengthValidator {\n validate(maxLength: number) {\n return (control: AfeFormControl): { [key: string]: any } => {\n if (control.hidden) {\n return null;\n }\n\n if (control.value && control.value.length !== 0) {\n const v = control.value.toString().length;\n return v <= maxLength\n ? null\n : { maxlength: { requiredLength: maxLength, actualValue: v } };\n }\n\n return null;\n };\n }\n}\n","import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\n\nexport class MinLengthValidator {\n validate(minLength: number) {\n return (control: AfeFormControl): { [key: string]: any } => {\n if (control.hidden) {\n return null;\n }\n\n if (control.value && control.value.length !== 0) {\n const v = control.value.toString().length;\n return v >= minLength\n ? null\n : { minlength: { requiredLength: minLength, actualValue: v } };\n }\n\n return null;\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Validators } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport * as _ from 'lodash';\n\nimport { ConditionalRequiredValidator } from '../validators/conditional-required.validator';\nimport { ConditionalAnsweredValidator } from '../validators/conditional-answered.validator';\nimport { RequiredValidator } from '../validators/required.validator';\nimport { DateValidator } from '../validators/date.validator';\nimport { MinValidator } from '../validators/min.validator';\nimport { MaxValidator } from '../validators/max.validator';\nimport { MinDateValidator } from '../validators/min-date.validator';\nimport { MaxDateValidator } from '../validators/max-date.validator';\nimport { FutureDateRestrictionValidator } from '../validators/future-date-restriction.validator';\nimport { JsExpressionValidator } from '../validators/js-expression.validator';\nimport { QuestionBase } from '../question-models/question-base';\nimport { ValidationModel } from '../question-models/validation.model';\nimport { DateValidationModel } from '../question-models/date-validation.model';\nimport { MaxValidationModel } from '../question-models/max-validation.model';\nimport { MinValidationModel } from '../question-models/min-validation.model';\nimport { JsExpressionValidationModel } from '../question-models/js-expression-validation.model';\nimport { ConditionalValidationModel } from '../question-models/conditional-validation.model';\nimport { MaxLengthValidator } from '../validators/max-length.validator';\nimport { MaxLengthValidationModel } from '../question-models/max-length-validation.model';\nimport { MinLengthValidationModel } from '../question-models/min-length-validation.model';\nimport { MinLengthValidator } from '../validators/min-length.validator';\n\n@Injectable()\nexport class ValidationFactory {\n constructor(private translate: TranslateService) {}\n\n getValidators(question: QuestionBase, form?: any) {\n const list: Array<any> = [];\n\n if (question.validators) {\n _.forEach(question.validators, (validator: ValidationModel) => {\n switch (validator.type) {\n case 'date':\n list.push(this.dateValidator);\n const allowFutureDates: boolean = (<DateValidationModel>validator)\n .allowFutureDates;\n\n if (!allowFutureDates) {\n list.push(this.futureDateRestrictionValidator);\n }\n break;\n case 'js_expression':\n list.push(\n this.jsExpressionValidator.validate(\n <JsExpressionValidationModel>validator,\n form\n )\n );\n break;\n case 'max':\n list.push(\n this.getMaxValueValidator((<MaxValidationModel>validator).max)\n );\n break;\n case 'maxlength':\n list.push(\n this.maxLengthValidator(\n (<MaxLengthValidationModel>validator).maxlength\n )\n );\n break;\n case 'min':\n list.push(\n this.getMinValueValidator((<MinValidationModel>validator).min)\n );\n break;\n case 'minlength':\n list.push(\n this.minLengthValidator(\n (<MinLengthValidationModel>validator).minlength\n )\n );\n break;\n case 'conditionalRequired':\n list.push(\n this.conditionalRequiredValidator.validate(\n <ConditionalValidationModel>validator\n )\n );\n break;\n case 'conditionalAnswered':\n list.push(\n this.conditionalAnsweredValidator.validate(\n <ConditionalValidationModel>validator\n )\n );\n break;\n }\n });\n }\n\n if (\n question.required &&\n typeof question.required === 'string' &&\n question.required === 'true'\n ) {\n list.push(this.requiredValidator);\n } else {\n // TODO - handle custom required validator\n }\n\n return list;\n }\n\n get conditionalRequiredValidator(): ConditionalRequiredValidator {\n return new ConditionalRequiredValidator();\n }\n\n get conditionalAnsweredValidator(): ConditionalAnsweredValidator {\n return new ConditionalAnsweredValidator();\n }\n\n get requiredValidator(): any {\n return new RequiredValidator().validate;\n }\n\n get dateValidator(): any {\n return new DateValidator().validate;\n }\n\n get futureDateRestrictionValidator(): any {\n return new FutureDateRestrictionValidator().validate;\n }\n\n get maxDateValidator(): any {\n return new MaxDateValidator().validate;\n }\n\n get minDateValidator(): any {\n return new MinDateValidator().validate;\n }\n\n public minLengthValidator(minLength: number) {\n return new MinLengthValidator().validate(minLength);\n }\n\n public maxLengthValidator(maxLength: number) {\n return new MaxLengthValidator().validate(maxLength);\n }\n\n public getMinValueValidator(min: number): any {\n return new MinValidator().validate(min);\n }\n\n public getMaxValueValidator(max: number): any {\n return new MaxValidator().validate(max);\n }\n\n get jsExpressionValidator() {\n return new JsExpressionValidator();\n }\n\n public errors(errors: any, question: QuestionBase): Array<string> {\n const messages: Array<string> = [];\n\n for (const property in errors) {\n if (errors.hasOwnProperty(property)) {\n switch (property) {\n case 'required':\n messages.push(this.translate.instant('requiredField'));\n break;\n case 'date':\n messages.push(this.translate.instant('invalidDate'));\n break;\n case 'futureDateRestriction':\n messages.push(this.translate.instant('futureDateRestriction'));\n break;\n case 'minlength':\n messages.push(\n this.translate\n .instant('minLength')\n .replace('{minLength}', errors.minlength.requiredLength)\n );\n break;\n case 'maxlength':\n messages.push(\n this.translate\n .instant('maxLength')\n .replace('{maxLength}', errors.maxlength.requiredLength)\n );\n break;\n case 'maxdate':\n messages.push(\n this.translate\n .instant('maxDate')\n .replace('{maxDate}', errors.maxdate.requiredDate)\n );\n break;\n case 'mindate':\n messages.push(\n this.translate\n .instant('minDate')\n .replace('{minDate}', errors.mindate.requiredDate)\n );\n break;\n case 'max':\n messages.push(\n this.translate\n .instant('max')\n .replace('{max}', errors.max.requiredValue)\n );\n break;\n case 'min':\n messages.push(\n this.translate\n .instant('min')\n .replace('{min}', errors.min.requiredValue)\n );\n break;\n case 'js_expression':\n messages.push(errors['js_expression'].message);\n break;\n case 'conditional_required':\n messages.push(errors['conditional_required'].message);\n break;\n case 'conditional_answered':\n messages.push(errors['conditional_answered'].message);\n break;\n }\n }\n }\n\n return messages;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Disabler } from '../control-hiders-disablers/can-disable';\nimport { Hider } from '../control-hiders-disablers/can-hide';\n\nimport {\n ExpressionRunner,\n Runnable\n} from '../expression-runner/expression-runner';\nimport {\n AfeFormControl,\n AfeFormArray,\n AfeFormGroup\n} from '../../abstract-controls-extension';\nimport { QuestionBase } from '../question-models/question-base';\nimport { JsExpressionHelper } from '../helpers/js-expression-helper';\nimport { Form } from './form';\n// Add ability to display all fields for debugging\nimport { DebugModeService } from './../services/debug-mode.service';\n\n@Injectable()\nexport class HidersDisablersFactory {\n constructor(\n private expressionRunner: ExpressionRunner,\n private expressionHelper: JsExpressionHelper,\n private _debugModeService: DebugModeService\n ) {}\n\n getJsExpressionDisabler(\n question: QuestionBase,\n control: AfeFormControl | AfeFormArray | AfeFormGroup,\n form?: Form\n ): Disabler {\n const runnable: Runnable = this.expressionRunner.getRunnable(\n question.disable as string,\n control,\n this.expressionHelper.helperFunctions,\n {},\n form\n );\n const disabler: Disabler = {\n toDisable: false,\n disableWhenExpression: question.disable as string,\n resetValueOnDisable: question.resetValueOnDisable,\n reEvaluateDisablingExpression: () => {\n const result = runnable.run();\n disabler.toDisable = result;\n }\n };\n return disabler;\n }\n\n getJsExpressionHider(\n question: QuestionBase,\n control: AfeFormControl | AfeFormArray | AfeFormGroup,\n form?: Form\n ): Hider {\n const hide: any = question.hide;\n const value: string =\n typeof hide === 'object'\n ? this.convertHideObjectToString(hide)\n : (question.hide as string);\n\n // check if debugging has been enabled\n\n const debugEnabled = this._debugModeService.debugEnabled();\n\n const runnable: Runnable = this.expressionRunner.getRunnable(\n value,\n control,\n this.expressionHelper.helperFunctions,\n {},\n form\n );\n\n const hider: Hider = {\n toHide: false,\n hideWhenExpression: value,\n reEvaluateHidingExpression: () => {\n /* if debug is enabled then hiders to be false\n else run the normal eveluator i.e runnable.run()\n */\n if (debugEnabled === true) {\n hider.toHide = false;\n } else {\n hider.toHide = runnable.run();\n }\n }\n };\n return hider;\n }\n\n convertHideObjectToString(hide: any) {\n if (hide.value instanceof Array) {\n const arrayStr: string = \"'\" + hide.value.join(\"','\") + \"'\";\n const exp = '!arrayContains([' + arrayStr + '],' + hide.field + ')';\n return exp;\n }\n\n return '';\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Alert } from '../control-alerts/can-generate-alert';\n\nimport {\n ExpressionRunner,\n Runnable\n} from '../expression-runner/expression-runner';\nimport {\n AfeFormControl,\n AfeFormArray,\n AfeFormGroup\n} from '../../abstract-controls-extension';\nimport { QuestionBase } from '../question-models/question-base';\nimport { JsExpressionHelper } from '../helpers/js-expression-helper';\nimport { Form } from './form';\n\n@Injectable()\nexport class AlertsFactory {\n constructor(\n private expressionRunner: ExpressionRunner,\n private expressionHelper: JsExpressionHelper\n ) {}\n getJsExpressionshowAlert(\n question: QuestionBase,\n control: AfeFormControl | AfeFormArray | AfeFormGroup,\n form?: Form\n ): Alert {\n const runnable: Runnable = this.expressionRunner.getRunnable(\n question.alert.alertWhenExpression,\n control,\n this.expressionHelper.helperFunctions,\n {},\n form\n );\n const showAlert: Alert = {\n shown: false,\n alertWhenExpression: question.alert.alertWhenExpression,\n alertMessage: question.alert.message,\n reEvaluateAlertExpression: () => {\n const result = runnable.run();\n showAlert.shown = result;\n }\n };\n return showAlert;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\n\nimport {\n AfeFormControl,\n AfeFormArray,\n AfeFormGroup,\n AfeControlType\n} from '../../abstract-controls-extension';\n\nimport { NestedQuestion } from '../question-models/interfaces/nested-questions';\n\nimport { QuestionBase } from '../question-models/question-base';\nimport { QuestionGroup } from '../question-models/group-question';\nimport { ValidationFactory } from '../form-factory/validation.factory';\nimport { HidersDisablersFactory } from './hiders-disablers.factory';\nimport { AlertsFactory } from './show-messages.factory';\nimport { Form } from './form';\nimport {\n ExpressionRunner,\n Runnable\n} from '../expression-runner/expression-runner';\nimport { JsExpressionHelper } from '../helpers/js-expression-helper';\n\n@Injectable()\nexport class FormControlService {\n controls = [];\n validationFactory: ValidationFactory;\n hidersDisablersFactory: HidersDisablersFactory;\n\n constructor(\n validationFactory: ValidationFactory,\n hidersDisablersFactory: HidersDisablersFactory,\n private alertsFactory: AlertsFactory\n ) {\n this.validationFactory = validationFactory;\n this.hidersDisablersFactory = hidersDisablersFactory;\n }\n\n generateControlModel(\n questionModel: QuestionBase | NestedQuestion,\n parentControl: AfeFormGroup,\n generateChildren: boolean,\n form?: Form\n ): AfeFormControl | AfeFormArray | AfeFormGroup {\n if (questionModel instanceof QuestionBase) {\n if (questionModel.controlType === AfeControlType.AfeFormArray) {\n return this.generateFormArray(questionModel, parentControl, form);\n }\n if (questionModel.controlType === AfeControlType.AfeFormGroup) {\n return this.generateFormGroupModel(\n questionModel,\n generateChildren,\n parentControl,\n form\n );\n }\n\n if (questionModel.controlType === AfeControlType.AfeFormControl) {\n return this.generateFormControl(questionModel, parentControl, form);\n }\n }\n return null;\n }\n\n generateFormGroupModel(\n question: QuestionBase,\n generateChildren: boolean,\n parentControl?: AfeFormGroup,\n form?: Form\n ): AfeFormGroup {\n const formGroup = new AfeFormGroup({});\n this.wireHidersDisablers(question, formGroup, form);\n this.wireAlerts(question, formGroup, form);\n if (parentControl instanceof AfeFormGroup) {\n parentControl.setControl(question.key, formGroup);\n }\n\n const asGroup = question as QuestionGroup;\n\n if (generateChildren && asGroup && asGroup.questions.length > 0) {\n this._generateFormGroupChildrenModel(asGroup.questions, formGroup, form);\n }\n\n return formGroup;\n }\n\n _generateFormGroupChildrenModel(\n questions: QuestionBase[],\n parentControl: AfeFormGroup,\n form?: Form\n ) {\n if (questions.length > 0) {\n questions.forEach((element) => {\n const generated = this.generateControlModel(\n element,\n parentControl,\n true,\n form\n );\n if (generated !== null) {\n parentControl.addControl(element.key, generated);\n }\n });\n }\n }\n\n generateFormArray(\n question: QuestionBase,\n parentControl?: AfeFormGroup,\n form?: Form\n ): AfeFormArray {\n const validators = this.validationFactory.getValidators(question, form);\n let formArray: AfeFormArray;\n if (validators && validators.length > 0) {\n formArray = new AfeFormArray([], validators[0]);\n } else {\n formArray = new AfeFormArray([]);\n }\n formArray.uuid = question.key;\n this.wireHidersDisablers(question, formArray, form);\n this.wireAlerts(question, formArray, form);\n if (parentControl instanceof AfeFormGroup) {\n parentControl.setControl(question.key, formArray);\n }\n\n return formArray;\n }\n\n generateFormControl(\n question: QuestionBase,\n parentControl?: AfeFormGroup,\n form?: Form\n ): AfeFormControl {\n const value = question.defaultValue || '';\n const validators = this.validationFactory.getValidators(question, form);\n\n const control = new AfeFormControl(value, validators);\n control.uuid = question.key;\n this.wireHidersDisablers(question, control, form);\n this.wireAlerts(question, control, form);\n this.wireCalculator(\n question,\n control,\n form,\n form?.dataSourcesContainer?.dataSources\n );\n\n if (parentControl instanceof AfeFormGroup) {\n parentControl.setControl(question.key, control);\n }\n\n return control;\n }\n\n private wireAlerts(\n question: QuestionBase,\n control: AfeFormArray | AfeFormGroup | AfeFormControl,\n form?: Form\n ) {\n if (question.alert && question.alert !== '') {\n const alert = this.alertsFactory.getJsExpressionshowAlert(\n question,\n control,\n form\n );\n control.setAlertFn(alert);\n }\n }\n private wireHidersDisablers(\n question: QuestionBase,\n control: AfeFormArray | AfeFormGroup | AfeFormControl,\n form?: Form\n ) {\n if (question.hide && question.hide !== '') {\n const hider = this.hidersDisablersFactory.getJsExpressionHider(\n question,\n control,\n form\n );\n control.setHidingFn(hider);\n }\n\n if (question.disable && question.disable !== '') {\n const disable = this.hidersDisablersFactory.getJsExpressionDisabler(\n question,\n control,\n form\n );\n control.setDisablingFn(disable);\n }\n }\n\n private wireCalculator(\n question: QuestionBase,\n control: AfeFormControl,\n form: Form,\n dataSource?: any\n ) {\n if (question.calculateExpression && question.calculateExpression !== '') {\n const helper: JsExpressionHelper = new JsExpressionHelper();\n const runner: ExpressionRunner = new ExpressionRunner();\n const runnable: Runnable = runner.getRunnable(\n question.calculateExpression,\n control,\n helper.helperFunctions,\n dataSource,\n form\n );\n // this functionality strictly assumes the calculateExpression function has been defined in the JsExpressionHelper class\n control.setCalculatorFn(runnable.run);\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class DataSources {\n private _dataSources: any = {};\n constructor() {}\n\n get dataSources(): any {\n return this._dataSources;\n }\n\n registerDataSource(key: string, dataSource: any, unWrap = false) {\n if (unWrap) {\n for (const o in dataSource) {\n this.registerDataSource(o, dataSource[o], false);\n }\n }\n if (this.dataSources[key]) {\n console.warn('Overriding registered data source', key);\n }\n this._dataSources[key] = dataSource;\n }\n\n clearDataSource(key: string) {\n delete this._dataSources[key];\n }\n}\n","import { Component, Input, ContentChild, TemplateRef } from '@angular/core';\n\n@Component({\n selector: 'ofe-tab',\n templateUrl: 'tab.component.html',\n styleUrls: ['./tab.component.css']\n})\nexport class TabComponent {\n @Input() public tabTitle: string;\n @Input() public tabSubTitle: string;\n @Input() public active = false;\n @Input() public disabled = false;\n @Input() public bypassDOM = false;\n @Input() public customPaneClass = '';\n @ContentChild(TemplateRef) template: TemplateRef<any>;\n}\n","<div *ngIf=\"active\" class=\"pane\" [ngClass]=\"customPaneClass\">\n <h4>{{ tabTitle }}</h4>\n <div *ngIf=\"bypassDOM\">\n <ng-container [ngTemplateOutlet]=\"template\"></ng-container>\n </div>\n <div *ngIf=\"!bypassDOM\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { Directive, HostListener, ElementRef, Input } from '@angular/core';\n\n@Directive({\n selector: '[ofeHoverClass]'\n})\nexport class HoverClassDirective {\n constructor(public elementRef: ElementRef) {}\n\n @Input() hoverClass: string;\n\n @HostListener('mouseenter') onMouseEnter() {\n this.elementRef.nativeElement.classList.add(this.hoverClass);\n }\n\n @HostListener('mouseleave') onMouseLeave() {\n this.elementRef.nativeElement.classList.remove(this.hoverClass);\n }\n}\n","import {\n Component,\n ContentChildren,\n AfterContentInit,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges\n} from '@angular/core';\nimport type { QueryList } from '@angular/core';\n\nimport { TabComponent } from './tab.component';\n\n@Component({\n selector: 'ofe-tab-set',\n styleUrls: ['ngx-tab-set.component.scss'],\n templateUrl: 'ngx-tab-set.component.html'\n})\nexport class TabSetComponent implements AfterContentInit, OnChanges {\n @ContentChildren(TabComponent) public tabs: QueryList<TabComponent>;\n\n @Input() public disableStyle = false;\n @Input() public customNavClass: String = '';\n @Input() public customTabsClass: String = '';\n @Input() public selectedIndex: Number = 0;\n\n @Output() public tabSelect = new EventEmitter();\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.selectedIndex && !changes.selectedIndex.firstChange) {\n this.selectTab(this.tabs.toArray()[changes.selectedIndex.currentValue]);\n }\n }\n\n // contentChildren are set\n public ngAfterContentInit() {\n // get all active tabs\n const activeTabs = this.tabs.filter((tab: TabComponent) => tab.active);\n\n // if there is no active tab set, activate the first\n setTimeout(() => {\n if (activeTabs.length === 0) {\n this.selectTab(this.tabs.first);\n }\n });\n }\n\n public onHover($event) {}\n\n public selectTab(tabToSelect: TabComponent): void {\n if (tabToSelect.disabled === true || tabToSelect.active === true) {\n return;\n }\n\n // deactivate all tabs\n this.tabs.toArray().forEach((tab: TabComponent) => (tab.active = false));\n\n // activate the tab the user has clicked on.\n tabToSelect.active = true;\n this.tabSelect.emit(this.tabs.toArray().indexOf(tabToSelect));\n }\n public getStatusClasses(active, disabled) {\n if (active) {\n return 'active';\n }\n if (!disabled && !active) {\n return 'enabled';\n }\n if (disabled) {\n return 'disabled';\n }\n }\n}\n","<div class=\"tab-container\">\n <div class=\"tab\" *ngIf=\"tabs.length > 1\">\n <button\n ofeHoverClass=\"hover\"\n class=\"tablinks completed\"\n *ngFor=\"let tab of tabs\"\n (click)=\"selectTab(tab)\"\n [class]=\"getStatusClasses(tab.active, tab.disabled)\"\n >\n <span>{{ tab.tabTitle }}</span>\n </button>\n </div>\n <div\n id=\"tab\"\n [ngClass]=\"{\n 'tab-content': tabs.length > 1,\n 'tab-content-no-margin': tabs.length === 1\n }\"\n >\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'ofe-custom-component-wrapper',\n templateUrl: 'custom-component-wrapper.component.html'\n})\nexport class CustomComponentWrapperComponent {\n @Input()\n componentConfigs: Array<{ tag: ''; url?: ''; module?: ''; detail?: any }>;\n\n @Input()\n dark = true;\n}\n","<div>\n <ng-template #error>{{ 'componentLoadingFailed' | translate }}</ng-template>\n <ng-template #loading>{{ 'loadingComponent' | translate }}</ng-template>\n <div *ngFor=\"let componentConfig of componentConfigs\">\n <ax-lazy-element\n *axLazyElementDynamic=\"\n componentConfig.tag;\n url: componentConfig.url;\n module: true;\n errorTemplate: error;\n loadingTemplate: loading\n \"\n [config]=\"componentConfig\"\n [dark]=\"dark\"\n >\n </ax-lazy-element>\n </div>\n</div>\n","import { Component, forwardRef, Input, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CustomControlQuestion } from '../../form-entry/question-models/custom-control-question.model';\n\n@Component({\n selector: 'ofe-custom-control-wrapper',\n templateUrl: 'custom-control-wrapper.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => CustomControlWrapperComponent)\n }\n ]\n})\nexport class CustomControlWrapperComponent\n implements ControlValueAccessor, OnInit {\n customControlConfig = { tag: '', url: '', module: '' };\n\n @Input()\n question: CustomControlQuestion;\n\n value: any;\n\n config = {};\n\n touched = false;\n\n disabled = false;\n\n registerOnValidatorChange?(fn: () => void): void {\n throw new Error('Method not implemented.');\n }\n\n ngOnInit(): void {\n this.customControlConfig = this.question?.extras?.customControlConfig;\n }\n\n onChange = (value) => {};\n\n onTouched = () => {};\n\n onValueChange(event) {\n this.markAsTouched();\n if (!this.disabled) {\n this.value = event?.detail?.data;\n this.onChange(this.value);\n }\n }\n\n writeValue(value: any) {\n this.value = value;\n }\n\n registerOnChange(onChange: any) {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any) {\n this.onTouched = onTouched;\n }\n\n markAsTouched() {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean) {\n this.disabled = disabled;\n }\n}\n","<div>\n <ng-template #error>{{ 'componentLoadingFailed' | translate }}</ng-template>\n <ng-template #loading>{{ 'loadingComponent' | translate }}</ng-template>\n <ax-lazy-element\n *axLazyElementDynamic=\"\n customControlConfig.tag;\n url: customControlConfig.url;\n module: true;\n errorTemplate: error;\n loadingTemplate: loading\n \"\n [question]=\"question\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n (on-change)=\"onValueChange($event)\"\n [config]=\"config\"\n >\n </ax-lazy-element>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n Output,\n HostListener,\n EventEmitter,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * `ofe-select` provides a styled `select` component.\n *\n * [See demo](../../?path=/story/select--basic)\n *\n * Example:\n *\n * ```\n * <ofe-select [(ngModel)]=\"model\">\n * <option value=\"default\" disabled selected hidden>Choose an option</option>\n * <option value=\"option1\">Option 1</option>\n * <option value=\"option2\">Option 2</option>\n * <option value=\"option3\">Option 3</option>\n * </ofe-select>\n * ```\n *\n * <example-url>../../iframe.html?id=select--basic</example-url>\n */\n@Component({\n selector: 'ofe-select',\n templateUrl: 'select.component.html',\n styleUrls: ['./select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SelectComponent,\n multi: true\n }\n ]\n})\nexport class SelectComponent implements ControlValueAccessor, AfterViewInit {\n /**\n * Tracks the total number of selects instantiated. Used to generate unique IDs\n */\n static selectCount = 0;\n\n /**\n * `inline` or `default` select displays\n */\n @Input() display: 'inline' | 'default' = 'default';\n /**\n * Label for the select. Appears above the input.\n */\n @Input() label: string | TemplateRef<any>;\n /**\n * Optional helper text that appears under the label.\n */\n @Input() helperText: string | TemplateRef<any>;\n /**\n * Sets the invalid text.\n */\n @Input() invalidText: string | TemplateRef<any>;\n /**\n * Set to `true` to show a warning (contents set by warningText)\n */\n @Input() warn = false;\n /**\n * Sets the warning text\n */\n @Input() warnText: string | TemplateRef<any>;\n /**\n * Sets the unique ID. Defaults to `select-${total count of selects instantiated}`\n */\n @Input() id = `select-${SelectComponent.selectCount++}`;\n /**\n * Number input field render size\n */\n @Input() size: 'sm' | 'md' | 'xl' = 'md';\n /**\n * Set to true to disable component.\n */\n @Input() disabled = false;\n /**\n * Set to true for a loading select.\n */\n @Input() skeleton = false;\n /**\n * Set to `true` for an invalid select component.\n */\n @Input() invalid = false;\n\n /**\n * `light` or `dark` select theme\n */\n @Input() theme: 'light' | 'dark' = 'dark';\n @Input() ariaLabel: string;\n\n @Output() valueChange = new EventEmitter();\n\n @ViewChild('select', { static: false }) select: ElementRef;\n\n @Input() set value(v) {\n this._value = v;\n if (this.select) {\n this.select.nativeElement.value = this._value;\n }\n }\n\n get value() {\n return this._value;\n }\n\n protected _value;\n\n ngAfterViewInit() {\n if (\n this.value !== undefined &&\n this.value !== null &&\n this.select &&\n this.select.nativeElement.value !== this.value\n ) {\n this.select.nativeElement.value = this.value;\n }\n }\n\n /**\n * Receives a value from the model.\n */\n writeValue(obj: any) {\n this.value = obj;\n }\n\n /**\n * Registers a listener that notifies the model when the control updates\n */\n registerOnChange(fn: any) {\n this.onChangeHandler = fn;\n }\n\n /**\n * Registers a listener that notifies the model when the control is blurred\n */\n registerOnTouched(fn: any) {\n this.onTouchedHandler = fn;\n }\n\n /**\n * Sets the disabled state through the model\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n /**\n * Handles the change event from the `select`.\n * Sends events to the change handler and emits a `selected` event.\n */\n onChange(event) {\n this.value = event.target.value;\n this.onChangeHandler(event.target.value);\n this.valueChange.emit(event.target.value);\n }\n\n /**\n * Listens for the host blurring, and notifies the model\n */\n @HostListener('focusout')\n focusOut() {\n this.onTouchedHandler();\n }\n\n public isTemplate(value) {\n return value instanceof TemplateRef;\n }\n\n /**\n * placeholder declarations. Replaced by the functions provided to `registerOnChange` and `registerOnTouched`\n */\n protected onChangeHandler = (_: any) => {};\n protected onTouchedHandler = () => {};\n}\n","<div class=\"cds--form-item\">\n <ng-template [ngIf]=\"skeleton\">\n <div *ngIf=\"label\" class=\"cds--label cds--skeleton\"></div>\n <div class=\"cds--select cds--skeleton\"></div>\n </ng-template>\n <div\n *ngIf=\"!skeleton\"\n class=\"cds--select\"\n [ngClass]=\"{\n 'cds--select--inline': display === 'inline',\n 'cds--select--light': theme === 'light',\n 'cds--select--invalid': invalid,\n 'cds--select--warning': warn,\n 'cds--select--disabled': disabled\n }\"\n >\n <label *ngIf=\"label\" [for]=\"id\" class=\"cds--label\">\n <ng-container *ngIf=\"!isTemplate(label)\">{{ label }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(label)\"\n [ngTemplateOutlet]=\"label\"\n ></ng-template>\n </label>\n <div *ngIf=\"helperText\" class=\"cds--form__helper-text\">\n <ng-container *ngIf=\"!isTemplate(helperText)\">{{\n helperText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(helperText)\"\n [ngTemplateOutlet]=\"helperText\"\n ></ng-template>\n </div>\n <div\n *ngIf=\"display === 'inline'; else noInline\"\n class=\"cds--select-input--inline__wrapper\"\n >\n <ng-container *ngTemplateOutlet=\"noInline\"></ng-container>\n </div>\n </div>\n</div>\n\n<!-- select element: dynamically projected based on 'display' variant -->\n<ng-template #noInline>\n <div\n class=\"cds--select-input__wrapper extend\"\n [attr.data-invalid]=\"invalid ? true : null\"\n >\n <select\n #select\n [attr.id]=\"id\"\n [attr.aria-label]=\"ariaLabel\"\n [disabled]=\"disabled\"\n (change)=\"onChange($event)\"\n [attr.aria-invalid]=\"invalid ? 'true' : null\"\n class=\"cds--select-input\"\n [ngClass]=\"{\n 'cds--select-input--xl': size === 'xl',\n 'cds--select-input--sm': size === 'sm'\n }\"\n >\n <ng-content></ng-content>\n </select>\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n style=\"will-change: transform\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"cds--select__arrow\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n aria-hidden=\"true\"\n >\n <path d=\"M8 11L3 6 3.7 5.3 8 9.6 12.3 5.3 13 6z\"></path>\n </svg>\n <svg\n *ngIf=\"invalid\"\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n style=\"will-change: transform\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"cds--text-input__invalid-icon\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M8,1C4.2,1,1,4.2,1,8s3.2,7,7,7s7-3.1,7-7S11.9,1,8,1z M7.5,4h1v5h-1C7.5,9,7.5,4,7.5,4z M8,12.2 c-0.4,0-0.8-0.4-0.8-0.8s0.3-0.8,0.8-0.8c0.4,0,0.8,0.4,0.8,0.8S8.4,12.2,8,12.2z\"\n ></path>\n <path\n d=\"M7.5,4h1v5h-1C7.5,9,7.5,4,7.5,4z M8,12.2c-0.4,0-0.8-0.4-0.8-0.8s0.3-0.8,0.8-0.8 c0.4,0,0.8,0.4,0.8,0.8S8.4,12.2,8,12.2z\"\n data-icon-path=\"inner-path\"\n opacity=\"0\"\n ></path>\n </svg>\n </div>\n <div\n *ngIf=\"invalid && invalidText && !warn\"\n role=\"alert\"\n class=\"cds--form-requirement\"\n aria-live=\"polite\"\n >\n <ng-container *ngIf=\"!isTemplate(invalidText)\">{{\n invalidText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(invalidText)\"\n [ngTemplateOutlet]=\"invalidText\"\n ></ng-template>\n </div>\n <div *ngIf=\"!invalid && warn\" class=\"cds--form-requirement\">\n <ng-container *ngIf=\"!isTemplate(warnText)\">{{ warnText }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(warnText)\"\n [ngTemplateOutlet]=\"warnText\"\n ></ng-template>\n </div>\n</ng-template>\n","import {\n Pipe,\n PipeTransform,\n OnDestroy,\n WrappedValue,\n ChangeDetectorRef\n} from '@angular/core';\nimport { Subscription, Observable, BehaviorSubject } from 'rxjs';\n\nimport { DomSanitizer } from '@angular/platform-browser';\n\n// Using similarity from AsyncPipe to avoid having to pipe |secure|async in HTML.\n@Pipe({\n name: 'secure',\n pure: false\n})\nexport class SecurePipe implements PipeTransform, OnDestroy {\n private _latestValue: any = null;\n private _latestReturnedValue: any = null;\n private _subscription: Subscription = null;\n private _obj: Observable<any> = null;\n private getfile;\n private previousUrl: string;\n private _result: BehaviorSubject<any> = new BehaviorSubject(null);\n private result: Observable<any> = this._result.asObservable();\n private _internalSubscription: Subscription = null;\n\n constructor(\n private _ref: ChangeDetectorRef,\n private sanitizer: DomSanitizer\n ) {}\n\n ngOnDestroy(): void {\n if (this._subscription) {\n this._dispose();\n }\n }\n\n transform(url: string, getfile): any {\n this.getfile = getfile;\n const obj = this.internalTransform(url);\n return this.asyncTrasnform(obj);\n }\n\n private internalTransform(url: string): Observable<any> {\n if (!url) {\n return this.result;\n }\n\n if (this.previousUrl !== url) {\n this.previousUrl = url;\n this._internalSubscription = this.getfile(url).subscribe((m) => {\n const sanitized = this.sanitizer.bypassSecurityTrustUrl(m);\n this._result.next(sanitized);\n });\n }\n\n return this.result;\n }\n\n private asyncTrasnform(obj: Observable<any>): any {\n if (!this._obj) {\n if (obj) {\n this._subscribe(obj);\n }\n this._latestReturnedValue = this._latestValue;\n return this._latestValue;\n }\n if (obj !== this._obj) {\n this._dispose();\n return this.asyncTrasnform(obj);\n }\n if (this._latestValue === this._latestReturnedValue) {\n return this._latestReturnedValue;\n }\n this._latestReturnedValue = this._latestValue;\n return WrappedValue.wrap(this._latestValue);\n }\n\n private _subscribe(obj: Observable<any>) {\n const _this = this;\n this._obj = obj;\n\n this._subscription = obj.subscribe({\n next: function (value) {\n return _this._updateLatestValue(obj, value);\n },\n error: (e: any) => {\n throw e;\n }\n });\n }\n\n private _dispose() {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n if (this._internalSubscription) {\n this._internalSubscription.unsubscribe();\n }\n\n this._internalSubscription = null;\n this._latestValue = null;\n this._latestReturnedValue = null;\n this._subscription = null;\n this._obj = null;\n }\n\n private _updateLatestValue(async: any, value: Object) {\n if (async === this._obj) {\n this._latestValue = value;\n this._ref.markForCheck();\n }\n }\n}\n","import { Component, OnInit, Input, forwardRef, Renderer2 } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { DataSource } from '../../form-entry/question-models/interfaces/data-source';\n\n@Component({\n selector: 'ofe-file-upload',\n templateUrl: 'file-upload.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FileUploadComponent),\n multi: true\n }\n ],\n styles: [\n `\n img {\n margin-left: auto;\n margin-right: auto;\n display: block;\n }\n `\n ]\n})\nexport class FileUploadComponent implements OnInit, ControlValueAccessor {\n uploading = false;\n fileUuid = null;\n pdfUploaded = false;\n formEntryMode = true;\n pdfUrl: string;\n\n @Input()\n public get dataSource(): DataSource {\n return this._dataSource;\n }\n public set dataSource(v: DataSource) {\n this._dataSource = v;\n }\n\n private _dataSource: DataSource;\n\n constructor(private renderer: Renderer2) {}\n\n ngOnInit() {\n if (this.fileUuid) {\n this.checkFileType();\n }\n }\n\n public onFileChange(fileList) {\n for (const file of fileList) {\n this.upload(file);\n }\n }\n\n upload(data) {\n if (this.dataSource) {\n this.uploading = true;\n this.dataSource.fileUpload(data).subscribe(\n (result) => {\n this.fileUuid = result.image;\n this.checkFileType();\n this.propagateChange(this.fileUuid);\n this.uploading = false;\n },\n (error) => {\n this.uploading = false;\n }\n );\n }\n }\n\n // this is the initial value set to the component\n public writeValue(value: any) {\n if (value !== this.fileUuid) {\n this.fileUuid = value;\n this.checkFileType();\n }\n }\n // registers 'fn' that will be fired when changes are made\n // this is how we emit the changes back to the form\n public registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n // not used, used for touch input\n public registerOnTouched() {}\n // change events from the textarea\n onChange(event) {\n this.propagateChange(event.id);\n // .....\n // update the form\n // this.propagateChange(this.data);\n }\n\n // the method set in registerOnChange, it is just\n // a placeholder for a method that takes one parameter,\n // we use it to emit changes back to the form\n private propagateChange = (_: any) => {};\n\n public clearValue() {\n this.fileUuid = null;\n this.pdfUploaded = false;\n this.pdfUrl = null;\n this.propagateChange(this.fileUuid);\n }\n\n public getPdfUrl(fileUuid: string) {\n this.dataSource.fetchFile(fileUuid, 'pdf').subscribe((file) => {\n this.pdfUploaded = true;\n this.pdfUrl = file.changingThisBreaksApplicationSecurity;\n });\n }\n public checkFileType() {\n const re = /pdf/gi;\n if (this.fileUuid.search(re) !== -1) {\n this.getPdfUrl(this.fileUuid);\n }\n }\n}\n","<lib-ngx-file-uploader\n [srcUrl]=\"pdfUrl\"\n [formEntry]=\"formEntryMode\"\n [(ngModel)]=\"fileUuid\"\n (_onClear)=\"clearValue()\"\n (uploadData)=\"onFileChange($event)\"\n>\n</lib-ngx-file-uploader>\n<div *ngIf=\"fileUuid\">\n <img\n *ngIf=\"!pdfUploaded\"\n class=\"img-responsive\"\n [src]=\"fileUuid | secure: this.dataSource.fetchFile\"\n alt=\"\"\n />\n</div>\n","import {\n Component,\n OnInit,\n Input,\n forwardRef,\n Output,\n EventEmitter,\n Renderer2\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { concat, Observable, of, Subject } from 'rxjs';\nimport {\n catchError,\n distinctUntilChanged,\n switchMap,\n tap\n} from 'rxjs/operators';\nimport { SelectOption } from '../../form-entry/question-models/interfaces/select-option';\n\nimport { DataSource } from '../../form-entry/question-models/interfaces/data-source';\nimport * as _ from 'lodash';\n@Component({\n selector: 'ofe-remote-select',\n templateUrl: 'remote-select.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RemoteSelectComponent),\n multi: true\n }\n ]\n})\nexport class RemoteSelectComponent implements OnInit, ControlValueAccessor {\n // @Input() dataSource: DataSource;\n remoteOptions$: Observable<SelectOption[]>;\n remoteOptionsLoading = false;\n remoteOptionInput$ = new Subject<string>();\n selectedRemoteOptions: SelectOption;\n items = [];\n value = [];\n loading = false;\n searchText = '';\n notFoundMsg = 'match no found';\n @Input() placeholder = 'Search...';\n @Input() componentID: string;\n @Input() disabled = false;\n @Input() theme = 'dark';\n @Output() done: EventEmitter<any> = new EventEmitter<any>();\n\n private _dataSource: DataSource;\n @Input()\n public get dataSource(): DataSource {\n return this._dataSource;\n }\n public set dataSource(v: DataSource) {\n this._dataSource = v;\n if (this._dataSource && this._dataSource.dataFromSourceChanged) {\n this.subscribeToDataSourceDataChanges();\n }\n }\n\n constructor(private renderer: Renderer2) {}\n\n ngOnInit() {\n this.loadOptions();\n }\n\n subscribeToDataSourceDataChanges() {\n this._dataSource.dataFromSourceChanged.subscribe((results) => {\n if (results.length > 0) {\n this.items = results;\n this.notFoundMsg = '';\n } else {\n this.notFoundMsg = 'Not found';\n this.items = [];\n }\n });\n }\n\n // this is the initial value set to the component\n public writeValue(value: any) {\n if (value && value !== '') {\n if (this.dataSource) {\n this.loading = true;\n this.dataSource.resolveSelectedValue(value).subscribe(\n (result: any) => {\n this.items = [result];\n this.selectedRemoteOptions = result;\n this.loading = false;\n },\n (error) => {\n this.loading = false;\n }\n );\n }\n }\n }\n // registers 'fn' that will be fired when changes are made\n // this is how we emit the changes back to the form\n public registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n // not used, used for touch input\n public registerOnTouched() {}\n // change events from the textarea\n onChange(event) {\n this.propagateChange(event.id);\n // .....\n // update the form\n // this.propagateChange(this.data);\n }\n selected(event) {\n this.propagateChange(event);\n }\n\n compareItems = (item, selected) => {\n if (item.value && selected.value) {\n return item.value === selected.value;\n }\n return false;\n };\n\n // the method set in registerOnChange, it is just\n // a placeholder for a method that takes one parameter,\n // we use it to emit changes back to the form\n private propagateChange = (change: any) => {};\n\n trackByFn(item: SelectOption) {\n return item.value;\n }\n\n private loadOptions() {\n this.remoteOptions$ = concat(\n of([]), // default items\n this.remoteOptionInput$.pipe(\n distinctUntilChanged(),\n tap(() => {\n this.loading = true;\n }),\n switchMap((term) =>\n this.dataSource.searchOptions(term).pipe(\n catchError(() => of([])), // empty list on error\n tap(() => (this.loading = false))\n )\n )\n )\n );\n }\n}\n","<div>\n <ng-select\n [ngClass]=\"{ 'afe-custom': theme === 'light' }\"\n [disabled]=\"disabled\"\n [items]=\"remoteOptions$ | async\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [multiple]=\"false\"\n [hideSelected]=\"true\"\n [compareWith]=\"compareItems\"\n [trackByFn]=\"trackByFn\"\n [loading]=\"loading\"\n typeToSearchText=\"{{ 'enterMoreCharacters' | translate }}\"\n [typeahead]=\"remoteOptionInput$\"\n [(ngModel)]=\"selectedRemoteOptions\"\n [appendTo]=\"'form'\"\n (ngModelChange)=\"selected($event)\"\n >\n </ng-select>\n</div>\n","/**\n * date-time-format.class\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport interface OwlDateTimeFormats {\n parseInput: any;\n fullPickerInput: any;\n datePickerInput: any;\n timePickerInput: any;\n monthYearLabel: any;\n dateA11yLabel: any;\n monthYearA11yLabel: any;\n}\n\n/** InjectionToken for date time picker that can be used to override default format. */\nexport const OWL_DATE_TIME_FORMATS = new InjectionToken<OwlDateTimeFormats>(\n 'OWL_DATE_TIME_FORMATS'\n);\n","/**\n * date-time-picker-intl.service\n */\n\nimport { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class OwlDateTimeIntl {\n constructor(public translate: TranslateService) {}\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** A label for the up second button (used by screen readers). */\n upSecondLabel = 'Add a second';\n\n /** A label for the down second button (used by screen readers). */\n downSecondLabel = 'Minus a second';\n\n /** A label for the up minute button (used by screen readers). */\n upMinuteLabel = 'Add a minute';\n\n /** A label for the down minute button (used by screen readers). */\n downMinuteLabel = 'Minus a minute';\n\n /** A label for the up hour button (used by screen readers). */\n upHourLabel = 'Add a hour';\n\n /** A label for the down hour button (used by screen readers). */\n downHourLabel = 'Minus a hour';\n\n /** A label for the previous month button (used by screen readers). */\n prevMonthLabel = 'Previous month';\n\n /** A label for the next month button (used by screen readers). */\n nextMonthLabel = 'Next month';\n\n /** A label for the previous year button (used by screen readers). */\n prevYearLabel = 'Previous year';\n\n /** A label for the next year button (used by screen readers). */\n nextYearLabel = 'Next year';\n\n /** A label for the previous multi-year button (used by screen readers). */\n prevMultiYearLabel = 'Previous 21 years';\n\n /** A label for the next multi-year button (used by screen readers). */\n nextMultiYearLabel = 'Next 21 years';\n\n /** A label for the 'switch to month view' button (used by screen readers). */\n switchToMonthViewLabel = 'Change to month view';\n\n /** A label for the 'switch to year view' button (used by screen readers). */\n switchToMultiYearViewLabel = 'Choose month and year';\n\n /** A label for the cancel button */\n cancelBtnLabel = this.translate.instant('cancel');\n\n /** A label for the set button */\n setBtnLabel = this.translate.instant('set');\n\n /** A label for the range 'from' in picker info */\n rangeFromLabel = this.translate.instant('from');\n\n /** A label for the range 'to' in picker info */\n rangeToLabel = this.translate.instant('to');\n\n /** A label for the hour12 button (AM) */\n hour12AMLabel = 'AM';\n\n /** A label for the hour12 button (PM) */\n hour12PMLabel = 'PM';\n}\n","/**\n * date-time-adapter.class\n */\nimport { Observable, Subject } from 'rxjs';\nimport { inject, InjectionToken, LOCALE_ID } from '@angular/core';\n\n/** InjectionToken for date time picker that can be used to override default locale code. */\nexport const OWL_DATE_TIME_LOCALE = new InjectionToken<string>(\n 'OWL_DATE_TIME_LOCALE',\n {\n providedIn: 'root',\n factory: OWL_DATE_TIME_LOCALE_FACTORY\n }\n);\n\n/** @docs-private */\nexport function OWL_DATE_TIME_LOCALE_FACTORY(): string {\n return inject(LOCALE_ID);\n}\n\n/** Provider for OWL_DATE_TIME_LOCALE injection token. */\nexport const OWL_DATE_TIME_LOCALE_PROVIDER = {\n provide: OWL_DATE_TIME_LOCALE,\n useExisting: LOCALE_ID\n};\n\nexport abstract class DateTimeAdapter<T> {\n /** The locale to use for all dates. */\n protected locale: any;\n\n /** A stream that emits when the locale changes. */\n protected _localeChanges = new Subject<void>();\n get localeChanges(): Observable<void> {\n return this._localeChanges;\n }\n\n /** total milliseconds in a day. */\n protected readonly millisecondsInDay = 86400000;\n\n /** total milliseconds in a minute. */\n protected readonly milliseondsInMinute = 60000;\n\n /**\n * Get the year of the given date\n */\n abstract getYear(date: T): number;\n\n /**\n * Get the month of the given date\n * 0 -- January\n * 11 -- December\n * */\n abstract getMonth(date: T): number;\n\n /**\n * Get the day of the week of the given date\n * 0 -- Sunday\n * 6 -- Saturday\n * */\n abstract getDay(date: T): number;\n\n /**\n * Get the day num of the given date\n */\n abstract getDate(date: T): number;\n\n /**\n * Get the hours of the given date\n */\n abstract getHours(date: T): number;\n\n /**\n * Get the minutes of the given date\n */\n abstract getMinutes(date: T): number;\n\n /**\n * Get the seconds of the given date\n */\n abstract getSeconds(date: T): number;\n\n /**\n * Get the milliseconds timestamp of the given date\n */\n abstract getTime(date: T): number;\n\n /**\n * Gets the number of days in the month of the given date.\n */\n abstract getNumDaysInMonth(date: T): number;\n\n /**\n * Get the number of calendar days between the given dates.\n * If dateLeft is before dateRight, it would return positive value\n * If dateLeft is after dateRight, it would return negative value\n */\n abstract differenceInCalendarDays(dateLeft: T, dateRight: T): number;\n\n /**\n * Gets the name for the year of the given date.\n */\n abstract getYearName(date: T): string;\n\n /**\n * Get a list of month names\n */\n abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Get a list of week names\n */\n abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets a list of names for the dates of the month.\n */\n abstract getDateNames(): string[];\n\n /**\n * Return a Date object as a string, using the ISO standard\n */\n abstract toIso8601(date: T): string;\n\n /**\n * Check if the give dates are equal\n */\n abstract isEqual(dateLeft: T, dateRight: T): boolean;\n\n /**\n * Check if the give dates are the same day\n */\n abstract isSameDay(dateLeft: T, dateRight: T): boolean;\n\n /**\n * Checks whether the given date is valid.\n */\n abstract isValid(date: T): boolean;\n\n /**\n * Gets date instance that is not valid.\n */\n abstract invalid(): T;\n\n /**\n * Checks whether the given object is considered a date instance by this DateTimeAdapter.\n */\n abstract isDateInstance(obj: any): boolean;\n\n /**\n * Add the specified number of years to the given date\n */\n abstract addCalendarYears(date: T, amount: number): T;\n\n /**\n * Add the specified number of months to the given date\n */\n abstract addCalendarMonths(date: T, amount: number): T;\n\n /**\n * Add the specified number of days to the given date\n */\n abstract addCalendarDays(date: T, amount: number): T;\n\n /**\n * Set the hours to the given date.\n */\n abstract setHours(date: T, amount: number): T;\n\n /**\n * Set the minutes to the given date.\n */\n abstract setMinutes(date: T, amount: number): T;\n\n /**\n * Set the seconds to the given date.\n */\n abstract setSeconds(date: T, amount: number): T;\n\n /**\n * Creates a date with the given year, month, date, hour, minute and second. Does not allow over/under-flow of the\n * month and date.\n */\n abstract createDate(year: number, month: number, date: number): T;\n abstract createDate(\n year: number,\n month: number,\n date: number,\n hours: number,\n minutes: number,\n seconds: number\n ): T;\n\n /**\n * Clone the given date\n */\n abstract clone(date: T): T;\n\n /**\n * Get a new moment\n * */\n abstract now(): T;\n\n /**\n * Formats a date as a string according to the given format.\n */\n abstract format(date: T, displayFormat: any): string;\n\n /**\n * Parse a user-provided value to a Date Object\n */\n abstract parse(value: any, parseFormat: any): T | null;\n\n /**\n * Compare two given dates\n * 1 if the first date is after the second,\n * -1 if the first date is before the second\n * 0 if dates are equal.\n * */\n compare(first: T, second: T): number {\n if (!this.isValid(first) || !this.isValid(second)) {\n throw Error('JSNativeDate: Cannot compare invalid dates.');\n }\n\n const dateFirst = this.clone(first);\n const dateSecond = this.clone(second);\n\n const diff = this.getTime(dateFirst) - this.getTime(dateSecond);\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n } else {\n // Return 0 if diff is 0; return NaN if diff is NaN\n return diff;\n }\n }\n\n /**\n * Check if two given dates are in the same year\n * 1 if the first date's year is after the second,\n * -1 if the first date's year is before the second\n * 0 if two given dates are in the same year\n * */\n compareYear(first: T, second: T): number {\n if (!this.isValid(first) || !this.isValid(second)) {\n throw Error('JSNativeDate: Cannot compare invalid dates.');\n }\n\n const yearLeft = this.getYear(first);\n const yearRight = this.getYear(second);\n\n const diff = yearLeft - yearRight;\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n } else {\n return 0;\n }\n }\n\n /**\n * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n * string). The default implementation does not allow any deserialization, it simply checks that\n * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n * method on all of it's `@Input()` properties that accept dates. It is therefore possible to\n * support passing values from your backend directly to these properties by overriding this method\n * to also deserialize the format used by your backend.\n */\n deserialize(value: any): T | null {\n if (value == null || (this.isDateInstance(value) && this.isValid(value))) {\n return value;\n }\n return this.invalid();\n }\n\n /**\n * Sets the locale used for all dates.\n */\n setLocale(locale: any) {\n this.locale = locale;\n this._localeChanges.next();\n }\n\n /**\n * Clamp the given date between min and max dates.\n */\n clampDate(date: T, min?: T | null, max?: T | null): T {\n if (min && this.compare(date, min) < 0) {\n return min;\n }\n if (max && this.compare(date, max) > 0) {\n return max;\n }\n return date;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n NgZone,\n Output\n} from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { SelectMode } from './date-time.class';\n\nexport class CalendarCell {\n constructor(\n public value: number,\n public displayValue: string,\n public ariaLabel: string,\n public enabled: boolean,\n public out = false,\n public cellClass: string = ''\n ) {}\n}\n\n@Component({\n /* eslint-disable-next-line @angular-eslint/component-selector */\n selector: '[ofe-owl-date-time-calendar-body]',\n exportAs: 'owlDateTimeCalendarBody',\n templateUrl: './calendar-body.component.html',\n styleUrls: ['./calendar-body.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlCalendarBodyComponent {\n @HostBinding('class.owl-dt-calendar-body') owlDTCalendarBodyClass = true;\n\n /**\n * The cell number of the active cell in the table.\n */\n @Input()\n activeCell = 0;\n\n /**\n * The cells to display in the table.\n * */\n @Input()\n rows: CalendarCell[][];\n\n /**\n * The number of columns in the table.\n * */\n @Input()\n numCols = 7;\n\n /**\n * The ratio (width / height) to use for the cells in the table.\n */\n @Input()\n cellRatio = 1;\n\n /**\n * The value in the table that corresponds to today.\n * */\n @Input()\n todayValue: number;\n\n /**\n * The value in the table that is currently selected.\n * */\n @Input()\n selectedValues: number[];\n\n /**\n * Current picker select mode\n */\n @Input()\n selectMode: SelectMode;\n\n /**\n * Emit when a calendar cell is selected\n * */\n @Output()\n public readonly cellSelected = new EventEmitter<CalendarCell>();\n\n get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this.selectMode === 'range' ||\n this.selectMode === 'rangeFrom' ||\n this.selectMode === 'rangeTo'\n );\n }\n\n constructor(private elmRef: ElementRef, private ngZone: NgZone) {}\n\n public selectCell(cell: CalendarCell): void {\n this.cellSelected.emit(cell);\n }\n\n public isActiveCell(rowIndex: number, colIndex: number): boolean {\n const cellNumber = rowIndex * this.numCols + colIndex;\n return cellNumber === this.activeCell;\n }\n\n /**\n * Check if the cell is selected\n */\n public isSelected(value: number): boolean {\n if (!this.selectedValues || this.selectedValues.length === 0) {\n return false;\n }\n\n if (this.isInSingleMode) {\n return value === this.selectedValues[0];\n }\n\n if (this.isInRangeMode) {\n const fromValue = this.selectedValues[0];\n const toValue = this.selectedValues[1];\n\n return value === fromValue || value === toValue;\n }\n }\n\n /**\n * Check if the cell in the range\n * */\n public isInRange(value: number): boolean {\n if (this.isInRangeMode) {\n const fromValue = this.selectedValues[0];\n const toValue = this.selectedValues[1];\n\n if (fromValue !== null && toValue !== null) {\n return value >= fromValue && value <= toValue;\n } else {\n return value === fromValue || value === toValue;\n }\n }\n }\n\n /**\n * Check if the cell is the range from\n * */\n public isRangeFrom(value: number): boolean {\n if (this.isInRangeMode) {\n const fromValue = this.selectedValues[0];\n return fromValue !== null && value === fromValue;\n }\n }\n\n /**\n * Check if the cell is the range to\n * */\n public isRangeTo(value: number): boolean {\n if (this.isInRangeMode) {\n const toValue = this.selectedValues[1];\n return toValue !== null && value === toValue;\n }\n }\n\n /**\n * Focus to a active cell\n * */\n public focusActiveCell(): void {\n this.ngZone.runOutsideAngular(() => {\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this.elmRef.nativeElement\n .querySelector('.owl-dt-calendar-cell-active')\n .focus();\n });\n });\n }\n}\n","<tr *ngFor=\"let row of rows; let rowIndex = index\" role=\"row\">\n <td\n *ngFor=\"let item of row; let colIndex = index\"\n class=\"owl-dt-calendar-cell {{ item.cellClass }}\"\n [tabindex]=\"isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n [class.owl-dt-calendar-cell-active]=\"isActiveCell(rowIndex, colIndex)\"\n [class.owl-dt-calendar-cell-disabled]=\"!item.enabled\"\n [class.owl-dt-calendar-cell-in-range]=\"isInRange(item.value)\"\n [class.owl-dt-calendar-cell-range-from]=\"isRangeFrom(item.value)\"\n [class.owl-dt-calendar-cell-range-to]=\"isRangeTo(item.value)\"\n [attr.aria-label]=\"item.ariaLabel\"\n [attr.aria-disabled]=\"!item.enabled || null\"\n [style.width.%]=\"100 / numCols\"\n [style.paddingTop.%]=\"(50 * cellRatio) / numCols\"\n [style.paddingBottom.%]=\"(50 * cellRatio) / numCols\"\n (click)=\"selectCell(item)\"\n >\n <span\n class=\"owl-dt-calendar-cell-content\"\n [ngClass]=\"{\n 'owl-dt-calendar-cell-out': item.out,\n 'owl-dt-calendar-cell-today': item.value === todayValue,\n 'owl-dt-calendar-cell-selected': isSelected(item.value)\n }\"\n >\n {{ item.displayValue }}\n </span>\n </td>\n</tr>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild\n} from '@angular/core';\nimport {\n CalendarCell,\n OwlCalendarBodyComponent\n} from './calendar-body.component';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { Subscription } from 'rxjs';\nimport { SelectMode } from './date-time.class';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\n\nconst DAYS_PER_WEEK = 7;\nconst WEEKS_PER_VIEW = 6;\n\n@Component({\n selector: 'ofe-owl-date-time-month-view',\n exportAs: 'owlYearView',\n templateUrl: './calendar-month-view.component.html',\n styleUrls: ['./calendar-month-view.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlMonthViewComponent<T>\n implements OnInit, AfterContentInit, OnDestroy {\n @HostBinding('class.owl-dt-calendar-view') get owlDTCalendarView() {\n return true;\n }\n\n /**\n * Whether to hide dates in other months at the start or end of the current month.\n * */\n @Input()\n hideOtherMonths = false;\n\n /**\n * Define the first day of a week\n * Sunday: 0 ~ Saturday: 6\n * */\n private _firstDayOfWeek = 0;\n @Input()\n get firstDayOfWeek(): number {\n return this._firstDayOfWeek;\n }\n\n set firstDayOfWeek(val: number) {\n val = coerceNumberProperty(val);\n if (val >= 0 && val <= 6 && val !== this._firstDayOfWeek) {\n this._firstDayOfWeek = val;\n\n if (this.initiated) {\n this.generateWeekDays();\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n }\n\n /**\n * The select mode of the picker;\n * */\n private _selectMode: SelectMode = 'single';\n @Input()\n get selectMode(): SelectMode {\n return this._selectMode;\n }\n\n set selectMode(val: SelectMode) {\n this._selectMode = val;\n if (this.initiated) {\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n\n /** The currently selected date. */\n private _selected: T | null;\n @Input()\n get selected(): T | null {\n return this._selected;\n }\n\n set selected(value: T | null) {\n const oldSelected = this._selected;\n value = this.dateTimeAdapter.deserialize(value);\n this._selected = this.getValidDate(value);\n\n if (!this.dateTimeAdapter.isSameDay(oldSelected, this._selected)) {\n this.setSelectedDates();\n }\n }\n\n private _selecteds: T[] = [];\n @Input()\n get selecteds(): T[] {\n return this._selecteds;\n }\n\n set selecteds(values: T[]) {\n this._selecteds = values.map((v) => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n this.setSelectedDates();\n }\n\n private _pickerMoment: T;\n @Input()\n get pickerMoment() {\n return this._pickerMoment;\n }\n\n set pickerMoment(value: T) {\n const oldMoment = this._pickerMoment;\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n\n this.firstDateOfMonth = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this._pickerMoment),\n this.dateTimeAdapter.getMonth(this._pickerMoment),\n 1\n );\n\n if (!this.isSameMonth(oldMoment, this._pickerMoment) && this.initiated) {\n this.generateCalendar();\n }\n }\n\n /**\n * A function used to filter which dates are selectable\n * */\n private _dateFilter: (date: T) => boolean;\n @Input()\n get dateFilter() {\n return this._dateFilter;\n }\n\n set dateFilter(filter: (date: T) => boolean) {\n this._dateFilter = filter;\n if (this.initiated) {\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n\n /** The minimum selectable date. */\n private _minDate: T | null;\n @Input()\n get minDate(): T | null {\n return this._minDate;\n }\n\n set minDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._minDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n\n /** The maximum selectable date. */\n private _maxDate: T | null;\n @Input()\n get maxDate(): T | null {\n return this._maxDate;\n }\n\n set maxDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._maxDate = this.getValidDate(value);\n\n if (this.initiated) {\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n\n private _weekdays: Array<{ long: string; short: string; narrow: string }>;\n get weekdays() {\n return this._weekdays;\n }\n\n private _days: CalendarCell[][];\n get days() {\n return this._days;\n }\n\n get activeCell(): number {\n if (this.pickerMoment) {\n return (\n this.dateTimeAdapter.getDate(this.pickerMoment) +\n this.firstRowOffset -\n 1\n );\n }\n }\n\n get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this.selectMode === 'range' ||\n this.selectMode === 'rangeFrom' ||\n this.selectMode === 'rangeTo'\n );\n }\n\n private firstDateOfMonth: T;\n\n private localeSub: Subscription = Subscription.EMPTY;\n\n private initiated = false;\n\n private dateNames: string[];\n\n /**\n * The date of the month that today falls on.\n * */\n public todayDate: number | null;\n\n /**\n * An array to hold all selectedDates' value\n * the value is the day number in current month\n * */\n public selectedDates: number[] = [];\n\n // the index of cell that contains the first date of the month\n public firstRowOffset: number;\n\n /**\n * Callback to invoke when a new date is selected\n * */\n @Output()\n readonly selectedChange = new EventEmitter<T | null>();\n\n /**\n * Callback to invoke when any date is selected.\n * */\n @Output()\n readonly userSelection = new EventEmitter<void>();\n\n /** Emits when any date is activated. */\n @Output()\n readonly pickerMomentChange: EventEmitter<T> = new EventEmitter<T>();\n\n /** The body of calendar table */\n @ViewChild(OwlCalendarBodyComponent, { static: true })\n calendarBodyElm: OwlCalendarBodyComponent;\n\n constructor(\n private cdRef: ChangeDetectorRef,\n @Optional() private dateTimeAdapter: DateTimeAdapter<T>,\n @Optional()\n @Inject(OWL_DATE_TIME_FORMATS)\n private dateTimeFormats: OwlDateTimeFormats\n ) {}\n\n public ngOnInit() {\n this.generateWeekDays();\n\n this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\n this.generateWeekDays();\n this.generateCalendar();\n this.cdRef.markForCheck();\n });\n }\n\n public ngAfterContentInit(): void {\n this.generateCalendar();\n this.initiated = true;\n }\n\n public ngOnDestroy(): void {\n this.localeSub.unsubscribe();\n }\n\n /**\n * Handle a calendarCell selected\n */\n public selectCalendarCell(cell: CalendarCell): void {\n // Cases in which the date would not be selected\n // 1, the calendar cell is NOT enabled (is NOT valid)\n // 2, the selected date is NOT in current picker's month and the hideOtherMonths is enabled\n if (!cell.enabled || (this.hideOtherMonths && cell.out)) {\n return;\n }\n\n this.selectDate(cell.value);\n }\n\n /**\n * Handle a new date selected\n */\n private selectDate(date: number): void {\n const daysDiff = date - 1;\n const selected = this.dateTimeAdapter.addCalendarDays(\n this.firstDateOfMonth,\n daysDiff\n );\n\n this.selectedChange.emit(selected);\n this.userSelection.emit();\n }\n\n /**\n * Handle keydown event on calendar body\n */\n public handleCalendarKeydown(event: KeyboardEvent): void {\n let moment;\n switch (event.keyCode) {\n // minus 1 day\n case LEFT_ARROW:\n moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, -1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 day\n case RIGHT_ARROW:\n moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, 1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 1 week\n case UP_ARROW:\n moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, -7);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 week\n case DOWN_ARROW:\n moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, 7);\n this.pickerMomentChange.emit(moment);\n break;\n\n // move to first day of current month\n case HOME:\n moment = this.dateTimeAdapter.addCalendarDays(\n this.pickerMoment,\n 1 - this.dateTimeAdapter.getDate(this.pickerMoment)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // move to last day of current month\n case END:\n moment = this.dateTimeAdapter.addCalendarDays(\n this.pickerMoment,\n this.dateTimeAdapter.getNumDaysInMonth(this.pickerMoment) -\n this.dateTimeAdapter.getDate(this.pickerMoment)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 1 month (or 1 year)\n case PAGE_UP:\n moment = event.altKey\n ? this.dateTimeAdapter.addCalendarYears(this.pickerMoment, -1)\n : this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 month (or 1 year)\n case PAGE_DOWN:\n moment = event.altKey\n ? this.dateTimeAdapter.addCalendarYears(this.pickerMoment, 1)\n : this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // select the pickerMoment\n case ENTER:\n if (!this.dateFilter || this.dateFilter(this.pickerMoment)) {\n this.selectDate(this.dateTimeAdapter.getDate(this.pickerMoment));\n }\n break;\n default:\n return;\n }\n\n this.focusActiveCell();\n event.preventDefault();\n }\n\n /**\n * Generate the calendar weekdays array\n * */\n private generateWeekDays(): void {\n const longWeekdays = this.dateTimeAdapter.getDayOfWeekNames('long');\n const shortWeekdays = this.dateTimeAdapter.getDayOfWeekNames('short');\n const narrowWeekdays = this.dateTimeAdapter.getDayOfWeekNames('narrow');\n const firstDayOfWeek = this.firstDayOfWeek;\n\n const weekdays = longWeekdays.map((long, i) => {\n return { long, short: shortWeekdays[i], narrow: narrowWeekdays[i] };\n });\n\n this._weekdays = weekdays\n .slice(firstDayOfWeek)\n .concat(weekdays.slice(0, firstDayOfWeek));\n\n this.dateNames = this.dateTimeAdapter.getDateNames();\n\n return;\n }\n\n /**\n * Generate the calendar days array\n * */\n private generateCalendar(): void {\n if (!this.pickerMoment) {\n return;\n }\n\n this.todayDate = null;\n\n // the first weekday of the month\n const startWeekdayOfMonth = this.dateTimeAdapter.getDay(\n this.firstDateOfMonth\n );\n const firstDayOfWeek = this.firstDayOfWeek;\n\n // the amount of days from the first date of the month\n // if it is < 0, it means the date is in previous month\n let daysDiff =\n 0 -\n ((startWeekdayOfMonth + (DAYS_PER_WEEK - firstDayOfWeek)) %\n DAYS_PER_WEEK);\n\n // the index of cell that contains the first date of the month\n this.firstRowOffset = Math.abs(daysDiff);\n\n this._days = [];\n for (let i = 0; i < WEEKS_PER_VIEW; i++) {\n const week = [];\n for (let j = 0; j < DAYS_PER_WEEK; j++) {\n const date = this.dateTimeAdapter.addCalendarDays(\n this.firstDateOfMonth,\n daysDiff\n );\n const dateCell = this.createDateCell(date, daysDiff);\n\n // check if the date is today\n if (this.dateTimeAdapter.isSameDay(this.dateTimeAdapter.now(), date)) {\n this.todayDate = daysDiff + 1;\n }\n\n week.push(dateCell);\n daysDiff += 1;\n }\n this._days.push(week);\n }\n\n this.setSelectedDates();\n }\n\n /**\n * Creates CalendarCell for days.\n */\n private createDateCell(date: T, daysDiff: number): CalendarCell {\n // total days of the month\n const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(\n this.pickerMoment\n );\n const dateNum = this.dateTimeAdapter.getDate(date);\n // const dateName = this.dateNames[dateNum - 1];\n const dateName = dateNum.toString();\n const ariaLabel = this.dateTimeAdapter.format(\n date,\n this.dateTimeFormats.dateA11yLabel\n );\n\n // check if the date if selectable\n const enabled = this.isDateEnabled(date);\n\n // check if date is not in current month\n const dayValue = daysDiff + 1;\n const out = dayValue < 1 || dayValue > daysInMonth;\n const cellClass = 'owl-dt-day-' + this.dateTimeAdapter.getDay(date);\n\n return new CalendarCell(\n dayValue,\n dateName,\n ariaLabel,\n enabled,\n out,\n cellClass\n );\n }\n\n /**\n * Check if the date is valid\n */\n private isDateEnabled(date: T): boolean {\n return (\n !!date &&\n (!this.dateFilter || this.dateFilter(date)) &&\n (!this.minDate ||\n this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n (!this.maxDate || this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n );\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n\n /**\n * Check if the give dates are none-null and in the same month\n */\n public isSameMonth(dateLeft: T, dateRight: T): boolean {\n return !!(\n dateLeft &&\n dateRight &&\n this.dateTimeAdapter.isValid(dateLeft) &&\n this.dateTimeAdapter.isValid(dateRight) &&\n this.dateTimeAdapter.getYear(dateLeft) ===\n this.dateTimeAdapter.getYear(dateRight) &&\n this.dateTimeAdapter.getMonth(dateLeft) ===\n this.dateTimeAdapter.getMonth(dateRight)\n );\n }\n\n /**\n * Set the selectedDates value.\n * In single mode, it has only one value which represent the selected date\n * In range mode, it would has two values, one for the fromValue and the other for the toValue\n * */\n private setSelectedDates(): void {\n this.selectedDates = [];\n\n if (!this.firstDateOfMonth) {\n return;\n }\n\n if (this.isInSingleMode && this.selected) {\n const dayDiff = this.dateTimeAdapter.differenceInCalendarDays(\n this.selected,\n this.firstDateOfMonth\n );\n this.selectedDates[0] = dayDiff + 1;\n return;\n }\n\n if (this.isInRangeMode && this.selecteds) {\n this.selectedDates = this.selecteds.map((selected) => {\n if (this.dateTimeAdapter.isValid(selected)) {\n const dayDiff = this.dateTimeAdapter.differenceInCalendarDays(\n selected,\n this.firstDateOfMonth\n );\n return dayDiff + 1;\n } else {\n return null;\n }\n });\n }\n }\n\n private focusActiveCell() {\n this.calendarBodyElm.focusActiveCell();\n }\n}\n","<table\n class=\"owl-dt-calendar-table owl-dt-calendar-month-table\"\n [class.owl-dt-calendar-only-current-month]=\"hideOtherMonths\"\n>\n <thead class=\"owl-dt-calendar-header\">\n <tr class=\"owl-dt-weekdays\">\n <th\n *ngFor=\"let weekday of weekdays\"\n [attr.aria-label]=\"weekday.long\"\n class=\"owl-dt-weekday\"\n scope=\"col\"\n >\n <span>{{ weekday.short }}</span>\n </th>\n </tr>\n <tr>\n <th\n class=\"owl-dt-calendar-table-divider\"\n aria-hidden=\"true\"\n colspan=\"7\"\n ></th>\n </tr>\n </thead>\n <tbody\n ofe-owl-date-time-calendar-body\n role=\"grid\"\n [rows]=\"days\"\n [todayValue]=\"todayDate\"\n [selectedValues]=\"selectedDates\"\n [selectMode]=\"selectMode\"\n [activeCell]=\"activeCell\"\n (keydown)=\"handleCalendarKeydown($event)\"\n (cellSelected)=\"selectCalendarCell($event)\"\n ></tbody>\n</table>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild\n} from '@angular/core';\nimport {\n CalendarCell,\n OwlCalendarBodyComponent\n} from './calendar-body.component';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { Subscription } from 'rxjs';\nimport { SelectMode } from './date-time.class';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW\n} from '@angular/cdk/keycodes';\n\nconst MONTHS_PER_YEAR = 12;\nconst MONTHS_PER_ROW = 3;\n\n@Component({\n selector: 'ofe-owl-date-time-year-view',\n exportAs: 'owlMonthView',\n templateUrl: './calendar-year-view.component.html',\n styleUrls: ['./calendar-year-view.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlYearViewComponent<T>\n implements OnInit, AfterContentInit, OnDestroy {\n @HostBinding('class.owl-dt-calendar-view') get owlDTCalendarView() {\n return true;\n }\n\n /**\n * The select mode of the picker;\n * */\n private _selectMode: SelectMode = 'single';\n @Input()\n get selectMode(): SelectMode {\n return this._selectMode;\n }\n\n set selectMode(val: SelectMode) {\n this._selectMode = val;\n if (this.initiated) {\n this.generateMonthList();\n this.cdRef.markForCheck();\n }\n }\n\n /** The currently selected date. */\n private _selected: T | null;\n @Input()\n get selected(): T | null {\n return this._selected;\n }\n\n set selected(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._selected = this.getValidDate(value);\n this.setSelectedMonths();\n }\n\n private _selecteds: T[] = [];\n @Input()\n get selecteds(): T[] {\n return this._selecteds;\n }\n\n set selecteds(values: T[]) {\n this._selecteds = [];\n for (let i = 0; i < values.length; i++) {\n const value = this.dateTimeAdapter.deserialize(values[i]);\n this._selecteds.push(this.getValidDate(value));\n }\n\n this.setSelectedMonths();\n }\n\n private _pickerMoment: T | null;\n @Input()\n get pickerMoment() {\n return this._pickerMoment;\n }\n\n set pickerMoment(value: T) {\n const oldMoment = this._pickerMoment;\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n\n if (!this.hasSameYear(oldMoment, this._pickerMoment) && this.initiated) {\n this.generateMonthList();\n }\n }\n\n /**\n * A function used to filter which dates are selectable\n * */\n private _dateFilter: (date: T) => boolean;\n @Input()\n get dateFilter() {\n return this._dateFilter;\n }\n\n set dateFilter(filter: (date: T) => boolean) {\n this._dateFilter = filter;\n if (this.initiated) {\n this.generateMonthList();\n }\n }\n\n /** The minimum selectable date. */\n private _minDate: T | null;\n @Input()\n get minDate(): T | null {\n return this._minDate;\n }\n\n set minDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._minDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateMonthList();\n }\n }\n\n /** The maximum selectable date. */\n private _maxDate: T | null;\n @Input()\n get maxDate(): T | null {\n return this._maxDate;\n }\n\n set maxDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._maxDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateMonthList();\n }\n }\n\n private readonly monthNames: string[];\n\n private _months: CalendarCell[][];\n get months() {\n return this._months;\n }\n\n get activeCell(): number {\n if (this._pickerMoment) {\n return this.dateTimeAdapter.getMonth(this._pickerMoment);\n }\n }\n\n get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this.selectMode === 'range' ||\n this.selectMode === 'rangeFrom' ||\n this.selectMode === 'rangeTo'\n );\n }\n\n private localeSub: Subscription = Subscription.EMPTY;\n\n private initiated = false;\n\n public todayMonth: number | null;\n\n /**\n * An array to hold all selectedDates' month value\n * the value is the month number in current year\n * */\n public selectedMonths: number[] = [];\n\n /**\n * Callback to invoke when a new month is selected\n * */\n @Output()\n readonly monthChange = new EventEmitter<T>();\n\n /**\n * Emits the selected year. This doesn't imply a change on the selected date\n * */\n @Output()\n readonly monthSelected = new EventEmitter<T>();\n\n /** Emits when any date is activated. */\n @Output()\n readonly pickerMomentChange: EventEmitter<T> = new EventEmitter<T>();\n\n /** Emits when use keyboard enter to select a calendar cell */\n @Output()\n readonly keyboardEnter: EventEmitter<any> = new EventEmitter<any>();\n\n /** The body of calendar table */\n @ViewChild(OwlCalendarBodyComponent, { static: true })\n calendarBodyElm: OwlCalendarBodyComponent;\n\n constructor(\n private cdRef: ChangeDetectorRef,\n @Optional() private dateTimeAdapter: DateTimeAdapter<T>,\n @Optional()\n @Inject(OWL_DATE_TIME_FORMATS)\n private dateTimeFormats: OwlDateTimeFormats\n ) {\n this.monthNames = this.dateTimeAdapter.getMonthNames('short');\n }\n\n public ngOnInit() {\n this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\n this.generateMonthList();\n this.cdRef.markForCheck();\n });\n }\n\n public ngAfterContentInit(): void {\n this.generateMonthList();\n this.initiated = true;\n }\n\n public ngOnDestroy(): void {\n this.localeSub.unsubscribe();\n }\n\n /**\n * Handle a calendarCell selected\n */\n public selectCalendarCell(cell: CalendarCell): void {\n this.selectMonth(cell.value);\n }\n\n /**\n * Handle a new month selected\n */\n private selectMonth(month: number): void {\n const firstDateOfMonth = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this.pickerMoment),\n month,\n 1\n );\n\n this.monthSelected.emit(firstDateOfMonth);\n\n const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(\n firstDateOfMonth\n );\n const result = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this.pickerMoment),\n month,\n Math.min(daysInMonth, this.dateTimeAdapter.getDate(this.pickerMoment)),\n this.dateTimeAdapter.getHours(this.pickerMoment),\n this.dateTimeAdapter.getMinutes(this.pickerMoment),\n this.dateTimeAdapter.getSeconds(this.pickerMoment)\n );\n\n this.monthChange.emit(result);\n }\n\n /**\n * Handle keydown event on calendar body\n */\n public handleCalendarKeydown(event: KeyboardEvent): void {\n let moment;\n switch (event.keyCode) {\n // minus 1 month\n case LEFT_ARROW:\n moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 month\n case RIGHT_ARROW:\n moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 3 months\n case UP_ARROW:\n moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -3);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 3 months\n case DOWN_ARROW:\n moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 3);\n this.pickerMomentChange.emit(moment);\n break;\n\n // move to first month of current year\n case HOME:\n moment = this.dateTimeAdapter.addCalendarMonths(\n this.pickerMoment,\n -this.dateTimeAdapter.getMonth(this.pickerMoment)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // move to last month of current year\n case END:\n moment = this.dateTimeAdapter.addCalendarMonths(\n this.pickerMoment,\n 11 - this.dateTimeAdapter.getMonth(this.pickerMoment)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 1 year (or 10 year)\n case PAGE_UP:\n moment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n event.altKey ? -10 : -1\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 year (or 10 year)\n case PAGE_DOWN:\n moment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n event.altKey ? 10 : 1\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // Select current month\n case ENTER:\n this.selectMonth(this.dateTimeAdapter.getMonth(this.pickerMoment));\n this.keyboardEnter.emit();\n break;\n default:\n return;\n }\n\n this.focusActiveCell();\n event.preventDefault();\n }\n\n /**\n * Generate the calendar month list\n * */\n private generateMonthList(): void {\n if (!this.pickerMoment) {\n return;\n }\n\n this.setSelectedMonths();\n this.todayMonth = this.getMonthInCurrentYear(this.dateTimeAdapter.now());\n\n this._months = [];\n for (let i = 0; i < MONTHS_PER_YEAR / MONTHS_PER_ROW; i++) {\n const row = [];\n\n for (let j = 0; j < MONTHS_PER_ROW; j++) {\n const month = j + i * MONTHS_PER_ROW;\n const monthCell = this.createMonthCell(month);\n row.push(monthCell);\n }\n\n this._months.push(row);\n }\n\n return;\n }\n\n /**\n * Creates an CalendarCell for the given month.\n */\n private createMonthCell(month: number): CalendarCell {\n const startDateOfMonth = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this.pickerMoment),\n month,\n 1\n );\n const ariaLabel = this.dateTimeAdapter.format(\n startDateOfMonth,\n this.dateTimeFormats.monthYearA11yLabel\n );\n const cellClass = 'owl-dt-month-' + month;\n return new CalendarCell(\n month,\n this.monthNames[month],\n ariaLabel,\n this.isMonthEnabled(month),\n false,\n cellClass\n );\n }\n\n /**\n * Check if the given month is enable\n */\n private isMonthEnabled(month: number): boolean {\n const firstDateOfMonth = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this.pickerMoment),\n month,\n 1\n );\n\n // If any date in the month is selectable,\n // we count the month as enable\n for (\n let date = firstDateOfMonth;\n this.dateTimeAdapter.getMonth(date) === month;\n date = this.dateTimeAdapter.addCalendarDays(date, 1)\n ) {\n if (\n !!date &&\n (!this.dateFilter || this.dateFilter(date)) &&\n (!this.minDate ||\n this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n (!this.maxDate || this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Gets the month in this year that the given Date falls on.\n * Returns null if the given Date is in another year.\n */\n private getMonthInCurrentYear(date: T | null): number {\n if (this.getValidDate(date) && this.getValidDate(this._pickerMoment)) {\n const result = this.dateTimeAdapter.compareYear(date, this._pickerMoment);\n\n // < 0 : the given date's year is before pickerMoment's year, we return -1 as selected month value.\n // > 0 : the given date's year is after pickerMoment's year, we return 12 as selected month value.\n // 0 : the give date's year is same as the pickerMoment's year, we return the actual month value.\n if (result < 0) {\n return -1;\n } else if (result > 0) {\n return 12;\n } else {\n return this.dateTimeAdapter.getMonth(date);\n }\n } else {\n return null;\n }\n }\n\n /**\n * Set the selectedMonths value\n * In single mode, it has only one value which represent the month the selected date in\n * In range mode, it would has two values, one for the month the fromValue in and the other for the month the toValue in\n * */\n private setSelectedMonths(): void {\n this.selectedMonths = [];\n if (this.isInSingleMode && this.selected) {\n this.selectedMonths[0] = this.getMonthInCurrentYear(this.selected);\n }\n\n if (this.isInRangeMode && this.selecteds) {\n this.selectedMonths[0] = this.getMonthInCurrentYear(this.selecteds[0]);\n this.selectedMonths[1] = this.getMonthInCurrentYear(this.selecteds[1]);\n }\n }\n\n /**\n * Check the given dates are in the same year\n */\n private hasSameYear(dateLeft: T, dateRight: T) {\n return !!(\n dateLeft &&\n dateRight &&\n this.dateTimeAdapter.getYear(dateLeft) ===\n this.dateTimeAdapter.getYear(dateRight)\n );\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n\n private focusActiveCell() {\n this.calendarBodyElm.focusActiveCell();\n }\n}\n","<table class=\"owl-dt-calendar-table owl-dt-calendar-year-table\">\n <thead class=\"owl-dt-calendar-header\">\n <tr>\n <th\n class=\"owl-dt-calendar-table-divider\"\n aria-hidden=\"true\"\n colspan=\"3\"\n ></th>\n </tr>\n </thead>\n <tbody\n ofe-owl-date-time-calendar-body\n role=\"grid\"\n [rows]=\"months\"\n [numCols]=\"3\"\n [cellRatio]=\"3 / 7\"\n [activeCell]=\"activeCell\"\n [todayValue]=\"todayMonth\"\n [selectedValues]=\"selectedMonths\"\n [selectMode]=\"selectMode\"\n (keydown)=\"handleCalendarKeydown($event)\"\n (cellSelected)=\"selectCalendarCell($event)\"\n ></tbody>\n</table>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Optional,\n Output,\n ViewChild\n} from '@angular/core';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n CalendarCell,\n OwlCalendarBodyComponent\n} from './calendar-body.component';\nimport { SelectMode } from './date-time.class';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\n\nexport const YEARS_PER_ROW = 3;\nexport const YEAR_ROWS = 7;\n\n@Component({\n selector: 'ofe-owl-date-time-multi-year-view',\n templateUrl: './calendar-multi-year-view.component.html',\n styleUrls: ['./calendar-multi-year-view.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlMultiYearViewComponent<T> implements AfterContentInit {\n @HostBinding('class.owl-dt-calendar-view') get owlDTCalendarView() {\n return true;\n }\n\n @HostBinding('class.owl-dt-calendar-multi-year-view')\n get owlDTCalendarMultiYearView() {\n return true;\n }\n\n /**\n * The select mode of the picker;\n * */\n private _selectMode: SelectMode = 'single';\n @Input()\n get selectMode(): SelectMode {\n return this._selectMode;\n }\n\n set selectMode(val: SelectMode) {\n this._selectMode = val;\n if (this.initiated) {\n this.setSelectedYears();\n this.cdRef.markForCheck();\n }\n }\n\n /** The currently selected date. */\n private _selected: T | null;\n @Input()\n get selected(): T | null {\n return this._selected;\n }\n\n set selected(value: T | null) {\n const oldSelected = this._selected;\n value = this.dateTimeAdapter.deserialize(value);\n this._selected = this.getValidDate(value);\n\n if (!this.dateTimeAdapter.isSameDay(oldSelected, this._selected)) {\n this.setSelectedYears();\n }\n }\n\n private _selecteds: T[] = [];\n\n @Input()\n get selecteds(): T[] {\n return this._selecteds;\n }\n\n set selecteds(values: T[]) {\n this._selecteds = values.map((v) => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n this.setSelectedYears();\n }\n\n private _pickerMoment: T | null;\n @Input()\n get pickerMoment() {\n return this._pickerMoment;\n }\n\n set pickerMoment(value: T) {\n const oldMoment = this._pickerMoment;\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n\n if (\n oldMoment &&\n this._pickerMoment &&\n !this.isSameYearList(oldMoment, this._pickerMoment)\n ) {\n this.generateYearList();\n }\n }\n\n /**\n * A function used to filter which dates are selectable\n * */\n private _dateFilter: (date: T) => boolean;\n @Input()\n get dateFilter() {\n return this._dateFilter;\n }\n\n set dateFilter(filter: (date: T) => boolean) {\n this._dateFilter = filter;\n if (this.initiated) {\n this.generateYearList();\n }\n }\n\n /** The minimum selectable date. */\n private _minDate: T | null;\n @Input()\n get minDate(): T | null {\n return this._minDate;\n }\n\n set minDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._minDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateYearList();\n }\n }\n\n /** The maximum selectable date. */\n private _maxDate: T | null;\n @Input()\n get maxDate(): T | null {\n return this._maxDate;\n }\n\n set maxDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._maxDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateYearList();\n }\n }\n\n private _todayYear: number;\n get todayYear(): number {\n return this._todayYear;\n }\n\n private _years: CalendarCell[][];\n get years() {\n return this._years;\n }\n\n private _selectedYears: number[];\n get selectedYears(): number[] {\n return this._selectedYears;\n }\n\n private initiated = false;\n\n get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this.selectMode === 'range' ||\n this.selectMode === 'rangeFrom' ||\n this.selectMode === 'rangeTo'\n );\n }\n\n get activeCell(): number {\n if (this._pickerMoment) {\n return (\n this.dateTimeAdapter.getYear(this._pickerMoment) %\n (YEARS_PER_ROW * YEAR_ROWS)\n );\n }\n }\n\n get tableHeader(): string {\n if (this._years && this._years.length > 0) {\n return `${this._years[0][0].displayValue} ~ ${\n this._years[YEAR_ROWS - 1][YEARS_PER_ROW - 1].displayValue\n }`;\n }\n }\n\n get prevButtonLabel(): string {\n return this.pickerIntl.prevMultiYearLabel;\n }\n\n get nextButtonLabel(): string {\n return this.pickerIntl.nextMultiYearLabel;\n }\n\n /**\n * Callback to invoke when a new month is selected\n * */\n @Output() readonly monthChange = new EventEmitter<T>();\n\n /**\n * Emits the selected year. This doesn't imply a change on the selected date\n * */\n @Output() readonly yearSelected = new EventEmitter<T>();\n\n /** Emits when any date is activated. */\n @Output() readonly pickerMomentChange: EventEmitter<T> = new EventEmitter<\n T\n >();\n\n /** Emits when use keyboard enter to select a calendar cell */\n @Output() readonly keyboardEnter: EventEmitter<any> = new EventEmitter<any>();\n\n /** The body of calendar table */\n @ViewChild(OwlCalendarBodyComponent, { static: true })\n calendarBodyElm: OwlCalendarBodyComponent;\n\n constructor(\n private cdRef: ChangeDetectorRef,\n private pickerIntl: OwlDateTimeIntl,\n @Optional() private dateTimeAdapter: DateTimeAdapter<T>\n ) {}\n\n public ngAfterContentInit(): void {\n this._todayYear = this.dateTimeAdapter.getYear(this.dateTimeAdapter.now());\n this.generateYearList();\n this.initiated = true;\n }\n\n /**\n * Handle a calendarCell selected\n */\n public selectCalendarCell(cell: CalendarCell): void {\n this.selectYear(cell.value);\n }\n\n private selectYear(year: number): void {\n this.yearSelected.emit(this.dateTimeAdapter.createDate(year, 0, 1));\n const firstDateOfMonth = this.dateTimeAdapter.createDate(\n year,\n this.dateTimeAdapter.getMonth(this.pickerMoment),\n 1\n );\n const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(\n firstDateOfMonth\n );\n const selected = this.dateTimeAdapter.createDate(\n year,\n this.dateTimeAdapter.getMonth(this.pickerMoment),\n Math.min(daysInMonth, this.dateTimeAdapter.getDate(this.pickerMoment)),\n this.dateTimeAdapter.getHours(this.pickerMoment),\n this.dateTimeAdapter.getMinutes(this.pickerMoment),\n this.dateTimeAdapter.getSeconds(this.pickerMoment)\n );\n\n this.monthChange.emit(selected);\n }\n\n /**\n * Generate the previous year list\n * */\n public prevYearList(event: any): void {\n this._pickerMoment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n -1 * YEAR_ROWS * YEARS_PER_ROW\n );\n this.generateYearList();\n event.preventDefault();\n }\n\n /**\n * Generate the next year list\n * */\n public nextYearList(event: any): void {\n this._pickerMoment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n YEAR_ROWS * YEARS_PER_ROW\n );\n this.generateYearList();\n event.preventDefault();\n }\n\n public generateYearList(): void {\n this._years = [];\n\n const pickerMomentYear = this.dateTimeAdapter.getYear(this._pickerMoment);\n const offset = pickerMomentYear % (YEARS_PER_ROW * YEAR_ROWS);\n\n for (let i = 0; i < YEAR_ROWS; i++) {\n const row = [];\n\n for (let j = 0; j < YEARS_PER_ROW; j++) {\n const year = pickerMomentYear - offset + (j + i * YEARS_PER_ROW);\n const yearCell = this.createYearCell(year);\n row.push(yearCell);\n }\n\n this._years.push(row);\n }\n\n return;\n }\n\n /** Whether the previous period button is enabled. */\n public previousEnabled(): boolean {\n if (!this.minDate) {\n return true;\n }\n return (\n !this.minDate || !this.isSameYearList(this._pickerMoment, this.minDate)\n );\n }\n\n /** Whether the next period button is enabled. */\n public nextEnabled(): boolean {\n return (\n !this.maxDate || !this.isSameYearList(this._pickerMoment, this.maxDate)\n );\n }\n\n public handleCalendarKeydown(event: KeyboardEvent): void {\n let moment;\n switch (event.keyCode) {\n // minus 1 year\n case LEFT_ARROW:\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, -1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 year\n case RIGHT_ARROW:\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, 1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 3 years\n case UP_ARROW:\n moment = this.dateTimeAdapter.addCalendarYears(\n this._pickerMoment,\n -1 * YEARS_PER_ROW\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 3 years\n case DOWN_ARROW:\n moment = this.dateTimeAdapter.addCalendarYears(\n this._pickerMoment,\n YEARS_PER_ROW\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // go to the first year of the year page\n case HOME:\n moment = this.dateTimeAdapter.addCalendarYears(\n this._pickerMoment,\n -this.dateTimeAdapter.getYear(this._pickerMoment) %\n (YEARS_PER_ROW * YEAR_ROWS)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // go to the last year of the year page\n case END:\n moment = this.dateTimeAdapter.addCalendarYears(\n this._pickerMoment,\n YEARS_PER_ROW * YEAR_ROWS -\n (this.dateTimeAdapter.getYear(this._pickerMoment) %\n (YEARS_PER_ROW * YEAR_ROWS)) -\n 1\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 1 year page (or 10 year pages)\n case PAGE_UP:\n moment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n event.altKey\n ? -10 * (YEARS_PER_ROW * YEAR_ROWS)\n : -1 * (YEARS_PER_ROW * YEAR_ROWS)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 year page (or 10 year pages)\n case PAGE_DOWN:\n moment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n event.altKey\n ? 10 * (YEARS_PER_ROW * YEAR_ROWS)\n : YEARS_PER_ROW * YEAR_ROWS\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n case ENTER:\n this.selectYear(this.dateTimeAdapter.getYear(this._pickerMoment));\n this.keyboardEnter.emit();\n break;\n\n default:\n return;\n }\n\n this.focusActiveCell();\n event.preventDefault();\n }\n\n /**\n * Creates an CalendarCell for the given year.\n */\n private createYearCell(year: number): CalendarCell {\n const startDateOfYear = this.dateTimeAdapter.createDate(year, 0, 1);\n const ariaLabel = this.dateTimeAdapter.getYearName(startDateOfYear);\n const cellClass = 'owl-dt-year-' + year;\n return new CalendarCell(\n year,\n year.toString(),\n ariaLabel,\n this.isYearEnabled(year),\n false,\n cellClass\n );\n }\n\n private setSelectedYears(): void {\n this._selectedYears = [];\n\n if (this.isInSingleMode && this.selected) {\n this._selectedYears[0] = this.dateTimeAdapter.getYear(this.selected);\n }\n\n if (this.isInRangeMode && this.selecteds) {\n this._selectedYears = this.selecteds.map((selected) => {\n if (this.dateTimeAdapter.isValid(selected)) {\n return this.dateTimeAdapter.getYear(selected);\n } else {\n return null;\n }\n });\n }\n }\n\n /** Whether the given year is enabled. */\n private isYearEnabled(year: number) {\n // disable if the year is greater than maxDate lower than minDate\n if (\n year === undefined ||\n year === null ||\n (this.maxDate && year > this.dateTimeAdapter.getYear(this.maxDate)) ||\n (this.minDate && year < this.dateTimeAdapter.getYear(this.minDate))\n ) {\n return false;\n }\n\n // enable if it reaches here and there's no filter defined\n if (!this.dateFilter) {\n return true;\n }\n\n const firstOfYear = this.dateTimeAdapter.createDate(year, 0, 1);\n\n // If any date in the year is enabled count the year as enabled.\n for (\n let date = firstOfYear;\n this.dateTimeAdapter.getYear(date) === year;\n date = this.dateTimeAdapter.addCalendarDays(date, 1)\n ) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n\n return false;\n }\n\n private isSameYearList(date1: T, date2: T): boolean {\n return (\n Math.floor(\n this.dateTimeAdapter.getYear(date1) / (YEARS_PER_ROW * YEAR_ROWS)\n ) ===\n Math.floor(\n this.dateTimeAdapter.getYear(date2) / (YEARS_PER_ROW * YEAR_ROWS)\n )\n );\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n\n private focusActiveCell() {\n this.calendarBodyElm.focusActiveCell();\n }\n}\n","<button\n class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n [disabled]=\"!previousEnabled()\"\n [attr.aria-label]=\"prevButtonLabel\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"prevYearList($event)\"\n>\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Left\"> -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n version=\"1.1\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 250.738 250.738\"\n style=\"enable-background: new 0 0 250.738 250.738\"\n xml:space=\"preserve\"\n width=\"100%\"\n height=\"100%\"\n >\n <path\n style=\"fill-rule: evenodd; clip-rule: evenodd\"\n d=\"M96.633,125.369l95.053-94.533c7.101-7.055,7.101-18.492,0-25.546 c-7.1-7.054-18.613-7.054-25.714,0L58.989,111.689c-3.784,3.759-5.487,8.759-5.238,13.68c-0.249,4.922,1.454,9.921,5.238,13.681 l106.983,106.398c7.101,7.055,18.613,7.055,25.714,0c7.101-7.054,7.101-18.491,0-25.544L96.633,125.369z\"\n />\n </svg>\n <!-- </editor-fold> -->\n </span>\n</button>\n<table class=\"owl-dt-calendar-table owl-dt-calendar-multi-year-table\">\n <thead class=\"owl-dt-calendar-header\">\n <tr>\n <th colspan=\"3\">{{ tableHeader }}</th>\n </tr>\n </thead>\n <tbody\n ofe-owl-date-time-calendar-body\n role=\"grid\"\n [rows]=\"years\"\n [numCols]=\"3\"\n [cellRatio]=\"3 / 7\"\n [activeCell]=\"activeCell\"\n [todayValue]=\"todayYear\"\n [selectedValues]=\"selectedYears\"\n [selectMode]=\"selectMode\"\n (keydown)=\"handleCalendarKeydown($event)\"\n (cellSelected)=\"selectCalendarCell($event)\"\n ></tbody>\n</table>\n<button\n class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n [disabled]=\"!nextEnabled()\"\n [attr.aria-label]=\"nextButtonLabel\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"nextYearList($event)\"\n>\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Right\"> -->\n <svg\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 250.738 250.738\"\n style=\"enable-background: new 0 0 250.738 250.738\"\n xml:space=\"preserve\"\n >\n <path\n style=\"fill-rule: evenodd; clip-rule: evenodd\"\n d=\"M191.75,111.689L84.766,5.291c-7.1-7.055-18.613-7.055-25.713,0\n c-7.101,7.054-7.101,18.49,0,25.544l95.053,94.534l-95.053,94.533c-7.101,7.054-7.101,18.491,0,25.545\n c7.1,7.054,18.613,7.054,25.713,0L191.75,139.05c3.784-3.759,5.487-8.759,5.238-13.681\n C197.237,120.447,195.534,115.448,191.75,111.689z\"\n />\n </svg>\n <!-- </editor-fold> -->\n </span>\n</button>\n","import {\n AfterContentInit,\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output\n} from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\n\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { SelectMode } from './date-time.class';\n\n@Component({\n selector: 'ofe-owl-date-time-calendar',\n exportAs: 'owlDateTimeCalendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.scss'],\n\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlCalendarComponent<T>\n implements AfterContentInit, AfterViewChecked, OnDestroy {\n @HostBinding('class.owl-dt-calendar') get owlDTCalendarClass() {\n return true;\n }\n\n @Input()\n get minDate(): T | null {\n return this._minDate;\n }\n\n set minDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n value = this.getValidDate(value);\n\n this._minDate = value\n ? this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(value),\n this.dateTimeAdapter.getMonth(value),\n this.dateTimeAdapter.getDate(value)\n )\n : null;\n }\n @Input()\n get maxDate(): T | null {\n return this._maxDate;\n }\n\n set maxDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n value = this.getValidDate(value);\n\n this._maxDate = value\n ? this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(value),\n this.dateTimeAdapter.getMonth(value),\n this.dateTimeAdapter.getDate(value)\n )\n : null;\n }\n @Input()\n get pickerMoment() {\n return this._pickerMoment;\n }\n\n set pickerMoment(value: T) {\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n }\n @Input()\n get selected(): T | null {\n return this._selected;\n }\n\n set selected(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._selected = this.getValidDate(value);\n }\n @Input()\n get selecteds(): T[] {\n return this._selecteds;\n }\n\n set selecteds(values: T[]) {\n this._selecteds = values.map((v) => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n }\n\n get periodButtonText(): string {\n return this.isMonthView\n ? this.dateTimeAdapter.format(\n this.pickerMoment,\n this.dateTimeFormats.monthYearLabel\n )\n : this.dateTimeAdapter.getYearName(this.pickerMoment);\n }\n\n get periodButtonLabel(): string {\n return this.isMonthView\n ? this.pickerIntl.switchToMultiYearViewLabel\n : this.pickerIntl.switchToMonthViewLabel;\n }\n\n get prevButtonLabel(): string {\n if (this._currentView === 'month') {\n return this.pickerIntl.prevMonthLabel;\n } else if (this._currentView === 'year') {\n return this.pickerIntl.prevYearLabel;\n } else {\n return null;\n }\n }\n\n get nextButtonLabel(): string {\n if (this._currentView === 'month') {\n return this.pickerIntl.nextMonthLabel;\n } else if (this._currentView === 'year') {\n return this.pickerIntl.nextYearLabel;\n } else {\n return null;\n }\n }\n get currentView(): 'month' | 'year' | 'multi-years' {\n return this._currentView;\n }\n\n set currentView(view: 'month' | 'year' | 'multi-years') {\n this._currentView = view;\n this.moveFocusOnNextTick = true;\n }\n\n get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this.selectMode === 'range' ||\n this.selectMode === 'rangeFrom' ||\n this.selectMode === 'rangeTo'\n );\n }\n\n get showControlArrows(): boolean {\n return this._currentView !== 'multi-years';\n }\n\n get isMonthView() {\n return this._currentView === 'month';\n }\n\n constructor(\n private elmRef: ElementRef,\n private pickerIntl: OwlDateTimeIntl,\n private ngZone: NgZone,\n private cdRef: ChangeDetectorRef,\n @Optional() private dateTimeAdapter: DateTimeAdapter<T>,\n @Optional()\n @Inject(OWL_DATE_TIME_FORMATS)\n private dateTimeFormats: OwlDateTimeFormats\n ) {\n this.intlChangesSub = this.pickerIntl.changes.subscribe(() => {\n this.cdRef.markForCheck();\n });\n }\n /**\n * Date filter for the month and year view\n * */\n @Input()\n dateFilter: Function;\n\n /**\n * Set the first day of week\n */\n @Input()\n firstDayOfWeek = 0;\n\n /** The minimum selectable date. */\n private _minDate: T | null;\n\n /** The maximum selectable date. */\n private _maxDate: T | null;\n\n /** The current picker moment */\n private _pickerMoment: T;\n\n @Input()\n selectMode: SelectMode;\n\n /** The currently selected moment. */\n private _selected: T | null;\n\n private _selecteds: T[] = [];\n\n /**\n * The view that the calendar should start in.\n */\n @Input()\n startView: 'month' | 'year' | 'multi-years' = 'month';\n\n /**\n * Whether to hide dates in other months at the start or end of the current month.\n * */\n @Input()\n hideOtherMonths: boolean;\n\n /** Emits when the currently picker moment changes. */\n @Output()\n pickerMomentChange = new EventEmitter<T>();\n\n /** Emits when the currently selected date changes. */\n @Output()\n selectedChange = new EventEmitter<T>();\n\n /** Emits when any date is selected. */\n @Output()\n userSelection = new EventEmitter<void>();\n\n /**\n * Emits the selected year. This doesn't imply a change on the selected date\n * */\n @Output()\n readonly yearSelected = new EventEmitter<T>();\n\n /**\n * Emits the selected month. This doesn't imply a change on the selected date\n * */\n @Output()\n readonly monthSelected = new EventEmitter<T>();\n\n private _currentView: 'month' | 'year' | 'multi-years';\n\n private intlChangesSub = Subscription.EMPTY;\n\n /**\n * Used for scheduling that focus should be moved to the active cell on the next tick.\n * We need to schedule it, rather than do it immediately, because we have to wait\n * for Angular to re-evaluate the view children.\n */\n private moveFocusOnNextTick = false;\n\n /**\n * Date filter for the month and year view\n */\n public dateFilterForViews = (date: T) => {\n return (\n !!date &&\n (!this.dateFilter || this.dateFilter(date)) &&\n (!this.minDate ||\n this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n (!this.maxDate || this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n );\n };\n\n public ngAfterContentInit(): void {\n this._currentView = this.startView;\n }\n\n public ngAfterViewChecked() {\n if (this.moveFocusOnNextTick) {\n this.moveFocusOnNextTick = false;\n this.focusActiveCell();\n }\n }\n\n public ngOnDestroy(): void {\n this.intlChangesSub.unsubscribe();\n }\n\n /**\n * Toggle between month view and year view\n */\n public toggleViews(): void {\n this.currentView = this._currentView === 'month' ? 'multi-years' : 'month';\n }\n\n /**\n * Handles user clicks on the previous button.\n * */\n public previousClicked(): void {\n this.pickerMoment = this.isMonthView\n ? this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -1)\n : this.dateTimeAdapter.addCalendarYears(this.pickerMoment, -1);\n\n this.pickerMomentChange.emit(this.pickerMoment);\n }\n\n /**\n * Handles user clicks on the next button.\n * */\n public nextClicked(): void {\n this.pickerMoment = this.isMonthView\n ? this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 1)\n : this.dateTimeAdapter.addCalendarYears(this.pickerMoment, 1);\n\n this.pickerMomentChange.emit(this.pickerMoment);\n }\n\n public dateSelected(date: T): void {\n if (!this.dateFilterForViews(date)) {\n return;\n }\n\n this.selectedChange.emit(date);\n\n /*if ((this.isInSingleMode && !this.dateTimeAdapter.isSameDay(date, this.selected)) ||\n this.isInRangeMode) {\n this.selectedChange.emit(date);\n }*/\n }\n\n /**\n * Change the pickerMoment value and switch to a specific view\n */\n public goToDateInView(date: T, view: 'month' | 'year' | 'multi-years'): void {\n this.handlePickerMomentChange(date);\n this.currentView = view;\n return;\n }\n\n /**\n * Change the pickerMoment value\n */\n public handlePickerMomentChange(date: T): void {\n this.pickerMoment = this.dateTimeAdapter.clampDate(\n date,\n this.minDate,\n this.maxDate\n );\n this.pickerMomentChange.emit(this.pickerMoment);\n return;\n }\n\n public userSelected(): void {\n this.userSelection.emit();\n }\n\n /**\n * Whether the previous period button is enabled.\n */\n public prevButtonEnabled(): boolean {\n return !this.minDate || !this.isSameView(this.pickerMoment, this.minDate);\n }\n\n /**\n * Whether the next period button is enabled.\n */\n public nextButtonEnabled(): boolean {\n return !this.maxDate || !this.isSameView(this.pickerMoment, this.maxDate);\n }\n\n /**\n * Focus to the host element\n * */\n public focusActiveCell() {\n this.ngZone.runOutsideAngular(() => {\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this.elmRef.nativeElement\n .querySelector('.owl-dt-calendar-cell-active')\n .focus();\n });\n });\n }\n\n public selectYearInMultiYearView(normalizedYear: T): void {\n this.yearSelected.emit(normalizedYear);\n }\n\n public selectMonthInYearView(normalizedMonth: T): void {\n this.monthSelected.emit(normalizedMonth);\n }\n\n /**\n * Whether the two dates represent the same view in the current view mode (month or year).\n */\n private isSameView(date1: T, date2: T): boolean {\n if (this._currentView === 'month') {\n return !!(\n date1 &&\n date2 &&\n this.dateTimeAdapter.getYear(date1) ===\n this.dateTimeAdapter.getYear(date2) &&\n this.dateTimeAdapter.getMonth(date1) ===\n this.dateTimeAdapter.getMonth(date2)\n );\n } else if (this._currentView === 'year') {\n return !!(\n date1 &&\n date2 &&\n this.dateTimeAdapter.getYear(date1) ===\n this.dateTimeAdapter.getYear(date2)\n );\n } else {\n return false;\n }\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n}\n","<div class=\"owl-dt-calendar-control\">\n <!-- focus when keyboard tab (http://kizu.ru/en/blog/keyboard-only-focus/#x) -->\n <button\n class=\"owl-dt-control owl-dt-control-button owl-dt-control-arrow-button\"\n type=\"button\"\n tabindex=\"0\"\n [style.visibility]=\"showControlArrows ? 'visible' : 'hidden'\"\n [disabled]=\"!prevButtonEnabled()\"\n [attr.aria-label]=\"prevButtonLabel\"\n (click)=\"previousClicked()\"\n >\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\n <!-- <editor-fold desc=\"SVG Arrow Left\"> -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n version=\"1.1\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 250.738 250.738\"\n style=\"enable-background: new 0 0 250.738 250.738\"\n xml:space=\"preserve\"\n width=\"100%\"\n height=\"100%\"\n >\n <path\n style=\"fill-rule: evenodd; clip-rule: evenodd\"\n d=\"M96.633,125.369l95.053-94.533c7.101-7.055,7.101-18.492,0-25.546 c-7.1-7.054-18.613-7.054-25.714,0L58.989,111.689c-3.784,3.759-5.487,8.759-5.238,13.68c-0.249,4.922,1.454,9.921,5.238,13.681 l106.983,106.398c7.101,7.055,18.613,7.055,25.714,0c7.101-7.054,7.101-18.491,0-25.544L96.633,125.369z\"\n />\n </svg>\n <!-- </editor-fold> -->\n </span>\n </button>\n <div class=\"owl-dt-calendar-control-content\">\n <button\n class=\"owl-dt-control owl-dt-control-button owl-dt-control-period-button\"\n type=\"button\"\n tabindex=\"0\"\n [attr.aria-label]=\"periodButtonLabel\"\n (click)=\"toggleViews()\"\n >\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\n {{ periodButtonText }}\n\n <span\n class=\"owl-dt-control-button-arrow\"\n [style.transform]=\"'rotate(' + (isMonthView ? 0 : 180) + 'deg)'\"\n >\n <!-- <editor-fold desc=\"SVG Arrow\"> -->\n <svg\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n width=\"50%\"\n height=\"50%\"\n viewBox=\"0 0 292.362 292.362\"\n style=\"enable-background: new 0 0 292.362 292.362\"\n xml:space=\"preserve\"\n >\n <g>\n <path\n d=\"M286.935,69.377c-3.614-3.617-7.898-5.424-12.848-5.424H18.274c-4.952,0-9.233,1.807-12.85,5.424\n C1.807,72.998,0,77.279,0,82.228c0,4.948,1.807,9.229,5.424,12.847l127.907,127.907c3.621,3.617,7.902,5.428,12.85,5.428\n s9.233-1.811,12.847-5.428L286.935,95.074c3.613-3.617,5.427-7.898,5.427-12.847C292.362,77.279,290.548,72.998,286.935,69.377z\"\n />\n </g>\n </svg>\n <!-- </editor-fold> -->\n </span>\n </span>\n </button>\n </div>\n <button\n class=\"owl-dt-control owl-dt-control-button owl-dt-control-arrow-button\"\n type=\"button\"\n tabindex=\"0\"\n [style.visibility]=\"showControlArrows ? 'visible' : 'hidden'\"\n [disabled]=\"!nextButtonEnabled()\"\n [attr.aria-label]=\"nextButtonLabel\"\n (click)=\"nextClicked()\"\n >\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\n <!-- <editor-fold desc=\"SVG Arrow Right\"> -->\n <svg\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 250.738 250.738\"\n style=\"enable-background: new 0 0 250.738 250.738\"\n xml:space=\"preserve\"\n >\n <path\n style=\"fill-rule: evenodd; clip-rule: evenodd\"\n d=\"M191.75,111.689L84.766,5.291c-7.1-7.055-18.613-7.055-25.713,0\n c-7.101,7.054-7.101,18.49,0,25.544l95.053,94.534l-95.053,94.533c-7.101,7.054-7.101,18.491,0,25.545\n c7.1,7.054,18.613,7.054,25.713,0L191.75,139.05c3.784-3.759,5.487-8.759,5.238-13.681\n C197.237,120.447,195.534,115.448,191.75,111.689z\"\n />\n </svg>\n <!-- </editor-fold> -->\n </span>\n </button>\n</div>\n<div\n class=\"owl-dt-calendar-main\"\n cdkMonitorSubtreeFocus\n [ngSwitch]=\"currentView\"\n tabindex=\"-1\"\n>\n <ofe-owl-date-time-month-view\n *ngSwitchCase=\"'month'\"\n [pickerMoment]=\"pickerMoment\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [selected]=\"selected\"\n [selecteds]=\"selecteds\"\n [selectMode]=\"selectMode\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [dateFilter]=\"dateFilter\"\n [hideOtherMonths]=\"hideOtherMonths\"\n (pickerMomentChange)=\"handlePickerMomentChange($event)\"\n (selectedChange)=\"dateSelected($event)\"\n (userSelection)=\"userSelected()\"\n ></ofe-owl-date-time-month-view>\n\n <ofe-owl-date-time-year-view\n *ngSwitchCase=\"'year'\"\n [pickerMoment]=\"pickerMoment\"\n [selected]=\"selected\"\n [selecteds]=\"selecteds\"\n [selectMode]=\"selectMode\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [dateFilter]=\"dateFilter\"\n (keyboardEnter)=\"focusActiveCell()\"\n (pickerMomentChange)=\"handlePickerMomentChange($event)\"\n (monthSelected)=\"selectMonthInYearView($event)\"\n (monthChange)=\"goToDateInView($event, 'month')\"\n ></ofe-owl-date-time-year-view>\n\n <ofe-owl-date-time-multi-year-view\n *ngSwitchCase=\"'multi-years'\"\n [pickerMoment]=\"pickerMoment\"\n [selected]=\"selected\"\n [selecteds]=\"selecteds\"\n [selectMode]=\"selectMode\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [dateFilter]=\"dateFilter\"\n (keyboardEnter)=\"focusActiveCell()\"\n (pickerMomentChange)=\"handlePickerMomentChange($event)\"\n (yearSelected)=\"selectYearInMultiYearView($event)\"\n (monthChange)=\"goToDateInView($event, 'year')\"\n ></ofe-owl-date-time-multi-year-view>\n</div>\n","/**\n * date-time-picker.animations\n */\nimport {\n animate,\n animateChild,\n AnimationTriggerMetadata,\n group,\n query,\n state,\n style,\n transition,\n trigger\n} from '@angular/animations';\n\nexport const owlDateTimePickerAnimations: {\n readonly transformPicker: AnimationTriggerMetadata;\n readonly fadeInPicker: AnimationTriggerMetadata;\n} = {\n transformPicker: trigger('transformPicker', [\n state('void', style({ opacity: 0, transform: 'scale(1, 0)' })),\n state('enter', style({ opacity: 1, transform: 'scale(1, 1)' })),\n transition(\n 'void => enter',\n group([\n query('@fadeInPicker', animateChild(), { optional: true }),\n animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)')\n ])\n ),\n transition('enter => void', animate('100ms linear', style({ opacity: 0 })))\n ]),\n\n fadeInPicker: trigger('fadeInPicker', [\n state('enter', style({ opacity: 1 })),\n state('void', style({ opacity: 0 })),\n transition(\n 'void => enter',\n animate('400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')\n )\n ])\n};\n","/**\n * numberFixedLen.pipe\n */\n\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'numberFixedLen'\n})\nexport class NumberFixedLenPipe implements PipeTransform {\n transform(num: number, len: number): any {\n const number = Math.floor(num);\n const length = Math.floor(len);\n\n if (num === null || isNaN(number) || isNaN(length)) {\n return num;\n }\n\n let numString = number.toString();\n\n while (numString.length < length) {\n numString = '0' + numString;\n }\n\n return numString;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Output\n} from '@angular/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\n@Component({\n exportAs: 'owlDateTimeTimerBox',\n selector: 'ofe-owl-date-time-timer-box',\n templateUrl: './timer-box.component.html',\n styleUrls: ['./timer-box.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlTimerBoxComponent implements OnInit, OnDestroy {\n @HostBinding('class.owl-dt-timer-box')\n get owlDTTimerBoxClass() {\n return true;\n }\n\n @Input() showDivider = false;\n\n @Input() upBtnAriaLabel: string;\n\n @Input() upBtnDisabled: boolean;\n\n @Input() downBtnAriaLabel: string;\n\n @Input() downBtnDisabled: boolean;\n\n /**\n * Value would be displayed in the box\n * If it is null, the box would display [value]\n * */\n @Input() boxValue: number;\n\n @Input() value: number;\n\n @Input() min: number;\n\n @Input() max: number;\n\n @Input() step = 1;\n\n @Input() inputLabel: string;\n\n @Output() valueChange = new EventEmitter<number>();\n\n @Output() inputChange = new EventEmitter<number>();\n\n private inputStream = new Subject<string>();\n\n private inputStreamSub = Subscription.EMPTY;\n\n get displayValue(): number {\n return this.boxValue || this.value;\n }\n\n constructor() {}\n\n public ngOnInit() {\n this.inputStreamSub = this.inputStream\n .pipe(debounceTime(500), distinctUntilChanged())\n .subscribe((val: string) => {\n if (val) {\n const inputValue = coerceNumberProperty(val, 0);\n this.updateValueViaInput(inputValue);\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.inputStreamSub.unsubscribe();\n }\n\n public upBtnClicked(): void {\n this.updateValue(this.value + this.step);\n }\n\n public downBtnClicked(): void {\n this.updateValue(this.value - this.step);\n }\n\n public handleInputChange(val: string): void {\n this.inputStream.next(val);\n }\n\n private updateValue(value: number): void {\n this.valueChange.emit(value);\n }\n\n private updateValueViaInput(value: number): void {\n if (value > this.max || value < this.min) {\n return;\n }\n this.inputChange.emit(value);\n }\n}\n","<div *ngIf=\"showDivider\" class=\"owl-dt-timer-divider\" aria-hidden=\"true\"></div>\n<button\n class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n type=\"button\"\n tabindex=\"-1\"\n [disabled]=\"upBtnDisabled\"\n [attr.aria-label]=\"upBtnAriaLabel\"\n (click)=\"upBtnClicked()\"\n>\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Up\"> -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n version=\"1.1\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 451.847 451.846\"\n style=\"enable-background: new 0 0 451.847 451.846\"\n xml:space=\"preserve\"\n width=\"100%\"\n height=\"100%\"\n >\n <path\n d=\"M248.292,106.406l194.281,194.29c12.365,12.359,12.365,32.391,0,44.744c-12.354,12.354-32.391,12.354-44.744,0\n L225.923,173.529L54.018,345.44c-12.36,12.354-32.395,12.354-44.748,0c-12.359-12.354-12.359-32.391,0-44.75L203.554,106.4\n c6.18-6.174,14.271-9.259,22.369-9.259C234.018,97.141,242.115,100.232,248.292,106.406z\"\n />\n </svg>\n <!-- </editor-fold> -->\n </span>\n</button>\n<label class=\"owl-dt-timer-content\">\n <input\n class=\"owl-dt-timer-input\"\n maxlength=\"2\"\n [value]=\"displayValue | numberFixedLen: 2\"\n (input)=\"handleInputChange(valueInput.value)\"\n #valueInput\n />\n <span class=\"owl-hidden-accessible\">{{ inputLabel }}</span>\n</label>\n<button\n class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n type=\"button\"\n tabindex=\"-1\"\n [disabled]=\"downBtnDisabled\"\n [attr.aria-label]=\"downBtnAriaLabel\"\n (click)=\"downBtnClicked()\"\n>\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Down\"> -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n version=\"1.1\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 451.847 451.846\"\n style=\"enable-background: new 0 0 451.847 451.846\"\n xml:space=\"preserve\"\n width=\"100%\"\n height=\"100%\"\n >\n <path\n d=\"M225.923,354.706c-8.098,0-16.195-3.092-22.369-9.263L9.27,151.157c-12.359-12.359-12.359-32.397,0-44.751\n c12.354-12.354,32.388-12.354,44.748,0l171.905,171.915l171.906-171.909c12.359-12.354,32.391-12.354,44.744,0\n c12.365,12.354,12.365,32.392,0,44.751L248.292,345.449C242.115,351.621,234.018,354.706,225.923,354.706z\"\n />\n </svg>\n <!-- </editor-fold> -->\n </span>\n</button>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n NgZone,\n Optional,\n Output\n} from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\n\n@Component({\n exportAs: 'owlDateTimeTimer',\n selector: 'ofe-owl-date-time-timer',\n templateUrl: './timer.component.html',\n styleUrls: ['./timer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlTimerComponent<T> {\n @HostBinding('attr.tabindex')\n get owlDTTimeTabIndex() {\n return -1;\n }\n\n @HostBinding('class.owl-dt-timer')\n get owlDTTimerClass() {\n return true;\n }\n\n /** The current picker moment */\n private _pickerMoment: T;\n\n @Input()\n get pickerMoment() {\n return this._pickerMoment;\n }\n\n set pickerMoment(value: T) {\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n }\n\n /** The minimum selectable date time. */\n private _minDateTime: T | null;\n\n @Input()\n get minDateTime(): T | null {\n return this._minDateTime;\n }\n\n set minDateTime(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._minDateTime = this.getValidDate(value);\n }\n\n /** The maximum selectable date time. */\n private _maxDateTime: T | null;\n\n @Input()\n get maxDateTime(): T | null {\n return this._maxDateTime;\n }\n\n set maxDateTime(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._maxDateTime = this.getValidDate(value);\n }\n\n private isPM = false; // a flag indicates the current timer moment is in PM or AM\n\n /**\n * Whether to show the second's timer\n */\n @Input()\n showSecondsTimer: boolean;\n\n /**\n * Whether the timer is in hour12 format\n */\n @Input()\n hour12Timer: boolean;\n\n /**\n * Hours to change per step\n */\n @Input()\n stepHour = 1;\n\n /**\n * Minutes to change per step\n */\n @Input()\n stepMinute = 1;\n\n /**\n * Seconds to change per step\n */\n @Input()\n stepSecond = 1;\n\n get hourValue(): number {\n return this.dateTimeAdapter.getHours(this.pickerMoment);\n }\n\n /**\n * The value would be displayed in hourBox.\n * We need this because the value displayed in hourBox it not\n * the same as the hourValue when the timer is in hour12Timer mode.\n * */\n get hourBoxValue(): number {\n let hours = this.hourValue;\n\n if (!this.hour12Timer) {\n return hours;\n } else {\n if (hours === 0) {\n hours = 12;\n this.isPM = false;\n } else if (hours > 0 && hours < 12) {\n this.isPM = false;\n } else if (hours === 12) {\n this.isPM = true;\n } else if (hours > 12 && hours < 24) {\n hours = hours - 12;\n this.isPM = true;\n }\n\n return hours;\n }\n }\n\n get minuteValue(): number {\n return this.dateTimeAdapter.getMinutes(this.pickerMoment);\n }\n\n get secondValue(): number {\n return this.dateTimeAdapter.getSeconds(this.pickerMoment);\n }\n\n get upHourButtonLabel(): string {\n return this.pickerIntl.upHourLabel;\n }\n\n get downHourButtonLabel(): string {\n return this.pickerIntl.downHourLabel;\n }\n\n get upMinuteButtonLabel(): string {\n return this.pickerIntl.upMinuteLabel;\n }\n\n get downMinuteButtonLabel(): string {\n return this.pickerIntl.downMinuteLabel;\n }\n\n get upSecondButtonLabel(): string {\n return this.pickerIntl.upSecondLabel;\n }\n\n get downSecondButtonLabel(): string {\n return this.pickerIntl.downSecondLabel;\n }\n\n get hour12ButtonLabel(): string {\n return this.isPM\n ? this.pickerIntl.hour12PMLabel\n : this.pickerIntl.hour12AMLabel;\n }\n\n @Output()\n selectedChange = new EventEmitter<T>();\n\n constructor(\n private ngZone: NgZone,\n private elmRef: ElementRef,\n private pickerIntl: OwlDateTimeIntl,\n private cdRef: ChangeDetectorRef,\n @Optional() private dateTimeAdapter: DateTimeAdapter<T>\n ) {}\n\n /**\n * Focus to the host element\n * */\n public focus() {\n this.ngZone.runOutsideAngular(() => {\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this.elmRef.nativeElement.focus();\n });\n });\n }\n\n /**\n * Set the hour value via typing into timer box input\n * We need this to handle the hour value when the timer is in hour12 mode\n * */\n public setHourValueViaInput(hours: number): void {\n if (this.hour12Timer && this.isPM && hours >= 1 && hours <= 11) {\n hours = hours + 12;\n } else if (this.hour12Timer && !this.isPM && hours === 12) {\n hours = 0;\n }\n\n this.setHourValue(hours);\n }\n\n public setHourValue(hours: number): void {\n const m = this.dateTimeAdapter.setHours(this.pickerMoment, hours);\n this.selectedChange.emit(m);\n this.cdRef.markForCheck();\n }\n\n public setMinuteValue(minutes: number): void {\n const m = this.dateTimeAdapter.setMinutes(this.pickerMoment, minutes);\n this.selectedChange.emit(m);\n this.cdRef.markForCheck();\n }\n\n public setSecondValue(seconds: number): void {\n const m = this.dateTimeAdapter.setSeconds(this.pickerMoment, seconds);\n this.selectedChange.emit(m);\n this.cdRef.markForCheck();\n }\n\n public setMeridiem(event: any): void {\n this.isPM = !this.isPM;\n\n let hours = this.hourValue;\n if (this.isPM) {\n hours = hours + 12;\n } else {\n hours = hours - 12;\n }\n\n if (hours >= 0 && hours <= 23) {\n this.setHourValue(hours);\n }\n\n this.cdRef.markForCheck();\n event.preventDefault();\n }\n\n /**\n * Check if the up hour button is enabled\n */\n public upHourEnabled(): boolean {\n return (\n !this.maxDateTime ||\n this.compareHours(this.stepHour, this.maxDateTime) < 1\n );\n }\n\n /**\n * Check if the down hour button is enabled\n */\n public downHourEnabled(): boolean {\n return (\n !this.minDateTime ||\n this.compareHours(-this.stepHour, this.minDateTime) > -1\n );\n }\n\n /**\n * Check if the up minute button is enabled\n */\n public upMinuteEnabled(): boolean {\n return (\n !this.maxDateTime ||\n this.compareMinutes(this.stepMinute, this.maxDateTime) < 1\n );\n }\n\n /**\n * Check if the down minute button is enabled\n */\n public downMinuteEnabled(): boolean {\n return (\n !this.minDateTime ||\n this.compareMinutes(-this.stepMinute, this.minDateTime) > -1\n );\n }\n\n /**\n * Check if the up second button is enabled\n */\n public upSecondEnabled(): boolean {\n return (\n !this.maxDateTime ||\n this.compareSeconds(this.stepSecond, this.maxDateTime) < 1\n );\n }\n\n /**\n * Check if the down second button is enabled\n */\n public downSecondEnabled(): boolean {\n return (\n !this.minDateTime ||\n this.compareSeconds(-this.stepSecond, this.minDateTime) > -1\n );\n }\n\n /**\n * PickerMoment's hour value +/- certain amount and compare it to the give date\n * 1 is after the comparedDate\n * -1 is before the comparedDate\n * 0 is equal the comparedDate\n * */\n private compareHours(amount: number, comparedDate: T): number {\n const hours = this.dateTimeAdapter.getHours(this.pickerMoment) + amount;\n const result = this.dateTimeAdapter.setHours(this.pickerMoment, hours);\n return this.dateTimeAdapter.compare(result, comparedDate);\n }\n\n /**\n * PickerMoment's minute value +/- certain amount and compare it to the give date\n * 1 is after the comparedDate\n * -1 is before the comparedDate\n * 0 is equal the comparedDate\n * */\n private compareMinutes(amount: number, comparedDate: T): number {\n const minutes = this.dateTimeAdapter.getMinutes(this.pickerMoment) + amount;\n const result = this.dateTimeAdapter.setMinutes(this.pickerMoment, minutes);\n return this.dateTimeAdapter.compare(result, comparedDate);\n }\n\n /**\n * PickerMoment's second value +/- certain amount and compare it to the give date\n * 1 is after the comparedDate\n * -1 is before the comparedDate\n * 0 is equal the comparedDate\n * */\n private compareSeconds(amount: number, comparedDate: T): number {\n const seconds = this.dateTimeAdapter.getSeconds(this.pickerMoment) + amount;\n const result = this.dateTimeAdapter.setSeconds(this.pickerMoment, seconds);\n return this.dateTimeAdapter.compare(result, comparedDate);\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n}\n","<ofe-owl-date-time-timer-box\n [upBtnAriaLabel]=\"upHourButtonLabel\"\n [downBtnAriaLabel]=\"downHourButtonLabel\"\n [upBtnDisabled]=\"!upHourEnabled()\"\n [downBtnDisabled]=\"!downHourEnabled()\"\n [boxValue]=\"hourBoxValue\"\n [value]=\"hourValue\"\n [min]=\"0\"\n [max]=\"23\"\n [step]=\"stepHour\"\n [inputLabel]=\"'Hour'\"\n (inputChange)=\"setHourValueViaInput($event)\"\n (valueChange)=\"setHourValue($event)\"\n></ofe-owl-date-time-timer-box>\n<ofe-owl-date-time-timer-box\n [showDivider]=\"true\"\n [upBtnAriaLabel]=\"upMinuteButtonLabel\"\n [downBtnAriaLabel]=\"downMinuteButtonLabel\"\n [upBtnDisabled]=\"!upMinuteEnabled()\"\n [downBtnDisabled]=\"!downMinuteEnabled()\"\n [value]=\"minuteValue\"\n [min]=\"0\"\n [max]=\"59\"\n [step]=\"stepMinute\"\n [inputLabel]=\"'Minute'\"\n (inputChange)=\"setMinuteValue($event)\"\n (valueChange)=\"setMinuteValue($event)\"\n></ofe-owl-date-time-timer-box>\n<ofe-owl-date-time-timer-box\n *ngIf=\"showSecondsTimer\"\n [showDivider]=\"true\"\n [upBtnAriaLabel]=\"upSecondButtonLabel\"\n [downBtnAriaLabel]=\"downSecondButtonLabel\"\n [upBtnDisabled]=\"!upSecondEnabled()\"\n [downBtnDisabled]=\"!downSecondEnabled()\"\n [value]=\"secondValue\"\n [min]=\"0\"\n [max]=\"59\"\n [step]=\"stepSecond\"\n [inputLabel]=\"'Second'\"\n (inputChange)=\"setSecondValue($event)\"\n (valueChange)=\"setSecondValue($event)\"\n></ofe-owl-date-time-timer-box>\n\n<div *ngIf=\"hour12Timer\" class=\"owl-dt-timer-hour12\">\n <button\n class=\"owl-dt-control-button owl-dt-timer-hour12-box\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"setMeridiem($event)\"\n >\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n {{ hour12ButtonLabel }}\n </span>\n </button>\n</div>\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n Optional,\n ViewChild\n} from '@angular/core';\nimport { AnimationEvent } from '@angular/animations';\nimport {\n DOWN_ARROW,\n LEFT_ARROW,\n RIGHT_ARROW,\n SPACE,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport { Observable, Subject } from 'rxjs';\n\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OwlCalendarComponent } from './calendar.component';\nimport { OwlDateTime, PickerType } from './date-time.class';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { owlDateTimePickerAnimations } from './date-time-picker.animations';\nimport { OwlTimerComponent } from './timer.component';\n\n@Component({\n exportAs: 'owlDateTimeContainer',\n selector: 'ofe-owl-date-time-container',\n templateUrl: './date-time-picker-container.component.html',\n styleUrls: ['./date-time-picker-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n owlDateTimePickerAnimations.transformPicker,\n owlDateTimePickerAnimations.fadeInPicker\n ]\n})\nexport class OwlDateTimeContainerComponent<T>\n implements AfterContentInit, AfterViewInit {\n @ViewChild(OwlCalendarComponent, { static: false })\n calendar: OwlCalendarComponent<T>;\n\n @ViewChild(OwlTimerComponent, { static: false })\n timer: OwlTimerComponent<T>;\n\n @HostBinding('class.owl-dt-container') get owlDTContainerClass() {\n return true;\n }\n\n @HostBinding('class.owl-dt-popup-container') get owlDTPopupContainerClass() {\n return this.picker.pickerMode === 'popup';\n }\n\n @HostBinding('class.owl-dt-dialog-container')\n get owlDTDialogContainerClass() {\n return this.picker.pickerMode === 'dialog';\n }\n\n @HostBinding('class.owl-dt-inline-container')\n get owlDTInlineContainerClass() {\n return this.picker.pickerMode === 'inline';\n }\n\n @HostBinding('class.owl-dt-container-disabled')\n get owlDTContainerDisabledClass() {\n return this.picker.disabled;\n }\n\n @HostBinding('attr.id') get owlDTContainerId() {\n return this.picker.id;\n }\n\n @HostBinding('@transformPicker') get owlDTContainerAnimation() {\n return this.picker.pickerMode === 'inline' ? '' : 'enter';\n }\n\n @HostListener('@transformPicker.done', ['$event'])\n public handleContainerAnimationDone(event: AnimationEvent): void {\n const toState = event.toState;\n if (toState === 'enter') {\n this.pickerOpened$.next();\n }\n }\n\n public picker: OwlDateTime<T>;\n public activeSelectedIndex = 0; // The current active SelectedIndex in range select mode (0: 'from', 1: 'to')\n\n /**\n * Stream emits when try to hide picker\n * */\n private hidePicker$ = new Subject<any>();\n\n get hidePickerStream(): Observable<any> {\n return this.hidePicker$.asObservable();\n }\n\n /**\n * Stream emits when try to confirm the selected value\n * */\n private confirmSelected$ = new Subject<any>();\n\n get confirmSelectedStream(): Observable<any> {\n return this.confirmSelected$.asObservable();\n }\n\n private pickerOpened$ = new Subject<any>();\n\n get pickerOpenedStream(): Observable<any> {\n return this.pickerOpened$.asObservable();\n }\n\n /**\n * The current picker moment. This determines which time period is shown and which date is\n * highlighted when using keyboard navigation.\n */\n private _clamPickerMoment: T;\n\n get pickerMoment() {\n return this._clamPickerMoment;\n }\n\n set pickerMoment(value: T) {\n if (value) {\n this._clamPickerMoment = this.dateTimeAdapter.clampDate(\n value,\n this.picker.minDateTime,\n this.picker.maxDateTime\n );\n }\n this.cdRef.markForCheck();\n }\n\n get pickerType(): PickerType {\n return this.picker.pickerType;\n }\n\n get cancelLabel(): string {\n return this.pickerIntl.cancelBtnLabel;\n }\n\n get setLabel(): string {\n return this.pickerIntl.setBtnLabel;\n }\n\n /**\n * The range 'from' label\n * */\n get fromLabel(): string {\n return this.pickerIntl.rangeFromLabel;\n }\n\n /**\n * The range 'to' label\n * */\n get toLabel(): string {\n return this.pickerIntl.rangeToLabel;\n }\n\n /**\n * The range 'from' formatted value\n * */\n get fromFormattedValue(): string {\n const value = this.picker.selecteds[0];\n return value\n ? this.dateTimeAdapter.format(value, this.picker.formatString)\n : '';\n }\n\n /**\n * The range 'to' formatted value\n * */\n get toFormattedValue(): string {\n const value = this.picker.selecteds[1];\n return value\n ? this.dateTimeAdapter.format(value, this.picker.formatString)\n : '';\n }\n\n /**\n * Cases in which the control buttons show in the picker\n * 1) picker mode is 'dialog'\n * 2) picker type is NOT 'calendar' and the picker mode is NOT 'inline'\n * */\n get showControlButtons(): boolean {\n return (\n this.picker.pickerMode === 'dialog' ||\n (this.picker.pickerType !== 'calendar' &&\n this.picker.pickerMode !== 'inline')\n );\n }\n\n get containerElm(): HTMLElement {\n return this.elmRef.nativeElement;\n }\n\n constructor(\n private cdRef: ChangeDetectorRef,\n private elmRef: ElementRef,\n private pickerIntl: OwlDateTimeIntl,\n @Optional() private dateTimeAdapter: DateTimeAdapter<T>\n ) {}\n\n public ngAfterContentInit(): void {\n this.initPicker();\n }\n\n public ngAfterViewInit(): void {\n this.focusPicker();\n }\n\n public dateSelected(date: T): void {\n let result;\n\n if (this.picker.isInSingleMode) {\n result = this.dateSelectedInSingleMode(date);\n if (result) {\n this.pickerMoment = result;\n this.picker.select(result);\n } else {\n // we close the picker when result is null and pickerType is calendar.\n if (this.pickerType === 'calendar') {\n this.hidePicker$.next(null);\n }\n }\n return;\n }\n\n if (this.picker.isInRangeMode) {\n result = this.dateSelectedInRangeMode(date);\n if (result) {\n this.pickerMoment = result[this.activeSelectedIndex];\n this.picker.select(result);\n }\n }\n }\n\n public timeSelected(time: T): void {\n this.pickerMoment = this.dateTimeAdapter.clone(time);\n\n if (!this.picker.dateTimeChecker(this.pickerMoment)) {\n return;\n }\n\n if (this.picker.isInSingleMode) {\n this.picker.select(this.pickerMoment);\n return;\n }\n\n if (this.picker.isInRangeMode) {\n const selecteds = [...this.picker.selecteds];\n\n // check if the 'from' is after 'to' or 'to'is before 'from'\n // In this case, we set both the 'from' and 'to' the same value\n if (\n (this.activeSelectedIndex === 0 &&\n selecteds[1] &&\n this.dateTimeAdapter.compare(this.pickerMoment, selecteds[1]) ===\n 1) ||\n (this.activeSelectedIndex === 1 &&\n selecteds[0] &&\n this.dateTimeAdapter.compare(this.pickerMoment, selecteds[0]) === -1)\n ) {\n selecteds[0] = this.pickerMoment;\n selecteds[1] = this.pickerMoment;\n } else {\n selecteds[this.activeSelectedIndex] = this.pickerMoment;\n }\n\n this.picker.select(selecteds);\n }\n }\n\n /**\n * Handle click on cancel button\n */\n public onCancelClicked(event: any): void {\n this.hidePicker$.next(null);\n event.preventDefault();\n return;\n }\n\n /**\n * Handle click on set button\n */\n public onSetClicked(event: any): void {\n if (!this.picker.dateTimeChecker(this.pickerMoment)) {\n this.hidePicker$.next(null);\n event.preventDefault();\n return;\n }\n\n this.confirmSelected$.next(event);\n event.preventDefault();\n return;\n }\n\n /**\n * Handle click on inform radio group\n */\n public handleClickOnInfoGroup(event: any, index: number): void {\n this.setActiveSelectedIndex(index);\n event.preventDefault();\n event.stopPropagation();\n }\n\n /**\n * Handle click on inform radio group\n */\n public handleKeydownOnInfoGroup(event: any, next: any, index: number): void {\n switch (event.keyCode) {\n case DOWN_ARROW:\n case RIGHT_ARROW:\n case UP_ARROW:\n case LEFT_ARROW:\n next.focus();\n this.setActiveSelectedIndex(index === 0 ? 1 : 0);\n event.preventDefault();\n event.stopPropagation();\n break;\n\n case SPACE:\n this.setActiveSelectedIndex(index);\n event.preventDefault();\n event.stopPropagation();\n break;\n\n default:\n return;\n }\n }\n\n /**\n * Set the value of activeSelectedIndex\n */\n private setActiveSelectedIndex(index: number): void {\n if (\n this.picker.selectMode === 'range' &&\n this.activeSelectedIndex !== index\n ) {\n this.activeSelectedIndex = index;\n\n const selected = this.picker.selecteds[this.activeSelectedIndex];\n if (this.picker.selecteds && selected) {\n this.pickerMoment = this.dateTimeAdapter.clone(selected);\n }\n }\n return;\n }\n\n private initPicker(): void {\n this.pickerMoment = this.picker.startAt || this.dateTimeAdapter.now();\n this.activeSelectedIndex = this.picker.selectMode === 'rangeTo' ? 1 : 0;\n }\n\n /**\n * Select calendar date in single mode,\n * it returns null when date is not selected.\n */\n private dateSelectedInSingleMode(date: T): T | null {\n if (this.dateTimeAdapter.isSameDay(date, this.picker.selected)) {\n return null;\n }\n\n return this.updateAndCheckCalendarDate(date);\n }\n\n /**\n * Select dates in range Mode\n */\n private dateSelectedInRangeMode(date: T): T[] | null {\n let from = this.picker.selecteds[0];\n let to = this.picker.selecteds[1];\n\n const result = this.updateAndCheckCalendarDate(date);\n\n if (!result) {\n return null;\n }\n\n // if the given calendar day is after or equal to 'from',\n // set ths given date as 'to'\n // otherwise, set it as 'from' and set 'to' to null\n if (this.picker.selectMode === 'range') {\n if (\n this.picker.selecteds &&\n this.picker.selecteds.length &&\n !to &&\n from &&\n this.dateTimeAdapter.differenceInCalendarDays(result, from) >= 0\n ) {\n to = result;\n this.activeSelectedIndex = 1;\n } else {\n from = result;\n to = null;\n this.activeSelectedIndex = 0;\n }\n } else if (this.picker.selectMode === 'rangeFrom') {\n from = result;\n\n // if the from value is after the to value, set the to value as null\n if (to && this.dateTimeAdapter.compare(from, to) > 0) {\n to = null;\n }\n } else if (this.picker.selectMode === 'rangeTo') {\n to = result;\n\n // if the from value is after the to value, set the from value as null\n if (from && this.dateTimeAdapter.compare(from, to) > 0) {\n from = null;\n }\n }\n\n return [from, to];\n }\n\n /**\n * Update the given calendar date's time and check if it is valid\n * Because the calendar date has 00:00:00 as default time, if the picker type is 'both',\n * we need to update the given calendar date's time before selecting it.\n * if it is valid, return the updated dateTime\n * if it is not valid, return null\n */\n private updateAndCheckCalendarDate(date: T): T {\n let result;\n\n // if the picker is 'both', update the calendar date's time value\n if (this.picker.pickerType === 'both') {\n result = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(date),\n this.dateTimeAdapter.getMonth(date),\n this.dateTimeAdapter.getDate(date),\n this.dateTimeAdapter.getHours(this.pickerMoment),\n this.dateTimeAdapter.getMinutes(this.pickerMoment),\n this.dateTimeAdapter.getSeconds(this.pickerMoment)\n );\n result = this.dateTimeAdapter.clampDate(\n result,\n this.picker.minDateTime,\n this.picker.maxDateTime\n );\n } else {\n result = this.dateTimeAdapter.clone(date);\n }\n\n // check the updated dateTime\n return this.picker.dateTimeChecker(result) ? result : null;\n }\n\n /**\n * Focus to the picker\n * */\n private focusPicker(): void {\n if (this.picker.pickerMode === 'inline') {\n return;\n }\n\n if (this.calendar) {\n this.calendar.focusActiveCell();\n } else if (this.timer) {\n this.timer.focus();\n }\n }\n}\n","<div\n [cdkTrapFocus]=\"picker.pickerMode !== 'inline'\"\n [@fadeInPicker]=\"picker.pickerMode === 'inline' ? '' : 'enter'\"\n class=\"owl-dt-container-inner\"\n>\n <ofe-owl-date-time-calendar\n *ngIf=\"pickerType === 'both' || pickerType === 'calendar'\"\n class=\"owl-dt-container-row\"\n [firstDayOfWeek]=\"picker.firstDayOfWeek\"\n [(pickerMoment)]=\"pickerMoment\"\n [selected]=\"picker.selected\"\n [selecteds]=\"picker.selecteds\"\n [selectMode]=\"picker.selectMode\"\n [minDate]=\"picker.minDateTime\"\n [maxDate]=\"picker.maxDateTime\"\n [dateFilter]=\"picker.dateTimeFilter\"\n [startView]=\"picker.startView\"\n [hideOtherMonths]=\"picker.hideOtherMonths\"\n (yearSelected)=\"picker.selectYear($event)\"\n (monthSelected)=\"picker.selectMonth($event)\"\n (selectedChange)=\"dateSelected($event)\"\n ></ofe-owl-date-time-calendar>\n <ofe-owl-date-time-timer\n *ngIf=\"pickerType === 'both' || pickerType === 'timer'\"\n class=\"owl-dt-container-row\"\n [pickerMoment]=\"pickerMoment\"\n [minDateTime]=\"picker.minDateTime\"\n [maxDateTime]=\"picker.maxDateTime\"\n [showSecondsTimer]=\"picker.showSecondsTimer\"\n [hour12Timer]=\"picker.hour12Timer\"\n [stepHour]=\"picker.stepHour\"\n [stepMinute]=\"picker.stepMinute\"\n [stepSecond]=\"picker.stepSecond\"\n (selectedChange)=\"timeSelected($event)\"\n ></ofe-owl-date-time-timer>\n <div\n *ngIf=\"picker.isInRangeMode\"\n role=\"radiogroup\"\n class=\"owl-dt-container-info owl-dt-container-row\"\n >\n <div\n role=\"radio\"\n [tabindex]=\"activeSelectedIndex === 0 ? 0 : -1\"\n [attr.aria-checked]=\"activeSelectedIndex === 0\"\n class=\"owl-dt-control owl-dt-container-range owl-dt-container-from\"\n [ngClass]=\"{ 'owl-dt-container-info-active': activeSelectedIndex === 0 }\"\n (click)=\"handleClickOnInfoGroup($event, 0)\"\n (keydown)=\"handleKeydownOnInfoGroup($event, to, 0)\"\n #from\n >\n <span\n class=\"owl-dt-control-content owl-dt-container-range-content\"\n tabindex=\"-1\"\n >\n <span class=\"owl-dt-container-info-label\">{{ fromLabel }}:</span>\n <span class=\"owl-dt-container-info-value\">{{\n fromFormattedValue\n }}</span>\n </span>\n </div>\n <div\n role=\"radio\"\n [tabindex]=\"activeSelectedIndex === 1 ? 0 : -1\"\n [attr.aria-checked]=\"activeSelectedIndex === 1\"\n class=\"owl-dt-control owl-dt-container-range owl-dt-container-to\"\n [ngClass]=\"{ 'owl-dt-container-info-active': activeSelectedIndex === 1 }\"\n (click)=\"handleClickOnInfoGroup($event, 1)\"\n (keydown)=\"handleKeydownOnInfoGroup($event, from, 1)\"\n #to\n >\n <span\n class=\"owl-dt-control-content owl-dt-container-range-content\"\n tabindex=\"-1\"\n >\n <span class=\"owl-dt-container-info-label\">{{ toLabel }}:</span>\n <span class=\"owl-dt-container-info-value\">{{ toFormattedValue }}</span>\n </span>\n </div>\n </div>\n\n <div\n *ngIf=\"showControlButtons\"\n class=\"owl-dt-container-buttons owl-dt-container-row\"\n >\n <button\n class=\"owl-dt-control owl-dt-control-button owl-dt-container-control-button\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"onCancelClicked($event)\"\n >\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\n {{ cancelLabel }}\n </span>\n </button>\n <button\n class=\"owl-dt-control owl-dt-control-button owl-dt-container-control-button\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"onSetClicked($event)\"\n >\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\"\n >\n {{ setLabel }}\n </span>\n </button>\n </div>\n</div>\n","/**\n * date-time.class\n */\nimport {\n Component,\n EventEmitter,\n Inject,\n Injectable,\n Input,\n Optional\n} from '@angular/core';\nimport {\n coerceBooleanProperty,\n coerceNumberProperty\n} from '@angular/cdk/coercion';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\n\nlet nextUniqueId = 0;\n\nexport type PickerType = 'both' | 'calendar' | 'timer';\n\nexport type PickerMode = 'popup' | 'dialog' | 'inline';\n\nexport type SelectMode = 'single' | 'range' | 'rangeFrom' | 'rangeTo';\n\n@Injectable()\nexport abstract class OwlDateTime<T> {\n @Input()\n get showSecondsTimer(): boolean {\n return this._showSecondsTimer;\n }\n\n set showSecondsTimer(val: boolean) {\n this._showSecondsTimer = coerceBooleanProperty(val);\n }\n @Input()\n get hour12Timer(): boolean {\n return this._hour12Timer;\n }\n\n set hour12Timer(val: boolean) {\n this._hour12Timer = coerceBooleanProperty(val);\n }\n @Input()\n get stepHour(): number {\n return this._stepHour;\n }\n\n set stepHour(val: number) {\n this._stepHour = coerceNumberProperty(val, 1);\n }\n @Input()\n get stepMinute(): number {\n return this._stepMinute;\n }\n\n set stepMinute(val: number) {\n this._stepMinute = coerceNumberProperty(val, 1);\n }\n @Input()\n get stepSecond(): number {\n return this._stepSecond;\n }\n\n set stepSecond(val: number) {\n this._stepSecond = coerceNumberProperty(val, 1);\n }\n @Input()\n get firstDayOfWeek() {\n return this._firstDayOfWeek;\n }\n\n set firstDayOfWeek(value: number) {\n value = coerceNumberProperty(value, 0);\n if (value > 6 || value < 0) {\n this._firstDayOfWeek = 0;\n } else {\n this._firstDayOfWeek = value;\n }\n }\n @Input()\n get hideOtherMonths(): boolean {\n return this._hideOtherMonths;\n }\n\n set hideOtherMonths(val: boolean) {\n this._hideOtherMonths = coerceBooleanProperty(val);\n }\n get id(): string {\n return this._id;\n }\n\n abstract get selected(): T | null;\n\n abstract get selecteds(): T[] | null;\n\n abstract get dateTimeFilter(): (date: T | null) => boolean;\n\n abstract get maxDateTime(): T | null;\n\n abstract get minDateTime(): T | null;\n\n abstract get selectMode(): SelectMode;\n\n abstract get startAt(): T | null;\n\n abstract get opened(): boolean;\n\n abstract get pickerMode(): PickerMode;\n\n abstract get pickerType(): PickerType;\n\n abstract get isInSingleMode(): boolean;\n\n abstract get isInRangeMode(): boolean;\n\n get formatString(): string {\n return this.pickerType === 'both'\n ? this.dateTimeFormats.fullPickerInput\n : this.pickerType === 'calendar'\n ? this.dateTimeFormats.datePickerInput\n : this.dateTimeFormats.timePickerInput;\n }\n\n get disabled(): boolean {\n return false;\n }\n\n constructor(\n @Optional() protected dateTimeAdapter: DateTimeAdapter<T>,\n @Optional()\n @Inject(OWL_DATE_TIME_FORMATS)\n protected dateTimeFormats: OwlDateTimeFormats\n ) {\n if (!this.dateTimeAdapter) {\n throw Error(\n `OwlDateTimePicker: No provider found for DateTimeAdapter. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n\n if (!this.dateTimeFormats) {\n throw Error(\n `OwlDateTimePicker: No provider found for OWL_DATE_TIME_FORMATS. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n\n this._id = `owl-dt-picker-${nextUniqueId++}`;\n }\n /**\n * Whether to show the second's timer\n */\n private _showSecondsTimer = false;\n\n /**\n * Whether the timer is in hour12 format\n */\n private _hour12Timer = false;\n\n /**\n * The view that the calendar should start in.\n */\n @Input()\n startView: 'month' | 'year' | 'multi-years' = 'month';\n\n /**\n * Hours to change per step\n */\n private _stepHour = 1;\n\n /**\n * Minutes to change per step\n */\n private _stepMinute = 1;\n\n /**\n * Seconds to change per step\n */\n private _stepSecond = 1;\n\n /**\n * Set the first day of week\n */\n private _firstDayOfWeek = 0;\n\n /**\n * Whether to hide dates in other months at the start or end of the current month.\n */\n private _hideOtherMonths = false;\n\n private _id: string;\n\n abstract yearSelected: EventEmitter<T>;\n\n abstract monthSelected: EventEmitter<T>;\n\n abstract select(date: T | T[]): void;\n\n abstract selectYear(normalizedYear: T): void;\n\n abstract selectMonth(normalizedMonth: T): void;\n\n /**\n * Date Time Checker to check if the give dateTime is selectable\n */\n public dateTimeChecker = (dateTime: T) => {\n return (\n !!dateTime &&\n (!this.dateTimeFilter || this.dateTimeFilter(dateTime)) &&\n (!this.minDateTime ||\n this.dateTimeAdapter.compare(dateTime, this.minDateTime) >= 0) &&\n (!this.maxDateTime ||\n this.dateTimeAdapter.compare(dateTime, this.maxDateTime) <= 0)\n );\n };\n\n protected getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n}\n","/**\n * dialog-config.class\n */\nimport { ViewContainerRef } from '@angular/core';\nimport { NoopScrollStrategy, ScrollStrategy } from '@angular/cdk/overlay';\n\nlet uniqueId = 0;\n\n/** Possible overrides for a dialog's position. */\nexport interface DialogPosition {\n /** Override for the dialog's top position. */\n top?: string;\n\n /** Override for the dialog's bottom position. */\n bottom?: string;\n\n /** Override for the dialog's left position. */\n left?: string;\n\n /** Override for the dialog's right position. */\n right?: string;\n}\n\nexport class OwlDialogConfig {\n /**\n * ID of the element that describes the dialog.\n */\n public ariaDescribedBy?: string | null = null;\n\n /**\n * Whether to focus the dialog when the dialog is opened\n */\n public autoFocus? = true;\n\n /** Whether the dialog has a backdrop. */\n public hasBackdrop? = true;\n\n /**\n * Custom style for the backdrop\n * */\n public backdropStyle?: any;\n\n /** Data being injected into the child component. */\n public data?: any = null;\n\n /** Whether the user can use escape or clicking outside to close a modal. */\n public disableClose? = false;\n\n /**\n * ID for the modal. If omitted, a unique one will be generated.\n */\n public id?: string;\n\n /**\n * The ARIA role of the dialog element.\n */\n public role?: 'dialog' | 'alertdialog' = 'dialog';\n\n /**\n * Custom class for the pane\n * */\n public paneClass?: string | string[] = '';\n\n /**\n * Mouse Event\n * */\n public event?: MouseEvent = null;\n\n /**\n * Custom class for the backdrop\n * */\n public backdropClass?: string | string[] = '';\n\n /**\n * Whether the dialog should close when the user goes backwards/forwards in history.\n * */\n public closeOnNavigation = true;\n\n /** Width of the dialog. */\n public width = '';\n\n /** Height of the dialog. */\n public height = '';\n\n /**\n * The min-width of the overlay panel.\n * If a number is provided, pixel units are assumed.\n * */\n public minWidth?: number | string;\n\n /**\n * The min-height of the overlay panel.\n * If a number is provided, pixel units are assumed.\n * */\n public minHeight?: number | string;\n\n /**\n * The max-width of the overlay panel.\n * If a number is provided, pixel units are assumed.\n * */\n public maxWidth?: number | string = '85vw';\n\n /**\n * The max-height of the overlay panel.\n * If a number is provided, pixel units are assumed.\n * */\n public maxHeight?: number | string;\n\n /** Position overrides. */\n public position?: DialogPosition;\n\n /**\n * The scroll strategy when the dialog is open\n * Learn more this from https://material.angular.io/cdk/overlay/overview#scroll-strategies\n * */\n public scrollStrategy?: ScrollStrategy = new NoopScrollStrategy();\n\n public viewContainerRef?: ViewContainerRef;\n\n constructor() {\n this.id = `owl-dialog-${uniqueId++}`;\n }\n}\n","/**\n * dialog-ref.class\n */\nimport { AnimationEvent } from '@angular/animations';\nimport { Location } from '@angular/common';\nimport { GlobalPositionStrategy, OverlayRef } from '@angular/cdk/overlay';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { OwlDialogContainerComponent } from './dialog-container.component';\nimport { DialogPosition } from './dialog-config.class';\nimport {\n Observable,\n Subject,\n Subscription,\n SubscriptionLike as ISubscription\n} from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\nexport class OwlDialogRef<T> {\n private result: any;\n\n private _beforeClose$ = new Subject<any>();\n\n private _afterOpen$ = new Subject<any>();\n\n private _afterClosed$ = new Subject<any>();\n\n /** Subscription to changes in the user's location. */\n private locationChanged: ISubscription = Subscription.EMPTY;\n\n /**\n * The instance of component opened into modal\n * */\n public componentInstance: T;\n\n /** Whether the user is allowed to close the dialog. */\n public disableClose = this.container.config.disableClose;\n\n constructor(\n private overlayRef: OverlayRef,\n private container: OwlDialogContainerComponent,\n public readonly id: string,\n location?: Location\n ) {\n this.container.animationStateChanged\n .pipe(\n filter(\n (event: AnimationEvent) =>\n event.phaseName === 'done' && event.toState === 'enter'\n ),\n take(1)\n )\n .subscribe(() => {\n this._afterOpen$.next();\n this._afterOpen$.complete();\n });\n\n this.container.animationStateChanged\n .pipe(\n filter(\n (event: AnimationEvent) =>\n event.phaseName === 'done' && event.toState === 'exit'\n ),\n take(1)\n )\n .subscribe(() => {\n this.overlayRef.dispose();\n this.locationChanged.unsubscribe();\n this._afterClosed$.next(this.result);\n this._afterClosed$.complete();\n this.componentInstance = null;\n });\n\n this.overlayRef\n .keydownEvents()\n .pipe(filter((event) => event.keyCode === ESCAPE && !this.disableClose))\n .subscribe(() => this.close());\n\n if (location) {\n this.locationChanged = location.subscribe(() => {\n if (this.container.config.closeOnNavigation) {\n this.close();\n }\n });\n }\n }\n\n public close(dialogResult?: any) {\n this.result = dialogResult;\n\n this.container.animationStateChanged\n .pipe(\n filter((event: AnimationEvent) => event.phaseName === 'start'),\n take(1)\n )\n .subscribe(() => {\n this._beforeClose$.next(dialogResult);\n this._beforeClose$.complete();\n this.overlayRef.detachBackdrop();\n });\n\n this.container.startExitAnimation();\n }\n\n /**\n * Gets an observable that emits when the overlay's backdrop has been clicked.\n */\n public backdropClick(): Observable<any> {\n return this.overlayRef.backdropClick();\n }\n\n /**\n * Gets an observable that emits when keydown events are targeted on the overlay.\n */\n public keydownEvents(): Observable<KeyboardEvent> {\n return this.overlayRef.keydownEvents();\n }\n\n /**\n * Updates the dialog's position.\n * @param position New dialog position.\n */\n public updatePosition(position?: DialogPosition): this {\n const strategy = this.getPositionStrategy();\n\n if (position && (position.left || position.right)) {\n position.left\n ? strategy.left(position.left)\n : strategy.right(position.right);\n } else {\n strategy.centerHorizontally();\n }\n\n if (position && (position.top || position.bottom)) {\n position.top\n ? strategy.top(position.top)\n : strategy.bottom(position.bottom);\n } else {\n strategy.centerVertically();\n }\n\n this.overlayRef.updatePosition();\n\n return this;\n }\n\n /**\n * Updates the dialog's width and height.\n * @param width New width of the dialog.\n * @param height New height of the dialog.\n */\n updateSize(width: string = 'auto', height: string = 'auto'): this {\n this.getPositionStrategy().width(width).height(height);\n this.overlayRef.updatePosition();\n return this;\n }\n\n public isAnimating(): boolean {\n return this.container.isAnimating;\n }\n\n public afterOpen(): Observable<any> {\n return this._afterOpen$.asObservable();\n }\n\n public beforeClose(): Observable<any> {\n return this._beforeClose$.asObservable();\n }\n\n public afterClosed(): Observable<any> {\n return this._afterClosed$.asObservable();\n }\n\n /** Fetches the position strategy object from the overlay ref. */\n private getPositionStrategy(): GlobalPositionStrategy {\n return this.overlayRef.getConfig()\n .positionStrategy as GlobalPositionStrategy;\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Optional,\n ViewChild\n} from '@angular/core';\nimport {\n animate,\n animateChild,\n AnimationEvent,\n keyframes,\n style,\n transition,\n trigger\n} from '@angular/animations';\nimport { DOCUMENT } from '@angular/common';\nimport { FocusTrap, FocusTrapFactory } from '@angular/cdk/a11y';\nimport {\n BasePortalOutlet,\n CdkPortalOutlet,\n ComponentPortal,\n TemplatePortal\n} from '@angular/cdk/portal';\nimport { OwlDialogConfig } from './dialog-config.class';\n\nconst zoomFadeIn = {\n opacity: 0,\n transform: 'translateX({{ x }}) translateY({{ y }}) scale({{scale}})'\n};\nconst zoomFadeInFrom = {\n opacity: 0,\n transform: 'translateX({{ x }}) translateY({{ y }}) scale({{scale}})',\n transformOrigin: '{{ ox }} {{ oy }}'\n};\n\n@Component({\n selector: 'ofe-owl-dialog-container',\n templateUrl: './dialog-container.component.html',\n animations: [\n trigger('slideModal', [\n transition(\n 'void => enter',\n [\n style(zoomFadeInFrom),\n animate('300ms cubic-bezier(0.35, 0, 0.25, 1)', style('*')),\n animate(\n '150ms',\n keyframes([\n style({ transform: 'scale(1)', offset: 0 }),\n style({ transform: 'scale(1.05)', offset: 0.3 }),\n style({ transform: 'scale(.95)', offset: 0.8 }),\n style({ transform: 'scale(1)', offset: 1.0 })\n ])\n ),\n animateChild()\n ],\n {\n params: {\n x: '0px',\n y: '0px',\n ox: '50%',\n oy: '50%',\n scale: 1\n }\n }\n ),\n transition(\n 'enter => exit',\n [animateChild(), animate(200, style(zoomFadeIn))],\n { params: { x: '0px', y: '0px', ox: '50%', oy: '50%' } }\n )\n ])\n ]\n})\nexport class OwlDialogContainerComponent extends BasePortalOutlet {\n @HostBinding('attr.tabindex') get owlDialogContainerTabIndex() {\n return -1;\n }\n\n @HostBinding('class.owl-dialog-container')\n get owlDialogContainerClass() {\n return true;\n }\n\n @HostBinding('attr.id')\n get owlDialogContainerId() {\n return this._config.id;\n }\n\n @HostBinding('attr.role')\n get owlDialogContainerRole() {\n return this._config.role || null;\n }\n\n @HostBinding('attr.aria-labelledby')\n get owlDialogContainerAriaLabelledby() {\n return this.ariaLabelledBy;\n }\n\n @HostBinding('attr.aria-describedby')\n get owlDialogContainerAriaDescribedby() {\n return this._config.ariaDescribedBy || null;\n }\n\n @HostBinding('@slideModal')\n get owlDialogContainerAnimation() {\n return { value: this.state, params: this.params };\n }\n\n @HostListener('@slideModal.start', ['$event'])\n public onAnimationStart(event: AnimationEvent): void {\n this.isAnimating = true;\n this.animationStateChanged.emit(event);\n }\n\n @HostListener('@slideModal.done', ['$event'])\n public onAnimationDone(event: AnimationEvent): void {\n if (event.toState === 'enter') {\n this.trapFocus();\n } else if (event.toState === 'exit') {\n this.restoreFocus();\n }\n\n this.animationStateChanged.emit(event);\n this.isAnimating = false;\n }\n @ViewChild(CdkPortalOutlet, { static: true })\n portalOutlet: CdkPortalOutlet;\n\n /** The class that traps and manages focus within the dialog. */\n private focusTrap: FocusTrap;\n\n /** ID of the element that should be considered as the dialog's label. */\n public ariaLabelledBy: string | null = null;\n\n /** Emits when an animation state changes. */\n public animationStateChanged = new EventEmitter<AnimationEvent>();\n\n public isAnimating = false;\n\n private _config: OwlDialogConfig;\n get config(): OwlDialogConfig {\n return this._config;\n }\n\n private state: 'void' | 'enter' | 'exit' = 'enter';\n\n // for animation purpose\n private params: any = {\n x: '0px',\n y: '0px',\n ox: '50%',\n oy: '50%',\n scale: 0\n };\n\n // A variable to hold the focused element before the dialog was open.\n // This would help us to refocus back to element when the dialog was closed.\n private elementFocusedBeforeDialogWasOpened: HTMLElement | null = null;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private elementRef: ElementRef,\n private focusTrapFactory: FocusTrapFactory,\n @Optional()\n @Inject(DOCUMENT)\n private document: any\n ) {\n super();\n }\n\n /**\n * Attach a ComponentPortal as content to this dialog container.\n */\n public attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n if (this.portalOutlet.hasAttached()) {\n throw Error(\n 'Attempting to attach dialog content after content is already attached'\n );\n }\n\n this.savePreviouslyFocusedElement();\n return this.portalOutlet.attachComponentPortal(portal);\n }\n\n public attachTemplatePortal<C>(\n portal: TemplatePortal<C>\n ): EmbeddedViewRef<C> {\n throw new Error('Method not implemented.');\n }\n\n public setConfig(config: OwlDialogConfig): void {\n this._config = config;\n\n if (config.event) {\n this.calculateZoomOrigin(event);\n }\n }\n\n public startExitAnimation() {\n this.state = 'exit';\n this.changeDetector.markForCheck();\n }\n\n /**\n * Calculate origin used in the `zoomFadeInFrom()`\n * for animation purpose\n */\n private calculateZoomOrigin(event: any): void {\n if (!event) {\n return;\n }\n\n const clientX = event.clientX;\n const clientY = event.clientY;\n\n const wh = window.innerWidth / 2;\n const hh = window.innerHeight / 2;\n const x = clientX - wh;\n const y = clientY - hh;\n const ox = clientX / window.innerWidth;\n const oy = clientY / window.innerHeight;\n\n this.params.x = `${x}px`;\n this.params.y = `${y}px`;\n this.params.ox = `${ox * 100}%`;\n this.params.oy = `${oy * 100}%`;\n this.params.scale = 0;\n\n return;\n }\n\n /**\n * Save the focused element before dialog was open\n */\n private savePreviouslyFocusedElement(): void {\n if (this.document) {\n this.elementFocusedBeforeDialogWasOpened = this.document\n .activeElement as HTMLElement;\n\n Promise.resolve().then(() => this.elementRef.nativeElement.focus());\n }\n }\n\n private trapFocus(): void {\n if (!this.focusTrap) {\n this.focusTrap = this.focusTrapFactory.create(\n this.elementRef.nativeElement\n );\n }\n\n if (this._config.autoFocus) {\n this.focusTrap.focusInitialElementWhenReady();\n }\n }\n\n private restoreFocus(): void {\n const toFocus = this.elementFocusedBeforeDialogWasOpened;\n\n // We need the extra check, because IE can set the `activeElement` to null in some cases.\n if (toFocus && typeof toFocus.focus === 'function') {\n toFocus.focus();\n }\n\n if (this.focusTrap) {\n this.focusTrap.destroy();\n }\n }\n}\n","<ng-template cdkPortalOutlet></ng-template>\n","/**\n * object.utils\n */\n\n/**\n * Extends an object with the *enumerable* and *own* properties of one or more source objects,\n * similar to Object.assign.\n *\n * @param dest The object which will have properties copied to it.\n * @param sources The source objects from which properties will be copied.\n */\nexport function extendObject(dest: any, ...sources: any[]): any {\n if (dest == null) {\n throw TypeError('Cannot convert undefined or null to object');\n }\n\n for (const source of sources) {\n if (source != null) {\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n dest[key] = source[key];\n }\n }\n }\n }\n\n return dest;\n}\n","/**\n * index\n */\n\nexport * from './object.utils';\n","/**\n * dialog.service\n */\n\nimport {\n ComponentRef,\n Inject,\n Injectable,\n InjectionToken,\n Injector,\n Optional,\n SkipSelf,\n TemplateRef\n} from '@angular/core';\nimport { Location } from '@angular/common';\nimport { OwlDialogConfig } from './dialog-config.class';\nimport { OwlDialogRef } from './dialog-ref.class';\nimport { OwlDialogContainerComponent } from './dialog-container.component';\nimport { extendObject } from '../utils';\nimport { defer, Observable, Subject } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport {\n Overlay,\n OverlayConfig,\n OverlayContainer,\n OverlayRef,\n ScrollStrategy\n} from '@angular/cdk/overlay';\nimport {\n ComponentPortal,\n ComponentType,\n PortalInjector\n} from '@angular/cdk/portal';\n\nexport const OWL_DIALOG_DATA = new InjectionToken<any>('OwlDialogData');\n\n/**\n * Injection token that determines the scroll handling while the dialog is open.\n * */\nexport const OWL_DIALOG_SCROLL_STRATEGY = new InjectionToken<\n () => ScrollStrategy\n>('owl-dialog-scroll-strategy');\n\nexport function OWL_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(\n overlay: Overlay\n): () => ScrollStrategy {\n const fn = () => overlay.scrollStrategies.block();\n return fn;\n}\n\n/** @docs-private */\nexport const OWL_DIALOG_SCROLL_STRATEGY_PROVIDER = {\n provide: OWL_DIALOG_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: OWL_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\n\n/** I\n * njection token that can be used to specify default dialog options.\n * */\nexport const OWL_DIALOG_DEFAULT_OPTIONS = new InjectionToken<OwlDialogConfig>(\n 'owl-dialog-default-options'\n);\n\n@Injectable()\nexport class OwlDialogService {\n private ariaHiddenElements = new Map<Element, string | null>();\n\n private _openDialogsAtThisLevel: OwlDialogRef<any>[] = [];\n private _afterOpenAtThisLevel = new Subject<OwlDialogRef<any>>();\n private _afterAllClosedAtThisLevel = new Subject<void>();\n\n /** Keeps track of the currently-open dialogs. */\n get openDialogs(): OwlDialogRef<any>[] {\n return this.parentDialog\n ? this.parentDialog.openDialogs\n : this._openDialogsAtThisLevel;\n }\n\n /** Stream that emits when a dialog has been opened. */\n get afterOpen(): Subject<OwlDialogRef<any>> {\n return this.parentDialog\n ? this.parentDialog.afterOpen\n : this._afterOpenAtThisLevel;\n }\n\n get _afterAllClosed(): any {\n const parent = this.parentDialog;\n return parent ? parent._afterAllClosed : this._afterAllClosedAtThisLevel;\n }\n\n /**\n * Stream that emits when all open dialog have finished closing.\n * Will emit on subscribe if there are no open dialogs to begin with.\n */\n\n afterAllClosed: Observable<{}> = defer(() =>\n this._openDialogsAtThisLevel.length\n ? this._afterAllClosed\n : this._afterAllClosed.pipe(startWith(undefined))\n );\n\n private scrollStrategy: () => ScrollStrategy;\n\n constructor(\n private overlay: Overlay,\n private injector: Injector,\n @Optional() private location: Location,\n @Inject(OWL_DIALOG_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional()\n @Inject(OWL_DIALOG_DEFAULT_OPTIONS)\n private defaultOptions: OwlDialogConfig,\n @Optional()\n @SkipSelf()\n private parentDialog: OwlDialogService,\n private overlayContainer: OverlayContainer\n ) {\n this.scrollStrategy = scrollStrategy;\n if (!parentDialog && location) {\n location.subscribe(() => this.closeAll());\n }\n }\n\n public open<T>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: OwlDialogConfig\n ): OwlDialogRef<any> {\n config = applyConfigDefaults(config, this.defaultOptions);\n\n if (config.id && this.getDialogById(config.id)) {\n throw Error(\n `Dialog with id \"${config.id}\" exists already. The dialog id must be unique.`\n );\n }\n\n const overlayRef = this.createOverlay(config);\n const dialogContainer = this.attachDialogContainer(overlayRef, config);\n const dialogRef = this.attachDialogContent<T>(\n componentOrTemplateRef,\n dialogContainer,\n overlayRef,\n config\n );\n\n if (!this.openDialogs.length) {\n this.hideNonDialogContentFromAssistiveTechnology();\n }\n\n this.openDialogs.push(dialogRef);\n dialogRef.afterClosed().subscribe(() => this.removeOpenDialog(dialogRef));\n this.afterOpen.next(dialogRef);\n return dialogRef;\n }\n\n /**\n * Closes all of the currently-open dialogs.\n */\n public closeAll(): void {\n let i = this.openDialogs.length;\n\n while (i--) {\n this.openDialogs[i].close();\n }\n }\n\n /**\n * Finds an open dialog by its id.\n * @param id ID to use when looking up the dialog.\n */\n public getDialogById(id: string): OwlDialogRef<any> | undefined {\n return this.openDialogs.find((dialog) => dialog.id === id);\n }\n\n private attachDialogContent<T>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n dialogContainer: OwlDialogContainerComponent,\n overlayRef: OverlayRef,\n config: OwlDialogConfig\n ) {\n const dialogRef = new OwlDialogRef<T>(\n overlayRef,\n dialogContainer,\n config.id,\n this.location\n );\n\n if (config.hasBackdrop) {\n overlayRef.backdropClick().subscribe(() => {\n if (!dialogRef.disableClose) {\n dialogRef.close();\n }\n });\n }\n\n if (componentOrTemplateRef instanceof TemplateRef) {\n } else {\n const injector = this.createInjector<T>(\n config,\n dialogRef,\n dialogContainer\n );\n const contentRef = dialogContainer.attachComponentPortal(\n new ComponentPortal(componentOrTemplateRef, undefined, injector)\n );\n dialogRef.componentInstance = contentRef.instance;\n }\n\n dialogRef\n .updateSize(config.width, config.height)\n .updatePosition(config.position);\n\n return dialogRef;\n }\n\n private createInjector<T>(\n config: OwlDialogConfig,\n dialogRef: OwlDialogRef<T>,\n dialogContainer: OwlDialogContainerComponent\n ) {\n const userInjector =\n config && config.viewContainerRef && config.viewContainerRef.injector;\n const injectionTokens = new WeakMap();\n\n injectionTokens.set(OwlDialogRef, dialogRef);\n injectionTokens.set(OwlDialogContainerComponent, dialogContainer);\n injectionTokens.set(OWL_DIALOG_DATA, config.data);\n\n return new PortalInjector(userInjector || this.injector, injectionTokens);\n }\n\n private createOverlay(config: OwlDialogConfig): OverlayRef {\n const overlayConfig = this.getOverlayConfig(config);\n return this.overlay.create(overlayConfig);\n }\n\n private attachDialogContainer(\n overlayRef: OverlayRef,\n config: OwlDialogConfig\n ): OwlDialogContainerComponent {\n const containerPortal = new ComponentPortal(\n OwlDialogContainerComponent,\n config.viewContainerRef\n );\n const containerRef: ComponentRef<OwlDialogContainerComponent> = overlayRef.attach(\n containerPortal\n );\n containerRef.instance.setConfig(config);\n\n return containerRef.instance;\n }\n\n private getOverlayConfig(dialogConfig: OwlDialogConfig): OverlayConfig {\n const state = new OverlayConfig({\n positionStrategy: this.overlay.position().global(),\n scrollStrategy: dialogConfig.scrollStrategy || this.scrollStrategy(),\n panelClass: dialogConfig.paneClass,\n hasBackdrop: dialogConfig.hasBackdrop,\n minWidth: dialogConfig.minWidth,\n minHeight: dialogConfig.minHeight,\n maxWidth: dialogConfig.maxWidth,\n maxHeight: dialogConfig.maxHeight\n });\n\n if (dialogConfig.backdropClass) {\n state.backdropClass = dialogConfig.backdropClass;\n }\n\n return state;\n }\n\n private removeOpenDialog(dialogRef: OwlDialogRef<any>): void {\n const index = this._openDialogsAtThisLevel.indexOf(dialogRef);\n\n if (index > -1) {\n this.openDialogs.splice(index, 1);\n // If all the dialogs were closed, remove/restore the `aria-hidden`\n // to a the siblings and emit to the `afterAllClosed` stream.\n if (!this.openDialogs.length) {\n this.ariaHiddenElements.forEach((previousValue, element) => {\n if (previousValue) {\n element.setAttribute('aria-hidden', previousValue);\n } else {\n element.removeAttribute('aria-hidden');\n }\n });\n\n this.ariaHiddenElements.clear();\n this._afterAllClosed.next();\n }\n }\n }\n\n /**\n * Hides all of the content that isn't an overlay from assistive technology.\n */\n private hideNonDialogContentFromAssistiveTechnology() {\n const overlayContainer = this.overlayContainer.getContainerElement();\n\n // Ensure that the overlay container is attached to the DOM.\n if (overlayContainer.parentElement) {\n const siblings = overlayContainer.parentElement.children;\n\n for (let i = siblings.length - 1; i > -1; i--) {\n const sibling = siblings[i];\n\n if (\n sibling !== overlayContainer &&\n sibling.nodeName !== 'SCRIPT' &&\n sibling.nodeName !== 'STYLE' &&\n !sibling.hasAttribute('aria-live')\n ) {\n this.ariaHiddenElements.set(\n sibling,\n sibling.getAttribute('aria-hidden')\n );\n sibling.setAttribute('aria-hidden', 'true');\n }\n }\n }\n }\n}\n\n/**\n * Applies default options to the dialog config.\n * @param config Config to be modified.\n * @param defaultOptions Default config setting\n * @returns The new configuration object.\n */\nfunction applyConfigDefaults(\n config?: OwlDialogConfig,\n defaultOptions?: OwlDialogConfig\n): OwlDialogConfig {\n return extendObject(new OwlDialogConfig(), config, defaultOptions);\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n EventEmitter,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output,\n ViewContainerRef\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n BlockScrollStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n PositionStrategy,\n ScrollStrategy\n} from '@angular/cdk/overlay';\nimport { ESCAPE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { merge, Subscription } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\nimport { OwlDateTimeInputDirective } from './date-time-picker-input.directive';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport {\n OwlDateTime,\n PickerMode,\n PickerType,\n SelectMode\n} from './date-time.class';\nimport { OwlDialogRef } from '../dialog/dialog-ref.class';\nimport { OwlDialogService } from '../dialog/dialog.service';\n\n/** Injection token that determines the scroll handling while the dtPicker is open. */\nexport const OWL_DTPICKER_SCROLL_STRATEGY = new InjectionToken<\n () => ScrollStrategy\n>('owl-dtpicker-scroll-strategy');\n\n/** @docs-private */\nexport function OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY(\n overlay: Overlay\n): () => BlockScrollStrategy {\n const fn = () => overlay.scrollStrategies.block();\n return fn;\n}\n\n/** @docs-private */\nexport const OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER = {\n provide: OWL_DTPICKER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\n\n@Component({\n selector: 'ofe-owl-date-time',\n exportAs: 'owlDateTime',\n templateUrl: './date-time-picker.component.html',\n styleUrls: ['./date-time-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlDateTimeComponent<T>\n extends OwlDateTime<T>\n implements OnDestroy {\n /** Custom class for the picker backdrop. */\n @Input()\n public backdropClass: string | string[] = [];\n\n /** Custom class for the picker overlay pane. */\n @Input()\n public panelClass: string | string[] = [];\n\n /** The date to open the calendar to initially. */\n private _startAt: T | null;\n\n @Input()\n get startAt(): T | null {\n // If an explicit startAt is set we start there, otherwise we start at whatever the currently\n // selected value is.\n if (this._startAt) {\n return this._startAt;\n }\n\n if (this._dtInput) {\n if (this._dtInput.selectMode === 'single') {\n return this._dtInput.value || null;\n } else if (\n this._dtInput.selectMode === 'range' ||\n this._dtInput.selectMode === 'rangeFrom'\n ) {\n return this._dtInput.values[0] || null;\n } else if (this._dtInput.selectMode === 'rangeTo') {\n return this._dtInput.values[1] || null;\n }\n } else {\n return null;\n }\n }\n\n set startAt(date: T | null) {\n this._startAt = this.getValidDate(this.dateTimeAdapter.deserialize(date));\n }\n\n /**\n * Set the type of the dateTime picker\n * 'both' -- show both calendar and timer\n * 'calendar' -- show only calendar\n * 'timer' -- show only timer\n */\n private _pickerType: PickerType = 'both';\n @Input()\n get pickerType(): PickerType {\n return this._pickerType;\n }\n\n set pickerType(val: PickerType) {\n if (val !== this._pickerType) {\n this._pickerType = val;\n if (this._dtInput) {\n this._dtInput.formatNativeInputValue();\n }\n }\n }\n\n /**\n * Whether the picker open as a dialog\n */\n _pickerMode: PickerMode = 'popup';\n @Input()\n get pickerMode() {\n return this._pickerMode;\n }\n\n set pickerMode(mode: PickerMode) {\n if (mode === 'popup') {\n this._pickerMode = mode;\n } else {\n this._pickerMode = 'dialog';\n }\n }\n\n /** Whether the date time picker should be disabled. */\n private _disabled: boolean;\n @Input()\n get disabled(): boolean {\n return this._disabled === undefined && this._dtInput\n ? this._dtInput.disabled\n : !!this._disabled;\n }\n\n set disabled(value: boolean) {\n value = coerceBooleanProperty(value);\n if (value !== this._disabled) {\n this._disabled = value;\n this.disabledChange.next(value);\n }\n }\n\n /** Whether the calendar is open. */\n private _opened = false;\n @Input()\n get opened(): boolean {\n return this._opened;\n }\n\n set opened(val: boolean) {\n val ? this.open() : this.close();\n }\n\n /**\n * The scroll strategy when the picker is open\n * Learn more this from https://material.angular.io/cdk/overlay/overview#scroll-strategies\n * */\n @Input()\n public scrollStrategy: ScrollStrategy;\n\n /**\n * Callback when the picker is closed\n * */\n @Output()\n afterPickerClosed = new EventEmitter<any>();\n\n /**\n * Callback when the picker is open\n * */\n @Output()\n afterPickerOpen = new EventEmitter<any>();\n\n /**\n * Emits selected year in multi-year view\n * This doesn't imply a change on the selected date.\n * */\n @Output()\n yearSelected = new EventEmitter<T>();\n\n /**\n * Emits selected month in year view\n * This doesn't imply a change on the selected date.\n * */\n @Output()\n monthSelected = new EventEmitter<T>();\n\n /**\n * Emit when the selected value has been confirmed\n * */\n public confirmSelectedChange = new EventEmitter<T[] | T>();\n\n /**\n * Emits when the date time picker is disabled.\n * */\n public disabledChange = new EventEmitter<boolean>();\n\n private pickerContainerPortal: ComponentPortal<\n OwlDateTimeContainerComponent<T>\n >;\n private pickerContainer: OwlDateTimeContainerComponent<T>;\n private popupRef: OverlayRef;\n private dialogRef: OwlDialogRef<OwlDateTimeContainerComponent<T>>;\n private dtInputSub = Subscription.EMPTY;\n private hidePickerStreamSub = Subscription.EMPTY;\n private confirmSelectedStreamSub = Subscription.EMPTY;\n private pickerOpenedStreamSub = Subscription.EMPTY;\n\n /** The element that was focused before the date time picker was opened. */\n private focusedElementBeforeOpen: HTMLElement | null = null;\n\n private _dtInput: OwlDateTimeInputDirective<T>;\n get dtInput() {\n return this._dtInput;\n }\n\n private _selected: T | null;\n get selected() {\n return this._selected;\n }\n\n set selected(value: T | null) {\n this._selected = value;\n this.changeDetector.markForCheck();\n }\n\n private _selecteds: T[] = [];\n get selecteds() {\n return this._selecteds;\n }\n\n set selecteds(values: T[]) {\n this._selecteds = values;\n this.changeDetector.markForCheck();\n }\n\n /** The minimum selectable date. */\n get minDateTime(): T | null {\n return this._dtInput && this._dtInput.min;\n }\n\n /** The maximum selectable date. */\n get maxDateTime(): T | null {\n return this._dtInput && this._dtInput.max;\n }\n\n get dateTimeFilter(): (date: T | null) => boolean {\n return this._dtInput && this._dtInput.dateTimeFilter;\n }\n\n get selectMode(): SelectMode {\n return this._dtInput.selectMode;\n }\n\n get isInSingleMode(): boolean {\n return this._dtInput.isInSingleMode;\n }\n\n get isInRangeMode(): boolean {\n return this._dtInput.isInRangeMode;\n }\n\n private defaultScrollStrategy: () => ScrollStrategy;\n\n constructor(\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private dialogService: OwlDialogService,\n private ngZone: NgZone,\n protected changeDetector: ChangeDetectorRef,\n @Optional() protected dateTimeAdapter: DateTimeAdapter<T>,\n @Inject(OWL_DTPICKER_SCROLL_STRATEGY) defaultScrollStrategy: any,\n @Optional()\n @Inject(OWL_DATE_TIME_FORMATS)\n protected dateTimeFormats: OwlDateTimeFormats,\n @Optional()\n @Inject(DOCUMENT)\n private document: any\n ) {\n super(dateTimeAdapter, dateTimeFormats);\n this.defaultScrollStrategy = defaultScrollStrategy;\n }\n\n public ngOnDestroy(): void {\n this.close();\n this.dtInputSub.unsubscribe();\n this.disabledChange.complete();\n\n if (this.popupRef) {\n this.popupRef.dispose();\n }\n }\n\n public registerInput(input: OwlDateTimeInputDirective<T>): void {\n if (this._dtInput) {\n throw Error(\n 'A Owl DateTimePicker can only be associated with a single input.'\n );\n }\n\n this._dtInput = input;\n this.dtInputSub = this._dtInput.valueChange.subscribe(\n (value: T[] | T | null) => {\n if (Array.isArray(value)) {\n this.selecteds = value;\n } else {\n this.selected = value;\n }\n }\n );\n }\n\n public open(): void {\n if (this._opened || this.disabled) {\n return;\n }\n\n if (!this._dtInput) {\n throw Error(\n 'Attempted to open an DateTimePicker with no associated input.'\n );\n }\n\n if (this.document) {\n this.focusedElementBeforeOpen = this.document.activeElement;\n }\n\n // reset the picker selected value\n if (this.isInSingleMode) {\n this.selected = this._dtInput.value;\n } else if (this.isInRangeMode) {\n this.selecteds = this._dtInput.values;\n }\n\n // when the picker is open , we make sure the picker's current selected time value\n // is the same as the _startAt time value.\n if (this.selected && this.pickerType !== 'calendar' && this._startAt) {\n this.selected = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this.selected),\n this.dateTimeAdapter.getMonth(this.selected),\n this.dateTimeAdapter.getDate(this.selected),\n this.dateTimeAdapter.getHours(this._startAt),\n this.dateTimeAdapter.getMinutes(this._startAt),\n this.dateTimeAdapter.getSeconds(this._startAt)\n );\n }\n\n this.pickerMode === 'dialog' ? this.openAsDialog() : this.openAsPopup();\n\n this.pickerContainer.picker = this;\n\n // Listen to picker container's hidePickerStream\n this.hidePickerStreamSub = this.pickerContainer.hidePickerStream.subscribe(\n () => {\n this.close();\n }\n );\n\n // Listen to picker container's confirmSelectedStream\n this.confirmSelectedStreamSub = this.pickerContainer.confirmSelectedStream.subscribe(\n (event: any) => {\n this.confirmSelect(event);\n }\n );\n }\n\n /**\n * Selects the given date\n */\n public select(date: T[] | T): void {\n if (Array.isArray(date)) {\n this.selecteds = [...date];\n } else {\n this.selected = date;\n }\n\n /**\n * Cases in which automatically confirm the select when date or dates are selected:\n * 1) picker mode is NOT 'dialog'\n * 2) picker type is 'calendar' and selectMode is 'single'.\n * 3) picker type is 'calendar' and selectMode is 'range' and\n * the 'selecteds' has 'from'(selecteds[0]) and 'to'(selecteds[1]) values.\n * 4) selectMode is 'rangeFrom' and selecteds[0] has value.\n * 5) selectMode is 'rangeTo' and selecteds[1] has value.\n * */\n if (\n this.pickerMode !== 'dialog' &&\n this.pickerType === 'calendar' &&\n ((this.selectMode === 'single' && this.selected) ||\n (this.selectMode === 'rangeFrom' && this.selecteds[0]) ||\n (this.selectMode === 'rangeTo' && this.selecteds[1]) ||\n (this.selectMode === 'range' && this.selecteds[0] && this.selecteds[1]))\n ) {\n this.confirmSelect();\n }\n }\n\n /**\n * Emits the selected year in multi-year view\n * */\n public selectYear(normalizedYear: T): void {\n this.yearSelected.emit(normalizedYear);\n }\n\n /**\n * Emits selected month in year view\n * */\n public selectMonth(normalizedMonth: T): void {\n this.monthSelected.emit(normalizedMonth);\n }\n\n /**\n * Hide the picker\n */\n public close(): void {\n if (!this._opened) {\n return;\n }\n\n if (this.popupRef && this.popupRef.hasAttached()) {\n this.popupRef.detach();\n }\n\n if (this.pickerContainerPortal && this.pickerContainerPortal.isAttached) {\n this.pickerContainerPortal.detach();\n }\n\n if (this.hidePickerStreamSub) {\n this.hidePickerStreamSub.unsubscribe();\n this.hidePickerStreamSub = null;\n }\n\n if (this.confirmSelectedStreamSub) {\n this.confirmSelectedStreamSub.unsubscribe();\n this.confirmSelectedStreamSub = null;\n }\n\n if (this.pickerOpenedStreamSub) {\n this.pickerOpenedStreamSub.unsubscribe();\n this.pickerOpenedStreamSub = null;\n }\n\n if (this.dialogRef) {\n this.dialogRef.close();\n this.dialogRef = null;\n }\n\n const completeClose = () => {\n if (this._opened) {\n this._opened = false;\n this.afterPickerClosed.emit(null);\n this.focusedElementBeforeOpen = null;\n }\n };\n\n if (\n this.focusedElementBeforeOpen &&\n typeof this.focusedElementBeforeOpen.focus === 'function'\n ) {\n // Because IE moves focus asynchronously, we can't count on it being restored before we've\n // marked the datepicker as closed. If the event fires out of sequence and the element that\n // we're refocusing opens the datepicker on focus, the user could be stuck with not being\n // able to close the calendar at all. We work around it by making the logic, that marks\n // the datepicker as closed, async as well.\n this.focusedElementBeforeOpen.focus();\n setTimeout(completeClose);\n } else {\n completeClose();\n }\n }\n\n /**\n * Confirm the selected value\n */\n public confirmSelect(event?: any): void {\n if (this.isInSingleMode) {\n const selected =\n this.selected || this.startAt || this.dateTimeAdapter.now();\n this.confirmSelectedChange.emit(selected);\n } else if (this.isInRangeMode) {\n this.confirmSelectedChange.emit(this.selecteds);\n }\n\n this.close();\n return;\n }\n\n /**\n * Open the picker as a dialog\n */\n private openAsDialog(): void {\n this.dialogRef = this.dialogService.open(OwlDateTimeContainerComponent, {\n autoFocus: false,\n backdropClass: [\n 'cdk-overlay-dark-backdrop',\n ...coerceArray(this.backdropClass)\n ],\n paneClass: ['owl-dt-dialog', ...coerceArray(this.panelClass)],\n viewContainerRef: this.viewContainerRef,\n scrollStrategy: this.scrollStrategy || this.defaultScrollStrategy(),\n closeOnNavigation: true,\n width: '',\n height: ''\n });\n this.pickerContainer = this.dialogRef.componentInstance;\n\n this.dialogRef.afterOpen().subscribe(() => {\n this.afterPickerOpen.emit(null);\n this._opened = true;\n });\n this.dialogRef.afterClosed().subscribe(() => this.close());\n }\n\n /**\n * Open the picker as popup\n */\n private openAsPopup(): void {\n if (!this.pickerContainerPortal) {\n this.pickerContainerPortal = new ComponentPortal<\n OwlDateTimeContainerComponent<T>\n >(OwlDateTimeContainerComponent, this.viewContainerRef);\n }\n\n if (!this.popupRef) {\n this.createPopup();\n }\n\n if (!this.popupRef.hasAttached()) {\n const componentRef: ComponentRef<OwlDateTimeContainerComponent<\n T\n >> = this.popupRef.attach(this.pickerContainerPortal);\n this.pickerContainer = componentRef.instance;\n\n // Update the position once the calendar has rendered.\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this.popupRef.updatePosition();\n });\n\n // emit open stream\n this.pickerOpenedStreamSub = this.pickerContainer.pickerOpenedStream\n .pipe(take(1))\n .subscribe(() => {\n this.afterPickerOpen.emit(null);\n this._opened = true;\n });\n }\n }\n\n private createPopup(): void {\n const overlayConfig = new OverlayConfig({\n positionStrategy: this.createPopupPositionStrategy(),\n hasBackdrop: true,\n backdropClass: [\n 'cdk-overlay-transparent-backdrop',\n ...coerceArray(this.backdropClass)\n ],\n scrollStrategy: this.scrollStrategy || this.defaultScrollStrategy(),\n panelClass: ['owl-dt-popup', ...coerceArray(this.panelClass)]\n });\n\n this.popupRef = this.overlay.create(overlayConfig);\n\n merge(\n this.popupRef.backdropClick(),\n this.popupRef.detachments(),\n this.popupRef\n .keydownEvents()\n .pipe(\n filter(\n (event) =>\n event.keyCode === ESCAPE ||\n (this._dtInput && event.altKey && event.keyCode === UP_ARROW)\n )\n )\n ).subscribe(() => this.close());\n }\n\n /**\n * Create the popup PositionStrategy.\n * */\n private createPopupPositionStrategy(): PositionStrategy {\n return this.overlay\n .position()\n .flexibleConnectedTo(this._dtInput.elementRef)\n .withTransformOriginOn('.owl-dt-container')\n .withFlexibleDimensions(false)\n .withPush(false)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom'\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: -176\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: -352\n }\n ]);\n }\n}\n","","import {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Renderer2\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport { DOWN_ARROW } from '@angular/cdk/keycodes';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { OwlDateTimeComponent } from './date-time-picker.component';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { Subscription } from 'rxjs';\nimport { SelectMode } from './date-time.class';\n\nexport const OWL_DATETIME_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OwlDateTimeInputDirective),\n multi: true\n};\n\nexport const OWL_DATETIME_VALIDATORS: any = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => OwlDateTimeInputDirective),\n multi: true\n};\n\n@Directive({\n selector: 'input[owlDateTime]',\n exportAs: 'owlDateTimeInput',\n providers: [OWL_DATETIME_VALUE_ACCESSOR, OWL_DATETIME_VALIDATORS]\n})\nexport class OwlDateTimeInputDirective<T>\n implements\n OnInit,\n AfterContentInit,\n OnDestroy,\n ControlValueAccessor,\n Validator {\n @HostBinding('attr.aria-haspopup')\n get owlDateTimeInputAriaHaspopup() {\n return true;\n }\n\n @HostBinding('attr.max') get maxIso8601() {\n return this.max ? this.dateTimeAdapter.toIso8601(this.max) : null;\n }\n\n @HostBinding('attr.min') get minIso8601() {\n return this.min ? this.dateTimeAdapter.toIso8601(this.min) : null;\n }\n\n @HostBinding('attr.aria-owns') get owlDateTimeInputAriaOwns() {\n return (this.dtPicker.opened && this.dtPicker.id) || null;\n }\n\n @HostBinding('disabled') get owlDateTimeInputDisabled() {\n return this.disabled;\n }\n\n @HostListener('blur', ['$event'])\n public handleBlurOnHost($event: Event): void {\n this.onModelTouched();\n }\n\n @HostListener('change', ['$event'])\n public handleChangeOnHost($event: Event): void {\n let v;\n if (this.isInSingleMode) {\n v = this.value;\n } else if (this.isInRangeMode) {\n v = this.values;\n }\n\n this.dateTimeChange.emit({\n source: this,\n value: v,\n input: this.elmRef.nativeElement\n });\n }\n\n @HostListener('input', ['$event'])\n public handleInputOnHost($event: any): void {\n const value = $event.target.value;\n if (this._selectMode === 'single') {\n this.changeInputInSingleMode(value);\n } else if (this._selectMode === 'range') {\n this.changeInputInRangeMode(value);\n } else {\n this.changeInputInRangeFromToMode(value);\n }\n }\n\n @HostListener('keydown', ['$event'])\n public handleKeydownOnHost($event: KeyboardEvent): void {\n if ($event.altKey && $event.keyCode === DOWN_ARROW) {\n this.dtPicker.open();\n $event.preventDefault();\n }\n }\n\n /**\n * The date time picker that this input is associated with.\n * */\n @Input()\n set owlDateTime(value: OwlDateTimeComponent<T>) {\n this.registerDateTimePicker(value);\n }\n\n /**\n * A function to filter date time\n */\n @Input()\n set owlDateTimeFilter(filter: (date: T | null) => boolean) {\n this._dateTimeFilter = filter;\n this.validatorOnChange();\n }\n get dateTimeFilter() {\n return this._dateTimeFilter;\n }\n get disabled() {\n return !!this._disabled;\n }\n\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n const element = this.elmRef.nativeElement;\n\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this.disabledChange.emit(newValue);\n }\n\n // We need to null check the `blur` method, because it's undefined during SSR.\n if (newValue && element.blur) {\n // Normally, native input elements automatically blur if they turn disabled. This behavior\n // is problematic, because it would mean that it triggers another change detection cycle,\n // which then causes a changed after checked error if the input element was focused before.\n element.blur();\n }\n }\n @Input()\n get min(): T | null {\n return this._min;\n }\n\n set min(value: T | null) {\n this._min = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n this.validatorOnChange();\n }\n @Input()\n get max(): T | null {\n return this._max;\n }\n\n set max(value: T | null) {\n this._max = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n this.validatorOnChange();\n }\n @Input()\n get selectMode() {\n return this._selectMode;\n }\n\n set selectMode(mode: SelectMode) {\n if (\n mode !== 'single' &&\n mode !== 'range' &&\n mode !== 'rangeFrom' &&\n mode !== 'rangeTo'\n ) {\n throw Error('OwlDateTime Error: invalid selectMode value!');\n }\n\n this._selectMode = mode;\n }\n @Input()\n get value() {\n return this._value;\n }\n\n set value(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this.lastValueValid = !value || this.dateTimeAdapter.isValid(value);\n value = this.getValidDate(value);\n const oldDate = this._value;\n this._value = value;\n\n // set the input property 'value'\n if ((this.value, this.dtPicker)) {\n this.formatNativeInputValue();\n }\n\n // check if the input value changed\n if (!this.dateTimeAdapter.isEqual(oldDate, value)) {\n this.valueChange.emit(value);\n }\n }\n @Input()\n get values() {\n return this._values;\n }\n\n set values(values: T[]) {\n if (values && values.length > 0) {\n this._values = values.map((v) => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n this.lastValueValid =\n (!this._values[0] || this.dateTimeAdapter.isValid(this._values[0])) &&\n (!this._values[1] || this.dateTimeAdapter.isValid(this._values[1]));\n } else {\n this._values = [];\n this.lastValueValid = true;\n }\n\n // set the input property 'value'\n this.formatNativeInputValue();\n\n this.valueChange.emit(this._values);\n }\n\n get elementRef(): ElementRef {\n return this.elmRef;\n }\n\n get isInSingleMode(): boolean {\n return this._selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this._selectMode === 'range' ||\n this._selectMode === 'rangeFrom' ||\n this._selectMode === 'rangeTo'\n );\n }\n\n private _dateTimeFilter: (date: T | null) => boolean;\n\n /** Whether the date time picker's input is disabled. */\n @Input()\n private _disabled: boolean;\n\n /** The minimum valid date. */\n private _min: T | null;\n\n /** The maximum valid date. */\n private _max: T | null;\n\n /**\n * The picker's select mode\n */\n private _selectMode: SelectMode = 'single';\n\n /**\n * The character to separate the 'from' and 'to' in input value\n */\n @Input()\n rangeSeparator = '~';\n\n private _value: T | null;\n\n private _values: T[] = [];\n\n /**\n * Callback to invoke when `change` event is fired on this `<input>`\n * */\n @Output()\n dateTimeChange = new EventEmitter<any>();\n\n /**\n * Callback to invoke when an `input` event is fired on this `<input>`.\n * */\n @Output()\n dateTimeInput = new EventEmitter<any>();\n\n /** The date-time-picker that this input is associated with. */\n public dtPicker: OwlDateTimeComponent<T>;\n\n private dtPickerSub: Subscription = Subscription.EMPTY;\n private localeSub: Subscription = Subscription.EMPTY;\n\n private lastValueValid = true;\n\n /** The form control validator for whether the input parses. */\n private parseValidator: ValidatorFn = (): ValidationErrors | null => {\n return this.lastValueValid\n ? null\n : { owlDateTimeParse: { text: this.elmRef.nativeElement.value } };\n };\n\n /** The form control validator for the min date. */\n private minValidator: ValidatorFn = (\n control: AbstractControl\n ): ValidationErrors | null => {\n if (this.isInSingleMode) {\n const controlValue = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value)\n );\n return !this.min ||\n !controlValue ||\n this.dateTimeAdapter.compare(this.min, controlValue) <= 0\n ? null\n : { owlDateTimeMin: { min: this.min, actual: controlValue } };\n } else if (this.isInRangeMode && control.value) {\n const controlValueFrom = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[0])\n );\n const controlValueTo = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[1])\n );\n return !this.min ||\n !controlValueFrom ||\n !controlValueTo ||\n this.dateTimeAdapter.compare(this.min, controlValueFrom) <= 0\n ? null\n : {\n owlDateTimeMin: {\n min: this.min,\n actual: [controlValueFrom, controlValueTo]\n }\n };\n }\n };\n\n /** The form control validator for the max date. */\n private maxValidator: ValidatorFn = (\n control: AbstractControl\n ): ValidationErrors | null => {\n if (this.isInSingleMode) {\n const controlValue = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value)\n );\n return !this.max ||\n !controlValue ||\n this.dateTimeAdapter.compare(this.max, controlValue) >= 0\n ? null\n : { owlDateTimeMax: { max: this.max, actual: controlValue } };\n } else if (this.isInRangeMode && control.value) {\n const controlValueFrom = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[0])\n );\n const controlValueTo = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[1])\n );\n return !this.max ||\n !controlValueFrom ||\n !controlValueTo ||\n this.dateTimeAdapter.compare(this.max, controlValueTo) >= 0\n ? null\n : {\n owlDateTimeMax: {\n max: this.max,\n actual: [controlValueFrom, controlValueTo]\n }\n };\n }\n };\n\n /** The form control validator for the date filter. */\n private filterValidator: ValidatorFn = (\n control: AbstractControl\n ): ValidationErrors | null => {\n const controlValue = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value)\n );\n return !this._dateTimeFilter ||\n !controlValue ||\n this._dateTimeFilter(controlValue)\n ? null\n : { owlDateTimeFilter: true };\n };\n\n /**\n * The form control validator for the range.\n * Check whether the 'before' value is before the 'to' value\n * */\n private rangeValidator: ValidatorFn = (\n control: AbstractControl\n ): ValidationErrors | null => {\n if (this.isInSingleMode || !control.value) {\n return null;\n }\n\n const controlValueFrom = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[0])\n );\n const controlValueTo = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[1])\n );\n\n return !controlValueFrom ||\n !controlValueTo ||\n this.dateTimeAdapter.compare(controlValueFrom, controlValueTo) <= 0\n ? null\n : { owlDateTimeRange: true };\n };\n\n /** The combined form control validator for this input. */\n private validator: ValidatorFn | null = Validators.compose([\n this.parseValidator,\n this.minValidator,\n this.maxValidator,\n this.filterValidator,\n this.rangeValidator\n ]);\n\n /** Emits when the value changes (either due to user input or programmatic change). */\n public valueChange = new EventEmitter<T[] | T | null>();\n\n /** Emits when the disabled state has changed */\n public disabledChange = new EventEmitter<boolean>();\n\n private onModelChange: Function = () => {};\n private onModelTouched: Function = () => {};\n private validatorOnChange: Function = () => {};\n\n constructor(\n private elmRef: ElementRef,\n private renderer: Renderer2,\n @Optional() private dateTimeAdapter: DateTimeAdapter<T>,\n @Optional()\n @Inject(OWL_DATE_TIME_FORMATS)\n private dateTimeFormats: OwlDateTimeFormats\n ) {\n if (!this.dateTimeAdapter) {\n throw Error(\n `OwlDateTimePicker: No provider found for DateTimePicker. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n\n if (!this.dateTimeFormats) {\n throw Error(\n `OwlDateTimePicker: No provider found for OWL_DATE_TIME_FORMATS. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n\n this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\n this.value = this.value;\n });\n }\n public ngOnInit(): void {\n if (!this.dtPicker) {\n throw Error(\n `OwlDateTimePicker: the picker input doesn't have any associated owl-date-time component`\n );\n }\n this.formatNativeInputValue();\n }\n\n public ngAfterContentInit(): void {\n this.dtPickerSub = this.dtPicker.confirmSelectedChange.subscribe(\n (selecteds: T[] | T) => {\n if (Array.isArray(selecteds)) {\n this.values = selecteds;\n } else {\n this.value = selecteds;\n }\n\n this.onModelChange(selecteds);\n this.onModelTouched();\n this.dateTimeChange.emit({\n source: this,\n value: selecteds,\n input: this.elmRef.nativeElement\n });\n this.dateTimeInput.emit({\n source: this,\n value: selecteds,\n input: this.elmRef.nativeElement\n });\n }\n );\n }\n\n public ngOnDestroy(): void {\n this.dtPickerSub.unsubscribe();\n this.localeSub.unsubscribe();\n this.valueChange.complete();\n this.disabledChange.complete();\n }\n\n public writeValue(value: any): void {\n if (this.isInSingleMode) {\n this.value = value;\n } else {\n this.values = value;\n }\n }\n\n public registerOnChange(fn: any): void {\n this.onModelChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.onModelTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public validate(c: AbstractControl): { [key: string]: any } {\n return this.validator ? this.validator(c) : null;\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this.validatorOnChange = fn;\n }\n\n /**\n * Set the native input property 'value'\n */\n public formatNativeInputValue(): void {\n if (this.isInSingleMode) {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n this._value\n ? this.dateTimeAdapter.format(this._value, this.dtPicker.formatString)\n : ''\n );\n } else if (this.isInRangeMode) {\n if (this._values && this.values.length > 0) {\n const from = this._values[0];\n const to = this._values[1];\n\n const fromFormatted = from\n ? this.dateTimeAdapter.format(from, this.dtPicker.formatString)\n : '';\n const toFormatted = to\n ? this.dateTimeAdapter.format(to, this.dtPicker.formatString)\n : '';\n\n if (!fromFormatted && !toFormatted) {\n this.renderer.setProperty(this.elmRef.nativeElement, 'value', null);\n } else {\n if (this._selectMode === 'range') {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n fromFormatted + ' ' + this.rangeSeparator + ' ' + toFormatted\n );\n } else if (this._selectMode === 'rangeFrom') {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n fromFormatted\n );\n } else if (this._selectMode === 'rangeTo') {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n toFormatted\n );\n }\n }\n } else {\n this.renderer.setProperty(this.elmRef.nativeElement, 'value', '');\n }\n }\n\n return;\n }\n\n /**\n * Register the relationship between this input and its picker component\n */\n private registerDateTimePicker(picker: OwlDateTimeComponent<T>) {\n if (picker) {\n this.dtPicker = picker;\n this.dtPicker.registerInput(this);\n }\n }\n\n /**\n * Convert a given obj to a valid date object\n */\n private getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n\n /**\n * Convert a time string to a date-time string\n * When pickerType is 'timer', the value in the picker's input is a time string.\n * The dateTimeAdapter parse fn could not parse a time string to a Date Object.\n * Therefore we need this fn to convert a time string to a date-time string.\n */\n private convertTimeStringToDateTimeString(\n timeString: string,\n dateTime: T\n ): string | null {\n if (timeString) {\n const v = dateTime || this.dateTimeAdapter.now();\n const dateString = this.dateTimeAdapter.format(\n v,\n this.dateTimeFormats.datePickerInput\n );\n return dateString + ' ' + timeString;\n } else {\n return null;\n }\n }\n\n /**\n * Handle input change in single mode\n */\n private changeInputInSingleMode(inputValue: string): void {\n let value = inputValue;\n if (this.dtPicker.pickerType === 'timer') {\n value = this.convertTimeStringToDateTimeString(value, this.value);\n }\n\n let result = this.dateTimeAdapter.parse(\n value,\n this.dateTimeFormats.parseInput\n );\n this.lastValueValid = !result || this.dateTimeAdapter.isValid(result);\n result = this.getValidDate(result);\n\n // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\n // result equals to null means there is input event, but the input value is invalid\n if (!this.isSameValue(result, this._value) || result === null) {\n this._value = result;\n this.valueChange.emit(result);\n this.onModelChange(result);\n this.dateTimeInput.emit({\n source: this,\n value: result,\n input: this.elmRef.nativeElement\n });\n }\n }\n\n /**\n * Handle input change in rangeFrom or rangeTo mode\n */\n private changeInputInRangeFromToMode(inputValue: string): void {\n const originalValue =\n this._selectMode === 'rangeFrom' ? this._values[0] : this._values[1];\n\n if (this.dtPicker.pickerType === 'timer') {\n inputValue = this.convertTimeStringToDateTimeString(\n inputValue,\n originalValue\n );\n }\n\n let result = this.dateTimeAdapter.parse(\n inputValue,\n this.dateTimeFormats.parseInput\n );\n this.lastValueValid = !result || this.dateTimeAdapter.isValid(result);\n result = this.getValidDate(result);\n\n // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\n if (\n (this._selectMode === 'rangeFrom' &&\n this.isSameValue(result, this._values[0]) &&\n result) ||\n (this._selectMode === 'rangeTo' &&\n this.isSameValue(result, this._values[1]) &&\n result)\n ) {\n return;\n }\n\n this._values =\n this._selectMode === 'rangeFrom'\n ? [result, this._values[1]]\n : [this._values[0], result];\n this.valueChange.emit(this._values);\n this.onModelChange(this._values);\n this.dateTimeInput.emit({\n source: this,\n value: this._values,\n input: this.elmRef.nativeElement\n });\n }\n\n /**\n * Handle input change in range mode\n */\n private changeInputInRangeMode(inputValue: string): void {\n const selecteds = inputValue.split(this.rangeSeparator);\n let fromString = selecteds[0];\n let toString = selecteds[1];\n\n if (this.dtPicker.pickerType === 'timer') {\n fromString = this.convertTimeStringToDateTimeString(\n fromString,\n this.values[0]\n );\n toString = this.convertTimeStringToDateTimeString(\n toString,\n this.values[1]\n );\n }\n\n let from = this.dateTimeAdapter.parse(\n fromString,\n this.dateTimeFormats.parseInput\n );\n let to = this.dateTimeAdapter.parse(\n toString,\n this.dateTimeFormats.parseInput\n );\n this.lastValueValid =\n (!from || this.dateTimeAdapter.isValid(from)) &&\n (!to || this.dateTimeAdapter.isValid(to));\n from = this.getValidDate(from);\n to = this.getValidDate(to);\n\n // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\n if (\n !this.isSameValue(from, this._values[0]) ||\n !this.isSameValue(to, this._values[1]) ||\n (from === null && to === null)\n ) {\n this._values = [from, to];\n this.valueChange.emit(this._values);\n this.onModelChange(this._values);\n this.dateTimeInput.emit({\n source: this,\n value: this._values,\n input: this.elmRef.nativeElement\n });\n }\n }\n\n /**\n * Check if the two value is the same\n */\n private isSameValue(first: T | null, second: T | null): boolean {\n if (first && second) {\n return this.dateTimeAdapter.compare(first, second) === 0;\n }\n\n return first === second;\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n Directive,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges\n} from '@angular/core';\nimport { OwlDateTimeComponent } from './date-time-picker.component';\nimport { merge, of as observableOf, Subscription } from 'rxjs';\n\n@Directive({\n selector: '[ofeOwlDateTimeTrigger]'\n})\nexport class OwlDateTimeTriggerDirective<T>\n implements OnChanges, AfterContentInit, OnDestroy {\n @Input('ofeOwlDateTimeTrigger') dtPicker: OwlDateTimeComponent<T>;\n\n @HostBinding('class.owl-dt-trigger-disabled')\n get owlDTTriggerDisabledClass(): boolean {\n return this.disabled;\n }\n\n @HostListener('click', ['$event'])\n handleClickOnHost($event: Event): void {\n if (this.dtPicker) {\n this.dtPicker.open();\n $event.stopPropagation();\n }\n }\n\n private _disabled: boolean;\n @Input()\n get disabled(): boolean {\n return this._disabled === undefined\n ? this.dtPicker.disabled\n : !!this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = value;\n }\n\n private stateChanges = Subscription.EMPTY;\n\n constructor(protected changeDetector: ChangeDetectorRef) {}\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.datepicker) {\n this.watchStateChanges();\n }\n }\n\n public ngAfterContentInit() {\n this.watchStateChanges();\n }\n\n public ngOnDestroy(): void {\n this.stateChanges.unsubscribe();\n }\n\n private watchStateChanges(): void {\n this.stateChanges.unsubscribe();\n\n const inputDisabled =\n this.dtPicker && this.dtPicker.dtInput\n ? this.dtPicker.dtInput.disabledChange\n : observableOf();\n\n const pickerDisabled = this.dtPicker\n ? this.dtPicker.disabledChange\n : observableOf();\n\n this.stateChanges = merge(pickerDisabled, inputDisabled).subscribe(() => {\n this.changeDetector.markForCheck();\n });\n }\n}\n","import { Component, forwardRef, Input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport moment from 'moment';\n\n@Component({\n selector: 'ofe-ngx-date-time-picker',\n templateUrl: './ngx-datetime-picker.html',\n styleUrls: ['./ngx-datetime-picker.css'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgxDatetimeComponent),\n multi: true\n }\n ]\n})\nexport class NgxDatetimeComponent implements ControlValueAccessor {\n value = '';\n isDisabled = false;\n @Input() id = '';\n @Input() theme = 'dark';\n @Input() datePickerFormat = '';\n @Input() showWeeks = false;\n @Input() weeks: number[];\n onChange = (_: any) => {};\n onTouch = () => {};\n onInput($event: any) {\n this.onTouch();\n this.onChange(moment($event.value).format());\n }\n\n writeValue(value: any): void {\n if (value && value !== '') {\n this.value = moment(value).format();\n } else {\n this.value = '';\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n }\n\n onWeeksSelected(numberOfWeeks: number) {\n const currentDate: string = new Date().toString();\n this.onInput({ value: moment(currentDate).add(numberOfWeeks, 'weeks') });\n }\n}\n","<div class=\"date-time-picker-container\">\n <div\n data-date-picker\n data-date-picker-type=\"single\"\n class=\"cds--date-picker cds--date-picker--single cds--date-picker--light\"\n [ngClass]=\"{\n 'cds--date-picker--light': theme === 'light'\n}\"\n >\n <div class=\"cds--date-picker-container fill\">\n <div class=\"cds--date-picker-input__wrapper\">\n <input\n [disabled]=\"isDisabled\"\n (dateTimeChange)=\"onInput($event)\"\n type=\"text\"\n class=\"cds--date-picker__input fill\"\n [id]=\"id\"\n [value]=\"value\"\n [owlDateTime]=\"dt1\"\n [ofeOwlDateTimeTrigger]=\"dt1\"\n placeholder=\"mm/dd/yyyy\"\n data-date-picker-input\n />\n <svg\n [ofeOwlDateTimeTrigger]=\"dt1\"\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n style=\"will-change: transform\"\n xmlns=\"http://www.w3.org/2000/svg\"\n data-date-picker-icon=\"true\"\n class=\"cds--date-picker__icon\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M13,2h-2V1h-1v1H6V1H5v1H3C2.4,2,2,2.4,2,3v10c0,0.6,0.4,1,1,1h10c0.6,0,1-0.4,1-1V3C14,2.4,13.6,2,13,2z M13,13H3V6h10V13z M13,5H3V3h2v1h1V3h4v1h1V3h2V5z\"\n ></path>\n </svg>\n </div>\n </div>\n </div>\n\n <div\n *ngIf=\"showWeeks\"\n class=\"cds--select some-class week-select-wrapper\"\n [ngClass]=\"{'cds--select--light': theme === 'light'}\"\n >\n <div class=\"cds--select-input__wrapper\">\n <select\n (change)=\"onWeeksSelected($event.target.value)\"\n id=\"select-1\"\n class=\"cds--select-input\"\n >\n <option\n class=\"cds--select-option\"\n value=\"placeholder-item\"\n disabled=\"\"\n hidden=\"\"\n selected=\"\"\n >\n {{ 'selectWeeks' | translate }}\n </option>\n <option\n class=\"cds--select-option\"\n [value]=\"week\"\n *ngFor=\"let week of weeks\"\n >\n {{week}} {{ 'weeks' | translate }}\n </option>\n </select>\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n aria-hidden=\"true\"\n class=\"cds--select__arrow\"\n >\n <path d=\"M8 11L3 6 3.7 5.3 8 9.6 12.3 5.3 13 6z\"></path>\n </svg>\n </div>\n </div>\n</div>\n<ofe-owl-date-time\n [pickerType]=\"datePickerFormat ? datePickerFormat : 'calendar'\"\n [disabled]=\"isDisabled\"\n #dt1\n></ofe-owl-date-time>\n","import { Directive, ElementRef, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[ofeNumberScroll]'\n})\nexport class NumberInputDirective {\n constructor(private element: ElementRef) {}\n\n @HostListener('wheel', ['$event'])\n public onScroll(event: WheelEvent) {\n return false;\n }\n}\n","import {\n Component,\n EventEmitter,\n forwardRef,\n HostListener,\n Input,\n Output,\n TemplateRef\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n/**\n * Used to emit changes performed on number input components.\n */\nexport class NumberChangeEvent {\n /**\n * Contains the `NumberInputComponent` that has been changed.\n */\n source: NumberInputComponent;\n /**\n * The value of the `NumberInputComponent` field encompassed in the `NumberChange` class.\n */\n value: number;\n}\n\n@Component({\n selector: 'ofe-number-input',\n templateUrl: 'number-input.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberInputComponent),\n multi: true\n }\n ]\n})\nexport class NumberInputComponent implements ControlValueAccessor {\n /**\n * Variable used for creating unique ids for number input components.\n */\n static numberCount = 0;\n\n /**\n * `light` or `dark` number input theme.\n */\n @Input() theme: 'light' | 'dark' = 'dark';\n /**\n * Set to `true` for a disabled number input.\n */\n @Input() disabled = false;\n /**\n * Set to `true` for a loading number component.\n */\n @Input() skeleton = false;\n /**\n * Set to `true` for an invalid number component.\n */\n @Input() invalid = false;\n /**\n * The unique id for the number component.\n */\n @Input() id = `number-${NumberInputComponent.numberCount}`;\n /**\n * Number input field render size\n */\n @Input() size: 'sm' | 'md' | 'xl' = 'md';\n /**\n * Reflects the required attribute of the `input` element.\n */\n @Input() required: boolean;\n /**\n * Sets the value attribute on the `input` element.\n */\n @Input() set value(v: any) {\n if (v === '' || v === null) {\n this._value = null;\n return;\n }\n this._value = Number(v);\n }\n\n get value() {\n return this._value;\n }\n /**\n * Sets the min attribute on the `input` element.\n */\n @Input() min = null;\n /**\n * Sets the max attribute on the `input` element.\n */\n @Input() max = null;\n /**\n * Sets the max length attribute on the `input` element.\n */\n @Input() maxlength = null;\n /**\n * Sets the min length attribute on the `input` element.\n */\n @Input() minlength = null;\n /**\n * Sets the text inside the `label` tag.\n */\n @Input() label: string | TemplateRef<any>;\n /**\n * Sets the optional helper text.\n */\n @Input() helperText: string | TemplateRef<any>;\n /**\n * Sets the invalid text.\n */\n @Input() invalidText: string | TemplateRef<any>;\n /**\n * Sets the amount the number controls increment and decrement by.\n */\n @Input() step = 1;\n /**\n * If `step` is a decimal, we may want precision to be set to go around floating point precision.\n */\n @Input() precision: number;\n /**\n * Set to `true` to show a warning (contents set by warningText)\n */\n @Input() warn = false;\n /**\n * Sets the warning text\n */\n @Input() warnText: string | TemplateRef<any>;\n /**\n * Emits event notifying other classes when a change in state occurs in the input.\n */\n @Output() numberChange = new EventEmitter<NumberChangeEvent>();\n /**\n * Sets the decrement label text\n */\n @Input() decrementLabel = 'Decrease';\n /**\n * Sets the increment label text\n */\n @Input() incrementLabel = 'Increase';\n\n protected _value = 0;\n\n /**\n * Creates an instance of `Number`.\n */\n constructor() {\n NumberInputComponent.numberCount++;\n }\n\n /**\n * This is the initial value set to the component\n * @param value The input value.\n */\n public writeValue(value: any) {\n this.value = value;\n }\n\n /**\n * Sets a method in order to propagate changes back to the form.\n */\n public registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n /**\n * Registers a callback to be triggered when the control has been touched.\n * @param fn Callback to be triggered when the number input is touched.\n */\n public registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n @HostListener('focusout')\n focusOut() {\n this.onTouched();\n }\n\n /**\n * Sets the disabled state through the model\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n /**\n * Called when number input is blurred. Needed to properly implement `ControlValueAccessor`.\n */\n onTouched: () => any = () => {};\n\n /**\n * Method set in `registerOnChange` to propagate changes back to the form.\n */\n propagateChange = (_: any) => {};\n\n /**\n * Adds `step` to the current `value`.\n */\n onIncrement(): void {\n const val = this._value || 0;\n\n if (this.max === null || val + this.step <= this.max) {\n this.value = parseFloat((val + this.step).toPrecision(this.precision));\n }\n\n if (this.max && this.max > 0 && this.value > this.max) {\n this.value = this.max;\n }\n if (this.max === undefined || this.max === '') {\n this.value = val + this.step;\n }\n\n this.emitChangeEvent();\n }\n\n /**\n * Subtracts `step` to the current `value`.\n */\n onDecrement(): void {\n const val = this._value || 0;\n\n if (this.min === null || val - this.step >= this.min) {\n this.value = parseFloat((val - this.step).toPrecision(this.precision));\n }\n\n if (this.min && this.min > 0 && this.value < this.min) {\n this.value = this.min;\n }\n\n if (this.min === undefined || this.min === '') {\n this.value = val - this.step;\n }\n\n this.emitChangeEvent();\n }\n\n /**\n * Creates a class of `NumberChange` to emit the change in the `Number`.\n */\n emitChangeEvent(): void {\n const event = new NumberChangeEvent();\n event.source = this;\n event.value = this.value;\n this.numberChange.emit(event);\n this.propagateChange(this.value);\n }\n\n onNumberInputChange(event) {\n this.value = event.target.value;\n this.emitChangeEvent();\n }\n\n public isTemplate(value) {\n return value instanceof TemplateRef;\n }\n}\n","<div\n data-numberinput\n [attr.data-invalid]=\"invalid ? true : null\"\n class=\"cds--number\"\n [ngClass]=\"{\n 'cds--number--light': theme === 'light',\n 'cds--number--nolabel': !label,\n 'cds--number--helpertext': helperText,\n 'cds--skeleton': skeleton,\n 'cds--number--sm': size === 'sm',\n 'cds--number--xl': size === 'xl'\n }\"\n>\n <div\n class=\"cds--number__input-wrapper\"\n [ngClass]=\"{\n 'cds--number__input-wrapper--warning': warn\n }\"\n >\n <input\n type=\"number\"\n [id]=\"id\"\n ofeNumberScroll\n [value]=\"value\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [attr.step]=\"step\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n (input)=\"onNumberInputChange($event)\"\n />\n <div class=\"cds--number__controls\">\n <button\n type=\"button\"\n class=\"cds--number__control-btn down-icon\"\n (click)=\"onDecrement()\"\n title=\"Decrement number\"\n [attr.aria-label]=\"decrementLabel\"\n tabindex=\"-1\"\n >\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 32 32\"\n aria-hidden=\"true\"\n class=\"down-icon\"\n >\n <path d=\"M8 15H24V17H8z\"></path>\n </svg>\n </button>\n <div class=\"cds--number__rule-divider\"></div>\n <button\n type=\"button\"\n class=\"cds--number__control-btn up-icon\"\n (click)=\"onIncrement()\"\n title=\"Increment number\"\n [attr.aria-label]=\"incrementLabel\"\n tabindex=\"-1\"\n >\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 32 32\"\n aria-hidden=\"true\"\n class=\"up-icon\"\n >\n <path\n d=\"M17 15L17 8 15 8 15 15 8 15 8 17 15 17 15 24 17 24 17 17 24 17 24 15z\"\n ></path>\n </svg>\n </button>\n <div class=\"cds--number__rule-divider\"></div>\n </div>\n </div>\n <div *ngIf=\"helperText && !invalid && !warn\" class=\"cds--form__helper-text\">\n <ng-container *ngIf=\"!isTemplate(helperText)\">{{\n helperText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(helperText)\"\n [ngTemplateOutlet]=\"helperText\"\n ></ng-template>\n </div>\n <div *ngIf=\"!warn && invalid\" class=\"cds--form-requirement\">\n <ng-container *ngIf=\"!isTemplate(invalidText)\">{{\n invalidText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(invalidText)\"\n [ngTemplateOutlet]=\"invalidText\"\n ></ng-template>\n </div>\n <div *ngIf=\"!invalid && warn\" class=\"cds--form-requirement\">\n <ng-container *ngIf=\"!isTemplate(warnText)\">{{ warnText }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(warnText)\"\n [ngTemplateOutlet]=\"warnText\"\n ></ng-template>\n </div>\n</div>\n","import {\n Component,\n Input,\n forwardRef,\n OnInit,\n OnChanges,\n SimpleChanges\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'ofe-radio-button',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.css'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioButtonControlComponent),\n multi: true\n }\n ]\n})\nexport class RadioButtonControlComponent\n implements ControlValueAccessor, OnInit, OnChanges {\n @Input() public id: String;\n @Input() public options: Array<any>;\n @Input() public selected: any;\n @Input() public allowUnselect: boolean;\n @Input() public orientation: string;\n\n private _value: any = undefined;\n\n public ngOnInit() {\n this.options = this.options.map((opt) => ({ ...opt, checked: false }));\n this.updateSelectedOption();\n }\n\n public writeValue(value: any) {\n this.value = value;\n const newValueOpt = this.options.find((opt) => opt.value === value);\n if (newValueOpt) {\n Object.assign(newValueOpt, { checked: true });\n }\n }\n\n public registerOnChange(\n fn: (newValue?: any, emitModelEvent?: boolean) => void\n ) {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n get value(): any {\n return this._value ?? '';\n }\n\n set value(value: any) {\n this._value = value;\n }\n\n public handleClick(option) {\n if (this.allowUnselect && option.checked) {\n option.checked = false;\n // doesn't fire by itself, so we create a synthetic change event\n this.handleChange(option);\n } else if (!option.checked) {\n option.checked = true;\n }\n }\n\n public handleChange(option) {\n if (!option.checked) {\n this.value = undefined;\n } else {\n this.value = option.value;\n }\n\n this.onChange(this.value);\n }\n\n public onChange = (args) => {};\n public onTouched = () => {};\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.selected) {\n this.updateSelectedOption();\n }\n }\n\n private updateSelectedOption(): void {\n if (this.selected) {\n const maybeOpt = this.options.find((opt) => opt.value === this.selected);\n if (maybeOpt) {\n this.options.forEach((opt) => (opt.checked = opt === maybeOpt));\n this.value = this.selected;\n }\n }\n }\n}\n","<fieldset class=\"cds--fieldset\">\n <div\n *ngFor=\"let option of options; let i = index\"\n class=\"cds--form-item cds--radio-wrapper\"\n [ngClass]=\"{ inline: orientation === 'horizontal' }\"\n >\n <label class=\"form-control no-border\">\n <input\n type=\"radio\"\n [id]=\"id + '_' + i\"\n [name]=\"id\"\n [checked]=\"option.checked\"\n [value]=\"option.value\"\n (click)=\"handleClick(option)\"\n (change)=\"handleChange(option)\"\n />\n {{ option.label }}\n </label>\n </div>\n</fieldset>\n","import { Component, Input, forwardRef, OnInit } from '@angular/core';\n\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as _ from 'lodash';\n\n@Component({\n selector: 'ofe-checkbox',\n templateUrl: './checkbox.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxControlComponent),\n multi: true\n }\n ]\n})\nexport class CheckboxControlComponent implements OnInit {\n @Input() public id: String;\n @Input() public options: Array<any>;\n @Input() public selected: Array<any>;\n public _value: Array<any> = [];\n\n public ngOnInit() {\n this.selected = this.selected || [];\n this.options = this.options.map((option) => {\n if (this.selected.indexOf(option.value) !== -1) {\n Object.assign(option, { checked: true });\n }\n return option;\n });\n }\n\n public writeValue(value: any) {\n this.value = value;\n }\n\n public registerOnChange(fn: (_: any) => void) {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n get value(): any {\n if (this._value.length === 0) {\n return '';\n } else {\n return this._value || this._value[0];\n }\n }\n\n set value(v: any) {\n if (typeof v === 'undefined' || v === null || v === '') {\n v = [];\n } else if (typeof v === 'string') {\n v = [v];\n } else if (!Array.isArray(v)) {\n throw new TypeError('Value must be a string or an array.');\n }\n }\n\n public selectOpt(option, event) {\n if (event.target.checked) {\n this.selected = [...this.selected, option.value];\n } else {\n this.selected = this.selected.filter(function (o) {\n return o !== option.value;\n });\n }\n\n this._value = [...this.selected];\n this.onChange(this._value);\n }\n\n private onChange = (change: any) => {};\n private onTouched = () => {};\n}\n","<fieldset class=\"cds--fieldset\">\n <div\n class=\"cds--form-item cds--checkbox-wrapper\"\n *ngFor=\"let option of options; let i = index\"\n >\n <input\n type=\"checkbox\"\n class=\"cds--checkbox\"\n [id]=\"i + id\"\n [checked]=\"option.checked\"\n (change)=\"selectOpt(option, $event)\"\n [value]=\"option.value\"\n />\n <label [for]=\"i + id\" class=\"cds--checkbox-label\">\n <span class=\"cds--checkbox-label-text\">{{ option.label }}</span>\n </label>\n </div>\n</fieldset>\n","import { Component, OnChanges, Input } from '@angular/core';\n\nimport { LeafNode } from '../../form-entry/form-factory/form-node';\nimport moment from 'moment';\n\n@Component({\n selector: 'ofe-appointments-overview',\n templateUrl: './appointments-overview.component.html',\n styleUrls: ['./appointments-overview.component.css']\n})\nexport class AppointmentsOverviewComponent implements OnChanges {\n @Input() node: LeafNode;\n showAppointments = false;\n loadingAppointments = false;\n errorLoadingAppointments = false;\n appointmentsLoaded = false;\n appointments: Array<any> = [];\n today = '';\n constructor() {}\n\n ngOnChanges() {\n this.node.control.valueChanges.subscribe((appointmentDate) => {\n this.resetProperties();\n const node = this.node;\n if (\n node.question.extras.questionOptions.concept &&\n (node.question.extras.questionOptions.concept ===\n 'a8a666ba-1350-11df-a1f1-0026b9348838' ||\n node.question.extras.questionOptions.concept ===\n 'a89d2398-1350-11df-a1f1-0026b9348838')\n ) {\n if (!this.showAppointments) {\n this.loadingAppointments = true;\n this.showAppointments = true;\n let dataSource;\n if (node.form && node.form.dataSourcesContainer.dataSources) {\n dataSource =\n node.form.dataSourcesContainer.dataSources\n .monthlyScheduleResourceService;\n }\n const locationUuid =\n node.form.dataSourcesContainer.dataSources?.userLocation?.uuid;\n if (dataSource && locationUuid) {\n const startDate = moment(appointmentDate)\n .startOf('week')\n .add(1, 'day')\n .format('YYYY-MM-DD');\n const endDate = moment(appointmentDate)\n .endOf('week')\n .subtract(1, 'day')\n .format('YYYY-MM-DD');\n this.today = moment(appointmentDate).format('DD-MM-YYYY');\n // create 5 week days\n const scheduledAppointments: Array<{\n date: string;\n count: number;\n }> = [];\n const programTypes = [\n '781d85b0-1359-11df-a1f1-0026b9348838',\n '781d897a-1359-11df-a1f1-0026b9348838',\n '96047aaf-7ab3-45e9-be6a-b61810fe617d',\n 'c19aec66-1a40-4588-9b03-b6be55a8dd1d',\n 'f7793d42-11ac-4cfd-9b35-e0a21a7a7c31',\n '334c9e98-173f-4454-a8ce-f80b20b7fdf0',\n '96ba279b-b23b-4e78-aba9-dcbd46a96b7b',\n '781d8880-1359-11df-a1f1-0026b9348838'\n ];\n const programTypeParams = programTypes.join();\n for (let i = 1; i <= 5; i++) {\n scheduledAppointments.push({\n date: moment(appointmentDate)\n .startOf('week')\n .add(i, 'day')\n .format('DD-MM-YYYY'),\n count: 0\n });\n }\n dataSource\n .getMonthlySchedule({\n startDate: startDate,\n endDate: endDate,\n limit: 5,\n locationUuids: locationUuid,\n programType: programTypeParams\n })\n .subscribe(\n ({ results }) => {\n this.appointmentsLoaded = true;\n this.loadingAppointments = false;\n scheduledAppointments.map((appointment, index) => {\n appointment.count =\n results[index] !== undefined\n ? results[index].count.scheduled\n : 0;\n });\n this.appointments = scheduledAppointments;\n },\n (error) => {\n this.loadingAppointments = false;\n this.errorLoadingAppointments = true;\n this.showAppointments = false;\n console.error(error);\n }\n );\n } else {\n this.showAppointments = false;\n this.errorLoadingAppointments = true;\n }\n }\n }\n });\n }\n\n resetProperties() {\n this.loadingAppointments = false;\n this.appointmentsLoaded = false;\n this.errorLoadingAppointments = false;\n this.showAppointments = false;\n this.appointments = [];\n this.today = '';\n }\n}\n","<div *ngIf=\"showAppointments\" class=\"container\">\n <div *ngIf=\"loadingAppointments\">\n <span *ngIf=\"!appointmentsLoaded && errorLoadingAppointments\"\n >Error checking appointments</span\n >\n <div\n *ngIf=\"loadingAppointments\"\n class=\"cds--inline-loading\"\n aria-live=\"assertive\"\n >\n <div class=\"cds--inline-loading__animation\">\n <div\n aria-atomic=\"true\"\n aria-labelledby=\"loading-id-2\"\n aria-live=\"assertive\"\n class=\"cds--loading cds--loading--small\"\n >\n <label id=\"loading-id-2\" class=\"cds--visually-hidden\"\n >Active loading indicator</label\n ><svg class=\"cds--loading__svg\" viewBox=\"0 0 100 100\">\n <title>Active loading indicator</title>\n <circle\n class=\"cds--loading__background\"\n cx=\"50%\"\n cy=\"50%\"\n r=\"44\"\n ></circle>\n <circle\n class=\"cds--loading__stroke\"\n cx=\"50%\"\n cy=\"50%\"\n r=\"44\"\n ></circle>\n </svg>\n </div>\n </div>\n <div class=\"cds--inline-loading__text\">Loading...</div>\n </div>\n </div>\n\n <div\n class=\"cds--data-table-content\"\n *ngIf=\"appointmentsLoaded && !errorLoadingAppointments\"\n >\n <table class=\"cds--data-table cds--data-table--no-border\">\n <thead>\n <tr>\n <th\n *ngFor=\"let appointment of appointments\"\n scope=\"col\"\n [ngClass]=\"{ active: appointment.date === today }\"\n >\n {{ appointment.date }}\n </th>\n </tr>\n </thead>\n <tbody aria-live=\"polite\">\n <tr>\n <td\n *ngFor=\"let appointment of appointments\"\n [ngClass]=\"{ active: appointment.date === today }\"\n >\n {{ appointment.count }}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</div>\n","import * as _ from 'lodash';\nimport { QuestionBase } from '../question-models/question-base';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class HistoricalFieldHelperService {\n public getDisplayTextFromOptions(\n question: QuestionBase,\n valueProperty: string,\n displayProperty: string\n ): string {\n let displayText = '';\n const historicalValue = question.historicalDataValue;\n if (_.isArray(historicalValue.value)) {\n let valueConverted = 0;\n _.each(historicalValue.value, (val) => {\n _.each(question.options, (option) => {\n if (option[valueProperty] === val) {\n if (valueConverted === 0) {\n displayText = displayText + option[displayProperty];\n } else {\n displayText = displayText + ', ' + option[displayProperty];\n }\n valueConverted++;\n }\n });\n });\n } else {\n _.each(question.options, (option) => {\n if (option[valueProperty] === historicalValue.value) {\n displayText = option[displayProperty];\n }\n });\n }\n return displayText;\n }\n}\n","import {\n Directive,\n HostListener,\n Input,\n Output,\n EventEmitter\n} from '@angular/core';\n\nimport { HistoricalFieldHelperService } from '../helpers/historical-field-helper-service';\nimport * as _ from 'lodash';\nimport { NodeBase } from '../form-factory/form-node';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: `[node]`\n})\nexport class HistoricalValueDirective {\n @Input() _node: NodeBase;\n @Output() _nodeChange = new EventEmitter<Object>();\n\n historicalDisplay: string;\n\n constructor(private historicalFieldHelper: HistoricalFieldHelperService) {}\n\n @HostListener('click', ['$event'])\n setValue(e) {\n if (e.target.name === 'historyValue') {\n if (\n this._node &&\n (!this.compareStrings(this._node.question.renderingType, 'page') ||\n !this.compareStrings(this._node.question.renderingType, 'section'))\n ) {\n this._node.control.setValue(\n this._node.question.historicalDataValue.value\n );\n\n this._node.question[\n 'historicalValue'\n ] = this._node.question.historicalDataValue;\n e.stopPropagation();\n this._nodeChange.emit(this._node);\n }\n }\n }\n\n @Input()\n set node(node: NodeBase) {\n if (node) {\n this._node = node;\n if (\n this._node.question.enableHistoricalValue &&\n !_.isUndefined(this._node.question.historicalDataValue)\n ) {\n const display: any = { text: '', _date: '' };\n if (\n this._node.question.renderingType === 'select' ||\n this._node.question.renderingType === 'multi-select' ||\n this._node.question.renderingType === 'single-select' ||\n this._node.question.renderingType === 'radio'\n ) {\n display.text = this.historicalFieldHelper.getDisplayTextFromOptions(\n this._node.question,\n 'value',\n 'label'\n );\n display._date = this._node.question.historicalDataValue.valueDate;\n\n this._node.question['historicalDisplay'] = display;\n } else if (!_.isUndefined(this._node.question.historicalDataValue)) {\n display.text = this._node.question.historicalDataValue.value;\n display._date = this._node.question.historicalDataValue.valueDate;\n\n this._node.question['historicalDisplay'] = display;\n }\n }\n }\n }\n\n private compareStrings(a: string, b: string): boolean {\n return a === b;\n }\n}\n","import { animate, style, AnimationMetadata } from '@angular/animations';\n\nexport const COLLAPSE_ANIMATION_TIMING = '400ms cubic-bezier(0.4,0.0,0.2,1)';\n\nexport const expandAnimation: AnimationMetadata[] = [\n style({ height: 0, visibility: 'hidden' }),\n animate(\n COLLAPSE_ANIMATION_TIMING,\n style({ height: '*', visibility: 'visible' })\n )\n];\n\nexport const collapseAnimation: AnimationMetadata[] = [\n style({ height: '*', visibility: 'visible' }),\n animate(COLLAPSE_ANIMATION_TIMING, style({ height: 0, visibility: 'hidden' }))\n];\n","import {\n AnimationBuilder,\n AnimationFactory,\n AnimationPlayer\n} from '@angular/animations';\nimport {\n AfterViewChecked,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n Renderer2\n} from '@angular/core';\n\nimport { collapseAnimation, expandAnimation } from './collapse-animations';\n\n@Directive({\n selector: '[ofeCollapse]',\n exportAs: 'bs-collapse'\n})\nexport class CollapseDirective implements AfterViewChecked {\n // @HostBinding('class.collapse')\n /** This event fires as soon as content collapses */\n @Output() collapsed: EventEmitter<CollapseDirective> = new EventEmitter();\n /** This event fires when collapsing is started */\n @Output() collapses: EventEmitter<CollapseDirective> = new EventEmitter();\n /** This event fires as soon as content becomes visible */\n @Output() expanded: EventEmitter<CollapseDirective> = new EventEmitter();\n /** This event fires when expansion is started */\n @Output() expands: EventEmitter<CollapseDirective> = new EventEmitter();\n // shown\n @HostBinding('class.in')\n @HostBinding('class.show')\n @HostBinding('attr.aria-expanded')\n isExpanded = true;\n collapseNewValue = true;\n // hidden\n @HostBinding('attr.aria-hidden') isCollapsed = false;\n // stale state\n @HostBinding('class.collapse') isCollapse = true;\n // animation state\n @HostBinding('class.collapsing') isCollapsing = false;\n\n @Input()\n set display(value: string) {\n if (!this.isAnimated) {\n this._renderer.setStyle(this._el.nativeElement, 'display', value);\n\n return;\n }\n\n this._display = value;\n\n if (value === 'none') {\n this.hide();\n\n return;\n }\n\n this.show();\n }\n /** turn on/off animation */\n @Input() isAnimated = false;\n /** A flag indicating visibility of content (shown or hidden) */\n @Input()\n set collapse(value: boolean) {\n this.collapseNewValue = value;\n if (!this._player || this._isAnimationDone) {\n this.isExpanded = value;\n this.toggle();\n }\n }\n\n get collapse(): boolean {\n return this.isExpanded;\n }\n\n private _display = 'block';\n private _isAnimationDone?: boolean;\n private _player?: AnimationPlayer;\n private _stylesLoaded = false;\n\n private _COLLAPSE_ACTION_NAME = 'collapse';\n private _EXPAND_ACTION_NAME = 'expand';\n\n private readonly _factoryCollapseAnimation: AnimationFactory;\n private readonly _factoryExpandAnimation: AnimationFactory;\n\n constructor(\n private _el: ElementRef,\n private _renderer: Renderer2,\n _builder: AnimationBuilder\n ) {\n this._factoryCollapseAnimation = _builder.build(collapseAnimation);\n this._factoryExpandAnimation = _builder.build(expandAnimation);\n }\n\n ngAfterViewChecked(): void {\n this._stylesLoaded = true;\n\n if (!this._player || !this._isAnimationDone) {\n return;\n }\n\n this._player.reset();\n this._renderer.setStyle(this._el.nativeElement, 'height', '*');\n }\n\n /** allows to manually toggle content visibility */\n toggle(): void {\n if (this.isExpanded) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /** allows to manually hide content */\n hide(): void {\n this.isCollapsing = true;\n this.isExpanded = false;\n this.isCollapsed = true;\n this.isCollapsing = false;\n\n this.collapses.emit(this);\n\n this._isAnimationDone = false;\n\n this.animationRun(\n this.isAnimated,\n this._COLLAPSE_ACTION_NAME\n )(() => {\n this._isAnimationDone = true;\n if (this.collapseNewValue !== this.isCollapsed && this.isAnimated) {\n this.show();\n\n return;\n }\n this.collapsed.emit(this);\n this._renderer.setStyle(this._el.nativeElement, 'display', 'none');\n });\n }\n /** allows to manually show collapsed content */\n show(): void {\n this._renderer.setStyle(this._el.nativeElement, 'display', this._display);\n\n this.isCollapsing = true;\n this.isExpanded = true;\n this.isCollapsed = false;\n this.isCollapsing = false;\n\n this.expands.emit(this);\n\n this._isAnimationDone = false;\n this.animationRun(\n this.isAnimated,\n this._EXPAND_ACTION_NAME\n )(() => {\n this._isAnimationDone = true;\n if (this.collapseNewValue !== this.isCollapsed && this.isAnimated) {\n this.hide();\n\n return;\n }\n this.expanded.emit(this);\n this._renderer.removeStyle(this._el.nativeElement, 'overflow');\n });\n }\n\n animationRun(isAnimated: boolean, action: string) {\n if (!isAnimated || !this._stylesLoaded) {\n return (callback: () => void) => callback();\n }\n\n this._renderer.setStyle(this._el.nativeElement, 'overflow', 'hidden');\n this._renderer.addClass(this._el.nativeElement, 'collapse');\n\n const factoryAnimation =\n action === this._EXPAND_ACTION_NAME\n ? this._factoryExpandAnimation\n : this._factoryCollapseAnimation;\n\n if (this._player) {\n this._player.destroy();\n }\n\n this._player = factoryAnimation.create(this._el.nativeElement);\n this._player.play();\n\n return (callback: () => void) => this._player?.onDone(callback);\n }\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\n\n/**\n * A directive for applying styling to a textarea element.\n *\n * Example:\n *\n * ```html\n * <textarea ofeTextAreaInput></textarea>\n * ```\n *\n * See the [vanilla carbon docs](http://www.carbondesignsystem.com/components/text-input/code) for more detail.\n */\n@Directive({\n selector: '[ofeTextAreaInput]'\n})\nexport class TextAreaDirective {\n /**\n * `light` or `dark` input theme\n */\n @Input() theme: 'light' | 'dark' = 'dark';\n\n @HostBinding('class.cds--text-area') baseClass = true;\n @HostBinding('class.cds--text-area--invalid') @Input() invalid = false;\n @HostBinding('class.cds--skeleton') @Input() skeleton = false;\n @HostBinding('class.cds--text-area--light') get isLightTheme() {\n return this.theme === 'light';\n }\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\n\n/**\n * A directive for applying styling to an input element.\n *\n * Example:\n *\n * ```html\n * <input ofeTextInput/>\n * ```\n *\n * See the [vanilla carbon docs](http://www.carbondesignsystem.com/components/text-input/code) for more detail.\n */\n@Directive({\n selector: '[ofeTextInput]'\n})\nexport class TextInputDirective {\n /**\n * `light` or `dark` input theme\n */\n @Input() theme: 'light' | 'dark' = 'dark';\n\n /**\n * Input field render size\n */\n @Input() size: 'sm' | 'md' | 'xl' = 'md';\n\n @HostBinding('class.cds--text-input') inputClass = true;\n\n @HostBinding('class.cds--text-input--xl') get isSizeXl() {\n return this.size === 'xl';\n }\n @HostBinding('class.cds--text-input--sm') get isSizeSm() {\n return this.size === 'sm';\n }\n\n @HostBinding('class.cds--text-input--invalid')\n @Input()\n invalid = false;\n\n @HostBinding('class.cds--text-input__field-wrapper--warning')\n @Input()\n warn = false;\n\n @HostBinding('class.cds--skeleton') @Input() skeleton = false;\n\n @HostBinding('class.cds--text-input--light') get isLightTheme() {\n return this.theme === 'light';\n }\n}\n","import {\n Component,\n OnInit,\n Input,\n Inject,\n OnChanges,\n SimpleChanges\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport * as _ from 'lodash';\n\nimport { DataSources } from '../data-sources/data-sources';\nimport { NodeBase, LeafNode, GroupNode } from '../form-factory/form-node';\nimport { AfeFormGroup } from '../../abstract-controls-extension/afe-form-group';\nimport { ValidationFactory } from '../form-factory/validation.factory';\nimport { DataSource } from '../question-models/interfaces/data-source';\nimport { FormErrorsService } from '../services/form-errors.service';\nimport { QuestionGroup } from '../question-models/group-question';\nimport { ValidationErrors } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'ofe-form-renderer',\n templateUrl: 'form-renderer.component.html',\n styleUrls: ['../../style/app.css', './form-renderer.component.css']\n})\nexport class FormRendererComponent implements OnInit, OnChanges {\n @Input() public parentComponent: FormRendererComponent;\n @Input() public node: NodeBase;\n @Input() public parentGroup: AfeFormGroup;\n @Input() public theme = 'light';\n @Input() public labelMap: Object;\n @Input() public controlId: String = '';\n public childComponents: FormRendererComponent[] = [];\n public showTime: boolean;\n public showWeeks: boolean;\n public activeTab: number;\n public dataSource: DataSource;\n public isCollapsed = false;\n public auto: any;\n public followFocus = true;\n public cacheActive = false;\n public isNavigation = true;\n public type = 'default';\n inlineDatePicker: Date = new Date();\n\n constructor(\n private validationFactory: ValidationFactory,\n private dataSources: DataSources,\n private formErrorsService: FormErrorsService,\n public translate: TranslateService,\n @Inject(DOCUMENT) private document: any\n ) {\n this.activeTab = 0;\n }\n\n public ngOnInit() {\n this.setUpRemoteSelect();\n this.setUpFileUpload();\n this.loadLabels();\n if (this.node && this.node.form) {\n const tab = this.node.form.valueProcessingInfo.lastFormTab;\n if (tab && tab !== this.activeTab) {\n this.activeTab = tab;\n }\n }\n if (this.node && this.node.question.renderingType === 'form') {\n this.formErrorsService.announceErrorField$.subscribe((error) => {\n this.scrollToControl(error);\n });\n }\n\n if (this.node && this.node.question.renderingType === 'section') {\n this.isCollapsed = !(this.node.question as QuestionGroup).isExpanded;\n }\n\n if (this.parentComponent) {\n this.parentComponent.addChildComponent(this);\n }\n\n if (\n this.node &&\n this.node.question.renderingType === 'repeating' &&\n this?.node?.question?.extras?.questionOptions?.min >= 0\n ) {\n for (\n let index = this.node.children.length;\n index < this.node.question.extras.questionOptions.min;\n index++\n ) {\n this.node.createChildNode();\n }\n }\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.labelMap) {\n this.loadLabels();\n }\n }\n\n public addChildComponent(child: FormRendererComponent) {\n this.childComponents.push(child);\n }\n\n public setUpRemoteSelect() {\n if (\n this.node &&\n this.node.question.extras &&\n this.node.question.renderingType === 'remote-select'\n ) {\n this.dataSource = this.dataSources.dataSources[\n this.node.question.dataSource\n ];\n\n if (this.dataSource && this.node.question.dataSourceOptions) {\n this.dataSource.dataSourceOptions = this.node.question.dataSourceOptions;\n }\n }\n }\n\n public setUpFileUpload() {\n if (\n this.node &&\n this.node.question.extras &&\n this.node.question.renderingType === 'file'\n ) {\n this.dataSource = this.dataSources.dataSources[\n this.node.question.dataSource\n ];\n }\n }\n\n public loadLabels() {\n if (\n !this.node.question.label &&\n this.labelMap[this.node.question.extras?.questionOptions?.concept]\n ) {\n this.node.question.label = this.labelMap[\n this.node.question.extras.questionOptions.concept\n ];\n }\n if (this.node.question.options) {\n this.node.question.options.forEach((option) => {\n if (!option.label && this.labelMap[option.value]) {\n option.label = this.labelMap[option.value];\n }\n });\n }\n }\n\n checkSection(node: NodeBase) {\n if (node.question.renderingType === 'section') {\n let groupChildrenHidden = false;\n const allSectionControlsHidden = Object.keys(node.children).every((k) => {\n const innerNode = node.children[k];\n if (innerNode instanceof GroupNode) {\n groupChildrenHidden = Object.keys(innerNode.children).every(\n (i) => innerNode.children[i].control.hidden\n );\n }\n return node.children[k].control.hidden || groupChildrenHidden;\n });\n return !allSectionControlsHidden;\n }\n return true;\n }\n\n public clickTab(tabNumber: number) {\n this.activeTab = tabNumber;\n }\n\n public loadPreviousTab() {\n if (!this.isCurrentTabFirst()) {\n this.clickTab(this.activeTab - 1);\n document.body.scrollTop = 0;\n }\n }\n\n public isCurrentTabFirst() {\n return this.activeTab === 0;\n }\n\n public isCurrentTabLast() {\n return this.activeTab === this.node.question['questions'].length - 1;\n }\n\n public loadNextTab() {\n if (!this.isCurrentTabLast()) {\n this.clickTab(this.activeTab + 1);\n document.body.scrollTop = 0;\n }\n }\n public tabSelected($event) {\n this.activeTab = $event;\n this.setPreviousTab();\n }\n public setPreviousTab() {\n if (this.node && this.node.form) {\n this.node.form.valueProcessingInfo['lastFormTab'] = this.activeTab;\n }\n }\n public hasErrors() {\n return (\n this.node.control.touched &&\n !this.node.control.valid &&\n this.node.control.disablers.length === 0\n );\n }\n\n public errors() {\n return this.getErrors(this.node);\n }\n\n public scrollToControl(error: string) {\n const tab: number = +error.split(',')[0];\n const elSelector = error.split(',')[1] + 'id';\n\n // the tab components\n const tabComponent: FormRendererComponent = this.childComponents[tab];\n\n this.clickTab(tab);\n\n setTimeout(() => {\n // expand all sections\n tabComponent.childComponents.forEach((section) => {\n section.isCollapsed = false;\n\n setTimeout(() => {\n const element: any = this.document.getElementById(elSelector);\n if (element !== null && element.focus) {\n element.focus();\n element.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n }, 100);\n });\n }, 200);\n }\n\n public onDateChanged(node: LeafNode) {\n this.node = node;\n }\n\n public upload(event) {\n // TO DO Add upload functionality\n }\n\n public toggleInformation(infoId) {\n const e = document.getElementById(infoId);\n\n if (e.style.display === 'block') {\n e.style.display = 'none';\n } else {\n e.style.display = 'block';\n }\n }\n private getErrors(node: NodeBase) {\n const errors: ValidationErrors = node.control.errors;\n\n if (errors) {\n return this.validationFactory.errors(errors, node.question);\n }\n\n return [];\n }\n\n showErrors() {\n return !this.node.form.valid && this.node.form.showErrors;\n }\n\n get errorNodes() {\n const invalidControls = this.node.form.markInvalidControls(\n this.node.form.rootNode,\n []\n );\n return invalidControls;\n }\n\n getControlError(node: LeafNode) {\n const errors: any = node.control.errors;\n\n if (errors) {\n return this.validationFactory.errors(errors, node.question);\n }\n\n return [];\n }\n\n announceErrorField(errorNode: LeafNode) {\n const nodes: Array<NodeBase> = this.node.form.searchNodeByQuestionId(\n errorNode.path.substring(0, errorNode.path.indexOf('.'))\n );\n\n _.forEach(nodes, (node: NodeBase) => {\n if (node.question.renderingType === 'page') {\n const pageIndex: number = this.getPageIndex(node);\n this.formErrorsService.announceErrorField(\n pageIndex + ',' + errorNode.question.key\n );\n }\n });\n }\n\n getPageIndex(node: NodeBase) {\n const questionGroup: QuestionGroup = this.node.form.rootNode\n .question as QuestionGroup;\n return questionGroup.questions.indexOf(node.question);\n }\n}\n","<!--CONTAINERS-->\n<div *ngIf=\"node.question.renderingType === 'form'\">\n <ofe-tab-set (tabSelect)=\"tabSelected($event)\" [selectedIndex]=\"activeTab\">\n <ofe-tab\n [tabTitle]=\"question.label | translate\"\n *ngFor=\"let question of node.question.questions; let i = index\"\n >\n <ofe-form-renderer\n [node]=\"node.children[question.key] | translate\"\n [parentComponent]=\"this\"\n [parentGroup]=\"node.control\"\n [labelMap]=\"labelMap\"\n >\n </ofe-form-renderer>\n </ofe-tab>\n <div *ngIf=\"showErrors()\" class=\"container\">\n <div\n data-notification\n *ngFor=\"let errorNode of errorNodes\"\n class=\"cds--inline-notification cds--inline-notification--error cds--inline-notification--low-contrast pointer\"\n role=\"alert\"\n (click)=\"announceErrorField(errorNode)\"\n >\n <div class=\"cds--inline-notification__details\">\n <div class=\"cds--inline-notification__text-wrapper\">\n <p class=\"cds--inline-notification__title\">\n {{ errorNode.question.label | translate }}\n </p>\n <p class=\"cds--inline-notification__subtitle\">\n {{ getControlError(errorNode | translate) }}\n </p>\n </div>\n </div>\n <button\n tabindex=\"0\"\n class=\"cds--inline-notification__action-button cds--btn cds--btn--sm cds--btn--ghost\"\n type=\"button\"\n >\n {{ 'fix' | translate }}\n </button>\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n style=\"will-change: transform\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"cds--inline-notification__icon\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M10,1c-5,0-9,4-9,9s4,9,9,9s9-4,9-9S15,1,10,1z M13.5,14.5l-8-8l1-1l8,8L13.5,14.5z\"\n ></path>\n <path\n d=\"M13.5,14.5l-8-8l1-1l8,8L13.5,14.5z\"\n data-icon-path=\"inner-path\"\n opacity=\"0\"\n ></path>\n </svg>\n </div>\n </div>\n </ofe-tab-set>\n</div>\n<div *ngIf=\"node.question.renderingType === 'page'\">\n <!--Page Components-->\n <ofe-custom-component-wrapper\n [dark]=\"theme === 'light'\"\n [componentConfigs]=\"node.question.componentConfigs\"\n >\n </ofe-custom-component-wrapper>\n <ofe-form-renderer\n *ngFor=\"let question of node.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"node.children[question.key]\"\n [parentGroup]=\"parentGroup\"\n [labelMap]=\"labelMap\"\n ></ofe-form-renderer>\n</div>\n<div *ngIf=\"node.question.renderingType === 'section' && checkSection(node)\">\n <div\n class=\"cds--accordion__item\"\n [ngClass]=\"{ 'cds--accordion__item--active': !isCollapsed }\"\n >\n <button\n class=\"cds--accordion__heading\"\n type=\"button\"\n [attr.aria-expanded]=\"isCollapsed ? 'false' : 'true'\"\n aria-controls=\"accordion-item-0\"\n (click)=\"isCollapsed = !isCollapsed\"\n >\n <svg\n class=\"cds--accordion__arrow\"\n ibmIcon=\"chevron--right\"\n size=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n aria-hidden=\"true\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n >\n <path d=\"M11 8L6 13 5.3 12.3 9.6 8 5.3 3.7 6 3z\"></path>\n </svg>\n <p class=\"cds--accordion__title\">\n {{ node.question.label | translate }}\n </p>\n </button>\n <div ofeCollapse=\"isCollapsed\">\n <!--Section Components-->\n <ofe-custom-component-wrapper\n [dark]=\"theme === 'light'\"\n [componentConfigs]=\"node.question.componentConfigs\"\n >\n </ofe-custom-component-wrapper>\n <div\n class=\"cds--accordion__content accordion-content-override\"\n [ngClass]=\"{\n 'accordion-content-dark': theme === 'light'\n }\"\n >\n <ofe-form-renderer\n *ngFor=\"let question of node.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"node.children[question.key]\"\n [parentGroup]=\"parentGroup\"\n [labelMap]=\"labelMap\"\n ></ofe-form-renderer>\n </div>\n </div>\n </div>\n</div>\n\n<!-- MESSAGES -->\n<div\n *ngIf=\"node.control && node.control.alert && node.control.alert !== ''\"\n class=\"alert alert-warning\"\n>\n <a class=\"close\" data-dismiss=\"alert\">×</a> {{ node.control.alert }}\n</div>\n\n<!--CONTROLS-->\n\n<div\n *ngIf=\"node.question.controlType === 0\"\n [formGroup]=\"parentGroup\"\n [hidden]=\"node.control.hidden\"\n [ngClass]=\"{ disabled: node.control.disabled }\"\n>\n <ofe-custom-component-wrapper\n [dark]=\"!(theme === 'light')\"\n [componentConfigs]=\"node.question.componentConfigs\"\n >\n </ofe-custom-component-wrapper>\n <div class=\"cds--form-item\">\n <!--LEAF CONTROL-->\n <div class=\"question-area\">\n <a\n class=\"form-tooltip pull-right\"\n (click)=\"toggleInformation(node.question.extras.id)\"\n data-placement=\"right\"\n *ngIf=\"\n node.question &&\n node.question.extras.questionInfo &&\n node.question.extras.questionInfo !== '' &&\n node.question.extras.questionInfo !== ' '\n \"\n >\n <i class=\"glyphicon glyphicon-question-sign\" aria-hidden=\"true\"></i>\n </a>\n\n <label\n *ngIf=\"node.question.label\"\n [style.color]=\"hasErrors() ? 'red' : ''\"\n class=\"cds--label\"\n [attr.for]=\"node.question.key | translate\"\n >\n {{ node.question.required ? '*' : '' }}\n {{ node.question.prefix ? node.question.prefix + ' ' : '' }}\n {{ node.question.label | translate }}\n </label>\n\n <div\n *ngIf=\"\n node.question.extras.questionOptions.customControl;\n else nativeControls\n \"\n >\n <ofe-custom-control-wrapper\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n [question]=\"node.question\"\n >\n </ofe-custom-control-wrapper>\n </div>\n\n <ng-template #nativeControls>\n <div class=\"afe-control\" [ngSwitch]=\"node.question.renderingType\">\n <ofe-select\n [theme]=\"theme\"\n *ngSwitchCase=\"'select'\"\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n >\n <option\n *ngFor=\"let option of node.question.options\"\n [value]=\"option.value\"\n >\n {{ option.label | translate }}\n </option>\n </ofe-select>\n\n <div *ngSwitchCase=\"'file'\">\n <ofe-file-upload\n [dataSource]=\"dataSource\"\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n (fileChanged)=\"upload($event)\"\n >\n </ofe-file-upload>\n </div>\n\n <textarea\n [theme]=\"theme\"\n ofeTextAreaInput\n [ngClass]=\"{\n 'cds--text-area--light': theme === 'light',\n 'cds--text-area--invalid': !node.control.valid\n }\"\n [placeholder]=\"node.question.placeholder | translate\"\n [rows]=\"node.question.rows\"\n class=\"cds--text-area\"\n *ngSwitchCase=\"'textarea'\"\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n [readOnly]=\"node.question.extras.readOnly\"\n >\n </textarea>\n\n <ofe-remote-select\n [theme]=\"theme\"\n *ngSwitchCase=\"'remote-select'\"\n [placeholder]=\"node.question.placeholder | translate\"\n tabindex=\"0\"\n [dataSource]=\"dataSource\"\n [componentID]=\"node.question.key + 'id'\"\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n ></ofe-remote-select>\n\n <ofe-ngx-date-time-picker\n [weeks]=\"node.question.extras.questionOptions.weeksList\"\n [showWeeks]=\"node.question.showWeeksAdder\"\n [theme]=\"theme\"\n [id]=\"node.question.key + 'id'\"\n [formControlName]=\"node.question.key\"\n *ngSwitchCase=\"'date'\"\n [datePickerFormat]=\"node.question.datePickerFormat\"\n >\n </ofe-ngx-date-time-picker>\n <ng-select\n [ngClass]=\"{ 'afe-custom': theme === 'light' }\"\n [id]=\"node.question.key + 'id'\"\n *ngSwitchCase=\"'multi-select'\"\n [multiple]=\"true\"\n [appendTo]=\"'form'\"\n placeholder=\"\"\n clearAllText=\"Clear\"\n [formControlName]=\"node.question.key\"\n >\n <ng-option\n *ngFor=\"let option of node.question.options\"\n [value]=\"option.value\"\n >\n {{ option.label | translate }}\n </ng-option>\n </ng-select>\n\n <ng-select\n [ngClass]=\"{ 'afe-custom': theme === 'light' }\"\n [id]=\"node.question.key + 'id'\"\n *ngSwitchCase=\"'single-select'\"\n placeholder=\"\"\n clearAllText=\"Clear\"\n [formControlName]=\"node.question.key\"\n >\n <ng-option\n *ngFor=\"let option of node.question.options\"\n [value]=\"option.value\"\n >\n {{ option.label | translate }}\n </ng-option>\n </ng-select>\n\n <ofe-number-input\n [theme]=\"theme\"\n *ngSwitchCase=\"'number'\"\n [id]=\"node.question.key + 'id'\"\n [min]=\"node.question.extras.questionOptions.min\"\n [max]=\"node.question.extras.questionOptions.max\"\n [maxlength]=\"node.question.extras.questionOptions.maxLength\"\n [minlength]=\"node.question.extras.questionOptions.minLength\"\n [formControlName]=\"node.question.key\"\n [attr.placeholder]=\"node.question.placeholder | translate\"\n >\n </ofe-number-input>\n\n <input\n [theme]=\"theme\"\n class=\"cds--text-input\"\n ofeTextInput\n *ngSwitchDefault\n [formControlName]=\"node.question.key\"\n [attr.placeholder]=\"node.question.placeholder | translate\"\n [type]=\"node.question.renderingType\"\n [id]=\"node.question.key + 'id'\"\n [readOnly]=\"node.question.extras.readOnly\"\n />\n\n <div *ngSwitchCase=\"'radio'\">\n <ofe-radio-button\n [id]=\"node.question.key + 'id'\"\n [formControlName]=\"node.question.key\"\n [options]=\"node.question.options\"\n [allowUnselect]=\"node.question.allowUnselect\"\n [selected]=\"node.control.value\"\n [orientation]=\"node.question.orientation\"\n ></ofe-radio-button>\n </div>\n\n <div *ngSwitchCase=\"'checkbox'\">\n <ofe-checkbox\n [id]=\"node.question.key + 'id' + controlId\"\n [formControlName]=\"node.question.key\"\n [options]=\"node.question.options\"\n [selected]=\"node.control.value\"\n ></ofe-checkbox>\n </div>\n\n <div\n *ngIf=\"\n node.question.enableHistoricalValue &&\n node.question.historicalDisplay\n \"\n style=\"margin-top: 2px\"\n >\n <div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-xs-9\">\n <span class=\"text-warning\"\n >{{ 'previousValue' | translate }}:\n </span>\n <strong>{{ node.question.historicalDisplay?.text }}</strong>\n <span *ngIf=\"node.question.showHistoricalValueDate\">\n <span> | </span>\n <strong class=\"text-primary\"\n >{{ node.question.historicalDisplay?._date | date }}\n </strong>\n <span\n class=\"text-primary\"\n *ngIf=\"\n node.question.historicalDisplay &&\n node.question.historicalDisplay._date\n \"\n >\n ({{\n node.question.historicalDisplay._date | timeAgo\n }})</span\n >\n </span>\n </div>\n <button\n type=\"button\"\n [name]=\"'historyValue'\"\n class=\"cds--btn cds--btn--primary cds--btn--sm col-xs-3\"\n >\n {{ 'useValue' | translate }}\n </button>\n </div>\n </div>\n </div>\n <ofe-appointments-overview [node]=\"node\"></ofe-appointments-overview>\n <div *ngIf=\"hasErrors()\">\n <div *ngFor=\"let e of errors()\">\n <span class=\"text-danger\">{{ e }}</span>\n </div>\n </div>\n </div>\n </ng-template>\n\n <div\n class=\"question-info col-md-12 col-lg-12 col-sm-12\"\n id=\"{{ node.question.extras.id }}\"\n *ngIf=\"\n node.question &&\n node.question.extras.questionInfo &&\n node.question.extras.questionInfo !== '' &&\n node.question.extras.questionInfo !== ' '\n \"\n >\n {{ node.question.extras.questionInfo | translate }}\n </div>\n </div>\n </div>\n</div>\n<div\n *ngIf=\"node.question.controlType === 1\"\n [hidden]=\"node.control.hidden\"\n [ngClass]=\"{ disabled: node.control.disabled }\"\n>\n <!--ARRAY CONTROL-->\n <div [ngSwitch]=\"node.question.renderingType\">\n <div class=\"well\" style=\"padding: 2px\" *ngSwitchCase=\"'repeating'\">\n <h4 style=\"margin: 2px; font-weight: bold\">\n {{ node.question.label | translate }}\n </h4>\n <div>\n <label\n class=\"cds--label\"\n *ngIf=\"node.question.extras.questionOptions.min\"\n style=\"margin-right: 2px\"\n >min: {{ node.question.extras.questionOptions.min }}</label\n >\n <label\n class=\"cds--label\"\n *ngIf=\"node.question.extras.questionOptions.max\"\n >max: {{ node.question.extras.questionOptions.max }}</label\n >\n </div>\n <hr\n style=\"\n margin-left: -2px;\n margin-right: -2px;\n margin-bottom: 4px;\n margin-top: 8px;\n border-width: 2px;\n \"\n />\n <div [ngSwitch]=\"node.question.extras.type\">\n <div *ngSwitchCase=\"'testOrder'\">\n <div *ngFor=\"let child of node.children; let i = index\">\n <ofe-form-renderer\n *ngFor=\"let question of child.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"child.children[question.key]\"\n [parentGroup]=\"child.control\"\n [labelMap]=\"labelMap\"\n ></ofe-form-renderer>\n <div>{{ child.orderNumber }}</div>\n <button\n type=\"button \"\n class=\"cds--btn cds--btn--danger cds--btn--sm\"\n (click)=\"node.removeAt(i)\"\n >\n {{ 'remove' | translate }}\n </button>\n <br />\n <hr\n style=\"\n margin-left: -2px;\n margin-right: -2px;\n margin-bottom: 4px;\n margin-top: 8px;\n border-width: 1px;\n \"\n />\n </div>\n </div>\n\n <div *ngSwitchCase=\"'diagnosis'\">\n <div *ngFor=\"let child of node.children; let i = index\">\n <ofe-form-renderer\n *ngFor=\"let question of child.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"child.children[question.key]\"\n [parentGroup]=\"child.control\"\n [labelMap]=\"labelMap\"\n ></ofe-form-renderer>\n <button\n type=\"button \"\n class=\"cds--btn cds--btn--danger cds--btn--sm\"\n (click)=\"node.removeAt(i)\"\n >\n {{ 'remove' | translate }}\n </button>\n <br />\n <hr\n style=\"\n margin-left: -2px;\n margin-right: -2px;\n margin-bottom: 4px;\n margin-top: 8px;\n border-width: 1px;\n \"\n />\n </div>\n </div>\n\n <div *ngSwitchCase=\"'obsGroup'\" style=\"margin-bottom: 20px\">\n <div *ngFor=\"let child of node.children; let i = index\">\n <ofe-form-renderer\n *ngFor=\"let question of child.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"child.children[question.key]\"\n [parentGroup]=\"child.control\"\n [labelMap]=\"labelMap\"\n [controlId]=\"i\"\n ></ofe-form-renderer>\n <button\n type=\"button\"\n style=\"width: 100px\"\n class=\"cds--btn cds--btn--danger cds--btn--sm\"\n (click)=\"node.removeAt(i)\"\n >\n {{ 'remove' | translate }}\n </button>\n <br />\n <hr\n style=\"\n margin-left: -2px;\n margin-right: -2px;\n margin-bottom: 4px;\n margin-top: 8px;\n border-width: 1px;\n \"\n />\n </div>\n </div>\n </div>\n <button\n type=\"button\"\n class=\"cds--btn cds--btn--primary cds--btn--sm\"\n (click)=\"node.createChildNode()\"\n [ngClass]=\"{\n disabled:\n node.children.length >= node.question.extras.questionOptions.max\n }\"\n >\n {{ 'add' | translate }}\n </button>\n </div>\n </div>\n</div>\n<div\n *ngIf=\"node.question.controlType === 2\"\n [hidden]=\"node.control.hidden\"\n [ngClass]=\"{ disabled: node.control.disabled }\"\n>\n <!--GROUP-->\n <div [ngSwitch]=\"node.question.renderingType\">\n <div *ngSwitchCase=\"'group'\">\n <ofe-form-renderer\n *ngFor=\"let question of node.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"node.children[question.key]\"\n [parentGroup]=\"node.control\"\n [labelMap]=\"labelMap\"\n ></ofe-form-renderer>\n </div>\n <div\n *ngSwitchCase=\"'field-set'\"\n style=\"border: 1px solid #eeeeee; padding: 2px; margin: 2px\"\n >\n <ofe-form-renderer\n *ngFor=\"let question of node.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"node.children[question.key]\"\n [parentGroup]=\"node.control\"\n [labelMap]=\"labelMap\"\n ></ofe-form-renderer>\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport * as _ from 'lodash';\n\nimport { Form } from '../form-factory/form';\nimport { ValidationFactory } from '../form-factory/validation.factory';\nimport { NodeBase, LeafNode } from '../form-factory/form-node';\nimport { QuestionGroup } from '../question-models/group-question';\nimport { FormErrorsService } from '../services/form-errors.service';\n\n@Component({\n selector: 'ofe-error-renderer',\n templateUrl: 'error-renderer.component.html',\n styleUrls: ['./error-renderer.component.css']\n})\nexport class ErrorRendererComponent {\n @Input() form: Form;\n\n constructor(\n private validationFactory: ValidationFactory,\n private formErrorsService: FormErrorsService\n ) {}\n\n showErrors() {\n return !this.form.valid && this.form.showErrors;\n }\n\n get errorNodes() {\n const invalidControls = this.form.markInvalidControls(\n this.form.rootNode,\n []\n );\n return invalidControls;\n }\n\n getControlError(node: LeafNode) {\n const errors: any = node.control.errors;\n\n if (errors) {\n return this.validationFactory.errors(errors, node.question);\n }\n\n return [];\n }\n\n announceErrorField(errorNode: LeafNode) {\n const nodes: Array<NodeBase> = this.form.searchNodeByQuestionId(\n errorNode.path.substring(0, errorNode.path.indexOf('.'))\n );\n\n _.forEach(nodes, (node: NodeBase) => {\n if (node.question.renderingType === 'page') {\n const pageIndex: number = this.getPageIndex(node);\n this.formErrorsService.announceErrorField(\n pageIndex + ',' + errorNode.question.key\n );\n }\n });\n }\n\n getPageIndex(node: NodeBase) {\n const questionGroup: QuestionGroup = this.form.rootNode\n .question as QuestionGroup;\n return questionGroup.questions.indexOf(node.question);\n }\n}\n","<div *ngIf=\"showErrors()\" class=\"container\">\n <div\n data-notification\n *ngFor=\"let errorNode of errorNodes\"\n class=\"cds--inline-notification cds--inline-notification--error cds--inline-notification--low-contrast pointer\"\n role=\"alert\"\n (click)=\"announceErrorField(errorNode)\"\n >\n <div class=\"cds--inline-notification__details\">\n <div class=\"cds--inline-notification__text-wrapper\">\n <p class=\"cds--inline-notification__title\">\n {{ errorNode.question.label }}\n </p>\n <p class=\"cds--inline-notification__subtitle\">\n {{ getControlError(errorNode) }}\n </p>\n </div>\n </div>\n <button\n tabindex=\"0\"\n class=\"cds--inline-notification__action-button cds--btn cds--btn--sm cds--btn--ghost\"\n type=\"button\"\n >\n {{ 'fix' | translate }}\n </button>\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n style=\"will-change: transform\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"cds--inline-notification__icon\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M10,1c-5,0-9,4-9,9s4,9,9,9s9-4,9-9S15,1,10,1z M13.5,14.5l-8-8l1-1l8,8L13.5,14.5z\"\n ></path>\n <path\n d=\"M13.5,14.5l-8-8l1-1l8,8L13.5,14.5z\"\n data-icon-path=\"inner-path\"\n opacity=\"0\"\n ></path>\n </svg>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { NumberInputComponent } from './number-input.component';\nimport { NumberInputDirective } from './number.directive';\n\n@NgModule({\n imports: [CommonModule, FormsModule],\n exports: [NumberInputComponent],\n declarations: [NumberInputComponent, NumberInputDirective],\n providers: []\n})\nexport class NumberInputModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SecurePipe } from './components/file-upload/secure.pipe';\nimport { DataSources } from './form-entry/data-sources/data-sources';\nimport { TranslateModule } from '@ngx-translate/core';\n@NgModule({\n declarations: [SecurePipe],\n imports: [CommonModule],\n exports: [SecurePipe, TranslateModule],\n providers: [DataSources]\n})\nexport class SharedModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FormsModule } from '@angular/forms';\n\nimport { SharedModule } from '../../shared.module';\nimport { FileUploadComponent } from './file-upload.component';\nimport { WebcamModule } from 'ngx-webcam';\nimport { NgxFileUploaderModule } from 'ngx-file-uploader-openmrs';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n SharedModule,\n WebcamModule,\n NgxFileUploaderModule\n ],\n exports: [FileUploadComponent],\n declarations: [FileUploadComponent],\n providers: []\n})\nexport class RemoteFileUploadModule {}\n","/**\n * modal.component\n */\n\nimport {\n Component,\n Output,\n EventEmitter,\n ChangeDetectionStrategy\n} from '@angular/core';\n\n// webpack1_\ndeclare let require: any;\n// const myDpStyles: string = require('./modal.component.css');\n// const myDpTpl: string = require('./modal.component.html');\n// webpack2_\n\n@Component({\n selector: 'ofe-picker-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: []\n})\nexport class ModalComponent {\n @Output() overlayClick = new EventEmitter<boolean>();\n\n constructor() {}\n\n closeModal() {\n this.overlayClick.emit(false);\n }\n}\n","<section class=\"x-modal\">\n <section class=\"modal-overlay\" (click)=\"closeModal()\"></section>\n <section class=\"modal-main\" id=\"section-modal-main\">\n <ng-content></ng-content>\n </section>\n</section>\n","/**\n * moment.pipe\n */\n\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { Moment } from 'moment/moment';\n\n@Pipe({ name: 'moment' })\nexport class MomentPipe implements PipeTransform {\n transform(moment: Moment, format?: string): string {\n return format ? moment.format(format) : moment.format('MMM DD, YYYY');\n }\n}\n","/**\n * date-picker.component\n */\n\nimport { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\nimport _ from 'lodash';\nimport moment, { Moment } from 'moment';\n\n// webpack1_\ndeclare let require: any;\n// const myDpStyles: string = require('./date-picker.component.css');\n// const myDpTpl: string = require('./date-picker.component.html');\n// webpack2_\n\n@Component({\n selector: 'ofe-date-picker',\n templateUrl: './date-picker.component.html',\n styleUrls: ['./date-picker.component.css']\n})\nexport class DatePickerComponent implements OnInit {\n public dayNames: Array<string>;\n\n @Input() public initDate: any;\n @Input() public locale = 'en';\n @Input() public viewFormat = 'll';\n @Input() public returnObject = 'js';\n @Output() public datePickerCancel = new EventEmitter<boolean>();\n @Output() public dateSelect = new EventEmitter<any>();\n\n public calendarDate: Moment;\n public selectedDate: Moment;\n public currentMonth: any;\n public today: Moment;\n public currentYear: number;\n public onDisplayMonths = false;\n public onDisplayYears = false;\n public displayYearsIndex = 0;\n public displayYearRange: Array<number>;\n public fullYearRange: Array<any>;\n public monthsShort: Array<string> = moment.monthsShort();\n public calendarDays: Array<Moment>;\n\n constructor() {}\n\n public ngOnInit(): void {\n this.initValue();\n // default to current year range\n _.each(this.fullYearRange, (v, i) => {\n this.currentYear = this.calendarDate.clone().startOf('year').year();\n if (v.indexOf(this.currentYear) !== -1) {\n this.displayYearsIndex = i;\n }\n });\n this.displayYearRange = this.fullYearRange[this.displayYearsIndex];\n this.generateCalendar();\n }\n\n public prev(): void {\n if (this.onDisplayYears) {\n this.displayYearsIndex--;\n if (this.displayYearsIndex < 0) {\n this.displayYearsIndex = 0;\n }\n this.displayYearRange = this.fullYearRange[this.displayYearsIndex];\n } else {\n this.calendarDate = this.calendarDate.clone().subtract(1, 'M');\n }\n this.generateCalendar();\n }\n\n public showMonthSelection(): void {\n this.onDisplayMonths = true;\n this.onDisplayYears = false;\n }\n\n public showYearSelection(): void {\n this.onDisplayYears = true;\n this.onDisplayMonths = false;\n }\n\n public next(): void {\n if (this.onDisplayYears) {\n this.displayYearsIndex++;\n if (this.displayYearsIndex >= this.fullYearRange.length) {\n this.displayYearsIndex = this.fullYearRange.length - 1;\n }\n this.displayYearRange = this.fullYearRange[this.displayYearsIndex++];\n } else {\n this.calendarDate = this.calendarDate.clone().add(1, 'M');\n }\n this.generateCalendar();\n }\n\n public selectDay(day: Moment): void {\n const daysDifference = day.diff(\n this.calendarDate.clone().startOf('date'),\n 'days'\n );\n day = this.calendarDate.clone().add(daysDifference, 'd');\n const selectedDay = this.parseToReturnObjectType(day);\n this.dateSelect.emit(selectedDay);\n this.cancelDatePicker();\n return;\n }\n\n public selectMonth(month: string) {\n this.calendarDate = this.calendarDate.clone().month(month);\n this.onDisplayMonths = false;\n this.generateCalendar();\n }\n\n public selectYear(year: number) {\n this.calendarDate = this.calendarDate.clone().year(year);\n this.onDisplayYears = false;\n this.generateCalendar();\n }\n\n public selectToday(): void {\n const today = this.parseToReturnObjectType(moment());\n this.dateSelect.emit(today);\n this.cancelDatePicker();\n return;\n }\n\n public clearPickDate(): void {\n this.dateSelect.emit(null);\n this.cancelDatePicker();\n return;\n }\n\n public cancelDatePicker(): void {\n this.datePickerCancel.emit(false);\n return;\n }\n\n protected generateYears(): void {\n const currentYear = moment().year();\n const startYr = this.calendarDate.clone().subtract(100, 'y').year();\n // const endYr = this.calendarDate.clone().add(10, 'y').year();\n const years = [];\n for (let year = startYr; year <= currentYear; year++) {\n years.push(year);\n }\n\n this.fullYearRange = _.chunk(years, 14);\n }\n\n protected initValue() {\n // set moment locale (default is en)\n moment.locale(this.locale);\n // set today value\n this.today = moment().startOf('date');\n this.currentMonth = this.monthsShort[moment().month()];\n this.currentYear = moment().year();\n\n // set week days name array\n this.dayNames = moment.weekdaysShort(true);\n\n // check if the input initDate has value\n if (this.initDate) {\n this.calendarDate =\n this.returnObject === 'string'\n ? moment(this.initDate, this.viewFormat)\n : moment(this.initDate);\n this.selectedDate = this.calendarDate.clone().startOf('date');\n } else {\n this.calendarDate = moment();\n }\n this.generateYears();\n }\n\n protected generateCalendar(): void {\n this.calendarDays = [];\n const start =\n 0 -\n ((this.calendarDate.clone().startOf('month').day() +\n (7 - moment.localeData().firstDayOfWeek())) %\n 7);\n const end = 41 + start; // iterator ending point\n\n for (let i = start; i <= end; i += 1) {\n const day = this.calendarDate.clone().startOf('month').add(i, 'days');\n this.calendarDays.push(day);\n }\n }\n\n protected parseToReturnObjectType(day: Moment): any {\n switch (this.returnObject) {\n case 'js':\n return day.toDate();\n\n case 'string':\n return day.format(this.viewFormat);\n\n case 'moment':\n return day;\n\n case 'json':\n return day.toJSON();\n\n case 'array':\n return day.toArray();\n\n case 'iso':\n return day.toISOString();\n\n case 'object':\n return day.toObject();\n\n default:\n return day;\n }\n }\n}\n","<ofe-picker-modal (overlayClick)=\"cancelDatePicker()\">\n <div class=\"picker-wrap\">\n <div class=\"picker-box\">\n <div class=\"picker-header\">\n <div class=\"picker-header-nav\">\n <span class=\"nav-prev\" (click)=\"prev()\"></span>\n </div>\n <div class=\"picker-header-content\">\n <div class=\"content\">\n <span (click)=\"showMonthSelection()\" class=\"month\">{{\n calendarDate | moment: 'MMMM'\n }}</span>\n <span class=\"seperator\">|</span>\n <span (click)=\"showYearSelection()\" class=\"year\">{{\n calendarDate | moment: 'YYYY'\n }}</span>\n </div>\n </div>\n <div class=\"picker-header-nav\">\n <span class=\"nav-next\" (click)=\"next()\"></span>\n </div>\n </div>\n <div class=\"picker-calendar\">\n <div\n class=\"picker-calendar-row\"\n *ngIf=\"!onDisplayMonths && !onDisplayYears\"\n >\n <span class=\"picker-weekday\" *ngFor=\"let day of dayNames\">{{\n day\n }}</span>\n </div>\n <div\n class=\"picker-calendar-row\"\n *ngIf=\"!onDisplayMonths && !onDisplayYears\"\n >\n <span\n class=\"picker-day\"\n (click)=\"selectDay(day)\"\n [ngClass]=\"{\n 'out-focus': day.month() !== calendarDate.month(),\n today: day.isSame(today),\n selected: day.isSame(selectedDate)\n }\"\n *ngFor=\"let day of calendarDays\"\n >\n {{ day | moment: 'D' }}\n </span>\n </div>\n <div class=\"picker-calendar-row\" *ngIf=\"onDisplayMonths\">\n <span\n class=\"picker-month\"\n *ngFor=\"let month of monthsShort\"\n (click)=\"selectMonth(month)\"\n [ngClass]=\"{\n selected: month === currentMonth\n }\"\n >\n {{ month }}\n </span>\n </div>\n <div class=\"picker-calendar-row\" *ngIf=\"onDisplayYears\">\n <span\n class=\"picker-year\"\n *ngFor=\"let year of displayYearRange\"\n (click)=\"selectYear(year)\"\n [ngClass]=\"{\n selected: year === currentYear\n }\"\n >\n {{ year }}\n </span>\n </div>\n </div>\n <div class=\"picker-footer\">\n <div class=\"picker-action action-today\" (click)=\"selectToday()\">\n <span class=\"text\">Today</span>\n </div>\n <div class=\"picker-action action-clear\" (click)=\"clearPickDate()\">\n <span class=\"text\">Clear</span>\n </div>\n <div class=\"picker-action action-close\" (click)=\"cancelDatePicker()\">\n <span class=\"text\">Close</span>\n </div>\n </div>\n </div>\n </div>\n</ofe-picker-modal>\n","/**\n * time-picker.component\n */\n\nimport { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport moment, { Moment } from 'moment';\n\n// webpack1_\ndeclare let require: any;\n// const myDpStyles: string = require('./time-picker.component.css');\n// const myDpTpl: string = require('./time-picker.component.html');\n// webpack2_\n\n@Component({\n selector: 'ofe-time-picker',\n templateUrl: './time-picker.component.html',\n styleUrls: ['./time-picker.component.css']\n})\nexport class TimePickerComponent implements OnInit {\n @Input() initTime: any;\n @Input() showSecond = true;\n @Input() viewFormat = 'hh:mm A';\n @Input() use12Hour = false;\n @Input() returnObject = 'js';\n @Output() timeSelect = new EventEmitter<any>();\n @Output() timePickerCancel = new EventEmitter<boolean>();\n hourFormat = 'HH';\n public time: Moment;\n\n constructor() {}\n\n ngOnInit(): void {\n if (this.use12Hour) {\n this.hourFormat = 'hh';\n }\n this.time = this.initTime\n ? moment(this.initTime, this.viewFormat)\n : moment();\n\n // check if the input initDate has value\n if (this.initTime) {\n this.time =\n this.returnObject === 'string'\n ? moment(this.initTime, this.viewFormat)\n : moment(this.initTime);\n } else {\n this.time = moment();\n }\n }\n\n increaseHour(): void {\n this.time = this.time.clone().add(1, 'h');\n }\n\n decreaseHour(): void {\n this.time = this.time.clone().subtract(1, 'h');\n }\n\n increaseMinute() {\n this.time = this.time.clone().add(1, 'm');\n }\n\n decreaseMinute() {\n this.time = this.time.clone().subtract(1, 'm');\n }\n\n increaseSecond(): void {\n this.time = this.time.clone().add(1, 's');\n }\n\n decreaseSecond(): void {\n this.time = this.time.clone().subtract(1, 's');\n }\n\n selectTime(): void {\n const selectTime = this.parseToReturnObjectType(this.time);\n this.timeSelect.emit(selectTime);\n this.cancelTimePicker();\n return;\n }\n\n selectNow(): void {\n const selectTime = this.parseToReturnObjectType(moment());\n this.timeSelect.emit(selectTime);\n this.cancelTimePicker();\n return;\n }\n\n clearTime(): void {\n this.timeSelect.emit(null);\n this.cancelTimePicker();\n return;\n }\n\n cancelTimePicker(): void {\n this.timePickerCancel.emit(false);\n return;\n }\n\n protected parseToReturnObjectType(time: Moment): any {\n switch (this.returnObject) {\n case 'js':\n return time.toDate();\n\n case 'string':\n return time.format(this.viewFormat);\n\n case 'moment':\n return time;\n\n case 'json':\n return time.toJSON();\n\n case 'array':\n return time.toArray();\n\n case 'iso':\n return time.toISOString();\n\n case 'object':\n return time.toObject();\n\n default:\n return time;\n }\n }\n}\n","<ofe-picker-modal (overlayClick)=\"cancelTimePicker()\">\n <div class=\"picker-wrap\">\n <div class=\"picker-box\">\n <div class=\"picker-header\">Time Picker</div>\n <div class=\"picker-table\">\n <ul class=\"picker-table-time\">\n <li class=\"picker-table-number hour\">\n <span class=\"arrow up\" (click)=\"increaseHour()\"></span>\n {{ time | moment: hourFormat }}\n <span class=\"arrow down\" (click)=\"decreaseHour()\"></span>\n </li>\n <li class=\"picker-table-separator\">:</li>\n <li class=\"picker-table-number minute\">\n <span class=\"arrow up\" (click)=\"increaseMinute()\"></span>\n {{ time | moment: 'mm' }}\n <span class=\"arrow down\" (click)=\"decreaseMinute()\"></span>\n </li>\n <li *ngIf=\"showSecond\" class=\"picker-table-separator\">:</li>\n <li *ngIf=\"showSecond\" class=\"picker-table-number second\">\n <span class=\"arrow up\" (click)=\"increaseSecond()\"></span>\n {{ time | moment: 'ss' }}\n <span class=\"arrow down\" (click)=\"decreaseSecond()\"></span>\n </li>\n <li *ngIf=\"use12Hour\" class=\"picker-table-meridiem meridiem\">\n {{ time | moment: 'A' }}\n </li>\n </ul>\n </div>\n <div class=\"picker-footer\">\n <div class=\"picker-action action-now\" (click)=\"selectNow()\">\n <span class=\"text\">Now</span>\n </div>\n <div class=\"picker-action action-confirm\" (click)=\"selectTime()\">\n <span class=\"text\">Confirm</span>\n </div>\n <div class=\"picker-action action-clear\" (click)=\"clearTime()\">\n <span class=\"text\">Clear</span>\n </div>\n <div class=\"picker-action action-close\" (click)=\"cancelTimePicker()\">\n <span class=\"text\">Close</span>\n </div>\n </div>\n </div>\n </div>\n</ofe-picker-modal>\n","import {\n Component,\n Input,\n forwardRef,\n EventEmitter,\n Output\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport moment from 'moment';\n\n@Component({\n selector: 'ofe-date-time-picker',\n templateUrl: './date-time-picker.component.html',\n styleUrls: ['./date-time-picker.component.css'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateTimePickerComponent),\n multi: true\n }\n ]\n})\nexport class DateTimePickerComponent implements ControlValueAccessor {\n @Input() modelValue: any;\n @Input() showDate = true;\n @Input() showTime = false;\n @Input() showWeeks = false;\n @Input() weeks: number[] = [2, 4, 6, 8, 12, 16, 24];\n @Output() dateChange = new EventEmitter<any>();\n public showDatePicker = false;\n public showTimePicker = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor() {}\n\n weeksSelected(count) {\n const now = new Date();\n const nextDate = now.setDate(now.getDate() + count * 7);\n this.value = moment(nextDate).format();\n }\n setDate(date: any): void {\n if (date && date !== '') {\n this.value = moment(date).format();\n } else {\n this.value = date;\n }\n }\n\n setTime(time: any): void {\n if (time && time !== '') {\n this.value = moment(time).format();\n } else {\n this.value = time;\n }\n return;\n }\n\n toggleDatePicker(status: boolean): void {\n this.showDatePicker = status;\n /*setTimeout(function() {\n let _body = document.getElementById('content-wrapper').getBoundingClientRect(),\n elem = document.getElementById('section-modal-main');\n if (elem) {\n let elemBox = elem.getBoundingClientRect();\n if (elemBox.bottom > _body.bottom) {\n elem.style.bottom = '36px';\n }\n }\n }, 0);*/\n return;\n }\n\n toggleTimePicker(status: boolean): void {\n this.showTimePicker = status;\n return;\n }\n get value() {\n return this.modelValue;\n }\n\n set value(val) {\n this.modelValue = val;\n this.dateChange.emit(val);\n this.onChange(val);\n this.onTouched();\n }\n\n registerOnChange(fn) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n\n writeValue(value) {\n if (value instanceof Date) {\n this.value = moment(value).format();\n } else {\n this.value = value;\n }\n }\n}\n","<div class=\"row\">\n <div *ngIf=\"!showTime\" class=\"col-xs-12 col-md-12\">\n <input\n *ngIf=\"!showWeeks\"\n type=\"text\"\n class=\"form-control\"\n [value]=\"value | date: 'mediumDate'\"\n (focus)=\"toggleDatePicker(true)\"\n readonly\n placeholder=\"Select Date\"\n />\n <div *ngIf=\"showWeeks\" class=\"input-group\">\n <input\n type=\"text\"\n class=\"form-control\"\n class=\"form-control\"\n [value]=\"value | date: 'mediumDate'\"\n (focus)=\"toggleDatePicker(true)\"\n readonly\n placeholder=\"Select Date\"\n />\n <div class=\"input-group-btn\">\n <button\n type=\"button\"\n class=\"btn btn-default dropdown-toggle\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n {{ 'weeks' | translate }} <span class=\"caret\"></span>\n </button>\n <ul class=\"dropdown-menu up\">\n <li (click)=\"weeksSelected(count)\" *ngFor=\"let count of weeks\">\n <span> {{ count }} {{ 'weeks' | translate }}</span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <div *ngIf=\"showTime\" class=\"col-xs-8 col-md-8\">\n <input\n *ngIf=\"!showWeeks\"\n type=\"text\"\n class=\"form-control\"\n [value]=\"value | date: 'mediumDate'\"\n (focus)=\"toggleDatePicker(true)\"\n readonly\n placeholder=\"Select Date\"\n />\n <div *ngIf=\"showWeeks\" class=\"input-group\">\n <input\n type=\"text\"\n class=\"form-control\"\n class=\"form-control\"\n [value]=\"value | date: 'mediumDate'\"\n (focus)=\"toggleDatePicker(true)\"\n readonly\n placeholder=\"Select Date\"\n />\n <div class=\"input-group-btn\">\n <button\n type=\"button\"\n class=\"btn btn-default dropdown-toggle\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n {{ 'weeks' | translate }} <span class=\"caret\"></span>\n </button>\n <ul class=\"dropdown-menu up\">\n <li (click)=\"weeksSelected(count)\" *ngFor=\"let count of weeks\">\n <span> {{ count }} {{ 'weeks' | translate }}</span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <div *ngIf=\"showTime\" class=\"col-xs-4 col-md-4\">\n <input\n type=\"text\"\n class=\"form-control\"\n [value]=\"value | date: 'shortTime'\"\n (focus)=\"toggleTimePicker(true)\"\n readonly\n placeholder=\"Select Time\"\n />\n </div>\n</div>\n<ofe-date-picker\n *ngIf=\"showDatePicker\"\n [initDate]=\"value\"\n (dateSelect)=\"setDate($event)\"\n (datePickerCancel)=\"toggleDatePicker($event)\"\n></ofe-date-picker>\n\n<ofe-time-picker\n *ngIf=\"showTimePicker\"\n [initTime]=\"value\"\n [use12Hour]=\"true\"\n (timeSelect)=\"setTime($event)\"\n (timePickerCancel)=\"toggleTimePicker($event)\"\n></ofe-time-picker>\n","/**\n * date-time-picker.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DatePickerComponent } from './date-picker/date-picker.component';\nimport { TimePickerComponent } from './time-picker/time-picker.component';\nimport { ModalComponent } from './picker-modal/modal.component';\nimport { MomentPipe } from './pipes/moment.pipe';\nimport { DateTimePickerComponent } from './date-time-picker.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, TranslateModule],\n declarations: [\n DatePickerComponent,\n TimePickerComponent,\n ModalComponent,\n MomentPipe,\n DateTimePickerComponent\n ],\n exports: [\n DatePickerComponent,\n TimePickerComponent,\n ModalComponent,\n MomentPipe,\n DateTimePickerComponent\n ],\n providers: []\n})\nexport class DateTimePickerModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnInit,\n Optional,\n Output,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n OwlDateTime,\n PickerMode,\n PickerType,\n SelectMode\n} from './date-time.class';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\n\nexport const OWL_DATETIME_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OwlDateTimeInlineComponent),\n multi: true\n};\n\n@Component({\n selector: 'ofe-owl-date-time-inline',\n templateUrl: './date-time-inline.component.html',\n styleUrls: ['./date-time-inline.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [OWL_DATETIME_VALUE_ACCESSOR]\n})\nexport class OwlDateTimeInlineComponent<T>\n extends OwlDateTime<T>\n implements OnInit, ControlValueAccessor {\n @HostBinding('class.owl-dt-inline') get owlDTInlineClass() {\n return true;\n }\n\n @ViewChild(OwlDateTimeContainerComponent, { static: true })\n container: OwlDateTimeContainerComponent<T>;\n\n /**\n * Set the type of the dateTime picker\n * 'both' -- show both calendar and timer\n * 'calendar' -- show only calendar\n * 'timer' -- show only timer\n */\n private _pickerType: PickerType = 'both';\n @Input()\n get pickerType(): PickerType {\n return this._pickerType;\n }\n\n set pickerType(val: PickerType) {\n if (val !== this._pickerType) {\n this._pickerType = val;\n }\n }\n\n private _disabled = false;\n @Input()\n get disabled(): boolean {\n return !!this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n private _selectMode: SelectMode = 'single';\n @Input()\n get selectMode() {\n return this._selectMode;\n }\n\n set selectMode(mode: SelectMode) {\n if (\n mode !== 'single' &&\n mode !== 'range' &&\n mode !== 'rangeFrom' &&\n mode !== 'rangeTo'\n ) {\n throw Error('OwlDateTime Error: invalid selectMode value!');\n }\n\n this._selectMode = mode;\n }\n\n /** The date to open the calendar to initially. */\n private _startAt: T | null;\n @Input()\n get startAt(): T | null {\n if (this._startAt) {\n return this._startAt;\n }\n\n if (this.selectMode === 'single') {\n return this.value || null;\n } else if (this.selectMode === 'range' || this.selectMode === 'rangeFrom') {\n return this.values[0] || null;\n } else if (this.selectMode === 'rangeTo') {\n return this.values[1] || null;\n } else {\n return null;\n }\n }\n\n set startAt(date: T | null) {\n this._startAt = this.getValidDate(this.dateTimeAdapter.deserialize(date));\n }\n\n private _dateTimeFilter: (date: T | null) => boolean;\n\n @Input()\n get owlDateTimeFilter() {\n return this._dateTimeFilter;\n }\n\n set dateTimeFilter(filter: (date: T | null) => boolean) {\n this._dateTimeFilter = filter;\n }\n\n /** The minimum valid date. */\n private _min: T | null;\n\n get minDateTime(): T | null {\n return this._min || null;\n }\n\n @Input() min: Date;\n set minDateTime(value: T | null) {\n this._min = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n this.changeDetector.markForCheck();\n }\n\n /** The maximum valid date. */\n private _max: T | null;\n\n get maxDateTime(): T | null {\n return this._max || null;\n }\n\n @Input() max: Date;\n set maxDateTime(value: T | null) {\n this._max = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n this.changeDetector.markForCheck();\n }\n\n private _value: T | null;\n @Input()\n get value() {\n return this._value;\n }\n\n set value(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n value = this.getValidDate(value);\n this._value = value;\n this.selected = value;\n }\n\n private _values: T[] = [];\n @Input()\n get values() {\n return this._values;\n }\n\n set values(values: T[]) {\n if (values && values.length > 0) {\n values = values.map((v) => {\n v = this.dateTimeAdapter.deserialize(v);\n v = this.getValidDate(v);\n return v ? this.dateTimeAdapter.clone(v) : null;\n });\n this._values = [...values];\n this.selecteds = [...values];\n } else {\n this._values = [];\n this.selecteds = [];\n }\n }\n\n /**\n * Emits selected year in multi-year view\n * This doesn't imply a change on the selected date.\n * */\n @Output()\n yearSelected = new EventEmitter<T>();\n\n /**\n * Emits selected month in year view\n * This doesn't imply a change on the selected date.\n * */\n @Output()\n monthSelected = new EventEmitter<T>();\n\n private _selected: T | null;\n get selected() {\n return this._selected;\n }\n\n set selected(value: T | null) {\n this._selected = value;\n this.changeDetector.markForCheck();\n }\n\n private _selecteds: T[] = [];\n get selecteds() {\n return this._selecteds;\n }\n\n set selecteds(values: T[]) {\n this._selecteds = values;\n this.changeDetector.markForCheck();\n }\n\n get opened(): boolean {\n return true;\n }\n\n get pickerMode(): PickerMode {\n return 'inline';\n }\n\n get isInSingleMode(): boolean {\n return this._selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this._selectMode === 'range' ||\n this._selectMode === 'rangeFrom' ||\n this._selectMode === 'rangeTo'\n );\n }\n\n private onModelChange: Function = () => {};\n private onModelTouched: Function = () => {};\n\n constructor(\n protected changeDetector: ChangeDetectorRef,\n @Optional() protected dateTimeAdapter: DateTimeAdapter<T>,\n @Optional()\n @Inject(OWL_DATE_TIME_FORMATS)\n protected dateTimeFormats: OwlDateTimeFormats\n ) {\n super(dateTimeAdapter, dateTimeFormats);\n }\n\n public ngOnInit() {\n this.container.picker = this;\n }\n\n public writeValue(value: any): void {\n if (this.isInSingleMode) {\n this.value = value;\n this.container.pickerMoment = value;\n } else {\n this.values = value;\n this.container.pickerMoment = this._values[\n this.container.activeSelectedIndex\n ];\n }\n }\n\n public registerOnChange(fn: any): void {\n this.onModelChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.onModelTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public select(date: T[] | T): void {\n if (this.disabled) {\n return;\n }\n\n if (Array.isArray(date)) {\n this.values = [...date];\n } else {\n this.value = date;\n }\n this.onModelChange(date);\n this.onModelTouched();\n }\n\n /**\n * Emits the selected year in multi-year view\n * */\n public selectYear(normalizedYear: T): void {\n this.yearSelected.emit(normalizedYear);\n }\n\n /**\n * Emits selected month in year view\n * */\n public selectMonth(normalizedMonth: T): void {\n this.monthSelected.emit(normalizedMonth);\n }\n}\n","<ofe-owl-date-time-container></ofe-owl-date-time-container>\n","/**\n * dialog.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport {\n OWL_DIALOG_SCROLL_STRATEGY_PROVIDER,\n OwlDialogService\n} from './dialog.service';\nimport { OwlDialogContainerComponent } from './dialog-container.component';\n\n@NgModule({\n imports: [CommonModule, A11yModule, OverlayModule, PortalModule],\n exports: [],\n declarations: [OwlDialogContainerComponent],\n providers: [OWL_DIALOG_SCROLL_STRATEGY_PROVIDER, OwlDialogService],\n entryComponents: [OwlDialogContainerComponent]\n})\nexport class OwlDialogModule {}\n","/**\n * date-time.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { OwlDateTimeTriggerDirective } from './date-time-picker-trigger.directive';\nimport {\n OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER,\n OwlDateTimeComponent\n} from './date-time-picker.component';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\nimport { OwlDateTimeInputDirective } from './date-time-picker-input.directive';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { OwlMonthViewComponent } from './calendar-month-view.component';\nimport { OwlCalendarBodyComponent } from './calendar-body.component';\nimport { OwlYearViewComponent } from './calendar-year-view.component';\nimport { OwlMultiYearViewComponent } from './calendar-multi-year-view.component';\nimport { OwlTimerBoxComponent } from './timer-box.component';\nimport { OwlTimerComponent } from './timer.component';\nimport { NumberFixedLenPipe } from './numberedFixLen.pipe';\nimport { OwlCalendarComponent } from './calendar.component';\nimport { OwlDateTimeInlineComponent } from './date-time-inline.component';\nimport { OwlDialogModule } from '../dialog/dialog.module';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n OwlDialogModule,\n A11yModule,\n TranslateModule\n ],\n exports: [\n OwlCalendarComponent,\n OwlTimerComponent,\n OwlDateTimeTriggerDirective,\n OwlDateTimeInputDirective,\n OwlDateTimeComponent,\n OwlDateTimeInlineComponent,\n OwlMultiYearViewComponent,\n OwlYearViewComponent,\n OwlMonthViewComponent\n ],\n declarations: [\n OwlDateTimeTriggerDirective,\n OwlDateTimeInputDirective,\n OwlDateTimeComponent,\n OwlDateTimeContainerComponent,\n OwlMultiYearViewComponent,\n OwlYearViewComponent,\n OwlMonthViewComponent,\n OwlTimerComponent,\n OwlTimerBoxComponent,\n OwlCalendarComponent,\n OwlCalendarBodyComponent,\n NumberFixedLenPipe,\n OwlDateTimeInlineComponent\n ],\n providers: [OwlDateTimeIntl, OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER],\n entryComponents: [OwlDateTimeContainerComponent]\n})\nexport class OwlDateTimeModule {}\n","/**\n * native-date-time-adapter.class\n */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n DateTimeAdapter,\n OWL_DATE_TIME_LOCALE\n} from './date-time-adapter.class';\n\n/** The default month names to use if Intl API is not available. */\nconst DEFAULT_MONTH_NAMES = {\n long: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n ],\n short: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n ],\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\n};\n\n/** The default day of the week names to use if Intl API is not available. */\nconst DEFAULT_DAY_OF_WEEK_NAMES = {\n long: [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday'\n ],\n short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n};\n\n/** The default date names to use if Intl API is not available. */\nconst DEFAULT_DATE_NAMES = range(31, (i) => String(i + 1));\n\n/** Whether the browser supports the Intl API. */\nconst SUPPORTS_INTL_API = typeof Intl !== 'undefined';\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX = /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n@Injectable()\nexport class NativeDateTimeAdapter extends DateTimeAdapter<Date> {\n /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n private readonly _clampDate: boolean;\n\n /**\n * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n * will produce `'8/13/1800'`.\n */\n useUtcForDisplay: boolean;\n\n constructor(\n @Optional()\n @Inject(OWL_DATE_TIME_LOCALE)\n private owlDateTimeLocale: string,\n platform: Platform\n ) {\n super();\n super.setLocale(owlDateTimeLocale);\n\n // IE does its own time zone correction, so we disable this on IE.\n this.useUtcForDisplay = !platform.TRIDENT;\n this._clampDate = platform.TRIDENT || platform.EDGE;\n }\n\n public getYear(date: Date): number {\n return date.getFullYear();\n }\n\n public getMonth(date: Date): number {\n return date.getMonth();\n }\n\n public getDay(date: Date): number {\n return date.getDay();\n }\n\n public getDate(date: Date): number {\n return date.getDate();\n }\n\n public getHours(date: Date): number {\n return date.getHours();\n }\n\n public getMinutes(date: Date): number {\n return date.getMinutes();\n }\n\n public getSeconds(date: Date): number {\n return date.getSeconds();\n }\n\n public getTime(date: Date): number {\n return date.getTime();\n }\n\n public getNumDaysInMonth(date: Date): number {\n const lastDateOfMonth = this.createDateWithOverflow(\n this.getYear(date),\n this.getMonth(date) + 1,\n 0\n );\n\n return this.getDate(lastDateOfMonth);\n }\n\n public differenceInCalendarDays(dateLeft: Date, dateRight: Date): number {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n const dateLeftStartOfDay = this.createDate(\n this.getYear(dateLeft),\n this.getMonth(dateLeft),\n this.getDate(dateLeft)\n );\n const dateRightStartOfDay = this.createDate(\n this.getYear(dateRight),\n this.getMonth(dateRight),\n this.getDate(dateRight)\n );\n\n const timeStampLeft =\n this.getTime(dateLeftStartOfDay) -\n dateLeftStartOfDay.getTimezoneOffset() * this.milliseondsInMinute;\n const timeStampRight =\n this.getTime(dateRightStartOfDay) -\n dateRightStartOfDay.getTimezoneOffset() * this.milliseondsInMinute;\n return Math.round(\n (timeStampLeft - timeStampRight) / this.millisecondsInDay\n );\n } else {\n return null;\n }\n }\n\n public getYearName(date: Date): string {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n year: 'numeric',\n timeZone: 'utc'\n });\n return this.stripDirectionalityCharacters(this._format(dtf, date));\n }\n return String(this.getYear(date));\n }\n\n public getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n month: style,\n timeZone: 'utc'\n });\n return range(12, (i) =>\n this.stripDirectionalityCharacters(\n this._format(dtf, new Date(2017, i, 1))\n )\n );\n }\n return DEFAULT_MONTH_NAMES[style];\n }\n\n public getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n weekday: style,\n timeZone: 'utc'\n });\n return range(7, (i) =>\n this.stripDirectionalityCharacters(\n this._format(dtf, new Date(2017, 0, i + 1))\n )\n );\n }\n\n return DEFAULT_DAY_OF_WEEK_NAMES[style];\n }\n\n public getDateNames(): string[] {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n day: 'numeric',\n timeZone: 'utc'\n });\n return range(31, (i) =>\n this.stripDirectionalityCharacters(\n this._format(dtf, new Date(2017, 0, i + 1))\n )\n );\n }\n return DEFAULT_DATE_NAMES;\n }\n\n public toIso8601(date: Date): string {\n return date.toISOString();\n }\n\n public isEqual(dateLeft: Date, dateRight: Date): boolean {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n return dateLeft.getTime() === dateRight.getTime();\n } else {\n return false;\n }\n }\n\n public isSameDay(dateLeft: Date, dateRight: Date): boolean {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n const dateLeftStartOfDay = this.clone(dateLeft);\n const dateRightStartOfDay = this.clone(dateRight);\n dateLeftStartOfDay.setHours(0, 0, 0, 0);\n dateRightStartOfDay.setHours(0, 0, 0, 0);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n } else {\n return false;\n }\n }\n\n public isValid(date: Date): boolean {\n return date && !isNaN(date.getTime());\n }\n\n public invalid(): Date {\n return new Date(NaN);\n }\n\n public isDateInstance(obj: any): boolean {\n return obj instanceof Date;\n }\n\n public addCalendarYears(date: Date, amount: number): Date {\n return this.addCalendarMonths(date, amount * 12);\n }\n\n public addCalendarMonths(date: Date, amount: number): Date {\n const result = this.clone(date);\n amount = Number(amount);\n\n const desiredMonth = result.getMonth() + amount;\n const dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(result.getFullYear(), desiredMonth, 1);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n\n const daysInMonth = this.getNumDaysInMonth(dateWithDesiredMonth);\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n result.setMonth(desiredMonth, Math.min(daysInMonth, result.getDate()));\n return result;\n }\n\n public addCalendarDays(date: Date, amount: number): Date {\n const result = this.clone(date);\n amount = Number(amount);\n result.setDate(result.getDate() + amount);\n return result;\n }\n\n public setHours(date: Date, amount: number): Date {\n const result = this.clone(date);\n result.setHours(amount);\n return result;\n }\n\n public setMinutes(date: Date, amount: number): Date {\n const result = this.clone(date);\n result.setMinutes(amount);\n return result;\n }\n\n public setSeconds(date: Date, amount: number): Date {\n const result = this.clone(date);\n result.setSeconds(amount);\n return result;\n }\n\n public createDate(\n year: number,\n month: number,\n date: number,\n hours: number = 0,\n minutes: number = 0,\n seconds: number = 0\n ): Date {\n if (month < 0 || month > 11) {\n throw Error(\n `Invalid month index \"${month}\". Month index has to be between 0 and 11.`\n );\n }\n\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n\n if (hours < 0 || hours > 23) {\n throw Error(\n `Invalid hours \"${hours}\". Hours has to be between 0 and 23.`\n );\n }\n\n if (minutes < 0 || minutes > 59) {\n throw Error(\n `Invalid minutes \"${minutes}\". Minutes has to between 0 and 59.`\n );\n }\n\n if (seconds < 0 || seconds > 59) {\n throw Error(\n `Invalid seconds \"${seconds}\". Seconds has to be between 0 and 59.`\n );\n }\n\n const result = this.createDateWithOverflow(\n year,\n month,\n date,\n hours,\n minutes,\n seconds\n );\n\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n // For example, createDate(2017, 1, 31) would try to create a date 2017/02/31 which is invalid\n if (result.getMonth() !== month) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n\n return result;\n }\n\n public clone(date: Date): Date {\n return this.createDate(\n this.getYear(date),\n this.getMonth(date),\n this.getDate(date),\n this.getHours(date),\n this.getMinutes(date),\n this.getSeconds(date)\n );\n }\n\n public now(): Date {\n return new Date();\n }\n\n public format(date: Date, displayFormat: any): string {\n if (!this.isValid(date)) {\n throw Error('JSNativeDate: Cannot format invalid date.');\n }\n\n if (SUPPORTS_INTL_API) {\n if (\n this._clampDate &&\n (date.getFullYear() < 1 || date.getFullYear() > 9999)\n ) {\n date = this.clone(date);\n date.setFullYear(Math.max(1, Math.min(9999, date.getFullYear())));\n }\n\n displayFormat = { ...displayFormat, timeZone: 'utc' };\n const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n return this.stripDirectionalityCharacters(this._format(dtf, date));\n }\n\n return this.stripDirectionalityCharacters(date.toDateString());\n }\n\n public parse(value: any, parseFormat: any): Date | null {\n // There is no way using the native JS Date to set the parse format or locale\n if (typeof value === 'number') {\n return new Date(value);\n }\n return value ? new Date(Date.parse(value)) : null;\n }\n\n /**\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n * invalid date for all other values.\n */\n public deserialize(value: any): Date | null {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n // string is the right format first.\n if (ISO_8601_REGEX.test(value)) {\n const date = new Date(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n }\n return super.deserialize(value);\n }\n\n /**\n * Creates a date but allows the month and date to overflow.\n */\n private createDateWithOverflow(\n year: number,\n month: number,\n date: number,\n hours: number = 0,\n minutes: number = 0,\n seconds: number = 0\n ): Date {\n const result = new Date(year, month, date, hours, minutes, seconds);\n\n if (year >= 0 && year < 100) {\n result.setFullYear(this.getYear(result) - 1900);\n }\n return result;\n }\n\n /**\n * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n * other browsers do not. We remove them to make output consistent and because they interfere with\n * date parsing.\n */\n private stripDirectionalityCharacters(str: string) {\n return str.replace(/[\\u200e\\u200f]/g, '');\n }\n\n /**\n * When converting Date object to string, javascript built-in functions may return wrong\n * results because it applies its internal DST rules. The DST rules around the world change\n * very frequently, and the current valid rule is not always valid in previous years though.\n * We work around this problem building a new Date object which has its internal UTC\n * representation with the local date and time.\n */\n private _format(dtf: Intl.DateTimeFormat, date: Date) {\n const d = new Date(\n Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n )\n );\n return dtf.format(d);\n }\n}\n","/**\n * native-date-time-format.class\n */\nimport { OwlDateTimeFormats } from './date-time-format.class';\n\nexport const OWL_NATIVE_DATE_TIME_FORMATS: OwlDateTimeFormats = {\n parseInput: null,\n fullPickerInput: {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric'\n },\n datePickerInput: { year: 'numeric', month: 'numeric', day: 'numeric' },\n timePickerInput: { hour: 'numeric', minute: 'numeric' },\n monthYearLabel: { year: 'numeric', month: 'short' },\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n monthYearA11yLabel: { year: 'numeric', month: 'long' }\n};\n","/**\n * native-date-time.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { DateTimeAdapter } from './date-time-adapter.class';\nimport { NativeDateTimeAdapter } from './native-date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS } from './date-time-format.class';\nimport { OWL_NATIVE_DATE_TIME_FORMATS } from './native-date-time-format.class';\n\n@NgModule({\n imports: [PlatformModule],\n providers: [{ provide: DateTimeAdapter, useClass: NativeDateTimeAdapter }]\n})\nexport class NativeDateTimeModule {}\n\n@NgModule({\n imports: [NativeDateTimeModule],\n providers: [\n { provide: OWL_DATE_TIME_FORMATS, useValue: OWL_NATIVE_DATE_TIME_FORMATS }\n ]\n})\nexport class OwlNativeDateTimeModule {}\n","/**\n * date-time-picker.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NgxDatetimeComponent } from './ngx-datetime-picker.component';\nimport { OwlDateTimeModule } from '../ngx-pick-datetime/lib/date-time/date-time.module';\nimport { OwlNativeDateTimeModule } from '../ngx-pick-datetime/lib/date-time/adapter/native-date-time.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n OwlDateTimeModule,\n OwlNativeDateTimeModule,\n TranslateModule\n ],\n declarations: [NgxDatetimeComponent],\n exports: [NgxDatetimeComponent],\n providers: []\n})\nexport class NgxDateTimePickerModule {}\n","import { SelectOption } from './interfaces/select-option';\nexport class Option {\n label: string;\n value: any;\n constructor(options: SelectOption) {\n this.label = options.label;\n this.value = options.value;\n }\n}\n","import { Component, Input, forwardRef, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Observable, BehaviorSubject } from 'rxjs';\nimport { Option } from '../form-entry/question-models/select-option';\n\nimport { DataSource } from '../form-entry/question-models/interfaces/data-source';\n\n@Component({\n selector: 'ofe-ng-select',\n template: `<ng-select\n (searchInputText)=\"getChangingText($event)\"\n (ngModelChange)=\"onValueChange($event)\"\n [options]=\"question_options\"\n [multiple]=\"multiple\"\n >\n </ng-select> `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfeNgSelectComponent),\n multi: true\n }\n ]\n})\nexport class AfeNgSelectComponent implements ControlValueAccessor, OnInit {\n subject: BehaviorSubject<Option[]>;\n subjectOption: BehaviorSubject<Option>;\n @Input() dataSource: DataSource;\n @Input() multiple: boolean;\n @Input() extras: any;\n question_options: any = [];\n selected_question_option: any;\n errors: any = [];\n propagateChange = (_: any) => {};\n\n getChangingText(event) {\n this.getData(event).subscribe((options) => {\n this.question_options = options;\n });\n }\n\n writeValue(obj: any): void {}\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n\n registerOnTouched(fn: any): void {}\n\n ngOnInit() {\n if (this.extras) {\n if (this.extras.originalValue) {\n this.resolveSelectedOption(this.extras.originalValue).subscribe(\n (option) => {\n this.selected_question_option = option;\n }\n );\n }\n }\n }\n\n getData(searchText: string): Observable<Option[]> {\n this.subject = new BehaviorSubject<Option[]>([]);\n\n const OptionsObservable = this.dataSource.searchOptions(searchText);\n\n OptionsObservable.subscribe(\n (options) => {\n const mappedOptions: Option[] = new Array<Option>();\n\n for (let i = 0; i < options.length; i++) {\n mappedOptions.push(new Option(options[i]));\n }\n this.subject.next(mappedOptions);\n },\n (error) => {\n this.subject.error(error);\n }\n );\n\n return this.subject.asObservable();\n }\n\n onValueChange(event) {}\n resolveSelectedOption(value: any): Observable<Option> {\n this.subjectOption = new BehaviorSubject<Option>(null);\n const OptionObservable = this.dataSource.resolveSelectedValue(value);\n\n OptionObservable.subscribe(\n (option) => {\n this.subjectOption.next(option);\n },\n (error) => {\n this.subjectOption.error(error);\n }\n );\n\n return this.subjectOption.asObservable();\n }\n\n resetOptions() {\n this.subject.next(new Array<Option>());\n }\n}\n","import { Injectable } from '@angular/core';\nimport * as _ from 'lodash';\n\n@Injectable()\nexport class FormSchemaCompiler {\n constructor() {}\n\n public compileFormSchema(\n formSchema: Object,\n referencedComponents: Array<any>\n ): Object {\n // get all referenced forms\n const refForms: Object = this.getReferencedForms(\n formSchema,\n referencedComponents\n );\n if (_.isEmpty(refForms)) {\n return formSchema;\n }\n\n // get all placeholders from the form schema\n const placeHolders = this.getAllPlaceholderObjects(formSchema);\n if (_.isEmpty(placeHolders)) {\n return formSchema;\n }\n\n // replace all placeholders\n this.replaceAllPlaceholdersWithActualObjects(refForms, placeHolders);\n return formSchema;\n }\n\n private findSchemaByName(\n schemaArray: Array<any>,\n nameOfSchema: string\n ): Object {\n if (_.isEmpty(schemaArray) || _.isEmpty(nameOfSchema)) {\n return;\n }\n let foundSchema: any = {};\n _.each(schemaArray, (schema: any) => {\n if (schema.name === nameOfSchema) {\n foundSchema = schema;\n }\n });\n return foundSchema;\n }\n\n private getPageInSchemaByLabel(schema: any, pageLabel: string): Object {\n if (_.isEmpty(schema) || _.isEmpty(pageLabel)) {\n return;\n }\n let foundPage: Object = {};\n _.each(schema.pages, (page) => {\n if (page.label === pageLabel) {\n foundPage = page;\n }\n });\n return foundPage;\n }\n\n private getSectionInSchemaByPageLabelBySectionLabel(\n schema: Object,\n pageLabel: string,\n sectionLabel: string\n ): Object {\n if (_.isEmpty(schema) || _.isEmpty(pageLabel) || _.isEmpty(sectionLabel)) {\n return;\n }\n const foundPage: any = this.getPageInSchemaByLabel(schema, pageLabel);\n if (_.isEmpty(foundPage)) {\n return;\n }\n let foundSection: Object = {};\n _.each(foundPage.sections, (section) => {\n if (section.label === sectionLabel) {\n foundSection = section;\n }\n });\n return foundSection;\n }\n\n private getQuestionByIdInSchema(schema: any, questionId: string): Array<any> {\n if (_.isEmpty(schema) || _.isEmpty(questionId)) {\n return;\n }\n if (Array.isArray(schema)) {\n let question: Array<any>;\n for (let i = 0; i < schema.length; i++) {\n if (!_.isEmpty(schema[i])) {\n question = this.getQuestionByIdInSchema(schema[i], questionId);\n }\n if (!_.isEmpty(question)) {\n break;\n }\n }\n return question;\n } else if (typeof schema === 'object') {\n if (this.isQuestionObjectWithId(schema, questionId)) {\n return schema;\n } else if (this.isSchemaSubObjectExpandable(schema)) {\n const toExpand = schema.pages || schema.sections || schema.questions;\n return this.getQuestionByIdInSchema(toExpand, questionId);\n } else {\n return;\n }\n } else {\n return;\n }\n }\n\n private getQuestionsArrayByQuestionIdInSchema(\n schema: any,\n questionId: string\n ): Array<any> {\n if (_.isEmpty(schema) || _.isEmpty(questionId)) {\n return;\n }\n return this.getQuestionsArrayByQuestionId(schema, schema, questionId);\n }\n\n private getQuestionsArrayByQuestionId(\n parent: any,\n object: any,\n questionId: string\n ): Array<any> {\n if (Array.isArray(object)) {\n let returnedValue: Array<any>;\n for (let i = 0; i < object.length; i++) {\n if (!_.isEmpty(object[i])) {\n returnedValue = this.getQuestionsArrayByQuestionId(\n object,\n object[i],\n questionId\n );\n }\n if (!_.isEmpty(returnedValue)) {\n break;\n }\n }\n\n return returnedValue;\n } else if (typeof object === 'object') {\n if (this.isQuestionObjectWithId(object, questionId)) {\n return parent;\n } else if (this.isSchemaSubObjectExpandable(object)) {\n const toExpand = object.pages || object.sections || object.questions;\n return this.getQuestionsArrayByQuestionId(\n toExpand,\n toExpand,\n questionId\n );\n } else {\n return;\n }\n } else {\n return;\n }\n }\n\n // object is page or section or question\n private isSchemaSubObjectExpandable(object: Object): Boolean {\n if (typeof object === 'object') {\n const objectKeys = Object.keys(object);\n if (\n _.includes(objectKeys, 'pages') ||\n _.includes(objectKeys, 'sections') ||\n _.includes(objectKeys, 'questions')\n ) {\n return true;\n }\n }\n return false;\n }\n\n private isQuestionObjectWithId(object: Object, id: any): Boolean {\n return object['id'] === id;\n }\n\n private getAllPlaceholderObjects(schema: Object): Array<any> {\n const referencedObjects: Array<any> = [];\n this.extractPlaceholderObjects(schema, referencedObjects);\n return referencedObjects;\n }\n\n private extractPlaceholderObjects(\n subSchema: any,\n objectsArray: Array<Object>\n ): void {\n if (_.isEmpty(subSchema)) {\n return;\n }\n if (Array.isArray(subSchema)) {\n for (let i = 0; i < subSchema.length; i++) {\n if (!_.isEmpty(subSchema[i])) {\n this.extractPlaceholderObjects(subSchema[i], objectsArray);\n }\n }\n } else if (typeof subSchema === 'object') {\n if (!_.isEmpty(subSchema.reference)) {\n objectsArray.push(subSchema);\n } else if (this.isSchemaSubObjectExpandable(subSchema)) {\n const toExpand =\n subSchema.pages || subSchema.sections || subSchema.questions;\n this.extractPlaceholderObjects(toExpand, objectsArray);\n }\n }\n }\n\n private fillPlaceholderObject(\n placeHolderObject: Object,\n referenceObject: Object\n ): Object {\n for (const member in referenceObject) {\n if (_.isEmpty(placeHolderObject[member])) {\n placeHolderObject[member] = referenceObject[member];\n }\n }\n return placeHolderObject;\n }\n\n private replaceAllPlaceholdersWithActualObjects(\n keyValReferencedForms: Object,\n placeHoldersArray: Array<any>\n ): Array<any> {\n _.each(placeHoldersArray, (placeHolder) => {\n const referencedObject: Object = this.getReferencedObject(\n placeHolder.reference,\n keyValReferencedForms\n );\n\n if (_.isEmpty(referencedObject)) {\n console.error(\n 'Form compile: Error finding referenced object',\n placeHolder.reference\n );\n } else {\n placeHolder = this.fillPlaceholderObject(placeHolder, referencedObject);\n placeHolder = this.removeExcludedQuestionsFromPlaceholder(placeHolder);\n delete placeHolder['reference'];\n }\n });\n return placeHoldersArray;\n }\n\n private removeObjectFromArray(array: Array<any>, object: Object): void {\n const indexOfObject = array.indexOf(object);\n if (indexOfObject === -1) {\n return;\n }\n\n array.splice(indexOfObject, 1);\n }\n\n private removeExcludedQuestionsFromPlaceholder(placeHolder: any): Object {\n if (Array.isArray(placeHolder.reference.excludeQuestions)) {\n _.each(placeHolder.reference.excludeQuestions, (excludedQuestionId) => {\n const questionsArray: Array<any> = this.getQuestionsArrayByQuestionIdInSchema(\n placeHolder,\n excludedQuestionId\n );\n\n if (!Array.isArray(questionsArray)) {\n return;\n }\n const question = this.getQuestionByIdInSchema(\n questionsArray,\n excludedQuestionId\n );\n\n this.removeObjectFromArray(questionsArray, question);\n });\n }\n return placeHolder;\n }\n\n private getReferencedObject(\n referenceData: any,\n keyValReferencedForms: Object\n ): Object {\n if (_.isEmpty(referenceData.form)) {\n console.error(\n 'Form compile: reference missing form attribute',\n referenceData\n );\n return;\n }\n if (_.isEmpty(keyValReferencedForms[referenceData.form])) {\n console.error(\n 'Form compile: referenced form alias not found',\n referenceData\n );\n return;\n }\n if (!_.isEmpty(referenceData.questionId)) {\n return this.getQuestionByIdInSchema(\n keyValReferencedForms[referenceData.form],\n referenceData.questionId\n );\n }\n\n if (!_.isEmpty(referenceData.page) && !_.isEmpty(referenceData.section)) {\n return this.getSectionInSchemaByPageLabelBySectionLabel(\n keyValReferencedForms[referenceData.form],\n referenceData.page,\n referenceData.section\n );\n }\n if (!_.isEmpty(referenceData.page)) {\n return this.getPageInSchemaByLabel(\n keyValReferencedForms[referenceData.form],\n referenceData.page\n );\n }\n console.error(\n 'Form compile: Unsupported reference type',\n referenceData.reference\n );\n }\n\n private getReferencedForms(\n formSchema: any,\n formSchemasLookupArray: Array<any>\n ): Object {\n const referencedForms: Array<any> = formSchema.referencedForms;\n\n if (_.isEmpty(referencedForms)) {\n return;\n }\n\n const keyValReferencedForms: Object = {};\n\n _.each(referencedForms, (reference: any) => {\n keyValReferencedForms[reference.alias] = this.findSchemaByName(\n formSchemasLookupArray,\n reference.formName\n );\n });\n return keyValReferencedForms;\n }\n}\n","import { QuestionBase } from './question-base';\nimport { TextQuestionOptions } from './interfaces/text-question-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nexport class TextInputQuestion extends QuestionBase {\n placeholder: string;\n constructor(options: TextQuestionOptions) {\n super(options);\n this.placeholder = options.placeholder || '';\n this.controlType = AfeControlType.AfeFormControl;\n }\n}\n","import { TextInputQuestion } from './text-input-question';\nimport { TextAreaQuestionOptions } from './interfaces/text-area-question-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nexport class TextAreaInputQuestion extends TextInputQuestion {\n isExpanded: boolean;\n rows: number;\n\n constructor(options: TextAreaQuestionOptions) {\n super(options);\n this.placeholder = options.placeholder || '';\n this.isExpanded = options.isExpanded || false;\n this.rows = options.rows || 18;\n this.renderingType = 'textarea';\n this.controlType = AfeControlType.AfeFormControl;\n }\n}\n","import { QuestionBase } from './question-base';\nimport { SelectQuestionOptions } from './interfaces/select-question-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nexport class SelectQuestion extends QuestionBase {\n options: { label: string; value: string }[];\n dataSource?: any;\n\n constructor(options: SelectQuestionOptions) {\n super(options);\n this.renderingType = 'select';\n this.options = options.options || [];\n this.controlType = AfeControlType.AfeFormControl;\n this.dataSource = options.dataSource || '';\n }\n}\n","import { QuestionBase } from './question-base';\nimport { UiSelectQuestionOptions } from './interfaces/ui-select-question-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nexport class UiSelectQuestion extends QuestionBase {\n options: { key: string; value: string }[];\n searchFunction: Function;\n resolveFunction: Function;\n constructor(options: UiSelectQuestionOptions) {\n super(options);\n this.renderingType = 'ui-select';\n this.options = options.options || [];\n this.controlType = AfeControlType.AfeFormControl;\n }\n}\n","import { QuestionBase } from './question-base';\nimport { DateQuestionOptions } from './interfaces/date-question-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nexport class DateQuestion extends QuestionBase {\n showTime = true;\n showWeeksAdder = false;\n constructor(options: DateQuestionOptions) {\n super(options);\n this.renderingType = 'date';\n this.controlType = AfeControlType.AfeFormControl;\n }\n}\n","import { SelectQuestion } from './select-question';\nimport { MultiSelectQuestionOptions } from './interfaces/multi-select-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nexport class MultiSelectQuestion extends SelectQuestion {\n options: { label: string; value: string }[];\n\n constructor(options: MultiSelectQuestionOptions) {\n super(options);\n this.renderingType = 'multi-select' || 'single-select';\n this.options = options.options || [];\n this.controlType = AfeControlType.AfeFormControl;\n }\n}\n","import { QuestionBase } from '../question-base';\nimport { BaseOptions } from './base-options';\n\nexport abstract class NestedQuestion extends QuestionBase {\n abstract questions: QuestionBase[];\n constructor(options: BaseOptions) {\n super(options);\n }\n}\n","import { QuestionBase } from './question-base';\nimport { GroupQuestionOptions } from './interfaces/group-question-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nimport { NestedQuestion } from './interfaces/nested-questions';\n\nexport class QuestionGroup extends NestedQuestion {\n questions: QuestionBase[];\n isExpanded = true;\n\n constructor(options: GroupQuestionOptions) {\n super(options);\n this.renderingType = 'group';\n this.questions = options.questions || [];\n this.controlType = AfeControlType.AfeFormGroup;\n }\n}\n","import { QuestionBase } from './question-base';\nimport { RepeatingQuestionOptions } from './interfaces/repeating-question-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nimport { NestedQuestion } from './interfaces/nested-questions';\n\nexport class RepeatingQuestion extends NestedQuestion {\n questions: QuestionBase[];\n\n constructor(options: RepeatingQuestionOptions) {\n super(options);\n this.renderingType = 'repeating';\n this.questions = options.questions || [];\n this.controlType = AfeControlType.AfeFormArray;\n }\n}\n","import { QuestionBase } from './question-base';\nimport { CheckboxOptions } from './interfaces/checkbox-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nexport class CheckBoxQuestion extends QuestionBase {\n options: { key: string; value: string }[];\n\n constructor(options: CheckboxOptions) {\n super(options);\n this.renderingType = 'checkbox';\n this.options = options.options || [];\n this.controlType = AfeControlType.AfeFormControl;\n }\n}\n","import { QuestionBase } from './question-base';\nimport { RadioButtonOptions } from './interfaces/radio-button-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nexport class RadioButtonQuestion extends QuestionBase {\n options: RadioButtonOptions['options'];\n allowUnselect: boolean;\n\n constructor(options: RadioButtonOptions) {\n super(options);\n this.renderingType = 'radio';\n this.allowUnselect = options.allowUnselect === true;\n this.options = options.options || [];\n this.controlType = AfeControlType.AfeFormControl;\n }\n}\n","import * as _ from 'lodash';\n\nimport { FormFactory } from './form.factory';\nimport { QuestionFactory } from './question.factory';\nimport { DataSources } from '../data-sources/data-sources';\nimport { NodeBase, GroupNode, LeafNode, ArrayNode } from './form-node';\nimport { QuestionBase } from '../question-models/question-base';\nimport { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\nimport { AfeFormArray } from '../../abstract-controls-extension/afe-form-array';\nimport { Diagnosis } from '../value-adapters/diagnosis.adapter';\n\nexport class Form {\n public rootNode: GroupNode;\n public valueProcessingInfo: any = {};\n public existingOrders: any = {};\n public existingDiagnoses: Array<Diagnosis> = [];\n private _dataSourcesContainer: DataSources;\n private _showErrors = false;\n constructor(\n public schema: any,\n public formFactory: FormFactory,\n public questionFactory: QuestionFactory\n ) {\n this._dataSourcesContainer = new DataSources();\n }\n\n get dataSourcesContainer(): DataSources {\n return this._dataSourcesContainer;\n }\n\n searchNodeByPath(node: GroupNode, path, found: Array<NodeBase>) {\n const children: NodeBase = node.children;\n\n for (const key in children) {\n if (children.hasOwnProperty(key)) {\n const child: NodeBase = children[key];\n\n if (child instanceof GroupNode) {\n if (path === child.path) {\n found.push(child);\n return found;\n }\n\n this.searchNodeByPath(child, path, found);\n } else if (child instanceof LeafNode) {\n if (path === child.path) {\n found.push(child);\n return found;\n }\n } else if (child instanceof ArrayNode) {\n if (path === child.path) {\n found.push(child);\n return found;\n }\n\n const aChild: ArrayNode = child as ArrayNode;\n\n aChild.children.forEach((aChildNode) => {\n this.searchNodeByPath(aChildNode, path, found);\n });\n }\n }\n }\n\n return found;\n }\n\n searchNodeByQuestionId(\n questionId: string,\n questionType?: string\n ): Array<NodeBase> {\n const found = [];\n if (questionType) {\n this.searchNodeByQuestionType(this.rootNode, questionType, found);\n } else {\n this.findNodesByQuestionId(this.rootNode, questionId, found);\n }\n return found;\n }\n\n searchNodeByQuestionType(\n rootNode: any,\n questionType: string,\n found: Array<NodeBase>\n ) {\n if (rootNode instanceof GroupNode) {\n const nodeAsGroup = rootNode as GroupNode;\n\n for (const o in nodeAsGroup.children) {\n this.searchNodeByQuestionType(\n nodeAsGroup.children[o],\n questionType,\n found\n );\n }\n }\n\n if (rootNode instanceof ArrayNode) {\n const nodeAsArray = rootNode as ArrayNode;\n\n nodeAsArray.children.forEach((node) => {\n this.searchNodeByQuestionType(node, questionType, found);\n });\n }\n\n if (rootNode instanceof LeafNode) {\n const questionBase: QuestionBase = rootNode.question;\n\n if (\n questionBase.extras &&\n questionBase.extras.type &&\n questionBase.extras.type === questionType\n ) {\n found.push(rootNode);\n }\n }\n }\n\n private findNodesByQuestionId(\n rootNode: NodeBase,\n questionId: string,\n results: Array<NodeBase>\n ) {\n if (rootNode.question.key === questionId) {\n results.push(rootNode);\n }\n\n if (rootNode instanceof GroupNode) {\n const nodeAsGroup = rootNode as GroupNode;\n\n for (const o in nodeAsGroup.children) {\n this.findNodesByQuestionId(\n nodeAsGroup.children[o],\n questionId,\n results\n );\n }\n }\n\n if (rootNode instanceof ArrayNode) {\n const nodeAsArray = rootNode as ArrayNode;\n\n nodeAsArray.children.forEach((node) => {\n this.findNodesByQuestionId(node, questionId, results);\n });\n }\n }\n\n get valid() {\n return this.rootNode.control.valid;\n }\n\n set showErrors(show: boolean) {\n this._showErrors = show;\n }\n\n get showErrors() {\n return this._showErrors;\n }\n\n markInvalidControls(node: GroupNode, invalidControlNodes?: any) {\n const children: NodeBase = node.children;\n\n for (const key in children) {\n if (children.hasOwnProperty(key)) {\n const child: NodeBase = children[key];\n\n if (child instanceof GroupNode) {\n this.markInvalidControls(child, invalidControlNodes);\n } else if (child instanceof LeafNode) {\n const questionBase: QuestionBase = (child as LeafNode).question;\n\n if (questionBase.key && questionBase.key.length > 0) {\n const c: AfeFormControl | AfeFormArray = child.control as\n | AfeFormControl\n | AfeFormArray;\n\n if (!c.valid && !c.disabled) {\n if (invalidControlNodes) {\n invalidControlNodes.push(child);\n }\n\n c.markAsTouched();\n }\n }\n } else if (child instanceof ArrayNode) {\n const arrayNode: ArrayNode = child as ArrayNode;\n\n if (\n arrayNode &&\n arrayNode.children &&\n arrayNode.children.length > 0\n ) {\n _.forEach(arrayNode.children, (groupNode: any) => {\n this.markInvalidControls(groupNode, invalidControlNodes);\n });\n }\n }\n }\n }\n\n return invalidControlNodes;\n }\n\n updateHiddenDisabledStateForAllControls() {\n this._updateHiddenDisabledStateForAllControls(this.rootNode);\n }\n\n updateAlertsForAllControls() {\n this._updateAlertsForAllControls(this.rootNode);\n }\n\n private _updateAlertsForAllControls(rootNode: NodeBase) {\n if (rootNode.control) {\n if ((rootNode.control as any).updateAlert) {\n (rootNode.control as any).updateAlert();\n }\n }\n\n if (rootNode instanceof GroupNode) {\n const nodeAsGroup = rootNode as GroupNode;\n\n for (const o in nodeAsGroup.children) {\n this._updateAlertsForAllControls(nodeAsGroup.children[o]);\n }\n }\n\n if (rootNode instanceof ArrayNode) {\n const nodeAsArray = rootNode as ArrayNode;\n\n nodeAsArray.children.forEach((node) => {\n this._updateAlertsForAllControls(node);\n });\n }\n }\n private _updateHiddenDisabledStateForAllControls(rootNode: NodeBase) {\n if (rootNode.control) {\n if ((rootNode.control as any).updateDisabledState) {\n (rootNode.control as any).updateDisabledState();\n }\n\n if ((rootNode.control as any).updateHiddenState) {\n (rootNode.control as any).updateHiddenState();\n }\n }\n\n if (rootNode instanceof GroupNode) {\n const nodeAsGroup = rootNode as GroupNode;\n\n for (const o in nodeAsGroup.children) {\n this._updateHiddenDisabledStateForAllControls(nodeAsGroup.children[o]);\n }\n }\n\n if (rootNode instanceof ArrayNode) {\n const nodeAsArray = rootNode as ArrayNode;\n\n nodeAsArray.children.forEach((node) => {\n this._updateHiddenDisabledStateForAllControls(node);\n });\n }\n }\n}\n","import { QuestionBase } from './question-base';\nimport { FileUploadQuestionOptions } from './interfaces/file-upload-question-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nexport class FileUploadQuestion extends QuestionBase {\n showTime = true;\n showWeeksAdder = false;\n dataSource?: any;\n constructor(options: FileUploadQuestionOptions) {\n super(options);\n this.renderingType = 'file';\n this.dataSource = options.dataSource;\n this.controlType = AfeControlType.AfeFormControl;\n }\n}\n","import { QuestionBase } from './question-base';\nimport { TestOrderQuestionOptions } from './interfaces/test-order-question-options';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nexport class TestOrderQuestion extends QuestionBase {\n orderType: string;\n selectableOrders: { concept: string; label: string }[];\n orderSettingUuid: string;\n rendering: string;\n options: any[];\n constructor(options: TestOrderQuestionOptions) {\n super(options);\n this.renderingType = 'select';\n this.orderType = options.orderType;\n this.selectableOrders = options.selectableOrders;\n this.options = options.options;\n this.orderSettingUuid = options.orderSettingUuid;\n this.rendering = options.orderSettingUuid;\n this.controlType = AfeControlType.AfeFormControl;\n }\n}\n","import { ValidationModel } from './validation.model';\n\nexport class DateValidationModel extends ValidationModel {\n allowFutureDates = false;\n\n constructor(validations: any) {\n super(validations);\n\n this.allowFutureDates =\n validations.allowFutureDates === 'true' ? true : false;\n }\n}\n","import { ValidationModel } from './validation.model';\n\nexport class MaxValidationModel extends ValidationModel {\n max: number;\n\n constructor(validations: any) {\n super(validations);\n const max: any = validations.max;\n this.max = Number(max);\n }\n}\n","import { ValidationModel } from './validation.model';\n\nexport class MinValidationModel extends ValidationModel {\n min: number;\n\n constructor(validations: any) {\n super(validations);\n const min: any = validations.min;\n this.min = Number(min);\n }\n}\n","import { Option } from '../question-models/select-option';\nimport { DataSource } from '../question-models/interfaces/data-source';\nimport { Observable, BehaviorSubject, of } from 'rxjs';\n\nexport class DummyDataSource implements DataSource {\n options: Observable<Option[]>;\n option: Observable<Option>;\n returnErrorOnNext = false;\n\n constructor() {}\n\n resolveSelectedValue(value): Observable<Option> {\n let selectOptions = this.sampleData();\n\n selectOptions = selectOptions.map(function (obj) {\n const option = new Option({\n label: obj.label,\n value: obj.concept\n });\n return option;\n });\n\n selectOptions = selectOptions.filter((option) => option.value === value);\n\n const test: BehaviorSubject<any> = new BehaviorSubject<any>([]);\n if (!this.returnErrorOnNext) {\n test.next(selectOptions[0]);\n } else {\n test.error(new Error('Error loading Options'));\n }\n\n return test.asObservable();\n }\n fileUpload(url) {\n return of({ image: '' });\n }\n fetchFile(url) {\n return of({ image: '' });\n }\n searchOptions(searchText): Observable<Option[]> {\n let selectOptions = this.sampleData();\n\n selectOptions = selectOptions.map(function (obj) {\n const option = new Option({\n label: obj.label,\n value: obj.concept\n });\n return option;\n });\n\n selectOptions = selectOptions.filter(\n (option) => option.label.indexOf(searchText) !== -1\n );\n\n const test: BehaviorSubject<any> = new BehaviorSubject<any>([]);\n if (!this.returnErrorOnNext) {\n test.next(selectOptions);\n } else {\n test.error(new Error('Error loading Options'));\n }\n\n return test.asObservable();\n }\n\n sampleData(): any {\n return [\n {\n concept: 'a899e0ac-1350-11df-a1f1-0026b9348838',\n label: 'None'\n },\n {\n concept: 'a8ad1276-1350-11df-a1f1-0026b9348838',\n label: 'Breathlessness'\n },\n {\n concept: 'a892e4b4-1350-11df-a1f1-0026b9348838',\n label: 'Chest pain'\n },\n {\n concept: 'a8afc8b8-1350-11df-a1f1-0026b9348838',\n label: 'Cough = 2 weeks'\n },\n {\n concept: 'd7adae14-c386-49cc-8f7c-765d8ceec566',\n label: 'Fever for = 2 weeks'\n },\n {\n concept: '3f57aafc-7162-41da-a51b-6a804cb6f5e8',\n label: 'New exposure to household contact with TB'\n },\n {\n concept: 'a89807f0-1350-11df-a1f1-0026b9348838',\n label: 'Noticeable Weight loss'\n },\n {\n concept: 'e1862fef-68ed-4df4-90dd-a00152f719aa',\n label: 'Night sweats = 2 weeks'\n },\n {\n concept: 'a8ad462e-1350-11df-a1f1-0026b9348838',\n label: 'Abdomen'\n },\n {\n concept: 'f218c60e-4b54-475a-a4fa-facab9216da8',\n label: 'Groin'\n },\n {\n concept: 'a8a774b0-1350-11df-a1f1-0026b9348838',\n label: 'Joints'\n },\n {\n concept: '4639388c-ee31-4dcf-abb4-ad71253493bb',\n label: 'Neck Kw'\n }\n ];\n }\n}\n","import { Injectable } from '@angular/core';\nimport _ from 'lodash';\nimport moment from 'moment';\n@Injectable()\nexport class HistoricalEncounterDataService {\n dataSources: any = {};\n constructor() {}\n\n registerEncounters(name: string, encounters: any) {\n const encStore: any = {\n data: [],\n getValue: (key: string, index = 0): any => {\n const pathArray = key.split('.');\n if (pathArray.length > 0) {\n return this.getFirstValue(pathArray, encStore.data[index]);\n }\n return encStore.data[index][key];\n },\n getAllObjects: () => {\n return encStore.data;\n },\n getSingleObject: (index = 0) => {\n return encStore.data[index];\n }\n };\n\n if (_.isArray(encounters)) {\n const group: Array<any> = [];\n _.each(encounters, (encounter) => {\n group.push(this._transformEncounter(encounter));\n });\n\n // Sort them in reverse chronological order\n encStore.data = _.sortBy(group, 'encounterDatetime').reverse();\n } else {\n // Assume a single openmrs rest encounter object.\n encStore.data.push(this._transformEncounter(encounters));\n }\n\n this.putObject(name, encStore);\n }\n\n putObject(name, object): void {\n this.dataSources[name] = object;\n }\n\n getObject(name: string): any {\n return this.dataSources[name] || null;\n }\n\n getFirstValue(path: Array<string>, object: any): any {\n const answers = [];\n\n this.getAllValues(path, object, answers);\n\n if (answers.length > 0) {\n return {\n value: answers[0],\n valueDate: moment(object.encounterDatetime).format(\n 'YYYY-MM-DDTHH:mm:ss'\n )\n };\n }\n }\n\n getAllValues(path, object, answers) {\n if (_.isNil(object)) {\n return;\n }\n\n if (path.length <= 1) {\n if (!_.isNil(object[path[0]])) {\n answers.push(object[path[0]]);\n }\n return;\n }\n\n const newpath = path.splice(1);\n const key = path[0];\n\n if (_.isArray(object[key]) && object[key].length > 0) {\n _.each(object[key], (childObject) => {\n this.getAllValues(newpath.slice(0), childObject, answers);\n });\n } else {\n this.getAllValues(newpath.slice(0), object[key], answers);\n }\n }\n\n private _transformEncounter(encounter: any) {\n if (_.isNil(encounter)) {\n return;\n }\n // Transform encounter Level details to key value pairs.\n const prevEncounter: any = {\n encounterDatetime: encounter.encounterDatetime\n };\n\n if (encounter.location && encounter.location.uuid) {\n prevEncounter.location = encounter.location.uuid;\n }\n\n if (encounter.patient && encounter.patient.uuid) {\n prevEncounter.patient = encounter.patient.uuid;\n }\n\n if (encounter.form && encounter.form.uuid) {\n prevEncounter.form = encounter.form.uuid;\n }\n\n if (encounter.encounterType && encounter.encounterType.uuid) {\n prevEncounter.encounterType = encounter.encounterType.uuid;\n }\n\n if (encounter.provider) {\n const provider = encounter.provider;\n prevEncounter.provider = provider.uuid;\n }\n\n // Deal with obs.\n if (encounter.obs) {\n const processedObs: any = this._transformObs(encounter.obs);\n\n // add in individual processed obs to prevEncounter\n _.extend(prevEncounter, processedObs);\n }\n\n return prevEncounter;\n }\n\n private _transformObs(obs: any): any {\n if (!obs) {\n return null;\n }\n\n const obsRep: any = {};\n if (_.isArray(obs)) {\n _.each(obs, (singleObs) => {\n this._augumentObs(obsRep, this._transformObs(singleObs));\n });\n return obsRep;\n } else if (obs.groupMembers) {\n const group: any = {};\n _.each(obs.groupMembers, (member) => {\n this._augumentObs(group, this._transformObs(member));\n });\n\n // Handle already existing data\n if (obsRep[obs.concept.uuid] && _.isArray(obsRep[obs.concept.uuid])) {\n obsRep[obs.concept.uuid].push(group);\n } else {\n obsRep[obs.concept.uuid] = [group];\n }\n return obsRep;\n } else {\n if (obs.value instanceof Object) {\n obsRep[obs.concept.uuid] = obs.value.uuid;\n } else {\n obsRep[obs.concept.uuid] = obs.value;\n }\n return obsRep;\n }\n }\n\n private _augumentObs(existing: any, toAdd: any): any {\n for (const key in toAdd) {\n if (_.has(existing, key)) {\n // check if not an array yet\n if (!_.isArray(existing[key])) {\n const temp = existing[key];\n existing[key] = [temp];\n }\n\n // Check whether the incoming is array (for group members)\n if (_.isArray(toAdd[key])) {\n Array.prototype.push.apply(existing[key], toAdd[key]);\n } else {\n existing[key].push(toAdd[key]);\n }\n } else {\n existing[key] = toAdd[key];\n }\n }\n return existing;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { HistoricalEncounterDataService } from '../services/historical-encounter-data.service';\nimport { JsExpressionHelper } from './js-expression-helper';\nimport {\n Runnable,\n ExpressionRunner\n} from '../expression-runner/expression-runner';\nimport { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';\n\n@Injectable()\nexport class HistoricalHelperService {\n constructor() {}\n\n public evaluate(\n expr: string,\n dataSources: Record<string, unknown>,\n additionalScopeValues: Record<string, unknown> | null\n ) {\n const HD = new HistoricalEncounterDataService();\n HD.registerEncounters('prevEnc', dataSources['rawPrevEnc']);\n if (dataSources.hasOwnProperty('rawPrevObs')) {\n HD.registerEncounters('prevObs', dataSources['rawPrevObs']);\n }\n\n const deps = { HD };\n\n if (additionalScopeValues) {\n for (const o in additionalScopeValues) {\n const value = additionalScopeValues[o];\n if (typeof value !== 'undefined' && value !== null) {\n deps[o] = value;\n }\n }\n }\n\n const helper = new JsExpressionHelper();\n const control: AfeFormControl = new AfeFormControl();\n const runner: ExpressionRunner = new ExpressionRunner();\n const runnable: Runnable = runner.getRunnable(\n expr,\n control,\n helper.helperFunctions,\n deps\n );\n\n return runnable.run();\n }\n\n public evaluatePrecondition(\n expr: string,\n dataSources: any,\n historicalValue: any\n ): any {\n const additionalScope = {\n histValue: historicalValue\n };\n\n return this.evaluate(expr, dataSources, additionalScope);\n }\n}\n","import { QuestionBase } from './question-base';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\nimport { DiagnosisQuestionOptions } from './interfaces/diagnosis-question-options';\n\nexport class DiagnosisQuestion extends QuestionBase {\n rendering: string;\n options: any[];\n dataSource?: any;\n\n constructor(options: DiagnosisQuestionOptions) {\n super(options);\n this.renderingType = 'select';\n this.options = options.options;\n this.controlType = AfeControlType.AfeFormControl;\n this.dataSource = options.dataSource || '';\n }\n}\n","import { ValidationModel } from './validation.model';\n\nexport class MaxLengthValidationModel extends ValidationModel {\n maxlength: number;\n\n constructor(validations: any) {\n super(validations);\n const maxlength: any = validations.maxlength;\n this.maxlength = +maxlength;\n }\n}\n","import { ValidationModel } from './validation.model';\n\nexport class MinLengthValidationModel extends ValidationModel {\n minlength: number;\n\n constructor(validations: any) {\n super(validations);\n const minlength: any = validations.minlength;\n this.minlength = +minlength;\n }\n}\n","import _ from 'lodash';\nimport moment from 'moment';\n\nimport { TextInputQuestion } from '../question-models/text-input-question';\nimport { TextAreaInputQuestion } from '../question-models/text-area-input-question';\nimport { SelectQuestion } from '../question-models/select-question';\nimport { UiSelectQuestion } from '../question-models/ui-select-question';\nimport { DateQuestion } from '../question-models/date-question';\nimport { MultiSelectQuestion } from '../question-models/multi-select-question';\nimport { QuestionGroup } from '../question-models/group-question';\nimport { RepeatingQuestion } from '../question-models/repeating-question';\nimport { QuestionBase } from '../question-models/question-base';\nimport { FileUploadQuestion } from '../question-models/file-upload-question';\nimport { TestOrderQuestion } from '../question-models/test-order-question';\nimport { AfeControlType } from '../../abstract-controls-extension/afe-control-type';\n\nimport { ValidationModel } from '../question-models/validation.model';\nimport { DateValidationModel } from '../question-models/date-validation.model';\nimport { MaxValidationModel } from '../question-models/max-validation.model';\nimport { MinValidationModel } from '../question-models/min-validation.model';\nimport { JsExpressionValidationModel } from '../question-models/js-expression-validation.model';\nimport { ConditionalValidationModel } from '../question-models/conditional-validation.model';\nimport { DummyDataSource } from '../data-sources/dummy-data-source';\nimport { HistoricalHelperService } from '../helpers/historical-expression-helper-service';\nimport { Form } from './form';\nimport { CheckBoxQuestion } from '../question-models/models';\nimport { RadioButtonQuestion } from '../question-models/models';\nimport { Injectable } from '@angular/core';\nimport { CustomControlQuestion } from '../question-models/custom-control-question.model';\nimport { DiagnosisQuestion } from '../question-models/diagnosis-question';\nimport { MaxLengthValidationModel } from '../question-models/max-length-validation.model';\nimport { MinLengthValidationModel } from '../question-models/min-length-validation.model';\n\n@Injectable()\nexport class QuestionFactory {\n dataSources: any = {};\n historicalHelperService: HistoricalHelperService = new HistoricalHelperService();\n quetionIndex = 0;\n constructor() {}\n\n createQuestionModel(formSchema: any, form?: Form): QuestionBase {\n if (form) {\n const dataSources = form.dataSourcesContainer.dataSources;\n this.dataSources = dataSources;\n }\n return this.toFormQuestionModel(formSchema);\n }\n\n toSelectQuestion(schemaQuestion: any): SelectQuestion {\n const question = new SelectQuestion({ options: [], type: '', key: '' });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n question.options = schemaQuestion.questionOptions.answers.map((obj) => ({\n label: obj.label,\n value: obj.concept\n }));\n\n question.options.splice(0, 0, {\n label: '',\n value: ''\n });\n\n question.renderingType = schemaQuestion.questionOptions.rendering;\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n\n const mappings = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toNumericQuestion(schemaQuestion: any): TextInputQuestion {\n const question = new TextInputQuestion({\n placeholder: '',\n type: '',\n key: ''\n });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.renderingType = 'number';\n question.placeholder = schemaQuestion.questionOptions.placeholder;\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.placeholder = schemaQuestion.questionOptions.placeholder || '';\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toNumberQuestion(schemaQuestion: any): TextInputQuestion {\n const question = new TextInputQuestion({\n placeholder: '',\n type: '',\n key: ''\n });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.renderingType = 'number';\n question.placeholder = schemaQuestion.questionOptions.placeholder || '';\n question.extras = schemaQuestion;\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n\n this.copyProperties(mappings, schemaQuestion, question);\n question.validators = this.addValidators(schemaQuestion);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toDateQuestion(schemaQuestion: any): DateQuestion {\n if (schemaQuestion.type === 'encounterDatetime') {\n return this.toEncounterDatetimeQuestion(schemaQuestion);\n }\n const question = new DateQuestion({ type: '', key: '' });\n question.questionIndex = this.quetionIndex;\n question.renderingType = 'date';\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.showTime = schemaQuestion.questionOptions.showTime as boolean;\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n question.showWeeksAdder = schemaQuestion.questionOptions.weeksList\n ? true\n : false;\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toEncounterDatetimeQuestion(schemaQuestion: any): DateQuestion {\n const question = new DateQuestion({ type: '', key: '' });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.renderingType = 'date';\n question.key = schemaQuestion.id;\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.showWeeksAdder = schemaQuestion.questionOptions.weeksList\n ? true\n : false;\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.showTime = true;\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n question.datePickerFormat = schemaQuestion.datePickerFormat ?? 'calendar';\n\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toCheckBoxQuestion(schemaQuestion: any): CheckBoxQuestion {\n const question = new CheckBoxQuestion({ options: [], type: '', key: '' });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.extras = schemaQuestion;\n question.orientation = schemaQuestion.questionOptions.orientation;\n question.options = schemaQuestion.questionOptions.answers.map((obj) => {\n return {\n label: obj.label,\n value: obj.concept\n };\n });\n question.options.splice(0, 0);\n\n question.renderingType = schemaQuestion.questionOptions.rendering;\n const mappings = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toRadioButtonQuestion(schemaQuestion: any): RadioButtonQuestion {\n const question = new RadioButtonQuestion({\n options: [],\n type: '',\n key: ''\n });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.key = schemaQuestion.id;\n question.prefix = schemaQuestion.prefix;\n question.extras = schemaQuestion;\n question.allowUnselect = schemaQuestion.questionOptions.allowUnselect;\n question.orientation = schemaQuestion.questionOptions.orientation;\n question.options = schemaQuestion.questionOptions.answers.map((obj) => {\n return {\n label: obj.label,\n value: obj.concept\n };\n });\n question.options.splice(0, 0);\n\n question.renderingType = schemaQuestion.questionOptions.rendering;\n const mappings = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toMultiCheckboxQuestion(schemaQuestion: any): MultiSelectQuestion {\n const question = new MultiSelectQuestion({\n renderType: '',\n options: [],\n type: '',\n key: ''\n });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.options = schemaQuestion.questionOptions.answers.map((obj) => ({\n label: obj.label,\n value: obj.concept\n }));\n question.validators = this.addValidators(schemaQuestion);\n question.dataSource = new DummyDataSource();\n question.extras = schemaQuestion;\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toTextAreaQuestion(schemaQuestion: any): TextAreaInputQuestion {\n const question = new TextAreaInputQuestion({\n isExpanded: false,\n rows: 18,\n placeholder: '',\n type: '',\n key: ''\n });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.placeholder = schemaQuestion.questionOptions.placeholder;\n question.isExpanded = schemaQuestion.isExpanded;\n question.rows = schemaQuestion.questionOptions.rows;\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.placeholder = schemaQuestion.questionOptions.placeholder || '';\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toTextQuestion(schemaQuestion: any): TextInputQuestion {\n const question = new TextInputQuestion({\n placeholder: '',\n type: '',\n key: ''\n });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.renderingType = 'text';\n question.placeholder = schemaQuestion.questionOptions.placeholder;\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.placeholder = schemaQuestion.questionOptions.placeholder || '';\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toFileUploadQuestion(schemaQuestion: any): FileUploadQuestion {\n const question = new FileUploadQuestion({ type: '', key: '' });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.renderingType = 'file';\n question.dataSource = 'file';\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toDrugQuestion(schemaQuestion: any): SelectQuestion {\n const question = new SelectQuestion({ options: [], type: '', key: '' });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.renderingType = 'remote-select';\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.dataSource = 'drug';\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toProblemQuestion(schemaQuestion: any): SelectQuestion {\n const question = new SelectQuestion({ options: [], type: '', key: '' });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.renderingType = 'remote-select';\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.dataSource = 'problem';\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toConceptAnswerSelect(schemaQuestion: any): SelectQuestion {\n const question = new SelectQuestion({ options: [], type: '', key: '' });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.renderingType = 'remote-select';\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.dataSource =\n schemaQuestion.questionOptions.dataSource || 'conceptAnswers';\n question.dataSourceOptions = {\n concept: schemaQuestion.questionOptions.concept\n };\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toRepeatingQuestion(schemaQuestion: any): RepeatingQuestion {\n const question = new RepeatingQuestion({\n questions: [],\n type: '',\n key: ''\n });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.questions = this.getChildrenQuestionModels(\n schemaQuestion.questions\n );\n question.key = schemaQuestion.id;\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n\n if (schemaQuestion.type === 'testOrder') {\n const testOrder = this.toTestOrderQuestion(schemaQuestion);\n const orders = [];\n orders.push(testOrder);\n question.questions = orders;\n } else if (schemaQuestion.type === 'diagnosis') {\n const diagnosisQuestion = this.toDiagnosisQuestion(schemaQuestion);\n question.questions = [diagnosisQuestion];\n }\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toGroupQuestion(schemaQuestion: any): QuestionGroup {\n const question = new QuestionGroup({ questions: [], type: '', key: '' });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.questions = this.getChildrenQuestionModels(\n schemaQuestion.questions\n );\n question.key = schemaQuestion.id;\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toPageQuestion(schemaQuestion: any): QuestionGroup {\n const question = new QuestionGroup({ questions: [], type: '', key: '' });\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.label;\n question.renderingType = 'page';\n question.controlType = AfeControlType.None;\n question.questions = [];\n schemaQuestion.sections.forEach((element) => {\n question.questions.push(this.toSectionQuestion(element));\n });\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n return question;\n }\n\n toFormQuestionModel(schemaQuestion: any): QuestionGroup {\n const question = new QuestionGroup({ questions: [], type: '', key: '' });\n question.label = schemaQuestion.label;\n question.key = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.renderingType = 'form';\n question.controlType = AfeControlType.AfeFormGroup;\n question.extras = schemaQuestion;\n question.questions = [];\n schemaQuestion.pages.forEach((element) => {\n question.questions.push(this.toPageQuestion(element));\n });\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n return question;\n }\n\n toSectionQuestion(schemaQuestion: any): QuestionGroup {\n const question = new QuestionGroup({ questions: [], type: '', key: '' });\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.label;\n question.renderingType = 'section';\n question.controlType = AfeControlType.None;\n question.isExpanded = schemaQuestion.isExpanded === 'true' ? true : false;\n question.questions = this.getSchemaQuestions(schemaQuestion.questions);\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n return question;\n }\n\n toPersonAttributeQuestion(schemaQuestion: any): UiSelectQuestion {\n const question = new UiSelectQuestion({\n options: [],\n type: '',\n key: '',\n searchFunction: function () {},\n resolveFunction: function () {}\n });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.renderingType = 'remote-select';\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.dataSource = 'personAttribute';\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toEncounterProviderQuestion(schemaQuestion: any): UiSelectQuestion {\n const question = new UiSelectQuestion({\n options: [],\n type: '',\n key: '',\n searchFunction: function () {},\n resolveFunction: function () {}\n });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.renderingType = 'remote-select';\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.dataSource = 'provider';\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toFieldSetQuestion(schemaQuestion: any): QuestionGroup {\n const question = this.toGroupQuestion(schemaQuestion);\n question.renderingType = 'field-set';\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n return question;\n }\n\n toEncounterLocationQuestion(schemaQuestion: any): UiSelectQuestion {\n const question = new UiSelectQuestion({\n options: [],\n type: '',\n key: '',\n searchFunction: function () {},\n resolveFunction: function () {}\n });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.renderingType = schemaQuestion.type;\n question.renderingType = 'remote-select';\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.dataSource = 'location';\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n toTestOrderQuestion(schemaQuestion: any): TestOrderQuestion {\n const question = new TestOrderQuestion({\n type: '',\n key: '',\n orderType: '',\n selectableOrders: [],\n orderSettingUuid: '',\n label: '',\n rendering: ''\n });\n question.questionIndex = this.quetionIndex;\n question.label = schemaQuestion.label;\n question.prefix = schemaQuestion.prefix;\n question.key = schemaQuestion.id;\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.options = schemaQuestion.questionOptions.selectableOrders.map(\n function (obj) {\n return {\n label: obj.label,\n value: obj.concept\n };\n }\n );\n\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n return question;\n }\n\n toDiagnosisQuestion(schemaQuestion: any): DiagnosisQuestion {\n const question = new DiagnosisQuestion({\n type: '',\n key: schemaQuestion.id,\n label: schemaQuestion.label,\n rendering: '',\n rank: schemaQuestion.questionOptions.rank\n });\n question.questionIndex = this.quetionIndex;\n question.prefix = schemaQuestion.prefix;\n question.renderingType = 'remote-select';\n question.validators = this.addValidators(schemaQuestion);\n question.extras = schemaQuestion;\n question.dataSource =\n schemaQuestion.questionOptions.dataSource || 'diagnoses';\n const mappings: any = {\n label: 'label',\n required: 'required',\n id: 'key'\n };\n question.componentConfigs = schemaQuestion.componentConfigs || [];\n this.copyProperties(mappings, schemaQuestion, question);\n this.addDisableOrHideProperty(schemaQuestion, question);\n this.addAlertProperty(schemaQuestion, question);\n this.addHistoricalExpressions(schemaQuestion, question);\n this.addCalculatorProperty(schemaQuestion, question);\n return question;\n }\n\n getSchemaQuestions(schema: any): any {\n const listQuestions = new Array();\n this.getQuestions(schema, listQuestions);\n return listQuestions;\n }\n\n getQuestions(schema: any, foundArray: any): any {\n if (!Array.isArray(foundArray)) {\n foundArray = [];\n }\n if (Array.isArray(schema)) {\n for (const property in schema) {\n if (schema.hasOwnProperty(property)) {\n this.getQuestions(schema[property], foundArray);\n }\n }\n }\n\n if (schema && !Array.isArray(schema) && typeof schema === 'object') {\n if (schema.questionOptions) {\n if (\n schema.questionOptions.rendering === 'group' ||\n schema.questionOptions.rendering === 'repeating'\n ) {\n // schema.questions = this.getGroupMembers(schema.questions);\n foundArray.push(\n this.toModel(schema, schema.questionOptions.rendering)\n );\n } else if (schema.questionOptions.rendering === 'field-set') {\n } else {\n foundArray.push(\n this.toModel(schema, schema.questionOptions.rendering)\n );\n }\n } else {\n for (const o in schema) {\n if (schema.hasOwnProperty(o)) {\n this.getQuestions(schema[o], foundArray);\n }\n }\n }\n }\n }\n\n getChildrenQuestionModels(schema: any): any {\n const children = [];\n this.getQuestions(schema, children);\n return children;\n }\n\n toModel(schema: any, renderType: string): any {\n this.quetionIndex++;\n if (renderType === 'ui-select-extended') {\n renderType = schema.type;\n }\n if (!schema.id) {\n schema['id'] = this.generateId(10);\n }\n\n if (\n schema.questionOptions &&\n (schema.questionOptions.showDate === true ||\n schema.questionOptions.showDate === 'true')\n ) {\n schema = this.convertOldVersionComplexObsQuestionToNewVersion(schema);\n renderType = 'field-set';\n }\n\n switch (renderType) {\n case 'select':\n return this.toSelectQuestion(schema);\n case 'single-select':\n return this.toSelectQuestion(schema);\n case 'multi-select':\n return this.toSelectQuestion(schema);\n case 'numeric':\n return this.toNumericQuestion(schema);\n case 'number':\n return this.toNumberQuestion(schema);\n case 'encounterDatetime':\n return this.toEncounterDatetimeQuestion(schema);\n case 'date':\n return this.toDateQuestion(schema);\n case 'multiCheckbox':\n return this.toMultiCheckboxQuestion(schema);\n case 'drug':\n return this.toDrugQuestion(schema);\n case 'problem':\n return this.toProblemQuestion(schema);\n case 'group':\n return this.toGroupQuestion(schema);\n case 'field-set':\n return this.toFieldSetQuestion(schema);\n case 'repeating':\n return this.toRepeatingQuestion(schema);\n case 'personAttribute':\n return this.toPersonAttributeQuestion(schema);\n case 'text':\n return this.toTextQuestion(schema);\n case 'textarea':\n return this.toTextAreaQuestion(schema);\n case 'select-concept-answers':\n return this.toConceptAnswerSelect(schema);\n case 'encounterLocation':\n return this.toEncounterLocationQuestion(schema);\n case 'encounterDatetime':\n return this.toEncounterDatetimeQuestion(schema);\n case 'encounterProvider':\n return this.toEncounterProviderQuestion(schema);\n case 'radio':\n return this.toRadioButtonQuestion(schema);\n case 'checkbox':\n return this.toCheckBoxQuestion(schema);\n case 'encounterProvider':\n return this.toEncounterProviderQuestion(schema);\n case 'file':\n return this.toFileUploadQuestion(schema);\n default:\n console.warn('New Schema Question Type found.........' + renderType);\n return this.toTextQuestion(schema);\n }\n }\n\n convertOldVersionComplexObsQuestionToNewVersion(schemaQuestion: any) {\n const converted: any = {};\n converted.type = 'complex-obs';\n converted.label = schemaQuestion.label;\n converted.prefix = schemaQuestion.prefix;\n converted.id = 'complex_' + schemaQuestion.id;\n converted.questionOptions = {};\n converted.questionOptions.concept = schemaQuestion.questionOptions.concept;\n converted.questionOptions.rendering = 'field-set';\n converted.questions = [];\n converted.validators = [];\n\n const mainField: any = JSON.parse(JSON.stringify(schemaQuestion));\n mainField.type = 'complex-obs-child';\n delete mainField.questionOptions.showDate;\n delete mainField.questionOptions.shownDateOptions;\n mainField.questionOptions.obsField = 'value';\n\n const dateField: any = {};\n dateField.type = 'complex-obs-child';\n dateField.label = 'Date of ' + mainField.label;\n dateField.id = 'date_' + mainField.id;\n dateField.questionOptions = {};\n dateField.questionOptions.concept = schemaQuestion.questionOptions.concept;\n dateField.questionOptions.rendering = 'date';\n dateField.questionOptions.obsField = 'obsDatetime';\n const dateOptions: any = (Object as any).assign(\n {},\n schemaQuestion.questionOptions.shownDateOptions\n );\n dateField.validators = dateOptions.validators;\n dateField.hide = dateOptions.hide;\n\n converted.questions.push(mainField);\n converted.questions.push(dateField);\n\n return converted;\n }\n\n copyProperties(mappings: any, source: any, destination: QuestionBase) {\n for (const property in source) {\n if (\n mappings.hasOwnProperty(property) &&\n destination.hasOwnProperty(mappings[property])\n ) {\n destination[mappings[property]] = source[property];\n }\n }\n }\n\n addValidators(schemaQuestion: any): Array<ValidationModel> {\n const validators: Array<ValidationModel> = [];\n\n if (schemaQuestion.validators) {\n // TODO - add more validator types\n _.forEach(schemaQuestion.validators, (validator: any) => {\n switch (validator.type) {\n case 'date':\n validators.push(new DateValidationModel(validator));\n break;\n case 'js_expression':\n validators.push(new JsExpressionValidationModel(validator));\n break;\n case 'conditionalAnswered':\n validators.push(new ConditionalValidationModel(validator));\n break;\n default:\n validators.push(new ValidationModel(validator));\n break;\n }\n });\n }\n\n const questionOptions = schemaQuestion.questionOptions;\n const renderingType = questionOptions ? questionOptions.rendering : '';\n switch (renderingType) {\n case 'number':\n if (questionOptions.max && questionOptions.min) {\n validators.push(\n new MaxValidationModel({\n type: 'max',\n max: questionOptions.max\n })\n );\n validators.push(\n new MinValidationModel({\n type: 'min',\n min: questionOptions.min\n })\n );\n }\n if (questionOptions.maxLength) {\n validators.push(\n new MaxLengthValidationModel({\n type: 'maxlength',\n maxlength: questionOptions.maxLength\n })\n );\n }\n if (questionOptions.minLength) {\n validators.push(\n new MinLengthValidationModel({\n type: 'minlength',\n minlength: questionOptions.minLength\n })\n );\n }\n\n break;\n default:\n break;\n }\n\n // add conditional required validators\n if (typeof schemaQuestion.required === 'object') {\n const required: any = schemaQuestion.required;\n\n if (required.type === 'conditionalRequired') {\n validators.push(\n new ConditionalValidationModel({\n referenceQuestionId: required.referenceQuestionId,\n referenceQuestionAnswers: required.referenceQuestionAnswers,\n type: required.type,\n message: required.message\n })\n );\n }\n }\n\n return validators;\n }\n\n addHistoricalExpressions(schemaQuestion: any, question: QuestionBase): any {\n if (\n schemaQuestion.historicalExpression &&\n schemaQuestion.historicalExpression.length > 0\n ) {\n question.setHistoricalValue(true);\n if (schemaQuestion.showHistoricalEncounterDate !== undefined) {\n question.showHistoricalEncounterDate(\n schemaQuestion.showHistoricalEncounterDate === 'true'\n );\n } else {\n question.showHistoricalEncounterDate();\n }\n const origValue = this.historicalHelperService.evaluate(\n schemaQuestion.historicalExpression,\n this.dataSources,\n undefined\n );\n question.historicalDataValue = origValue;\n // console.info('historical value', origValue);\n // console.info('historical data question :::', question);\n // console.info('schema data question :::', schemaQuestion);\n\n if (schemaQuestion.historicalPrepopulateCondition && origValue) {\n const toPopulate = this.historicalHelperService.evaluatePrecondition(\n schemaQuestion.historicalPrepopulateCondition,\n this.dataSources,\n origValue\n );\n\n if (toPopulate) {\n question.defaultValue = origValue.value;\n }\n return; // don't try to evaluate the other option\n }\n\n if (schemaQuestion.historicalPrepopulate && origValue) {\n // sample schema options for this branch\n // \"historicalPrepopulate\":true,\n // \"allowedHistoricalValueAgeInDays\": 40000,\n const valDate = moment(origValue.valueDate);\n const differenceInDays = moment().diff(valDate, 'days');\n if (Number.isInteger(schemaQuestion.allowedHistoricalValueAgeInDays)) {\n if (\n differenceInDays <= schemaQuestion.allowedHistoricalValueAgeInDays\n ) {\n question.defaultValue = origValue.value;\n }\n } else {\n question.defaultValue = origValue.value;\n }\n }\n }\n }\n\n addCalculatorProperty(schemaQuestion: any, question: QuestionBase): any {\n if (\n schemaQuestion.questionOptions &&\n typeof schemaQuestion.questionOptions.calculate === 'object'\n ) {\n question.calculateExpression =\n schemaQuestion.questionOptions.calculate.calculateExpression;\n }\n }\n\n addAlertProperty(schemaQuestion: any, question: QuestionBase): any {\n if (schemaQuestion.alert) {\n question.alert = schemaQuestion.alert;\n }\n // if (typeof schemaQuestion.message === 'object') {\n // if (schemaQuestion.message.alertWhenExpression) {\n // question.message = schemaQuestion.message.alertWhenExpression;\n // }\n // }\n }\n\n addDisableOrHideProperty(schemaQuestion: any, question: QuestionBase): any {\n if (!!schemaQuestion.disable) {\n question.disable = schemaQuestion.disable;\n }\n\n if (typeof schemaQuestion.disable === 'object') {\n question.disable = schemaQuestion.disable.disableWhenExpression;\n }\n\n if (schemaQuestion.disable) {\n //if resetValueOnDisable doesn't exist on the config or no value is provided the default value will be passed (true)\n question.resetValueOnDisable =\n !schemaQuestion.hasOwnProperty('resetValueOnDisable') ||\n this.isEmpty(schemaQuestion.resetValueOnDisable)\n ? true\n : schemaQuestion.resetValueOnDisable;\n }\n\n if (!!schemaQuestion.hide) {\n question.hide = schemaQuestion.hide;\n }\n if (typeof schemaQuestion.hide === 'object') {\n if (schemaQuestion.hide.hideWhenExpression) {\n question.hide = schemaQuestion.hide.hideWhenExpression;\n }\n }\n }\n\n private generateId(x) {\n let s = '_';\n while (s.length < x && x > 0) {\n const r = Math.random();\n s +=\n r < 0.1\n ? Math.floor(r * 100)\n : String.fromCharCode(Math.floor(r * 26) + (r > 0.5 ? 97 : 65));\n }\n return '_' + s;\n }\n\n isEmpty(value): boolean {\n if (value === '' || value === null || value === undefined) {\n return true;\n }\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\n// import { AbstractControl } from '@angular/forms';\n\nimport { TranslateService } from '@ngx-translate/core';\nimport { LeafNode, GroupNode, ArrayNode, NodeBase } from './form-node';\nimport {\n QuestionBase,\n NestedQuestion,\n RepeatingQuestion,\n QuestionGroup\n} from '../question-models/models';\nimport { FormControlService } from './form-control.service';\nimport { QuestionFactory } from './question.factory';\nimport {\n AfeFormGroup,\n AfeControlType,\n AfeFormArray\n} from '../../abstract-controls-extension';\nimport { ControlRelationsFactory } from './control-relations.factory';\nimport { Validations } from '../validators/validations';\n\nimport { Form } from './form';\n\n@Injectable()\nexport class FormFactory {\n private nodeIndex = 0;\n public hd: any = {\n getValue: () => {\n return 20;\n }\n };\n\n constructor(\n public controlService: FormControlService,\n public questionFactroy: QuestionFactory,\n public controlRelationsFactory: ControlRelationsFactory,\n public translate: TranslateService\n ) {}\n\n createForm(schema: any, dataSource?: any): Form {\n const form: Form = new Form(schema, this, this.questionFactroy);\n if (dataSource) {\n for (const key in dataSource) {\n if (dataSource.hasOwnProperty(key)) {\n form.dataSourcesContainer.registerDataSource(\n key,\n dataSource[key],\n false\n );\n }\n }\n }\n const question = this.questionFactroy.createQuestionModel(schema, form);\n form.rootNode = this.createNode(question, null, null, form) as GroupNode;\n\n this.buildRelations(form.rootNode);\n form.updateHiddenDisabledStateForAllControls();\n form.updateAlertsForAllControls();\n return form;\n }\n\n buildRelations(rootNode: GroupNode) {\n Validations.JSExpressionValidatorsEnabled = false;\n this.controlRelationsFactory.buildRelations(rootNode);\n\n // enable js expression validations\n Validations.JSExpressionValidatorsEnabled = true;\n }\n\n createNode(\n question: QuestionBase | NestedQuestion,\n parentNode?: GroupNode,\n parentControl?: AfeFormGroup,\n form?: Form\n ): NodeBase {\n let node: NodeBase = null;\n if (question instanceof NestedQuestion) {\n if (question instanceof RepeatingQuestion) {\n node = this.createArrayNode(question, parentNode, parentControl, form);\n } else {\n node = this.createGroupNode(question, parentNode, parentControl, form);\n }\n } else {\n node = this.createLeafNode(question, parentNode, parentControl, form);\n }\n node.nodeIndex = this.nodeIndex;\n this.nodeIndex++;\n return node;\n }\n\n createLeafNode(\n question: QuestionBase,\n parentNode: GroupNode,\n parentControl?: AfeFormGroup,\n form?: Form\n ): LeafNode {\n const controlModel = this.controlService.generateControlModel(\n question,\n parentControl,\n false,\n form\n );\n return new LeafNode(\n question,\n controlModel,\n null,\n form,\n parentNode ? parentNode.path : undefined\n );\n }\n\n createGroupNode(\n question: NestedQuestion,\n parentNode?: GroupNode,\n parentControl?: AfeFormGroup,\n form?: Form\n ): GroupNode {\n const controlModel = this.controlService.generateControlModel(\n question,\n parentControl,\n false,\n form\n ) as AfeFormGroup;\n const groupNode = new GroupNode(\n question,\n controlModel,\n null,\n form,\n parentNode ? parentNode.path : undefined\n );\n this.createNodeChildren(\n question,\n groupNode,\n controlModel || parentControl,\n form\n );\n return groupNode;\n }\n\n createArrayNode(\n question: NestedQuestion,\n parentNode?: GroupNode,\n parentControl?: AfeFormGroup,\n form?: Form\n ): ArrayNode {\n const controlModel = this.controlService.generateControlModel(\n question,\n parentControl,\n false,\n form\n ) as AfeFormGroup;\n const arrayNode = new ArrayNode(\n question,\n this.translate,\n controlModel,\n parentControl,\n this,\n form,\n parentNode ? parentNode.path : undefined\n );\n arrayNode.createChildFunc = this.createArrayNodeChild;\n arrayNode.removeChildFunc = this.removeArrayNodeChild;\n\n arrayNode.addChildNodeCreatedListener((node: GroupNode) => {\n Validations.JSExpressionValidatorsEnabled = false;\n this.controlRelationsFactory.buildArrayNodeRelations(node);\n Validations.JSExpressionValidatorsEnabled = true;\n });\n return arrayNode;\n }\n\n createNodeChildren(\n question: NestedQuestion,\n node: GroupNode,\n parentControl?: AfeFormGroup,\n form?: Form\n ): any {\n question.questions.forEach((element) => {\n const child = this.createNode(element, node, parentControl, form);\n node.setChild(element.key, child);\n });\n return node.children;\n }\n\n createArrayNodeChild(\n question: RepeatingQuestion,\n node: ArrayNode,\n factory?: FormFactory,\n position?: number\n ): GroupNode {\n if (factory === null || factory === undefined) {\n factory = this;\n }\n const groupQuestion: QuestionGroup = new QuestionGroup({\n key: node.path + '.' + node.children.length + '',\n type: 'group',\n extras: question.extras,\n label: '',\n questions: question.questions\n });\n\n if (question.controlType === AfeControlType.None) {\n groupQuestion.controlType = question.controlType;\n }\n\n const group = factory.createGroupNode(groupQuestion, null, null, node.form);\n\n if (position >= 0) {\n node.children.splice(position, 0, group);\n } else {\n node.children.push(group);\n }\n\n if (node.control instanceof AfeFormArray) {\n const nodeControl = node.control as AfeFormArray;\n nodeControl.setControl(nodeControl.controls.length, group.control);\n }\n\n return group;\n }\n\n removeArrayNodeChild(index: number, node: ArrayNode) {\n const nodeToRemove = node.children[index];\n\n node.children.splice(index, 1);\n if (node.control !== null || node.control !== undefined) {\n if (node.control instanceof AfeFormArray) {\n const control = node.control as AfeFormArray;\n const controlIndexToRemove = control.controls.indexOf(\n nodeToRemove.control\n );\n if (controlIndexToRemove >= 0) {\n control.removeAt(controlIndexToRemove);\n }\n }\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Form } from '../form-factory/form';\nimport { ValueAdapter } from './value.adapter';\nimport * as _ from 'lodash';\n@Injectable()\nexport class OrderValueAdapter implements ValueAdapter {\n formOrderNodes = [];\n private provider = '';\n\n generateFormPayload(form: Form) {\n this.formOrderNodes = [];\n this._setOrderProvider(form);\n this._findTestOrderQuestionNodes(form.rootNode);\n return this._createOrdersPayload(this.formOrderNodes, form);\n }\n\n populateForm(form: Form, payload) {\n form.existingOrders = payload;\n this.formOrderNodes = [];\n this._findTestOrderQuestionNodes(form.rootNode);\n const existingOrders = this._getExistingOrders(form);\n this._setOrderValues(this.formOrderNodes, existingOrders);\n }\n\n private _setOrderProvider(form: Form) {\n if (form.valueProcessingInfo.providerUuid) {\n this.provider = form.valueProcessingInfo.providerUuid;\n }\n }\n\n private _createOrdersPayload(orderNodes, form: Form) {\n const payload = [];\n const selectedOrders = [];\n let deletedOrders = [];\n const existingOrders = this._getExistingOrders(form);\n for (const orderNode of orderNodes) {\n const orderNodeValues = orderNode.control.value;\n const orders = [];\n if (existingOrders) {\n existingOrders.map(function (obj) {\n orders[obj.concept] = obj.concept;\n });\n }\n\n for (const order in orderNodeValues) {\n if (orderNodeValues.hasOwnProperty(order)) {\n const orderValue = orderNodeValues[order][orderNode.question.key];\n\n const payloadOrder = this._createPayloadOrder(\n orderValue,\n orderNode.question.extras\n );\n\n if (\n orders[orderValue] !== orderValue &&\n payloadOrder.concept !== ''\n ) {\n payload.push(payloadOrder);\n }\n selectedOrders[orderValue] = orderValue;\n if (payloadOrder.orderNumber === '') {\n delete payloadOrder.orderNumber;\n }\n if (payloadOrder.uuid === '') {\n delete payloadOrder.uuid;\n }\n }\n }\n }\n\n deletedOrders = this._getDeletedOrders(selectedOrders, existingOrders);\n return this._addDeletedOrdersToPayload(deletedOrders, payload);\n }\n\n private _getExistingOrders(form: Form) {\n if (form.existingOrders && form.existingOrders.orders) {\n let existingOrders = form.existingOrders.orders.map((o) => {\n return {\n concept: o.concept.uuid,\n orderNumber: o.orderNumber,\n orderUuid: o.uuid,\n voided: o.voided,\n dateVoided: o.auditInfo.dateVoided\n };\n });\n\n return (existingOrders = _.filter(existingOrders, (order: any) => {\n if (order.voided === true || order.dateVoided) {\n return false;\n } else {\n return true;\n }\n }));\n } else {\n return;\n }\n }\n\n private _setOrderValues(node, existingOrders) {\n this._findTestOrderQuestionNodes(node);\n\n const orderNodes = this.formOrderNodes;\n for (const orderNode of orderNodes) {\n this._setOrderNodeValues(orderNode, existingOrders);\n }\n }\n\n private _addDeletedOrdersToPayload(deletedOrders, payload): any {\n for (const order in deletedOrders) {\n if (deletedOrders.hasOwnProperty(order)) {\n payload.push({ uuid: deletedOrders[order], voided: true });\n }\n }\n return payload;\n }\n\n private _createPayloadOrder(orderConcept, quesitonExtras): any {\n const order = {\n concept: '',\n type: '',\n orderer: '',\n careSetting: ''\n };\n order.concept = orderConcept;\n order.type = quesitonExtras.questionOptions.orderType;\n order.orderer = this.provider;\n order.careSetting = quesitonExtras.questionOptions.orderSettingUuid;\n\n // delete orderer if provider not provided\n if (order.orderer === '') {\n delete order.orderer;\n }\n\n return order;\n }\n\n private _getDeletedOrders(selectedOrders, existingOrders): any {\n const deleteOrders = [];\n if (selectedOrders) {\n for (const order in existingOrders) {\n if (existingOrders.hasOwnProperty(order)) {\n const existingOrderConcept = existingOrders[order].concept;\n const selectedOrder = selectedOrders[existingOrderConcept];\n if (selectedOrder !== existingOrderConcept) {\n deleteOrders.push(existingOrders[order].orderUuid);\n }\n }\n }\n }\n\n return deleteOrders;\n }\n\n private _setOrderNodeValues(node, orders) {\n let index = 0;\n node['initialValue'] = orders;\n for (const order of orders) {\n node.createChildNode();\n const value = {};\n value[node.question.key] = order.concept;\n const childNode = node.children[index];\n childNode.control.setValue(value);\n childNode['initialValue'] = value;\n childNode['orderNumber'] = order.orderNumber;\n\n index++;\n }\n }\n\n private _findTestOrderQuestionNodes(formNode) {\n if (formNode.children) {\n if (formNode.children instanceof Object) {\n for (const key in formNode.children) {\n if (formNode.children.hasOwnProperty(key)) {\n switch (formNode.children[key].question.renderingType) {\n case 'page':\n this._findTestOrderQuestionNodes(formNode.children[key]);\n break;\n case 'section':\n this._findTestOrderQuestionNodes(formNode.children[key]);\n break;\n case 'group':\n this._findTestOrderQuestionNodes(formNode.children[key]);\n\n break;\n case 'repeating':\n if (formNode.children) {\n for (const node in formNode.children) {\n const question = formNode.children[node].question;\n if (\n question.extras &&\n question.extras.type === 'testOrder'\n ) {\n this.formOrderNodes.push(formNode.children[node]);\n }\n }\n }\n break;\n default:\n break;\n }\n }\n }\n }\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Form } from '../form-factory/form';\nimport { ValueAdapter } from './value.adapter';\n\n@Injectable()\nexport class DiagnosisValueAdapter implements ValueAdapter {\n formDiagnosisNodes = [];\n\n generateFormPayload(form: Form) {\n this.formDiagnosisNodes = [];\n this._findDiagnosisQuestionNodes(form.rootNode);\n return this._createDiagnosesPayload(\n this.formDiagnosisNodes,\n form.existingDiagnoses\n );\n }\n\n populateForm(form: Form, diagnoses: Array<Diagnosis>) {\n form.existingDiagnoses = diagnoses?.filter((d) => {\n return !d.voided;\n });\n this.formDiagnosisNodes = [];\n this._findDiagnosisQuestionNodes(form.rootNode);\n this._setDiagnosesValues(\n this.formDiagnosisNodes,\n form.existingDiagnoses,\n 1\n );\n this._setDiagnosesValues(\n this.formDiagnosisNodes,\n form.existingDiagnoses,\n 2\n );\n }\n\n private _createDiagnosesPayload(diagnosisNodes, existingDiagnoses) {\n const payload: Array<DiagnosisPayload> = [];\n let deletedDiagnoses: Array<DiagnosisPayload> = [];\n\n diagnosisNodes?.forEach((node) => {\n node.control.value\n .filter((v) => v[node.question.key])\n .forEach((value) => {\n // Create Payload\n const payloadDiagnosis = this._createPayloadDiagnosis(\n value[node.question.key],\n node.question.extras\n );\n // Validate if is new value\n payload.push(payloadDiagnosis);\n });\n });\n\n this._updatedOldDiagnoses(payload, existingDiagnoses);\n deletedDiagnoses = this._getDeletedDiagnoses(payload, existingDiagnoses);\n return payload.concat(deletedDiagnoses);\n }\n\n private _createPayloadDiagnosis(codedUuid, questionExtras): DiagnosisPayload {\n const diagnosis: DiagnosisPayload = {\n diagnosis: {\n coded: codedUuid\n },\n certainty: 'CONFIRMED',\n rank: questionExtras.questionOptions.rank,\n voided: false\n };\n\n return diagnosis;\n }\n\n private _getDeletedDiagnoses(\n payloadDiagnoses: Array<DiagnosisPayload>,\n existingDiagnoses: Array<Diagnosis>\n ): Array<DiagnosisPayload> {\n return existingDiagnoses\n ?.filter((e) => {\n return !payloadDiagnoses.find((p) => {\n let isSame =\n !e.voided && p.diagnosis.coded === e.diagnosis.coded.uuid;\n return isSame;\n });\n })\n .map((d) => {\n let diagnosisPayload = this._convert(d);\n diagnosisPayload.voided = true;\n return diagnosisPayload;\n });\n }\n\n private _updatedOldDiagnoses(\n payloadDiagnoses: Array<DiagnosisPayload>,\n existingDiagnoses: Array<Diagnosis>\n ) {\n payloadDiagnoses.forEach((p) => {\n existingDiagnoses?.forEach((e) => {\n let isSame = !e.voided && p.diagnosis.coded === e.diagnosis.coded.uuid;\n p.uuid = isSame ? e.uuid : null;\n });\n });\n }\n\n private _setDiagnosesValues(\n formDiagnosisNodes,\n existingDiagnoses: Array<Diagnosis>,\n rank: number\n ) {\n formDiagnosisNodes\n ?.filter((node) => node.question.extras.questionOptions.rank == rank)\n .forEach((node) => {\n node['initialValue'] = existingDiagnoses;\n existingDiagnoses\n .filter((d) => d.rank == rank)\n .forEach((diagnosis, index) => {\n node.createChildNode();\n const value = {};\n value[node.question.key] = diagnosis.diagnosis.coded.uuid;\n const childNode = node.children[index];\n childNode.control.setValue(value);\n childNode['initialValue'] = value;\n });\n });\n }\n\n private _findDiagnosisQuestionNodes(formNode) {\n if (formNode.children) {\n if (formNode.children instanceof Object) {\n for (const key in formNode.children) {\n if (formNode.children.hasOwnProperty(key)) {\n switch (formNode.children[key].question.renderingType) {\n case 'page':\n this._findDiagnosisQuestionNodes(formNode.children[key]);\n break;\n case 'section':\n this._findDiagnosisQuestionNodes(formNode.children[key]);\n break;\n case 'group':\n this._findDiagnosisQuestionNodes(formNode.children[key]);\n break;\n case 'repeating':\n if (formNode.children) {\n for (const node in formNode.children) {\n const question = formNode.children[node].question;\n const index = formNode.children[node].nodeIndex;\n if (\n question.extras &&\n question.extras.type === 'diagnosis' &&\n !this.formDiagnosisNodes.some(\n (x) => index === x.nodeIndex\n )\n ) {\n this.formDiagnosisNodes.push(formNode.children[node]);\n }\n }\n }\n break;\n default:\n break;\n }\n }\n }\n }\n }\n }\n\n private _convert(diagnosis: Diagnosis): DiagnosisPayload {\n return {\n uuid: diagnosis.uuid,\n encounter: diagnosis.encounter,\n patient: diagnosis.patient,\n diagnosis: {\n coded: diagnosis.diagnosis.coded.uuid,\n nonCoded: diagnosis.diagnosis.nonCoded\n },\n certainty: diagnosis.certainty,\n rank: diagnosis.rank,\n voided: diagnosis.voided\n };\n }\n}\n\nexport interface Diagnosis {\n uuid?: string;\n display?: string;\n encounter?: string;\n patient?: string;\n diagnosis: {\n coded?: {\n uuid: string;\n display?: string;\n };\n nonCoded?: string;\n };\n certainty: 'CONFIRMED' | 'PROVISIONAL';\n rank: number;\n voided?: boolean;\n}\n\nexport interface DiagnosisPayload {\n uuid?: string;\n encounter?: string;\n patient?: string;\n diagnosis: {\n coded?: string;\n nonCoded?: string;\n };\n certainty: 'CONFIRMED' | 'PROVISIONAL';\n rank: number;\n voided?: boolean;\n}\n","import _ from 'lodash';\nimport moment from 'moment';\n\nimport {\n NodeBase,\n ArrayNode,\n GroupNode,\n LeafNode\n} from '../form-factory/form-node';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class ObsAdapterHelper {\n formFieldNamespace = 'O3';\n obsIndex = 0;\n constructor() {}\n\n findObsAnswerToQuestion(node: NodeBase, obsArray: Array<any>): Array<any> {\n // Find and Order the obs based on form_namespace_and_path\n const found = [];\n\n if (!this.isObsNode(node)) {\n return found;\n }\n\n if (\n node instanceof LeafNode ||\n (node instanceof GroupNode && node.question.extras.type === 'complex-obs')\n ) {\n _.each(obsArray, (item) => {\n let questionId = this.getQuestionIdFromFormFieldPath(\n item.formFieldPath\n );\n if (\n (questionId && questionId === node?.question?.extras?.id) ||\n (!questionId &&\n item.concept &&\n item.concept.uuid === node.question.extras.questionOptions.concept)\n ) {\n found.push(item);\n }\n });\n\n return found;\n }\n\n // At this point the node is either a group or a repeating node\n\n const childQuestionsUuids = this.getChildQuestionsConceptUuids(node);\n if (childQuestionsUuids.length > 0) {\n _.each(obsArray, (obs) => {\n if (\n obs.concept &&\n obs.concept.uuid === node.question.extras.questionOptions.concept &&\n Array.isArray(obs.groupMembers) &&\n this.isSubsetOf(\n childQuestionsUuids,\n this.getGroupMembersConceptUuids(obs)\n )\n ) {\n found.push(obs);\n }\n });\n }\n\n return found;\n }\n\n getChildQuestionsConceptUuids(node: NodeBase): Array<string> {\n const found = [];\n\n if (node.question.extras && node.question.extras.questions) {\n _.each(node.question.extras.questions, (question) => {\n if (question.questionOptions && question.questionOptions.concept) {\n found.push(question.questionOptions.concept);\n }\n });\n }\n\n return found;\n }\n\n getGroupMembersConceptUuids(obsWithGroupMembers): Array<string> {\n const found = [];\n\n if (Array.isArray(obsWithGroupMembers.groupMembers)) {\n _.each(obsWithGroupMembers.groupMembers, (member) => {\n found.push(member.concept.uuid);\n });\n }\n\n return found;\n }\n\n isObsNode(node: NodeBase): boolean {\n return (\n node.question.extras &&\n (node.question.extras.type === 'obs' ||\n node.question.extras.type === 'obsGroup' ||\n node.question.extras.type === 'complex-obs' ||\n node.question.extras.type === 'complex-obs-child')\n );\n }\n\n isSubsetOf(supersetArray: Array<any>, subsetArray: Array<any>): boolean {\n if (subsetArray.length === 0 && supersetArray.length === 0) {\n return true;\n }\n return subsetArray.every((element): boolean => {\n return supersetArray.indexOf(element) >= 0;\n });\n }\n\n setSimpleObsNodeValue(node: NodeBase, obs: Array<any>) {\n if (node && obs.length > 0) {\n const obsToUse = obs[0];\n\n // set initial value\n node.initialValue = obsToUse;\n\n if (!this.isEmpty(obsToUse.value) && obsToUse.value.uuid) {\n // answer to the obs is a concept, use uuid value\n this.setNodeFormControlValue(node, obsToUse.value.uuid);\n } else if (!this.isEmpty(obsToUse.value)) {\n this.setNodeFormControlValue(node, obsToUse.value);\n }\n }\n }\n\n setMultiselectObsNodeValue(node: NodeBase, obs: Array<any>) {\n if (node && obs.length > 0) {\n obs = obs.sort(this.comparePath);\n node.initialValue = obs;\n\n const obsUuids = [];\n for (const m of obs) {\n obsUuids.push(m.value.uuid);\n }\n\n this.setNodeFormControlValue(node, obsUuids);\n }\n }\n\n setComplexObsNodeValue(node: NodeBase, obs: Array<any>) {\n if (node && obs.length > 0) {\n let valueField: LeafNode; // essential memmber\n let dateField: LeafNode; // other member to be manipulated by user\n\n const nodeAsGroup = node as GroupNode;\n\n for (const o in nodeAsGroup.children) {\n if (\n (nodeAsGroup.children[o] as LeafNode).question.extras.questionOptions\n .obsField === 'value'\n ) {\n valueField = nodeAsGroup.children[o];\n }\n\n if (\n (nodeAsGroup.children[o] as LeafNode).question.extras.questionOptions\n .obsField === 'obsDatetime'\n ) {\n dateField = nodeAsGroup.children[o];\n }\n }\n\n // set the obs value here\n this.setNodeValue(valueField, obs);\n node.initialValue = valueField.initialValue;\n\n // set the date value here\n dateField.initialValue = valueField.initialValue;\n this.setNodeFormControlValue(\n dateField,\n valueField.initialValue.obsDatetime\n );\n }\n }\n\n setGroupObsNodeValue(node: NodeBase, obs: Array<any>) {\n if (node && obs.length > 0) {\n const groupNode = node as GroupNode;\n groupNode.initialValue = obs[0];\n\n for (const o in groupNode.children) {\n this.setNodeValue(groupNode.children[o], obs[0].groupMembers);\n }\n }\n }\n\n setRepeatingGroupObsNodeValue(node: NodeBase, obs: Array<any>) {\n if (node && obs.length > 0) {\n const arrayNode = node as ArrayNode;\n obs = obs.sort(this.comparePath);\n arrayNode.initialValue = obs;\n for (let i = 0; i < obs.length; i++) {\n const createdNode = arrayNode.createChildNode();\n this.setGroupObsNodeValue(createdNode, [obs[i]]);\n }\n }\n }\n\n comparePath(first, second) {\n if (!first || !second) {\n return -1;\n }\n\n let firstNumber;\n if (first.formFieldPath?.includes('~')) {\n firstNumber = first.formFieldPath.split('~', 2)[1];\n } else {\n firstNumber = first.formFieldPath;\n }\n\n let secondNumber;\n if (second.formFieldPath?.includes('~')) {\n secondNumber = second.formFieldPath.split('~', 2)[1];\n } else {\n secondNumber = second.formFieldPath;\n }\n return Number(firstNumber) - Number(secondNumber);\n }\n\n setNodeValue(node: NodeBase, obs: Array<any>) {\n switch (this.getObsNodeType(node)) {\n case 'unknown':\n if (node instanceof GroupNode) {\n const groupNode = node as GroupNode;\n\n for (const o in groupNode.children) {\n this.setNodeValue(groupNode.children[o], obs);\n }\n break;\n }\n if (node instanceof ArrayNode) {\n const arrayNode = node as ArrayNode;\n for (let i = 0; i < arrayNode.children.length; i++) {\n this.setNodeValue(arrayNode.children[i], obs);\n }\n break;\n }\n break;\n case 'simple':\n // search asnwering obs at this point\n const answeringObs = this.findObsAnswerToQuestion(node, obs);\n\n // set answer here\n this.setSimpleObsNodeValue(node, answeringObs);\n break;\n\n case 'multiselect':\n // search asnwering obs at this point\n const multiselectObs = this.findObsAnswerToQuestion(node, obs);\n\n // set answer here\n this.setMultiselectObsNodeValue(node, multiselectObs);\n break;\n\n case 'complex':\n // search asnwering obs at this point\n const complexObs = this.findObsAnswerToQuestion(node, obs);\n\n // set answer here\n this.setComplexObsNodeValue(node, complexObs);\n break;\n\n case 'group':\n const groupObs = this.findObsAnswerToQuestion(node, obs);\n\n if (groupObs.length > 0) {\n this.setGroupObsNodeValue(node, groupObs);\n }\n\n break;\n case 'repeatingGroup':\n const repeatingGroupObs = this.findObsAnswerToQuestion(node, obs);\n\n if (repeatingGroupObs.length > 0) {\n this.setRepeatingGroupObsNodeValue(node, repeatingGroupObs);\n }\n\n break;\n default:\n console.error('Unknown obs node', node);\n break;\n }\n }\n\n setNodeFormControlValue(node: NodeBase, value) {\n node.control.setValue(value);\n // TODO: Determine if we need this call\n // node.control.updateValueAndValidity();\n\n // TODO: Remove this hack and put it in appropriate place\n if (\n node.question.enableHistoricalValue &&\n node.initialValue !== undefined\n ) {\n node.question.setHistoricalValue(false);\n }\n }\n\n getObsNodeType(node: NodeBase): string {\n if (this.isObsNode(node)) {\n if (\n node instanceof LeafNode &&\n (node.question.extras.questionOptions.rendering === 'multiCheckbox' ||\n node.question.extras.questionOptions.rendering === 'checkbox' ||\n node.question.extras.questionOptions.rendering === 'multi-select')\n ) {\n return 'multiselect';\n }\n\n if (node instanceof LeafNode) {\n return 'simple';\n }\n\n if (\n node instanceof GroupNode &&\n node.question.extras.type === 'complex-obs'\n ) {\n return 'complex';\n }\n\n if (\n node instanceof ArrayNode &&\n node.question.extras.type === 'obsGroup' &&\n node.question.extras.questionOptions.rendering === 'repeating'\n ) {\n return 'repeatingGroup';\n }\n\n if (\n node instanceof GroupNode &&\n node.question.extras.type === 'obsGroup'\n ) {\n return 'group';\n }\n\n return 'unknownObs';\n }\n return 'unknown';\n }\n\n // PAYLOAD GENERATION FUNCTIONS\n addFieldNameSpaceandPath(node, obs) {\n obs.formFieldNamespace = this.formFieldNamespace;\n obs.formFieldPath = `${node?.question?.extras?.id}~${this.obsIndex}`;\n this.obsIndex++;\n return obs;\n }\n\n getQuestionIdFromFormFieldPath(formFieldPath: string) {\n if (formFieldPath?.includes('~')) {\n return formFieldPath.split('~', 1)[0];\n }\n }\n\n getSimpleObsPayload(node: NodeBase): any {\n // check for empty values first\n if (this.isEmpty(node.control.value)) {\n if (node.initialValue) {\n // Handle case for existing voided obs\n return {\n uuid: node.initialValue.uuid,\n voided: true\n };\n }\n return null;\n }\n\n // check for exisiting, unchanged values\n if (node.initialValue && !this.simpleNodeValueChanged(node)) {\n return null;\n }\n\n // all numbers, text, concepts answers are handled in the same way\n // no need for further formatting in this case\n const obs: any = {\n concept: node.question.extras.questionOptions.concept,\n value: node.control.value\n };\n\n // handle date fields\n if (node.question.extras.questionOptions.rendering === 'date') {\n obs.value = this.toOpenMrsDateTimeString(node.control.value);\n }\n\n if (node.initialValue) {\n // for existing cases, delete concept property, and add uuid\n delete obs.concept;\n obs.uuid = node.initialValue.uuid;\n }\n\n return this.addFieldNameSpaceandPath(node, obs);\n }\n\n getComplexObsPayload(node: NodeBase) {\n let valueField: LeafNode; // essential memmber\n let dateField: LeafNode; // other member to be manipulated by user\n\n const nodeAsGroup = node as GroupNode;\n for (const o in nodeAsGroup.children) {\n if (\n (nodeAsGroup.children[o] as LeafNode).question.extras.questionOptions\n .obsField === 'value'\n ) {\n valueField = nodeAsGroup.children[o];\n }\n\n if (\n (nodeAsGroup.children[o] as LeafNode).question.extras.questionOptions\n .obsField === 'obsDatetime'\n ) {\n dateField = nodeAsGroup.children[o];\n }\n }\n\n const valuePayload = this.getObsNodePayload(valueField);\n // set obs datetime for the generated payload\n if (valuePayload.length > 0) {\n valuePayload[0].obsDatetime = this.toOpenMrsDateTimeString(\n dateField.control.value\n );\n return valuePayload[0];\n } else if (valuePayload.length === 0 && node.initialValue) {\n // determine if date changed\n if (\n !this.areDatesEqual(\n node.initialValue.obsDatetime,\n dateField.control.value\n )\n ) {\n const payload: any = {\n uuid: node.initialValue.uuid\n };\n payload.obsDatetime = this.toOpenMrsDateTimeString(\n dateField.control.value\n );\n\n return payload;\n }\n }\n return null;\n }\n\n getMultiselectObsPayload(node: NodeBase): Array<any> {\n const payload: Array<any> = [];\n\n const existingUuids = [];\n\n // add voided obs i.e. deleted options\n if (Array.isArray(node.initialValue)) {\n _.each(node.initialValue, (item) => {\n existingUuids.push(item.value.uuid);\n if (Array.isArray(node.control.value)) {\n if (node.control.value.indexOf(item.value.uuid) < 0) {\n payload.push({\n uuid: item.uuid,\n voided: true\n });\n }\n } else {\n // every value was deleted\n payload.push({\n uuid: item.uuid,\n voided: true\n });\n }\n });\n }\n\n // add new obs i.e they didn't exisit originally\n if (Array.isArray(node.control.value)) {\n _.each(node.control.value, (item) => {\n if (existingUuids.indexOf(item) < 0) {\n payload.push(\n this.addFieldNameSpaceandPath(node, {\n concept: node.question.extras.questionOptions.concept,\n value: item\n })\n );\n }\n });\n }\n return payload;\n }\n\n getGroupPayload(node: NodeBase) {\n const nodeAsGroup: GroupNode = node as GroupNode;\n\n let childrenPayload = [];\n _.each(nodeAsGroup.children, (child) => {\n const payload = this.getObsNodePayload(child);\n if (payload.length > 0) {\n childrenPayload = childrenPayload.concat(payload);\n }\n });\n\n if (childrenPayload.length === 0) {\n return null;\n }\n\n const groupPayload: any = {\n groupMembers: childrenPayload\n };\n\n if (nodeAsGroup.initialValue) {\n groupPayload.uuid = nodeAsGroup.initialValue.uuid;\n } else {\n groupPayload.concept =\n nodeAsGroup.question.extras.questionOptions.concept;\n }\n this.addFieldNameSpaceandPath(node, groupPayload);\n return groupPayload;\n }\n\n getRepeatingGroupPayload(node: NodeBase) {\n const nodeAsArray: ArrayNode = node as ArrayNode;\n\n let childrenPayload = [];\n\n const groupsUuidsAfterEditting = [];\n _.each(nodeAsArray.children, (child) => {\n const payload = this.getObsNodePayload(child);\n if (payload.length > 0) {\n childrenPayload = childrenPayload.concat(payload);\n }\n if (child.initialValue && child.initialValue.uuid) {\n groupsUuidsAfterEditting.push(child.initialValue.uuid);\n }\n });\n\n // void deleted groups\n\n if (nodeAsArray.initialValue && Array.isArray(nodeAsArray.initialValue)) {\n _.each(nodeAsArray.initialValue, (obs) => {\n if (groupsUuidsAfterEditting.indexOf(obs.uuid) < 0) {\n const voidedGroup = {\n uuid: obs.uuid,\n voided: true\n };\n childrenPayload.push(voidedGroup);\n }\n });\n }\n\n if (childrenPayload.length <= 0) {\n return null;\n }\n return childrenPayload;\n }\n\n getObsNodePayload(node: NodeBase): Array<any> {\n let payload = [];\n switch (this.getObsNodeType(node)) {\n case 'unknown':\n if (node instanceof GroupNode) {\n const groupNode = node as GroupNode;\n\n for (const o in groupNode.children) {\n const groupNodePayoad = this.getObsNodePayload(\n groupNode.children[o]\n );\n if (Array.isArray(groupNodePayoad) && groupNodePayoad.length > 0) {\n payload = payload.concat(groupNodePayoad);\n }\n }\n break;\n }\n if (node instanceof ArrayNode) {\n const arrayNode = node as ArrayNode;\n for (let i = 0; i < arrayNode.children.length; i++) {\n const arrayNodePayload = this.getObsNodePayload(\n arrayNode.children[i]\n );\n if (\n Array.isArray(arrayNodePayload) &&\n arrayNodePayload.length > 0\n ) {\n payload = payload.concat(arrayNodePayload);\n }\n }\n break;\n }\n break;\n case 'simple':\n const simpleObs = this.getSimpleObsPayload(node);\n if (simpleObs !== null) {\n payload.push(simpleObs);\n }\n break;\n\n case 'multiselect':\n const multiselectObs = this.getMultiselectObsPayload(node);\n\n if (Array.isArray(multiselectObs) && multiselectObs.length > 0) {\n payload = payload.concat(multiselectObs);\n }\n break;\n\n case 'complex':\n const complexObs = this.getComplexObsPayload(node);\n if (complexObs !== null) {\n payload.push(complexObs);\n }\n break;\n\n case 'group':\n const groupedObs = this.getGroupPayload(node);\n if (groupedObs && groupedObs !== null) {\n payload.push(groupedObs);\n }\n break;\n case 'repeatingGroup':\n const repeatingGroupedObs = this.getRepeatingGroupPayload(node);\n if (\n Array.isArray(repeatingGroupedObs) &&\n repeatingGroupedObs.length > 0\n ) {\n payload = payload.concat(repeatingGroupedObs);\n }\n break;\n default:\n break;\n }\n return payload;\n }\n\n simpleNodeValueChanged(node: NodeBase): boolean {\n if (node.initialValue) {\n if (node.initialValue.value && node.initialValue.value.uuid) {\n // question whose answer is a concept\n return node.control.value !== node.initialValue.value.uuid;\n }\n\n if (node.question.extras.questionOptions.rendering === 'date') {\n return !this.areDatesEqual(node.control.value, node.initialValue.value);\n }\n return node.control.value !== node.initialValue.value;\n }\n return false;\n }\n\n areDatesEqual(date1, date2) {\n return moment(date1).isSame(date2);\n }\n\n isEmpty(value): boolean {\n if (\n value === '' ||\n value === null ||\n value === undefined\n // || value === [] ||\n // value === {}\n ) {\n return true;\n }\n return false;\n }\n\n toOpenMrsDateTimeString(datetime: string): string {\n if (this.isEmpty(datetime)) {\n return undefined;\n } else {\n // transform value to moment value to avoid error\n const formattedVal = moment(datetime).format();\n const val = formattedVal.substring(0, 19).replace('T', ' ');\n return this.isEmpty(val) ? undefined : val;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport 'rxjs';\n\nimport * as _ from 'lodash';\n\nimport { LeafNode, GroupNode } from '../form-factory/form-node';\nimport { Form } from '../form-factory/form';\nimport { ValueAdapter } from './value.adapter';\nimport { ObsAdapterHelper } from './obs-adapter-helper';\n\n@Injectable()\nexport class ObsValueAdapter implements ValueAdapter {\n constructor(private helper: ObsAdapterHelper) {}\n\n generateFormPayload(form: Form) {\n return this.helper.getObsNodePayload(form.rootNode);\n // TODO: Get rid of the section below when the helper is stable.\n // // Traverse to get all nodes\n // let pages = this.traverse(form.rootNode);\n // // Extract actual question nodes\n // let questionNodes = this.getQuestionNodes(pages);\n // // Get obs Payload\n // return this.getObsPayload(questionNodes);\n }\n\n populateForm(form: Form, payload) {\n this.helper.setNodeValue(form.rootNode, payload);\n\n // TODO: Get rid of the section below when the helper is stable.\n // // Traverse to get all nodes\n // let pages = this.traverse(form.rootNode);\n // // Extract actual question nodes\n // let questionNodes = this.getQuestionNodes(pages);\n // // Extract set obs\n // this.setValues(questionNodes, payload);\n }\n\n // TODO: Get rid of all the functions below as they will not be needed\n // once the helper is stable\n\n setValues(nodes, payload?, forcegroup?) {\n if (nodes) {\n for (const node of nodes) {\n if (node instanceof LeafNode) {\n this.setObsValue(node, payload);\n if (\n node.question.enableHistoricalValue &&\n node.initialValue !== undefined\n ) {\n node.question.setHistoricalValue(false);\n }\n } else if (\n (node.question &&\n node.question.extras &&\n node.question.renderingType === 'group') ||\n forcegroup\n ) {\n const groupObs = _.find(payload, (o: any) => {\n return (\n o.concept.uuid === node.question.extras.questionOptions.concept &&\n o.groupMembers\n );\n });\n if (groupObs) {\n if (node.node) {\n node.node['initialValue'] = groupObs;\n }\n\n this.setValues(node.groupMembers, groupObs.groupMembers);\n }\n if (forcegroup && node.payload) {\n this.setValues(node.groupMembers, node.payload.groupMembers);\n }\n } else if (\n node instanceof GroupNode &&\n node.question.extras.type === 'complex-obs'\n ) {\n this.setComplexObsValue(node, payload);\n } else if (\n node.question &&\n node.question.extras &&\n node.question.renderingType === 'repeating' &&\n !forcegroup\n ) {\n this.setRepeatingGroupValues(node, payload);\n node.node.control.updateValueAndValidity();\n } else {\n throw new Error('not implemented');\n }\n }\n }\n }\n\n setObsValue(node, payload) {\n if (\n (node.question &&\n node.question.extras &&\n (node.question.extras.type === 'obs' ||\n (node.question.extras.type === 'complex-obs-child' &&\n node.question.extras.questionOptions.obsField === 'value')) &&\n node.question.extras.questionOptions.rendering !== 'multiCheckbox') ||\n node.question.extras.questionOptions.rendering !== 'checkbox' ||\n node.question.extras.questionOptions.rendering !== 'multi-select'\n ) {\n const obs = _.find(payload, (o: any) => {\n return o.concept.uuid === node.question.extras.questionOptions.concept;\n });\n if (obs) {\n if (obs.value instanceof Object) {\n node.control.setValue(obs.value.uuid);\n node.control.updateValueAndValidity();\n } else {\n node.control.setValue(obs.value);\n node.control.updateValueAndValidity();\n }\n node['initialValue'] = { obsUuid: obs.uuid, value: obs.value };\n }\n } else {\n const multiObs = _.filter(payload, (o: any) => {\n return o.concept.uuid === node.question.extras.questionOptions.concept;\n });\n if (multiObs && multiObs.length > 0) {\n node.control.setValue(this.getMultiselectValues(multiObs));\n node.control.updateValueAndValidity();\n node['initialValue'] = multiObs;\n }\n }\n }\n\n setComplexObsValue(node, payload) {\n let valueField: any;\n let dateField: any;\n\n for (const o in node.children) {\n if (\n (node.children[o] as LeafNode).question.extras.questionOptions\n .obsField === 'value'\n ) {\n valueField = node.children[o];\n }\n\n if (\n (node.children[o] as LeafNode).question.extras.questionOptions\n .obsField === 'obsDatetime'\n ) {\n dateField = node.children[o];\n }\n }\n // set the usual obs value\n this.setObsValue(valueField, payload);\n\n // set the obs date\n const obs = _.find(payload, (o: any) => {\n return o.concept.uuid === node.question.extras.questionOptions.concept;\n });\n\n if (obs) {\n dateField['initialValue'] = { obsUuid: obs.uuid, value: obs.obsDatetime };\n (dateField as LeafNode).control.setValue(obs.obsDatetime);\n (dateField as LeafNode).control.updateValueAndValidity();\n }\n }\n\n getMultiselectValues(multiObs) {\n const values = [];\n for (const m of multiObs) {\n values.push(m.value.uuid);\n }\n return values;\n }\n\n setRepeatingGroupValues(node, payload) {\n const groupRepeatingObs = _.filter(payload, (o: any) => {\n const found =\n o.concept.uuid === node.question.extras.questionOptions.concept;\n let intersect = false;\n if (found && o.groupMembers) {\n const obs = o.groupMembers.map((a) => {\n return a.concept.uuid;\n });\n\n const schemaQuestions = node.question.questions.map((a) => {\n return a.extras.questionOptions.concept;\n });\n\n intersect = _.intersection(obs, schemaQuestions).length > 0;\n }\n return found && intersect;\n });\n if (groupRepeatingObs.length > 0) {\n node.node['initialValue'] = groupRepeatingObs;\n for (let i = 0; i < groupRepeatingObs.length; i++) {\n node.node.createChildNode();\n }\n }\n const groups = [];\n let index = 0;\n for (const child of node.node.children) {\n const children = Object.keys(child.children).map(function (key) {\n return child.children[key];\n });\n const groupPayload = groupRepeatingObs[index];\n groups.push({\n question: node.question,\n groupMembers: children,\n payload: groupPayload\n });\n index++;\n }\n this.setValues(groups, groupRepeatingObs, true);\n }\n\n getQuestionNodes(pages) {\n const merged = [];\n const arrays = [];\n for (const page of pages) {\n for (const section of page.page) {\n arrays.push(section.section);\n }\n }\n return merged.concat.apply([], arrays);\n }\n\n repeatingGroup(nodes) {\n const toReturn = [];\n for (const node of nodes) {\n toReturn.push({\n question: node.question,\n groupMembers: this.traverse(node)\n });\n }\n return toReturn;\n }\n\n processGroup(obs, obsPayload) {\n if (\n obs.question &&\n obs.question.extras &&\n obs.question.extras.questionOptions.rendering === 'group'\n ) {\n const members = _.filter(\n this.getObsPayload(obs.groupMembers),\n (o: any) => {\n return o.value !== '';\n }\n );\n\n const mappedMembers = members.map((a) => {\n return a.voided;\n });\n if (members.length > 0 && mappedMembers.every(Boolean)) {\n obsPayload.push({\n uuid: obs.node.initialValue.uuid,\n voided: true\n });\n } else if (members.length > 0) {\n if (obs.node.initialValue) {\n obsPayload.push({\n uuid: obs.node.initialValue.uuid,\n groupMembers: members\n });\n } else {\n obsPayload.push({\n concept: obs.question.extras.questionOptions.concept,\n groupMembers: members\n });\n }\n }\n }\n }\n\n mapInitialGroup(group) {\n let current = {};\n for (const member of group.groupMembers) {\n let value: any = '';\n if (member.value instanceof Object) {\n value = member.value.uuid;\n } else if (member.value) {\n value = member.value;\n } else if (member.groupMembers && member.groupMembers.length > 0) {\n current = this.mapInitialGroup(group);\n }\n current[member.concept.uuid + ':' + value] = value;\n }\n return current;\n }\n\n mapModelGroup(node, value) {\n const current = {};\n for (const key in value) {\n if (value.hasOwnProperty(key)) {\n const groupQuestion: any = _.find(node.question.questions, {\n key: key\n });\n const modelValue = value[key];\n if (modelValue instanceof Object) {\n } else if (modelValue !== '') {\n current[\n groupQuestion.extras.questionOptions.concept + ':' + modelValue\n ] = modelValue;\n }\n }\n }\n return current;\n }\n\n processRepeatingGroups(node, obsPayload) {\n const initialValues = [];\n if (node.node.initialValue) {\n for (const group of node.node.initialValue) {\n initialValues.push({\n uuid: group.uuid,\n value: this.mapInitialGroup(group)\n });\n }\n }\n const repeatingModel = [];\n for (const value of node.node.control.value) {\n repeatingModel.push({ value: this.mapModelGroup(node, value) });\n }\n const deleted = this.leftOuterJoinArrays(initialValues, repeatingModel);\n const newObs = this.leftOuterJoinArrays(repeatingModel, initialValues);\n const groupConcept = node.question.extras.questionOptions.concept;\n let newObsPayload = [];\n if (deleted.length > 0) {\n const deletedObs = this.createGroupDeletedObs(deleted);\n for (const d of deletedObs) {\n obsPayload.push(d);\n }\n if (newObs.length > 0) {\n newObsPayload = this.createGroupNewObs(newObs, groupConcept);\n }\n } else {\n newObsPayload = this.createGroupNewObs(newObs, groupConcept);\n }\n\n if (newObsPayload.length > 0) {\n for (const p of newObsPayload) {\n obsPayload.push(p);\n }\n }\n }\n\n leftOuterJoinArrays(first, second) {\n const unique = first.filter(function (obj) {\n return !second.some(function (obj2) {\n return _.isEqual(obj.value, obj2.value);\n });\n });\n return unique;\n }\n\n createGroupNewObs(payload, groupConcept) {\n const newPayload = [];\n for (const obs of payload) {\n const groupPayload = [];\n for (let key in obs.value) {\n let concept = key.split(':')[0];\n let value = key.split(':')[1];\n groupPayload.push({ concept: concept, value: value });\n }\n newPayload.push({ concept: groupConcept, groupMembers: groupPayload });\n }\n return newPayload;\n }\n\n createGroupDeletedObs(payload) {\n const deletedObs = [];\n for (const d of payload) {\n deletedObs.push({ uuid: d.uuid, voided: true });\n }\n return deletedObs;\n }\n\n getExactTime(datetime: string) {\n return datetime.substring(0, 19).replace('T', ' ');\n }\n\n processObs(obs, obsPayload) {\n if (obs.control && obs.question.extras) {\n const obsValue = {\n concept: obs.question.extras.questionOptions.concept,\n value:\n obs.question.extras.questionOptions.rendering === 'date' &&\n !this.isEmpty(obs.control.value)\n ? this.getExactTime(obs.control.value)\n : obs.control.value\n };\n\n if (\n obs.question.extras.questionOptions.rendering === 'multiCheckbox' ||\n obs.question.extras.questionOptions.rendering === 'checkbox' ||\n obs.question.extras.questionOptions.rendering === 'multi-select'\n ) {\n const multis = this.processMultiSelect(\n obs.question.extras.questionOptions.concept,\n obs.control.value\n );\n if (obs.initialValue) {\n const mappedInitial = obs.initialValue.map((a) => {\n return {\n uuid: a.uuid,\n value: { concept: a.concept.uuid, value: a.value.uuid }\n };\n });\n const mappedCurrent = multis.map((a) => {\n return { value: a };\n });\n const deletedObs = this.leftOuterJoinArrays(\n mappedInitial,\n mappedCurrent\n );\n const newObs = this.leftOuterJoinArrays(mappedCurrent, mappedInitial);\n this.processDeletedMultiSelectObs(deletedObs, obsPayload);\n this.processNewMultiSelectObs(newObs, obsPayload);\n } else {\n this.processNewMultiSelectObs(multis, obsPayload);\n }\n } else {\n if (obs.initialValue && obs.initialValue.value && obsValue) {\n this.updateOrVoidObs(obsValue, obs.initialValue, obsPayload);\n } else if (obsValue.value !== '' && obsValue.value !== null) {\n obsPayload.push(obsValue);\n }\n }\n }\n }\n\n processComplexObs(node, obsPayload) {\n let valueField: any;\n let dateField: any;\n\n for (const o in node.children) {\n if (\n (node.children[o] as LeafNode).question.extras.questionOptions\n .obsField === 'value'\n ) {\n valueField = node.children[o];\n }\n\n if (\n (node.children[o] as LeafNode).question.extras.questionOptions\n .obsField === 'obsDatetime'\n ) {\n dateField = node.children[o];\n }\n }\n\n if (valueField) {\n // process obs as usual\n this.processObs(valueField, obsPayload);\n\n // obtain the last inserted obs and set the obsDatetime\n const createdPayload =\n obsPayload.length > 0 ? obsPayload[obsPayload.length - 1] : undefined;\n if (\n createdPayload &&\n ((createdPayload.concept &&\n createdPayload.concept ===\n node.question.extras.questionOptions.concept) ||\n (valueField.initialValue &&\n createdPayload.uuid === valueField.initialValue.obsUuid))\n ) {\n if (\n dateField.initialValue &&\n dateField.control.value !== dateField.initialValue.value\n ) {\n createdPayload.obsDatetime = dateField.control.value;\n }\n }\n }\n }\n\n processDeletedMultiSelectObs(values, obsPayload) {\n for (const value of values) {\n obsPayload.push({ uuid: value.uuid, voided: true });\n }\n }\n\n processNewMultiSelectObs(values, obsPayload) {\n for (const multi of values) {\n if (multi.value instanceof Object) {\n obsPayload.push(multi.value);\n } else {\n obsPayload.push(multi);\n }\n }\n }\n\n updateOrVoidObs(obsValue, initialValue, obsPayload) {\n if (this.isEmpty(obsValue.value) && initialValue.value) {\n obsPayload.push({ uuid: initialValue.obsUuid, voided: true });\n } else if (!this.isEmpty(obsValue.value) && initialValue.value) {\n obsPayload.push({ uuid: initialValue.obsUuid, value: obsValue.value });\n }\n }\n\n isEmpty(value): boolean {\n if (\n value === '' ||\n value === null ||\n value === undefined\n // || value === [] ||\n // value === {}\n ) {\n return true;\n }\n return false;\n }\n\n traverse(o, type?) {\n const questions = [];\n if (o.children) {\n if (o.children instanceof Array) {\n const returned = this.repeatingGroup(o.children);\n return returned;\n }\n if (o.children instanceof Object) {\n for (const key in o.children) {\n if (o.children.hasOwnProperty(key)) {\n switch (o.children[key].question.renderingType) {\n case 'page':\n const page = this.traverse(o.children[key]);\n questions.push({\n page: page,\n label: o.children[key].question.label\n });\n break;\n case 'section':\n const section = this.traverse(o.children[key]);\n questions.push({\n section: section,\n node: o.children[key],\n label: o.children[key].question.label\n });\n break;\n case 'group':\n const qs = this.traverse(o.children[key]);\n questions.push({\n node: o.children[key],\n question: o.children[key].question,\n groupMembers: qs\n });\n break;\n case 'repeating':\n const rep = this.repeatingGroup(o.children[key].children);\n questions.push({\n node: o.children[key],\n question: o.children[key].question,\n groupMembers: rep\n });\n break;\n default:\n questions.push(o.children[key]);\n break;\n }\n }\n }\n }\n }\n return questions;\n }\n\n processMultiSelect(concept, values) {\n const multiSelectObs = [];\n if (values && values !== null) {\n for (const value of values) {\n const obs = {\n concept: concept,\n value: value\n };\n multiSelectObs.push(obs);\n }\n }\n return multiSelectObs;\n }\n\n isObs(node) {\n return (\n node.question.extras.type === 'obs' ||\n node.question.extras.type === 'obsGroup' ||\n node.question.extras.type === 'complex-obs'\n );\n }\n\n getObsPayload(nodes) {\n const obsPayload = [];\n for (const node of nodes) {\n if (this.isObs(node)) {\n if (\n (node.groupMembers,\n node.question.extras.questionOptions.rendering === 'group')\n ) {\n this.processGroup(node, obsPayload);\n } else if (\n (node.groupMembers,\n node.question.extras.questionOptions.rendering === 'repeating')\n ) {\n this.processRepeatingGroups(node, obsPayload);\n } else if (\n node instanceof GroupNode &&\n (node as GroupNode).question.extras.type === 'complex-obs'\n ) {\n this.processComplexObs(node, obsPayload);\n } else {\n this.processObs(node, obsPayload);\n }\n }\n }\n return obsPayload;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { NodeBase, GroupNode, ArrayNode } from '../form-factory/form-node';\nimport { Form } from '../form-factory/form';\n\nimport { ValueAdapter } from './value.adapter';\nimport { ObsValueAdapter } from './obs.adapter';\nimport { OrderValueAdapter } from './order.adapter';\nimport { DiagnosisValueAdapter } from './diagnosis.adapter';\n\nimport moment from 'moment';\n\n@Injectable()\nexport class EncounterAdapter implements ValueAdapter {\n constructor(\n public ordersAdapter: OrderValueAdapter,\n public diagnosesAdapter: DiagnosisValueAdapter,\n public obsAdapter: ObsValueAdapter\n ) {}\n\n populateForm(form: Form, payload) {\n this.populateNode(form.rootNode, payload);\n\n if (Array.isArray(payload.orders)) {\n this.ordersAdapter.populateForm(form, payload);\n }\n if (Array.isArray(payload.diagnoses)) {\n this.diagnosesAdapter.populateForm(form, payload.diagnoses);\n }\n if (Array.isArray(payload.obs)) {\n this.obsAdapter.populateForm(form, payload.obs);\n }\n }\n\n populateNode(rootNode: NodeBase, payload) {\n if (payload === undefined || payload === null) {\n throw new Error('Expected payload');\n }\n\n const nodes = this.getEncounterNodes(rootNode);\n\n nodes.forEach((node) => {\n switch (node.question.extras.type) {\n case 'encounterDatetime':\n if (payload['encounterDatetime']) {\n node.control.setValue(\n moment(payload['encounterDatetime']).toDate()\n );\n node.initialValue = moment(payload['encounterDatetime']).toDate();\n }\n break;\n case 'encounterProvider':\n if (\n Array.isArray(payload['encounterProviders']) &&\n payload['encounterProviders'].length > 0\n ) {\n const firstProvider: any =\n payload['encounterProviders'][0].provider;\n if (firstProvider && firstProvider.uuid) {\n // Very weird work around for an issue with setting the value\n node.control.setValue(firstProvider.uuid);\n setTimeout(() => {\n node.control.setValue(firstProvider.uuid);\n });\n node.initialValue = firstProvider.uuid;\n }\n }\n break;\n case 'encounterLocation':\n if (payload['location'] && payload['location'].uuid) {\n node.control.setValue(payload['location'].uuid);\n node.initialValue = payload['location'].uuid;\n }\n break;\n default:\n break;\n }\n });\n }\n\n generateFormPayload(form: Form) {\n const payload = this.generateNodePayload(form.rootNode);\n this.setNonFilledPayloadMembers(form, payload);\n\n payload['obs'] = this.obsAdapter.generateFormPayload(form) || [];\n\n payload['orders'] = this.ordersAdapter.generateFormPayload(form) || [];\n\n payload['diagnoses'] =\n this.diagnosesAdapter.generateFormPayload(form) || [];\n\n return payload;\n }\n\n generateNodePayload(rootNode: NodeBase) {\n const nodes = this.getEncounterNodes(rootNode);\n const payload = {};\n\n nodes.forEach((node) => {\n if (\n node.control.value !== null &&\n node.control.value !== undefined &&\n node.control.value !== ''\n ) {\n switch (node.question.extras.type) {\n case 'encounterDatetime':\n const dateValue = moment(node.control.value).utcOffset(\n rootNode.form.valueProcessingInfo.utcOffset || '+0300'\n );\n payload['encounterDatetime'] = dateValue.format();\n break;\n case 'encounterProvider':\n if (node.control.value && node.control.value !== '') {\n const providers = [];\n providers.push({\n provider: node.control.value,\n encounterRole: 'a0b03050-c99b-11e0-9572-0800200c9a66' // unknown provider role in the encounter as default\n });\n payload['encounterProviders'] = providers;\n }\n break;\n case 'encounterLocation':\n payload['location'] = node.control.value;\n break;\n default:\n break;\n }\n }\n });\n\n return payload;\n }\n\n getEncounterNodes(rootNode: NodeBase): Array<NodeBase> {\n const results: Array<NodeBase> = [];\n this._getEncounterNodes(rootNode, results);\n return results;\n }\n\n setNonFilledPayloadMembers(form: Form, payload) {\n if (form.valueProcessingInfo.patientUuid) {\n this.setPayloadPatientUuid(payload, form.valueProcessingInfo.patientUuid);\n }\n\n if (form.valueProcessingInfo.visitUuid) {\n this.setPayloadVisitUuid(payload, form.valueProcessingInfo.visitUuid);\n }\n\n if (form.valueProcessingInfo.encounterTypeUuid) {\n this.setPayloadEncounterTypeUuid(\n payload,\n form.valueProcessingInfo.encounterTypeUuid\n );\n }\n\n if (!payload.encounterDatetime) {\n this.setPayloadEncounterDate(\n payload,\n form.valueProcessingInfo.encounterDatetime ?? new Date().toISOString(),\n form.valueProcessingInfo.utcOffset\n );\n }\n\n if (form.valueProcessingInfo.formUuid) {\n this.setPayloadFormUuid(payload, form.valueProcessingInfo.formUuid);\n }\n\n if (form.valueProcessingInfo.encounterUuid) {\n this.setPayloadEncounterUuid(\n payload,\n form.valueProcessingInfo.encounterUuid\n );\n }\n }\n\n setPayloadPatientUuid(payload, patientUuid: string) {\n payload['patient'] = patientUuid;\n }\n\n setPayloadVisitUuid(payload, visitUuid: string) {\n payload['visit'] = visitUuid;\n }\n\n setPayloadEncounterTypeUuid(payload, encounterTypeUuid: string) {\n payload['encounterType'] = encounterTypeUuid;\n }\n\n setPayloadEncounterDate(\n payload,\n encounterDatetime: string,\n utcOffset: string\n ) {\n const dateValue = moment(encounterDatetime).utcOffset(utcOffset || '+0300');\n payload['encounterDatetime'] = dateValue.format();\n }\n\n setPayloadFormUuid(payload, formUuid: string) {\n payload['form'] = formUuid;\n }\n\n setPayloadEncounterUuid(payload, encounterUuid: string) {\n payload['uuid'] = encounterUuid;\n }\n\n private _getEncounterNodes(rootNode: NodeBase, array: Array<NodeBase>) {\n if (this._isEncounterNode(rootNode)) {\n array.push(rootNode);\n }\n\n if (rootNode instanceof GroupNode) {\n const node = rootNode as GroupNode;\n\n for (const o in node.children) {\n if (node.children[o] instanceof NodeBase) {\n this._getEncounterNodes(node.children[o], array);\n }\n }\n }\n\n if (rootNode instanceof ArrayNode) {\n const node = rootNode as ArrayNode;\n node.children.forEach((child) => {\n this._getEncounterNodes(child, array);\n });\n }\n }\n\n private _isEncounterNode(node: NodeBase): boolean {\n if (\n node.question.extras &&\n (node.question.extras.type === 'encounterDatetime' ||\n node.question.extras.type === 'encounterProvider' ||\n node.question.extras.type === 'encounterLocation')\n ) {\n return true;\n }\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { NodeBase, GroupNode, ArrayNode } from '../form-factory/form-node';\nimport { Form } from '../form-factory/form';\nimport { ValueAdapter } from './value.adapter';\n\n@Injectable()\nexport class PersonAttribuAdapter implements ValueAdapter {\n constructor() {}\n\n generateFormPayload(form: Form) {\n return this.generateNodePayload(form.rootNode);\n }\n\n generateNodePayload(rootNode: NodeBase) {\n const nodes = this.getPersonAttributeNodes(rootNode);\n const payload = [];\n nodes.forEach((node) => {\n if (\n node.control.value !== null &&\n node.control.value !== undefined &&\n node.control.value !== '' &&\n node.initialValue !== node.control.value\n ) {\n if (node.question.extras.questionOptions.isSimpleValue === true) {\n payload.push({\n attributeType: node.question.extras.questionOptions.attributeType,\n value: node.control.value\n });\n } else {\n payload.push({\n attributeType: node.question.extras.questionOptions.attributeType,\n hydratedObject: node.control.value\n });\n }\n }\n });\n return payload;\n }\n\n populateForm(form: Form, payload) {\n this.populateNode(form.rootNode, payload);\n }\n\n populateNode(rootNode: NodeBase, payload) {\n if (!Array.isArray(payload)) {\n throw new Error('Expected an array of attributes');\n }\n\n const nodes = this.getPersonAttributeNodes(rootNode);\n\n nodes.forEach((node) => {\n payload.forEach((element) => {\n if (\n element.attributeType.uuid ===\n node.question.extras.questionOptions.attributeType\n ) {\n if (element.value.uuid) {\n node.control.setValue(element.value.uuid);\n node.initialValue = element.value.uuid;\n } else {\n node.control.setValue(element.value);\n node.initialValue = element.value;\n }\n }\n });\n });\n }\n\n getPersonAttributeNodes(rootNode: NodeBase): Array<NodeBase> {\n const results: Array<NodeBase> = [];\n this._getPersonAttributesNodes(rootNode, results);\n return results;\n }\n\n private _getPersonAttributesNodes(\n rootNode: NodeBase,\n array: Array<NodeBase>\n ) {\n if (\n rootNode.question.extras &&\n rootNode.question.extras.type === 'personAttribute'\n ) {\n array.push(rootNode);\n }\n\n if (rootNode instanceof GroupNode) {\n const node = rootNode as GroupNode;\n for (const o in node.children) {\n if (node.children[o] instanceof NodeBase) {\n this._getPersonAttributesNodes(node.children[o], array);\n }\n }\n }\n\n if (rootNode instanceof ArrayNode) {\n const node = rootNode as ArrayNode;\n node.children.forEach((child) => {\n this._getPersonAttributesNodes(child, array);\n });\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FormsModule } from '@angular/forms';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { RemoteSelectComponent } from './ngx-remote-select.component';\n\n@NgModule({\n imports: [CommonModule, NgSelectModule, FormsModule, TranslateModule],\n exports: [RemoteSelectComponent],\n declarations: [RemoteSelectComponent],\n providers: []\n})\nexport class NgxRemoteSelectModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FormsModule } from '@angular/forms';\nimport { CheckboxControlComponent } from './checkbox.component';\n\n@NgModule({\n declarations: [CheckboxControlComponent],\n exports: [CheckboxControlComponent],\n imports: [CommonModule, FormsModule]\n})\nexport class CheckboxModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FormsModule } from '@angular/forms';\nimport { RadioButtonControlComponent } from './radio.component';\n\n@NgModule({\n declarations: [RadioButtonControlComponent],\n exports: [RadioButtonControlComponent],\n imports: [CommonModule, FormsModule]\n})\nexport class RadioModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { TabSetComponent } from '../components/ngx-tab-set.component';\nimport { TabComponent } from '../components/tab.component';\nimport { HoverClassDirective } from '../directives/hover-class.directive';\n\n@NgModule({\n declarations: [TabComponent, TabSetComponent, HoverClassDirective],\n exports: [TabComponent, TabSetComponent],\n imports: [CommonModule]\n})\nexport class NgxTabSetModule {\n /**\n * Use in AppModule: new instance of NgxTabset.\n */\n public static forRoot(): ModuleWithProviders<NgxTabSetModule> {\n return {\n ngModule: NgxTabSetModule,\n providers: []\n };\n }\n\n /**\n * Use in features modules with lazy loading: new instance of NgxTabset.\n */\n public static forChild(): ModuleWithProviders<NgxTabSetModule> {\n return {\n ngModule: NgxTabSetModule,\n providers: []\n };\n }\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[ofeOption]'\n})\nexport class OptionDirective {\n @HostBinding('class') inputClass = 'cds--select-option';\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[ofeOptgroup]'\n})\nexport class OptGroupDirective {\n @HostBinding('class') inputClass = 'cds--select-optgroup';\n}\n","// modules\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\n// imports\nimport { SelectComponent } from './select.component';\nimport { OptionDirective } from './option.directive';\nimport { OptGroupDirective } from './optgroup.directive';\n\n@NgModule({\n declarations: [SelectComponent, OptionDirective, OptGroupDirective],\n exports: [SelectComponent, OptionDirective, OptGroupDirective],\n imports: [CommonModule, FormsModule]\n})\nexport class SelectModule {}\n","import {\n Component,\n Input,\n AfterViewInit,\n ElementRef,\n HostBinding,\n TemplateRef,\n ViewChild,\n ContentChild,\n AfterContentInit\n} from '@angular/core';\n\nimport { TextAreaDirective } from './text-area.directive';\n\n/**\n * [See demo](../../?path=/story/input--label)\n *\n * ```html\n * <ofe-label labelState=\"success\">\n * <label label>Field with success</label>\n * <input type=\"text\" class=\"input-field\">\n * </ofe-label>\n *\n * <ofe-label labelState=\"warning\">\n * <label label>Field with warning</label>\n * <input type=\"text\" class=\"input-field\">\n * </ofe-label>\n *\n * <ofe-label labelState=\"error\">\n * <label label>Field with error</label>\n * <input type=\"text\" class=\"input-field\">\n * </ofe-label>\n * ```\n *\n * <example-url>../../iframe.html?id=input--label</example-url>\n */\n@Component({\n selector: 'ofe-label',\n template: `\n <label\n [for]=\"labelInputID\"\n [attr.aria-label]=\"ariaLabel\"\n class=\"cds--label\"\n [ngClass]=\"{\n 'cds--skeleton': skeleton\n }\"\n >\n <ng-content></ng-content>\n </label>\n <div\n [class]=\"wrapperClass\"\n [ngClass]=\"{\n 'cds--text-input__field-wrapper--warning': warn\n }\"\n [attr.data-invalid]=\"invalid ? true : null\"\n #wrapper\n >\n <svg\n *ngIf=\"invalid\"\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n style=\"will-change: transform;\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"cds--text-input__invalid-icon\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M8,1C4.2,1,1,4.2,1,8s3.2,7,7,7s7-3.1,7-7S11.9,1,8,1z M7.5,4h1v5h-1C7.5,9,7.5,4,7.5,4z M8,12.2 c-0.4,0-0.8-0.4-0.8-0.8s0.3-0.8,0.8-0.8c0.4,0,0.8,0.4,0.8,0.8S8.4,12.2,8,12.2z\"\n ></path>\n <path\n d=\"M7.5,4h1v5h-1C7.5,9,7.5,4,7.5,4z M8,12.2c-0.4,0-0.8-0.4-0.8-0.8s0.3-0.8,0.8-0.8 c0.4,0,0.8,0.4,0.8,0.8S8.4,12.2,8,12.2z\"\n data-icon-path=\"inner-path\"\n opacity=\"0\"\n ></path>\n </svg>\n <ng-content select=\"input,textarea,div\"></ng-content>\n </div>\n <div\n *ngIf=\"!skeleton && helperText && !invalid && !warn\"\n class=\"cds--form__helper-text\"\n >\n <ng-container *ngIf=\"!isTemplate(helperText)\">{{\n helperText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(helperText)\"\n [ngTemplateOutlet]=\"helperText\"\n ></ng-template>\n </div>\n <div *ngIf=\"!warn && invalid\" class=\"cds--form-requirement\">\n <ng-container *ngIf=\"!isTemplate(invalidText)\">{{\n invalidText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(invalidText)\"\n [ngTemplateOutlet]=\"invalidText\"\n ></ng-template>\n </div>\n <div *ngIf=\"!invalid && warn\" class=\"cds--form-requirement\">\n <ng-container *ngIf=\"!isTemplate(warnText)\">{{ warnText }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(warnText)\"\n [ngTemplateOutlet]=\"warnText\"\n ></ng-template>\n </div>\n `\n})\nexport class LabelComponent implements AfterContentInit, AfterViewInit {\n /**\n * Used to build the id of the input item associated with the `Label`.\n */\n static labelCounter = 0;\n /**\n * The class of the wrapper\n */\n wrapperClass = 'cds--text-input__field-wrapper';\n /**\n * The id of the input item associated with the `Label`. This value is also used to associate the `Label` with\n * its input counterpart through the 'for' attribute.\n */\n @Input() labelInputID = 'ofe-label-' + LabelComponent.labelCounter;\n\n /**\n * State of the `Label` will determine the styles applied.\n */\n @Input() labelState: 'success' | 'warning' | 'error' | '' = '';\n /**\n * Set to `true` for a loading label.\n */\n @Input() skeleton = false;\n /**\n * Optional helper text that appears under the label.\n */\n @Input() helperText: string | TemplateRef<any>;\n /**\n * Sets the invalid text.\n */\n @Input() invalidText: string | TemplateRef<any>;\n /**\n * Set to `true` for an invalid label component.\n */\n @Input() invalid = false;\n /**\n * Set to `true` to show a warning (contents set by warningText)\n */\n @Input() warn = false;\n /**\n * Sets the warning text\n */\n @Input() warnText: string | TemplateRef<any>;\n /**\n * Set the arialabel for label\n */\n @Input() ariaLabel: string;\n\n // @ts-ignore\n @ViewChild('wrapper', { static: false }) wrapper: ElementRef<HTMLDivElement>;\n\n // @ts-ignore\n @ContentChild(TextAreaDirective, { static: false })\n textArea: TextAreaDirective;\n\n @HostBinding('class.cds--form-item') labelClass = true;\n\n /**\n * Creates an instance of LabelComponent.\n */\n constructor() {\n LabelComponent.labelCounter++;\n }\n\n /**\n * Update wrapper class if a textarea is hosted.\n */\n ngAfterContentInit() {\n if (this.textArea) {\n this.wrapperClass = 'cds--text-area__wrapper';\n }\n }\n\n /**\n * Sets the id on the input item associated with the `Label`.\n */\n ngAfterViewInit() {\n if (this.wrapper) {\n const inputElement = this.wrapper.nativeElement.querySelector(\n 'input,textarea,div'\n );\n if (inputElement) {\n inputElement.setAttribute('id', this.labelInputID);\n }\n }\n }\n\n public isTemplate(value) {\n return value instanceof TemplateRef;\n }\n}\n","// modules\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\n// imports\nimport { LabelComponent } from './label.component';\nimport { TextInputDirective } from './input.directive';\nimport { TextAreaDirective } from './text-area.directive';\n\n@NgModule({\n declarations: [LabelComponent, TextInputDirective, TextAreaDirective],\n exports: [LabelComponent, TextInputDirective, TextAreaDirective],\n imports: [CommonModule, FormsModule]\n})\nexport class InputModule {}\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { FormsModule } from '@angular/forms';\nimport { CustomControlWrapperComponent } from './custom-control-wrapper.component';\nimport { LazyElementsModule } from '@angular-extensions/elements';\n\n@NgModule({\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n imports: [CommonModule, FormsModule, LazyElementsModule, TranslateModule],\n exports: [CustomControlWrapperComponent],\n declarations: [CustomControlWrapperComponent],\n providers: []\n})\nexport class CustomControlWrapperModule {}\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CustomComponentWrapperComponent } from './custom-component-wrapper.component';\nimport { LazyElementsModule } from '@angular-extensions/elements';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@NgModule({\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n imports: [CommonModule, LazyElementsModule, TranslateModule],\n exports: [CustomComponentWrapperComponent],\n declarations: [CustomComponentWrapperComponent],\n providers: []\n})\nexport class CustomComponentWrapperModule {}\n","import { Injectable } from '@angular/core';\n\nimport { NodeBase, GroupNode, ArrayNode } from '../form-factory/form-node';\nimport { Form } from '../form-factory';\n\n@Injectable()\nexport class PatientIdentifierAdapter {\n generateFormPayload(form: Form, locationUuid: string) {\n return this.generateNodePayload(form.rootNode, locationUuid);\n }\n\n generateNodePayload(rootNode: NodeBase, locationUuid: string) {\n const nodes = this.getPatientIdentifierNodes(rootNode);\n const payload = [];\n nodes.forEach((node) => {\n if (\n node.control.value !== null &&\n node.control.value !== undefined &&\n node.control.value !== ''\n ) {\n payload.push({\n identifierType: node.question.extras.questionOptions.identifierType,\n identifier: node.control.value,\n location: locationUuid,\n preferred: false\n });\n }\n });\n return payload;\n }\n\n populateForm(form: Form, payload) {\n this.populateNode(form.rootNode, payload);\n }\n\n populateNode(rootNode: NodeBase, payload) {\n if (!Array.isArray(payload)) {\n throw new Error('Expected an array of patient identfiers');\n }\n\n const nodes = this.getPatientIdentifierNodes(rootNode);\n\n nodes.forEach((node) => {\n payload.forEach((element) => {\n if (\n element.identifierType.uuid ===\n node.question.extras.questionOptions.identifierType\n ) {\n if (element.identifier) {\n node.control.setValue(element.identifier);\n node.initialValue = element.identifier;\n }\n }\n });\n });\n }\n\n getPatientIdentifierNodes(rootNode: NodeBase): Array<NodeBase> {\n const results: Array<NodeBase> = [];\n this.getPatientIdentifierTypeNodes(rootNode, results);\n return results;\n }\n\n private getPatientIdentifierTypeNodes(\n rootNode: NodeBase,\n array: Array<NodeBase>\n ) {\n if (\n rootNode.question.extras &&\n rootNode.question.extras.type === 'patientIdentifier'\n ) {\n array.push(rootNode);\n }\n\n if (rootNode instanceof GroupNode) {\n const node = rootNode as GroupNode;\n for (const o in node.children) {\n if (node.children[o] instanceof NodeBase) {\n this.getPatientIdentifierTypeNodes(node.children[o], array);\n }\n }\n }\n\n if (rootNode instanceof ArrayNode) {\n const node = rootNode as ArrayNode;\n node.children.forEach((child) => {\n this.getPatientIdentifierTypeNodes(child, array);\n });\n }\n }\n}\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\n// import { NoopAnimationsModule} from '@angular/platform-browser/animations';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormBuilder } from '@angular/forms';\nimport { DebugModeService } from '../form-entry/services/debug-mode.service';\nimport { TimeAgoPipe } from './pipes/time-ago.pipe';\n\nimport { FormErrorsService } from './services/form-errors.service';\nimport { FormControlService } from './form-factory/form-control.service';\nimport { ValidationFactory } from './form-factory/validation.factory';\nimport { FormRendererComponent } from './form-renderer/form-renderer.component';\nimport { ErrorRendererComponent } from './error-renderer/error-renderer.component';\nimport { HistoricalValueDirective } from './directives/historical-value.directive';\nimport { CollapseDirective } from './directives/collapse.directive';\nimport { HistoricalFieldHelperService } from './helpers/historical-field-helper-service';\nimport { NumberInputModule } from '../components/number-input/number-input.module';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { RemoteFileUploadModule } from '../components/file-upload/file-upload.module';\nimport { DateTimePickerModule } from '../components/date-time-picker/date-time-picker.module';\nimport { NgxDateTimePickerModule } from '../components/ngx-datetime-picker/ngx-datetime-picker.module';\nimport { AfeNgSelectComponent } from '../components/afe-ng-select.component';\nimport { HidersDisablersFactory } from './form-factory/hiders-disablers.factory';\nimport { AlertsFactory } from './form-factory/show-messages.factory';\nimport { ExpressionRunner } from './expression-runner/expression-runner';\nimport { JsExpressionHelper } from './helpers/js-expression-helper';\nimport { FormSchemaCompiler } from './services/form-schema-compiler.service';\nimport { FormFactory } from './form-factory/form.factory';\nimport { QuestionFactory } from './form-factory/question.factory';\nimport { ControlRelationsFactory } from './form-factory/control-relations.factory';\nimport { EncounterAdapter } from './value-adapters/encounter.adapter';\nimport { PersonAttribuAdapter } from './value-adapters/person-attribute.adapter';\nimport { OrderValueAdapter } from './value-adapters/order.adapter';\nimport { DiagnosisValueAdapter } from './value-adapters/diagnosis.adapter';\nimport { ObsAdapterHelper } from './value-adapters/obs-adapter-helper';\nimport { ObsValueAdapter } from './value-adapters/obs.adapter';\nimport { NgxRemoteSelectModule } from '../components/ngx-remote-select/ngx-remote-select.module';\nimport { AppointmentsOverviewComponent } from '../components/appointments-overview/appointments-overview.component';\nimport { CheckboxModule } from '../components/check-box/checkbox.module';\nimport { RadioModule } from '../components/radio-button/radio.module';\nimport { SharedModule } from '../shared.module';\nimport { NgxTabSetModule } from '../components/ngx-tabset/modules/ngx-tabset.module';\nimport { SelectModule as SelectModuleCarbon } from '../components/select/select.module';\nimport { InputModule } from '../components/input/input.module';\nimport { CustomControlWrapperModule } from '../components/custom-control-wrapper/custom-control-wrapper..module';\nimport { CustomComponentWrapperModule } from '../components/custom-component-wrapper/custom-component-wrapper..module';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { PatientIdentifierAdapter } from './value-adapters/patient-identifier.adapter';\n\n@NgModule({\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n SelectModuleCarbon,\n NgSelectModule,\n NumberInputModule,\n InputModule,\n DateTimePickerModule,\n NgxRemoteSelectModule,\n // NoopAnimationsModule,\n RemoteFileUploadModule,\n CheckboxModule,\n RadioModule,\n NgxDateTimePickerModule,\n SharedModule,\n CustomControlWrapperModule,\n CustomComponentWrapperModule,\n NgxTabSetModule.forRoot(),\n TranslateModule\n ],\n declarations: [\n FormRendererComponent,\n AfeNgSelectComponent,\n AppointmentsOverviewComponent,\n HistoricalValueDirective,\n ErrorRendererComponent,\n TimeAgoPipe,\n CollapseDirective\n ],\n providers: [\n FormBuilder,\n FormControlService,\n FormErrorsService,\n ValidationFactory,\n HidersDisablersFactory,\n AlertsFactory,\n ExpressionRunner,\n JsExpressionHelper,\n HistoricalFieldHelperService,\n FormSchemaCompiler,\n FormFactory,\n QuestionFactory,\n ValidationFactory,\n ControlRelationsFactory,\n ObsAdapterHelper,\n ObsValueAdapter,\n EncounterAdapter,\n PersonAttribuAdapter,\n OrderValueAdapter,\n DiagnosisValueAdapter,\n DebugModeService,\n PatientIdentifierAdapter\n ],\n exports: [\n FormRendererComponent,\n AfeNgSelectComponent,\n ErrorRendererComponent,\n DateTimePickerModule,\n NgxDateTimePickerModule,\n TranslateModule\n ]\n})\nexport class FormEntryModule {}\n","export class Pair {\n key: string;\n\n value: any;\n\n constructor(key: string, value: any) {\n this.key = key;\n this.value = value;\n }\n}\n","export enum RenderingType {\n Form,\n Page,\n Section,\n Select,\n DropDown\n}\n","/**\n * index\n */\n\nexport * from './picker-modal/modal.component';\nexport * from './pipes/moment.pipe';\nexport * from './date-picker/date-picker.component';\nexport * from './time-picker/time-picker.component';\nexport * from './date-time-picker.module';\n","/*\n * Public API Surface of ngx-formentry\n */\nexport { FormEntryModule } from '../form-entry/form-entry.module';\nexport { AfeFormControl } from '../abstract-controls-extension/afe-form-control';\nexport { AfeFormGroup } from '../abstract-controls-extension/afe-form-group';\nexport { AfeFormArray } from '../abstract-controls-extension/afe-form-array';\nexport { AfeControlType } from '../abstract-controls-extension/afe-control-type';\nexport { ControlRelationsFactory } from '../form-entry/form-factory/control-relations.factory';\nexport { FormControlService } from '../form-entry/form-factory/form-control.service';\nexport { FormFactory } from '../form-entry/form-factory/form.factory';\nexport { Form } from '../form-entry/form-factory/form';\nexport { QuestionFactory } from '../form-entry/form-factory/question.factory';\nexport { ValidationFactory } from '../form-entry/form-factory/validation.factory';\nexport { FormSchemaCompiler } from '../form-entry/services/form-schema-compiler.service';\nexport { HistoricalEncounterDataService } from '../form-entry/services/historical-encounter-data.service';\nexport { FormErrorsService } from '../form-entry/services/form-errors.service';\nexport { EncounterAdapter } from '../form-entry/value-adapters/encounter.adapter';\nexport { PersonAttribuAdapter } from '../form-entry/value-adapters/person-attribute.adapter';\nexport { OrderValueAdapter } from '../form-entry/value-adapters/order.adapter';\nexport { ObsValueAdapter } from '../form-entry/value-adapters/obs.adapter';\nexport { ObsAdapterHelper } from '../form-entry/value-adapters/obs-adapter-helper';\nexport { ValueAdapter } from '../form-entry/value-adapters/value.adapter';\nexport { DataSources } from '../form-entry/data-sources/data-sources';\nexport { CheckBoxQuestion } from '../form-entry/question-models/checkbox.model';\nexport { ConditionalValidationModel } from '../form-entry/question-models/conditional-validation.model';\nexport { DateQuestion } from '../form-entry/question-models/date-question';\nexport { DateValidationModel } from '../form-entry/question-models/date-validation.model';\nexport { FileUploadQuestion } from '../form-entry/question-models/file-upload-question';\nexport { QuestionGroup } from '../form-entry/question-models/group-question';\nexport { JsExpressionValidationModel } from '../form-entry/question-models/js-expression-validation.model';\nexport { MaxValidationModel } from '../form-entry/question-models/max-validation.model';\nexport { MinValidationModel } from '../form-entry/question-models/min-validation.model';\nexport { MultiSelectQuestion } from '../form-entry/question-models/multi-select-question';\nexport { Pair } from '../form-entry/question-models/pair.model';\nexport { QuestionBase } from '../form-entry/question-models/question-base';\nexport { RenderingType } from '../form-entry/question-models/rendering-type';\nexport { RepeatingQuestion } from '../form-entry/question-models/repeating-question';\nexport { Option } from '../form-entry/question-models/select-option';\nexport { SelectQuestion } from '../form-entry/question-models/select-question';\nexport { TestOrderQuestion } from '../form-entry/question-models/test-order-question';\nexport { TextAreaInputQuestion } from '../form-entry/question-models/text-area-input-question';\nexport { TextInputQuestion } from '../form-entry/question-models/text-input-question';\nexport { UiSelectQuestion } from '../form-entry/question-models/ui-select-question';\nexport { ValidationModel } from '../form-entry/question-models/validation.model';\nexport { BaseOptions } from '../form-entry/question-models/interfaces/base-options';\nexport { RepeatingQuestionOptions } from '../form-entry/question-models/interfaces/repeating-question-options';\nexport { GroupQuestionOptions } from '../form-entry/question-models/interfaces/group-question-options';\nexport { NestedQuestion } from '../form-entry/question-models/interfaces/nested-questions';\nexport { DateTimePickerModule } from '../components/date-time-picker/date-time-picker.module';\nexport { NgxDateTimePickerModule } from '../components/ngx-datetime-picker/ngx-datetime-picker.module';\nexport { JsExpressionHelper } from '../form-entry/helpers/js-expression-helper';\nexport { FormRendererComponent } from '../form-entry/form-renderer/form-renderer.component';\nexport { AfeNgSelectComponent } from '../components/afe-ng-select.component';\nexport { NgxDatetimeComponent } from '../components/ngx-datetime-picker/ngx-datetime-picker.component';\nexport { DateTimePickerComponent } from '../components/date-time-picker/date-time-picker.component';\nexport { ModalComponent } from '../components/date-time-picker';\nexport { ErrorRendererComponent } from '../form-entry/error-renderer/error-renderer.component';\nexport { DatePickerComponent } from '../components/date-time-picker';\nexport { TimePickerComponent } from '../components/date-time-picker';\nexport { MomentPipe } from '../components/date-time-picker';\nexport { PatientIdentifierAdapter } from '../form-entry/value-adapters/patient-identifier.adapter';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i0","Injectable","i1","Pipe","Subject","AbstractControl","moment","FormControl","FormGroup","FormArray","AfeControlType","_","i1.ExpressionRunner","i2.JsExpressionHelper","i3.DebugModeService","i1.ValidationFactory","i2.HidersDisablersFactory","i3.AlertsFactory","TemplateRef","Component","Input","ContentChild","Directive","HostListener","EventEmitter","i2.HoverClassDirective","ContentChildren","Output","i2","i3","NG_VALUE_ACCESSOR","forwardRef","ViewChild","BehaviorSubject","WrappedValue","i4.SecurePipe","concat","of","distinctUntilChanged","tap","switchMap","catchError","i4","InjectionToken","inject","LOCALE_ID","take","ChangeDetectionStrategy","HostBinding","Subscription","coerceNumberProperty","LEFT_ARROW","RIGHT_ARROW","UP_ARROW","DOWN_ARROW","HOME","END","PAGE_UP","PAGE_DOWN","ENTER","i2.OwlCalendarBodyComponent","Optional","Inject","i1.OwlDateTimeIntl","i2.DateTimeAdapter","i3.OwlCalendarBodyComponent","i3.OwlMonthViewComponent","i4.OwlYearViewComponent","i5.OwlMultiYearViewComponent","i6","i7","trigger","state","style","transition","group","query","animateChild","animate","debounceTime","i2.NumberFixedLenPipe","i3.OwlTimerBoxComponent","SPACE","i3.OwlCalendarComponent","i4.OwlTimerComponent","i5","coerceBooleanProperty","NoopScrollStrategy","filter","ESCAPE","BasePortalOutlet","DOCUMENT","CdkPortalOutlet","keyframes","Overlay","defer","startWith","ComponentPortal","PortalInjector","OverlayConfig","SkipSelf","coerceArray","merge","i2.OwlDialogService","i3.DateTimeAdapter","OWL_DATETIME_VALUE_ACCESSOR","NG_VALIDATORS","Validators","observableOf","i1.OwlDateTimeComponent","i3.OwlDateTimeInputDirective","i4.OwlDateTimeTriggerDirective","i2.NumberInputDirective","i1.HistoricalFieldHelperService","i5.TabSetComponent","i6.TabComponent","i7.CustomComponentWrapperComponent","i8.CustomControlWrapperComponent","i9.SelectComponent","i10.FileUploadComponent","i11.RemoteSelectComponent","i12.NgxDatetimeComponent","i13","i14.NumberInputComponent","i15.RadioButtonControlComponent","i16.CheckboxControlComponent","i17.AppointmentsOverviewComponent","i18","i19.HistoricalValueDirective","i20.CollapseDirective","i21","i22.TextAreaDirective","i23.TextInputDirective","i24.TimeAgoPipe","i2.FormErrorsService","CommonModule","FormsModule","NgModule","TranslateModule","WebcamModule","NgxFileUploaderModule","i1.ModalComponent","i3.MomentPipe","i1.DatePickerComponent","i2.TimePickerComponent","i2.OwlDateTimeContainerComponent","A11yModule","OverlayModule","PortalModule","PlatformModule","i1.FormControlService","i2.QuestionFactory","i3.ControlRelationsFactory","i1.ObsAdapterHelper","i1.OrderValueAdapter","i2.DiagnosisValueAdapter","i3.ObsValueAdapter","NgSelectModule","LazyElementsModule","CUSTOM_ELEMENTS_SCHEMA","ReactiveFormsModule","SelectModuleCarbon","i1.NgxTabSetModule","FormBuilder","RenderingType"],"mappings":"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"}
|