bfg-common 1.5.709 → 1.5.710

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 (104) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  3. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  4. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  5. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  6. package/assets/localization/local_be.json +2 -1
  7. package/assets/localization/local_en.json +2 -1
  8. package/assets/localization/local_hy.json +2 -1
  9. package/assets/localization/local_kk.json +2 -1
  10. package/assets/localization/local_ru.json +2 -1
  11. package/assets/localization/local_zh.json +2 -1
  12. package/components/atoms/TheIcon3.vue +50 -50
  13. package/components/atoms/collapse/CollapseNav.vue +170 -170
  14. package/components/atoms/perPage/PerPage.vue +58 -58
  15. package/components/atoms/table/dataGrid/DataGrid.vue +1718 -1718
  16. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  17. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  18. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  19. package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
  20. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  21. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  22. package/components/common/diagramMain/port/Port.vue +580 -580
  23. package/components/common/layout/theHeader/TheHeader.vue +191 -186
  24. package/components/common/layout/theHeader/TheHeaderNew.vue +7 -3
  25. package/components/common/layout/theHeader/TheHeaderOld.vue +7 -3
  26. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  27. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  28. package/components/common/layout/theHeader/userMenu/UserMenu.vue +113 -109
  29. package/components/common/layout/theHeader/userMenu/modals/preferences/Preferences.vue +86 -81
  30. package/components/common/layout/theHeader/userMenu/modals/preferences/PreferencesNew.vue +115 -113
  31. package/components/common/layout/theHeader/userMenu/modals/preferences/PreferencesOld.vue +4 -2
  32. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/ChangeLanguage.vue +108 -114
  33. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/New.vue +88 -65
  34. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/Old.vue +89 -66
  35. package/components/common/layout/theHeader/userMenu/modals/preferences/lib/models/types.ts +7 -7
  36. package/components/common/layout/theHeader/userMenu/modals/preferences/view/View.vue +46 -33
  37. package/components/common/pages/backups/DetailView.vue +52 -52
  38. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  39. package/components/common/pages/backups/modals/Modals.vue +243 -243
  40. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  41. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  42. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  43. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  44. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  45. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  46. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  47. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  48. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  49. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  50. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  51. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  52. package/components/common/select/radio/RadioGroup.vue +137 -137
  53. package/components/common/selectLanguage/SelectLanguage.vue +200 -200
  54. package/components/common/spiceConsole/Drawer.vue +420 -420
  55. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  56. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  57. package/components/common/tools/Actions.vue +207 -207
  58. package/components/common/treeView/TreeView.vue +52 -52
  59. package/components/common/vm/actions/clone/lib/config/steps.ts +295 -295
  60. package/components/common/vm/actions/clone/new/New.vue +438 -438
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +283 -283
  63. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +156 -156
  64. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  65. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  66. package/components/common/vm/actions/common/select/options/New.vue +264 -264
  67. package/components/common/vm/actions/common/select/options/Options.vue +58 -58
  68. package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
  69. package/components/common/vm/actions/common/select/storage/new/New.vue +311 -311
  70. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  71. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  72. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  73. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  74. package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
  75. package/components/common/wizards/common/steps/computeResource/New.vue +93 -93
  76. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  77. package/components/common/wizards/common/steps/name/New.vue +221 -221
  78. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  79. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  80. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  81. package/components/common/wizards/datastore/add/Add.vue +228 -228
  82. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  83. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  84. package/composables/useAppVersion.ts +21 -21
  85. package/composables/useLocal.ts +6 -6
  86. package/composables/useLocalCommon.ts +39 -39
  87. package/package.json +1 -1
  88. package/plugins/console.ts +21 -21
  89. package/plugins/mouse.ts +21 -21
  90. package/plugins/panelStates.ts +70 -70
  91. package/plugins/text.ts +59 -59
  92. package/public/spice-console/application/clientgui.js +854 -854
  93. package/public/spice-console/application/packetfactory.js +211 -211
  94. package/public/spice-console/application/virtualmouse.js +147 -147
  95. package/public/spice-console/lib/images/bitmap.js +203 -203
  96. package/public/spice-console/network/spicechannel.js +440 -440
  97. package/public/spice-console/process/cursorprocess.js +128 -128
  98. package/public/spice-console/process/inputprocess.js +227 -227
  99. package/public/spice-console/process/mainprocess.js +212 -212
  100. package/public/spice-console/run.js +210 -210
  101. package/store/main/mutations.ts +7 -7
  102. package/store/main/state.ts +7 -7
  103. package/store/tasks/mappers/recentTasks.ts +123 -123
  104. package/store/tasks/mutations.ts +82 -82
