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

chore: extract @k8slens/notifications

Signed-off-by: Gabriel <gaccettola@mirantis.com>
This commit is contained in:
Gabriel 2023-06-01 19:10:29 +02:00 committed by Gabriel Accettola
parent f602ce8f46
commit 8b69c12ed4
102 changed files with 399 additions and 192 deletions

View File

@ -15,6 +15,7 @@ import { loggerFeature } from "@k8slens/logger";
import { randomFeature } from "@k8slens/random";
import { kubeApiSpecificsFeature } from "@k8slens/kube-api-specifics";
import { prometheusFeature } from "@k8slens/prometheus";
import { notificationsFeature } from "@k8slens/notifications";
const environment = "main";
@ -36,6 +37,7 @@ runInAction(() => {
messagingFeatureForMain,
randomFeature,
kubeApiSpecificsFeature,
notificationsFeature,
);
try {

View File

@ -5,6 +5,7 @@ import "@k8slens/tooltip/styles";
import "@k8slens/resizing-anchor/styles";
import "@k8slens/icon/styles";
import "@k8slens/animate/styles";
import "@k8slens/notifications/styles";
import { runInAction } from "mobx";
import {
@ -31,6 +32,7 @@ import { animateFeature } from "@k8slens/animate";
import { clusterSidebarFeature } from "@k8slens/cluster-sidebar";
import { randomFeature } from "@k8slens/random";
import { kubeApiSpecificsFeature } from "@k8slens/kube-api-specifics";
import { notificationsFeature } from "@k8slens/notifications";
const environment = "renderer";
@ -60,6 +62,7 @@ runInAction(() => {
clusterSidebarFeature,
randomFeature,
kubeApiSpecificsFeature,
notificationsFeature,
);
autoRegister({

41
package-lock.json generated
View File

@ -3835,6 +3835,10 @@
"resolved": "packages/technical-features/prometheus",
"link": true
},
"node_modules/@k8slens/notifications": {
"resolved": "packages/ui-components/notifications",
"link": true
},
"node_modules/@k8slens/random": {
"resolved": "packages/random-id",
"link": true
@ -34341,6 +34345,7 @@
"@k8slens/metrics": "^6.5.0-alpha.7",
"@k8slens/node-fetch": "^6.5.0-alpha.3",
"@k8slens/prometheus": "^1.0.0",
"@k8slens/notifications": "^1.0.0",
"@k8slens/random": "^1.0.0",
"@k8slens/react-application": "^1.0.0-alpha.5",
"@k8slens/resizing-anchor": "^1.0.0-alpha.5",
@ -35711,6 +35716,42 @@
"winston": "^3.8.2"
}
},
"packages/ui-components/notifications": {
"name": "@k8slens/notifications",
"version": "1.0.0",
"license": "MIT",
"devDependencies": {
"@k8slens/eslint-config": "^6.5.0",
"@k8slens/webpack": "^6.5.0"
},
"peerDependencies": {
"@k8slens/animate": "^1.0.0-alpha.0",
"@k8slens/application": "^6.5.0",
"@k8slens/event-emitter": "^1.0.0",
"@k8slens/feature-core": "^6.5.0-alpha.0",
"@k8slens/icon": "^1.0.0-alpha.7",
"@k8slens/json-api": "^1.0.0-alpha.3",
"@k8slens/logger": "^1.0.0",
"@k8slens/react-application": "^1.0.0-alpha.5",
"@k8slens/run-many": "^1.0.0",
"@k8slens/tooltip": "^1.0.0",
"@k8slens/utilities": "^1.0.0-alpha.1",
"@ogre-tools/fp": "^17.2.0",
"@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"@ogre-tools/injectable-extension-for-mobx": "^17.2.0",
"@ogre-tools/injectable-react": "^17.2.0",
"auto-bind": "^4.0.0",
"lodash": "^4.17.21",
"mobx": "^6.8.0",
"mobx-react": "^7.6.0",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-router-dom": "^5.3.4",
"uuid": "^8.3.2",
"winston": "^3.8.2"
}
},
"packages/ui-components/resizing-anchor": {
"name": "@k8slens/resizing-anchor",
"version": "1.0.0",

View File

@ -27,6 +27,7 @@
"mkdocs:serve-local": "docker build -t mkdocs-serve-local:latest mkdocs/ && docker run --rm -it -p 8000:8000 -v ${PWD}:/docs mkdocs-serve-local:latest",
"mkdocs:verify": "docker build -t mkdocs-serve-local:latest mkdocs/ && docker run --rm -v ${PWD}:/docs mkdocs-serve-local:latest build --strict",
"test:unit": "lerna run --stream test:unit --no-bail",
"test:unit:updatesnapshot": "lerna run --stream test:unit --no-bail -- -u",
"test:unit:watch": "jest --watch",
"test:integration": "lerna run --stream test:integration --no-bail",
"bump-version": "lerna version --no-git-tag-version --no-push",

View File

@ -207,6 +207,7 @@
"@hapi/call": "^9.0.1",
"@hapi/subtext": "^7.1.0",
"@k8slens/animate": "^1.0.0-alpha.0",
"@k8slens/notifications": "^1.0.0",
"@k8slens/application": "^6.5.0-alpha.0",
"@k8slens/application-for-electron-main": "^6.5.0-alpha.0",
"@k8slens/button": "^1.0.0-alpha.5",

View File

@ -16,15 +16,18 @@ import { ConfirmDialog as _ConfirmDialog } from "../../renderer/components/confi
import type { ConfirmDialogBooleanParams, ConfirmDialogParams, ConfirmDialogProps } from "../../renderer/components/confirm-dialog";
import openConfirmDialogInjectable from "../../renderer/components/confirm-dialog/open.injectable";
import confirmInjectable from "../../renderer/components/confirm-dialog/confirm.injectable";
import notificationsStoreInjectable from "../../renderer/components/notifications/notifications-store.injectable";
import {
notificationsStoreInjectable,
showCheckedErrorNotificationInjectable,
showErrorNotificationInjectable,
showInfoNotificationInjectable,
showShortInfoNotificationInjectable,
showSuccessNotificationInjectable,
} from "@k8slens/notifications";
import podStoreInjectable from "../../renderer/components/workloads-pods/store.injectable";
import getDetailsUrlInjectable from "../../renderer/components/kube-detail-params/get-details-url.injectable";
import showDetailsInjectable from "../../renderer/components/kube-detail-params/show-details.injectable";
import showCheckedErrorNotificationInjectable from "../../renderer/components/notifications/show-checked-error.injectable";
import showErrorNotificationInjectable from "../../renderer/components/notifications/show-error-notification.injectable";
import showInfoNotificationInjectable from "../../renderer/components/notifications/show-info-notification.injectable";
import showShortInfoNotificationInjectable from "../../renderer/components/notifications/show-short-info.injectable";
import showSuccessNotificationInjectable from "../../renderer/components/notifications/show-success-notification.injectable";
// layouts
export * from "../../renderer/components/layout/main-layout";
@ -72,14 +75,14 @@ export * from "../../renderer/components/line-progress";
export * from "../../renderer/components/menu";
export {
NotificationStatus,
type NotificationStatus,
type CreateNotificationOptions,
type Notification,
type NotificationId,
type NotificationMessage,
type ShowNotification,
type NotificationsStore,
} from "../../renderer/components/notifications";
} from"@k8slens/notifications";
export const Notifications = {
ok: asLegacyGlobalFunctionForExtensionApi(showSuccessNotificationInjectable),

View File

@ -19,7 +19,7 @@ import downloadPlatformUpdateInjectable from "../../main/download-update/downloa
import selectedUpdateChannelInjectable from "../../common/selected-update-channel.injectable";
import type { IComputedValue } from "mobx";
import setUpdateOnQuitInjectable from "../../../../main/electron-app/features/set-update-on-quit.injectable";
import showInfoNotificationInjectable from "../../../../renderer/components/notifications/show-info-notification.injectable";
import { showInfoNotificationInjectable } from "@k8slens/notifications";
import processCheckingForUpdatesInjectable from "../../main/process-checking-for-updates.injectable";
import type { DiContainer } from "@ogre-tools/injectable";
import getBuildVersionInjectable

View File

@ -14,8 +14,7 @@ import type { AsyncFnMock } from "@async-fn/jest";
import asyncFn from "@async-fn/jest";
import dockStoreInjectable from "../../../renderer/components/dock/dock/store.injectable";
import { Namespace } from "@k8slens/kube-object";
import showSuccessNotificationInjectable from "../../../renderer/components/notifications/show-success-notification.injectable";
import showErrorNotificationInjectable from "../../../renderer/components/notifications/show-error-notification.injectable";
import { showSuccessNotificationInjectable, showErrorNotificationInjectable } from "@k8slens/notifications";
import readJsonFileInjectable from "../../../common/fs/read-json-file.injectable";
import directoryForLensLocalStorageInjectable from "../../../common/directory-for-lens-local-storage/directory-for-lens-local-storage.injectable";
import hostedClusterIdInjectable from "../../../renderer/cluster-frame-context/hosted-cluster-id.injectable";
@ -25,7 +24,7 @@ import apiKubePatchInjectable from "../../../renderer/k8s/api-kube-patch.injecta
import apiKubeGetInjectable from "../../../renderer/k8s/api-kube-get.injectable";
import type { BaseKubeJsonApiObjectMetadata, KubeObjectScope, KubeJsonApiData } from "@k8slens/kube-object";
import { JsonApiErrorParsed } from "@k8slens/json-api";
import type { ShowNotification } from "../../../renderer/components/notifications";
import type { ShowNotification } from "@k8slens/notifications";
import React from "react";
describe("cluster/namespaces - edit namespace from new tab", () => {

View File

@ -15,8 +15,7 @@ import getActiveHelmRepositoriesInjectable from "../../main/helm/repositories/ge
import type { HelmRepo } from "../../common/helm/helm-repo";
import requestPublicHelmRepositoriesInjectable from "./child-features/preferences/renderer/adding-of-public-helm-repository/public-helm-repositories/request-public-helm-repositories.injectable";
import isPathInjectable from "../../renderer/components/input/validators/is-path.injectable";
import showSuccessNotificationInjectable from "../../renderer/components/notifications/show-success-notification.injectable";
import showErrorNotificationInjectable from "../../renderer/components/notifications/show-error-notification.injectable";
import { showSuccessNotificationInjectable, showErrorNotificationInjectable } from "@k8slens/notifications";
import type { AsyncResult } from "@k8slens/utilities";
import { testUsingFakeTime } from "../../test-utils/use-fake-time";

View File

@ -13,8 +13,7 @@ import helmBinaryPathInjectable from "../../main/helm/helm-binary-path.injectabl
import getActiveHelmRepositoriesInjectable from "../../main/helm/repositories/get-active-helm-repositories/get-active-helm-repositories.injectable";
import type { HelmRepo } from "../../common/helm/helm-repo";
import requestPublicHelmRepositoriesInjectable from "./child-features/preferences/renderer/adding-of-public-helm-repository/public-helm-repositories/request-public-helm-repositories.injectable";
import showSuccessNotificationInjectable from "../../renderer/components/notifications/show-success-notification.injectable";
import showErrorNotificationInjectable from "../../renderer/components/notifications/show-error-notification.injectable";
import { showSuccessNotificationInjectable, showErrorNotificationInjectable } from "@k8slens/notifications";
import type { AsyncResult } from "@k8slens/utilities";
describe("add helm repository from list in preferences", () => {

View File

@ -6,7 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable";
import { asyncComputed } from "@ogre-tools/injectable-react";
import { getActiveHelmRepositoriesChannel } from "../../../../../common/helm/get-active-helm-repositories-channel";
import { requestFromChannelInjectionToken } from "@k8slens/messaging";
import showErrorNotificationInjectable from "../../../../../renderer/components/notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
import helmRepositoriesErrorStateInjectable from "./helm-repositories-error-state.injectable";
import { runInAction } from "mobx";

View File

@ -6,8 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable";
import type { HelmRepo } from "../../../../../../../common/helm/helm-repo";
import { requestFromChannelInjectionToken } from "@k8slens/messaging";
import activeHelmRepositoriesInjectable from "../../active-helm-repositories.injectable";
import showErrorNotificationInjectable from "../../../../../../../renderer/components/notifications/show-error-notification.injectable";
import showSuccessNotificationInjectable from "../../../../../../../renderer/components/notifications/show-success-notification.injectable";
import { showErrorNotificationInjectable, showSuccessNotificationInjectable } from "@k8slens/notifications";
import { addHelmRepositoryChannel } from "../../../../../../../common/helm/add-helm-repository-channel";
const addHelmRepositoryInjectable = getInjectable({

View File

@ -15,7 +15,7 @@ import helmBinaryPathInjectable from "../../main/helm/helm-binary-path.injectabl
import { loggerInjectionToken } from "@k8slens/logger";
import type { Logger } from "@k8slens/logger";
import requestPublicHelmRepositoriesInjectable from "./child-features/preferences/renderer/adding-of-public-helm-repository/public-helm-repositories/request-public-helm-repositories.injectable";
import showErrorNotificationInjectable from "../../renderer/components/notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
import { noop } from "@k8slens/utilities";
describe("listing active helm repositories in preferences", () => {

View File

@ -15,8 +15,7 @@ import type { RequestHelmReleaseUpdate } from "../../common/k8s-api/endpoints/he
import requestHelmReleaseUpdateInjectable from "../../common/k8s-api/endpoints/helm-releases.api/request-update.injectable";
import type { RequestDetailedHelmRelease } from "../../renderer/components/helm-releases/release-details/release-details-model/request-detailed-helm-release.injectable";
import requestDetailedHelmReleaseInjectable from "../../renderer/components/helm-releases/release-details/release-details-model/request-detailed-helm-release.injectable";
import showSuccessNotificationInjectable from "../../renderer/components/notifications/show-success-notification.injectable";
import showCheckedErrorInjectable from "../../renderer/components/notifications/show-checked-error.injectable";
import { showSuccessNotificationInjectable, showCheckedErrorNotificationInjectable } from "@k8slens/notifications";
import getRandomUpgradeChartTabIdInjectable from "../../renderer/components/dock/upgrade-chart/get-random-upgrade-chart-tab-id.injectable";
import type { RequestHelmCharts } from "../../common/k8s-api/endpoints/helm-charts.api/request-charts.injectable";
import type { RequestHelmChartVersions } from "../../common/k8s-api/endpoints/helm-charts.api/request-versions.injectable";
@ -67,7 +66,7 @@ describe("showing details for helm release", () => {
builder.beforeWindowStart(({ windowDi }) => {
windowDi.override(getRandomUpgradeChartTabIdInjectable, () => () => "some-tab-id");
windowDi.override(showSuccessNotificationInjectable, () => showSuccessNotificationMock);
windowDi.override(showCheckedErrorInjectable, () => showCheckedErrorNotificationMock);
windowDi.override(showCheckedErrorNotificationInjectable, () => showCheckedErrorNotificationMock);
windowDi.override(requestDetailedHelmReleaseInjectable, () => requestDetailedHelmReleaseMock);
windowDi.override(requestHelmReleaseConfigurationInjectable, () => requestHelmReleaseConfigurationMock);
windowDi.override(requestHelmReleaseUpdateInjectable, () => requestHelmReleaseUpdateMock);

View File

@ -25,7 +25,7 @@ import reloadLogsInjectable from "../../renderer/components/dock/logs/reload-log
import setLogTabDataInjectable from "../../renderer/components/dock/logs/set-log-tab-data.injectable";
import stopLoadingLogsInjectable from "../../renderer/components/dock/logs/stop-loading-logs.injectable";
import { dockerPod } from "../../renderer/components/dock/logs/__test__/pod.mock";
import showErrorNotificationInjectable from "../../renderer/components/notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
import type { DiContainer } from "@ogre-tools/injectable";
import type { Container } from "@k8slens/kube-object";

View File

@ -3,7 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getMessageChannelListenerInjectable } from "@k8slens/messaging";
import showErrorNotificationInjectable from "../../../renderer/components/notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
import { shellSyncFailedChannel } from "../common/failure-channel";
const shellSyncFailureListenerInjectable = getMessageChannelListenerInjectable({

View File

@ -31,6 +31,7 @@ import { messagingFeature, testUtils as messagingTestUtils } from "@k8slens/mess
import { loggerFeature } from "@k8slens/logger";
import { randomFeature } from "@k8slens/random";
import { kubeApiSpecificsFeature } from "@k8slens/kube-api-specifics";
import { notificationsFeature } from "@k8slens/notifications";
export function getDiForUnitTesting() {
const environment = "main";
@ -48,6 +49,7 @@ export function getDiForUnitTesting() {
loggerFeature,
randomFeature,
kubeApiSpecificsFeature,
notificationsFeature,
);
});

View File

@ -16,7 +16,7 @@ import { loadConfigFromString, splitConfig } from "../../../common/kube-helpers"
import { docsUrl } from "../../../common/vars";
import { isDefined, iter } from "@k8slens/utilities";
import { Button } from "@k8slens/button";
import type { ShowNotification } from "../notifications";
import type { ShowNotification } from "@k8slens/notifications";
import { SettingLayout } from "../layout/setting-layout";
import { MonacoEditor } from "../monaco-editor";
import { withInjectables } from "@ogre-tools/injectable-react";
@ -27,8 +27,7 @@ import type { EmitAppEvent } from "../../../common/app-event-bus/emit-event.inje
import emitAppEventInjectable from "../../../common/app-event-bus/emit-event.injectable";
import type { GetDirnameOfPath } from "../../../common/path/get-dirname.injectable";
import getDirnameOfPathInjectable from "../../../common/path/get-dirname.injectable";
import showSuccessNotificationInjectable from "../notifications/show-success-notification.injectable";
import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable";
import { showSuccessNotificationInjectable, showErrorNotificationInjectable } from "@k8slens/notifications";
interface Option {
config: KubeConfig;

View File

@ -14,7 +14,7 @@ import type { CatalogEntityContextMenu } from "../../api/catalog-entity";
import { ItemListLayout } from "../item-object-list";
import { MainLayout } from "../layout/main-layout";
import { MenuActions, MenuItem } from "../menu";
import type { ShowNotification } from "../notifications";
import type { ShowNotification } from "@k8slens/notifications";
import { RenderDelay } from "../render-delay/render-delay";
import { CatalogAddButton } from "./catalog-add-button";
import type { CatalogEntityStore } from "./catalog-entity-store.injectable";
@ -35,7 +35,7 @@ import normalizeCatalogEntityContextMenuInjectable from "../../catalog/normalize
import type { Navigate } from "../../navigation/navigate.injectable";
import navigateInjectable from "../../navigation/navigate.injectable";
import type { StorageLayer } from "../../utils/storage-helper";
import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
import { browseCatalogTab } from "./catalog-browse-tab";
import catalogEntityStoreInjectable from "./catalog-entity-store.injectable";
import catalogPreviousActiveTabStorageInjectable from "./catalog-previous-active-tab-storage/catalog-previous-active-tab-storage.injectable";

View File

@ -12,7 +12,7 @@ import { Cluster } from "../../../../common/cluster/cluster";
import { getDiForUnitTesting } from "../../../getDiForUnitTesting";
import type { DiRender } from "../../test-utils/renderFor";
import { renderFor } from "../../test-utils/renderFor";
import showErrorNotificationInjectable from "../../notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
import statInjectable from "../../../../common/fs/stat.injectable";
import loadKubeconfigInjectable from "../../../../common/cluster/load-kubeconfig.injectable";

View File

@ -13,8 +13,8 @@ import type { Cluster } from "../../../common/cluster/cluster";
import { Avatar } from "../avatar";
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 type { ShowNotification } from "@k8slens/notifications";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
import { clusterIconSettingsComponentInjectionToken, clusterIconSettingsMenuInjectionToken } from "@k8slens/cluster-settings";
import type { ClusterIconMenuItem, ClusterIconSettingsComponent } from "@k8slens/cluster-settings";

View File

@ -8,10 +8,10 @@ import { observer } from "mobx-react";
import type { Cluster } from "../../../common/cluster/cluster";
import { Input } from "../input";
import { SubTitle } from "../layout/sub-title";
import type { ShowNotification } from "../notifications";
import type { ShowNotification } from "@k8slens/notifications";
import { Icon } from "@k8slens/icon";
import { withInjectables } from "@ogre-tools/injectable-react";
import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
import type { ValidateDirectory } from "../../../common/fs/validate-directory.injectable";
import validateDirectoryInjectable from "../../../common/fs/validate-directory.injectable";
import type { ResolveTilde } from "../../../common/path/resolve-tilde.injectable";

View File

@ -9,7 +9,7 @@ import React from "react";
import { autorun, makeObservable, observable } from "mobx";
import { disposeOnUnmount, observer } from "mobx-react";
import { DrawerTitle } from "../drawer";
import type { ShowNotification } from "../notifications";
import type { ShowNotification } from "@k8slens/notifications";
import { Button } from "@k8slens/button";
import type { KubeObjectDetailsProps } from "../kube-object-details";
import { ConfigMap } from "@k8slens/kube-object";
@ -17,8 +17,7 @@ import type { Logger } from "@k8slens/logger";
import type { ConfigMapStore } from "./store";
import { withInjectables } from "@ogre-tools/injectable-react";
import configMapStoreInjectable from "./store.injectable";
import showSuccessNotificationInjectable from "../notifications/show-success-notification.injectable";
import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable";
import { showSuccessNotificationInjectable, showErrorNotificationInjectable } from "@k8slens/notifications";
import { loggerInjectionToken } from "@k8slens/logger";
import { MonacoEditor } from "../monaco-editor";

View File

@ -25,8 +25,8 @@ import { withInjectables } from "@ogre-tools/injectable-react";
import closeAddQuotaDialogInjectable from "./close.injectable";
import isAddQuotaDialogOpenInjectable from "./is-open.injectable";
import { resourceQuotaApiInjectable } from "@k8slens/kube-api-specifics";
import type { ShowCheckedErrorNotification } from "../../notifications/show-checked-error.injectable";
import showCheckedErrorNotificationInjectable from "../../notifications/show-checked-error.injectable";
import type { ShowCheckedErrorNotification } from "@k8slens/notifications";
import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications";
export interface AddQuotaDialogProps extends DialogProps {
}

View File

@ -28,8 +28,8 @@ import closeAddSecretDialogInjectable from "./close.injectable";
import { secretApiInjectable } from "@k8slens/kube-api-specifics";
import showDetailsInjectable from "../../kube-detail-params/show-details.injectable";
import isAddSecretDialogOpenInjectable from "./is-open.injectable";
import type { ShowCheckedErrorNotification } from "../../notifications/show-checked-error.injectable";
import showCheckedErrorNotificationInjectable from "../../notifications/show-checked-error.injectable";
import type { ShowCheckedErrorNotification } from "@k8slens/notifications";
import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications";
export interface AddSecretDialogProps extends Partial<DialogProps> {
}

View File

@ -11,7 +11,7 @@ import { disposeOnUnmount, observer } from "mobx-react";
import { DrawerItem, DrawerTitle } from "../drawer";
import { Input } from "../input";
import { Button } from "@k8slens/button";
import type { ShowNotification } from "../notifications";
import type { ShowNotification, ShowCheckedErrorNotification } from "@k8slens/notifications";
import { base64, toggle } from "@k8slens/utilities";
import { Icon } from "@k8slens/icon";
import type { KubeObjectDetailsProps } from "../kube-object-details";
@ -21,9 +21,7 @@ import type { SecretStore } from "./store";
import { withInjectables } from "@ogre-tools/injectable-react";
import { loggerInjectionToken } from "@k8slens/logger";
import secretStoreInjectable from "./store.injectable";
import showSuccessNotificationInjectable from "../notifications/show-success-notification.injectable";
import type { ShowCheckedErrorNotification } from "../notifications/show-checked-error.injectable";
import showCheckedErrorNotificationInjectable from "../notifications/show-checked-error.injectable";
import { showSuccessNotificationInjectable, showCheckedErrorNotificationInjectable } from "@k8slens/notifications";
export interface SecretDetailsProps extends KubeObjectDetailsProps<Secret> {
}

View File

@ -16,10 +16,10 @@ import { Button } from "@k8slens/button";
import type { DialogProps } from "../dialog";
import { Dialog } from "../dialog";
import { Icon } from "@k8slens/icon";
import type { ShowNotification } from "../notifications";
import type { ShowNotification } from "@k8slens/notifications";
import { withInjectables } from "@ogre-tools/injectable-react";
import confirmDialogStateInjectable from "./state.injectable";
import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
export interface ConfirmDialogProps extends Partial<DialogProps> {
}

View File

@ -10,7 +10,7 @@ import { observer } from "mobx-react";
import React from "react";
import { Button } from "@k8slens/button";
import type { ShowNotification } from "../notifications";
import type { ShowNotification } from "@k8slens/notifications";
import { Dialog } from "../dialog";
import { Icon } from "@k8slens/icon";
import { Select } from "../select";
@ -26,7 +26,7 @@ import type { RequestDeleteCluster } from "../../../features/cluster/delete-dial
import requestDeleteClusterInjectable from "../../../features/cluster/delete-dialog/renderer/request-delete.injectable";
import type { SaveKubeconfig } from "./save-kubeconfig.injectable";
import saveKubeconfigInjectable from "./save-kubeconfig.injectable";
import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
import { isCurrentContext } from "./is-current-context";
import type { IsInLocalKubeconfig } from "./is-in-local-kubeconfig.injectable";
import isInLocalKubeconfigInjectable from "./is-in-local-kubeconfig.injectable";

View File

@ -9,13 +9,13 @@ import React from "react";
import type { DialogProps } from "../dialog";
import { Dialog } from "../dialog";
import { Wizard, WizardStep } from "../wizard";
import type { ShowNotification } from "../notifications";
import type { ShowNotification } from "@k8slens/notifications";
import { Button } from "@k8slens/button";
import { Icon } from "@k8slens/icon";
import { clipboard } from "electron";
import { kebabCase } from "lodash/fp";
import { withInjectables } from "@ogre-tools/injectable-react";
import showSuccessNotificationInjectable from "../notifications/show-success-notification.injectable";
import { showSuccessNotificationInjectable } from "@k8slens/notifications";
export interface LogsDialogProps extends DialogProps {
title: string;

View File

@ -13,7 +13,7 @@ import { observer } from "mobx-react";
import type { CreateResourceTabStore } from "./store";
import { EditorPanel } from "../editor-panel";
import { InfoPanel } from "../info-panel";
import type { ShowNotification } from "../../notifications";
import type { ShowNotification, ShowCheckedErrorNotification } from "@k8slens/notifications";
import type { Logger } from "@k8slens/logger";
import type { ApiManager } from "../../../../common/k8s-api/api-manager";
import { isObject, prevDefault } from "@k8slens/utilities";
@ -30,9 +30,7 @@ import navigateInjectable from "../../../navigation/navigate.injectable";
import type { RequestKubeObjectCreation } from "../../../../common/k8s-api/endpoints/resource-applier.api/request-update.injectable";
import requestKubeObjectCreationInjectable from "../../../../common/k8s-api/endpoints/resource-applier.api/request-update.injectable";
import { loggerInjectionToken } from "@k8slens/logger";
import type { ShowCheckedErrorNotification } from "../../notifications/show-checked-error.injectable";
import showSuccessNotificationInjectable from "../../notifications/show-success-notification.injectable";
import showCheckedErrorNotificationInjectable from "../../notifications/show-checked-error.injectable";
import { showSuccessNotificationInjectable, showCheckedErrorNotificationInjectable } from "@k8slens/notifications";
export interface CreateResourceProps {
tabId: string;

View File

@ -15,10 +15,9 @@ import assert from "assert";
import type { RequestPatchKubeResource } from "./request-patch-kube-resource.injectable";
import requestPatchKubeResourceInjectable from "./request-patch-kube-resource.injectable";
import { createPatch } from "rfc6902";
import type { ShowNotification } from "../../../notifications";
import showSuccessNotificationInjectable from "../../../notifications/show-success-notification.injectable";
import type { ShowNotification } from "@k8slens/notifications";
import { showSuccessNotificationInjectable, showErrorNotificationInjectable } from "@k8slens/notifications";
import React from "react";
import showErrorNotificationInjectable from "../../../notifications/show-error-notification.injectable";
import { createKubeApiURL, parseKubeApi } from "@k8slens/kube-api";
const editResourceModelInjectable = getInjectable({

View File

@ -14,12 +14,10 @@ import { Button } from "@k8slens/button";
import { Icon } from "@k8slens/icon";
import { Spinner } from "../spinner";
import type { DockStore, TabId } from "./dock/store";
import type { ShowNotification } from "../notifications";
import type { ShowNotification, ShowCheckedErrorNotification } from "@k8slens/notifications";
import { withInjectables } from "@ogre-tools/injectable-react";
import dockStoreInjectable from "./dock/store.injectable";
import type { ShowCheckedErrorNotification } from "../notifications/show-checked-error.injectable";
import showSuccessNotificationInjectable from "../notifications/show-success-notification.injectable";
import showCheckedErrorNotificationInjectable from "../notifications/show-checked-error.injectable";
import { showSuccessNotificationInjectable, showCheckedErrorNotificationInjectable } from "@k8slens/notifications";
export interface InfoPanelProps extends OptionalProps {
tabId: TabId;

View File

@ -7,7 +7,7 @@ import type { PodLogsQuery } from "@k8slens/kube-object";
import type { ResourceDescriptor } from "@k8slens/kube-api";
import { loggerInjectionToken } from "@k8slens/logger";
import openSaveFileDialogInjectable from "../../../utils/save-file.injectable";
import showErrorNotificationInjectable from "../../notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
import callForLogsInjectable from "./call-for-logs.injectable";
const downloadAllLogsInjectable = getInjectable({

View File

@ -7,7 +7,7 @@ import { when } from "mobx";
import { loggerInjectionToken } from "@k8slens/logger";
import { TerminalChannels } from "../../../../common/terminal/channels";
import { waitUntilDefined, noop } from "@k8slens/utilities";
import showSuccessNotificationInjectable from "../../notifications/show-success-notification.injectable";
import { showSuccessNotificationInjectable } from "@k8slens/notifications";
import selectDockTabInjectable from "../dock/select-dock-tab.injectable";
import type { TabId } from "../dock/store";
import createTerminalTabInjectable from "./create-terminal-tab.injectable";

View File

@ -17,7 +17,7 @@ import { withTimeout } from "../../../common/fetch/timeout-controller";
import downloadBinaryInjectable from "../../../common/fetch/download-binary.injectable";
import downloadJsonInjectable from "../../../common/fetch/download-json/normal.injectable";
import type { PackageJson } from "type-fest";
import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
import { loggerInjectionToken } from "@k8slens/logger";
export interface ExtensionInfo {

View File

@ -14,7 +14,7 @@ import createTempFilesAndValidateInjectable from "./create-temp-files-and-valida
import extensionInstallationStateStoreInjectable from "../../../../extensions/extension-installation-state-store/extension-installation-state-store.injectable";
import type { Disposer } from "@k8slens/utilities";
import { disposer } from "@k8slens/utilities";
import type { ShowNotification } from "../../notifications";
import type { ShowNotification } from "@k8slens/notifications";
import { Button } from "@k8slens/button";
import type { ExtensionLoader } from "../../../../extensions/extension-loader";
import React from "react";
@ -22,8 +22,7 @@ import { remove as removeDir } from "fs-extra";
import { shell } from "electron";
import type { ExtensionInstallationStateStore } from "../../../../extensions/extension-installation-state-store/extension-installation-state-store";
import { ExtensionInstallationState } from "../../../../extensions/extension-installation-state-store/extension-installation-state-store";
import showErrorNotificationInjectable from "../../notifications/show-error-notification.injectable";
import showInfoNotificationInjectable from "../../notifications/show-info-notification.injectable";
import { showErrorNotificationInjectable, showInfoNotificationInjectable } from "@k8slens/notifications";
import type { LensExtensionId } from "@k8slens/legacy-extensions";
export interface InstallRequest {

View File

@ -12,7 +12,7 @@ import { loggerInjectionToken } from "@k8slens/logger";
import writeFileInjectable from "../../../../common/fs/write-file.injectable";
import joinPathsInjectable from "../../../../common/path/join-paths.injectable";
import tempDirectoryPathInjectable from "../../../../common/os/temp-directory-path.injectable";
import showErrorNotificationInjectable from "../../notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
import type { LensExtensionId, LensExtensionManifest } from "@k8slens/legacy-extensions";
export interface InstallRequestValidated {

View File

@ -17,8 +17,7 @@ import React from "react";
import type { InstallRequestValidated } from "./create-temp-files-and-validate.injectable";
import extractTarInjectable from "../../../../common/fs/extract-tar.injectable";
import { loggerInjectionToken } from "@k8slens/logger";
import showInfoNotificationInjectable from "../../notifications/show-info-notification.injectable";
import showErrorNotificationInjectable from "../../notifications/show-error-notification.injectable";
import { showInfoNotificationInjectable, showErrorNotificationInjectable } from "@k8slens/notifications";
export type UnpackExtension = (request: InstallRequestValidated, disposeDownloading?: Disposer) => Promise<void>;

View File

@ -9,7 +9,7 @@ import execFileInjectable from "../../../../common/fs/exec-file.injectable";
import { loggerInjectionToken } from "@k8slens/logger";
import { defaultExtensionRegistryUrl } from "../../../../features/user-preferences/common/preferences-helpers";
import userPreferencesStateInjectable from "../../../../features/user-preferences/common/state.injectable";
import showErrorNotificationInjectable from "../../notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
const getBaseRegistryUrlInjectable = getInjectable({
id: "get-base-registry-url",

View File

@ -12,7 +12,7 @@ import attemptInstallByInfoInjectable from "./attempt-install-by-info.injectable
import extensionInstallationStateStoreInjectable from "../../../extensions/extension-installation-state-store/extension-installation-state-store.injectable";
import readFileNotifyInjectable from "./read-file-notify/read-file-notify.injectable";
import getBasenameOfPathInjectable from "../../../common/path/get-basename.injectable";
import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
import { loggerInjectionToken } from "@k8slens/logger";
import downloadBinaryInjectable from "../../../common/fetch/download-binary.injectable";
import { withTimeout } from "../../../common/fetch/timeout-controller";

View File

@ -4,7 +4,7 @@
*/
import { getMessageFromError } from "../get-message-from-error/get-message-from-error";
import { getInjectable } from "@ogre-tools/injectable";
import showErrorNotificationInjectable from "../../notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
import { loggerInjectionToken } from "@k8slens/logger";
import readFileBufferInjectable from "../../../../common/fs/read-file-buffer.injectable";

View File

@ -12,8 +12,7 @@ import { extensionDisplayName } from "../../../extensions/lens-extension";
import React from "react";
import { when } from "mobx";
import { getMessageFromError } from "./get-message-from-error/get-message-from-error";
import showSuccessNotificationInjectable from "../notifications/show-success-notification.injectable";
import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable";
import { showSuccessNotificationInjectable, showErrorNotificationInjectable } from "@k8slens/notifications";
const uninstallExtensionInjectable = getInjectable({
id: "uninstall-extension",

View File

@ -21,8 +21,8 @@ import type { RollbackRelease } from "../rollback-release/rollback-release.injec
import rollbackReleaseInjectable from "../rollback-release/rollback-release.injectable";
import type { HelmReleaseRevision, RequestHelmReleaseHistory } from "../../../../common/k8s-api/endpoints/helm-releases.api/request-history.injectable";
import requestHelmReleaseHistoryInjectable from "../../../../common/k8s-api/endpoints/helm-releases.api/request-history.injectable";
import type { ShowCheckedErrorNotification } from "../../notifications/show-checked-error.injectable";
import showCheckedErrorNotificationInjectable from "../../notifications/show-checked-error.injectable";
import type { ShowCheckedErrorNotification } from "@k8slens/notifications";
import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications";
export interface ReleaseRollbackDialogProps extends DialogProps {
}

View File

@ -18,10 +18,8 @@ import type { GetResourceDetailsUrl } from "./get-resource-details-url.injectabl
import getResourceDetailsUrlInjectable from "./get-resource-details-url.injectable";
import type { RequestHelmReleaseUpdate } from "../../../../../common/k8s-api/endpoints/helm-releases.api/request-update.injectable";
import updateReleaseInjectable from "../../update-release/update-release.injectable";
import type { ShowCheckedErrorNotification } from "../../../notifications/show-checked-error.injectable";
import showCheckedErrorNotificationInjectable from "../../../notifications/show-checked-error.injectable";
import type { ShowNotification } from "../../../notifications";
import showSuccessNotificationInjectable from "../../../notifications/show-success-notification.injectable";
import type { ShowCheckedErrorNotification, ShowNotification } from "@k8slens/notifications";
import { showCheckedErrorNotificationInjectable, showSuccessNotificationInjectable } from "@k8slens/notifications";
import React from "react";
import createUpgradeChartTabInjectable from "../../../dock/upgrade-chart/create-upgrade-chart-tab.injectable";
import type { HelmRelease } from "../../../../../common/k8s-api/endpoints/helm-releases.api";

View File

@ -13,12 +13,12 @@ import { Button } from "@k8slens/button";
import type { DialogProps } from "../dialog";
import { Dialog } from "../dialog";
import { Icon } from "@k8slens/icon";
import type { ShowNotification } from "../notifications";
import type { ShowNotification } from "@k8slens/notifications";
import { Wizard, WizardStep } from "../wizard";
import { MonacoEditor } from "../monaco-editor";
import { clipboard } from "electron";
import { withInjectables } from "@ogre-tools/injectable-react";
import showSuccessNotificationInjectable from "../notifications/show-success-notification.injectable";
import { showSuccessNotificationInjectable } from "@k8slens/notifications";
import kubeconfigDialogStateInjectable from "./state.injectable";
import { saveFileDialog } from "../../utils/saveFile";

View File

@ -4,7 +4,7 @@
*/
import { getInjectable } from "@ogre-tools/injectable";
import { loggerInjectionToken } from "@k8slens/logger";
import showCheckedErrorNotificationInjectable from "../notifications/show-checked-error.injectable";
import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications";
import kubeconfigDialogStateInjectable from "./state.injectable";
import type { StrictReactNode } from "@k8slens/utilities";

View File

@ -20,8 +20,8 @@ import namespaceStoreInjectable from "../store.injectable";
import addNamespaceDialogStateInjectable
from "./state.injectable";
import type { NamespaceStore } from "../store";
import type { ShowCheckedErrorNotification } from "../../notifications/show-checked-error.injectable";
import showCheckedErrorNotificationInjectable from "../../notifications/show-checked-error.injectable";
import type { ShowCheckedErrorNotification } from "@k8slens/notifications";
import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications";
import autoBindReact from "auto-bind/react";
export interface AddNamespaceDialogProps extends DialogProps {

View File

@ -10,13 +10,13 @@ import type { MenuActionsProps } from "../menu/menu-actions";
import { MenuActions } from "../menu/menu-actions";
import { MenuItem } from "../menu";
import { Icon } from "@k8slens/icon";
import type { ShowNotification } from "../notifications";
import type { ShowNotification } from "@k8slens/notifications";
import { withInjectables } from "@ogre-tools/injectable-react";
import portForwardDialogModelInjectable from "../../port-forward/port-forward-dialog-model/port-forward-dialog-model.injectable";
import portForwardStoreInjectable from "../../port-forward/port-forward-store/port-forward-store.injectable";
import type { OpenPortForward } from "../../port-forward/open-port-forward.injectable";
import openPortForwardInjectable from "../../port-forward/open-port-forward.injectable";
import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
import autoBindReact from "auto-bind/react";
export interface PortForwardMenuProps extends MenuActionsProps {

View File

@ -10,7 +10,7 @@ import { disposeOnUnmount, observer } from "mobx-react";
import type { Service, ServicePort } from "@k8slens/kube-object";
import { action, makeObservable, observable, reaction } from "mobx";
import { cssNames } from "@k8slens/utilities";
import type { ShowNotification } from "../notifications";
import type { ShowNotification } from "@k8slens/notifications";
import { Button } from "@k8slens/button";
import type { ForwardedPort, PortForwardStore } from "../../port-forward";
import { predictProtocol } from "../../port-forward";
@ -24,7 +24,7 @@ import notifyErrorPortForwardingInjectable from "../../port-forward/notify-error
import type { OpenPortForward } from "../../port-forward/open-port-forward.injectable";
import openPortForwardInjectable from "../../port-forward/open-port-forward.injectable";
import { loggerInjectionToken } from "@k8slens/logger";
import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
export interface ServicePortComponentProps {
service: Service;

View File

@ -1,7 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
export * from "./notifications";
export * from "./notifications.store";

View File

@ -37,8 +37,8 @@ import type { ShowDetails } from "../../../kube-detail-params/show-details.injec
import type { ClusterRoleBindingStore } from "../store";
import clusterRoleBindingStoreInjectable from "../store.injectable";
import showDetailsInjectable from "../../../kube-detail-params/show-details.injectable";
import type { ShowCheckedErrorNotification } from "../../../notifications/show-checked-error.injectable";
import showCheckedErrorNotificationInjectable from "../../../notifications/show-checked-error.injectable";
import type { ShowCheckedErrorNotification } from "@k8slens/notifications";
import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications";
export interface ClusterRoleBindingDialogProps extends Partial<DialogProps> {
}

View File

@ -20,8 +20,8 @@ import closeAddClusterRoleDialogInjectable from "./close.injectable";
import clusterRoleStoreInjectable from "../store.injectable";
import showDetailsInjectable from "../../../kube-detail-params/show-details.injectable";
import addClusterRoleDialogStateInjectable from "./state.injectable";
import type { ShowCheckedErrorNotification } from "../../../notifications/show-checked-error.injectable";
import showCheckedErrorNotificationInjectable from "../../../notifications/show-checked-error.injectable";
import type { ShowCheckedErrorNotification } from "@k8slens/notifications";
import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications";
export interface AddClusterRoleDialogProps extends Partial<DialogProps> {
}

View File

@ -36,8 +36,8 @@ import clusterRoleStoreInjectable from "../../cluster-roles/store.injectable";
import roleStoreInjectable from "../../roles/store.injectable";
import serviceAccountStoreInjectable from "../../service-accounts/store.injectable";
import { roleApiInjectable } from "@k8slens/kube-api-specifics";
import type { ShowCheckedErrorNotification } from "../../../notifications/show-checked-error.injectable";
import showCheckedErrorNotificationInjectable from "../../../notifications/show-checked-error.injectable";
import type { ShowCheckedErrorNotification } from "@k8slens/notifications";
import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications";
import type { RoleApi } from "@k8slens/kube-api";
export interface RoleBindingDialogProps extends Partial<DialogProps> {

View File

@ -22,8 +22,8 @@ import closeAddRoleDialogInjectable from "./close.injectable";
import roleStoreInjectable from "../store.injectable";
import showDetailsInjectable from "../../../kube-detail-params/show-details.injectable";
import addRoleDialogStateInjectable from "./state.injectable";
import type { ShowCheckedErrorNotification } from "../../../notifications/show-checked-error.injectable";
import showCheckedErrorNotificationInjectable from "../../../notifications/show-checked-error.injectable";
import type { ShowCheckedErrorNotification } from "@k8slens/notifications";
import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications";
export interface AddRoleDialogProps extends Partial<DialogProps> {
}

View File

@ -23,8 +23,8 @@ import closeCreateServiceAccountDialogInjectable from "./close.injectable";
import serviceAccountStoreInjectable from "../store.injectable";
import showDetailsInjectable from "../../../kube-detail-params/show-details.injectable";
import createServiceAccountDialogStateInjectable from "./state.injectable";
import type { ShowCheckedErrorNotification } from "../../../notifications/show-checked-error.injectable";
import showCheckedErrorNotificationInjectable from "../../../notifications/show-checked-error.injectable";
import type { ShowCheckedErrorNotification } from "@k8slens/notifications";
import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications";
export interface CreateServiceAccountDialogProps extends Partial<DialogProps> {
}

View File

@ -13,8 +13,8 @@ import openConfirmDialogInjectable from "../confirm-dialog/open.injectable";
import type { OpenCronJobTriggerDialog } from "./trigger-dialog/open.injectable";
import openCronJobTriggerDialogInjectable from "./trigger-dialog/open.injectable";
import { cronJobApiInjectable } from "@k8slens/kube-api-specifics";
import type { ShowCheckedErrorNotification } from "../notifications/show-checked-error.injectable";
import showCheckedErrorNotificationInjectable from "../notifications/show-checked-error.injectable";
import type { ShowCheckedErrorNotification } from "@k8slens/notifications";
import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications";
import type { CronJobApi } from "@k8slens/kube-api";
export interface CronJobMenuProps extends KubeObjectMenuProps<CronJob> {}

View File

@ -13,7 +13,7 @@ import type { DialogProps } from "../../dialog";
import { Dialog } from "../../dialog";
import { Wizard, WizardStep } from "../../wizard";
import type { CronJob } from "@k8slens/kube-object";
import type { ShowNotification } from "../../notifications";
import type { ShowNotification, ShowCheckedErrorNotification } from "@k8slens/notifications";
import { cssNames } from "@k8slens/utilities";
import { Input } from "../../input";
import { systemName, maxLength } from "../../input/input_validators";
@ -21,9 +21,7 @@ import { withInjectables } from "@ogre-tools/injectable-react";
import closeCronJobTriggerDialogInjectable from "./close.injectable";
import { jobApiInjectable } from "@k8slens/kube-api-specifics";
import cronJobTriggerDialogStateInjectable from "./state.injectable";
import type { ShowCheckedErrorNotification } from "../../notifications/show-checked-error.injectable";
import showCheckedErrorNotificationInjectable from "../../notifications/show-checked-error.injectable";
import showErrorNotificationInjectable from "../../notifications/show-error-notification.injectable";
import { showCheckedErrorNotificationInjectable, showErrorNotificationInjectable } from "@k8slens/notifications";
import type { JobApi } from "@k8slens/kube-api";
export interface CronJobTriggerDialogProps extends Partial<DialogProps> {

View File

@ -11,8 +11,8 @@ import { withInjectables } from "@ogre-tools/injectable-react";
import { daemonSetApiInjectable } from "@k8slens/kube-api-specifics";
import type { OpenConfirmDialog } from "../confirm-dialog/open.injectable";
import openConfirmDialogInjectable from "../confirm-dialog/open.injectable";
import type { ShowCheckedErrorNotification } from "../notifications/show-checked-error.injectable";
import showCheckedErrorNotificationInjectable from "../notifications/show-checked-error.injectable";
import type { ShowCheckedErrorNotification } from "@k8slens/notifications";
import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications";
import type { DaemonSetApi } from "@k8slens/kube-api";
export interface DaemonSetMenuProps extends KubeObjectMenuProps<DaemonSet> {}

View File

@ -13,8 +13,8 @@ import { deploymentApiInjectable } from "@k8slens/kube-api-specifics";
import openDeploymentScaleDialogInjectable from "./scale/open.injectable";
import type { OpenConfirmDialog } from "../confirm-dialog/open.injectable";
import openConfirmDialogInjectable from "../confirm-dialog/open.injectable";
import type { ShowCheckedErrorNotification } from "../notifications/show-checked-error.injectable";
import showCheckedErrorNotificationInjectable from "../notifications/show-checked-error.injectable";
import type { ShowCheckedErrorNotification } from "@k8slens/notifications";
import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications";
import type { DeploymentApi } from "@k8slens/kube-api";
export interface DeploymentMenuProps extends KubeObjectMenuProps<Deployment> {}

View File

@ -19,8 +19,8 @@ import { cssNames } from "@k8slens/utilities";
import { withInjectables } from "@ogre-tools/injectable-react";
import { deploymentApiInjectable } from "@k8slens/kube-api-specifics";
import deploymentScaleDialogStateInjectable from "./dialog-state.injectable";
import type { ShowCheckedErrorNotification } from "../../notifications/show-checked-error.injectable";
import showCheckedErrorNotificationInjectable from "../../notifications/show-checked-error.injectable";
import type { ShowCheckedErrorNotification } from "@k8slens/notifications";
import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications";
import type { DeploymentApi } from "@k8slens/kube-api";
export interface DeploymentScaleDialogProps extends Partial<DialogProps> {

View File

@ -5,7 +5,7 @@
import { getInjectable } from "@ogre-tools/injectable";
import clusterFrameContextForNamespacedResourcesInjectable from "../../cluster-frame-context/for-namespaced-resources.injectable";
import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
import podStoreInjectable from "./store.injectable";
const loadPodsFromAllNamespacesInjectable = getInjectable({

View File

@ -10,7 +10,7 @@ import { disposeOnUnmount, observer } from "mobx-react";
import type { ContainerPort, Pod } from "@k8slens/kube-object";
import { action, makeObservable, observable, reaction } from "mobx";
import { cssNames } from "@k8slens/utilities";
import type { ShowNotification } from "../notifications";
import type { ShowNotification } from "@k8slens/notifications";
import { Button } from "@k8slens/button";
import type { ForwardedPort, PortForwardStore } from "../../port-forward";
import { predictProtocol } from "../../port-forward";
@ -24,7 +24,7 @@ import notifyErrorPortForwardingInjectable from "../../port-forward/notify-error
import type { OpenPortForward } from "../../port-forward/open-port-forward.injectable";
import openPortForwardInjectable from "../../port-forward/open-port-forward.injectable";
import { loggerInjectionToken } from "@k8slens/logger";
import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
export interface PodContainerPortProps {
pod: Pod;

View File

@ -19,8 +19,8 @@ import type { ReplicaSet } from "@k8slens/kube-object";
import { withInjectables } from "@ogre-tools/injectable-react";
import { replicaSetApiInjectable } from "@k8slens/kube-api-specifics";
import replicaSetScaleDialogStateInjectable from "./state.injectable";
import type { ShowCheckedErrorNotification } from "../../notifications/show-checked-error.injectable";
import showCheckedErrorNotificationInjectable from "../../notifications/show-checked-error.injectable";
import type { ShowCheckedErrorNotification } from "@k8slens/notifications";
import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications";
import type { ReplicaSetApi } from "@k8slens/kube-api";
export interface ReplicaSetScaleDialogProps extends Partial<DialogProps> {

View File

@ -13,8 +13,8 @@ import { Badge } from "../badge";
import type { KubeObjectDetailsProps } from "../kube-object-details";
import type { ReplicationController } from "@k8slens/kube-object";
import { replicationControllerApiInjectable } from "@k8slens/kube-api-specifics";
import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable";
import type { ShowNotification } from "../notifications";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
import type { ShowNotification } from "@k8slens/notifications";
import { Slider } from "../slider";
import type { ReplicationControllerApi } from "@k8slens/kube-api";

View File

@ -19,8 +19,8 @@ import { cssNames } from "@k8slens/utilities";
import { withInjectables } from "@ogre-tools/injectable-react";
import { statefulSetApiInjectable } from "@k8slens/kube-api-specifics";
import statefulSetDialogStateInjectable from "./dialog-state.injectable";
import type { ShowCheckedErrorNotification } from "../../notifications/show-checked-error.injectable";
import showCheckedErrorNotificationInjectable from "../../notifications/show-checked-error.injectable";
import type { ShowCheckedErrorNotification } from "@k8slens/notifications";
import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications";
import type { StatefulSetApi } from "@k8slens/kube-api";
export interface StatefulSetScaleDialogProps extends Partial<DialogProps> {

View File

@ -11,8 +11,8 @@ import { withInjectables } from "@ogre-tools/injectable-react";
import { statefulSetApiInjectable } from "@k8slens/kube-api-specifics";
import type { OpenConfirmDialog } from "../confirm-dialog/open.injectable";
import openConfirmDialogInjectable from "../confirm-dialog/open.injectable";
import type { ShowCheckedErrorNotification } from "../notifications/show-checked-error.injectable";
import showCheckedErrorNotificationInjectable from "../notifications/show-checked-error.injectable";
import type { ShowCheckedErrorNotification } from "@k8slens/notifications";
import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications";
import type { StatefulSetApi } from "@k8slens/kube-api";
export interface StatefulSetMenuProps extends KubeObjectMenuProps<StatefulSet> {}

View File

@ -11,7 +11,7 @@ import assert from "assert";
import emitAppEventInjectable from "../../../../common/app-event-bus/emit-event.injectable";
import loadExtensionsInjectable from "../../load-extensions.injectable";
import { loggerInjectionToken } from "@k8slens/logger";
import showErrorNotificationInjectable from "../../../components/notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
const initClusterFrameInjectable = getInjectable({
id: "init-cluster-frame",

View File

@ -4,7 +4,7 @@
*/
import type { Cluster } from "../../../../common/cluster/cluster";
import type { CatalogEntityRegistry } from "../../../api/catalog/entity/registry";
import type { ShowNotification } from "../../../components/notifications";
import type { ShowNotification } from "@k8slens/notifications";
import { when } from "mobx";
import { requestSetClusterFrameId } from "../../../ipc";
import type { EmitAppEvent } from "../../../../common/app-event-bus/emit-event.injectable";

View File

@ -24,6 +24,7 @@ import { loggerFeature } from "@k8slens/logger";
import { clusterSidebarFeature } from "@k8slens/cluster-sidebar";
import { randomFeature } from "@k8slens/random";
import { kubeApiSpecificsFeature } from "@k8slens/kube-api-specifics";
import { notificationsFeature } from "@k8slens/notifications";
export const getDiForUnitTesting = () => {
const environment = "renderer";
@ -45,6 +46,7 @@ export const getDiForUnitTesting = () => {
clusterSidebarFeature,
randomFeature,
kubeApiSpecificsFeature,
notificationsFeature,
);
});

View File

@ -6,7 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable";
import React from "react";
import navigateToKubernetesPreferencesInjectable from "../../features/preferences/common/navigate-to-kubernetes-preferences.injectable";
import { runInAction } from "mobx";
import showSuccessNotificationInjectable from "../components/notifications/show-success-notification.injectable";
import { showSuccessNotificationInjectable } from "@k8slens/notifications";
import userPreferencesStateInjectable from "../../features/user-preferences/common/state.injectable";
const addSyncEntriesInjectable = getInjectable({

View File

@ -8,9 +8,8 @@ import type { ListNamespaceForbiddenArgs } from "../../common/ipc/cluster";
import { Button } from "@k8slens/button";
import type { IpcRendererEvent } from "electron";
import React from "react";
import notificationsStoreInjectable from "../components/notifications/notifications-store.injectable";
import { notificationsStoreInjectable, showSuccessNotificationInjectable } from "@k8slens/notifications";
import { getMillisecondsFromUnixEpoch } from "../../common/utils/date/get-current-date-time";
import showSuccessNotificationInjectable from "../components/notifications/show-success-notification.injectable";
import getClusterByIdInjectable from "../../features/cluster/storage/common/get-by-id.injectable";
const intervalBetweenNotifications = 1000 * 60; // 60s

View File

@ -6,7 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable";
import { defaultHotbarCells } from "../../features/hotbar/storage/common/types";
import { clusterListNamespaceForbiddenChannel } from "../../common/ipc/cluster";
import { hotbarTooManyItemsChannel } from "../../common/ipc/hotbar";
import showErrorNotificationInjectable from "../components/notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
import ipcRendererInjectable from "../utils/channel/ipc-renderer.injectable";
import listNamespacesForbiddenHandlerInjectable from "./list-namespaces-forbidden-handler.injectable";

View File

@ -9,7 +9,7 @@ import { apiKubeInjectionToken } from "@k8slens/kube-api";
import { storesAndApisCanBeCreatedInjectionToken } from "@k8slens/kube-api-specifics";
import createKubeJsonApiInjectable from "../../common/k8s-api/create-kube-json-api.injectable";
import isDevelopmentInjectable from "../../common/vars/is-development.injectable";
import showErrorNotificationInjectable from "../components/notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
import windowLocationInjectable from "../../common/k8s-api/window-location.injectable";
import { apiBaseServerAddressInjectionToken } from "../../common/k8s-api/api-base-configs";

View File

@ -6,7 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable";
import React from "react";
import navigateToPortForwardsInjectable from "../../common/front-end-routing/routes/cluster/network/port-forwards/navigate-to-port-forwards.injectable";
import { Button } from "@k8slens/button";
import showSuccessNotificationInjectable from "../components/notifications/show-success-notification.injectable";
import { showSuccessNotificationInjectable } from "@k8slens/notifications";
const aboutPortForwardingInjectable = getInjectable({
id: "about-port-forwarding",

View File

@ -4,7 +4,7 @@
*/
import { getInjectable } from "@ogre-tools/injectable";
import navigateToPortForwardsInjectable from "../../common/front-end-routing/routes/cluster/network/port-forwards/navigate-to-port-forwards.injectable";
import showErrorNotificationInjectable from "../components/notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
import React from "react";
import { Button } from "@k8slens/button";

View File

@ -5,7 +5,7 @@
import { getInjectable } from "@ogre-tools/injectable";
import { loggerInjectionToken } from "@k8slens/logger";
import openLinkInBrowserInjectable from "../../common/utils/open-link-in-browser.injectable";
import showErrorNotificationInjectable from "../components/notifications/show-error-notification.injectable";
import { showErrorNotificationInjectable } from "@k8slens/notifications";
import type { ForwardedPort } from "./port-forward-item";
import { portForwardAddress } from "./port-forward-utils";

View File

@ -13,7 +13,7 @@ import navigateToEntitySettingsInjectable from "../../../common/front-end-routin
import navigateToClusterViewInjectable from "../../../common/front-end-routing/routes/cluster-view/navigate-to-cluster-view.injectable";
import catalogEntityRegistryInjectable from "../../api/catalog/entity/registry.injectable";
import navigateToPreferencesInjectable from "../../../features/preferences/common/navigate-to-preferences.injectable";
import showShortInfoNotificationInjectable from "../../components/notifications/show-short-info.injectable";
import { showShortInfoNotificationInjectable } from "@k8slens/notifications";
import getClusterByIdInjectable from "../../../features/cluster/storage/common/get-by-id.injectable";
const bindProtocolAddRouteHandlersInjectable = getInjectable({

View File

@ -11,7 +11,7 @@ import {
EXTENSION_PUBLISHER_MATCH,
LensProtocolRouter,
} from "../../../common/protocol-handler";
import type { ShowNotification } from "../../components/notifications";
import type { ShowNotification } from "@k8slens/notifications";
import type { NavigateToCatalog } from "../../../common/front-end-routing/routes/catalog/navigate-to-catalog.injectable";
import type { NavigateToEntitySettings } from "../../../common/front-end-routing/routes/entity-settings/navigate-to-entity-settings.injectable";
import type { NavigateToClusterView } from "../../../common/front-end-routing/routes/cluster-view/navigate-to-cluster-view.injectable";

View File

@ -6,8 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable";
import extensionLoaderInjectable from "../../../extensions/extension-loader/extension-loader.injectable";
import { LensProtocolRouterRenderer } from "./lens-protocol-router-renderer";
import { loggerInjectionToken } from "@k8slens/logger";
import showErrorNotificationInjectable from "../../components/notifications/show-error-notification.injectable";
import showShortInfoNotificationInjectable from "../../components/notifications/show-short-info.injectable";
import { showErrorNotificationInjectable, showShortInfoNotificationInjectable } from "@k8slens/notifications";
import isExtensionEnabledInjectable from "../../../features/extensions/enabled/common/is-enabled.injectable";
const lensProtocolRouterRendererInjectable = getInjectable({

View File

@ -9,7 +9,7 @@ import * as proto from "../../../common/protocol-handler";
import Url from "url-parse";
import type { LensProtocolRouterDependencies } from "../../../common/protocol-handler";
import { foldAttemptResults, ProtocolHandlerInvalid, RouteAttempt } from "../../../common/protocol-handler";
import type { ShowNotification } from "../../components/notifications";
import type { ShowNotification } from "@k8slens/notifications";
interface Dependencies extends LensProtocolRouterDependencies {
showShortInfoNotification: ShowNotification;

View File

@ -0,0 +1,6 @@
{
"extends": "@k8slens/eslint-config/eslint",
"parserOptions": {
"project": "./tsconfig.json"
}
}

View File

@ -0,0 +1 @@
"@k8slens/eslint-config/prettier"

View File

@ -0,0 +1,4 @@
# Change Log
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

View File

@ -0,0 +1,19 @@
# @k8slens/notifications
This package contains stuff related to creating Lens-applications.
# Usage
```bash
$ npm install @k8slens/notifications
```
```typescript
export type { notificationsName, notificationsProps } from "@k8slens/button";
export type { notifications } from "@k8slens/button";
export { defaultEnterDurationFornotificationsdInjectable } from "@k8slens/button";
export { defaultLeaveDurationFornotificationsdInjectable } from "@k8slens/button";
export { requestAnimationFrameInjectable } from "@k8slens/button";
```
## Extendability

View File

@ -0,0 +1,25 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
export type {
NotificationId,
NotificationMessage,
NotificationStatus,
CreateNotificationOptions,
Notification,
NotificationsStore,
} from "./src/notifications.store";
export type { ShowNotification } from "./src/notifications";
export { Notifications } from "./src/notifications";
export { notificationsClusterFrameChildComponentInjectable } from "./src/notifications-cluster-frame-child-component.injectable";
export { notificationsRootFrameChildComponentInjectable } from "./src/notifications-root-frame-child-component.injectable";
export { notificationsStoreInjectable } from "./src/notifications-store.injectable";
export type { ShowCheckedErrorNotification } from "./src/show-checked-error.injectable";
export { showCheckedErrorNotificationInjectable } from "./src/show-checked-error.injectable";
export { showErrorNotificationInjectable } from "./src/show-error-notification.injectable";
export { showInfoNotificationInjectable } from "./src/show-info-notification.injectable";
export { showShortInfoNotificationInjectable } from "./src/show-short-info.injectable";
export { showSuccessNotificationInjectable } from "./src/show-success-notification.injectable";
export { notificationsFeature } from "./src/feature";

View File

@ -0,0 +1,3 @@
const { configForReact } = require("@k8slens/jest").monorepoPackageConfig(__dirname);
module.exports = configForReact;

View File

@ -0,0 +1,66 @@
{
"name": "@k8slens/notifications",
"private": false,
"version": "1.0.0",
"description": "Highly extendable notifications in the Lens.",
"type": "commonjs",
"files": [
"dist"
],
"publishConfig": {
"access": "public",
"registry": "https://registry.npmjs.org/"
},
"repository": {
"type": "git",
"url": "git+https://github.com/lensapp/lens.git"
},
"main": "dist/index.js",
"exports": {
".": "./dist/index.js",
"./styles": "./dist/index.css"
},
"types": "dist/index.d.ts",
"author": {
"name": "OpenLens Authors",
"email": "info@k8slens.dev"
},
"license": "MIT",
"homepage": "https://github.com/lensapp/lens",
"scripts": {
"build": "lens-webpack-build",
"lint": "lens-lint",
"lint:fix": "lens-lint --fix"
},
"peerDependencies": {
"@k8slens/react-application": "^1.0.0-alpha.5",
"@k8slens/animate": "^1.0.0-alpha.0",
"@k8slens/application": "^6.5.0",
"@k8slens/event-emitter": "^1.0.0",
"@k8slens/feature-core": "^6.5.0-alpha.0",
"@k8slens/json-api": "^1.0.0-alpha.3",
"@k8slens/icon": "^1.0.0-alpha.7",
"@k8slens/run-many": "^1.0.0",
"@k8slens/logger": "^1.0.0",
"@k8slens/tooltip": "^1.0.0",
"@k8slens/utilities": "^1.0.0-alpha.1",
"@ogre-tools/injectable-react": "^17.2.0",
"@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/fp": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"@ogre-tools/injectable-extension-for-mobx": "^17.2.0",
"auto-bind": "^4.0.0",
"lodash": "^4.17.21",
"mobx": "^6.8.0",
"mobx-react": "^7.6.0",
"react-router-dom": "^5.3.4",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"winston": "^3.8.2",
"uuid": "^8.3.2"
},
"devDependencies": {
"@k8slens/eslint-config": "^6.5.0",
"@k8slens/webpack": "^6.5.0"
}
}

View File

@ -0,0 +1,14 @@
import { getFeature } from "@k8slens/feature-core";
import { autoRegister } from "@ogre-tools/injectable-extension-for-auto-registration";
export const notificationsFeature = getFeature({
id: "notifications-feature",
register: (di) => {
autoRegister({
di,
targetModule: module,
getRequireContexts: () => [require.context("./", true, /\.injectable\.(ts|tsx)$/)],
});
},
});

View File

@ -7,7 +7,7 @@ import { computed } from "mobx";
import { Notifications } from "./notifications";
import { clusterFrameChildComponentInjectionToken } from "@k8slens/react-application";
const notificationsClusterFrameChildComponentInjectable = getInjectable({
export const notificationsClusterFrameChildComponentInjectable = getInjectable({
id: "notifications-cluster-frame-child-component",
instantiate: () => ({
@ -18,5 +18,3 @@ const notificationsClusterFrameChildComponentInjectable = getInjectable({
injectionToken: clusterFrameChildComponentInjectionToken,
});
export default notificationsClusterFrameChildComponentInjectable;

View File

@ -7,7 +7,7 @@ import { rootFrameChildComponentInjectionToken } from "@k8slens/react-applicatio
import { computed } from "mobx";
import { Notifications } from "./notifications";
const notificationsRootFrameChildComponentInjectable = getInjectable({
export const notificationsRootFrameChildComponentInjectable = getInjectable({
id: "notifications-root-frame-child-component",
instantiate: () => ({
@ -18,5 +18,3 @@ const notificationsRootFrameChildComponentInjectable = getInjectable({
injectionToken: rootFrameChildComponentInjectionToken,
});
export default notificationsRootFrameChildComponentInjectable;

View File

@ -5,9 +5,7 @@
import { getInjectable } from "@ogre-tools/injectable";
import { NotificationsStore } from "./notifications.store";
const notificationsStoreInjectable = getInjectable({
export const notificationsStoreInjectable = getInjectable({
id: "notifications-store",
instantiate: () => new NotificationsStore(),
});
export default notificationsStoreInjectable;

View File

@ -3,13 +3,25 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
$color-white: rgb(255,255,255);
@mixin hidden-scrollbar {
overflow: auto;
// Chrome, Safari
&::-webkit-scrollbar {
width: 0;
height: 0;
background: transparent;
}
}
.Notifications {
@include hidden-scrollbar;
position: absolute;
right: 0;
top: 0;
padding: $padding * 2;
padding: 8px * 2;
max-height: 100vh;
z-index: 100000;
height: min-content!important;
@ -20,20 +32,20 @@
.notification {
flex: 0 0;
padding: $padding * 1.5;
padding: 8px * 1.5;
border-radius: 3px;
min-width: 350px;
max-width: 35vw;
word-break: break-word;
&:not(:last-child) {
margin-bottom: $margin * 2;
margin-bottom: 8px * 2;
}
> .message {
white-space: pre-line;
padding-left: $padding;
padding-right: $padding * 2;
padding-left: 8px;
padding-right: 8px * 2;
align-self: center;
a {

View File

@ -44,13 +44,15 @@ export class NotificationsStore {
}
getById(id: NotificationId) {
return this.notifications.find(item => item.id === id);
return this.notifications.find((item) => item.id === id);
}
addAutoHideTimer(id: NotificationId) {
const notification = this.getById(id);
if (!notification) return;
if (!notification) {
return;
}
this.removeAutoHideTimer(id);
if (notification?.timeout) {
@ -74,7 +76,7 @@ export class NotificationsStore {
...rawNotification,
};
const id = notification.id;
const index = this.notifications.findIndex(item => item.id === id);
const index = this.notifications.findIndex((item) => item.id === id);
if (index > -1) {
this.notifications.splice(index, 1, notification); // update existing with same id

View File

@ -11,11 +11,16 @@ import { disposeOnUnmount, observer } from "mobx-react";
import { JsonApiErrorParsed } from "@k8slens/json-api";
import type { Disposer } from "@k8slens/utilities";
import { cssNames, prevDefault } from "@k8slens/utilities";
import type { CreateNotificationOptions, Notification, NotificationMessage, NotificationsStore } from "./notifications.store";
import type {
CreateNotificationOptions,
Notification,
NotificationMessage,
NotificationsStore,
} from "./notifications.store";
import { Animate } from "@k8slens/animate";
import { Icon } from "@k8slens/icon";
import { withInjectables } from "@ogre-tools/injectable-react";
import notificationsStoreInjectable from "./notifications-store.injectable";
import { notificationsStoreInjectable } from "./notifications-store.injectable";
export type ShowNotification = (message: NotificationMessage, opts?: CreateNotificationOptions) => Disposer;
@ -29,9 +34,13 @@ class NonInjectedNotifications extends React.Component<Dependencies> {
componentDidMount() {
disposeOnUnmount(this, [
reaction(() => this.props.store.notifications.length, () => {
this.scrollToLastNotification();
}, { delay: 250 }),
reaction(
() => this.props.store.notifications.length,
() => {
this.scrollToLastNotification();
},
{ delay: 250 },
),
]);
}
@ -59,8 +68,8 @@ class NonInjectedNotifications extends React.Component<Dependencies> {
const { notifications, remove, addAutoHideTimer, removeAutoHideTimer } = this.props.store;
return (
<div className="Notifications flex column align-flex-end" ref={e => this.elem = e}>
{notifications.map(notification => {
<div className="Notifications flex column align-flex-end" ref={(e) => (this.elem = e)}>
{notifications.map((notification) => {
const { id, status, onClose } = notification;
const msgText = this.getMessage(notification);

View File

@ -7,11 +7,15 @@ import { JsonApiErrorParsed } from "@k8slens/json-api";
import { loggerInjectionToken } from "@k8slens/logger";
import type { Disposer } from "@k8slens/utilities";
import type { CreateNotificationOptions } from "./notifications.store";
import showErrorNotificationInjectable from "./show-error-notification.injectable";
import { showErrorNotificationInjectable } from "./show-error-notification.injectable";
export type ShowCheckedErrorNotification = (message: unknown, fallback: string, opts?: CreateNotificationOptions) => Disposer;
export type ShowCheckedErrorNotification = (
message: unknown,
fallback: string,
opts?: CreateNotificationOptions,
) => Disposer;
const showCheckedErrorNotificationInjectable = getInjectable({
export const showCheckedErrorNotificationInjectable = getInjectable({
id: "show-checked-error-notififcation",
instantiate: (di): ShowCheckedErrorNotification => {
const showErrorNotification = di.inject(showErrorNotificationInjectable);
@ -28,5 +32,3 @@ const showCheckedErrorNotificationInjectable = getInjectable({
};
},
});
export default showCheckedErrorNotificationInjectable;

View File

@ -5,9 +5,9 @@
import { getInjectable } from "@ogre-tools/injectable";
import type { ShowNotification } from "./notifications";
import { NotificationStatus } from "./notifications.store";
import notificationsStoreInjectable from "./notifications-store.injectable";
import { notificationsStoreInjectable } from "./notifications-store.injectable";
const showErrorNotificationInjectable = getInjectable({
export const showErrorNotificationInjectable = getInjectable({
id: "show-error-notification",
instantiate: (di): ShowNotification => {
@ -21,5 +21,3 @@ const showErrorNotificationInjectable = getInjectable({
});
},
});
export default showErrorNotificationInjectable;

View File

@ -5,9 +5,9 @@
import { getInjectable } from "@ogre-tools/injectable";
import type { ShowNotification } from "./notifications";
import { NotificationStatus } from "./notifications.store";
import notificationsStoreInjectable from "./notifications-store.injectable";
import { notificationsStoreInjectable } from "./notifications-store.injectable";
const showInfoNotificationInjectable = getInjectable({
export const showInfoNotificationInjectable = getInjectable({
id: "show-info-notification",
instantiate: (di): ShowNotification => {
@ -21,5 +21,3 @@ const showInfoNotificationInjectable = getInjectable({
});
},
});
export default showInfoNotificationInjectable;

View File

@ -5,9 +5,9 @@
import { getInjectable } from "@ogre-tools/injectable";
import type { ShowNotification } from "./notifications";
import showInfoNotificationInjectable from "./show-info-notification.injectable";
import { showInfoNotificationInjectable } from "./show-info-notification.injectable";
const showShortInfoNotificationInjectable = getInjectable({
export const showShortInfoNotificationInjectable = getInjectable({
id: "show-short-info-notification",
instantiate: (di): ShowNotification => {
const showInfoNotification = di.inject(showInfoNotificationInjectable);
@ -20,5 +20,3 @@ const showShortInfoNotificationInjectable = getInjectable({
};
},
});
export default showShortInfoNotificationInjectable;

View File

@ -5,9 +5,9 @@
import { getInjectable } from "@ogre-tools/injectable";
import type { ShowNotification } from "./notifications";
import { NotificationStatus } from "./notifications.store";
import notificationsStoreInjectable from "./notifications-store.injectable";
import { notificationsStoreInjectable } from "./notifications-store.injectable";
const showSuccessNotificationInjectable = getInjectable({
export const showSuccessNotificationInjectable = getInjectable({
id: "show-success-notification",
instantiate: (di): ShowNotification => {
@ -22,5 +22,3 @@ const showSuccessNotificationInjectable = getInjectable({
});
},
});
export default showSuccessNotificationInjectable;

View File

@ -0,0 +1,28 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
const path = require("path");
module.exports = {
content: [path.join(__dirname, "src/**/*.tsx")],
darkMode: "class",
theme: {
fontFamily: {
sans: ["Roboto", "Helvetica", "Arial", "sans-serif"],
},
extend: {
colors: {
textAccent: "var(--textColorAccent)",
textPrimary: "var(--textColorPrimary)",
textTertiary: "var(--textColorTertiary)",
textDimmed: "var(--textColorDimmed)",
},
},
},
variants: {
extend: {},
},
plugins: [],
};

Some files were not shown because too many files have changed in this diff Show More