0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【AdminLTE3】ウィンドウ幅の変更によりサイドバーが勝手に開閉する機能をオフにする

Posted at

問題

AdminLTE3にて、ウィンドウ幅を992pxをまたぐように変更すると、サイドバーが勝手に開閉する。
広げると開き、狭めると閉じる。
私は勝手に開閉してほしくなかったので、どうにかして解決法を探った。

解決法

AdminLTE-3.x.x/dist/js/adminlte.jsの2042行目くらいからの条件分岐を変更する。(minのほうをscriptとして読み込んでる場合は注意してね)
その後、キャッシュクリアしてスーパーリロードする。

条件文をtruefalseにしちゃう。コメントしている部分が元々の条件文である。

adminlte.js
// ↓これが2042行目
if ( true /* 修正前: $__default["default"](window).width() <= this._options.autoCollapseSize */ ) {
    if (!$bodySelector.hasClass(CLASS_NAME_OPEN$3)) {
        this.collapse();
    }
} else if ( false /* 修正前: resize === true */ ) {
    if ($bodySelector.hasClass(CLASS_NAME_OPEN$3)) {
        $bodySelector.removeClass(CLASS_NAME_OPEN$3);
    } else if ($bodySelector.hasClass(CLASS_NAME_CLOSED)) {
        this.expand();
    }
}

解説

もうちょっと広い範囲でコードを見るとこんな感じ。

adminlte.js
_proto.autoCollapse = function autoCollapse(resize) {
    if (resize === void 0) {
        resize = false;
    }

    if (!this._options.autoCollapseSize) {
        return;
    }

    var $bodySelector = $__default["default"](SELECTOR_BODY);

    if ( true /*$__default["default"](window).width() <= this._options.autoCollapseSize*/ ) {
        if (!$bodySelector.hasClass(CLASS_NAME_OPEN$3)) {
            this.collapse();
        }
    } else if ( false /*resize === true*/ ) {
        if ($bodySelector.hasClass(CLASS_NAME_OPEN$3)) {
            $bodySelector.removeClass(CLASS_NAME_OPEN$3);
        } else if ($bodySelector.hasClass(CLASS_NAME_CLOSED)) {
            this.expand();
        }
    }
};

ここはサイドバーの自動開閉動作(開閉ボタン以外での開閉)を定義しているっぽい。
引数のresizeは、ウィンドウ幅変更をして呼び出される際にtrueとなる。

このコードのもうちょい上の方で定義される定数autoCollapseSizeをいじることで、自動開閉するウィンドウ幅を変更できる。
上の方にそれが定義されてないならreturnするって書いてあるやんと思うが、それに従うと別の不具合が生じる。
具体的には、ウィンドウ幅がautoCollapseSize以下の場合で**サイドバーを閉じる際、サイドバー外をクリックする方法が動作しなくなる。**その処理はどうやら条件文をtrueに変更したif内で行われているっぽい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?