DurtyFree / alt-V-NativeUI

NativeUI for GTA V alt:V Multiplayer mod written in Javascript / TypeScript
https://altv.mp/
Apache License 2.0
46 stars 22 forks source link

ItemSelect.on Checkbox detection issue #5

Closed SNIKRS closed 3 years ago

SNIKRS commented 4 years ago

ItemSelect.on doesnt seem to recognize Checkbox Item

repro code:

    JoueursMenu.AddItem(new NativeUI.UIMenuItem("Gestion des Joueurs"));
    JoueursMenu.AddItem(new NativeUI.UIMenuItem("Admin Tools"));
    JoueursMenu.AddItem(new NativeUI.UIMenuItem("Teleport Tools"));
    JoueursMenu.AddItem(new NativeUI.UIMenuItem("Coords Tools"));
    JoueursMenu.AddItem(new NativeUI.UIMenuCheckboxItem("Show Players Name & ID", false));

    JoueursMenu.ItemSelect.on(item => {
        alt.log(item.Text);
        switch (item.Text) {
            case "Show Players Name & ID":
                showname = item.Checked;
                alt.log(showname, item.Checked);

                if (!showname)
                    API.ShowNotification('~r~ShowName désactivé');
                else
                    API.ShowNotification('~g~ShowName activé, faites Echap pour l\'afficher');
                break;
        }
    });
5pHiNxX commented 3 years ago

I think this is not an issue as the Checkbox Items fire a CheckboxChange event on the menu.

this should fix your problem:

    JoueursMenu.AddItem(new NativeUI.UIMenuItem("Gestion des Joueurs"));
    JoueursMenu.AddItem(new NativeUI.UIMenuItem("Admin Tools"));
    JoueursMenu.AddItem(new NativeUI.UIMenuItem("Teleport Tools"));
    JoueursMenu.AddItem(new NativeUI.UIMenuItem("Coords Tools"));
    JoueursMenu.AddItem(new NativeUI.UIMenuCheckboxItem("Show Players Name & ID", false));

    JoueursMenu.CheckboxChange.on((item, state) => {
        alt.log(item.Text);
        switch (item.Text) {
            case "Show Players Name & ID":
                showname = state;
                alt.log(showname, item.Checked);

                if (!showname)
                    API.ShowNotification('~r~ShowName désactivé');
                else
                    API.ShowNotification('~g~ShowName activé, faites Echap pour l\'afficher');
                break;
        }
    });
DurtyFree commented 3 years ago

Its fixed, in the latest version it will trigger ItemSelect for every menu item type, as its meant to work like this. CheckboxChange will be triggered additionally.