@xen-orchestra/web-core 0.57.0 → 0.59.0

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 (230) hide show
  1. package/lib/components/card/VtsCardRowKeyValue.vue +1 -1
  2. package/lib/components/cell-object/VtsCellObject.vue +1 -1
  3. package/lib/components/cell-text/VtsCellText.vue +1 -1
  4. package/lib/components/console/VtsActionsConsole.vue +1 -1
  5. package/lib/components/console/VtsClipboardConsole.vue +1 -1
  6. package/lib/components/console/VtsLayoutConsole.vue +1 -1
  7. package/lib/components/console/VtsRemoteConsole.vue +1 -1
  8. package/lib/components/copy-all-menu-item/VtsCopyAllMenuItem.vue +48 -0
  9. package/lib/components/copy-button/VtsCopyButton.vue +3 -3
  10. package/lib/components/delete-button/VtsDeleteButton.vue +1 -1
  11. package/lib/components/icon/VtsIcon.vue +1 -1
  12. package/lib/components/input-wrapper/VtsInputWrapper.vue +3 -3
  13. package/lib/components/key-value-pair/VtsKeyValuePair.vue +1 -1
  14. package/lib/components/layout/VtsContentSidePanel.vue +2 -2
  15. package/lib/components/linear-chart/VtsLinearChart.vue +1 -1
  16. package/lib/components/menu/MenuItem.vue +2 -2
  17. package/lib/components/menu/MenuList.vue +2 -2
  18. package/lib/components/menu/MenuSeparator.vue +1 -1
  19. package/lib/components/modal/VtsActionModal.vue +52 -13
  20. package/lib/components/modal/VtsBlockedModal.vue +7 -7
  21. package/lib/components/modal/VtsDeleteModal.vue +20 -15
  22. package/lib/components/modal/VtsErrorModal.vue +10 -6
  23. package/lib/components/overlay/VtsOverlayList.vue +2 -2
  24. package/lib/components/panel/VtsPanel.vue +1 -1
  25. package/lib/components/panel/VtsSidePanel.vue +3 -3
  26. package/lib/components/query-builder/VtsQueryBuilder.vue +3 -3
  27. package/lib/components/query-builder/VtsQueryBuilderButton.vue +17 -11
  28. package/lib/components/query-builder/VtsQueryBuilderFilter.vue +1 -1
  29. package/lib/components/query-builder/VtsQueryBuilderGroup.vue +1 -1
  30. package/lib/components/query-builder/VtsQueryBuilderModal.vue +13 -8
  31. package/lib/components/query-builder/VtsQueryBuilderRow.vue +1 -1
  32. package/lib/components/relative-time/VtsRelativeTime.vue +2 -2
  33. package/lib/components/space-card/VtsSpaceCard.vue +11 -7
  34. package/lib/components/sr-connection-modal/VtsSrConnectionModal.vue +77 -0
  35. package/lib/components/stacked-bar-with-legend/VtsStackedBarWithLegend.vue +1 -1
  36. package/lib/components/state-hero/VtsStateHero.vue +1 -1
  37. package/lib/components/status/VtsStatus.vue +1 -1
  38. package/lib/components/tab/TabItem.vue +2 -2
  39. package/lib/components/tab/TabList.vue +1 -1
  40. package/lib/components/table/VtsTable.vue +3 -3
  41. package/lib/components/table/cells/VtsCollapsedListCell.vue +1 -1
  42. package/lib/components/table/cells/VtsLinkCell.vue +2 -2
  43. package/lib/components/table/cells/VtsStatusCell.vue +3 -3
  44. package/lib/components/table/cells/VtsTagCell.vue +2 -2
  45. package/lib/components/table/cells/VtsTextCell.vue +1 -1
  46. package/lib/components/tag/VtsTag.vue +1 -1
  47. package/lib/components/task/VtsQuickTaskButton.vue +1 -1
  48. package/lib/components/task/VtsQuickTaskTabBar.vue +1 -1
  49. package/lib/components/tooltip-list/VtsTooltipList.vue +1 -1
  50. package/lib/components/tree/VtsTreeList.vue +1 -1
  51. package/lib/components/tree/VtsTreeLoadingItem.vue +1 -1
  52. package/lib/components/ui/account-menu-button/UiAccountMenuButton.vue +1 -1
  53. package/lib/components/ui/alarm-item/UiAlarmItem.vue +2 -2
  54. package/lib/components/ui/alert/UiAlert.vue +1 -1
  55. package/lib/components/ui/button/UiButton.vue +2 -2
  56. package/lib/components/ui/button-icon/UiButtonIcon.vue +1 -1
  57. package/lib/components/ui/card-numbers/UiCardNumbers.vue +1 -1
  58. package/lib/components/ui/checkbox/UiCheckbox.vue +2 -2
  59. package/lib/components/ui/chip/UiChip.vue +1 -1
  60. package/lib/components/ui/counter/UiCounter.vue +1 -1
  61. package/lib/components/ui/drawer/UiDrawer.vue +37 -54
  62. package/lib/components/ui/dropdown/UiDropdown.vue +2 -2
  63. package/lib/components/ui/dropdown-button/UiDropdownButton.vue +1 -1
  64. package/lib/components/ui/head-bar/UiHeadBar.vue +1 -1
  65. package/lib/components/ui/info/UiInfo.vue +1 -1
  66. package/lib/components/ui/input/UiInput.vue +2 -2
  67. package/lib/components/ui/label/UiLabel.vue +1 -1
  68. package/lib/components/ui/legend/UiLegend.vue +2 -2
  69. package/lib/components/ui/legend-title/UiLegendTitle.vue +1 -1
  70. package/lib/components/ui/link/UiLink.vue +2 -2
  71. package/lib/components/ui/loader/UiLoader.vue +1 -1
  72. package/lib/components/ui/modal/UiModal.vue +17 -5
  73. package/lib/components/ui/object-link/UiObjectLink.vue +1 -1
  74. package/lib/components/ui/panel-card/UiPanelCard.vue +20 -0
  75. package/lib/components/ui/progress-bar/UiProgressBar.vue +1 -1
  76. package/lib/components/ui/query-search-bar/UiQuerySearchBar.vue +2 -2
  77. package/lib/components/ui/quick-task-panel/UiQuickTaskPanel.vue +1 -1
  78. package/lib/components/ui/radio-button/UiRadioButton.vue +2 -2
  79. package/lib/components/ui/stacked-bar/StackedBarSegment.vue +2 -2
  80. package/lib/components/ui/stacked-bar/UiStackedBar.vue +1 -1
  81. package/lib/components/ui/tag/UiTag.vue +1 -1
  82. package/lib/components/ui/task-item/UiTaskItem.vue +1 -1
  83. package/lib/components/ui/text-area/UiTextarea.vue +1 -1
  84. package/lib/components/ui/toaster/UiToaster.vue +1 -1
  85. package/lib/components/ui/toggle/UiToggle.vue +1 -1
  86. package/lib/components/ui/tooltip/UiTooltip.vue +2 -2
  87. package/lib/components/ui/tree-item-label/UiTreeItemLabel.vue +40 -16
  88. package/lib/components/ui/user-link/UiUserLink.vue +1 -1
  89. package/lib/components/ui/user-logo/UiUserLogo.vue +1 -1
  90. package/lib/components/{vif-connection-toggle-modal/VtsVifConnectionToggleModal.vue → vif-connection-modal/VtsVifConnectionModal.vue} +15 -10
  91. package/lib/composables/chart-theme.composable.ts +1 -1
  92. package/lib/composables/context.composable.ts +1 -1
  93. package/lib/composables/copy.composable.ts +6 -0
  94. package/lib/composables/default-tab.composable.ts +1 -1
  95. package/lib/composables/disabled.composable.ts +1 -1
  96. package/lib/composables/hide-route-query.composable.ts +1 -1
  97. package/lib/composables/link-component.composable.ts +1 -1
  98. package/lib/composables/modals/use-action-modal.ts +11 -0
  99. package/lib/composables/modals/use-blocked-modal.ts +10 -0
  100. package/lib/composables/modals/use-delete-modal.ts +11 -0
  101. package/lib/composables/pagination.composable.ts +2 -2
  102. package/lib/composables/route-query/types.ts +1 -1
  103. package/lib/composables/route-query.composable.ts +5 -5
  104. package/lib/composables/sort-route-query.composable.ts +1 -1
  105. package/lib/composables/tab-list.composable.ts +1 -1
  106. package/lib/composables/table/create-base-definition.ts +1 -1
  107. package/lib/composables/table/create-define-column.ts +6 -6
  108. package/lib/composables/table/create-sorting-definition.ts +2 -2
  109. package/lib/composables/table/create-visibility-definition.ts +2 -2
  110. package/lib/composables/table/type.ts +1 -1
  111. package/lib/composables/table.composable.ts +4 -4
  112. package/lib/composables/tree-filter.composable.ts +1 -1
  113. package/lib/directives/tooltip.directive.ts +2 -2
  114. package/lib/icons/index.ts +1 -1
  115. package/lib/locales/cs.json +50 -6
  116. package/lib/locales/de.json +3 -2
  117. package/lib/locales/en.json +83 -9
  118. package/lib/locales/es.json +0 -1
  119. package/lib/locales/fr.json +87 -13
  120. package/lib/locales/ko.json +2 -0
  121. package/lib/locales/nb-NO.json +0 -1
  122. package/lib/locales/nl.json +130 -3
  123. package/lib/locales/pt.json +1 -2
  124. package/lib/locales/sk.json +50 -6
  125. package/lib/locales/sv.json +0 -2
  126. package/lib/locales/zh-Hans.json +0 -4
  127. package/lib/packages/form-select/use-form-select-controller.ts +1 -1
  128. package/lib/packages/job/define-job.ts +5 -5
  129. package/lib/packages/job/index.ts +4 -4
  130. package/lib/packages/job/use-job-store.ts +2 -2
  131. package/lib/packages/menu/action.ts +1 -1
  132. package/lib/packages/menu/context.ts +1 -1
  133. package/lib/packages/menu/index.ts +10 -10
  134. package/lib/packages/menu/job.ts +3 -3
  135. package/lib/packages/menu/link.ts +1 -1
  136. package/lib/packages/menu/router-link.ts +1 -1
  137. package/lib/packages/menu/toggle-target.ts +1 -1
  138. package/lib/packages/overlay/README.md +19 -4
  139. package/lib/packages/overlay/create-event-handler.ts +4 -11
  140. package/lib/packages/overlay/types.ts +1 -0
  141. package/lib/packages/overlay/use-overlay-store.ts +5 -0
  142. package/lib/packages/overlay/use-overlay.ts +25 -10
  143. package/lib/packages/query-builder/group/build-root-group.ts +1 -1
  144. package/lib/packages/query-builder/node/handle-comparison-node.ts +1 -1
  145. package/lib/packages/query-builder/node/handle-glob-pattern-node.ts +1 -1
  146. package/lib/packages/query-builder/node/handle-group-node.ts +2 -2
  147. package/lib/packages/query-builder/node/handle-node.ts +8 -8
  148. package/lib/packages/query-builder/node/handle-null-node.ts +1 -1
  149. package/lib/packages/query-builder/node/handle-property-group-node.ts +2 -2
  150. package/lib/packages/query-builder/node/handle-property-node.ts +8 -8
  151. package/lib/packages/query-builder/node/handle-regexp-node.ts +1 -1
  152. package/lib/packages/query-builder/node/handle-string-or-number-node.ts +2 -2
  153. package/lib/packages/query-builder/node/handle-truthy-property-node.ts +1 -1
  154. package/lib/packages/query-builder/use-query-builder.ts +2 -2
  155. package/lib/packages/remote-resource/define-remote-resource.ts +56 -27
  156. package/lib/packages/remote-resource/sse.store.ts +4 -4
  157. package/lib/packages/threshold/use-threshold.ts +1 -1
  158. package/lib/packages/tree/branch-definition.ts +2 -2
  159. package/lib/packages/tree/branch.ts +8 -2
  160. package/lib/packages/tree/build-nodes.ts +3 -3
  161. package/lib/packages/tree/define-branch.ts +2 -2
  162. package/lib/packages/tree/define-leaf.ts +2 -2
  163. package/lib/packages/tree/define-tree.ts +3 -3
  164. package/lib/packages/tree/leaf-definition.ts +1 -1
  165. package/lib/packages/tree/leaf.ts +2 -2
  166. package/lib/packages/tree/tree-node-base.ts +2 -2
  167. package/lib/packages/tree/tree-node-definition-base.ts +1 -1
  168. package/lib/packages/tree/types.ts +6 -6
  169. package/lib/packages/tree/use-tree.ts +2 -2
  170. package/lib/stores/panel.store.ts +1 -1
  171. package/lib/stores/tooltip.store.ts +2 -2
  172. package/lib/tables/column-definitions/action-column.ts +2 -2
  173. package/lib/tables/column-definitions/button-column.ts +3 -3
  174. package/lib/tables/column-definitions/button-icon-column.ts +2 -2
  175. package/lib/tables/column-definitions/date-column.ts +3 -3
  176. package/lib/tables/column-definitions/info-column.ts +3 -3
  177. package/lib/tables/column-definitions/input-column.ts +3 -3
  178. package/lib/tables/column-definitions/link-column.ts +2 -2
  179. package/lib/tables/column-definitions/literal-column.ts +3 -3
  180. package/lib/tables/column-definitions/number-column.ts +2 -2
  181. package/lib/tables/column-definitions/percent-column.ts +2 -2
  182. package/lib/tables/column-definitions/progress-bar-column.ts +2 -2
  183. package/lib/tables/column-definitions/select-column.ts +2 -2
  184. package/lib/tables/column-definitions/status-column.ts +2 -2
  185. package/lib/tables/column-definitions/tag-column.ts +3 -3
  186. package/lib/tables/column-sets/backup-issue-columns.ts +1 -1
  187. package/lib/tables/column-sets/backup-job-columns.ts +1 -1
  188. package/lib/tables/column-sets/backup-job-schedule-columns.ts +1 -1
  189. package/lib/tables/column-sets/backup-log-columns.ts +1 -1
  190. package/lib/tables/column-sets/host-columns.ts +3 -3
  191. package/lib/tables/column-sets/network-columns.ts +2 -2
  192. package/lib/tables/column-sets/pif-columns.ts +2 -2
  193. package/lib/tables/column-sets/server-columns.ts +1 -1
  194. package/lib/tables/column-sets/sr-columns.ts +3 -3
  195. package/lib/tables/column-sets/vdi-columns.ts +2 -0
  196. package/lib/tables/column-sets/vif-columns.ts +1 -1
  197. package/lib/tables/column-sets/vif-network-columns.ts +1 -1
  198. package/lib/tables/column-sets/vm-backup-archive-columns.ts +3 -3
  199. package/lib/tables/column-sets/vm-backup-run-colums.ts +2 -2
  200. package/lib/tables/column-sets/vm-columns.ts +1 -1
  201. package/lib/types/object.type.ts +10 -1
  202. package/lib/utils/create-subscribable-store-context.util.ts +2 -2
  203. package/lib/utils/download-bugtools.utils.ts +1 -1
  204. package/lib/utils/if-else.utils.ts +2 -2
  205. package/lib/utils/injection-keys.util.ts +0 -2
  206. package/lib/utils/progress.util.ts +1 -1
  207. package/lib/utils/to-array.utils.ts +1 -1
  208. package/package.json +1 -1
  209. package/lib/components/drawer/VtsDrawer.vue +0 -89
  210. package/lib/components/drawer/VtsDrawerButton.vue +0 -22
  211. package/lib/components/drawer/VtsDrawerCancelButton.vue +0 -33
  212. package/lib/components/drawer/VtsDrawerConfirmButton.vue +0 -32
  213. package/lib/components/drawer/VtsDrawerList.vue +0 -34
  214. package/lib/components/modal/VtsModal.vue +0 -82
  215. package/lib/components/modal/VtsModalButton.vue +0 -35
  216. package/lib/components/modal/VtsModalCancelButton.vue +0 -37
  217. package/lib/components/modal/VtsModalConfirmButton.vue +0 -21
  218. package/lib/components/modal/VtsModalList.vue +0 -34
  219. package/lib/packages/drawer/DrawerProvider.vue +0 -17
  220. package/lib/packages/drawer/README.md +0 -189
  221. package/lib/packages/drawer/create-drawer-opener.ts +0 -119
  222. package/lib/packages/drawer/drawer.store.ts +0 -22
  223. package/lib/packages/drawer/types.ts +0 -93
  224. package/lib/packages/drawer/use-drawer.ts +0 -53
  225. package/lib/packages/modal/ModalProvider.vue +0 -17
  226. package/lib/packages/modal/README.md +0 -253
  227. package/lib/packages/modal/create-modal-opener.ts +0 -106
  228. package/lib/packages/modal/modal.store.ts +0 -22
  229. package/lib/packages/modal/types.ts +0 -91
  230. package/lib/packages/modal/use-modal.ts +0 -53
