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

Remove "group" from preference types, as it is exact replica of "item"

Co-authored-by: Janne Savolainen <janne.savolainen@live.fi>

Signed-off-by: Iku-turso <mikko.aspiala@gmail.com>
This commit is contained in:
Iku-turso 2022-10-19 09:56:41 +03:00 committed by Janne Savolainen
parent ca3d3c7aed
commit 120c27a716
No known key found for this signature in database
GPG Key ID: 8C6CFB2FFFE8F68A
5 changed files with 25 additions and 40 deletions

View File

@ -3,9 +3,12 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import React from "react"; import React from "react";
import type { PreferencePageComponent } from "./preference-items/preference-item-injection-token"; import type {
PreferenceItemComponent,
PreferencePage,
} from "./preference-items/preference-item-injection-token";
export const getPreferencePage = (label: string): PreferencePageComponent => ({ children, item }) => ( export const getPreferencePage = (label: string): PreferenceItemComponent<PreferencePage> => ({ children, item }) => (
<section id={item.id} data-preference-page-test={item.id}> <section id={item.id} data-preference-page-test={item.id}>
<h2 data-preference-page-title-test={true}>{label}</h2> <h2 data-preference-page-title-test={true}>{label}</h2>

View File

@ -3,16 +3,29 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import type { PreferenceTypes } from "../../preference-item-injection-token";
import { preferenceItemInjectionToken } from "../../preference-item-injection-token"; import { preferenceItemInjectionToken } from "../../preference-item-injection-token";
import Gutter from "../../../../../../renderer/components/gutter/gutter";
import React from "react";
const PreferenceItemGroup = ({
children,
item,
}: {
children: React.ReactElement;
item: PreferenceTypes;
}) => <section id={item.id}>{children}</section>;
const kubectlGroupPreferenceItemInjectable = getInjectable({ const kubectlGroupPreferenceItemInjectable = getInjectable({
id: "kubectl-group-preference-item", id: "kubectl-group-preference-item",
instantiate: () => ({ instantiate: () => ({
kind: "group" as const, kind: "item" as const,
id: "kubectl", id: "kubectl",
parentId: "kubernetes-page", parentId: "kubernetes-page",
orderNumber: 10, orderNumber: 10,
Component: PreferenceItemGroup,
childrenSeparator: () => <Gutter size="xl" />,
}), }),
injectionToken: preferenceItemInjectionToken, injectionToken: preferenceItemInjectionToken,

View File

@ -6,13 +6,9 @@ import { getInjectionToken } from "@ogre-tools/injectable";
import type { IComputedValue } from "mobx"; import type { IComputedValue } from "mobx";
import type React from "react"; import type React from "react";
export type PreferenceItemComponent = React.ComponentType<{ export type PreferenceItemComponent<T> = React.ComponentType<{
children: React.ReactElement; children: React.ReactElement;
}>; item: T;
export type PreferencePageComponent = React.ComponentType<{
children: React.ReactElement;
item: PreferencePage;
}>; }>;
export interface PreferenceTab { export interface PreferenceTab {
@ -41,28 +37,20 @@ export interface PreferencePage {
parentId: string; parentId: string;
isShown?: IComputedValue<boolean> | boolean; isShown?: IComputedValue<boolean> | boolean;
childrenSeparator?: () => React.ReactElement; childrenSeparator?: () => React.ReactElement;
Component: PreferencePageComponent; Component: PreferenceItemComponent<PreferencePage>;
}
export interface PreferenceGroup {
kind: "group";
id: string;
parentId: string;
isShown?: IComputedValue<boolean> | boolean;
childrenSeparator?: () => React.ReactElement;
} }
export interface PreferenceItem { export interface PreferenceItem {
kind: "item"; kind: "item";
Component: PreferenceItemComponent;
id: string; id: string;
parentId: string; parentId: string;
orderNumber: number; orderNumber: number;
isShown?: IComputedValue<boolean> | boolean; isShown?: IComputedValue<boolean> | boolean;
childrenSeparator?: () => React.ReactElement; childrenSeparator?: () => React.ReactElement;
Component: PreferenceItemComponent<PreferenceItem>;
} }
export type PreferenceTypes = PreferenceTabGroup | PreferenceTab | PreferenceItem | PreferencePage | PreferenceGroup; export type PreferenceTypes = PreferenceTabGroup | PreferenceTab | PreferenceItem | PreferencePage;
export const preferenceItemInjectionToken = getInjectionToken<PreferenceTypes>({ export const preferenceItemInjectionToken = getInjectionToken<PreferenceTypes>({
id: "preference-item-injection-token", id: "preference-item-injection-token",

View File

@ -36,7 +36,6 @@ export const PreferencesNavigation = withInjectables<Dependencies>(
}, },
); );
const toNavigationHierarchy = (composite: Composite<PreferenceTypes | PreferenceTabsRoot>) => { const toNavigationHierarchy = (composite: Composite<PreferenceTypes | PreferenceTabsRoot>) => {
// Note: This makes tab groups and tabs without content not render anything in navigation. // Note: This makes tab groups and tabs without content not render anything in navigation.
if (!hasContent(composite)) { if (!hasContent(composite)) {
@ -57,10 +56,6 @@ const toNavigationHierarchy = (composite: Composite<PreferenceTypes | Preference
return emptyRender; return emptyRender;
} }
case "group": {
return emptyRender;
}
case "tab-group": { case "tab-group": {
return ( return (
<div data-preference-tab-group-test={value.id}> <div data-preference-tab-group-test={value.id}>

View File

@ -53,26 +53,12 @@ const toPreferenceItemHierarchy = (composite: Composite<PreferenceTypes>) => {
const value = composite.value; const value = composite.value;
switch (value.kind) { switch (value.kind) {
// Todo: rename to item-group
case "group": {
return (
<section id={value.id}>
<Map
items={composite.children}
getSeparator={value.childrenSeparator || DefaultSeparator}
>
{toPreferenceItemHierarchy}
</Map>
</section>
);
}
case "item": { case "item": {
const Component = value.Component; const Component = value.Component;
return ( return (
<div data-preference-item-test={composite.id}> <div data-preference-item-test={composite.id}>
<Component> <Component item={value}>
<Map <Map
items={composite.children} items={composite.children}
getSeparator={value.childrenSeparator} getSeparator={value.childrenSeparator}