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,272 +1,280 @@
1
- <template>
2
- <div class="basics-step">
3
- <ui-alert
4
- v-show="isShowAlertInfo"
5
- :messages="[localization.common.nameAndConfigurationAlertInfo]"
6
- test-id="configure-information-alert"
7
- type="info"
8
- class="mb-4"
9
- size="md"
10
- @remove="isShowAlertInfo = false"
11
- />
12
-
13
- <div class="basics-step-row">
14
- <div class="basics-step-row-title">
15
- <span class="basics-step-row-title-text">
16
- {{ localization.common.name }}
17
- </span>
18
- </div>
19
- <div class="basics-step-row-content">
20
- <ui-input
21
- id="configuration-name-input"
22
- v-model="formModelLocal.name"
23
- :placeholder="localization.common.name"
24
- :error="nameErrorText"
25
- :disabled="props.isDisabledNameField"
26
- test-id="configuration-name-input"
27
- is-focused
28
- />
29
- </div>
30
- </div>
31
-
32
- <div class="basics-step-line"></div>
33
-
34
- <div class="basics-step-row">
35
- <div class="basics-step-row-title">
36
- <span class="basics-step-row-title-text">
37
- {{ localization.common.folder }}
38
- </span>
39
- <common-tooltip-help
40
- test-id="backup-storage-tooltip-info-folder"
41
- help-id="backup-storage-tooltip-info-folder-icon"
42
- :title="localization.common.information"
43
- :help-text="localization.backup.specifyFolderPathExample"
44
- dropdown-width="272px"
45
- dropdown-left
46
- dropdown-top
47
- />
48
- </div>
49
- <div class="basics-step-row-content">
50
- <ui-input
51
- id="configuration-folder-input"
52
- v-model="formModelLocal.folder"
53
- :placeholder="localization.backup.folderPlaceholder"
54
- :error="folderErrorText"
55
- :disabled="props.isDisabledNameField"
56
- test-id="configuration-folder-input"
57
- />
58
- </div>
59
- </div>
60
-
61
- <div class="basics-step-line"></div>
62
-
63
- <div class="basics-step-row">
64
- <div class="basics-step-row-title">
65
- <span class="basics-step-row-title-text">
66
- {{ localization.common.server }}
67
- </span>
68
- <common-tooltip-help
69
- test-id="backup-storage-tooltip-info-server"
70
- help-id="backup-storage-tooltip-info-server-icon"
71
- :title="localization.common.information"
72
- :help-text="localization.backup.specifyServerAddressExample"
73
- dropdown-width="272px"
74
- dropdown-left
75
- dropdown-top
76
- />
77
- </div>
78
- <div class="basics-step-row-content">
79
- <ui-input
80
- id="configuration-server-input"
81
- v-model="formModelLocal.server"
82
- :placeholder="localization.backup.serverPlaceholder"
83
- :error="serverErrorText"
84
- :disabled="props.isDisabledNameField"
85
- test-id="configuration-server-input"
86
- />
87
- </div>
88
- </div>
89
-
90
- <div class="basics-step-line"></div>
91
-
92
- <div class="basics-step-row">
93
- <div class="basics-step-row-title">
94
- <span class="basics-step-row-title-text">
95
- {{ localization.auth.username }}
96
- </span>
97
- </div>
98
- <div class="basics-step-row-content">
99
- <ui-input
100
- id="configuration-username-input"
101
- v-model="formModelLocal.user"
102
- :placeholder="localization.auth.username"
103
- :error="usernameErrorText"
104
- :disabled="props.isDisabledNameField"
105
- test-id="configuration-username-input"
106
- />
107
- </div>
108
- </div>
109
-
110
- <div class="basics-step-line"></div>
111
-
112
- <div class="basics-step-row">
113
- <div class="basics-step-row-title">
114
- <span class="basics-step-row-title-text">
115
- {{ localization.auth.password }}
116
- </span>
117
- </div>
118
- <div class="basics-step-row-content">
119
- <ui-input
120
- id="configuration-password-input"
121
- v-model="formModelLocal.password"
122
- :placeholder="localization.auth.password"
123
- :error="passwordErrorText"
124
- :disabled="props.isDisabledNameField"
125
- type="password"
126
- test-id="configuration-password-input"
127
- />
128
- </div>
129
- </div>
130
- </div>
131
- </template>
132
-
133
- <script setup lang="ts">
134
- import type { UI_I_Localization } from '~/lib/models/interfaces'
135
- import type { UI_I_WizardStep } from '~/components/atoms/wizard/lib/models/interfaces'
136
- import type { UI_I_CreateDatastoreForm } from '~/components/common/backup/storage/actions/add/lib/models/interfaces'
137
-
138
- const formModelLocal = defineModel<UI_I_CreateDatastoreForm>({ required: true })
139
- const isShowAlertInfo = defineModel<boolean>('alertInfo', { required: true })
140
-
141
- const props = defineProps<{
142
- alertMessages: string[]
143
- messagesFields: UI_I_WizardStep['fields']
144
- isDisabledNameField?: boolean
145
- }>()
146
-
147
- const localization = computed<UI_I_Localization>(() => useLocal())
148
-
149
- const isEmptyAlertMessages = computed<boolean>(() => {
150
- return (
151
- !props.alertMessages?.length ||
152
- (props.alertMessages && !props.alertMessages.flat().length)
153
- )
154
- })
155
-
156
- /* Validation error text for Name input field */
157
- const nameErrorText = computed<string>(() => {
158
- if (isEmptyAlertMessages.value && props.messagesFields?.name?.field) {
159
- return props.messagesFields.name.field
160
- } else if (!formModelLocal.value.name) {
161
- return localization.value.common.fieldRequired
162
- }
163
- return ''
164
- })
165
-
166
- /* Validation error text for Folder input field */
167
- const folderErrorText = computed<string>(() => {
168
- if (isEmptyAlertMessages.value && props.messagesFields.folder?.field) {
169
- return props.messagesFields.folder.field
170
- }
171
- return ''
172
- })
173
-
174
- /* Validation error text for Server input field */
175
- const serverErrorText = computed<string>(() => {
176
- if (isEmptyAlertMessages.value && props.messagesFields.server?.field) {
177
- return props.messagesFields.server.field
178
- }
179
- return ''
180
- })
181
-
182
- /* Validation error text for Username input field */
183
- const usernameErrorText = computed<string>(() => {
184
- if (isEmptyAlertMessages.value && props.messagesFields.user?.field) {
185
- return props.messagesFields.user.field
186
- }
187
- return ''
188
- })
189
-
190
- /* Validation error text for Password input field */
191
- const passwordErrorText = computed<string>(() => {
192
- if (isEmptyAlertMessages.value && props.messagesFields.password?.field) {
193
- return props.messagesFields.password.field
194
- }
195
- return ''
196
- })
197
- </script>
198
-
199
- <style scoped lang="scss">
200
- .basics-step {
201
- padding: 16px 0 16px;
202
-
203
- &-row {
204
- min-height: 36px;
205
- width: 100%;
206
- display: flex;
207
- column-gap: 16px;
208
- align-items: center;
209
-
210
- &-title {
211
- padding-top: 8px;
212
- max-width: 240px;
213
- width: 100%;
214
- display: flex;
215
- align-items: center;
216
- column-gap: 8px;
217
- font-weight: 400;
218
- font-size: 13px;
219
- line-height: 20px;
220
- letter-spacing: 0;
221
- vertical-align: middle;
222
- align-self: flex-start;
223
- color: var(--wizard-content-title);
224
- white-space: nowrap;
225
- text-overflow: ellipsis;
226
- overflow: hidden;
227
-
228
- &-text {
229
- display: block;
230
- white-space: nowrap;
231
- text-overflow: ellipsis;
232
- overflow: hidden;
233
- }
234
- }
235
-
236
- &-content {
237
- max-width: 480px;
238
- width: 100%;
239
- font-weight: 400;
240
- font-size: 13px;
241
- line-height: 20px;
242
- letter-spacing: 0;
243
- vertical-align: middle;
244
- color: var(--wizard-content-value);
245
-
246
- &-text {
247
- display: flex;
248
- column-gap: 8px;
249
- align-items: center;
250
-
251
- &-icon {
252
- width: 20px;
253
- min-width: 20px;
254
- height: 20px;
255
- min-height: 20px;
256
- }
257
- }
258
-
259
- &-switch-container {
260
- width: fit-content;
261
- }
262
- }
263
- }
264
-
265
- &-line {
266
- height: 0;
267
- width: 100%;
268
- border-bottom: 1px solid var(--wizard-content-line);
269
- margin: 16px 0;
270
- }
271
- }
272
- </style>
1
+ <template>
2
+ <div class="basics-step">
3
+ <ui-alert
4
+ v-show="isShowAlertInfo"
5
+ :messages="[localization.common.nameAndConfigurationAlertInfo]"
6
+ test-id="configure-information-alert"
7
+ type="info"
8
+ class="mb-4"
9
+ size="md"
10
+ @remove="isShowAlertInfo = false"
11
+ />
12
+
13
+ <div class="basics-step-row">
14
+ <div class="basics-step-row-title">
15
+ <span class="basics-step-row-title-text">
16
+ {{ localization.common.name }}
17
+ </span>
18
+ </div>
19
+ <div class="basics-step-row-content">
20
+ <ui-input
21
+ id="configuration-name-input"
22
+ v-model="formModelLocal.name"
23
+ :placeholder="localization.common.name"
24
+ :error="nameErrorText"
25
+ :disabled="props.isDisabledNameField"
26
+ test-id="configuration-name-input"
27
+ is-focused
28
+ />
29
+ </div>
30
+ </div>
31
+
32
+ <div class="basics-step-line"></div>
33
+
34
+ <div class="basics-step-row">
35
+ <div class="basics-step-row-title">
36
+ <span class="basics-step-row-title-text">
37
+ {{ localization.common.folder }}
38
+ </span>
39
+ <common-tooltip-help
40
+ test-id="backup-storage-tooltip-info-folder"
41
+ help-id="backup-storage-tooltip-info-folder-icon"
42
+ :title="localization.common.information"
43
+ :help-text="localization.backup.specifyFolderPathExample"
44
+ dropdown-width="272px"
45
+ dropdown-left
46
+ dropdown-top
47
+ />
48
+ </div>
49
+ <div class="basics-step-row-content">
50
+ <ui-input
51
+ id="configuration-folder-input"
52
+ v-model="formModelLocal.folder"
53
+ :placeholder="localization.backup.folderPlaceholder"
54
+ :error="folderErrorText"
55
+ :disabled="props.isDisabledNameField"
56
+ test-id="configuration-folder-input"
57
+ />
58
+ </div>
59
+ </div>
60
+
61
+ <div class="basics-step-line"></div>
62
+
63
+ <div class="basics-step-row">
64
+ <div class="basics-step-row-title">
65
+ <span class="basics-step-row-title-text">
66
+ {{ localization.common.server }}
67
+ </span>
68
+ <common-tooltip-help
69
+ test-id="backup-storage-tooltip-info-server"
70
+ help-id="backup-storage-tooltip-info-server-icon"
71
+ :title="localization.common.information"
72
+ :help-text="localization.backup.specifyServerAddressExample"
73
+ dropdown-width="272px"
74
+ dropdown-left
75
+ dropdown-top
76
+ />
77
+ </div>
78
+ <div class="basics-step-row-content">
79
+ <ui-input
80
+ id="configuration-server-input"
81
+ v-model="formModelLocal.server"
82
+ :placeholder="localization.backup.serverPlaceholder"
83
+ :error="serverErrorText"
84
+ :disabled="props.isDisabledNameField"
85
+ test-id="configuration-server-input"
86
+ />
87
+ </div>
88
+ </div>
89
+
90
+ <!-- PC-2542-->
91
+ <template v-if="props.project !== 'procurator'">
92
+ <div class="basics-step-line"></div>
93
+
94
+ <div class="basics-step-row">
95
+ <div class="basics-step-row-title">
96
+ <span class="basics-step-row-title-text">
97
+ {{ localization.auth.username }}
98
+ </span>
99
+ </div>
100
+ <div class="basics-step-row-content">
101
+ <ui-input
102
+ id="configuration-username-input"
103
+ v-model="formModelLocal.user"
104
+ :placeholder="localization.auth.username"
105
+ :error="usernameErrorText"
106
+ :disabled="props.isDisabledNameField"
107
+ test-id="configuration-username-input"
108
+ />
109
+ </div>
110
+ </div>
111
+ </template>
112
+
113
+ <!-- PC-2542-->
114
+ <template v-if="props.project !== 'procurator'">
115
+ <div class="basics-step-line"></div>
116
+
117
+ <div class="basics-step-row">
118
+ <div class="basics-step-row-title">
119
+ <span class="basics-step-row-title-text">
120
+ {{ localization.auth.password }}
121
+ </span>
122
+ </div>
123
+ <div class="basics-step-row-content">
124
+ <ui-input
125
+ id="configuration-password-input"
126
+ v-model="formModelLocal.password"
127
+ :placeholder="localization.auth.password"
128
+ :error="passwordErrorText"
129
+ :disabled="props.isDisabledNameField"
130
+ type="password"
131
+ test-id="configuration-password-input"
132
+ />
133
+ </div>
134
+ </div>
135
+ </template>
136
+ </div>
137
+ </template>
138
+
139
+ <script setup lang="ts">
140
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
141
+ import type { UI_I_WizardStep } from '~/components/atoms/wizard/lib/models/interfaces'
142
+ import type { UI_I_CreateDatastoreForm } from '~/components/common/backup/storage/actions/add/lib/models/interfaces'
143
+ import type { UI_T_Project } from '~/lib/models/types'
144
+
145
+ const formModelLocal = defineModel<UI_I_CreateDatastoreForm>({ required: true })
146
+ const isShowAlertInfo = defineModel<boolean>('alertInfo', { required: true })
147
+
148
+ const props = defineProps<{
149
+ alertMessages: string[]
150
+ messagesFields: UI_I_WizardStep['fields']
151
+ isDisabledNameField?: boolean
152
+ project?: UI_T_Project
153
+ }>()
154
+
155
+ const localization = computed<UI_I_Localization>(() => useLocal())
156
+
157
+ const isEmptyAlertMessages = computed<boolean>(() => {
158
+ return (
159
+ !props.alertMessages?.length ||
160
+ (props.alertMessages && !props.alertMessages.flat().length)
161
+ )
162
+ })
163
+
164
+ /* Validation error text for Name input field */
165
+ const nameErrorText = computed<string>(() => {
166
+ if (isEmptyAlertMessages.value && props.messagesFields?.name?.field) {
167
+ return props.messagesFields.name.field
168
+ } else if (!formModelLocal.value.name) {
169
+ return localization.value.common.fieldRequired
170
+ }
171
+ return ''
172
+ })
173
+
174
+ /* Validation error text for Folder input field */
175
+ const folderErrorText = computed<string>(() => {
176
+ if (isEmptyAlertMessages.value && props.messagesFields.folder?.field) {
177
+ return props.messagesFields.folder.field
178
+ }
179
+ return ''
180
+ })
181
+
182
+ /* Validation error text for Server input field */
183
+ const serverErrorText = computed<string>(() => {
184
+ if (isEmptyAlertMessages.value && props.messagesFields.server?.field) {
185
+ return props.messagesFields.server.field
186
+ }
187
+ return ''
188
+ })
189
+
190
+ /* Validation error text for Username input field */
191
+ const usernameErrorText = computed<string>(() => {
192
+ if (isEmptyAlertMessages.value && props.messagesFields.user?.field) {
193
+ return props.messagesFields.user.field
194
+ }
195
+ return ''
196
+ })
197
+
198
+ /* Validation error text for Password input field */
199
+ const passwordErrorText = computed<string>(() => {
200
+ if (isEmptyAlertMessages.value && props.messagesFields.password?.field) {
201
+ return props.messagesFields.password.field
202
+ }
203
+ return ''
204
+ })
205
+ </script>
206
+
207
+ <style scoped lang="scss">
208
+ .basics-step {
209
+ padding: 16px 0 16px;
210
+
211
+ &-row {
212
+ min-height: 36px;
213
+ width: 100%;
214
+ display: flex;
215
+ column-gap: 16px;
216
+ align-items: center;
217
+
218
+ &-title {
219
+ padding-top: 8px;
220
+ max-width: 240px;
221
+ width: 100%;
222
+ display: flex;
223
+ align-items: center;
224
+ column-gap: 8px;
225
+ font-weight: 400;
226
+ font-size: 13px;
227
+ line-height: 20px;
228
+ letter-spacing: 0;
229
+ vertical-align: middle;
230
+ align-self: flex-start;
231
+ color: var(--wizard-content-title);
232
+ white-space: nowrap;
233
+ text-overflow: ellipsis;
234
+ overflow: hidden;
235
+
236
+ &-text {
237
+ display: block;
238
+ white-space: nowrap;
239
+ text-overflow: ellipsis;
240
+ overflow: hidden;
241
+ }
242
+ }
243
+
244
+ &-content {
245
+ max-width: 480px;
246
+ width: 100%;
247
+ font-weight: 400;
248
+ font-size: 13px;
249
+ line-height: 20px;
250
+ letter-spacing: 0;
251
+ vertical-align: middle;
252
+ color: var(--wizard-content-value);
253
+
254
+ &-text {
255
+ display: flex;
256
+ column-gap: 8px;
257
+ align-items: center;
258
+
259
+ &-icon {
260
+ width: 20px;
261
+ min-width: 20px;
262
+ height: 20px;
263
+ min-height: 20px;
264
+ }
265
+ }
266
+
267
+ &-switch-container {
268
+ width: fit-content;
269
+ }
270
+ }
271
+ }
272
+
273
+ &-line {
274
+ height: 0;
275
+ width: 100%;
276
+ border-bottom: 1px solid var(--wizard-content-line);
277
+ margin: 16px 0;
278
+ }
279
+ }
280
+ </style>