@openmrs/ngx-formentry 3.0.1-pre.94 → 3.1.1-pre.177

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.
Files changed (125) hide show
  1. package/bundles/openmrs-ngx-formentry.umd.js +722 -409
  2. package/bundles/openmrs-ngx-formentry.umd.js.map +1 -1
  3. package/components/number-input/number-input.component.d.ts +9 -1
  4. package/components/number-input/number-input.module.d.ts +4 -3
  5. package/components/number-input/number.directive.d.ts +9 -0
  6. package/components/radio-button/radio.component.d.ts +6 -3
  7. package/esm2015/components/afe-ng-select.component.js +3 -3
  8. package/esm2015/components/appointments-overview/appointments-overview.component.js +3 -3
  9. package/esm2015/components/check-box/checkbox.component.js +6 -7
  10. package/esm2015/components/check-box/checkbox.module.js +4 -4
  11. package/esm2015/components/custom-component-wrapper/custom-component-wrapper..module.js +4 -4
  12. package/esm2015/components/custom-component-wrapper/custom-component-wrapper.component.js +3 -3
  13. package/esm2015/components/custom-control-wrapper/custom-control-wrapper..module.js +4 -4
  14. package/esm2015/components/custom-control-wrapper/custom-control-wrapper.component.js +3 -3
  15. package/esm2015/components/date-time-picker/date-picker/date-picker.component.js +3 -3
  16. package/esm2015/components/date-time-picker/date-time-picker.component.js +3 -3
  17. package/esm2015/components/date-time-picker/date-time-picker.module.js +4 -4
  18. package/esm2015/components/date-time-picker/picker-modal/modal.component.js +3 -3
  19. package/esm2015/components/date-time-picker/pipes/moment.pipe.js +3 -3
  20. package/esm2015/components/date-time-picker/time-picker/time-picker.component.js +3 -3
  21. package/esm2015/components/file-upload/file-upload.component.js +3 -3
  22. package/esm2015/components/file-upload/file-upload.module.js +4 -4
  23. package/esm2015/components/file-upload/secure.pipe.js +3 -3
  24. package/esm2015/components/input/input.directive.js +3 -3
  25. package/esm2015/components/input/input.module.js +4 -4
  26. package/esm2015/components/input/label.component.js +3 -3
  27. package/esm2015/components/input/text-area.directive.js +3 -3
  28. package/esm2015/components/ngx-datetime-picker/ngx-datetime-picker.component.js +3 -3
  29. package/esm2015/components/ngx-datetime-picker/ngx-datetime-picker.module.js +4 -4
  30. package/esm2015/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-adapter.class.js +3 -3
  31. package/esm2015/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time.module.js +8 -8
  32. package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-body.component.js +3 -3
  33. package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-month-view.component.js +3 -3
  34. package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.js +3 -3
  35. package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.js +3 -3
  36. package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar.component.js +3 -3
  37. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.js +3 -3
  38. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.js +3 -3
  39. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.js +3 -3
  40. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-intl.service.js +3 -3
  41. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.js +3 -3
  42. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker.component.js +3 -3
  43. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time.class.js +3 -3
  44. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time.module.js +4 -4
  45. package/esm2015/components/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.js +3 -3
  46. package/esm2015/components/ngx-pick-datetime/lib/date-time/timer-box.component.js +3 -3
  47. package/esm2015/components/ngx-pick-datetime/lib/date-time/timer.component.js +3 -3
  48. package/esm2015/components/ngx-pick-datetime/lib/dialog/dialog-container.component.js +3 -3
  49. package/esm2015/components/ngx-pick-datetime/lib/dialog/dialog.module.js +4 -4
  50. package/esm2015/components/ngx-pick-datetime/lib/dialog/dialog.service.js +3 -3
  51. package/esm2015/components/ngx-remote-select/ngx-remote-select.component.js +6 -6
  52. package/esm2015/components/ngx-remote-select/ngx-remote-select.module.js +4 -4
  53. package/esm2015/components/ngx-tabset/components/ngx-tab-set.component.js +4 -4
  54. package/esm2015/components/ngx-tabset/components/tab.component.js +3 -3
  55. package/esm2015/components/ngx-tabset/directives/hover-class.directive.js +3 -3
  56. package/esm2015/components/ngx-tabset/modules/ngx-tabset.module.js +4 -4
  57. package/esm2015/components/number-input/number-input.component.js +26 -7
  58. package/esm2015/components/number-input/number-input.module.js +7 -6
  59. package/esm2015/components/number-input/number.directive.js +22 -0
  60. package/esm2015/components/radio-button/radio.component.js +27 -14
  61. package/esm2015/components/radio-button/radio.module.js +4 -4
  62. package/esm2015/components/select/optgroup.directive.js +3 -3
  63. package/esm2015/components/select/option.directive.js +3 -3
  64. package/esm2015/components/select/select.component.js +3 -3
  65. package/esm2015/components/select/select.module.js +4 -4
  66. package/esm2015/form-entry/data-sources/data-sources.js +3 -3
  67. package/esm2015/form-entry/directives/collapse.directive.js +3 -3
  68. package/esm2015/form-entry/directives/historical-value.directive.js +6 -5
  69. package/esm2015/form-entry/error-renderer/error-renderer.component.js +3 -3
  70. package/esm2015/form-entry/expression-runner/expression-runner.js +3 -3
  71. package/esm2015/form-entry/form-entry.module.js +11 -9
  72. package/esm2015/form-entry/form-factory/control-relations.factory.js +3 -3
  73. package/esm2015/form-entry/form-factory/form-control.service.js +3 -3
  74. package/esm2015/form-entry/form-factory/form.factory.js +3 -3
  75. package/esm2015/form-entry/form-factory/form.js +2 -1
  76. package/esm2015/form-entry/form-factory/hiders-disablers.factory.js +3 -3
  77. package/esm2015/form-entry/form-factory/question.factory.js +60 -22
  78. package/esm2015/form-entry/form-factory/show-messages.factory.js +3 -3
  79. package/esm2015/form-entry/form-factory/validation.factory.js +17 -10
  80. package/esm2015/form-entry/form-renderer/form-renderer.component.js +4 -4
  81. package/esm2015/form-entry/helpers/historical-expression-helper-service.js +3 -3
  82. package/esm2015/form-entry/helpers/historical-field-helper-service.js +3 -3
  83. package/esm2015/form-entry/helpers/js-expression-helper.js +22 -11
  84. package/esm2015/form-entry/pipes/time-ago.pipe.js +3 -3
  85. package/esm2015/form-entry/question-models/diagnosis-question.js +12 -0
  86. package/esm2015/form-entry/question-models/interfaces/diagnosis-question-options.js +2 -0
  87. package/esm2015/form-entry/question-models/interfaces/select-question-options.js +1 -1
  88. package/esm2015/form-entry/question-models/max-length-validation.model.js +9 -0
  89. package/esm2015/form-entry/question-models/max-validation.model.js +2 -2
  90. package/esm2015/form-entry/question-models/min-length-validation.model.js +9 -0
  91. package/esm2015/form-entry/question-models/min-validation.model.js +2 -2
  92. package/esm2015/form-entry/question-models/multi-select-question.js +1 -1
  93. package/esm2015/form-entry/question-models/select-question.js +1 -1
  94. package/esm2015/form-entry/services/debug-mode.service.js +3 -3
  95. package/esm2015/form-entry/services/form-errors.service.js +3 -3
  96. package/esm2015/form-entry/services/form-schema-compiler.service.js +3 -3
  97. package/esm2015/form-entry/services/historical-encounter-data.service.js +3 -3
  98. package/esm2015/form-entry/validators/max-length.validator.js +17 -0
  99. package/esm2015/form-entry/validators/min-length.validator.js +17 -0
  100. package/esm2015/form-entry/value-adapters/diagnosis.adapter.js +133 -0
  101. package/esm2015/form-entry/value-adapters/encounter.adapter.js +14 -7
  102. package/esm2015/form-entry/value-adapters/obs-adapter-helper.js +3 -3
  103. package/esm2015/form-entry/value-adapters/obs.adapter.js +3 -3
  104. package/esm2015/form-entry/value-adapters/order.adapter.js +3 -3
  105. package/esm2015/form-entry/value-adapters/person-attribute.adapter.js +3 -3
  106. package/esm2015/shared.module.js +4 -4
  107. package/fesm2015/openmrs-ngx-formentry.js +650 -348
  108. package/fesm2015/openmrs-ngx-formentry.js.map +1 -1
  109. package/form-entry/form-factory/form.d.ts +2 -0
  110. package/form-entry/form-factory/question.factory.d.ts +2 -0
  111. package/form-entry/form-factory/validation.factory.d.ts +6 -3
  112. package/form-entry/helpers/js-expression-helper.d.ts +12 -4
  113. package/form-entry/question-models/diagnosis-question.d.ts +8 -0
  114. package/form-entry/question-models/interfaces/diagnosis-question-options.d.ts +7 -0
  115. package/form-entry/question-models/interfaces/select-question-options.d.ts +1 -1
  116. package/form-entry/question-models/max-length-validation.model.d.ts +5 -0
  117. package/form-entry/question-models/min-length-validation.model.d.ts +5 -0
  118. package/form-entry/question-models/multi-select-question.d.ts +1 -1
  119. package/form-entry/question-models/select-question.d.ts +1 -1
  120. package/form-entry/validators/max-length.validator.d.ts +6 -0
  121. package/form-entry/validators/min-length.validator.d.ts +6 -0
  122. package/form-entry/value-adapters/diagnosis.adapter.d.ts +45 -0
  123. package/form-entry/value-adapters/encounter.adapter.d.ts +3 -1
  124. package/package.json +2 -1
  125. package/styles/ngx-formentry.css +7 -5
