bfg-common 1.5.161 → 1.5.162

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 (120) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/components/atoms/TheIcon3.vue +50 -50
  3. package/components/atoms/perPage/PerPage.vue +58 -58
  4. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  5. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  6. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  7. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  8. package/components/common/context/lib/models/interfaces.ts +31 -31
  9. package/components/common/context/recursion/RecursionNew.vue +238 -238
  10. package/components/common/diagramMain/DiagramMain.vue +897 -897
  11. package/components/common/diagramMain/Header.vue +214 -214
  12. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  13. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  14. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/lib/config/utils.ts +1040 -1040
  15. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  16. package/components/common/pages/home/headline/Headline.vue +45 -45
  17. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  18. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  19. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  20. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  21. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  22. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  23. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  24. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  25. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  26. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  27. package/components/common/pages/packages/Packages.vue +208 -208
  28. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  29. package/components/common/readyToComplete/New.vue +66 -66
  30. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  31. package/components/common/recursionTree/RecursionTree.vue +223 -223
  32. package/components/common/select/button/ButtonDropdown.vue +108 -108
  33. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  34. package/components/common/vm/actions/add/Add.vue +785 -785
  35. package/components/common/vm/actions/add/New.vue +556 -556
  36. package/components/common/vm/actions/add/Old.vue +371 -371
  37. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  38. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  39. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  40. package/components/common/vm/actions/add/lib/config/steps.ts +263 -263
  41. package/components/common/vm/actions/clone/Clone.vue +810 -810
  42. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  43. package/components/common/vm/actions/clone/toTemplate/ToTemplate.vue +626 -626
  44. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  45. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +319 -319
  46. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  47. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +100 -100
  48. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  49. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  50. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  51. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +70 -70
  52. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  53. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +338 -338
  54. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  55. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  56. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  57. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +375 -375
  58. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +149 -149
  59. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationNew.vue +74 -74
  60. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +83 -83
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +94 -94
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  75. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  76. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  77. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  78. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  79. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  80. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  81. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  82. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  83. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  84. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  85. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  86. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  87. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +39 -39
  88. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  89. package/components/common/vm/actions/common/lib/utils/capabilities.ts +52 -52
  90. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  91. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +134 -134
  92. package/components/common/vm/actions/common/select/computeResource/treeView/New.vue +44 -44
  93. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +118 -118
  94. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  95. package/components/common/vm/actions/common/select/createType/New.vue +84 -84
  96. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  97. package/components/common/vm/actions/common/select/name/Name.vue +167 -167
  98. package/components/common/vm/actions/common/select/os/New.vue +122 -122
  99. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  100. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  101. package/components/common/vm/actions/common/select/storage/Storage.vue +129 -129
  102. package/components/common/vm/actions/common/select/storage/new/lib/config/table.ts +326 -326
  103. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  104. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  105. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  106. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  107. package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -157
  108. package/components/common/wizards/vm/migrate/lib/validations.ts +68 -68
  109. package/components/common/wizards/vm/migrate/select/computeResource/tableView/TableView.vue +137 -137
  110. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  111. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  112. package/composables/productNameLocal.ts +30 -30
  113. package/composables/useAppVersion.ts +21 -21
  114. package/package.json +2 -2
  115. package/plugins/date.ts +233 -233
  116. package/public/spice-console/lib/images/bitmap.js +203 -203
  117. package/public/spice-console/network/spicechannel.js +383 -383
  118. package/store/main/mutations.ts +7 -7
  119. package/store/main/state.ts +7 -7
  120. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,220 +1,220 @@