@@ -1,25 +1,30 @@
1
1
  <template>
2
- <VtsModal class="vts-query-builder-modal" accent="info" dismissible>
2
+ <UiModal class="vts-query-builder-modal" accent="info" @dismiss="emit('cancel')" @confirm="emit('confirm')">
3
3
  <template v-if="uiStore.isSmall" #title>{{ t('query-builder') }}</template>
4
4
  <template #content>
5
5
  <VtsQueryBuilderGroup v-model="rootGroup" root />
6
6
  </template>
7
7
  <template #buttons>
8
- <VtsModalCancelButton />
9
- <VtsModalConfirmButton>{{ t('action:save') }}</VtsModalConfirmButton>
8
+ <VtsOverlayCancelButton @click="emit('cancel')" />
9
+ <VtsOverlayConfirmButton>{{ t('action:save') }}</VtsOverlayConfirmButton>
10
10
  </template>
11
- </VtsModal>
11
+ </UiModal>
12
12
  </template>
13
13
 
14
14
  <script setup lang="ts">
15
- import VtsModal from '@core/components/modal/VtsModal.vue'
16
- import VtsModalCancelButton from '@core/components/modal/VtsModalCancelButton.vue'
17
- import VtsModalConfirmButton from '@core/components/modal/VtsModalConfirmButton.vue'
15
+ import VtsOverlayCancelButton from '@core/components/overlay/VtsOverlayCancelButton.vue'
16
+ import VtsOverlayConfirmButton from '@core/components/overlay/VtsOverlayConfirmButton.vue'
18
17
  import VtsQueryBuilderGroup from '@core/components/query-builder/VtsQueryBuilderGroup.vue'
