bfg-common 1.2.186 → 1.2.187

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 (77) hide show
  1. package/assets/localization/local_be.json +9 -2
  2. package/assets/localization/local_en.json +9 -2
  3. package/assets/localization/local_hy.json +9 -2
  4. package/assets/localization/local_kk.json +9 -2
  5. package/assets/localization/local_ru.json +9 -2
  6. package/assets/localization/local_zh.json +9 -2
  7. package/assets/scss/common/theme.scss +27 -25
  8. package/components/atoms/table/simpleTable/SimpleTable.vue +5 -2
  9. package/components/atoms/wizard/Wizard.vue +4 -4
  10. package/components/atoms/wizard/models/interfaces.ts +4 -3
  11. package/components/atoms/wizard/utils/utils.ts +106 -27
  12. package/components/common/diagramMain/DiagramMain.vue +10 -46
  13. package/components/common/diagramMain/modals/config/index.ts +0 -6
  14. package/components/common/diagramMain/modals/config/vmKernelAdapter.ts +2 -2
  15. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +1 -1
  16. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +339 -339
  17. package/components/common/diagramMain/modals/migrateVmkernelAdapter/MigrateVmkernelAdapter.vue +531 -0
  18. package/components/common/diagramMain/modals/migrateVmkernelAdapter/config/steps.ts +114 -0
  19. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +161 -0
  20. package/components/common/diagramMain/modals/{steps → migrateVmkernelAdapter/steps}/SelectVmkernelAdapter.vue +24 -86
  21. package/components/common/diagramMain/modals/{steps → migrateVmkernelAdapter/steps}/VmkernelAdapterReadyComplete.vue +7 -11
  22. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +47 -0
  23. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +146 -0
  24. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +54 -0
  25. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -0
  26. package/components/common/diagramMain/models/enums.ts +6 -7
  27. package/components/common/diagramMain/models/interfaces.ts +28 -29
  28. package/components/common/diagramMain/models/types.ts +0 -1
  29. package/components/common/monitor/advanced/Advanced.vue +5 -4
  30. package/components/common/wizards/network/add/Add.vue +874 -0
  31. package/components/common/{addNetworking → wizards/network/add}/config/index.ts +2 -16
  32. package/components/common/{addNetworking → wizards/network/add}/config/initialData.ts +4 -19
  33. package/components/common/{addNetworking → wizards/network/add}/config/portPropertiesStep.ts +1 -1
  34. package/components/common/{addNetworking → wizards/network/add}/config/selectSwitch.ts +1 -1
  35. package/components/common/{addNetworking → wizards/network/add}/config/sendData.ts +1 -1
  36. package/components/common/{addNetworking/config/addNetworkingSteps.ts → wizards/network/add/config/steps.ts} +107 -60
  37. package/components/common/{addNetworking → wizards/network/add}/modals/SelectNetwork.vue +2 -2
  38. package/components/common/{addNetworking → wizards/network/add}/modals/SelectStandardSwitch.vue +2 -2
  39. package/components/common/{addNetworking → wizards/network/add}/modals/SelectSwitch.vue +2 -2
  40. package/components/common/wizards/network/add/models/enums.ts +17 -0
  41. package/components/common/{addNetworking → wizards/network/add}/models/interfaces.ts +30 -37
  42. package/components/common/wizards/network/add/models/types.ts +2 -0
  43. package/components/common/wizards/network/add/steps/ConnectionSettings.vue +148 -0
  44. package/components/common/{addNetworking → wizards/network/add}/steps/CreateStandardSwitch.vue +0 -7
  45. package/components/common/wizards/network/add/steps/IpFourSettings.vue +245 -0
  46. package/components/common/{addNetworking → wizards/network/add}/steps/PhysicalAdapter.vue +1 -12
  47. package/components/common/{addNetworking → wizards/network/add}/steps/PortProperties.vue +57 -180
  48. package/components/common/{addNetworking → wizards/network/add}/steps/ReadyComplete.vue +1 -10
  49. package/components/common/{addNetworking → wizards/network/add}/steps/SelectConnectionType.vue +3 -15
  50. package/components/common/{addNetworking → wizards/network/add}/steps/SelectedTargetDevice.vue +103 -209
  51. package/components/common/wizards/network/add/utils/index.ts +4 -0
  52. package/components/common/wizards/network/add/validations/common.ts +58 -0
  53. package/components/common/wizards/network/add/validations/connectionSettings.ts +75 -0
  54. package/components/common/wizards/network/add/validations/createStandardSwitch.ts +58 -0
  55. package/components/common/wizards/network/add/validations/ipFourSettings.ts +188 -0
  56. package/components/common/wizards/network/add/validations/networkValidation.ts +73 -0
  57. package/components/common/wizards/network/add/validations/portProperties.ts +87 -0
  58. package/components/common/wizards/network/add/validations/targetDevice.ts +113 -0
  59. package/components/common/wizards/network/add/validations/validations.ts +43 -0
  60. package/components/common/wizards/vm/migrate/select/computeResource/ComputeResource.vue +2 -0
  61. package/package.json +1 -1
  62. package/components/common/addNetworking/AddNetworking.vue +0 -1123
  63. package/components/common/addNetworking/Wizard.vue +0 -286
  64. package/components/common/addNetworking/config/temporaryData.ts +0 -8
  65. package/components/common/addNetworking/config/validation.ts +0 -23
  66. package/components/common/addNetworking/models/enums.ts +0 -7
  67. package/components/common/addNetworking/models/types.ts +0 -13
  68. package/components/common/addNetworking/steps/ConnectionSettings.vue +0 -269
  69. package/components/common/addNetworking/steps/Header.vue +0 -53
  70. package/components/common/addNetworking/steps/IpFourSettings.vue +0 -361
  71. package/components/common/addNetworking/utils/index.ts +0 -212
  72. package/components/common/diagramMain/modals/MigrateVmkernelAdapter.vue +0 -603
  73. package/components/common/diagramMain/modals/config/migrateVmkernelAdapterSteps.ts +0 -81
  74. package/components/common/diagramMain/modals/config/validation.ts +0 -3
  75. package/components/common/diagramMain/modals/steps/ConnectionSettings.vue +0 -221
  76. package/components/common/diagramMain/modals/steps/Header.vue +0 -60
  77. /package/components/common/{addNetworking → wizards/network/add}/mappers/mappers.ts +0 -0
