aloha-vue 2.75.1 → 2.77.0

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 (97) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/aloha-vue.es.js +59994 -59267
  3. package/dist/aloha-vue.umd.js +338 -338
  4. package/package.json +3 -3
  5. package/src/AAlert/i18n/AAlertI18n.js +2 -0
  6. package/src/AAlert/i18n/uk.json +3 -0
  7. package/src/ACarousel/i18n/ACarouselI18n.js +2 -0
  8. package/src/ACarousel/i18n/uk.json +9 -0
  9. package/src/ACloak/i18n/ACloakI18n.js +21 -19
  10. package/src/ACloak/i18n/uk.json +3 -0
  11. package/src/ADisclosure/i18n/ADisclosureI18n.js +21 -19
  12. package/src/ADisclosure/i18n/uk.json +4 -0
  13. package/src/AFilters/i18n/AFiltersI18n.js +21 -19
  14. package/src/AFilters/i18n/uk.json +30 -0
  15. package/src/ALinkCopy/i18n/ALinkCopyI18n.js +21 -19
  16. package/src/ALinkCopy/i18n/uk.json +4 -0
  17. package/src/ALoading/i18n/ALoadingI18n.js +21 -19
  18. package/src/ALoading/i18n/uk.json +3 -0
  19. package/src/AMenu/i18n/AMenu2I18n.js +21 -19
  20. package/src/AMenu/i18n/uk.json +14 -0
  21. package/src/AModal/i18n/AModalI18n.js +21 -19
  22. package/src/AModal/i18n/uk.json +7 -0
  23. package/src/APagination/i18n/APaginationI18n.js +21 -19
  24. package/src/APagination/i18n/uk.json +12 -0
  25. package/src/AShowMore/i18n/AShowMoreI18n.js +21 -19
  26. package/src/AShowMore/i18n/uk.json +6 -0
  27. package/src/ASpinner/i18n/ASpinnerI18n.js +21 -19
  28. package/src/ASpinner/i18n/uk.json +3 -0
  29. package/src/ATable/ATable.js +5 -0
  30. package/src/ATable/compositionAPI/ScrollControlAPI.js +2 -1
  31. package/src/ATable/i18n/ATableI18n.js +21 -19
  32. package/src/ATable/i18n/uk.json +54 -0
  33. package/src/ATableForm/i18n/ATableFormI18n.js +2 -0
  34. package/src/ATableForm/i18n/uk.json +18 -0
  35. package/src/AVerticalScroll/i18n/AVerticalScrollI18n.js +21 -19
  36. package/src/AVerticalScroll/i18n/uk.json +4 -0
  37. package/src/AWizard/i18n/AWizardI18n.js +21 -19
  38. package/src/AWizard/i18n/uk.json +16 -0
  39. package/src/filters/i18n/Filters18n.js +21 -19
  40. package/src/filters/i18n/uk.json +11 -0
  41. package/src/i18n/allLanguages.js +42 -0
  42. package/src/i18n/uk.json +4 -0
  43. package/src/index.js +2 -0
  44. package/src/ui/ACheckbox/i18n/ACheckboxI18n.js +21 -19
  45. package/src/ui/ACheckbox/i18n/uk.json +5 -0
  46. package/src/ui/ADatepicker/i18n/ADatepickerI18n.js +2 -0
  47. package/src/ui/ADatepicker/i18n/uk.json +58 -0
  48. package/src/ui/ADatepickerRange/ADatepickerRange.js +19 -15
  49. package/src/ui/ADatepickerRange/i18n/ADatepickerRangeI18n.js +21 -19
  50. package/src/ui/ADatepickerRange/i18n/uk.json +4 -0
  51. package/src/ui/AErrors/i18n/AErrorsI18n.js +2 -0
  52. package/src/ui/AErrors/i18n/uk.json +3 -0
  53. package/src/ui/AFieldset/AFieldset.js +4 -0
  54. package/src/ui/AFieldset/i18n/AFieldsetI18n.js +21 -19
  55. package/src/ui/AFieldset/i18n/uk.json +4 -0
  56. package/src/ui/AForm/AForm.js +3 -0
  57. package/src/ui/AFormElement/AFormElement.js +5 -0
  58. package/src/ui/AFormElementBtnClear/i18n/AFormElementBtnClearI18n.js +2 -0
  59. package/src/ui/AFormElementBtnClear/i18n/uk.json +3 -0
  60. package/src/ui/AGroup/AGroup.js +3 -0
  61. package/src/ui/AInput/i18n/AInputI18n.js +21 -19
  62. package/src/ui/AInput/i18n/uk.json +4 -0
  63. package/src/ui/AInputCurrency/i18n/AInputCurrencyI18n.js +21 -19
  64. package/src/ui/AInputCurrency/i18n/uk.json +4 -0
  65. package/src/ui/AInputNumber/i18n/AInputNumberI18n.js +21 -19
  66. package/src/ui/AInputNumber/i18n/uk.json +4 -0
  67. package/src/ui/AInputNumberRange/AInputNumberRange.js +19 -15
  68. package/src/ui/AInputNumberRange/i18n/AInputNumberRangeI18n.js +21 -19
  69. package/src/ui/AInputNumberRange/i18n/uk.json +4 -0
  70. package/src/ui/AJson/i18n/AJsonI18n.js +21 -19
  71. package/src/ui/AJson/i18n/uk.json +8 -0
  72. package/src/ui/AMultiselectOrdered/i18n/AMultiselectOrderedI18n.js +21 -19
  73. package/src/ui/AMultiselectOrdered/i18n/uk.json +12 -0
  74. package/src/ui/ARadio/i18n/ARadioI18n.js +21 -19
  75. package/src/ui/ARadio/i18n/uk.json +5 -0
  76. package/src/ui/ARequired/i18n/ARequiredI18n.js +21 -19
  77. package/src/ui/ARequired/i18n/uk.json +3 -0
  78. package/src/ui/ARouterLinkConfig/ARouterLinkConfig.js +8 -0
  79. package/src/ui/ARouterLinkConfig/i18n/ARouterLinkConfigI18n.js +21 -19
  80. package/src/ui/ARouterLinkConfig/i18n/uk.json +14 -0
  81. package/src/ui/ASelect/i18n/ASelectI18n.js +21 -19
  82. package/src/ui/ASelect/i18n/uk.json +11 -0
  83. package/src/ui/ASelectStyle/i18n/ASelectStyleI18n.js +2 -0
  84. package/src/ui/ASelectStyle/i18n/uk.json +293 -0
  85. package/src/ui/ASlider/i18n/ASliderI18n.js +2 -0
  86. package/src/ui/ASlider/i18n/uk.json +5 -0
  87. package/src/ui/ASwitch/i18n/ASwitchI18n.js +21 -19
  88. package/src/ui/ASwitch/i18n/uk.json +5 -0
  89. package/src/ui/ATemplate/ATemplate.js +166 -162
  90. package/src/ui/AValidatedJson/AValidatedJson.js +10 -0
  91. package/src/ui/AValidatedJson/i18n/AValidatedJsonI18n.js +2 -0
  92. package/src/ui/AValidatedJson/i18n/uk.json +4 -0
  93. package/src/ui/compositionApi/UiModelDependenciesProvideAPI.js +11 -0
  94. package/src/ui/compositionApi/UiStyleHideAPI.js +65 -48
  95. package/src/ui/compositionApi/__tests__/UiStyleHideAPI.test.js +113 -0
  96. package/src/ui/const/UiInjectionKeys.js +2 -1
  97. package/src/ui/mixins/UiDependenciesMixinProps.js +14 -0
