Activities of "berkansasmaz"

Hello @John,

This is a business decision. To access the new microservice template and ABP Studio's Kubernetes panel, you need to have an Enterprise or Business license type.

By the way, we are already trying to write this information in the documentation. See more: https://docs.abp.io/en/commercial/latest/studio/kubernetes#prerequisites

Thank you for your understanding 🙏

ABP Studio 0.6.5 New Solution Wizard fails on creation
Tired with Most configurations, Including Single Layer, Layered, Blazor, Angular...

Error Log: 2024-02-07 13:53:15.920 +08:00 [ERR] Object reference not set to an instance of an object. System.NullReferenceException: Object reference not set to an instance of an object. at Volo.Abp.Cli.ProjectBuilding.SolutionName.Parse(String fullName) at Volo.Abp.Studio.Extensions.StandardTemplates.UI.AppNoLayersPro.AppNoLayersProSolutionTemplateViewService.CreateSolutionBuilderContextConfig(NewSolutionWizardContext wizardContext) at Volo.Abp.Studio.UI.ViewModels.NewSolution.NewSolutionWizardWindowViewModel.UyNGQswyrv() at Volo.Abp.Studio.UI.ViewModels.NewSolution.NewSolutionWizardWindowViewModel.UyNGQswyrv() at Volo.Abp.Studio.UI.ViewModels.NewSolution.NewSolutionWizardWindowViewModel.MUZGoJcLlJ()

Picture:

Hello, can you delete the file below and try again?

Windows:

%UserProfile%\.abp\studio\extensions.json

Macos

~/.abp/studio/extensions.json

Hello @Stloby, thank you for contacting us :)

We are currently considering your organization's beta request for ABP-Studio, you will be notified if it results positively.

Once your beta access is approved, you can create your project as you wish with ABP Studio. Thank you for your understanding.

Hello, we are dealing with the issue, but as a workaround, I suggest you run ABP Studio with administrator privileges. You can use the following code for this:

sudo open /Applications/ABP\ Studio.app


Since it is an internal issue that we are already tracking and a workaround has been provided, I am closing this issue.

Hello, first of all, thank you very much for the information you have provided. I have conveyed to my related teammates how they can reproduce the problem.


Thank you again for your understanding.

Hello again, you stated that you encountered the following error while customizing:

I've got it partially working but have run into some issues due to the javascript for the general settings menu. I don't have much insight into what's happening under the hood, but I'm getting an exception which prevents the user menu from loading.

Uncaught TypeError: Cannot read properties of null (reading 'parentElement')
    at t.initChildren (lepton-x.bundle.min.js?_v=638261408440000000:2:43721)
    at new t (lepton-x.bundle.min.js?_v=638261408440000000:2:41474)
    at t.create (lepton-x.bundle.min.js?_v=638261408440000000:2:41563)
    at t.createSettingGroupWithMenu (lepton-x.bundle.min.js?_v=638261408440000000:2:86551)
    at e [as constructor] (lepton-x.bundle.min.js?_v=638261408440000000:2:68837)
    at new e (lepton-x.bundle.min.js?_v=638261408440000000:2:71613)
    at e.create (lepton-x.bundle.min.js?_v=638261408440000000:2:71708)
    at t.createSettingGroups (lepton-x.bundle.min.js?_v=638261408440000000:2:73132)
    at t.create (lepton-x.bundle.min.js?_v=638261408440000000:2:72833)
    at NodeList.forEach ()

We have intuitive guesses as to where this error might be, but we want to reproduce the error just to be sure. Could you please tell us the steps by which we can reproduce the error?

As an alternative, I thought it would be possible to move the appearance and language menus to the top toolbar like this:

Hello, I have examined your problem in detail, the alternative solution looks good, but I am sorry for the error you have received. We are already aware of the problem and will work to solve it in future versions.

To briefly talk about the problem, LeptonX traverses the DOM elements in order while it is initializing, and if it cannot find an element it expects while it is traversing, it gives an error. So, you may have removed an element in the existing structure, for example, removing General Settings menu will cause this error. Likewise, removing Appearance under General Settings menu or changing its order will cause an error. If you are removing an element from the DOM, instead of removing it, I can recommend you set the visible property to hidden in the style as a workaround for now.

Hello, sorry for the late reply.

I will create an internal issue on the subject.

I can suggest the following code as a workaround. It's not a workaround that will meet all your needs, but it still works:

1-) Create menu.js in wwwroot folder as follow:

