chore(deps): added adminlte vendored items

(this might not be entirely necessary unless we're changing everything adminlte publishes)

Signed-off-by: miguel456 <me@nogueira.codes>
This commit is contained in:
Miguel Nogueira 2023-02-26 02:15:25 +00:00
parent 0695262e73
commit 25fe13f091
No known key found for this signature in database
GPG Key ID: 3C6A7E29AF26D370
66 changed files with 3354 additions and 0 deletions

View File

@ -0,0 +1,81 @@
@extends('adminlte::master')
@php( $dashboard_url = View::getSection('dashboard_url') ?? config('adminlte.dashboard_url', 'home') )
@if (config('adminlte.use_route_url', false))
@php( $dashboard_url = $dashboard_url ? route($dashboard_url) : '' )
@else
@php( $dashboard_url = $dashboard_url ? url($dashboard_url) : '' )
@endif
@section('adminlte_css')
@stack('css')
@yield('css')
@stop
@section('classes_body'){{ ($auth_type ?? 'login') . '-page' }}@stop
@section('body')
<div class="{{ $auth_type ?? 'login' }}-box">
{{-- Logo --}}
<div class="{{ $auth_type ?? 'login' }}-logo">
<a href="{{ $dashboard_url }}">
{{-- Logo Image --}}
@if (config('adminlte.auth_logo.enabled', false))
<img src="{{ asset(config('adminlte.auth_logo.img.path')) }}"
alt="{{ config('adminlte.auth_logo.img.alt') }}"
@if (config('adminlte.auth_logo.img.class', null))
class="{{ config('adminlte.auth_logo.img.class') }}"
@endif
@if (config('adminlte.auth_logo.img.width', null))
width="{{ config('adminlte.auth_logo.img.width') }}"
@endif
@if (config('adminlte.auth_logo.img.height', null))
height="{{ config('adminlte.auth_logo.img.height') }}"
@endif>
@else
<img src="{{ asset(config('adminlte.logo_img')) }}"
alt="{{ config('adminlte.logo_img_alt') }}" height="50">
@endif
{{-- Logo Label --}}
{!! config('adminlte.logo', '<b>Admin</b>LTE') !!}
</a>
</div>
{{-- Card Box --}}
<div class="card {{ config('adminlte.classes_auth_card', 'card-outline card-primary') }}">
{{-- Card Header --}}
@hasSection('auth_header')
<div class="card-header {{ config('adminlte.classes_auth_header', '') }}">
<h3 class="card-title float-none text-center">
@yield('auth_header')
</h3>
</div>
@endif
{{-- Card Body --}}
<div class="card-body {{ $auth_type ?? 'login' }}-card-body {{ config('adminlte.classes_auth_body', '') }}">
@yield('auth_body')
</div>
{{-- Card Footer --}}
@hasSection('auth_footer')
<div class="card-footer {{ config('adminlte.classes_auth_footer', '') }}">
@yield('auth_footer')
</div>
@endif
</div>
</div>
@stop
@section('adminlte_js')
@stack('js')
@yield('js')
@stop

View File

@ -0,0 +1,104 @@
@extends('adminlte::auth.auth-page', ['auth_type' => 'login'])
@section('adminlte_css_pre')
<link rel="stylesheet" href="{{ asset('vendor/icheck-bootstrap/icheck-bootstrap.min.css') }}">
@stop
@php( $login_url = View::getSection('login_url') ?? config('adminlte.login_url', 'login') )
@php( $register_url = View::getSection('register_url') ?? config('adminlte.register_url', 'register') )
@php( $password_reset_url = View::getSection('password_reset_url') ?? config('adminlte.password_reset_url', 'password/reset') )
@if (config('adminlte.use_route_url', false))
@php( $login_url = $login_url ? route($login_url) : '' )
@php( $register_url = $register_url ? route($register_url) : '' )
@php( $password_reset_url = $password_reset_url ? route($password_reset_url) : '' )
@else
@php( $login_url = $login_url ? url($login_url) : '' )
@php( $register_url = $register_url ? url($register_url) : '' )
@php( $password_reset_url = $password_reset_url ? url($password_reset_url) : '' )
@endif
@section('auth_header', __('adminlte::adminlte.login_message'))
@section('auth_body')
<form action="{{ $login_url }}" method="post">
@csrf
{{-- Email field --}}
<div class="input-group mb-3">
<input type="email" name="email" class="form-control @error('email') is-invalid @enderror"
value="{{ old('email') }}" placeholder="{{ __('adminlte::adminlte.email') }}" autofocus>
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-envelope {{ config('adminlte.classes_auth_icon', '') }}"></span>
</div>
</div>
@error('email')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
{{-- Password field --}}
<div class="input-group mb-3">
<input type="password" name="password" class="form-control @error('password') is-invalid @enderror"
placeholder="{{ __('adminlte::adminlte.password') }}">
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-lock {{ config('adminlte.classes_auth_icon', '') }}"></span>
</div>
</div>
@error('password')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
{{-- Login field --}}
<div class="row">
<div class="col-7">
<div class="icheck-primary" title="{{ __('adminlte::adminlte.remember_me_hint') }}">
<input type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}>
<label for="remember">
{{ __('adminlte::adminlte.remember_me') }}
</label>
</div>
</div>
<div class="col-5">
<button type=submit class="btn btn-block {{ config('adminlte.classes_auth_btn', 'btn-flat btn-primary') }}">
<span class="fas fa-sign-in-alt"></span>
{{ __('adminlte::adminlte.sign_in') }}
</button>
</div>
</div>
</form>
@stop
@section('auth_footer')
{{-- Password reset link --}}
@if($password_reset_url)
<p class="my-0">
<a href="{{ $password_reset_url }}">
{{ __('adminlte::adminlte.i_forgot_my_password') }}
</a>
</p>
@endif
{{-- Register link --}}
@if($register_url)
<p class="my-0">
<a href="{{ $register_url }}">
{{ __('adminlte::adminlte.register_a_new_membership') }}
</a>
</p>
@endif
@stop

View File

@ -0,0 +1,88 @@
@extends('adminlte::master')
@section('adminlte_css')
@yield('css')
@stop
@section('classes_body', 'lockscreen')
@php( $password_reset_url = View::getSection('password_reset_url') ?? config('adminlte.password_reset_url', 'password/reset') )
@php( $dashboard_url = View::getSection('dashboard_url') ?? config('adminlte.dashboard_url', 'home') )
@if (config('adminlte.use_route_url', false))
@php( $password_reset_url = $password_reset_url ? route($password_reset_url) : '' )
@php( $dashboard_url = $dashboard_url ? route($dashboard_url) : '' )
@else
@php( $password_reset_url = $password_reset_url ? url($password_reset_url) : '' )
@php( $dashboard_url = $dashboard_url ? url($dashboard_url) : '' )
@endif
@section('body')
<div class="lockscreen-wrapper">
{{-- Lockscreen logo --}}
<div class="lockscreen-logo">
<a href="{{ $dashboard_url }}">
<img src="{{ asset(config('adminlte.logo_img')) }}" height="50">
{!! config('adminlte.logo', '<b>Admin</b>LTE') !!}
</a>
</div>
{{-- Lockscreen user name --}}
<div class="lockscreen-name">
{{ isset(Auth::user()->name) ? Auth::user()->name : Auth::user()->email }}
</div>
{{-- Lockscreen item --}}
<div class="lockscreen-item">
@if(config('adminlte.usermenu_image'))
<div class="lockscreen-image">
<img src="{{ Auth::user()->adminlte_image() }}" alt="{{ Auth::user()->name }}">
</div>
@endif
<form method="POST" action="{{ route('password.confirm') }}"
class="lockscreen-credentials @if(!config('adminlte.usermenu_image'))ml-0 @endif">
@csrf
<div class="input-group">
<input id="password" type="password" name="password"
class="form-control @error('password') is-invalid @enderror"
placeholder="{{ __('adminlte::adminlte.password') }}" required autofocus>
<div class="input-group-append">
<button type="submit" class="btn">
<i class="fas fa-arrow-right text-muted"></i>
</button>
</div>
</div>
</form>
</div>
{{-- Password error alert --}}
@error('password')
<div class="lockscreen-subitem text-center" role="alert">
<b class="text-danger">{{ $message }}</b>
</div>
@enderror
{{-- Help block --}}
<div class="help-block text-center">
{{ __('adminlte::adminlte.confirm_password_message') }}
</div>
{{-- Additional links --}}
<div class="text-center">
<a href="{{ $password_reset_url }}">
{{ __('adminlte::adminlte.i_forgot_my_password') }}
</a>
</div>
</div>
@stop
@section('adminlte_js')
@stack('js')
@yield('js')
@stop

View File

