# विनाशकारी क्रिया से पहले पुष्टि कैसे माँगें

> buttonAction के साथ पुष्टि का Alert दिखाएँ, पृष्ठभूमि को गहरा करें और Hint से फ़ीडबैक दें।

Source: https://crossfly.dev/hi/docs/cookbook/nav/dialogo-confirmacao — CrossFly documentation. Full docs as one file: https://crossfly.dev/llms-full.txt

# विनाशकारी क्रिया से पहले पुष्टि कैसे माँगें

**उद्देश्य।** किसी चीज़ को हटाने/त्यागने से पहले, दो बटनों वाला एक `Alert` दिखाएँ (उदा.: "रद्द करें" और "हटाएँ")। विनाशकारी क्रिया केवल पुष्टि बटन के callback में ही निष्पादित करें।

## उपयोग की गई APIs
- `new Alert(String title, String message, String... buttonTexts)` — डायलॉग बनाता है। `Alert` **एक `Window` है**; बटन सक्रिय `Skin` का अनुसरण करते हैं।
- `Alert.buttonAction(int index, Component.Action action)` — किसी बटन की क्रिया परिभाषित करता है (0-आधारित इंडेक्स)। बिना क्रिया के, बटन केवल बंद होता है (`hide()`)।
- `Alert.show()` — डायलॉग को स्टैक करता है (push modal)।
- `WindowStyle.fadeBackground(int alpha)` — नीचे की विंडो को गहरा करता है (0–255)। `getStyle()` के माध्यम से style प्राप्त करें।
- `Hint.show(String message, int delayMs)` — फ़ीडबैक का एक छोटा toast दिखाता है।

## पूर्ण उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)
```java
package com.exemplo;

import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;

/** मुख्य निष्पादन योग्य स्क्रीन: एक बटन पुष्टि Alert दिखाता है। */
public class MainWindow extends Window
{
   @Override
   public void onShow() throws Exception
   {
      super.onShow();
      setLayout(new VerticalLayout());

      add(new Label("Pedido #1234"));
      add(new Button("Excluir pedido").onAction(e -> confirmarExclusao()));
   }

   private void confirmarExclusao()
   {
      Alert alert = new Alert("Excluir pedido", "Esta ação não pode ser desfeita.", "Cancelar", "Excluir");

      // पृष्ठभूमि को गहरा करता है (0..255)। Alert का getStyle() एक WindowStyle है।
      ((WindowStyle) alert.getStyle()).fadeBackground(150);

      // इंडेक्स 0 = "रद्द करें": बिना buttonAction के, बटन खुद ही Alert बंद कर देता है।
      // इंडेक्स 1 = "हटाएं": विनाशकारी क्रिया + फीडबैक।
      alert.buttonAction(1, e ->
      {
         excluirPedido();                 // विनाशकारी क्रिया
         alert.hide();                    // संवाद बंद करता है
         Hint.show("Pedido excluído", 1500);
      });

      alert.show();
   }

   private void excluirPedido()
   {
      // ... आपका हटाने का तर्क ...
   }
}
```

> नीचे का अंश **केवल मुख्य भाग** दिखाता है। चलाने के लिए, इसे ऊपर दिए गए `MainWindow` ढाँचे में रखें।

## न्यूनतम अंश
```java
// स्रोत में सत्यापित: Alert.buttonAction(idx, Action); WindowStyle.fadeBackground(int 0-255); Hint.show(msg, ms)
Alert alert = new Alert("Excluir pedido", "Esta ação não pode ser desfeita.", "Cancelar", "Excluir");

// पृष्ठभूमि को गहरा करता है (0..255)। Alert का getStyle() एक WindowStyle है।
((WindowStyle) alert.getStyle()).fadeBackground(150);

// इंडेक्स 0 = "रद्द करें": बिना buttonAction के, बटन खुद ही Alert बंद कर देता है।
// इंडेक्स 1 = "हटाएं": विनाशकारी क्रिया + फीडबैक।
alert.buttonAction(1, e ->
{
   excluirPedido();                 // विनाशकारी क्रिया
   alert.hide();                    // संवाद बंद करता है
   Hint.show("Pedido excluído", 1500);
});

alert.show();
```

आश्चर्य से बचाने वाली बातें:

- यदि आप किसी बटन के लिए `buttonAction` **परिभाषित नहीं** करते, तो Alert `onAction(e -> hide())` जोड़ देता है — बटन बिना और कुछ किए डायलॉग बंद कर देता है। इसीलिए "रद्द करें" सामान्यतः `buttonAction` की आवश्यकता नहीं रखता।
- विनाशकारी क्रिया **हमेशा** पुष्टि बटन (यहाँ, इंडेक्स 1) में रखें, कभी भी डिफ़ॉल्ट व्यवहार के रूप में नहीं।
- `fadeBackground` alpha 0–255 लेता है (0xAARRGGBB नहीं)। 150 सामग्री को मिटाए बिना एक ध्यान देने योग्य गहरापन देता है।

## और गहराई में जाएँ
- [डायलॉग और मोडल](/docs/ui/navigation/dialogs-and-modals)
- संबंधित रेसिपी: [स्क्रीन खोलना और बंद करना](/docs/cookbook/nav/abrir-tela)
