Closed zhdanov closed 11 months ago
Hey @zhdanov, thanks for the report.
Could you supply an example that shows how you're using this?
We have some code examples in the src, examples/basic-centered.php
is one which alters the width which I've played with to also alter colour etc like above but I couldn't recreate a scenario which didn't alter the width.
Thanks!
Hey @mikeymike , sure:
<?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())->setWidth(200)->setBg('black')->setFg('white');
$result = $menu->askText($style)
->setPromptText('Title')
->setPlaceholderText('Placeholder')
->ask();
};
$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();
Hey @zhdanov I've had a quick look over this and you're totally right the dialogues don't currently utilise the width set by the style. Instead, these are calculated dynamically based on the parents width, the dialogues content and the dialogue padding styles.
Using setPaddingLeftRight
instead of setWidth
may be a suitable solution to your problem. I'm going to keep this issue open though as we may want to use width if it's been specifically set and then fallback to dynamic if it's not set.
Thanks again for the report!
Hey @mikeymike thanks! setPaddingLeftRight() works fine!
Hello,
Colors works. Width not works.