@ -0,0 +1,50 @@
@extends('adminlte::auth.auth-page', ['auth_type' => 'login'])
@php( $password_email_url = View::getSection('password_email_url') ?? config('adminlte.password_email_url', 'password/email') )
@if (config('adminlte.use_route_url', false))
@php( $password_email_url = $password_email_url ? route($password_email_url) : '' )
@else
@php( $password_email_url = $password_email_url ? url($password_email_url) : '' )
@endif
@section('auth_header', __('adminlte::adminlte.password_reset_message'))
@section('auth_body')
@if(session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
@endif
<form action="{{ $password_email_url }}" method="post">
@csrf
{{-- Email field --}}
<div class="input-group mb-3">
<input type="email" name="email" class="form-control @error('email') is-invalid @enderror"
value="{{ old('email') }}" placeholder="{{ __('adminlte::adminlte.email') }}" autofocus>
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-envelope {{ config('adminlte.classes_auth_icon', '') }}"></span>
</div>
</div>
@error('email')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
{{-- Send reset link button --}}
<button type="submit" class="btn btn-block {{ config('adminlte.classes_auth_btn', 'btn-flat btn-primary') }}">
<span class="fas fa-share-square"></span>
{{ __('adminlte::adminlte.send_password_reset_link') }}
</button>
</form>
@stop

View File

@ -0,0 +1,82 @@
@extends('adminlte::auth.auth-page', ['auth_type' => 'login'])
@php( $password_reset_url = View::getSection('password_reset_url') ?? config('adminlte.password_reset_url', 'password/reset') )
@if (config('adminlte.use_route_url', false))
@php( $password_reset_url = $password_reset_url ? route($password_reset_url) : '' )
@else
@php( $password_reset_url = $password_reset_url ? url($password_reset_url) : '' )
@endif
@section('auth_header', __('adminlte::adminlte.password_reset_message'))
@section('auth_body')
<form action="{{ $password_reset_url }}" method="post">
@csrf
{{-- Token field --}}
<input type="hidden" name="token" value="{{ $token }}">
{{-- Email field --}}
<div class="input-group mb-3">
<input type="email" name="email" class="form-control @error('email') is-invalid @enderror"
value="{{ old('email') }}" placeholder="{{ __('adminlte::adminlte.email') }}" autofocus>
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-envelope {{ config('adminlte.classes_auth_icon', '') }}"></span>
</div>
</div>
@error('email')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
{{-- Password field --}}
<div class="input-group mb-3">
<input type="password" name="password" class="form-control @error('password') is-invalid @enderror"
placeholder="{{ __('adminlte::adminlte.password') }}">
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-lock {{ config('adminlte.classes_auth_icon', '') }}"></span>
</div>
</div>
@error('password')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
{{-- Password confirmation field --}}
<div class="input-group mb-3">
<input type="password" name="password_confirmation"
class="form-control @error('password_confirmation') is-invalid @enderror"
placeholder="{{ trans('adminlte::adminlte.retype_password') }}">
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-lock {{ config('adminlte.classes_auth_icon', '') }}"></span>
</div>
</div>
@error('password_confirmation')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
{{-- Confirm password reset button --}}
<button type="submit" class="btn btn-block {{ config('adminlte.classes_auth_btn', 'btn-flat btn-primary') }}">
<span class="fas fa-sync-alt"></span>
{{ __('adminlte::adminlte.reset_password') }}
</button>
</form>
@stop

View File

@ -0,0 +1,108 @@
@extends('adminlte::auth.auth-page', ['auth_type' => 'register'])
@php( $login_url = View::getSection('login_url') ?? config('adminlte.login_url', 'login') )
@php( $register_url = View::getSection('register_url') ?? config('adminlte.register_url', 'register') )
@if (config('adminlte.use_route_url', false))
@php( $login_url = $login_url ? route($login_url) : '' )
@php( $register_url = $register_url ? route($register_url) : '' )
@else
@php( $login_url = $login_url ? url($login_url) : '' )
@php( $register_url = $register_url ? url($register_url) : '' )
@endif
@section('auth_header', __('adminlte::adminlte.register_message'))
@section('auth_body')
<form action="{{ $register_url }}" method="post">
@csrf
{{-- Name field --}}
<div class="input-group mb-3">
<input type="text" name="name" class="form-control @error('name') is-invalid @enderror"
value="{{ old('name') }}" placeholder="{{ __('adminlte::adminlte.full_name') }}" autofocus>
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-user {{ config('adminlte.classes_auth_icon', '') }}"></span>
</div>
</div>
@error('name')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
{{-- Email field --}}
<div class="input-group mb-3">
<input type="email" name="email" class="form-control @error('email') is-invalid @enderror"
value="{{ old('email') }}" placeholder="{{ __('adminlte::adminlte.email') }}">
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-envelope {{ config('adminlte.classes_auth_icon', '') }}"></span>
</div>
</div>
@error('email')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
{{-- Password field --}}
<div class="input-group mb-3">
<input type="password" name="password" class="form-control @error('password') is-invalid @enderror"
placeholder="{{ __('adminlte::adminlte.password') }}">
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-lock {{ config('adminlte.classes_auth_icon', '') }}"></span>
</div>
</div>
@error('password')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
{{-- Confirm password field --}}
<div class="input-group mb-3">
<input type="password" name="password_confirmation"
class="form-control @error('password_confirmation') is-invalid @enderror"
placeholder="{{ __('adminlte::adminlte.retype_password') }}">
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-lock {{ config('adminlte.classes_auth_icon', '') }}"></span>
</div>
</div>
@error('password_confirmation')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
{{-- Register button --}}
<button type="submit" class="btn btn-block {{ config('adminlte.classes_auth_btn', 'btn-flat btn-primary') }}">
<span class="fas fa-user-plus"></span>
{{ __('adminlte::adminlte.register') }}
</button>
</form>
@stop
@section('auth_footer')
<p class="my-0">
<a href="{{ $login_url }}">
{{ __('adminlte::adminlte.i_already_have_a_membership') }}
</a>
</p>
@stop

View File

@ -0,0 +1,23 @@
@extends('adminlte::auth.auth-page', ['auth_type' => 'login'])
@section('auth_header', __('adminlte::adminlte.verify_message'))
@section('auth_body')
@if(session('resent'))
<div class="alert alert-success" role="alert">
{{ __('adminlte::adminlte.verify_email_sent') }}
</div>
@endif
{{ __('adminlte::adminlte.verify_check_your_email') }}
{{ __('adminlte::adminlte.verify_if_not_recieved') }},
<form class="d-inline" method="POST" action="{{ route('verification.resend') }}">
@csrf
<button type="submit" class="btn btn-link p-0 m-0 align-baseline">
{{ __('adminlte::adminlte.verify_request_another') }}
</button>.
</form>
@stop

View File

@ -0,0 +1,4 @@
<button type="{{ $type }}" {{ $attributes->merge(['class' => "btn btn-{$theme}"]) }}>
@isset($icon) <i class="{{ $icon }}"></i> @endisset
@isset($label) {{ $label }} @endisset
</button>

View File

@ -0,0 +1,165 @@
@extends('adminlte::components.form.input-group-component')
{{-- Set errors bag internallly --}}
@php($setErrorsBag($errors ?? null))
{{-- Set input group item section --}}
@section('input_group_item')
{{-- Date Range Input --}}
<input id="{{ $id }}" name="{{ $name }}"
{{ $attributes->merge(['class' => $makeItemClass()]) }}>
@overwrite
{{-- Add plugin initialization and configuration code --}}
@push('js')
<script>
$(() => {
let usrCfg = _AdminLTE_DateRange.parseCfg( @json($config) );
// Add support to display a placeholder. In this situation, the related
// input won't be updated automatically and the cancel button will be
// used to clear the input.
@if($attributes->has('placeholder'))
usrCfg.autoUpdateInput = false;
$('#{{ $id }}').on('apply.daterangepicker', function(ev, picker)
{
let startDate = picker.startDate.format(picker.locale.format);
let endDate = picker.endDate.format(picker.locale.format);
let value = picker.singleDatePicker
? startDate
: startDate + picker.locale.separator + endDate;
$(this).val(value);
});
$('#{{ $id }}').on('cancel.daterangepicker', function(ev, picker)
{
$(this).val('');
});
@endif
// Check if the default set of ranges should be enabled, and if a
// default range should be set at initialization.
@isset($enableDefaultRanges)
usrCfg.ranges = usrCfg.ranges || _AdminLTE_DateRange.defaultRanges;
let range = usrCfg.ranges[ @json($enableDefaultRanges) ];
if (Array.isArray(range) && range.length > 1) {
usrCfg.startDate = range[0];
usrCfg.endDate = range[1];
}
@endisset
// Add support to auto select the previous submitted value in case
// of validation errors. Note the previous value may be a date range or
// a single date depending on the plugin configuration.
@if($errors->any() && $enableOldSupport)
let oldRange = @json($getOldValue($errorKey, ""));
let separator = " - ";
if (usrCfg.locale && usrCfg.locale.separator) {
separator = usrCfg.locale.separator;
}
// Update the related input.
if (! usrCfg.autoUpdateInput) {
$('#{{ $id }}').val(oldRange);
}
// Update the internal plugin data.
if (oldRange) {
oldRange = oldRange.split(separator);
usrCfg.startDate = oldRange.length > 0 ? oldRange[0] : null;
usrCfg.endDate = oldRange.length > 1 ? oldRange[1] : null;
}
@endif
// Setup the underlying date range plugin.
$('#{{ $id }}').daterangepicker(usrCfg);
})
</script>
@endpush
{{-- Register Javascript utility class for this component --}}
@once
@push('js')
<script>
class _AdminLTE_DateRange {
/**
* A default set of ranges options.
*/
static defaultRanges = {
'Today': [
moment().startOf('day'),
moment().endOf('day')
],
'Yesterday': [
moment().subtract(1, 'days').startOf('day'),
moment().subtract(1, 'days').endOf('day')
],
'Last 7 Days': [
moment().subtract(6, 'days'),
moment()
],
'Last 30 Days': [
moment().subtract(29, 'days'),
moment()
],
'This Month': [
moment().startOf('month'),
moment().endOf('month')
],
'Last Month': [
moment().subtract(1, 'month').startOf('month'),
moment().subtract(1, 'month').endOf('month')
]
}
/**
* Parse the php plugin configuration and eval the javascript code.
*
* cfg: A json with the php side configuration.
*/
static parseCfg(cfg)
{
for (const prop in cfg) {
let v = cfg[prop];
if (typeof v === 'string' && v.startsWith('js:')) {
cfg[prop] = eval(v.slice(3));
} else if (typeof v === 'object') {
cfg[prop] = _AdminLTE_DateRange.parseCfg(v);
}
}
return cfg;
}
}
</script>
@endpush
@endonce

View File

@ -0,0 +1,54 @@
@extends('adminlte::components.form.input-group-component')
{{-- Set errors bag internallly --}}
@php($setErrorsBag($errors ?? null))
{{-- Set input group item section --}}
@section('input_group_item')
{{-- Input Color --}}
<input id="{{ $id }}" name="{{ $name }}"
{{ $attributes->merge(['class' => $makeItemClass()]) }}>
@overwrite
{{-- Add plugin initialization and configuration code --}}
@push('js')
<script>
$(() => {
// Create a method to set the addon color.
let setAddonColor = function()
{
let color = $('#{{ $id }}').data('colorpicker').getValue();
$('#{{ $id }}').closest('.input-group')
.find('.input-group-text > i')
.css('color', color);
}
// Init the plugin and register the change event listener.
$('#{{ $id }}').colorpicker( @json($config) )
.on('change', setAddonColor);
// Add support to auto select the previous submitted value in case
// of validation errors.
@if($errors->any() && $enableOldSupport)
let oldColor = @json($getOldValue($errorKey, ""));
$('#{{ $id }}').val(oldColor).change();
@endif
// Set the initial color for the addon.
setAddonColor();
})
</script>
@endpush

View File

@ -0,0 +1,67 @@
@extends('adminlte::components.form.input-group-component')
{{-- Set errors bag internallly --}}
@php($setErrorsBag($errors ?? null))
{{-- Set input group item section --}}
@section('input_group_item')
{{-- Input Date --}}
<input id="{{ $id }}" name="{{ $name }}" data-target="#{{ $id }}" data-toggle="datetimepicker"
{{ $attributes->merge(['class' => $makeItemClass()]) }}>
@overwrite
{{-- Add plugin initialization and configuration code --}}
@push('js')
<script>
$(() => {
let usrCfg = _AdminLTE_InputDate.parseCfg( @json($config) );
$('#{{ $id }}').datetimepicker(usrCfg);
// Add support to auto display the old submitted value or values in case
// of validation errors.
let value = @json($getOldValue($errorKey, $attributes->get('value')));
$('#{{ $id }}').val(value || "");
})
</script>
@endpush
{{-- Register Javascript utility class for this component --}}
@once
@push('js')
<script>
class _AdminLTE_InputDate {
/**
* Parse the php plugin configuration and eval the javascript code.
*
* cfg: A json with the php side configuration.
*/
static parseCfg(cfg)
{
for (const prop in cfg) {
let v = cfg[prop];
if (typeof v === 'string' && v.startsWith('js:')) {
cfg[prop] = eval(v.slice(3));
} else if (typeof v === 'object') {
cfg[prop] = _AdminLTE_InputDate.parseCfg(v);
}
}
return cfg;
}
}
</script>
@endpush
@endonce

View File

@ -0,0 +1,78 @@
@extends('adminlte::components.form.input-group-component')
{{-- Set errors bag internallly --}}
@php($setErrorsBag($errors ?? null))
{{-- Set input group item section --}}
@section('input_group_item')
<div class="custom-file">
{{-- Custom file input --}}
<input type="file" id="{{ $id }}" name="{{ $name }}"
{{ $attributes->merge(['class' => $makeItemClass()]) }}>
{{-- Custom file label --}}
<label class="custom-file-label text-truncate" for="{{ $id }}"
@isset($legend) data-browse="{{ $legend }}" @endisset>
{{ $placeholder }}
</label>
</div>
@overwrite
{{-- Add the plugin initialization code --}}
@once
@push('js')
<script>
$(() => {
bsCustomFileInput.init();
})
</script>
@endpush
@endonce
{{-- Setup the height and font size of the plugin when using sm/lg sizes --}}
{{-- NOTE: this may change with newer plugin or Bootstrap versions --}}
@once
@push('css')
<style type="text/css">
{{-- SM size setup --}}
.input-group-sm .custom-file-label:after {
height: 1.8125rem;
line-height: 1.25;
}
.input-group-sm .custom-file-label {
height: calc(1.8125rem + 2px);
line-height: 1.25;
}
.input-group-sm .custom-file {
height: calc(1.8125rem + 2px);
font-size: .875rem;
}
{{-- LG size setup --}}
.input-group-lg .custom-file-label:after {
height: 2.875rem;
line-height: 1.6;
}
.input-group-lg .custom-file-label {
height: calc(2.875rem + 2px);
line-height: 1.6;
}
.input-group-lg .custom-file {
height: calc(2.875rem + 2px);
font-size: 1.25rem;
}
</style>
@endpush
@endonce

View File

@ -0,0 +1,65 @@
{{-- Setup the input group component structure --}}
<div class="{{ $makeFormGroupClass() }}">
{{-- Input label --}}
@isset($label)
<label for="{{ $id }}" @isset($labelClass) class="{{ $labelClass }}" @endisset>
{{ $label }}
</label>
@endisset
{{-- Input group --}}
<div class="{{ $makeInputGroupClass() }}">
{{-- Input prepend slot --}}
@isset($prependSlot)
<div class="input-group-prepend">{{ $prependSlot }}</div>
@endisset
{{-- Input group item --}}
@yield('input_group_item')
{{-- Input append slot --}}
@isset($appendSlot)
<div class="input-group-append">{{ $appendSlot }}</div>
@endisset
</div>
{{-- Error feedback --}}
@if($isInvalid())
<span class="invalid-feedback d-block" role="alert">
<strong>{{ $errors->first($errorKey) }}</strong>
</span>
@endif
{{-- Bottom slot --}}
@isset($bottomSlot)
{{ $bottomSlot }}
@endisset
</div>
{{-- Extra style customization for invalid input groups --}}
@once
@push('css')
<style type="text/css">
{{-- Highlight invalid input groups with a box-shadow --}}
.adminlte-invalid-igroup {
box-shadow: 0 .25rem 0.5rem rgba(0,0,0,.1);
}
{{-- Setup a red border on elements inside prepend/append add-ons --}}
.adminlte-invalid-igroup > .input-group-prepend > *,
.adminlte-invalid-igroup > .input-group-append > * {
border-color: #dc3545 !important;
}
</style>
@endpush
@endonce

View File

@ -0,0 +1,136 @@
@extends('adminlte::components.form.input-group-component')
{{-- Set errors bag internallly --}}
@php($setErrorsBag($errors ?? null))
{{-- Set input group item section --}}
@section('input_group_item')
{{-- Input Slider --}}
<input id="{{ $id }}" name="{{ $name }}"
{{ $attributes->merge(['class' => $makeItemClass()]) }}>
@overwrite
{{-- Add plugin initialization and configuration code --}}
@push('js')
<script>
$(() => {
let usrCfg = @json($config);
// Check for disabled attribute (alternative to data-slider-enable).
@if($attributes->has('disabled'))
usrCfg.enabled = false;
@endif
// Check for min, max and step attributes (alternatives to
// data-slider-min, data-slider-max and data-slider-step).
@if($attributes->has('min'))
usrCfg.min = Number( @json($attributes['min']) );
@endif
@if($attributes->has('max'))
usrCfg.max = Number( @json($attributes['max']) );
@endif
@if($attributes->has('step'))
usrCfg.step = Number( @json($attributes['step']) );
@endif
// Check for value attribute (alternative to data-slider-value).
// Also, add support to auto select the previous submitted value.
@if($attributes->has('value') || ($errors->any() && $enableOldSupport))
let value = @json($getOldValue($errorKey, $attributes['value']));
if (value) {
value = value.split(",").map(Number);
usrCfg.value = value.length > 1 ? value : value[0];
}
@endif
// Initialize the plugin.
let slider = $('#{{ $id }}').bootstrapSlider(usrCfg);
// Fix height conflict when orientation is vertical.
let or = slider.bootstrapSlider('getAttribute', 'orientation');
if (or == 'vertical') {
$('#' + usrCfg.id).css('height', '210px');
slider.bootstrapSlider('relayout');
}
})
</script>
@endpush
{{-- Add CSS workarounds for the plugin --}}
{{-- NOTE: this may change with newer plugin versions --}}
@push('css')
<style type="text/css">
{{-- Setup plugin color --}}
@isset($color)
#{{ $config['id'] }} .slider-handle {
background: {{ $color }};
}
#{{ $config['id'] }} .slider-selection {
background: {{ $color }};
opacity: 0.5;
}
#{{ $config['id'] }} .slider-tick.in-selection {
background: {{ $color }};
opacity: 0.9;
}
@endisset
{{-- Set flex property when using addons slots --}}
@if(isset($appendSlot) || isset($prependSlot))
#{{ $config['id'] }} {
flex: 1 1 0;
align-self: center;
@isset($appendSlot) margin-right: 5px; @endisset
@isset($prependSlot) margin-left: 5px; @endisset
}
@endif
</style>
@endpush
{{-- Setup custom invalid style --}}
{{-- NOTE: this may change with newer plugin versions --}}
@once
@push('css')
<style type="text/css">
.adminlte-invalid-islgroup .slider-track,
.adminlte-invalid-islgroup > .input-group-prepend > *,
.adminlte-invalid-islgroup > .input-group-append > * {
box-shadow: 0 .25rem 0.5rem rgba(255,0,0,.25);
}
.adminlte-invalid-islgroup .slider-vertical {
margin-bottom: 1rem;
}
</style>
@endpush
@endonce

