bfg-common 1.5.246 → 1.5.248

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 (46) 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/assets/localization/local_be.json +15 -4
  6. package/assets/localization/local_en.json +15 -4
  7. package/assets/localization/local_hy.json +15 -4
  8. package/assets/localization/local_kk.json +15 -4
  9. package/assets/localization/local_ru.json +19 -8
  10. package/assets/localization/local_zh.json +15 -4
  11. package/assets/scss/clarity/local_ar.json +2 -2
  12. package/assets/scss/common/theme.scss +16 -0
  13. package/components/atoms/stack/StackBlock.vue +185 -185
  14. package/components/atoms/table/info/lib/models/interfaces.ts +10 -10
  15. package/components/common/backup/storage/actions/add/New.vue +6 -8
  16. package/components/common/backup/storage/actions/add/lib/config/createDatastore.ts +1 -1
  17. package/components/common/backup/storage/actions/add/lib/config/steps.ts +3 -3
  18. package/components/common/backup/storage/actions/add/steps/common/tooltipInfo/TooltipInfo.vue +94 -0
  19. package/components/common/backup/storage/actions/add/steps/hostAccessibility/HostAccessibility.vue +16 -18
  20. package/components/common/backup/storage/actions/add/steps/hostAccessibility/HostAccessibilityNew.vue +2 -7
  21. package/components/common/backup/storage/actions/add/steps/hostAccessibility/table/new/lib/config/compatibleTable.ts +3 -2
  22. package/components/common/backup/storage/actions/add/steps/name/Name.vue +1 -0
  23. package/components/common/backup/storage/actions/add/steps/name/New.vue +3 -16
  24. package/components/common/backup/storage/actions/add/steps/nameAndConfigure/NameAndConfigure.vue +1 -0
  25. package/components/common/backup/storage/actions/add/steps/nameAndConfigure/NameAndConfigureNew.vue +25 -73
  26. package/components/common/backup/storage/actions/add/steps/readyComplete/ReadyCompleteNew.vue +43 -5
  27. package/components/common/backup/storage/actions/add/steps/readyComplete/lib/config/propertiesDetails.ts +6 -5
  28. package/components/common/backup/storage/actions/add/steps/typeMode/TypeModeNew.vue +15 -16
  29. package/components/common/layout/theHeader/feedback/new/additionalDetails/Headline.vue +67 -8
  30. package/components/common/layout/theHeader/feedback/new/subtitle/Subtitle.vue +72 -8
  31. package/components/common/pages/tasks/table/Table.vue +7 -15
  32. package/components/common/pages/tasks/table/errorInfo/ErrorInfo.vue +128 -0
  33. package/components/common/pages/tasks/table/expandDetails/ExpandDetails.vue +9 -15
  34. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +99 -10
  35. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +1 -1
  36. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuNew.vue +3 -52
  37. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/model/ModelNew.vue +151 -32
  38. package/components/common/vm/actions/common/select/name/New.vue +70 -10
  39. package/components/common/wizards/datastore/add/New.vue +3 -8
  40. package/components/common/wizards/datastore/add/steps/common/tooltipInfo/TooltipInfo.vue +93 -0
  41. package/components/common/wizards/datastore/add/steps/nameAndConfigure/NameAndConfigureNew.vue +6 -17
  42. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceNew.vue +3 -9
  43. package/components/common/wizards/datastore/add/steps/typeMode/TypeModeNew.vue +6 -9
  44. package/package.json +1 -1
  45. package/components/common/tooltip/Help.vue +0 -132
  46. package/components/common/tooltip/lib/models/types.ts +0 -1
@@ -12,12 +12,9 @@
12
12
  v-model="formModelLocal.name"
13
13
  test-id="name-selection-input"
14
14
  :error="nameErrorText"
15
- @blur="initValidation(true)"
16
- @input="initValidation(false)"
17
15
  />
18
16
  </div>
19
17
  </div>
20
-
21
18
  </div>
22
19
  </template>
23
20
 
@@ -31,27 +28,17 @@ import type { UI_I_CreateDatastoreForm } from '~/components/common/backup/storag
31
28
 
32
29
  const formModelLocal = defineModel<UI_I_CreateDatastoreForm>({ required: true })
33
30
  const props = defineProps<{
31
+ alertMessages: string[]
34
32
  messagesFields: UI_I_ArbitraryObject<UI_I_ErrorFields>
35
33
  }>()
36
34
 