1
- <template>
2
- <common-vm-actions-common-customize-hardware-virtual-hardware-limit-new
3
- v-if="isNewView"
4
- v-model:limit="limitLocalByLocalization"
5
- v-model:limit-type="limitTypeLocal"
6
- :limit-errors-texts="limitLocalAndApiErrorsTexts"
7
- :component-type="props.componentType"
8
- :limit-options="limitOptionsLocal"
9
- :limit-type-options="limitTypeOptions"
10
- :disabled="props.disabled"
11
- @select-limit="onSelectLimit"
12
- @remove-error="onRemoveValidationError"
13
- />
14
- <common-vm-actions-common-customize-hardware-virtual-hardware-limit-old
15
- v-else
16
- v-model:limit="limitLocalByLocalization"
17
- v-model:limit-type="limitTypeLocal"
18
- :limit-errors-texts="limitLocalAndApiErrorsTexts"
19
- :component-type="props.componentType"
20
- :limit-options="limitOptionsLocal"
21
- :limit-type-options="limitTypeOptions"
22
- :disabled="props.disabled"
23
- @select-limit="onSelectLimit"
24
- @remove-error="onRemoveValidationError"
25
- />
26
- </template>
27
-
28
- <script setup lang="ts">
29
- import type { UI_I_Localization } from '~/lib/models/interfaces'
30
- import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
31
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
32
- import {
33
- limitOptionsFunc,
34
- limitTypeOptionsFunc,
35
- } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/lib/config/options'
36
-
37
- const props = withDefaults(
38
- defineProps<{
39
- limit: string
40
- limitType: string
41
- type: 'mb' | 'mhz'
42
- componentType: string
43
- errorValidationFields: UI_I_ErrorValidationField<string>[]
44
- disabled?: boolean
45
- limitOptions?: UI_I_OptionItem[]
46
- multiply?: number
47
- }>(),
48
- {
49
- limitOptions: undefined,
50
- multiply: 1,
51
- }
52
- )
53
- const emits = defineEmits<{
54
- (event: 'update:limit', value: string): void
55
- (event: 'update:limit-type', value: string): void
56
- (event: 'invalid', value: boolean): void
57
- (event: 'remove-error-by-title', value: string): void
58
- }>()
59
-
60
- const { $store }: any = useNuxtApp()
61
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
62
-
63
- const localization = computed<UI_I_Localization>(() => useLocal())
64
-
65
- const typeError = computed<string>(() => `${props.componentType}.limit_mb`)
66
-
67
- const apiErrorLocal = computed<string>(() => {
68
- return (
69
- props.errorValidationFields?.find(
70
- (message) => message.field === typeError.value
71
- )?.error_message || ''
72
- )
73
- })
74
-
75
- const binaryKeys: [string, string] =
76
- props.type === 'mb' ? ['mb', 'gb'] : ['mhz', 'ghz']
77
-
78
- const limitOptionsLocal = computed<UI_I_OptionItem[]>(
79
- () => props.limitOptions || limitOptionsFunc(localization.value, binaryKeys)
80
- )
81
- const limitTypeOptions = ref<UI_I_OptionItem[]>(
82
- limitTypeOptionsFunc(localization.value, binaryKeys)
83
- )
84
-
85
- const limitLocalByLocalization = computed<string>({
86
- get() {
87
- return limitLocal.value === 'Unlimited'
88
- ? localization.value.common.unlimited
89
- : limitLocal.value
90
- },
91
- set(newValue) {
92
- limitLocal.value =
93
- newValue === localization.value.common.unlimited ? 'Unlimited' : newValue
94
- },
95
- })
96
- const limitLocal = computed<string>({
97
- get() {
98
- return props.limit
99
- },
100
- set(newValue) {
101
- emits('update:limit', '' + newValue)
102
- },
103
- })
104
- const limitTypeLocal = computed<string>({
105
- get() {
106
- return props.limitType
107
- },
108
- set(newValue) {
109
- emits('update:limit-type', newValue)
110
- },
111
- })
112
-
113
- const { $binary } = useNuxtApp()
114
- const onSelectLimit = ({
115
- value,
116
- type,
117
- }: {
118
- value: number | 'Unlimited'
119
- type: string
120
- }): void => {
121
- limitLocal.value = '' + value
122
- if (limitTypeLocal.value !== type) {
123
- limitTypeLocal.value = type
124
- }
125
-
126
- // if (limitTypeLocal.value === binaryKeys[0] || value === 'Unlimited') {
127
- // limitLocal.value = '' + value
128
- // return
129
- // }
130
- //
131
- // limitLocal.value =
132
- // '' + $binary.universalFromTo(value, binaryKeys[0], binaryKeys[1], 8)
133
- }
134
-
135
- const limitErrorLocalText = computed<string>(() => {
136
- const valueForMin = $binary.universalFromTo(
137
- +limitLocal.value,
138
- limitTypeLocal.value,
139
- limitOptionsLocal.value[0].value.type,
140
- 0
141
- )
142
- const valueForMax = $binary.universalFromTo(
143
- +limitLocal.value,
144
- limitTypeLocal.value,
145
- limitOptionsLocal.value[1].value.type,
146
- 0
147
- )
148
- const minValue = limitOptionsLocal.value[0].value.value
149
- const maxValue = limitOptionsLocal.value[1].value.value
150
- if (valueForMin < minValue) {
151
- const minUnit =
152
- localization.value.common[limitOptionsLocal.value[0].value.type]
153
- return localization.value.common.limitMustBe.replace(
154
- '{0}',
155
- `${minValue} ${minUnit}`
156
- )
157
- }
158
- if (props.limitOptions && valueForMax > maxValue) {
159
- const maxUnit =
160
- localization.value.common[limitOptionsLocal.value[1].value.type]
161
- return localization.value.common.limitMustBeMax.replace(
162
- '{0}',
163
- `${maxValue} ${maxUnit}`
164
- )
165
- }
166
-
167
- const validValue = /^\d+(\.\d+)?$/.test(limitLocal.value)
168
- if (
169
- !validValue &&
170
- (limitLocal.value !== limitOptionsLocal.value[1].value.value ||
171
- props.limitOptions)
172
- ) {
173
- return localization.value.common.inputContainsInvalidCharacters
174
- }
175
-
176
- if (limitLocal.value !== 'Unlimited') {
177
- const value = $binary.universalFromTo(
178
- +limitLocal.value,
179
- limitTypeLocal.value,
180
- binaryKeys[0],
181
- 0
182
- )
183
- if (value % props.multiply !== 0) {
184
- return localization.value.common.valueShouldMultiple.replace(
185
- '{0}',
186
- `${props.multiply} ${binaryKeys[0].toUpperCase()}`
187
- )
188
- }
189
- }
190
-
191
- return ''
192
- })
193
- const limitInvalid = computed<boolean>(() => !!limitErrorLocalText.value)
194
- watch(
195
- limitInvalid,
196
- (newValue) => {
197
- emits('invalid', newValue)
198
- },
199
- { immediate: true }
200
- )
201
-
202
- const limitLocalAndApiErrorsTexts = computed<string>(() => {
203
- const localError = limitErrorLocalText.value
204
- const apiError = apiErrorLocal.value
205
-
206
- let result = ''
207
- if (localError && !apiError) result = localError
208
- if (!localError && apiError) result = apiError
209
- if (localError && apiError) result = localError + ', ' + apiError
210
- if (!localError && apiError) result = apiError
211
-
212
- return result
213
- })
214
-
215
- const onRemoveValidationError = (): void => {
216
- emits('remove-error-by-title', typeError.value)
217
- }
218
- </script>
219
-
220
- <style scoped></style>
1
+ <template>
2
+ <common-vm-actions-common-customize-hardware-virtual-hardware-limit-new
3
+ v-if="isNewView"
4
+ v-model:limit="limitLocalByLocalization"
5
+ v-model:limit-type="limitTypeLocal"
6
+ :limit-errors-texts="limitLocalAndApiErrorsTexts"
7
+ :component-type="props.componentType"
8
+ :limit-options="limitOptionsLocal"
9
+ :limit-type-options="limitTypeOptions"
10
+ :disabled="props.disabled"
11
+ @select-limit="onSelectLimit"
12
+ @remove-error="onRemoveValidationError"
13
+ />
14
+ <common-vm-actions-common-customize-hardware-virtual-hardware-limit-old
15
+ v-else
16
+ v-model:limit="limitLocalByLocalization"
17
+ v-model:limit-type="limitTypeLocal"
18
+ :limit-errors-texts="limitLocalAndApiErrorsTexts"
19
+ :component-type="props.componentType"
20
+ :limit-options="limitOptionsLocal"
21
+ :limit-type-options="limitTypeOptions"
22
+ :disabled="props.disabled"
23
+ @select-limit="onSelectLimit"
24
+ @remove-error="onRemoveValidationError"
25
+ />
26
+ </template>
27
+
28
+ <script setup lang="ts">
29
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
30
+ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
31
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
32
+ import {
33
+ limitOptionsFunc,
34
+ limitTypeOptionsFunc,
35
+ } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/lib/config/options'
36
+
37
+ const props = withDefaults(
38
+ defineProps<{
39
+ limit: string
40
+ limitType: string
41
+ type: 'mb' | 'mhz'
42
+ componentType: string
43
+ errorValidationFields: UI_I_ErrorValidationField<string>[]
44
+ disabled?: boolean
45
+ limitOptions?: UI_I_OptionItem[]
46
+ multiply?: number
47
+ }>(),
48
+ {
49
+ limitOptions: undefined,
50
+ multiply: 1,
51
+ }
52
+ )
53
+ const emits = defineEmits<{
54
+ (event: 'update:limit', value: string): void
55
+ (event: 'update:limit-type', value: string): void
56
+ (event: 'invalid', value: boolean): void
57
+ (event: 'remove-error-by-title', value: string): void
58
+ }>()
59
+
60
+ const { $store }: any = useNuxtApp()
61
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
62
+
63
+ const localization = computed<UI_I_Localization>(() => useLocal())
64
+
65
+ const typeError = computed<string>(() => `${props.componentType}.limit_mb`)
66
+
67
+ const apiErrorLocal = computed<string>(() => {
68
+ return (
69
+ props.errorValidationFields?.find(
70
+ (message) => message.field === typeError.value
71
+ )?.error_message || ''
72
+ )
73
+ })
74
+
75
+ const binaryKeys: [string, string] =
76
+ props.type === 'mb' ? ['mb', 'gb'] : ['mhz', 'ghz']
77
+
78
+ const limitOptionsLocal = computed<UI_I_OptionItem[]>(
79
+ () => props.limitOptions || limitOptionsFunc(localization.value, binaryKeys)
80
+ )
81
+ const limitTypeOptions = ref<UI_I_OptionItem[]>(
82
+ limitTypeOptionsFunc(localization.value, binaryKeys)
83
+ )
84
+
85
+ const limitLocalByLocalization = computed<string>({
86
+ get() {
87
+ return limitLocal.value === 'Unlimited'
88
+ ? localization.value.common.unlimited
89
+ : limitLocal.value
90
+ },
91
+ set(newValue) {
92
+ limitLocal.value =
93
+ newValue === localization.value.common.unlimited ? 'Unlimited' : newValue
94
+ },
95
+ })
96
+ const limitLocal = computed<string>({
97
+ get() {
98
+ return props.limit
99
+ },
100
+ set(newValue) {
101
+ emits('update:limit', '' + newValue)
102
+ },
103
+ })
104
+ const limitTypeLocal = computed<string>({
105
+ get() {
106
+ return props.limitType
107
+ },
108
+ set(newValue) {
109
+ emits('update:limit-type', newValue)
110
+ },
111
+ })
112
+
113
+ const { $binary } = useNuxtApp()
114
+ const onSelectLimit = ({
115
+ value,
116
+ type,
117
+ }: {
118
+ value: number | 'Unlimited'
119
+ type: string
120
+ }): void => {
121
+ limitLocal.value = '' + value
122
+ if (limitTypeLocal.value !== type) {
123
+ limitTypeLocal.value = type
124
+ }
125
+
126
+ // if (limitTypeLocal.value === binaryKeys[0] || value === 'Unlimited') {
127
+ // limitLocal.value = '' + value
128
+ // return
129
+ // }
130
+ //
131
+ // limitLocal.value =
132
+ // '' + $binary.universalFromTo(value, binaryKeys[0], binaryKeys[1], 8)
133
+ }
134
+
135
+ const limitErrorLocalText = computed<string>(() => {
136
+ const valueForMin = $binary.universalFromTo(
137
+ +limitLocal.value,
138
+ limitTypeLocal.value,
139
+ limitOptionsLocal.value[0].value.type,
140
+ 0
141
+ )
142
+ const valueForMax = $binary.universalFromTo(
143
+ +limitLocal.value,
144
+ limitTypeLocal.value,
145
+ limitOptionsLocal.value[1].value.type,
146
+ 0
147
+ )
148
+ const minValue = limitOptionsLocal.value[0].value.value
149
+ const maxValue = limitOptionsLocal.value[1].value.value
150
+ if (valueForMin < minValue) {
151
+ const minUnit =
152
+ localization.value.common[limitOptionsLocal.value[0].value.type]
153
+ return localization.value.common.limitMustBe.replace(
154
+ '{0}',
155
+ `${minValue} ${minUnit}`
156
+ )
157
+ }
158
+ if (props.limitOptions && valueForMax > maxValue) {
159
+ const maxUnit =
160
+ localization.value.common[limitOptionsLocal.value[1].value.type]
161
+ return localization.value.common.limitMustBeMax.replace(
162
+ '{0}',
163
+ `${maxValue} ${maxUnit}`
164
+ )
165
+ }
166
+
167
+ const validValue = /^\d+(\.\d+)?$/.test(limitLocal.value)
168
+ if (
169
+ !validValue &&
170
+ (limitLocal.value !== limitOptionsLocal.value[1].value.value ||
171
+ props.limitOptions)
172
+ ) {
173
+ return localization.value.common.inputContainsInvalidCharacters
174
+ }
175
+
176
+ if (limitLocal.value !== 'Unlimited') {
177
+ const value = $binary.universalFromTo(
178
+ +limitLocal.value,
179
+ limitTypeLocal.value,
180
+ binaryKeys[0],
181
+ 0
182
+ )
183
+ if (value % props.multiply !== 0) {
184
+ return localization.value.common.valueShouldMultiple.replace(
185
+ '{0}',
186
+ `${props.multiply} ${binaryKeys[0].toUpperCase()}`
187
+ )
188
+ }
189
+ }
190
+
191
+ return ''
192
+ })
193
+ const limitInvalid = computed<boolean>(() => !!limitErrorLocalText.value)
194
+ watch(
195
+ limitInvalid,
196
+ (newValue) => {
197
+ emits('invalid', newValue)
198
+ },
199
+ { immediate: true }
200
+ )
201
+
202
+ const limitLocalAndApiErrorsTexts = computed<string>(() => {
203
+ const localError = limitErrorLocalText.value
204
+ const apiError = apiErrorLocal.value
205
+
206
+ let result = ''
207
+ if (localError && !apiError) result = localError
208
+ if (!localError && apiError) result = apiError
209
+ if (localError && apiError) result = localError + ', ' + apiError
210
+ if (!localError && apiError) result = apiError
211
+
212
+ return result
213
+ })
214
+
215
+ const onRemoveValidationError = (): void => {
216
+ emits('remove-error-by-title', typeError.value)
217
+ }
218
+ </script>
219
+
220
+ <style scoped></style>