@openmrs/ngx-formentry 3.0.1-pre.8
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/abstract-controls-extension/afe-control-type.d.ts +6 -0
- package/abstract-controls-extension/afe-form-array.d.ts +43 -0
- package/abstract-controls-extension/afe-form-control.d.ts +46 -0
- package/abstract-controls-extension/afe-form-group.d.ts +38 -0
- package/abstract-controls-extension/control-extensions.d.ts +4 -0
- package/abstract-controls-extension/index.d.ts +4 -0
- package/abstract-controls-extension/value-change.listener.d.ts +4 -0
- package/bundles/openmrs-ngx-formentry.umd.js +15020 -0
- package/bundles/openmrs-ngx-formentry.umd.js.map +1 -0
- package/bundles/openmrs-ngx-formentry.umd.min.js +2 -0
- package/bundles/openmrs-ngx-formentry.umd.min.js.map +1 -0
- package/change-tracking/control-relation.d.ts +12 -0
- package/change-tracking/control-relations.d.ts +12 -0
- package/components/afe-ng-select.component.d.ts +26 -0
- package/components/appointments-overview/appointments-overview.component.d.ts +15 -0
- package/components/check-box/checkbox.component.d.ts +16 -0
- package/components/check-box/checkbox.module.d.ts +2 -0
- package/components/custom-component-wrapper/custom-component-wrapper..module.d.ts +2 -0
- package/components/custom-component-wrapper/custom-component-wrapper.component.d.ts +11 -0
- package/components/custom-control-wrapper/custom-control-wrapper..module.d.ts +2 -0
- package/components/custom-control-wrapper/custom-control-wrapper.component.d.ts +25 -0
- package/components/date-time-picker/date-picker/date-picker.component.d.ts +42 -0
- package/components/date-time-picker/date-time-picker.component.d.ts +26 -0
- package/components/date-time-picker/date-time-picker.module.d.ts +5 -0
- package/components/date-time-picker/picker-modal/modal.component.d.ts +10 -0
- package/components/date-time-picker/pipes/moment.pipe.d.ts +8 -0
- package/components/date-time-picker/time-picker/time-picker.component.d.ts +29 -0
- package/components/file-upload/file-upload.component.d.ts +26 -0
- package/components/file-upload/file-upload.module.d.ts +2 -0
- package/components/file-upload/secure.pipe.d.ts +23 -0
- package/components/input/input.directive.d.ts +28 -0
- package/components/input/input.module.d.ts +2 -0
- package/components/input/label.component.d.ts +87 -0
- package/components/input/text-area.directive.d.ts +21 -0
- package/components/ngx-datetime-picker/ngx-datetime-picker.component.d.ts +17 -0
- package/components/ngx-datetime-picker/ngx-datetime-picker.module.d.ts +5 -0
- package/components/ngx-pick-datetime/lib/date-time/adapter/date-time-adapter.class.d.ts +189 -0
- package/components/ngx-pick-datetime/lib/date-time/adapter/date-time-format.class.d.ts +15 -0
- package/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-adapter.class.d.ts +73 -0
- package/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-format.class.d.ts +5 -0
- package/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time.module.d.ts +7 -0
- package/components/ngx-pick-datetime/lib/date-time/calendar-body.component.d.ts +77 -0
- package/components/ngx-pick-datetime/lib/date-time/calendar-month-view.component.d.ts +139 -0
- package/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.d.ts +109 -0
- package/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.d.ts +120 -0
- package/components/ngx-pick-datetime/lib/date-time/calendar.component.d.ts +141 -0
- package/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.d.ts +90 -0
- package/components/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.d.ts +122 -0
- package/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.d.ts +152 -0
- package/components/ngx-pick-datetime/lib/date-time/date-time-picker-intl.service.d.ts +51 -0
- package/components/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.d.ts +21 -0
- package/components/ngx-pick-datetime/lib/date-time/date-time-picker.animations.d.ts +8 -0
- package/components/ngx-pick-datetime/lib/date-time/date-time-picker.component.d.ts +157 -0
- package/components/ngx-pick-datetime/lib/date-time/date-time.class.d.ts +86 -0
- package/components/ngx-pick-datetime/lib/date-time/date-time.module.d.ts +5 -0
- package/components/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.d.ts +7 -0
- package/components/ngx-pick-datetime/lib/date-time/timer-box.component.d.ts +35 -0
- package/components/ngx-pick-datetime/lib/date-time/timer.component.d.ts +129 -0
- package/components/ngx-pick-datetime/lib/dialog/dialog-config.class.d.ts +93 -0
- package/components/ngx-pick-datetime/lib/dialog/dialog-container.component.d.ts +56 -0
- package/components/ngx-pick-datetime/lib/dialog/dialog-ref.class.d.ts +49 -0
- package/components/ngx-pick-datetime/lib/dialog/dialog.module.d.ts +5 -0
- package/components/ngx-pick-datetime/lib/dialog/dialog.service.d.ts +70 -0
- package/components/ngx-pick-datetime/lib/utils/index.d.ts +4 -0
- package/components/ngx-pick-datetime/lib/utils/object.utils.d.ts +11 -0
- package/components/ngx-remote-select/ngx-remote-select.component.d.ts +37 -0
- package/components/ngx-remote-select/ngx-remote-select.module.d.ts +2 -0
- package/components/ngx-tabset/components/tab-set.d.ts +16 -0
- package/components/ngx-tabset/components/tab.d.ts +10 -0
- package/components/ngx-tabset/directives/hover-class.directive.d.ts +8 -0
- package/components/ngx-tabset/modules/ngx-tabset.module.d.ts +11 -0
- package/components/number-input/number-input.component.d.ts +148 -0
- package/components/number-input/number-input.module.d.ts +2 -0
- package/components/select/optgroup.directive.d.ts +3 -0
- package/components/select/option.directive.d.ts +3 -0
- package/components/select/select.component.d.ts +112 -0
- package/components/select/select.module.d.ts +2 -0
- package/esm2015/abstract-controls-extension/afe-control-type.js +8 -0
- package/esm2015/abstract-controls-extension/afe-form-array.js +85 -0
- package/esm2015/abstract-controls-extension/afe-form-control.js +88 -0
- package/esm2015/abstract-controls-extension/afe-form-group.js +61 -0
- package/esm2015/abstract-controls-extension/control-extensions.js +5 -0
- package/esm2015/abstract-controls-extension/index.js +5 -0
- package/esm2015/abstract-controls-extension/value-change.listener.js +2 -0
- package/esm2015/change-tracking/control-relation.js +44 -0
- package/esm2015/change-tracking/control-relations.js +32 -0
- package/esm2015/components/afe-ng-select.component.js +87 -0
- package/esm2015/components/appointments-overview/appointments-overview.component.js +119 -0
- package/esm2015/components/check-box/checkbox.component.js +77 -0
- package/esm2015/components/check-box/checkbox.module.js +14 -0
- package/esm2015/components/custom-component-wrapper/custom-component-wrapper..module.js +16 -0
- package/esm2015/components/custom-component-wrapper/custom-component-wrapper.component.js +18 -0
- package/esm2015/components/custom-control-wrapper/custom-control-wrapper..module.js +17 -0
- package/esm2015/components/custom-control-wrapper/custom-control-wrapper.component.js +63 -0
- package/esm2015/components/date-time-picker/date-picker/date-picker.component.js +182 -0
- package/esm2015/components/date-time-picker/date-time-picker.component.js +104 -0
- package/esm2015/components/date-time-picker/date-time-picker.module.js +34 -0
- package/esm2015/components/date-time-picker/picker-modal/modal.component.js +30 -0
- package/esm2015/components/date-time-picker/pipes/moment.pipe.js +13 -0
- package/esm2015/components/date-time-picker/time-picker/time-picker.component.js +114 -0
- package/esm2015/components/file-upload/file-upload.component.js +110 -0
- package/esm2015/components/file-upload/file-upload.module.js +24 -0
- package/esm2015/components/file-upload/secure.pipe.js +102 -0
- package/esm2015/components/input/input.directive.js +55 -0
- package/esm2015/components/input/input.module.js +18 -0
- package/esm2015/components/input/label.component.js +177 -0
- package/esm2015/components/input/text-area.directive.js +40 -0
- package/esm2015/components/ngx-datetime-picker/ngx-datetime-picker.component.js +60 -0
- package/esm2015/components/ngx-datetime-picker/ngx-datetime-picker.module.js +26 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/adapter/date-time-adapter.class.js +114 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/adapter/date-time-format.class.js +7 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-adapter.class.js +344 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-format.class.js +16 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time.module.js +30 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-body.component.js +149 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-month-view.component.js +429 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.js +367 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.js +359 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar.component.js +334 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.js +251 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.js +380 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.js +590 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-intl.service.js +60 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.js +71 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker.animations.js +21 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker.component.js +512 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time.class.js +153 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time.module.js +58 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.js +24 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/timer-box.component.js +85 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/timer.component.js +292 -0
- package/esm2015/components/ngx-pick-datetime/lib/dialog/dialog-config.class.js +56 -0
- package/esm2015/components/ngx-pick-datetime/lib/dialog/dialog-container.component.js +208 -0
- package/esm2015/components/ngx-pick-datetime/lib/dialog/dialog-ref.class.js +119 -0
- package/esm2015/components/ngx-pick-datetime/lib/dialog/dialog.module.js +22 -0
- package/esm2015/components/ngx-pick-datetime/lib/dialog/dialog.service.js +222 -0
- package/esm2015/components/ngx-pick-datetime/lib/utils/index.js +5 -0
- package/esm2015/components/ngx-pick-datetime/lib/utils/object.utils.js +26 -0
- package/esm2015/components/ngx-remote-select/ngx-remote-select.component.js +121 -0
- package/esm2015/components/ngx-remote-select/ngx-remote-select.module.js +16 -0
- package/esm2015/components/ngx-tabset/components/tab-set.js +67 -0
- package/esm2015/components/ngx-tabset/components/tab.js +35 -0
- package/esm2015/components/ngx-tabset/directives/hover-class.directive.js +26 -0
- package/esm2015/components/ngx-tabset/modules/ngx-tabset.module.js +33 -0
- package/esm2015/components/number-input/number-input.component.js +203 -0
- package/esm2015/components/number-input/number-input.module.js +15 -0
- package/esm2015/components/select/optgroup.directive.js +17 -0
- package/esm2015/components/select/option.directive.js +17 -0
- package/esm2015/components/select/select.component.js +293 -0
- package/esm2015/components/select/select.module.js +18 -0
- package/esm2015/form-entry/control-alerts/alert-helpers.js +40 -0
- package/esm2015/form-entry/control-alerts/can-generate-alert.js +2 -0
- package/esm2015/form-entry/control-calculators/can-calculate.js +2 -0
- package/esm2015/form-entry/control-hiders-disablers/can-disable.js +2 -0
- package/esm2015/form-entry/control-hiders-disablers/can-hide.js +2 -0
- package/esm2015/form-entry/control-hiders-disablers/disabler-helper.js +33 -0
- package/esm2015/form-entry/control-hiders-disablers/hider-helpers.js +40 -0
- package/esm2015/form-entry/data-sources/data-sources.js +30 -0
- package/esm2015/form-entry/data-sources/dummy-data-source.js +104 -0
- package/esm2015/form-entry/directives/collapse-animations.js +11 -0
- package/esm2015/form-entry/directives/collapse.directive.js +157 -0
- package/esm2015/form-entry/directives/historical-value-directive.js +66 -0
- package/esm2015/form-entry/error-renderer/error-renderer.component.js +55 -0
- package/esm2015/form-entry/expression-runner/expression-runner.js +168 -0
- package/esm2015/form-entry/form-entry.module.js +107 -0
- package/esm2015/form-entry/form-factory/control-relations.factory.js +236 -0
- package/esm2015/form-entry/form-factory/form-control.service.js +118 -0
- package/esm2015/form-entry/form-factory/form-node.js +81 -0
- package/esm2015/form-entry/form-factory/form.factory.js +132 -0
- package/esm2015/form-entry/form-factory/form.js +193 -0
- package/esm2015/form-entry/form-factory/hiders-disablers.factory.js +66 -0
- package/esm2015/form-entry/form-factory/question.factory.js +864 -0
- package/esm2015/form-entry/form-factory/show-messages.factory.js +30 -0
- package/esm2015/form-entry/form-factory/validation.factory.js +145 -0
- package/esm2015/form-entry/form-renderer/form-renderer.component.css.js +179 -0
- package/esm2015/form-entry/form-renderer/form-renderer.component.js +231 -0
- package/esm2015/form-entry/helpers/historical-expression-helper-service.js +38 -0
- package/esm2015/form-entry/helpers/historical-field-helper-service.js +36 -0
- package/esm2015/form-entry/helpers/js-expression-helper.js +238 -0
- package/esm2015/form-entry/pipes/time-ago.pipe.js +107 -0
- package/esm2015/form-entry/question-models/checkbox.model.js +11 -0
- package/esm2015/form-entry/question-models/conditional-validation.model.js +9 -0
- package/esm2015/form-entry/question-models/custom-control-question.model.js +10 -0
- package/esm2015/form-entry/question-models/date-question.js +12 -0
- package/esm2015/form-entry/question-models/date-validation.model.js +10 -0
- package/esm2015/form-entry/question-models/file-upload-question.js +13 -0
- package/esm2015/form-entry/question-models/group-question.js +12 -0
- package/esm2015/form-entry/question-models/interfaces/base-options.js +2 -0
- package/esm2015/form-entry/question-models/interfaces/checkbox-options.js +2 -0
- package/esm2015/form-entry/question-models/interfaces/data-source.js +2 -0
- package/esm2015/form-entry/question-models/interfaces/date-question-options.js +2 -0
- package/esm2015/form-entry/question-models/interfaces/file-upload-question-options.js +2 -0
- package/esm2015/form-entry/question-models/interfaces/group-question-options.js +2 -0
- package/esm2015/form-entry/question-models/interfaces/multi-select-options.js +2 -0
- package/esm2015/form-entry/question-models/interfaces/nested-questions.js +7 -0
- package/esm2015/form-entry/question-models/interfaces/repeating-question-options.js +2 -0
- package/esm2015/form-entry/question-models/interfaces/select-option.js +2 -0
- package/esm2015/form-entry/question-models/interfaces/select-question-options.js +2 -0
- package/esm2015/form-entry/question-models/interfaces/test-order-question-options.js +2 -0
- package/esm2015/form-entry/question-models/interfaces/text-area-question-options.js +2 -0
- package/esm2015/form-entry/question-models/interfaces/text-question-options.js +2 -0
- package/esm2015/form-entry/question-models/interfaces/ui-select-question-options.js +2 -0
- package/esm2015/form-entry/question-models/js-expression-validation.model.js +8 -0
- package/esm2015/form-entry/question-models/max-validation.model.js +9 -0
- package/esm2015/form-entry/question-models/min-validation.model.js +9 -0
- package/esm2015/form-entry/question-models/models.js +12 -0
- package/esm2015/form-entry/question-models/multi-select-question.js +11 -0
- package/esm2015/form-entry/question-models/pair.model.js +7 -0
- package/esm2015/form-entry/question-models/question-base.js +25 -0
- package/esm2015/form-entry/question-models/rendering-type.js +9 -0
- package/esm2015/form-entry/question-models/repeating-question.js +11 -0
- package/esm2015/form-entry/question-models/select-option.js +7 -0
- package/esm2015/form-entry/question-models/select-question.js +12 -0
- package/esm2015/form-entry/question-models/test-order-question.js +15 -0
- package/esm2015/form-entry/question-models/text-area-input-question.js +13 -0
- package/esm2015/form-entry/question-models/text-input-question.js +10 -0
- package/esm2015/form-entry/question-models/ui-select-question.js +11 -0
- package/esm2015/form-entry/question-models/validation.model.js +7 -0
- package/esm2015/form-entry/services/debug-mode.service.js +22 -0
- package/esm2015/form-entry/services/form-errors.service.js +18 -0
- package/esm2015/form-entry/services/form-schema-compiler.service.js +246 -0
- package/esm2015/form-entry/services/historical-encounter-data.service.js +170 -0
- package/esm2015/form-entry/utils/messages.js +12 -0
- package/esm2015/form-entry/validators/conditional-answered.validator.js +46 -0
- package/esm2015/form-entry/validators/conditional-required.validator.js +40 -0
- package/esm2015/form-entry/validators/date.validator.js +18 -0
- package/esm2015/form-entry/validators/future-date-restriction.validator.js +21 -0
- package/esm2015/form-entry/validators/js-expression.validator.js +26 -0
- package/esm2015/form-entry/validators/max-date.validator.js +23 -0
- package/esm2015/form-entry/validators/max.validator.js +17 -0
- package/esm2015/form-entry/validators/min-date.validator.js +23 -0
- package/esm2015/form-entry/validators/min.validator.js +17 -0
- package/esm2015/form-entry/validators/required.validator.js +11 -0
- package/esm2015/form-entry/validators/validations.js +5 -0
- package/esm2015/form-entry/value-adapters/encounter.adapter.js +172 -0
- package/esm2015/form-entry/value-adapters/obs-adapter-helper.js +496 -0
- package/esm2015/form-entry/value-adapters/obs.adapter.js +545 -0
- package/esm2015/form-entry/value-adapters/order.adapter.js +186 -0
- package/esm2015/form-entry/value-adapters/person-attribute.adapter.js +87 -0
- package/esm2015/form-entry/value-adapters/value.adapter.js +2 -0
- package/esm2015/lib/index.js +49 -0
- package/esm2015/openmrs-ngx-formentry.js +76 -0
- package/esm2015/public_api.js +2 -0
- package/esm2015/shared.module.js +15 -0
- package/fesm2015/openmrs-ngx-formentry.js +13458 -0
- package/fesm2015/openmrs-ngx-formentry.js.map +1 -0
- package/form-entry/control-alerts/alert-helpers.d.ts +9 -0
- package/form-entry/control-alerts/can-generate-alert.d.ts +18 -0
- package/form-entry/control-calculators/can-calculate.d.ts +5 -0
- package/form-entry/control-hiders-disablers/can-disable.d.ts +19 -0
- package/form-entry/control-hiders-disablers/can-hide.d.ts +20 -0
- package/form-entry/control-hiders-disablers/disabler-helper.d.ts +7 -0
- package/form-entry/control-hiders-disablers/hider-helpers.d.ts +9 -0
- package/form-entry/data-sources/data-sources.d.ts +7 -0
- package/form-entry/data-sources/dummy-data-source.d.ts +18 -0
- package/form-entry/directives/collapse-animations.d.ts +4 -0
- package/form-entry/directives/collapse.directive.d.ts +42 -0
- package/form-entry/directives/historical-value-directive.d.ts +13 -0
- package/form-entry/error-renderer/error-renderer.component.d.ts +17 -0
- package/form-entry/expression-runner/expression-runner.d.ts +15 -0
- package/form-entry/form-entry.module.d.ts +2 -0
- package/form-entry/form-factory/control-relations.factory.d.ts +15 -0
- package/form-entry/form-factory/form-control.service.d.ts +22 -0
- package/form-entry/form-factory/form-node.d.ts +51 -0
- package/form-entry/form-factory/form.d.ts +28 -0
- package/form-entry/form-factory/form.factory.d.ts +23 -0
- package/form-entry/form-factory/hiders-disablers.factory.d.ts +17 -0
- package/form-entry/form-factory/question.factory.d.ts +56 -0
- package/form-entry/form-factory/show-messages.factory.d.ts +12 -0
- package/form-entry/form-factory/validation.factory.d.ts +22 -0
- package/form-entry/form-renderer/form-renderer.component.css.d.ts +1 -0
- package/form-entry/form-renderer/form-renderer.component.d.ts +52 -0
- package/form-entry/helpers/historical-expression-helper-service.d.ts +5 -0
- package/form-entry/helpers/historical-field-helper-service.d.ts +4 -0
- package/form-entry/helpers/js-expression-helper.d.ts +22 -0
- package/form-entry/pipes/time-ago.pipe.d.ts +11 -0
- package/form-entry/question-models/checkbox.model.d.ts +9 -0
- package/form-entry/question-models/conditional-validation.model.d.ts +6 -0
- package/form-entry/question-models/custom-control-question.model.d.ts +6 -0
- package/form-entry/question-models/date-question.d.ts +7 -0
- package/form-entry/question-models/date-validation.model.d.ts +5 -0
- package/form-entry/question-models/file-upload-question.d.ts +8 -0
- package/form-entry/question-models/group-question.d.ts +8 -0
- package/form-entry/question-models/interfaces/base-options.d.ts +28 -0
- package/form-entry/question-models/interfaces/checkbox-options.d.ts +7 -0
- package/form-entry/question-models/interfaces/data-source.d.ts +10 -0
- package/form-entry/question-models/interfaces/date-question-options.d.ts +3 -0
- package/form-entry/question-models/interfaces/file-upload-question-options.d.ts +5 -0
- package/form-entry/question-models/interfaces/group-question-options.d.ts +5 -0
- package/form-entry/question-models/interfaces/multi-select-options.d.ts +4 -0
- package/form-entry/question-models/interfaces/nested-questions.d.ts +6 -0
- package/form-entry/question-models/interfaces/repeating-question-options.d.ts +5 -0
- package/form-entry/question-models/interfaces/select-option.d.ts +4 -0
- package/form-entry/question-models/interfaces/select-question-options.d.ts +9 -0
- package/form-entry/question-models/interfaces/test-order-question-options.d.ts +14 -0
- package/form-entry/question-models/interfaces/text-area-question-options.d.ts +5 -0
- package/form-entry/question-models/interfaces/text-question-options.d.ts +4 -0
- package/form-entry/question-models/interfaces/ui-select-question-options.d.ts +9 -0
- package/form-entry/question-models/js-expression-validation.model.d.ts +5 -0
- package/form-entry/question-models/max-validation.model.d.ts +5 -0
- package/form-entry/question-models/min-validation.model.d.ts +5 -0
- package/form-entry/question-models/models.d.ts +15 -0
- package/form-entry/question-models/multi-select-question.d.ts +9 -0
- package/form-entry/question-models/pair.model.d.ts +5 -0
- package/form-entry/question-models/question-base.d.ts +40 -0
- package/form-entry/question-models/rendering-type.d.ts +7 -0
- package/form-entry/question-models/repeating-question.d.ts +7 -0
- package/form-entry/question-models/select-option.d.ts +6 -0
- package/form-entry/question-models/select-question.d.ts +10 -0
- package/form-entry/question-models/test-order-question.d.ts +13 -0
- package/form-entry/question-models/text-area-input-question.d.ts +7 -0
- package/form-entry/question-models/text-input-question.d.ts +6 -0
- package/form-entry/question-models/ui-select-question.d.ts +11 -0
- package/form-entry/question-models/validation.model.d.ts +5 -0
- package/form-entry/services/debug-mode.service.d.ts +5 -0
- package/form-entry/services/form-errors.service.d.ts +10 -0
- package/form-entry/services/form-schema-compiler.service.d.ts +20 -0
- package/form-entry/services/historical-encounter-data.service.d.ts +12 -0
- package/form-entry/utils/messages.d.ts +11 -0
- package/form-entry/validators/conditional-answered.validator.d.ts +8 -0
- package/form-entry/validators/conditional-required.validator.d.ts +8 -0
- package/form-entry/validators/date.validator.d.ts +7 -0
- package/form-entry/validators/future-date-restriction.validator.d.ts +7 -0
- package/form-entry/validators/js-expression.validator.d.ts +8 -0
- package/form-entry/validators/max-date.validator.d.ts +6 -0
- package/form-entry/validators/max.validator.d.ts +6 -0
- package/form-entry/validators/min-date.validator.d.ts +6 -0
- package/form-entry/validators/min.validator.d.ts +6 -0
- package/form-entry/validators/required.validator.d.ts +6 -0
- package/form-entry/validators/validations.d.ts +4 -0
- package/form-entry/value-adapters/encounter.adapter.d.ts +23 -0
- package/form-entry/value-adapters/obs-adapter-helper.d.ts +27 -0
- package/form-entry/value-adapters/obs.adapter.d.ts +35 -0
- package/form-entry/value-adapters/order.adapter.d.ts +17 -0
- package/form-entry/value-adapters/person-attribute.adapter.d.ts +12 -0
- package/form-entry/value-adapters/value.adapter.d.ts +5 -0
- package/lib/index.d.ts +49 -0
- package/openmrs-ngx-formentry.d.ts +85 -0
- package/openmrs-ngx-formentry.metadata.json +1 -0
- package/package.json +35 -0
- package/public_api.d.ts +1 -0
- package/shared.module.d.ts +2 -0
- package/styles/ngx-formentry.css +374 -0
- package/styles/picker.min.css +770 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { CustomComponentWrapperComponent } from './custom-component-wrapper.component';
|
|
4
|
+
import { LazyElementsModule } from '@angular-extensions/elements';
|
|
5
|
+
export class CustomComponentWrapperModule {
|
|
6
|
+
}
|
|
7
|
+
CustomComponentWrapperModule.decorators = [
|
|
8
|
+
{ type: NgModule, args: [{
|
|
9
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
10
|
+
imports: [CommonModule, LazyElementsModule],
|
|
11
|
+
exports: [CustomComponentWrapperComponent],
|
|
12
|
+
declarations: [CustomComponentWrapperComponent],
|
|
13
|
+
providers: []
|
|
14
|
+
},] }
|
|
15
|
+
];
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNvbXBvbmVudC13cmFwcGVyLi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9jb21wb25lbnRzL2N1c3RvbS1jb21wb25lbnQtd3JhcHBlci9jdXN0b20tY29tcG9uZW50LXdyYXBwZXIuLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVNsRSxNQUFNLE9BQU8sNEJBQTRCOzs7WUFQeEMsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2dCQUNqQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLENBQUM7Z0JBQzNDLE9BQU8sRUFBRSxDQUFDLCtCQUErQixDQUFDO2dCQUMxQyxZQUFZLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztnQkFDL0MsU0FBUyxFQUFFLEVBQUU7YUFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBDdXN0b21Db21wb25lbnRXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jdXN0b20tY29tcG9uZW50LXdyYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IExhenlFbGVtZW50c01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyLWV4dGVuc2lvbnMvZWxlbWVudHMnO1xuXG5ATmdNb2R1bGUoe1xuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIExhenlFbGVtZW50c01vZHVsZV0sXG4gIGV4cG9ydHM6IFtDdXN0b21Db21wb25lbnRXcmFwcGVyQ29tcG9uZW50XSxcbiAgZGVjbGFyYXRpb25zOiBbQ3VzdG9tQ29tcG9uZW50V3JhcHBlckNvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW11cbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tQ29tcG9uZW50V3JhcHBlck1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
export class CustomComponentWrapperComponent {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.dark = true;
|
|
5
|
+
}
|
|
6
|
+
ngOnInit() { }
|
|
7
|
+
}
|
|
8
|
+
CustomComponentWrapperComponent.decorators = [
|
|
9
|
+
{ type: Component, args: [{
|
|
10
|
+
selector: 'app-custom-component-wrapper',
|
|
11
|
+
template: "<div>\n <ng-template #error>Component Loading failed...</ng-template>\n <ng-template #loading>Loading Component...</ng-template>\n <div *ngFor=\"let componentConfig of componentConfigs\">\n <ax-lazy-element\n *axLazyElementDynamic=\"componentConfig.tag, url: componentConfig.url; module: true; errorTemplate: error; loadingTemplate: loading\"\n [config]=\"componentConfig\" [dark]='dark'>\n </ax-lazy-element>\n </div>\n</div>"
|
|
12
|
+
},] }
|
|
13
|
+
];
|
|
14
|
+
CustomComponentWrapperComponent.propDecorators = {
|
|
15
|
+
componentConfigs: [{ type: Input }],
|
|
16
|
+
dark: [{ type: Input }]
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNvbXBvbmVudC13cmFwcGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtZW50cnkvc3JjL2NvbXBvbmVudHMvY3VzdG9tLWNvbXBvbmVudC13cmFwcGVyL2N1c3RvbS1jb21wb25lbnQtd3JhcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFNckUsTUFBTSxPQUFPLCtCQUErQjtJQUo1QztRQVNFLFNBQUksR0FBRyxJQUFJLENBQUM7SUFFZCxDQUFDO0lBREMsUUFBUSxLQUFVLENBQUM7OztZQVZwQixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDhCQUE4QjtnQkFDeEMsc2VBQXNEO2FBQ3ZEOzs7K0JBRUUsS0FBSzttQkFHTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jdXN0b20tY29tcG9uZW50LXdyYXBwZXInLFxuICB0ZW1wbGF0ZVVybDogJ2N1c3RvbS1jb21wb25lbnQtd3JhcHBlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tQ29tcG9uZW50V3JhcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIGNvbXBvbmVudENvbmZpZ3M6IEFycmF5PHsgdGFnOiAnJzsgdXJsPzogJyc7IG1vZHVsZT86ICcnOyBkZXRhaWw/OiBhbnkgfT47XG5cbiAgQElucHV0KClcbiAgZGFyayA9IHRydWU7XG4gIG5nT25Jbml0KCk6IHZvaWQge31cbn1cbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import { CustomControlWrapperComponent } from './custom-control-wrapper.component';
|
|
5
|
+
import { LazyElementsModule } from '@angular-extensions/elements';
|
|
6
|
+
export class CustomControlWrapperModule {
|
|
7
|
+
}
|
|
8
|
+
CustomControlWrapperModule.decorators = [
|
|
9
|
+
{ type: NgModule, args: [{
|
|
10
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
11
|
+
imports: [CommonModule, FormsModule, LazyElementsModule],
|
|
12
|
+
exports: [CustomControlWrapperComponent],
|
|
13
|
+
declarations: [CustomControlWrapperComponent],
|
|
14
|
+
providers: []
|
|
15
|
+
},] }
|
|
16
|
+
];
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNvbnRyb2wtd3JhcHBlci4ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm1lbnRyeS9zcmMvY29tcG9uZW50cy9jdXN0b20tY29udHJvbC13cmFwcGVyL2N1c3RvbS1jb250cm9sLXdyYXBwZXIuLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFTbEUsTUFBTSxPQUFPLDBCQUEwQjs7O1lBUHRDLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztnQkFDakMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQztnQkFDeEQsT0FBTyxFQUFFLENBQUMsNkJBQTZCLENBQUM7Z0JBQ3hDLFlBQVksRUFBRSxDQUFDLDZCQUE2QixDQUFDO2dCQUM3QyxTQUFTLEVBQUUsRUFBRTthQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ3VzdG9tQ29udHJvbFdyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuL2N1c3RvbS1jb250cm9sLXdyYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IExhenlFbGVtZW50c01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyLWV4dGVuc2lvbnMvZWxlbWVudHMnO1xuXG5ATmdNb2R1bGUoe1xuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBMYXp5RWxlbWVudHNNb2R1bGVdLFxuICBleHBvcnRzOiBbQ3VzdG9tQ29udHJvbFdyYXBwZXJDb21wb25lbnRdLFxuICBkZWNsYXJhdGlvbnM6IFtDdXN0b21Db250cm9sV3JhcHBlckNvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW11cbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tQ29udHJvbFdyYXBwZXJNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Component, forwardRef, Input } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { CustomControlQuestion } from '../../form-entry/question-models/custom-control-question.model';
|
|
4
|
+
export class CustomControlWrapperComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.customControlConfig = { tag: '', url: '', module: '' };
|
|
7
|
+
this.config = {};
|
|
8
|
+
this.touched = false;
|
|
9
|
+
this.disabled = false;
|
|
10
|
+
this.onChange = (value) => { };
|
|
11
|
+
this.onTouched = () => { };
|
|
12
|
+
}
|
|
13
|
+
registerOnValidatorChange(fn) {
|
|
14
|
+
throw new Error('Method not implemented.');
|
|
15
|
+
}
|
|
16
|
+
ngOnInit() {
|
|
17
|
+
var _a, _b;
|
|
18
|
+
this.customControlConfig = (_b = (_a = this.question) === null || _a === void 0 ? void 0 : _a.extras) === null || _b === void 0 ? void 0 : _b.customControlConfig;
|
|
19
|
+
}
|
|
20
|
+
onValueChange(event) {
|
|
21
|
+
var _a;
|
|
22
|
+
this.markAsTouched();
|
|
23
|
+
if (!this.disabled) {
|
|
24
|
+
this.value = (_a = event === null || event === void 0 ? void 0 : event.detail) === null || _a === void 0 ? void 0 : _a.data;
|
|
25
|
+
this.onChange(this.value);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
writeValue(value) {
|
|
29
|
+
this.value = value;
|
|
30
|
+
}
|
|
31
|
+
registerOnChange(onChange) {
|
|
32
|
+
this.onChange = onChange;
|
|
33
|
+
}
|
|
34
|
+
registerOnTouched(onTouched) {
|
|
35
|
+
this.onTouched = onTouched;
|
|
36
|
+
}
|
|
37
|
+
markAsTouched() {
|
|
38
|
+
if (!this.touched) {
|
|
39
|
+
this.onTouched();
|
|
40
|
+
this.touched = true;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
setDisabledState(disabled) {
|
|
44
|
+
this.disabled = disabled;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
CustomControlWrapperComponent.decorators = [
|
|
48
|
+
{ type: Component, args: [{
|
|
49
|
+
selector: 'app-custom-control-wrapper',
|
|
50
|
+
template: "<div>\n <ng-template #error>Loading failed...</ng-template>\n <ng-template #loading>Loading...</ng-template>\n <ax-lazy-element\n *axLazyElementDynamic=\"customControlConfig.tag, url: customControlConfig.url; module: true; errorTemplate: error; loadingTemplate: loading\"\n [question]=\"question\" [value]=\"value\" [disabled]='disabled' (on-change)=\"onValueChange($event)\" [config]=\"config\">\n </ax-lazy-element>\n</div>",
|
|
51
|
+
providers: [
|
|
52
|
+
{
|
|
53
|
+
provide: NG_VALUE_ACCESSOR,
|
|
54
|
+
multi: true,
|
|
55
|
+
useExisting: forwardRef(() => CustomControlWrapperComponent)
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
},] }
|
|
59
|
+
];
|
|
60
|
+
CustomControlWrapperComponent.propDecorators = {
|
|
61
|
+
question: [{ type: Input }]
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNvbnRyb2wtd3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9jb21wb25lbnRzL2N1c3RvbS1jb250cm9sLXdyYXBwZXIvY3VzdG9tLWNvbnRyb2wtd3JhcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFJTCxpQkFBaUIsRUFHbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQWF2RyxNQUFNLE9BQU8sNkJBQTZCO0lBWDFDO1FBYUUsd0JBQW1CLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBT3ZELFdBQU0sR0FBRyxFQUFFLENBQUM7UUFFWixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWhCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFTakIsYUFBUSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFFekIsY0FBUyxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQWdDdkIsQ0FBQztJQXpDQyx5QkFBeUIsQ0FBRSxFQUFjO1FBQ3ZDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsUUFBUTs7UUFDTixJQUFJLENBQUMsbUJBQW1CLGVBQUcsSUFBSSxDQUFDLFFBQVEsMENBQUUsTUFBTSwwQ0FBRSxtQkFBbUIsQ0FBQztJQUN4RSxDQUFDO0lBTUQsYUFBYSxDQUFDLEtBQUs7O1FBQ2pCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsS0FBSyxTQUFHLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxNQUFNLDBDQUFFLElBQUksQ0FBQztZQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsUUFBYTtRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsU0FBYztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztTQUNyQjtJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxRQUFpQjtRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDOzs7WUFsRUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSw0QkFBNEI7Z0JBQ3RDLCtjQUFvRDtnQkFDcEQsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLEtBQUssRUFBRSxJQUFJO3dCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsNkJBQTZCLENBQUM7cUJBQzdEO2lCQUNGO2FBQ0Y7Ozt1QkFLRSxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEN1c3RvbUNvbnRyb2xRdWVzdGlvbiB9IGZyb20gJy4uLy4uL2Zvcm0tZW50cnkvcXVlc3Rpb24tbW9kZWxzL2N1c3RvbS1jb250cm9sLXF1ZXN0aW9uLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWN1c3RvbS1jb250cm9sLXdyYXBwZXInLFxuICB0ZW1wbGF0ZVVybDogJ2N1c3RvbS1jb250cm9sLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ3VzdG9tQ29udHJvbFdyYXBwZXJDb21wb25lbnQpXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbUNvbnRyb2xXcmFwcGVyQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XG4gIGN1c3RvbUNvbnRyb2xDb25maWcgPSB7IHRhZzogJycsIHVybDogJycsIG1vZHVsZTogJycgfTtcblxuICBASW5wdXQoKVxuICBxdWVzdGlvbjogQ3VzdG9tQ29udHJvbFF1ZXN0aW9uO1xuXG4gIHZhbHVlOiBhbnk7XG5cbiAgY29uZmlnID0ge307XG5cbiAgdG91Y2hlZCA9IGZhbHNlO1xuXG4gIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZT8oZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jdXN0b21Db250cm9sQ29uZmlnID0gdGhpcy5xdWVzdGlvbj8uZXh0cmFzPy5jdXN0b21Db250cm9sQ29uZmlnO1xuICB9XG5cbiAgb25DaGFuZ2UgPSAodmFsdWUpID0+IHt9O1xuXG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIG9uVmFsdWVDaGFuZ2UoZXZlbnQpIHtcbiAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBldmVudD8uZGV0YWlsPy5kYXRhO1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlOiBhbnkpIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gb25DaGFuZ2U7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkID0gb25Ub3VjaGVkO1xuICB9XG5cbiAgbWFya0FzVG91Y2hlZCgpIHtcbiAgICBpZiAoIXRoaXMudG91Y2hlZCkge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMudG91Y2hlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* date-picker.component
|
|
3
|
+
*/
|
|
4
|
+
import { Component, Output, EventEmitter, Input } from '@angular/core';
|
|
5
|
+
import _ from 'lodash';
|
|
6
|
+
import moment from 'moment';
|
|
7
|
+
// const myDpStyles: string = require('./date-picker.component.css');
|
|
8
|
+
// const myDpTpl: string = require('./date-picker.component.html');
|
|
9
|
+
// webpack2_
|
|
10
|
+
export class DatePickerComponent {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.locale = 'en';
|
|
13
|
+
this.viewFormat = 'll';
|
|
14
|
+
this.returnObject = 'js';
|
|
15
|
+
this.onDatePickerCancel = new EventEmitter();
|
|
16
|
+
this.onSelectDate = new EventEmitter();
|
|
17
|
+
this.onDisplayMonths = false;
|
|
18
|
+
this.onDisplayYears = false;
|
|
19
|
+
this.displayYearsIndex = 0;
|
|
20
|
+
this.monthsShort = moment.monthsShort();
|
|
21
|
+
}
|
|
22
|
+
ngOnInit() {
|
|
23
|
+
this.initValue();
|
|
24
|
+
// default to current year range
|
|
25
|
+
_.each(this.fullYearRange, (v, i) => {
|
|
26
|
+
this.currentYear = this.calendarDate.clone().startOf('year').year();
|
|
27
|
+
if (v.indexOf(this.currentYear) !== -1) {
|
|
28
|
+
this.displayYearsIndex = i;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
this.displayYearRange = this.fullYearRange[this.displayYearsIndex];
|
|
32
|
+
this.generateCalendar();
|
|
33
|
+
}
|
|
34
|
+
prev() {
|
|
35
|
+
if (this.onDisplayYears) {
|
|
36
|
+
this.displayYearsIndex--;
|
|
37
|
+
if (this.displayYearsIndex < 0) {
|
|
38
|
+
this.displayYearsIndex = 0;
|
|
39
|
+
}
|
|
40
|
+
this.displayYearRange = this.fullYearRange[this.displayYearsIndex];
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
this.calendarDate = this.calendarDate.clone().subtract(1, 'M');
|
|
44
|
+
}
|
|
45
|
+
this.generateCalendar();
|
|
46
|
+
}
|
|
47
|
+
showMonthSelection() {
|
|
48
|
+
this.onDisplayMonths = true;
|
|
49
|
+
this.onDisplayYears = false;
|
|
50
|
+
}
|
|
51
|
+
showYearSelection() {
|
|
52
|
+
this.onDisplayYears = true;
|
|
53
|
+
this.onDisplayMonths = false;
|
|
54
|
+
}
|
|
55
|
+
next() {
|
|
56
|
+
if (this.onDisplayYears) {
|
|
57
|
+
this.displayYearsIndex++;
|
|
58
|
+
if (this.displayYearsIndex >= this.fullYearRange.length) {
|
|
59
|
+
this.displayYearsIndex = this.fullYearRange.length - 1;
|
|
60
|
+
}
|
|
61
|
+
this.displayYearRange = this.fullYearRange[this.displayYearsIndex++];
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
this.calendarDate = this.calendarDate.clone().add(1, 'M');
|
|
65
|
+
}
|
|
66
|
+
this.generateCalendar();
|
|
67
|
+
}
|
|
68
|
+
selectDay(day) {
|
|
69
|
+
const daysDifference = day.diff(this.calendarDate.clone().startOf('date'), 'days');
|
|
70
|
+
day = this.calendarDate.clone().add(daysDifference, 'd');
|
|
71
|
+
const selectedDay = this.parseToReturnObjectType(day);
|
|
72
|
+
this.onSelectDate.emit(selectedDay);
|
|
73
|
+
this.cancelDatePicker();
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
selectMonth(month) {
|
|
77
|
+
this.calendarDate = this.calendarDate.clone().month(month);
|
|
78
|
+
this.onDisplayMonths = false;
|
|
79
|
+
this.generateCalendar();
|
|
80
|
+
}
|
|
81
|
+
selectYear(year) {
|
|
82
|
+
this.calendarDate = this.calendarDate.clone().year(year);
|
|
83
|
+
this.onDisplayYears = false;
|
|
84
|
+
this.generateCalendar();
|
|
85
|
+
}
|
|
86
|
+
selectToday() {
|
|
87
|
+
const today = this.parseToReturnObjectType(moment());
|
|
88
|
+
this.onSelectDate.emit(today);
|
|
89
|
+
this.cancelDatePicker();
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
clearPickDate() {
|
|
93
|
+
this.onSelectDate.emit(null);
|
|
94
|
+
this.cancelDatePicker();
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
cancelDatePicker() {
|
|
98
|
+
this.onDatePickerCancel.emit(false);
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
generateYears() {
|
|
102
|
+
const currentYear = moment().year();
|
|
103
|
+
const startYr = this.calendarDate.clone().subtract(100, 'y').year();
|
|
104
|
+
// const endYr = this.calendarDate.clone().add(10, 'y').year();
|
|
105
|
+
const years = [];
|
|
106
|
+
for (let year = startYr; year <= currentYear; year++) {
|
|
107
|
+
years.push(year);
|
|
108
|
+
}
|
|
109
|
+
this.fullYearRange = _.chunk(years, 14);
|
|
110
|
+
}
|
|
111
|
+
initValue() {
|
|
112
|
+
// set moment locale (default is en)
|
|
113
|
+
moment.locale(this.locale);
|
|
114
|
+
// set today value
|
|
115
|
+
this.today = moment().startOf('date');
|
|
116
|
+
this.currentMonth = this.monthsShort[moment().month()];
|
|
117
|
+
this.currentYear = moment().year();
|
|
118
|
+
// set week days name array
|
|
119
|
+
this.dayNames = moment.weekdaysShort(true);
|
|
120
|
+
// check if the input initDate has value
|
|
121
|
+
if (this.initDate) {
|
|
122
|
+
this.calendarDate =
|
|
123
|
+
this.returnObject === 'string'
|
|
124
|
+
? moment(this.initDate, this.viewFormat)
|
|
125
|
+
: moment(this.initDate);
|
|
126
|
+
this.selectedDate = this.calendarDate.clone().startOf('date');
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
this.calendarDate = moment();
|
|
130
|
+
}
|
|
131
|
+
this.generateYears();
|
|
132
|
+
}
|
|
133
|
+
generateCalendar() {
|
|
134
|
+
this.calendarDays = [];
|
|
135
|
+
const start = 0 -
|
|
136
|
+
((this.calendarDate.clone().startOf('month').day() +
|
|
137
|
+
(7 - moment.localeData().firstDayOfWeek())) %
|
|
138
|
+
7);
|
|
139
|
+
const end = 41 + start; // iterator ending point
|
|
140
|
+
for (let i = start; i <= end; i += 1) {
|
|
141
|
+
const day = this.calendarDate.clone().startOf('month').add(i, 'days');
|
|
142
|
+
this.calendarDays.push(day);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
parseToReturnObjectType(day) {
|
|
146
|
+
switch (this.returnObject) {
|
|
147
|
+
case 'js':
|
|
148
|
+
return day.toDate();
|
|
149
|
+
case 'string':
|
|
150
|
+
return day.format(this.viewFormat);
|
|
151
|
+
case 'moment':
|
|
152
|
+
return day;
|
|
153
|
+
case 'json':
|
|
154
|
+
return day.toJSON();
|
|
155
|
+
case 'array':
|
|
156
|
+
return day.toArray();
|
|
157
|
+
case 'iso':
|
|
158
|
+
return day.toISOString();
|
|
159
|
+
case 'object':
|
|
160
|
+
return day.toObject();
|
|
161
|
+
default:
|
|
162
|
+
return day;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
DatePickerComponent.decorators = [
|
|
167
|
+
{ type: Component, args: [{
|
|
168
|
+
selector: 'date-picker',
|
|
169
|
+
template: "<picker-modal (onOverlayClick)=\"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</picker-modal>\n",
|
|
170
|
+
styles: ["*,:after,:before{box-sizing:border-box}.picker-wrap{width:95vw;max-width:666px}.picker-box{font-family:Open Sans;min-width:400px!important;padding:.625rem 1rem;-webkit-user-select:none;-moz-user-select:none;user-select:none}.picker-footer,.picker-header{font-size:1.333rem;line-height:2.5rem;display:flex;height:2.5rem;width:100%}.picker-header-nav{position:relative;cursor:pointer;width:calc(100% / 8)}.picker-header-nav>*{position:absolute;top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}.picker-header-nav .nav-next:before,.picker-header-nav .nav-prev:before{content:\" \";border-top:.5em solid transparent;border-bottom:.5em solid transparent;border-right:.75em solid #000;width:0;height:0;display:block;margin:0 auto}.picker-header-nav .nav-next:before{border-right:0;border-left:.75em solid #000}.picker-header-content{width:calc(100% * 6 / 8);text-align:center}.picker-header-content .month{font-size:1.778rem;line-height:2.5rem;margin-right:.5rem;font-weight:700}.picker-header-content .year{font-style:italic;color:#999}.picker-calendar{width:100%}.picker-calendar .picker-calendar-row{display:flex;flex-wrap:wrap;width:100%;margin-bottom:.625rem}.picker-calendar .picker-weekday{font-weight:700;text-align:left;color:#999;width:calc(100% / 7)}.picker-calendar .picker-day,.picker-calendar .picker-month,.picker-calendar .picker-year{font-size:1.333rem;line-height:2.5rem;position:relative;height:2.5rem;text-align:center;cursor:pointer;width:calc(100% / 7)}.picker-calendar .picker-day:hover,.picker-calendar .picker-month:hover,.picker-calendar .picker-year:hover{background:#b1dcfb}.picker-calendar .out-focus{color:#ddd}.picker-calendar .out-focus:hover{color:#000}.picker-calendar .selected{background:#0089ec;color:#fff}.picker-calendar .selected:hover{background:#0089ec}.picker-calendar .today:before{content:\" \";position:absolute;top:2px;right:2px;width:0;height:0;border-top:.5em solid #0059bc;border-left:.5em solid transparent}.picker-footer{cursor:pointer}.picker-footer .picker-action{text-align:center;width:calc(100% / 3)}.picker-footer .picker-action:hover{background-color:#b1dcfb}.picker-footer .picker-action .text{padding-left:.8rem}.picker-footer .action-clear:before,.picker-footer .action-close:before,.picker-footer .action-today:before{content:\" \";position:relative;display:inline-block;height:0;width:0}.picker-footer .action-today:before{border-top:.66em solid #0059bc;border-left:.66em solid transparent}.picker-footer .action-clear:before{top:-.5rem;width:1rem;border-top:3px solid #e20}.picker-footer .action-close:before{width:1rem;height:1rem;background:linear-gradient(180deg,transparent 35%,#777 0,#777 65%,transparent 0),linear-gradient(90deg,transparent 35%,#777 0,#777 65%,transparent 0);transform:rotate(45deg)}"]
|
|
171
|
+
},] }
|
|
172
|
+
];
|
|
173
|
+
DatePickerComponent.ctorParameters = () => [];
|
|
174
|
+
DatePickerComponent.propDecorators = {
|
|
175
|
+
initDate: [{ type: Input }],
|
|
176
|
+
locale: [{ type: Input }],
|
|
177
|
+
viewFormat: [{ type: Input }],
|
|
178
|
+
returnObject: [{ type: Input }],
|
|
179
|
+
onDatePickerCancel: [{ type: Output }],
|
|
180
|
+
onSelectDate: [{ type: Output }]
|
|
181
|
+
};
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm1lbnRyeS9zcmMvY29tcG9uZW50cy9kYXRlLXRpbWUtcGlja2VyL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sTUFBa0IsTUFBTSxRQUFRLENBQUM7QUFJeEMscUVBQXFFO0FBQ3JFLG1FQUFtRTtBQUNuRSxZQUFZO0FBT1osTUFBTSxPQUFPLG1CQUFtQjtJQXVCOUI7UUFuQmdCLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ25CLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDakQsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBT2pELG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLHNCQUFpQixHQUFHLENBQUMsQ0FBQztRQUd0QixnQkFBVyxHQUFrQixNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7SUFHMUMsQ0FBQztJQUVULFFBQVE7UUFDYixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsZ0NBQWdDO1FBQ2hDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUMs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Q0FBQztZQUV2QixLQUFLLEtBQUs7Z0JBQ1IsT0FBTyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFM0IsS0FBSyxRQUFRO2dCQUNYLE9BQU8sR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBRXhCO2dCQUNFLE9BQU8sR0FBRyxDQUFDO1NBQ2Q7SUFDSCxDQUFDOzs7WUF0TUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxhQUFhO2dCQUN2QixrN0ZBQTJDOzthQUU1Qzs7Ozt1QkFJRSxLQUFLO3FCQUNMLEtBQUs7eUJBQ0wsS0FBSzsyQkFDTCxLQUFLO2lDQUNMLE1BQU07MkJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogZGF0ZS1waWNrZXIuY29tcG9uZW50XG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQsIHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcblxuLy8gd2VicGFjazFfXG5kZWNsYXJlIGxldCByZXF1aXJlOiBhbnk7XG4vLyBjb25zdCBteURwU3R5bGVzOiBzdHJpbmcgPSByZXF1aXJlKCcuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5jc3MnKTtcbi8vIGNvbnN0IG15RHBUcGw6IHN0cmluZyA9IHJlcXVpcmUoJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnKTtcbi8vIHdlYnBhY2syX1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRlLXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIGRheU5hbWVzOiBBcnJheTxzdHJpbmc+O1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBpbml0RGF0ZTogYW55O1xuICBASW5wdXQoKSBwdWJsaWMgbG9jYWxlID0gJ2VuJztcbiAgQElucHV0KCkgcHVibGljIHZpZXdGb3JtYXQgPSAnbGwnO1xuICBASW5wdXQoKSBwdWJsaWMgcmV0dXJuT2JqZWN0ID0gJ2pzJztcbiAgQE91dHB1dCgpIHB1YmxpYyBvbkRhdGVQaWNrZXJDYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgb25TZWxlY3REYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHVibGljIGNhbGVuZGFyRGF0ZTogTW9tZW50O1xuICBwdWJsaWMgc2VsZWN0ZWREYXRlOiBNb21lbnQ7XG4gIHB1YmxpYyBjdXJyZW50TW9udGg6IGFueTtcbiAgcHVibGljIHRvZGF5OiBNb21lbnQ7XG4gIHB1YmxpYyBjdXJyZW50WWVhcjogbnVtYmVyO1xuICBwdWJsaWMgb25EaXNwbGF5TW9udGhzID0gZmFsc2U7XG4gIHB1YmxpYyBvbkRpc3BsYXlZZWFycyA9IGZhbHNlO1xuICBwdWJsaWMgZGlzcGxheVllYXJzSW5kZXggPSAwO1xuICBwdWJsaWMgZGlzcGxheVllYXJSYW5nZTogQXJyYXk8bnVtYmVyPjtcbiAgcHVibGljIGZ1bGxZZWFyUmFuZ2U6IEFycmF5PGFueT47XG4gIHB1YmxpYyBtb250aHNTaG9ydDogQXJyYXk8c3RyaW5nPiA9IG1vbWVudC5tb250aHNTaG9ydCgpO1xuICBwdWJsaWMgY2FsZW5kYXJEYXlzOiBBcnJheTxNb21lbnQ+O1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0VmFsdWUoKTtcbiAgICAvLyBkZWZhdWx0IHRvIGN1cnJlbnQgeWVhciByYW5nZVxuICAgIF8uZWFjaCh0aGlzLmZ1bGxZZWFyUmFuZ2UsICh2LCBpKSA9PiB7XG4gICAgICB0aGlzLmN1cnJlbnRZZWFyID0gdGhpcy5jYWxlbmRhckRhdGUuY2xvbmUoKS5zdGFydE9mKCd5ZWFyJykueWVhcigpO1xuICAgICAgaWYgKHYuaW5kZXhPZih0aGlzLmN1cnJlbnRZZWFyKSAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5WWVhcnNJbmRleCA9IGk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5kaXNwbGF5WWVhclJhbmdlID0gdGhpcy5mdWxsWWVhclJhbmdlW3RoaXMuZGlzcGxheVllYXJzSW5kZXhdO1xuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xuICB9XG5cbiAgcHVibGljIHByZXYoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub25EaXNwbGF5WWVhcnMpIHtcbiAgICAgIHRoaXMuZGlzcGxheVllYXJzSW5kZXgtLTtcbiAgICAgIGlmICh0aGlzLmRpc3BsYXlZZWFyc0luZGV4IDwgMCkge1xuICAgICAgICB0aGlzLmRpc3BsYXlZZWFyc0luZGV4ID0gMDtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGlzcGxheVllYXJSYW5nZSA9IHRoaXMuZnVsbFllYXJSYW5nZVt0aGlzLmRpc3BsYXlZZWFyc0luZGV4XTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYWxlbmRhckRhdGUgPSB0aGlzLmNhbGVuZGFyRGF0ZS5jbG9uZSgpLnN1YnRyYWN0KDEsICdNJyk7XG4gICAgfVxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xuICB9XG5cbiAgcHVibGljIHNob3dNb250aFNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLm9uRGlzcGxheU1vbnRocyA9IHRydWU7XG4gICAgdGhpcy5vbkRpc3BsYXlZZWFycyA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHNob3dZZWFyU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMub25EaXNwbGF5WWVhcnMgPSB0cnVlO1xuICAgIHRoaXMub25EaXNwbGF5TW9udGhzID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgbmV4dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vbkRpc3BsYXlZZWFycykge1xuICAgICAgdGhpcy5kaXNwbGF5WWVhcnNJbmRleCsrO1xuICAgICAgaWYgKHRoaXMuZGlzcGxheVllYXJzSW5kZXggPj0gdGhpcy5mdWxsWWVhclJhbmdlLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmRpc3BsYXlZZWFyc0luZGV4ID0gdGhpcy5mdWxsWWVhclJhbmdlLmxlbmd0aCAtIDE7XG4gICAgICB9XG4gICAgICB0aGlzLmRpc3BsYXlZZWFyUmFuZ2UgPSB0aGlzLmZ1bGxZZWFyUmFuZ2VbdGhpcy5kaXNwbGF5WWVhcnNJbmRleCsrXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYWxlbmRhckRhdGUgPSB0aGlzLmNhbGVuZGFyRGF0ZS5jbG9uZSgpLmFkZCgxLCAnTScpO1xuICAgIH1cbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3REYXkoZGF5OiBNb21lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBkYXlzRGlmZmVyZW5jZSA9IGRheS5kaWZmKFxuICAgICAgdGhpcy5jYWxlbmRhckRhdGUuY2xvbmUoKS5zdGFydE9mKCdkYXRlJyksXG4gICAgICAnZGF5cydcbiAgICApO1xuICAgIGRheSA9IHRoaXMuY2FsZW5kYXJEYXRlLmNsb25lKCkuYWRkKGRheXNEaWZmZXJlbmNlLCAnZCcpO1xuICAgIGNvbnN0IHNlbGVjdGVkRGF5ID0gdGhpcy5wYXJzZVRvUmV0dXJuT2JqZWN0VHlwZShkYXkpO1xuICAgIHRoaXMub25TZWxlY3REYXRlLmVtaXQoc2VsZWN0ZWREYXkpO1xuICAgIHRoaXMuY2FuY2VsRGF0ZVBpY2tlcigpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RNb250aChtb250aDogc3RyaW5nKSB7XG4gICAgdGhpcy5jYWxlbmRhckRhdGUgPSB0aGlzLmNhbGVuZGFyRGF0ZS5jbG9uZSgpLm1vbnRoKG1vbnRoKTtcbiAgICB0aGlzLm9uRGlzcGxheU1vbnRocyA9IGZhbHNlO1xuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdFllYXIoeWVhcjogbnVtYmVyKSB7XG4gICAgdGhpcy5jYWxlbmRhckRhdGUgPSB0aGlzLmNhbGVuZGFyRGF0ZS5jbG9uZSgpLnllYXIoeWVhcik7XG4gICAgdGhpcy5vbkRpc3BsYXlZZWFycyA9IGZhbHNlO1xuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdFRvZGF5KCk6IHZvaWQge1xuICAgIGNvbnN0IHRvZGF5ID0gdGhpcy5wYXJzZVRvUmV0dXJuT2JqZWN0VHlwZShtb21lbnQoKSk7XG4gICAgdGhpcy5vblNlbGVjdERhdGUuZW1pdCh0b2RheSk7XG4gICAgdGhpcy5jYW5jZWxEYXRlUGlja2VyKCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHVibGljIGNsZWFyUGlja0RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5vblNlbGVjdERhdGUuZW1pdChudWxsKTtcbiAgICB0aGlzLmNhbmNlbERhdGVQaWNrZXIoKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBwdWJsaWMgY2FuY2VsRGF0ZVBpY2tlcigpOiB2b2lkIHtcbiAgICB0aGlzLm9uRGF0ZVBpY2tlckNhbmNlbC5lbWl0KGZhbHNlKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2VuZXJhdGVZZWFycygpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50WWVhciA9IG1vbWVudCgpLnllYXIoKTtcbiAgICBjb25zdCBzdGFydFlyID0gdGhpcy5jYWxlbmRhckRhdGUuY2xvbmUoKS5zdWJ0cmFjdCgxMDAsICd5JykueWVhcigpO1xuICAgIC8vIGNvbnN0IGVuZFlyID0gdGhpcy5jYWxlbmRhckRhdGUuY2xvbmUoKS5hZGQoMTAsICd5JykueWVhcigpO1xuICAgIGNvbnN0IHllYXJzID0gW107XG4gICAgZm9yIChsZXQgeWVhciA9IHN0YXJ0WXI7IHllYXIgPD0gY3VycmVudFllYXI7IHllYXIrKykge1xuICAgICAgeWVhcnMucHVzaCh5ZWFyKTtcbiAgICB9XG5cbiAgICB0aGlzLmZ1bGxZZWFyUmFuZ2UgPSBfLmNodW5rKHllYXJzLCAxNCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5pdFZhbHVlKCkge1xuICAgIC8vIHNldCBtb21lbnQgbG9jYWxlIChkZWZhdWx0IGlzIGVuKVxuICAgIG1vbWVudC5sb2NhbGUodGhpcy5sb2NhbGUpO1xuICAgIC8vIHNldCB0b2RheSB2YWx1ZVxuICAgIHRoaXMudG9kYXkgPSBtb21lbnQoKS5zdGFydE9mKCdkYXRlJyk7XG4gICAgdGhpcy5jdXJyZW50TW9udGggPSB0aGlzLm1vbnRoc1Nob3J0W21vbWVudCgpLm1vbnRoKCldO1xuICAgIHRoaXMuY3VycmVudFllYXIgPSBtb21lbnQoKS55ZWFyKCk7XG5cbiAgICAvLyBzZXQgd2VlayBkYXlzIG5hbWUgYXJyYXlcbiAgICB0aGlzLmRheU5hbWVzID0gbW9tZW50LndlZWtkYXlzU2hvcnQodHJ1ZSk7XG5cbiAgICAvLyBjaGVjayBpZiB0aGUgaW5wdXQgaW5pdERhdGUgaGFzIHZhbHVlXG4gICAgaWYgKHRoaXMuaW5pdERhdGUpIHtcbiAgICAgIHRoaXMuY2FsZW5kYXJEYXRlID1cbiAgICAgICAgdGhpcy5yZXR1cm5PYmplY3QgPT09ICdzdHJpbmcnXG4gICAgICAgICAgPyBtb21lbnQodGhpcy5pbml0RGF0ZSwgdGhpcy52aWV3Rm9ybWF0KVxuICAgICAgICAgIDogbW9tZW50KHRoaXMuaW5pdERhdGUpO1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSB0aGlzLmNhbGVuZGFyRGF0ZS5jbG9uZSgpLnN0YXJ0T2YoJ2RhdGUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYWxlbmRhckRhdGUgPSBtb21lbnQoKTtcbiAgICB9XG4gICAgdGhpcy5nZW5lcmF0ZVllYXJzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2VuZXJhdGVDYWxlbmRhcigpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGVuZGFyRGF5cyA9IFtdO1xuICAgIGNvbnN0IHN0YXJ0ID1cbiAgICAgIDAgLVxuICAgICAgKCh0aGlzLmNhbGVuZGFyRGF0ZS5jbG9uZSgpLnN0YXJ0T2YoJ21vbnRoJykuZGF5KCkgK1xuICAgICAgICAoNyAtIG1vbWVudC5sb2NhbGVEYXRhKCkuZmlyc3REYXlPZldlZWsoKSkpICVcbiAgICAgICAgNyk7XG4gICAgY29uc3QgZW5kID0gNDEgKyBzdGFydDsgLy8gaXRlcmF0b3IgZW5kaW5nIHBvaW50XG5cbiAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGRheSA9IHRoaXMuY2FsZW5kYXJEYXRlLmNsb25lKCkuc3RhcnRPZignbW9udGgnKS5hZGQoaSwgJ2RheXMnKTtcbiAgICAgIHRoaXMuY2FsZW5kYXJEYXlzLnB1c2goZGF5KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VUb1JldHVybk9iamVjdFR5cGUoZGF5OiBNb21lbnQpOiBhbnkge1xuICAgIHN3aXRjaCAodGhpcy5yZXR1cm5PYmplY3QpIHtcbiAgICAgIGNhc2UgJ2pzJzpcbiAgICAgICAgcmV0dXJuIGRheS50b0RhdGUoKTtcblxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgcmV0dXJuIGRheS5mb3JtYXQodGhpcy52aWV3Rm9ybWF0KTtcblxuICAgICAgY2FzZSAnbW9tZW50JzpcbiAgICAgICAgcmV0dXJuIGRheTtcblxuICAgICAgY2FzZSAnanNvbic6XG4gICAgICAgIHJldHVybiBkYXkudG9KU09OKCk7XG5cbiAgICAgIGNhc2UgJ2FycmF5JzpcbiAgICAgICAgcmV0dXJuIGRheS50b0FycmF5KCk7XG5cbiAgICAgIGNhc2UgJ2lzbyc6XG4gICAgICAgIHJldHVybiBkYXkudG9JU09TdHJpbmcoKTtcblxuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgcmV0dXJuIGRheS50b09iamVjdCgpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZGF5O1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Component, Input, forwardRef, EventEmitter, Output } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import moment from 'moment';
|
|
4
|
+
export class DateTimePickerComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.showDate = true;
|
|
7
|
+
this.showTime = false;
|
|
8
|
+
this.showWeeks = false;
|
|
9
|
+
this.weeks = [2, 4, 6, 8, 12, 16, 24];
|
|
10
|
+
this.onDateChange = new EventEmitter();
|
|
11
|
+
this.showDatePicker = false;
|
|
12
|
+
this.showTimePicker = false;
|
|
13
|
+
this.onChange = () => { };
|
|
14
|
+
this.onTouched = () => { };
|
|
15
|
+
}
|
|
16
|
+
ngOnInit() { }
|
|
17
|
+
weeksSelected(count) {
|
|
18
|
+
const now = new Date();
|
|
19
|
+
const nextDate = now.setDate(now.getDate() + count * 7);
|
|
20
|
+
this.value = moment(nextDate).format();
|
|
21
|
+
}
|
|
22
|
+
setDate(date) {
|
|
23
|
+
if (date && date !== '') {
|
|
24
|
+
this.value = moment(date).format();
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
this.value = date;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
setTime(time) {
|
|
31
|
+
if (time && time !== '') {
|
|
32
|
+
this.value = moment(time).format();
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
this.value = time;
|
|
36
|
+
}
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
toggleDatePicker(status) {
|
|
40
|
+
this.showDatePicker = status;
|
|
41
|
+
/*setTimeout(function() {
|
|
42
|
+
let _body = document.getElementById('content-wrapper').getBoundingClientRect(),
|
|
43
|
+
elem = document.getElementById('section-modal-main');
|
|
44
|
+
if (elem) {
|
|
45
|
+
let elemBox = elem.getBoundingClientRect();
|
|
46
|
+
if (elemBox.bottom > _body.bottom) {
|
|
47
|
+
elem.style.bottom = '36px';
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}, 0);*/
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
toggleTimePicker(status) {
|
|
54
|
+
this.showTimePicker = status;
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
get value() {
|
|
58
|
+
return this.modelValue;
|
|
59
|
+
}
|
|
60
|
+
set value(val) {
|
|
61
|
+
this.modelValue = val;
|
|
62
|
+
this.onDateChange.emit(val);
|
|
63
|
+
this.onChange(val);
|
|
64
|
+
this.onTouched();
|
|
65
|
+
}
|
|
66
|
+
registerOnChange(fn) {
|
|
67
|
+
this.onChange = fn;
|
|
68
|
+
}
|
|
69
|
+
registerOnTouched(fn) {
|
|
70
|
+
this.onTouched = fn;
|
|
71
|
+
}
|
|
72
|
+
writeValue(value) {
|
|
73
|
+
if (value instanceof Date) {
|
|
74
|
+
this.value = moment(value).format();
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
this.value = value;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
DateTimePickerComponent.decorators = [
|
|
82
|
+
{ type: Component, args: [{
|
|
83
|
+
selector: 'date-time-picker',
|
|
84
|
+
template: "<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 <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</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 <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</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<date-picker\n *ngIf=\"showDatePicker\"\n [initDate]=\"value\"\n (onSelectDate)=\"setDate($event)\"\n (onDatePickerCancel)=\"toggleDatePicker($event)\"\n></date-picker>\n\n<time-picker\n *ngIf=\"showTimePicker\"\n [initTime]=\"value\"\n [use12Hour]=\"true\"\n (onSelectTime)=\"setTime($event)\"\n (onTimePickerCancel)=\"toggleTimePicker($event)\"\n></time-picker>\n",
|
|
85
|
+
providers: [
|
|
86
|
+
{
|
|
87
|
+
provide: NG_VALUE_ACCESSOR,
|
|
88
|
+
useExisting: forwardRef(() => DateTimePickerComponent),
|
|
89
|
+
multi: true
|
|
90
|
+
}
|
|
91
|
+
],
|
|
92
|
+
styles: ["input[readonly]{background-color:#fff}.up{bottom:100%!important;top:auto!important}.glyphicon{top:1px}"]
|
|
93
|
+
},] }
|
|
94
|
+
];
|
|
95
|
+
DateTimePickerComponent.ctorParameters = () => [];
|
|
96
|
+
DateTimePickerComponent.propDecorators = {
|
|
97
|
+
modelValue: [{ type: Input }],
|
|
98
|
+
showDate: [{ type: Input }],
|
|
99
|
+
showTime: [{ type: Input }],
|
|
100
|
+
showWeeks: [{ type: Input }],
|
|
101
|
+
weeks: [{ type: Input }],
|
|
102
|
+
onDateChange: [{ type: Output }]
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9jb21wb25lbnRzL2RhdGUtdGltZS1waWNrZXIvZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBQ0wsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQWM1QixNQUFNLE9BQU8sdUJBQXVCO0lBWWxDO1FBVlMsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsVUFBSyxHQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzFDLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzlCLGFBQVEsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDekIsY0FBUyxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUVYLENBQUM7SUFFaEIsUUFBUSxLQUFJLENBQUM7SUFFYixhQUFhLENBQUMsS0FBSztRQUNqQixNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsT0FBTyxDQUFDLElBQVM7UUFDZixJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3BDO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsSUFBUztRQUNmLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLEVBQUU7WUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDcEM7YUFBTTtZQUNMLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1NBQ25CO1FBQ0QsT0FBTztJQUNULENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFlO1FBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO1FBQzdCOzs7Ozs7Ozs7a0JBU1U7UUFDVixPQUFPO0lBQ1QsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQWU7UUFDOUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUM7UUFDN0IsT0FBTztJQUNULENBQUM7SUFDRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLEdBQUc7UUFDWCxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztRQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBRTtRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBRTtRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQUs7UUFDZCxJQUFJLEtBQUssWUFBWSxJQUFJLEVBQUU7WUFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDckM7YUFBTTtZQUNMLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQzs7O1lBOUZGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1Qiw2N0ZBQWdEO2dCQUVoRCxTQUFTLEVBQUU7b0JBQ1Q7d0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzt3QkFDdEQsS0FBSyxFQUFFLElBQUk7cUJBQ1o7aUJBQ0Y7O2FBQ0Y7Ozs7eUJBRUUsS0FBSzt1QkFDTCxLQUFLO3VCQUNMLEtBQUs7d0JBQ0wsS0FBSztvQkFDTCxLQUFLOzJCQUNMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uSW5pdCxcbiAgSW5wdXQsXG4gIGZvcndhcmRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgT3V0cHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRlLXRpbWUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtdGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudC5jc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlVGltZVBpY2tlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlVGltZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASW5wdXQoKSBtb2RlbFZhbHVlOiBhbnk7XG4gIEBJbnB1dCgpIHNob3dEYXRlID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1RpbWUgPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd1dlZWtzID0gZmFsc2U7XG4gIEBJbnB1dCgpIHdlZWtzOiBudW1iZXJbXSA9IFsyLCA0LCA2LCA4LCAxMiwgMTYsIDI0XTtcbiAgQE91dHB1dCgpIG9uRGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwdWJsaWMgc2hvd0RhdGVQaWNrZXIgPSBmYWxzZTtcbiAgcHVibGljIHNob3dUaW1lUGlja2VyID0gZmFsc2U7XG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIHdlZWtzU2VsZWN0ZWQoY291bnQpIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IG5leHREYXRlID0gbm93LnNldERhdGUobm93LmdldERhdGUoKSArIGNvdW50ICogNyk7XG4gICAgdGhpcy52YWx1ZSA9IG1vbWVudChuZXh0RGF0ZSkuZm9ybWF0KCk7XG4gIH1cbiAgc2V0RGF0ZShkYXRlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoZGF0ZSAmJiBkYXRlICE9PSAnJykge1xuICAgICAgdGhpcy52YWx1ZSA9IG1vbWVudChkYXRlKS5mb3JtYXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IGRhdGU7XG4gICAgfVxuICB9XG5cbiAgc2V0VGltZSh0aW1lOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGltZSAmJiB0aW1lICE9PSAnJykge1xuICAgICAgdGhpcy52YWx1ZSA9IG1vbWVudCh0aW1lKS5mb3JtYXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IHRpbWU7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIHRvZ2dsZURhdGVQaWNrZXIoc3RhdHVzOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5zaG93RGF0ZVBpY2tlciA9IHN0YXR1cztcbiAgICAvKnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIGxldCBfYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250ZW50LXdyYXBwZXInKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgICAgICBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlY3Rpb24tbW9kYWwtbWFpbicpO1xuICAgICAgICBpZiAoZWxlbSkge1xuICAgICAgICAgIGxldCBlbGVtQm94ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICBpZiAoZWxlbUJveC5ib3R0b20gPiBfYm9keS5ib3R0b20pIHtcbiAgICAgICAgICAgIGVsZW0uc3R5bGUuYm90dG9tID0gJzM2cHgnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSwgMCk7Ki9cbiAgICByZXR1cm47XG4gIH1cblxuICB0b2dnbGVUaW1lUGlja2VyKHN0YXR1czogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2hvd1RpbWVQaWNrZXIgPSBzdGF0dXM7XG4gICAgcmV0dXJuO1xuICB9XG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlbFZhbHVlO1xuICB9XG5cbiAgc2V0IHZhbHVlKHZhbCkge1xuICAgIHRoaXMubW9kZWxWYWx1ZSA9IHZhbDtcbiAgICB0aGlzLm9uRGF0ZUNoYW5nZS5lbWl0KHZhbCk7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWwpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuKSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm4pIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBtb21lbnQodmFsdWUpLmZvcm1hdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* date-time-picker.module
|
|
3
|
+
*/
|
|
4
|
+
import { NgModule } from '@angular/core';
|
|
5
|
+
import { CommonModule } from '@angular/common';
|
|
6
|
+
import { FormsModule } from '@angular/forms';
|
|
7
|
+
import { DatePickerComponent } from './date-picker/date-picker.component';
|
|
8
|
+
import { TimePickerComponent } from './time-picker/time-picker.component';
|
|
9
|
+
import { ModalComponent } from './picker-modal/modal.component';
|
|
10
|
+
import { MomentPipe } from './pipes/moment.pipe';
|
|
11
|
+
import { DateTimePickerComponent } from './date-time-picker.component';
|
|
12
|
+
export class DateTimePickerModule {
|
|
13
|
+
}
|
|
14
|
+
DateTimePickerModule.decorators = [
|
|
15
|
+
{ type: NgModule, args: [{
|
|
16
|
+
imports: [CommonModule, FormsModule],
|
|
17
|
+
declarations: [
|
|
18
|
+
DatePickerComponent,
|
|
19
|
+
TimePickerComponent,
|
|
20
|
+
ModalComponent,
|
|
21
|
+
MomentPipe,
|
|
22
|
+
DateTimePickerComponent
|
|
23
|
+
],
|
|
24
|
+
exports: [
|
|
25
|
+
DatePickerComponent,
|
|
26
|
+
TimePickerComponent,
|
|
27
|
+
ModalComponent,
|
|
28
|
+
MomentPipe,
|
|
29
|
+
DateTimePickerComponent
|
|
30
|
+
],
|
|
31
|
+
providers: []
|
|
32
|
+
},] }
|
|
33
|
+
];
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9jb21wb25lbnRzL2RhdGUtdGltZS1waWNrZXIvZGF0ZS10aW1lLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQW9CdkUsTUFBTSxPQUFPLG9CQUFvQjs7O1lBbEJoQyxRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQztnQkFDcEMsWUFBWSxFQUFFO29CQUNaLG1CQUFtQjtvQkFDbkIsbUJBQW1CO29CQUNuQixjQUFjO29CQUNkLFVBQVU7b0JBQ1YsdUJBQXVCO2lCQUN4QjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsbUJBQW1CO29CQUNuQixtQkFBbUI7b0JBQ25CLGNBQWM7b0JBQ2QsVUFBVTtvQkFDVix1QkFBdUI7aUJBQ3hCO2dCQUNELFNBQVMsRUFBRSxFQUFFO2FBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGRhdGUtdGltZS1waWNrZXIubW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaW1lUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi90aW1lLXBpY2tlci90aW1lLXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL3BpY2tlci1tb2RhbC9tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW9tZW50UGlwZSB9IGZyb20gJy4vcGlwZXMvbW9tZW50LnBpcGUnO1xuaW1wb3J0IHsgRGF0ZVRpbWVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGUtdGltZS1waWNrZXIuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBEYXRlUGlja2VyQ29tcG9uZW50LFxuICAgIFRpbWVQaWNrZXJDb21wb25lbnQsXG4gICAgTW9kYWxDb21wb25lbnQsXG4gICAgTW9tZW50UGlwZSxcbiAgICBEYXRlVGltZVBpY2tlckNvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRGF0ZVBpY2tlckNvbXBvbmVudCxcbiAgICBUaW1lUGlja2VyQ29tcG9uZW50LFxuICAgIE1vZGFsQ29tcG9uZW50LFxuICAgIE1vbWVudFBpcGUsXG4gICAgRGF0ZVRpbWVQaWNrZXJDb21wb25lbnRcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlVGltZVBpY2tlck1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* modal.component
|
|
3
|
+
*/
|
|
4
|
+
import { Component, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
|
|
5
|
+
// const myDpStyles: string = require('./modal.component.css');
|
|
6
|
+
// const myDpTpl: string = require('./modal.component.html');
|
|
7
|
+
// webpack2_
|
|
8
|
+
export class ModalComponent {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.onOverlayClick = new EventEmitter();
|
|
11
|
+
}
|
|
12
|
+
ngOnInit() { }
|
|
13
|
+
closeModal() {
|
|
14
|
+
this.onOverlayClick.emit(false);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
ModalComponent.decorators = [
|
|
18
|
+
{ type: Component, args: [{
|
|
19
|
+
selector: 'picker-modal',
|
|
20
|
+
template: "<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",
|
|
21
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
22
|
+
animations: [],
|
|
23
|
+
styles: [":host{z-index:9999999999}*,:after,:before{box-sizing:border-box}.modal-main{position:absolute;left:19.6%;right:auto;top:auto;z-index:111;background-color:#fff;border:1px solid #d7dad7;border-radius:6px;transform:translate(-50%);box-shadow:0 5px 15px rgba(0,0,0,.3)}"]
|
|
24
|
+
},] }
|
|
25
|
+
];
|
|
26
|
+
ModalComponent.ctorParameters = () => [];
|
|
27
|
+
ModalComponent.propDecorators = {
|
|
28
|
+
onOverlayClick: [{ type: Output }]
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm1lbnRyeS9zcmMvY29tcG9uZW50cy9kYXRlLXRpbWUtcGlja2VyL3BpY2tlci1tb2RhbC9tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFFTixZQUFZLEVBQ1osdUJBQXVCLEVBQ3hCLE1BQU0sZUFBZSxDQUFDO0FBSXZCLCtEQUErRDtBQUMvRCw2REFBNkQ7QUFDN0QsWUFBWTtBQVNaLE1BQU0sT0FBTyxjQUFjO0lBR3pCO1FBRlUsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBRXhDLENBQUM7SUFFaEIsUUFBUSxLQUFJLENBQUM7SUFFYixVQUFVO1FBQ1IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQzs7O1lBaEJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsY0FBYztnQkFDeEIsc09BQXFDO2dCQUVyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsVUFBVSxFQUFFLEVBQUU7O2FBQ2Y7Ozs7NkJBRUUsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogbW9kYWwuY29tcG9uZW50XG4gKi9cblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBPdXRwdXQsXG4gIE9uSW5pdCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLy8gd2VicGFjazFfXG5kZWNsYXJlIGxldCByZXF1aXJlOiBhbnk7XG4vLyBjb25zdCBteURwU3R5bGVzOiBzdHJpbmcgPSByZXF1aXJlKCcuL21vZGFsLmNvbXBvbmVudC5jc3MnKTtcbi8vIGNvbnN0IG15RHBUcGw6IHN0cmluZyA9IHJlcXVpcmUoJy4vbW9kYWwuY29tcG9uZW50Lmh0bWwnKTtcbi8vIHdlYnBhY2syX1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwaWNrZXItbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RhbC5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBhbmltYXRpb25zOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBPdXRwdXQoKSBvbk92ZXJsYXlDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIGNsb3NlTW9kYWwoKSB7XG4gICAgdGhpcy5vbk92ZXJsYXlDbGljay5lbWl0KGZhbHNlKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* moment.pipe
|
|
3
|
+
*/
|
|
4
|
+
import { Pipe } from '@angular/core';
|
|
5
|
+
export class MomentPipe {
|
|
6
|
+
transform(moment, format) {
|
|
7
|
+
return format ? moment.format(format) : moment.format('MMM DD, YYYY');
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
MomentPipe.decorators = [
|
|
11
|
+
{ type: Pipe, args: [{ name: 'moment' },] }
|
|
12
|
+
];
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9tZW50LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9jb21wb25lbnRzL2RhdGUtdGltZS1waWNrZXIvcGlwZXMvbW9tZW50LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUlwRCxNQUFNLE9BQU8sVUFBVTtJQUNyQixTQUFTLENBQUMsTUFBYyxFQUFFLE1BQWU7UUFDdkMsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEUsQ0FBQzs7O1lBSkYsSUFBSSxTQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogbW9tZW50LnBpcGVcbiAqL1xuXG5pbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb21lbnQgfSBmcm9tICdtb21lbnQvbW9tZW50JztcblxuQFBpcGUoeyBuYW1lOiAnbW9tZW50JyB9KVxuZXhwb3J0IGNsYXNzIE1vbWVudFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKG1vbWVudDogTW9tZW50LCBmb3JtYXQ/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBmb3JtYXQgPyBtb21lbnQuZm9ybWF0KGZvcm1hdCkgOiBtb21lbnQuZm9ybWF0KCdNTU0gREQsIFlZWVknKTtcbiAgfVxufVxuIl19
|