@@ -1503,7 +1503,7 @@
1503
1503
  "srIov": "SR-IOV",
1504
1504
  "stackedGraph": "Складзены графік",
1505
1505
  "standardSwitch": "Стандартны перамыкач",
1506
- "standardSwitchInvalidMessage": "Выберыце перамыкач",
1506
+ "standardSwitchInvalidMessage": "Выберыце існуючы стандартны перамыкач.",
1507
1507
  "standbyAdapters": "Рэзервовыя адаптары",
1508
1508
  "start": "Пачаць",
1509
1509
  "startAndStopManually": "Запускаць і спыняць уручную",
@@ -2132,5 +2132,12 @@
2132
2132
  "failCount": "Колькасць збояў",
2133
2133
  "updatesNewerVersionSupported": "падтрымліваюцца абнаўлення толькі да больш новай версіі",
2134
2134
  "vMotionPriority": "Прыярытэт vMotion",
2135
- "noNetworkReassignments": "Няма перапрызначэння сеткі"
2135
+ "noNetworkReassignments": "Няма перапрызначэння сеткі",
2136
+ "removeIscsiServers": "Выдаліце серверы iSCSI",
2137
+ "removeIscsiServersDesc": "Вы збіраецеся выдаліць серверы iSCSI з магчымымі звязанымі актыўнымі шляхамі ўводу/вываду. ",
2138
+ "addStaticTargetServer": "Дадайце статычны мэтавы сервер",
2139
+ "fieldShouldNotBeEmpty": "Поле не павінна быць пустым.",
2140
+ "port": "Порт",
2141
+ "iscsiTargetName": "Мэтавая назва iSCSI",
2142
+ "inheritAuthenticationSettingsFromParent": "Успадкаваць налады аўтэнтыфікацыі ад бацькоўскага"
2136
2143
  }
@@ -1503,7 +1503,7 @@
1503
1503
  "srIov": "SR-IOV",
1504
1504
  "stackedGraph": "Stacked Graph",
1505
1505
  "standardSwitch": "Standard switch",
1506
- "standardSwitchInvalidMessage": "Select switch",
1506
+ "standardSwitchInvalidMessage": "Select an existing standard switch.",
1507
1507
  "standbyAdapters": "Standby adapters",
1508
1508
  "start": "Start",
1509
1509
  "startAndStopManually": "Start and stop manually",
@@ -2135,5 +2135,12 @@
2135
2135
  "failCount": "Fail Count",
