bfg-common 1.5.390 → 1.5.391

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.
@@ -1,328 +1,339 @@
1
- <template>
2
- <div class="configuration">
3
- <atoms-alert
4
- v-show="props.alertMessages?.length"
5
- test-id="configure-error-alert"
6
- status="alert-danger"
7
- :items="props.alertMessages"
8
- @remove="onHideAlert"
9
- />
10
-
11
- <atoms-alert
12
- v-show="isShowAlertInfo"
13
- test-id="configure-information-alert"
14
- status="alert-info"
15
- :items="[localization.common.nameAndConfigurationAlertInfo]"
16
- @remove="isShowAlertInfo = false"
17
- />
18
- <h6 class="nd-mt-0">{{ localization.common.nfsShareDetails }}</h6>
19
-
20
- <div class="clr-form-control clr-row">
21
- <label for="" class="clr-control-label clr-col-md-2">
22
- {{ localization.common.name }}
23
- </label>
24
-
25
- <div class="clr-control-container" :class="nameErrorText && 'clr-error'">
26
- <div class="flex-align-center">
27
- <input
28
- id="configuration-name-input"
29
- v-model="formModelLocal.name"
30
- data-id="configuration-name-input"
31
- type="text"
32
- class="clr-input"
33
- @blur="initValidation(true, ['name'])"
34
- @input="initValidation(false, ['name'])"
35
- />
36
- <atoms-the-icon class="error-icon" name="info-circle" />
37
- </div>
38
-
39
- <div class="clr-subtext" data-id="nfs-datastore-name-field-require">
40
- {{ nameErrorText }}
41
- </div>
42
- </div>
43
- </div>
44
-
45
- <div class="clr-form-control clr-row">
46
- <label class="clr-control-label clr-col-md-2">
47
- {{ localization.common.folder }}
48
- </label>
49
-
50
- <div
51
- class="clr-control-container"
52
- :class="folderErrorText && 'clr-error'"
53
- >
54
- <div class="flex-align-center">
55
- <input
56
- id="configuration-folder-input"
57
- v-model="formModelLocal.folder"
58
- data-id="configuration-folder-input"
59
- type="text"
60
- class="clr-input"
61
- @blur="initValidation(true, ['folder'])"
62
- @input="initValidation(false, ['folder'])"
63
- />
64
- <atoms-the-icon class="error-icon" name="info-circle" />
65
- </div>
66
-
67
- <div
68
- v-if="folderErrorText"
69
- class="clr-subtext"
70
- data-id="folder-name-field-require"
71
- >
72
- {{ folderErrorText }}
73
- </div>
74
- <div v-else class="clr-subtext">
75
- {{ localization.common.eg }}: /vols/vol0/datastore-001
76
- </div>
77
- </div>
78
- </div>
79
-
80
- <div class="nd-mt-0 clr-form-control clr-row">
81
- <label class="clr-control-label clr-col-md-2">
82
- {{ localization.common.server }}
83
- </label>
84
-
85
- <div
86
- class="clr-control-container"
87
- :class="serverErrorText && 'clr-error'"
88
- >
89
- <div class="flex-align-center input-action-wrapper">
90
- <input
91
- id="configuration-server-input"
92
- v-model="formModelLocal.server"
93
- data-id="configuration-server-input"
94
- type="text"
95
- class="clr-input"
96
- @blur="initValidation(true, ['server'])"
97
- @input="initValidation(false, ['server'])"
98
- />
99
- <atoms-the-icon class="error-icon" name="info-circle" />
100
- </div>
101
- <div
102
- v-if="serverErrorText"
103
- class="clr-subtext"
104
- data-id="server-name-field-require"
105
- >
106
- {{ serverErrorText }}
107
- </div>
108
- <div v-else class="clr-subtext">
109
- {{ localization.common.eg }}: nas, nas.it.com or 192.168.0.1
110
- </div>
111
- </div>
112
- </div>
113
-
114
- <div class="nd-mt-0 clr-form-control clr-row">
115
- <label class="clr-control-label clr-col-md-2">
116
- {{ localization.auth.username }}
117
- </label>
118
-
119
- <div
120
- class="clr-control-container"
121
- :class="usernameErrorText && 'clr-error'"
122
- >
123
- <div class="flex-align-center input-action-wrapper">
124
- <input
125
- id="configuration-username-input"
126
- v-model="formModelLocal.user"
127
- data-id="configuration-username-input"
128
- type="text"
129
- class="clr-input"
130
- @blur="initValidation(true, ['user'])"
131
- @input="initValidation(false, ['user'])"
132
- />
133
- <atoms-the-icon class="error-icon" name="info-circle" />
134
- </div>
135
- <div
136
- v-if="usernameErrorText"
137
- class="clr-subtext"
138
- data-id="username-name-field-require"
139
- >
140
- {{ usernameErrorText }}
141
- </div>
142
- </div>
143
- </div>
144
-
145
- <div class="nd-mt-0 clr-form-control clr-row">
146
- <label class="clr-control-label clr-col-md-2">
147
- {{ localization.auth.password }}
148
- </label>
149
-
150
- <div
151
- class="clr-control-container"
152
- :class="passwordErrorText && 'clr-error'"
153
- >
154
- <div class="flex-align-center input-action-wrapper">
155
- <input
156
- id="configuration-password-input"
157
- v-model="formModelLocal.password"
158
- data-id="configuration-password-input"
159
- type="password"
160
- class="clr-input"
161
- @blur="initValidation(true, ['password'])"
162
- @input="initValidation(false, ['password'])"
163
- />
164
- <atoms-the-icon class="error-icon" name="info-circle" />
165
- </div>
166
- <div
167
- v-if="passwordErrorText"
168
- class="clr-subtext"
169
- data-id="password-name-field-require"
170
- >
171
- {{ passwordErrorText }}
172
- </div>
173
- </div>
174
- </div>
175
- </div>
176
- </template>
177
-
178
- <script lang="ts" setup>
179
- import type { UI_I_Localization } from '~/lib/models/interfaces'
180
- import type { UI_I_WizardStep } from '~/components/atoms/wizard/lib/models/interfaces'
181
- import type { UI_I_InitialValidationFields } from '~/components/common/backup/storage/actions/add/steps/nameAndConfigure/lib/models/interfaces'
182
- import type { UI_I_CreateDatastoreForm } from '~/components/common/backup/storage/actions/add/lib/models/interfaces'
183
- import { dynamicSteps } from '~/components/common/backup/storage/actions/add/lib/config/steps'
184
- import type {
185
- UI_T_InitialValidationFields
186
- } from "~/components/common/backup/storage/actions/add/steps/nameAndConfigure/lib/models/types";
187
-
188
- const formModelLocal = defineModel<UI_I_CreateDatastoreForm>({ required: true })
189
- const isShowAlertInfo = defineModel<boolean>('alertInfo', { required: true })
190
-
191
- const props = defineProps<{
192
- alertMessages: string[]
193
- messagesFields: UI_I_WizardStep['fields']
194
- }>()
195
- const emits = defineEmits<{
196
- (event: 'hide-alert', value: number): void
197
- }>()
198
-
199
- const localization = computed<UI_I_Localization>(() => useLocal())
200
-
201
- const initValidationFields = ref<UI_I_InitialValidationFields>({
202
- name: false,
203
- folder: false,
204
- server: false,
205
- user: false,
206
- password: false,
207
- })
208
- const initValidation = (onlyBlur = false, types: UI_T_InitialValidationFields[]): void => {
209
- onlyBlur && types.forEach((type) => (initValidationFields.value[type] = true))
210
- }
211
-
212
- /* Validation error text for Name input field */
213
- const nameErrorText = computed<string>(() => {
214
- if (props.messagesFields?.name?.field && !formModelLocal.value.name) {
215
- return props.messagesFields.name.field
216
- }
217
-
218
- if (!initValidationFields.value.name) return ''
219
- return !formModelLocal.value.name
220
- ? localization.value.common.fieldRequired
221
- : ''
222
- })
223
-
224
- /* Validation error text for Folder input field */
225
- const folderErrorText = computed<string>(() => {
226
- if (props.messagesFields.folder?.field && !formModelLocal.value.folder) {
227
- return props.messagesFields.folder.field
228
- }
229
-
230
- if (!initValidationFields.value.folder) return ''
231
- return !formModelLocal.value.folder
232
- ? localization.value.common.fieldRequired
233
- : ''
234
- })
235
-
236
- /* Validation error text for Server input field */
237
- const serverErrorText = computed<string>(() => {
238
- if (props.messagesFields.server?.field && !formModelLocal.value.server) {
239
- return props.messagesFields.server.field
240
- }
241
-
242
- if (!initValidationFields.value.server) return ''
243
- return !formModelLocal.value.server
244
- ? localization.value.common.fieldRequired
245
- : ''
246
- })
247
-
248
- /* Validation error text for Username input field */
249
- const usernameErrorText = computed<string>(() => {
250
- if (props.messagesFields.user?.field && !formModelLocal.value.user) {
251
- return props.messagesFields.user.field
252
- }
253
-
254
- if (!initValidationFields.value.user) return ''
255
- return !formModelLocal.value.user
256
- ? localization.value.common.fieldRequired
257
- : ''
258
- })
259
-
260
- /* Validation error text for Password input field */
261
- const passwordErrorText = computed<string>(() => {
262
- if (props.messagesFields.password?.field && !formModelLocal.value.password) {
263
- return props.messagesFields.password.field
264
- }
265
-
266
- if (!initValidationFields.value.password) return ''
267
- return !formModelLocal.value.password
268
- ? localization.value.common.fieldRequired
269
- : ''
270
- })
271
-
272
- const onHideAlert = (): void =>
273
- emits('hide-alert', dynamicSteps.nameAndConfigure)
274
- </script>
275
-
276
- <style lang="scss" scoped>
277
- @import 'assets/scss/common/mixins.scss';
278
- .configuration {
279
- @include flex($dir: column, $just: space-between);
280
- & > h6 {
281
- font-weight: 500;
282
- font-size: 14px;
283
- padding-top: 6px;
284
- margin-bottom: 10px;
285
- }
286
-
287
- &__alert-info {
288
- :deep(.alert-text) {
289
- font-size: 11px;
290
- letter-spacing: normal;
291
- }
292
- }
293
- .clr-form-control {
294
- margin-top: 0;
295
- display: flex;
296
- flex-direction: row;
297
-
298
- .clr-control-container {
299
- min-height: 48px;
300
- &.clr-error {
301
- .clr-subtext,
302
- .error-icon {
303
- display: block;
304
- }
305
- }
306
- .error-icon {
307
- display: none;
308
- }
309
- .error-icon {
310
- fill: #db2100;
311
- width: 24px;
312
- height: 24px;
313
- }
314
- }
315
- }
316
- &__servers-list {
317
- height: 170px;
318
- }
319
- }
320
- .flex-align-center {
321
- &.input-action-wrapper {
322
- width: 260px;
323
- }
324
- input {
325
- width: 210px;
326
- }
327
- }
328
- </style>
1
+ <template>
2
+ <div class="configuration">
3
+ <atoms-alert
4
+ v-show="props.alertMessages?.length"
5
+ test-id="configure-error-alert"
6
+ status="alert-danger"
7
+ :items="props.alertMessages"
8
+ @remove="onHideAlert"
9
+ />
10
+
11
+ <atoms-alert
12
+ v-show="isShowAlertInfo"
13
+ test-id="configure-information-alert"
14
+ status="alert-info"
15
+ :items="[localization.common.nameAndConfigurationAlertInfo]"
16
+ @remove="isShowAlertInfo = false"
17
+ />
18
+ <h6 class="nd-mt-0">{{ localization.common.nfsShareDetails }}</h6>
19
+
20
+ <div class="clr-form-control clr-row">
21
+ <label for="" class="clr-control-label clr-col-md-2">
22
+ {{ localization.common.name }}
23
+ </label>
24
+
25
+ <div class="clr-control-container" :class="nameErrorText && 'clr-error'">
26
+ <div class="flex-align-center">
27
+ <input
28
+ id="configuration-name-input"
29
+ v-model="formModelLocal.name"
30
+ data-id="configuration-name-input"
31
+ type="text"
32
+ class="clr-input"
33
+ @blur="initValidation(true, ['name'])"
34
+ @input="initValidation(false, ['name'])"
35
+ />
36
+ <atoms-the-icon class="error-icon" name="info-circle" />
37
+ </div>
38
+
39
+ <div class="clr-subtext" data-id="nfs-datastore-name-field-require">
40
+ {{ nameErrorText }}
41
+ </div>
42
+ </div>
43
+ </div>
44
+
45
+ <div class="clr-form-control clr-row">
46
+ <label class="clr-control-label clr-col-md-2">
47
+ {{ localization.common.folder }}
48
+ </label>
49
+
50
+ <div
51
+ class="clr-control-container"
52
+ :class="folderErrorText && 'clr-error'"
53
+ >
54
+ <div class="flex-align-center">
55
+ <input
56
+ id="configuration-folder-input"
57
+ v-model="formModelLocal.folder"
58
+ data-id="configuration-folder-input"
59
+ type="text"
60
+ class="clr-input"
61
+ @blur="initValidation(true, ['folder'])"
62
+ @input="initValidation(false, ['folder'])"
63
+ />
64
+ <atoms-the-icon class="error-icon" name="info-circle" />
65
+ </div>
66
+
67
+ <div
68
+ v-if="folderErrorText"
69
+ class="clr-subtext"
70
+ data-id="folder-name-field-require"
71
+ >
72
+ {{ folderErrorText }}
73
+ </div>
74
+ <div v-else class="clr-subtext">
75
+ {{ localization.common.eg }}: /vols/vol0/datastore-001
76
+ </div>
77
+ </div>
78
+ </div>
79
+
80
+ <div class="nd-mt-0 clr-form-control clr-row">
81
+ <label class="clr-control-label clr-col-md-2">
82
+ {{ localization.common.server }}
83
+ </label>
84
+
85
+ <div
86
+ class="clr-control-container"
87
+ :class="serverErrorText && 'clr-error'"
88
+ >
89
+ <div class="flex-align-center input-action-wrapper">
90
+ <input
91
+ id="configuration-server-input"
92
+ v-model="formModelLocal.server"
93
+ data-id="configuration-server-input"
94
+ type="text"
95
+ class="clr-input"
96
+ @blur="initValidation(true, ['server'])"
97
+ @input="initValidation(false, ['server'])"
98
+ />
99
+ <atoms-the-icon class="error-icon" name="info-circle" />
100
+ </div>
101
+ <div
102
+ v-if="serverErrorText"
103
+ class="clr-subtext"
104
+ data-id="server-name-field-require"
105
+ >
106
+ {{ serverErrorText }}
107
+ </div>
108
+ <div v-else class="clr-subtext">
109
+ {{ localization.common.eg }}: nas, nas.it.com or 192.168.0.1
110
+ </div>
111
+ </div>
112
+ </div>
113
+
114
+ <!-- PC-2542-->
115
+ <div
116
+ v-if="props.project !== 'procurator'"
117
+ class="nd-mt-0 clr-form-control clr-row"
118
+ >
119
+ <label class="clr-control-label clr-col-md-2">
120
+ {{ localization.auth.username }}
121
+ </label>
122
+
123
+ <div
124
+ class="clr-control-container"
125
+ :class="usernameErrorText && 'clr-error'"
126
+ >
127
+ <div class="flex-align-center input-action-wrapper">
128
+ <input
129
+ id="configuration-username-input"
130
+ v-model="formModelLocal.user"
131
+ data-id="configuration-username-input"
132
+ type="text"
133
+ class="clr-input"
134
+ @blur="initValidation(true, ['user'])"
135
+ @input="initValidation(false, ['user'])"
136
+ />
137
+ <atoms-the-icon class="error-icon" name="info-circle" />
138
+ </div>
139
+ <div
140
+ v-if="usernameErrorText"
141
+ class="clr-subtext"
142
+ data-id="username-name-field-require"
143
+ >
144
+ {{ usernameErrorText }}
145
+ </div>
146
+ </div>
147
+ </div>
148
+
149
+ <!-- PC-2542-->
150
+ <div
151
+ v-if="props.project !== 'procurator'"
152
+ class="nd-mt-0 clr-form-control clr-row"
153
+ >
154
+ <label class="clr-control-label clr-col-md-2">
155
+ {{ localization.auth.password }}
156
+ </label>
157
+
158
+ <div
159
+ class="clr-control-container"
160
+ :class="passwordErrorText && 'clr-error'"
161
+ >
162
+ <div class="flex-align-center input-action-wrapper">
163
+ <input
164
+ id="configuration-password-input"
165
+ v-model="formModelLocal.password"
166
+ data-id="configuration-password-input"
167
+ type="password"
168
+ class="clr-input"
169
+ @blur="initValidation(true, ['password'])"
170
+ @input="initValidation(false, ['password'])"
171
+ />
172
+ <atoms-the-icon class="error-icon" name="info-circle" />
173
+ </div>
174
+ <div
175
+ v-if="passwordErrorText"
176
+ class="clr-subtext"
177
+ data-id="password-name-field-require"
178
+ >
179
+ {{ passwordErrorText }}
180
+ </div>
181
+ </div>
182
+ </div>
183
+ </div>
184
+ </template>
185
+
186
+ <script lang="ts" setup>
187
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
188
+ import type { UI_I_WizardStep } from '~/components/atoms/wizard/lib/models/interfaces'
189
+ import type { UI_I_InitialValidationFields } from '~/components/common/backup/storage/actions/add/steps/nameAndConfigure/lib/models/interfaces'
190
+ import type { UI_I_CreateDatastoreForm } from '~/components/common/backup/storage/actions/add/lib/models/interfaces'
191
+ import type { UI_T_InitialValidationFields } from '~/components/common/backup/storage/actions/add/steps/nameAndConfigure/lib/models/types'
192
+ import type { UI_T_Project } from '~/lib/models/types'
193
+ import { dynamicSteps } from '~/components/common/backup/storage/actions/add/lib/config/steps'
194
+
195
+ const formModelLocal = defineModel<UI_I_CreateDatastoreForm>({ required: true })
196
+ const isShowAlertInfo = defineModel<boolean>('alertInfo', { required: true })
197
+
198
+ const props = defineProps<{
199
+ alertMessages: string[]
200
+ messagesFields: UI_I_WizardStep['fields']
201
+ project?: UI_T_Project
202
+ }>()
203
+ const emits = defineEmits<{
204
+ (event: 'hide-alert', value: number): void
205
+ }>()
206
+
207
+ const localization = computed<UI_I_Localization>(() => useLocal())
208
+
209
+ const initValidationFields = ref<UI_I_InitialValidationFields>({
210
+ name: false,
211
+ folder: false,
212
+ server: false,
213
+ user: false,
214
+ password: false,
215
+ })
216
+ const initValidation = (
217
+ onlyBlur = false,
218
+ types: UI_T_InitialValidationFields[]
219
+ ): void => {
220
+ onlyBlur && types.forEach((type) => (initValidationFields.value[type] = true))
221
+ }
222
+
223
+ /* Validation error text for Name input field */
224
+ const nameErrorText = computed<string>(() => {
225
+ if (props.messagesFields?.name?.field && !formModelLocal.value.name) {
226
+ return props.messagesFields.name.field
227
+ }
228
+
229
+ if (!initValidationFields.value.name) return ''
230
+ return !formModelLocal.value.name
231
+ ? localization.value.common.fieldRequired
232
+ : ''
233
+ })
234
+
235
+ /* Validation error text for Folder input field */
236
+ const folderErrorText = computed<string>(() => {
237
+ if (props.messagesFields.folder?.field && !formModelLocal.value.folder) {
238
+ return props.messagesFields.folder.field
239
+ }
240
+
241
+ if (!initValidationFields.value.folder) return ''
242
+ return !formModelLocal.value.folder
243
+ ? localization.value.common.fieldRequired
244
+ : ''
245
+ })
246
+
247
+ /* Validation error text for Server input field */
248
+ const serverErrorText = computed<string>(() => {
249
+ if (props.messagesFields.server?.field && !formModelLocal.value.server) {
250
+ return props.messagesFields.server.field
251
+ }
252
+
253
+ if (!initValidationFields.value.server) return ''
254
+ return !formModelLocal.value.server
255
+ ? localization.value.common.fieldRequired
256
+ : ''
257
+ })
258
+
259
+ /* Validation error text for Username input field */
260
+ const usernameErrorText = computed<string>(() => {
261
+ if (props.messagesFields.user?.field && !formModelLocal.value.user) {
262
+ return props.messagesFields.user.field
263
+ }
264
+
265
+ if (!initValidationFields.value.user) return ''
266
+ return !formModelLocal.value.user
267
+ ? localization.value.common.fieldRequired
268
+ : ''
269
+ })
270
+
271
+ /* Validation error text for Password input field */
272
+ const passwordErrorText = computed<string>(() => {
273
+ if (props.messagesFields.password?.field && !formModelLocal.value.password) {
274
+ return props.messagesFields.password.field
275
+ }
276
+
277
+ if (!initValidationFields.value.password) return ''
278
+ return !formModelLocal.value.password
279
+ ? localization.value.common.fieldRequired
280
+ : ''
281
+ })
282
+
283
+ const onHideAlert = (): void =>
284
+ emits('hide-alert', dynamicSteps.nameAndConfigure)
285
+ </script>
286
+
287
+ <style lang="scss" scoped>
288
+ @import 'assets/scss/common/mixins.scss';
289
+ .configuration {
290
+ @include flex($dir: column, $just: space-between);
291
+ & > h6 {
292
+ font-weight: 500;
293
+ font-size: 14px;
294
+ padding-top: 6px;
295
+ margin-bottom: 10px;
296
+ }
297
+
298
+ &__alert-info {
299
+ :deep(.alert-text) {
300
+ font-size: 11px;
301
+ letter-spacing: normal;
302
+ }
303
+ }
304
+ .clr-form-control {
305
+ margin-top: 0;
306
+ display: flex;
307
+ flex-direction: row;
308
+
309
+ .clr-control-container {
310
+ min-height: 48px;
311
+ &.clr-error {
312
+ .clr-subtext,
313
+ .error-icon {
314
+ display: block;
315
+ }
316
+ }
317
+ .error-icon {
318
+ display: none;
319
+ }
320
+ .error-icon {
321
+ fill: #db2100;
322
+ width: 24px;
323
+ height: 24px;
324
+ }
325
+ }
326
+ }
327
+ &__servers-list {
328
+ height: 170px;
329
+ }
330
+ }
331
+ .flex-align-center {
332
+ &.input-action-wrapper {
333
+ width: 260px;
334
+ }
335
+ input {
336
+ width: 210px;
337
+ }
338
+ }
339
+ </style>