php-school / cli-menu

🖥 Build beautiful PHP CLI menus. Simple yet Powerful. Expressive DSL.
http://www.phpschool.io
MIT License
1.94k stars 106 forks source link

askText() requires two presses of enter and cuts the line (during copy/paste) #264

Closed zhdanov closed 1 year ago

zhdanov commented 1 year ago

Hello, here is an example:

<?php
require __DIR__.'/vendor/autoload.php';

use PhpSchool\CliMenu\Builder\CliMenuBuilder;
use PhpSchool\CliMenu\CliMenu;
use PhpSchool\CliMenu\MenuStyle;

$builder = new CliMenuBuilder;

$itemCallable = function ($menu) {
    $style = (new MenuStyle())->setBg('black')->setFg('white');

    $result = $menu->askText($style)
        ->setPromptText('Title')
        ->setPlaceholderText('Placeholder')
        ->ask();

    echo $result->fetch();
};

$builder->addSubMenu('Item 1', function (CliMenuBuilder $b) use ($itemCallable) {
    $b->setTitle('Menu > Item 1');

    $b->addItem('Sub item', function (CliMenu $menu) use ($itemCallable) {
        $itemCallable($menu);
    });
});

$menu = $builder->build();

$menu->open();

Copy and paste into dialog: "Lorem ipsum dolor sit amet".

result:   Lorem ipsum dolor sit am
expected: Lorem ipsum dolor sit amet
AydinHassan commented 1 year ago

Yeah this is a bug, seems like a duplicate of https://github.com/php-school/cli-menu/issues/165#issuecomment-418318941. Please feel free to continue the discussion there :)