2136
2136
  "updatesNewerVersionSupported": "updates only to newer version supported",
2137
2137
  "vMotionPriority": "vMotion Priority",
2138
- "noNetworkReassignments": "No network reassignments"
2138
+ "noNetworkReassignments": "No network reassignments",
2139
+ "removeIscsiServers": "Remove iSCSI servers",
2140
+ "removeIscsiServersDesc": "You are about to remove iSCSI servers with possible associated active I/O paths. Do you want to continue?",
2141
+ "addStaticTargetServer": "Add Static Target Server",
2142
+ "fieldShouldNotBeEmpty": "Field should not be empty.",
2143
+ "port": "Port",
2144
+ "iscsiTargetName": "iSCSI Target Name",
2145
+ "inheritAuthenticationSettingsFromParent": "Inherit authentication settings from parent"
2139
2146
  }
@@ -1503,7 +1503,7 @@
1503
1503
  "srIov": "SR-IOV",
1504
1504
  "stackedGraph": "Կուտակված գրաֆիկ",
1505
1505
  "standardSwitch": "Ստանդարտ անջատիչ",
1506
- "standardSwitchInvalidMessage": "Ընտրեք անջատիչ",
1506
+ "standardSwitchInvalidMessage": "Ընտրեք գոյություն ունեցող ստանդարտ անջատիչ:",
1507
1507
  "standbyAdapters": "Պահուստային ադապտերներ",
1508
1508
  "start": "Սկսել",
1509
1509
  "startAndStopManually": "Սկսել և դադարեցնել ձեռքով",
@@ -2135,5 +2135,12 @@
2135
2135
  "failCount": "Խափանումների քանակը",
2136
2136
  "updatesNewerVersionSupported": "աջակցվում են միայն նոր տարբերակի թարմացումները",
2137
2137
  "vMotionPriority": "vMotion Priority",
2138
- "noNetworkReassignments": "Ցանցի վերաբաշխումներ չկան"
2138
+ "noNetworkReassignments": "Ցանցի վերաբաշխումներ չկան",
2139
+ "removeIscsiServers": "Հեռացրեք iSCSI սերվերները",
2140
+ "removeIscsiServersDesc": "Դուք պատրաստվում եք հեռացնել iSCSI սերվերները՝ կապված հնարավոր ակտիվ մուտքի/ելքի ուղիներով: ",
2141
+ "addStaticTargetServer": "Ավելացնել ստատիկ թիրախային սերվեր",
2142
+ "fieldShouldNotBeEmpty": "Դաշտը չպետք է դատարկ լինի:",
2143
+ "port": "Պորտ",
2144
+ "iscsiTargetName": "iSCSI թիրախի անունը",
2145
+ "inheritAuthenticationSettingsFromParent": "Նույնականացման կարգավորումները ժառանգել ծնողից"
2139
2146
  }
@@ -1503,7 +1503,7 @@
1503
1503
  "srIov": "SR-IOV",
1504
1504
  "stackedGraph": "Бүктелген кесте",
1505
1505
  "standardSwitch": "Стандартты қосқыш",
1506
- "standardSwitchInvalidMessage": "Ауыстырғышты таңдаңыз",
1506
+ "standardSwitchInvalidMessage": "Бар стандартты қосқышты таңдаңыз.",
1507
1507
  "standbyAdapters": "Резервтік адаптерлер",
1508
1508
  "start": "Бастау",
1509
1509
  "startAndStopManually": "Қолмен бастау және тоқтату",
@@ -2135,5 +2135,12 @@
2135
2135
  "failCount": "Сәтсіз Санау",
2136
2136
  "updatesNewerVersionSupported": "тек қолдау көрсетілетін жаңа нұсқаға жаңартулар",
2137
2137
  "vMotionPriority": "vMotion басымдылығы",
2138
- "noNetworkReassignments": "Желіні қайта тағайындау жоқ"
2138
+ "noNetworkReassignments": "Желіні қайта тағайындау жоқ",
2139
+ "removeIscsiServers": "iSCSI серверлерін жойыңыз",
2140
+ "removeIscsiServersDesc": "Сіз ықтимал байланысты белсенді енгізу/шығару жолдары бар iSCSI серверлерін жойғалы жатырсыз. ",
2141
+ "addStaticTargetServer": "Статикалық мақсатты серверді қосыңыз",
2142
+ "fieldShouldNotBeEmpty": "Өріс бос болмауы керек.",
2143
+ "port": "Порт",
2144
+ "iscsiTargetName": "iSCSI мақсатты атауы",
2145
+ "inheritAuthenticationSettingsFromParent": "Аутентификация параметрлерін ата-анадан мұраға алу"
2139
2146
  }