View File

@ -0,0 +1,74 @@
@extends('adminlte::components.form.input-group-component')
{{-- Set errors bag internallly --}}
@php($setErrorsBag($errors ?? null))
{{-- Set input group item section --}}
@section('input_group_item')
{{-- Input Switch --}}
<input type="checkbox" id="{{ $id }}" name="{{ $name }}" value="true"
{{ $attributes->merge(['class' => $makeItemClass()]) }}>
@overwrite
{{-- Add plugin initialization and configuration code --}}
@push('js')
<script>
$(() => {
$('#{{ $id }}').bootstrapSwitch( @json($config) );
// Add support to auto select the previous submitted value in case of
// validation errors.
@if($errors->any() && $enableOldSupport)
let oldState = @json((bool)$getOldValue($errorKey));
$('#{{ $id }}').bootstrapSwitch('state', oldState);
@endif
})
</script>
@endpush
{{-- Setup the height/font of the plugin when using sm/lg sizes --}}
{{-- NOTE: this may change with newer plugin versions --}}
@once
@push('css')
<style type="text/css">
{{-- MD (default) size setup --}}
.input-group .bootstrap-switch-handle-on,
.input-group .bootstrap-switch-handle-off {
height: 2.25rem !important;
}
{{-- LG size setup --}}
.input-group-lg .bootstrap-switch-handle-on,
.input-group-lg .bootstrap-switch-handle-off {
height: 2.875rem !important;
font-size: 1.25rem !important;
}
{{-- SM size setup --}}
.input-group-sm .bootstrap-switch-handle-on,
.input-group-sm .bootstrap-switch-handle-off {
height: 1.8125rem !important;
font-size: .875rem !important;
}
{{-- Custom invalid style setup --}}
.adminlte-invalid-iswgroup > .bootstrap-switch-wrapper,
.adminlte-invalid-iswgroup > .input-group-prepend > *,
.adminlte-invalid-iswgroup > .input-group-append > * {
box-shadow: 0 .25rem 0.5rem rgba(255,0,0,.25);
}
</style>
@endpush
@endonce

View File

@ -0,0 +1,16 @@
@extends('adminlte::components.form.input-group-component')
{{-- Set errors bag internallly --}}
@php($setErrorsBag($errors ?? null))
{{-- Set input group item section --}}
@section('input_group_item')
{{-- Input --}}
<input id="{{ $id }}" name="{{ $name }}"
value="{{ $getOldValue($errorKey, $attributes->get('value')) }}"
{{ $attributes->merge(['class' => $makeItemClass()]) }}>
@overwrite

View File

@ -0,0 +1,26 @@
{{-- Empty option --}}
@if(isset($emptyOption))
<option value>
{{ is_string($emptyOption) ? $emptyOption : '' }}
</option>
{{-- Placeholder option --}}
@elseif(isset($placeholder))
<option class="d-none" value>
{{ is_string($placeholder) ? $placeholder : '' }}
</option>
@endif
{{-- Other options --}}
@foreach($options as $key => $value)
<option value="{{ $key }}"
@if($isSelected($key)) selected @endif
@if($isDisabled($key)) disabled @endif>
{{ $value }}
</option>
@endforeach

View File

@ -0,0 +1,53 @@
@extends('adminlte::components.form.input-group-component')
{{-- Set errors bag internallly --}}
@php($setErrorsBag($errors ?? null))
{{-- Set input group item section --}}
@section('input_group_item')
{{-- Select --}}
<select id="{{ $id }}" name="{{ $name }}"
{{ $attributes->merge(['class' => $makeItemClass()]) }}>
{{ $slot }}
</select>
@overwrite
{{-- Add plugin initialization and configuration code --}}
@push('js')
<script>
$(() => {
$('#{{ $id }}').selectpicker( @json($config) );
// Add support to auto select old submitted values in case of
// validation errors.
@if($errors->any() && $enableOldSupport)
let oldOptions = @json(collect($getOldValue($errorKey)));
$('#{{ $id }}').selectpicker('val', oldOptions);
@endif
})
</script>
@endpush
{{-- Set of CSS workarounds for the plugin --}}
{{-- NOTE: this may change with newer plugin versions --}}
@once
@push('css')
<style type="text/css">
{{-- Fix the invalid visual style --}}
.bootstrap-select.is-invalid {
padding-right: 0px !important;
}
</style>
@endpush
@endonce

View File

@ -0,0 +1,38 @@
@extends('adminlte::components.form.input-group-component')
{{-- Set errors bag internallly --}}
@php($setErrorsBag($errors ?? null))
{{-- Set input group item section --}}
@section('input_group_item')
{{-- Select --}}
<select id="{{ $id }}" name="{{ $name }}"
{{ $attributes->merge(['class' => $makeItemClass()]) }}>
{{ $slot }}
</select>
@overwrite
{{-- Support to auto select the old submitted values --}}
@if($errors->any() && $enableOldSupport)
@push('js')
<script>
$(() => {
let oldOptions = @json(collect($getOldValue($errorKey)));
$('#{{ $id }} option').each(function()
{
let value = $(this).val() || $(this).text();
$(this).prop('selected', oldOptions.includes(value));
});
});
</script>
@endpush
@endif

View File

@ -0,0 +1,106 @@
@extends('adminlte::components.form.input-group-component')
{{-- Set errors bag internallly --}}
@php($setErrorsBag($errors ?? null))
{{-- Set input group item section --}}
@section('input_group_item')
{{-- Select --}}
<select id="{{ $id }}" name="{{ $name }}"
{{ $attributes->merge(['class' => $makeItemClass()]) }}>
{{ $slot }}
</select>
@overwrite
{{-- Add plugin initialization and configuration code --}}
@push('js')
<script>
$(() => {
$('#{{ $id }}').select2( @json($config) );
// Add support to auto select old submitted values in case of
// validation errors.
@if($errors->any() && $enableOldSupport)
let oldOptions = @json(collect($getOldValue($errorKey)));
$('#{{ $id }} option').each(function()
{
let value = $(this).val() || $(this).text();
$(this).prop('selected', oldOptions.includes(value));
});
$('#{{ $id }}').trigger('change');
@endif
})
</script>
@endpush
{{-- CSS workarounds for the Select2 plugin --}}
{{-- NOTE: this may change with newer plugin versions --}}
@once
@push('css')
<style type="text/css">
{{-- SM size setup --}}
.input-group-sm .select2-selection--single {
height: calc(1.8125rem + 2px) !important
}
.input-group-sm .select2-selection--single .select2-selection__rendered,
.input-group-sm .select2-selection--single .select2-selection__placeholder {
font-size: .875rem !important;
line-height: 2.125;
}
.input-group-sm .select2-selection--multiple {
min-height: calc(1.8125rem + 2px) !important
}
.input-group-sm .select2-selection--multiple .select2-selection__rendered {
font-size: .875rem !important;
line-height: normal;
}
{{-- LG size setup --}}
.input-group-lg .select2-selection--single {
height: calc(2.875rem + 2px) !important;
}
.input-group-lg .select2-selection--single .select2-selection__rendered,
.input-group-lg .select2-selection--single .select2-selection__placeholder {
font-size: 1.25rem !important;
line-height: 2.25;
}
.input-group-lg .select2-selection--multiple {
min-height: calc(2.875rem + 2px) !important
}
.input-group-lg .select2-selection--multiple .select2-selection__rendered {
font-size: 1.25rem !important;
line-height: 1.7;
}
{{-- Enhance the plugin to support readonly attribute --}}
select[readonly].select2-hidden-accessible + .select2-container {
pointer-events: none;
touch-action: none;
}
select[readonly].select2-hidden-accessible + .select2-container .select2-selection {
background: #e9ecef;
box-shadow: none;
}
select[readonly].select2-hidden-accessible + .select2-container .select2-search__field {
display: none;
}
</style>
@endpush
@endonce

