unclead / yii2-multiple-input

Yii2 widget for handle multiple inputs for an attribute of model
https://unclead.github.io/yii2-multiple-input/
BSD 3-Clause "New" or "Revised" License
392 stars 126 forks source link

Yii2 advanced template and Bootstrap 5 #373

Open numitec opened 1 year ago

numitec commented 1 year ago

Hello there,

just a question about the Bootstrap requirements: I've installed a vanilla Yii2 advanced template and now it comes with BS5; is there a version of Multiple Input compatible?

I've tried with latest 2.7.0 and TabularInput.php uses:

use yii\bootstrap\Widget;

Thank you and really appreciate your work.

S.

numitec commented 1 year ago

In order to use it, albeit in a untidy and lazy way, I've changed TableRenderer:

    private function renderAddButton()
    {
        $pathOptions = [
            'd' => 'M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM8.5 4.5a.5.5 0 0 0-1 0v3h-3a.5.5 0 0 0 0 1h3v3a.5.5 0 0 0 1 0v-3h3a.5.5 0 0 0 0-1h-3v-3z'
        ];

        $svgOptions = [
            'xmlns' => 'http://www.w3.org/2000/svg',
            'width' => 24,
            'height' => 24,
            'fill' => 'green',
            'class' => 'bi bi-plus-circle-fill multiple-input-list__btn js-input-plus',
            'viewBox' => '0 0 16 16'
        ];

        $html = Html::beginTag( 'a', [ 'href' => '#' ] );
        $html.= Html::beginTag( 'svg', $svgOptions );
        $html.= Html::tag( 'path', Null, $pathOptions );
        $html.= Html::endTag( 'svg' );
        $html.= Html::endTag( 'a' );

        return $html;
    }
    private function renderRemoveButton()
    {
        $pathOptions = [
            'd' => 'M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.646a.5.5 0 0 0 .708.708L8 8.707l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.293 5.354 4.646z'
        ];

        $svgOptions = [
            'xmlns' => 'http://www.w3.org/2000/svg',
            'width' => 24,
            'height' => 24,
            'fill' => 'red',
            'class' => 'bi-x-circle-fill multiple-input-list__btn js-input-remove',
            'viewBox' => '0 0 16 16'
        ];

        $html = Html::beginTag( 'a', [ 'href' => '#' ] );
        $html.= Html::beginTag( 'svg', $svgOptions );
        $html.= Html::tag( 'path', Null, $pathOptions );
        $html.= Html::endTag( 'svg' );
        $html.= Html::endTag( 'a' );

        return $html;
    }

It works but sorry the messy code...