@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.
- package/lib/components/card/VtsCardRowKeyValue.vue +1 -1
- package/lib/components/cell-object/VtsCellObject.vue +1 -1
- package/lib/components/cell-text/VtsCellText.vue +1 -1
- package/lib/components/console/VtsActionsConsole.vue +1 -1
- package/lib/components/console/VtsClipboardConsole.vue +1 -1
- package/lib/components/console/VtsLayoutConsole.vue +1 -1
- package/lib/components/console/VtsRemoteConsole.vue +1 -1
- package/lib/components/copy-all-menu-item/VtsCopyAllMenuItem.vue +48 -0
- package/lib/components/copy-button/VtsCopyButton.vue +3 -3
- package/lib/components/delete-button/VtsDeleteButton.vue +1 -1
- package/lib/components/icon/VtsIcon.vue +1 -1
- package/lib/components/input-wrapper/VtsInputWrapper.vue +3 -3
- package/lib/components/key-value-pair/VtsKeyValuePair.vue +1 -1
- package/lib/components/layout/VtsContentSidePanel.vue +2 -2
- package/lib/components/linear-chart/VtsLinearChart.vue +1 -1
- package/lib/components/menu/MenuItem.vue +2 -2
- package/lib/components/menu/MenuList.vue +2 -2
- package/lib/components/menu/MenuSeparator.vue +1 -1
- package/lib/components/modal/VtsActionModal.vue +52 -13
- package/lib/components/modal/VtsBlockedModal.vue +7 -7
- package/lib/components/modal/VtsDeleteModal.vue +20 -15
- package/lib/components/modal/VtsErrorModal.vue +10 -6
- package/lib/components/overlay/VtsOverlayList.vue +2 -2
- package/lib/components/panel/VtsPanel.vue +1 -1
- package/lib/components/panel/VtsSidePanel.vue +3 -3
- package/lib/components/query-builder/VtsQueryBuilder.vue +3 -3
- package/lib/components/query-builder/VtsQueryBuilderButton.vue +17 -11
- package/lib/components/query-builder/VtsQueryBuilderFilter.vue +1 -1
- package/lib/components/query-builder/VtsQueryBuilderGroup.vue +1 -1
- package/lib/components/query-builder/VtsQueryBuilderModal.vue +13 -8
- package/lib/components/query-builder/VtsQueryBuilderRow.vue +1 -1
- package/lib/components/relative-time/VtsRelativeTime.vue +2 -2
- package/lib/components/space-card/VtsSpaceCard.vue +11 -7
- package/lib/components/sr-connection-modal/VtsSrConnectionModal.vue +77 -0
- package/lib/components/stacked-bar-with-legend/VtsStackedBarWithLegend.vue +1 -1
- package/lib/components/state-hero/VtsStateHero.vue +1 -1
- package/lib/components/status/VtsStatus.vue +1 -1
- package/lib/components/tab/TabItem.vue +2 -2
- package/lib/components/tab/TabList.vue +1 -1
- package/lib/components/table/VtsTable.vue +3 -3
- package/lib/components/table/cells/VtsCollapsedListCell.vue +1 -1
- package/lib/components/table/cells/VtsLinkCell.vue +2 -2
- package/lib/components/table/cells/VtsStatusCell.vue +3 -3
- package/lib/components/table/cells/VtsTagCell.vue +2 -2
- package/lib/components/table/cells/VtsTextCell.vue +1 -1
- package/lib/components/tag/VtsTag.vue +1 -1
- package/lib/components/task/VtsQuickTaskButton.vue +1 -1
- package/lib/components/task/VtsQuickTaskTabBar.vue +1 -1
- package/lib/components/tooltip-list/VtsTooltipList.vue +1 -1
- package/lib/components/tree/VtsTreeList.vue +1 -1
- package/lib/components/tree/VtsTreeLoadingItem.vue +1 -1
- package/lib/components/ui/account-menu-button/UiAccountMenuButton.vue +1 -1
- package/lib/components/ui/alarm-item/UiAlarmItem.vue +2 -2
- package/lib/components/ui/alert/UiAlert.vue +1 -1
- package/lib/components/ui/button/UiButton.vue +2 -2
- package/lib/components/ui/button-icon/UiButtonIcon.vue +1 -1
- package/lib/components/ui/card-numbers/UiCardNumbers.vue +1 -1
- package/lib/components/ui/checkbox/UiCheckbox.vue +2 -2
- package/lib/components/ui/chip/UiChip.vue +1 -1
- package/lib/components/ui/counter/UiCounter.vue +1 -1
- package/lib/components/ui/drawer/UiDrawer.vue +37 -54
- package/lib/components/ui/dropdown/UiDropdown.vue +2 -2
- package/lib/components/ui/dropdown-button/UiDropdownButton.vue +1 -1
- package/lib/components/ui/head-bar/UiHeadBar.vue +1 -1
- package/lib/components/ui/info/UiInfo.vue +1 -1
- package/lib/components/ui/input/UiInput.vue +2 -2
- package/lib/components/ui/label/UiLabel.vue +1 -1
- package/lib/components/ui/legend/UiLegend.vue +2 -2
- package/lib/components/ui/legend-title/UiLegendTitle.vue +1 -1
- package/lib/components/ui/link/UiLink.vue +2 -2
- package/lib/components/ui/loader/UiLoader.vue +1 -1
- package/lib/components/ui/modal/UiModal.vue +17 -5
- package/lib/components/ui/object-link/UiObjectLink.vue +1 -1
- package/lib/components/ui/panel-card/UiPanelCard.vue +20 -0
- package/lib/components/ui/progress-bar/UiProgressBar.vue +1 -1
- package/lib/components/ui/query-search-bar/UiQuerySearchBar.vue +2 -2
- package/lib/components/ui/quick-task-panel/UiQuickTaskPanel.vue +1 -1
- package/lib/components/ui/radio-button/UiRadioButton.vue +2 -2
- package/lib/components/ui/stacked-bar/StackedBarSegment.vue +2 -2
- package/lib/components/ui/stacked-bar/UiStackedBar.vue +1 -1
- package/lib/components/ui/tag/UiTag.vue +1 -1
- package/lib/components/ui/task-item/UiTaskItem.vue +1 -1
- package/lib/components/ui/text-area/UiTextarea.vue +1 -1
- package/lib/components/ui/toaster/UiToaster.vue +1 -1
- package/lib/components/ui/toggle/UiToggle.vue +1 -1
- package/lib/components/ui/tooltip/UiTooltip.vue +2 -2
- package/lib/components/ui/tree-item-label/UiTreeItemLabel.vue +40 -16
- package/lib/components/ui/user-link/UiUserLink.vue +1 -1
- package/lib/components/ui/user-logo/UiUserLogo.vue +1 -1
- package/lib/components/{vif-connection-toggle-modal/VtsVifConnectionToggleModal.vue → vif-connection-modal/VtsVifConnectionModal.vue} +15 -10
- package/lib/composables/chart-theme.composable.ts +1 -1
- package/lib/composables/context.composable.ts +1 -1
- package/lib/composables/copy.composable.ts +6 -0
- package/lib/composables/default-tab.composable.ts +1 -1
- package/lib/composables/disabled.composable.ts +1 -1
- package/lib/composables/hide-route-query.composable.ts +1 -1
- package/lib/composables/link-component.composable.ts +1 -1
- package/lib/composables/modals/use-action-modal.ts +11 -0
- package/lib/composables/modals/use-blocked-modal.ts +10 -0
- package/lib/composables/modals/use-delete-modal.ts +11 -0
- package/lib/composables/pagination.composable.ts +2 -2
- package/lib/composables/route-query/types.ts +1 -1
- package/lib/composables/route-query.composable.ts +5 -5
- package/lib/composables/sort-route-query.composable.ts +1 -1
- package/lib/composables/tab-list.composable.ts +1 -1
- package/lib/composables/table/create-base-definition.ts +1 -1
- package/lib/composables/table/create-define-column.ts +6 -6
- package/lib/composables/table/create-sorting-definition.ts +2 -2
- package/lib/composables/table/create-visibility-definition.ts +2 -2
- package/lib/composables/table/type.ts +1 -1
- package/lib/composables/table.composable.ts +4 -4
- package/lib/composables/tree-filter.composable.ts +1 -1
- package/lib/directives/tooltip.directive.ts +2 -2
- package/lib/icons/index.ts +1 -1
- package/lib/locales/cs.json +50 -6
- package/lib/locales/de.json +3 -2
- package/lib/locales/en.json +83 -9
- package/lib/locales/es.json +0 -1
- package/lib/locales/fr.json +87 -13
- package/lib/locales/ko.json +2 -0
- package/lib/locales/nb-NO.json +0 -1
- package/lib/locales/nl.json +130 -3
- package/lib/locales/pt.json +1 -2
- package/lib/locales/sk.json +50 -6
- package/lib/locales/sv.json +0 -2
- package/lib/locales/zh-Hans.json +0 -4
- package/lib/packages/form-select/use-form-select-controller.ts +1 -1
- package/lib/packages/job/define-job.ts +5 -5
- package/lib/packages/job/index.ts +4 -4
- package/lib/packages/job/use-job-store.ts +2 -2
- package/lib/packages/menu/action.ts +1 -1
- package/lib/packages/menu/context.ts +1 -1
- package/lib/packages/menu/index.ts +10 -10
- package/lib/packages/menu/job.ts +3 -3
- package/lib/packages/menu/link.ts +1 -1
- package/lib/packages/menu/router-link.ts +1 -1
- package/lib/packages/menu/toggle-target.ts +1 -1
- package/lib/packages/overlay/README.md +19 -4
- package/lib/packages/overlay/create-event-handler.ts +4 -11
- package/lib/packages/overlay/types.ts +1 -0
- package/lib/packages/overlay/use-overlay-store.ts +5 -0
- package/lib/packages/overlay/use-overlay.ts +25 -10
- package/lib/packages/query-builder/group/build-root-group.ts +1 -1
- package/lib/packages/query-builder/node/handle-comparison-node.ts +1 -1
- package/lib/packages/query-builder/node/handle-glob-pattern-node.ts +1 -1
- package/lib/packages/query-builder/node/handle-group-node.ts +2 -2
- package/lib/packages/query-builder/node/handle-node.ts +8 -8
- package/lib/packages/query-builder/node/handle-null-node.ts +1 -1
- package/lib/packages/query-builder/node/handle-property-group-node.ts +2 -2
- package/lib/packages/query-builder/node/handle-property-node.ts +8 -8
- package/lib/packages/query-builder/node/handle-regexp-node.ts +1 -1
- package/lib/packages/query-builder/node/handle-string-or-number-node.ts +2 -2
- package/lib/packages/query-builder/node/handle-truthy-property-node.ts +1 -1
- package/lib/packages/query-builder/use-query-builder.ts +2 -2
- package/lib/packages/remote-resource/define-remote-resource.ts +56 -27
- package/lib/packages/remote-resource/sse.store.ts +4 -4
- package/lib/packages/threshold/use-threshold.ts +1 -1
- package/lib/packages/tree/branch-definition.ts +2 -2
- package/lib/packages/tree/branch.ts +8 -2
- package/lib/packages/tree/build-nodes.ts +3 -3
- package/lib/packages/tree/define-branch.ts +2 -2
- package/lib/packages/tree/define-leaf.ts +2 -2
- package/lib/packages/tree/define-tree.ts +3 -3
- package/lib/packages/tree/leaf-definition.ts +1 -1
- package/lib/packages/tree/leaf.ts +2 -2
- package/lib/packages/tree/tree-node-base.ts +2 -2
- package/lib/packages/tree/tree-node-definition-base.ts +1 -1
- package/lib/packages/tree/types.ts +6 -6
- package/lib/packages/tree/use-tree.ts +2 -2
- package/lib/stores/panel.store.ts +1 -1
- package/lib/stores/tooltip.store.ts +2 -2
- package/lib/tables/column-definitions/action-column.ts +2 -2
- package/lib/tables/column-definitions/button-column.ts +3 -3
- package/lib/tables/column-definitions/button-icon-column.ts +2 -2
- package/lib/tables/column-definitions/date-column.ts +3 -3
- package/lib/tables/column-definitions/info-column.ts +3 -3
- package/lib/tables/column-definitions/input-column.ts +3 -3
- package/lib/tables/column-definitions/link-column.ts +2 -2
- package/lib/tables/column-definitions/literal-column.ts +3 -3
- package/lib/tables/column-definitions/number-column.ts +2 -2
- package/lib/tables/column-definitions/percent-column.ts +2 -2
- package/lib/tables/column-definitions/progress-bar-column.ts +2 -2
- package/lib/tables/column-definitions/select-column.ts +2 -2
- package/lib/tables/column-definitions/status-column.ts +2 -2
- package/lib/tables/column-definitions/tag-column.ts +3 -3
- package/lib/tables/column-sets/backup-issue-columns.ts +1 -1
- package/lib/tables/column-sets/backup-job-columns.ts +1 -1
- package/lib/tables/column-sets/backup-job-schedule-columns.ts +1 -1
- package/lib/tables/column-sets/backup-log-columns.ts +1 -1
- package/lib/tables/column-sets/host-columns.ts +3 -3
- package/lib/tables/column-sets/network-columns.ts +2 -2
- package/lib/tables/column-sets/pif-columns.ts +2 -2
- package/lib/tables/column-sets/server-columns.ts +1 -1
- package/lib/tables/column-sets/sr-columns.ts +3 -3
- package/lib/tables/column-sets/vdi-columns.ts +2 -0
- package/lib/tables/column-sets/vif-columns.ts +1 -1
- package/lib/tables/column-sets/vif-network-columns.ts +1 -1
- package/lib/tables/column-sets/vm-backup-archive-columns.ts +3 -3
- package/lib/tables/column-sets/vm-backup-run-colums.ts +2 -2
- package/lib/tables/column-sets/vm-columns.ts +1 -1
- package/lib/types/object.type.ts +10 -1
- package/lib/utils/create-subscribable-store-context.util.ts +2 -2
- package/lib/utils/download-bugtools.utils.ts +1 -1
- package/lib/utils/if-else.utils.ts +2 -2
- package/lib/utils/injection-keys.util.ts +0 -2
- package/lib/utils/progress.util.ts +1 -1
- package/lib/utils/to-array.utils.ts +1 -1
- package/package.json +1 -1
- package/lib/components/drawer/VtsDrawer.vue +0 -89
- package/lib/components/drawer/VtsDrawerButton.vue +0 -22
- package/lib/components/drawer/VtsDrawerCancelButton.vue +0 -33
- package/lib/components/drawer/VtsDrawerConfirmButton.vue +0 -32
- package/lib/components/drawer/VtsDrawerList.vue +0 -34
- package/lib/components/modal/VtsModal.vue +0 -82
- package/lib/components/modal/VtsModalButton.vue +0 -35
- package/lib/components/modal/VtsModalCancelButton.vue +0 -37
- package/lib/components/modal/VtsModalConfirmButton.vue +0 -21
- package/lib/components/modal/VtsModalList.vue +0 -34
- package/lib/packages/drawer/DrawerProvider.vue +0 -17
- package/lib/packages/drawer/README.md +0 -189
- package/lib/packages/drawer/create-drawer-opener.ts +0 -119
- package/lib/packages/drawer/drawer.store.ts +0 -22
- package/lib/packages/drawer/types.ts +0 -93
- package/lib/packages/drawer/use-drawer.ts +0 -53
- package/lib/packages/modal/ModalProvider.vue +0 -17
- package/lib/packages/modal/README.md +0 -253
- package/lib/packages/modal/create-modal-opener.ts +0 -106
- package/lib/packages/modal/modal.store.ts +0 -22
- package/lib/packages/modal/types.ts +0 -91
- package/lib/packages/modal/use-modal.ts +0 -53
package/lib/locales/sk.json
CHANGED
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
"action:create-network": "Vytvoriť sieť",
|
|
40
40
|
"action:create-traffic-rule": "Vytvoriť pravidlo pre prevádzku",
|
|
41
41
|
"action:create-vdi": "Vytvoriť obraz virt. disku",
|
|
42
|
+
"action:create-vif": "Vytvoriť virt. sieťové rozhranie",
|
|
42
43
|
"action:delete": "Odstrániť",
|
|
43
44
|
"action:delete-filter": "Odstrániť filter",
|
|
44
45
|
"action:delete-group": "Odstrániť skupinu",
|
|
@@ -61,27 +62,34 @@
|
|
|
61
62
|
"action:disconnect-n-vifs": "Odpojiť 1 virt. sieťové rozhranie | Odpojiť {n} virt. sieťové rozhrania | Odpojiť {n} virt. sieťových rozhraní",
|
|
62
63
|
"action:download-bugtools-archive": "Stiahnuť archív s výstupom bugtools",
|
|
63
64
|
"action:duplicate": "Zduplikovať",
|
|
65
|
+
"action:duplicate-n-vms": "Zduplikovať 1 virt. stroj | Zduplikovať {n} virt. stroje | Zduplikovať {n} virt. strojov",
|
|
64
66
|
"action:edit": "Upraviť",
|
|
65
67
|
"action:edit-config": "Upraviť konfiguráciu",
|
|
66
68
|
"action:enable-light-mode": "Zapnúť svetlý režim",
|
|
67
69
|
"action:export": "Export",
|
|
70
|
+
"action:export-content": "Exportovať obsah",
|
|
68
71
|
"action:export-n-vms": "Exportovať 1 virt. stroj | Exportovať {n} virt. strojov",
|
|
69
72
|
"action:export-n-vms-manually": "Exportovať 1 virt. stroj ručne | Exportovať {n} virt. strojov ručne",
|
|
70
73
|
"action:export-table-to": "Exportovať tabuľku do {type}",
|
|
74
|
+
"action:export-vdi": "Exportovať obraz virt. disku",
|
|
71
75
|
"action:export-vm": "Exportovať virt. stroj | Exportovať virt. stroje",
|
|
72
76
|
"action:filter": "Filtrovať",
|
|
77
|
+
"action:force-migrate-on-sr": "Vynútiť presťahovanie na repozitár úložiska",
|
|
73
78
|
"action:force-reboot": "Vynútiť reštart",
|
|
74
79
|
"action:force-shutdown": "Vynútiť vypnutie",
|
|
75
80
|
"action:forget": "Zabudnúť",
|
|
76
81
|
"action:go-back": "Prejsť späť",
|
|
77
82
|
"action:group": "Skupina",
|
|
78
83
|
"action:hide": "Skryť",
|
|
84
|
+
"action:import": "Naimportovať",
|
|
85
|
+
"action:import-export": "Import/Export",
|
|
79
86
|
"action:install-app": "Inštalovať {name}",
|
|
80
87
|
"action:install-guest-tools": "Nainštalovať nástroje do hosťa",
|
|
81
88
|
"action:load-now": "Načítať teraz",
|
|
82
89
|
"action:log-out": "Odhlásiť sa",
|
|
83
90
|
"action:migrate": "Migrovať",
|
|
84
91
|
"action:migrate-n-vms": "Migrovať 1 virt. stroj | Migrovať {n} virt. strojov",
|
|
92
|
+
"action:migrate-vdi-on-sr": "Presťahovať na repozitár úložiska",
|
|
85
93
|
"action:move-filters-to-parent-group": "Presunúť filtre do nadradenej skupiny",
|
|
86
94
|
"action:open": "Otvoriť",
|
|
87
95
|
"action:open-app": "@:action:open {name}",
|
|
@@ -152,6 +160,8 @@
|
|
|
152
160
|
"allocated-space": "Pridelený priestor",
|
|
153
161
|
"allow": "Umožniť",
|
|
154
162
|
"allow-self-signed-ssl": "Je možné že bude potrebné vo vami využívanom prehliadači povoliť sami sebou podpísané SSL certifikáty",
|
|
163
|
+
"allowed-ips": "Umožnené IP adresy",
|
|
164
|
+
"allowed-ips-example": "Napríklad: 192.168.0.1; 2001:db8::1",
|
|
155
165
|
"and": "A",
|
|
156
166
|
"any-property": "Akákoľvek vlastnosť",
|
|
157
167
|
"api-error-details": "Podrobnosti o chybe rozhrania API",
|
|
@@ -220,6 +230,7 @@
|
|
|
220
230
|
"build-number": "Číslo zostavenia",
|
|
221
231
|
"by": "Od",
|
|
222
232
|
"bytes:gi": "GiB",
|
|
233
|
+
"bytes:kbs": "kB/s",
|
|
223
234
|
"bytes:ki": "KiB",
|
|
224
235
|
"bytes:mi": "MiB",
|
|
225
236
|
"cancel": "Zrušiť",
|
|
@@ -229,8 +240,6 @@
|
|
|
229
240
|
"check-errors:": "Pozrite si chyby:",
|
|
230
241
|
"check-summing": "Kontrolné súčty odosielania",
|
|
231
242
|
"checkpoint-snapshot": "Zachytený stav – kontrolný bod",
|
|
232
|
-
"choose-network": "Zvoľte sieť",
|
|
233
|
-
"choose-vif": "Vyberte virt. sieťové rozhranie",
|
|
234
243
|
"click-to-display-alarms:": "Kliknutím zobrazíte výstrahy:",
|
|
235
244
|
"click-to-return-default-pool": "Kliknutím sem sa vrátite na východiskový fond",
|
|
236
245
|
"cloud-config": "Cloud config",
|
|
@@ -240,6 +249,7 @@
|
|
|
240
249
|
"community": "Komunita",
|
|
241
250
|
"community-name": "{name} komunita",
|
|
242
251
|
"compression": "Kompresia",
|
|
252
|
+
"compression-not-available": "Pre repozitárov úložiska z rovnakého fondu nie je kompresia k dispozícii.",
|
|
243
253
|
"concurrency": "Súbežnosť",
|
|
244
254
|
"configuration": "Konfigurácia",
|
|
245
255
|
"configure-for-protected": "Aby ste zaistili ochranu svojich virt. strojov, zvážte nastavenie {backup-job}",
|
|
@@ -282,6 +292,7 @@
|
|
|
282
292
|
"creating-new-network": "Vytváranie novej siete",
|
|
283
293
|
"creating-new-traffic-rule": "Vytvoriť nové pravidlo pre prevádzku",
|
|
284
294
|
"creating-new-vdi": "Vytvára sa nový obraz virt. disku",
|
|
295
|
+
"creating-new-vif": "Vytváranie nového virt. sieťového rozhrania",
|
|
285
296
|
"creation-date": "Dátum vytvorenia",
|
|
286
297
|
"cron-pattern": "Vzorec plánovania (cron)",
|
|
287
298
|
"current": "Súčasné",
|
|
@@ -306,6 +317,8 @@
|
|
|
306
317
|
"deploy-xoa-status:waiting": "Čaká sa až XOA odpovie…",
|
|
307
318
|
"descending": "zostupne",
|
|
308
319
|
"description": "Popis",
|
|
320
|
+
"destination-sr": "Cieľový repozitár úložiska",
|
|
321
|
+
"destination-sr-mandatory": "Je potrebné určiť cieľový repozitár úložiska.",
|
|
309
322
|
"device": "Zariadenie",
|
|
310
323
|
"device-config": "Konfigurácia zariadenia",
|
|
311
324
|
"dhcp": "DHCP",
|
|
@@ -332,6 +345,9 @@
|
|
|
332
345
|
"documentation-name": "Dokumentácia pre {name}",
|
|
333
346
|
"done": "Hotovo",
|
|
334
347
|
"drop": "Zahodiť",
|
|
348
|
+
"duplicate-vm:error-message": "Pri duplikovaní virt. stroje došlo k chybe. Skontrolujte nastavenia (názov, repozitár úložiska, kompresiu) a skúste to znova.",
|
|
349
|
+
"duplicating-vm": "Duplikovanie virt. stroje",
|
|
350
|
+
"duplication-method": "Metóda duplikácie",
|
|
335
351
|
"duration": "Trvanie",
|
|
336
352
|
"empty": "Prázdne",
|
|
337
353
|
"enabled": "Povolené",
|
|
@@ -352,6 +368,7 @@
|
|
|
352
368
|
"failed": "Neúspešné",
|
|
353
369
|
"failure": "Zlyhanie",
|
|
354
370
|
"fast-clone": "Rýchly klon",
|
|
371
|
+
"fast-clone-available": "Rýchly klon je k dispozícii iba pre zastavené virt. stroje.",
|
|
355
372
|
"fetching-fresh-data": "Získavanie aktuálnych údajov",
|
|
356
373
|
"field:exceeds-max-characters": "Je potrebné, aby zadanie v kolónke bolo dlhé najviac {max} znakov.",
|
|
357
374
|
"file": "Súbor",
|
|
@@ -369,6 +386,7 @@
|
|
|
369
386
|
"free-space": "Voľné miesto",
|
|
370
387
|
"free-space-on-sr": "Voľný priestor na repozitári úložiska",
|
|
371
388
|
"from-vm": "Od virt. stroje",
|
|
389
|
+
"full-copy": "Úplná kópia",
|
|
372
390
|
"fullscreen": "Celá obrazovka",
|
|
373
391
|
"gateway": "Prehod",
|
|
374
392
|
"general": "Všeobecné",
|
|
@@ -378,6 +396,7 @@
|
|
|
378
396
|
"graphics-display": "Grafika a zobrazenie",
|
|
379
397
|
"groups": "Skupiny",
|
|
380
398
|
"guest-tools": "Nástroje pre hostí",
|
|
399
|
+
"gzip": "GZIP",
|
|
381
400
|
"hardware": "Hardvér",
|
|
382
401
|
"hardware-specifications": "Hardvérové špecifikácie",
|
|
383
402
|
"heartbeat-storage-repository": "Repozitár úložiska kontroly stavu",
|
|
@@ -412,6 +431,9 @@
|
|
|
412
431
|
"interfaces": "Rozhrania",
|
|
413
432
|
"interrupted": "Prerušené",
|
|
414
433
|
"invalid-field": "Neplatné pole",
|
|
434
|
+
"invalid-ip-addresses": "Jedna alebo viac neplatných IP adries",
|
|
435
|
+
"invalid-mac-address": "Neplatná MAC adresa",
|
|
436
|
+
"invalid-rate-limit": "Obmedzovanie rýchlosti nemôže byť záporné",
|
|
415
437
|
"ip-address": "IP adresa",
|
|
416
438
|
"ip-address-info": "Pravidlo je možné uplatniť na jednotlivú IP adresu alebo podsieť (v CIDR formáte). Príklady: 192.168.1.10 alebo 10.20.0.0/16",
|
|
417
439
|
"ip-address-invalid": "Formát IP adresy nie je platný.",
|
|
@@ -455,6 +477,8 @@
|
|
|
455
477
|
"job:create:in-progress": "Prebieha vytváranie…",
|
|
456
478
|
"job:delete:in-progress": "Prebieha odstraňovanie…",
|
|
457
479
|
"job:disconnect:in-progress": "Prebieha odpájanie…",
|
|
480
|
+
"job:export:in-progress": "Prebieha export…",
|
|
481
|
+
"job:migrate:in-progress": "Sťahovanie prebieha…",
|
|
458
482
|
"job:network-delete:has-n-physical-pif-connected": "Sieť má pripojené jedno fyzické rozhranie | Sieť má pripojené {n} fyzické rozhrania | Sieť má pripojených {n} fyzických rozhraní",
|
|
459
483
|
"job:network-delete:has-n-vif-attached": "Sieť má pripojené jedno virtuálne rozhranie | Sieť má pripojená {n} virtuálne rozhranie | Sieť má pripojených {n} virtuálnych rozhraní",
|
|
460
484
|
"job:pbd-plug:missing-pbd": "Žiadne fyzické blokové zariadenia na pripojenie",
|
|
@@ -474,6 +498,12 @@
|
|
|
474
498
|
"job:vbd-disconnect:vbd-disconnected": "Virt. blokové zariadenie je odpojené",
|
|
475
499
|
"job:vdi-delete:missing-vdi": "Žiadne virt. disky na zmazanie",
|
|
476
500
|
"job:vdi-delete:vbd-attached": "Nie je možné zmazať virt. disk, ku ktorému je pripojené virtuálne blokové zariadenie",
|
|
501
|
+
"job:vdi-detach:in-progress": "Prebieha rušenie priloženia…",
|
|
502
|
+
"job:vdi-export:format-required": "Vyžaduje sa formát exportu obrazu virt. disku",
|
|
503
|
+
"job:vdi-export:missing-vdi": "Žiadny obraz virt. disku na export",
|
|
504
|
+
"job:vdi-migrate:in-progress": "Prebieha sťahovanie…",
|
|
505
|
+
"job:vdi-migrate:missing-sr": "Je potrebný repozitár úložiska",
|
|
506
|
+
"job:vdi-migrate:missing-vdi": "Nevybraný žiadny obraz virt. disku",
|
|
477
507
|
"job:vif-connect:missing-vif": "Žiadna virt. sieťové rozhrania na pripojenie",
|
|
478
508
|
"job:vif-connect:vif-already-connected": "Virt. sieťové rozhranie už je pripojené",
|
|
479
509
|
"job:vif-delete:blocked-operation": "Mazanie virt. sieťového rozhrania je blokované",
|
|
@@ -657,6 +687,8 @@
|
|
|
657
687
|
"new-vdi:add": "Pridať nový obraz virt. disku",
|
|
658
688
|
"new-vdi:error-message": "Pri pridávaní obrazu virt. disku došlo k chybe. Skontrolujte nastavenie (názov, repozitár úložiska, pridelený priestor) a skúste to znova.",
|
|
659
689
|
"new-vif": "Nové VIF",
|
|
690
|
+
"new-vif:add": "Pridať nové virt. sieťové rozhranie",
|
|
691
|
+
"new-vif:error-message": "Došlo k chybe pri vytváraní nového virt. sieťového rozhrania. Skontrolujte nastavenia a skúste to znova.",
|
|
660
692
|
"new-vm": "Nový VM",
|
|
661
693
|
"new-vm:add": "Pridať nový virt. stroj",
|
|
662
694
|
"new-vm:description": "Popis VM",
|
|
@@ -725,6 +757,7 @@
|
|
|
725
757
|
"operation:clean-reboot": "Reštartovanie",
|
|
726
758
|
"operation:clean-shutdown": "Vypínanie",
|
|
727
759
|
"operation:destroy": "Odstraňovanie",
|
|
760
|
+
"operation:duplicate": "Duplikovanie",
|
|
728
761
|
"operation:force-reboot": "Vynútené reštartovanie",
|
|
729
762
|
"operation:force-shutdown": "Vynútené vypínanie",
|
|
730
763
|
"operation:pause": "Pozastavenie",
|
|
@@ -741,6 +774,7 @@
|
|
|
741
774
|
"other": "Iné",
|
|
742
775
|
"other-properties": "Ostatné vlastnosti",
|
|
743
776
|
"other-settings": "Ďalšie nastavenia",
|
|
777
|
+
"ova": "OVA",
|
|
744
778
|
"page-not-found": "Táto stránka sa nedá nájsť…",
|
|
745
779
|
"page-please-wait": "Drž sa pevne, astronaut! Stránka sa pripravuje na start.{newline}Práve nastavujeme trysky a kalibrujeme systémy. Už to dlho nepotrvá, zostaňte naladení!",
|
|
746
780
|
"pagination:all": "@:all",
|
|
@@ -877,16 +911,15 @@
|
|
|
877
911
|
"runs": "Behy",
|
|
878
912
|
"s3-backup-repository": "S3 repozitár záloh",
|
|
879
913
|
"scan-pifs": "Skenovať PIFs",
|
|
880
|
-
"scan-pifs-in-xo-5": "@:scan-pifs v XO-5",
|
|
881
914
|
"schedule": "Plán",
|
|
882
915
|
"schedules": "Plány",
|
|
883
916
|
"secure-boot": "Secure boot",
|
|
884
|
-
"security": "Zabezpečenie",
|
|
885
917
|
"see-details": "Zobraziť podrobnosti",
|
|
886
918
|
"select-compression": "Vyberte kompresiu",
|
|
887
919
|
"select-destination-host": "Vyberte cieľového hostiteľa",
|
|
920
|
+
"select-format": "Vyberte formát",
|
|
888
921
|
"select-host": "Vyberte hostiteľa",
|
|
889
|
-
"select-to-see-details": "
|
|
922
|
+
"select-to-see-details": "Podrobnosti si zobrazíte kliknutím na {icon}",
|
|
890
923
|
"selected-vms-in-execution": "Niektoré z vybraných virt. stroje sú spustené",
|
|
891
924
|
"self-signed-certificates": "Samy sebou podpísané certifikáty",
|
|
892
925
|
"send-us-feedback": "Pošlite nám spätnú väzbu",
|
|
@@ -927,6 +960,7 @@
|
|
|
927
960
|
"sr-disconnect-info-pool-mixed": "Lokálne repozitára úložiska budú odpojené od svojich príslušných hostiteľov. Zdieľané repozitáre budú odpojené od všetkých hostiteľov v tomto fonde.",
|
|
928
961
|
"sr-disconnect-info-pool-shared": "Repozitár úložiska bude odpojený od {hostsCount} hostiteľov v tomto fonde. | Každý zdieľaný repozitár úložiska bude odpojený od všetkých hostiteľov v tomto fonde.",
|
|
929
962
|
"sr-disconnect-title": "Chystáte sa odpojiť 1 repozitár úložiska | Chystáte sa odpojiť {n} repozitára úložiska | Chystáte sa odpojiť {n} repozitárov úložiska",
|
|
963
|
+
"sr-required": "Je potrebný repozitár úložiska.",
|
|
930
964
|
"ssh-account": "SSH účet",
|
|
931
965
|
"ssh-key": "SSH kľúč",
|
|
932
966
|
"ssh-login": "SSH prihlasovacie meno",
|
|
@@ -1022,6 +1056,8 @@
|
|
|
1022
1056
|
"traffic-rule": "Pravidlo pre prevádzku",
|
|
1023
1057
|
"traffic-rule-delete-warning": "Túto akciu nemožno vziať späť. Označené pravidlo pre prevádzku bude nevratne zmazané.",
|
|
1024
1058
|
"traffic-rules": "Pravidlá pre prevádzku",
|
|
1059
|
+
"traffic-rules:format-warning": "Chyba nastavenia: Pravidlá pre prevádzku nie sú v očakávanom formáte. {check-doc} ohľadom toho, ako ich previesť.",
|
|
1060
|
+
"traffic-rules:format-warning:check-doc": "Pozrite sa do najaktuálnejšej dokumentácie",
|
|
1025
1061
|
"traffic-rules:info-message": "Implementácia poradia pravidiel pre prevádzku ešte prebieha. Chovanie môže byť nebezpečné.",
|
|
1026
1062
|
"traffic-rules:no-traffic-rules-detected": "Nezjištěná žiadna pravidla pre prevádzku",
|
|
1027
1063
|
"transfer-size": "Objem prenosu",
|
|
@@ -1038,7 +1074,10 @@
|
|
|
1038
1074
|
"unable-to-create-new-network": "Nebolo možné vytvoriť novú sieť",
|
|
1039
1075
|
"unable-to-create-new-traffic-rule": "Nebolo možné vytvoriť nové pravidlo pre prevádzku",
|
|
1040
1076
|
"unable-to-create-new-vdi": "Nebolo možné vytvoriť nový obraz virt. disku",
|
|
1077
|
+
"unable-to-create-new-vif": "Nebolo možné vytvoriť nové virt. sieťové rozhranie",
|
|
1041
1078
|
"unable-to-delete-network": "Sieť nebolo možné zmazať",
|
|
1079
|
+
"unable-to-duplicate-vm": "Nebolo možné zduplikovať virt. stroj",
|
|
1080
|
+
"unable-to-migrate-vdi": "Nebolo možné presťahovať obraz virt. disku na repozitár úložiska",
|
|
1042
1081
|
"unknown": "Neznámo",
|
|
1043
1082
|
"unlocked": "Odomknuté",
|
|
1044
1083
|
"unnamed": "Bez názvu",
|
|
@@ -1072,6 +1111,7 @@
|
|
|
1072
1111
|
"vdi-in-use": "Obraz virt. disku už je využívaný",
|
|
1073
1112
|
"vdi-name": "Názov obrazu virt. disku",
|
|
1074
1113
|
"vdi-not-attached-to-vm": "Nepripojený žiadny virt. stroj",
|
|
1114
|
+
"vdi-on-different-sr-warning": "Tento repozitár úložiska je lokálny pre hostiteľa, ktorý nedrží ostatné disky virt. stroje. Virt. stroj nebude môcť naštartovať pokiaľ sa nebudú všetky jeho disky nachádzať na rovnakom hostiteľovi alebo na zdieľanom úložisku.",
|
|
1075
1115
|
"vdi-snapshot-source": "Zdroj obrazu virt. disku",
|
|
1076
1116
|
"vdi-snpashot-time": "Dátum zachytenia stavu",
|
|
1077
1117
|
"vdi-throughput": "Objemy čítania/zápisov na virt. disky",
|
|
@@ -1102,6 +1142,8 @@
|
|
|
1102
1142
|
"vm-is-running": "Virt. stroj je spustený",
|
|
1103
1143
|
"vm-limit-topology": "Limit topológie virt. stroje",
|
|
1104
1144
|
"vm-management": "Správa VM",
|
|
1145
|
+
"vm-name": "Názov virt. stroje",
|
|
1146
|
+
"vm-name-required": "Je potrebný názov virt. stroje.",
|
|
1105
1147
|
"vm-not-running": "Virt. stroj nie je spustený",
|
|
1106
1148
|
"vm-off": "Tento virtuálny stroj je vypnutý.",
|
|
1107
1149
|
"vm-protected-deletion": "Tento virtuálny počítač je momentálne chránený pred vymazaním.",
|
|
@@ -1156,5 +1198,7 @@
|
|
|
1156
1198
|
"xoa-password-confirm-different": "Heslo do XOA nebolo zadané dvakrát rovnako",
|
|
1157
1199
|
"xoa-ssh-account": "Účet pre SSH prístup do XOA",
|
|
1158
1200
|
"xoa-ssh-password-confirm-different": "Heslo pre SSH nebolo zadané dvakrát rovnako",
|
|
1159
|
-
"
|
|
1201
|
+
"xva": "XVA",
|
|
1202
|
+
"you-are-currently-on": "V tejto chvíli sa nachádzate na: {0}",
|
|
1203
|
+
"zstd": "ZSTD"
|
|
1160
1204
|
}
|
package/lib/locales/sv.json
CHANGED
|
@@ -788,11 +788,9 @@
|
|
|
788
788
|
"runs": "Körningar",
|
|
789
789
|
"s3-backup-repository": "S3 säkerhetskopieringsförvar",
|
|
790
790
|
"scan-pifs": "Skanna PIF",
|
|
791
|
-
"scan-pifs-in-xo-5": "@:scan-pifs i XO-5",
|
|
792
791
|
"schedule": "Schema",
|
|
793
792
|
"schedules": "Schema",
|
|
794
793
|
"secure-boot": "Säker boot",
|
|
795
|
-
"security": "Säkerhet",
|
|
796
794
|
"see-details": "Se detaljer",
|
|
797
795
|
"select-compression": "Välj komprimering",
|
|
798
796
|
"select-destination-host": "Välj en destinations-host",
|
package/lib/locales/zh-Hans.json
CHANGED
|
@@ -218,8 +218,6 @@
|
|
|
218
218
|
"check-errors:": "查看错误信息:",
|
|
219
219
|
"check-summing": "发送端校验和",
|
|
220
220
|
"checkpoint-snapshot": "检查点快照",
|
|
221
|
-
"choose-network": "选择网络",
|
|
222
|
-
"choose-vif": "选择VIF",
|
|
223
221
|
"click-to-display-alarms:": "点击查看告警:",
|
|
224
222
|
"click-to-return-default-pool": "点击返回默认资源池",
|
|
225
223
|
"cloud-config": "云端配置",
|
|
@@ -848,11 +846,9 @@
|
|
|
848
846
|
"runs": "执行记录",
|
|
849
847
|
"s3-backup-repository": "S3对象存储备份仓库",
|
|
850
848
|
"scan-pifs": "扫描物理网卡",
|
|
851
|
-
"scan-pifs-in-xo-5": "前往XO5扫描物理网卡",
|
|
852
849
|
"schedule": "定时计划",
|
|
853
850
|
"schedules": "定时计划列表",
|
|
854
851
|
"secure-boot": "安全启动",
|
|
855
|
-
"security": "安全设置",
|
|
856
852
|
"see-details": "查看详情",
|
|
857
853
|
"select-compression": "选择压缩格式",
|
|
858
854
|
"select-destination-host": "选择目标主机",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ifElse } from '@core/utils/if-else.utils'
|
|
1
|
+
import { ifElse } from '@core/utils/if-else.utils.ts'
|
|
2
2
|
import { autoUpdate, flip, type MaybeElement, shift, size, useFloating } from '@floating-ui/vue'
|
|
3
3
|
import { clamp, onClickOutside, useEventListener, useFocusWithin, whenever } from '@vueuse/core'
|
|
4
4
|
import { logicOr } from '@vueuse/math'
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { JobArg, JobIdentity } from '@core/packages/job/define-job-arg'
|
|
2
|
-
import { JobError, JobRunningError } from '@core/packages/job/job-error'
|
|
3
|
-
import { useJobStore } from '@core/packages/job/use-job-store'
|
|
4
|
-
import type { MaybeArray } from '@core/types/utility.type'
|
|
5
|
-
import { toArray as convertToArray } from '@core/utils/to-array.utils'
|
|
1
|
+
import type { JobArg, JobIdentity } from '@core/packages/job/define-job-arg.ts'
|
|
2
|
+
import { JobError, JobRunningError } from '@core/packages/job/job-error.ts'
|
|
3
|
+
import { useJobStore } from '@core/packages/job/use-job-store.ts'
|
|
4
|
+
import type { MaybeArray } from '@core/types/utility.type.ts'
|
|
5
|
+
import { toArray as convertToArray } from '@core/utils/to-array.utils.ts'
|
|
6
6
|
import { computed, type ComputedRef, type MaybeRefOrGetter, toValue } from 'vue'
|
|
7
7
|
|
|
8
8
|
export type JobRunArgs<TJobArgs> = TJobArgs extends [infer TJobArg, ...infer TRest]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from './define-job'
|
|
2
|
-
export * from './define-job-arg'
|
|
3
|
-
export * from './job-error'
|
|
4
|
-
export * from './use-job-store'
|
|
1
|
+
export * from './define-job.ts'
|
|
2
|
+
export * from './define-job-arg.ts'
|
|
3
|
+
export * from './job-error.ts'
|
|
4
|
+
export * from './use-job-store.ts'
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { JobIdentity } from '@core/packages/job/define-job-arg'
|
|
2
|
-
import { toArray } from '@core/utils/to-array.utils'
|
|
1
|
+
import type { JobIdentity } from '@core/packages/job/define-job-arg.ts'
|
|
2
|
+
import { toArray } from '@core/utils/to-array.utils.ts'
|
|
3
3
|
import { defineStore } from 'pinia'
|
|
4
4
|
import { shallowReactive } from 'vue'
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseItem, type Menu, type MenuLike, parseConfigHolder } from '@core/packages/menu'
|
|
2
|
-
import { toComputed } from '@core/utils/to-computed.util'
|
|
2
|
+
import { toComputed } from '@core/utils/to-computed.util.ts'
|
|
3
3
|
import { computed, type MaybeRefOrGetter, reactive, ref } from 'vue'
|
|
4
4
|
|
|
5
5
|
export interface MenuActionConfig {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export * from './base'
|
|
2
|
-
export * from './action'
|
|
3
|
-
export * from './context'
|
|
4
|
-
export * from './link'
|
|
5
|
-
export * from './menu'
|
|
6
|
-
export * from './router-link'
|
|
7
|
-
export * from './structure'
|
|
8
|
-
export * from './toggle'
|
|
9
|
-
export * from './toggle-target'
|
|
10
|
-
export * from './toggle-trigger'
|
|
1
|
+
export * from './base.ts'
|
|
2
|
+
export * from './action.ts'
|
|
3
|
+
export * from './context.ts'
|
|
4
|
+
export * from './link.ts'
|
|
5
|
+
export * from './menu.ts'
|
|
6
|
+
export * from './router-link.ts'
|
|
7
|
+
export * from './structure.ts'
|
|
8
|
+
export * from './toggle.ts'
|
|
9
|
+
export * from './toggle-target.ts'
|
|
10
|
+
export * from './toggle-trigger.ts'
|
package/lib/packages/menu/job.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Job } from '@core/packages/job'
|
|
2
|
-
import { action } from '@core/packages/menu/action'
|
|
3
|
-
import type { MenuLike } from '@core/packages/menu/menu'
|
|
4
|
-
import { parseConfigHolder } from '@core/packages/menu/structure'
|
|
2
|
+
import { action } from '@core/packages/menu/action.ts'
|
|
3
|
+
import type { MenuLike } from '@core/packages/menu/menu.ts'
|
|
4
|
+
import { parseConfigHolder } from '@core/packages/menu/structure.ts'
|
|
5
5
|
|
|
6
6
|
export function job(job: Job<any>) {
|
|
7
7
|
return action(() => job.run(), {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseItem, type Menu, type MenuLike, parseConfigHolder } from '@core/packages/menu'
|
|
2
|
-
import { toComputed } from '@core/utils/to-computed.util'
|
|
2
|
+
import { toComputed } from '@core/utils/to-computed.util.ts'
|
|
3
3
|
import { type MaybeRefOrGetter, reactive } from 'vue'
|
|
4
4
|
|
|
5
5
|
export interface MenuLinkConfig {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseItem, type Menu, type MenuLike, parseConfigHolder } from '@core/packages/menu'
|
|
2
|
-
import { toComputed } from '@core/utils/to-computed.util'
|
|
2
|
+
import { toComputed } from '@core/utils/to-computed.util.ts'
|
|
3
3
|
import { markRaw, type MaybeRefOrGetter, reactive } from 'vue'
|
|
4
4
|
import { type RouteLocationRaw, RouterLink } from 'vue-router'
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { MenuToggleTrigger } from '@core/packages/menu'
|
|
2
|
-
import { toComputed } from '@core/utils/to-computed.util'
|
|
2
|
+
import { toComputed } from '@core/utils/to-computed.util.ts'
|
|
3
3
|
import { autoUpdate, flip, type Placement, shift, useFloating, type UseFloatingReturn } from '@floating-ui/vue'
|
|
4
4
|
import { unrefElement } from '@vueuse/core'
|
|
5
5
|
import { computed, reactive, ref, type Ref, type UnwrapRef } from 'vue'
|
|
@@ -163,12 +163,13 @@ An event that is _not_ declared in `useOverlay` can also be handled at open time
|
|
|
163
163
|
|
|
164
164
|
## Aborted overlays
|
|
165
165
|
|
|
166
|
-
An overlay
|
|
166
|
+
An overlay is not tied to the lifecycle of the component that opened it: it stays open until the user makes a decision, or until it is aborted. An overlay can be aborted in three ways:
|
|
167
167
|
|
|
168
|
-
-
|
|
169
|
-
-
|
|
168
|
+
- `open()` is called again on the same `useOverlay` instance while the overlay is still open (the previous one is replaced),
|
|
169
|
+
- the `abort()` function returned by `useOverlay` is called,
|
|
170
|
+
- or the store's `abortAll()` is called (see below).
|
|
170
171
|
|
|
171
|
-
In
|
|
172
|
+
In all cases the promise resolves with `OVERLAY_ABORT_EVENT` (a symbol) as its `event`, and no handler runs:
|
|
172
173
|
|
|
173
174
|
```ts
|
|
174
175
|
const response = await open()
|
|
@@ -180,6 +181,10 @@ if (response.event === OVERLAY_ABORT_EVENT) {
|
|
|
180
181
|
|
|
181
182
|
The `OVERLAY_ABORT_EVENT` case is always part of the response union, so exhaustive `event` checks will remind you it exists.
|
|
182
183
|
|
|
184
|
+
Aborting an overlay whose decision is already being resolved is a no-op: the promise resolves with the actual response.
|
|
185
|
+
|
|
186
|
+
An overlay can also be aborted while one of its handlers is still awaiting (for example, navigating away while a save is in progress). In that case the overlay closes right away with `OVERLAY_ABORT_EVENT`. The handler's async work keeps running — it cannot be cancelled — but the value it eventually returns is ignored, and the caller sees an abort.
|
|
187
|
+
|
|
183
188
|
## Busy and disabled triggers
|
|
184
189
|
|
|
185
190
|
Inside the overlay component, use `useOverlayTrigger()` to wire the controls that emit events (buttons, typically) to the overlay's state:
|
|
@@ -283,3 +288,13 @@ Opened overlays live in a Pinia store (`useOverlayStore`). The app must render t
|
|
|
283
288
|
```
|
|
284
289
|
|
|
285
290
|
Styling and animations are up to you. The store also exposes `isCurrent(key)` to style stacked overlays (e.g. dim the ones below the topmost), and each `overlay` carries its current `status`.
|
|
291
|
+
|
|
292
|
+
Since overlays are not tied to the component that opened them, dismissing them on navigation is the app's decision. If that's the behavior you want, wire it once on the router:
|
|
293
|
+
|
|
294
|
+
```ts
|
|
295
|
+
router.isReady().then(() => {
|
|
296
|
+
router.afterEach(() => useOverlayStore().abortAll())
|
|
297
|
+
})
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
Register the guard only once the router is ready: the initial navigation also triggers `afterEach`, which would abort any overlay opened while the app was starting up.
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { isThenable } from '@core/packages/overlay/is-thenable.ts'
|
|
2
2
|
import { KEEP_OVERLAY_OPEN } from '@core/packages/overlay/symbols.ts'
|
|
3
|
-
import type { Overlay, OverlayEventHandler, OverlayResponse } from '@core/packages/overlay/types.ts'
|
|
4
|
-
import { nextTick } from 'vue'
|
|
3
|
+
import type { Overlay, OverlayEventHandler, OverlayResponse, OverlayStatus } from '@core/packages/overlay/types.ts'
|
|
5
4
|
|
|
6
5
|
export function createEventHandler({
|
|
7
6
|
overlay,
|
|
@@ -12,7 +11,7 @@ export function createEventHandler({
|
|
|
12
11
|
overlay: Overlay
|
|
13
12
|
definitionEvents: Record<string, true | OverlayEventHandler>
|
|
14
13
|
openEvents: Record<string, OverlayEventHandler>
|
|
15
|
-
settle: (response: OverlayResponse<PropertyKey, unknown>) => void
|
|
14
|
+
settle: (response: OverlayResponse<PropertyKey, unknown>) => Promise<void>
|
|
16
15
|
}) {
|
|
17
16
|
const shouldStop = (payload: unknown) => payload === KEEP_OVERLAY_OPEN || overlay.status === 'settled'
|
|
18
17
|
|
|
@@ -32,7 +31,7 @@ export function createEventHandler({
|
|
|
32
31
|
}
|
|
33
32
|
|
|
34
33
|
try {
|
|
35
|
-
overlay.status = 'locked'
|
|
34
|
+
overlay.status = 'locked' as OverlayStatus
|
|
36
35
|
|
|
37
36
|
// The definition handler receives the raw emit arguments, then the open
|
|
38
37
|
// handler receives the payload it produced. An event handled at open
|
|
@@ -62,13 +61,7 @@ export function createEventHandler({
|
|
|
62
61
|
}
|
|
63
62
|
}
|
|
64
63
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
// The leave transition freezes the DOM in its last painted state,
|
|
68
|
-
// so paint a non-busy frame before removing the overlay
|
|
69
|
-
await nextTick()
|
|
70
|
-
|
|
71
|
-
settle({ event: eventName, payload })
|
|
64
|
+
await settle({ event: eventName, payload })
|
|
72
65
|
} finally {
|
|
73
66
|
if (overlay.status !== 'settled') {
|
|
74
67
|
overlay.status = 'idle'
|
|
@@ -15,6 +15,10 @@ export const useOverlayStore = defineStore('overlay', () => {
|
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
function abortAll() {
|
|
19
|
+
registry.value.forEach(overlay => overlay.abort())
|
|
20
|
+
}
|
|
21
|
+
|
|
18
22
|
function isCurrent(key: symbol): boolean {
|
|
19
23
|
return Array.from(registry.value.keys()).at(-1) === key
|
|
20
24
|
}
|
|
@@ -27,6 +31,7 @@ export const useOverlayStore = defineStore('overlay', () => {
|
|
|
27
31
|
overlays: computed(() => Array.from(registry.value.values())),
|
|
28
32
|
register,
|
|
29
33
|
unregister,
|
|
34
|
+
abortAll,
|
|
30
35
|
isCurrent,
|
|
31
36
|
get,
|
|
32
37
|
}
|
|
@@ -13,7 +13,7 @@ import type {
|
|
|
13
13
|
} from '@core/packages/overlay/types.ts'
|
|
14
14
|
import { useOverlayStore } from '@core/packages/overlay/use-overlay-store.ts'
|
|
15
15
|
import { reactiveComputed } from '@vueuse/core'
|
|
16
|
-
import { defineAsyncComponent, markRaw,
|
|
16
|
+
import { defineAsyncComponent, markRaw, nextTick, reactive, type AsyncComponentLoader, type Component } from 'vue'
|
|
17
17
|
import type { ComponentProps } from 'vue-component-type-helpers'
|
|
18
18
|
|
|
19
19
|
export function useOverlay<TComponent extends Component, const TEvents extends OverlayEvents<TComponent>>({
|
|
@@ -29,9 +29,11 @@ export function useOverlay<TComponent extends Component, const TEvents extends O
|
|
|
29
29
|
|
|
30
30
|
const component = defineAsyncComponent(componentLoader)
|
|
31
31
|
|
|
32
|
-
let
|
|
32
|
+
let currentOverlay: Overlay | undefined
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
function abort() {
|
|
35
|
+
currentOverlay?.abort()
|
|
36
|
+
}
|
|
35
37
|
|
|
36
38
|
function open<TOpenEvents extends OpenEvents<TComponent, TEvents>>(
|
|
37
39
|
...args: MaybeOptionalArgs<
|
|
@@ -45,8 +47,7 @@ export function useOverlay<TComponent extends Component, const TEvents extends O
|
|
|
45
47
|
) {
|
|
46
48
|
const { events: openEvents, props } = args[0] ?? {}
|
|
47
49
|
|
|
48
|
-
|
|
49
|
-
abortCurrent?.()
|
|
50
|
+
abort()
|
|
50
51
|
|
|
51
52
|
return new Promise<ExtractOverlayResponse<TComponent, TEvents, TOpenEvents>>(resolve => {
|
|
52
53
|
const definitionEvents = events as Record<string, true | OverlayEventHandler>
|
|
@@ -60,16 +61,30 @@ export function useOverlay<TComponent extends Component, const TEvents extends O
|
|
|
60
61
|
props: {},
|
|
61
62
|
status: 'idle',
|
|
62
63
|
lastTrigger: undefined,
|
|
64
|
+
abort: () => settle({ event: OVERLAY_ABORT_EVENT, payload: undefined }),
|
|
63
65
|
})
|
|
64
66
|
|
|
65
|
-
|
|
67
|
+
currentOverlay = overlay
|
|
68
|
+
|
|
69
|
+
async function settle(response: ExtractOverlayResponse<TComponent, TEvents, TOpenEvents>) {
|
|
70
|
+
if (overlay.status === 'settled') {
|
|
71
|
+
return
|
|
72
|
+
}
|
|
73
|
+
|
|
66
74
|
overlay.status = 'settled'
|
|
67
|
-
|
|
75
|
+
|
|
76
|
+
// The `leave` transition freezes the DOM in its last painted state,
|
|
77
|
+
// so paint a non-busy frame before removing the overlay
|
|
78
|
+
await nextTick()
|
|
79
|
+
|
|
68
80
|
resolve(response)
|
|
81
|
+
|
|
69
82
|
overlayStore.unregister(overlay)
|
|
70
|
-
}
|
|
71
83
|
|
|
72
|
-
|
|
84
|
+
if (currentOverlay === overlay) {
|
|
85
|
+
currentOverlay = undefined
|
|
86
|
+
}
|
|
87
|
+
}
|
|
73
88
|
|
|
74
89
|
const handleEvent = createEventHandler({
|
|
75
90
|
overlay,
|
|
@@ -95,5 +110,5 @@ export function useOverlay<TComponent extends Component, const TEvents extends O
|
|
|
95
110
|
})
|
|
96
111
|
}
|
|
97
112
|
|
|
98
|
-
return { open }
|
|
113
|
+
return { open, abort }
|
|
99
114
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createQueryBuilderGroup } from '@core/packages/query-builder/group/create-query-builder-group'
|
|
1
|
+
import { createQueryBuilderGroup } from '@core/packages/query-builder/group/create-query-builder-group.ts'
|
|
2
2
|
import type { QueryBuilderNode, QueryBuilderSchema } from '@core/packages/query-builder/types.ts'
|
|
3
3
|
|
|
4
4
|
export function buildRootGroup(rootNode: QueryBuilderNode, schema: QueryBuilderSchema) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createQueryBuilderFilter } from '@core/packages/query-builder/filter/create-query-builder-filter'
|
|
1
|
+
import { createQueryBuilderFilter } from '@core/packages/query-builder/filter/create-query-builder-filter.ts'
|
|
2
2
|
import { getComparisonOperator } from '@core/packages/query-builder/node/get-comparison-operator.ts'
|
|
3
3
|
import type { QueryBuilderSchema } from '@core/packages/query-builder/types.ts'
|
|
4
4
|
import type { Comparison as ComparisonNode } from 'complex-matcher'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createQueryBuilderFilter } from '@core/packages/query-builder/filter/create-query-builder-filter'
|
|
1
|
+
import { createQueryBuilderFilter } from '@core/packages/query-builder/filter/create-query-builder-filter.ts'
|
|
2
2
|
import type { QueryBuilderSchema } from '@core/packages/query-builder/types.ts'
|
|
3
3
|
import type { GlobPattern as GlobPatternNode } from 'complex-matcher'
|
|
4
4
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { createQueryBuilderGroup } from '@core/packages/query-builder/group/create-query-builder-group'
|
|
2
|
-
import { handleNode } from '@core/packages/query-builder/node/handle-node'
|
|
1
|
+
import { createQueryBuilderGroup } from '@core/packages/query-builder/group/create-query-builder-group.ts'
|
|
2
|
+
import { handleNode } from '@core/packages/query-builder/node/handle-node.ts'
|
|
3
3
|
import type { QueryBuilderSchema } from '@core/packages/query-builder/types.ts'
|
|
4
4
|
import { And as AndNode, type Or as OrNode } from 'complex-matcher'
|
|
5
5
|
|