View File

@ -0,0 +1,74 @@
@extends('adminlte::components.form.input-group-component')
{{-- Set errors bag internallly --}}
@php($setErrorsBag($errors ?? null))
{{-- Set input group item section --}}
@section('input_group_item')
{{-- Summernote Textarea --}}
<textarea id="{{ $id }}" name="{{ $name }}"
{{ $attributes->merge(['class' => $makeItemClass()]) }}
>{{ $getOldValue($errorKey, $slot) }}</textarea>
@overwrite
{{-- Add plugin initialization and configuration code --}}
@push('js')
<script>
$(() => {
let usrCfg = @json($config);
// Check for placeholder attribute.
@isset($attributes['placeholder'])
usrCfg['placeholder'] = "{{ $attributes['placeholder'] }}";
@endisset
// Initialize the plugin.
$('#{{ $id }}').summernote(usrCfg);
// Check for disabled attribute.
@isset($attributes['disabled'])
$('#{{ $id }}').summernote('disable');
@endisset
})
</script>
@endpush
{{-- Setup the font size of the plugin when using sm/lg sizes --}}
{{-- NOTE: this may change with newer plugin versions --}}
@once
@push('css')
<style type="text/css">
{{-- SM size setup --}}
.input-group-sm .note-editor {
font-size: .875rem;
line-height: 1;
}
{{-- LG size setup --}}
.input-group-lg .note-editor {
font-size: 1.25rem;
line-height: 1.5;
}
{{-- Setup custom invalid style --}}
.adminlte-invalid-itegroup .note-editor {
box-shadow: 0 .25rem 0.5rem rgba(0,0,0,.25);
border-color: #dc3545 !important;
}
</style>
@endpush
@endonce

View File

@ -0,0 +1,16 @@
@extends('adminlte::components.form.input-group-component')
{{-- Set errors bag internallly --}}
@php($setErrorsBag($errors ?? null))
{{-- Set input group item section --}}
@section('input_group_item')
{{-- Textarea --}}
<textarea id="{{ $id }}" name="{{ $name }}"
{{ $attributes->merge(['class' => $makeItemClass()]) }}
>{{ $getOldValue($errorKey, $slot) }}</textarea>
@overwrite

View File

@ -0,0 +1,65 @@
{{-- Navbar darkmode widget --}}
<li class="nav-item adminlte-darkmode-widget">
<a class="nav-link" href="#" role="button">
<i class="{{ $makeIconClass() }}"></i>
</a>
</li>
{{-- Add Javascript listener for the click event --}}
@once
@push('js')
<script>
$(() => {
const body = document.querySelector('body');
const widget = document.querySelector('li.adminlte-darkmode-widget');
const widgetIcon = widget.querySelector('i');
// Get the set of classes to be toggled on the widget icon.
const iconClasses = [
...@json($makeIconEnabledClass()),
...@json($makeIconDisabledClass())
];
// Add 'click' event listener for the darkmode widget.
widget.addEventListener('click', () => {
// Toggle dark-mode class on the body tag.
body.classList.toggle('dark-mode');
// Toggle the classes on the widget icon.
iconClasses.forEach((c) => widgetIcon.classList.toggle(c));
// Notify the server. The server will be in charge to persist
// the dark mode configuration over multiple request.
const fetchCfg = {
headers: {'X-CSRF-TOKEN': '{{ csrf_token() }}'},
method: 'POST',
};
fetch(
"{{ route('adminlte.darkmode.toggle') }}",
fetchCfg
)
.catch((error) => {
console.log(
'Failed to notify server that dark mode was toggled',
error
);
});
});
})
</script>
@endpush
@endonce

View File

@ -0,0 +1,154 @@
{{-- Navbar notification --}}
<li class="{{ $makeListItemClass() }}" id="{{ $id }}">
{{-- Link --}}
<a @if($enableDropdownMode) href="" @endif {{ $attributes->merge($makeAnchorDefaultAttrs()) }}>
{{-- Icon --}}
<i class="{{ $makeIconClass() }}"></i>
{{-- Badge --}}
<span class="{{ $makeBadgeClass() }}">{{ $badgeLabel }}</span>
</a>
{{-- Dropdown Menu --}}
@if($enableDropdownMode)
<div class="dropdown-menu dropdown-menu-lg dropdown-menu-right">
{{-- Custom dropdown content provided by external source --}}
<div class="adminlte-dropdown-content"></div>
{{-- Dropdown divider --}}
<div class="dropdown-divider"></div>
{{-- Dropdown footer with link --}}
<a href="{{ $attributes->get('href') }}" class="dropdown-item dropdown-footer">
@isset($dropdownFooterLabel)
{{ $dropdownFooterLabel }}
@else
<i class="fas fa-lg fa-search-plus"></i>
@endisset
</a>
</div>
@endif
</li>
{{-- If required, update the notification periodically --}}
@if (! is_null($makeUpdateUrl()) && $makeUpdatePeriod() > 0)
@push('js')
<script>
$(() => {
// Method to get new notification data from the configured url.
let updateNotification = (nLink) =>
{
// Make an ajax call to the configured url. The response should be
// an object with the new data. The supported properties are:
// 'label', 'label_color', 'icon_color' and 'dropdown'.
$.ajax({
url: "{{ $makeUpdateUrl() }}"
})
.done((data) => {
nLink.update(data);
})
.fail(function(jqXHR, textStatus, errorThrown) {
console.log(jqXHR, textStatus, errorThrown);
});
};
// First load of the notification data.
let nLink = new _AdminLTE_NavbarNotification("{{ $id }}");
updateNotification(nLink);
// Periodically update the notification.
setInterval(updateNotification, {{ $makeUpdatePeriod() }}, nLink);
})
</script>
@endpush
@endif
{{-- Register Javascript utility class for this component --}}
@once
@push('js')
<script>
class _AdminLTE_NavbarNotification {
/**
* Constructor.
*
* target: The id of the target notification link.
*/
constructor(target)
{
this.target = target;
}
/**
* Update the notification link.
*
* data: An object with the new data.
*/
update(data)
{
// Check if target and data exists.
let t = $(`li#${this.target}`);
if (t.length <= 0 || ! data) {
return;
}
let badge = t.find(".navbar-badge");
let icon = t.find(".nav-link > i");
let dropdown = t.find(".adminlte-dropdown-content");
// Update the badge label.
if (data.label && data.label > 0) {
badge.html(data.label);
} else {
badge.empty();
}
// Update the badge color.
if (data.label_color) {
badge.removeClass((idx, classes) => {
return (classes.match(/(^|\s)badge-\S+/g) || []).join(' ');
}).addClass(`badge-${data.label_color} badge-pill`);
}
// Update the icon color.
if (data.icon_color) {
icon.removeClass((idx, classes) => {
return (classes.match(/(^|\s)text-\S+/g) || []).join(' ');
}).addClass(`text-${data.icon_color}`);
}
// Update the dropdown content.
if (data.dropdown && dropdown.length > 0) {
dropdown.html(data.dropdown);
}
}
}
</script>
@endpush
@endonce

View File

@ -0,0 +1,61 @@
{{-- Table --}}
<div class="table-responsive">
<table id="{{ $id }}" style="width:100%" {{ $attributes->merge(['class' => $makeTableClass()]) }}>
{{-- Table head --}}
<thead @isset($headTheme) class="thead-{{ $headTheme }}" @endisset>
<tr>
@foreach($heads as $th)
<th @isset($th['classes']) class="{{ $th['classes'] }}" @endisset
@isset($th['width']) style="width:{{ $th['width'] }}%" @endisset
@isset($th['no-export']) dt-no-export @endisset>
{{ is_array($th) ? ($th['label'] ?? '') : $th }}
</th>
@endforeach
</tr>
</thead>
{{-- Table body --}}
<tbody>{{ $slot }}</tbody>
{{-- Table footer --}}
@isset($withFooter)
<tfoot @isset($footerTheme) class="thead-{{ $footerTheme }}" @endisset>
<tr>
@foreach($heads as $th)
<th>{{ is_array($th) ? ($th['label'] ?? '') : $th }}</th>
@endforeach
</tr>
</tfoot>
@endisset
</table>
</div>
{{-- Add plugin initialization and configuration code --}}
@push('js')
<script>
$(() => {
$('#{{ $id }}').DataTable( @json($config) );
})
</script>
@endpush
{{-- Add CSS styling --}}
@isset($beautify)
@push('css')
<style type="text/css">
#{{ $id }} tr td, #{{ $id }} tr th {
vertical-align: middle;
text-align: center;
}
</style>
@endpush
@endisset

View File

@ -0,0 +1,36 @@
<div {{ $attributes->merge(['class' => $makeModalClass(), 'id' => $id]) }}
@isset($staticBackdrop) data-backdrop="static" data-keyboard="false" @endisset>
<div class="{{ $makeModalDialogClass() }}">
<div class="modal-content">
{{--Modal header --}}
<div class="{{ $makeModalHeaderClass() }}">
<h4 class="modal-title">
@isset($icon)<i class="{{ $icon }} mr-2"></i>@endisset
@isset($title){{ $title }}@endisset
</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
{{-- Modal body --}}
@if(! $slot->isEmpty())
<div class="modal-body">{{ $slot }}</div>
@endif
{{-- Modal footer --}}
<div class="modal-footer">
@isset($footerSlot)
{{ $footerSlot }}
@else
<x-adminlte-button class="{{ $makeCloseButtonClass }}"
data-dismiss="modal" label="Close"/>
@endisset
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,26 @@
<div {{ $attributes->merge(['class' => $makeAlertClass()]) }}>
{{-- Dismiss button --}}
@isset($dismissable)
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">
&times;
</button>
@endisset
{{-- Alert header --}}
@if(! empty($title) || ! empty($icon))
<h5>
@if(! empty($icon))
<i class="icon {{ $icon }}"></i>
@endif
@if(! empty($title))
{{ $title }}
@endif
</h5>
@endif
{{-- Alert content --}}
{{ $slot }}
</div>

View File

@ -0,0 +1,14 @@
<div {{ $attributes->merge(['class' => $makeCalloutClass()]) }}>
{{-- Callout title --}}
@if(! empty($title) || ! empty($icon))
<h5 @isset($titleClass) class="{{ $titleClass }}" @endisset>
@isset($icon) <i class="{{ $icon }} mr-2"></i> @endisset
@isset($title) {{ $title }} @endisset
</h5>
@endif
{{-- Callout content --}}
{{ $slot }}
</div>

View File