@@ -2,6 +2,7 @@ import { FormFactory } from './form.factory';
2
2
  import { QuestionFactory } from './question.factory';
3
3
  import { DataSources } from '../data-sources/data-sources';
4
4
  import { NodeBase, GroupNode } from './form-node';
5
+ import { Diagnosis } from '../value-adapters/diagnosis.adapter';
5
6
  export declare class Form {
6
7
  schema: any;
7
8
  formFactory: FormFactory;
@@ -9,6 +10,7 @@ export declare class Form {
9
10
  rootNode: GroupNode;
10
11
  valueProcessingInfo: any;
11
12
  existingOrders: any;
13
+ existingDiagnoses: Array<Diagnosis>;
12
14
  private _dataSourcesContainer;
13
15
  private _showErrors;
14
16
  constructor(schema: any, formFactory: FormFactory, questionFactory: QuestionFactory);
@@ -14,6 +14,7 @@ import { HistoricalHelperService } from '../helpers/historical-expression-helper
14
14
  import { Form } from './form';
15
15
  import { CheckBoxQuestion } from '../question-models/models';
16
16
  import { RadioButtonQuestion } from '../question-models/models';
17
+ import { DiagnosisQuestion } from '../question-models/diagnosis-question';
17
18
  import * as i0 from "@angular/core";
18
19
  export declare class QuestionFactory {
19
20
  dataSources: any;
@@ -45,6 +46,7 @@ export declare class QuestionFactory {
45
46
  toFieldSetQuestion(schemaQuestion: any): QuestionGroup;
46
47
  toEncounterLocationQuestion(schemaQuestion: any): UiSelectQuestion;
47
48
  toTestOrderQuestion(schemaQuestion: any): TestOrderQuestion;
49
+ toDiagnosisQuestion(schemaQuestion: any): DiagnosisQuestion;
48
50
  getSchemaQuestions(schema: any): any;
49
51
  getQuestions(schema: any, foundArray: any): any;
50
52
  getChildrenQuestionModels(schema: any): any;
@@ -1,4 +1,3 @@
1
- import { Validators } from '@angular/forms';
2
1
  import { ConditionalRequiredValidator } from '../validators/conditional-required.validator';
3
2
  import { ConditionalAnsweredValidator } from '../validators/conditional-answered.validator';
4
3
  import { JsExpressionValidator } from '../validators/js-expression.validator';
@@ -14,8 +13,12 @@ export declare class ValidationFactory {
14
13
  get futureDateRestrictionValidator(): any;
15
14
  get maxDateValidator(): any;
16
15
  get minDateValidator(): any;
17
- get minLengthValidator(): any;
18
- get maxLengthValidator(): typeof Validators.maxLength;
16
+ minLengthValidator(minLength: number): (control: import("../../abstract-controls-extension/afe-form-control").AfeFormControl) => {
17
+ [key: string]: any;
18
+ };
19
+ maxLengthValidator(maxLength: number): (control: import("../../abstract-controls-extension/afe-form-control").AfeFormControl) => {
20
+ [key: string]: any;
21
+ };
19
22
  getMinValueValidator(min: number): any;
20
23
  getMaxValueValidator(max: number): any;
21
24
  get jsExpressionValidator(): JsExpressionValidator;
@@ -5,24 +5,32 @@ export declare class JsExpressionHelper {
5
5
  calcBMIForAgeZscore(bmiForAgeRef: any, height: any, weight: any): any;
6
6
  calcWeightForHeightZscore(weightForHeightRef: any, height: any, weight: any): any;
7
7
  calcHeightForAgeZscore(heightForAgeRef: any, height: any, weight: any): any;
8
- calcSouthEastAsiaNonLabCVDRisk(sex: 'M' | 'F', smoker: boolean, age: number, sbp: number, bmi: number): number;
8
+ calcSouthEastAsiaNonLabCVDRisk(sex: 'M' | 'F', smoker?: boolean, age?: number, sbp?: number, bmi?: number): number;
9
9
  isEmpty(val: any): boolean;
10
10
  arrayContains(array: any, members: any): boolean;
11
11
  extractRepeatingGroupValues(key: any, array: any): any;
12
12
  formatDate(value: any, format: any, offset: any): any;
13
13
  arrayContainsAny(array: any, members: any): boolean;
14
- extractObsValue(rawEncounter: any, uuid: any, alternateControl?: any): any;
14
+ /**
15
+ * Takes a target control, an encounter and concept uuid. If the target control has a value it returns it
16
+ * otherwise it tries to find it in the encounter. Finally it returns null of it can't find either of them.
17
+ * @param targetControl
18
+ * @param rawEncounter
19
+ * @param uuid
20
+ * @returns
21
+ */
22
+ getObsFromControlOrEncounter(targetControl: any, rawEncounter: any, uuid: any): any;
15
23
  get helperFunctions(): {
16
24
  arrayContainsAny: (array: any, members: any) => boolean;
17
25
  calcBMI: (height: any, weight: any) => number;
18
26
  calcBMIForAgeZscore: (bmiForAgeRef: any, height: any, weight: any) => any;
19
27
  calcWeightForHeightZscore: (weightForHeightRef: any, height: any, weight: any) => any;
20
28
  calcHeightForAgeZscore: (heightForAgeRef: any, height: any, weight: any) => any;
21
- calcSouthEastAsiaNonLabCVDRisk: (sex: "M" | "F", smoker: boolean, age: number, sbp: number, bmi: number) => number;
29
+ calcSouthEastAsiaNonLabCVDRisk: (sex: "M" | "F", smoker?: boolean, age?: number, sbp?: number, bmi?: number) => number;
22
30
  isEmpty: (val: any) => boolean;
23
31
  arrayContains: (array: any, members: any) => boolean;
24
32
  extractRepeatingGroupValues: (key: any, array: any) => any;
25
- extractObsValue: (rawEncounter: any, uuid: any, alternateControl?: any) => any;
33
+ getObsFromControlOrEncounter: (targetControl: any, rawEncounter: any, uuid: any) => any;
26
34
  };
27
35
  static ɵfac: i0.ɵɵFactoryDeclaration<JsExpressionHelper, never>;
28
36
  static ɵprov: i0.ɵɵInjectableDeclaration<JsExpressionHelper>;
@@ -0,0 +1,8 @@
1
+ import { QuestionBase } from './question-base';
2
+ import { DiagnosisQuestionOptions } from './interfaces/diagnosis-question-options';
3
+ export declare class DiagnosisQuestion extends QuestionBase {
4
+ rendering: string;
5
+ options: any[];
6
+ dataSource?: any;
7
+ constructor(options: DiagnosisQuestionOptions);
8
+ }
@@ -0,0 +1,7 @@
1
+ import { BaseOptions } from '../interfaces/base-options';
2
+ export interface DiagnosisQuestionOptions extends BaseOptions {
3
+ dataSource?: string;
4
+ rendering: string;
5
+ rank: number;
6
+ options?: Array<Record<string, string>>;
7
+ }
@@ -2,7 +2,7 @@ import { BaseOptions } from '../interfaces/base-options';
2
2
  import { DataSource } from '../interfaces/data-source';
3
3
  export interface SelectQuestionOptions extends BaseOptions {
4
4
  options: {
5
- key: string;
5
+ label: string;
6
6
  value: string;
7
7
  }[];
8
8
  dataSource?: DataSource;
@@ -0,0 +1,5 @@
1
+ import { ValidationModel } from './validation.model';
2
+ export declare class MaxLengthValidationModel extends ValidationModel {
3
+ maxlength: number;
4
+ constructor(validations: any);
5
+ }
@@ -0,0 +1,5 @@
1
+ import { ValidationModel } from './validation.model';
2
+ export declare class MinLengthValidationModel extends ValidationModel {
3
+ minlength: number;
4
+ constructor(validations: any);
5
+ }
@@ -2,7 +2,7 @@ import { SelectQuestion } from './select-question';
2
2
  import { MultiSelectQuestionOptions } from './interfaces/multi-select-options';
3
3
  export declare class MultiSelectQuestion extends SelectQuestion {
4
4
  options: {
5
- key: string;
5
+ label: string;
6
6
  value: string;
7
7
  }[];
8
8
  constructor(options: MultiSelectQuestionOptions);
@@ -2,7 +2,7 @@ import { QuestionBase } from './question-base';
2
2
  import { SelectQuestionOptions } from './interfaces/select-question-options';
3
3
  export declare class SelectQuestion extends QuestionBase {
4
4
  options: {
5
- key: string;
5
+ label: string;
6
6
  value: string;
7
7
  }[];
8
8
  dataSource?: any;
@@ -0,0 +1,6 @@
1
+ import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';
2
+ export declare class MaxLengthValidator {
3
+ validate(maxLength: number): (control: AfeFormControl) => {
4
+ [key: string]: any;
5
+ };
6
+ }
@@ -0,0 +1,6 @@
1
+ import { AfeFormControl } from '../../abstract-controls-extension/afe-form-control';
2
+ export declare class MinLengthValidator {
3
+ validate(minLength: number): (control: AfeFormControl) => {
4
+ [key: string]: any;
5
+ };
6
+ }
@@ -0,0 +1,45 @@
1
+ import { Form } from '../form-factory/form';
2
+ import { ValueAdapter } from './value.adapter';
3
+ import * as i0 from "@angular/core";
4
+ export declare class DiagnosisValueAdapter implements ValueAdapter {
5
+ formDiagnosisNodes: any[];
6
+ generateFormPayload(form: Form): DiagnosisPayload[];
7
+ populateForm(form: Form, diagnoses: Array<Diagnosis>): void;
8
+ private _createDiagnosesPayload;
9
+ private _createPayloadDiagnosis;
10
+ private _getDeletedDiagnoses;
11
+ private _updatedOldDiagnoses;
12
+ private _setDiagnosesValues;
13
+ private _findDiagnosisQuestionNodes;
14
+ private _convert;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<DiagnosisValueAdapter, never>;
16
+ static ɵprov: i0.ɵɵInjectableDeclaration<DiagnosisValueAdapter>;
17
+ }
18
+ export interface Diagnosis {
19
+ uuid?: string;
20
+ display?: string;
21
+ encounter?: string;
22
+ patient?: string;
23
+ diagnosis: {
24
+ coded?: {
25
+ uuid: string;
26
+ display?: string;
27
+ };
28
+ nonCoded?: string;
29
+ };
30
+ certainty: 'CONFIRMED' | 'PROVISIONAL';
31
+ rank: number;
32
+ voided?: boolean;
33
+ }
34
+ export interface DiagnosisPayload {
35
+ uuid?: string;
36
+ encounter?: string;
37
+ patient?: string;
38
+ diagnosis: {
39
+ coded?: string;
40
+ nonCoded?: string;
41
+ };
42
+ certainty: 'CONFIRMED' | 'PROVISIONAL';
43
+ rank: number;
44
+ voided?: boolean;
45
+ }
@@ -3,11 +3,13 @@ import { Form } from '../form-factory/form';
3
3
  import { ValueAdapter } from './value.adapter';
4
4
  import { ObsValueAdapter } from './obs.adapter';
5
5
  import { OrderValueAdapter } from './order.adapter';
6
+ import { DiagnosisValueAdapter } from './diagnosis.adapter';
6
7
  import * as i0 from "@angular/core";
7
8
  export declare class EncounterAdapter implements ValueAdapter {
8
9
  ordersAdapter: OrderValueAdapter;
10
+ diagnosesAdapter: DiagnosisValueAdapter;
9
11
  obsAdapter: ObsValueAdapter;
10
- constructor(ordersAdapter: OrderValueAdapter, obsAdapter: ObsValueAdapter);
12
+ constructor(ordersAdapter: OrderValueAdapter, diagnosesAdapter: DiagnosisValueAdapter, obsAdapter: ObsValueAdapter);
11
13
  populateForm(form: Form, payload: any): void;
12
14
  populateNode(rootNode: NodeBase, payload: any): void;
13
15
  generateFormPayload(form: Form): {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openmrs/ngx-formentry",
3
- "version": "3.0.1-pre.94",
3
+ "version": "3.1.1-pre.177",
4
4
  "dependencies": {
5
5
  "tslib": "^2.2.0"
6
6
  },
@@ -14,6 +14,7 @@
14
14
  "@angular/forms": ">=11.2.14 <=12.0.4",
15
15
  "@carbon/styles": "^1.11.0",
16
16
  "@ng-select/ng-select": "^6.1.0",
17
+ "@ngx-translate/core": "^13.0.0",
17
18
  "hammerjs": "^2.0.8",
18
19
  "lodash": "^4.17.4",
19
20
  "moment": "^2.17.1",
@@ -78,7 +78,6 @@
78
78
 
79
79
  .ng-select .ng-select-container .ng-value-container {
80
80
  align-items: stretch;
81
- padding: 0.4375em 0;
82
81
  border-top: 0.84375em solid transparent;
83
82
  }
84
83
 
@@ -97,14 +96,12 @@
97
96
  }
98
97
 
99
98
  .ng-select.ng-select-single .ng-select-container .ng-arrow-wrapper {
100
- align-self: flex-end;
99
+ align-self: center;
101
100
  right: 4px;
102
- top: -5px;
103
101
  }
104
102
 
105
103
  .ng-select.ng-select-single .ng-select-container .ng-clear-wrapper {
106
- align-self: flex-end;
107
- bottom: 7px;
104
+ align-self: center;
108
105
  }
109
106
 
110
107
  .ng-select.ng-select-multiple.ng-select-disabled
@@ -232,10 +229,15 @@
232
229
  }
233
230
 
234
231
  .ng-dropdown-panel {
232
+ margin-top: -1rem;
235
233
  background: #fff;
236
234
  left: 0;
237
235
  }
238
236
 
237
+ .ng-select > .ng-dropdown-panel {
238
+ margin-top: 0;
239
+ }
240
+
239
241
  .ng-dropdown-panel.ng-select-bottom {
240
242
  top: calc(100% - 1.25em);
241
243
  box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2),