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