@@ -1,162 +1,166 @@
1
- import {
2
- h,
3
- withDirectives,
4
- } from "vue";
5
-
6
- import UIExcludeRenderAttributesAPI from "../compositionApi/UIExcludeRenderAttributesAPI";
7
- import UiStyleHideAPI from "../compositionApi/UiStyleHideAPI";
8
-
9
- import ASafeHtml from "../../directives/ASafeHtml";
10
-
11
- export default {
12
- name: "ATemplate",
13
- inheritAttrs: false,
14
- props: {
15
- alwaysTranslate: {
16
- type: Boolean,
17
- required: false,
18
- },
19
- change: {
20
- type: Function,
21
- required: false,
22
- default: () => {},
23
- },
24
- disabled: {
25
- type: Boolean,
26
- required: false,
27
- },
28
- errors: {
29
- type: [String, Array],
30
- required: false,
31
- default: undefined,
32
- },
33
- excludeRenderAttributes: {
34
- type: Array,
35
- required: false,
36
- default: () => [],
37
- },
38
- extra: {
39
- type: Object,
40
- required: false,
41
- default: undefined,
42
- },
43
- helpText: {
44
- type: String,
45
- required: false,
46
- },
47
- html: {
48
- type: String,
49
- required: false,
50
- default: undefined,
51
- },
52
- htmlId: {
53
- type: String,
54
- required: false,
55
- default: undefined,
56
- },
57
- id: {
58
- type: [String, Number],
59
- required: false,
60
- default: undefined,
61
- },
62
- idPrefix: {
63
- type: String,
64
- required: false,
65
- default: undefined,
66
- },
67
- isHide: {
68
- type: Boolean,
69
- required: false,
70
- default: undefined,
71
- },
72
- isRender: {
73
- type: Boolean,
74
- required: false,
75
- default: true,
76
- },
77
- label: {
78
- type: [String, Number],
79
- required: false,
80
- default: undefined,
81
- },
82
- labelClass: {
83
- type: [String, Object],
84
- required: false,
85
- default: undefined,
86
- },
87
- labelScreenReader: {
88
- type: [String, Number],
89
- required: false,
90
- default: undefined,
91
- },
92
- modelValue: {
93
- required: false,
94
- },
95
- options: {
96
- type: [String, Number, Object, Array, Boolean],
97
- required: false,
98
- default: undefined,
99
- },
100
- readonly: {
101
- type: Boolean,
102
- required: false,
103
- },
104
- readonlyDefault: {
105
- type: String,
106
- required: false,
107
- default: "",
108
- },
109
- required: {
110
- type: Boolean,
111
- required: false,
112
- default: false,
113
- },
114
- slotName: {
115
- type: String,
116
- required: false,
117
- default: undefined,
118
- },
119
- },
120
- setup(props) {
121
- const {
122
- attributesToExcludeFromRender,
123
- } = UIExcludeRenderAttributesAPI(props);
124
-
125
- const {
126
- componentStyleHide,
127
- } = UiStyleHideAPI(props);
128
-
129
- return {
130
- attributesToExcludeFromRender,
131
- componentStyleHide,
132
- };
133
- },
134
- render() {
135
- if (!this.isRender) {
136
- return null;
137
- }
138
-
139
- return h("div", {
140
- ...this.$attrs,
141
- style: this.componentStyleHide,
142
- type: undefined,
143
- ...this.attributesToExcludeFromRender,
144
- }, [
145
- this.$slots[this.slotName] ?
146
- h("div", {
147
- class: "a_template",
148
- }, this.$slots[this.slotName]({
149
- options: this.options,
150
- props: this.$props,
151
- })) :
152
- "",
153
- this.html ?
154
- withDirectives(h("div", {
155
- class: "a_template",
156
- }), [
157
- [ASafeHtml, this.html],
158
- ]) :
159
- "",
160
- ]);
161
- },
162
- };
1
+ import {
2
+ h,
3
+ withDirectives,
4
+ } from "vue";
5
+
6
+ import UIExcludeRenderAttributesAPI from "../compositionApi/UIExcludeRenderAttributesAPI";
7
+ import UiStyleHideAPI from "../compositionApi/UiStyleHideAPI";
8
+
9
+ import ASafeHtml from "../../directives/ASafeHtml";
10
+ import UiDependenciesMixinProps from "../mixins/UiDependenciesMixinProps";
11
+
12
+ export default {
13
+ name: "ATemplate",
14
+ inheritAttrs: false,
15
+ mixins: [
16
+ UiDependenciesMixinProps,
17
+ ],
18
+ props: {
19
+ alwaysTranslate: {
20
+ type: Boolean,
21
+ required: false,
22
+ },
23
+ change: {
24
+ type: Function,
25
+ required: false,
26
+ default: () => {},
27
+ },
28
+ disabled: {
29
+ type: Boolean,
30
+ required: false,
31
+ },
32
+ errors: {
33
+ type: [String, Array],
34
+ required: false,
35
+ default: undefined,
36
+ },
37
+ excludeRenderAttributes: {
38
+ type: Array,
39
+ required: false,
40
+ default: () => [],
41
+ },
42
+ extra: {
43
+ type: Object,
44
+ required: false,
45
+ default: undefined,
46
+ },
47
+ helpText: {
48
+ type: String,
49
+ required: false,
50
+ },
51
+ html: {
52
+ type: String,
53
+ required: false,
54
+ default: undefined,
55
+ },
56
+ htmlId: {
57
+ type: String,
58
+ required: false,
59
+ default: undefined,
60
+ },
61
+ id: {
62
+ type: [String, Number],
63
+ required: false,
64
+ default: undefined,
65
+ },
66
+ idPrefix: {
67
+ type: String,
68
+ required: false,
69
+ default: undefined,
70
+ },
71
+ isHide: {
72
+ type: Boolean,
73
+ required: false,
74
+ default: undefined,
75
+ },
76
+ isRender: {
77
+ type: Boolean,
78
+ required: false,
79
+ default: true,
80
+ },
81
+ label: {
82
+ type: [String, Number],
83
+ required: false,
84
+ default: undefined,
85
+ },
86
+ labelClass: {
87
+ type: [String, Object],
88
+ required: false,
89
+ default: undefined,
90
+ },
91
+ labelScreenReader: {
92
+ type: [String, Number],
93
+ required: false,
94
+ default: undefined,
95
+ },
96
+ modelValue: {
97
+ required: false,
98
+ },
99
+ options: {
100
+ type: [String, Number, Object, Array, Boolean],
101
+ required: false,
102
+ default: undefined,
103
+ },
104
+ readonly: {
105
+ type: Boolean,
106
+ required: false,
107
+ },
108
+ readonlyDefault: {
109
+ type: String,
110
+ required: false,
111
+ default: "",
112
+ },
113
+ required: {
114
+ type: Boolean,
115
+ required: false,
116
+ default: false,
117
+ },
118
+ slotName: {
119
+ type: String,
120
+ required: false,
121
+ default: undefined,
122
+ },
123
+ },
124
+ setup(props) {
125
+ const {
126
+ attributesToExcludeFromRender,
127
+ } = UIExcludeRenderAttributesAPI(props);
128
+
129
+ const {
130
+ componentStyleHide,
131
+ } = UiStyleHideAPI(props);
132
+
133
+ return {
134
+ attributesToExcludeFromRender,
135
+ componentStyleHide,
136
+ };
137
+ },
138
+ render() {
139
+ if (!this.isRender) {
140
+ return null;
141
+ }
142
+
143
+ return h("div", {
144
+ ...this.$attrs,
145
+ style: this.componentStyleHide,
146
+ type: undefined,
147
+ ...this.attributesToExcludeFromRender,
148
+ }, [
149
+ this.$slots[this.slotName] ?
150
+ h("div", {
151
+ class: "a_template",
152
+ }, this.$slots[this.slotName]({
153
+ options: this.options,
154
+ props: this.$props,
155
+ })) :
156
+ "",
157
+ this.html ?
158
+ withDirectives(h("div", {
159
+ class: "a_template",
160
+ }), [
161
+ [ASafeHtml, this.html],
162
+ ]) :
163
+ "",
164
+ ]);
165
+ },
166
+ };
@@ -25,6 +25,7 @@ import ModelAPI from "./compositionAPI/ModelAPI";
25
25
  import SingleModeAPI from "./compositionAPI/SingleModeAPI";
