bfg-common 1.5.489 → 1.5.490

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 (102) 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/components/atoms/TheIcon3.vue +50 -50
  7. package/components/atoms/collapse/CollapseNav.vue +170 -170
  8. package/components/atoms/perPage/PerPage.vue +58 -58
  9. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  10. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  11. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  12. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  13. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  14. package/components/common/browse/lib/models/interfaces.ts +5 -5
  15. package/components/common/context/lib/models/interfaces.ts +33 -33
  16. package/components/common/diagramMain/DiagramMain.vue +905 -905
  17. package/components/common/diagramMain/modals/remove/RemoveModalNew.vue +106 -106
  18. package/components/common/diagramMain/network/Contents.vue +497 -497
  19. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  20. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  21. package/components/common/pages/backups/DetailView.vue +52 -52
  22. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  23. package/components/common/pages/backups/modals/Modals.vue +243 -243
  24. package/components/common/pages/backups/modals/createBackup/configuration/Configuration.vue +29 -29
  25. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  26. package/components/common/pages/backups/modals/createBackup/datastores/tableView/TableView.vue +95 -95
  27. package/components/common/pages/backups/modals/createBackup/general/General.vue +141 -141
  28. package/components/common/pages/backups/modals/createBackup/lib/config/strategyOptions.ts +12 -12
  29. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  30. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  31. package/components/common/pages/backups/modals/restore/disks/Disks.vue +27 -27
  32. package/components/common/pages/backups/modals/restore/disks/tableView/lib/config/table.ts +117 -117
  33. package/components/common/pages/backups/modals/restore/name/Name.vue +166 -166
  34. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  35. package/components/common/pages/backups/modals/restore/networks/Networks.vue +67 -67
  36. package/components/common/pages/backups/modals/restore/networks/table/Table.vue +214 -214
  37. package/components/common/pages/backups/modals/restore/types/lib/config/typeOptions.ts +25 -25
  38. package/components/common/pages/backups/tools/Tools.vue +75 -75
  39. package/components/common/pages/backups/tools/lib/config/tabs.ts +36 -36
  40. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  41. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  42. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  43. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  44. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  45. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  46. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  47. package/components/common/select/radio/RadioGroup.vue +137 -137
  48. package/components/common/spiceConsole/Drawer.vue +392 -392
  49. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  50. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  51. package/components/common/tools/Actions.vue +207 -207
  52. package/components/common/treeView/TreeView.vue +52 -52
  53. package/components/common/vm/actions/add/Add.vue +877 -877
  54. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  55. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  56. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +368 -368
  57. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  58. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  59. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  60. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/Table.vue +99 -99
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
  65. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  66. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  67. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  68. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  69. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  70. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  71. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  72. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +143 -143
  73. package/components/common/vm/actions/common/select/computeResource/New.vue +184 -184
  74. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +131 -131
  75. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  76. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  77. package/components/common/vm/actions/common/select/name/Name.vue +200 -200
  78. package/components/common/vm/actions/common/select/name/Old.vue +131 -131
  79. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  80. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  81. package/components/common/vm/actions/common/select/storage/new/New.vue +320 -320
  82. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  83. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  84. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  85. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  86. package/components/common/vm/actions/register/Register.vue +267 -267
  87. package/components/common/vm/actions/register/lib/config/steps.ts +86 -86
  88. package/components/common/vmt/actions/add/Add.vue +549 -549
  89. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  90. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  91. package/composables/useAppVersion.ts +21 -21
  92. package/composables/useLocal.ts +6 -6
  93. package/composables/useLocalCommon.ts +39 -39
  94. package/package.json +1 -1
  95. package/plugins/date.ts +233 -233
  96. package/plugins/panelStates.ts +70 -70
  97. package/plugins/text.ts +59 -59
  98. package/public/spice-console/lib/images/bitmap.js +203 -203
  99. package/public/spice-console/network/spicechannel.js +440 -440
  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
