@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
@@ -10,7 +10,7 @@
10
10
 
11
11
  <script lang="ts" setup>
12
12
  import VtsIcon from '@core/components/icon/VtsIcon.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
  import { useMapper } from '@core/packages/mapper'
16
16
 
@@ -46,8 +46,8 @@ import UiButtonIcon from '@core/components/ui/button-icon/UiButtonIcon.vue'
46
46
  import type { LabelAccent } from '@core/components/ui/label/UiLabel.vue'
47
47
  import type { IconName } from '@core/icons'
48
48
  import { useMapper } from '@core/packages/mapper/use-mapper.ts'
49
- import { IK_INPUT_WRAPPER_CONTROLLER } from '@core/utils/injection-keys.util'
50
- import { toVariants } from '@core/utils/to-variants.util'
49
+ import { IK_INPUT_WRAPPER_CONTROLLER } from '@core/utils/injection-keys.util.ts'
50
+ import { toVariants } from '@core/utils/to-variants.util.ts'
51
51
  import { inject, ref, useAttrs, watchEffect } from 'vue'
52
52
 
53
53
  export type InputAccent = 'brand' | 'warning' | 'danger'
@@ -10,7 +10,7 @@
10
10
 
11
11
  <script lang="ts" setup>
12
12
  import UiLink from '@core/components/ui/link/UiLink.vue'
13
- import { toVariants } from '@core/utils/to-variants.util'
13
+ import { toVariants } from '@core/utils/to-variants.util.ts'
14
14
  import { useI18n } from 'vue-i18n'
15
15
 
16
16
  export type LabelAccent = 'neutral' | 'warning' | 'danger'
@@ -10,8 +10,8 @@
10
10
 
11
11
  <script lang="ts" setup>
12
12
  import VtsIcon from '@core/components/icon/VtsIcon.vue'
13
- import { vTooltip } from '@core/directives/tooltip.directive'
14
- import { toVariants } from '@core/utils/to-variants.util'
13
+ import { vTooltip } from '@core/directives/tooltip.directive.ts'
14
+ import { toVariants } from '@core/utils/to-variants.util.ts'
15
15
  import { computed } from 'vue'
16
16
 
17
17
  export type LegendItemAccent = 'neutral' | 'info' | 'success' | 'warning' | 'danger' | 'muted'
@@ -8,7 +8,7 @@
8
8
 
9
9
  <script lang="ts" setup>
10
10
  import VtsIcon from '@core/components/icon/VtsIcon.vue'
11
- import { vTooltip } from '@core/directives/tooltip.directive'
11
+ import { vTooltip } from '@core/directives/tooltip.directive.ts'
12
12
  import type { IconName } from '@core/icons'
13
13
 