@@ -1503,7 +1503,7 @@
1503
1503
  "srIov": "SR-IOV",
1504
1504
  "stackedGraph": "Сложенный график",
1505
1505
  "standardSwitch": "Стандартный коммутатор",
1506
- "standardSwitchInvalidMessage": "Выберите коммутатор",
1506
+ "standardSwitchInvalidMessage": "Выберите существующий стандартный коммутатор.",
1507
1507
  "standbyAdapters": "Резервные адаптеры",
1508
1508
  "start": "Начать",
1509
1509
  "startAndStopManually": "Запускать и останавливать вручную",
@@ -2135,5 +2135,12 @@
2135
2135
  "failCount": "Количество сбоев",
2136
2136
  "updatesNewerVersionSupported": "поддерживаются обновления только до более новой версии",
2137
2137
  "vMotionPriority": "Приоритет vMotion",
2138
- "noNetworkReassignments": "Никаких переназначений сети"
2138
+ "noNetworkReassignments": "Никаких переназначений сети",
2139
+ "removeIscsiServers": "Удалить серверы iSCSI",
2140
+ "removeIscsiServersDesc": "Вы собираетесь удалить серверы iSCSI с возможными связанными с ними активными путями ввода-вывода. ",
2141
+ "addStaticTargetServer": "Добавить статический целевой сервер",
2142
+ "fieldShouldNotBeEmpty": "Поле не должно быть пустым.",
2143
+ "port": "Порт",
2144
+ "iscsiTargetName": "Имя цели iSCSI",
2145
+ "inheritAuthenticationSettingsFromParent": "Наследовать настройки аутентификации от родителя"
2139
2146
  }
@@ -1503,7 +1503,7 @@
1503
1503
  "srIov": "SR-IOV",
1504
1504
  "stackedGraph": "堆叠图",
1505
1505
  "standardSwitch": "标准开关",
1506
- "standardSwitchInvalidMessage": "选择开关",
1506
+ "standardSwitchInvalidMessage": "选择现有的标准交换机。",
1507
1507
  "standbyAdapters": "待机适配器",
1508
1508
  "start": "開始",
1509
1509
  "startAndStopManually": "手動啟動和停止",
@@ -2135,5 +2135,12 @@
2135
2135
  "failCount": "失败计数",
2136
2136
  "updatesNewerVersionSupported": "仅更新到支持的较新版本",
2137
2137
  "vMotionPriority": "vMotion 优先级",
2138
- "noNetworkReassignments": "无需重新分配网络"
2138
+ "noNetworkReassignments": "无需重新分配网络",
2139
+ "removeIscsiServers": "删除 iSCSI 服务器",
2140
+ "removeIscsiServersDesc": "您将删除可能具有关联活动 I/O 路径的 iSCSI 服务器。",
2141
+ "addStaticTargetServer": "添加静态目标服务器",
2142
+ "fieldShouldNotBeEmpty": "字段不应为空。",
2143
+ "port": "港口",
2144
+ "iscsiTargetName": "iSCSI 目标名称",
2145
+ "inheritAuthenticationSettingsFromParent": "从父级继承身份验证设置"
2139
2146
  }
