bfg-common 1.1.63 → 1.1.65

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 (92) hide show
  1. package/assets/localization/local_be.json +1 -1
  2. package/assets/localization/local_hy.json +1 -1
  3. package/assets/localization/local_kk.json +1 -1
  4. package/assets/localization/local_ru.json +1 -1
  5. package/components/atoms/alert/Notification.vue +167 -167
  6. package/components/atoms/autocomplete/Autocomplete.vue +236 -236
  7. package/components/atoms/datepicker/Datepicker.vue +612 -612
  8. package/components/atoms/list/SelectList.vue +62 -62
  9. package/components/atoms/nav/NavBar.vue +116 -116
  10. package/components/atoms/nav/VerticalNavBar.vue +89 -89
  11. package/components/atoms/notificationBar/NotificationBar.vue +175 -175
  12. package/components/atoms/perPage/PerPage.vue +52 -52
  13. package/components/atoms/popup/SimplePopup.vue +90 -90
  14. package/components/atoms/step/VerticalStep.vue +104 -104
  15. package/components/atoms/switch/Switch.vue +107 -107
  16. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +206 -206
  17. package/components/atoms/table/dataGrid/DataGridPage.vue +189 -189
  18. package/components/atoms/tabs/Tabs.vue +189 -189
  19. package/components/atoms/tooltip/Signpost.vue +224 -224
  20. package/components/common/adapterManager/AddAdapterWarningModal.vue +82 -82
  21. package/components/common/adapterManager/NoActiveAdaptersModal.vue +62 -62
  22. package/components/common/adapterManager/NoConnectedActiveAdaptersModal.vue +62 -62
  23. package/components/common/browse/Browse.vue +182 -182
  24. package/components/common/browse/blocks/Title.vue +66 -66
  25. package/components/common/diagramMain/Diagram.vue +186 -186
  26. package/components/common/diagramMain/DiagramMain.vue +986 -986
  27. package/components/common/diagramMain/adapter/AdapterItem.vue +227 -227
  28. package/components/common/diagramMain/adapter/AdapterItems.vue +57 -57
  29. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +339 -339
  30. package/components/common/diagramMain/modals/editSettings/tabs/port/PortProperties.vue +202 -202
  31. package/components/common/diagramMain/modals/remove/RemoveModal.vue +226 -226
  32. package/components/common/diagramMain/network/Contents.vue +238 -238
  33. package/components/common/feedback/Buttons.vue +232 -232
  34. package/components/common/feedback/Message.vue +468 -468
  35. package/components/common/feedback/VisitPortal.vue +54 -54
  36. package/components/common/graph/Graph.vue +18 -20
  37. package/components/common/help/navbar/left/Left.vue +159 -159
  38. package/components/common/help/navbar/left/utils/constructAccordion.ts +27 -27
  39. package/components/common/mainNavigationPanel/MainNavigationPanel.vue +359 -359
  40. package/components/common/modals/Rename.vue +165 -165
  41. package/components/common/monitor/advanced/Advanced.vue +3 -33
  42. package/components/common/monitor/advanced/GraphView.vue +4 -4
  43. package/components/common/monitor/advanced/table/Table.vue +5 -5
  44. package/components/common/monitor/advanced/tools/Tools.vue +27 -91
  45. package/components/common/monitor/advanced/tools/chartOptionsModal/ChartOptionsModal.vue +17 -101
  46. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/Counters.vue +7 -25
  47. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/config/utils.ts +0 -55
  48. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/models/interfaces.ts +1 -1
  49. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/Timespan.vue +3 -32
  50. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/form/Form.vue +8 -25
  51. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/object/Object.vue +19 -41
  52. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/object/models/interfaces.ts +1 -1
  53. package/components/common/monitor/advanced/tools/config/advancedToolbar.ts +38 -50
  54. package/components/common/monitor/config/getValidDateByOption.ts +6 -105
  55. package/components/common/monitor/overview/filters/Filters.vue +6 -6
  56. package/components/common/monitor/overview/filters/customIntervalModal/CustomIntervalModal.vue +8 -8
  57. package/components/common/monitor/overview/filters/customIntervalModal/config/dateChecker.ts +1 -1
  58. package/components/common/perPage/PerPage.vue +51 -51
  59. package/components/common/recursionTree/RecursionTree.vue +201 -201
  60. package/components/common/vm/actions/add/customizeHardware/virtualHardware/VirtualHardware.vue +641 -642
  61. package/components/common/vm/actions/add/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +245 -274
  62. package/components/common/vm/actions/add/customizeHardware/virtualHardware/cpu/Cpu.vue +375 -375
  63. package/components/common/vm/actions/add/customizeHardware/virtualHardware/limit/Limit.vue +234 -234
  64. package/components/common/vm/actions/add/customizeHardware/virtualHardware/limit/config/options.ts +28 -28
  65. package/components/common/vm/actions/add/customizeHardware/virtualHardware/memory/Memory.vue +316 -316
  66. package/components/common/vm/actions/add/customizeHardware/virtualHardware/memory/config/memoryOptions.ts +35 -35
  67. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +447 -447
  68. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +1 -1
  69. package/components/common/vm/actions/add/customizeHardware/virtualHardware/reservation/Reservation.vue +235 -235
  70. package/components/common/vm/actions/add/customizeHardware/vmoptions/bootOptions/order/Order.vue +197 -195
  71. package/components/common/vm/actions/add/select/storage/config/config.ts +154 -154
  72. package/components/common/wizards/datastore/add/nfs/configuration/Configuration.vue +373 -373
  73. package/components/common/wizards/datastore/add/nfs/configuration/serversList/ServersList.vue +123 -123
  74. package/components/common/wizards/datastore/add/nfs/kerberosAuthentication/KerberosAuthentication.vue +54 -54
  75. package/components/common/wizards/datastore/add/sharedStorm/deviceSelection/hostTable/HostTable.vue +131 -131
  76. package/components/common/wizards/datastore/add/sharedStorm/partitionConfiguration/PartitionConfiguration.vue +230 -230
  77. package/models/store/interfaces.ts +37 -37
  78. package/models/store/storage/interfaces.ts +32 -32
  79. package/models/store/types.ts +32 -32
  80. package/modules/fixContentBuild/utils/methods.ts +114 -114
  81. package/package.json +1 -1
  82. package/public/spice-console/application/codec.js +257 -257
  83. package/public/spice-console/lib/rasterEngine.js +907 -907
  84. package/public/spice-console/network/spicechannel.js +369 -369
  85. package/public/spice-console-minify/lib/decoder/dixie.min.js +4 -4
  86. package/public/spice-console-minify/lib/jgestures.min.js +24 -24
  87. package/public/spice-console-minify/lib/jquery-2.0.3.min.js +24 -24
  88. package/public/spice-console-minify/lib/jquery-mousewheel.min.js +11 -11
  89. package/public/spice-console-minify/lib/jquery-visibility.min.js +1 -1
  90. package/public/spice-console-minify/lib/lodash.4.0.0.min.js +5 -5
  91. package/utils/contentBuild.ts +34 -34
  92. package/components/common/monitor/advanced/tools/utils/countCores.ts +0 -7
