diff --git a/dashboard/package-lock.json b/dashboard/package-lock.json index 6c3a95376..0a139b327 100644 --- a/dashboard/package-lock.json +++ b/dashboard/package-lock.json @@ -25,9 +25,9 @@ "jquery": "^3.7.1", "marked": "^15.0.7", "moment-timezone": "^0.5.48", - "pankow": "^2.11.1", - "sass": "^1.86.0", - "vite": "^6.2.3", + "pankow": "^3.0.0", + "sass": "^1.86.1", + "vite": "^6.2.4", "vue": "^3.5.13", "vue-i18n": "^11.1.2", "vue-router": "^4.5.0" @@ -2350,9 +2350,9 @@ } }, "node_modules/pankow": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/pankow/-/pankow-2.11.1.tgz", - "integrity": "sha512-Hw9fHwcm2v02rts1/2Q0FOGlinCqZb4pm7nL6eHBw1g0NBIYso8Tp8B5fJyX0DtB+zzaZJ9x4BsoDu4za4HmFw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pankow/-/pankow-3.0.0.tgz", + "integrity": "sha512-CtuNeQVXna4I2viS621HfhvLLG5D5aBir0f7S68c9qJicjw4QJE6Tu9Kt8pBjMheFLPBRJm3FNvC19svq8UyJw==", "license": "ISC", "dependencies": { "@fontsource/inter": "^5.2.5", @@ -2517,9 +2517,9 @@ } }, "node_modules/sass": { - "version": "1.86.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.86.0.tgz", - "integrity": "sha512-zV8vGUld/+mP4KbMLJMX7TyGCuUp7hnkOScgCMsWuHtns8CWBoz+vmEhoGMXsaJrbUP8gj+F1dLvVe79sK8UdA==", + "version": "1.86.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.86.1.tgz", + "integrity": "sha512-Yaok4XELL1L9Im/ZUClKu//D2OP1rOljKj0Gf34a+GzLbMveOzL7CfqYo+JUa5Xt1nhTCW+OcKp/FtR7/iqj1w==", "license": "MIT", "dependencies": { "chokidar": "^4.0.0", @@ -2639,9 +2639,9 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "node_modules/vite": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.3.tgz", - "integrity": "sha512-IzwM54g4y9JA/xAeBPNaDXiBF8Jsgl3VBQ2YQ/wOY6fyW3xMdSoltIV3Bo59DErdqdE6RxUfv8W69DvUorE4Eg==", + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.4.tgz", + "integrity": "sha512-veHMSew8CcRzhL5o8ONjy8gkfmFJAd5Ac16oxBUjlwgX3Gq2Wqr+qNC3TjPIpy7TPV/KporLga5GT9HqdrCizw==", "license": "MIT", "dependencies": { "esbuild": "^0.25.0", @@ -4144,9 +4144,9 @@ } }, "pankow": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/pankow/-/pankow-2.11.1.tgz", - "integrity": "sha512-Hw9fHwcm2v02rts1/2Q0FOGlinCqZb4pm7nL6eHBw1g0NBIYso8Tp8B5fJyX0DtB+zzaZJ9x4BsoDu4za4HmFw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pankow/-/pankow-3.0.0.tgz", + "integrity": "sha512-CtuNeQVXna4I2viS621HfhvLLG5D5aBir0f7S68c9qJicjw4QJE6Tu9Kt8pBjMheFLPBRJm3FNvC19svq8UyJw==", "requires": { "@fontsource/inter": "^5.2.5", "@fortawesome/fontawesome-free": "^6.7.2", @@ -4246,9 +4246,9 @@ } }, "sass": { - "version": "1.86.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.86.0.tgz", - "integrity": "sha512-zV8vGUld/+mP4KbMLJMX7TyGCuUp7hnkOScgCMsWuHtns8CWBoz+vmEhoGMXsaJrbUP8gj+F1dLvVe79sK8UdA==", + "version": "1.86.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.86.1.tgz", + "integrity": "sha512-Yaok4XELL1L9Im/ZUClKu//D2OP1rOljKj0Gf34a+GzLbMveOzL7CfqYo+JUa5Xt1nhTCW+OcKp/FtR7/iqj1w==", "requires": { "@parcel/watcher": "^2.4.1", "chokidar": "^4.0.0", @@ -4323,9 +4323,9 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "vite": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.3.tgz", - "integrity": "sha512-IzwM54g4y9JA/xAeBPNaDXiBF8Jsgl3VBQ2YQ/wOY6fyW3xMdSoltIV3Bo59DErdqdE6RxUfv8W69DvUorE4Eg==", + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.4.tgz", + "integrity": "sha512-veHMSew8CcRzhL5o8ONjy8gkfmFJAd5Ac16oxBUjlwgX3Gq2Wqr+qNC3TjPIpy7TPV/KporLga5GT9HqdrCizw==", "requires": { "esbuild": "^0.25.0", "fsevents": "~2.3.3", diff --git a/dashboard/package.json b/dashboard/package.json index 2b4107b83..fafdca6c3 100644 --- a/dashboard/package.json +++ b/dashboard/package.json @@ -26,9 +26,9 @@ "jquery": "^3.7.1", "marked": "^15.0.7", "moment-timezone": "^0.5.48", - "pankow": "^2.11.1", - "sass": "^1.86.0", - "vite": "^6.2.3", + "pankow": "^3.0.0", + "sass": "^1.86.1", + "vite": "^6.2.4", "vue": "^3.5.13", "vue-i18n": "^11.1.2", "vue-router": "^4.5.0" diff --git a/dashboard/src/components/AppArchive.vue b/dashboard/src/components/AppArchive.vue index e6803700b..5dd6a931e 100644 --- a/dashboard/src/components/AppArchive.vue +++ b/dashboard/src/components/AppArchive.vue @@ -5,7 +5,7 @@ const i18n = useI18n(); const t = i18n.t; import { ref, onMounted, useTemplateRef } from 'vue'; -import { Button, ButtonGroup, InputGroup, FormGroup, TextInput, Dropdown, TableView, InputDialog, Dialog } from 'pankow'; +import { Button, ButtonGroup, InputGroup, FormGroup, TextInput, SingleSelect, TableView, InputDialog, Dialog } from 'pankow'; import { prettyLongDate } from 'pankow/utils'; import { API_ORIGIN, SECRET_PLACEHOLDER } from '../constants.js'; import Section from '../components/Section.vue'; @@ -263,7 +263,7 @@ onMounted(async () => { - + @@ -272,7 +272,7 @@ onMounted(async () => { {{ domain.description }} - + diff --git a/dashboard/src/components/AppInstallDialog.vue b/dashboard/src/components/AppInstallDialog.vue index 03e2a6141..6415f9c76 100644 --- a/dashboard/src/components/AppInstallDialog.vue +++ b/dashboard/src/components/AppInstallDialog.vue @@ -2,7 +2,7 @@ import { ref, computed, useTemplateRef, onMounted } from 'vue'; import { marked } from 'marked'; -import { Button, Dialog, Dropdown, FormGroup, TextInput, InputGroup } from 'pankow'; +import { Button, Dialog, SingleSelect, FormGroup, TextInput, InputGroup } from 'pankow'; import { prettyDate, prettyFileSize } from 'pankow/utils'; import AccessControl from './AccessControl.vue'; import PortBindings from './PortBindings.vue'; @@ -53,19 +53,25 @@ function setStep(newStep) { const location = ref(''); const accessRestrictionOption = ref(ACL_OPTIONS.ANY); const accessRestrictionAcl = ref({ users: [], groups: [] }); -const domain = ref({}); +const domain = ref(''); +const domainProvider = ref(''); const tcpPorts = ref({}); const udpPorts = ref({}); const secondaryDomains = ref({}); const upstreamUri = ref(''); +function onDomainChange() { + const tmp = domains.value.find(d => d.domain === domain.value); + domainProvider.value = tmp ? tmp.provider : ''; +} + async function submit() { formError.value = {}; busy.value = true; const config = { subdomain: location.value, - domain: domain.value.domain, + domain: domain.value, accessRestriction: accessRestrictionOption.value === ACL_OPTIONS.ANY ? null : (accessRestrictionOption.value === ACL_OPTIONS.NOSSO ? null : accessRestrictionAcl.value) }; @@ -127,7 +133,7 @@ onMounted(async () => { if (error) return console.error(error); // preselect with dashboard domain - domain.value = domains.value.find(d => d.domain === result.adminDomain) || domains.value[0]; + domain.value = (domains.value.find(d => d.domain === result.adminDomain) || domains.value[0]).domain; }); defineExpose({ @@ -193,19 +199,19 @@ defineExpose({ - +
{{ formError.location }}
-

+

{{ port.description }} - + diff --git a/dashboard/src/components/AppPasswords.vue b/dashboard/src/components/AppPasswords.vue index 7824e2cc3..30f22e18e 100644 --- a/dashboard/src/components/AppPasswords.vue +++ b/dashboard/src/components/AppPasswords.vue @@ -6,7 +6,7 @@ const t = i18n.t; import moment from 'moment-timezone'; import { ref, onMounted, useTemplateRef, computed } from 'vue'; -import { Button, Dialog, Dropdown, FormGroup, TextInput, TableView, InputDialog } from 'pankow'; +import { Button, Dialog, SingleSelect, FormGroup, TextInput, TableView, InputDialog } from 'pankow'; import { prettyLongDate, copyToClipboard } from 'pankow/utils'; import Section from './Section.vue'; import AppPasswordsModel from '../models/AppPasswordsModel.js'; @@ -173,7 +173,7 @@ onMounted(async () => { - {{ dropdownValueWithKey }} + diff --git a/dashboard/src/components/BackupDialog.vue b/dashboard/src/components/BackupDialog.vue index af64370de..a82cca520 100644 --- a/dashboard/src/components/BackupDialog.vue +++ b/dashboard/src/components/BackupDialog.vue @@ -1,7 +1,7 @@