@ -0,0 +1,62 @@
<div {{ $attributes->merge(['class' => $makeCardClass()]) }}>
{{-- Card header --}}
@if(! $isCardHeaderEmpty(isset($toolsSlot)))
<div class="{{ $makeCardHeaderClass() }}">
{{-- Title --}}
<h3 class="{{ $makeCardTitleClass() }}">
@isset($icon)<i class="{{ $icon }} mr-1"></i>@endisset
@isset($title){{ $title }}@endisset
</h3>
{{-- Tools --}}
<div class="card-tools">
{{-- Extra tools slot --}}
@isset($toolsSlot)
{{ $toolsSlot }}
@endisset
{{-- Default tools --}}
@isset($maximizable)
<x-adminlte-button theme="tool" data-card-widget="maximize" icon="fas fa-lg fa-expand"/>
@endisset
@if($collapsible === 'collapsed')
<x-adminlte-button theme="tool" data-card-widget="collapse" icon="fas fa-lg fa-plus"/>
@elseif(isset($collapsible))
<x-adminlte-button theme="tool" data-card-widget="collapse" icon="fas fa-lg fa-minus"/>
@endif
@isset($removable)
<x-adminlte-button theme="tool" data-card-widget="remove" icon="fas fa-lg fa-times"/>
@endisset
</div>
</div>
@endif
{{-- Card body --}}
@if(! $slot->isEmpty())
<div class="{{ $makeCardBodyClass() }}">
{{ $slot }}
</div>
@endif
{{-- Card footer --}}
@isset($footerSlot)
<div class="{{ $makeCardFooterClass() }}">
{{ $footerSlot }}
</div>
@endisset
{{-- Card overlay --}}
@if($disabled)
<div class="overlay">
<i class="fas fa-2x fa-ban text-gray"></i>
</div>
@endif
</div>

View File

@ -0,0 +1,102 @@
<div {{ $attributes->merge(['class' => $makeBoxClass()]) }}>
{{-- Box icon --}}
@isset($icon)
<span class="{{ $makeIconClass() }}">
<i class="{{ $icon }}"></i>
</span>
@endisset
{{-- Box content --}}
<div class="info-box-content">
{{-- Box title --}}
@isset($title)
<span class="info-box-text">{{ $title }}</span>
@endisset
{{-- Box short text --}}
@isset($text)
<span class="info-box-number">{{ $text }}</span>
@endisset
{{-- Box progress bar --}}
@if(isset($progress) && isset($attributes['id']))
<x-adminlte-progress value="{{ $progress }}" theme="{{ $progressTheme }}"
id="progress-{{ $attributes['id'] }}"/>
@elseif(isset($progress))
<x-adminlte-progress value="{{ $progress }}" theme="{{ $progressTheme }}"/>
@endif
{{-- Box long description --}}
@isset($description)
<span class="progress-description">{{ $description }}</span>
@endisset
</div>
</div>
{{-- Register Javascript utility class for this component --}}
@once
@push('js')
<script>
class _AdminLTE_InfoBox {
/**
* Constructor.
*
* target: The id of the target info box.
*/
constructor(target)
{
this.target = target;
}
/**
* Update the info box.
*
* data: An object with the new data.
*/
update(data)
{
// Check if target and data exists.
let t = $(`#${this.target}`);
if (t.length <= 0 || ! data) {
return;
}
// Update available data.
if (data.title) {
t.find('.info-box-text').html(data.title);
}
if (data.text) {
t.find('.info-box-number').html(data.text);
}
if (data.icon) {
t.find('.info-box-icon i').attr('class', data.icon);
}
if (data.description) {
t.find('.progress-description').html(data.description);
}
// Update progress bar.
if (data.progress) {
let pBar = new _AdminLTE_Progress(`progress-${this.target}`);
pBar.setValue(data.progress);
}
}
}
</script>
@endpush
@endonce

View File

@ -0,0 +1,32 @@
<div {{ $attributes->merge(['class' => "col-{$size}"]) }}>
<div class="description-block">
{{-- Icon --}}
@isset($icon)
<i class="{{ $icon }}"></i>
@endisset
{{-- Header --}}
@isset($title)
<h5 class="description-header">
@if(! empty($url))
<a href="{{ $url }}">{{ $title }}</a>
@else
{{ $title }}
@endif
</h5>
@endisset
{{-- Text --}}
@isset($text)
<p class="description-text">
<span class="{{ $makeTextWrapperClass() }}">
{{ $text }}
</span>
</p>
@endisset
</div>
</div>

View File

@ -0,0 +1,28 @@
<div {{ $attributes->merge(['class' => "p-0 col-{$size}"]) }}>
<span class="nav-link">
{{-- Icon --}}
@isset($icon)
<i class="{{ $icon }}"></i>
@endisset
{{-- Header --}}
@isset($title)
@if(! empty($url))
<a href="{{ $url }}">{{ $title }}</a>
@else
{{ $title }}
@endif
@endisset
{{-- Text --}}
@isset($text)
<span class="{{ $makeTextWrapperClass() }}">
{{ $text }}
</span>
@endisset
</span>
</div>

View File

@ -0,0 +1,40 @@
<div {{ $attributes->merge(['class' => $makeCardClass()]) }}>
{{-- Profile header --}}
<div class="{{ $makeHeaderClass() }}" style="{{ $makeHeaderStyle() }}">
{{-- User image --}}
<div class="widget-user-image">
@if(isset($img))
<img class="img-circle elevation-2" src="{{ $img }}" alt="User avatar: {{ $name }}">
@elseif($layoutType === 'modern')
<div class="img-circle elevation-2 d-flex bg-dark" style="width:90px;height:90px;">
<i class="fas fa-3x fa-user text-silver m-auto"></i>
</div>
@elseif($layoutType === 'classic')
<div class="img-circle elevation-2 float-left d-flex bg-dark" style="width:65px;height:65px;">
<i class="fas fa-2x fa-user text-silver m-auto"></i>
</div>
@endisset
</div>
{{-- User name --}}
@isset($name)
<h3 class="widget-user-username mb-0">{{ $name }}</h3>
@endisset
{{-- User description --}}
@isset($desc)
<h5 class="widget-user-desc">{{ $desc }}</h5>
@endisset
</div>
{{-- Profile footer / Profile Items --}}
@if(! $slot->isEmpty())
<div class="{{ $makeFooterClass() }}">
<div class="row">{{ $slot }}</div>
</div>
@endif
</div>

View File

@ -0,0 +1,85 @@
<div {{ $attributes->merge(['class' => $makeProgressClass()]) }}>
{{-- Progress bar --}}
<div class="{{ $makeProgressBarClass() }}" role="progressbar"
aria-valuenow="{{ $value }}" aria-valuemin="0" aria-valuemax="100"
style="{{ $makeProgressBarStyle() }}">
{{-- Progress bar label --}}
@isset($withLabel)
{{ $value }}%
@else
<span class="sr-only">{{ $value }}% Progress</span>
@endisset
</div>
</div>
{{-- Register Javascript utility class for this component --}}
@once
@push('js')
<script>
class _AdminLTE_Progress {
/**
* Constructor.
*
* target: The id of the target progress bar.
*/
constructor(target)
{
this.target = target;
}
/**
* Get the current progress bar value.
*/
getValue()
{
// Check if target exists.
let t = $(`#${this.target}`);
if (t.length <= 0) {
return;
}
// Return the progress bar current value (casted to number).
return +(t.find('.progress-bar').attr('aria-valuenow'));
}
/**
* Set the new progress bar value.
*/
setValue(value)
{
// Check if target exists.
let t = $(`#${this.target}`);
if (t.length <= 0) {
return;
}
// Update progress bar.
value = +value;
t.find('.progress-bar').css('width', value + '%')
.attr('aria-valuenow', value);
if (t.find('span.sr-only').length > 0) {
t.find('span.sr-only').text(value + '% Progress');
} else {
t.find('.progress-bar').text(value + '%');
}
}
}
</script>
@endpush
@endonce

View File

@ -0,0 +1,113 @@
<div {{ $attributes->merge(['class' => $makeBoxClass()]) }}>
{{-- Box title and description --}}
<div class="inner">
@isset($title)
<h3>{{ $title }}</h3>
@endisset
@isset($text)
<h5>{{ $text }}</h5>
@endisset
</div>
{{-- Box icon --}}
@isset($icon)
<div class="icon">
<i class="{{ $icon }}"></i>
</div>
@endisset
{{-- Box link --}}
@isset($url)
<a href="{{ $url }}" class="small-box-footer">
@if(! empty($urlText))
{{ $urlText }}
@endif
<i class="fas fa-lg fa-arrow-circle-right"></i>
</a>
@endisset
{{-- Box overlay --}}
<div class="{{ $makeOverlayClass() }}">
<i class="fas fa-2x fa-spin fa-sync-alt text-gray"></i>
</div>
</div>
{{-- Register Javascript utility class for this component --}}
@once
@push('js')
<script>
class _AdminLTE_SmallBox {
/**
* Constructor.
*
* target: The id of the target small box.
*/
constructor(target)
{
this.target = target;
}
/**
* Update the small box.
*
* data: An object with the new data.
*/
update(data)
{
// Check if target and data exists.
let t = $(`#${this.target}`);
if (t.length <= 0 || ! data) {
return;
}
// Update available data.
if (data.title) {
t.find('.inner h3').html(data.title);
}
if (data.text) {
t.find('.inner h5').html(data.text);
}
if (data.icon) {
t.find('.icon i').attr('class', data.icon);
}
if (data.url) {
t.find('.small-box-footer').attr('href', data.url);
}
}
/**
* Toggle the loading animation of the small box.
*/
toggleLoading()
{
// Check if target exists.
let t = $(`#${this.target}`);
if (t.length <= 0) {
return;
}
// Toggle the loading overlay.
t.find('.overlay').toggleClass('d-none');
}
}
</script>
@endpush
@endonce

View File