@@ -1,4 +1,4 @@
1
- @import "variables.scss";
1
+ @import 'variables.scss';
2
2
  :root {
3
3
  --scrollbar-thumb: #bbb;
4
4
  --scrollbar-track: #eee;
@@ -10,6 +10,7 @@
10
10
  --global-font-color5: #{$light-black};
11
11
  --global-font-color6: #{$--grey-800};
12
12
  --global-font-color7: #{$--grey-900};
13
+ --global-font-color8: #{$--grey-100};
13
14
  --global-border-color: #ccc;
14
15
  --global-border-colo2: #{$--grey-100};
15
16
  --global-bg-color: #{$white};
@@ -56,7 +57,7 @@
56
57
  --btn-primary-hover-color: #e1f1f6;
57
58
  --btn-primary-box-shadow-color: #0095d3;
58
59
  --btn-primary-disabled-color: #666;
59
- --btn-primary-disabled-bg-color:#ccc;
60
+ --btn-primary-disabled-bg-color: #ccc;
60
61
  /* warning */
61
62
  --btn-warning-color: #{$white};
62
63
  --btn-warning-bg-color: #{$--red-200};
@@ -96,15 +97,15 @@
96
97
 
97
98
  /* Items Row Variables light mode */
98
99
  --row-hover-bg-color: #{$light-grey-100};
99
- --row-hover-border-color: #{$--grey-200};
100
- --row-selected-text-color: #{$white};
101
- --row-selected-bg-color: #{$--blue-800};
100
+ --row-hover-border-color: #{$--grey-200};
101
+ --row-selected-text-color: #{$white};
102
+ --row-selected-bg-color: #{$--blue-800};
102
103
 
103
104
  /* Vertical Steps Variables light mode */
104
105
  --vertical-steps-active-color: #fff;
105
106
  --vertical-steps-complete-color: #454545;
106
- --vertical-steps-active-bg-color: #{$--blue-800};
107
- --vertical-steps-complete-bg-color: #{$light-grey-100};
107
+ --vertical-steps-active-bg-color: #{$--blue-800};
108
+ --vertical-steps-complete-bg-color: #{$light-grey-100};
108
109
  --vertical-steps-hover-border-color: #{$--grey-200};
109
110
  --vertical-nav-active-item-color: #fff;
110
111
  --vertical-nav-active-bg-color: #29414e;
@@ -113,18 +114,19 @@
113
114
  /* Tooltip Variables light mode */
114
115
  --tooltip-content-text-color: #{$white};
115
116
  --tooltip-content-bg-color: #{$black};
116
- --tooltip-content-error-bg-color: #{#C92100};
117
+ --tooltip-content-error-bg-color: #{#c92100};
117
118
  }
118
119
 
119
120
  :root.dark-theme {
120
121
  --scrollbar-thumb: #29414e;
121
- --scrollbar-track: #17242B;
122
+ --scrollbar-track: #17242b;
122
123
 
123
124
  --global-font-color: #{$--grey-800};
124
125
  --global-font-color2: #{#eaedf0};
125
126
  --global-font-color3: #{$light-white-100};
126
127
  --global-font-color4: #{$light-white-100};
127
128
  --global-font-color5: #{$light-black};
129
+ --global-font-color8: #{$white};
128
130
  --global-border-color: #495865;
129
131
  --global-border-colo2: #{$light-white-100};
130
132
  --global-bg-color: #17242b;
@@ -158,12 +160,12 @@
158
160
  --dropdown-item-color: #79c6e6;
159
161
 
160
162
  /* Button Variables dark mode */
161
- /* outline */
163
+ /* outline */
162
164
  --btn-outline-border-color: #89cbdf;
163
- --btn-outline-hover-bg-color: hsla(0,0%,100%,.1);
165
+ --btn-outline-hover-bg-color: hsla(0, 0%, 100%, 0.1);
164
166
  --btn-outline-hover-color: #57c8ea;
165
167
  --btn-outline-box-shadow-color: #000;
166
- /* primary */
168
+ /* primary */
167
169
  --btn-primary-color: #{$black};
168
170
  --btn-primary-border-color: #{$--blue-250};
169
171
  --btn-primary-hover-bg-color: #57c8ea;
@@ -176,7 +178,7 @@
176
178
  --btn-warning-bg-color: #{$--red-300};
177
179
  --btn-warning-hover-bg-color: #{$--red-400};
178
180
  --btn-warning-box-shadow-color: #{$--red-100};
179
- /* link */
181
+ /* link */
180
182
  --btn-link-color: #89cbdf;
181
183
  --btn-link-hover-color: #57c8ea;
182
184
  --btn-link-disabled: #{$white};
@@ -211,18 +213,18 @@
211
213
  /* Items Row Variables light mode */
212
214
  --row-hover-bg-color: #{$--blue-950};
213
215
  --row-hover-border-color: #{$white};
214
- --row-selected-text-color: #{$black};
215
- --row-selected-bg-color: #{$light-blue};
216
-
217
- /* Vertical Steps Variables dark mode */
218
- --vertical-steps-active-color: #000;
219
- --vertical-steps-complete-color: #acbac3;
220
- --vertical-steps-active-bg-color: #{$light-blue};
221
- --vertical-steps-complete-bg-color: #{$--blue-950};
222
- --vertical-steps-hover-border-color: #{$white};
223
- --vertical-nav-active-item-color: #{$black};
224
- --vertical-nav-active-bg-color: #d8e3e9;
225
- --vertical-nav-hover-item-color: #d8e3e9;
216
+ --row-selected-text-color: #{$black};
217
+ --row-selected-bg-color: #{$light-blue};
218
+
219
+ /* Vertical Steps Variables dark mode */
220
+ --vertical-steps-active-color: #000;
221
+ --vertical-steps-complete-color: #acbac3;
222
+ --vertical-steps-active-bg-color: #{$light-blue};
223
+ --vertical-steps-complete-bg-color: #{$--blue-950};
224
+ --vertical-steps-hover-border-color: #{$white};
225
+ --vertical-nav-active-item-color: #{$black};
226
+ --vertical-nav-active-bg-color: #d8e3e9;
227
+ --vertical-nav-hover-item-color: #d8e3e9;
226
228
 
227
229
  /* Tooltip Variables light mode */
228
230
  --tooltip-content-text-color: #{$black};
@@ -28,7 +28,9 @@
28
28
  <tr
29
29
  v-for="(item, key) in presentBodyItems"
30
30
  :key="key"
31
- :class="{ selected: selectedRowKey === key }"
31
+ :class="{
32
+ selected: props.selectedRowKey === key || selectedRowKey === key,
33
+ }"
32
34
  @click="selectRow(key, item)"