14
14
  export type LegendTitleProps = {
@@ -10,8 +10,8 @@
10
10
 
11
11
  <script lang="ts" setup>
12
12
  import VtsIcon from '@core/components/icon/VtsIcon.vue'
13
- import { type LinkOptions, useLinkComponent } from '@core/composables/link-component.composable'
14
- import { vTooltip } from '@core/directives/tooltip.directive'
13
+ import { type LinkOptions, useLinkComponent } from '@core/composables/link-component.composable.ts'
14
+ import { vTooltip } from '@core/directives/tooltip.directive.ts'
15
15
  import type { IconName } from '@core/icons'
16
16
  import { computed } from 'vue'
17
17
 
@@ -23,7 +23,7 @@
23
23
  </template>
24
24
 
25
25
  <script lang="ts" setup>
26
- import { uniqueId } from '@core/utils/unique-id.util'
26
+ import { uniqueId } from '@core/utils/unique-id.util.ts'
27
27
 
28
28
  const firstHalfId = uniqueId('spinner-first-half-')
29
29
  const secondHalfId = uniqueId('spinner-second-half-')
@@ -1,7 +1,7 @@
1
1
  <!-- v4 -->
2
2
  <template>
3
- <form :class="className" class="ui-modal" @click.self="emit('dismiss')">
4
- <div class="modal">
3
+ <form :class="className" class="ui-modal" @click.self="emit('dismiss')" @submit.prevent="emit('confirm')">
4
+ <div :aria-labelledby="slots.title ? titleId : undefined" aria-modal="true" class="modal" role="dialog">
5
5
  <UiButtonIcon
6
6
  v-if="onDismiss"
7
7
  :accent="closeIconAccent"
@@ -13,7 +13,7 @@
13
13
  />
14
14
  <main class="main">
15
15
  <VtsIcon v-if="icon" :name="icon" class="icon" size="current" />
16
- <div v-if="slots.title" class="typo-h4">
16
+ <div v-if="slots.title" :id="titleId" class="typo-h4">
17
17
  <slot name="title" />
18
18
  </div>
19
19
  <div class="content">
@@ -33,18 +33,21 @@ import VtsIcon from '@core/components/icon/VtsIcon.vue'
33
33
  import UiButtonIcon from '@core/components/ui/button-icon/UiButtonIcon.vue'
34
34
  import type { IconName } from '@core/icons'
35
35
  import { useMapper } from '@core/packages/mapper'
36
+ import { useOverlayEscape } from '@core/packages/overlay/use-overlay-escape.ts'
37
+ import { IK_OVERLAY_ACCENT } from '@core/utils/injection-keys.util.ts'
36
38
  import { toVariants } from '@core/utils/to-variants.util.ts'
37
- import { computed } from 'vue'
39
+ import { computed, provide, useId } from 'vue'
38
40
 
39
41
  export type ModalAccent = 'info' | 'warning' | 'danger'
40
42
 
41
43
  const { accent } = defineProps<{
42
44
  accent: ModalAccent
43
45
  icon?: IconName
44
- onDismiss?: () => void
46
+ onDismiss?: () => any
45
47
  }>()
46
48
 
47
49
  const emit = defineEmits<{
50
+ confirm: []
48
51
  dismiss: []
49
52
  }>()
50
53
 
@@ -54,6 +57,10 @@ const slots = defineSlots<{
54
57
  title?(): any
55
58
  }>()
56
59
 
60
+ useOverlayEscape(() => emit('dismiss'))
61
+
62
+ const titleId = useId()
63
+
57
64
  const closeIconAccent = useMapper(
58
65
  () => accent,
59
66
  {
@@ -65,6 +72,11 @@ const closeIconAccent = useMapper(
65
72
  )
66
73
 
67
74
  const className = computed(() => toVariants({ accent }))
75
+
76
+ provide(
77
+ IK_OVERLAY_ACCENT,
78
+ computed(() => accent)
79
+ )
68
80
  </script>
69
81
 
70
82
  <style lang="postcss" scoped>
@@ -22,7 +22,7 @@
22
22
 
23
23
  <script lang="ts" setup>
24
24
  import VtsIcon from '@core/components/icon/VtsIcon.vue'
25
- import { vTooltip } from '@core/directives/tooltip.directive'
25
+ import { vTooltip } from '@core/directives/tooltip.directive.ts'
26
26
  import type { IconName } from '@core/icons'
27
27
  import { type RouteLocationRaw } from 'vue-router'
28
28
 
@@ -0,0 +1,20 @@
1
+ <template>
2
+ <UiCard class="ui-panel-card">
3
+ <slot />
4
+ </UiCard>
5
+ </template>
6
+
7
+ <script lang="ts" setup>
8
+ import UiCard from '@core/components/ui/card/UiCard.vue'
9
+
10
+ defineSlots<{
11
+ default(): any
12
+ }>()
13
+ </script>
14
+
15
+ <style lang="postcss" scoped>
16
+ .ui-panel-card {
17
+ gap: 1.6rem;
18
+ padding: 1.6rem;
19
+ }
20
+ </style>
@@ -15,7 +15,7 @@
15
15
  <script lang="ts" setup>
16
16
  import VtsLegendList from '@core/components/legend-list/VtsLegendList.vue'
17
17
  import UiLegend from '@core/components/ui/legend/UiLegend.vue'
18
- import { toVariants } from '@core/utils/to-variants.util'
18
+ import { toVariants } from '@core/utils/to-variants.util.ts'
19
19
  import { computed } from 'vue'
20
20
 
21
21
  export type ProgressBarAccent = 'info' | 'warning' | 'danger'
@@ -30,8 +30,8 @@
30
30
  import UiButton from '@core/components/ui/button/UiButton.vue'
31
31
  import UiButtonIcon from '@core/components/ui/button-icon/UiButtonIcon.vue'
32
32
  import UiInput from '@core/components/ui/input/UiInput.vue'
33
- import { useUiStore } from '@core/stores/ui.store'
34
- import { uniqueId } from '@core/utils/unique-id.util'
33
+ import { useUiStore } from '@core/stores/ui.store.ts'
34
+ import { uniqueId } from '@core/utils/unique-id.util.ts'
35
35
  import { ref } from 'vue'
36
36
  import { useI18n } from 'vue-i18n'
37
37
 
@@ -16,7 +16,7 @@
16
16
  import VtsQuickTaskList from '@core/components/task/VtsQuickTaskList.vue'
17
17
  import VtsQuickTaskTabBar, { type TaskTab } from '@core/components/task/VtsQuickTaskTabBar.vue'
18
18
  import type { Task } from '@core/components/ui/task-item/UiTaskItem.vue'
19
- import { useUiStore } from '@core/stores/ui.store'
19
+ import { useUiStore } from '@core/stores/ui.store.ts'
20
20
  import { computed, ref } from 'vue'
21
21
 
22
22
  const props = defineProps<{
@@ -11,8 +11,8 @@
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'
15
- import { toVariants } from '@core/utils/to-variants.util'
14
+ import { useDisabled } from '@core/composables/disabled.composable.ts'
15
+ import { toVariants } from '@core/utils/to-variants.util.ts'
16
16
  import { computed } from 'vue'
17
17
 
18
18
  const { accent, value, disabled } = defineProps<{
@@ -13,8 +13,8 @@
13
13
  </template>
14
14
 
15
15
  <script lang="ts" setup>
16
- import { vTooltip } from '@core/directives/tooltip.directive'
17
- import { hasEllipsis } from '@core/utils/has-ellipsis.util'
16
+ import { vTooltip } from '@core/directives/tooltip.directive.ts'
17
+ import { hasEllipsis } from '@core/utils/has-ellipsis.util.ts'
18
18
  import { useResizeObserver } from '@vueuse/core'
19
19
  import { ref } from 'vue'
20
20
  import { useI18n } from 'vue-i18n'
@@ -12,7 +12,7 @@
12
12
 
13
13
  <script lang="ts" setup>
14
14
  import StackedBarSegment, { type StackedBarSegmentProps } from '@core/components/ui/stacked-bar/StackedBarSegment.vue'
15
- import { formatSizeParse } from '@core/utils/size.util'
15
+ import { formatSizeParse } from '@core/utils/size.util.ts'
16
16
  import { computed } from 'vue'
17
17
 
18
18
  type Segment = {
@@ -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
  export type TagAccent = 'info' | 'neutral' | 'success' | 'warning' | 'danger' | 'muted'
@@ -63,7 +63,7 @@ import UiInfo from '@core/components/ui/info/UiInfo.vue'
63
63
  import UiLink from '@core/components/ui/link/UiLink.vue'
64
64
  import UiTaskList from '@core/components/ui/task-list/UiTaskList.vue'
65
65
  import { useTimeAgo } from '@core/composables/locale-time-ago.composable.ts'
66
- import { vTooltip } from '@core/directives/tooltip.directive'
66
+ import { vTooltip } from '@core/directives/tooltip.directive.ts'
67
67
  import type { TaskObjectSegment, TaskStatus } from '@core/types/task.type.ts'
68
68
  import { logicOr } from '@vueuse/math'
69
69
  import { computed } from 'vue'
@@ -22,7 +22,7 @@
22
22
  import UiCharacterLimit from '@core/components/ui/character-limit/UiCharacterLimit.vue'
23
23
  import UiInfo from '@core/components/ui/info/UiInfo.vue'
24
24
  import UiLabel from '@core/components/ui/label/UiLabel.vue'
25
- import { toVariants } from '@core/utils/to-variants.util'
25
+ import { toVariants } from '@core/utils/to-variants.util.ts'
26
26
  import { useFocus } from '@vueuse/core'
27
27
  import { computed, useAttrs, useId, useTemplateRef } from 'vue'
28
28
  import { useI18n } from 'vue-i18n'
@@ -24,7 +24,7 @@ import VtsIcon from '@core/components/icon/VtsIcon.vue'
24
24
  import UiButtonIcon from '@core/components/ui/button-icon/UiButtonIcon.vue'
25
25
  import type { IconName } from '@core/icons'
26
26
  import { useMapper } from '@core/packages/mapper'
27
- import { toVariants } from '@core/utils/to-variants.util'
27
+ import { toVariants } from '@core/utils/to-variants.util.ts'
28
28
 
29
29
  type ToasterAccent = 'info' | 'success' | 'warning' | 'danger'
30
30
 
@@ -13,7 +13,7 @@
13
13
 
14
14
  <script lang="ts" setup>
15
15
  import UiLoader from '@core/components/ui/loader/UiLoader.vue'
16
- import { useDisabled } from '@core/composables/disabled.composable'
16
+ import { useDisabled } from '@core/composables/disabled.composable.ts'
17
17
 
18
18
  const { busy, disabled } = defineProps<{
19
19
  disabled?: boolean
@@ -6,8 +6,8 @@
6
6
  </template>
7
7
 
8
8
  <script lang="ts" setup>
9
- import type { TooltipOptions } from '@core/stores/tooltip.store'
10
- import { hasEllipsis } from '@core/utils/has-ellipsis.util'
9
+ import type { TooltipOptions } from '@core/stores/tooltip.store.ts'
10
+ import { hasEllipsis } from '@core/utils/has-ellipsis.util.ts'
11
11
  import { isString } from 'lodash-es'
12
12
  import place from 'placement.js'
13
13
  import { computed, ref, watch, watchEffect } from 'vue'
@@ -9,17 +9,19 @@
9
9
  <template v-if="depth > 1">
10
10
  <VtsTreeLine v-for="i in depth - 1" :key="i" />
11
11
  </template>
12
- <UiButtonIcon
13
- v-if="hasToggle"
14
- v-tooltip="isExpanded ? t('action:close') : t('action:open')"
15
- class="toggle"
16
- accent="brand"
17
- :icon="isExpanded ? 'fa:angle-down' : 'fa:angle-right'"
18
- size="small"
19
- :target-scale="{ x: 1.5, y: 2 }"
20
- @click="emit('toggle')"
21
- />
22
- <div v-else class="h-line" />
12
+ <div class="toggle-wrapper">
13
+ <UiButtonIcon
14
+ v-if="hasToggle"
15
+ v-tooltip="isExpanded ? t('action:close') : t('action:open')"
16
+ class="toggle"
17
+ accent="brand"
18
+ :icon="isExpanded ? 'fa:angle-down' : 'fa:angle-right'"
19
+ size="small"
20
+ :target-scale="{ x: 1.5, y: 2 }"
21
+ @click="emit('toggle')"
22
+ />
23
+ <div v-else class="h-line" />
24
+ </div>
23
25
  <a :href class="link typo-body-bold-small" @click="navigate">
24
26
  <slot name="icon">
25
27
  <VtsIcon :name="icon" size="medium" class="icon" />
@@ -28,7 +30,9 @@
28
30
  <slot />
29
31
  </div>
30
32
  </a>
31
- <slot name="addons" />
33
+ <div class="addons-wrapper">
34
+ <slot name="addons" />
35
+ </div>
32
36
  </div>
33
37
  </RouterLink>
34
38
  </template>
@@ -37,9 +41,13 @@
37
41
  import VtsIcon from '@core/components/icon/VtsIcon.vue'
38
42
  import VtsTreeLine from '@core/components/tree/VtsTreeLine.vue'
39
43
  import UiButtonIcon from '@core/components/ui/button-icon/UiButtonIcon.vue'
40
- import { vTooltip } from '@core/directives/tooltip.directive'
44
+ import { vTooltip } from '@core/directives/tooltip.directive.ts'
41
45
  import type { IconName } from '@core/icons'
42
- import { IK_TREE_ITEM_EXPANDED, IK_TREE_ITEM_HAS_CHILDREN, IK_TREE_LIST_DEPTH } from '@core/utils/injection-keys.util'
46
+ import {
47
+ IK_TREE_ITEM_EXPANDED,
48
+ IK_TREE_ITEM_HAS_CHILDREN,
49
+ IK_TREE_LIST_DEPTH,
50
+ } from '@core/utils/injection-keys.util.ts'
43
51
  import { inject, ref, useAttrs } from 'vue'
44
52
  import { useI18n } from 'vue-i18n'
45
53
  import type { RouteLocationRaw } from 'vue-router'
@@ -86,6 +94,13 @@ const depth = inject(IK_TREE_LIST_DEPTH, ref(0))
86
94
  padding: 0 0.8rem;
87
95
  margin-bottom: 0.2rem;
88
96
 
97
+ .toggle-wrapper {
98
+ width: 2.4rem;
99
+ flex-shrink: 0;
100
+ display: flex;
101
+ align-items: center;
102
+ }
103
+
89
104
  .link {
90
105
  display: flex;
91
106
  align-items: center;
@@ -108,10 +123,19 @@ const depth = inject(IK_TREE_LIST_DEPTH, ref(0))
108
123
  .icon {
109
124
  font-size: 1.6rem;
110
125
  }
126
+ .addons-wrapper {
127
+ display: flex;
128
+ align-items: center;
129
+ gap: 0.4rem;
130
+ flex-shrink: 0;
131
+ }
132
+
133
+ .toggle {
134
+ width: 100%;
135
+ }
111
136
 
112
137
  .h-line {
113
- width: 2rem;
114
- margin-left: -0.4rem;
138
+ width: 100%;
115
139
  }
116
140
 
117
141
  /* INTERACTION VARIANTS */
@@ -12,7 +12,7 @@
12
12
 
13
13
  <script lang="ts" setup>
14
14
  import UiUserLogo from '@core/components/ui/user-logo/UiUserLogo.vue'
15
- import { toVariants } from '@core/utils/to-variants.util'
15
+ import { toVariants } from '@core/utils/to-variants.util.ts'
16
16
  import { type RouteLocationRaw } from 'vue-router'
17
17
 
18
18
  defineProps<{
@@ -4,7 +4,7 @@
4
4
  </template>
5
5
 
6
6
  <script lang="ts" setup>
7
- import { toVariants } from '@core/utils/to-variants.util'
7
+ import { toVariants } from '@core/utils/to-variants.util.ts'
8
8
 
9
9
  export type UserLogoSize = 'extra-small' | 'small' | 'medium'
10
10
 
@@ -1,26 +1,26 @@
1
1
  <template>
2
- <VtsModal accent="info" icon="status:info-picto" dismissible>
2
+ <UiModal accent="info" icon="status:info-picto" @confirm="emit('confirm')" @dismiss="emit('cancel')">
3
3
  <template #title>
4
4
  {{ connection.title }}
5
5
  </template>
6
6
 
7
- <template v-if="action === CONNECTION_ACTION.DISCONNECT" #content>
8
- {{ t('vif-disconnect-info') }}
7
+ <template #content>
8
+ <template v-if="action === CONNECTION_ACTION.DISCONNECT">{{ t('vif-disconnect-info') }}</template>
9
9
  </template>
10
10
 
11
11
  <template #buttons>
12
- <VtsModalCancelButton>{{ t('action:go-back') }}</VtsModalCancelButton>
13
- <VtsModalConfirmButton>
12
+ <VtsOverlayCancelButton @click="emit('cancel')">{{ t('action:go-back') }}</VtsOverlayCancelButton>
13
+ <VtsOverlayConfirmButton>
14
14
  {{ connection.action }}
15
- </VtsModalConfirmButton>
15
+ </VtsOverlayConfirmButton>
16
16
  </template>
17
- </VtsModal>
17
+ </UiModal>
18
18
  </template>
19
19
 
20
20
  <script lang="ts" setup>
21
- import VtsModal from '@core/components/modal/VtsModal.vue'
22
- import VtsModalCancelButton from '@core/components/modal/VtsModalCancelButton.vue'
23
- import VtsModalConfirmButton from '@core/components/modal/VtsModalConfirmButton.vue'
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
24
  import { useMapper } from '@core/packages/mapper'
25
25
  import { CONNECTION_ACTION, type ConnectionAction } from '@core/types/connection.ts'
26
26
  import { useI18n } from 'vue-i18n'
@@ -30,6 +30,11 @@ const { action, count } = defineProps<{
30
30
  count: number
31
31
  }>()
32
32
 
33
+ const emit = defineEmits<{
34
+ confirm: []
35
+ cancel: []
36
+ }>()
37
+
33
38
  const { t } = useI18n()
34
39
 
35
40
  const connection = useMapper(
@@ -1,4 +1,4 @@
1
- import { useUiStore } from '@core/stores/ui.store'
1
+ import { useUiStore } from '@core/stores/ui.store.ts'
2
2
  import { storeToRefs, type Pinia } from 'pinia'
3
3
  import { computed, provide, ref, watch } from 'vue'
4
4
  import { THEME_KEY } from 'vue-echarts'
@@ -1,4 +1,4 @@
1
- import { toComputed } from '@core/utils/to-computed.util'
1
+ import { toComputed } from '@core/utils/to-computed.util.ts'
2
2
  import type { ComputedRef, InjectionKey, MaybeRefOrGetter } from 'vue'
3
3
  import { inject, provide, toValue } from 'vue'
4
4
 
@@ -0,0 +1,6 @@
1
+ import { useClipboard } from '@vueuse/core'
2
+ import type { MaybeRefOrGetter } from 'vue'
3
+
4
+ export function useCopyToClipboard(source: MaybeRefOrGetter<string>) {
5
+ return useClipboard({ source, legacy: true })
6
+ }
@@ -21,7 +21,7 @@ export function useDefaultTab(dispatcherRouteName: RouteRecordName & string, def
21
21
  if (name === dispatcherRouteName) {
22
22
  const isSameDispatcher = localStorage.getItem(TAB_MEMORY_DISPATCHER) === dispatcherRouteName
23
23
  const tabName = (isSameDispatcher ? localStorage.getItem(TAB_MEMORY_LAST) : null) ?? defaultTab
24
- void router.replace({ name: `${dispatcherRouteName}/${tabName}` } as RouteLocationRaw)
24
+ void router.replace({ name: `${dispatcherRouteName}/${tabName}`, query: route.query } as RouteLocationRaw)
25
25
  } else if (!name.startsWith(dispatcherRouteName)) {
26
26
  return
27
27
  }
@@ -1,4 +1,4 @@
1
- import { IK_DISABLED } from '@core/utils/injection-keys.util'
1
+ import { IK_DISABLED } from '@core/utils/injection-keys.util.ts'
2
2
  import { computed, inject, type MaybeRefOrGetter, provide, toValue } from 'vue'
3
3
 
4
4
  export function useDisabled(condition?: MaybeRefOrGetter<boolean>) {
@@ -1,4 +1,4 @@
1
- import { useRouteQuery } from '@core/composables/route-query.composable'
1
+ import { useRouteQuery } from '@core/composables/route-query.composable.ts'
2
2
 
3
3
  export function useHideRouteQuery(id: string) {
4
4
  return useRouteQuery(id, {
@@ -1,4 +1,4 @@
1
- import { toComputed } from '@core/utils/to-computed.util'
1
+ import { toComputed } from '@core/utils/to-computed.util.ts'
2
2
  import type { MaybeRefOrGetter } from 'vue'
3
3
  import { computed } from 'vue'
4
4
  import type { RouteLocationAsPathGeneric, RouteLocationAsRelativeGeneric, RouteLocationAsString } from 'vue-router'
@@ -0,0 +1,11 @@
1
+ import { useOverlay } from '@core/packages/overlay/use-overlay.ts'
2
+
3
+ export function useActionModal() {
4
+ return useOverlay({
5
+ component: () => import('@core/components/modal/VtsActionModal.vue'),
6
+ events: {
7
+ onConfirm: true,
8
+ onCancel: true,
9
+ },
10
+ })
11
+ }
@@ -0,0 +1,10 @@
1
+ import { useOverlay } from '@core/packages/overlay/use-overlay.ts'
2
+
3
+ export function useBlockedModal() {
4
+ return useOverlay({
5
+ component: () => import('@core/components/modal/VtsBlockedModal.vue'),
6
+ events: {
7
+ onClose: true,
8
+ },
9
+ })
10
+ }
@@ -0,0 +1,11 @@
1
+ import { useOverlay } from '@core/packages/overlay/use-overlay.ts'
2
+
3
+ export function useDeleteModal() {
4
+ return useOverlay({
5
+ component: () => import('@core/components/modal/VtsDeleteModal.vue'),
6
+ events: {
7
+ onConfirm: true,
8
+ onCancel: true,
9
+ },
10
+ })
11
+ }
@@ -1,7 +1,7 @@
1
1
  import type { TablePaginationSize } from '@core/components/ui/table-pagination/UiTablePagination.vue'
2
- import { useRouteQuery } from '@core/composables/route-query.composable'
2
+ import { useRouteQuery } from '@core/composables/route-query.composable.ts'
3
3
  import { useUiStore } from '@core/stores/ui.store.ts'
4
- import { toComputed } from '@core/utils/to-computed.util'
4
+ import { toComputed } from '@core/utils/to-computed.util.ts'
5
5
  import { clamp, useLocalStorage } from '@vueuse/core'
6
6
  import { computed, type MaybeRefOrGetter } from 'vue'
7
7
 
@@ -1,4 +1,4 @@
1
- import type { EmptyObject } from '@core/types/utility.type'
1
+ import type { EmptyObject } from '@core/types/utility.type.ts'
2
2
  import type { WritableComputedRef } from 'vue'
3
3
 
4
4
  export type Options = {
@@ -1,8 +1,8 @@
1
- import { handleAdd } from '@core/composables/route-query/actions/handle-add'
2
- import { handleDelete } from '@core/composables/route-query/actions/handle-delete'
3
- import { handleSet } from '@core/composables/route-query/actions/handle-set'
4
- import { handleToggle } from '@core/composables/route-query/actions/handle-toggle'
5
- import type { Actions, Options, RouteQuery, Transformers } from '@core/composables/route-query/types'
1
+ import { handleAdd } from '@core/composables/route-query/actions/handle-add.ts'
2
+ import { handleDelete } from '@core/composables/route-query/actions/handle-delete.ts'
3
+ import { handleSet } from '@core/composables/route-query/actions/handle-set.ts'
4
+ import { handleToggle } from '@core/composables/route-query/actions/handle-toggle.ts'
5
+ import type { Actions, Options, RouteQuery, Transformers } from '@core/composables/route-query/types.ts'
6
6
  import { extendRef } from '@vueuse/core'
7
7
  import { computed } from 'vue'
8
8
  import { useRoute, useRouter } from 'vue-router'
@@ -1,4 +1,4 @@
1
- import { useRouteQuery } from '@core/composables/route-query.composable'
1
+ import { useRouteQuery } from '@core/composables/route-query.composable.ts'
2
2
 
3
3
  export function useSortRouteQuery(id: string) {
4
4
  return useRouteQuery(id, {
@@ -1,4 +1,4 @@
1
- import type { Tab, TabList } from '@core/types/tab.type'
1
+ import type { Tab, TabList } from '@core/types/tab.type.ts'
2
2
  import { computed, type MaybeRefOrGetter, type Ref, toRef } from 'vue'
3
3
 
4
4
  export function useTabList<TName extends string>(names: TName[], initialTab?: MaybeRefOrGetter<TName>) {
@@ -1,4 +1,4 @@
1
- import type { BaseDefinition, ColumnOptions } from '@core/composables/table/type'
1
+ import type { BaseDefinition, ColumnOptions } from '@core/composables/table/type.ts'
2
2
 
3
3
  export function createBaseDefinition<TId extends string, TRecord>(
4
4
  columnId: TId,