26
26
  import TranslateAPI from "./compositionAPI/TranslateAPI";
27
27
 
28
+ import UiDependenciesMixinProps from "../mixins/UiDependenciesMixinProps";
28
29
  import {
29
30
  uniqueId,
30
31
  } from "lodash-es";
@@ -36,6 +37,9 @@ const Plus = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fil
36
37
  export default {
37
38
  name: "AValidatedJson",
38
39
  inheritAttrs: false,
40
+ mixins: [
41
+ UiDependenciesMixinProps,
42
+ ],
39
43
  props: {
40
44
  alwaysTranslate: {
41
45
  type: Boolean,
@@ -353,6 +357,7 @@ export default {
353
357
  ...this.$attrs,
354
358
  alwaysTranslate: this.alwaysTranslate,
355
359
  children: this.singleModeChildren,
360
+ dependencies: this.dependencies,
356
361
  disabled: this.disabled,
357
362
  errors: this.errors,
358
363
  excludeRenderAttributes: this.excludeRenderAttributes,
@@ -368,6 +373,7 @@ export default {
368
373
  labelDescription: this.labelDescription,
369
374
  labelScreenReader: this.labelScreenReader,
370
375
  modelAll: this.modelAll,
376
+ modelDependencies: this.modelDependencies,
371
377
  modelValue: this.modelValue,
372
378
  readonly: this.readonly,
373
379
  required: this.required,
@@ -394,6 +400,7 @@ export default {
394
400
  "a_validated_json a_validated_json_list",
395
401
  this.$attrs.class,
396
402
  ],
403
+ dependencies: this.dependencies,
397
404
  errors: this.errors ? "_A_VALIDATED_JSON_ERROR_FIELDSET_" : undefined,
398
405
  extra: this.extra,
399
406
  helpText: this.helpText,
@@ -403,6 +410,7 @@ export default {
403
410
  labelClass: this.labelClass,
404
411
  labelDescription: this.labelDescription,
405
412
  labelScreenReader: this.labelScreenReader,
413
+ modelDependencies: this.modelDependencies,
406
414
  required: this.required,
407
415
  slotName: `slotAppend_${ this.id }`,
408
416
  }, {
@@ -498,6 +506,7 @@ export default {
498
506
  "a_validated_json a_validated_json_json",
499
507
  this.$attrs.class,
500
508
  ],
509
+ dependencies: this.dependencies,
501
510
  extra: this.extra,
502
511
  errors: this.errors ? "_A_VALIDATED_JSON_ERROR_FIELDSET_" : undefined,
503
512
  helpText: this.helpText,
@@ -507,6 +516,7 @@ export default {
507
516
  labelClass: this.labelClass,
508
517
  labelDescription: this.labelDescription,
509
518
  labelScreenReader: this.labelScreenReader,
519
+ modelDependencies: this.modelDependencies,
510
520
  required: this.required,
511
521
  slotName: "slotAppend",
512
522
  }, {
@@ -6,6 +6,7 @@ import fr from "./fr.json";
6
6
  import hr from "./hr.json";
7
7
  import it from "./it.json";
8
8
  import ru from "./ru.json";
9
+ import uk from "./uk.json";
9
10
 
10
11
  export default {
11
12
  ar,
@@ -16,4 +17,5 @@ export default {
16
17
  hr,
17
18
  it,
18
19
  ru,
20
+ uk,
19
21
  };
@@ -0,0 +1,4 @@
1
+ {
2
+ "_A_FIELDSET_COLLAPSE_OPEN_": "Відкрити",
3
+ "_A_FIELDSET_COLLAPSE_CLOSE_": "Закрити"
4
+ }
@@ -0,0 +1,11 @@
1
+ import {
2
+ provide,
3
+ } from "vue";
4
+
5
+ import {
6
+ AModelDependenciesInjection,
7
+ } from "../const/UiInjectionKeys";
8
+
9
+ export default function UiModelDependenciesProvideAPI(modelDependencies) {
10
+ provide(AModelDependenciesInjection, modelDependencies);
11
+ }
@@ -1,48 +1,65 @@
1
- import {
2
- computed,
3
- toRef,
4
- } from "vue";
5
-
6
- import {
7
- forEach,
8
- isArray,
9
- isPlainObject,
10
- } from "lodash-es";
11
-
12
- export default function UiStyleHideAPI(props) {
13
- const dependencies = toRef(props, "dependencies");
14
- const isHide = toRef(props, "isHide");
15
- const modelDependencies = toRef(props, "modelDependencies");
16
-
17
- const isComponentVisibleWithDependence = ({ id, value }) => {
18
- return modelDependencies.value?.[id] === value;
19
- };
20
-
21
- const isComponentHideDependencies = computed(() => {
22
- if (!dependencies.value) {
23
- return false;
24
- }
25
- if (isPlainObject(dependencies.value)) {
26
- return !isComponentVisibleWithDependence(dependencies.value);
27
- }
28
- if (isArray(dependencies.value)) {
29
- let isHide = false;
30
- forEach(dependencies.value, dependence => {
31
- if (!isComponentVisibleWithDependence(dependence)) {
32
- isHide = true;
33
- return false;
34
- }
35
- });
36
- return isHide;
37
- }
38
- return false;
39
- });
40
-
41
- const componentStyleHide = computed(() => {
42
- return isHide.value || isComponentHideDependencies.value ? "display: none;" : "";
43
- });
44
-
45
- return {
46
- componentStyleHide,
47
- };
48
- }
1
+ import {
2
+ computed,
3
+ inject,
4
+ toRef,
5
+ unref,
6
+ } from "vue";
7
+
8
+ import {
9
+ AModelDependenciesInjection,
10
+ } from "../const/UiInjectionKeys";
11
+ import {
12
+ forEach,
13
+ isArray,
14
+ isEmpty,
15
+ isPlainObject,
16
+ } from "lodash-es";
17
+
18
+ export default function UiStyleHideAPI(props) {
19
+ const dependencies = toRef(props, "dependencies");
20
+ const isHide = toRef(props, "isHide");
21
+ const modelDependencies = toRef(props, "modelDependencies");
22
+ const modelDependenciesInjected = inject(AModelDependenciesInjection, undefined);
23
+
24
+ const modelDependenciesLocal = computed(() => {
25
+ if (!isEmpty(modelDependencies.value)) {
26
+ return modelDependencies.value;
27
+ }
28
+ if (modelDependenciesInjected !== undefined) {
29
+ return unref(modelDependenciesInjected);
30
+ }
31
+ return modelDependencies.value;
32
+ });
33
+
34
+ const isComponentVisibleWithDependence = ({ id, value }) => {
35
+ return modelDependenciesLocal.value?.[id] === value;
36
+ };
37
+
38
+ const isComponentHideDependencies = computed(() => {
39
+ if (!dependencies.value) {
40
+ return false;
41
+ }
42
+ if (isPlainObject(dependencies.value)) {
43
+ return !isComponentVisibleWithDependence(dependencies.value);
44
+ }
45
+ if (isArray(dependencies.value)) {
46
+ let isHide = false;
47
+ forEach(dependencies.value, dependence => {
48
+ if (!isComponentVisibleWithDependence(dependence)) {
49
+ isHide = true;
50
+ return false;
51
+ }
52
+ });
53
+ return isHide;
54
+ }
55
+ return false;
56
+ });
57
+
58
+ const componentStyleHide = computed(() => {
59
+ return isHide.value || isComponentHideDependencies.value ? "display: none;" : "";
60
+ });
61
+
62
+ return {
63
+ componentStyleHide,
64
+ };
65
+ }
@@ -0,0 +1,113 @@
1
+ /* eslint-disable vue/one-component-per-file */
2
+ import {
3
+ defineComponent,
4
+ h,
5
+ nextTick,
6
+ provide,
7
+ ref,
8
+ } from "vue";
9
+ import {
10
+ mount,
11
+ } from "@vue/test-utils";
12
+
13
+ import UiStyleHideAPI from "../UiStyleHideAPI";
14
+
15
+ import {
16
+ AModelDependenciesInjection,
17
+ } from "../../const/UiInjectionKeys";
18
+
19
+ const Consumer = defineComponent({
20
+ name: "UiStyleHideAPIConsumer",
21
+ props: {
22
+ dependencies: {
23
+ type: [Array, Object],
24
+ default: undefined,
25
+ },
26
+ isHide: {
27
+ type: Boolean,
28
+ default: false,
29
+ },
30
+ modelDependencies: {
31
+ type: Object,
32
+ default: undefined,
33
+ },
34
+ },
35
+ setup(props) {
36
+ const {
37
+ componentStyleHide,
38
+ } = UiStyleHideAPI(props);
39
+
40
+ return () => h("div", {
41
+ style: componentStyleHide.value,
42
+ });
43
+ },
44
+ });
45
+
46
+ describe("UiStyleHideAPI", () => {
47
+ it("uses the nearest injected form model reactively", async() => {
48
+ const modelDependencies = ref({
49
+ controller: false,
50
+ });
51
+ const Provider = defineComponent({
52
+ name: "UiStyleHideAPIProvider",
53
+ setup() {
54
+ provide(AModelDependenciesInjection, modelDependencies);
55
+ return () => h(Consumer, {
56
+ dependencies: {
57
+ id: "controller",
58
+ value: true,
59
+ },
60
+ });
61
+ },
62
+ });
63
+ const wrapper = mount(Provider);
64
+
65
+ expect(wrapper.get("div").isVisible()).toBe(false);
66
+
67
+ modelDependencies.value = {
68
+ controller: true,
69
+ };
70
+ await nextTick();
71
+
72
+ expect(wrapper.get("div").isVisible()).toBe(true);
73
+ });
74
+
75
+ it("falls back to the modelDependencies prop without a provider", () => {
76
+ const wrapper = mount(Consumer, {
77
+ props: {
78
+ dependencies: {
79
+ id: "controller",
80
+ value: true,
81
+ },
82
+ modelDependencies: {
83
+ controller: true,
84
+ },
85
+ },
86
+ });
87
+
88
+ expect(wrapper.get("div").isVisible()).toBe(true);
89
+ });
90
+
91
+ it("allows an explicit modelDependencies prop to override an injected model", () => {
92
+ const Provider = defineComponent({
93
+ name: "UiStyleHideAPIOverrideProvider",
94
+ setup() {
95
+ provide(AModelDependenciesInjection, ref({
96
+ controller: false,
97
+ }));
98
+ return () => h(Consumer, {
99
+ dependencies: {
100
+ id: "controller",
101
+ value: true,
102
+ },
103
+ modelDependencies: {
104
+ controller: true,
105
+ },
106
+ });
107
+ },
108
+ });
109
+ const wrapper = mount(Provider);
110
+
111
+ expect(wrapper.get("div").isVisible()).toBe(true);
112
+ });
113
+ });
@@ -1 +1,2 @@
1
- export const AIsDataPreparedInjection = "AIsDataPrepared";
1
+ export const AIsDataPreparedInjection = "AIsDataPrepared";
2
+ export const AModelDependenciesInjection = "AModelDependencies";
@@ -0,0 +1,14 @@
1
+ export default {
2
+ props: {
3
+ dependencies: {
4
+ type: [Array, Object],
5
+ required: false,
6
+ default: undefined,
7
+ },
8
+ modelDependencies: {
9
+ type: Object,
10
+ required: false,
11
+ default: undefined,
12
+ },
13
+ },
14
+ };