19
- import { type QueryBuilderGroup } from '@core/packages/query-builder/types'
18
+ import UiModal from '@core/components/ui/modal/UiModal.vue'
19
+ import { type QueryBuilderGroup } from '@core/packages/query-builder/types.ts'
20
20
  import { useUiStore } from '@core/stores/ui.store.ts'
21
21
  import { useI18n } from 'vue-i18n'
22
22
 
23
+ const emit = defineEmits<{
24
+ confirm: []
25
+ cancel: []
26
+ }>()
27
+
23
28
  const rootGroup = defineModel<QueryBuilderGroup>({ required: true })
24
29
 
25
30
  const { t } = useI18n()
@@ -33,7 +33,7 @@ import VtsQueryBuilderFilter from '@core/components/query-builder/VtsQueryBuilde
33
33
  import VtsQueryBuilderGroup from '@core/components/query-builder/VtsQueryBuilderGroup.vue'
34
34
  import VtsQueryBuilderTreeLine from '@core/components/query-builder/VtsQueryBuilderTreeLine.vue'
35
35
  import UiInput from '@core/components/ui/input/UiInput.vue'
36
- import type { QueryBuilderNode } from '@core/packages/query-builder/types'
36
+ import type { QueryBuilderNode } from '@core/packages/query-builder/types.ts'
37
37
 