@@ -1,175 +1,175 @@
1
- <template>
2
- <div class="notification-bar">
3
- <div class="alerts" :style="{ 'background-color': color }">
4
- <div
5
- v-if="props.items.length > 1"
6
- class="alerts-pager ng-star-inserted"
7
- >
8
- <div class="alerts-pager-control page-control">
9
- <div class="alerts-page-down">
10
- <button
11
- :id="`${props.testId}-prev-button`"
12
- class="alerts-pager-button"
13
- @click="onPrev"
14
- >
15
- <atoms-the-icon class="page-control__prev" name="angle" />
16
- </button>
17
- </div>
18
-
19
- <div class="alerts-pager-text">
20
- {{ stepPosition }} / {{ props.items.length }}
21
- </div>
22
-
23
- <div class="alerts-page-up">
24
- <button
25
- :id="`${props.testId}-next-button`"
26
- class="alerts-pager-button"
27
- @click="onNext"
28
- >
29
- <atoms-the-icon class="page-control__next" name="angle" />
30
- </button>
31
- </div>
32
- </div>
33
- </div>
34
-
35
- <div class="alert-text-truncate">
36
- <div class="alert alert-app-level" :class="currentNotification.status">
37
- <div class="alert-items">
38
- <div class="alert-item">
39
- <div class="alert-icon-wrapper">
40
- <atoms-the-icon
41
- :class="['alert-icon', iconName]"
42
- :name="iconName"
43
- stroke="none"
44
- fill="#fff"
45
- />
46
- </div>
47
-
48
- <span class="alert-text">{{ message }}</span>
49
-
50
- <div v-if="isShowAction" class="alert-actions" @click="onAction">
51
- <button
52
- :id="`${props.testId}-action-button`"
53
- class="btn alert-action"
54
- >
55
- {{ actionText }}
56
- </button>
57
- </div>
58
- </div>
59
- </div>
60
-
61
- <button
62
- :id="`${props.testId}-remove-button`"
63
- class="close"
64
- @click="removeCurrentNotification"
65
- >
66
- <atoms-the-icon name="close" fill="#fff" />
67
- </button>
68
- </div>
69
- </div>
70
- </div>
71
- </div>
72
- </template>
73
-
74
- <script setup lang="ts">
75
- import { UI_I_NotificationItem } from '~/components/atoms/notificationBar/models/interfaces'
76
- import {
77
- UI_E_ColorsPageControl,
78
- UI_E_IconsByStatus,
79
- } from '~/components/atoms/notificationBar/models/enums'
80
- import { UI_T_ColorsPageControlKey } from '~/components/atoms/notificationBar/models/types'
81
-
82
- const props = withDefaults(
83
- defineProps<{
84
- items: UI_I_NotificationItem[]
85
- testId?: string
86
- }>(),
87
- { testId: 'ui-notification-bar' }
88
- )
89
- const emits = defineEmits<{
90
- (event: 'action'): void
91
- (event: 'remove', value: number): void
92
- }>()
93
-
94
- const stepPosition = ref<number>(1)
95
-
96
- const removeCurrentNotification = (): void => {
97
- currentNotification.value && emits('remove', currentNotification.value.id)
98
- }
99
- const onPrev = (): void => {
100
- if (stepPosition.value === 1) {
101
- stepPosition.value = props.items.length
102
- } else {
103
- stepPosition.value--
104
- }
105
- }
106
- const onNext = (): void => {
107
- if (stepPosition.value === props.items.length) {
108
- stepPosition.value = 1
109
- } else {
110
- stepPosition.value++
111
- }
112
- }
113
- const onAction = (): void => {
114
- emits('action')
115
- }
116
-
117
- const currentNotification = computed<UI_I_NotificationItem | undefined>(() => {
118
- return props.items.find((_, i) => i + 1 === stepPosition.value)
119
- })
120
-
121
- const status = computed<UI_T_ColorsPageControlKey>(
122
- () => currentNotification.value?.status || 'alert-success'
123
- )
124
- const actionText = computed<string>(
125
- () => currentNotification.value?.action || ''
126
- )
127
-
128
- const message = computed<string>(
129
- () => currentNotification.value?.message || ''
130
- )
131
- const isShowAction = computed<boolean>(
132
- () => !!currentNotification.value?.action
133
- )
134
-
135
- const iconName = computed<string>(
136
- () => currentNotification.value ? UI_E_IconsByStatus[currentNotification.value.status] : ''
137
- )
138
-
139
- const color = computed<string>(
140
- () => UI_E_ColorsPageControl[status.value]
141
- )
142
- </script>
143
-
144
- <style lang="scss" scoped>
145
- @import '~/assets/scss/common/mixins';
146
- .notification-bar {
147
- .alert {
148
- &-app-level {
149
- .close {
150
- &:focus {
151
- box-shadow: none;
152
- }
153
- }
154
- }
155
- }
156
- }
157
- .page-control {
158
- :is(.alerts-page-down, .alerts-page-up) {
159
- @include flex($align: center, $just: center);
160
- }
161
- .alerts-pager-button {
162
- @include flex($align: center);
163
- }
164
- svg {
165
- width: 15px;
166
- fill: #fff;
167
- }
168
- &__prev {
169
- transform: rotate(-90deg);
170
- }
171
- &__next {
172
- transform: rotate(90deg);
173
- }
174
- }
175
- </style>
1
+ <template>
2
+ <div class="notification-bar">
3
+ <div class="alerts" :style="{ 'background-color': color }">
4
+ <div
5
+ v-if="props.items.length > 1"
6
+ class="alerts-pager ng-star-inserted"
7
+ >
8
+ <div class="alerts-pager-control page-control">
9
+ <div class="alerts-page-down">
10
+ <button
11
+ :id="`${props.testId}-prev-button`"
12
+ class="alerts-pager-button"
13
+ @click="onPrev"
14
+ >
15
+ <atoms-the-icon class="page-control__prev" name="angle" />
16
+ </button>
17
+ </div>
18
+
19
+ <div class="alerts-pager-text">
20
+ {{ stepPosition }} / {{ props.items.length }}
21
+ </div>
22
+
23
+ <div class="alerts-page-up">
24
+ <button
25
+ :id="`${props.testId}-next-button`"
26
+ class="alerts-pager-button"
27
+ @click="onNext"
28
+ >
29
+ <atoms-the-icon class="page-control__next" name="angle" />
30
+ </button>
31
+ </div>
32
+ </div>
33
+ </div>
34
+
35
+ <div class="alert-text-truncate">
36
+ <div class="alert alert-app-level" :class="currentNotification.status">
37
+ <div class="alert-items">
38
+ <div class="alert-item">
39
+ <div class="alert-icon-wrapper">
40
+ <atoms-the-icon
41
+ :class="['alert-icon', iconName]"
42
+ :name="iconName"
43
+ stroke="none"
44
+ fill="#fff"
45
+ />
46
+ </div>
47
+
48
+ <span class="alert-text">{{ message }}</span>
49
+
50
+ <div v-if="isShowAction" class="alert-actions" @click="onAction">
51
+ <button
52
+ :id="`${props.testId}-action-button`"
53
+ class="btn alert-action"
54
+ >
55
+ {{ actionText }}
56
+ </button>
57
+ </div>
58
+ </div>
59
+ </div>
60
+
61
+ <button
62
+ :id="`${props.testId}-remove-button`"
63
+ class="close"
64
+ @click="removeCurrentNotification"
65
+ >
66
+ <atoms-the-icon name="close" fill="#fff" />
67
+ </button>
68
+ </div>
69
+ </div>
70
+ </div>
71
+ </div>
72
+ </template>
73
+
74
+ <script setup lang="ts">
75
+ import { UI_I_NotificationItem } from '~/components/atoms/notificationBar/models/interfaces'
76
+ import {
77
+ UI_E_ColorsPageControl,
78
+ UI_E_IconsByStatus,
79
+ } from '~/components/atoms/notificationBar/models/enums'
80
+ import { UI_T_ColorsPageControlKey } from '~/components/atoms/notificationBar/models/types'
81
+
82
+ const props = withDefaults(
83
+ defineProps<{
84
+ items: UI_I_NotificationItem[]
85
+ testId?: string
86
+ }>(),
87
+ { testId: 'ui-notification-bar' }
88
+ )
89
+ const emits = defineEmits<{
90
+ (event: 'action'): void
91
+ (event: 'remove', value: number): void
92
+ }>()
93
+
94
+ const stepPosition = ref<number>(1)
95
+
96
+ const removeCurrentNotification = (): void => {
97
+ currentNotification.value && emits('remove', currentNotification.value.id)
98
+ }
99
+ const onPrev = (): void => {
100
+ if (stepPosition.value === 1) {
101
+ stepPosition.value = props.items.length
102
+ } else {
103
+ stepPosition.value--
104
+ }
105
+ }
106
+ const onNext = (): void => {
107
+ if (stepPosition.value === props.items.length) {
108
+ stepPosition.value = 1
109
+ } else {
110
+ stepPosition.value++
111
+ }
112
+ }
113
+ const onAction = (): void => {
114
+ emits('action')
115
+ }
116
+
117
+ const currentNotification = computed<UI_I_NotificationItem | undefined>(() => {
118
+ return props.items.find((_, i) => i + 1 === stepPosition.value)
119
+ })
120
+
121
+ const status = computed<UI_T_ColorsPageControlKey>(
122
+ () => currentNotification.value?.status || 'alert-success'
123
+ )
124
+ const actionText = computed<string>(
125
+ () => currentNotification.value?.action || ''
126
+ )
127
+
128
+ const message = computed<string>(
129
+ () => currentNotification.value?.message || ''
130
+ )
131
+ const isShowAction = computed<boolean>(
132
+ () => !!currentNotification.value?.action
133
+ )
134
+
135
+ const iconName = computed<string>(
136
+ () => currentNotification.value ? UI_E_IconsByStatus[currentNotification.value.status] : ''
137
+ )
138
+
139
+ const color = computed<string>(
140
+ () => UI_E_ColorsPageControl[status.value]
141
+ )
142
+ </script>
143
+
144
+ <style lang="scss" scoped>
145
+ @import '~/assets/scss/common/mixins';
146
+ .notification-bar {
147
+ .alert {
148
+ &-app-level {
149
+ .close {
150
+ &:focus {
151
+ box-shadow: none;
152
+ }
153
+ }
154
+ }
155
+ }
156
+ }
157
+ .page-control {
158
+ :is(.alerts-page-down, .alerts-page-up) {
159
+ @include flex($align: center, $just: center);
160
+ }
161
+ .alerts-pager-button {
162
+ @include flex($align: center);
163
+ }
164
+ svg {
165
+ width: 15px;
166
+ fill: #fff;
167
+ }
168
+ &__prev {
169
+ transform: rotate(-90deg);
170
+ }
171
+ &__next {
172
+ transform: rotate(90deg);
173
+ }
174
+ }
175
+ </style>
@@ -1,52 +1,52 @@
1
- <template>
2
- <div class="page-size">
3
- {{ selectLabel }}
4
-
5
- <div class="clr-select-wrapper">
6
- <select
7
- :id="`${props.testId}-select`"
8
- :value="props.pageSize"
9
- class="clr-page-size-select"
10
- @change="change"
11
- >
12
- <option
13
- v-for="(item, key) in props.options"
14
- :key="key"
15
- :value="item.value"
16
- >
17
- {{ item.text }}
18
- </option>
19
- </select>
20
- </div>
21
- </div>
22
- </template>
23
-
24
- <script setup lang="ts">
25
- import { UI_I_Localization } from '~/models/interfaces'
26
- import { UI_I_OptionItem } from '~/components/atoms/models/interfaces'
27
-
28
- const props = withDefaults(
29
- defineProps<{
30
- pageSize: number
31
- options: UI_I_OptionItem[]
32
- label?: string
33
- testId?: string
34
- }>(),
35
- {
36
- testId: 'ui-per-page',
37
- label: 'itemsPerPage',
38
- }
39
- )
40
- const emits = defineEmits<{
41
- (event: 'change', num: number): void
42
- }>()
43
-
44
- const localization = computed<UI_I_Localization>(() => useLocal())
45
- const selectLabel = computed<string>(() => localization.value[props.label])
46
-
47
- const change = (e: InputEvent): void => {
48
- emits('change', +(e.target as HTMLInputElement).value)
49
- }
50
- </script>
51
-
52
- <style scoped></style>
1
+ <template>
2
+ <div class="page-size">
3
+ {{ selectLabel }}
4
+
5
+ <div class="clr-select-wrapper">
6
+ <select
7
+ :id="`${props.testId}-select`"
8
+ :value="props.pageSize"
9
+ class="clr-page-size-select"
10
+ @change="change"
11
+ >
12
+ <option
13
+ v-for="(item, key) in props.options"
14
+ :key="key"
15
+ :value="item.value"
16
+ >
17
+ {{ item.text }}
18
+ </option>
19
+ </select>
20
+ </div>
21
+ </div>
22
+ </template>
23
+
24
+ <script setup lang="ts">
25
+ import { UI_I_Localization } from '~/models/interfaces'
26
+ import { UI_I_OptionItem } from '~/components/atoms/models/interfaces'
27
+
28
+ const props = withDefaults(
29
+ defineProps<{
30
+ pageSize: number
31
+ options: UI_I_OptionItem[]
32
+ label?: string
33
+ testId?: string
34
+ }>(),
35
+ {
36
+ testId: 'ui-per-page',
37
+ label: 'itemsPerPage',
38
+ }
39
+ )
40
+ const emits = defineEmits<{
41
+ (event: 'change', num: number): void
42
+ }>()
43
+
44
+ const localization = computed<UI_I_Localization>(() => useLocal())
45
+ const selectLabel = computed<string>(() => localization.value[props.label])
46
+
47
+ const change = (e: InputEvent): void => {
48
+ emits('change', +(e.target as HTMLInputElement).value)
49
+ }
50
+ </script>
51
+
52
+ <style scoped></style>
@@ -1,90 +1,90 @@
1
- <template>
2
- <div
3
- v-show="modelValue"
4
- :style="{ top, bottom, left, right }"
5
- class="simple-popup clr-popover-content"
6
- @click.stop
7
- >
8
- <div class="close-wrapper">
9
- <button
10
- :id="`${props.testId}-close-icon`"
11
- class="close clr-smart-close-button"
12
- @click="hide"
13
- >
14
- <atoms-the-icon name="close" class="close-icon" />
15
- </button>
16
- </div>
17
- <slot />
18
- </div>
19
- </template>
20
-
21
- <script setup lang="ts">
22
- const props = withDefaults(
23
- defineProps<{
24
- modelValue: boolean
25
- top?: string
26
- bottom?: string
27
- left?: string
28
- right?: string
29
- testId?: string
30
- }>(),
31
- { testId: 'ui-simple-popup' }
32
- )
33
- const emits = defineEmits<{
34
- (event: 'update:model-value', status: boolean): void
35
- }>()
36
- const hide = (): void => {
37
- emits('update:model-value', false)
38
- }
39
-
40
- watch(
41
- () => props.modelValue,
42
- (val) => {
43
- if (val) {
44
- setTimeout(() => {
45
- window.addEventListener('click', hide)
46
- }, 0)
47
- return
48
- }
49
- window.removeEventListener('click', hide)
50
- }
51
- )
52
- </script>
53
-
54
- <style scoped lang="scss">
55
- .simple-popup {
56
- background: var(--popup-bgcolor);
57
- margin-top: 5px;
58
- border: 1px solid var(--table-border-color);
59
- padding: 18px;
60
- box-shadow: 0 1px 3px hsl(0deg 0% 55% / 25%);
61
- border-radius: 3px;
62
- font-weight: 400;
63
- position: absolute;
64
- z-index: 5000;
65
- cursor: default;
66
- opacity: 1;
67
-
68
- .close-wrapper {
69
- text-align: right;
70
-
71
- .clr-smart-close-button {
72
- .close-icon {
73
- width: 16px;
74
- height: 16px;
75
- }
76
- }
77
- }
78
- }
79
- </style>
80
-
81
- <style>
82
- :root {
83
- --popup-bgcolor: #fafafa;
84
- --table-border-color: #ccc;
85
- }
86
- :root.dark-theme {
87
- --popup-bgcolor: #29414e;
88
- --table-border-color: #495865;
89
- }
90
- </style>
1
+ <template>
2
+ <div
3
+ v-show="modelValue"
4
+ :style="{ top, bottom, left, right }"
5
+ class="simple-popup clr-popover-content"
6
+ @click.stop
7
+ >
8
+ <div class="close-wrapper">
9
+ <button
10
+ :id="`${props.testId}-close-icon`"
11
+ class="close clr-smart-close-button"
12
+ @click="hide"
13
+ >
14
+ <atoms-the-icon name="close" class="close-icon" />
15
+ </button>
16
+ </div>
17
+ <slot />
18
+ </div>
19
+ </template>
20
+
21
+ <script setup lang="ts">
22
+ const props = withDefaults(
23
+ defineProps<{
24
+ modelValue: boolean
25
+ top?: string
26
+ bottom?: string
27
+ left?: string
28
+ right?: string
29
+ testId?: string
30
+ }>(),
31
+ { testId: 'ui-simple-popup' }
32
+ )
33
+ const emits = defineEmits<{
34
+ (event: 'update:model-value', status: boolean): void
35
+ }>()
36
+ const hide = (): void => {
37
+ emits('update:model-value', false)
38
+ }
39
+
40
+ watch(
41
+ () => props.modelValue,
42
+ (val) => {
43
+ if (val) {
44
+ setTimeout(() => {
45
+ window.addEventListener('click', hide)
46
+ }, 0)
47
+ return
48
+ }
49
+ window.removeEventListener('click', hide)
50
+ }
51
+ )
52
+ </script>
53
+
54
+ <style scoped lang="scss">
55
+ .simple-popup {
56
+ background: var(--popup-bgcolor);
57
+ margin-top: 5px;
58
+ border: 1px solid var(--table-border-color);
59
+ padding: 18px;
60
+ box-shadow: 0 1px 3px hsl(0deg 0% 55% / 25%);
61
+ border-radius: 3px;
62
+ font-weight: 400;
63
+ position: absolute;
64
+ z-index: 5000;
65
+ cursor: default;
66
+ opacity: 1;
67
+
68
+ .close-wrapper {
69
+ text-align: right;
70
+
71
+ .clr-smart-close-button {
72
+ .close-icon {
73
+ width: 16px;
74
+ height: 16px;
75
+ }
76
+ }
77
+ }
78
+ }
79
+ </style>
80
+
81
+ <style>
82
+ :root {
83
+ --popup-bgcolor: #fafafa;
84
+ --table-border-color: #ccc;
85
+ }
86
+ :root.dark-theme {
87
+ --popup-bgcolor: #29414e;
88
+ --table-border-color: #495865;
89
+ }
90
+ </style>