🦑

Livewireのコンポーネントを使用する

に公開

目的

前回はlivewireをインストールしたものの、livewireの本来の良さは使い勝手のいいUIが事前に用意されていることらしいので、もう少し拡張します。

前提

手順

Fluxインストール

公式Docを見ながら入れてみました。まずはFluxをインストール。

composer require livewire/flux

LayoutファイルにFluxアセットを追加。

Tailwindのインストール

プロジェクトのルートで下記コマンドを叩く。

npm install tailwindcss @tailwindcss/vite

最低限の処理はここまで。
前回設定したhttp://localhost/counterを見てみます。

前回は白背景だったのに、普段ダークモードを使っているのでその設定の影響受けています。
ちなみにheadの記述を削除すると,,,

ダークモードは解除されました。自分で <html class="dark"> を設定して制御可能になるようです。

classを追加してブラウザを見ると


変化がない。公式Docを見るとtailwind.config.jsに記載も必要のようです。
まず下記コードでTailwindを初期化します。

npx tailwindcss init

tailwind.config.jsが作成されたので、下記のコードを記載しました。

import { flux } from "fluxui";

/** @type {import('tailwindcss').Config} */
export default {
  content: [
    './resources/**/*.blade.php',
    './resources/**/*.js',
    './storage/framework/views/*.php',
    './vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',
  ],
  darkMode: 'class',
  theme: {
    extend: {},
  },
  plugins: [flux({ appearance: 'manual' })],
};

この時点ではhtmlにdarkクラスを追加してもうまく動作しないものの、下記の切り替えボタンをapp.blade.phpにコピペするとボタンが出てきて制御できるようになりました。

<flux:button x-data x-on:click="$flux.dark = ! $flux.dark">Toggle</flux:button>

全体のコード。切り替える時はダークモードにする以上、@fluxAppearanceが必要です。

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        @fluxAppearance //コレ再追加
        <title>{{ $title ?? 'Page Title' }}</title>
    </head>
    <body>
    <flux:button x-data x-on:click="$flux.dark = ! $flux.dark">Toggle</flux:button>
        @fluxScripts
        {{ $slot }}
    </body>
</html>

次はコンポーネントを触っていきます。

Discussion