@@ -1,137 +1,137 @@
1
- <template>
2
- <div class="select-option">
3
- <div
4
- v-for="radio in options"
5
- :key="radio.id"
6
- v-permission="radio.permission"
7
- :class="['select-option__inner radio', radio.disabled && 'disabled']"
8
- >
9
- <div :class="['select-option__container', radio.value]">
10
- <div class="select-option__wrapper">
11
- <input
12
- :id="radio.id"
13
- v-model="selectedType"
14
- :data-id="radio.testId"
15
- :value="radio.value"
16
- :disabled="radio.disabled"
17
- type="radio"
18
- />
19
- <label :for="radio.id">{{ radio.label }}</label>
20
-
21
- <div
22
- v-if="'isTooltip' in radio"
23
- :id="`select-tooltip-icon-${radio.value}`"
24
- class="signpost-container relative"
25
- >
26
- <atoms-the-icon
27
- :data-id="`${radio.testId}-tooltip-toggle-icon`"
28
- fill="#0072a3"
29
- width="24px"
30
- height="24px"
31
- name="info-circle"
32
- @click="radio.isTooltip = !radio.isTooltip"
33
- />
34
- <atoms-tooltip-signpost
35
- v-if="radio.isTooltip"
36
- :elem-id="`select-tooltip-icon-${radio.value}`"
37
- :test-id="radio.testId"
38
- @hide="radio.isTooltip = false"
39
- >
40
- <div class="tooltip-content-container">
41
- <p>{{ radio.tooltipContent }}</p>
42
- </div>
43
- </atoms-tooltip-signpost>
44
- </div>
45
- </div>
46
-
47
- <slot
48
- v-if="$slots.beforeDescription"
49
- name="beforeDescription"
50
- :data="radio"
51
- ></slot>
52
- </div>
53
-
54
- <div v-if="radio.description" class="select-option__description">
55
- {{ radio.description }}
56
- </div>
57
-
58
- <slot
59
- v-if="$slots.afterDescription"
60
- name="afterDescription"
61
- :data="radio"
62
- ></slot>
63
- </div>
64
- </div>
65
- </template>
66
-
67
- <script lang="ts" setup>
68
- import type { UI_I_RadioOption } from '~/components/common/select/radio/lib/models/interfaces'
69
-
70
- const props = defineProps<{
71
- modelValue: string | number
72
- options: UI_I_RadioOption[]
73
- }>()
74
- const emits = defineEmits<{
75
- (event: 'update:model-value', value: string | number): void
76
- }>()
77
-
78
- const options = ref<UI_I_RadioOption[]>([])
79
- watch(
80
- () => props.options,
81
- (newValue) => {
82
- options.value = newValue.map((option) => {
83
- return {
84
- ...option,
85
- id: option.id || `radio-btn-${useUniqueId()}`,
86
- }
87
- })
88
- },
89
- { immediate: true, deep: true }
90
- )
91
-
92
- const selectedType = computed<string | number>({
93
- get() {
94
- return props.modelValue
95
- },
96
- set(newValue) {
97
- emits('update:model-value', newValue)
98
- },
99
- })
100
- </script>
101
-
102
- <style lang="scss" scoped>
103
- @import 'assets/scss/common/mixins.scss';
104
- .select-option {
105
- &__container {
106
- @include flex($dir: column);
107
- }
108
- &__wrapper {
109
- @include flex($align: center);
110
- gap: 10px;
111
- .signpost-container {
112
- display: flex;
113
- cursor: pointer;
114
- .tooltip-content-container {
115
- max-width: 350px;
116
- }
117
- }
118
- }
119
- &__description {
120
- margin-left: 22px;
121
- word-break: break-word;
122
- }
123
- }
124
- .radio {
125
- margin-bottom: 5px;
126
- //&:nth-child(2) {
127
- //margin-top: 10px; // ?
128
- //}
129
- &.disabled {
130
- opacity: 0.7;
131
- }
132
- }
133
- input[type='radio']:focus:checked + label::before,
134
- input[type='radio']:focus + label::before {
135
- box-shadow: inset 0 0 0 0.25rem #0094d2;
136
- }
137
- </style>
1
+ <template>
2
+ <div class="select-option">
3
+ <div
4
+ v-for="radio in options"
5
+ :key="radio.id"
6
+ v-permission="radio.permission"
7
+ :class="['select-option__inner radio', radio.disabled && 'disabled']"
8
+ >
9
+ <div :class="['select-option__container', radio.value]">
10
+ <div class="select-option__wrapper">
11
+ <input
12
+ :id="radio.id"
13
+ v-model="selectedType"
14
+ :data-id="radio.testId"
15
+ :value="radio.value"
16
+ :disabled="radio.disabled"
17
+ type="radio"
18
+ />
19
+ <label :for="radio.id">{{ radio.label }}</label>
20
+
21
+ <div
22
+ v-if="'isTooltip' in radio"
23
+ :id="`select-tooltip-icon-${radio.value}`"
24
+ class="signpost-container relative"
25
+ >
26
+ <atoms-the-icon
27
+ :data-id="`${radio.testId}-tooltip-toggle-icon`"
28
+ fill="#0072a3"
29
+ width="24px"
30
+ height="24px"
31
+ name="info-circle"
32
+ @click="radio.isTooltip = !radio.isTooltip"
33
+ />
34
+ <atoms-tooltip-signpost
35
+ v-if="radio.isTooltip"
36
+ :elem-id="`select-tooltip-icon-${radio.value}`"
37
+ :test-id="radio.testId"
38
+ @hide="radio.isTooltip = false"
39
+ >
40
+ <div class="tooltip-content-container">
41
+ <p>{{ radio.tooltipContent }}</p>
42
+ </div>
43
+ </atoms-tooltip-signpost>
44
+ </div>
45
+ </div>
46
+
47
+ <slot
48
+ v-if="$slots.beforeDescription"
49
+ name="beforeDescription"
50
+ :data="radio"
51
+ ></slot>
52
+ </div>
53
+
54
+ <div v-if="radio.description" class="select-option__description">
55
+ {{ radio.description }}
56
+ </div>
57
+
58
+ <slot
59
+ v-if="$slots.afterDescription"
60
+ name="afterDescription"
61
+ :data="radio"
62
+ ></slot>
63
+ </div>
64
+ </div>
65
+ </template>
66
+
67
+ <script lang="ts" setup>
68
+ import type { UI_I_RadioOption } from '~/components/common/select/radio/lib/models/interfaces'
69
+
70
+ const props = defineProps<{
71
+ modelValue: string | number
72
+ options: UI_I_RadioOption[]
73
+ }>()
74
+ const emits = defineEmits<{
75
+ (event: 'update:model-value', value: string | number): void
76
+ }>()
77
+
78
+ const options = ref<UI_I_RadioOption[]>([])
79
+ watch(
80
+ () => props.options,
81
+ (newValue) => {
82
+ options.value = newValue.map((option) => {
83
+ return {
84
+ ...option,
85
+ id: option.id || `radio-btn-${useUniqueId()}`,
86
+ }
87
+ })
88
+ },
89
+ { immediate: true, deep: true }
90
+ )
91
+
92
+ const selectedType = computed<string | number>({
93
+ get() {
94
+ return props.modelValue
95
+ },
96
+ set(newValue) {
97
+ emits('update:model-value', newValue)
98
+ },
99
+ })
100
+ </script>
101
+
102
+ <style lang="scss" scoped>
103
+ @import 'assets/scss/common/mixins.scss';
104
+ .select-option {
105
+ &__container {
106
+ @include flex($dir: column);
107
+ }
108
+ &__wrapper {
109
+ @include flex($align: center);
110
+ gap: 10px;
111
+ .signpost-container {
112
+ display: flex;
113
+ cursor: pointer;
114
+ .tooltip-content-container {
115
+ max-width: 350px;
116
+ }
117
+ }
118
+ }
119
+ &__description {
120
+ margin-left: 22px;
121
+ word-break: break-word;
122
+ }
123
+ }
124
+ .radio {
125
+ margin-bottom: 5px;
126
+ //&:nth-child(2) {
127
+ //margin-top: 10px; // ?
128
+ //}
129
+ &.disabled {
130
+ opacity: 0.7;
131
+ }
132
+ }
133
+ input[type='radio']:focus:checked + label::before,
134
+ input[type='radio']:focus + label::before {
135
+ box-shadow: inset 0 0 0 0.25rem #0094d2;
136
+ }
137
+ </style>
@@ -1,200 +1,200 @@
1
- <template>
2
- <div :class="['language-dropdown', props.size]">
3
- <ui-select
4
- v-model="selectedLang"
5
- :items="itemsLocal"
6
- :disabled="props.disabled"
7
- :size="props.size"
8
- width="max-content"
9
- max-height="inherit"
10
- test-id="select-language"
11
- arrow-stroke-width="2.4"
12
- >
13
- <template #toggleContent>
14
- <span class="language-dropdown__icon content-icon">
15
- <ui-icon
16
- :name="selectedLang?.iconName"
17
- :height="props.size === 'sm' ? '16' : '13'"
18
- :width="props.size === 'sm' ? '24' : '19'"
19
- />
20
- </span>
21
- <span class="ui-selected-text text-ellipsis">{{
22
- selectedLang?.text
23
- }}</span>
24
- </template>
25
- <template #row="{ item }">
26
- <span class="language-dropdown__icon dropdown-icon">
27
- <ui-icon
28
- :name="item.iconName"
29
- :height="props.size === 'sm' ? '16' : '13'"
30
- :width="props.size === 'sm' ? '24' : '19'"
31
- />
32
- </span>
33
- <span class="ui-item-text">{{ item.text }}</span>
34
- </template>
35
- </ui-select>
36
- </div>
37
- </template>
38
-
39
- <script lang="ts" setup>
40
- import type { UI_I_Dropdown } from '~/node_modules/bfg-uikit/components/ui/dropdown/models/interfaces'
41
- // import { findInLocals } from '~/components/common/selectLanguage/lib/utils/utils'
42
-
43
- const props = withDefaults(
44
- defineProps<{
45
- normalizeLang: UI_I_Dropdown[]
46
- modelValue: UI_I_Dropdown
47
- disabled?: boolean
48
- width?: string
49
- size?: 'sm' | 'xs'
50
- }>(),
51
- {
52
- disabled: false,
53
- width: '114px',
54
- size: 'xs',
55
- }
56
- )
57
-
58
- const emits = defineEmits<{
59
- (event: 'update:model-value', newValue: UI_I_Dropdown): void
60
- }>()
61
-
62
- const selectedLang = computed<UI_I_Dropdown>({
63
- get() {
64
- return props.modelValue
65
- },
66
- set(newValue: UI_I_Dropdown) {
67
- emits('update:model-value', newValue)
68
- },
69
- })
70
-
71
- const itemsLocal = computed(() => {
72
- return props.normalizeLang.filter((lang) => !lang.disabled)
73
- })
74
- </script>
75
-
76
- <style lang="scss" scoped>
77
- .language-dropdown {
78
- &.xs {
79
- .language-dropdown__icon {
80
- margin-right: 8px;
81
- &.content-icon {
82
- margin-right: 6px;
83
- }
84
- }
85
-
86
- :deep(.ui-select-container.xs) {
87
- .ui-select-toggle-button {
88
- padding: 6px 8px 6px 10px;
89
-
90
- .ui-selected-text {
91
- font-size: 13px;
92
- line-height: 16px;
93
- font-weight: 500;
94
- }
95
-
96
- height: 28px;
97
- border-radius: 6px;
98
- }
99
-
100
- &.disabled .ui-select-toggle-button .ui-selected-text {
101
- color: var(--select-disabled-text);
102
- }
103
-
104
- .ui-select-fieldset {
105
- border-radius: 6px;
106
- }
107
-
108
- .ui-dropdown.xs .ui-dropdown-menu-item {
109
- height: 28px;
110
- padding: 0 6px !important;
111
- }
112
-
113
- .ui-arrow-icon {
114
- width: 14px;
115
- height: 14px;
116
-
117
- svg {
118
- width: 14px;
119
- height: 14px;
120
- }
121
- }
122
- }
123
-
124
- font-size: 13px;
125
- line-height: 16px;
126
- font-weight: 500;
127
- }
128
-
129
- &.sm {
130
- .language-dropdown__icon {
131
- margin-right: 8px;
132
- &.content-icon {
133
- margin-right: 8px;
134
- }
135
- }
136
-
137
- :deep(.ui-select-container.sm) {
138
- .ui-select-toggle-button {
139
- padding: 8px 8px 8px 10px;
140
- .ui-selected-text {
141
- font-size: 14px;
142
- line-height: 16px;
143
- font-weight: 500;
144
- }
145
- height: 32px;
146
- }
147
-
148
- .ui-arrow-icon {
149
- width: 16px;
150
- height: 16px;
151
-
152
- svg {
153
- width: 16px;
154
- height: 16px;
155
- }
156
- }
157
-
158
- .ui-dropdown-menu.md .ui-dropdown-menu-item .ui-item-text {
159
- font-size: 14px;
160
- }
161
- }
162
-
163
- font-size: 14px;
164
- line-height: 16px;
165
- font-weight: 500;
166
- }
167
-
168
- :deep(.ui-dropdown-menu-item) {
169
- display: flex;
170
- align-items: center;
171
- border-radius: 4px;
172
-
173
- &:not(:last-child) {
174
- margin-bottom: 8px;
175
- }
176
- &:not(.disabled):not(.selected):hover {
177
- background-color: var(--dropdown-item-hover-bg-color);
178
-
179
- .ui-item-text {
180
- color: var(--dropdown-item-hover-color);
181
- }
182
- }
183
-
184
- & .ui-item-text {
185
- color: var(--dropdown-item-color);
186
- font-weight: 500;
187
- }
188
-
189
- &.selected {
190
- .ui-item-text {
191
- color: var(--dropdown-item-selected-color);
192
- }
193
- }
194
- }
195
-
196
- &__icon {
197
- display: flex;
198
- }
199
- }
200
- </style>
1
+ <template>
2
+ <div :class="['language-dropdown', props.size]">
3
+ <ui-select
4
+ v-model="selectedLang"
5
+ :items="itemsLocal"
6
+ :disabled="props.disabled"
7
+ :size="props.size"
8
+ width="max-content"
9
+ max-height="inherit"
10
+ test-id="select-language"
11
+ arrow-stroke-width="2.4"
12
+ >
13
+ <template #toggleContent>
14
+ <span class="language-dropdown__icon content-icon"
15
+ ><ui-icon
16
+ :name="selectedLang?.iconName"
17
+ :height="props.size === 'sm' ? '16' : '13'"
18
+ :width="props.size === 'sm' ? '24' : '19'"
19
+ ></ui-icon
20
+ ></span>
21
+ <span class="ui-selected-text text-ellipsis">{{
22
+ selectedLang?.text
23
+ }}</span>
24
+ </template>
25
+ <template #row="{ item }">
26
+ <span class="language-dropdown__icon dropdown-icon">
27
+ <ui-icon
28
+ :name="item.iconName"
29
+ :height="props.size === 'sm' ? '16' : '13'"
30
+ :width="props.size === 'sm' ? '24' : '19'"
31
+ ></ui-icon>
32
+ </span>
33
+ <span class="ui-item-text">{{ item.text }}</span>
34
+ </template>
35
+ </ui-select>
36
+ </div>
37
+ </template>
38
+
39
+ <script lang="ts" setup>
40
+ import type { UI_I_Dropdown } from '~/node_modules/bfg-uikit/components/ui/dropdown/models/interfaces'
41
+ // import { findInLocals } from '~/components/common/selectLanguage/lib/utils/utils'
42
+
43
+ const props = withDefaults(
44
+ defineProps<{
45
+ normalizeLang: UI_I_Dropdown[]
46
+ modelValue: UI_I_Dropdown
47
+ disabled?: boolean
48
+ width?: string
49
+ size?: 'sm' | 'xs'
50
+ }>(),
51
+ {
52
+ disabled: false,
53
+ width: '114px',
54
+ size: 'xs',
55
+ }
56
+ )
57
+
58
+ const emits = defineEmits<{
59
+ (event: 'update:model-value', newValue: UI_I_Dropdown): void
60
+ }>()
61
+
62
+ const selectedLang = computed<UI_I_Dropdown>({
63
+ get() {
64
+ return props.modelValue
65
+ },
66
+ set(newValue: UI_I_Dropdown) {
67
+ emits('update:model-value', newValue)
68
+ },
69
+ })
70
+
71
+ const itemsLocal = computed(() => {
72
+ return props.normalizeLang.filter((lang) => !lang.disabled)
73
+ })
74
+ </script>
75
+
76
+ <style lang="scss" scoped>
77
+ .language-dropdown {
78
+ &.xs {
79
+ .language-dropdown__icon {
80
+ margin-right: 8px;
81
+ &.content-icon {
82
+ margin-right: 6px;
83
+ }
84
+ }
85
+
86
+ :deep(.ui-select-container.xs) {
87
+ .ui-select-toggle-button {
88
+ padding: 6px 8px 6px 10px;
89
+
90
+ .ui-selected-text {
91
+ font-size: 13px;
92
+ line-height: 16px;
93
+ font-weight: 500;
94
+ }
95
+
96
+ height: 28px;
97
+ border-radius: 6px;
98
+ }
99
+
100
+ &.disabled .ui-select-toggle-button .ui-selected-text {
101
+ color: var(--select-disabled-text);
102
+ }
103
+
104
+ .ui-select-fieldset {
105
+ border-radius: 6px;
106
+ }
107
+
108
+ .ui-dropdown.xs .ui-dropdown-menu-item {
109
+ height: 28px;
110
+ padding: 0 6px !important;
111
+ }
112
+
113
+ .ui-arrow-icon {
114
+ width: 14px;
115
+ height: 14px;
116
+
117
+ svg {
118
+ width: 14px;
119
+ height: 14px;
120
+ }
121
+ }
122
+ }
123
+
124
+ font-size: 13px;
125
+ line-height: 16px;
126
+ font-weight: 500;
127
+ }
128
+
129
+ &.sm {
130
+ .language-dropdown__icon {
131
+ margin-right: 8px;
132
+ &.content-icon {
133
+ margin-right: 8px;
134
+ }
135
+ }
136
+
137
+ :deep(.ui-select-container.sm) {
138
+ .ui-select-toggle-button {
139
+ padding: 8px 8px 8px 10px;
140
+ .ui-selected-text {
141
+ font-size: 14px;
142
+ line-height: 16px;
143
+ font-weight: 500;
144
+ }
145
+ height: 32px;
146
+ }
147
+
148
+ .ui-arrow-icon {
149
+ width: 16px;
150
+ height: 16px;
151
+
152
+ svg {
153
+ width: 16px;
154
+ height: 16px;
155
+ }
156
+ }
157
+
158
+ .ui-dropdown-menu.md .ui-dropdown-menu-item .ui-item-text {
159
+ font-size: 14px;
160
+ }
161
+ }
162
+
163
+ font-size: 14px;
164
+ line-height: 16px;
165
+ font-weight: 500;
166
+ }
167
+
168
+ :deep(.ui-dropdown-menu-item) {
169
+ display: flex;
170
+ align-items: center;
171
+ border-radius: 4px;
172
+
173
+ &:not(:last-child) {
174
+ margin-bottom: 8px;
175
+ }
176
+ &:not(.disabled):not(.selected):hover {
177
+ background-color: var(--dropdown-item-hover-bg-color);
178
+
179
+ .ui-item-text {
180
+ color: var(--dropdown-item-hover-color);
181
+ }
182
+ }
183
+
184
+ & .ui-item-text {
185
+ color: var(--dropdown-item-color);
186
+ font-weight: 500;
187
+ }
188
+
189
+ &.selected {
190
+ .ui-item-text {
191
+ color: var(--dropdown-item-selected-color);
192
+ }
193
+ }
194
+ }
195
+
196
+ &__icon {
197
+ display: flex;
198
+ }
199
+ }
200
+ </style>