bfg-common 1.4.664 → 1.4.665

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 (136) hide show
  1. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  2. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  3. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  4. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  5. package/components/atoms/TheIcon3.vue +50 -50
  6. package/components/atoms/modal/bySteps/BySteps.vue +253 -253
  7. package/components/atoms/stack/StackBlock.vue +185 -185
  8. package/components/atoms/table/dataGrid/DataGrid.vue +1696 -1696
  9. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +222 -222
  10. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +91 -91
  11. package/components/common/browse/BrowseNew.vue +237 -237
  12. package/components/common/browse/BrowseOld.vue +217 -217
  13. package/components/common/browse/blocks/contents/Files.vue +37 -37
  14. package/components/common/browse/blocks/contents/FilesOld.vue +72 -72
  15. package/components/common/browse/blocks/contents/filesNew/FilesNew.vue +96 -96
  16. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  17. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  18. package/components/common/browse/lib/models/interfaces.ts +5 -5
  19. package/components/common/context/lib/models/interfaces.ts +30 -30
  20. package/components/common/context/recursion/Recursion.vue +86 -86
  21. package/components/common/context/recursion/RecursionNew.vue +199 -199
  22. package/components/common/context/recursion/RecursionOld.vue +213 -213
  23. package/components/common/diagramMain/Header.vue +211 -211
  24. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  25. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  26. package/components/common/diagramMain/lib/models/types.ts +21 -21
  27. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  28. package/components/common/diagramMain/modals/ManagePhysicalAdaptersModal.vue +330 -330
  29. package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +40 -40
  30. package/components/common/diagramMain/modals/editSettings/EditSettings.vue +497 -497
  31. package/components/common/diagramMain/modals/editSettings/EditSettingsModal.vue +812 -812
  32. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +214 -214
  33. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +189 -189
  34. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +163 -163
  35. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +175 -175
  36. package/components/common/diagramMain/modals/editSettings/tabs/TrafficShaping.vue +398 -398
  37. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +346 -346
  38. package/components/common/diagramMain/modals/editSettings/tabs/port/PortProperties.vue +205 -205
  39. package/components/common/diagramMain/modals/lib/config/diagramConfig.ts +23 -23
  40. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  41. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  42. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +87 -87
  43. package/components/common/diagramMain/modals/lib/utils/index.ts +24 -24
  44. package/components/common/diagramMain/modals/migrateVmkernelAdapter/MigrateVmkernelAdapter.vue +537 -537
  45. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  46. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +169 -169
  47. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  48. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +14 -14
  49. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  50. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  51. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  52. package/components/common/diagramMain/port/Ports.vue +47 -47
  53. package/components/common/layout/theHeader/helpMenu/About.vue +85 -85
  54. package/components/common/layout/theHeader/helpMenu/aboutNew/AboutNew.vue +105 -105
  55. package/components/common/mainNavigationPanel/MainNavigationPanel.vue +152 -152
  56. package/components/common/modals/confirmByInput/ConfirmByInput.vue +206 -206
  57. package/components/common/modals/unsavedChanges/UnsavedChanges.vue +56 -56
  58. package/components/common/select/button/ButtonDropdown.vue +108 -108
  59. package/components/common/spiceConsole/Drawer.vue +370 -370
  60. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  61. package/components/common/split/vertical/Vertical.vue +160 -160
  62. package/components/common/vm/actions/add/Add.vue +617 -617
  63. package/components/common/vm/actions/clone/lib/config/steps.ts +129 -129
  64. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +267 -267
  65. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +269 -269
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +118 -118
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +161 -161
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +165 -165
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +55 -55
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +338 -338
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +147 -147
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeOld.vue +56 -55
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +44 -44
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +281 -281
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +124 -124
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/LocationOld.vue +134 -134
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +63 -63
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +95 -95
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +69 -69
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressOld.vue +83 -83
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceNew.vue +85 -85
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceOld.vue +91 -91
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +35 -35
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +48 -48
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +30 -30
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/typeSelection/TypeSelectionNew.vue +46 -46
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +56 -56
  95. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  96. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  97. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +107 -107
  98. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +115 -115
  99. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +54 -54
  100. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  101. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  102. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  103. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  104. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  105. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/FirmwareNew.vue +42 -42
  106. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +25 -25
  107. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  108. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  109. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +141 -141
  110. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  111. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  112. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  113. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +30 -30
  114. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  115. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapNew.vue +39 -39
  116. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  117. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +102 -102
  118. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordOld.vue +94 -94
  119. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  120. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +38 -38
  121. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  122. package/components/common/vm/actions/common/select/storage/Storage.vue +130 -130
  123. package/components/common/vm/actions/common/select/storage/StorageOld.vue +129 -129
  124. package/components/common/vm/actions/editSettings/EditSettings.vue +232 -232
  125. package/components/common/vm/actions/editSettings/EditSettingsOld.vue +183 -183
  126. package/components/common/vm/actions/editSettings/new/New.vue +177 -177
  127. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  128. package/composables/productNameLocal.ts +30 -30
  129. package/package.json +1 -1
  130. package/plugins/date.ts +233 -233
  131. package/plugins/recursion.ts +311 -311
  132. package/public/spice-console/lib/images/bitmap.js +203 -203
  133. package/public/spice-console/network/spicechannel.js +383 -383
  134. package/store/main/mutations.ts +7 -7
  135. package/store/main/state.ts +7 -7
  136. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,214 +1,214 @@