@ -0,0 +1,110 @@
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
{{-- Base Meta Tags --}}
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csrf-token" content="{{ csrf_token() }}">
{{-- Custom Meta Tags --}}
@yield('meta_tags')
{{-- Title --}}
<title>
@yield('title_prefix', config('adminlte.title_prefix', ''))
@yield('title', config('adminlte.title', 'AdminLTE 3'))
@yield('title_postfix', config('adminlte.title_postfix', ''))
</title>
{{-- Custom stylesheets (pre AdminLTE) --}}
@yield('adminlte_css_pre')
{{-- Base Stylesheets --}}
@if(!config('adminlte.enabled_laravel_mix'))
<link rel="stylesheet" href="{{ asset('vendor/fontawesome-free/css/all.min.css') }}">
<link rel="stylesheet" href="{{ asset('vendor/overlayScrollbars/css/OverlayScrollbars.min.css') }}">
<link rel="stylesheet" href="{{ asset('vendor/adminlte/dist/css/adminlte.min.css') }}">
@if(config('adminlte.google_fonts.allowed', true))
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic">
@endif
@else
<link rel="stylesheet" href="{{ mix(config('adminlte.laravel_mix_css_path', 'css/app.css')) }}">
@endif
{{-- Extra Configured Plugins Stylesheets --}}
@include('adminlte::plugins', ['type' => 'css'])
{{-- Livewire Styles --}}
@if(config('adminlte.livewire'))
@if(app()->version() >= 7)
@livewireStyles
@else
<livewire:styles />
@endif
@endif
{{-- Custom Stylesheets (post AdminLTE) --}}
@yield('adminlte_css')
{{-- Favicon --}}
@if(config('adminlte.use_ico_only'))
<link rel="shortcut icon" href="{{ asset('favicons/favicon.ico') }}" />
@elseif(config('adminlte.use_full_favicon'))
<link rel="shortcut icon" href="{{ asset('favicons/favicon.ico') }}" />
<link rel="apple-touch-icon" sizes="57x57" href="{{ asset('favicons/apple-icon-57x57.png') }}">
<link rel="apple-touch-icon" sizes="60x60" href="{{ asset('favicons/apple-icon-60x60.png') }}">
<link rel="apple-touch-icon" sizes="72x72" href="{{ asset('favicons/apple-icon-72x72.png') }}">
<link rel="apple-touch-icon" sizes="76x76" href="{{ asset('favicons/apple-icon-76x76.png') }}">
<link rel="apple-touch-icon" sizes="114x114" href="{{ asset('favicons/apple-icon-114x114.png') }}">
<link rel="apple-touch-icon" sizes="120x120" href="{{ asset('favicons/apple-icon-120x120.png') }}">
<link rel="apple-touch-icon" sizes="144x144" href="{{ asset('favicons/apple-icon-144x144.png') }}">
<link rel="apple-touch-icon" sizes="152x152" href="{{ asset('favicons/apple-icon-152x152.png') }}">
<link rel="apple-touch-icon" sizes="180x180" href="{{ asset('favicons/apple-icon-180x180.png') }}">
<link rel="icon" type="image/png" sizes="16x16" href="{{ asset('favicons/favicon-16x16.png') }}">
<link rel="icon" type="image/png" sizes="32x32" href="{{ asset('favicons/favicon-32x32.png') }}">
<link rel="icon" type="image/png" sizes="96x96" href="{{ asset('favicons/favicon-96x96.png') }}">
<link rel="icon" type="image/png" sizes="192x192" href="{{ asset('favicons/android-icon-192x192.png') }}">
<link rel="manifest" crossorigin="use-credentials" href="{{ asset('favicons/manifest.json') }}">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="{{ asset('favicon/ms-icon-144x144.png') }}">
@endif
</head>
<body class="@yield('classes_body')" @yield('body_data')>
{{-- Body Content --}}
@yield('body')
{{-- Base Scripts --}}
@if(!config('adminlte.enabled_laravel_mix'))
<script src="{{ asset('vendor/jquery/jquery.min.js') }}"></script>
<script src="{{ asset('vendor/bootstrap/js/bootstrap.bundle.min.js') }}"></script>
<script src="{{ asset('vendor/overlayScrollbars/js/jquery.overlayScrollbars.min.js') }}"></script>
<script src="{{ asset('vendor/adminlte/dist/js/adminlte.min.js') }}"></script>
@else
<script src="{{ mix(config('adminlte.laravel_mix_js_path', 'js/app.js')) }}"></script>
@endif
{{-- Extra Configured Plugins Scripts --}}
@include('adminlte::plugins', ['type' => 'js'])
{{-- Livewire Script --}}
@if(config('adminlte.livewire'))
@if(app()->version() >= 7)
@livewireScripts
@else
<livewire:scripts />
@endif
@endif
{{-- Custom Scripts --}}
@yield('adminlte_js')
</body>
</html>

View File

@ -0,0 +1,57 @@
@extends('adminlte::master')
@inject('layoutHelper', 'JeroenNoten\LaravelAdminLte\Helpers\LayoutHelper')
@section('adminlte_css')
@stack('css')
@yield('css')
@stop
@section('classes_body', $layoutHelper->makeBodyClasses())
@section('body_data', $layoutHelper->makeBodyData())
@section('body')
<div class="wrapper">
{{-- Preloader Animation --}}
@if($layoutHelper->isPreloaderEnabled())
@include('adminlte::partials.common.preloader')
@endif
{{-- Top Navbar --}}
@if($layoutHelper->isLayoutTopnavEnabled())
@include('adminlte::partials.navbar.navbar-layout-topnav')
@else
@include('adminlte::partials.navbar.navbar')
@endif
{{-- Left Main Sidebar --}}
@if(!$layoutHelper->isLayoutTopnavEnabled())
@include('adminlte::partials.sidebar.left-sidebar')
@endif
{{-- Content Wrapper --}}
@empty($iFrameEnabled)
@include('adminlte::partials.cwrapper.cwrapper-default')
@else
@include('adminlte::partials.cwrapper.cwrapper-iframe')
@endempty
{{-- Footer --}}
@hasSection('footer')
@include('adminlte::partials.footer.footer')
@endif
{{-- Right Control Sidebar --}}
@if(config('adminlte.right_sidebar'))
@include('adminlte::partials.sidebar.right-sidebar')
@endif
</div>
@stop
@section('adminlte_js')
@stack('js')
@yield('js')
@stop

View File

@ -0,0 +1,28 @@
@inject('layoutHelper', 'JeroenNoten\LaravelAdminLte\Helpers\LayoutHelper')
@php( $dashboard_url = View::getSection('dashboard_url') ?? config('adminlte.dashboard_url', 'home') )
@if (config('adminlte.use_route_url', false))
@php( $dashboard_url = $dashboard_url ? route($dashboard_url) : '' )
@else
@php( $dashboard_url = $dashboard_url ? url($dashboard_url) : '' )
@endif
<a href="{{ $dashboard_url }}"
@if($layoutHelper->isLayoutTopnavEnabled())
class="navbar-brand logo-switch {{ config('adminlte.classes_brand') }}"
@else
class="brand-link logo-switch {{ config('adminlte.classes_brand') }}"
@endif>
{{-- Small brand logo --}}
<img src="{{ asset(config('adminlte.logo_img', 'vendor/adminlte/dist/img/AdminLTELogo.png')) }}"
alt="{{ config('adminlte.logo_img_alt', 'AdminLTE') }}"
class="{{ config('adminlte.logo_img_class', 'brand-image-xl') }} logo-xs">
{{-- Large brand logo --}}
<img src="{{ asset(config('adminlte.logo_img_xl')) }}"
alt="{{ config('adminlte.logo_img_alt', 'AdminLTE') }}"
class="{{ config('adminlte.logo_img_xl_class', 'brand-image-xs') }} logo-xl">
</a>

View File

@ -0,0 +1,29 @@
@inject('layoutHelper', 'JeroenNoten\LaravelAdminLte\Helpers\LayoutHelper')
@php( $dashboard_url = View::getSection('dashboard_url') ?? config('adminlte.dashboard_url', 'home') )
@if (config('adminlte.use_route_url', false))
@php( $dashboard_url = $dashboard_url ? route($dashboard_url) : '' )
@else
@php( $dashboard_url = $dashboard_url ? url($dashboard_url) : '' )
@endif
<a href="{{ $dashboard_url }}"
@if($layoutHelper->isLayoutTopnavEnabled())
class="navbar-brand {{ config('adminlte.classes_brand') }}"
@else
class="brand-link {{ config('adminlte.classes_brand') }}"
@endif>
{{-- Small brand logo --}}
<img src="{{ asset(config('adminlte.logo_img', 'vendor/adminlte/dist/img/AdminLTELogo.png')) }}"
alt="{{ config('adminlte.logo_img_alt', 'AdminLTE') }}"
class="{{ config('adminlte.logo_img_class', 'brand-image img-circle elevation-3') }}"
style="opacity:.8">
{{-- Brand text --}}
<span class="brand-text font-weight-light {{ config('adminlte.classes_brand_text') }}">
{!! config('adminlte.logo', '<b>Admin</b>LTE') !!}
</span>
</a>

View File

@ -0,0 +1,10 @@
<div class="preloader flex-column justify-content-center align-items-center">
{{-- Preloader logo --}}
<img src="{{ asset(config('adminlte.preloader.img.path', 'vendor/adminlte/dist/img/AdminLTELogo.png')) }}"
class="{{ config('adminlte.preloader.img.effect', 'animation__shake') }}"
alt="{{ config('adminlte.preloader.img.alt', 'AdminLTE Preloader Image') }}"
width="{{ config('adminlte.preloader.img.width', 60) }}"
height="{{ config('adminlte.preloader.img.height', 60) }}">
</div>

View File

@ -0,0 +1,28 @@
@inject('layoutHelper', 'JeroenNoten\LaravelAdminLte\Helpers\LayoutHelper')
@if($layoutHelper->isLayoutTopnavEnabled())
@php( $def_container_class = 'container' )
@else
@php( $def_container_class = 'container-fluid' )
@endif
{{-- Default Content Wrapper --}}
<div class="content-wrapper {{ config('adminlte.classes_content_wrapper', '') }}">
{{-- Content Header --}}
@hasSection('content_header')
<div class="content-header">
<div class="{{ config('adminlte.classes_content_header') ?: $def_container_class }}">
@yield('content_header')
</div>
</div>
@endif
{{-- Main Content --}}
<div class="content">
<div class="{{ config('adminlte.classes_content') ?: $def_container_class }}">
@yield('content')
</div>
</div>
</div>

View File

@ -0,0 +1,117 @@
{{-- IFrame Content Wrapper --}}
<div class="content-wrapper iframe-mode {{ config('adminlte.classes_content_wrapper', '') }}" data-widget="iframe"
data-auto-show-new-tab="{{ config('adminlte.iframe.options.auto_show_new_tab', true) }}"
data-loading-screen="{{ config('adminlte.iframe.options.loading_screen', true) }}"
data-use-navbar-items="{{ config('adminlte.iframe.options.use_navbar_items', true) }}">
{{-- IFrame Navbar --}}
<div class="nav navbar navbar-expand navbar-white navbar-light border-bottom p-0">
{{-- Close Buttons --}}
@if(config('adminlte.iframe.buttons.close_all', true) || config('adminlte.iframe.buttons.close_all_other', true))
<div class="nav-item dropdown">
<a class="nav-link bg-danger dropdown-toggle" data-toggle="dropdown" href="#"
role="button" aria-haspopup="true" aria-expanded="false">
{{ __('adminlte::iframe.btn_close') }}
</a>
<div class="dropdown-menu mt-0">
@if(config('adminlte.iframe.buttons.close', false))
<a class="dropdown-item" href="#" data-widget="iframe-close">
{{ __('adminlte::iframe.btn_close_active') }}
</a>
@endif
@if(config('adminlte.iframe.buttons.close_all', true))
<a class="dropdown-item" href="#" data-widget="iframe-close" data-type="all">
{{ __('adminlte::iframe.btn_close_all') }}
</a>
@endif
@if(config('adminlte.iframe.buttons.close_all_other', true))
<a class="dropdown-item" href="#" data-widget="iframe-close" data-type="all-other">
{{ __('adminlte::iframe.btn_close_all_other') }}
</a>
@endif
</div>
</div>
@elseif(config('adminlte.iframe.buttons.close', false))
<a class="nav-link bg-danger" href="#" data-widget="iframe-close">
{{ __('adminlte::iframe.btn_close') }}
</a>
@endif
{{-- Scroll Left Button --}}
@if(config('adminlte.iframe.buttons.scroll_left', true))
<a class="nav-link bg-light" href="#" data-widget="iframe-scrollleft">
<i class="fas fa-angle-double-left"></i>
</a>
@endif
{{-- Tab List --}}
<ul class="navbar-nav overflow-hidden" role="tablist">
{{-- Default Tab --}}
@if(! empty(config('adminlte.iframe.default_tab.url')))
<li class="nav-item active" role="presentation">
<a href="#" class="btn-iframe-close" data-widget="iframe-close" data-type="only-this">
<i class="fas fa-times"></i>
</a>
<a id="tab-default" class="nav-link active" data-toggle="row" href="#panel-default"
role="tab" aria-controls="panel-default" aria-selected="true">
{{-- TODO: How to translate the configured title? --}}
{{ config('adminlte.iframe.default_tab.title') ?: __('adminlte::iframe.tab_home') }}
</a>
</li>
@endif
</ul>
{{-- Scroll Right Button --}}
@if(config('adminlte.iframe.buttons.scroll_right', true))
<a class="nav-link bg-light" href="#" data-widget="iframe-scrollright">
<i class="fas fa-angle-double-right"></i>
</a>
@endif
{{-- Fullscreen Button --}}
@if(config('adminlte.iframe.buttons.fullscreen', true))
<a class="nav-link bg-light" href="#" data-widget="iframe-fullscreen">
<i class="fas fa-expand"></i>
</a>
@endif
</div>
{{-- IFrame Tab Content --}}
<div class="tab-content">
{{-- Loading Overlay --}}
<div class="tab-loading">
<div>
<h2 class="display-4 text-center">
<i class="fa fa-sync fa-spin text-secondary"></i>
<br/>
{{ __('adminlte::iframe.tab_loading') }}
</h2>
</div>
</div>
{{-- Default Tab Content --}}
@if(! empty(config('adminlte.iframe.default_tab.url')))
<div id="panel-default" class="tab-pane fade" role="tabpanel" aria-labelledby="tab-default">
<iframe src="{{ config('adminlte.iframe.default_tab.url') }}"></iframe>
</div>
@endif
{{-- Empty Tab --}}
<div class="tab-empty">
<h2 class="display-4 text-center">
{{ __('adminlte::iframe.tab_empty') }}
</h2>
</div>
</div>
</div>

