🦑
Livewireのコンポーネントを使用する
目的
前回はlivewireをインストールしたものの、livewireの本来の良さは使い勝手のいいUIが事前に用意されていることらしいので、もう少し拡張します。
前提
- Livewire入りのLravelがある
- 参考サイト
手順
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