@openmrs/ngx-formentry 3.0.1-pre.100
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 +16098 -0
- package/bundles/openmrs-ngx-formentry.umd.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 +28 -0
- package/components/appointments-overview/appointments-overview.component.d.ts +17 -0
- package/components/check-box/checkbox.component.d.ts +19 -0
- package/components/check-box/checkbox.module.d.ts +9 -0
- package/components/custom-component-wrapper/custom-component-wrapper..module.d.ts +9 -0
- package/components/custom-component-wrapper/custom-component-wrapper.component.d.ts +12 -0
- package/components/custom-control-wrapper/custom-control-wrapper..module.d.ts +10 -0
- package/components/custom-control-wrapper/custom-control-wrapper.component.d.ts +28 -0
- package/components/date-time-picker/date-picker/date-picker.component.d.ts +45 -0
- package/components/date-time-picker/date-time-picker.component.d.ts +28 -0
- package/components/date-time-picker/date-time-picker.module.d.ts +13 -0
- package/components/date-time-picker/index.d.ts +8 -0
- package/components/date-time-picker/picker-modal/modal.component.d.ts +12 -0
- package/components/date-time-picker/pipes/moment.pipe.d.ts +11 -0
- package/components/date-time-picker/time-picker/time-picker.component.d.ts +32 -0
- package/components/file-upload/file-upload.component.d.ts +29 -0
- package/components/file-upload/file-upload.module.d.ts +12 -0
- package/components/file-upload/secure.pipe.d.ts +26 -0
- package/components/input/input.directive.d.ts +31 -0
- package/components/input/input.module.d.ts +11 -0
- package/components/input/label.component.d.ts +90 -0
- package/components/input/text-area.directive.d.ts +24 -0
- package/components/ngx-datetime-picker/ngx-datetime-picker.component.d.ts +21 -0
- package/components/ngx-datetime-picker/ngx-datetime-picker.module.d.ts +11 -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 +12 -0
- package/components/ngx-pick-datetime/lib/date-time/calendar-body.component.d.ts +76 -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 +108 -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 +137 -0
- package/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.d.ts +92 -0
- package/components/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.d.ts +121 -0
- package/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.d.ts +149 -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 +20 -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 +156 -0
- package/components/ngx-pick-datetime/lib/date-time/date-time.class.d.ts +89 -0
- package/components/ngx-pick-datetime/lib/date-time/date-time.module.d.ts +23 -0
- package/components/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.d.ts +10 -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 +128 -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 +58 -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 +11 -0
- package/components/ngx-pick-datetime/lib/dialog/dialog.service.d.ts +73 -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 +40 -0
- package/components/ngx-remote-select/ngx-remote-select.module.d.ts +10 -0
- package/components/ngx-tabset/components/ngx-tab-set.component.d.ts +19 -0
- package/components/ngx-tabset/components/tab.component.d.ts +13 -0
- package/components/ngx-tabset/directives/hover-class.directive.d.ts +11 -0
- package/components/ngx-tabset/modules/ngx-tabset.module.d.ts +19 -0
- package/components/number-input/number-input.component.d.ts +151 -0
- package/components/number-input/number-input.module.d.ts +9 -0
- package/components/radio-button/radio.component.d.ts +22 -0
- package/components/radio-button/radio.module.d.ts +9 -0
- package/components/select/optgroup.directive.d.ts +6 -0
- package/components/select/option.directive.d.ts +6 -0
- package/components/select/select.component.d.ts +115 -0
- package/components/select/select.module.d.ts +11 -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 +101 -0
- package/esm2015/components/appointments-overview/appointments-overview.component.js +121 -0
- package/esm2015/components/check-box/checkbox.component.js +90 -0
- package/esm2015/components/check-box/checkbox.module.js +19 -0
- package/esm2015/components/custom-component-wrapper/custom-component-wrapper..module.js +21 -0
- package/esm2015/components/custom-component-wrapper/custom-component-wrapper.component.js +23 -0
- package/esm2015/components/custom-control-wrapper/custom-control-wrapper..module.js +22 -0
- package/esm2015/components/custom-control-wrapper/custom-control-wrapper.component.js +73 -0
- package/esm2015/components/date-time-picker/date-picker/date-picker.component.js +192 -0
- package/esm2015/components/date-time-picker/date-time-picker.component.js +119 -0
- package/esm2015/components/date-time-picker/date-time-picker.module.js +47 -0
- package/esm2015/components/date-time-picker/index.js +9 -0
- package/esm2015/components/date-time-picker/picker-modal/modal.component.js +31 -0
- package/esm2015/components/date-time-picker/pipes/moment.pipe.js +17 -0
- package/esm2015/components/date-time-picker/time-picker/time-picker.component.js +125 -0
- package/esm2015/components/file-upload/file-upload.component.js +122 -0
- package/esm2015/components/file-upload/file-upload.module.js +39 -0
- package/esm2015/components/file-upload/secure.pipe.js +101 -0
- package/esm2015/components/input/input.directive.js +78 -0
- package/esm2015/components/input/input.module.js +23 -0
- package/esm2015/components/input/label.component.js +263 -0
- package/esm2015/components/input/text-area.directive.js +54 -0
- package/esm2015/components/ngx-datetime-picker/ngx-datetime-picker.component.js +80 -0
- package/esm2015/components/ngx-datetime-picker/ngx-datetime-picker.module.js +38 -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 +347 -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 +39 -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 +445 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.js +378 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.js +373 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar.component.js +348 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.js +265 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.js +399 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.js +614 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-intl.service.js +62 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.js +70 -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 +528 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time.class.js +166 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time.module.js +83 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.js +28 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/timer-box.component.js +96 -0
- package/esm2015/components/ngx-pick-datetime/lib/date-time/timer.component.js +298 -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 +247 -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 +27 -0
- package/esm2015/components/ngx-pick-datetime/lib/dialog/dialog.service.js +233 -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 +135 -0
- package/esm2015/components/ngx-remote-select/ngx-remote-select.module.js +21 -0
- package/esm2015/components/ngx-tabset/components/ngx-tab-set.component.js +76 -0
- package/esm2015/components/ngx-tabset/components/tab.component.js +37 -0
- package/esm2015/components/ngx-tabset/directives/hover-class.directive.js +30 -0
- package/esm2015/components/ngx-tabset/modules/ngx-tabset.module.js +38 -0
- package/esm2015/components/number-input/number-input.component.js +233 -0
- package/esm2015/components/number-input/number-input.module.js +20 -0
- package/esm2015/components/radio-button/radio.component.js +87 -0
- package/esm2015/components/radio-button/radio.module.js +19 -0
- package/esm2015/components/select/optgroup.directive.js +19 -0
- package/esm2015/components/select/option.directive.js +19 -0
- package/esm2015/components/select/select.component.js +187 -0
- package/esm2015/components/select/select.module.js +23 -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 +32 -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 +172 -0
- package/esm2015/form-entry/directives/historical-value.directive.js +67 -0
- package/esm2015/form-entry/error-renderer/error-renderer.component.js +56 -0
- package/esm2015/form-entry/expression-runner/expression-runner.js +170 -0
- package/esm2015/form-entry/form-entry.module.js +187 -0
- package/esm2015/form-entry/form-factory/control-relations.factory.js +238 -0
- package/esm2015/form-entry/form-factory/form-control.service.js +119 -0
- package/esm2015/form-entry/form-factory/form-node.js +96 -0
- package/esm2015/form-entry/form-factory/form.factory.js +141 -0
- package/esm2015/form-entry/form-factory/form.js +189 -0
- package/esm2015/form-entry/form-factory/hiders-disablers.factory.js +67 -0
- package/esm2015/form-entry/form-factory/question.factory.js +942 -0
- package/esm2015/form-entry/form-factory/show-messages.factory.js +31 -0
- package/esm2015/form-entry/form-factory/validation.factory.js +147 -0
- package/esm2015/form-entry/form-renderer/form-renderer.component.js +268 -0
- package/esm2015/form-entry/helpers/historical-expression-helper-service.js +42 -0
- package/esm2015/form-entry/helpers/historical-field-helper-service.js +39 -0
- package/esm2015/form-entry/helpers/js-expression-helper.js +269 -0
- package/esm2015/form-entry/helpers/risk-dataset-table.js +247 -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/radio-button-options.js +2 -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 +13 -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 +26 -0
- package/esm2015/form-entry/question-models/radio-button.model.js +12 -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 +24 -0
- package/esm2015/form-entry/services/form-errors.service.js +21 -0
- package/esm2015/form-entry/services/form-schema-compiler.service.js +248 -0
- package/esm2015/form-entry/services/historical-encounter-data.service.js +172 -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 +171 -0
- package/esm2015/form-entry/value-adapters/obs-adapter-helper.js +512 -0
- package/esm2015/form-entry/value-adapters/obs.adapter.js +542 -0
- package/esm2015/form-entry/value-adapters/order.adapter.js +186 -0
- package/esm2015/form-entry/value-adapters/person-attribute.adapter.js +88 -0
- package/esm2015/form-entry/value-adapters/value.adapter.js +2 -0
- package/esm2015/lib/index.js +58 -0
- package/esm2015/openmrs-ngx-formentry.js +5 -0
- package/esm2015/public_api.js +2 -0
- package/esm2015/shared.module.js +21 -0
- package/fesm2015/openmrs-ngx-formentry.js +14317 -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 +10 -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 +45 -0
- package/form-entry/directives/historical-value.directive.d.ts +16 -0
- package/form-entry/error-renderer/error-renderer.component.d.ts +18 -0
- package/form-entry/expression-runner/expression-runner.d.ts +18 -0
- package/form-entry/form-entry.module.d.ts +30 -0
- package/form-entry/form-factory/control-relations.factory.d.ts +18 -0
- package/form-entry/form-factory/form-control.service.d.ts +25 -0
- package/form-entry/form-factory/form-node.d.ts +52 -0
- package/form-entry/form-factory/form.d.ts +28 -0
- package/form-entry/form-factory/form.factory.d.ts +27 -0
- package/form-entry/form-factory/hiders-disablers.factory.d.ts +20 -0
- package/form-entry/form-factory/question.factory.d.ts +62 -0
- package/form-entry/form-factory/show-messages.factory.d.ts +15 -0
- package/form-entry/form-factory/validation.factory.d.ts +25 -0
- package/form-entry/form-renderer/form-renderer.component.d.ts +63 -0
- package/form-entry/helpers/historical-expression-helper-service.d.ts +8 -0
- package/form-entry/helpers/historical-field-helper-service.d.ts +7 -0
- package/form-entry/helpers/js-expression-helper.d.ts +29 -0
- package/form-entry/helpers/risk-dataset-table.d.ts +1 -0
- package/form-entry/pipes/time-ago.pipe.d.ts +14 -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 +30 -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/radio-button-options.d.ts +8 -0
- package/form-entry/question-models/interfaces/repeating-question-options.d.ts +7 -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 +16 -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 +45 -0
- package/form-entry/question-models/radio-button.model.d.ts +7 -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 +8 -0
- package/form-entry/services/form-errors.service.d.ts +13 -0
- package/form-entry/services/form-schema-compiler.service.d.ts +23 -0
- package/form-entry/services/historical-encounter-data.service.d.ts +15 -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 +26 -0
- package/form-entry/value-adapters/obs-adapter-helper.d.ts +34 -0
- package/form-entry/value-adapters/obs.adapter.d.ts +38 -0
- package/form-entry/value-adapters/order.adapter.d.ts +20 -0
- package/form-entry/value-adapters/person-attribute.adapter.d.ts +15 -0
- package/form-entry/value-adapters/value.adapter.d.ts +5 -0
- package/lib/index.d.ts +58 -0
- package/openmrs-ngx-formentry.d.ts +5 -0
- package/package.json +34 -0
- package/public_api.d.ts +1 -0
- package/shared.module.d.ts +9 -0
- package/styles/ngx-formentry.css +374 -0
- package/styles/picker.min.css +770 -0
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* dialog.service
|
|
3
|
+
*/
|
|
4
|
+
import { Inject, Injectable, InjectionToken, Injector, Optional, SkipSelf, TemplateRef } from '@angular/core';
|
|
5
|
+
import { Location } from '@angular/common';
|
|
6
|
+
import { OwlDialogConfig } from './dialog-config.class';
|
|
7
|
+
import { OwlDialogRef } from './dialog-ref.class';
|
|
8
|
+
import { OwlDialogContainerComponent } from './dialog-container.component';
|
|
9
|
+
import { extendObject } from '../utils';
|
|
10
|
+
import { defer, Subject } from 'rxjs';
|
|
11
|
+
import { startWith } from 'rxjs/operators';
|
|
12
|
+
import { Overlay, OverlayConfig, OverlayContainer } from '@angular/cdk/overlay';
|
|
13
|
+
import { ComponentPortal, PortalInjector } from '@angular/cdk/portal';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
import * as i1 from "@angular/cdk/overlay";
|
|
16
|
+
import * as i2 from "@angular/common";
|
|
17
|
+
import * as i3 from "./dialog-config.class";
|
|
18
|
+
export const OWL_DIALOG_DATA = new InjectionToken('OwlDialogData');
|
|
19
|
+
/**
|
|
20
|
+
* Injection token that determines the scroll handling while the dialog is open.
|
|
21
|
+
* */
|
|
22
|
+
export const OWL_DIALOG_SCROLL_STRATEGY = new InjectionToken('owl-dialog-scroll-strategy');
|
|
23
|
+
export function OWL_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {
|
|
24
|
+
const fn = () => overlay.scrollStrategies.block();
|
|
25
|
+
return fn;
|
|
26
|
+
}
|
|
27
|
+
/** @docs-private */
|
|
28
|
+
export const OWL_DIALOG_SCROLL_STRATEGY_PROVIDER = {
|
|
29
|
+
provide: OWL_DIALOG_SCROLL_STRATEGY,
|
|
30
|
+
deps: [Overlay],
|
|
31
|
+
useFactory: OWL_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY
|
|
32
|
+
};
|
|
33
|
+
/** I
|
|
34
|
+
* njection token that can be used to specify default dialog options.
|
|
35
|
+
* */
|
|
36
|
+
export const OWL_DIALOG_DEFAULT_OPTIONS = new InjectionToken('owl-dialog-default-options');
|
|
37
|
+
export class OwlDialogService {
|
|
38
|
+
constructor(overlay, injector, location, scrollStrategy, defaultOptions, parentDialog, overlayContainer) {
|
|
39
|
+
this.overlay = overlay;
|
|
40
|
+
this.injector = injector;
|
|
41
|
+
this.location = location;
|
|
42
|
+
this.defaultOptions = defaultOptions;
|
|
43
|
+
this.parentDialog = parentDialog;
|
|
44
|
+
this.overlayContainer = overlayContainer;
|
|
45
|
+
this.ariaHiddenElements = new Map();
|
|
46
|
+
this._openDialogsAtThisLevel = [];
|
|
47
|
+
this._afterOpenAtThisLevel = new Subject();
|
|
48
|
+
this._afterAllClosedAtThisLevel = new Subject();
|
|
49
|
+
/**
|
|
50
|
+
* Stream that emits when all open dialog have finished closing.
|
|
51
|
+
* Will emit on subscribe if there are no open dialogs to begin with.
|
|
52
|
+
*/
|
|
53
|
+
this.afterAllClosed = defer(() => this._openDialogsAtThisLevel.length
|
|
54
|
+
? this._afterAllClosed
|
|
55
|
+
: this._afterAllClosed.pipe(startWith(undefined)));
|
|
56
|
+
this.scrollStrategy = scrollStrategy;
|
|
57
|
+
if (!parentDialog && location) {
|
|
58
|
+
location.subscribe(() => this.closeAll());
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/** Keeps track of the currently-open dialogs. */
|
|
62
|
+
get openDialogs() {
|
|
63
|
+
return this.parentDialog
|
|
64
|
+
? this.parentDialog.openDialogs
|
|
65
|
+
: this._openDialogsAtThisLevel;
|
|
66
|
+
}
|
|
67
|
+
/** Stream that emits when a dialog has been opened. */
|
|
68
|
+
get afterOpen() {
|
|
69
|
+
return this.parentDialog
|
|
70
|
+
? this.parentDialog.afterOpen
|
|
71
|
+
: this._afterOpenAtThisLevel;
|
|
72
|
+
}
|
|
73
|
+
get _afterAllClosed() {
|
|
74
|
+
const parent = this.parentDialog;
|
|
75
|
+
return parent ? parent._afterAllClosed : this._afterAllClosedAtThisLevel;
|
|
76
|
+
}
|
|
77
|
+
open(componentOrTemplateRef, config) {
|
|
78
|
+
config = applyConfigDefaults(config, this.defaultOptions);
|
|
79
|
+
if (config.id && this.getDialogById(config.id)) {
|
|
80
|
+
throw Error(`Dialog with id "${config.id}" exists already. The dialog id must be unique.`);
|
|
81
|
+
}
|
|
82
|
+
const overlayRef = this.createOverlay(config);
|
|
83
|
+
const dialogContainer = this.attachDialogContainer(overlayRef, config);
|
|
84
|
+
const dialogRef = this.attachDialogContent(componentOrTemplateRef, dialogContainer, overlayRef, config);
|
|
85
|
+
if (!this.openDialogs.length) {
|
|
86
|
+
this.hideNonDialogContentFromAssistiveTechnology();
|
|
87
|
+
}
|
|
88
|
+
this.openDialogs.push(dialogRef);
|
|
89
|
+
dialogRef.afterClosed().subscribe(() => this.removeOpenDialog(dialogRef));
|
|
90
|
+
this.afterOpen.next(dialogRef);
|
|
91
|
+
return dialogRef;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Closes all of the currently-open dialogs.
|
|
95
|
+
*/
|
|
96
|
+
closeAll() {
|
|
97
|
+
let i = this.openDialogs.length;
|
|
98
|
+
while (i--) {
|
|
99
|
+
this.openDialogs[i].close();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Finds an open dialog by its id.
|
|
104
|
+
* @param id ID to use when looking up the dialog.
|
|
105
|
+
*/
|
|
106
|
+
getDialogById(id) {
|
|
107
|
+
return this.openDialogs.find((dialog) => dialog.id === id);
|
|
108
|
+
}
|
|
109
|
+
attachDialogContent(componentOrTemplateRef, dialogContainer, overlayRef, config) {
|
|
110
|
+
const dialogRef = new OwlDialogRef(overlayRef, dialogContainer, config.id, this.location);
|
|
111
|
+
if (config.hasBackdrop) {
|
|
112
|
+
overlayRef.backdropClick().subscribe(() => {
|
|
113
|
+
if (!dialogRef.disableClose) {
|
|
114
|
+
dialogRef.close();
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
if (componentOrTemplateRef instanceof TemplateRef) {
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
const injector = this.createInjector(config, dialogRef, dialogContainer);
|
|
122
|
+
const contentRef = dialogContainer.attachComponentPortal(new ComponentPortal(componentOrTemplateRef, undefined, injector));
|
|
123
|
+
dialogRef.componentInstance = contentRef.instance;
|
|
124
|
+
}
|
|
125
|
+
dialogRef
|
|
126
|
+
.updateSize(config.width, config.height)
|
|
127
|
+
.updatePosition(config.position);
|
|
128
|
+
return dialogRef;
|
|
129
|
+
}
|
|
130
|
+
createInjector(config, dialogRef, dialogContainer) {
|
|
131
|
+
const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;
|
|
132
|
+
const injectionTokens = new WeakMap();
|
|
133
|
+
injectionTokens.set(OwlDialogRef, dialogRef);
|
|
134
|
+
injectionTokens.set(OwlDialogContainerComponent, dialogContainer);
|
|
135
|
+
injectionTokens.set(OWL_DIALOG_DATA, config.data);
|
|
136
|
+
return new PortalInjector(userInjector || this.injector, injectionTokens);
|
|
137
|
+
}
|
|
138
|
+
createOverlay(config) {
|
|
139
|
+
const overlayConfig = this.getOverlayConfig(config);
|
|
140
|
+
return this.overlay.create(overlayConfig);
|
|
141
|
+
}
|
|
142
|
+
attachDialogContainer(overlayRef, config) {
|
|
143
|
+
const containerPortal = new ComponentPortal(OwlDialogContainerComponent, config.viewContainerRef);
|
|
144
|
+
const containerRef = overlayRef.attach(containerPortal);
|
|
145
|
+
containerRef.instance.setConfig(config);
|
|
146
|
+
return containerRef.instance;
|
|
147
|
+
}
|
|
148
|
+
getOverlayConfig(dialogConfig) {
|
|
149
|
+
const state = new OverlayConfig({
|
|
150
|
+
positionStrategy: this.overlay.position().global(),
|
|
151
|
+
scrollStrategy: dialogConfig.scrollStrategy || this.scrollStrategy(),
|
|
152
|
+
panelClass: dialogConfig.paneClass,
|
|
153
|
+
hasBackdrop: dialogConfig.hasBackdrop,
|
|
154
|
+
minWidth: dialogConfig.minWidth,
|
|
155
|
+
minHeight: dialogConfig.minHeight,
|
|
156
|
+
maxWidth: dialogConfig.maxWidth,
|
|
157
|
+
maxHeight: dialogConfig.maxHeight
|
|
158
|
+
});
|
|
159
|
+
if (dialogConfig.backdropClass) {
|
|
160
|
+
state.backdropClass = dialogConfig.backdropClass;
|
|
161
|
+
}
|
|
162
|
+
return state;
|
|
163
|
+
}
|
|
164
|
+
removeOpenDialog(dialogRef) {
|
|
165
|
+
const index = this._openDialogsAtThisLevel.indexOf(dialogRef);
|
|
166
|
+
if (index > -1) {
|
|
167
|
+
this.openDialogs.splice(index, 1);
|
|
168
|
+
// If all the dialogs were closed, remove/restore the `aria-hidden`
|
|
169
|
+
// to a the siblings and emit to the `afterAllClosed` stream.
|
|
170
|
+
if (!this.openDialogs.length) {
|
|
171
|
+
this.ariaHiddenElements.forEach((previousValue, element) => {
|
|
172
|
+
if (previousValue) {
|
|
173
|
+
element.setAttribute('aria-hidden', previousValue);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
element.removeAttribute('aria-hidden');
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
this.ariaHiddenElements.clear();
|
|
180
|
+
this._afterAllClosed.next();
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Hides all of the content that isn't an overlay from assistive technology.
|
|
186
|
+
*/
|
|
187
|
+
hideNonDialogContentFromAssistiveTechnology() {
|
|
188
|
+
const overlayContainer = this.overlayContainer.getContainerElement();
|
|
189
|
+
// Ensure that the overlay container is attached to the DOM.
|
|
190
|
+
if (overlayContainer.parentElement) {
|
|
191
|
+
const siblings = overlayContainer.parentElement.children;
|
|
192
|
+
for (let i = siblings.length - 1; i > -1; i--) {
|
|
193
|
+
const sibling = siblings[i];
|
|
194
|
+
if (sibling !== overlayContainer &&
|
|
195
|
+
sibling.nodeName !== 'SCRIPT' &&
|
|
196
|
+
sibling.nodeName !== 'STYLE' &&
|
|
197
|
+
!sibling.hasAttribute('aria-live')) {
|
|
198
|
+
this.ariaHiddenElements.set(sibling, sibling.getAttribute('aria-hidden'));
|
|
199
|
+
sibling.setAttribute('aria-hidden', 'true');
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
OwlDialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: OwlDialogService, deps: [{ token: i1.Overlay }, { token: i0.Injector }, { token: i2.Location, optional: true }, { token: OWL_DIALOG_SCROLL_STRATEGY }, { token: OWL_DIALOG_DEFAULT_OPTIONS, optional: true }, { token: OwlDialogService, optional: true, skipSelf: true }, { token: i1.OverlayContainer }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
206
|
+
OwlDialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: OwlDialogService });
|
|
207
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: OwlDialogService, decorators: [{
|
|
208
|
+
type: Injectable
|
|
209
|
+
}], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i0.Injector }, { type: i2.Location, decorators: [{
|
|
210
|
+
type: Optional
|
|
211
|
+
}] }, { type: undefined, decorators: [{
|
|
212
|
+
type: Inject,
|
|
213
|
+
args: [OWL_DIALOG_SCROLL_STRATEGY]
|
|
214
|
+
}] }, { type: i3.OwlDialogConfig, decorators: [{
|
|
215
|
+
type: Optional
|
|
216
|
+
}, {
|
|
217
|
+
type: Inject,
|
|
218
|
+
args: [OWL_DIALOG_DEFAULT_OPTIONS]
|
|
219
|
+
}] }, { type: OwlDialogService, decorators: [{
|
|
220
|
+
type: Optional
|
|
221
|
+
}, {
|
|
222
|
+
type: SkipSelf
|
|
223
|
+
}] }, { type: i1.OverlayContainer }]; } });
|
|
224
|
+
/**
|
|
225
|
+
* Applies default options to the dialog config.
|
|
226
|
+
* @param config Config to be modified.
|
|
227
|
+
* @param defaultOptions Default config setting
|
|
228
|
+
* @returns The new configuration object.
|
|
229
|
+
*/
|
|
230
|
+
function applyConfigDefaults(config, defaultOptions) {
|
|
231
|
+
return extendObject(new OwlDialogConfig(), config, defaultOptions);
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9jb21wb25lbnRzL25neC1waWNrLWRhdGV0aW1lL2xpYi9kaWFsb2cvZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBRUwsTUFBTSxFQUNOLFVBQVUsRUFDVixjQUFjLEVBQ2QsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsV0FBVyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEMsT0FBTyxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxPQUFPLEVBQ1AsYUFBYSxFQUNiLGdCQUFnQixFQUdqQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDTCxlQUFlLEVBRWYsY0FBYyxFQUNmLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBRTdCLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FBTSxlQUFlLENBQUMsQ0FBQztBQUV4RTs7S0FFSztBQUNMLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLElBQUksY0FBYyxDQUUxRCw0QkFBNEIsQ0FBQyxDQUFDO0FBRWhDLE1BQU0sVUFBVSwyQ0FB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KiBkaWFsb2cuc2VydmljZVxuICovXG5cbmltcG9ydCB7XG4gIENvbXBvbmVudFJlZixcbiAgSW5qZWN0LFxuICBJbmplY3RhYmxlLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5qZWN0b3IsXG4gIE9wdGlvbmFsLFxuICBTa2lwU2VsZixcbiAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBPd2xEaWFsb2dDb25maWcgfSBmcm9tICcuL2RpYWxvZy1jb25maWcuY2xhc3MnO1xuaW1wb3J0IHsgT3dsRGlhbG9nUmVmIH0gZnJvbSAnLi9kaWFsb2ctcmVmLmNsYXNzJztcbmltcG9ydCB7IE93bERpYWxvZ0NvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vZGlhbG9nLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgZXh0ZW5kT2JqZWN0IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgZGVmZXIsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIE92ZXJsYXksXG4gIE92ZXJsYXlDb25maWcsXG4gIE92ZXJsYXlDb250YWluZXIsXG4gIE92ZXJsYXlSZWYsXG4gIFNjcm9sbFN0cmF0ZWd5XG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7XG4gIENvbXBvbmVudFBvcnRhbCxcbiAgQ29tcG9uZW50VHlwZSxcbiAgUG9ydGFsSW5qZWN0b3Jcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5cbmV4cG9ydCBjb25zdCBPV0xfRElBTE9HX0RBVEEgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55PignT3dsRGlhbG9nRGF0YScpO1xuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiB0aGF0IGRldGVybWluZXMgdGhlIHNjcm9sbCBoYW5kbGluZyB3aGlsZSB0aGUgZGlhbG9nIGlzIG9wZW4uXG4gKiAqL1xuZXhwb3J0IGNvbnN0IE9XTF9ESUFMT0dfU0NST0xMX1NUUkFURUdZID0gbmV3IEluamVjdGlvblRva2VuPFxuICAoKSA9PiBTY3JvbGxTdHJhdGVneVxuPignb3dsLWRpYWxvZy1zY3JvbGwtc3RyYXRlZ3knKTtcblxuZXhwb3J0IGZ1bmN0aW9uIE9XTF9ESUFMT0dfU0NST0xMX1NUUkFURUdZX1BST1ZJREVSX0ZBQ1RPUlkoXG4gIG92ZXJsYXk6IE92ZXJsYXlcbik6ICgpID0+IFNjcm9sbFN0cmF0ZWd5IHtcbiAgY29uc3QgZm4gPSAoKSA9PiBvdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKTtcbiAgcmV0dXJuIGZuO1xufVxuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGNvbnN0IE9XTF9ESUFMT0dfU0NST0xMX1NUUkFURUdZX1BST1ZJREVSID0ge1xuICBwcm92aWRlOiBPV0xfRElBTE9HX1NDUk9MTF9TVFJBVEVHWSxcbiAgZGVwczogW092ZXJsYXldLFxuICB1c2VGYWN0b3J5OiBPV0xfRElBTE9HX1NDUk9MTF9TVFJBVEVHWV9QUk9WSURFUl9GQUNUT1JZXG59O1xuXG4vKiogSVxuICogbmplY3Rpb24gdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGRlZmF1bHQgZGlhbG9nIG9wdGlvbnMuXG4gKiAqL1xuZXhwb3J0IGNvbnN0IE9XTF9ESUFMT0dfREVGQVVMVF9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuPE93bERpYWxvZ0NvbmZpZz4oXG4gICdvd2wtZGlhbG9nLWRlZmF1bHQtb3B0aW9ucydcbik7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBPd2xEaWFsb2dTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBhcmlhSGlkZGVuRWxlbWVudHMgPSBuZXcgTWFwPEVsZW1lbnQsIHN0cmluZyB8IG51bGw+KCk7XG5cbiAgcHJpdmF0ZSBfb3BlbkRpYWxvZ3NBdFRoaXNMZXZlbDogT3dsRGlhbG9nUmVmPGFueT5bXSA9IFtdO1xuICBwcml2YXRlIF9hZnRlck9wZW5BdFRoaXNMZXZlbCA9IG5ldyBTdWJqZWN0PE93bERpYWxvZ1JlZjxhbnk+PigpO1xuICBwcml2YXRlIF9hZnRlckFsbENsb3NlZEF0VGhpc0xldmVsID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKiogS2VlcHMgdHJhY2sgb2YgdGhlIGN1cnJlbnRseS1vcGVuIGRpYWxvZ3MuICovXG4gIGdldCBvcGVuRGlhbG9ncygpOiBPd2xEaWFsb2dSZWY8YW55PltdIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnREaWFsb2dcbiAgICAgID8gdGhpcy5wYXJlbnREaWFsb2cub3BlbkRpYWxvZ3NcbiAgICAgIDogdGhpcy5fb3BlbkRpYWxvZ3NBdFRoaXNMZXZlbDtcbiAgfVxuXG4gIC8qKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuIGEgZGlhbG9nIGhhcyBiZWVuIG9wZW5lZC4gKi9cbiAgZ2V0IGFmdGVyT3BlbigpOiBTdWJqZWN0PE93bERpYWxvZ1JlZjxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50RGlhbG9nXG4gICAgICA/IHRoaXMucGFyZW50RGlhbG9nLmFmdGVyT3BlblxuICAgICAgOiB0aGlzLl9hZnRlck9wZW5BdFRoaXNMZXZlbDtcbiAgfVxuXG4gIGdldCBfYWZ0ZXJBbGxDbG9zZWQoKTogYW55IHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnBhcmVudERpYWxvZztcbiAgICByZXR1cm4gcGFyZW50ID8gcGFyZW50Ll9hZnRlckFsbENsb3NlZCA6IHRoaXMuX2FmdGVyQWxsQ2xvc2VkQXRUaGlzTGV2ZWw7XG4gIH1cblxuICAvKipcbiAgICogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbiBhbGwgb3BlbiBkaWFsb2cgaGF2ZSBmaW5pc2hlZCBjbG9zaW5nLlxuICAgKiBXaWxsIGVtaXQgb24gc3Vic2NyaWJlIGlmIHRoZXJlIGFyZSBubyBvcGVuIGRpYWxvZ3MgdG8gYmVnaW4gd2l0aC5cbiAgICovXG5cbiAgYWZ0ZXJBbGxDbG9zZWQ6IE9ic2VydmFibGU8e30+ID0gZGVmZXIoKCkgPT5cbiAgICB0aGlzLl9vcGVuRGlhbG9nc0F0VGhpc0xldmVsLmxlbmd0aFxuICAgICAgPyB0aGlzLl9hZnRlckFsbENsb3NlZFxuICAgICAgOiB0aGlzLl9hZnRlckFsbENsb3NlZC5waXBlKHN0YXJ0V2l0aCh1bmRlZmluZWQpKVxuICApO1xuXG4gIHByaXZhdGUgc2Nyb2xsU3RyYXRlZ3k6ICgpID0+IFNjcm9sbFN0cmF0ZWd5O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBASW5qZWN0KE9XTF9ESUFMT0dfU0NST0xMX1NUUkFURUdZKSBzY3JvbGxTdHJhdGVneTogYW55LFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChPV0xfRElBTE9HX0RFRkFVTFRfT1BUSU9OUylcbiAgICBwcml2YXRlIGRlZmF1bHRPcHRpb25zOiBPd2xEaWFsb2dDb25maWcsXG4gICAgQE9wdGlvbmFsKClcbiAgICBAU2tpcFNlbGYoKVxuICAgIHByaXZhdGUgcGFyZW50RGlhbG9nOiBPd2xEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3ZlcmxheUNvbnRhaW5lcjogT3ZlcmxheUNvbnRhaW5lclxuICApIHtcbiAgICB0aGlzLnNjcm9sbFN0cmF0ZWd5ID0gc2Nyb2xsU3RyYXRlZ3k7XG4gICAgaWYgKCFwYXJlbnREaWFsb2cgJiYgbG9jYXRpb24pIHtcbiAgICAgIGxvY2F0aW9uLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlQWxsKCkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvcGVuPFQ+KFxuICAgIGNvbXBvbmVudE9yVGVtcGxhdGVSZWY6IENvbXBvbmVudFR5cGU8VD4gfCBUZW1wbGF0ZVJlZjxUPixcbiAgICBjb25maWc/OiBPd2xEaWFsb2dDb25maWdcbiAgKTogT3dsRGlhbG9nUmVmPGFueT4ge1xuICAgIGNvbmZpZyA9IGFwcGx5Q29uZmlnRGVmYXVsdHMoY29uZmlnLCB0aGlzLmRlZmF1bHRPcHRpb25zKTtcblxuICAgIGlmIChjb25maWcuaWQgJiYgdGhpcy5nZXREaWFsb2dCeUlkKGNvbmZpZy5pZCkpIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICBgRGlhbG9nIHdpdGggaWQgXCIke2NvbmZpZy5pZH1cIiBleGlzdHMgYWxyZWFkeS4gVGhlIGRpYWxvZyBpZCBtdXN0IGJlIHVuaXF1ZS5gXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IG92ZXJsYXlSZWYgPSB0aGlzLmNyZWF0ZU92ZXJsYXkoY29uZmlnKTtcbiAgICBjb25zdCBkaWFsb2dDb250YWluZXIgPSB0aGlzLmF0dGFjaERpYWxvZ0NvbnRhaW5lcihvdmVybGF5UmVmLCBjb25maWcpO1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuYXR0YWNoRGlhbG9nQ29udGVudDxUPihcbiAgICAgIGNvbXBvbmVudE9yVGVtcGxhdGVSZWYsXG4gICAgICBkaWFsb2dDb250YWluZXIsXG4gICAgICBvdmVybGF5UmVmLFxuICAgICAgY29uZmlnXG4gICAgKTtcblxuICAgIGlmICghdGhpcy5vcGVuRGlhbG9ncy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuaGlkZU5vbkRpYWxvZ0NvbnRlbnRGcm9tQXNzaXN0aXZlVGVjaG5vbG9neSgpO1xuICAgIH1cblxuICAgIHRoaXMub3BlbkRpYWxvZ3MucHVzaChkaWFsb2dSZWYpO1xuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnJlbW92ZU9wZW5EaWFsb2coZGlhbG9nUmVmKSk7XG4gICAgdGhpcy5hZnRlck9wZW4ubmV4dChkaWFsb2dSZWYpO1xuICAgIHJldHVybiBkaWFsb2dSZWY7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIGFsbCBvZiB0aGUgY3VycmVudGx5LW9wZW4gZGlhbG9ncy5cbiAgICovXG4gIHB1YmxpYyBjbG9zZUFsbCgpOiB2b2lkIHtcbiAgICBsZXQgaSA9IHRoaXMub3BlbkRpYWxvZ3MubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdGhpcy5vcGVuRGlhbG9nc1tpXS5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyBhbiBvcGVuIGRpYWxvZyBieSBpdHMgaWQuXG4gICAqIEBwYXJhbSBpZCBJRCB0byB1c2Ugd2hlbiBsb29raW5nIHVwIHRoZSBkaWFsb2cuXG4gICAqL1xuICBwdWJsaWMgZ2V0RGlhbG9nQnlJZChpZDogc3RyaW5nKTogT3dsRGlhbG9nUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm9wZW5EaWFsb2dzLmZpbmQoKGRpYWxvZykgPT4gZGlhbG9nLmlkID09PSBpZCk7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaERpYWxvZ0NvbnRlbnQ8VD4oXG4gICAgY29tcG9uZW50T3JUZW1wbGF0ZVJlZjogQ29tcG9uZW50VHlwZTxUPiB8IFRlbXBsYXRlUmVmPFQ+LFxuICAgIGRpYWxvZ0NvbnRhaW5lcjogT3dsRGlhbG9nQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYsXG4gICAgY29uZmlnOiBPd2xEaWFsb2dDb25maWdcbiAgKSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gbmV3IE93bERpYWxvZ1JlZjxUPihcbiAgICAgIG92ZXJsYXlSZWYsXG4gICAgICBkaWFsb2dDb250YWluZXIsXG4gICAgICBjb25maWcuaWQsXG4gICAgICB0aGlzLmxvY2F0aW9uXG4gICAgKTtcblxuICAgIGlmIChjb25maWcuaGFzQmFja2Ryb3ApIHtcbiAgICAgIG92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICghZGlhbG9nUmVmLmRpc2FibGVDbG9zZSkge1xuICAgICAgICAgIGRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY29tcG9uZW50T3JUZW1wbGF0ZVJlZiBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGluamVjdG9yID0gdGhpcy5jcmVhdGVJbmplY3RvcjxUPihcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBkaWFsb2dSZWYsXG4gICAgICAgIGRpYWxvZ0NvbnRhaW5lclxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNvbnRlbnRSZWYgPSBkaWFsb2dDb250YWluZXIuYXR0YWNoQ29tcG9uZW50UG9ydGFsKFxuICAgICAgICBuZXcgQ29tcG9uZW50UG9ydGFsKGNvbXBvbmVudE9yVGVtcGxhdGVSZWYsIHVuZGVmaW5lZCwgaW5qZWN0b3IpXG4gICAgICApO1xuICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlID0gY29udGVudFJlZi5pbnN0YW5jZTtcbiAgICB9XG5cbiAgICBkaWFsb2dSZWZcbiAgICAgIC51cGRhdGVTaXplKGNvbmZpZy53aWR0aCwgY29uZmlnLmhlaWdodClcbiAgICAgIC51cGRhdGVQb3NpdGlvbihjb25maWcucG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIGRpYWxvZ1JlZjtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlSW5qZWN0b3I8VD4oXG4gICAgY29uZmlnOiBPd2xEaWFsb2dDb25maWcsXG4gICAgZGlhbG9nUmVmOiBPd2xEaWFsb2dSZWY8VD4sXG4gICAgZGlhbG9nQ29udGFpbmVyOiBPd2xEaWFsb2dDb250YWluZXJDb21wb25lbnRcbiAgKSB7XG4gICAgY29uc3QgdXNlckluamVjdG9yID1cbiAgICAgIGNvbmZpZyAmJiBjb25maWcudmlld0NvbnRhaW5lclJlZiAmJiBjb25maWcudmlld0NvbnRhaW5lclJlZi5pbmplY3RvcjtcbiAgICBjb25zdCBpbmplY3Rpb25Ub2tlbnMgPSBuZXcgV2Vha01hcCgpO1xuXG4gICAgaW5qZWN0aW9uVG9rZW5zLnNldChPd2xEaWFsb2dSZWYsIGRpYWxvZ1JlZik7XG4gICAgaW5qZWN0aW9uVG9rZW5zLnNldChPd2xEaWFsb2dDb250YWluZXJDb21wb25lbnQsIGRpYWxvZ0NvbnRhaW5lcik7XG4gICAgaW5qZWN0aW9uVG9rZW5zLnNldChPV0xfRElBTE9HX0RBVEEsIGNvbmZpZy5kYXRhKTtcblxuICAgIHJldHVybiBuZXcgUG9ydGFsSW5qZWN0b3IodXNlckluamVjdG9yIHx8IHRoaXMuaW5qZWN0b3IsIGluamVjdGlvblRva2Vucyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU92ZXJsYXkoY29uZmlnOiBPd2xEaWFsb2dDb25maWcpOiBPdmVybGF5UmVmIHtcbiAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gdGhpcy5nZXRPdmVybGF5Q29uZmlnKGNvbmZpZyk7XG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaERpYWxvZ0NvbnRhaW5lcihcbiAgICBvdmVybGF5UmVmOiBPdmVybGF5UmVmLFxuICAgIGNvbmZpZzogT3dsRGlhbG9nQ29uZmlnXG4gICk6IE93bERpYWxvZ0NvbnRhaW5lckNvbXBvbmVudCB7XG4gICAgY29uc3QgY29udGFpbmVyUG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChcbiAgICAgIE93bERpYWxvZ0NvbnRhaW5lckNvbXBvbmVudCxcbiAgICAgIGNvbmZpZy52aWV3Q29udGFpbmVyUmVmXG4gICAgKTtcbiAgICBjb25zdCBjb250YWluZXJSZWY6IENvbXBvbmVudFJlZjxPd2xEaWFsb2dDb250YWluZXJDb21wb25lbnQ+ID0gb3ZlcmxheVJlZi5hdHRhY2goXG4gICAgICBjb250YWluZXJQb3J0YWxcbiAgICApO1xuICAgIGNvbnRhaW5lclJlZi5pbnN0YW5jZS5zZXRDb25maWcoY29uZmlnKTtcblxuICAgIHJldHVybiBjb250YWluZXJSZWYuaW5zdGFuY2U7XG4gIH1cblxuICBwcml2YXRlIGdldE92ZXJsYXlDb25maWcoZGlhbG9nQ29uZmlnOiBPd2xEaWFsb2dDb25maWcpOiBPdmVybGF5Q29uZmlnIHtcbiAgICBjb25zdCBzdGF0ZSA9IG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IGRpYWxvZ0NvbmZpZy5zY3JvbGxTdHJhdGVneSB8fCB0aGlzLnNjcm9sbFN0cmF0ZWd5KCksXG4gICAgICBwYW5lbENsYXNzOiBkaWFsb2dDb25maWcucGFuZUNsYXNzLFxuICAgICAgaGFzQmFja2Ryb3A6IGRpYWxvZ0NvbmZpZy5oYXNCYWNrZHJvcCxcbiAgICAgIG1pbldpZHRoOiBkaWFsb2dDb25maWcubWluV2lkdGgsXG4gICAgICBtaW5IZWlnaHQ6IGRpYWxvZ0NvbmZpZy5taW5IZWlnaHQsXG4gICAgICBtYXhXaWR0aDogZGlhbG9nQ29uZmlnLm1heFdpZHRoLFxuICAgICAgbWF4SGVpZ2h0OiBkaWFsb2dDb25maWcubWF4SGVpZ2h0XG4gICAgfSk7XG5cbiAgICBpZiAoZGlhbG9nQ29uZmlnLmJhY2tkcm9wQ2xhc3MpIHtcbiAgICAgIHN0YXRlLmJhY2tkcm9wQ2xhc3MgPSBkaWFsb2dDb25maWcuYmFja2Ryb3BDbGFzcztcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZU9wZW5EaWFsb2coZGlhbG9nUmVmOiBPd2xEaWFsb2dSZWY8YW55Pik6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fb3BlbkRpYWxvZ3NBdFRoaXNMZXZlbC5pbmRleE9mKGRpYWxvZ1JlZik7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5vcGVuRGlhbG9ncy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgLy8gSWYgYWxsIHRoZSBkaWFsb2dzIHdlcmUgY2xvc2VkLCByZW1vdmUvcmVzdG9yZSB0aGUgYGFyaWEtaGlkZGVuYFxuICAgICAgLy8gdG8gYSB0aGUgc2libGluZ3MgYW5kIGVtaXQgdG8gdGhlIGBhZnRlckFsbENsb3NlZGAgc3RyZWFtLlxuICAgICAgaWYgKCF0aGlzLm9wZW5EaWFsb2dzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmFyaWFIaWRkZW5FbGVtZW50cy5mb3JFYWNoKChwcmV2aW91c1ZhbHVlLCBlbGVtZW50KSA9PiB7XG4gICAgICAgICAgaWYgKHByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsIHByZXZpb3VzVmFsdWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYXJpYUhpZGRlbkVsZW1lbnRzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuX2FmdGVyQWxsQ2xvc2VkLm5leHQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGlkZXMgYWxsIG9mIHRoZSBjb250ZW50IHRoYXQgaXNuJ3QgYW4gb3ZlcmxheSBmcm9tIGFzc2lzdGl2ZSB0ZWNobm9sb2d5LlxuICAgKi9cbiAgcHJpdmF0ZSBoaWRlTm9uRGlhbG9nQ29udGVudEZyb21Bc3Npc3RpdmVUZWNobm9sb2d5KCkge1xuICAgIGNvbnN0IG92ZXJsYXlDb250YWluZXIgPSB0aGlzLm92ZXJsYXlDb250YWluZXIuZ2V0Q29udGFpbmVyRWxlbWVudCgpO1xuXG4gICAgLy8gRW5zdXJlIHRoYXQgdGhlIG92ZXJsYXkgY29udGFpbmVyIGlzIGF0dGFjaGVkIHRvIHRoZSBET00uXG4gICAgaWYgKG92ZXJsYXlDb250YWluZXIucGFyZW50RWxlbWVudCkge1xuICAgICAgY29uc3Qgc2libGluZ3MgPSBvdmVybGF5Q29udGFpbmVyLnBhcmVudEVsZW1lbnQuY2hpbGRyZW47XG5cbiAgICAgIGZvciAobGV0IGkgPSBzaWJsaW5ncy5sZW5ndGggLSAxOyBpID4gLTE7IGktLSkge1xuICAgICAgICBjb25zdCBzaWJsaW5nID0gc2libGluZ3NbaV07XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHNpYmxpbmcgIT09IG92ZXJsYXlDb250YWluZXIgJiZcbiAgICAgICAgICBzaWJsaW5nLm5vZGVOYW1lICE9PSAnU0NSSVBUJyAmJlxuICAgICAgICAgIHNpYmxpbmcubm9kZU5hbWUgIT09ICdTVFlMRScgJiZcbiAgICAgICAgICAhc2libGluZy5oYXNBdHRyaWJ1dGUoJ2FyaWEtbGl2ZScpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuYXJpYUhpZGRlbkVsZW1lbnRzLnNldChcbiAgICAgICAgICAgIHNpYmxpbmcsXG4gICAgICAgICAgICBzaWJsaW5nLmdldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKVxuICAgICAgICAgICk7XG4gICAgICAgICAgc2libGluZy5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFwcGxpZXMgZGVmYXVsdCBvcHRpb25zIHRvIHRoZSBkaWFsb2cgY29uZmlnLlxuICogQHBhcmFtIGNvbmZpZyBDb25maWcgdG8gYmUgbW9kaWZpZWQuXG4gKiBAcGFyYW0gZGVmYXVsdE9wdGlvbnMgRGVmYXVsdCBjb25maWcgc2V0dGluZ1xuICogQHJldHVybnMgVGhlIG5ldyBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gYXBwbHlDb25maWdEZWZhdWx0cyhcbiAgY29uZmlnPzogT3dsRGlhbG9nQ29uZmlnLFxuICBkZWZhdWx0T3B0aW9ucz86IE93bERpYWxvZ0NvbmZpZ1xuKTogT3dsRGlhbG9nQ29uZmlnIHtcbiAgcmV0dXJuIGV4dGVuZE9iamVjdChuZXcgT3dsRGlhbG9nQ29uZmlnKCksIGNvbmZpZywgZGVmYXVsdE9wdGlvbnMpO1xufVxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* index
|
|
3
|
+
*/
|
|
4
|
+
export * from './object.utils';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9jb21wb25lbnRzL25neC1waWNrLWRhdGV0aW1lL2xpYi91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGluZGV4XG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9vYmplY3QudXRpbHMnO1xuIl19
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* object.utils
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Extends an object with the *enumerable* and *own* properties of one or more source objects,
|
|
6
|
+
* similar to Object.assign.
|
|
7
|
+
*
|
|
8
|
+
* @param dest The object which will have properties copied to it.
|
|
9
|
+
* @param sources The source objects from which properties will be copied.
|
|
10
|
+
*/
|
|
11
|
+
export function extendObject(dest, ...sources) {
|
|
12
|
+
if (dest == null) {
|
|
13
|
+
throw TypeError('Cannot convert undefined or null to object');
|
|
14
|
+
}
|
|
15
|
+
for (const source of sources) {
|
|
16
|
+
if (source != null) {
|
|
17
|
+
for (const key in source) {
|
|
18
|
+
if (source.hasOwnProperty(key)) {
|
|
19
|
+
dest[key] = source[key];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return dest;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm1lbnRyeS9zcmMvY29tcG9uZW50cy9uZ3gtcGljay1kYXRldGltZS9saWIvdXRpbHMvb2JqZWN0LnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUg7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxJQUFTLEVBQUUsR0FBRyxPQUFjO0lBQ3ZELElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtRQUNoQixNQUFNLFNBQVMsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0tBQy9EO0lBRUQsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7UUFDNUIsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO1lBQ2xCLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFO2dCQUN4QixJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3pCO2FBQ0Y7U0FDRjtLQUNGO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBvYmplY3QudXRpbHNcbiAqL1xuXG4vKipcbiAqIEV4dGVuZHMgYW4gb2JqZWN0IHdpdGggdGhlICplbnVtZXJhYmxlKiBhbmQgKm93biogcHJvcGVydGllcyBvZiBvbmUgb3IgbW9yZSBzb3VyY2Ugb2JqZWN0cyxcbiAqIHNpbWlsYXIgdG8gT2JqZWN0LmFzc2lnbi5cbiAqXG4gKiBAcGFyYW0gZGVzdCBUaGUgb2JqZWN0IHdoaWNoIHdpbGwgaGF2ZSBwcm9wZXJ0aWVzIGNvcGllZCB0byBpdC5cbiAqIEBwYXJhbSBzb3VyY2VzIFRoZSBzb3VyY2Ugb2JqZWN0cyBmcm9tIHdoaWNoIHByb3BlcnRpZXMgd2lsbCBiZSBjb3BpZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmRPYmplY3QoZGVzdDogYW55LCAuLi5zb3VyY2VzOiBhbnlbXSk6IGFueSB7XG4gIGlmIChkZXN0ID09IG51bGwpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdCcpO1xuICB9XG5cbiAgZm9yIChjb25zdCBzb3VyY2Ugb2Ygc291cmNlcykge1xuICAgIGlmIChzb3VyY2UgIT0gbnVsbCkge1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChzb3VyY2UuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgIGRlc3Rba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRlc3Q7XG59XG4iXX0=
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { Component, Input, forwardRef, Output, EventEmitter, Renderer2 } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { concat, of, Subject } from 'rxjs';
|
|
4
|
+
import { catchError, distinctUntilChanged, switchMap, tap } from 'rxjs/operators';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@ng-select/ng-select";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
import * as i3 from "@angular/forms";
|
|
9
|
+
export class RemoteSelectComponent {
|
|
10
|
+
constructor(renderer) {
|
|
11
|
+
this.renderer = renderer;
|
|
12
|
+
this.remoteOptionsLoading = false;
|
|
13
|
+
this.remoteOptionInput$ = new Subject();
|
|
14
|
+
this.items = [];
|
|
15
|
+
this.value = [];
|
|
16
|
+
this.loading = false;
|
|
17
|
+
this.searchText = '';
|
|
18
|
+
this.notFoundMsg = 'match no found';
|
|
19
|
+
this.placeholder = 'Search...';
|
|
20
|
+
this.disabled = false;
|
|
21
|
+
this.theme = 'dark';
|
|
22
|
+
this.done = new EventEmitter();
|
|
23
|
+
this.compareItems = (item, selected) => {
|
|
24
|
+
if (item.value && selected.value) {
|
|
25
|
+
return item.value === selected.value;
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
};
|
|
29
|
+
// the method set in registerOnChange, it is just
|
|
30
|
+
// a placeholder for a method that takes one parameter,
|
|
31
|
+
// we use it to emit changes back to the form
|
|
32
|
+
this.propagateChange = (change) => { };
|
|
33
|
+
}
|
|
34
|
+
get dataSource() {
|
|
35
|
+
return this._dataSource;
|
|
36
|
+
}
|
|
37
|
+
set dataSource(v) {
|
|
38
|
+
this._dataSource = v;
|
|
39
|
+
if (this._dataSource && this._dataSource.dataFromSourceChanged) {
|
|
40
|
+
this.subscribeToDataSourceDataChanges();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
ngOnInit() {
|
|
44
|
+
this.loadOptions();
|
|
45
|
+
}
|
|
46
|
+
subscribeToDataSourceDataChanges() {
|
|
47
|
+
this._dataSource.dataFromSourceChanged.subscribe((results) => {
|
|
48
|
+
if (results.length > 0) {
|
|
49
|
+
this.items = results;
|
|
50
|
+
this.notFoundMsg = '';
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
this.notFoundMsg = 'Not found';
|
|
54
|
+
this.items = [];
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
// this is the initial value set to the component
|
|
59
|
+
writeValue(value) {
|
|
60
|
+
if (value && value !== '') {
|
|
61
|
+
if (this.dataSource) {
|
|
62
|
+
this.loading = true;
|
|
63
|
+
this.dataSource.resolveSelectedValue(value).subscribe((result) => {
|
|
64
|
+
this.items = [result];
|
|
65
|
+
this.selectedRemoteOptions = result;
|
|
66
|
+
this.loading = false;
|
|
67
|
+
}, (error) => {
|
|
68
|
+
this.loading = false;
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// registers 'fn' that will be fired when changes are made
|
|
74
|
+
// this is how we emit the changes back to the form
|
|
75
|
+
registerOnChange(fn) {
|
|
76
|
+
this.propagateChange = fn;
|
|
77
|
+
}
|
|
78
|
+
// not used, used for touch input
|
|
79
|
+
registerOnTouched() { }
|
|
80
|
+
// change events from the textarea
|
|
81
|
+
onChange(event) {
|
|
82
|
+
this.propagateChange(event.id);
|
|
83
|
+
// .....
|
|
84
|
+
// update the form
|
|
85
|
+
// this.propagateChange(this.data);
|
|
86
|
+
}
|
|
87
|
+
selected(event) {
|
|
88
|
+
this.propagateChange(event);
|
|
89
|
+
}
|
|
90
|
+
trackByFn(item) {
|
|
91
|
+
return item.value;
|
|
92
|
+
}
|
|
93
|
+
loadOptions() {
|
|
94
|
+
this.remoteOptions$ = concat(of([]), // default items
|
|
95
|
+
this.remoteOptionInput$.pipe(distinctUntilChanged(), tap(() => {
|
|
96
|
+
this.loading = true;
|
|
97
|
+
}), switchMap((term) => this.dataSource.searchOptions(term).pipe(catchError(() => of([])), // empty list on error
|
|
98
|
+
tap(() => (this.loading = false))))));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
RemoteSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: RemoteSelectComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
102
|
+
RemoteSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: RemoteSelectComponent, selector: "ofe-remote-select", inputs: { placeholder: "placeholder", componentID: "componentID", disabled: "disabled", theme: "theme", dataSource: "dataSource" }, outputs: { done: "done" }, providers: [
|
|
103
|
+
{
|
|
104
|
+
provide: NG_VALUE_ACCESSOR,
|
|
105
|
+
useExisting: forwardRef(() => RemoteSelectComponent),
|
|
106
|
+
multi: true
|
|
107
|
+
}
|
|
108
|
+
], ngImport: i0, template: "<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=\"Please enter 2 or more characters\"\n [typeahead]=\"remoteOptionInput$\"\n [(ngModel)]=\"selectedRemoteOptions\"\n (ngModelChange)=\"selected($event)\"\n >\n </ng-select>\n</div>\n", components: [{ type: i1.NgSelectComponent, selector: "ng-select", inputs: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "async": i2.AsyncPipe } });
|
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: RemoteSelectComponent, decorators: [{
|
|
110
|
+
type: Component,
|
|
111
|
+
args: [{
|
|
112
|
+
selector: 'ofe-remote-select',
|
|
113
|
+
templateUrl: 'remote-select.component.html',
|
|
114
|
+
providers: [
|
|
115
|
+
{
|
|
116
|
+
provide: NG_VALUE_ACCESSOR,
|
|
117
|
+
useExisting: forwardRef(() => RemoteSelectComponent),
|
|
118
|
+
multi: true
|
|
119
|
+
}
|
|
120
|
+
]
|
|
121
|
+
}]
|
|
122
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { placeholder: [{
|
|
123
|
+
type: Input
|
|
124
|
+
}], componentID: [{
|
|
125
|
+
type: Input
|
|
126
|
+
}], disabled: [{
|
|
127
|
+
type: Input
|
|
128
|
+
}], theme: [{
|
|
129
|
+
type: Input
|
|
130
|
+
}], done: [{
|
|
131
|
+
type: Output
|
|
132
|
+
}], dataSource: [{
|
|
133
|
+
type: Input
|
|
134
|
+
}] } });
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXJlbW90ZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm1lbnRyeS9zcmMvY29tcG9uZW50cy9uZ3gtcmVtb3RlLXNlbGVjdC9uZ3gtcmVtb3RlLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9jb21wb25lbnRzL25neC1yZW1vdGUtc2VsZWN0L3JlbW90ZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBQ0wsVUFBVSxFQUVWLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsTUFBTSxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUNMLFVBQVUsRUFFVixvQkFBb0IsRUFDcEIsU0FBUyxFQUNULEdBQUcsRUFDSixNQUFNLGdCQUFnQixDQUFDOzs7OztBQWdCeEIsTUFBTSxPQUFPLHFCQUFxQjtJQTZCaEMsWUFBb0IsUUFBbUI7UUFBbkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQTFCdkMseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdCLHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFFM0MsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsZ0JBQVcsR0FBRyxnQkFBZ0IsQ0FBQztRQUN0QixnQkFBVyxHQUFHLFdBQVcsQ0FBQztRQUUxQixhQUFRLEdBQUcsS0FB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O3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNJLElBQUk7c0JBQWIsTUFBTTtnQkFJSSxVQUFVO3NCQURwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIElucHV0LFxuICBmb3J3YXJkUmVmLFxuICBWaWV3Q2hpbGQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBSZW5kZXJlcjJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb25jYXQsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBjYXRjaEVycm9yLFxuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBzd2l0Y2hNYXAsXG4gIHRhcFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTZWxlY3RPcHRpb24gfSBmcm9tICcuLi8uLi9mb3JtLWVudHJ5L3F1ZXN0aW9uLW1vZGVscy9pbnRlcmZhY2VzL3NlbGVjdC1vcHRpb24nO1xuXG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZm9ybS1lbnRyeS9xdWVzdGlvbi1tb2RlbHMvaW50ZXJmYWNlcy9kYXRhLXNvdXJjZSc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZmUtcmVtb3RlLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAncmVtb3RlLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUmVtb3RlU2VsZWN0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFJlbW90ZVNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAvLyBASW5wdXQoKSBkYXRhU291cmNlOiBEYXRhU291cmNlO1xuICByZW1vdGVPcHRpb25zJDogT2JzZXJ2YWJsZTxTZWxlY3RPcHRpb25bXT47XG4gIHJlbW90ZU9wdGlvbnNMb2FkaW5nID0gZmFsc2U7XG4gIHJlbW90ZU9wdGlvbklucHV0JCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgc2VsZWN0ZWRSZW1vdGVPcHRpb25zOiBTZWxlY3RPcHRpb247XG4gIGl0ZW1zID0gW107XG4gIHZhbHVlID0gW107XG4gIGxvYWRpbmcgPSBmYWxzZTtcbiAgc2VhcmNoVGV4dCA9ICcnO1xuICBub3RGb3VuZE1zZyA9ICdtYXRjaCBubyBmb3VuZCc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ1NlYXJjaC4uLic7XG4gIEBJbnB1dCgpIGNvbXBvbmVudElEOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRoZW1lID0gJ2RhcmsnO1xuICBAT3V0cHV0KCkgZG9uZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwcml2YXRlIF9kYXRhU291cmNlOiBEYXRhU291cmNlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGRhdGFTb3VyY2UoKTogRGF0YVNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2U7XG4gIH1cbiAgcHVibGljIHNldCBkYXRhU291cmNlKHY6IERhdGFTb3VyY2UpIHtcbiAgICB0aGlzLl9kYXRhU291cmNlID0gdjtcbiAgICBpZiAodGhpcy5fZGF0YVNvdXJjZSAmJiB0aGlzLl9kYXRhU291cmNlLmRhdGFGcm9tU291cmNlQ2hhbmdlZCkge1xuICAgICAgdGhpcy5zdWJzY3JpYmVUb0RhdGFTb3VyY2VEYXRhQ2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvYWRPcHRpb25zKCk7XG4gIH1cblxuICBzdWJzY3JpYmVUb0RhdGFTb3VyY2VEYXRhQ2hhbmdlcygpIHtcbiAgICB0aGlzLl9kYXRhU291cmNlLmRhdGFGcm9tU291cmNlQ2hhbmdlZC5zdWJzY3JpYmUoKHJlc3VsdHMpID0+IHtcbiAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5pdGVtcyA9IHJlc3VsdHM7XG4gICAgICAgIHRoaXMubm90Rm91bmRNc2cgPSAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubm90Rm91bmRNc2cgPSAnTm90IGZvdW5kJztcbiAgICAgICAgdGhpcy5pdGVtcyA9IFtdO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gdGhpcyBpcyB0aGUgaW5pdGlhbCB2YWx1ZSBzZXQgdG8gdGhlIGNvbXBvbmVudFxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlICYmIHZhbHVlICE9PSAnJykge1xuICAgICAgaWYgKHRoaXMuZGF0YVNvdXJjZSkge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UucmVzb2x2ZVNlbGVjdGVkVmFsdWUodmFsdWUpLnN1YnNjcmliZShcbiAgICAgICAgICAocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXRlbXMgPSBbcmVzdWx0XTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSZW1vdGVPcHRpb25zID0gcmVzdWx0O1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy8gcmVnaXN0ZXJzICdmbicgdGhhdCB3aWxsIGJlIGZpcmVkIHdoZW4gY2hhbmdlcyBhcmUgbWFkZVxuICAvLyB0aGlzIGlzIGhvdyB3ZSBlbWl0IHRoZSBjaGFuZ2VzIGJhY2sgdG8gdGhlIGZvcm1cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gIH1cblxuICAvLyBub3QgdXNlZCwgdXNlZCBmb3IgdG91Y2ggaW5wdXRcbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKCkge31cbiAgLy8gY2hhbmdlIGV2ZW50cyBmcm9tIHRoZSB0ZXh0YXJlYVxuICBvbkNoYW5nZShldmVudCkge1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKGV2ZW50LmlkKTtcbiAgICAvLyAuLi4uLlxuICAgIC8vIHVwZGF0ZSB0aGUgZm9ybVxuICAgIC8vIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuZGF0YSk7XG4gIH1cbiAgc2VsZWN0ZWQoZXZlbnQpIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShldmVudCk7XG4gIH1cblxuICBjb21wYXJlSXRlbXMgPSAoaXRlbSwgc2VsZWN0ZWQpID0+IHtcbiAgICBpZiAoaXRlbS52YWx1ZSAmJiBzZWxlY3RlZC52YWx1ZSkge1xuICAgICAgcmV0dXJuIGl0ZW0udmFsdWUgPT09IHNlbGVjdGVkLnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgLy8gdGhlIG1ldGhvZCBzZXQgaW4gcmVnaXN0ZXJPbkNoYW5nZSwgaXQgaXMganVzdFxuICAvLyBhIHBsYWNlaG9sZGVyIGZvciBhIG1ldGhvZCB0aGF0IHRha2VzIG9uZSBwYXJhbWV0ZXIsXG4gIC8vIHdlIHVzZSBpdCB0byBlbWl0IGNoYW5nZXMgYmFjayB0byB0aGUgZm9ybVxuICBwcml2YXRlIHByb3BhZ2F0ZUNoYW5nZSA9IChjaGFuZ2U6IGFueSkgPT4ge307XG5cbiAgdHJhY2tCeUZuKGl0ZW06IFNlbGVjdE9wdGlvbikge1xuICAgIHJldHVybiBpdGVtLnZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkT3B0aW9ucygpIHtcbiAgICB0aGlzLnJlbW90ZU9wdGlvbnMkID0gY29uY2F0KFxuICAgICAgb2YoW10pLCAvLyBkZWZhdWx0IGl0ZW1zXG4gICAgICB0aGlzLnJlbW90ZU9wdGlvbklucHV0JC5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAoKHRlcm0pID0+XG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLnNlYXJjaE9wdGlvbnModGVybSkucGlwZShcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKSwgLy8gZW1wdHkgbGlzdCBvbiBlcnJvclxuICAgICAgICAgICAgdGFwKCgpID0+ICh0aGlzLmxvYWRpbmcgPSBmYWxzZSkpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdj5cbiAgPG5nLXNlbGVjdFxuICAgIFtuZ0NsYXNzXT1cInsgJ2FmZS1jdXN0b20nOiB0aGVtZSA9PT0gJ2xpZ2h0JyB9XCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtpdGVtc109XCJyZW1vdGVPcHRpb25zJCB8IGFzeW5jXCJcbiAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgYmluZFZhbHVlPVwidmFsdWVcIlxuICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXG4gICAgW2hpZGVTZWxlY3RlZF09XCJ0cnVlXCJcbiAgICBbY29tcGFyZVdpdGhdPVwiY29tcGFyZUl0ZW1zXCJcbiAgICBbdHJhY2tCeUZuXT1cInRyYWNrQnlGblwiXG4gICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gICAgdHlwZVRvU2VhcmNoVGV4dD1cIlBsZWFzZSBlbnRlciAyIG9yIG1vcmUgY2hhcmFjdGVyc1wiXG4gICAgW3R5cGVhaGVhZF09XCJyZW1vdGVPcHRpb25JbnB1dCRcIlxuICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRSZW1vdGVPcHRpb25zXCJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3RlZCgkZXZlbnQpXCJcbiAgPlxuICA8L25nLXNlbGVjdD5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import { NgSelectModule } from '@ng-select/ng-select';
|
|
5
|
+
import { RemoteSelectComponent } from './ngx-remote-select.component';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class NgxRemoteSelectModule {
|
|
8
|
+
}
|
|
9
|
+
NgxRemoteSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NgxRemoteSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10
|
+
NgxRemoteSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NgxRemoteSelectModule, declarations: [RemoteSelectComponent], imports: [CommonModule, NgSelectModule, FormsModule], exports: [RemoteSelectComponent] });
|
|
11
|
+
NgxRemoteSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NgxRemoteSelectModule, providers: [], imports: [[CommonModule, NgSelectModule, FormsModule]] });
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NgxRemoteSelectModule, decorators: [{
|
|
13
|
+
type: NgModule,
|
|
14
|
+
args: [{
|
|
15
|
+
imports: [CommonModule, NgSelectModule, FormsModule],
|
|
16
|
+
exports: [RemoteSelectComponent],
|
|
17
|
+
declarations: [RemoteSelectComponent],
|
|
18
|
+
providers: []
|
|
19
|
+
}]
|
|
20
|
+
}] });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXJlbW90ZS1zZWxlY3QubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm1lbnRyeS9zcmMvY29tcG9uZW50cy9uZ3gtcmVtb3RlLXNlbGVjdC9uZ3gtcmVtb3RlLXNlbGVjdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFRdEUsTUFBTSxPQUFPLHFCQUFxQjs7bUhBQXJCLHFCQUFxQjtvSEFBckIscUJBQXFCLGlCQUhqQixxQkFBcUIsYUFGMUIsWUFBWSxFQUFFLGNBQWMsRUFBRSxXQUFXLGFBQ3pDLHFCQUFxQjtvSEFJcEIscUJBQXFCLGFBRnJCLEVBQUUsWUFISixDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsV0FBVyxDQUFDOzRGQUt6QyxxQkFBcUI7a0JBTmpDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGNBQWMsRUFBRSxXQUFXLENBQUM7b0JBQ3BELE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNoQyxZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztvQkFDckMsU0FBUyxFQUFFLEVBQUU7aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOZ1NlbGVjdE1vZHVsZSB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0JztcbmltcG9ydCB7IFJlbW90ZVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vbmd4LXJlbW90ZS1zZWxlY3QuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTmdTZWxlY3RNb2R1bGUsIEZvcm1zTW9kdWxlXSxcbiAgZXhwb3J0czogW1JlbW90ZVNlbGVjdENvbXBvbmVudF0sXG4gIGRlY2xhcmF0aW9uczogW1JlbW90ZVNlbGVjdENvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW11cbn0pXG5leHBvcnQgY2xhc3MgTmd4UmVtb3RlU2VsZWN0TW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { Component, ContentChildren, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { TabComponent } from './tab.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "../directives/hover-class.directive";
|
|
6
|
+
export class TabSetComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.disableStyle = false;
|
|
9
|
+
this.customNavClass = '';
|
|
10
|
+
this.customTabsClass = '';
|
|
11
|
+
this.selectedIndex = 0;
|
|
12
|
+
this.tabSelect = new EventEmitter();
|
|
13
|
+
}
|
|
14
|
+
ngOnChanges(changes) {
|
|
15
|
+
if (changes.selectedIndex && !changes.selectedIndex.firstChange) {
|
|
16
|
+
this.selectTab(this.tabs.toArray()[changes.selectedIndex.currentValue]);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
// contentChildren are set
|
|
20
|
+
ngAfterContentInit() {
|
|
21
|
+
// get all active tabs
|
|
22
|
+
const activeTabs = this.tabs.filter((tab) => tab.active);
|
|
23
|
+
// if there is no active tab set, activate the first
|
|
24
|
+
setTimeout(() => {
|
|
25
|
+
if (activeTabs.length === 0) {
|
|
26
|
+
this.selectTab(this.tabs.first);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
onHover($event) { }
|
|
31
|
+
selectTab(tabToSelect) {
|
|
32
|
+
if (tabToSelect.disabled === true || tabToSelect.active === true) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
// deactivate all tabs
|
|
36
|
+
this.tabs.toArray().forEach((tab) => (tab.active = false));
|
|
37
|
+
// activate the tab the user has clicked on.
|
|
38
|
+
tabToSelect.active = true;
|
|
39
|
+
this.tabSelect.emit(this.tabs.toArray().indexOf(tabToSelect));
|
|
40
|
+
}
|
|
41
|
+
getStatusClasses(active, disabled) {
|
|
42
|
+
if (active) {
|
|
43
|
+
return 'active';
|
|
44
|
+
}
|
|
45
|
+
if (!disabled && !active) {
|
|
46
|
+
return 'enabled';
|
|
47
|
+
}
|
|
48
|
+
if (disabled) {
|
|
49
|
+
return 'disabled';
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
TabSetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TabSetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
54
|
+
TabSetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: TabSetComponent, selector: "ofe-tab-set", inputs: { disableStyle: "disableStyle", customNavClass: "customNavClass", customTabsClass: "customTabsClass", selectedIndex: "selectedIndex" }, outputs: { tabSelect: "tabSelect" }, queries: [{ propertyName: "tabs", predicate: TabComponent }], usesOnChanges: true, ngImport: i0, template: "<div class=\"tab-container\">\n <div class=\"tab\">\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 id=\"tab\" class=\"tab-content\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".tab-container{overflow-x:hidden;display:flex}.tab{width:10rem;position:fixed}.tab button{font-family:inherit;display:block;background-color:inherit;width:100%;border:none;outline:none;text-align:left;transition:.3s;min-height:2rem;white-space:normal;word-wrap:break-word;margin:0 0 .063rem}.tab button :hover{cursor:pointer}@media screen and (max-width: 768px){.tab button{height:3rem;border-bottom:.0125rem solid var(--open-mrs-background-gray);width:10rem}}.tab button.active.hover{background-color:var(--gray-gray-10)}.tab button.enabled.hover{background-color:var(--gray-gray-10)}.tab button.completed{border-left:.5rem solid var(--inverse-support-02);background-color:var(--color-green-10);font-size:.875rem;font-weight:normal;font-stretch:normal;font-style:normal;line-height:1.43;letter-spacing:.16px;color:#161616}.tab button.active{background-color:#ededed;border-left:.5rem solid #009d9a;font-size:.875rem;font-weight:600;font-stretch:normal;font-style:normal;line-height:1.43;letter-spacing:.16px;color:#161616}.tab button.enabled{background-color:#fff;border-left:.5rem solid #9ef0f0;font-size:.875rem;font-weight:normal;font-stretch:normal;font-style:normal;line-height:1.43;letter-spacing:.16px;color:var(--color-gray-100)}.tab button.error{background-color:var(--color-red-10);border-left:.5rem solid var(--open-mrs-danger-red-60);font-size:.875rem;font-weight:normal;font-stretch:normal;font-style:normal;line-height:1.29;letter-spacing:.16px;color:#da1e28}.tab button.disabled{background-color:#fff;border-left:.5rem solid #dae0e0;font-size:.875rem;font-weight:normal;font-stretch:normal;font-style:normal;line-height:1.43;letter-spacing:.16px;color:var(--gray-gray-30)}.tab button.active.error{background-color:var(--color-red-20);border-left:.5rem solid var(--open-mrs-danger-red-60);font-size:.875rem;font-weight:600;font-stretch:normal;font-style:normal;line-height:1.29;letter-spacing:.16px;color:#da1e28}.tab-content{width:100%;margin-left:10rem}\n"], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.HoverClassDirective, selector: "[ofeHoverClass]", inputs: ["hoverClass"] }] });
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TabSetComponent, decorators: [{
|
|
56
|
+
type: Component,
|
|
57
|
+
args: [{
|
|
58
|
+
selector: 'ofe-tab-set',
|
|
59
|
+
styleUrls: ['ngx-tab-set.component.scss'],
|
|
60
|
+
templateUrl: 'ngx-tab-set.component.html'
|
|
61
|
+
}]
|
|
62
|
+
}], propDecorators: { tabs: [{
|
|
63
|
+
type: ContentChildren,
|
|
64
|
+
args: [TabComponent]
|
|
65
|
+
}], disableStyle: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], customNavClass: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}], customTabsClass: [{
|
|
70
|
+
type: Input
|
|
71
|
+
}], selectedIndex: [{
|
|
72
|
+
type: Input
|
|
73
|
+
}], tabSelect: [{
|
|
74
|
+
type: Output
|
|
75
|
+
}] } });
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRhYi1zZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm1lbnRyeS9zcmMvY29tcG9uZW50cy9uZ3gtdGFic2V0L2NvbXBvbmVudHMvbmd4LXRhYi1zZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm1lbnRyeS9zcmMvY29tcG9uZW50cy9uZ3gtdGFic2V0L2NvbXBvbmVudHMvbmd4LXRhYi1zZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxlQUFlLEVBRWYsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBR2IsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBTy9DLE1BQU0sT0FBTyxlQUFlO0lBTDVCO1FBUWtCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBQzVCLG9CQUFlLEdBQVcsRUFBRSxDQUFDO1FBQzdCLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBRXpCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0tBOENqRDtJQTVDQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsYUFBYSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUU7WUFDL0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztTQUN6RTtJQUNILENBQUM7SUFFRCwwQkFBMEI7SUFDbkIsa0JBQWtCO1FBQ3ZCLHNCQUFzQjtRQUN0QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQWlCLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV2RSxvREFBb0Q7UUFDcEQsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNqQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE9BQU8sQ0FBQyxNQUFNLElBQUcsQ0FBQztJQUVsQixTQUFTLENBQUMsV0FBeUI7UUFDeEMsSUFBSSxXQUFXLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRTtZQUNoRSxPQUFPO1NBQ1I7UUFFRCxzQkFBc0I7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUV6RSw0Q0FBNEM7UUFDNUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBQ00sZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFFBQVE7UUFDdEMsSUFBSSxNQUFNLEVBQUU7WUFDVixPQUFPLFFBQVEsQ0FBQztTQUNqQjtRQUNELElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDeEIsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFDRCxJQUFJLFFBQVEsRUFBRTtZQUNaLE9BQU8sVUFBVSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQzs7NkdBckRVLGVBQWU7aUdBQWYsZUFBZSw2UEFDVCxZQUFZLGtEQ3BCL0IsNGFBZ0JBOzRGREdhLGVBQWU7a0JBTDNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFNBQVMsRUFBRSxDQUFDLDRCQUE0QixDQUFDO29CQUN6QyxXQUFXLEVBQUUsNEJBQTRCO2lCQUMxQzs4QkFFdUMsSUFBSTtzQkFBekMsZUFBZTt1QkFBQyxZQUFZO2dCQUViLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsY0FBYztzQkFBN0IsS0FBSztnQkFDVSxlQUFlO3NCQUE5QixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBRVcsU0FBUztzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBBZnRlckNvbnRlbnRJbml0LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRhYkNvbXBvbmVudCB9IGZyb20gJy4vdGFiLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29mZS10YWItc2V0JyxcbiAgc3R5bGVVcmxzOiBbJ25neC10YWItc2V0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnbmd4LXRhYi1zZXQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFRhYlNldENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcyB7XG4gIEBDb250ZW50Q2hpbGRyZW4oVGFiQ29tcG9uZW50KSBwdWJsaWMgdGFiczogUXVlcnlMaXN0PFRhYkNvbXBvbmVudD47XG5cbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVTdHlsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tTmF2Q2xhc3M6IFN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tVGFic0NsYXNzOiBTdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdGVkSW5kZXg6IE51bWJlciA9IDA7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyB0YWJTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLnNlbGVjdGVkSW5kZXggJiYgIWNoYW5nZXMuc2VsZWN0ZWRJbmRleC5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5zZWxlY3RUYWIodGhpcy50YWJzLnRvQXJyYXkoKVtjaGFuZ2VzLnNlbGVjdGVkSW5kZXguY3VycmVudFZhbHVlXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gY29udGVudENoaWxkcmVuIGFyZSBzZXRcbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAvLyBnZXQgYWxsIGFjdGl2ZSB0YWJzXG4gICAgY29uc3QgYWN0aXZlVGFicyA9IHRoaXMudGFicy5maWx0ZXIoKHRhYjogVGFiQ29tcG9uZW50KSA9PiB0YWIuYWN0aXZlKTtcblxuICAgIC8vIGlmIHRoZXJlIGlzIG5vIGFjdGl2ZSB0YWIgc2V0LCBhY3RpdmF0ZSB0aGUgZmlyc3RcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChhY3RpdmVUYWJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLnNlbGVjdFRhYih0aGlzLnRhYnMuZmlyc3QpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uSG92ZXIoJGV2ZW50KSB7fVxuXG4gIHB1YmxpYyBzZWxlY3RUYWIodGFiVG9TZWxlY3Q6IFRhYkNvbXBvbmVudCk6IHZvaWQge1xuICAgIGlmICh0YWJUb1NlbGVjdC5kaXNhYmxlZCA9PT0gdHJ1ZSB8fCB0YWJUb1NlbGVjdC5hY3RpdmUgPT09IHRydWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBkZWFjdGl2YXRlIGFsbCB0YWJzXG4gICAgdGhpcy50YWJzLnRvQXJyYXkoKS5mb3JFYWNoKCh0YWI6IFRhYkNvbXBvbmVudCkgPT4gKHRhYi5hY3RpdmUgPSBmYWxzZSkpO1xuXG4gICAgLy8gYWN0aXZhdGUgdGhlIHRhYiB0aGUgdXNlciBoYXMgY2xpY2tlZCBvbi5cbiAgICB0YWJUb1NlbGVjdC5hY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMudGFiU2VsZWN0LmVtaXQodGhpcy50YWJzLnRvQXJyYXkoKS5pbmRleE9mKHRhYlRvU2VsZWN0KSk7XG4gIH1cbiAgcHVibGljIGdldFN0YXR1c0NsYXNzZXMoYWN0aXZlLCBkaXNhYmxlZCkge1xuICAgIGlmIChhY3RpdmUpIHtcbiAgICAgIHJldHVybiAnYWN0aXZlJztcbiAgICB9XG4gICAgaWYgKCFkaXNhYmxlZCAmJiAhYWN0aXZlKSB7XG4gICAgICByZXR1cm4gJ2VuYWJsZWQnO1xuICAgIH1cbiAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiAnZGlzYWJsZWQnO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInRhYi1jb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cInRhYlwiPlxuICAgIDxidXR0b25cbiAgICAgIG9mZUhvdmVyQ2xhc3M9XCJob3ZlclwiXG4gICAgICBjbGFzcz1cInRhYmxpbmtzIGNvbXBsZXRlZFwiXG4gICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdFRhYih0YWIpXCJcbiAgICAgIFtjbGFzc109XCJnZXRTdGF0dXNDbGFzc2VzKHRhYi5hY3RpdmUsIHRhYi5kaXNhYmxlZClcIlxuICAgID5cbiAgICAgIDxzcGFuPnt7IHRhYi50YWJUaXRsZSB9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgaWQ9XCJ0YWJcIiBjbGFzcz1cInRhYi1jb250ZW50XCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Component, Input, ContentChild, TemplateRef } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export class TabComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.active = false;
|
|
7
|
+
this.disabled = false;
|
|
8
|
+
this.bypassDOM = false;
|
|
9
|
+
this.customPaneClass = '';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
TabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13
|
+
TabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: TabComponent, selector: "ofe-tab", inputs: { tabTitle: "tabTitle", tabSubTitle: "tabSubTitle", active: "active", disabled: "disabled", bypassDOM: "bypassDOM", customPaneClass: "customPaneClass" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: "<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", styles: ["h4{padding-left:1rem;margin-bottom:.5rem}h4:after{content:\"\";display:block;width:2rem;padding-top:.188rem;border-bottom:.375rem solid var(--brand-01)}.pane{background-color:#f4f4f4;margin:.5rem .125rem}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TabComponent, decorators: [{
|
|
15
|
+
type: Component,
|
|
16
|
+
args: [{
|
|
17
|
+
selector: 'ofe-tab',
|
|
18
|
+
templateUrl: 'tab.component.html',
|
|
19
|
+
styleUrls: ['./tab.component.css']
|
|
20
|
+
}]
|
|
21
|
+
}], propDecorators: { tabTitle: [{
|
|
22
|
+
type: Input
|
|
23
|
+
}], tabSubTitle: [{
|
|
24
|
+
type: Input
|
|
25
|
+
}], active: [{
|
|
26
|
+
type: Input
|
|
27
|
+
}], disabled: [{
|
|
28
|
+
type: Input
|
|
29
|
+
}], bypassDOM: [{
|
|
30
|
+
type: Input
|
|
31
|
+
}], customPaneClass: [{
|
|
32
|
+
type: Input
|
|
33
|
+
}], template: [{
|
|
34
|
+
type: ContentChild,
|
|
35
|
+
args: [TemplateRef]
|
|
36
|
+
}] } });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtZW50cnkvc3JjL2NvbXBvbmVudHMvbmd4LXRhYnNldC9jb21wb25lbnRzL3RhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9jb21wb25lbnRzL25neC10YWJzZXQvY29tcG9uZW50cy90YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTzVFLE1BQU0sT0FBTyxZQUFZO0lBTHpCO1FBUWtCLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsb0JBQWUsR0FBRyxFQUFFLENBQUM7S0FFdEM7OzBHQVJZLFlBQVk7OEZBQVosWUFBWSx1UEFPVCxXQUFXLGdEQ2QzQiwyUkFTQTs0RkRGYSxZQUFZO2tCQUx4QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxTQUFTO29CQUNuQixXQUFXLEVBQUUsb0JBQW9CO29CQUNqQyxTQUFTLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDbkM7OEJBRWlCLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxlQUFlO3NCQUE5QixLQUFLO2dCQUNxQixRQUFRO3NCQUFsQyxZQUFZO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBDb250ZW50Q2hpbGQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29mZS10YWInLFxuICB0ZW1wbGF0ZVVybDogJ3RhYi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYi5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVGFiQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcHVibGljIHRhYlRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyB0YWJTdWJUaXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgYWN0aXZlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgYnlwYXNzRE9NID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21QYW5lQ2xhc3MgPSAnJztcbiAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZikgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG59XG4iLCI8ZGl2ICpuZ0lmPVwiYWN0aXZlXCIgY2xhc3M9XCJwYW5lXCIgW25nQ2xhc3NdPVwiY3VzdG9tUGFuZUNsYXNzXCI+XG4gIDxoND57eyB0YWJUaXRsZSB9fTwvaDQ+XG4gIDxkaXYgKm5nSWY9XCJieXBhc3NET01cIj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiIWJ5cGFzc0RPTVwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|