View File

@ -0,0 +1,3 @@
<footer class="main-footer">
@yield('footer')
</footer>

View File

@ -0,0 +1,26 @@
<li @isset($item['id']) id="{{ $item['id'] }}" @endisset>
<a class="dropdown-item {{ $item['class'] }}" href="{{ $item['href'] }}"
@isset($item['target']) target="{{ $item['target'] }}" @endisset
{!! $item['data-compiled'] ?? '' !!}>
{{-- Icon (optional) --}}
@isset($item['icon'])
<i class="{{ $item['icon'] ?? '' }} {{
isset($item['icon_color']) ? 'text-' . $item['icon_color'] : ''
}}"></i>
@endisset
{{-- Text --}}
{{ $item['text'] }}
{{-- Label (optional) --}}
@isset($item['label'])
<span class="badge badge-{{ $item['label_color'] ?? 'primary' }}">
{{ $item['label'] }}
</span>
@endisset
</a>
</li>

View File

@ -0,0 +1,31 @@
<li @isset($item['id']) id="{{ $item['id'] }}" @endisset class="dropdown-submenu dropdown-hover">
{{-- Menu toggler --}}
<a class="dropdown-item dropdown-toggle {{ $item['class'] }}" href=""
data-toggle="dropdown" {!! $item['data-compiled'] ?? '' !!}>
{{-- Icon (optional) --}}
@isset($item['icon'])
<i class="{{ $item['icon'] ?? '' }} {{
isset($item['icon_color']) ? 'text-' . $item['icon_color'] : ''
}}"></i>
@endisset
{{-- Text --}}
{{ $item['text'] }}
{{-- Label (optional) --}}
@isset($item['label'])
<span class="badge badge-{{ $item['label_color'] ?? 'primary' }}">
{{ $item['label'] }}
</span>
@endisset
</a>
{{-- Menu items --}}
<ul class="dropdown-menu border-0 shadow">
@each('adminlte::partials.navbar.dropdown-item', $item['submenu'], 'item')
</ul>
</li>

View File

@ -0,0 +1,13 @@
@inject('navbarItemHelper', 'JeroenNoten\LaravelAdminLte\Helpers\NavbarItemHelper')
@if ($navbarItemHelper->isSubmenu($item))
{{-- Dropdown submenu --}}
@include('adminlte::partials.navbar.dropdown-item-submenu')
@elseif ($navbarItemHelper->isLink($item))
{{-- Dropdown link --}}
@include('adminlte::partials.navbar.dropdown-item-link')
@endif

View File

@ -0,0 +1,31 @@
<li @isset($item['id']) id="{{ $item['id'] }}" @endisset class="nav-item dropdown">
{{-- Menu toggler --}}
<a class="nav-link dropdown-toggle {{ $item['class'] }}" href=""
data-toggle="dropdown" {!! $item['data-compiled'] ?? '' !!}>
{{-- Icon (optional) --}}
@isset($item['icon'])
<i class="{{ $item['icon'] }} {{
isset($item['icon_color']) ? 'text-' . $item['icon_color'] : ''
}}"></i>
@endisset
{{-- Text --}}
{{ $item['text'] }}
{{-- Label (optional) --}}
@isset($item['label'])
<span class="badge badge-{{ $item['label_color'] ?? 'primary' }}">
{{ $item['label'] }}
</span>
@endisset
</a>
{{-- Menu items --}}
<ul class="dropdown-menu border-0 shadow">
@each('adminlte::partials.navbar.dropdown-item', $item['submenu'], 'item')
</ul>
</li>

View File

@ -0,0 +1,86 @@
@php( $logout_url = View::getSection('logout_url') ?? config('adminlte.logout_url', 'logout') )
@php( $profile_url = View::getSection('profile_url') ?? config('adminlte.profile_url', 'logout') )
@if (config('adminlte.usermenu_profile_url', false))
@php( $profile_url = Auth::user()->adminlte_profile_url() )
@endif
@if (config('adminlte.use_route_url', false))
@php( $profile_url = $profile_url ? route($profile_url) : '' )
@php( $logout_url = $logout_url ? route($logout_url) : '' )
@else
@php( $profile_url = $profile_url ? url($profile_url) : '' )
@php( $logout_url = $logout_url ? url($logout_url) : '' )
@endif
<li class="nav-item dropdown user-menu">
{{-- User menu toggler --}}
<a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown">
@if(config('adminlte.usermenu_image'))
<img src="{{ Auth::user()->adminlte_image() }}"
class="user-image img-circle elevation-2"
alt="{{ Auth::user()->name }}">
@endif
<span @if(config('adminlte.usermenu_image')) class="d-none d-md-inline" @endif>
{{ Auth::user()->name }}
</span>
</a>
{{-- User menu dropdown --}}
<ul class="dropdown-menu dropdown-menu-lg dropdown-menu-right">
{{-- User menu header --}}
@if(!View::hasSection('usermenu_header') && config('adminlte.usermenu_header'))
<li class="user-header {{ config('adminlte.usermenu_header_class', 'bg-primary') }}
@if(!config('adminlte.usermenu_image')) h-auto @endif">
@if(config('adminlte.usermenu_image'))
<img src="{{ Auth::user()->adminlte_image() }}"
class="img-circle elevation-2"
alt="{{ Auth::user()->name }}">
@endif
<p class="@if(!config('adminlte.usermenu_image')) mt-0 @endif">
{{ Auth::user()->name }}
@if(config('adminlte.usermenu_desc'))
<small>{{ Auth::user()->adminlte_desc() }}</small>
@endif
</p>
</li>
@else
@yield('usermenu_header')
@endif
{{-- Configured user menu links --}}
@each('adminlte::partials.navbar.dropdown-item', $adminlte->menu("navbar-user"), 'item')
{{-- User menu body --}}
@hasSection('usermenu_body')
<li class="user-body">
@yield('usermenu_body')
</li>
@endif
{{-- User menu footer --}}
<li class="user-footer">
@if($profile_url)
<a href="{{ $profile_url }}" class="btn btn-default btn-flat">
<i class="fa fa-fw fa-user text-lightblue"></i>
{{ __('adminlte::menu.profile') }}
</a>
@endif
<a class="btn btn-default btn-flat float-right @if(!$profile_url) btn-block @endif"
href="#" onclick="event.preventDefault(); document.getElementById('logout-form').submit();">
<i class="fa fa-fw fa-power-off text-red"></i>
{{ __('adminlte::adminlte.log_out') }}
</a>
<form id="logout-form" action="{{ $logout_url }}" method="POST" style="display: none;">
@if(config('adminlte.logout_method'))
{{ method_field(config('adminlte.logout_method')) }}
@endif
{{ csrf_field() }}
</form>
</li>
</ul>
</li>

View File

@ -0,0 +1,5 @@
<li class="nav-item">
<a class="nav-link" data-widget="fullscreen" href="#" role="button">
<i class="fas fa-expand-arrows-alt"></i>
</a>
</li>

View File

@ -0,0 +1,15 @@
<li class="nav-item">
<a class="nav-link" data-widget="pushmenu" href="#"
@if(config('adminlte.sidebar_collapse_remember'))
data-enable-remember="true"
@endif
@if(!config('adminlte.sidebar_collapse_remember_no_transition'))
data-no-transition-after-reload="false"
@endif
@if(config('adminlte.sidebar_collapse_auto_size'))
data-auto-collapse-size="{{ config('adminlte.sidebar_collapse_auto_size') }}"
@endif>
<i class="fas fa-bars"></i>
<span class="sr-only">{{ __('adminlte::adminlte.toggle_navigation') }}</span>
</a>
</li>

View File

@ -0,0 +1,26 @@
<li @isset($item['id']) id="{{ $item['id'] }}" @endisset class="nav-item">
<a class="nav-link {{ $item['class'] }}" href="{{ $item['href'] }}"
@isset($item['target']) target="{{ $item['target'] }}" @endisset
{!! $item['data-compiled'] ?? '' !!}>
{{-- Icon (optional) --}}
@isset($item['icon'])
<i class="{{ $item['icon'] }} {{
isset($item['icon_color']) ? 'text-' . $item['icon_color'] : ''
}}"></i>
@endisset
{{-- Text --}}
{{ $item['text'] }}
{{-- Label (optional) --}}
@isset($item['label'])
<span class="badge badge-{{ $item['label_color'] ?? 'primary' }}">
{{ $item['label'] }}
</span>
@endisset
</a>
</li>

View File

@ -0,0 +1,20 @@
@php( $logout_url = View::getSection('logout_url') ?? config('adminlte.logout_url', 'logout') )
@if (config('adminlte.use_route_url', false))
@php( $logout_url = $logout_url ? route($logout_url) : '' )
@else
@php( $logout_url = $logout_url ? url($logout_url) : '' )
@endif
<li class="nav-item">
<a class="nav-link" href="#" onclick="event.preventDefault(); document.getElementById('logout-form').submit();">
<i class="fa fa-fw fa-power-off text-red"></i>
{{ __('adminlte::adminlte.log_out') }}
</a>
<form id="logout-form" action="{{ $logout_url }}" method="POST" style="display: none;">
@if(config('adminlte.logout_method'))
{{ method_field(config('adminlte.logout_method')) }}
@endif
{{ csrf_field() }}
</form>
</li>

View File

@ -0,0 +1,14 @@
<li class="nav-item">
<a class="nav-link" href="#" data-widget="control-sidebar"
@if(!config('adminlte.right_sidebar_slide'))
data-controlsidebar-slide="false"
@endif
@if(config('adminlte.right_sidebar_scrollbar_theme', 'os-theme-light') != 'os-theme-light')
data-scrollbar-theme="{{ config('adminlte.right_sidebar_scrollbar_theme') }}"
@endif
@if(config('adminlte.right_sidebar_scrollbar_auto_hide', 'l') != 'l')
data-scrollbar-auto-hide="{{ config('adminlte.right_sidebar_scrollbar_auto_hide') }}"
@endif>
<i class="{{ config('adminlte.right_sidebar_icon') }}"></i>
</a>
</li>

View File

@ -0,0 +1,36 @@
<li class="nav-item">
{{-- Search toggle button --}}
<a class="nav-link" data-widget="navbar-search" href="#" role="button">
<i class="fas fa-search"></i>
</a>
{{-- Search bar --}}
<div class="navbar-search-block">
<form class="form-inline" action="{{ $item['href'] }}" method="{{ $item['method'] }}">
{{ csrf_field() }}
<div class="input-group">
{{-- Search input --}}
<input class="form-control form-control-navbar" type="search"
@isset($item['id']) id="{{ $item['id'] }}" @endisset
name="{{ $item['input_name'] }}"
placeholder="{{ $item['text'] }}"
aria-label="{{ $item['text'] }}">
{{-- Search buttons --}}
<div class="input-group-append">
<button class="btn btn-navbar" type="submit">
<i class="fas fa-search"></i>
</button>
<button class="btn btn-navbar" type="button" data-widget="navbar-search">
<i class="fas fa-times"></i>
</button>
</div>
</div>
</form>
</div>
</li>

