diff --git a/apps/client/src/features/app-settings/AppSettings.tsx b/apps/client/src/features/app-settings/AppSettings.tsx
index e81a46cdb..2087e198e 100644
--- a/apps/client/src/features/app-settings/AppSettings.tsx
+++ b/apps/client/src/features/app-settings/AppSettings.tsx
@@ -32,10 +32,10 @@ export default function AppSettings() {
{selectedPanel === 'project' && }
{selectedPanel === 'general' && }
+ {selectedPanel === 'project_settings' && }
{selectedPanel === 'sources' && }
{selectedPanel === 'interface' && }
{selectedPanel === 'integrations' && }
- {selectedPanel === 'project_settings' && }
{selectedPanel === 'about' && }
{selectedPanel === 'log' && }
diff --git a/apps/client/src/features/app-settings/panel/Panel.module.scss b/apps/client/src/features/app-settings/panel/Panel.module.scss
index 5f316e0c2..634b24cd2 100644
--- a/apps/client/src/features/app-settings/panel/Panel.module.scss
+++ b/apps/client/src/features/app-settings/panel/Panel.module.scss
@@ -98,7 +98,7 @@ $inner-padding: 1rem;
}
.listGroup {
- padding: 1rem 2rem 0 2rem;
+ padding: 0 2rem;
> li:not(:last-child) {
border-bottom: 1px solid $white-10;
@@ -130,23 +130,22 @@ $inner-padding: 1rem;
.divider {
border-top: 1px solid $white-10;
margin: 1rem -2rem;
+ z-index: 999;
}
-$loader-size: 4rem;
-
.overlay {
position: absolute;
z-index: 10;
- width: calc(100% - 2rem);
- left: 1rem;
- height: calc(80% - 1rem);
+ width: 100%;
+ height: 100%;
+ backdrop-filter: blur(2px);
display: grid;
place-content: center;
- backdrop-filter: blur(5px);
- background-color: rgba(0, 0, 0, 0.01);
+ background-color: $black-10;
}
.loader {
+ $loader-size: 4rem;
width: $loader-size;
height: $loader-size;
background: $blue-500;
diff --git a/apps/client/src/features/app-settings/panel/PanelUtils.tsx b/apps/client/src/features/app-settings/panel/PanelUtils.tsx
index 2725facd1..919670933 100644
--- a/apps/client/src/features/app-settings/panel/PanelUtils.tsx
+++ b/apps/client/src/features/app-settings/panel/PanelUtils.tsx
@@ -82,10 +82,13 @@ export function Divider() {
return
;
}
-export function Loader() {
+export function Loader({ isLoading }: { isLoading: boolean }) {
+ if (!isLoading) {
+ return null;
+ }
return (
);
}
diff --git a/apps/client/src/features/app-settings/panel/general-panel/GeneralPanelForm.tsx b/apps/client/src/features/app-settings/panel/general-panel/GeneralPanelForm.tsx
index 5226f5d19..23a470182 100644
--- a/apps/client/src/features/app-settings/panel/general-panel/GeneralPanelForm.tsx
+++ b/apps/client/src/features/app-settings/panel/general-panel/GeneralPanelForm.tsx
@@ -59,6 +59,8 @@ export default function GeneralPanelForm() {
reset(data);
};
+ const isLoading = status === 'pending';
+
return (
@@ -82,76 +84,79 @@ export default function GeneralPanelForm() {
{submitError && {submitError}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
);
diff --git a/apps/client/src/features/app-settings/panel/general-panel/UrlPresetsForm.tsx b/apps/client/src/features/app-settings/panel/general-panel/UrlPresetsForm.tsx
index 27817e36e..922aac1d1 100644
--- a/apps/client/src/features/app-settings/panel/general-panel/UrlPresetsForm.tsx
+++ b/apps/client/src/features/app-settings/panel/general-panel/UrlPresetsForm.tsx
@@ -84,11 +84,11 @@ export default function UrlPresetsForm() {
});
};
- const isPending = status === 'pending';
+ const isLoading = status === 'pending';
const canSubmit = !isSubmitting && isDirty && isValid;
return (
-
+
URL Presets
@@ -102,21 +102,21 @@ export default function UrlPresetsForm() {
- {isPending && }
+
+
+
+ URL Presets
+
+
+ Custom presets allow providing a short name for any ontime URL.
+ - Providing dynamic URLs for automation or unattended screens
- Simplifying complex URLs
+
+
+ See the docs
+
+
-
-
-
- URL Presets
-
-
- Custom presets allow providing a short name for any ontime URL.
- - Providing dynamic URLs for automation or unattended screens
- Simplifying complex URLs
-
-
- See the docs
-
-
+
Manage presets
} size='sm' onClick={addNew}>
diff --git a/apps/client/src/features/app-settings/panel/general-panel/ViewSettingsForm.tsx b/apps/client/src/features/app-settings/panel/general-panel/ViewSettingsForm.tsx
index d3dbb08ae..f4fb860e5 100644
--- a/apps/client/src/features/app-settings/panel/general-panel/ViewSettingsForm.tsx
+++ b/apps/client/src/features/app-settings/panel/general-panel/ViewSettingsForm.tsx
@@ -16,8 +16,8 @@ import style from './GeneralPanel.module.scss';
const cssOverrideDocsUrl = 'https://docs.getontime.no/features/custom-styling/';
export default function ViewSettingsForm() {
- const { data, status, refetch, isFetching } = useViewSettings();
- const { data: info, isFetching: isFetchingInfo } = useInfo();
+ const { data, status, refetch } = useViewSettings();
+ const { data: info, status: infoStatus } = useInfo();
const {
control,
@@ -64,7 +64,7 @@ export default function ViewSettingsForm() {
return null;
}
- const disableInputs = status === 'pending';
+ const isLoading = status === 'pending' || infoStatus === 'pending';
return (
@@ -81,55 +81,56 @@ export default function ViewSettingsForm() {
- {isFetching || isFetchingInfo ? : null}
-
-
-
-
- You can override the styles of the viewers with a custom CSS file.
- {info?.cssOverride && `In your installation the file is at ${info?.cssOverride}`}
-
-
- See the docs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ You can override the styles of the viewers with a custom CSS file.
+ {info?.cssOverride && `In your installation the file is at ${info?.cssOverride}`}
+
+
+ See the docs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
);
diff --git a/apps/client/src/features/app-settings/panel/integrations-panel/HttpIntegrations.tsx b/apps/client/src/features/app-settings/panel/integrations-panel/HttpIntegrations.tsx
index bb2f18b1c..884e19aa8 100644
--- a/apps/client/src/features/app-settings/panel/integrations-panel/HttpIntegrations.tsx
+++ b/apps/client/src/features/app-settings/panel/integrations-panel/HttpIntegrations.tsx
@@ -16,7 +16,7 @@ import { cycles } from './integrationUtils';
import style from './IntegrationsPanel.module.css';
export default function HttpIntegrations() {
- const { data } = useHttpSettings();
+ const { data, status } = useHttpSettings();
const { mutateAsync } = usePostHttpSettings();
const {
@@ -69,6 +69,7 @@ export default function HttpIntegrations() {
};
const canSubmit = !isSubmitting && isDirty && isValid;
+ const isLoading = status === 'pending';
return (
@@ -93,6 +94,7 @@ export default function HttpIntegrations() {
+
{errors?.root && {errors.root.message}}
diff --git a/apps/client/src/features/app-settings/panel/integrations-panel/OscIntegrations.tsx b/apps/client/src/features/app-settings/panel/integrations-panel/OscIntegrations.tsx
index fae2dbde0..9e7c36751 100644
--- a/apps/client/src/features/app-settings/panel/integrations-panel/OscIntegrations.tsx
+++ b/apps/client/src/features/app-settings/panel/integrations-panel/OscIntegrations.tsx
@@ -16,7 +16,7 @@ import { cycles } from './integrationUtils';
import style from './IntegrationsPanel.module.css';
export default function OscIntegrations() {
- const { data } = useOscSettings();
+ const { data, status } = useOscSettings();
const { mutateAsync } = useOscSettingsMutation();
const {
@@ -75,6 +75,7 @@ export default function OscIntegrations() {
};
const canSubmit = !isSubmitting && isDirty && isValid;
+ const isLoading = status === 'pending';
return (
@@ -100,6 +101,7 @@ export default function OscIntegrations() {
+
OSC Settings
{errors?.root && {errors.root.message}}
diff --git a/apps/client/src/features/app-settings/panel/project-panel/ManageProjects.tsx b/apps/client/src/features/app-settings/panel/project-panel/ManageProjects.tsx
index f90ebc560..07cfdaed5 100644
--- a/apps/client/src/features/app-settings/panel/project-panel/ManageProjects.tsx
+++ b/apps/client/src/features/app-settings/panel/project-panel/ManageProjects.tsx
@@ -51,6 +51,7 @@ export default function ManageProjects() {
const handleCloseForm = () => {
setIsCreatingProject(false);
};
+
return (
{
reset(data);
};
+
+ const isLoading = status === 'pending';
+
return (
@@ -70,6 +74,7 @@ export default function ProjectData() {
+