@@ -1,84 +1,84 @@
1
- import type { UI_T_Project } from '~/lib/models/types'
2
- import type {
3
- UI_I_Localization,
4
- UI_I_SendTaskParams,
5
- } from '~/lib/models/interfaces'
6
- import type { UI_I_ScheduleNewTasksForm } from '~/components/common/pages/scheduledTasks/modals/lib/models/interfaces'
7
- import { base64 } from '~/lib/utils/base64'
8
- import type {
9
- UI_I_CreateScheduledTaskArgs,
10
- UI_I_ScheduledTasksTableItem,
11
- } from '~/components/common/pages/scheduledTasks/lib/models/interfaces'
12
- import type { UI_T_ScheduledTasksActionsType } from '~/components/common/pages/scheduledTasks/lib/models/types'
13
-
14
- export const defineScheduleTaskModalTitle = (
15
- type: UI_T_ScheduledTasksActionsType,
16
- isEdit: boolean
17
- ): string => {
18
- const localization: UI_I_Localization = useLocal()
19
- const { scheduleNewTasks, scheduleTaskEdit } = localization.common
20
-
21
- const typeTitleMap: Partial<Record<UI_T_ScheduledTasksActionsType, string>> =
22
- {
23
- 'power-on': localization.common.powerOn,
24
- 'power-off': localization.common.powerOff,
25
- 'shut-down-guest-os': localization.common.shutDownGuestOs,
26
- 'restart-guest-os': localization.common.restartGuestOs,
27
- suspend: localization.common.suspend,
28
- reset: localization.common.reset,
29
- 'take-snapshot': localization.common.takeSnapshot,
30
- }
31
-
32
- const title = typeTitleMap[type]
33
- const modalMode = isEdit ? scheduleTaskEdit : scheduleNewTasks
34
-
35
- return `${modalMode} (${title})`
36
- }
37
- export const scheduledTasks = (
38
- form: UI_I_ScheduleNewTasksForm,
39
- args: UI_I_SendTaskParams,
40
- target: string,
41
- isEdit: boolean,
42
- data: UI_I_ScheduledTasksTableItem,
43
- project: UI_T_Project
44
- ): UI_I_SendTaskParams => {
45
- const methodArgs = {
46
- method: args.method,
47
- params: {
48
- target: args.target,
49
- args: args.args ? base64.encode(args.args) : '',
50
- },
51
- }
52
-
53
- let method = ''
54
- switch (project) {
55
- case 'sphere':
56
- method = isEdit
57
- ? 'VirtualMachines.UpdateScheduledTask'
58
- : 'VirtualMachines.CreateScheduledTask'
59
- break
60
- case 'procurator':
61
- method = isEdit ? 'vm.update_sched_task' : 'vm.create_sched_task'
62
- break
63
- }
64
-
65
- const taskArgs: UI_I_CreateScheduledTaskArgs = {
66
- target,
67
- name: form.task_name,
68
- description: form.description,
69
- toggle: form.toggle,
70
- cron_2: form.cron,
71
- notify_emails: form.ntfn_target,
72
- args: base64.encode(methodArgs),
73
- ...(isEdit && {
74
- rid: data.rid,
75
- last_modified: data.last_modified,
76
- }),
77
- }
78
-
79
- return {
80
- method,
81
- target,
82
- args: taskArgs,
83
- }
84
- }
1
+ import type { UI_T_Project } from '~/lib/models/types'
2
+ import type {
3
+ UI_I_Localization,
4
+ UI_I_SendTaskParams,
5
+ } from '~/lib/models/interfaces'
6
+ import type { UI_I_ScheduleNewTasksForm } from '~/components/common/pages/scheduledTasks/modals/lib/models/interfaces'
7
+ import { base64 } from '~/lib/utils/base64'
8
+ import type {
9
+ UI_I_CreateScheduledTaskArgs,
10
+ UI_I_ScheduledTasksTableItem,
11
+ } from '~/components/common/pages/scheduledTasks/lib/models/interfaces'
12
+ import type { UI_T_ScheduledTasksActionsType } from '~/components/common/pages/scheduledTasks/lib/models/types'
13
+
14
+ export const defineScheduleTaskModalTitle = (
15
+ type: UI_T_ScheduledTasksActionsType,
16
+ isEdit: boolean
17
+ ): string => {
18
+ const localization: UI_I_Localization = useLocal()
19
+ const { scheduleNewTasks, scheduleTaskEdit } = localization.common
20
+
21
+ const typeTitleMap: Partial<Record<UI_T_ScheduledTasksActionsType, string>> =
22
+ {
23
+ 'power-on': localization.common.powerOn,
24
+ 'power-off': localization.common.powerOff,
25
+ 'shut-down-guest-os': localization.common.shutDownGuestOs,
26
+ 'restart-guest-os': localization.common.restartGuestOs,
27
+ suspend: localization.common.suspend,
28
+ reset: localization.common.reset,
29
+ 'take-snapshot': localization.common.takeSnapshot,
30
+ }
31
+
32
+ const title = typeTitleMap[type]
33
+ const modalMode = isEdit ? scheduleTaskEdit : scheduleNewTasks
34
+
35
+ return `${modalMode} (${title})`
36
+ }
37
+ export const scheduledTasks = (
38
+ form: UI_I_ScheduleNewTasksForm,
39
+ args: UI_I_SendTaskParams,
40
+ target: string,
41
+ isEdit: boolean,
42
+ data: UI_I_ScheduledTasksTableItem,
43
+ project: UI_T_Project
44
+ ): UI_I_SendTaskParams => {
45
+ const methodArgs = {
46
+ method: args.method,
47
+ params: {
48
+ target: args.target,
49
+ args: args.args ? base64.encode(args.args) : '',
50
+ },
51
+ }
52
+
53
+ let method = ''
54
+ switch (project) {
55
+ case 'sphere':
56
+ method = isEdit
57
+ ? 'VirtualMachines.UpdateScheduledTask'
58
+ : 'VirtualMachines.CreateScheduledTask'
59
+ break
60
+ case 'procurator':
61
+ method = isEdit ? 'vm.update_sched_task' : 'vm.create_sched_task'
62
+ break
63
+ }
64
+
65
+ const taskArgs: UI_I_CreateScheduledTaskArgs = {
66
+ target,
67
+ name: form.task_name,
68
+ description: form.description,
69
+ toggle: form.toggle,
70
+ cron_2: form.cron,
71
+ notify_emails: form.ntfn_target,
72
+ args: base64.encode(methodArgs),
73
+ ...(isEdit && {
74
+ rid: data.rid,
75
+ last_modified: data.last_modified,
76
+ }),
77
+ }
78
+
79
+ return {
80
+ method,
81
+ target,
82
+ args: taskArgs,
83
+ }
84
+ }
@@ -1,17 +1,17 @@
1
- <template>
2
- <common-ready-to-complete-new v-if="isNewView" :data="props.data" />
3
- <common-ready-to-complete-old v-else :data="props.data" />
4
- </template>
5
-
6
- <script lang="ts" setup>
7
- import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
8
-
9
- const props = defineProps<{
10
- data: UI_I_TableInfoItem[]
11
- }>()
12
-
13
- const { $store }: any = useNuxtApp()
14
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
15
- </script>
16
-
17
- <style lang="scss" scoped></style>
1
+ <template>
2
+ <common-ready-to-complete-new v-if="isNewView" :data="props.data" />
3
+ <common-ready-to-complete-old v-else :data="props.data" />
4
+ </template>
5
+
6
+ <script lang="ts" setup>
7
+ import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
8
+
9
+ const props = defineProps<{
10
+ data: UI_I_TableInfoItem[]
11
+ }>()
12
+
13
+ const { $store }: any = useNuxtApp()
14
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
15
+ </script>
16
+
17
+ <style lang="scss" scoped></style>
@@ -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>