33
35
  >
34
36
  <td
@@ -71,8 +73,9 @@ const props = withDefaults(
71
73
  bodyItems: UI_I_TableBodyItem[][]
72
74
  editable?: boolean
73
75
  testId?: string
76
+ selectedRowKey?: number
74
77
  }>(),
75
- { testId: 'ui-simple-table' }
78
+ { testId: 'ui-simple-table', selectedRowKey: -1 }
76
79
  )
77
80
  const emits = defineEmits<{
78
81
  (event: 'select', value1: number, value2: UI_I_TableBodyItem[]): void
@@ -284,8 +284,8 @@ const onPreviousStep = (): void => {
284
284
  watch(
285
285
  () => props.selectedScheme,
286
286
  (newValue: number[]) => {
287
- steps.value = props.steps.filter((_step: UI_I_WizardStep, index: number) =>
288
- newValue.includes(index)
287
+ steps.value = props.steps.filter((step: UI_I_WizardStep) =>
288
+ newValue.includes(step.id)
289
289
  )
290
290
  },
291
291
  { deep: true, immediate: true }
@@ -293,8 +293,8 @@ watch(
293
293
  watch(
294
294
  () => props.steps,
295
295
  (newValue: UI_I_WizardStep[]) => {
296
- steps.value = newValue.filter((_step: UI_I_WizardStep, index: number) =>
297
- props.selectedScheme.includes(index)
296
+ steps.value = newValue.filter((step: UI_I_WizardStep) =>
297
+ props.selectedScheme.includes(step.id)
298
298
  )
299
299
  },
300
300
  { deep: true, immediate: true }
@@ -42,6 +42,7 @@ export interface UI_I_ValidationReturn {
42
42
  newValue: UI_I_WizardStep[]
43
43
  }
44
44
 
45
- // export interface UI_I_WizardSlot {
46
- // selectedStep: UI_I_WizardStep
47
- // }
45
+ export interface UI_I_AsyncCheckReturn {
46
+ isValid: boolean
47
+ message: string
48
+ }
@@ -15,6 +15,7 @@ export default class Wizard {
15
15
  private _stepsScheme: Ref<number[][]>
16
16
  private _selectedSchemeId: Ref<number>
17
17
  private _wizardLoader: Ref<UI_I_Loader>
18
+ private _waitingStepId: Ref<number>
18
19
  selectedScheme: ComputedRef<number[]>
19
20
  alertMessages: ComputedRef<string[][]>
20
21
 
@@ -28,6 +29,7 @@ export default class Wizard {
28
29
  status: false,
29
30
  messages: [],
30
31
  })
32
+ this._waitingStepId = ref<number>(-1)
31
33
  this.selectedScheme = computed<number[]>(
32
34
  () => this._stepsScheme.value[this._selectedSchemeId.value]
33
35
  )
@@ -66,13 +68,32 @@ export default class Wizard {
66
68
  return this._selectedSchemeId.value
67
69
  }
68
70
 
71
+ set waitingStepId(id: number) {
72
+ this._waitingStepId.value = id
73
+ }
74
+
75
+ get waitingStepId(): number {
76
+ return this._waitingStepId.value
77
+ }
78
+
69
79
  get wizardLoader(): UI_I_Loader {
70
80
  return this._wizardLoader.value
71
81
  }
72
82
 
83
+ get nextAvailableStep(): number {
84
+ const currentStepIndex = this.selectedScheme.value.indexOf(
85
+ this.selectedStepId
86
+ )
87
+ return this.selectedScheme.value[currentStepIndex + 1]
88
+ }
89
+
73
90
  setLoader(status: boolean, messages?: string[]): void {
74
91
  this._wizardLoader.value.status = status
75
92
 
93
+ if (!messages && this._wizardLoader.value.messages.length > 0) {
94
+ this._wizardLoader.value.messages = []
95
+ return
96
+ }
76
97
  if (!messages) return
77
98
 
78
99
  messages.length > 0 && (this._wizardLoader.value.messages = messages)
@@ -122,15 +143,25 @@ export default class Wizard {
122
143
 
123
144
  if (!invalidStep) return
124
145
 
125
- invalidStep.isValid = false
126
146
  invalidStep.fields[field].field = message
127
147
 
128
- if (this.isSelected(invalidStep.status)) {
129
- invalidStep.status = UI_E_WIZARD_STATUS.INVALID_SELECTED
130
- return
131
- }
148
+ if (message) {
149
+ invalidStep.isValid = false
132
150
 
133
- invalidStep.status = UI_E_WIZARD_STATUS.INVALID
151
+ if (this.isSelected(invalidStep.status)) {
152
+ invalidStep.status = UI_E_WIZARD_STATUS.INVALID_SELECTED
153
+ return
154
+ }
155
+
156
+ invalidStep.status = UI_E_WIZARD_STATUS.INVALID
157
+ } else {
158
+ invalidStep.isValid = true
159
+ if (this.isSelected(invalidStep.status)) {
160
+ invalidStep.status = UI_E_WIZARD_STATUS.SELECTED
161
+ } else {
162
+ invalidStep.status = UI_E_WIZARD_STATUS.COMPLETED
163
+ }
164
+ }
134
165
  }
135
166
 
136
167
  setAlertMessage(stepId: number, field: string, message: string): void {
@@ -153,18 +184,6 @@ export default class Wizard {
153
184
  )
154
185
  }
155
186
 
156
- hideAlertMessagesByStepId(stepId: number): UI_I_WizardStep[] {
157
- const modifiedStep: UI_I_WizardStep = this.steps[stepId]
158
-
159
- for (const field in modifiedStep.fields) {
160
- modifiedStep.fields[field].alert = ''
161
- }
162
-
163
- return (this.steps = this.steps.map((step: UI_I_WizardStep) =>
164
- step.id === stepId ? modifiedStep : step
165
- ))
166
- }
167
-
168
187
  private removeValidationError(
169
188
  stepId: number,
170
189
  field: string,
@@ -205,6 +224,18 @@ export default class Wizard {
205
224
  )
206
225
  }
207
226
 
227
+ hideAlertMessagesByStepId(stepId: number): UI_I_WizardStep[] {
228
+ const modifiedStep: UI_I_WizardStep = this.steps[stepId]
229
+
230
+ for (const field in modifiedStep.fields) {
231
+ modifiedStep.fields[field].alert = ''
232
+ }
233
+
234
+ return (this.steps = this.steps.map((step: UI_I_WizardStep) =>
235
+ step.id === stepId ? modifiedStep : step
236
+ ))
237
+ }
238
+
208
239
  changeStep(value: UI_I_WizardStep[]): void {
209
240
  this.steps = this.steps.map(
210
241
  (step: UI_I_WizardStep): UI_I_WizardStep => ({
@@ -242,7 +273,12 @@ export default class Wizard {
242
273
 
243
274
  async changeSteps(
244
275
  value: UI_I_WizardStep[],
245
- validationFunc: (
276
+ validationFunc?: (
277
+ value: UI_I_WizardStep[],
278
+ currentStep: UI_I_WizardStep,
279
+ nextStep: UI_I_WizardStep
280
+ ) => Promise<UI_I_ValidationReturn>,
281
+ finalValidationFunc?: (
246
282
  value: UI_I_WizardStep[],
247
283
  currentStep: UI_I_WizardStep,
248
284
  nextStep: UI_I_WizardStep
@@ -280,6 +316,32 @@ export default class Wizard {
280
316
 
281
317
  validation.stepHasError && this.goToFirstInvalidStep()
282
318
 
319
+ return
320
+ } else if (this.isLastStep() && finalValidationFunc) {
321
+ const finalValidation: UI_I_ValidationReturn =
322
+ await finalValidationFunc(value, currentStep, nextStep)
323
+
324
+ if (
325
+ finalValidation.stepHasError ||
326
+ finalValidation.stepShouldStop?.ifFromAnyStep ||
327
+ finalValidation.stepShouldStop?.ifOnCurrentStep
328
+ ) {
329
+ finalValidation.stepShouldStop?.ifFromAnyStep &&
330
+ currentStep.id < finalValidation.stepShouldStop?.stoppageStepId &&
331
+ this.selectStepHard(finalValidation.stepShouldStop?.stoppageStepId)
332
+
333
+ finalValidation.stepShouldStop?.ifOnCurrentStep &&
334
+ this.selectStepHard(finalValidation.stepShouldStop?.stoppageStepId)
335
+
336
+ finalValidation.stepHasError && this.goToFirstInvalidStep()
337
+
338
+ return
339
+ } else {
340
+ currentStep.status = UI_E_WIZARD_STATUS.COMPLETED
341
+ }
342
+
343
+ this.changeStep(finalValidation.newValue)
344
+
283
345
  return
284
346
  } else {
285
347
  currentStep.status = UI_E_WIZARD_STATUS.COMPLETED
@@ -295,9 +357,8 @@ export default class Wizard {
295
357
 
296
358
  selectStepHard(stepId: number): void {
297
359
  const newSteps = this.steps.map((st: UI_I_WizardStep) => {
298
- console.log(st.id, stepId)
299
360
  if (st.id < stepId) return { ...st, status: UI_E_WIZARD_STATUS.COMPLETED }
300
- console.log(st.id, stepId)
361
+
301
362
  if (st.id === stepId)
302
363
  return { ...st, status: UI_E_WIZARD_STATUS.SELECTED }
303
364
 
@@ -312,7 +373,11 @@ export default class Wizard {
312
373
  currentStepId: number,
313
374
  nextStepId: number
314
375
  ): boolean {
315
- return nextStepId > step && currentStepId <= step
376
+ return (
377
+ nextStepId > step &&
378
+ currentStepId <= step &&
379
+ this.selectedScheme.value.includes(step)
380
+ )
316
381
  }
317
382
 
318
383
  setValidation(
@@ -331,6 +396,11 @@ export default class Wizard {
331
396
  return true
332
397
  }
333
398
 
399
+ removeValidationLocal(stepId: number, field: string): void {
400
+ this.setValidationError(stepId, field, '')
401
+ this.setAlertMessage(stepId, field, '')
402
+ }
403
+
334
404
  removeValidation(
335
405
  stepId: number,
336
406
  field: string,
@@ -342,6 +412,7 @@ export default class Wizard {
342
412
  true,
343
413
  value
344
414
  )
415
+
345
416
  newValue = this.removeAlertMessage(stepId, field, newValue)
346
417
  return newValue
347
418
  }
@@ -383,11 +454,15 @@ export default class Wizard {
383
454
  }
384
455
 
385
456
  activeStepId(): number {
386
- return (
387
- this.steps.find(
388
- (step: UI_I_WizardStep) => step.status === UI_E_WIZARD_STATUS.ACTIVE
389
- )?.id || 0
390
- )
457
+ const activeStep = this.steps.find(
458
+ (step: UI_I_WizardStep) => step.status === UI_E_WIZARD_STATUS.ACTIVE
459
+ )?.id
460
+
461
+ const invalidStep = this.steps.find(
462
+ (step: UI_I_WizardStep) => step.status === UI_E_WIZARD_STATUS.INVALID
463
+ )?.id
464
+
465
+ return activeStep || invalidStep || 0
391
466
  }
392
467
 
393
468
  wasCompleted(): boolean {
@@ -401,6 +476,10 @@ export default class Wizard {
401
476
  )
402
477
  }
403
478
 
479
+ isSelectedScheme(schemeId: number): boolean {
480
+ return schemeId === this.selectedSchemeId
481
+ }
482
+
404
483
  getStepIdByFieldName(fieldName: string): number {
405
484
  return this.steps.find((step) => step.fields[fieldName])?.id || -1
406
485
  }