LCOV - code coverage report
Current view: top level - pkg/lib - cockpit-components-empty-state.tsx Coverage Total Hit
Test: cockpit Lines: 100.0 % 35 35
Test Date: 2026-06-25 11:17:56

            Line data    Source code
       1              : /*
       2              :  * Copyright (C) 2019 Red Hat, Inc.
       3              :  * SPDX-License-Identifier: LGPL-2.1-or-later
       4              :  */
       5              : 
       6          715 : import React from "react";
       7              : import { Button } from "@patternfly/react-core/dist/esm/components/Button/index.js";
       8              : import type { ButtonProps } from "@patternfly/react-core/dist/esm/components/Button/index.js";
       9              : import {
      10              :     EmptyStateActions, EmptyState, EmptyStateBody, EmptyStateFooter, EmptyStateVariant
      11              : } from "@patternfly/react-core/dist/esm/components/EmptyState/index.js";
      12              : import type { EmptyStateProps } from "@patternfly/react-core/dist/esm/components/EmptyState/index.js";
      13              : import { Spinner } from "@patternfly/react-core/dist/esm/components/Spinner/index.js";
      14              : import "./cockpit-components-empty-state.css";
      15              : 
      16          196 : export const EmptyStatePanel = ({
      17          196 :     title,
      18          196 :     paragraph,
      19          196 :     loading = false,
      20          196 :     icon,
      21          196 :     action,
      22          196 :     isActionInProgress = false,
      23          196 :     onAction,
      24          196 :     actionVariant = "primary",
      25          196 :     secondary,
      26          196 :     headingLevel = "h1"
      27          196 : }: {
      28              :     title?: EmptyStateProps["titleText"],
      29              :     paragraph?: React.ReactNode,
      30              :     loading?: boolean,
      31              :     icon?: EmptyStateProps["icon"],
      32              :     action?: React.ReactNode | string,
      33              :     isActionInProgress?: boolean,
      34              :     onAction?: ButtonProps["onClick"],
      35              :     actionVariant?: ButtonProps["variant"],
      36              :     secondary?: React.ReactNode,
      37              :     headingLevel?: EmptyStateProps['headingLevel'],
      38          196 : }) => {
      39           46 :     const slimType = title || paragraph ? "" : "slim";
      40           70 :     const emptyStateHeaderIcon = loading ? Spinner : icon;
      41              : 
      42          196 :     return (
      43          196 :         <EmptyState headingLevel={headingLevel} titleText={title} variant={EmptyStateVariant.full} {...emptyStateHeaderIcon && { icon: emptyStateHeaderIcon }}>
      44          196 :             <EmptyStateBody>
      45          196 :                 {paragraph}
      46          196 :             </EmptyStateBody>
      47          183 :             {(action || secondary) &&
      48           76 :                 <EmptyStateFooter>
      49           66 :                     { action && (typeof action == "string"
      50           45 :                         ? <Button variant={actionVariant} className={slimType}
      51           45 :                               isLoading={isActionInProgress}
      52           45 :                               isDisabled={isActionInProgress}
      53           45 :                               onClick={onAction}>
      54           45 :                             {action}
      55           45 :                         </Button>
      56           49 :                         : action)}
      57           39 :                     { secondary && <EmptyStateActions>{secondary}</EmptyStateActions> }
      58           76 :                 </EmptyStateFooter>}
      59          196 :         </EmptyState>
      60              :     );
      61          196 : };
        

Generated by: LCOV version 2.0-1