@xen-orchestra/web-core 0.58.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 (220) 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-button/VtsCopyButton.vue +1 -1
  9. package/lib/components/delete-button/VtsDeleteButton.vue +1 -1
  10. package/lib/components/icon/VtsIcon.vue +1 -1
  11. package/lib/components/input-wrapper/VtsInputWrapper.vue +3 -3
  12. package/lib/components/key-value-pair/VtsKeyValuePair.vue +1 -1
  13. package/lib/components/layout/VtsContentSidePanel.vue +2 -2
  14. package/lib/components/linear-chart/VtsLinearChart.vue +1 -1
  15. package/lib/components/menu/MenuItem.vue +2 -2
  16. package/lib/components/menu/MenuList.vue +2 -2
  17. package/lib/components/menu/MenuSeparator.vue +1 -1
  18. package/lib/components/modal/VtsActionModal.vue +52 -13
  19. package/lib/components/modal/VtsBlockedModal.vue +7 -7
  20. package/lib/components/modal/VtsDeleteModal.vue +20 -15
  21. package/lib/components/modal/VtsErrorModal.vue +10 -6
  22. package/lib/components/panel/VtsPanel.vue +1 -1
  23. package/lib/components/panel/VtsSidePanel.vue +3 -3
  24. package/lib/components/query-builder/VtsQueryBuilder.vue +3 -3
  25. package/lib/components/query-builder/VtsQueryBuilderButton.vue +17 -11
  26. package/lib/components/query-builder/VtsQueryBuilderFilter.vue +1 -1
  27. package/lib/components/query-builder/VtsQueryBuilderGroup.vue +1 -1
  28. package/lib/components/query-builder/VtsQueryBuilderModal.vue +13 -8
  29. package/lib/components/query-builder/VtsQueryBuilderRow.vue +1 -1
  30. package/lib/components/relative-time/VtsRelativeTime.vue +2 -2
  31. package/lib/components/space-card/VtsSpaceCard.vue +11 -7
  32. package/lib/components/sr-connection-modal/VtsSrConnectionModal.vue +77 -0
  33. package/lib/components/stacked-bar-with-legend/VtsStackedBarWithLegend.vue +1 -1
  34. package/lib/components/state-hero/VtsStateHero.vue +1 -1
  35. package/lib/components/status/VtsStatus.vue +1 -1
  36. package/lib/components/tab/TabItem.vue +2 -2
  37. package/lib/components/tab/TabList.vue +1 -1
  38. package/lib/components/table/VtsTable.vue +3 -3
  39. package/lib/components/table/cells/VtsCollapsedListCell.vue +1 -1
  40. package/lib/components/table/cells/VtsLinkCell.vue +2 -2
  41. package/lib/components/table/cells/VtsStatusCell.vue +3 -3
  42. package/lib/components/table/cells/VtsTagCell.vue +2 -2
  43. package/lib/components/table/cells/VtsTextCell.vue +1 -1
  44. package/lib/components/tag/VtsTag.vue +1 -1
  45. package/lib/components/task/VtsQuickTaskButton.vue +1 -1
  46. package/lib/components/task/VtsQuickTaskTabBar.vue +1 -1
  47. package/lib/components/tooltip-list/VtsTooltipList.vue +1 -1
  48. package/lib/components/tree/VtsTreeList.vue +1 -1
  49. package/lib/components/tree/VtsTreeLoadingItem.vue +1 -1
  50. package/lib/components/ui/account-menu-button/UiAccountMenuButton.vue +1 -1
  51. package/lib/components/ui/alarm-item/UiAlarmItem.vue +2 -2
  52. package/lib/components/ui/alert/UiAlert.vue +1 -1
  53. package/lib/components/ui/button/UiButton.vue +2 -2
  54. package/lib/components/ui/button-icon/UiButtonIcon.vue +1 -1
  55. package/lib/components/ui/card-numbers/UiCardNumbers.vue +1 -1
  56. package/lib/components/ui/checkbox/UiCheckbox.vue +2 -2
  57. package/lib/components/ui/chip/UiChip.vue +1 -1
  58. package/lib/components/ui/counter/UiCounter.vue +1 -1
  59. package/lib/components/ui/drawer/UiDrawer.vue +37 -54
  60. package/lib/components/ui/dropdown/UiDropdown.vue +2 -2
  61. package/lib/components/ui/dropdown-button/UiDropdownButton.vue +1 -1
  62. package/lib/components/ui/head-bar/UiHeadBar.vue +1 -1
  63. package/lib/components/ui/info/UiInfo.vue +1 -1
  64. package/lib/components/ui/input/UiInput.vue +2 -2
  65. package/lib/components/ui/label/UiLabel.vue +1 -1
  66. package/lib/components/ui/legend/UiLegend.vue +2 -2
  67. package/lib/components/ui/legend-title/UiLegendTitle.vue +1 -1
  68. package/lib/components/ui/link/UiLink.vue +2 -2
  69. package/lib/components/ui/loader/UiLoader.vue +1 -1
  70. package/lib/components/ui/modal/UiModal.vue +17 -5
  71. package/lib/components/ui/object-link/UiObjectLink.vue +1 -1
  72. package/lib/components/ui/panel-card/UiPanelCard.vue +20 -0
  73. package/lib/components/ui/progress-bar/UiProgressBar.vue +1 -1
  74. package/lib/components/ui/query-search-bar/UiQuerySearchBar.vue +2 -2
  75. package/lib/components/ui/quick-task-panel/UiQuickTaskPanel.vue +1 -1
  76. package/lib/components/ui/radio-button/UiRadioButton.vue +2 -2
  77. package/lib/components/ui/stacked-bar/StackedBarSegment.vue +2 -2
  78. package/lib/components/ui/stacked-bar/UiStackedBar.vue +1 -1
  79. package/lib/components/ui/tag/UiTag.vue +1 -1
  80. package/lib/components/ui/task-item/UiTaskItem.vue +1 -1
  81. package/lib/components/ui/text-area/UiTextarea.vue +1 -1
  82. package/lib/components/ui/toaster/UiToaster.vue +1 -1
  83. package/lib/components/ui/toggle/UiToggle.vue +1 -1
  84. package/lib/components/ui/tooltip/UiTooltip.vue +2 -2
  85. package/lib/components/ui/tree-item-label/UiTreeItemLabel.vue +6 -2
  86. package/lib/components/ui/user-link/UiUserLink.vue +1 -1
  87. package/lib/components/ui/user-logo/UiUserLogo.vue +1 -1
  88. package/lib/components/{vif-connection-toggle-modal/VtsVifConnectionToggleModal.vue → vif-connection-modal/VtsVifConnectionModal.vue} +15 -10
  89. package/lib/composables/chart-theme.composable.ts +1 -1
  90. package/lib/composables/context.composable.ts +1 -1
  91. package/lib/composables/default-tab.composable.ts +1 -1
  92. package/lib/composables/disabled.composable.ts +1 -1
  93. package/lib/composables/hide-route-query.composable.ts +1 -1
  94. package/lib/composables/link-component.composable.ts +1 -1
  95. package/lib/composables/modals/use-action-modal.ts +11 -0
  96. package/lib/composables/modals/use-blocked-modal.ts +10 -0
  97. package/lib/composables/modals/use-delete-modal.ts +11 -0
  98. package/lib/composables/pagination.composable.ts +2 -2
  99. package/lib/composables/route-query/types.ts +1 -1
  100. package/lib/composables/route-query.composable.ts +5 -5
  101. package/lib/composables/sort-route-query.composable.ts +1 -1
  102. package/lib/composables/tab-list.composable.ts +1 -1
  103. package/lib/composables/table/create-base-definition.ts +1 -1
  104. package/lib/composables/table/create-define-column.ts +6 -6
  105. package/lib/composables/table/create-sorting-definition.ts +2 -2
  106. package/lib/composables/table/create-visibility-definition.ts +2 -2
  107. package/lib/composables/table/type.ts +1 -1
  108. package/lib/composables/table.composable.ts +4 -4
  109. package/lib/composables/tree-filter.composable.ts +1 -1
  110. package/lib/directives/tooltip.directive.ts +2 -2
  111. package/lib/icons/index.ts +1 -1
  112. package/lib/locales/cs.json +0 -4
  113. package/lib/locales/de.json +0 -2
  114. package/lib/locales/en.json +83 -9
  115. package/lib/locales/es.json +0 -1
  116. package/lib/locales/fr.json +87 -13
  117. package/lib/locales/nb-NO.json +0 -1
  118. package/lib/locales/nl.json +0 -4
  119. package/lib/locales/pt.json +0 -1
  120. package/lib/locales/sk.json +0 -4
  121. package/lib/locales/sv.json +0 -2
  122. package/lib/locales/zh-Hans.json +0 -4
  123. package/lib/packages/form-select/use-form-select-controller.ts +1 -1
  124. package/lib/packages/job/define-job.ts +5 -5
  125. package/lib/packages/job/index.ts +4 -4
  126. package/lib/packages/job/use-job-store.ts +2 -2
  127. package/lib/packages/menu/action.ts +1 -1
  128. package/lib/packages/menu/context.ts +1 -1
  129. package/lib/packages/menu/index.ts +10 -10
  130. package/lib/packages/menu/job.ts +3 -3
  131. package/lib/packages/menu/link.ts +1 -1
  132. package/lib/packages/menu/router-link.ts +1 -1
  133. package/lib/packages/menu/toggle-target.ts +1 -1
  134. package/lib/packages/query-builder/group/build-root-group.ts +1 -1
  135. package/lib/packages/query-builder/node/handle-comparison-node.ts +1 -1
  136. package/lib/packages/query-builder/node/handle-glob-pattern-node.ts +1 -1
  137. package/lib/packages/query-builder/node/handle-group-node.ts +2 -2
  138. package/lib/packages/query-builder/node/handle-node.ts +8 -8
  139. package/lib/packages/query-builder/node/handle-null-node.ts +1 -1
  140. package/lib/packages/query-builder/node/handle-property-group-node.ts +2 -2
  141. package/lib/packages/query-builder/node/handle-property-node.ts +8 -8
  142. package/lib/packages/query-builder/node/handle-regexp-node.ts +1 -1
  143. package/lib/packages/query-builder/node/handle-string-or-number-node.ts +2 -2
  144. package/lib/packages/query-builder/node/handle-truthy-property-node.ts +1 -1
  145. package/lib/packages/query-builder/use-query-builder.ts +2 -2
  146. package/lib/packages/remote-resource/define-remote-resource.ts +1 -1
  147. package/lib/packages/threshold/use-threshold.ts +1 -1
  148. package/lib/packages/tree/branch-definition.ts +2 -2
  149. package/lib/packages/tree/branch.ts +8 -2
  150. package/lib/packages/tree/build-nodes.ts +3 -3
  151. package/lib/packages/tree/define-branch.ts +2 -2
  152. package/lib/packages/tree/define-leaf.ts +2 -2
  153. package/lib/packages/tree/define-tree.ts +3 -3
  154. package/lib/packages/tree/leaf-definition.ts +1 -1
  155. package/lib/packages/tree/leaf.ts +2 -2
  156. package/lib/packages/tree/tree-node-base.ts +2 -2
  157. package/lib/packages/tree/tree-node-definition-base.ts +1 -1
  158. package/lib/packages/tree/types.ts +6 -6
  159. package/lib/packages/tree/use-tree.ts +2 -2
  160. package/lib/stores/panel.store.ts +1 -1
  161. package/lib/stores/tooltip.store.ts +2 -2
  162. package/lib/tables/column-definitions/action-column.ts +2 -2
  163. package/lib/tables/column-definitions/button-column.ts +3 -3
  164. package/lib/tables/column-definitions/button-icon-column.ts +2 -2
  165. package/lib/tables/column-definitions/date-column.ts +3 -3
  166. package/lib/tables/column-definitions/info-column.ts +3 -3
  167. package/lib/tables/column-definitions/input-column.ts +3 -3
  168. package/lib/tables/column-definitions/link-column.ts +2 -2
  169. package/lib/tables/column-definitions/literal-column.ts +3 -3
  170. package/lib/tables/column-definitions/number-column.ts +2 -2
  171. package/lib/tables/column-definitions/percent-column.ts +2 -2
  172. package/lib/tables/column-definitions/progress-bar-column.ts +2 -2
  173. package/lib/tables/column-definitions/select-column.ts +2 -2
  174. package/lib/tables/column-definitions/status-column.ts +2 -2
  175. package/lib/tables/column-definitions/tag-column.ts +3 -3
  176. package/lib/tables/column-sets/backup-issue-columns.ts +1 -1
  177. package/lib/tables/column-sets/backup-job-columns.ts +1 -1
  178. package/lib/tables/column-sets/backup-job-schedule-columns.ts +1 -1
  179. package/lib/tables/column-sets/backup-log-columns.ts +1 -1
  180. package/lib/tables/column-sets/host-columns.ts +3 -3
  181. package/lib/tables/column-sets/network-columns.ts +2 -2
  182. package/lib/tables/column-sets/pif-columns.ts +2 -2
  183. package/lib/tables/column-sets/server-columns.ts +1 -1
  184. package/lib/tables/column-sets/sr-columns.ts +3 -3
  185. package/lib/tables/column-sets/vdi-columns.ts +2 -0
  186. package/lib/tables/column-sets/vif-columns.ts +1 -1
  187. package/lib/tables/column-sets/vif-network-columns.ts +1 -1
  188. package/lib/tables/column-sets/vm-backup-archive-columns.ts +3 -3
  189. package/lib/tables/column-sets/vm-backup-run-colums.ts +2 -2
  190. package/lib/tables/column-sets/vm-columns.ts +1 -1
  191. package/lib/types/object.type.ts +10 -1
  192. package/lib/utils/create-subscribable-store-context.util.ts +2 -2
  193. package/lib/utils/download-bugtools.utils.ts +1 -1
  194. package/lib/utils/if-else.utils.ts +2 -2
  195. package/lib/utils/injection-keys.util.ts +0 -2
  196. package/lib/utils/progress.util.ts +1 -1
  197. package/lib/utils/to-array.utils.ts +1 -1
  198. package/package.json +1 -1
  199. package/lib/components/drawer/VtsDrawer.vue +0 -89
  200. package/lib/components/drawer/VtsDrawerButton.vue +0 -22
  201. package/lib/components/drawer/VtsDrawerCancelButton.vue +0 -33
  202. package/lib/components/drawer/VtsDrawerConfirmButton.vue +0 -32
  203. package/lib/components/drawer/VtsDrawerList.vue +0 -34
  204. package/lib/components/modal/VtsModal.vue +0 -82
  205. package/lib/components/modal/VtsModalButton.vue +0 -35
  206. package/lib/components/modal/VtsModalCancelButton.vue +0 -37
  207. package/lib/components/modal/VtsModalConfirmButton.vue +0 -21
  208. package/lib/components/modal/VtsModalList.vue +0 -34
  209. package/lib/packages/drawer/DrawerProvider.vue +0 -17
  210. package/lib/packages/drawer/README.md +0 -189
  211. package/lib/packages/drawer/create-drawer-opener.ts +0 -119
  212. package/lib/packages/drawer/drawer.store.ts +0 -22
  213. package/lib/packages/drawer/types.ts +0 -93
  214. package/lib/packages/drawer/use-drawer.ts +0 -53
  215. package/lib/packages/modal/ModalProvider.vue +0 -17
  216. package/lib/packages/modal/README.md +0 -253
  217. package/lib/packages/modal/create-modal-opener.ts +0 -106
  218. package/lib/packages/modal/modal.store.ts +0 -22
  219. package/lib/packages/modal/types.ts +0 -91
  220. package/lib/packages/modal/use-modal.ts +0 -53
@@ -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<{
@@ -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 = {