> For the complete documentation index, see [llms.txt](https://plug-and-play.gitbook.io/plug-and-play/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://plug-and-play.gitbook.io/plug-and-play/pap_core/modules/interface/panel.md).

# Panel

<details>

<summary>Création panel</summary>

* **Title :** `string`
  * Affiche le titre principal du panel.
* **Subtitle :** `string`&#x20;
  * Affiche un sous-titre sous le titre principal.
* **Data :** `table`&#x20;
  * **items :** `table`
    * **key :** `string|table`&#x20;
      * Définit une ou plusieurs touches du clavier ou de la souris utilisées pour déclencher l’action.
    * **secondKey :** `string|table`&#x20;
      * Permet de définir une touche complémentaire afin de créer une combinaison de touches.
    * **justPressed :** `boolean`
      * Indique si l’action doit se déclencher uniquement lors de l’appui initial sur la touche (`true`) ou en continu tant que la touche est maintenue (`false`).
    * **fcn :** `function(id, key)`
      * Fonction exécutée lorsque la combinaison de touches définie est activée.
        * **id :** `number`  | *id du panel*
        * **key :** `string` |  *second touche activée sinon premère si aucune*
    * **name :** `string`
      * Identifiant unique de l’item (utilisé pour le suivi et les mises à jour).
    * **text :** `string`
      * Texte affiché comme information fixe.
    * **value :** `string`
      * Valeur affichée comme information dynamique ou modifiable.
    * **colorText :** `string`
      * Couleur du texte principal (format hexadécimal).
    * **colorValue :** `string`
      * Couleur du texte de la valeur (format hexadécimal, ex: `#4dd2ff`).&#x20;
    * **aligned :** `boolean`
      * Aligne la prochaine information sur la même ligne dans le panel.
    * **icon :** `string`
      * Affiche une icône à gauche du texte.\
        Le chemin de l’icône dépend de la propriété `path`.
    * **icon2 :** `string`
      * Affiche une deuxième icône à gauche du texte (après la première).
    * **image :** `string`
      * Affiche une image à gauche du texte.\
        Plus visible et plus grande qu’une icône.
  * **path :** `string`
    * Chemin vers le dossier contenant les icônes et images utilisées par le panel.
  * **width :** `number`
    * Largeur du panel.
  * **position :** `string`
    * Position du panel à l’écran.

      `top_left`, `top`, `top_right`, `right`,  `bottom_right` , `bottom`, `bottom_left`, `left`&#x20;
  * **timerMs :** `number`
    * Ajoute un timer automatique au panel (en millisecondes).\
      Une action peut être déclenchée à la fin du timer.
* **canClose :** `boolean`
  * Autorise ou non la fermeture manuelle du panel par l’utilisateur.
* **onClose :** `function`
  * Fonction exécutée après la fermeture du panel.
* **onTimerEnd :** `function`
  * Fonction exécutée lorsque le timer arrive à son terme.

```lua
---comment
---@param title string|nil
---@param subtitle string|nil
---@param data table
---@param canClose boolean|nil
---@param onClose function
---@param onTimerEnd function
---@return table
local panel = exports["PAP_core"]:CreatePanelNUI("Title", "subtitle ", {
    items = {
        { name = "day", text = "15 Juin" , value = GetReportCount(), colorValue = "#4dd2ff" , aligned = true},
        { name = "year", text = "1920" , value = GetReportCount(), colorValue = "#4dd2ff",
        {
            id = "delete",
            key = "shift",
            secondKey = {"h", "H"},
            justPressed = true,
            icon = "shift",
            icon2 = "letter-h",
            text = "Suppression Mode",
            value = zoneDelete and "Zone" or "Entity",
            colorValue = "#4dd2ff",
            fcn = function(id, key)
                PAP.PanelUpdateValue(id, "deleteMode", zoneDelete and "Zone" or "Entity")
            end
        },
    },
    width = 15, 
    position = "bottom",
}, true, function() 
    print("fermeture") 
end, function() 
    print("le timer est fini") 
end)

--[[
    panel = {
        id = 5
    }
]]
```

</details>

<details>

<summary>Fermeture du panel</summary>

<sub>Fermeture d'un panel avec l'Id</sub>

```lua
exports["PAP_core"]:ClosePanelNUI(5)
```

</details>

<details>

<summary>Récupérer le dernier panel ouvert</summary>

```lua
exports["PAP_core"]:GetCurrentPanelOpen()
```

</details>

<details>

<summary>Récupérer un panel</summary>

<sub>Récupérer un panel avec l'id</sub>

```lua
exports["PAP_core"]:GetPanel(5)
```

</details>

<details>

<summary>Etat du panel</summary>

<sub>Voir si un panel est ouvert</sub>

<pre class="language-lua"><code class="lang-lua">---@param id number
---@return boolean
<strong>exports["PAP_core"]:IsOpenPanel(5)
</strong></code></pre>

</details>

<details>

<summary>Modification d'une valeur d'un item</summary>

<sub>Modifier la valeur d'un item avec l'</sub><sub>**Id**</sub>

```lua
---@param id number
---@param itemName number
---@param value string
exports["PAP_core"]:PanelUpdateValue(5, 5, "18 Juin")
```

<sub>Modifier la valeur d'un item avec le</sub> <sub></sub><sub>**name**</sub>

```lua
---@param id number
---@param itemName string
---@param value string
exports["PAP_core"]:PanelUpdateValueByName(5, "day", "18 Juin")
```

</details>

<details>

<summary>Modification d'un item</summary>

<sub>Ajouter un item au panel</sub>

```lua
local itemsMode = {
    {
        id = "sizeZone",
        key = {"ArrowRight", "ArrowLeft"},
        icon = "arrows-left-right",
        text = "Taille zone",
        value = sizeDelete * 2,
        colorValue = "#4dd2ff",
        fcn = function(id, key)
            local value = AddValueCorrect((key == "ArrowRight"), 0.1)
            sizeDelete = sizeDelete + value 
        end
    },
    {
        id = "deleteMode",
        key = "shift",
        secondKey = {"h", "H"},
        justPressed = true,
        icon = "shift",
        icon2 = "letter-h",
        text = "Suppression Mode",
        value = zoneDelete and "Zone" or "Entity",
        colorValue = "#4dd2ff",
        fcn = function(id, key)
            zoneDelete = not zoneDelete
            PAP.PanelUpdateValue(id, "deleteMode", zoneDelete and "Zone" or "Entity")
        end
    },
}
---@param id number
---@param item table
---@param position number|nil
exports["PAP_core"]:PanelAddItem(5, items, "18 Juin")
```

<sub>Retirer un item au panel</sub>

```lua
---@param id number
---@param itemId string
exports["PAP_core"]:PanelRemoveItem(5, "deleteMode")
```

</details>