1
- <template>
2
- <div class="wizard-content__container">
3
- <div class="wizard-content">
4
- <atoms-alert
5
- v-if="isShowErrorMessage"
6
- status="alert-danger"
7
- :items="validationMessagesArray"
8
- test-id="network-properties-alert"
9
- @remove="onHideErrorMessageAlert"
10
- />
11
- <form id="network-properties-form">
12
- <div class="horizontal-flex-container">
13
- <label class="property-label-group" for="network-label">
14
- {{ localization.common.networkLabel }}
15
- </label>
16
- <div class="margin-left-property-value-group">
17
- <div class="property-value-group">
18
- <fieldset>
19
- <atoms-tooltip-error
20
- :has-error="!!props.errorMessages.networkLabel"
21
- >
22
- <template #elem>
23
- <input
24
- id="network-label"
25
- v-model="fieldsValues.networkLabel"
26
- data-id="network-label-input"
27
- name="network-label"
28
- type="text"
29
- :class="[
30
- 'tooltip-field',
31
- {
32
- 'danger-not-valid': props.errorMessages.networkLabel,
33
- },
34
- ]"
35
- @click.stop
36
- />
37
- </template>
38
- <template #content>
39
- {{ props.errorMessages.networkLabel }}
40
- </template>
41
- </atoms-tooltip-error>
42
- </fieldset>
43
- </div>
44
- </div>
45
- </div>
46
- <div class="horizontal-flex-container port-properties-vlanid-row">
47
- <label class="property-label-group">
48
- {{ localization.common.vlanId }}
49
- </label>
50
- <div class="margin-left-property-value-group">
51
- <div class="property-value-group">
52
- <fieldset>
53
- <div class="flex-align-center">
54
- <atoms-combobox
55
- v-model="fieldsValues.vlanId"
56
- :items="vlanIdSelectData"
57
- test-id="vlan-id-select-combobox"
58
- @click.stop
59
- @select="selectVlanId"
60
- />
61
- <div
62
- v-show="props.errorMessages.vlanId"
63
- class="flex-align-center"
64
- >
65
- <div class="tooltip">
66
- <atoms-the-icon
67
- width="24px"
68
- height="24px"
69
- class="is-error tooltip-trigger"
70
- name="info"
71
- />
72
- <div class="tooltip-top-left tooltip-content error">
73
- {{ props.errorMessages.vlanId }}
74
- </div>
75
- </div>
76
- </div>
77
- </div>
78
- </fieldset>
79
- </div>
80
- </div>
81
- </div>
82
- </form>
83
- </div>
84
- </div>
85
- </template>
86
-
87
- <script setup lang="ts">
88
- import type { UI_I_Localization } from '~/lib/models/interfaces'
89
- import type {
90
- UI_I_ModalsInitialData,
91
- UI_I_EditSettingsErrorMessage,
92
- UI_I_PropertiesFields,
93
- } from '~/components/common/diagramMain/lib/models/interfaces'
94
- import type { UI_T_PropertiesFieldName } from '~/components/common/diagramMain/lib/models/types'
95
- import { validationMessagesArrayFunc } from '~/components/common/diagramMain/modals/lib/utils'
96
- import { vlanIdSelectData } from '~/components/common/wizards/network/add/lib/config/config'
97
-
98
- // Props from up
99
- const props = withDefaults(
100
- defineProps<{
101
- isShowErrorMessageAlert: boolean
102
- initialData?: UI_I_ModalsInitialData
103
- errorMessages: UI_I_EditSettingsErrorMessage
104
- hasErrorMessages?: boolean
105
- networkAlreadyExists: boolean
106
- }>(),
107
- {
108
- initialData: () => ({}),
109
- }
110
- )
111
-
112
- const validationMessagesArray = computed(() =>
113
- validationMessagesArrayFunc(['networkLabel', 'vlanId'], props.errorMessages)
114
- )
115
-
116
- // UI_I_Localization
117
- const localization = computed<UI_I_Localization>(() => useLocal())
118
-
119
- // For showing component validation errors on the top of modal
120
- const isShowErrorMessage = computed<boolean>(
121
- () => props.isShowErrorMessageAlert && props.hasErrorMessages
122
- )
123
-
124
- const fieldsValues = ref<UI_I_PropertiesFields>(
125
- useDeepCopy({
126
- vlanId: props.initialData.vlanId || 'None (0)',
127
- networkLabel: props.initialData.networkLabel || 'Network',
128
- })
129
- )
130
-
131
- const selectVlanId = (id: string): void => {
132
- fieldsValues.value.vlanId = id
133
- }
134
-
135
- // Validation
136
- const emits = defineEmits<{
137
- (
138
- event: 'change-error-messages',
139
- errorMessage: string,
140
- fieldName: keyof UI_I_EditSettingsErrorMessage
141
- ): void
142
- (event: 'hide-error-message-alert'): void
143
- (
144
- event: 'change-edit-properties-data',
145
- propertiesData: UI_I_PropertiesFields
146
- ): void
147
- }>()
148
-
149
- const onHideErrorMessageAlert = () => emits('hide-error-message-alert')
150
-
151
- const onChangeData = (data: UI_I_PropertiesFields) =>
152
- emits('change-edit-properties-data', data)
153
-
154
- const changeErrorMessage = (
155
- errorMessage: string,
156
- fieldName: keyof UI_I_EditSettingsErrorMessage
157
- ) => emits('change-error-messages', errorMessage, fieldName)
158
-
159
- const messageTexts = (local: UI_I_Localization) => ({
160
- vlanId: local.common.vlanIdInvalidMessage,
161
- networkLabel: local.common.networkLabelInvalidMessage,
162
- })
163
-
164
- const isNumberInRange = (value: number | string, down: number, up: number) =>
165
- isNaN(Number(value)) || Number(value) < down || Number(value) > up
166
-
167
- const setMessageOnChangedField = (
168
- values: string | number,
169
- name: UI_T_PropertiesFieldName,
170
- text: string
171
- ) => {
172
- if (name === 'networkLabel' && !values) {
173
- changeErrorMessage(text, name)
174
- return
175
- } else if (name === 'networkLabel' && props.networkAlreadyExists) return
176
-
177
- if (
178
- name === 'vlanId' &&
179
- values !== 'None (0)' &&
180
- values !== 'All (4095)' &&
181
- (isNumberInRange(values, 0, 4095) || values === '')
182
- ) {
183
- changeErrorMessage(text, name)
184
- return
185
- }
186
- changeErrorMessage('', name)
187
- }
188
-
189
- watch(
190
- fieldsValues,
191
- (newValues: UI_I_PropertiesFields) => {
192
- setMessageOnChangedField(
193
- newValues.vlanId,
194
- 'vlanId',
195
- messageTexts(localization.value).vlanId
196
- )
197
- setMessageOnChangedField(
198
- newValues.networkLabel,
199
- 'networkLabel',
200
- messageTexts(localization.value).networkLabel
201
- )
202
- onChangeData(newValues)
203
- !props.hasErrorMessages && onHideErrorMessageAlert()
204
- },
205
- { deep: true }
206
- )
207
-
208
- onMounted(() => {
209
- onChangeData(fieldsValues.value)
210
- })
211
- onUnmounted(() => {
212
- onHideErrorMessageAlert()
213
- })
214
- </script>
1
+ <template>
2
+ <div class="wizard-content__container">
3
+ <div class="wizard-content">
4
+ <atoms-alert
5
+ v-if="isShowErrorMessage"
6
+ status="alert-danger"
7
+ :items="validationMessagesArray"
8
+ test-id="network-properties-alert"
9
+ @remove="onHideErrorMessageAlert"
10
+ />
11
+ <form id="network-properties-form">
12
+ <div class="horizontal-flex-container">
13
+ <label class="property-label-group" for="network-label">
14
+ {{ localization.common.networkLabel }}
15
+ </label>
16
+ <div class="margin-left-property-value-group">
17
+ <div class="property-value-group">
18
+ <fieldset>
19
+ <atoms-tooltip-error
20
+ :has-error="!!props.errorMessages.networkLabel"
21
+ >
22
+ <template #elem>
23
+ <input
24
+ id="network-label"
25
+ v-model="fieldsValues.networkLabel"
26
+ data-id="network-label-input"
27
+ name="network-label"
28
+ type="text"
29
+ :class="[
30
+ 'tooltip-field',
31
+ {
32
+ 'danger-not-valid': props.errorMessages.networkLabel,
33
+ },
34
+ ]"
35
+ @click.stop
36
+ />
37
+ </template>
38
+ <template #content>
39
+ {{ props.errorMessages.networkLabel }}
40
+ </template>
41
+ </atoms-tooltip-error>
42
+ </fieldset>
43
+ </div>
44
+ </div>
45
+ </div>
46
+ <div class="horizontal-flex-container port-properties-vlanid-row">
47
+ <label class="property-label-group">
48
+ {{ localization.common.vlanId }}
49
+ </label>
50
+ <div class="margin-left-property-value-group">
51
+ <div class="property-value-group">
52
+ <fieldset>
53
+ <div class="flex-align-center">
54
+ <atoms-combobox
55
+ v-model="fieldsValues.vlanId"
56
+ :items="vlanIdSelectData"
57
+ test-id="vlan-id-select-combobox"
58
+ @click.stop
59
+ @select="selectVlanId"
60
+ />
61
+ <div
62
+ v-show="props.errorMessages.vlanId"
63
+ class="flex-align-center"
64
+ >
65
+ <div class="tooltip">
66
+ <atoms-the-icon
67
+ width="24px"
68
+ height="24px"
69
+ class="is-error tooltip-trigger"
70
+ name="info"
71
+ />
72
+ <div class="tooltip-top-left tooltip-content error">
73
+ {{ props.errorMessages.vlanId }}
74
+ </div>
75
+ </div>
76
+ </div>
77
+ </div>
78
+ </fieldset>
79
+ </div>
80
+ </div>
81
+ </div>
82
+ </form>
83
+ </div>
84
+ </div>
85
+ </template>
86
+
87
+ <script setup lang="ts">
88
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
89
+ import type {
90
+ UI_I_ModalsInitialData,
91
+ UI_I_EditSettingsErrorMessage,
92
+ UI_I_PropertiesFields,
93
+ } from '~/components/common/diagramMain/lib/models/interfaces'
94
+ import type { UI_T_PropertiesFieldName } from '~/components/common/diagramMain/lib/models/types'
95
+ import { validationMessagesArrayFunc } from '~/components/common/diagramMain/modals/lib/utils'
96
+ import { vlanIdSelectData } from '~/components/common/wizards/network/add/lib/config/config'
97
+
98
+ // Props from up
99
+ const props = withDefaults(
100
+ defineProps<{
101
+ isShowErrorMessageAlert: boolean
102
+ initialData?: UI_I_ModalsInitialData
103
+ errorMessages: UI_I_EditSettingsErrorMessage
104
+ hasErrorMessages?: boolean
105
+ networkAlreadyExists: boolean
106
+ }>(),
107
+ {
108
+ initialData: () => ({}),
109
+ }
110
+ )
111
+
112
+ const validationMessagesArray = computed(() =>
113
+ validationMessagesArrayFunc(['networkLabel', 'vlanId'], props.errorMessages)
114
+ )
115
+
116
+ // UI_I_Localization
117
+ const localization = computed<UI_I_Localization>(() => useLocal())
118
+
119
+ // For showing component validation errors on the top of modal
120
+ const isShowErrorMessage = computed<boolean>(
121
+ () => props.isShowErrorMessageAlert && props.hasErrorMessages
122
+ )
123
+
124
+ const fieldsValues = ref<UI_I_PropertiesFields>(
125
+ useDeepCopy({
126
+ vlanId: props.initialData.vlanId || 'None (0)',
127
+ networkLabel: props.initialData.networkLabel || 'Network',
128
+ })
129
+ )
130
+
131
+ const selectVlanId = (id: string): void => {
132
+ fieldsValues.value.vlanId = id
133
+ }
134
+
135
+ // Validation
136
+ const emits = defineEmits<{
137
+ (
138
+ event: 'change-error-messages',
139
+ errorMessage: string,
140
+ fieldName: keyof UI_I_EditSettingsErrorMessage
141
+ ): void
142
+ (event: 'hide-error-message-alert'): void
143
+ (
144
+ event: 'change-edit-properties-data',
145
+ propertiesData: UI_I_PropertiesFields
146
+ ): void
147
+ }>()
148
+
149
+ const onHideErrorMessageAlert = () => emits('hide-error-message-alert')
150
+
151
+ const onChangeData = (data: UI_I_PropertiesFields) =>
152
+ emits('change-edit-properties-data', data)
153
+
154
+ const changeErrorMessage = (
155
+ errorMessage: string,
156
+ fieldName: keyof UI_I_EditSettingsErrorMessage
157
+ ) => emits('change-error-messages', errorMessage, fieldName)
158
+
159
+ const messageTexts = (local: UI_I_Localization) => ({
160
+ vlanId: local.common.vlanIdInvalidMessage,
161
+ networkLabel: local.common.networkLabelInvalidMessage,
162
+ })
163
+
164
+ const isNumberInRange = (value: number | string, down: number, up: number) =>
165
+ isNaN(Number(value)) || Number(value) < down || Number(value) > up
166
+
167
+ const setMessageOnChangedField = (
168
+ values: string | number,
169
+ name: UI_T_PropertiesFieldName,
170
+ text: string
171
+ ) => {
172
+ if (name === 'networkLabel' && !values) {
173
+ changeErrorMessage(text, name)
174
+ return
175
+ } else if (name === 'networkLabel' && props.networkAlreadyExists) return
176
+
177
+ if (
178
+ name === 'vlanId' &&
179
+ values !== 'None (0)' &&
180
+ values !== 'All (4095)' &&
181
+ (isNumberInRange(values, 0, 4095) || values === '')
182
+ ) {
183
+ changeErrorMessage(text, name)
184
+ return
185
+ }
186
+ changeErrorMessage('', name)
187
+ }
188
+
189
+ watch(
190
+ fieldsValues,
191
+ (newValues: UI_I_PropertiesFields) => {
192
+ setMessageOnChangedField(
193
+ newValues.vlanId,
194
+ 'vlanId',
195
+ messageTexts(localization.value).vlanId
196
+ )
197
+ setMessageOnChangedField(
198
+ newValues.networkLabel,
199
+ 'networkLabel',
200
+ messageTexts(localization.value).networkLabel
201
+ )
202
+ onChangeData(newValues)
203
+ !props.hasErrorMessages && onHideErrorMessageAlert()
204
+ },
205
+ { deep: true }
206
+ )
207
+
208
+ onMounted(() => {
209
+ onChangeData(fieldsValues.value)
210
+ })
211
+ onUnmounted(() => {
212
+ onHideErrorMessageAlert()
213
+ })
214
+ </script>