37
35
  const localization = computed<UI_I_Localization>(() => useLocal())
38
36
 
39
- const isInitDatastoreNameValidation = ref<boolean>(false)
40
- const initValidation = (onlyBlur: boolean): void => {
41
- onlyBlur && (isInitDatastoreNameValidation.value = true)
42
- }
43
37
  const nameErrorText = computed<string>(() => {
44
- if (
45
- props.messagesFields?.name?.field &&
46
- !formModelLocal.value.name
47
- ) {
38
+ if (!props.alertMessages?.length && props.messagesFields?.name?.field) {
48
39
  return props.messagesFields.name.field
49
40
  }
50
-
51
- if (!isInitDatastoreNameValidation.value) return ''
52
- return !formModelLocal.value.name
53
- ? localization.value.common.specifyDatastoreName
54
- : ''
41
+ return ''
55
42
  })
56
43
  </script>
57
44
 
@@ -3,6 +3,7 @@
3
3
  v-if="isNewView"
4
4
  v-model="formModel"
5
5
  v-model:alert-info="isShowAlertInfo"
6
+ :alert-messages="props.alertMessages"
6
7
  :messages-fields="props.messagesFields"
7
8
  />
8
9
 
@@ -6,6 +6,7 @@
6
6
  :messages="[localization.common.nameAndConfigurationAlertInfo]"
7
7
  type="info"
8
8
  class="mb-4"
9
+ size="md"
9
10
  @remove="isShowAlertInfo = false"
10
11
  />
11
12
 
@@ -23,8 +24,6 @@
23
24
  is-focused
24
25
  :placeholder="localization.common.name"
25
26
  :error="nameErrorText"
26
- @blur="initValidation(true, ['name'])"
27
- @input="initValidation(false, ['name'])"
28
27
  />
29
28
  </div>
30
29
  </div>
@@ -36,14 +35,9 @@
36
35
  <span class="basics-step-row-title-text">
37
36
  {{ localization.common.folder }}
38
37
  </span>
39
- <common-tooltip-help
40
- test-id="backup-storage-folder-help"
41
- help-id="backup-storage-folder-icon"
42
- :title="localization.common.information"
43
- :help-text="'Specify the folder path - for example, /vols/vol0/datastore-001'"
44
- dropdown-width="272px"
45
- dropdown-left
46
- dropdown-top
38
+ <common-backup-storage-actions-add-steps-common-tooltip-info
39
+ id="backup-storage-tooltip-info-folder"
40
+ :description="localization.backup.specifyFolderPathExample"
47
41
  />
48
42
  </div>
49
43
  <div class="basics-step-row-content">
@@ -51,10 +45,8 @@
51
45
  id="configuration-folder-input"
52
46
  v-model="formModelLocal.folder"
53
47
  test-id="configuration-folder-input"
54
- placeholder="E.g: /vols/vol0/datastore-001"
48
+ :placeholder="localization.backup.folderPlaceholder"
55
49
  :error="folderErrorText"
56
- @blur="initValidation(true, ['folder'])"
57
- @input="initValidation(false, ['folder'])"
58
50
  />
59
51
  </div>
60
52
  </div>
@@ -66,14 +58,9 @@
66
58
  <span class="basics-step-row-title-text">
67
59
  {{ localization.common.server }}
68
60
  </span>
69
- <common-tooltip-help
70
- test-id="backup-storage-server-help"
71
- help-id="backup-storage-server-icon"
72
- :title="localization.common.information"
73
- :help-text="'Specify the server address - for example, nas, nas.it.com or 192.168.0.1.'"
74
- dropdown-width="272px"
75
- dropdown-left
76
- dropdown-top
61
+ <common-backup-storage-actions-add-steps-common-tooltip-info
62
+ id="backup-storage-tooltip-info-server"
63
+ :description="localization.backup.specifyServerAddressExample"
77
64
  />
78
65
  </div>
79
66
  <div class="basics-step-row-content">
@@ -81,10 +68,8 @@
81
68
  id="configuration-server-input"
82
69
  v-model="formModelLocal.server"
83
70
  test-id="configuration-server-input"
84
- placeholder="E.g: nas, nas.it.com or 192.168.0.1"
71
+ :placeholder="localization.backup.serverPlaceholder"
85
72
  :error="serverErrorText"
86
- @blur="initValidation(true, ['server'])"
87
- @input="initValidation(false, ['server'])"
88
73
  />
89
74
  </div>
90
75
  </div>
@@ -104,8 +89,6 @@
104
89
  test-id="configuration-username-input"
105
90
  :placeholder="localization.auth.username"
106
91
  :error="usernameErrorText"
107
- @blur="initValidation(true, ['user'])"
108
- @input="initValidation(false, ['user'])"
109
92
  />
110
93
  </div>
111
94
  </div>
@@ -126,8 +109,6 @@
126
109
  test-id="configuration-password-input"
127
110
  :placeholder="localization.auth.password"
128
111
  :error="passwordErrorText"
129
- @blur="initValidation(true, ['password'])"
130
- @input="initValidation(false, ['password'])"
131
112
  />
132
113
  </div>
133
114
  </div>
@@ -138,13 +119,12 @@
138
119
  import type { UI_I_Localization } from '~/lib/models/interfaces'
139
120
  import type { UI_I_WizardStep } from '~/components/atoms/wizard/lib/models/interfaces'
140
121
  import type { UI_I_CreateDatastoreForm } from '~/components/common/backup/storage/actions/add/lib/models/interfaces'
141
- import type { UI_I_InitialValidationFields } from '~/components/common/backup/storage/actions/add/steps/nameAndConfigure/lib/models/interfaces'
142
- import type { UI_T_InitialValidationFields } from '~/components/common/backup/storage/actions/add/steps/nameAndConfigure/lib/models/types'
143
122
 
144
123
  const formModelLocal = defineModel<UI_I_CreateDatastoreForm>({ required: true })
145
124
  const isShowAlertInfo = defineModel<boolean>('alertInfo', { required: true })
146
125
 
147
126
  const props = defineProps<{
127
+ alertMessages: string[]
148
128
  messagesFields: UI_I_WizardStep['fields']
149
129
  }>()
150
130
  const emits = defineEmits<{
@@ -153,78 +133,50 @@ const emits = defineEmits<{
153
133
 
154
134
  const localization = computed<UI_I_Localization>(() => useLocal())
155
135
 
156
- const initValidationFields = ref<UI_I_InitialValidationFields>({
157
- name: false,
158
- folder: false,
159
- server: false,
160
- user: false,
161
- password: false,
136
+ const isEmptyAlertMessages = computed<boolean>(() => {
137
+ return (
138
+ !props.alertMessages?.length ||
139
+ (props.alertMessages && !props.alertMessages.flat().length)
140
+ )
162
141
  })
163
- const initValidation = (
164
- onlyBlur = false,
165
- types: UI_T_InitialValidationFields[]
166
- ): void => {
167
- onlyBlur && types.forEach((type) => (initValidationFields.value[type] = true))
168
- }
169
-
170
142
  /* Validation error text for Name input field */
171
143
  const nameErrorText = computed<string>(() => {
172
- if (props.messagesFields?.name?.field && !formModelLocal.value.name) {
144
+ if (isEmptyAlertMessages.value && props.messagesFields?.name?.field) {
173
145
  return props.messagesFields.name.field
174
146
  }
175
-
176
- if (!initValidationFields.value.name) return ''
177
- return !formModelLocal.value.name
178
- ? localization.value.common.fieldRequired
179
- : ''
147
+ return ''
180
148
  })
181
149
 
182
150
  /* Validation error text for Folder input field */
183
151
  const folderErrorText = computed<string>(() => {
184
- if (props.messagesFields.folder?.field && !formModelLocal.value.folder) {
152
+ if (isEmptyAlertMessages.value && props.messagesFields.folder?.field) {
185
153
  return props.messagesFields.folder.field
186
154
  }
187
-
188
- if (!initValidationFields.value.folder) return ''
189
- return !formModelLocal.value.folder
190
- ? localization.value.common.fieldRequired
191
- : ''
155
+ return ''
192
156
  })
193
157
 
194
158
  /* Validation error text for Server input field */
195
159
  const serverErrorText = computed<string>(() => {
196
- if (props.messagesFields.server?.field && !formModelLocal.value.server) {
160
+ if (isEmptyAlertMessages.value && props.messagesFields.server?.field) {
197
161
  return props.messagesFields.server.field
198
162
  }
199
-
200
- if (!initValidationFields.value.server) return ''
201
- return !formModelLocal.value.server
202
- ? localization.value.common.fieldRequired
203
- : ''
163
+ return ''
204
164
  })
205
165
 
206
166
  /* Validation error text for Username input field */
207
167
  const usernameErrorText = computed<string>(() => {
208
- if (props.messagesFields.user?.field && !formModelLocal.value.user) {
168
+ if (isEmptyAlertMessages.value && props.messagesFields.user?.field) {
209
169
  return props.messagesFields.user.field
210
170
  }
211
-
212
- if (!initValidationFields.value.user) return ''
213
- return !formModelLocal.value.user
214
- ? localization.value.common.fieldRequired
215
- : ''
171
+ return ''
216
172
  })
217
173
 
218
174
  /* Validation error text for Password input field */
219
175
  const passwordErrorText = computed<string>(() => {
220
- if (props.messagesFields.password?.field && !formModelLocal.value.password) {
176
+ if (isEmptyAlertMessages.value && props.messagesFields.password?.field) {
221
177
  return props.messagesFields.password.field
222
178
  }
223
-
224
- if (!initValidationFields.value.password) return ''
225
- return !formModelLocal.value.password
226
- ? localization.value.common.fieldRequired
227
- : ''
179
+ return ''
228
180
  })
229
181
  </script>
230
182
 
@@ -14,7 +14,13 @@
14
14
  :key="listKey"
15
15
  class="details-item"
16
16
  >
17
- <span class="details-item-label"> {{ list.label }}: </span>
17
+ <span
18
+ ref="detailsItemLabel"
19
+ :style="{ width: labelMaxWidth + 'px' }"
20
+ class="details-item-label"
21
+ >
22
+ {{ list.label }}:
23
+ </span>
18
24
 
19
25
  <div class="details-list__col-right">
20
26
  <!-- Если value — массив -->
@@ -27,14 +33,20 @@
27
33
  :key="itemKey"
28
34
  class="details-item-value"
29
35
  >
30
- <span :class="['icon', item.iconClassName]"></span>
36
+ <span
37
+ v-if="item.iconClassName"
38
+ :class="['icon', item.iconClassName]"
39
+ ></span>
31
40
  {{ item.label }}
32
41
  </span>
33
42
  </div>
34
43
 
35
44
  <!-- Если value — обычная строка -->
36
45
  <span v-else class="details-item-value">
37
- <span :class="['icon', list.iconClassName]"></span>
46
+ <span
47
+ v-if="list.iconClassName"
48
+ :class="['icon', list.iconClassName]"
49
+ ></span>
38
50
  {{ list.value }}
39
51
  </span>
40
52
  </div>
@@ -51,17 +63,41 @@ import type { UI_I_DetailsItem } from '~/components/common/details/lib/models/in
51
63
  const props = defineProps<{
52
64
  dataReadyView: UI_I_DetailsItem[]
53
65
  }>()
66
+
67
+ const detailsItemLabel = ref([])
68
+ const labelMaxWidth = computed(() => {
69
+ let maxWidth = 0
70
+ for (const key in detailsItemLabel.value) {
71
+ const node = detailsItemLabel.value[key]
72
+ if (node.scrollWidth > maxWidth) maxWidth = node.scrollWidth
73
+ }
74
+ return maxWidth
75
+ })
54
76
  </script>
55
77
 
78
+ <style>
79
+ :root {
80
+ --ready-to-complate-border-color: #e9ebeda3;
81
+ }
82
+ :root.dark-theme {
83
+ --ready-to-complate-border-color: #e9ebed1f;
84
+ }
85
+ </style>
56
86
  <style lang="scss" scoped>
57
87
  .ready-complete {
58
88
  &__section {
59
89
  &:not(:last-child) {
60
- border-bottom: 1px solid #e9ebed; // for dark and light mode
90
+ color: var(--global-border-color);
91
+ border-bottom: 1px solid var(--ready-to-complate-border-color);
61
92
  }
62
93
  }
63
94
 
64
95
  .details {
96
+ &:last-child {
97
+ .details__list {
98
+ padding-bottom: 16px;
99
+ }
100
+ }
65
101
  &__container {
66
102
  display: flex;
67
103
  flex-direction: column;
@@ -71,7 +107,7 @@ const props = defineProps<{
71
107
  color: var(--title-form-first-color);
72
108
  font-weight: 500;
73
109
  font-size: 14px;
74
- line-height: 100%;
110
+ line-height: 18px;
75
111
  margin: 16px 0;
76
112
  }
77
113
 
@@ -113,6 +149,8 @@ const props = defineProps<{
113
149
  }
114
150
 
115
151
  .icon {
152
+ min-width: 20px;
153
+ min-height: 20px;
116
154
  margin-right: 8px;
117
155
  }
118
156
  }
@@ -48,10 +48,11 @@ const localDetailsFunc = (
48
48
  value: '',
49
49
  items: [
50
50
  {
51
- label: localization.common.datastoreName,
51
+ label: localization.common.name,
52
52
  value: name,
53
53
  items: [],
54
54
  testId: 'view-selected-name-in-complete',
55
+ iconClassName: 'vsphere-icon-datastore',
55
56
  },
56
57
  ],
57
58
  actions: [],
@@ -94,7 +95,7 @@ const nfsDetailsFunc = (
94
95
  value: '',
95
96
  items: [
96
97
  {
97
- label: localization.common.datastoreName,
98
+ label: localization.common.name,
98
99
  value: name,
99
100
  items: [],
100
101
  testId: 'view-storage-name-in-complete',
@@ -140,7 +141,7 @@ const sambaDetailsFunc = (
140
141
  value: '',
141
142
  items: [
142
143
  {
143
- label: localization.common.datastoreName,
144
+ label: localization.common.name,
144
145
  value: name,
145
146
  items: [],
146
147
  testId: 'view-storage-name-in-complete',
@@ -187,7 +188,7 @@ const sharedStormDetailsFunc = (
187
188
  value: '',
188
189
  items: [
189
190
  {
190
- label: localization.common.datastoreName,
191
+ label: localization.common.name,
191
192
  value: name,
192
193
  items: [],
193
194
  testId: 'view-storage-name-in-complete',
@@ -201,7 +202,7 @@ const sharedStormDetailsFunc = (
201
202
  value: '',
202
203
  items: [
203
204
  {
204
- label: localization.common.datastoreName,
205
+ label: localization.common.name,
205
206
  value: datastore.name,
206
207
  items: [],
207
208
  testId: 'view-storage-name-in-complete',
@@ -11,20 +11,15 @@
11
11
  size="md"
12
12
  >
13
13
  <template #description>
14
- <span class="lockdown-mode__radio-description">
14
+ <span class="datastore-type__radio-description">
15
15
  {{ option.description }}
16
16
  </span>
17
17
  </template>
18
18
 
19
19
  <template #tooltip>
20
- <common-tooltip-help
21
- :test-id="`${option.testId}-${key}`"
22
- :help-id="`${option.testId}-${key}`"
23
- :help-text="option.tooltipContent"
24
- :title="localization.common.information"
25
- dropdown-width="272px"
26
- dropdown-left
27
- dropdown-top
20
+ <common-backup-storage-actions-add-steps-common-tooltip-info
21
+ :id="option.testId"
22
+ :description="option.tooltipContent"
28
23
  />
29
24
  </template>
30
25
  </ui-radio>
@@ -33,16 +28,13 @@
33
28
  </template>
34
29
 
35
30
  <script lang="ts" setup>
31
+ // TODO this component is duplicate
36
32
  import type { UI_I_RadioOption } from '~/components/common/select/radio/lib/models/interfaces'
37
- import type {UI_I_Localization} from "~/lib/models/interfaces";
38
33
 
39
34
  const datastoreTypeModeLocal = defineModel<number>({ required: true })
40
35
  const props = defineProps<{
41
36
  options: UI_I_RadioOption[]
42
37
  }>()
43
-
44
- const localization = computed<UI_I_Localization>(() => useLocal())
45
-
46
38
  </script>
47
39
 
48
40
  <style>
@@ -66,9 +58,11 @@ const localization = computed<UI_I_Localization>(() => useLocal())
66
58
  display: grid;
67
59
  grid-template-columns: 1fr 1fr;
68
60
  gap: 12px;
61
+ padding-bottom: 16px;
69
62
  }
70
63
  &-description {
71
64
  color: #9da6ad;
65
+ line-height: 18px;
72
66
  }
73
67
  }
74
68
  :deep(input[type='radio']) {
@@ -76,21 +70,26 @@ const localization = computed<UI_I_Localization>(() => useLocal())
76
70
  width: 100%;
77
71
  height: 100%;
78
72
  background-color: var(--select-bg);
79
- border: 1px solid var(--line-color);
73
+ //border: 1px solid var(--line-color);
74
+ border: none;
80
75
  border-radius: 8px;
81
76
  padding: 12px;
77
+ transition: box-shadow 0.1s ease-in-out;
78
+ box-shadow: inset 0 0 0 1px var(--line-color);
82
79
  }
83
80
 
84
81
  &:not(:checked) {
85
82
  & ~ .radio-label:hover {
86
- border-color: var(--select-border);
83
+ //border-color: var(--select-border);
84
+ box-shadow: inset 0 0 0 1px var(--select-border);
87
85
  }
88
86
  }
89
87
 
90
88
  &:checked {
91
89
  & ~ .radio-label {
92
90
  background-color: var(--radio-btn-active-label-bg-color);
93
- border-color: var(--radio-btn-active-label-border-color);
91
+ //border-color: var(--radio-btn-active-label-border-color);
92
+ box-shadow: inset 0 0 0 1.5px var(--radio-btn-active-label-border-color);
94
93
  }
95
94
  }
96
95
  }
@@ -3,15 +3,42 @@
3
3
  <span class="headline__label">
4
4
  {{ localization.common.additionalDetails }}
5
5
  </span>
6
-
7
- <common-tooltip-help
8
- test-id="feedback-additional-details-help"
9
- help-id="feedback-additional-details-info-icon"
10
- dropdown-width="288px"
11
- :title="localization.feedback.additionalDetailsHelp"
12
- :help-text="localization.feedback.additionalDetailsTooltip"
13
- dropdown-left
6
+ <ui-icon
7
+ id="feedback-additional-details-info-icon"
8
+ :class="['headline__icon pointer', isShowInfo && 'active']"
9
+ name="info"
10
+ width="16"
11
+ height="16"
12
+ @click="isShowInfo = !isShowInfo"
14
13
  />
14
+ <ui-popup-window
15
+ v-model="isShowInfo"
16
+ :elem-id="'feedback-additional-details-info-icon'"
17
+ width="288px"
18
+ is-priority-right-position
19
+ >
20
+ <div class="common-widget-info">
21
+ <div class="flex justify-between">
22
+ <div class="flex">
23
+ <ui-icon-icon3 name="info-2" width="16px" height="16px" />
24
+ <span class="title">
25
+ {{ localization.feedback.additionalDetailsHelp }}
26
+ </span>
27
+ </div>
28
+ <ui-icon
29
+ name="close"
30
+ class="pointer hide-icon"
31
+ width="16px"
32
+ height="16px"
33
+ @click="isShowInfo = false"
34
+ />
35
+ </div>
36
+
37
+ <div class="common-widget-info-description">
38
+ {{ localization.feedback.additionalDetailsTooltip }}
39
+ </div>
40
+ </div>
41
+ </ui-popup-window>
15
42
  </div>
16
43
  </template>
17
44
 
@@ -20,6 +47,7 @@ import type { UI_I_Localization } from '~/lib/models/interfaces'
20
47
 
21
48
  const localization = computed<UI_I_Localization>(() => useLocal())
22
49
 
50
+ const isShowInfo = ref<boolean>(false)
23
51
  </script>
24
52
 
25
53
  <style lang="scss" scoped>
@@ -28,6 +56,15 @@ const localization = computed<UI_I_Localization>(() => useLocal())
28
56
  @include flex($align: center);
29
57
  margin: 32px 0 16px;
30
58
 
59
+ &__icon {
60
+ color: var(--feedback-tooltip-trigger-color);
61
+ &:hover {
62
+ color: var(--feedback-tooltip-hover-trigger-color);
63
+ }
64
+ &.active {
65
+ color: var(--feedback-tooltip-acctive-trigger-color);
66
+ }
67
+ }
31
68
  &__label {
32
69
  line-height: 19.36px;
33
70
  font-size: 16px;
@@ -35,5 +72,27 @@ const localization = computed<UI_I_Localization>(() => useLocal())
35
72
  color: var(--feedback-text-color);
36
73
  margin-right: 8px;
37
74
  }
75
+ .common-widget-info {
76
+ padding: 16px;
77
+ .title {
78
+ font-size: 14px;
79
+ font-weight: 500;
80
+ line-height: 16.94px;
81
+ color: var(--feedback-text-color);
82
+ margin-left: 8px;
83
+ }
84
+
85
+ .common-widget-info-description {
86
+ font-size: 13px;
87
+ line-height: 15.73px;
88
+ color: var(--feedback-text-color);
89
+ margin-top: 12px;
90
+ }
91
+
92
+ svg {
93
+ color: var(--feedback-tooltip-close-color);
94
+ min-width: 16px;
95
+ }
96
+ }
38
97
  }
39
98
  </style>