bfg-common 1.4.581 → 1.4.583

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 (138) hide show
  1. package/assets/img/icons/icons-sprite-dark-1.svg +407 -407
  2. package/assets/img/icons/icons-sprite-dark-2.svg +343 -343
  3. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  4. package/assets/img/icons/icons-sprite-dark-4.svg +255 -255
  5. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  6. package/assets/img/icons/icons-sprite-dark-6.svg +94 -94
  7. package/assets/img/icons/icons-sprite-light-1.svg +407 -407
  8. package/assets/img/icons/icons-sprite-light-2.svg +343 -343
  9. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  10. package/assets/img/icons/icons-sprite-light-4.svg +255 -255
  11. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  12. package/assets/img/icons/icons-sprite-light-6.svg +94 -94
  13. package/assets/scss/common/theme.scss +7 -1
  14. package/components/atoms/TheIcon3.vue +50 -50
  15. package/components/atoms/modal/bySteps/BySteps.vue +253 -253
  16. package/components/atoms/stack/StackBlock.vue +185 -185
  17. package/components/atoms/table/dataGrid/DataGrid.vue +1633 -1633
  18. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +222 -222
  19. package/components/common/browse/BrowseNew.vue +237 -237
  20. package/components/common/browse/BrowseOld.vue +217 -217
  21. package/components/common/browse/blocks/contents/Files.vue +35 -35
  22. package/components/common/browse/blocks/contents/FilesOld.vue +70 -70
  23. package/components/common/browse/blocks/contents/filesNew/FilesNew.vue +92 -92
  24. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  25. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  26. package/components/common/browse/lib/models/interfaces.ts +5 -5
  27. package/components/common/context/lib/models/interfaces.ts +30 -30
  28. package/components/common/context/recursion/Recursion.vue +86 -86
  29. package/components/common/context/recursion/RecursionNew.vue +199 -199
  30. package/components/common/context/recursion/RecursionOld.vue +213 -213
  31. package/components/common/diagramMain/Header.vue +211 -211
  32. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  33. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  34. package/components/common/diagramMain/lib/models/types.ts +21 -21
  35. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  36. package/components/common/diagramMain/modals/ManagePhysicalAdaptersModal.vue +330 -330
  37. package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +40 -40
  38. package/components/common/diagramMain/modals/editSettings/EditSettings.vue +497 -497
  39. package/components/common/diagramMain/modals/editSettings/EditSettingsModal.vue +812 -812
  40. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +214 -214
  41. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +189 -189
  42. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +163 -163
  43. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +175 -175
  44. package/components/common/diagramMain/modals/editSettings/tabs/TrafficShaping.vue +398 -398
  45. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +346 -346
  46. package/components/common/diagramMain/modals/editSettings/tabs/port/PortProperties.vue +205 -205
  47. package/components/common/diagramMain/modals/lib/config/diagramConfig.ts +23 -23
  48. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  49. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  50. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +87 -87
  51. package/components/common/diagramMain/modals/lib/utils/index.ts +24 -24
  52. package/components/common/diagramMain/modals/migrateVmkernelAdapter/MigrateVmkernelAdapter.vue +537 -537
  53. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  54. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +169 -169
  55. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  56. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +14 -14
  57. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  58. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  59. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  60. package/components/common/diagramMain/port/Ports.vue +47 -47
  61. package/components/common/layout/theHeader/helpMenu/About.vue +85 -85
  62. package/components/common/layout/theHeader/helpMenu/aboutNew/AboutNew.vue +103 -103
  63. package/components/common/mainNavigationPanel/MainNavigationPanel.vue +152 -152
  64. package/components/common/spiceConsole/Drawer.vue +370 -370
  65. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  66. package/components/common/split/vertical/Vertical.vue +160 -223
  67. package/components/common/split/vertical/VerticalNew.vue +123 -0
  68. package/components/common/split/vertical/VerticalOld.vue +108 -0
  69. package/components/common/vm/actions/add/Add.vue +617 -617
  70. package/components/common/vm/actions/clone/lib/config/steps.ts +129 -129
  71. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +267 -267
  72. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +264 -264
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +118 -118
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +161 -161
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +165 -165
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +55 -55
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +147 -147
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeOld.vue +55 -55
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +44 -44
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +124 -124
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/LocationOld.vue +134 -134
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +63 -63
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/Table.vue +74 -74
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +95 -95
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +69 -69
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressOld.vue +83 -83
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceNew.vue +85 -85
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceOld.vue +91 -91
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +35 -35
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +48 -48
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  95. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  96. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  97. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +30 -30
  98. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/typeSelection/TypeSelectionNew.vue +46 -46
  99. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +56 -56
  100. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  101. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +27 -27
  102. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +54 -54
  103. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  104. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  105. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  106. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  107. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  108. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/FirmwareNew.vue +42 -42
  109. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +25 -25
  110. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  111. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  112. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +141 -141
  113. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  114. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  115. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  116. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +30 -30
  117. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  118. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapNew.vue +39 -39
  119. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +100 -100
  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/common/select/storage/new/New.vue +159 -159
  125. package/components/common/vm/actions/editSettings/EditSettings.vue +214 -214
  126. package/components/common/vm/actions/editSettings/EditSettingsOld.vue +182 -182
  127. package/components/common/vm/actions/editSettings/new/New.vue +176 -176
  128. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  129. package/components/common/wizards/network/add/lib/config/steps.ts +464 -464
  130. package/composables/productNameLocal.ts +30 -30
  131. package/package.json +1 -1
  132. package/plugins/date.ts +233 -233
  133. package/plugins/recursion.ts +311 -311
  134. package/public/spice-console/lib/images/bitmap.js +203 -203
  135. package/public/spice-console/network/spicechannel.js +383 -383
  136. package/store/main/mutations.ts +7 -7
  137. package/store/main/state.ts +7 -7
  138. package/store/tasks/mappers/recentTasks.ts +2 -2
@@ -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>