1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Add clusterIconSettingsComponentInjectionToken

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
Alex Andreev 2023-03-21 15:28:25 +03:00
parent 0f1f030a06
commit 9d4dbcecef
2 changed files with 26 additions and 0 deletions

View File

@ -0,0 +1,15 @@
import { getInjectionToken } from "@ogre-tools/injectable";
import type { ClusterPreferences } from "../../../common/cluster-types";
export interface ClusterIconSettingComponentProps {
preferences: ClusterPreferences;
}
export interface ClusterIconSettingsComponent {
id: string;
Component: React.ComponentType<ClusterIconSettingComponentProps>;
}
export const clusterIconSettingsComponentInjectionToken = getInjectionToken<ClusterIconSettingsComponent>({
id: "cluster-icon-settings-component-injection-token",
});

View File

@ -15,6 +15,7 @@ import { FilePicker, OverSizeLimitStyle } from "../file-picker";
import { MenuActions, MenuItem } from "../menu";
import type { ShowNotification } from "../notifications";
import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable";
import { ClusterIconSettingsComponent, clusterIconSettingsComponentInjectionToken } from "./cluster-settings-component-injection-token";
import type { ClusterIconMenuItem } from "./cluster-settings-menu-injection-token";
import { clusterIconSettingsMenuInjectionToken } from "./cluster-settings-menu-injection-token";
@ -25,6 +26,7 @@ export interface ClusterIconSettingProps {
interface Dependencies {
menuItems: IComputedValue<ClusterIconMenuItem[]>;
settingComponents: IComputedValue<ClusterIconSettingsComponent[]>;
showErrorNotification: ShowNotification;
}
@ -95,6 +97,14 @@ const NonInjectedClusterIconSetting = observer((props: ClusterIconSettingProps &
)}
</MenuActions>
</div>
{props.settingComponents.get().map(item => {
return (
<item.Component
key={item.id}
preferences={cluster.preferences}
/>
);
})}
</div>
);
});
@ -106,6 +116,7 @@ export const ClusterIconSetting = withInjectables<Dependencies, ClusterIconSetti
return {
...props,
menuItems: computedInjectMany(clusterIconSettingsMenuInjectionToken),
settingComponents: computedInjectMany(clusterIconSettingsComponentInjectionToken),
showErrorNotification: di.inject(showErrorNotificationInjectable),
};
},