cockpit-plugin-base-react - v1.1.1
    Preparing search index...

    Function useDialogState

    • Manages open/close state and associated data for a fixed set of named dialogs.

      Type Parameters

      • TDialogs extends Record<string, unknown>

      Parameters

      • names: readonly (keyof TDialogs)[]

        Array of all dialog keys. Used to initialise the state shape.

      Returns {
          close: <K extends string | number | symbol>(name: K) => void;
          closeAll: () => void;
          getData: <K extends string | number | symbol>(
              name: K,
          ) => TDialogs[K] | undefined;
          hasOpen: boolean;
          isOpen: <K extends string | number | symbol>(name: K) => boolean;
          open: <K extends string | number | symbol>(
              name: K,
              data?: TDialogs[K],
          ) => void;
          transition: <
              F extends string
              | number
              | symbol,
              To extends string | number | symbol,
          >(
              from: F,
              to: To,
              data?: TDialogs[To],
          ) => void;
      }

      • close: <K extends string | number | symbol>(name: K) => void
      • closeAll: () => void
      • getData: <K extends string | number | symbol>(name: K) => TDialogs[K] | undefined
      • hasOpen: boolean
      • isOpen: <K extends string | number | symbol>(name: K) => boolean
      • open: <K extends string | number | symbol>(name: K, data?: TDialogs[K]) => void
      • transition: <F extends string | number | symbol, To extends string | number | symbol>(
            from: F,
            to: To,
            data?: TDialogs[To],
        ) => void

        Closes from and opens to with the provided data (or from's current data if no data is provided). Useful for multi-step confirm → progress flows.

      type Modals = { delete: { id: string }; create: undefined };
      const modals = useDialogState<Modals>(["delete", "create"]);

      modals.open("delete", { id: "abc" });
      modals.isOpen("delete"); // true
      modals.getData("delete"); // { id: "abc" }
      modals.transition("delete", "create");
      modals.close("create");