38
38
  defineProps<{
39
39
  index: number
@@ -3,8 +3,8 @@
3
3
  </template>
4
4
 
5
5
  <script lang="ts" setup>
6
- import useRelativeTime from '@core/composables/relative-time.composable'
7
- import { parseDateTime } from '@core/utils/time.util'
6
+ import useRelativeTime from '@core/composables/relative-time.composable.ts'
7
+ import { parseDateTime } from '@core/utils/time.util.ts'
8
8
  import { computed } from 'vue'
9
9
 
10
10
  const props = defineProps<{
@@ -1,9 +1,11 @@
1
1
  <template>
2
- <UiCard class="card-container">
2
+ <UiPanelCard class="vts-space-card">
3
3
  <UiCardTitle>
4
4
  {{ t('space') }}
5
5
  </UiCardTitle>
6
6
 
7
+ <slot name="alert" />
8
+
7
9
  <div class="content">
8
10
  <VtsProgressBar no-ruler :current="used" :total :label legend-type="percent" class="progress" />
9
11
 
@@ -35,16 +37,16 @@
35
37
  </template>
36
38
  </VtsCardRowKeyValue>
37
39
  </div>
38
- </UiCard>
40
+ </UiPanelCard>
39
41
  </template>
40
42
 
41
43
  <script setup lang="ts">
42
44
  import VtsCardRowKeyValue from '@core/components/card/VtsCardRowKeyValue.vue'
43
45
  import VtsCopyButton from '@core/components/copy-button/VtsCopyButton.vue'
44
46
  import VtsProgressBar from '@core/components/progress-bar/VtsProgressBar.vue'
45
- import UiCard from '@core/components/ui/card/UiCard.vue'
46
47
  import UiCardTitle from '@core/components/ui/card-title/UiCardTitle.vue'
47
- import { formatSize } from '@core/utils/size.util'
48
+ import UiPanelCard from '@core/components/ui/panel-card/UiPanelCard.vue'
49
+ import { formatSize } from '@core/utils/size.util.ts'
48
50
  import { computed } from 'vue'
49
51
  import { useI18n } from 'vue-i18n'
50
52
 
@@ -55,6 +57,10 @@ const { used, total } = defineProps<{
55
57
  totalSizeLabel?: string
56
58
  }>()
57
59
 
60
+ defineSlots<{
61
+ alert?(): any
62
+ }>()
63
+
58
64
  const { t } = useI18n()
59
65
 
60
66
  const usedSpace = computed(() => ({
@@ -78,9 +84,7 @@ const freeSpace = computed(() => {
78
84
  </script>
79
85
 
80
86
  <style scoped lang="postcss">
81
- .card-container {
82
- gap: 1.6rem;
83
-
87
+ .vts-space-card {
84
88
  .content {
85
89
  display: flex;
86
90
  flex-direction: column;
@@ -0,0 +1,77 @@
1
+ <template>
2
+ <UiModal accent="info" icon="status:info-picto" @confirm="emit('confirm')" @dismiss="emit('cancel')">
3
+ <template #title>
4
+ {{ title }}
5
+ </template>
6
+
7
+ <template #content>
8
+ {{ info }}
9
+ </template>
10
+
11
+ <template #buttons>
12
+ <VtsOverlayCancelButton @click="emit('cancel')">{{ t('action:go-back') }}</VtsOverlayCancelButton>
13
+ <VtsOverlayConfirmButton>
14
+ {{ confirmLabel }}
15
+ </VtsOverlayConfirmButton>
16
+ </template>
17
+ </UiModal>
18
+ </template>
19
+
20
+ <script lang="ts" setup>
21
+ import VtsOverlayCancelButton from '@core/components/overlay/VtsOverlayCancelButton.vue'
22
+ import VtsOverlayConfirmButton from '@core/components/overlay/VtsOverlayConfirmButton.vue'
23
+ import UiModal from '@core/components/ui/modal/UiModal.vue'
24
+ import { useMapper } from '@core/packages/mapper'
25
+ import { CONNECTION_ACTION, type ConnectionAction } from '@core/types/connection.ts'
26
+ import type { SrAccessMode, SrScope } from '@core/types/storage-repository.type.ts'
27
+ import { getSrModalInfoVariant } from '@core/utils/sr.utils.ts'
28
+ import { useI18n } from 'vue-i18n'
29
+
30
+ const { action, count, scope, accessMode, hostsCount } = defineProps<{
31
+ action: ConnectionAction
32
+ count: number
33
+ scope: SrScope
34
+ accessMode: SrAccessMode
35
+ hostsCount: number
36
+ }>()
37
+
38
+ const emit = defineEmits<{
39
+ confirm: []
40
+ cancel: []
41
+ }>()
42
+
43
+ const { t } = useI18n()
44
+
45
+ const title = useMapper(
46
+ () => action,
47
+ () => ({
48
+ [CONNECTION_ACTION.CONNECT]: t('sr-connect-title', { n: count }),
49
+ [CONNECTION_ACTION.DISCONNECT]: t('sr-disconnect-title', { n: count }),
50
+ }),
51
+ CONNECTION_ACTION.CONNECT
52
+ )
53
+
54
+ const info = useMapper(
55
+ () => `${action}-${getSrModalInfoVariant(scope, accessMode)}`,
56
+ () => ({
57
+ 'connect-host': t('sr-connect-info-host', { n: count }),
58
+ 'connect-pool-local': t('sr-connect-info-pool-local', { n: count }),
59
+ 'connect-pool-mixed': t('sr-connect-info-pool-mixed'),
60
+ 'connect-pool-shared': t('sr-connect-info-pool-shared', { n: count, hostsCount }),
61
+ 'disconnect-host': t('sr-disconnect-info-host', { n: count }),
62
+ 'disconnect-pool-local': t('sr-disconnect-info-pool-local', { n: count }),
63
+ 'disconnect-pool-mixed': t('sr-disconnect-info-pool-mixed'),
64
+ 'disconnect-pool-shared': t('sr-disconnect-info-pool-shared', { n: count, hostsCount }),
65
+ }),
66
+ 'connect-pool-shared'
67
+ )
68
+
69
+ const confirmLabel = useMapper(
70
+ () => action,
71
+ () => ({
72
+ [CONNECTION_ACTION.CONNECT]: t('action:connect-n-srs', { n: count }),
73
+ [CONNECTION_ACTION.DISCONNECT]: t('action:disconnect-n-srs', { n: count }),
74
+ }),
75
+ CONNECTION_ACTION.CONNECT
76
+ )
77
+ </script>
@@ -20,7 +20,7 @@
20
20
  import VtsLegendList from '@core/components/legend-list/VtsLegendList.vue'
21
21
  import UiLegend, { type LegendItemProps } from '@core/components/ui/legend/UiLegend.vue'
22
22
  import UiStackedBar, { type StackedBarProps } from '@core/components/ui/stacked-bar/UiStackedBar.vue'
23
- import { useUiStore } from '@core/stores/ui.store'
23
+ import { useUiStore } from '@core/stores/ui.store.ts'
24
24
 
25
25
  type Segment = StackedBarProps['segments'][number] & LegendItemProps & { label: string }
26
26
 
@@ -21,7 +21,7 @@
21
21
 
22
22
  <script lang="ts" setup>
23
23
  import UiLoader from '@core/components/ui/loader/UiLoader.vue'
24
- import { useUiStore } from '@core/stores/ui.store'
24
+ import { useUiStore } from '@core/stores/ui.store.ts'
25
25
  import type { StateHeroFormat, StateHeroSize, StateHeroType } from '@core/types/state-hero.type.ts'
26
26
  import { toVariants } from '@core/utils/to-variants.util.ts'
27
27
  import { computed } from 'vue'
@@ -6,7 +6,7 @@
6
6
 
7
7
  <script setup lang="ts">
8
8
  import UiInfo, { type InfoAccent } from '@core/components/ui/info/UiInfo.vue'
9
- import { vTooltip } from '@core/directives/tooltip.directive'
9
+ import { vTooltip } from '@core/directives/tooltip.directive.ts'
10
10
  import { useMapper } from '@core/packages/mapper'
11
11
  import { useI18n } from 'vue-i18n'
12
12
 
@@ -6,8 +6,8 @@
6
6
  </template>
7
7
 
8
8
  <script lang="ts" setup>
9
- import { useDisabled } from '@core/composables/disabled.composable'
10
- import { useUiStore } from '@core/stores/ui.store'
9
+ import { useDisabled } from '@core/composables/disabled.composable.ts'
10
+ import { useUiStore } from '@core/stores/ui.store.ts'
11
11
  import { computed } from 'vue'
12
12
 
13
13
  const props = withDefaults(
@@ -6,7 +6,7 @@
6
6
  </template>
7
7
 
8
8
  <script lang="ts" setup>
9
- import { useDisabled } from '@core/composables/disabled.composable'
9
+ import { useDisabled } from '@core/composables/disabled.composable.ts'
10
10
 
11
11
  const props = defineProps<{
12
12
  disabled?: boolean
@@ -18,10 +18,10 @@
18
18
  <script lang="ts" setup>
19
19
  import VtsStateHero from '@core/components/state-hero/VtsStateHero.vue'
20
20
  import UiTablePagination from '@core/components/ui/table-pagination/UiTablePagination.vue'
21
- import type { PaginationBindings } from '@core/composables/pagination.composable'
21
+ import type { PaginationBindings } from '@core/composables/pagination.composable.ts'
22
22
  import type { StateHeroType, StateHeroSize } from '@core/types/state-hero.type.ts'
23
- import { hasEllipsis } from '@core/utils/has-ellipsis.util'
24
- import { toVariants } from '@core/utils/to-variants.util'
23
+ import { hasEllipsis } from '@core/utils/has-ellipsis.util.ts'
24
+ import { toVariants } from '@core/utils/to-variants.util.ts'
25
25
  import { useResizeObserver, useScroll } from '@vueuse/core'
26
26
  import { computed, ref, useTemplateRef } from 'vue'
27
27
 
@@ -36,7 +36,7 @@
36
36
  import VtsIcon from '@core/components/icon/VtsIcon.vue'
37
37
  import UiButton from '@core/components/ui/button/UiButton.vue'
38
38
  import UiTableCell from '@core/components/ui/table-cell/UiTableCell.vue'
39
- import type { MaybeArray } from '@core/types/utility.type'
39
+ import type { MaybeArray } from '@core/types/utility.type.ts'
40
40
  import { useToggle } from '@vueuse/shared'
41
41
 
42
42
  defineProps<{
@@ -15,8 +15,8 @@
15
15
  import VtsIcon from '@core/components/icon/VtsIcon.vue'
16
16
  import UiLink from '@core/components/ui/link/UiLink.vue'
17
17
  import UiTableCell from '@core/components/ui/table-cell/UiTableCell.vue'
18
- import type { LinkOptions } from '@core/composables/link-component.composable'
19
- import { vTooltip } from '@core/directives/tooltip.directive'
18
+ import type { LinkOptions } from '@core/composables/link-component.composable.ts'
19
+ import { vTooltip } from '@core/directives/tooltip.directive.ts'
20
20
  import type { IconName } from '@core/icons'
21
21
 
22
22
  export type VtsLinkCellProps = LinkOptions & {
@@ -16,9 +16,9 @@
16
16
  <script setup lang="ts">
17
17
  import VtsStatus, { type Status } from '@core/components/status/VtsStatus.vue'
18
18
  import UiTableCell from '@core/components/ui/table-cell/UiTableCell.vue'
19
- import { vTooltip } from '@core/directives/tooltip.directive'
20
- import type { MaybeArray } from '@core/types/utility.type'
21
- import { toArray } from '@core/utils/to-array.utils'
19
+ import { vTooltip } from '@core/directives/tooltip.directive.ts'
20
+ import type { MaybeArray } from '@core/types/utility.type.ts'
21
+ import { toArray } from '@core/utils/to-array.utils.ts'
22
22
  import { computed } from 'vue'
23
23
 
24
24
  export type StatusCellProps = {
@@ -11,8 +11,8 @@ import VtsTag from '@core/components/tag/VtsTag.vue'
11
11
  import UiTableCell from '@core/components/ui/table-cell/UiTableCell.vue'
12
12
  import type { TagAccent } from '@core/components/ui/tag/UiTag.vue'
13
13
  import UiTagsList from '@core/components/ui/tag/UiTagsList.vue'
14
- import type { MaybeArray } from '@core/types/utility.type'
15
- import { toArray } from '@core/utils/to-array.utils'
14
+ import type { MaybeArray } from '@core/types/utility.type.ts'
15
+ import { toArray } from '@core/utils/to-array.utils.ts'
16
16
  import { computed } from 'vue'
17
17
 
18
18
  const { tag, accent } = defineProps<{
@@ -10,7 +10,7 @@
10
10
  <script setup lang="ts">
11
11
  import VtsIcon from '@core/components/icon/VtsIcon.vue'
12
12
  import UiTableCell from '@core/components/ui/table-cell/UiTableCell.vue'
13
- import { vTooltip } from '@core/directives/tooltip.directive'
13
+ import { vTooltip } from '@core/directives/tooltip.directive.ts'
14
14
  import type { IconName } from '@core/icons'
15
15
 
16
16
  export type TextCellProps = {
@@ -11,7 +11,7 @@
11
11
  <script lang="ts" setup>
12
12
  import UiTag, { type TagAccent } from '@core/components/ui/tag/UiTag.vue'
13
13
  import UiTertiaryTag from '@core/components/ui/tag/UiTertiaryTag.vue'
14
- import { parseTag } from '@core/utils/parse-tag.util'
14
+ import { parseTag } from '@core/utils/parse-tag.util.ts'
15
15
  import { computed } from 'vue'
16
16
 
17
17
  type TagVariant = 'primary' | 'secondary'
@@ -20,7 +20,7 @@ import VtsBackdrop from '@core/components/backdrop/VtsBackdrop.vue'
20
20
  import UiButtonIcon from '@core/components/ui/button-icon/UiButtonIcon.vue'
21
21
  import UiQuickTaskPanel from '@core/components/ui/quick-task-panel/UiQuickTaskPanel.vue'
22
22
  import type { Task } from '@core/components/ui/task-item/UiTaskItem.vue'
23
- import { vTooltip } from '@core/directives/tooltip.directive'
23
+ import { vTooltip } from '@core/directives/tooltip.directive.ts'
24
24
  import { unrefElement, watchArray, whenever } from '@vueuse/core'
25
25
  import placementJs from 'placement.js'
26
26
  import { computed, nextTick, ref } from 'vue'
@@ -48,7 +48,7 @@ import VtsDivider from '@core/components/divider/VtsDivider.vue'
48
48
  import TabItem from '@core/components/tab/TabItem.vue'
49
49
  import TabList from '@core/components/tab/TabList.vue'
50
50
  import UiCounter from '@core/components/ui/counter/UiCounter.vue'
51
- import { useTabList } from '@core/composables/tab-list.composable'
51
+ import { useTabList } from '@core/composables/tab-list.composable.ts'
52
52
  import type { TaskStatus } from '@core/types/task.type.ts'
53
53
  import { useI18n } from 'vue-i18n'
54
54
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  <script lang="ts" setup>
6
6
  import UiTooltip from '@core/components/ui/tooltip/UiTooltip.vue'
7
- import { useTooltipStore } from '@core/stores/tooltip.store'
7
+ import { useTooltipStore } from '@core/stores/tooltip.store.ts'
8
8
  import { storeToRefs } from 'pinia'
9
9
 
10
10
  const tooltipStore = useTooltipStore()
@@ -5,7 +5,7 @@
5
5
  </template>
6
6
 
7
7
  <script lang="ts" setup>
8
- import { IK_TREE_LIST_DEPTH } from '@core/utils/injection-keys.util'
8
+ import { IK_TREE_LIST_DEPTH } from '@core/utils/injection-keys.util.ts'
9
9
  import { computed, inject, provide, ref } from 'vue'
10
10
 
11
11
  defineSlots<{
@@ -16,7 +16,7 @@
16
16
  import VtsIcon from '@core/components/icon/VtsIcon.vue'
17
17
  import VtsTreeLine from '@core/components/tree/VtsTreeLine.vue'
18
18
  import type { IconName } from '@core/icons'
19
- import { IK_TREE_LIST_DEPTH } from '@core/utils/injection-keys.util'
19
+ import { IK_TREE_LIST_DEPTH } from '@core/utils/injection-keys.util.ts'
20
20
  import { inject, ref } from 'vue'
21
21
 
22
22
  defineProps<{
@@ -7,7 +7,7 @@
7
7
 
8
8
  <script lang="ts" setup>
9
9
  import UiUserLogo from '@core/components/ui/user-logo/UiUserLogo.vue'
10
- import { useDisabled } from '@core/composables/disabled.composable'
10
+ import { useDisabled } from '@core/composables/disabled.composable.ts'
11
11
 
12
12
  defineProps<{
13
13
  size: 'extra-small' | 'small' | 'medium'
@@ -36,8 +36,8 @@
36
36
  <script lang="ts" setup>
37
37
  import UiButtonIcon from '@core/components/ui/button-icon/UiButtonIcon.vue'
38
38
  import { useTimeAgo } from '@core/composables/locale-time-ago.composable.ts'
39
- import { vTooltip } from '@core/directives/tooltip.directive'
40
- import { toVariants } from '@core/utils/to-variants.util'
39
+ import { vTooltip } from '@core/directives/tooltip.directive.ts'
40
+ import { toVariants } from '@core/utils/to-variants.util.ts'
41
41
  import { useToggle } from '@vueuse/core'
42
42
  import { computed } from 'vue'
43
43
  import { useI18n } from 'vue-i18n'
@@ -28,7 +28,7 @@ import VtsIcon from '@core/components/icon/VtsIcon.vue'
28
28
  import UiButtonIcon from '@core/components/ui/button-icon/UiButtonIcon.vue'
29
29
  import type { IconName } from '@core/icons'
30
30
  import { useMapper } from '@core/packages/mapper'
31
- import { toVariants } from '@core/utils/to-variants.util'
31
+ import { toVariants } from '@core/utils/to-variants.util.ts'
32
32
 
33
33
  type AlertAccent = 'info' | 'success' | 'warning' | 'danger'
34
34
 
@@ -9,9 +9,9 @@
9
9
 
10
10
  <script lang="ts" setup>
11
11
  import VtsIcon from '@core/components/icon/VtsIcon.vue'
12
- import { useDisabled } from '@core/composables/disabled.composable'
12
+ import { useDisabled } from '@core/composables/disabled.composable.ts'
13
13
  import type { IconName } from '@core/icons'
14
- import { toVariants } from '@core/utils/to-variants.util'
14
+ import { toVariants } from '@core/utils/to-variants.util.ts'
15
15
  import { computed } from 'vue'
16
16
 
17
17
  export type ButtonVariant = 'primary' | 'secondary' | 'tertiary'
@@ -10,7 +10,7 @@
10
10
  <script lang="ts" setup>
11
11
  import VtsIcon from '@core/components/icon/VtsIcon.vue'
12
12
  import type { IconName } from '@core/icons'
13
- import { toVariants } from '@core/utils/to-variants.util'
13
+ import { toVariants } from '@core/utils/to-variants.util.ts'
14
14
  import { computed } from 'vue'
15
15
 
16
16
  export type ButtonIconAccent = 'brand' | 'warning' | 'danger'
@@ -14,7 +14,7 @@
14
14
  </template>
15
15
 
16
16
  <script setup lang="ts">
17
- import { toVariants } from '@core/utils/to-variants.util'
17
+ import { toVariants } from '@core/utils/to-variants.util.ts'
18
18
  import { computed } from 'vue'
19
19
  import { useI18n } from 'vue-i18n'
20
20
 
@@ -24,8 +24,8 @@
24
24
  <script lang="ts" setup>
25
25
  import VtsIcon from '@core/components/icon/VtsIcon.vue'
26
26
  import UiInfo from '@core/components/ui/info/UiInfo.vue'
27
- import { useDisabled } from '@core/composables/disabled.composable'
28
- import { toVariants } from '@core/utils/to-variants.util'
27
+ import { useDisabled } from '@core/composables/disabled.composable.ts'
28
+ import { toVariants } from '@core/utils/to-variants.util.ts'
29
29
  import { computed, type LabelHTMLAttributes, useAttrs } from 'vue'
30
30
 
31
31
  type CheckboxAccent = 'brand' | 'warning' | 'danger'
@@ -12,7 +12,7 @@
12
12
 
13
13
  <script lang="ts" setup>
14
14
  import VtsIcon from '@core/components/icon/VtsIcon.vue'
15
- import { toVariants } from '@core/utils/to-variants.util'
15
+ import { toVariants } from '@core/utils/to-variants.util.ts'
16
16
  import { computed } from 'vue'
17
17
 
18
18
  export type ChipAccent = 'info' | 'success' | 'warning' | 'danger'
@@ -6,7 +6,7 @@
6
6
  </template>
7
7
 
8
8
  <script lang="ts" setup>
9
- import { toVariants } from '@core/utils/to-variants.util'
9
+ import { toVariants } from '@core/utils/to-variants.util.ts'
10
10
  import { computed } from 'vue'
11
11
 
12
12
  type CounterAccent = 'brand' | 'neutral' | 'info' | 'success' | 'warning' | 'danger' | 'muted'
@@ -1,46 +1,50 @@
1
1
  <template>
2
- <Transition name="drawer" @after-leave="emit('afterLeave')">
3
- <div v-if="isOpen" class="ui-drawer" aria-modal="true" role="dialog" @click.self="isDismissible && emit('dismiss')">
4
- <aside class="drawer">
5
- <div class="header">
6
- <div v-if="slots.title || title !== undefined" class="typo-h4">
7
- <slot name="title">
8
- {{ title }}
9
- </slot>
10
- </div>
11
- <UiButtonIcon
12
- v-if="isDismissible"
13
- :target-scale="2"
14
- icon="action:close-cancel-clear"
15
- accent="brand"
16
- size="small"
17
- @click="emit('dismiss')"
18
- />
2
+ <form class="ui-drawer" @click.self="emit('dismiss')" @submit.prevent="emit('confirm')">
3
+ <aside
4
+ :aria-labelledby="slots.title || title !== undefined ? titleId : undefined"
5
+ aria-modal="true"
6
+ class="drawer"
7
+ role="dialog"
8
+ >
9
+ <div class="header">
10
+ <div v-if="slots.title || title !== undefined" :id="titleId" class="typo-h4">
11
+ <slot name="title">
12
+ {{ title }}
13
+ </slot>
19
14
  </div>
20
- <div class="content">
21
- <slot name="content" />
22
- </div>
23
- <VtsButtonGroup v-if="slots.buttons" no-stack class="buttons">
24
- <slot name="buttons" />
25
- </VtsButtonGroup>
26
- </aside>
27
- </div>
28
- </Transition>
15
+ <UiButtonIcon
16
+ v-if="onDismiss"
17
+ :target-scale="2"
18
+ icon="action:close-cancel-clear"
19
+ accent="brand"
20
+ size="small"
21
+ @click="emit('dismiss')"
22
+ />
23
+ </div>
24
+ <div class="content">
25
+ <slot name="content" />
26
+ </div>
27
+ <VtsButtonGroup v-if="slots.buttons" no-stack class="buttons">
28
+ <slot name="buttons" />
29
+ </VtsButtonGroup>
30
+ </aside>
31
+ </form>
29
32
  </template>
30
33
 
31
34
  <script lang="ts" setup>
32
35
  import VtsButtonGroup from '@core/components/button-group/VtsButtonGroup.vue'
33
36
  import UiButtonIcon from '@core/components/ui/button-icon/UiButtonIcon.vue'
37
+ import { useOverlayEscape } from '@core/packages/overlay/use-overlay-escape.ts'
38
+ import { useId } from 'vue'
34
39
 
35
40
  defineProps<{
36
- isOpen: boolean
37
- isDismissible?: boolean
38
41
  title?: string
42
+ onDismiss?: () => any
39
43
  }>()
40
44
 
41
45
  const emit = defineEmits<{
46
+ confirm: []
42
47
  dismiss: []
43
- afterLeave: []
44
48
  }>()
45
49
 
46
50
  const slots = defineSlots<{
@@ -48,34 +52,13 @@ const slots = defineSlots<{
48
52
  title?(): any
49
53
  buttons?(): any
50
54
  }>()
51
- </script>
52
55
 
53
- <style lang="postcss" scoped>
54
- /* Slide-in from right */
55
- .drawer-enter-active.ui-drawer,
56
- .drawer-leave-active.ui-drawer {
57
- transition: opacity 0.3s ease;
58
- }
56
+ useOverlayEscape(() => emit('dismiss'))
59
57
 
60
- .drawer-enter-active .drawer,
61
- .drawer-leave-active .drawer {
62
- transition: transform 0.3s ease;
63
- }
64
-
65
- .drawer-enter-from.ui-drawer,
66
- .drawer-leave-to.ui-drawer {
67
- opacity: 0;
68
- }
69
-
70
- .drawer-enter-from .drawer,
71
- .drawer-leave-to .drawer {
72
- transform: translateX(100%);
73
-
74
- &:dir(rtl) {
75
- transform: translateX(-100%);
76
- }
77
- }
58
+ const titleId = useId()
59
+ </script>
78
60
 
61
+ <style lang="postcss" scoped>
79
62
  .ui-drawer {
80
63
  position: fixed;
81
64
  display: flex;
@@ -21,9 +21,9 @@
21
21
  <script lang="ts" setup>
22
22
  import VtsIcon from '@core/components/icon/VtsIcon.vue'
23
23
  import UiCheckbox from '@core/components/ui/checkbox/UiCheckbox.vue'
24
- import { vTooltip } from '@core/directives/tooltip.directive'
24
+ import { vTooltip } from '@core/directives/tooltip.directive.ts'
25
25
  import type { IconName } from '@core/icons'
26
- import { toVariants } from '@core/utils/to-variants.util'
26
+ import { toVariants } from '@core/utils/to-variants.util.ts'
27
27
  import { computed } from 'vue'
28
28
 
29
29
  export type DropdownAccent = 'normal' | 'brand' | 'success' | 'warning' | 'danger'
@@ -11,7 +11,7 @@
11
11
 
12
12
  <script lang="ts" setup>
13
13
  import VtsIcon from '@core/components/icon/VtsIcon.vue'
14
- import { useDisabled } from '@core/composables/disabled.composable'
14
+ import { useDisabled } from '@core/composables/disabled.composable.ts'
15
15
  import type { IconName } from '@core/icons'
16
16
 
17
17
  const { disabled, selected, icon } = defineProps<{
@@ -20,7 +20,7 @@
20
20
 
21
21
  <script lang="ts" setup>
22
22
  import VtsIcon from '@core/components/icon/VtsIcon.vue'
23
- import { vTooltip } from '@core/directives/tooltip.directive'
23
+ import { vTooltip } from '@core/directives/tooltip.directive.ts'
24
24
  import type { IconName } from '@core/icons'
25
25
 
26
26
  defineProps<{