$(function () {
    // Function to toggle the settings menu visibility
    function toggleSettingsMenu() {
        const settingsMenu = document.querySelector('[data-lpx-context-menu="settings-context-menu"]');
        settingsMenu.classList.toggle('show');
    }

    // Function to handle keyboard events on the settings menu item
    function handleSettingsMenuItemKeydown(event) {
        if (event.key === 'Enter') {
            event.preventDefault(); // Prevent default action for "Enter" key
            toggleSettingsMenu(); // Toggle the settings menu visibility
        }
    }

    // Function to add keyboard accessibility to the settings menu
    function addKeyboardAccessibilityToSettingsMenu() {
        const settingsMenuItem = document.getElementById('lpx-settings');
        settingsMenuItem.setAttribute('tabindex', '0');
        settingsMenuItem.addEventListener('keydown', handleSettingsMenuItemKeydown);
        settingsMenuItem.addEventListener('blur', () => {
            const settingsMenu = document.querySelector('[data-lpx-context-menu="settings-context-menu"]');
            settingsMenu.classList.remove('show');
        }); // Close the settings menu when focus is lost

        const settingIcons = document.querySelectorAll('.setting-icon');
        settingIcons.forEach(item => {
            item.setAttribute('tabindex', '0');
            item.addEventListener('keydown', handleSubMenuItemKeydown);
        });
    }

    addKeyboardAccessibilityToSettingsMenu();

    function handleMenuItemKeydown(event) {
        if (event.key === 'Enter') {
            event.preventDefault(); // Prevent default action for "Enter" key
            // Toggle the sub-menu visibility
            const subMenu = event.currentTarget.querySelector('.lpx-inner-menu');
            if (subMenu) {
                subMenu.classList.toggle('show');
                if (subMenu.classList.contains('show')) {
                    const subMenuItems = subMenu.querySelectorAll('.lpx-menu-item-link');
                    subMenuItems.forEach(item => item.setAttribute('tabindex', '0'));
                } else {
                    const subMenuItems = subMenu.querySelectorAll('.lpx-menu-item-link');
                    subMenuItems.forEach(item => item.removeAttribute('tabindex'));
                }
            }
        } else if (event.key === 'ArrowDown') {
            event.preventDefault(); // Prevent default action for "ArrowDown" key
            // Focus on the next menu item
            const nextMenuItem = event.currentTarget.nextElementSibling;
            if (nextMenuItem) {
                nextMenuItem.querySelector('.lpx-menu-item-link').focus();
            }
        } else if (event.key === 'ArrowUp') {
            event.preventDefault(); // Prevent default action for "ArrowUp" key
            // Focus on the previous menu item
            const prevMenuItem = event.currentTarget.previousElementSibling;
            if (prevMenuItem) {
                prevMenuItem.querySelector('.lpx-menu-item-link').focus();
            }
        }
    }

    // Function to handle keyboard events on sub-menu items
    function handleSubMenuItemKeydown(event) {
        if (event.key === 'Enter') {
            event.preventDefault(); // Prevent default action for "Enter" key
            // Perform the desired action for the sub-menu item (you can open sub-menus here)
            const linkElement = event.target.closest('.lpx-menu-item-link');
            if (linkElement) {
                window.location.href = linkElement.getAttribute('href');
            }
        } else if (event.key === 'ArrowDown') {
            event.preventDefault(); // Prevent default action for "ArrowDown" key
            // Focus on the next sub-menu item
            const nextSubMenuItem = event.currentTarget.nextElementSibling;
            if (nextSubMenuItem) {
                nextSubMenuItem.querySelector('.lpx-menu-item-link').focus();
            }
        } else if (event.key === 'ArrowUp') {
            event.preventDefault(); // Prevent default action for "ArrowUp" key
            // Focus on the previous sub-menu item
            const prevSubMenuItem = event.currentTarget.previousElementSibling;
            if (prevSubMenuItem) {
                prevSubMenuItem.querySelector('.lpx-menu-item-link').focus();
            }
        }
    }

    // Function to add keyboard accessibility to the menu
    function addKeyboardAccessibilityToMenu() {
        const menuItems = document.querySelectorAll('.lpx-menu-item');
        menuItems.forEach(item => {
            item.setAttribute('tabindex', '0');
            item.addEventListener('keydown', handleMenuItemKeydown);
        });

        const subMenuItems = document.querySelectorAll('.lpx-inner-menu-item');
        subMenuItems.forEach(item => {
            item.setAttribute('tabindex', '-1');
            item.addEventListener('keydown', handleSubMenuItemKeydown);
        });
    }

    // Call the function to enable keyboard accessibility for the menu
    addKeyboardAccessibilityToMenu();
});

2-) Configure AbpBundlingOptions in the module class of your web project as follow:


      Configure<AbpBundlingOptions>(options =>
        {
            options.StyleBundles.Configure(
                LeptonXThemeBundles.Styles.Global,
                bundle =>
                {
                    ...
                }
            );

            options.ScriptBundles.Configure(
                LeptonXThemeBundles.Styles.Global,
                bundle =>
                {
                    ...
                    bundle.AddFiles("/menu.js");
                    ...
                });
        });

Hello, @enis and I have done a lot of research to be able to recommend you a workaround, but unfortunately, we could not find a suitable workaround. In order not to encounter similar problems in future versions, we have made the relevant parts of LeptonX overridable. The issue was resolved in version 7.2.* and with 7.4.* we will make it possible to override it if desired, but unfortunately, this is not possible in version 6.0.1.

Sorry for the late reply.

This problem has already been solved in version 7.2.*. You can upgrade your application.

Showing 31 to 40 of 331 entries
Made with ❤️ on ABP v9.0.0-preview Updated on September 19, 2024, 10:13