View File

@ -0,0 +1,48 @@
@inject('navbarItemHelper', 'JeroenNoten\LaravelAdminLte\Helpers\NavbarItemHelper')
@if ($navbarItemHelper->isSearch($item))
{{-- Search form --}}
@include('adminlte::partials.navbar.menu-item-search-form')
@elseif ($navbarItemHelper->isNotification($item))
{{-- Notification link --}}
<x-adminlte-navbar-notification
:id="$item['id']"
:href="$item['href']"
:icon="$item['icon']"
:icon-color="$item['icon_color'] ?? null"
:badge-label="$item['label'] ?? null"
:badge-color="$item['label_color'] ?? null"
:update-cfg="$item['update_cfg'] ?? null"
:enable-dropdown-mode="$item['dropdown_mode'] ?? null"
:dropdown-footer-label="$item['dropdown_flabel'] ?? null"
/>
@elseif ($navbarItemHelper->isFullscreen($item))
{{-- Fullscreen toggle widget --}}
@include('adminlte::partials.navbar.menu-item-fullscreen-widget')
@elseif ($navbarItemHelper->isDarkmode($item))
{{-- Darkmode toggle widget --}}
<x-adminlte-navbar-darkmode-widget
:icon-enabled="$item['icon_enabled'] ?? null"
:color-enabled="$item['color_enabled'] ?? null"
:icon-disabled="$item['icon_disabled'] ?? null"
:color-disabled="$item['color_disabled'] ?? null"
/>
@elseif ($navbarItemHelper->isSubmenu($item))
{{-- Dropdown menu --}}
@include('adminlte::partials.navbar.menu-item-dropdown-menu')
@elseif ($navbarItemHelper->isLink($item))
{{-- Link --}}
@include('adminlte::partials.navbar.menu-item-link')
@endif

View File

@ -0,0 +1,57 @@
<nav class="main-header navbar
{{ config('adminlte.classes_topnav_nav', 'navbar-expand-md') }}
{{ config('adminlte.classes_topnav', 'navbar-white navbar-light') }}">
<div class="{{ config('adminlte.classes_topnav_container', 'container') }}">
{{-- Navbar brand logo --}}
@if(config('adminlte.logo_img_xl'))
@include('adminlte::partials.common.brand-logo-xl')
@else
@include('adminlte::partials.common.brand-logo-xs')
@endif
{{-- Navbar toggler button --}}
<button class="navbar-toggler order-1" type="button" data-toggle="collapse" data-target="#navbarCollapse"
aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
{{-- Navbar collapsible menu --}}
<div class="collapse navbar-collapse order-3" id="navbarCollapse">
{{-- Navbar left links --}}
<ul class="nav navbar-nav">
{{-- Configured left links --}}
@each('adminlte::partials.navbar.menu-item', $adminlte->menu('navbar-left'), 'item')
{{-- Custom left links --}}
@yield('content_top_nav_left')
</ul>
</div>
{{-- Navbar right links --}}
<ul class="navbar-nav ml-auto order-1 order-md-3 navbar-no-expand">
{{-- Custom right links --}}
@yield('content_top_nav_right')
{{-- Configured right links --}}
@each('adminlte::partials.navbar.menu-item', $adminlte->menu('navbar-right'), 'item')
{{-- User menu link --}}
@if(Auth::user())
@if(config('adminlte.usermenu_enabled'))
@include('adminlte::partials.navbar.menu-item-dropdown-user-menu')
@else
@include('adminlte::partials.navbar.menu-item-logout-link')
@endif
@endif
{{-- Right sidebar toggler link --}}
@if(config('adminlte.right_sidebar'))
@include('adminlte::partials.navbar.menu-item-right-sidebar-toggler')
@endif
</ul>
</div>
</nav>

View File

@ -0,0 +1,40 @@
<nav class="main-header navbar
{{ config('adminlte.classes_topnav_nav', 'navbar-expand') }}
{{ config('adminlte.classes_topnav', 'navbar-white navbar-light') }}">
{{-- Navbar left links --}}
<ul class="navbar-nav">
{{-- Left sidebar toggler link --}}
@include('adminlte::partials.navbar.menu-item-left-sidebar-toggler')
{{-- Configured left links --}}
@each('adminlte::partials.navbar.menu-item', $adminlte->menu('navbar-left'), 'item')
{{-- Custom left links --}}
@yield('content_top_nav_left')
</ul>
{{-- Navbar right links --}}
<ul class="navbar-nav ml-auto">
{{-- Custom right links --}}
@yield('content_top_nav_right')
{{-- Configured right links --}}
@each('adminlte::partials.navbar.menu-item', $adminlte->menu('navbar-right'), 'item')
{{-- User menu link --}}
@if(Auth::user())
@if(config('adminlte.usermenu_enabled'))
@include('adminlte::partials.navbar.menu-item-dropdown-user-menu')
@else
@include('adminlte::partials.navbar.menu-item-logout-link')
@endif
@endif
{{-- Right sidebar toggler link --}}
@if(config('adminlte.right_sidebar'))
@include('adminlte::partials.navbar.menu-item-right-sidebar-toggler')
@endif
</ul>
</nav>

View File

@ -0,0 +1,27 @@
<aside class="main-sidebar {{ config('adminlte.classes_sidebar', 'sidebar-dark-primary elevation-4') }}">
{{-- Sidebar brand logo --}}
@if(config('adminlte.logo_img_xl'))
@include('adminlte::partials.common.brand-logo-xl')
@else
@include('adminlte::partials.common.brand-logo-xs')
@endif
{{-- Sidebar menu --}}
<div class="sidebar">
<nav class="pt-2">
<ul class="nav nav-pills nav-sidebar flex-column {{ config('adminlte.classes_sidebar_nav', '') }}"
data-widget="treeview" role="menu"
@if(config('adminlte.sidebar_nav_animation_speed') != 300)
data-animation-speed="{{ config('adminlte.sidebar_nav_animation_speed') }}"
@endif
@if(!config('adminlte.sidebar_nav_accordion'))
data-accordion="false"
@endif>
{{-- Configured sidebar links --}}
@each('adminlte::partials.sidebar.menu-item', $adminlte->menu('sidebar'), 'item')
</ul>
</nav>
</div>
</aside>

View File

@ -0,0 +1,5 @@
<li @isset($item['id']) id="{{ $item['id'] }}" @endisset class="nav-header {{ $item['class'] ?? '' }}">
{{ is_string($item) ? $item : $item['header'] }}
</li>

View File

@ -0,0 +1,23 @@
<li @isset($item['id']) id="{{ $item['id'] }}" @endisset class="nav-item">
<a class="nav-link {{ $item['class'] }} @isset($item['shift']) {{ $item['shift'] }} @endisset"
href="{{ $item['href'] }}" @isset($item['target']) target="{{ $item['target'] }}" @endisset
{!! $item['data-compiled'] ?? '' !!}>
<i class="{{ $item['icon'] ?? 'far fa-fw fa-circle' }} {{
isset($item['icon_color']) ? 'text-'.$item['icon_color'] : ''
}}"></i>
<p>
{{ $item['text'] }}
@isset($item['label'])
<span class="badge badge-{{ $item['label_color'] ?? 'primary' }} right">
{{ $item['label'] }}
</span>
@endisset
</p>
</a>
</li>

View File

@ -0,0 +1,25 @@
<li>
<form class="form-inline my-2" action="{{ $item['href'] }}" method="{{ $item['method'] }}">
{{ csrf_field() }}
<div class="input-group">
{{-- Search input --}}
<input class="form-control form-control-sidebar" type="search"
@isset($item['id']) id="{{ $item['id'] }}" @endisset
name="{{ $item['input_name'] }}"
placeholder="{{ $item['text'] }}"
aria-label="{{ $item['text'] }}">
{{-- Search button --}}
<div class="input-group-append">
<button class="btn btn-sidebar" type="submit">
<i class="fas fa-fw fa-search"></i>
</button>
</div>
</div>
</form>
</li>

View File

@ -0,0 +1,22 @@
<li>
<div class="form-inline my-2">
<div class="input-group" data-widget="sidebar-search" data-arrow-sign="&raquo;">
{{-- Search input --}}
<input class="form-control form-control-sidebar" type="search"
@isset($item['id']) id="{{ $item['id'] }}" @endisset
placeholder="{{ $item['text'] }}"
aria-label="{{ $item['text'] }}">
{{-- Search button --}}
<div class="input-group-append">
<button class="btn btn-sidebar">
<i class="fas fa-fw fa-search"></i>
</button>
</div>
</div>
</div>
</li>

View File

@ -0,0 +1,29 @@
<li @isset($item['id']) id="{{ $item['id'] }}" @endisset class="nav-item has-treeview {{ $item['submenu_class'] }}">
{{-- Menu toggler --}}
<a class="nav-link {{ $item['class'] }} @isset($item['shift']) {{ $item['shift'] }} @endisset"
href="" {!! $item['data-compiled'] ?? '' !!}>
<i class="{{ $item['icon'] ?? 'far fa-fw fa-circle' }} {{
isset($item['icon_color']) ? 'text-'.$item['icon_color'] : ''
}}"></i>
<p>
{{ $item['text'] }}
<i class="fas fa-angle-left right"></i>
@isset($item['label'])
<span class="badge badge-{{ $item['label_color'] ?? 'primary' }} right">
{{ $item['label'] }}
</span>
@endisset
</p>
</a>
{{-- Menu items --}}
<ul class="nav nav-treeview">
@each('adminlte::partials.sidebar.menu-item', $item['submenu'], 'item')
</ul>
</li>

View File

@ -0,0 +1,28 @@
@inject('sidebarItemHelper', 'JeroenNoten\LaravelAdminLte\Helpers\SidebarItemHelper')
@if ($sidebarItemHelper->isHeader($item))
{{-- Header --}}
@include('adminlte::partials.sidebar.menu-item-header')
@elseif ($sidebarItemHelper->isLegacySearch($item) || $sidebarItemHelper->isCustomSearch($item))
{{-- Search form --}}
@include('adminlte::partials.sidebar.menu-item-search-form')
@elseif ($sidebarItemHelper->isMenuSearch($item))
{{-- Search menu --}}
@include('adminlte::partials.sidebar.menu-item-search-menu')
@elseif ($sidebarItemHelper->isSubmenu($item))
{{-- Treeview menu --}}
@include('adminlte::partials.sidebar.menu-item-treeview-menu')
@elseif ($sidebarItemHelper->isLink($item))
{{-- Link --}}
@include('adminlte::partials.sidebar.menu-item-link')
@endif

View File

@ -0,0 +1,3 @@
<aside class="control-sidebar control-sidebar-{{ config('adminlte.right_sidebar_theme') }}">
@yield('right-sidebar')
</aside>

View File

@ -0,0 +1,36 @@
@foreach(config('adminlte.plugins') as $pluginName => $plugin)
{{-- Check whether the plugin is active --}}
@php
$plugSection = View::getSection('plugins.' . ($plugin['name'] ?? $pluginName));
$isPlugActive = $plugin['active']
? ! isset($plugSection) || $plugSection
: ! empty($plugSection);
@endphp
{{-- When the plugin is active, include its files --}}
@if($isPlugActive)
@foreach($plugin['files'] as $file)
{{-- Setup the file location --}}
@php
if (! empty($file['asset'])) {
$file['location'] = asset($file['location']);
}
@endphp
{{-- Check the requested file type --}}
@if($file['type'] == $type && $type == 'css')
<link rel="stylesheet" href="{{ $file['location'] }}">
@elseif($file['type'] == $type && $type == 'js')
<script src="{{ $file['location'] }}" @if(! empty($file['defer'])) defer @endif></script>
@endif
@endforeach
@endif
@endforeach