From ca567eec8afc464085deaef330ab4d93a6684532 Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 17 Sep 2025 21:08:13 +0100 Subject: [PATCH 01/15] Small adjustments for layout --- .../Account/AcceptanceController.php | 77 +++++++++++-------- app/Models/LicenseSeat.php | 16 ++++ .../AcceptanceAssetAcceptedNotification.php | 14 ++-- ...eptanceAssetAcceptedToUserNotification.php | 11 ++- .../markdown/asset-acceptance.blade.php | 3 + 5 files changed, 81 insertions(+), 40 deletions(-) diff --git a/app/Http/Controllers/Account/AcceptanceController.php b/app/Http/Controllers/Account/AcceptanceController.php index de973f284d..8cf970e675 100644 --- a/app/Http/Controllers/Account/AcceptanceController.php +++ b/app/Http/Controllers/Account/AcceptanceController.php @@ -83,7 +83,7 @@ class AcceptanceController extends Controller public function store(Request $request, $id) : RedirectResponse { $acceptance = CheckoutAcceptance::find($id); - + $settings = Setting::getSettings(); if (is_null($acceptance)) { return redirect()->route('account.accept')->with('error', trans('admin/hardware/message.does_not_exist')); } @@ -146,35 +146,31 @@ class AcceptanceController extends Controller $assigned_user = User::find($acceptance->assigned_to_id); - /** - * Gather the data for the PDF. We fire this whether there is a signature required or not, - * since we want the moment-in-time proof of what the EULA was when they accepted it. - */ - $branding_settings = SettingsController::getPDFBranding(); - $path_logo = ""; // Check for the PDF logo path and use that, otherwise use the regular logo path - if (!is_null($branding_settings->acceptance_pdf_logo)) { - $path_logo = public_path() . '/uploads/' . $branding_settings->acceptance_pdf_logo; - } elseif (!is_null($branding_settings->logo)) { - $path_logo = public_path() . '/uploads/' . $branding_settings->logo; + if (!is_null($settings->acceptance_pdf_logo)) { + $path_logo = public_path() . '/uploads/' . $settings->acceptance_pdf_logo; + } elseif (!is_null($settings->logo)) { + $path_logo = public_path() . '/uploads/' . $settings->logo; } $data = [ 'item_tag' => $item->asset_tag, - 'item_model' => $item->model ? $item->model->name : $item->display_name, + 'item_name' => $item->name, // this handles licenses seats, which don't have a 'name' field + 'item_model' => $item->model?->name, 'item_serial' => $item->serial, 'item_status' => $item->assetstatus?->name, 'eula' => $item->getEula(), 'note' => $request->input('note'), - 'check_out_date' => Carbon::parse($acceptance->created_at)->format('Y-m-d H:i:s'), - 'accepted_date' => Carbon::parse($acceptance->accepted_at)->format('Y-m-d H:i:s'), + 'check_out_date' => Helper::getFormattedDateObject($acceptance->created_at, 'datetime', false), + 'accepted_date' => Helper::getFormattedDateObject(now()->format('Y-m-d H:i:s'), 'datetime', false), 'assigned_to' => $assigned_user->display_name, - 'company_name' => $branding_settings->site_name, + 'site_name' => $settings->site_name, + 'company_name' => $item->company?->name?? $settings->site_name, 'signature' => ($sig_filename) ? storage_path() . '/private_uploads/signatures/' . $sig_filename : null, 'logo' => $path_logo, - 'date_settings' => $branding_settings->date_display_format, + 'date_settings' => $settings->date_display_format, 'admin' => auth()->user()->present()?->fullName, 'qty' => $acceptance->qty ?? 1, ]; @@ -192,26 +188,40 @@ class AcceptanceController extends Controller $pdf->SetAuthor($data['assigned_to']); $pdf->SetTitle('Asset Acceptance: '.$data['item_tag']); $pdf->SetSubject('Asset Acceptance: '.$data['item_tag']); - $pdf->SetKeywords('Snipe-IT, assets, acceptance, eula', 'tos'); + $pdf->SetKeywords('Snipe-IT, assets, acceptance, eula, tos'); $pdf->SetFont('dejavusans', '', 8, '', true); $pdf->SetPrintHeader(false); $pdf->SetPrintFooter(false); - $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); - $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); $pdf->AddPage(); - $pdf->writeHTML('', true, 0, true, 0, ''); + if ($data['logo']) { + $pdf->writeHTML('', true, 0, true, 0, ''); + } - if ($data['item_tag']) { - $pdf->writeHTML("" . trans('general.asset_tag') . ': ' . $data['item_tag'], true, 0, true, 0, ''); + if ($data['site_name']) { + $pdf->writeHTML($data['site_name'], true, 0, true, 0, 'C'); } - $pdf->writeHTML("".trans('general.asset_model').': '.$data['item_model'], true, 0, true, 0, ''); - if ($data['item_serial']) { - $pdf->writeHTML("".trans('admin/hardware/form.serial').': '.$data['item_serial'], true, 0, true, 0, ''); - } - $pdf->writeHTML("".trans('general.assigned_date').': '.$data['check_out_date'], true, 0, true, 0, ''); - $pdf->writeHTML("".trans('general.assignee').': '.$data['assigned_to'], true, 0, true, 0, ''); $pdf->Ln(); + $pdf->writeHTML(trans('general.date') . ': ' . Helper::getFormattedDateObject(now(), 'datetime', false), true, 0, true, 0, ''); + + if ($data['company_name'] != null) { + $pdf->writeHTML(trans('general.company') . ': ' . e($data['company_name']), true, 0, true, 0, ''); + } + if ($data['item_tag'] != null) { + $pdf->writeHTML(trans('general.asset_tag') . ': ' . e($data['item_tag']), true, 0, true, 0, ''); + } + if ($data['item_name'] != null) { + $pdf->writeHTML(trans('general.name') . ': ' . e($data['item_name']), true, 0, true, 0, ''); + } + if ($data['item_model'] != null) { + $pdf->writeHTML(trans('general.asset_model') . ': ' . e($data['item_model']), true, 0, true, 0, ''); + } + if ($data['item_serial'] != null) { + $pdf->writeHTML(trans('admin/hardware/form.serial').': '.e($data['item_serial']), true, 0, true, 0, ''); + } + $pdf->Ln(); + $pdf->writeHTML('
', true, 0, true, 0, ''); + // Break the EULA into lines based on newlines, and check each line for RTL or CJK characters $eula_lines = preg_split("/\r\n|\n|\r/", $item->getEula()); @@ -229,25 +239,28 @@ class AcceptanceController extends Controller if ($data['note'] != null) { Helper::isCjk($data['note']) ? $pdf->SetFont('cid0cs', '', 9) : $pdf->SetFont('dejavusans', '', 8, '', true); - $pdf->writeHTML("".trans('general.notes') . ': ' . $data['note'], true, 0, true, 0, ''); + $pdf->writeHTML(trans('general.notes') . ': ' . e($data['note']), true, 0, true, 0, ''); $pdf->Ln(); } if ($data['signature'] != null) { - $pdf->writeHTML('', true, 0, true, 0, ''); $pdf->writeHTML('
', true, 0, true, 0, ''); } - $pdf->writeHTML("".trans('general.accepted_date').': '.$data['accepted_date'], true, 0, true, 0, ''); + $pdf->writeHTML(trans('general.assignee').': '.e($data['assigned_to']), true, 0, true, 0, ''); + $pdf->writeHTML(trans('general.assigned_date').': '.e($data['check_out_date']), true, 0, true, 0, ''); + $pdf->writeHTML(trans('general.accepted_date').': '.e($data['accepted_date']), true, 0, true, 0, ''); + // close line height div + $pdf->writeHTML('', true, 0, true, 0, ''); $pdf_content = $pdf->Output($pdf_filename, 'S'); Storage::put('private_uploads/eula-pdfs/' .$pdf_filename, $pdf_content); - $acceptance->accept($sig_filename, $item->getEula(), $pdf_filename, $request->input('note')); + $acceptance->accept($sig_filename, $item->getEula(), $pdf_filename, $request->input('note')); // Send the PDF to the signing user if (($request->input('send_copy') == '1') && ($assigned_user->email !='')) { diff --git a/app/Models/LicenseSeat.php b/app/Models/LicenseSeat.php index 9ddd3fb431..39cb53f9d8 100755 --- a/app/Models/LicenseSeat.php +++ b/app/Models/LicenseSeat.php @@ -7,6 +7,7 @@ use App\Models\Traits\CompanyableChildTrait; use App\Notifications\CheckinLicenseNotification; use App\Notifications\CheckoutLicenseNotification; use App\Presenters\Presentable; +use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\SoftDeletes; @@ -64,6 +65,21 @@ class LicenseSeat extends SnipeModel implements ICompanyableChild return $this->license->getEula(); } + protected function name(): Attribute + { + return Attribute:: make( + get: fn(mixed $value) => $this->license->name, + ); + } + + protected function displayName(): Attribute + { + return Attribute:: make( + get: fn(mixed $value) => $this->license->name, + ); + } + + /** * Establishes the seat -> license relationship * diff --git a/app/Notifications/AcceptanceAssetAcceptedNotification.php b/app/Notifications/AcceptanceAssetAcceptedNotification.php index df7d745de4..6e33a8a823 100644 --- a/app/Notifications/AcceptanceAssetAcceptedNotification.php +++ b/app/Notifications/AcceptanceAssetAcceptedNotification.php @@ -2,6 +2,7 @@ namespace App\Notifications; +use AllowDynamicProperties; use App\Helpers\Helper; use App\Models\Setting; use Illuminate\Bus\Queueable; @@ -10,7 +11,7 @@ use Illuminate\Notifications\Messages\MailMessage; use Illuminate\Notifications\Messages\SlackMessage; use Illuminate\Notifications\Notification; -class AcceptanceAssetAcceptedNotification extends Notification +#[AllowDynamicProperties] class AcceptanceAssetAcceptedNotification extends Notification { use Queueable; @@ -22,16 +23,18 @@ class AcceptanceAssetAcceptedNotification extends Notification public function __construct($params) { $this->item_tag = $params['item_tag']; + $this->item_name = $params['item_name']; $this->item_model = $params['item_model']; $this->item_serial = $params['item_serial']; $this->item_status = $params['item_status']; - $this->accepted_date = Helper::getFormattedDateObject($params['accepted_date'], 'date', false); + $this->accepted_date = Helper::getFormattedDateObject($params['accepted_date'], 'datetime', false); $this->assigned_to = $params['assigned_to']; - $this->note = $params['note']; $this->company_name = $params['company_name']; - $this->admin = $params['admin'] ?? null; $this->settings = Setting::getSettings(); + $this->file = $params['file'] ?? null; $this->qty = $params['qty'] ?? null; + $this->note = $params['note'] ?? null; + $this->admin = $params['admin'] ?? null; } @@ -66,6 +69,7 @@ class AcceptanceAssetAcceptedNotification extends Notification $message = (new MailMessage)->markdown('notifications.markdown.asset-acceptance', [ 'item_tag' => $this->item_tag, + 'item_name' => $this->item_name, 'item_model' => $this->item_model, 'item_serial' => $this->item_serial, 'item_status' => $this->item_status, @@ -73,9 +77,9 @@ class AcceptanceAssetAcceptedNotification extends Notification 'accepted_date' => $this->accepted_date, 'assigned_to' => $this->assigned_to, 'company_name' => $this->company_name, + 'admin' => $this->admin, 'qty' => $this->qty, 'intro_text' => trans('mail.acceptance_asset_accepted'), - 'admin' => $this->admin, ]) ->subject(trans('mail.acceptance_asset_accepted')); diff --git a/app/Notifications/AcceptanceAssetAcceptedToUserNotification.php b/app/Notifications/AcceptanceAssetAcceptedToUserNotification.php index 57e7b3fad4..246eb3777b 100644 --- a/app/Notifications/AcceptanceAssetAcceptedToUserNotification.php +++ b/app/Notifications/AcceptanceAssetAcceptedToUserNotification.php @@ -2,13 +2,14 @@ namespace App\Notifications; +use AllowDynamicProperties; use App\Helpers\Helper; use App\Models\Setting; use Illuminate\Bus\Queueable; use Illuminate\Notifications\Messages\MailMessage; use Illuminate\Notifications\Notification; -class AcceptanceAssetAcceptedToUserNotification extends Notification +#[AllowDynamicProperties] class AcceptanceAssetAcceptedToUserNotification extends Notification { use Queueable; @@ -20,16 +21,18 @@ class AcceptanceAssetAcceptedToUserNotification extends Notification public function __construct($params) { $this->item_tag = $params['item_tag']; + $this->item_name = $params['item_name']; $this->item_model = $params['item_model']; $this->item_serial = $params['item_serial']; $this->item_status = $params['item_status']; - $this->accepted_date = Helper::getFormattedDateObject($params['accepted_date'], 'date', false); + $this->accepted_date = Helper::getFormattedDateObject($params['accepted_date'], 'datetime', false); $this->assigned_to = $params['assigned_to']; - $this->note = $params['note']; + $this->note = $params['note'] ?? null; $this->company_name = $params['company_name']; $this->settings = Setting::getSettings(); $this->file = $params['file'] ?? null; $this->qty = $params['qty'] ?? null; + $this->admin = $params['admin'] ?? null; } /** @@ -59,6 +62,7 @@ class AcceptanceAssetAcceptedToUserNotification extends Notification $message = (new MailMessage)->markdown('notifications.markdown.asset-acceptance', [ 'item_tag' => $this->item_tag, + 'item_name' => $this->item_name, 'item_model' => $this->item_model, 'item_serial' => $this->item_serial, 'item_status' => $this->item_status, @@ -66,6 +70,7 @@ class AcceptanceAssetAcceptedToUserNotification extends Notification 'accepted_date' => $this->accepted_date, 'assigned_to' => $this->assigned_to, 'company_name' => $this->company_name, + 'admin' => $this->admin, 'qty' => $this->qty, 'intro_text' => trans('mail.acceptance_asset_accepted_to_user', ['site_name' => $this->company_name ?? $this->settings->site_name]), ]) diff --git a/resources/views/notifications/markdown/asset-acceptance.blade.php b/resources/views/notifications/markdown/asset-acceptance.blade.php index db2705e52a..52c13500d0 100644 --- a/resources/views/notifications/markdown/asset-acceptance.blade.php +++ b/resources/views/notifications/markdown/asset-acceptance.blade.php @@ -6,6 +6,9 @@ @component('mail::table') | | | | ------------- | ------------- | +@if (isset($item_name)) +| **{{ trans('general.name') }}** | {{ $item_name }} | +@endif | **{{ trans('mail.user') }}** | {{ $assigned_to }} | @if (isset($user->location)) | **{{ trans('general.location') }}** | {{ $user->location->name }} | From 1d3dfa1fa4f378950de467dc6e64e373f2bfa53f Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 17 Sep 2025 21:43:17 +0100 Subject: [PATCH 02/15] Pull the acceptance stuff into the model --- .../Account/AcceptanceController.php | 248 +++++------------- app/Models/CheckoutAcceptance.php | 94 +++++++ 2 files changed, 161 insertions(+), 181 deletions(-) diff --git a/app/Http/Controllers/Account/AcceptanceController.php b/app/Http/Controllers/Account/AcceptanceController.php index 8cf970e675..be0391a123 100644 --- a/app/Http/Controllers/Account/AcceptanceController.php +++ b/app/Http/Controllers/Account/AcceptanceController.php @@ -13,11 +13,6 @@ use App\Models\Company; use App\Models\Contracts\Acceptable; use App\Models\Setting; use App\Models\User; -use App\Models\AssetModel; -use App\Models\Accessory; -use App\Models\License; -use App\Models\Component; -use App\Models\Consumable; use App\Notifications\AcceptanceAssetAcceptedNotification; use App\Notifications\AcceptanceAssetAcceptedToUserNotification; use App\Notifications\AcceptanceAssetDeclinedNotification; @@ -26,12 +21,9 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Str; -use App\Http\Controllers\SettingsController; -use Carbon\Carbon; use \Illuminate\Contracts\View\View; use \Illuminate\Http\RedirectResponse; use Illuminate\Support\Facades\Log; -use TCPDF; use App\Helpers\Helper; class AcceptanceController extends Controller @@ -83,7 +75,12 @@ class AcceptanceController extends Controller public function store(Request $request, $id) : RedirectResponse { $acceptance = CheckoutAcceptance::find($id); + $assigned_user = User::find($acceptance->assigned_to_id); $settings = Setting::getSettings(); + $path_logo = ''; + $sig_filename=''; + + if (is_null($acceptance)) { return redirect()->route('account.accept')->with('error', trans('admin/hardware/message.does_not_exist')); } @@ -118,149 +115,71 @@ class AcceptanceController extends Controller Storage::makeDirectory('private_uploads/eula-pdfs', 775); } - $item = $acceptance->checkoutable_type::find($acceptance->checkoutable_id); - $checkout_type_shortname = strtolower(str_replace('App\Models\\', '', $acceptance->checkoutable_type)); - $pdf_filename = 'accepted-'.$acceptance->checkoutable_id.'-'.$checkout_type_shortname.'-eula-'.date('Y-m-d-h-i-s').'.pdf'; - $sig_filename=''; + + + + // If signatures are required, make sure we have one + if (Setting::getSettings()->require_accept_signature == '1') { + + // The item was accepted, check for a signature + if ($request->filled('signature_output')) { + $sig_filename = 'siglog-' . Str::uuid() . '-' . date('Y-m-d-his') . '.png'; + $data_uri = $request->input('signature_output'); + $encoded_image = explode(',', $data_uri); + $decoded_image = base64_decode($encoded_image[1]); + Storage::put('private_uploads/signatures/' . $sig_filename, (string)$decoded_image); + + // No image data is present, kick them back. + // This mostly only applies to users on super-duper crapola browsers *cough* IE *cough* + } else { + return redirect()->back()->with('error', trans('general.shitty_browser')); + } + } + + + // Check for the PDF logo path and use that, otherwise use the regular logo path + if (!is_null($settings->acceptance_pdf_logo)) { + $path_logo = public_path() . '/uploads/' . $settings->acceptance_pdf_logo; + } elseif (!is_null($settings->logo)) { + $path_logo = public_path() . '/uploads/' . $settings->logo; + } + + + // Get the data array ready for the notifications and PDF generation + $data = [ + 'item_tag' => $item->asset_tag, + 'item_name' => $item->name, // this handles licenses seats, which don't have a 'name' field + 'item_model' => $item->model?->name, + 'item_serial' => $item->serial, + 'item_status' => $item->assetstatus?->name, + 'eula' => $item->getEula(), + 'note' => $request->input('note'), + 'check_out_date' => Helper::getFormattedDateObject($acceptance->created_at, 'datetime', false), + 'accepted_date' => Helper::getFormattedDateObject(now()->format('Y-m-d H:i:s'), 'datetime', false), + 'declined_date' => Helper::getFormattedDateObject(now()->format('Y-m-d H:i:s'), 'datetime', false), + 'assigned_to' => $assigned_user->display_name, + 'site_name' => $settings->site_name, + 'company_name' => $item->company?->name?? $settings->site_name, + 'signature' => ($sig_filename) ? storage_path() . '/private_uploads/signatures/' . $sig_filename : null, + 'logo' => $path_logo, + 'date_settings' => $settings->date_display_format, + 'admin' => auth()->user()->present()?->fullName, + 'qty' => $acceptance->qty ?? 1, + ]; + if ($request->input('asset_acceptance') == 'accepted') { - if (Setting::getSettings()->require_accept_signature == '1') { - // The item was accepted, check for a signature - if ($request->filled('signature_output')) { - $sig_filename = 'siglog-' . Str::uuid() . '-' . date('Y-m-d-his') . '.png'; - $data_uri = $request->input('signature_output'); - $encoded_image = explode(',', $data_uri); - $decoded_image = base64_decode($encoded_image[1]); - Storage::put('private_uploads/signatures/' . $sig_filename, (string)$decoded_image); - - // No image data is present, kick them back. - // This mostly only applies to users on super-duper crapola browsers *cough* IE *cough* - } else { - return redirect()->back()->with('error', trans('general.shitty_browser')); - } - } - - $assigned_user = User::find($acceptance->assigned_to_id); - - - $path_logo = ""; - - // Check for the PDF logo path and use that, otherwise use the regular logo path - if (!is_null($settings->acceptance_pdf_logo)) { - $path_logo = public_path() . '/uploads/' . $settings->acceptance_pdf_logo; - } elseif (!is_null($settings->logo)) { - $path_logo = public_path() . '/uploads/' . $settings->logo; - } - - $data = [ - 'item_tag' => $item->asset_tag, - 'item_name' => $item->name, // this handles licenses seats, which don't have a 'name' field - 'item_model' => $item->model?->name, - 'item_serial' => $item->serial, - 'item_status' => $item->assetstatus?->name, - 'eula' => $item->getEula(), - 'note' => $request->input('note'), - 'check_out_date' => Helper::getFormattedDateObject($acceptance->created_at, 'datetime', false), - 'accepted_date' => Helper::getFormattedDateObject(now()->format('Y-m-d H:i:s'), 'datetime', false), - 'assigned_to' => $assigned_user->display_name, - 'site_name' => $settings->site_name, - 'company_name' => $item->company?->name?? $settings->site_name, - 'signature' => ($sig_filename) ? storage_path() . '/private_uploads/signatures/' . $sig_filename : null, - 'logo' => $path_logo, - 'date_settings' => $settings->date_display_format, - 'admin' => auth()->user()->present()?->fullName, - 'qty' => $acceptance->qty ?? 1, - ]; - - // set some language dependent data: - $lg = Array(); - $lg['a_meta_charset'] = 'UTF-8'; - $lg['w_page'] = 'page'; - - $pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false); - $pdf->setRTL(false); - $pdf->setLanguageArray($lg); - $pdf->SetFontSubsetting(true); - $pdf->SetCreator('Snipe-IT'); - $pdf->SetAuthor($data['assigned_to']); - $pdf->SetTitle('Asset Acceptance: '.$data['item_tag']); - $pdf->SetSubject('Asset Acceptance: '.$data['item_tag']); - $pdf->SetKeywords('Snipe-IT, assets, acceptance, eula, tos'); - $pdf->SetFont('dejavusans', '', 8, '', true); - $pdf->SetPrintHeader(false); - $pdf->SetPrintFooter(false); - - $pdf->AddPage(); - if ($data['logo']) { - $pdf->writeHTML('', true, 0, true, 0, ''); - } - - if ($data['site_name']) { - $pdf->writeHTML($data['site_name'], true, 0, true, 0, 'C'); - } - $pdf->Ln(); - $pdf->writeHTML(trans('general.date') . ': ' . Helper::getFormattedDateObject(now(), 'datetime', false), true, 0, true, 0, ''); - - if ($data['company_name'] != null) { - $pdf->writeHTML(trans('general.company') . ': ' . e($data['company_name']), true, 0, true, 0, ''); - } - if ($data['item_tag'] != null) { - $pdf->writeHTML(trans('general.asset_tag') . ': ' . e($data['item_tag']), true, 0, true, 0, ''); - } - if ($data['item_name'] != null) { - $pdf->writeHTML(trans('general.name') . ': ' . e($data['item_name']), true, 0, true, 0, ''); - } - if ($data['item_model'] != null) { - $pdf->writeHTML(trans('general.asset_model') . ': ' . e($data['item_model']), true, 0, true, 0, ''); - } - if ($data['item_serial'] != null) { - $pdf->writeHTML(trans('admin/hardware/form.serial').': '.e($data['item_serial']), true, 0, true, 0, ''); - } - $pdf->Ln(); - $pdf->writeHTML('
', true, 0, true, 0, ''); - - - // Break the EULA into lines based on newlines, and check each line for RTL or CJK characters - $eula_lines = preg_split("/\r\n|\n|\r/", $item->getEula()); - - foreach ($eula_lines as $eula_line) { - Helper::hasRtl($eula_line) ? $pdf->setRTL(true) : $pdf->setRTL(false); - Helper::isCjk($eula_line) ? $pdf->SetFont('cid0cs', '', 9) : $pdf->SetFont('dejavusans', '', 8, '', true); - - $pdf->writeHTML(Helper::parseEscapedMarkedown($eula_line), true, 0, true, 0, ''); - } - $pdf->Ln(); - $pdf->Ln(); - $pdf->setRTL(false); - $pdf->writeHTML('

', true, 0, true, 0, ''); - - if ($data['note'] != null) { - Helper::isCjk($data['note']) ? $pdf->SetFont('cid0cs', '', 9) : $pdf->SetFont('dejavusans', '', 8, '', true); - $pdf->writeHTML(trans('general.notes') . ': ' . e($data['note']), true, 0, true, 0, ''); - $pdf->Ln(); - } - - if ($data['signature'] != null) { - $pdf->writeHTML('', true, 0, true, 0, ''); - $pdf->writeHTML('
', true, 0, true, 0, ''); - } - - $pdf->writeHTML(trans('general.assignee').': '.e($data['assigned_to']), true, 0, true, 0, ''); - $pdf->writeHTML(trans('general.assigned_date').': '.e($data['check_out_date']), true, 0, true, 0, ''); - $pdf->writeHTML(trans('general.accepted_date').': '.e($data['accepted_date']), true, 0, true, 0, ''); - - // close line height div - $pdf->writeHTML('', true, 0, true, 0, ''); - - $pdf_content = $pdf->Output($pdf_filename, 'S'); + $pdf_filename = 'accepted-'.$acceptance->checkoutable_id.'-'.$acceptance->display_checkoutable_type.'-eula-'.date('Y-m-d-h-i-s').'.pdf'; + // Generate the PDF content + $pdf_content = $acceptance->generateAcceptancePdf($data, $acceptance); Storage::put('private_uploads/eula-pdfs/' .$pdf_filename, $pdf_content); - - $acceptance->accept($sig_filename, $item->getEula(), $pdf_filename, $request->input('note')); + // Log the acceptance + // $acceptance->accept($sig_filename, $item->getEula(), $pdf_filename, $request->input('note')); // Send the PDF to the signing user if (($request->input('send_copy') == '1') && ($assigned_user->email !='')) { @@ -282,45 +201,9 @@ class AcceptanceController extends Controller $return_msg = trans('admin/users/message.accepted'); - // Item was not accepted + // Item was declined } else { - if (Setting::getSettings()->require_accept_signature == '1') { - - // The item was declined, check for a signature - if ($request->filled('signature_output')) { - $sig_filename = 'siglog-' . Str::uuid() . '-' . date('Y-m-d-his') . '.png'; - $data_uri = $request->input('signature_output'); - $encoded_image = explode(',', $data_uri); - $decoded_image = base64_decode($encoded_image[1]); - Storage::put('private_uploads/signatures/' . $sig_filename, (string)$decoded_image); - - // No image data is present, kick them back. - // This mostly only applies to users on super-duper crapola browsers *cough* IE *cough* - } else { - return redirect()->back()->with('error', trans('general.shitty_browser')); - } - } - - // Format the data to send the declined notification - $branding_settings = SettingsController::getPDFBranding(); - $assigned_to = User::find($acceptance->assigned_to_id)->present()->fullName; - - $data = [ - 'item_tag' => $item->asset_tag, - 'item_model' => $item->model ? $item->model->name : $item->display_name, - 'item_serial' => $item->serial, - 'item_status' => $item->assetstatus?->name, - 'note' => $request->input('note'), - 'declined_date' => Carbon::parse($acceptance->declined_at)->format('Y-m-d'), - 'signature' => ($sig_filename) ? storage_path() . '/private_uploads/signatures/' . $sig_filename : null, - 'assigned_to' => $assigned_to, - 'company_name' => $branding_settings->site_name, - 'date_settings' => $branding_settings->date_display_format, - 'qty' => $acceptance->qty ?? 1, - ]; - - for ($i = 0; $i < ($acceptance->qty ?? 1); $i++) { $acceptance->decline($sig_filename, $request->input('note')); } @@ -331,6 +214,8 @@ class AcceptanceController extends Controller $return_msg = trans('admin/users/message.declined'); } + + // Send an email notification if one is requested if ($acceptance->alert_on_response_id) { try { $recipient = User::find($acceptance->alert_on_response_id); @@ -349,9 +234,10 @@ class AcceptanceController extends Controller Log::warning($e); } } - return redirect()->to('account/accept')->with('success', $return_msg); } + + } diff --git a/app/Models/CheckoutAcceptance.php b/app/Models/CheckoutAcceptance.php index 2ad6c0e558..4cfd79d092 100644 --- a/app/Models/CheckoutAcceptance.php +++ b/app/Models/CheckoutAcceptance.php @@ -2,11 +2,14 @@ namespace App\Models; +use App\Helpers\Helper; use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Notifications\Notifiable; +use TCPDF; class CheckoutAcceptance extends Model { @@ -153,4 +156,95 @@ class CheckoutAcceptance extends Model { return $query->whereNull('accepted_at')->whereNotNull('declined_at'); } + + protected function displayCheckoutableType(): Attribute + { + return Attribute:: make( + get: fn(mixed $value) => strtolower(str_replace('App\Models\\', '', $this->checkoutable_type)), + ); + } + + public function generateAcceptancePdf($data, $pdf_filename) { + + // set some language dependent data: + $lg = Array(); + $lg['a_meta_charset'] = 'UTF-8'; + $lg['w_page'] = 'page'; + + $pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false); + $pdf->setRTL(false); + $pdf->setLanguageArray($lg); + $pdf->SetFontSubsetting(true); + $pdf->SetCreator('Snipe-IT Asset Management System'); + $pdf->SetAuthor($data['assigned_to']); + $pdf->SetTitle('Asset Acceptance: '.$data['item_tag']); + $pdf->SetSubject('Asset Acceptance: '.$data['item_tag']); + $pdf->SetKeywords('Snipe-IT, assets, acceptance, eula, tos'); + $pdf->SetFont('dejavusans', '', 8, '', true); + $pdf->SetPrintHeader(false); + $pdf->SetPrintFooter(false); + + $pdf->AddPage(); + if ($data['logo']) { + $pdf->writeHTML('', true, 0, true, 0, ''); + } + + if ($data['site_name']) { + $pdf->writeHTML($data['site_name'], true, 0, true, 0, 'C'); + } + $pdf->Ln(); + $pdf->writeHTML(trans('general.date') . ': ' . Helper::getFormattedDateObject(now(), 'datetime', false), true, 0, true, 0, ''); + + if ($data['company_name'] != null) { + $pdf->writeHTML(trans('general.company') . ': ' . e($data['company_name']), true, 0, true, 0, ''); + } + if ($data['item_tag'] != null) { + $pdf->writeHTML(trans('general.asset_tag') . ': ' . e($data['item_tag']), true, 0, true, 0, ''); + } + if ($data['item_name'] != null) { + $pdf->writeHTML(trans('general.name') . ': ' . e($data['item_name']), true, 0, true, 0, ''); + } + if ($data['item_model'] != null) { + $pdf->writeHTML(trans('general.asset_model') . ': ' . e($data['item_model']), true, 0, true, 0, ''); + } + if ($data['item_serial'] != null) { + $pdf->writeHTML(trans('admin/hardware/form.serial').': '.e($data['item_serial']), true, 0, true, 0, ''); + } + $pdf->Ln(); + $pdf->writeHTML('
', true, 0, true, 0, ''); + + + // Break the EULA into lines based on newlines, and check each line for RTL or CJK characters + $eula_lines = preg_split("/\r\n|\n|\r/", $data['eula']); + + foreach ($eula_lines as $eula_line) { + Helper::hasRtl($eula_line) ? $pdf->setRTL(true) : $pdf->setRTL(false); + Helper::isCjk($eula_line) ? $pdf->SetFont('cid0cs', '', 9) : $pdf->SetFont('dejavusans', '', 8, '', true); + + $pdf->writeHTML(Helper::parseEscapedMarkedown($eula_line), true, 0, true, 0, ''); + } + $pdf->Ln(); + $pdf->Ln(); + $pdf->setRTL(false); + $pdf->Ln(); + + if ($data['signature'] != null) { + $pdf->writeHTML('', true, 0, true, 0, ''); + $pdf->writeHTML('
', true, 0, true, 0, ''); + } + + if ($data['note'] != null) { + Helper::isCjk($data['note']) ? $pdf->SetFont('cid0cs', '', 9) : $pdf->SetFont('dejavusans', '', 8, '', true); + $pdf->writeHTML(trans('general.notes') . ': ' . e($data['note']), true, 0, true, 0, ''); + $pdf->Ln(); + } + + $pdf->writeHTML(trans('general.assignee').': '.e($data['assigned_to']), true, 0, true, 0, ''); + $pdf->writeHTML(trans('general.assigned_date').': '.e($data['check_out_date']), true, 0, true, 0, ''); + $pdf->writeHTML(trans('general.accepted_date').': '.e($data['accepted_date']), true, 0, true, 0, ''); + + return $pdf->Output($pdf_filename, 'S'); + + + } } From 89b36ba63f00bfa2c53c9d936517fa3bcb96bc03 Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 17 Sep 2025 21:43:40 +0100 Subject: [PATCH 03/15] Derp. Uncomment the acceptance. --- app/Http/Controllers/Account/AcceptanceController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Account/AcceptanceController.php b/app/Http/Controllers/Account/AcceptanceController.php index be0391a123..36904e6b20 100644 --- a/app/Http/Controllers/Account/AcceptanceController.php +++ b/app/Http/Controllers/Account/AcceptanceController.php @@ -179,7 +179,7 @@ class AcceptanceController extends Controller Storage::put('private_uploads/eula-pdfs/' .$pdf_filename, $pdf_content); // Log the acceptance - // $acceptance->accept($sig_filename, $item->getEula(), $pdf_filename, $request->input('note')); + $acceptance->accept($sig_filename, $item->getEula(), $pdf_filename, $request->input('note')); // Send the PDF to the signing user if (($request->input('send_copy') == '1') && ($assigned_user->email !='')) { From 8ea339f0ef0facf5c14a8a1f98c136a2418b0656 Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 17 Sep 2025 22:00:49 +0100 Subject: [PATCH 04/15] More small tweaks --- app/Http/Controllers/Account/AcceptanceController.php | 10 +--------- app/Models/CheckoutAcceptance.php | 7 +++---- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/app/Http/Controllers/Account/AcceptanceController.php b/app/Http/Controllers/Account/AcceptanceController.php index 36904e6b20..735946c3f5 100644 --- a/app/Http/Controllers/Account/AcceptanceController.php +++ b/app/Http/Controllers/Account/AcceptanceController.php @@ -138,14 +138,6 @@ class AcceptanceController extends Controller } - // Check for the PDF logo path and use that, otherwise use the regular logo path - if (!is_null($settings->acceptance_pdf_logo)) { - $path_logo = public_path() . '/uploads/' . $settings->acceptance_pdf_logo; - } elseif (!is_null($settings->logo)) { - $path_logo = public_path() . '/uploads/' . $settings->logo; - } - - // Get the data array ready for the notifications and PDF generation $data = [ 'item_tag' => $item->asset_tag, @@ -162,7 +154,7 @@ class AcceptanceController extends Controller 'site_name' => $settings->site_name, 'company_name' => $item->company?->name?? $settings->site_name, 'signature' => ($sig_filename) ? storage_path() . '/private_uploads/signatures/' . $sig_filename : null, - 'logo' => $path_logo, + 'logo' => ($settings->acceptance_pdf_logo) ? public_path() . '/uploads/' . $settings->acceptance_pdf_logo : null, 'date_settings' => $settings->date_display_format, 'admin' => auth()->user()->present()?->fullName, 'qty' => $acceptance->qty ?? 1, diff --git a/app/Models/CheckoutAcceptance.php b/app/Models/CheckoutAcceptance.php index 4cfd79d092..85fa472ffe 100644 --- a/app/Models/CheckoutAcceptance.php +++ b/app/Models/CheckoutAcceptance.php @@ -185,13 +185,12 @@ class CheckoutAcceptance extends Model $pdf->SetPrintFooter(false); $pdf->AddPage(); - if ($data['logo']) { + if ($data['logo'] != null) { $pdf->writeHTML('', true, 0, true, 0, ''); + } else { + $pdf->writeHTML('

'.$data['site_name'].'



', true, 0, true, 0, 'C'); } - if ($data['site_name']) { - $pdf->writeHTML($data['site_name'], true, 0, true, 0, 'C'); - } $pdf->Ln(); $pdf->writeHTML(trans('general.date') . ': ' . Helper::getFormattedDateObject(now(), 'datetime', false), true, 0, true, 0, ''); From 764b363bbcaf58db4be89c6a9d37dc67f59d534f Mon Sep 17 00:00:00 2001 From: snipe Date: Thu, 18 Sep 2025 13:38:37 +0100 Subject: [PATCH 05/15] A few small tweaks to acceptance screen design --- app/Models/CheckoutAcceptance.php | 11 +++-- .../views/account/accept/create.blade.php | 49 +++++++++++++------ 2 files changed, 39 insertions(+), 21 deletions(-) diff --git a/app/Models/CheckoutAcceptance.php b/app/Models/CheckoutAcceptance.php index 85fa472ffe..f23c6d7f4b 100644 --- a/app/Models/CheckoutAcceptance.php +++ b/app/Models/CheckoutAcceptance.php @@ -132,8 +132,7 @@ class CheckoutAcceptance extends Model /** * Filter checkout acceptences by the user * - * @param Illuminate\Database\Eloquent\Builder $query - * @param User $user + * @param User $user * @return \Illuminate\Database\Eloquent\Builder */ public function scopeForUser(Builder $query, User $user) @@ -144,7 +143,6 @@ class CheckoutAcceptance extends Model /** * Filter to only get pending acceptances * - * @param Illuminate\Database\Eloquent\Builder $query * @return \Illuminate\Database\Eloquent\Builder */ public function scopePending(Builder $query) @@ -209,6 +207,7 @@ class CheckoutAcceptance extends Model if ($data['item_serial'] != null) { $pdf->writeHTML(trans('admin/hardware/form.serial').': '.e($data['item_serial']), true, 0, true, 0, ''); } + $pdf->writeHTML(trans('general.assignee').': '.e($data['assigned_to']), true, 0, true, 0, ''); $pdf->Ln(); $pdf->writeHTML('
', true, 0, true, 0, ''); @@ -228,8 +227,10 @@ class CheckoutAcceptance extends Model $pdf->Ln(); if ($data['signature'] != null) { - $pdf->writeHTML('', true, 0, true, 0, ''); + $pdf->writeHTML('', true, 0, true, 0, ''); $pdf->writeHTML('
', true, 0, true, 0, ''); + $pdf->writeHTML(e($data['assigned_to']), true, 0, true, 0, 'C'); + $pdf->Ln(); } if ($data['note'] != null) { @@ -238,7 +239,7 @@ class CheckoutAcceptance extends Model $pdf->Ln(); } - $pdf->writeHTML(trans('general.assignee').': '.e($data['assigned_to']), true, 0, true, 0, ''); + $pdf->writeHTML(trans('general.assigned_date').': '.e($data['check_out_date']), true, 0, true, 0, ''); $pdf->writeHTML(trans('general.accepted_date').': '.e($data['accepted_date']), true, 0, true, 0, ''); diff --git a/resources/views/account/accept/create.blade.php b/resources/views/account/accept/create.blade.php index cb6a47a4ed..2b91d18f97 100644 --- a/resources/views/account/accept/create.blade.php +++ b/resources/views/account/accept/create.blade.php @@ -20,11 +20,21 @@ } .m-signature-pad--body { - border-style: solid; + border-style: dashed; border-color: grey; - border-width: thin; + border-width: thick; + padding-top: 0px; } + + .m-signature-pad { + box-shadow: none; + background-color: inherit; + border: none; + + } + + @@ -90,30 +100,37 @@ -
+
@endif - @if (auth()->user()->email!='') - - @endif - + + From be4ace293ed134197e29bfb519b4acf4aade3ff9 Mon Sep 17 00:00:00 2001 From: snipe Date: Thu, 18 Sep 2025 13:51:57 +0100 Subject: [PATCH 06/15] Use trans_choice for user acceptance --- app/Models/CheckoutAcceptance.php | 3 +++ .../AcceptanceAssetAcceptedToUserNotification.php | 4 ++-- resources/lang/en-US/mail.php | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/Models/CheckoutAcceptance.php b/app/Models/CheckoutAcceptance.php index f23c6d7f4b..b5c5ee9efe 100644 --- a/app/Models/CheckoutAcceptance.php +++ b/app/Models/CheckoutAcceptance.php @@ -207,6 +207,9 @@ class CheckoutAcceptance extends Model if ($data['item_serial'] != null) { $pdf->writeHTML(trans('admin/hardware/form.serial').': '.e($data['item_serial']), true, 0, true, 0, ''); } + if (($data['qty'] != null) && ($data['qty'] > 1)) { + $pdf->writeHTML(trans('general.qty').': '.e($data['qty']), true, 0, true, 0, ''); + } $pdf->writeHTML(trans('general.assignee').': '.e($data['assigned_to']), true, 0, true, 0, ''); $pdf->Ln(); $pdf->writeHTML('
', true, 0, true, 0, ''); diff --git a/app/Notifications/AcceptanceAssetAcceptedToUserNotification.php b/app/Notifications/AcceptanceAssetAcceptedToUserNotification.php index 246eb3777b..1f53443449 100644 --- a/app/Notifications/AcceptanceAssetAcceptedToUserNotification.php +++ b/app/Notifications/AcceptanceAssetAcceptedToUserNotification.php @@ -72,10 +72,10 @@ use Illuminate\Notifications\Notification; 'company_name' => $this->company_name, 'admin' => $this->admin, 'qty' => $this->qty, - 'intro_text' => trans('mail.acceptance_asset_accepted_to_user', ['site_name' => $this->company_name ?? $this->settings->site_name]), + 'intro_text' => trans_choice('mail.acceptance_asset_accepted_to_user', $this->qty, ['qty' => $this->qty, 'site_name' => $this->settings->site_name]), ]) ->attach($pdf_path) - ->subject(trans('mail.acceptance_asset_accepted_to_user', ['site_name' => $this->settings->site_name])); + ->subject(trans_choice('mail.acceptance_asset_accepted_to_user', $this->qty, ['qty' => $this->qty, 'site_name' => $this->settings->site_name])); return $message; } diff --git a/resources/lang/en-US/mail.php b/resources/lang/en-US/mail.php index 15a5bdd206..707390e4f0 100644 --- a/resources/lang/en-US/mail.php +++ b/resources/lang/en-US/mail.php @@ -31,7 +31,7 @@ return [ 'Low_Inventory_Report' => 'Low Inventory Report', 'a_user_canceled' => 'A user has canceled an item request on the website', 'a_user_requested' => 'A user has requested an item on the website', - 'acceptance_asset_accepted_to_user' => 'You have accepted an item assigned to you by :site_name', + 'acceptance_asset_accepted_to_user' => 'You have accepted an item assigned to you by :site_name|You have accepted :qty items assigned to you by :site_name', 'acceptance_asset_accepted' => 'A user has accepted an item', 'acceptance_asset_declined' => 'A user has declined an item', 'send_pdf_copy' => 'Send a copy of this acceptance to my email address', From 4b2b2cb68e89cebd3ca3ada50d5c1f86cb88f331 Mon Sep 17 00:00:00 2001 From: snipe Date: Thu, 18 Sep 2025 13:58:30 +0100 Subject: [PATCH 07/15] Fixed #17891 - missing maintenance file deletion route --- routes/web.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routes/web.php b/routes/web.php index a68923c4b2..30d11e9a96 100644 --- a/routes/web.php +++ b/routes/web.php @@ -725,7 +725,7 @@ Route::group(['middleware' => 'web'], function () { 'destroy' ] )->name('ui.files.destroy') - ->where(['object_type' => 'assets|hardware|models|users|locations|accessories|consumables|licenses|components']); + ->where(['object_type' => 'assets|maintenances|hardware|models|users|locations|accessories|consumables|licenses|components']); }); From 5216dd75bf9d2539eba0c1c6e073d10254172b42 Mon Sep 17 00:00:00 2001 From: snipe Date: Thu, 18 Sep 2025 14:49:15 +0100 Subject: [PATCH 08/15] Bumped version --- config/version.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/config/version.php b/config/version.php index 536e65ac78..f979c2b883 100644 --- a/config/version.php +++ b/config/version.php @@ -1,10 +1,10 @@ 'v8.3.1', - 'full_app_version' => 'v8.3.1 - build 19577-g7dd493da3', - 'build_version' => '19577', + 'app_version' => 'v8.3.2', + 'full_app_version' => 'v8.3.2 - build 19905-g028b4e7b7', + 'build_version' => '19905', 'prerelease_version' => '', - 'hash_version' => 'g7dd493da3', - 'full_hash' => 'v8.3.1-15-g7dd493da3', + 'hash_version' => 'g028b4e7b7', + 'full_hash' => 'v8.3.2-319-g028b4e7b7', 'branch' => 'develop', ); \ No newline at end of file From 5c08f3a27eb3e9c420a9eebec899181e884f383c Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Thu, 18 Sep 2025 17:14:33 -0700 Subject: [PATCH 09/15] Add failing test --- .../Checkouts/Ui/BulkAssetCheckoutTest.php | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tests/Feature/Checkouts/Ui/BulkAssetCheckoutTest.php b/tests/Feature/Checkouts/Ui/BulkAssetCheckoutTest.php index f05c4389e6..0791b3b422 100644 --- a/tests/Feature/Checkouts/Ui/BulkAssetCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/BulkAssetCheckoutTest.php @@ -89,4 +89,32 @@ class BulkAssetCheckoutTest extends TestCase $this->fail('Asset checkout email was sent when the entire checkout failed.'); } } + + public function test_prevents_checkouts_checked_out_items() + { + $asset = Asset::factory()->create(); + $checkedOutAsset = Asset::factory()->assignedToUser()->create(); + $existingUserId = $checkedOutAsset->assigned_to; + + $target = User::factory()->create(); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->post(route('hardware.bulkcheckout.store'), [ + 'selected_assets' => [ + $asset->id, + $checkedOutAsset->id, + ], + 'checkout_to_type' => 'user', + 'assigned_user' => $target->id, + ]); + + $this->assertEquals( + $existingUserId, + $checkedOutAsset->fresh()->assigned_to, + 'Asset was checked out when it should have been prevented.' + ); + + // ensure redirected back + $response->assertRedirectToRoute('hardware.bulkcheckout.show'); + } } From ac8a9e38f0ab7c99dc745b2a56f4bf774b282b2e Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Thu, 18 Sep 2025 17:18:27 -0700 Subject: [PATCH 10/15] Implement fix --- app/Http/Controllers/Assets/BulkAssetsController.php | 8 ++++++++ resources/lang/en-US/general.php | 1 + 2 files changed, 9 insertions(+) diff --git a/app/Http/Controllers/Assets/BulkAssetsController.php b/app/Http/Controllers/Assets/BulkAssetsController.php index 6c75ae06db..8ba3ccf99d 100644 --- a/app/Http/Controllers/Assets/BulkAssetsController.php +++ b/app/Http/Controllers/Assets/BulkAssetsController.php @@ -647,6 +647,14 @@ class BulkAssetsController extends Controller $assets = Asset::findOrFail($asset_ids); + if ($assets->pluck('assigned_to')->unique()->filter()->isNotEmpty()) { + // re-add the asset ids so the assets select is re-populated + $request->session()->flashInput(['selected_assets' => $asset_ids]); + + return redirect(route('hardware.bulkcheckout.show')) + ->with('error', trans('general.error_assets_already_checked_out')); + } + if (request('checkout_to_type') == 'asset') { foreach ($asset_ids as $asset_id) { if ($target->id == $asset_id) { diff --git a/resources/lang/en-US/general.php b/resources/lang/en-US/general.php index 61b7c9f809..42751c5cf9 100644 --- a/resources/lang/en-US/general.php +++ b/resources/lang/en-US/general.php @@ -520,6 +520,7 @@ return [ 'item_name_var' => ':item Name', 'error_user_company' => 'Checkout target company and asset company do not match', 'error_user_company_accept_view' => 'An Asset assigned to you belongs to a different company so you can\'t accept nor deny it, please check with your manager', + 'error_assets_already_checked_out' => 'One or more of the assets are already checked out', 'importer' => [ 'checked_out_to_fullname' => 'Checked Out to: Full Name', 'checked_out_to_first_name' => 'Checked Out to: First Name', From 7a3596c86d543cd80ea3c557aae658b7c02b2aca Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Thu, 18 Sep 2025 17:21:27 -0700 Subject: [PATCH 11/15] Test against other types --- .../Assets/BulkAssetsController.php | 1 + .../Checkouts/Ui/BulkAssetCheckoutTest.php | 43 ++++++++++++++++--- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/Assets/BulkAssetsController.php b/app/Http/Controllers/Assets/BulkAssetsController.php index 8ba3ccf99d..4b9ccb6753 100644 --- a/app/Http/Controllers/Assets/BulkAssetsController.php +++ b/app/Http/Controllers/Assets/BulkAssetsController.php @@ -647,6 +647,7 @@ class BulkAssetsController extends Controller $assets = Asset::findOrFail($asset_ids); + // Prevent checking out assets that are already checked out if ($assets->pluck('assigned_to')->unique()->filter()->isNotEmpty()) { // re-add the asset ids so the assets select is re-populated $request->session()->flashInput(['selected_assets' => $asset_ids]); diff --git a/tests/Feature/Checkouts/Ui/BulkAssetCheckoutTest.php b/tests/Feature/Checkouts/Ui/BulkAssetCheckoutTest.php index 0791b3b422..c9619dbd69 100644 --- a/tests/Feature/Checkouts/Ui/BulkAssetCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/BulkAssetCheckoutTest.php @@ -4,8 +4,10 @@ namespace Tests\Feature\Checkouts\Ui; use App\Mail\CheckoutAssetMail; use App\Models\Asset; +use App\Models\Location; use App\Models\User; use Illuminate\Support\Facades\Mail; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\ExpectationFailedException; use Tests\TestCase; @@ -90,22 +92,53 @@ class BulkAssetCheckoutTest extends TestCase } } - public function test_prevents_checkouts_checked_out_items() + public static function checkoutTargets() { + yield 'Checkout to user' => [ + function () { + return [ + 'type' => 'user', + 'target' => User::factory()->forCompany()->create(), + ]; + } + ]; + + yield 'Checkout to asset' => [ + function () { + return [ + 'type' => 'asset', + 'target' => Asset::factory()->forCompany()->create(), + ]; + } + ]; + + yield 'Checkout to location' => [ + function () { + return [ + 'type' => 'location', + 'target' => Location::factory()->forCompany()->create(), + ]; + } + ]; + } + + #[DataProvider('checkoutTargets')] + public function test_prevents_checkouts_checked_out_items($data) + { + ['type' => $type, 'target' => $target] = $data(); + $asset = Asset::factory()->create(); $checkedOutAsset = Asset::factory()->assignedToUser()->create(); $existingUserId = $checkedOutAsset->assigned_to; - $target = User::factory()->create(); - $response = $this->actingAs(User::factory()->superuser()->create()) ->post(route('hardware.bulkcheckout.store'), [ 'selected_assets' => [ $asset->id, $checkedOutAsset->id, ], - 'checkout_to_type' => 'user', - 'assigned_user' => $target->id, + 'checkout_to_type' => $type, + "assigned_$type" => $target->id, ]); $this->assertEquals( From 52239a88b5f90ea567011fac8a54acf3b3b3c065 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Thu, 18 Sep 2025 17:27:17 -0700 Subject: [PATCH 12/15] Improve test name --- tests/Feature/Checkouts/Ui/BulkAssetCheckoutTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Feature/Checkouts/Ui/BulkAssetCheckoutTest.php b/tests/Feature/Checkouts/Ui/BulkAssetCheckoutTest.php index c9619dbd69..2f325ba68a 100644 --- a/tests/Feature/Checkouts/Ui/BulkAssetCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/BulkAssetCheckoutTest.php @@ -123,7 +123,7 @@ class BulkAssetCheckoutTest extends TestCase } #[DataProvider('checkoutTargets')] - public function test_prevents_checkouts_checked_out_items($data) + public function test_prevents_checkouts_of_checked_out_items($data) { ['type' => $type, 'target' => $target] = $data(); From c3748da0b1545c20e734722ac52a6eddd277d561 Mon Sep 17 00:00:00 2001 From: snipe Date: Fri, 19 Sep 2025 12:16:56 +0100 Subject: [PATCH 13/15] Fixed #17804 - make columns searchable in column picker --- public/css/build/app.css | 3 +++ public/css/build/app.css.map | 2 +- public/css/build/overrides.css | 3 +++ public/css/build/overrides.css.map | 2 +- public/css/dist/all.css | 6 ++++++ public/mix-manifest.json | 6 +++--- resources/assets/less/overrides.less | 4 ++++ resources/views/hardware/index.blade.php | 3 +++ 8 files changed, 24 insertions(+), 5 deletions(-) diff --git a/public/css/build/app.css b/public/css/build/app.css index 542c2e035e..c98f550291 100644 --- a/public/css/build/app.css +++ b/public/css/build/app.css @@ -1501,6 +1501,9 @@ caption.tableCaption { white-space: preserve; display: inline-block; } +input[name="columnsSearch"] { + width: 120px; +} /*# sourceMappingURL=app.css.map*/ \ No newline at end of file diff --git a/public/css/build/app.css.map b/public/css/build/app.css.map index 3d856a04b4..c6083d3cb8 100644 --- a/public/css/build/app.css.map +++ b/public/css/build/app.css.map @@ -1 +1 @@ -{"version":3,"file":"css/build/app.css","mappings":"AACA;EACE;EAGA;AAFF;AAKA;EACE;IACE;EAHF;EAMA;IACE;EAJF;AACF;AAOA;EACE;AALF;AAOA;EACE;EACA;EACA;EACA;EACA;AALF;AASA;EACE;AAPF;AAUA;EACE;EACA;AARF;AAWA;EACE;AATF;AAYA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AAVF;AAaA;EACE;EACA;EACA;EACA;EACA;AAXF;AAcA;EACE;AAZF;AAeA;EACE;AAbF;AAgBA;EACE;EACA;AAdF;AAiBA;EACE;AAfF;AAkBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAhBF;AAmBA;EACE;AAjBF;AAoBA;EACE;AAlBF;AAqBA;EACE;AAnBF;AAsBA;EACE;AApBF;AAuBA;EACE;EACA;EACA;AArBF;AAwBA;EACE;EACA;EACA;AAtBF;AA6BA;EACE;AA3BF;AA8BA;EACE;EACA;AA5BF;AA+BA;EACE;AA7BF;AA+BA;EACE;EACA;AA7BF;AAgCA;;EAEE;EACA;AA9BF;AAiCA;EACE;EACA;AA/BF;AAiCA;EACE;AA/BF;AAkCA;EACE;EACA;EACA;AAhCF;AAmCA;EACE;AAjCF;AAoCA;EACE;AAlCF;AAqCA;EACE;AAnCF;AAsCA;EACE;AApCF;AAuCA;EACE;AArCF;AAwCA;;;;;EAKE;AAtCF;AAyCA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAvCF;AA0CA;EACE;EACA;EACA;EACA;EACA;EACA;AAxCF;AA2CA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAzCF;AA4CA;EACE;AA1CF;AA6CA;EACE;EACA;EACA;EACA;AA3CF;AA8CA;EACE;EACA;AA5CF;AA+CA;EACE;EACA;EACA;EACA;EACA;AA7CF;AAgDA;EACE;EACA;AA9CF;AAiDA;EACE;EACA;EACA;EACA;AA/CF;AAkDA;EACE;EACA;AAhDF;AACA,cAAc;AAmDd;EACE;EACA;EACA;AAjDF;AAmDA;EACE;EACA;AAjDF;AAsDA;EACE;EACA;EACA;AApDF;AAuDA;EACE;EACA;AArDF;AAwDA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAtDF;AAyDA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAvDF;AA0DA;EACE;EACA;EACA;EACA;EACA;AAxDF;AA2DA;EACE;EACA;EACA;AAzDF;AA4DA;EACE;AA1DF;AA6DA;EACE;AA3DF;AA8DA;EACE;AA5DF;AA+DA;EACE;AA7DF;AAgEA;EACE;AA9DF;AAiEA;EACE;AA/DF;AAkEA;EACE;EACA;AAhEF;AAmEA;EACE;AAjEF;AAoEA;EACE;AAlEF;AACA,kBAAkB;AAqElB;EACE;EAEA;EACA;EACA;EApEA,gCAAgC;AAClC;AAuEA;EACE;AArEF;AAwEA;EACE;EACA;EACA;AAtEF;AAwEA;EACE;EACA;EACA;AAtEF;AAyEA;;;EACE;AArEF;AAwEA;EACE;EACA;AAtEF;AAyEA;EACE;IACE;EAvEF;EA0EA;IACE;IACA;IACA;EAxEF;AACF;AA2EA;;EAEE;EACA;EACA;AAzEF;AA4EA;EACE;AA1EF;AA6EA;;EAEE;AA3EF;AA8EA;EACE;AA5EF;AA+EA;EACE;AA7EF;AAgFA;EACE;EACA;EACA;AA9EF;AAiFA;EACE;EACA;AA/EF;AAkFA;EACE;EACA;EACA;AAhFF;AAmFA;EACE;AAjFF;ACvXA;EAkBE;ADwWF;ACtWA;EACE;EACA;EACA;EACA;EACA;ADwWF;ACvWE;;;EACE;AD2WJ;ACxWA;EACE;AD0WF;ACvWA;EACE;EACA;ADyWF;ACtWA;EACE;ADwWF;ACpWA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;ADsWF;ACnWA;EACE;EACA;EACA;EACA;EACA;ADqWF;AClWA;EACE;ADoWF;ACjWA;EACE;ADmWF;AChWA;EACE;EACA;ADkWF;AC9VA;EACE;ADgWF;AC7VA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AD+VF;AC7VA;EACE;AD+VF;AC7VA;EACE;AD+VF;AC3VA;EACE;AD6VF;AC3VA;EACE;AD6VF;ACzVA;EACE;EACA;EACA;AD2VF;ACxVA;EACE;EACA;EACA;AD0VF;ACnUA;EACE;ADqUF;AClUA;EACE;EACA;EACA;ADoUF;ACjUA;EACE;EACA;ADmUF;AChUA;EACE;ADkUF;AC/TA;EACE;EACA;ADiUF;AC9TA;;EACE;EACA;ADiUF;AC9TA;EACE;EACA;ADgUF;AC9TA;EACE;ADgUF;AC7TA;EACE;EACA;EACA;AD+TF;AC5TA;EACE;AD8TF;AC3TA;EACE;AD6TF;AC1TA;EACE;AD4TF;AC1TA;EACE;AD4TF;ACzTA;EACE;AD2TF;ACxTA;;;;EACE;AD6TF;AC1TA;;;;;EACE;ADgUF;AC7TA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AD+TF;AC7TA;EACE;EACA;EACA;EACA;EACA;EACA;AD+TF;AC7TA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AD+TF;AC7TA;EACE;AD+TF;AC7TA;EACE;EACA;EACA;EACA;AD+TF;AC7TA;EACE;EACA;AD+TF;AC7TA;EACE;EACA;EACA;EACA;EACA;AD+TF;AC7TA;EACE;EACA;AD+TF;AC7TA;EACE;EACA;EACA;EACA;AD+TF;AC5TA;EACE;EACA;AD8TF;ACzTA;EAAY;AD4TZ;AACA,cAAc;AC1Td;EAAY;EAAkC;AD8T9C;AC7TA;EAA8B;EAAY;ADiU1C;AC/TA;EAAiD;EAAgB;EAAiB;ADoUlF;ACnUA;EAA8C;EAAa;ADuU3D;ACtUA;EAA+C;EAAoB;EAAa;EAAc;EAAgB;EAAqB;EAAW;EAAW;EAAmB;EAAoB;ADkVhM;ACjVA;EAAqD;EAAc;EAAa;EAAc;EAAqB;EAAqB;EAAoB;EAAU;AD2VtK;AC1VA;EAA0C;EAAoB;EAAoB;EAAa;EAAkB;ADiWjH;AChWA;EAA0D;EAAW;EAAkB;ADqWvF;ACpWA;EAAmE;ADuWnE;ACtWA;EAAiE;ADyWjE;ACxWA;EAA6E;AD2W7E;AC1WA;EAA4E;AD6W5E;AC5WA;EAAwD;AD+WxD;AC9WA;EAA8D;ADiX9D;AChXA;EAAuD;EAAW;ADoXlE;ACnXA;EAAsD;ADsXtD;ACrXA;EAAuD;ADwXvD;AACA,kBAAkB;ACtXlB;EACE;EACA;EACA;EACA;EACA;EDwXA,gCAAgC;AAClC;ACrXA;EAkBE;ADsWF;ACnWA;EACE;ADqWF;ACjWA;;EACE;ADoWF;AClWA;;EACE;ADqWF;AClWA;EACE;EAIA;ADiWF;AC9VA;EACE;EACA;ADgWF;AC7VA;EACE;AD+VF;AC5VA;EACE;AD8VF;AC3VA;EAEE;IACE;IACA;ED4VF;ECzVA;IACE;IACA;IACA;ED2VF;ECxVA;IACE;ED0VF;ECvVA;;IACE;ED0VF;ECvVA;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;EDyVF;EACA,+CAA+C;ECtV/C;IACE;EDwVF;ECrVA;IACE;EDuVF;ECpVA;IACE;EDsVF;ECnVA;IACE;EDqVF;EACA,qCAAqC;EClVrC;;IACE;EDqVF;EACA,QAAQ;EClVR;;IACE;IACA;IACA;EDqVF;EClVA;IACE;EDoVF;ECjVA;IACE;EDmVF;EChVA;IACE;IACA;IACA;EDkVF;EC/UA;IACE;IACA;EDiVF;EC9UA;;IACE;EDiVF;EC/UA;;;;;;;;;;;;IACE;ED4VF;ECzVA;IACE;ED2VF;ECzVA;IACE;ED2VF;ECzVA;IACE;ED2VF;ECzVA;IACE;ED2VF;ECzVA;IACE;ED2VF;ECzVA;IACE;ED2VF;ECzVA;IACE;ED2VF;ECzVA;IACE;ED2VF;ECzVA;IACE;ED2VF;ECzVA;IACE;ED2VF;ECzVA;IACE;ED2VF;ECzVA;IACE;ED2VF;AACF;ACtVA;EACE;ADwVF;ACrVA;EACI;EACA;ADuVJ;ACpVA;EACE;ADsVF;ACnVA;EACE;EACA;EACA;ADqVF;AChVA;EACE;EACA;OAAA;EACA;EACA;ADkVF;AC/UA;;EACE;EACA;EACA;ADkVF;AC/UA;;;EACE;ADmVF;AChVA;;EACE;ADmVF;AChVA;EACE;ADkVF;AC/UA;EACE;ADiVF;AC9UA;EACE;EACA;EACA;ADgVF;AC7UA;EACE;EACA;AD+UF;AC5UA;EACE;EACA;EACA;AD8UF;AC1UA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AD4UF;AC1UA;;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AD6UF;AC1UA;EACE;AD4UF;ACzUA;EACE;AD2UF;ACxUA;EACE;AD0UF;ACvUA;EACE;ADyUF;ACtUA;EACE;ADwUF;ACpUA;EACE;EACA;EACA;EACA;EACA;EAGA;ADoUF;ACjUA;EACE;EACA;EACA;EACA;ADmUF;AChUA;EACE;EACA;EACA;EACA;ADkUF;AC9TA;EACE;EACA;EACA;EACA;EACA;EACA;ADgUF;AACA;;;;EAIE;AC7TF;EACE;EACA;EACA;EACA;AD+TF;AC5TA;EACE;EACA;EACA;EACA;EACA;AD8TF;AC3TA;EACE;EACA;EACA;AD6TF;AC1TA;EACE;EACA;EACA;AD4TF;ACxTA;EACE;AD0TF;AACA;;EAEE;ACrTF;EACE;IACE;IACA;EDuTF;ECpTA;IACE;EDsTF;ECnTA;IACE;EDqTF;EClTA;IACE;EDoTF;AACF;ACjTA;EACE;EACA;EACA;ADmTF;AChTA;EACE;EACA;ADkTF;AACA;;;;;;;;;;;EAWE;AC7SF;;;;;;;;;;;;;;;EAgBE;EACA;EACA;EACA;EACA;EACA;AD8SF;AC1SA;;;;;;;;;;;;;;;;EAiBE;EACA;EACA;EACA;AD2SF;AACA;;;EAGE;ACxSF;EAEE;EAAkB;EAAoC;AD2SxD;ACxSA;EAEE;EAAkB;EAAoC;AD2SxD;ACxSA;EAEE;EAAkB;EAAoC;AD2SxD;ACxSA;EAEE;EAAkB;EAAoC;AD2SxD;ACxSA;EAEE;EAAkB;EAAoC;AD2SxD;ACxSA;EACE;EAAkB;EAAoC;AD4SxD;ACzSA;EACE;EAAkB;EAAoC;EAAiB;AD8SzE;AC3SA;EAEE;EAAkB;EAAoC;AD8SxD;AC3SA;EAEE;EAAkB;EAClB;EACA;AD6SF;AC1SA;EACE;EACA;EACA;EACA;AD4SF;AC1SA;EACE;EACA;EACA;EACA;AD4SF;AC1SA;EACE;EACA;EACA;EACA;AD4SF;AC1SA;EACE;EACA;EACA;EACA;AD4SF;ACzSA;EACE;EACA;EACA;EACA;AD2SF;ACxSA;EACE;EACA;EACA;EACA;AD0SF;ACvSA;EACE;EACA;EACA;EACA;ADySF;ACrSA;EACE;EACA;EACA;EACA;ADuSF;ACnSA;;;EACE;ADuSF;ACpSA;;EACE;EACA;EACA;EACA;ADuSF;ACpSA;;EACE;ADuSF;ACpSA;EACE;ADsSF;ACnSA;EACE;IACE;EDqSF;ECnSA;IACE;EDqSF;AACF;ACnSA;EACE;IACE;EDqSF;ECnSA;IACE;EDqSF;ECnSA;IACE;EDqSF;AACF;AClSA;EACE;IACE;EDoSF;AACF;AClSA;EACE;IACE;EDoSF;EClSA;IACE;IACA;EDoSF;EClSA;IACE;IACA;EDoSF;EClSA;IACE;IACA;EDoSF;AACF;AClSA;EACE;IACE;EDoSF;AACF;ACjSA;EACE;IACE;EDmSF;AACF;ACjSA;EACE;IACE;IACA;IACA;IACA;IACA;EDmSF;AACF;AACA,oDAAoD;AC/RpD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ADiSF;AC9RA;EACE;EACA;ADgSF;AACA,8CAA8C;AAC9C,8CAA8C;AAC9C,8CAA8C;AC5R9C;ED8RE,kCAAkC;EC5RlC;EACA;OAAA;ED8RA,+CAA+C;EC5R/C;ED8RA,+BAA+B;EC5R/B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ED8RA,6BAA6B;AAC/B;AACA,yFAAyF;AC1RzF;ED4RE,2EAA2E;ECpR3E;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EDqRA,+BAA+B;ECnR/B;ADqRF;AACA,wEAAwE;AClRxE;EACE;ADoRF;AACA,wEAAwE;ACjRxE;;EACE;EACA;EACA;EACA;EACA;ADoRF;AACA,6EAA6E;ACjR7E;;EACE;EACA;EACA;EACA;ADoRF;AACA,+EAA+E;ACjR/E;;EACE;EACA;EACA;EACA;ADoRF;AACA,qCAAqC;AC/QrC;EACE;KAAA;UAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ADiRF;AC9QA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;ADgRF;AC7QA;EACE;AD+QF;AACA;;;;EAIE;AC3QF;EACE;AD6QF;AC1QA;EACE;EACA;EACA;EACA;AD4QF;ACzQA;EACE;AD2QF;ACxQA;EACE;AD0QF;ACvQA;EACE;ADyQF;ACtQA;EACE;ADwQF;AACA,8CAA8C;AAC9C,8CAA8C;AAC9C,8CAA8C;AAC9C;;;EAGE;ACnQF;EACE;EACA;EACA;EACA;EACA;ADqQF;AClQA;;EAEE;EACA;EACA;ADoQF;ACjQA;EACE;ADmQF;AChQA;EACE;ADkQF;AChQA;EACE;ADkQF;AC/PA;EACE;EACA;EACA;ADiQF;AACA,kEAAkE;AC9PlE;EACE;ADgQF;AC7PA;EACE;AD+PF;AC3PA;EACE;EACA;AD6PF;AC1PA;EACE;EACA;AD4PF;ACzPA;EACE;EACA;EACA;EACA;EACA;EACA;AD2PF;ACxPA;;EACE;AD2PF;ACxPA;EACE;EAQA;EACA;EACA;ADmPF;AChPA;EACE;EACA;ADkPF;AC/OA;EACE;ADiPF;AC9OA;EACE;EACA;ADgPF;AC5OA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AD8OF;AC5OA;;;;;EAKE;AD8OF;AC3OA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AD6OF","sources":["webpack:///./resources/assets/less/app.less","webpack:///./resources/assets/less/overrides.less"],"sourcesContent":["\nbody {\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\",\n \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;\n font-size: 13px;\n}\n// Moved from default.blade.php\n@media (max-width: 400px) {\n .navbar-left {\n margin: 2px;\n }\n\n .nav::after {\n clear: none;\n }\n}\n\n.skin-blue .main-header .logo {\n background-color: inherit !important;\n}\n.main-header .logo {\n width: 100% !important;\n white-space: nowrap;\n text-align: left;\n display: block;\n clear: both;\n //text-overflow: hidden;\n}\n\n.huge {\n font-size: 40px;\n}\n\n.btn-file {\n position: relative;\n overflow: hidden;\n}\n\n.dropdown-menu > li > a {\n color: #354044;\n}\n\n#sort tr.cansort {\n border-radius: 2px;\n padding: 10px;\n background: #f4f4f4;\n margin-bottom: 3px;\n border-left: 2px solid #e6e7e8;\n color: #444;\n cursor: move;\n}\n\n.user-image-inline {\n float: left;\n width: 25px;\n height: 25px;\n border-radius: 50%;\n margin-right: 10px;\n}\n\n.input-group .input-group-addon {\n background-color: #f4f4f4;\n}\n\na.accordion-header {\n color: #333;\n}\n\n.dynamic-form-row {\n padding: 10px;\n margin: 20px;\n}\n\n.handle {\n padding-left: 10px;\n}\n\n.btn-file input[type=\"file\"] {\n position: absolute;\n top: 0;\n right: 0;\n min-width: 100%;\n min-height: 100%;\n font-size: 100px;\n text-align: right;\n filter: alpha(opacity=0);\n opacity: 0;\n outline: none;\n background: white;\n cursor: inherit;\n display: block;\n}\n\n.main-footer {\n font-size: 13px;\n}\n\n.main-header {\n max-height: 150px;\n}\n\n.navbar-nav > .user-menu > .dropdown-menu {\n width: inherit;\n}\n\n.main-header .logo {\n padding: 0px 5px 0px 15px;\n}\n\n.sidebar-toggle {\n margin-left: -48px;\n z-index: 100;\n background-color: inherit;\n}\n\n.sidebar-toggle-mobile {\n z-index: 100;\n width: 50px;\n padding-top: 10px;\n}\n\n// .skin-blue .main-header .navbar .dropdown-menu li a {\n// //color: inherit;\n// }\n\n.main-header .sidebar-toggle:before {\n content: \"\\f0c9\";\n}\n\n.direct-chat-contacts {\n padding: 10px;\n height: 150px;\n}\n\n.select2-container {\n width: 100%;\n}\n.error input {\n color: #a94442;\n border: 2px solid #a94442 !important;\n}\n\n.error label,\n.alert-msg {\n color: #a94442;\n display: block;\n}\n\n.input-group[class*=\"col-\"] {\n padding-right: 15px;\n padding-left: 15px;\n}\n.control-label.multiline {\n padding-top: 10px;\n}\n\n.btn-outline {\n color: inherit;\n background-color: transparent;\n transition: all 0.5s;\n}\n\n.btn-primary.btn-outline {\n color: #428bca;\n}\n\n.btn-success.btn-outline {\n color: #5cb85c;\n}\n\n.btn-info.btn-outline {\n color: #5bc0de;\n}\n\n.btn-warning.btn-outline {\n color: #f0ad4e;\n}\n\n.btn-danger.btn-outline {\n color: #d9534f;\n}\n\n.btn-primary.btn-outline:hover,\n.btn-success.btn-outline:hover,\n.btn-info.btn-outline:hover,\n.btn-warning.btn-outline:hover,\n.btn-danger.btn-outline:hover {\n color: #fff;\n}\n\n.slideout-menu {\n position: fixed;\n top: 0;\n right: -250px;\n width: 250px;\n height: 100%;\n background: #333;\n z-index: 100;\n margin-top: 100px;\n color: white;\n padding: 10px;\n}\n\n.slideout-menu h3 {\n position: relative;\n padding: 5px 5px;\n color: #fff;\n font-size: 1.2em;\n font-weight: 400;\n border-bottom: 4px solid #222;\n}\n\n.slideout-menu .slideout-menu-toggle {\n position: absolute;\n top: 12px;\n right: 10px;\n display: inline-block;\n padding: 6px 9px 5px;\n font-family: Arial, sans-serif;\n font-weight: bold;\n line-height: 1;\n background: #222;\n color: #999;\n text-decoration: none;\n vertical-align: top;\n}\n\n.slideout-menu .slideout-menu-toggle:hover {\n color: #fff;\n}\n\n.slideout-menu ul {\n list-style: none;\n font-weight: 300;\n border-top: 1px solid #151515;\n border-bottom: 1px solid #454545;\n}\n\n.slideout-menu ul li {\n border-top: 1px solid #454545;\n border-bottom: 1px solid #151515;\n}\n\n.slideout-menu ul li a {\n position: relative;\n display: block;\n padding: 10px;\n color: #999;\n text-decoration: none;\n}\n\n.slideout-menu ul li a:hover {\n background: #000;\n color: #fff;\n}\n\n.slideout-menu ul li a i {\n position: absolute;\n top: 15px;\n right: 10px;\n opacity: 0.5;\n}\n\n.btn-box-tool-lg {\n font-size: 16px;\n color: orange;\n}\n\n/*Form Wizard*/\n.bs-wizard {\n margin-top: 20px;\n border-bottom: solid 1px #e0e0e0;\n padding: 0 0 10px 0;\n}\n.bs-wizard > .bs-wizard-step {\n padding: 0;\n position: relative;\n}\n\n// .bs-wizard > .bs-wizard-step + .bs-wizard-step {}\n\n.bs-wizard > .bs-wizard-step .bs-wizard-stepnum {\n color: #595959;\n font-size: 16px;\n margin-bottom: 5px;\n}\n\n.bs-wizard > .bs-wizard-step .bs-wizard-info {\n color: #999;\n font-size: 14px;\n}\n\n.bs-wizard > .bs-wizard-step > .bs-wizard-dot {\n position: absolute;\n width: 30px;\n height: 30px;\n display: block;\n background: #fbe8aa;\n top: 45px;\n left: 50%;\n margin-top: -15px;\n margin-left: -15px;\n border-radius: 50%;\n}\n\n.bs-wizard > .bs-wizard-step > .bs-wizard-dot:after {\n content: \" \";\n width: 14px;\n height: 14px;\n background: #fbbd19;\n border-radius: 50px;\n position: absolute;\n top: 8px;\n left: 8px;\n}\n\n.bs-wizard > .bs-wizard-step > .progress {\n position: relative;\n border-radius: 0px;\n height: 8px;\n box-shadow: none;\n margin: 20px 0;\n}\n\n.bs-wizard > .bs-wizard-step > .progress > .progress-bar {\n width: 0px;\n box-shadow: none;\n background: #fbe8aa;\n}\n\n.bs-wizard > .bs-wizard-step.complete > .progress > .progress-bar {\n width: 100%;\n}\n\n.bs-wizard > .bs-wizard-step.active > .progress > .progress-bar {\n width: 50%;\n}\n\n.bs-wizard > .bs-wizard-step:first-child.active > .progress > .progress-bar {\n width: 0%;\n}\n\n.bs-wizard > .bs-wizard-step:last-child.active > .progress > .progress-bar {\n width: 100%;\n}\n\n.bs-wizard > .bs-wizard-step.disabled > .bs-wizard-dot {\n background-color: #f5f5f5;\n}\n\n.bs-wizard > .bs-wizard-step.disabled > .bs-wizard-dot:after {\n opacity: 0;\n}\n\n.bs-wizard > .bs-wizard-step:first-child > .progress {\n left: 50%;\n width: 50%;\n}\n\n.bs-wizard > .bs-wizard-step:last-child > .progress {\n width: 50%;\n}\n\n.bs-wizard > .bs-wizard-step.disabled a.bs-wizard-dot {\n pointer-events: none;\n}\n/*END Form Wizard*/\n\n.left-navblock {\n display: inline-block;\n // float: left;\n text-align: left;\n color: white;\n padding: 0px;\n /* adjust based on your layout */\n}\n\na.logo.no-hover a:hover {\n background-color: transparent;\n}\n\n.index-block {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.index-block:hover{\n overflow: visible;\n white-space: normal;\n height:auto;\n}\n\ninput:required, select:required, textarea:required {\n border-right: 6px solid orange;\n}\n\n.sidebar-menu {\n font-size: 14px;\n white-space: normal;\n}\n\n@media print {\n a[href]:after {\n content: none;\n }\n\n .tab-content > .tab-pane {\n display: block !important;\n opacity: 1 !important;\n visibility: visible !important;\n }\n}\n\nimg.navbar-brand-img,\n.navbar-brand > img {\n float: left;\n padding: 5px 5px 5px 0;\n max-height: 50px;\n}\n\n.input-daterange {\n border-radius: 0px;\n}\n\n.btn.bg-maroon,\n.btn.bg-purple {\n min-width: 90px;\n}\n\n[hidden] {\n display: none !important;\n}\n\n#toolbar {\n margin-top: 10px;\n}\n\n#uploadPreview {\n border-color: grey;\n border-width: 1px;\n border-style: solid;\n}\n\n.icon-med {\n font-size: 20px;\n color: #889195;\n}\n\n#login-logo {\n padding-top: 20px;\n padding-bottom: 10px;\n max-width: 200px;\n}\n\n.left-navblock {\n max-width: 500px;\n}\n\n@import \"overrides.less\";",".skin-red\n.skin-purple\n.skin-blue\n.skin-black\n.skin-orange\n.skin-yellow\n.skin-green\n.skin-red-dark\n.skin-purple-dark\n.skin-blue-dark\n.skin-black-dark\n.skin-orange-dark\n.skin-yellow-dark\n.skin-green-dark\n.skin-contrast\n.main-header\n\n.logo {\n background-color: inherit;\n}\n.main-header .logo {\n width: 100% !important;\n white-space: nowrap;\n text-align: left;\n display: block;\n clear: both;\n &a:link, a:hover, a:visited {\n color: #fff\n }\n}\n.huge {\n font-size: 40px;\n}\n\n.btn-file {\n position: relative;\n overflow: hidden;\n}\n\n.dropdown-menu>li>a {\n color: #354044;\n}\n\n\n#sort tr.cansort {\n border-radius: 2px;\n padding: 10px;\n background: #f4f4f4;\n margin-bottom: 3px;\n border-inline: 2px solid #e6e7e8;\n color: #444;\n cursor: move;\n}\n\n.user-image-inline {\n float: left;\n width: 25px;\n height: 25px;\n border-radius: 50%;\n margin-right: 10px;\n}\n\n.input-group .input-group-addon {\n background-color: #f4f4f4;\n}\n\na.accordion-header {\n color: #333;\n}\n\n.dynamic-form-row {\n padding: 10px;\n margin: 20px;\n}\n\n\n.handle {\n padding-left: 10px;\n}\n\n.btn-file input[type=file] {\n position: absolute;\n top: 0;\n right: 0;\n min-width: 100%;\n min-height: 100%;\n font-size: 100px;\n text-align: right;\n filter: alpha(opacity=0);\n opacity: 0;\n outline: none;\n background: white;\n cursor: inherit;\n display: block;\n}\n.main-footer {\n font-size: 13px;\n}\n.main-header {\n max-height: 150px;\n}\n\n\n.navbar-nav>.user-menu>.dropdown-menu {\n width: inherit;\n}\n.main-header .logo {\n padding: 0px 5px 0px 15px;\n}\n\n\n.sidebar-toggle {\n margin-left: -48px;\n z-index: 100;\n background-color: inherit;\n}\n\n.sidebar-toggle-mobile {\n z-index: 100;\n width: 50px;\n padding-top: 10px;\n}\n\n.skin-red\n.skin-purple\n.skin-blue\n.skin-black\n.skin-orange\n.skin-yellow\n.skin-green\n.skin-red-dark\n.skin-purple-dark\n.skin-blue-dark\n.skin-black-dark\n.skin-orange-dark\n.skin-yellow-dark\n.skin-green-dark\n.skin-contrast\n.main-header\n.navbar\n.dropdown-menu li a {\n //color: inherit;\n}\n.pull-text-right{\n text-align: right !important;\n}\n\n.main-header .sidebar-toggle:before {\n content: \"\\f0c9\";\n font-weight: 900;\n font-family: 'Font Awesome\\ 5 Free';\n}\n\n.direct-chat-contacts {\n padding: 10px;\n height: 150px;\n}\n\n.select2-container {\n width: 100%;\n}\n\n.error input {\n color: #a94442;\n border: 2px solid #a94442 !important;\n}\n\n.error label, .alert-msg {\n color: #a94442;\n display: block;\n}\n\n.input-group[class*=\"col-\"] {\n padding-right: 15px;\n padding-left: 15px;\n}\n.control-label.multiline {\n padding-top: 10px;\n}\n\n.btn-outline {\n color: inherit;\n background-color: transparent;\n transition: all .5s;\n}\n\n.btn-primary.btn-outline {\n color: #428bca;\n}\n\n.btn-success.btn-outline {\n color: #5cb85c;\n}\n\n.btn-info.btn-outline {\n color: #5bc0de;\n}\n.btn-warning{\n background-color:#f39c12 !important;\n}\n\n.btn-warning.btn-outline {\n color: #f0ad4e;\n}\n\n.btn-danger.btn-outline, a.link-danger:link, a.link-danger:visited, a.link-danger:hover {\n color: #dd4b39;\n}\n\n.btn-primary.btn-outline:hover, .btn-success.btn-outline:hover, .btn-info.btn-outline:hover, .btn-warning.btn-outline:hover, .btn-danger.btn-outline:hover {\n color: #fff;\n}\n\n.slideout-menu {\n position: fixed;\n top: 0;\n right: -250px;\n width: 250px;\n height: 100%;\n background: #333;\n z-index: 100;\n margin-top: 100px;\n color: white;\n padding: 10px;\n}\n.slideout-menu h3 {\n position: relative;\n padding: 5px 5px;\n color: #fff;\n font-size: 1.2em;\n font-weight: 400;\n border-bottom: 4px solid #222;\n}\n.slideout-menu .slideout-menu-toggle {\n position: absolute;\n top: 12px;\n right: 10px;\n display: inline-block;\n padding: 6px 9px 5px;\n font-family: Arial, sans-serif;\n font-weight: bold;\n line-height: 1;\n background: #222;\n color: #999;\n text-decoration: none;\n vertical-align: top;\n}\n.slideout-menu .slideout-menu-toggle:hover {\n color: #fff;\n}\n.slideout-menu ul {\n list-style: none;\n font-weight: 300;\n border-top: 1px solid #151515;\n border-bottom: 1px solid #454545;\n}\n.slideout-menu ul li {\n border-top: 1px solid #454545;\n border-bottom: 1px solid #151515;\n}\n.slideout-menu ul li a {\n position: relative;\n display: block;\n padding: 10px;\n color: #999;\n text-decoration: none;\n}\n.slideout-menu ul li a:hover {\n background: #000;\n color: #fff;\n}\n.slideout-menu ul li a i {\n position: absolute;\n top: 15px;\n right: 10px;\n opacity: .5;\n}\n\n.btn-box-tool-lg {\n font-size: 16px;\n color: orange;\n}\n\n\n\n.bs-wizard {margin-top: 20px;}\n\n/*Form Wizard*/\n.bs-wizard {border-bottom: solid 1px #e0e0e0; padding: 0 0 10px 0;}\n.bs-wizard > .bs-wizard-step {padding: 0; position: relative;}\n.bs-wizard > .bs-wizard-step + .bs-wizard-step {}\n.bs-wizard > .bs-wizard-step .bs-wizard-stepnum {color: #595959; font-size: 16px; margin-bottom: 5px;}\n.bs-wizard > .bs-wizard-step .bs-wizard-info {color: #999; font-size: 14px;}\n.bs-wizard > .bs-wizard-step > .bs-wizard-dot {position: absolute; width: 30px; height: 30px; display: block; background: #fbe8aa; top: 45px; left: 50%; margin-top: -15px; margin-left: -15px; border-radius: 50%;}\n.bs-wizard > .bs-wizard-step > .bs-wizard-dot:after {content: ' '; width: 14px; height: 14px; background: #fbbd19; border-radius: 50px; position: absolute; top: 8px; left: 8px; }\n.bs-wizard > .bs-wizard-step > .progress {position: relative; border-radius: 0px; height: 8px; box-shadow: none; margin: 20px 0;}\n.bs-wizard > .bs-wizard-step > .progress > .progress-bar {width:0px; box-shadow: none; background: #fbe8aa;}\n.bs-wizard > .bs-wizard-step.complete > .progress > .progress-bar {width:100%;}\n.bs-wizard > .bs-wizard-step.active > .progress > .progress-bar {width:50%;}\n.bs-wizard > .bs-wizard-step:first-child.active > .progress > .progress-bar {width:0%;}\n.bs-wizard > .bs-wizard-step:last-child.active > .progress > .progress-bar {width: 100%;}\n.bs-wizard > .bs-wizard-step.disabled > .bs-wizard-dot {background-color: #f5f5f5;}\n.bs-wizard > .bs-wizard-step.disabled > .bs-wizard-dot:after {opacity: 0;}\n.bs-wizard > .bs-wizard-step:first-child > .progress {left: 50%; width: 50%;}\n.bs-wizard > .bs-wizard-step:last-child > .progress {width: 50%;}\n.bs-wizard > .bs-wizard-step.disabled a.bs-wizard-dot{ pointer-events: none; }\n/*END Form Wizard*/\n\n.left-navblock {\n display: inline-block;\n float: left;\n text-align: left;\n color: white;\n padding: 0px;\n /* adjust based on your layout */\n\n}\n.skin-red\n.skin-purple\n.skin-blue\n.skin-black\n.skin-orange\n.skin-yellow\n.skin-green\n.skin-red-dark\n.skin-purple-dark\n.skin-blue-dark\n.skin-black-dark\n.skin-orange-dark\n.skin-yellow-dark\n.skin-green-dark\n.skin-contrast\n.main-header\n.navbar\n.dropdown-menu li a {\n color: #333;\n}\n\na.logo.no-hover a:hover {\n background-color: transparent;\n}\n\n\ninput:required, select:required {\n border-right: 5px solid orange;\n}\nselect:required + .select2-container .select2-selection, select:required + .select2-container .select2-selection .select2-selection--multiple {\n border-right: 5px solid orange !important;\n}\n\nbody {\n font-family: -apple-system, BlinkMacSystemFont,\n \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\",\n \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;\n font-size: 13px;\n}\n\n.sidebar-menu {\n font-size: 14px;\n white-space: normal;\n}\n\n.modal-warning .modal-help {\n color: #fff8af;\n}\n\n.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading {\n z-index: 0 !important;\n}\n\n@media print {\n\n @page {\n size: A4;\n margin: 0mm;\n }\n\n .tab-content > .tab-pane {\n display: block !important;\n opacity: 1 !important;\n visibility: visible !important;\n }\n\n .img-responsive {\n width: 200px;\n }\n\n html, body {\n width: 1024px;\n }\n\n body {\n margin: 0 auto;\n line-height: 1em;\n word-spacing:1px;\n letter-spacing:0.2px;\n font: 15px \"Times New Roman\", Times, serif;\n background:white;\n color:black;\n width: 100%;\n float: none;\n }\n\n /* avoid page-breaks inside a listingContainer*/\n .listingContainer {\n page-break-inside: avoid;\n }\n\n h1 {\n font: 28px \"Times New Roman\", Times, serif;\n }\n\n h2 {\n font: 24px \"Times New Roman\", Times, serif;\n }\n\n h3 {\n font: 20px \"Times New Roman\", Times, serif;\n }\n\n /* Improve colour contrast of links */\n a:link, a:visited {\n color: #781351\n }\n\n /* URL */\n a:link, a:visited {\n background: transparent;\n color:#333;\n text-decoration:none;\n }\n\n a[href]:after {\n content: \"\" !important;\n }\n\n a[href^=\"http://\"] {\n color:#000;\n }\n\n #header {\n height:75px;\n font-size: 24pt;\n color:black\n }\n\n div.row-new-striped {\n margin: 0px;\n padding: 0px;\n }\n\n .pagination-detail, .fixed-table-toolbar {\n visibility: hidden;\n }\n .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 .col-sm-pull-3 .col-sm-push-9 {\n float: left;\n }\n\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666666666666%;\n }\n .col-sm-10 {\n width: 83.33333333333334%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666666666666%;\n }\n .col-sm-7 {\n width: 58.333333333333336%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666666666667%;\n }\n .col-sm-4 {\n width: 33.33333333333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.666666666666664%;\n }\n .col-sm-1 {\n width: 8.333333333333332%;\n }\n\n}\n\n\n.select2-selection__choice__remove {\n color: white !important;\n}\n\n.select2-selection--multiple {\n border-color: #d2d6de !important;\n overflow-y: auto;\n}\n\n.select2-selection__choice {\n border-radius: 0px !important;\n}\n\n.select2-search select2-search--inline {\n height: 35px !important;\n float: left;\n margin: 0;\n}\n\n\n\n.select2-results__option {\n padding: 5px;\n user-select: none;\n -webkit-user-select: none;\n margin: 0px;\n}\n\nimg.navbar-brand-img, .navbar-brand>img {\n float: left;\n padding: 5px 5px 5px 0;\n max-height: 50px;\n}\n\n.input-daterange, .input-daterange input:first-child, .input-daterange input:last-child {\n border-radius: 0px !important;\n}\n\n.btn.bg-maroon, .btn.bg-purple{\n min-width:90px;\n}\n\n[hidden] {\n display: none !important;\n}\n\n#toolbar {\n margin-top: 10px;\n}\n\n#uploadPreview {\n border-color: grey;\n border-width: 1px;\n border-style: solid\n}\n\n.icon-med {\n font-size: 14px;\n color: #889195;\n}\n\n#login-logo {\n padding-top: 20px;\n padding-bottom: 10px;\n max-width: 200px\n}\n\n// accessibility skip link\na.skip-main {\n left:-999px;\n position:absolute;\n top:auto;\n width:1px;\n height:1px;\n overflow:hidden;\n z-index:-999;\n}\na.skip-main:focus, a.skip-main:active {\n color: #fff;\n background-color:#000;\n left: auto;\n top: auto;\n width: 30%;\n height: auto;\n overflow:auto;\n margin: 10px 35%;\n padding:5px;\n border-radius: 15px;\n border:4px solid yellow;\n text-align:center;\n font-size:1.2em;\n z-index:999;\n}\n\nh2 {\n font-size: 22px;\n}\n\nh2.task_menu {\n font-size: 14px;\n}\n\nh2 small {\n font-size: 85%;\n}\n\nh3 {\n font-size: 20px;\n}\n\nh4 {\n font-size: 16px;\n}\n\n\n.row-striped {\n vertical-align: top;\n line-height: 2.6;\n padding: 0px;\n margin-left: 20px;\n box-sizing: border-box;\n //border-left: 1px solid #dddddd;\n //border-right: 1px solid #dddddd;\n display: table;\n}\n\n.row-striped .row:nth-of-type(odd) div {\n background-color: #f9f9f9;\n border-top: 1px solid #dddddd;\n display: table-cell;\n word-wrap: break-word;\n}\n\n.row-striped .row:nth-of-type(even) div {\n background: #FFFFFF;\n border-top: 1px solid #dddddd;\n display: table-cell;\n word-wrap: break-word;\n}\n\n\n.row-new-striped {\n vertical-align: top;\n padding: 3px;\n display: table;\n width: 100%;\n word-wrap: break-word;\n table-layout:fixed;\n}\n\n/**\n* NEW STRIPING\n* This section is for the new row striping for nicer \n* display for non-table data as of v6\n**/\n.row-new-striped > .row:nth-of-type(even) {\n background: #FFFFFF;\n border-top: 1px solid #dddddd;\n line-height: 1.9;\n display: table-row;\n}\n\n.row-new-striped > .row:nth-of-type(odd) {\n background-color: #F8F8F8;\n border-top: 1px solid #dddddd;\n display: table-row;\n line-height: 1.9;\n padding: 2px;\n}\n\n.row-new-striped div {\n display: table-cell;\n border-top: 1px solid #dddddd;\n padding: 6px;\n}\n\n.row-new-striped div {\n display: table-cell;\n border-top: 1px solid #dddddd;\n padding: 6px;\n}\n\n\n.row-new-striped div[class^=\"col\"]:first-child {\n font-weight: bold;\n}\n\n\n\n/**\n* This just adds a little extra padding on mobile\n**/\n@media only screen and (max-width: 520px) {\n h1.pagetitle {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n\n .firstnav {\n padding-top: 120px !important;\n }\n\n .product {\n width: 400px;\n }\n\n .product img {\n min-width: 400px;\n }\n}\n\n.card-view-title {\n min-width: 40% !important;\n line-height: 3.0!important;\n padding-right: 20px;\n}\n\n.card-view {\n display: table-row;\n flex-direction: column;\n}\n\n// ---------------\n\n/**\n\n COLUMN SELECTOR ICONS\n -----------------------------\n This is kind of weird, but it is necessary to prevent the column-selector code from barfing, since\n any HTML used in the UserPresenter \"title\" attribute breaks the column selector HTML.\n\n Instead, we use CSS to add the icon into the table header, which leaves the column selector\n \"title\" text as-is and hides the icon.\n\n See https://github.com/grokability/snipe-it/issues/7989\n */\nth.css-accessory > .th-inner,\nth.css-accessory-alt > .th-inner,\nth.css-barcode > .th-inner,\nth.css-component > .th-inner,\nth.css-consumable > .th-inner,\nth.css-envelope > .th-inner,\nth.css-house-flag > .th-inner,\nth.css-house-laptop > .th-inner,\nth.css-house-user > .th-inner,\nth.css-license > .th-inner,\nth.css-location > .th-inner,\nth.css-users > .th-inner,\nth.css-currency > .th-inner,\nth.css-child-locations > .th-inner,\nth.css-history > .th-inner\n{\n font-size: 0px;\n line-height: 0.75 !important;\n text-align: left;\n text-rendering: auto;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n\nth.css-location > .th-inner::before,\nth.css-accessory > .th-inner::before,\nth.css-accessory-alt > .th-inner::before,\nth.css-barcode > .th-inner::before,\nth.css-component > .th-inner::before,\nth.css-consumable > .th-inner::before,\nth.css-envelope > .th-inner::before,\nth.css-house-flag > .th-inner::before,\nth.css-house-laptop > .th-inner::before,\nth.css-house-user > .th-inner::before,\nth.css-license > .th-inner::before,\nth.css-location > .th-inner::before,\nth.css-users > .th-inner::before,\nth.css-currency > .th-inner::before,\nth.css-child-locations > .th-inner::before,\nth.css-history > .th-inner::before\n{\n display: inline-block;\n font-size: 20px;\n font-family: \"Font Awesome 5 Free\";\n font-weight: 900;\n}\n\n/**\nBEGIN ICON TABLE HEADERS\nSet the font-weight css property as 900 (For Solid), 400 (Regular or Brands), 300 (Light for pro icons).\n**/\nth.css-barcode > .th-inner::before\n{\n content: \"\\f02a\"; font-family: \"Font Awesome 5 Free\"; font-weight: 900;\n}\n\nth.css-license > .th-inner::before\n{\n content: \"\\f0c7\"; font-family: \"Font Awesome 5 Free\"; font-weight: 400;\n}\n\nth.css-consumable > .th-inner::before\n{\n content: \"\\f043\"; font-family: \"Font Awesome 5 Free\"; font-weight: 900;\n}\n\nth.css-envelope > .th-inner::before\n{\n content: \"\\f0e0\"; font-family: \"Font Awesome 5 Free\"; font-weight: 400;\n}\n\nth.css-accessory > .th-inner::before\n{\n content: \"\\f11c\"; font-family: \"Font Awesome 5 Free\"; font-weight: 400;\n}\n\nth.css-users > .th-inner::before {\n content: \"\\f0c0\"; font-family: \"Font Awesome 5 Free\"; font-size: 15px;\n}\n\nth.css-location > .th-inner::before {\n content: \"\\f3c5\"; font-family: \"Font Awesome 5 Free\"; font-size: 19px; margin-bottom: 0px;\n}\n\nth.css-component > .th-inner::before\n{\n content: \"\\f0a0\"; font-family: \"Font Awesome 5 Free\"; font-weight: 500;\n}\n\nth.css-padlock > .th-inner::before\n{\n content: \"\\f023\"; font-family: \"Font Awesome 5 Free\";\n font-weight: 800;\n padding-right: 3px;\n}\n\nth.css-house-user > .th-inner::before {\n content: \"\\e1b0\";\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\nth.css-house-flag > .th-inner::before {\n content: \"\\e50d\";\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\nth.css-house-laptop > .th-inner::before {\n content: \"\\e066\";\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\nth.css-accessory-alt > .th-inner::before {\n content: \"\\f11c\";\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\n\nth.css-child-locations > .th-inner::before {\n content: \"\\f64f\"; // change this to f51e for coins\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\n\nth.css-currency > .th-inner::before {\n content: \"\\24\"; // change this to f51e for coins\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\n\nth.css-history > .th-inner::before {\n content: \"\\f1da\"; // change this to f51e for coins\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\n\n\n.small-box .inner {\n padding-left: 15px;\n padding-right: 15px;\n padding-top: 15px;\n color: #fff;\n}\n\n\n.small-box > a:link, .small-box > a:visited, .small-box > a:hover {\n color: #fff;\n}\n\n.select2-container--default .select2-selection--single, .select2-selection .select2-selection--single {\n border: 1px solid #d2d6de;\n border-radius: 0;\n padding: 6px 12px;\n height: 34px;\n}\n\n.form-group.has-error label, .form-group.has-error .help-block {\n color: #a94442;\n}\n\n.select2-container--default .select2-selection--multiple {\n border-radius: 0px;\n}\n\n@media screen and (max-width: 511px){\n .tab-content .tab-pane .alert-block {\n margin-top: 120px\n }\n .sidebar-menu{\n margin-top:160px;\n }\n}\n@media screen and (max-width: 912px) and (min-width: 512px){\n .sidebar-menu {\n margin-top:100px\n }\n .navbar-custom-menu > .navbar-nav > li.dropdown.user.user-menu {\n float:right;\n }\n .navbar-custom-menu > .navbar-nav > li > .dropdown-menu {\n margin-right:-39px;\n }\n}\n\n@media screen and (max-width: 1268px) and (min-width: 912px){\n .sidebar-menu {\n margin-top:50px\n }\n}\n@media screen and (max-width: 992px){\n .info-stack-container {\n flex-direction: column;\n }\n .col-md-3.col-xs-12.col-sm-push-9.info-stack{\n left:auto;\n order:1;\n }\n .col-md-9.col-xs-12.col-sm-pull-3.info-stack{\n right:auto;\n order:2;\n }\n .info-stack-container > .col-md-9.col-xs-12.col-sm-pull-3.info-stack > .row-new-striped > .row > .col-sm-2{\n width:auto;\n float:none;\n }\n}\n@media screen and (max-width: 992px){\n .row-new-striped div{\n width:100%;\n }\n}\n\n@media screen and (max-width: 1318px) and (min-width: 1200px){\n .admin.box{\n height:170px;\n }\n}\n@media screen and (max-width: 1494px) and (min-width: 1200px){\n .dashboard.small-box{\n white-space: nowrap;\n text-overflow: ellipsis;\n max-width: 188px;\n display: block;\n overflow: hidden;\n }\n}\n\n/** Form-stuff overrides for checkboxes and stuff **/\n\nlabel.form-control {\n display: grid;\n grid-template-columns: 1.8em auto;\n gap: 0.5em;\n border: 0px;\n padding-left: 0px;\n background-color: inherit;\n color: inherit;\n font-size: inherit;\n font-weight: inherit;\n}\n\nlabel.form-control--disabled {\n color: #959495;\n cursor: not-allowed;\n}\n\n\n/** --------------------------------------- **/\n/** Start checkbox styles to replace iCheck **/\n/** --------------------------------------- **/\ninput[type=\"checkbox\"] {\n /* Add if not using autoprefixer */\n -webkit-appearance: none;\n appearance: none;\n /* For iOS < 15 to remove gradient background */\n background-color: #fff;\n /* Not removed via appearance */\n margin: 0;\n font: inherit;\n color: #959495;\n width: 1.8em;\n height: 1.8em;\n border: 0.05em solid;\n border-radius: 0em;\n transform: translateY(-0.075em);\n display: grid;\n place-content: center;\n /*Windows High Contrast Mode*/\n}\n\n/** This sets the display of a checkbox, and what the \"fill\" checkmark should look like */\n\ninput[type=\"checkbox\"]::before {\n\n /** If you want to use the non-checkbox, filled square, use this instead **/\n content: \"\";\n width: 1em;\n height: 1em;\n transform: scale(0);\n transition: 120ms transform ease-in-out;\n box-shadow: inset 1em 1em rgb(211, 211, 211);\n\n content: \"\";\n width: 1em;\n height: 1em;\n clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);\n transform: scale(0);\n transform-origin: bottom left;\n transition: 120ms transform ease-in-out;\n box-shadow: inset 1em 1em #428bca;\n /* Windows High Contrast Mode */\n background-color: CanvasText;\n}\n\n/** This sets the size of the scale up for the shape we defined above **/\ninput[type=\"checkbox\"]:checked::before {\n transform: scale(1);\n}\n\n/** This sets the scale and color of the DISABLED but CHECKED checkbox */\ninput[type=checkbox]:disabled::before, input[type=radio]:disabled::before {\n content: \"\";\n width: 1em;\n height: 1em;\n transform: scale(1);\n box-shadow: inset 1em 1em rgb(211, 211, 211);\n}\n\n/* This sets the scale and style of a DISABLED checkbox that is NOT checked */\ninput[type=checkbox]:disabled:not(:checked)::before, input[type=radio]:disabled:not(:checked)::before {\n content: \"\";\n transform: scale(0);\n cursor: not-allowed;\n pointer-events:none;\n}\n\n/** this is the color of the checkbox and content on a disabled, checked box **/\ninput[type=checkbox]:disabled, input[type=radio]:disabled {\n --form-control-color: rgb(211, 211, 211);\n color: #959495;\n cursor: not-allowed;\n pointer-events:none;\n}\n\n\n/** Radio styles to replace iCheck **/\n\ninput[type=\"radio\"] {\n appearance: none;\n background-color: #fff;\n margin: 0;\n font: inherit;\n color: #959495;\n width: 1.8em;\n height: 1.8em;\n border: 0.05em solid;\n border-radius: 50%;\n transform: translateY(-0.075em);\n display: grid;\n place-content: center;\n}\n\ninput[type=\"radio\"]::before {\n content: \"\";\n width: 1em;\n height: 1em;\n border-radius: 50%;\n transform: scale(0);\n transition: 120ms transform ease-in-out;\n box-shadow: inset 1em 1em #428bca;\n}\n\ninput[type=\"radio\"]:checked::before {\n transform: scale(1);\n}\n\n\n/**\n* This addresses the column selector in bootstrap-table. Without these two lines, the\n* checkbox and the with the label text that BS tables generates will\n* end up on two different lines and it looks assy.\n */\n.dropdown-item-marker input[type=checkbox] {\n font-size: 10px;\n}\n\n.bootstrap-table .fixed-table-toolbar li.dropdown-item-marker label {\n font-weight: normal;\n display: grid;\n grid-template-columns: .1em auto;\n gap: 1.5em;\n}\n\n.container.row-striped .col-md-6 {\n overflow-wrap:anywhere;\n}\n\n.nav-tabs-custom > .nav-tabs > li {\n z-index: 1;\n}\n\n.select2-container .select2-search--inline .select2-search__field{\n padding-left:15px;\n}\n\n.nav-tabs-custom > .nav-tabs > li.active {\n font-weight: bold;\n}\n\n/** --------------------------------------- **/\n/** End checkbox styles to replace iCheck **/\n/** --------------------------------------- **/\n\n/**\n/** Separator styles with text in the middle. Currently only used by the login page but\n/** could be used elsewhere.\n */\n\n.separator {\n display: flex;\n align-items: center;\n text-align: center;\n padding-top: 20px;\n color: #959495;\n}\n\n.separator::before,\n.separator::after {\n content: '';\n flex: 1;\n border-bottom: 1px solid #959495;\n}\n\n.separator:not(:empty)::before {\n margin-right: .25em;\n}\n\n.separator:not(:empty)::after {\n margin-left: .25em;\n}\n.datepicker.dropdown-menu {\n z-index: 1030 !important;\n}\n\n.sidebar-menu > li .badge {\n margin-top: 0px;\n filter: brightness(70%);\n font-size: 70%;\n}\n\n/** this is needed to override ekko-lightboxes card view styles **/\n.bootstrap-table .fixed-table-container .table tbody tr .card-view {\n display: table-row !important;\n}\n\n.form-control-static {\n padding-top: 0px;\n}\n\n\ntd.text-right.text-padding-number-cell {\n padding-right: 30px !important;\n white-space: nowrap;\n}\n\nth.text-right.text-padding-number-footer-cell {\n padding-right: 20px !important;\n white-space: nowrap;\n}\n\ncode.single-line {\n white-space: pre-wrap;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n overflow: hidden;\n max-width: 400px;\n}\n\np.monospace, span.monospace {\n font-family: monospace, monospace;\n}\n\nlegend.highlight {\n background: repeating-linear-gradient(\n 45deg,\n #222d32,\n #222d32 10px,\n #444 10px,\n #444 11px\n );\n\n color: #fff;\n font-size: 18px;\n padding: 6px 6px 6px 10px;\n}\n\nlegend.highlight a {\n color: #fff;\n cursor: pointer;\n}\n\nfieldset.bottom-padded {\n padding-bottom: 20px;\n}\n\ncaption.tableCaption {\n font-size: 18px;\n padding-left: 8px;\n}\n\n// via https://github.com/grokability/snipe-it/issues/11754\n.sidebar-toggle.btn {\n border-radius: 3px;\n box-shadow: none;\n border-top: 0px solid transparent;\n border-bottom: 0px solid transparent;\n padding-left: 15px;\n padding-right: 15px;\n padding-top: 12px;\n padding-bottom: 12px;\n margin-left: -47px;\n margin-top: 2px;\n}\n.popover.help-popover,\n.popover.help-popover .popover-content,\n.popover.help-popover .popover-body,\n.popover.help-popover .popover-title,\n.popover.help-popover .popover-header {\n color: #000;\n}\n\n.visually-hidden {\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n clip: rect(0,0,0,0);\n white-space: preserve;\n display: inline-block;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"css/build/app.css","mappings":"AACA;EACE;EAGA;AAFF;AAKA;EACE;IACE;EAHF;EAMA;IACE;EAJF;AACF;AAOA;EACE;AALF;AAOA;EACE;EACA;EACA;EACA;EACA;AALF;AASA;EACE;AAPF;AAUA;EACE;EACA;AARF;AAWA;EACE;AATF;AAYA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AAVF;AAaA;EACE;EACA;EACA;EACA;EACA;AAXF;AAcA;EACE;AAZF;AAeA;EACE;AAbF;AAgBA;EACE;EACA;AAdF;AAiBA;EACE;AAfF;AAkBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAhBF;AAmBA;EACE;AAjBF;AAoBA;EACE;AAlBF;AAqBA;EACE;AAnBF;AAsBA;EACE;AApBF;AAuBA;EACE;EACA;EACA;AArBF;AAwBA;EACE;EACA;EACA;AAtBF;AA6BA;EACE;AA3BF;AA8BA;EACE;EACA;AA5BF;AA+BA;EACE;AA7BF;AA+BA;EACE;EACA;AA7BF;AAgCA;;EAEE;EACA;AA9BF;AAiCA;EACE;EACA;AA/BF;AAiCA;EACE;AA/BF;AAkCA;EACE;EACA;EACA;AAhCF;AAmCA;EACE;AAjCF;AAoCA;EACE;AAlCF;AAqCA;EACE;AAnCF;AAsCA;EACE;AApCF;AAuCA;EACE;AArCF;AAwCA;;;;;EAKE;AAtCF;AAyCA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAvCF;AA0CA;EACE;EACA;EACA;EACA;EACA;EACA;AAxCF;AA2CA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAzCF;AA4CA;EACE;AA1CF;AA6CA;EACE;EACA;EACA;EACA;AA3CF;AA8CA;EACE;EACA;AA5CF;AA+CA;EACE;EACA;EACA;EACA;EACA;AA7CF;AAgDA;EACE;EACA;AA9CF;AAiDA;EACE;EACA;EACA;EACA;AA/CF;AAkDA;EACE;EACA;AAhDF;AACA,cAAc;AAmDd;EACE;EACA;EACA;AAjDF;AAmDA;EACE;EACA;AAjDF;AAsDA;EACE;EACA;EACA;AApDF;AAuDA;EACE;EACA;AArDF;AAwDA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAtDF;AAyDA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAvDF;AA0DA;EACE;EACA;EACA;EACA;EACA;AAxDF;AA2DA;EACE;EACA;EACA;AAzDF;AA4DA;EACE;AA1DF;AA6DA;EACE;AA3DF;AA8DA;EACE;AA5DF;AA+DA;EACE;AA7DF;AAgEA;EACE;AA9DF;AAiEA;EACE;AA/DF;AAkEA;EACE;EACA;AAhEF;AAmEA;EACE;AAjEF;AAoEA;EACE;AAlEF;AACA,kBAAkB;AAqElB;EACE;EAEA;EACA;EACA;EApEA,gCAAgC;AAClC;AAuEA;EACE;AArEF;AAwEA;EACE;EACA;EACA;AAtEF;AAwEA;EACE;EACA;EACA;AAtEF;AAyEA;;;EACE;AArEF;AAwEA;EACE;EACA;AAtEF;AAyEA;EACE;IACE;EAvEF;EA0EA;IACE;IACA;IACA;EAxEF;AACF;AA2EA;;EAEE;EACA;EACA;AAzEF;AA4EA;EACE;AA1EF;AA6EA;;EAEE;AA3EF;AA8EA;EACE;AA5EF;AA+EA;EACE;AA7EF;AAgFA;EACE;EACA;EACA;AA9EF;AAiFA;EACE;EACA;AA/EF;AAkFA;EACE;EACA;EACA;AAhFF;AAmFA;EACE;AAjFF;ACvXA;EAkBE;ADwWF;ACtWA;EACE;EACA;EACA;EACA;EACA;ADwWF;ACvWE;;;EACE;AD2WJ;ACxWA;EACE;AD0WF;ACvWA;EACE;EACA;ADyWF;ACtWA;EACE;ADwWF;ACpWA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;ADsWF;ACnWA;EACE;EACA;EACA;EACA;EACA;ADqWF;AClWA;EACE;ADoWF;ACjWA;EACE;ADmWF;AChWA;EACE;EACA;ADkWF;AC9VA;EACE;ADgWF;AC7VA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AD+VF;AC7VA;EACE;AD+VF;AC7VA;EACE;AD+VF;AC3VA;EACE;AD6VF;AC3VA;EACE;AD6VF;ACzVA;EACE;EACA;EACA;AD2VF;ACxVA;EACE;EACA;EACA;AD0VF;ACnUA;EACE;ADqUF;AClUA;EACE;EACA;EACA;ADoUF;ACjUA;EACE;EACA;ADmUF;AChUA;EACE;ADkUF;AC/TA;EACE;EACA;ADiUF;AC9TA;;EACE;EACA;ADiUF;AC9TA;EACE;EACA;ADgUF;AC9TA;EACE;ADgUF;AC7TA;EACE;EACA;EACA;AD+TF;AC5TA;EACE;AD8TF;AC3TA;EACE;AD6TF;AC1TA;EACE;AD4TF;AC1TA;EACE;AD4TF;ACzTA;EACE;AD2TF;ACxTA;;;;EACE;AD6TF;AC1TA;;;;;EACE;ADgUF;AC7TA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AD+TF;AC7TA;EACE;EACA;EACA;EACA;EACA;EACA;AD+TF;AC7TA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AD+TF;AC7TA;EACE;AD+TF;AC7TA;EACE;EACA;EACA;EACA;AD+TF;AC7TA;EACE;EACA;AD+TF;AC7TA;EACE;EACA;EACA;EACA;EACA;AD+TF;AC7TA;EACE;EACA;AD+TF;AC7TA;EACE;EACA;EACA;EACA;AD+TF;AC5TA;EACE;EACA;AD8TF;ACzTA;EAAY;AD4TZ;AACA,cAAc;AC1Td;EAAY;EAAkC;AD8T9C;AC7TA;EAA8B;EAAY;ADiU1C;AC/TA;EAAiD;EAAgB;EAAiB;ADoUlF;ACnUA;EAA8C;EAAa;ADuU3D;ACtUA;EAA+C;EAAoB;EAAa;EAAc;EAAgB;EAAqB;EAAW;EAAW;EAAmB;EAAoB;ADkVhM;ACjVA;EAAqD;EAAc;EAAa;EAAc;EAAqB;EAAqB;EAAoB;EAAU;AD2VtK;AC1VA;EAA0C;EAAoB;EAAoB;EAAa;EAAkB;ADiWjH;AChWA;EAA0D;EAAW;EAAkB;ADqWvF;ACpWA;EAAmE;ADuWnE;ACtWA;EAAiE;ADyWjE;ACxWA;EAA6E;AD2W7E;AC1WA;EAA4E;AD6W5E;AC5WA;EAAwD;AD+WxD;AC9WA;EAA8D;ADiX9D;AChXA;EAAuD;EAAW;ADoXlE;ACnXA;EAAsD;ADsXtD;ACrXA;EAAuD;ADwXvD;AACA,kBAAkB;ACtXlB;EACE;EACA;EACA;EACA;EACA;EDwXA,gCAAgC;AAClC;ACrXA;EAkBE;ADsWF;ACnWA;EACE;ADqWF;ACjWA;;EACE;ADoWF;AClWA;;EACE;ADqWF;AClWA;EACE;EAIA;ADiWF;AC9VA;EACE;EACA;ADgWF;AC7VA;EACE;AD+VF;AC5VA;EACE;AD8VF;AC3VA;EAEE;IACE;IACA;ED4VF;ECzVA;IACE;IACA;IACA;ED2VF;ECxVA;IACE;ED0VF;ECvVA;;IACE;ED0VF;ECvVA;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;EDyVF;EACA,+CAA+C;ECtV/C;IACE;EDwVF;ECrVA;IACE;EDuVF;ECpVA;IACE;EDsVF;ECnVA;IACE;EDqVF;EACA,qCAAqC;EClVrC;;IACE;EDqVF;EACA,QAAQ;EClVR;;IACE;IACA;IACA;EDqVF;EClVA;IACE;EDoVF;ECjVA;IACE;EDmVF;EChVA;IACE;IACA;IACA;EDkVF;EC/UA;IACE;IACA;EDiVF;EC9UA;;IACE;EDiVF;EC/UA;;;;;;;;;;;;IACE;ED4VF;ECzVA;IACE;ED2VF;ECzVA;IACE;ED2VF;ECzVA;IACE;ED2VF;ECzVA;IACE;ED2VF;ECzVA;IACE;ED2VF;ECzVA;IACE;ED2VF;ECzVA;IACE;ED2VF;ECzVA;IACE;ED2VF;ECzVA;IACE;ED2VF;ECzVA;IACE;ED2VF;ECzVA;IACE;ED2VF;ECzVA;IACE;ED2VF;AACF;ACtVA;EACE;ADwVF;ACrVA;EACI;EACA;ADuVJ;ACpVA;EACE;ADsVF;ACnVA;EACE;EACA;EACA;ADqVF;AChVA;EACE;EACA;OAAA;EACA;EACA;ADkVF;AC/UA;;EACE;EACA;EACA;ADkVF;AC/UA;;;EACE;ADmVF;AChVA;;EACE;ADmVF;AChVA;EACE;ADkVF;AC/UA;EACE;ADiVF;AC9UA;EACE;EACA;EACA;ADgVF;AC7UA;EACE;EACA;AD+UF;AC5UA;EACE;EACA;EACA;AD8UF;AC1UA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AD4UF;AC1UA;;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AD6UF;AC1UA;EACE;AD4UF;ACzUA;EACE;AD2UF;ACxUA;EACE;AD0UF;ACvUA;EACE;ADyUF;ACtUA;EACE;ADwUF;ACpUA;EACE;EACA;EACA;EACA;EACA;EAGA;ADoUF;ACjUA;EACE;EACA;EACA;EACA;ADmUF;AChUA;EACE;EACA;EACA;EACA;ADkUF;AC9TA;EACE;EACA;EACA;EACA;EACA;EACA;ADgUF;AACA;;;;EAIE;AC7TF;EACE;EACA;EACA;EACA;AD+TF;AC5TA;EACE;EACA;EACA;EACA;EACA;AD8TF;AC3TA;EACE;EACA;EACA;AD6TF;AC1TA;EACE;EACA;EACA;AD4TF;ACxTA;EACE;AD0TF;AACA;;EAEE;ACrTF;EACE;IACE;IACA;EDuTF;ECpTA;IACE;EDsTF;ECnTA;IACE;EDqTF;EClTA;IACE;EDoTF;AACF;ACjTA;EACE;EACA;EACA;ADmTF;AChTA;EACE;EACA;ADkTF;AACA;;;;;;;;;;;EAWE;AC7SF;;;;;;;;;;;;;;;EAgBE;EACA;EACA;EACA;EACA;EACA;AD8SF;AC1SA;;;;;;;;;;;;;;;;EAiBE;EACA;EACA;EACA;AD2SF;AACA;;;EAGE;ACxSF;EAEE;EAAkB;EAAoC;AD2SxD;ACxSA;EAEE;EAAkB;EAAoC;AD2SxD;ACxSA;EAEE;EAAkB;EAAoC;AD2SxD;ACxSA;EAEE;EAAkB;EAAoC;AD2SxD;ACxSA;EAEE;EAAkB;EAAoC;AD2SxD;ACxSA;EACE;EAAkB;EAAoC;AD4SxD;ACzSA;EACE;EAAkB;EAAoC;EAAiB;AD8SzE;AC3SA;EAEE;EAAkB;EAAoC;AD8SxD;AC3SA;EAEE;EAAkB;EAClB;EACA;AD6SF;AC1SA;EACE;EACA;EACA;EACA;AD4SF;AC1SA;EACE;EACA;EACA;EACA;AD4SF;AC1SA;EACE;EACA;EACA;EACA;AD4SF;AC1SA;EACE;EACA;EACA;EACA;AD4SF;ACzSA;EACE;EACA;EACA;EACA;AD2SF;ACxSA;EACE;EACA;EACA;EACA;AD0SF;ACvSA;EACE;EACA;EACA;EACA;ADySF;ACrSA;EACE;EACA;EACA;EACA;ADuSF;ACnSA;;;EACE;ADuSF;ACpSA;;EACE;EACA;EACA;EACA;ADuSF;ACpSA;;EACE;ADuSF;ACpSA;EACE;ADsSF;ACnSA;EACE;IACE;EDqSF;ECnSA;IACE;EDqSF;AACF;ACnSA;EACE;IACE;EDqSF;ECnSA;IACE;EDqSF;ECnSA;IACE;EDqSF;AACF;AClSA;EACE;IACE;EDoSF;AACF;AClSA;EACE;IACE;EDoSF;EClSA;IACE;IACA;EDoSF;EClSA;IACE;IACA;EDoSF;EClSA;IACE;IACA;EDoSF;AACF;AClSA;EACE;IACE;EDoSF;AACF;ACjSA;EACE;IACE;EDmSF;AACF;ACjSA;EACE;IACE;IACA;IACA;IACA;IACA;EDmSF;AACF;AACA,oDAAoD;AC/RpD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ADiSF;AC9RA;EACE;EACA;ADgSF;AACA,8CAA8C;AAC9C,8CAA8C;AAC9C,8CAA8C;AC5R9C;ED8RE,kCAAkC;EC5RlC;EACA;OAAA;ED8RA,+CAA+C;EC5R/C;ED8RA,+BAA+B;EC5R/B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ED8RA,6BAA6B;AAC/B;AACA,yFAAyF;AC1RzF;ED4RE,2EAA2E;ECpR3E;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EDqRA,+BAA+B;ECnR/B;ADqRF;AACA,wEAAwE;AClRxE;EACE;ADoRF;AACA,wEAAwE;ACjRxE;;EACE;EACA;EACA;EACA;EACA;ADoRF;AACA,6EAA6E;ACjR7E;;EACE;EACA;EACA;EACA;ADoRF;AACA,+EAA+E;ACjR/E;;EACE;EACA;EACA;EACA;ADoRF;AACA,qCAAqC;AC/QrC;EACE;KAAA;UAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ADiRF;AC9QA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;ADgRF;AC7QA;EACE;AD+QF;AACA;;;;EAIE;AC3QF;EACE;AD6QF;AC1QA;EACE;EACA;EACA;EACA;AD4QF;ACzQA;EACE;AD2QF;ACxQA;EACE;AD0QF;ACvQA;EACE;ADyQF;ACtQA;EACE;ADwQF;AACA,8CAA8C;AAC9C,8CAA8C;AAC9C,8CAA8C;AAC9C;;;EAGE;ACnQF;EACE;EACA;EACA;EACA;EACA;ADqQF;AClQA;;EAEE;EACA;EACA;ADoQF;ACjQA;EACE;ADmQF;AChQA;EACE;ADkQF;AChQA;EACE;ADkQF;AC/PA;EACE;EACA;EACA;ADiQF;AACA,kEAAkE;AC9PlE;EACE;ADgQF;AC7PA;EACE;AD+PF;AC3PA;EACE;EACA;AD6PF;AC1PA;EACE;EACA;AD4PF;ACzPA;EACE;EACA;EACA;EACA;EACA;EACA;AD2PF;ACxPA;;EACE;AD2PF;ACxPA;EACE;EAQA;EACA;EACA;ADmPF;AChPA;EACE;EACA;ADkPF;AC/OA;EACE;ADiPF;AC9OA;EACE;EACA;ADgPF;AC5OA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AD8OF;AC5OA;;;;;EAKE;AD8OF;AC3OA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AD6OF;AC1OA;EACE;AD4OF","sources":["webpack:///./resources/assets/less/app.less","webpack:///./resources/assets/less/overrides.less"],"sourcesContent":["\nbody {\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\",\n \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;\n font-size: 13px;\n}\n// Moved from default.blade.php\n@media (max-width: 400px) {\n .navbar-left {\n margin: 2px;\n }\n\n .nav::after {\n clear: none;\n }\n}\n\n.skin-blue .main-header .logo {\n background-color: inherit !important;\n}\n.main-header .logo {\n width: 100% !important;\n white-space: nowrap;\n text-align: left;\n display: block;\n clear: both;\n //text-overflow: hidden;\n}\n\n.huge {\n font-size: 40px;\n}\n\n.btn-file {\n position: relative;\n overflow: hidden;\n}\n\n.dropdown-menu > li > a {\n color: #354044;\n}\n\n#sort tr.cansort {\n border-radius: 2px;\n padding: 10px;\n background: #f4f4f4;\n margin-bottom: 3px;\n border-left: 2px solid #e6e7e8;\n color: #444;\n cursor: move;\n}\n\n.user-image-inline {\n float: left;\n width: 25px;\n height: 25px;\n border-radius: 50%;\n margin-right: 10px;\n}\n\n.input-group .input-group-addon {\n background-color: #f4f4f4;\n}\n\na.accordion-header {\n color: #333;\n}\n\n.dynamic-form-row {\n padding: 10px;\n margin: 20px;\n}\n\n.handle {\n padding-left: 10px;\n}\n\n.btn-file input[type=\"file\"] {\n position: absolute;\n top: 0;\n right: 0;\n min-width: 100%;\n min-height: 100%;\n font-size: 100px;\n text-align: right;\n filter: alpha(opacity=0);\n opacity: 0;\n outline: none;\n background: white;\n cursor: inherit;\n display: block;\n}\n\n.main-footer {\n font-size: 13px;\n}\n\n.main-header {\n max-height: 150px;\n}\n\n.navbar-nav > .user-menu > .dropdown-menu {\n width: inherit;\n}\n\n.main-header .logo {\n padding: 0px 5px 0px 15px;\n}\n\n.sidebar-toggle {\n margin-left: -48px;\n z-index: 100;\n background-color: inherit;\n}\n\n.sidebar-toggle-mobile {\n z-index: 100;\n width: 50px;\n padding-top: 10px;\n}\n\n// .skin-blue .main-header .navbar .dropdown-menu li a {\n// //color: inherit;\n// }\n\n.main-header .sidebar-toggle:before {\n content: \"\\f0c9\";\n}\n\n.direct-chat-contacts {\n padding: 10px;\n height: 150px;\n}\n\n.select2-container {\n width: 100%;\n}\n.error input {\n color: #a94442;\n border: 2px solid #a94442 !important;\n}\n\n.error label,\n.alert-msg {\n color: #a94442;\n display: block;\n}\n\n.input-group[class*=\"col-\"] {\n padding-right: 15px;\n padding-left: 15px;\n}\n.control-label.multiline {\n padding-top: 10px;\n}\n\n.btn-outline {\n color: inherit;\n background-color: transparent;\n transition: all 0.5s;\n}\n\n.btn-primary.btn-outline {\n color: #428bca;\n}\n\n.btn-success.btn-outline {\n color: #5cb85c;\n}\n\n.btn-info.btn-outline {\n color: #5bc0de;\n}\n\n.btn-warning.btn-outline {\n color: #f0ad4e;\n}\n\n.btn-danger.btn-outline {\n color: #d9534f;\n}\n\n.btn-primary.btn-outline:hover,\n.btn-success.btn-outline:hover,\n.btn-info.btn-outline:hover,\n.btn-warning.btn-outline:hover,\n.btn-danger.btn-outline:hover {\n color: #fff;\n}\n\n.slideout-menu {\n position: fixed;\n top: 0;\n right: -250px;\n width: 250px;\n height: 100%;\n background: #333;\n z-index: 100;\n margin-top: 100px;\n color: white;\n padding: 10px;\n}\n\n.slideout-menu h3 {\n position: relative;\n padding: 5px 5px;\n color: #fff;\n font-size: 1.2em;\n font-weight: 400;\n border-bottom: 4px solid #222;\n}\n\n.slideout-menu .slideout-menu-toggle {\n position: absolute;\n top: 12px;\n right: 10px;\n display: inline-block;\n padding: 6px 9px 5px;\n font-family: Arial, sans-serif;\n font-weight: bold;\n line-height: 1;\n background: #222;\n color: #999;\n text-decoration: none;\n vertical-align: top;\n}\n\n.slideout-menu .slideout-menu-toggle:hover {\n color: #fff;\n}\n\n.slideout-menu ul {\n list-style: none;\n font-weight: 300;\n border-top: 1px solid #151515;\n border-bottom: 1px solid #454545;\n}\n\n.slideout-menu ul li {\n border-top: 1px solid #454545;\n border-bottom: 1px solid #151515;\n}\n\n.slideout-menu ul li a {\n position: relative;\n display: block;\n padding: 10px;\n color: #999;\n text-decoration: none;\n}\n\n.slideout-menu ul li a:hover {\n background: #000;\n color: #fff;\n}\n\n.slideout-menu ul li a i {\n position: absolute;\n top: 15px;\n right: 10px;\n opacity: 0.5;\n}\n\n.btn-box-tool-lg {\n font-size: 16px;\n color: orange;\n}\n\n/*Form Wizard*/\n.bs-wizard {\n margin-top: 20px;\n border-bottom: solid 1px #e0e0e0;\n padding: 0 0 10px 0;\n}\n.bs-wizard > .bs-wizard-step {\n padding: 0;\n position: relative;\n}\n\n// .bs-wizard > .bs-wizard-step + .bs-wizard-step {}\n\n.bs-wizard > .bs-wizard-step .bs-wizard-stepnum {\n color: #595959;\n font-size: 16px;\n margin-bottom: 5px;\n}\n\n.bs-wizard > .bs-wizard-step .bs-wizard-info {\n color: #999;\n font-size: 14px;\n}\n\n.bs-wizard > .bs-wizard-step > .bs-wizard-dot {\n position: absolute;\n width: 30px;\n height: 30px;\n display: block;\n background: #fbe8aa;\n top: 45px;\n left: 50%;\n margin-top: -15px;\n margin-left: -15px;\n border-radius: 50%;\n}\n\n.bs-wizard > .bs-wizard-step > .bs-wizard-dot:after {\n content: \" \";\n width: 14px;\n height: 14px;\n background: #fbbd19;\n border-radius: 50px;\n position: absolute;\n top: 8px;\n left: 8px;\n}\n\n.bs-wizard > .bs-wizard-step > .progress {\n position: relative;\n border-radius: 0px;\n height: 8px;\n box-shadow: none;\n margin: 20px 0;\n}\n\n.bs-wizard > .bs-wizard-step > .progress > .progress-bar {\n width: 0px;\n box-shadow: none;\n background: #fbe8aa;\n}\n\n.bs-wizard > .bs-wizard-step.complete > .progress > .progress-bar {\n width: 100%;\n}\n\n.bs-wizard > .bs-wizard-step.active > .progress > .progress-bar {\n width: 50%;\n}\n\n.bs-wizard > .bs-wizard-step:first-child.active > .progress > .progress-bar {\n width: 0%;\n}\n\n.bs-wizard > .bs-wizard-step:last-child.active > .progress > .progress-bar {\n width: 100%;\n}\n\n.bs-wizard > .bs-wizard-step.disabled > .bs-wizard-dot {\n background-color: #f5f5f5;\n}\n\n.bs-wizard > .bs-wizard-step.disabled > .bs-wizard-dot:after {\n opacity: 0;\n}\n\n.bs-wizard > .bs-wizard-step:first-child > .progress {\n left: 50%;\n width: 50%;\n}\n\n.bs-wizard > .bs-wizard-step:last-child > .progress {\n width: 50%;\n}\n\n.bs-wizard > .bs-wizard-step.disabled a.bs-wizard-dot {\n pointer-events: none;\n}\n/*END Form Wizard*/\n\n.left-navblock {\n display: inline-block;\n // float: left;\n text-align: left;\n color: white;\n padding: 0px;\n /* adjust based on your layout */\n}\n\na.logo.no-hover a:hover {\n background-color: transparent;\n}\n\n.index-block {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.index-block:hover{\n overflow: visible;\n white-space: normal;\n height:auto;\n}\n\ninput:required, select:required, textarea:required {\n border-right: 6px solid orange;\n}\n\n.sidebar-menu {\n font-size: 14px;\n white-space: normal;\n}\n\n@media print {\n a[href]:after {\n content: none;\n }\n\n .tab-content > .tab-pane {\n display: block !important;\n opacity: 1 !important;\n visibility: visible !important;\n }\n}\n\nimg.navbar-brand-img,\n.navbar-brand > img {\n float: left;\n padding: 5px 5px 5px 0;\n max-height: 50px;\n}\n\n.input-daterange {\n border-radius: 0px;\n}\n\n.btn.bg-maroon,\n.btn.bg-purple {\n min-width: 90px;\n}\n\n[hidden] {\n display: none !important;\n}\n\n#toolbar {\n margin-top: 10px;\n}\n\n#uploadPreview {\n border-color: grey;\n border-width: 1px;\n border-style: solid;\n}\n\n.icon-med {\n font-size: 20px;\n color: #889195;\n}\n\n#login-logo {\n padding-top: 20px;\n padding-bottom: 10px;\n max-width: 200px;\n}\n\n.left-navblock {\n max-width: 500px;\n}\n\n@import \"overrides.less\";",".skin-red\n.skin-purple\n.skin-blue\n.skin-black\n.skin-orange\n.skin-yellow\n.skin-green\n.skin-red-dark\n.skin-purple-dark\n.skin-blue-dark\n.skin-black-dark\n.skin-orange-dark\n.skin-yellow-dark\n.skin-green-dark\n.skin-contrast\n.main-header\n\n.logo {\n background-color: inherit;\n}\n.main-header .logo {\n width: 100% !important;\n white-space: nowrap;\n text-align: left;\n display: block;\n clear: both;\n &a:link, a:hover, a:visited {\n color: #fff\n }\n}\n.huge {\n font-size: 40px;\n}\n\n.btn-file {\n position: relative;\n overflow: hidden;\n}\n\n.dropdown-menu>li>a {\n color: #354044;\n}\n\n\n#sort tr.cansort {\n border-radius: 2px;\n padding: 10px;\n background: #f4f4f4;\n margin-bottom: 3px;\n border-inline: 2px solid #e6e7e8;\n color: #444;\n cursor: move;\n}\n\n.user-image-inline {\n float: left;\n width: 25px;\n height: 25px;\n border-radius: 50%;\n margin-right: 10px;\n}\n\n.input-group .input-group-addon {\n background-color: #f4f4f4;\n}\n\na.accordion-header {\n color: #333;\n}\n\n.dynamic-form-row {\n padding: 10px;\n margin: 20px;\n}\n\n\n.handle {\n padding-left: 10px;\n}\n\n.btn-file input[type=file] {\n position: absolute;\n top: 0;\n right: 0;\n min-width: 100%;\n min-height: 100%;\n font-size: 100px;\n text-align: right;\n filter: alpha(opacity=0);\n opacity: 0;\n outline: none;\n background: white;\n cursor: inherit;\n display: block;\n}\n.main-footer {\n font-size: 13px;\n}\n.main-header {\n max-height: 150px;\n}\n\n\n.navbar-nav>.user-menu>.dropdown-menu {\n width: inherit;\n}\n.main-header .logo {\n padding: 0px 5px 0px 15px;\n}\n\n\n.sidebar-toggle {\n margin-left: -48px;\n z-index: 100;\n background-color: inherit;\n}\n\n.sidebar-toggle-mobile {\n z-index: 100;\n width: 50px;\n padding-top: 10px;\n}\n\n.skin-red\n.skin-purple\n.skin-blue\n.skin-black\n.skin-orange\n.skin-yellow\n.skin-green\n.skin-red-dark\n.skin-purple-dark\n.skin-blue-dark\n.skin-black-dark\n.skin-orange-dark\n.skin-yellow-dark\n.skin-green-dark\n.skin-contrast\n.main-header\n.navbar\n.dropdown-menu li a {\n //color: inherit;\n}\n.pull-text-right{\n text-align: right !important;\n}\n\n.main-header .sidebar-toggle:before {\n content: \"\\f0c9\";\n font-weight: 900;\n font-family: 'Font Awesome\\ 5 Free';\n}\n\n.direct-chat-contacts {\n padding: 10px;\n height: 150px;\n}\n\n.select2-container {\n width: 100%;\n}\n\n.error input {\n color: #a94442;\n border: 2px solid #a94442 !important;\n}\n\n.error label, .alert-msg {\n color: #a94442;\n display: block;\n}\n\n.input-group[class*=\"col-\"] {\n padding-right: 15px;\n padding-left: 15px;\n}\n.control-label.multiline {\n padding-top: 10px;\n}\n\n.btn-outline {\n color: inherit;\n background-color: transparent;\n transition: all .5s;\n}\n\n.btn-primary.btn-outline {\n color: #428bca;\n}\n\n.btn-success.btn-outline {\n color: #5cb85c;\n}\n\n.btn-info.btn-outline {\n color: #5bc0de;\n}\n.btn-warning{\n background-color:#f39c12 !important;\n}\n\n.btn-warning.btn-outline {\n color: #f0ad4e;\n}\n\n.btn-danger.btn-outline, a.link-danger:link, a.link-danger:visited, a.link-danger:hover {\n color: #dd4b39;\n}\n\n.btn-primary.btn-outline:hover, .btn-success.btn-outline:hover, .btn-info.btn-outline:hover, .btn-warning.btn-outline:hover, .btn-danger.btn-outline:hover {\n color: #fff;\n}\n\n.slideout-menu {\n position: fixed;\n top: 0;\n right: -250px;\n width: 250px;\n height: 100%;\n background: #333;\n z-index: 100;\n margin-top: 100px;\n color: white;\n padding: 10px;\n}\n.slideout-menu h3 {\n position: relative;\n padding: 5px 5px;\n color: #fff;\n font-size: 1.2em;\n font-weight: 400;\n border-bottom: 4px solid #222;\n}\n.slideout-menu .slideout-menu-toggle {\n position: absolute;\n top: 12px;\n right: 10px;\n display: inline-block;\n padding: 6px 9px 5px;\n font-family: Arial, sans-serif;\n font-weight: bold;\n line-height: 1;\n background: #222;\n color: #999;\n text-decoration: none;\n vertical-align: top;\n}\n.slideout-menu .slideout-menu-toggle:hover {\n color: #fff;\n}\n.slideout-menu ul {\n list-style: none;\n font-weight: 300;\n border-top: 1px solid #151515;\n border-bottom: 1px solid #454545;\n}\n.slideout-menu ul li {\n border-top: 1px solid #454545;\n border-bottom: 1px solid #151515;\n}\n.slideout-menu ul li a {\n position: relative;\n display: block;\n padding: 10px;\n color: #999;\n text-decoration: none;\n}\n.slideout-menu ul li a:hover {\n background: #000;\n color: #fff;\n}\n.slideout-menu ul li a i {\n position: absolute;\n top: 15px;\n right: 10px;\n opacity: .5;\n}\n\n.btn-box-tool-lg {\n font-size: 16px;\n color: orange;\n}\n\n\n\n.bs-wizard {margin-top: 20px;}\n\n/*Form Wizard*/\n.bs-wizard {border-bottom: solid 1px #e0e0e0; padding: 0 0 10px 0;}\n.bs-wizard > .bs-wizard-step {padding: 0; position: relative;}\n.bs-wizard > .bs-wizard-step + .bs-wizard-step {}\n.bs-wizard > .bs-wizard-step .bs-wizard-stepnum {color: #595959; font-size: 16px; margin-bottom: 5px;}\n.bs-wizard > .bs-wizard-step .bs-wizard-info {color: #999; font-size: 14px;}\n.bs-wizard > .bs-wizard-step > .bs-wizard-dot {position: absolute; width: 30px; height: 30px; display: block; background: #fbe8aa; top: 45px; left: 50%; margin-top: -15px; margin-left: -15px; border-radius: 50%;}\n.bs-wizard > .bs-wizard-step > .bs-wizard-dot:after {content: ' '; width: 14px; height: 14px; background: #fbbd19; border-radius: 50px; position: absolute; top: 8px; left: 8px; }\n.bs-wizard > .bs-wizard-step > .progress {position: relative; border-radius: 0px; height: 8px; box-shadow: none; margin: 20px 0;}\n.bs-wizard > .bs-wizard-step > .progress > .progress-bar {width:0px; box-shadow: none; background: #fbe8aa;}\n.bs-wizard > .bs-wizard-step.complete > .progress > .progress-bar {width:100%;}\n.bs-wizard > .bs-wizard-step.active > .progress > .progress-bar {width:50%;}\n.bs-wizard > .bs-wizard-step:first-child.active > .progress > .progress-bar {width:0%;}\n.bs-wizard > .bs-wizard-step:last-child.active > .progress > .progress-bar {width: 100%;}\n.bs-wizard > .bs-wizard-step.disabled > .bs-wizard-dot {background-color: #f5f5f5;}\n.bs-wizard > .bs-wizard-step.disabled > .bs-wizard-dot:after {opacity: 0;}\n.bs-wizard > .bs-wizard-step:first-child > .progress {left: 50%; width: 50%;}\n.bs-wizard > .bs-wizard-step:last-child > .progress {width: 50%;}\n.bs-wizard > .bs-wizard-step.disabled a.bs-wizard-dot{ pointer-events: none; }\n/*END Form Wizard*/\n\n.left-navblock {\n display: inline-block;\n float: left;\n text-align: left;\n color: white;\n padding: 0px;\n /* adjust based on your layout */\n\n}\n.skin-red\n.skin-purple\n.skin-blue\n.skin-black\n.skin-orange\n.skin-yellow\n.skin-green\n.skin-red-dark\n.skin-purple-dark\n.skin-blue-dark\n.skin-black-dark\n.skin-orange-dark\n.skin-yellow-dark\n.skin-green-dark\n.skin-contrast\n.main-header\n.navbar\n.dropdown-menu li a {\n color: #333;\n}\n\na.logo.no-hover a:hover {\n background-color: transparent;\n}\n\n\ninput:required, select:required {\n border-right: 5px solid orange;\n}\nselect:required + .select2-container .select2-selection, select:required + .select2-container .select2-selection .select2-selection--multiple {\n border-right: 5px solid orange !important;\n}\n\nbody {\n font-family: -apple-system, BlinkMacSystemFont,\n \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\",\n \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;\n font-size: 13px;\n}\n\n.sidebar-menu {\n font-size: 14px;\n white-space: normal;\n}\n\n.modal-warning .modal-help {\n color: #fff8af;\n}\n\n.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading {\n z-index: 0 !important;\n}\n\n@media print {\n\n @page {\n size: A4;\n margin: 0mm;\n }\n\n .tab-content > .tab-pane {\n display: block !important;\n opacity: 1 !important;\n visibility: visible !important;\n }\n\n .img-responsive {\n width: 200px;\n }\n\n html, body {\n width: 1024px;\n }\n\n body {\n margin: 0 auto;\n line-height: 1em;\n word-spacing:1px;\n letter-spacing:0.2px;\n font: 15px \"Times New Roman\", Times, serif;\n background:white;\n color:black;\n width: 100%;\n float: none;\n }\n\n /* avoid page-breaks inside a listingContainer*/\n .listingContainer {\n page-break-inside: avoid;\n }\n\n h1 {\n font: 28px \"Times New Roman\", Times, serif;\n }\n\n h2 {\n font: 24px \"Times New Roman\", Times, serif;\n }\n\n h3 {\n font: 20px \"Times New Roman\", Times, serif;\n }\n\n /* Improve colour contrast of links */\n a:link, a:visited {\n color: #781351\n }\n\n /* URL */\n a:link, a:visited {\n background: transparent;\n color:#333;\n text-decoration:none;\n }\n\n a[href]:after {\n content: \"\" !important;\n }\n\n a[href^=\"http://\"] {\n color:#000;\n }\n\n #header {\n height:75px;\n font-size: 24pt;\n color:black\n }\n\n div.row-new-striped {\n margin: 0px;\n padding: 0px;\n }\n\n .pagination-detail, .fixed-table-toolbar {\n visibility: hidden;\n }\n .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 .col-sm-pull-3 .col-sm-push-9 {\n float: left;\n }\n\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666666666666%;\n }\n .col-sm-10 {\n width: 83.33333333333334%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666666666666%;\n }\n .col-sm-7 {\n width: 58.333333333333336%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666666666667%;\n }\n .col-sm-4 {\n width: 33.33333333333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.666666666666664%;\n }\n .col-sm-1 {\n width: 8.333333333333332%;\n }\n\n}\n\n\n.select2-selection__choice__remove {\n color: white !important;\n}\n\n.select2-selection--multiple {\n border-color: #d2d6de !important;\n overflow-y: auto;\n}\n\n.select2-selection__choice {\n border-radius: 0px !important;\n}\n\n.select2-search select2-search--inline {\n height: 35px !important;\n float: left;\n margin: 0;\n}\n\n\n\n.select2-results__option {\n padding: 5px;\n user-select: none;\n -webkit-user-select: none;\n margin: 0px;\n}\n\nimg.navbar-brand-img, .navbar-brand>img {\n float: left;\n padding: 5px 5px 5px 0;\n max-height: 50px;\n}\n\n.input-daterange, .input-daterange input:first-child, .input-daterange input:last-child {\n border-radius: 0px !important;\n}\n\n.btn.bg-maroon, .btn.bg-purple{\n min-width:90px;\n}\n\n[hidden] {\n display: none !important;\n}\n\n#toolbar {\n margin-top: 10px;\n}\n\n#uploadPreview {\n border-color: grey;\n border-width: 1px;\n border-style: solid\n}\n\n.icon-med {\n font-size: 14px;\n color: #889195;\n}\n\n#login-logo {\n padding-top: 20px;\n padding-bottom: 10px;\n max-width: 200px\n}\n\n// accessibility skip link\na.skip-main {\n left:-999px;\n position:absolute;\n top:auto;\n width:1px;\n height:1px;\n overflow:hidden;\n z-index:-999;\n}\na.skip-main:focus, a.skip-main:active {\n color: #fff;\n background-color:#000;\n left: auto;\n top: auto;\n width: 30%;\n height: auto;\n overflow:auto;\n margin: 10px 35%;\n padding:5px;\n border-radius: 15px;\n border:4px solid yellow;\n text-align:center;\n font-size:1.2em;\n z-index:999;\n}\n\nh2 {\n font-size: 22px;\n}\n\nh2.task_menu {\n font-size: 14px;\n}\n\nh2 small {\n font-size: 85%;\n}\n\nh3 {\n font-size: 20px;\n}\n\nh4 {\n font-size: 16px;\n}\n\n\n.row-striped {\n vertical-align: top;\n line-height: 2.6;\n padding: 0px;\n margin-left: 20px;\n box-sizing: border-box;\n //border-left: 1px solid #dddddd;\n //border-right: 1px solid #dddddd;\n display: table;\n}\n\n.row-striped .row:nth-of-type(odd) div {\n background-color: #f9f9f9;\n border-top: 1px solid #dddddd;\n display: table-cell;\n word-wrap: break-word;\n}\n\n.row-striped .row:nth-of-type(even) div {\n background: #FFFFFF;\n border-top: 1px solid #dddddd;\n display: table-cell;\n word-wrap: break-word;\n}\n\n\n.row-new-striped {\n vertical-align: top;\n padding: 3px;\n display: table;\n width: 100%;\n word-wrap: break-word;\n table-layout:fixed;\n}\n\n/**\n* NEW STRIPING\n* This section is for the new row striping for nicer \n* display for non-table data as of v6\n**/\n.row-new-striped > .row:nth-of-type(even) {\n background: #FFFFFF;\n border-top: 1px solid #dddddd;\n line-height: 1.9;\n display: table-row;\n}\n\n.row-new-striped > .row:nth-of-type(odd) {\n background-color: #F8F8F8;\n border-top: 1px solid #dddddd;\n display: table-row;\n line-height: 1.9;\n padding: 2px;\n}\n\n.row-new-striped div {\n display: table-cell;\n border-top: 1px solid #dddddd;\n padding: 6px;\n}\n\n.row-new-striped div {\n display: table-cell;\n border-top: 1px solid #dddddd;\n padding: 6px;\n}\n\n\n.row-new-striped div[class^=\"col\"]:first-child {\n font-weight: bold;\n}\n\n\n\n/**\n* This just adds a little extra padding on mobile\n**/\n@media only screen and (max-width: 520px) {\n h1.pagetitle {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n\n .firstnav {\n padding-top: 120px !important;\n }\n\n .product {\n width: 400px;\n }\n\n .product img {\n min-width: 400px;\n }\n}\n\n.card-view-title {\n min-width: 40% !important;\n line-height: 3.0!important;\n padding-right: 20px;\n}\n\n.card-view {\n display: table-row;\n flex-direction: column;\n}\n\n// ---------------\n\n/**\n\n COLUMN SELECTOR ICONS\n -----------------------------\n This is kind of weird, but it is necessary to prevent the column-selector code from barfing, since\n any HTML used in the UserPresenter \"title\" attribute breaks the column selector HTML.\n\n Instead, we use CSS to add the icon into the table header, which leaves the column selector\n \"title\" text as-is and hides the icon.\n\n See https://github.com/grokability/snipe-it/issues/7989\n */\nth.css-accessory > .th-inner,\nth.css-accessory-alt > .th-inner,\nth.css-barcode > .th-inner,\nth.css-component > .th-inner,\nth.css-consumable > .th-inner,\nth.css-envelope > .th-inner,\nth.css-house-flag > .th-inner,\nth.css-house-laptop > .th-inner,\nth.css-house-user > .th-inner,\nth.css-license > .th-inner,\nth.css-location > .th-inner,\nth.css-users > .th-inner,\nth.css-currency > .th-inner,\nth.css-child-locations > .th-inner,\nth.css-history > .th-inner\n{\n font-size: 0px;\n line-height: 0.75 !important;\n text-align: left;\n text-rendering: auto;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n\nth.css-location > .th-inner::before,\nth.css-accessory > .th-inner::before,\nth.css-accessory-alt > .th-inner::before,\nth.css-barcode > .th-inner::before,\nth.css-component > .th-inner::before,\nth.css-consumable > .th-inner::before,\nth.css-envelope > .th-inner::before,\nth.css-house-flag > .th-inner::before,\nth.css-house-laptop > .th-inner::before,\nth.css-house-user > .th-inner::before,\nth.css-license > .th-inner::before,\nth.css-location > .th-inner::before,\nth.css-users > .th-inner::before,\nth.css-currency > .th-inner::before,\nth.css-child-locations > .th-inner::before,\nth.css-history > .th-inner::before\n{\n display: inline-block;\n font-size: 20px;\n font-family: \"Font Awesome 5 Free\";\n font-weight: 900;\n}\n\n/**\nBEGIN ICON TABLE HEADERS\nSet the font-weight css property as 900 (For Solid), 400 (Regular or Brands), 300 (Light for pro icons).\n**/\nth.css-barcode > .th-inner::before\n{\n content: \"\\f02a\"; font-family: \"Font Awesome 5 Free\"; font-weight: 900;\n}\n\nth.css-license > .th-inner::before\n{\n content: \"\\f0c7\"; font-family: \"Font Awesome 5 Free\"; font-weight: 400;\n}\n\nth.css-consumable > .th-inner::before\n{\n content: \"\\f043\"; font-family: \"Font Awesome 5 Free\"; font-weight: 900;\n}\n\nth.css-envelope > .th-inner::before\n{\n content: \"\\f0e0\"; font-family: \"Font Awesome 5 Free\"; font-weight: 400;\n}\n\nth.css-accessory > .th-inner::before\n{\n content: \"\\f11c\"; font-family: \"Font Awesome 5 Free\"; font-weight: 400;\n}\n\nth.css-users > .th-inner::before {\n content: \"\\f0c0\"; font-family: \"Font Awesome 5 Free\"; font-size: 15px;\n}\n\nth.css-location > .th-inner::before {\n content: \"\\f3c5\"; font-family: \"Font Awesome 5 Free\"; font-size: 19px; margin-bottom: 0px;\n}\n\nth.css-component > .th-inner::before\n{\n content: \"\\f0a0\"; font-family: \"Font Awesome 5 Free\"; font-weight: 500;\n}\n\nth.css-padlock > .th-inner::before\n{\n content: \"\\f023\"; font-family: \"Font Awesome 5 Free\";\n font-weight: 800;\n padding-right: 3px;\n}\n\nth.css-house-user > .th-inner::before {\n content: \"\\e1b0\";\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\nth.css-house-flag > .th-inner::before {\n content: \"\\e50d\";\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\nth.css-house-laptop > .th-inner::before {\n content: \"\\e066\";\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\nth.css-accessory-alt > .th-inner::before {\n content: \"\\f11c\";\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\n\nth.css-child-locations > .th-inner::before {\n content: \"\\f64f\"; // change this to f51e for coins\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\n\nth.css-currency > .th-inner::before {\n content: \"\\24\"; // change this to f51e for coins\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\n\nth.css-history > .th-inner::before {\n content: \"\\f1da\"; // change this to f51e for coins\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\n\n\n.small-box .inner {\n padding-left: 15px;\n padding-right: 15px;\n padding-top: 15px;\n color: #fff;\n}\n\n\n.small-box > a:link, .small-box > a:visited, .small-box > a:hover {\n color: #fff;\n}\n\n.select2-container--default .select2-selection--single, .select2-selection .select2-selection--single {\n border: 1px solid #d2d6de;\n border-radius: 0;\n padding: 6px 12px;\n height: 34px;\n}\n\n.form-group.has-error label, .form-group.has-error .help-block {\n color: #a94442;\n}\n\n.select2-container--default .select2-selection--multiple {\n border-radius: 0px;\n}\n\n@media screen and (max-width: 511px){\n .tab-content .tab-pane .alert-block {\n margin-top: 120px\n }\n .sidebar-menu{\n margin-top:160px;\n }\n}\n@media screen and (max-width: 912px) and (min-width: 512px){\n .sidebar-menu {\n margin-top:100px\n }\n .navbar-custom-menu > .navbar-nav > li.dropdown.user.user-menu {\n float:right;\n }\n .navbar-custom-menu > .navbar-nav > li > .dropdown-menu {\n margin-right:-39px;\n }\n}\n\n@media screen and (max-width: 1268px) and (min-width: 912px){\n .sidebar-menu {\n margin-top:50px\n }\n}\n@media screen and (max-width: 992px){\n .info-stack-container {\n flex-direction: column;\n }\n .col-md-3.col-xs-12.col-sm-push-9.info-stack{\n left:auto;\n order:1;\n }\n .col-md-9.col-xs-12.col-sm-pull-3.info-stack{\n right:auto;\n order:2;\n }\n .info-stack-container > .col-md-9.col-xs-12.col-sm-pull-3.info-stack > .row-new-striped > .row > .col-sm-2{\n width:auto;\n float:none;\n }\n}\n@media screen and (max-width: 992px){\n .row-new-striped div{\n width:100%;\n }\n}\n\n@media screen and (max-width: 1318px) and (min-width: 1200px){\n .admin.box{\n height:170px;\n }\n}\n@media screen and (max-width: 1494px) and (min-width: 1200px){\n .dashboard.small-box{\n white-space: nowrap;\n text-overflow: ellipsis;\n max-width: 188px;\n display: block;\n overflow: hidden;\n }\n}\n\n/** Form-stuff overrides for checkboxes and stuff **/\n\nlabel.form-control {\n display: grid;\n grid-template-columns: 1.8em auto;\n gap: 0.5em;\n border: 0px;\n padding-left: 0px;\n background-color: inherit;\n color: inherit;\n font-size: inherit;\n font-weight: inherit;\n}\n\nlabel.form-control--disabled {\n color: #959495;\n cursor: not-allowed;\n}\n\n\n/** --------------------------------------- **/\n/** Start checkbox styles to replace iCheck **/\n/** --------------------------------------- **/\ninput[type=\"checkbox\"] {\n /* Add if not using autoprefixer */\n -webkit-appearance: none;\n appearance: none;\n /* For iOS < 15 to remove gradient background */\n background-color: #fff;\n /* Not removed via appearance */\n margin: 0;\n font: inherit;\n color: #959495;\n width: 1.8em;\n height: 1.8em;\n border: 0.05em solid;\n border-radius: 0em;\n transform: translateY(-0.075em);\n display: grid;\n place-content: center;\n /*Windows High Contrast Mode*/\n}\n\n/** This sets the display of a checkbox, and what the \"fill\" checkmark should look like */\n\ninput[type=\"checkbox\"]::before {\n\n /** If you want to use the non-checkbox, filled square, use this instead **/\n content: \"\";\n width: 1em;\n height: 1em;\n transform: scale(0);\n transition: 120ms transform ease-in-out;\n box-shadow: inset 1em 1em rgb(211, 211, 211);\n\n content: \"\";\n width: 1em;\n height: 1em;\n clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);\n transform: scale(0);\n transform-origin: bottom left;\n transition: 120ms transform ease-in-out;\n box-shadow: inset 1em 1em #428bca;\n /* Windows High Contrast Mode */\n background-color: CanvasText;\n}\n\n/** This sets the size of the scale up for the shape we defined above **/\ninput[type=\"checkbox\"]:checked::before {\n transform: scale(1);\n}\n\n/** This sets the scale and color of the DISABLED but CHECKED checkbox */\ninput[type=checkbox]:disabled::before, input[type=radio]:disabled::before {\n content: \"\";\n width: 1em;\n height: 1em;\n transform: scale(1);\n box-shadow: inset 1em 1em rgb(211, 211, 211);\n}\n\n/* This sets the scale and style of a DISABLED checkbox that is NOT checked */\ninput[type=checkbox]:disabled:not(:checked)::before, input[type=radio]:disabled:not(:checked)::before {\n content: \"\";\n transform: scale(0);\n cursor: not-allowed;\n pointer-events:none;\n}\n\n/** this is the color of the checkbox and content on a disabled, checked box **/\ninput[type=checkbox]:disabled, input[type=radio]:disabled {\n --form-control-color: rgb(211, 211, 211);\n color: #959495;\n cursor: not-allowed;\n pointer-events:none;\n}\n\n\n/** Radio styles to replace iCheck **/\n\ninput[type=\"radio\"] {\n appearance: none;\n background-color: #fff;\n margin: 0;\n font: inherit;\n color: #959495;\n width: 1.8em;\n height: 1.8em;\n border: 0.05em solid;\n border-radius: 50%;\n transform: translateY(-0.075em);\n display: grid;\n place-content: center;\n}\n\ninput[type=\"radio\"]::before {\n content: \"\";\n width: 1em;\n height: 1em;\n border-radius: 50%;\n transform: scale(0);\n transition: 120ms transform ease-in-out;\n box-shadow: inset 1em 1em #428bca;\n}\n\ninput[type=\"radio\"]:checked::before {\n transform: scale(1);\n}\n\n\n/**\n* This addresses the column selector in bootstrap-table. Without these two lines, the\n* checkbox and the with the label text that BS tables generates will\n* end up on two different lines and it looks assy.\n */\n.dropdown-item-marker input[type=checkbox] {\n font-size: 10px;\n}\n\n.bootstrap-table .fixed-table-toolbar li.dropdown-item-marker label {\n font-weight: normal;\n display: grid;\n grid-template-columns: .1em auto;\n gap: 1.5em;\n}\n\n.container.row-striped .col-md-6 {\n overflow-wrap:anywhere;\n}\n\n.nav-tabs-custom > .nav-tabs > li {\n z-index: 1;\n}\n\n.select2-container .select2-search--inline .select2-search__field{\n padding-left:15px;\n}\n\n.nav-tabs-custom > .nav-tabs > li.active {\n font-weight: bold;\n}\n\n/** --------------------------------------- **/\n/** End checkbox styles to replace iCheck **/\n/** --------------------------------------- **/\n\n/**\n/** Separator styles with text in the middle. Currently only used by the login page but\n/** could be used elsewhere.\n */\n\n.separator {\n display: flex;\n align-items: center;\n text-align: center;\n padding-top: 20px;\n color: #959495;\n}\n\n.separator::before,\n.separator::after {\n content: '';\n flex: 1;\n border-bottom: 1px solid #959495;\n}\n\n.separator:not(:empty)::before {\n margin-right: .25em;\n}\n\n.separator:not(:empty)::after {\n margin-left: .25em;\n}\n.datepicker.dropdown-menu {\n z-index: 1030 !important;\n}\n\n.sidebar-menu > li .badge {\n margin-top: 0px;\n filter: brightness(70%);\n font-size: 70%;\n}\n\n/** this is needed to override ekko-lightboxes card view styles **/\n.bootstrap-table .fixed-table-container .table tbody tr .card-view {\n display: table-row !important;\n}\n\n.form-control-static {\n padding-top: 0px;\n}\n\n\ntd.text-right.text-padding-number-cell {\n padding-right: 30px !important;\n white-space: nowrap;\n}\n\nth.text-right.text-padding-number-footer-cell {\n padding-right: 20px !important;\n white-space: nowrap;\n}\n\ncode.single-line {\n white-space: pre-wrap;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n overflow: hidden;\n max-width: 400px;\n}\n\np.monospace, span.monospace {\n font-family: monospace, monospace;\n}\n\nlegend.highlight {\n background: repeating-linear-gradient(\n 45deg,\n #222d32,\n #222d32 10px,\n #444 10px,\n #444 11px\n );\n\n color: #fff;\n font-size: 18px;\n padding: 6px 6px 6px 10px;\n}\n\nlegend.highlight a {\n color: #fff;\n cursor: pointer;\n}\n\nfieldset.bottom-padded {\n padding-bottom: 20px;\n}\n\ncaption.tableCaption {\n font-size: 18px;\n padding-left: 8px;\n}\n\n// via https://github.com/grokability/snipe-it/issues/11754\n.sidebar-toggle.btn {\n border-radius: 3px;\n box-shadow: none;\n border-top: 0px solid transparent;\n border-bottom: 0px solid transparent;\n padding-left: 15px;\n padding-right: 15px;\n padding-top: 12px;\n padding-bottom: 12px;\n margin-left: -47px;\n margin-top: 2px;\n}\n.popover.help-popover,\n.popover.help-popover .popover-content,\n.popover.help-popover .popover-body,\n.popover.help-popover .popover-title,\n.popover.help-popover .popover-header {\n color: #000;\n}\n\n.visually-hidden {\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n clip: rect(0,0,0,0);\n white-space: preserve;\n display: inline-block;\n}\n\ninput[name=\"columnsSearch\"] {\n width: 120px;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/public/css/build/overrides.css b/public/css/build/overrides.css index 07bf247401..1ca3a32741 100644 --- a/public/css/build/overrides.css +++ b/public/css/build/overrides.css @@ -1125,6 +1125,9 @@ caption.tableCaption { white-space: preserve; display: inline-block; } +input[name="columnsSearch"] { + width: 120px; +} /*# sourceMappingURL=overrides.css.map*/ \ No newline at end of file diff --git a/public/css/build/overrides.css.map b/public/css/build/overrides.css.map index ae304fe92a..66b4379a52 100644 --- a/public/css/build/overrides.css.map +++ b/public/css/build/overrides.css.map @@ -1 +1 @@ -{"version":3,"file":"css/build/overrides.css","mappings":"AAAA;EAkBE;AAhBF;AAkBA;EACE;EACA;EACA;EACA;EACA;AAhBF;AAiBE;;;EACE;AAbJ;AAgBA;EACE;AAdF;AAiBA;EACE;EACA;AAfF;AAkBA;EACE;AAhBF;AAoBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AAlBF;AAqBA;EACE;EACA;EACA;EACA;EACA;AAnBF;AAsBA;EACE;AApBF;AAuBA;EACE;AArBF;AAwBA;EACE;EACA;AAtBF;AA0BA;EACE;AAxBF;AA2BA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAzBF;AA2BA;EACE;AAzBF;AA2BA;EACE;AAzBF;AA6BA;EACE;AA3BF;AA6BA;EACE;AA3BF;AA+BA;EACE;EACA;EACA;AA7BF;AAgCA;EACE;EACA;EACA;AA9BF;AAqDA;EACE;AAnDF;AAsDA;EACE;EACA;EACA;AApDF;AAuDA;EACE;EACA;AArDF;AAwDA;EACE;AAtDF;AAyDA;EACE;EACA;AAvDF;AA0DA;;EACE;EACA;AAvDF;AA0DA;EACE;EACA;AAxDF;AA0DA;EACE;AAxDF;AA2DA;EACE;EACA;EACA;AAzDF;AA4DA;EACE;AA1DF;AA6DA;EACE;AA3DF;AA8DA;EACE;AA5DF;AA8DA;EACE;AA5DF;AA+DA;EACE;AA7DF;AAgEA;;;;EACE;AA3DF;AA8DA;;;;;EACE;AAxDF;AA2DA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAzDF;AA2DA;EACE;EACA;EACA;EACA;EACA;EACA;AAzDF;AA2DA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAzDF;AA2DA;EACE;AAzDF;AA2DA;EACE;EACA;EACA;EACA;AAzDF;AA2DA;EACE;EACA;AAzDF;AA2DA;EACE;EACA;EACA;EACA;EACA;AAzDF;AA2DA;EACE;EACA;AAzDF;AA2DA;EACE;EACA;EACA;EACA;AAzDF;AA4DA;EACE;EACA;AA1DF;AA+DA;EAAY;AA5DZ;AACA,cAAc;AA8Dd;EAAY;EAAkC;AA1D9C;AA2DA;EAA8B;EAAY;AAvD1C;AAyDA;EAAiD;EAAgB;EAAiB;AApDlF;AAqDA;EAA8C;EAAa;AAjD3D;AAkDA;EAA+C;EAAoB;EAAa;EAAc;EAAgB;EAAqB;EAAW;EAAW;EAAmB;EAAoB;AAtChM;AAuCA;EAAqD;EAAc;EAAa;EAAc;EAAqB;EAAqB;EAAoB;EAAU;AA7BtK;AA8BA;EAA0C;EAAoB;EAAoB;EAAa;EAAkB;AAvBjH;AAwBA;EAA0D;EAAW;EAAkB;AAnBvF;AAoBA;EAAmE;AAjBnE;AAkBA;EAAiE;AAfjE;AAgBA;EAA6E;AAb7E;AAcA;EAA4E;AAX5E;AAYA;EAAwD;AATxD;AAUA;EAA8D;AAP9D;AAQA;EAAuD;EAAW;AAJlE;AAKA;EAAsD;AAFtD;AAGA;EAAuD;AAAvD;AACA,kBAAkB;AAElB;EACE;EACA;EACA;EACA;EACA;EAAA,gCAAgC;AAClC;AAGA;EAkBE;AAlBF;AAqBA;EACE;AAnBF;AAuBA;;EACE;AApBF;AAsBA;;EACE;AAnBF;AAsBA;EACE;EAIA;AAvBF;AA0BA;EACE;EACA;AAxBF;AA2BA;EACE;AAzBF;AA4BA;EACE;AA1BF;AA6BA;EAEE;IACE;IACA;EA5BF;EA+BA;IACE;IACA;IACA;EA7BF;EAgCA;IACE;EA9BF;EAiCA;;IACE;EA9BF;EAiCA;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;EA/BF;EACA,+CAA+C;EAkC/C;IACE;EAhCF;EAmCA;IACE;EAjCF;EAoCA;IACE;EAlCF;EAqCA;IACE;EAnCF;EACA,qCAAqC;EAsCrC;;IACE;EAnCF;EACA,QAAQ;EAsCR;;IACE;IACA;IACA;EAnCF;EAsCA;IACE;EApCF;EAuCA;IACE;EArCF;EAwCA;IACE;IACA;IACA;EAtCF;EAyCA;IACE;IACA;EAvCF;EA0CA;;IACE;EAvCF;EAyCA;;;;;;;;;;;;IACE;EA5BF;EA+BA;IACE;EA7BF;EA+BA;IACE;EA7BF;EA+BA;IACE;EA7BF;EA+BA;IACE;EA7BF;EA+BA;IACE;EA7BF;EA+BA;IACE;EA7BF;EA+BA;IACE;EA7BF;EA+BA;IACE;EA7BF;EA+BA;IACE;EA7BF;EA+BA;IACE;EA7BF;EA+BA;IACE;EA7BF;EA+BA;IACE;EA7BF;AACF;AAkCA;EACE;AAhCF;AAmCA;EACI;EACA;AAjCJ;AAoCA;EACE;AAlCF;AAqCA;EACE;EACA;EACA;AAnCF;AAwCA;EACE;EACA;OAAA;EACA;EACA;AAtCF;AAyCA;;EACE;EACA;EACA;AAtCF;AAyCA;;;EACE;AArCF;AAwCA;;EACE;AArCF;AAwCA;EACE;AAtCF;AAyCA;EACE;AAvCF;AA0CA;EACE;EACA;EACA;AAxCF;AA2CA;EACE;EACA;AAzCF;AA4CA;EACE;EACA;EACA;AA1CF;AA8CA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AA5CF;AA8CA;;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA3CF;AA8CA;EACE;AA5CF;AA+CA;EACE;AA7CF;AAgDA;EACE;AA9CF;AAiDA;EACE;AA/CF;AAkDA;EACE;AAhDF;AAoDA;EACE;EACA;EACA;EACA;EACA;EAGA;AApDF;AAuDA;EACE;EACA;EACA;EACA;AArDF;AAwDA;EACE;EACA;EACA;EACA;AAtDF;AA0DA;EACE;EACA;EACA;EACA;EACA;EACA;AAxDF;AACA;;;;EAIE;AA2DF;EACE;EACA;EACA;EACA;AAzDF;AA4DA;EACE;EACA;EACA;EACA;EACA;AA1DF;AA6DA;EACE;EACA;EACA;AA3DF;AA8DA;EACE;EACA;EACA;AA5DF;AAgEA;EACE;AA9DF;AACA;;EAEE;AAmEF;EACE;IACE;IACA;EAjEF;EAoEA;IACE;EAlEF;EAqEA;IACE;EAnEF;EAsEA;IACE;EApEF;AACF;AAuEA;EACE;EACA;EACA;AArEF;AAwEA;EACE;EACA;AAtEF;AACA;;;;;;;;;;;EAWE;AA2EF;;;;;;;;;;;;;;;EAgBE;EACA;EACA;EACA;EACA;EACA;AA1EF;AA8EA;;;;;;;;;;;;;;;;EAiBE;EACA;EACA;EACA;AA7EF;AACA;;;EAGE;AAgFF;EAEE;EAAkB;EAAoC;AA7ExD;AAgFA;EAEE;EAAkB;EAAoC;AA7ExD;AAgFA;EAEE;EAAkB;EAAoC;AA7ExD;AAgFA;EAEE;EAAkB;EAAoC;AA7ExD;AAgFA;EAEE;EAAkB;EAAoC;AA7ExD;AAgFA;EACE;EAAkB;EAAoC;AA5ExD;AA+EA;EACE;EAAkB;EAAoC;EAAiB;AA1EzE;AA6EA;EAEE;EAAkB;EAAoC;AA1ExD;AA6EA;EAEE;EAAkB;EAClB;EACA;AA3EF;AA8EA;EACE;EACA;EACA;EACA;AA5EF;AA8EA;EACE;EACA;EACA;EACA;AA5EF;AA8EA;EACE;EACA;EACA;EACA;AA5EF;AA8EA;EACE;EACA;EACA;EACA;AA5EF;AA+EA;EACE;EACA;EACA;EACA;AA7EF;AAgFA;EACE;EACA;EACA;EACA;AA9EF;AAiFA;EACE;EACA;EACA;EACA;AA/EF;AAmFA;EACE;EACA;EACA;EACA;AAjFF;AAqFA;;;EACE;AAjFF;AAoFA;;EACE;EACA;EACA;EACA;AAjFF;AAoFA;;EACE;AAjFF;AAoFA;EACE;AAlFF;AAqFA;EACE;IACE;EAnFF;EAqFA;IACE;EAnFF;AACF;AAqFA;EACE;IACE;EAnFF;EAqFA;IACE;EAnFF;EAqFA;IACE;EAnFF;AACF;AAsFA;EACE;IACE;EApFF;AACF;AAsFA;EACE;IACE;EApFF;EAsFA;IACE;IACA;EApFF;EAsFA;IACE;IACA;EApFF;EAsFA;IACE;IACA;EApFF;AACF;AAsFA;EACE;IACE;EApFF;AACF;AAuFA;EACE;IACE;EArFF;AACF;AAuFA;EACE;IACE;IACA;IACA;IACA;IACA;EArFF;AACF;AACA,oDAAoD;AAyFpD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAvFF;AA0FA;EACE;EACA;AAxFF;AACA,8CAA8C;AAC9C,8CAA8C;AAC9C,8CAA8C;AA4F9C;EA1FE,kCAAkC;EA4FlC;EACA;OAAA;EA1FA,+CAA+C;EA4F/C;EA1FA,+BAA+B;EA4F/B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA1FA,6BAA6B;AAC/B;AACA,yFAAyF;AA8FzF;EA5FE,2EAA2E;EAoG3E;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAnGA,+BAA+B;EAqG/B;AAnGF;AACA,wEAAwE;AAsGxE;EACE;AApGF;AACA,wEAAwE;AAuGxE;;EACE;EACA;EACA;EACA;EACA;AApGF;AACA,6EAA6E;AAuG7E;;EACE;EACA;EACA;EACA;AApGF;AACA,+EAA+E;AAuG/E;;EACE;EACA;EACA;EACA;AApGF;AACA,qCAAqC;AAyGrC;EACE;KAAA;UAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAvGF;AA0GA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AAxGF;AA2GA;EACE;AAzGF;AACA;;;;EAIE;AA6GF;EACE;AA3GF;AA8GA;EACE;EACA;EACA;EACA;AA5GF;AA+GA;EACE;AA7GF;AAgHA;EACE;AA9GF;AAiHA;EACE;AA/GF;AAkHA;EACE;AAhHF;AACA,8CAA8C;AAC9C,8CAA8C;AAC9C,8CAA8C;AAC9C;;;EAGE;AAqHF;EACE;EACA;EACA;EACA;EACA;AAnHF;AAsHA;;EAEE;EACA;EACA;AApHF;AAuHA;EACE;AArHF;AAwHA;EACE;AAtHF;AAwHA;EACE;AAtHF;AAyHA;EACE;EACA;EACA;AAvHF;AACA,kEAAkE;AA0HlE;EACE;AAxHF;AA2HA;EACE;AAzHF;AA6HA;EACE;EACA;AA3HF;AA8HA;EACE;EACA;AA5HF;AA+HA;EACE;EACA;EACA;EACA;EACA;EACA;AA7HF;AAgIA;;EACE;AA7HF;AAgIA;EACE;EAQA;EACA;EACA;AArIF;AAwIA;EACE;EACA;AAtIF;AAyIA;EACE;AAvIF;AA0IA;EACE;EACA;AAxIF;AA4IA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA1IF;AA4IA;;;;;EAKE;AA1IF;AA6IA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AA3IF","sources":["webpack:///./resources/assets/less/overrides.less"],"sourcesContent":[".skin-red\n.skin-purple\n.skin-blue\n.skin-black\n.skin-orange\n.skin-yellow\n.skin-green\n.skin-red-dark\n.skin-purple-dark\n.skin-blue-dark\n.skin-black-dark\n.skin-orange-dark\n.skin-yellow-dark\n.skin-green-dark\n.skin-contrast\n.main-header\n\n.logo {\n background-color: inherit;\n}\n.main-header .logo {\n width: 100% !important;\n white-space: nowrap;\n text-align: left;\n display: block;\n clear: both;\n &a:link, a:hover, a:visited {\n color: #fff\n }\n}\n.huge {\n font-size: 40px;\n}\n\n.btn-file {\n position: relative;\n overflow: hidden;\n}\n\n.dropdown-menu>li>a {\n color: #354044;\n}\n\n\n#sort tr.cansort {\n border-radius: 2px;\n padding: 10px;\n background: #f4f4f4;\n margin-bottom: 3px;\n border-inline: 2px solid #e6e7e8;\n color: #444;\n cursor: move;\n}\n\n.user-image-inline {\n float: left;\n width: 25px;\n height: 25px;\n border-radius: 50%;\n margin-right: 10px;\n}\n\n.input-group .input-group-addon {\n background-color: #f4f4f4;\n}\n\na.accordion-header {\n color: #333;\n}\n\n.dynamic-form-row {\n padding: 10px;\n margin: 20px;\n}\n\n\n.handle {\n padding-left: 10px;\n}\n\n.btn-file input[type=file] {\n position: absolute;\n top: 0;\n right: 0;\n min-width: 100%;\n min-height: 100%;\n font-size: 100px;\n text-align: right;\n filter: alpha(opacity=0);\n opacity: 0;\n outline: none;\n background: white;\n cursor: inherit;\n display: block;\n}\n.main-footer {\n font-size: 13px;\n}\n.main-header {\n max-height: 150px;\n}\n\n\n.navbar-nav>.user-menu>.dropdown-menu {\n width: inherit;\n}\n.main-header .logo {\n padding: 0px 5px 0px 15px;\n}\n\n\n.sidebar-toggle {\n margin-left: -48px;\n z-index: 100;\n background-color: inherit;\n}\n\n.sidebar-toggle-mobile {\n z-index: 100;\n width: 50px;\n padding-top: 10px;\n}\n\n.skin-red\n.skin-purple\n.skin-blue\n.skin-black\n.skin-orange\n.skin-yellow\n.skin-green\n.skin-red-dark\n.skin-purple-dark\n.skin-blue-dark\n.skin-black-dark\n.skin-orange-dark\n.skin-yellow-dark\n.skin-green-dark\n.skin-contrast\n.main-header\n.navbar\n.dropdown-menu li a {\n //color: inherit;\n}\n.pull-text-right{\n text-align: right !important;\n}\n\n.main-header .sidebar-toggle:before {\n content: \"\\f0c9\";\n font-weight: 900;\n font-family: 'Font Awesome\\ 5 Free';\n}\n\n.direct-chat-contacts {\n padding: 10px;\n height: 150px;\n}\n\n.select2-container {\n width: 100%;\n}\n\n.error input {\n color: #a94442;\n border: 2px solid #a94442 !important;\n}\n\n.error label, .alert-msg {\n color: #a94442;\n display: block;\n}\n\n.input-group[class*=\"col-\"] {\n padding-right: 15px;\n padding-left: 15px;\n}\n.control-label.multiline {\n padding-top: 10px;\n}\n\n.btn-outline {\n color: inherit;\n background-color: transparent;\n transition: all .5s;\n}\n\n.btn-primary.btn-outline {\n color: #428bca;\n}\n\n.btn-success.btn-outline {\n color: #5cb85c;\n}\n\n.btn-info.btn-outline {\n color: #5bc0de;\n}\n.btn-warning{\n background-color:#f39c12 !important;\n}\n\n.btn-warning.btn-outline {\n color: #f0ad4e;\n}\n\n.btn-danger.btn-outline, a.link-danger:link, a.link-danger:visited, a.link-danger:hover {\n color: #dd4b39;\n}\n\n.btn-primary.btn-outline:hover, .btn-success.btn-outline:hover, .btn-info.btn-outline:hover, .btn-warning.btn-outline:hover, .btn-danger.btn-outline:hover {\n color: #fff;\n}\n\n.slideout-menu {\n position: fixed;\n top: 0;\n right: -250px;\n width: 250px;\n height: 100%;\n background: #333;\n z-index: 100;\n margin-top: 100px;\n color: white;\n padding: 10px;\n}\n.slideout-menu h3 {\n position: relative;\n padding: 5px 5px;\n color: #fff;\n font-size: 1.2em;\n font-weight: 400;\n border-bottom: 4px solid #222;\n}\n.slideout-menu .slideout-menu-toggle {\n position: absolute;\n top: 12px;\n right: 10px;\n display: inline-block;\n padding: 6px 9px 5px;\n font-family: Arial, sans-serif;\n font-weight: bold;\n line-height: 1;\n background: #222;\n color: #999;\n text-decoration: none;\n vertical-align: top;\n}\n.slideout-menu .slideout-menu-toggle:hover {\n color: #fff;\n}\n.slideout-menu ul {\n list-style: none;\n font-weight: 300;\n border-top: 1px solid #151515;\n border-bottom: 1px solid #454545;\n}\n.slideout-menu ul li {\n border-top: 1px solid #454545;\n border-bottom: 1px solid #151515;\n}\n.slideout-menu ul li a {\n position: relative;\n display: block;\n padding: 10px;\n color: #999;\n text-decoration: none;\n}\n.slideout-menu ul li a:hover {\n background: #000;\n color: #fff;\n}\n.slideout-menu ul li a i {\n position: absolute;\n top: 15px;\n right: 10px;\n opacity: .5;\n}\n\n.btn-box-tool-lg {\n font-size: 16px;\n color: orange;\n}\n\n\n\n.bs-wizard {margin-top: 20px;}\n\n/*Form Wizard*/\n.bs-wizard {border-bottom: solid 1px #e0e0e0; padding: 0 0 10px 0;}\n.bs-wizard > .bs-wizard-step {padding: 0; position: relative;}\n.bs-wizard > .bs-wizard-step + .bs-wizard-step {}\n.bs-wizard > .bs-wizard-step .bs-wizard-stepnum {color: #595959; font-size: 16px; margin-bottom: 5px;}\n.bs-wizard > .bs-wizard-step .bs-wizard-info {color: #999; font-size: 14px;}\n.bs-wizard > .bs-wizard-step > .bs-wizard-dot {position: absolute; width: 30px; height: 30px; display: block; background: #fbe8aa; top: 45px; left: 50%; margin-top: -15px; margin-left: -15px; border-radius: 50%;}\n.bs-wizard > .bs-wizard-step > .bs-wizard-dot:after {content: ' '; width: 14px; height: 14px; background: #fbbd19; border-radius: 50px; position: absolute; top: 8px; left: 8px; }\n.bs-wizard > .bs-wizard-step > .progress {position: relative; border-radius: 0px; height: 8px; box-shadow: none; margin: 20px 0;}\n.bs-wizard > .bs-wizard-step > .progress > .progress-bar {width:0px; box-shadow: none; background: #fbe8aa;}\n.bs-wizard > .bs-wizard-step.complete > .progress > .progress-bar {width:100%;}\n.bs-wizard > .bs-wizard-step.active > .progress > .progress-bar {width:50%;}\n.bs-wizard > .bs-wizard-step:first-child.active > .progress > .progress-bar {width:0%;}\n.bs-wizard > .bs-wizard-step:last-child.active > .progress > .progress-bar {width: 100%;}\n.bs-wizard > .bs-wizard-step.disabled > .bs-wizard-dot {background-color: #f5f5f5;}\n.bs-wizard > .bs-wizard-step.disabled > .bs-wizard-dot:after {opacity: 0;}\n.bs-wizard > .bs-wizard-step:first-child > .progress {left: 50%; width: 50%;}\n.bs-wizard > .bs-wizard-step:last-child > .progress {width: 50%;}\n.bs-wizard > .bs-wizard-step.disabled a.bs-wizard-dot{ pointer-events: none; }\n/*END Form Wizard*/\n\n.left-navblock {\n display: inline-block;\n float: left;\n text-align: left;\n color: white;\n padding: 0px;\n /* adjust based on your layout */\n\n}\n.skin-red\n.skin-purple\n.skin-blue\n.skin-black\n.skin-orange\n.skin-yellow\n.skin-green\n.skin-red-dark\n.skin-purple-dark\n.skin-blue-dark\n.skin-black-dark\n.skin-orange-dark\n.skin-yellow-dark\n.skin-green-dark\n.skin-contrast\n.main-header\n.navbar\n.dropdown-menu li a {\n color: #333;\n}\n\na.logo.no-hover a:hover {\n background-color: transparent;\n}\n\n\ninput:required, select:required {\n border-right: 5px solid orange;\n}\nselect:required + .select2-container .select2-selection, select:required + .select2-container .select2-selection .select2-selection--multiple {\n border-right: 5px solid orange !important;\n}\n\nbody {\n font-family: -apple-system, BlinkMacSystemFont,\n \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\",\n \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;\n font-size: 13px;\n}\n\n.sidebar-menu {\n font-size: 14px;\n white-space: normal;\n}\n\n.modal-warning .modal-help {\n color: #fff8af;\n}\n\n.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading {\n z-index: 0 !important;\n}\n\n@media print {\n\n @page {\n size: A4;\n margin: 0mm;\n }\n\n .tab-content > .tab-pane {\n display: block !important;\n opacity: 1 !important;\n visibility: visible !important;\n }\n\n .img-responsive {\n width: 200px;\n }\n\n html, body {\n width: 1024px;\n }\n\n body {\n margin: 0 auto;\n line-height: 1em;\n word-spacing:1px;\n letter-spacing:0.2px;\n font: 15px \"Times New Roman\", Times, serif;\n background:white;\n color:black;\n width: 100%;\n float: none;\n }\n\n /* avoid page-breaks inside a listingContainer*/\n .listingContainer {\n page-break-inside: avoid;\n }\n\n h1 {\n font: 28px \"Times New Roman\", Times, serif;\n }\n\n h2 {\n font: 24px \"Times New Roman\", Times, serif;\n }\n\n h3 {\n font: 20px \"Times New Roman\", Times, serif;\n }\n\n /* Improve colour contrast of links */\n a:link, a:visited {\n color: #781351\n }\n\n /* URL */\n a:link, a:visited {\n background: transparent;\n color:#333;\n text-decoration:none;\n }\n\n a[href]:after {\n content: \"\" !important;\n }\n\n a[href^=\"http://\"] {\n color:#000;\n }\n\n #header {\n height:75px;\n font-size: 24pt;\n color:black\n }\n\n div.row-new-striped {\n margin: 0px;\n padding: 0px;\n }\n\n .pagination-detail, .fixed-table-toolbar {\n visibility: hidden;\n }\n .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 .col-sm-pull-3 .col-sm-push-9 {\n float: left;\n }\n\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666666666666%;\n }\n .col-sm-10 {\n width: 83.33333333333334%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666666666666%;\n }\n .col-sm-7 {\n width: 58.333333333333336%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666666666667%;\n }\n .col-sm-4 {\n width: 33.33333333333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.666666666666664%;\n }\n .col-sm-1 {\n width: 8.333333333333332%;\n }\n\n}\n\n\n.select2-selection__choice__remove {\n color: white !important;\n}\n\n.select2-selection--multiple {\n border-color: #d2d6de !important;\n overflow-y: auto;\n}\n\n.select2-selection__choice {\n border-radius: 0px !important;\n}\n\n.select2-search select2-search--inline {\n height: 35px !important;\n float: left;\n margin: 0;\n}\n\n\n\n.select2-results__option {\n padding: 5px;\n user-select: none;\n -webkit-user-select: none;\n margin: 0px;\n}\n\nimg.navbar-brand-img, .navbar-brand>img {\n float: left;\n padding: 5px 5px 5px 0;\n max-height: 50px;\n}\n\n.input-daterange, .input-daterange input:first-child, .input-daterange input:last-child {\n border-radius: 0px !important;\n}\n\n.btn.bg-maroon, .btn.bg-purple{\n min-width:90px;\n}\n\n[hidden] {\n display: none !important;\n}\n\n#toolbar {\n margin-top: 10px;\n}\n\n#uploadPreview {\n border-color: grey;\n border-width: 1px;\n border-style: solid\n}\n\n.icon-med {\n font-size: 14px;\n color: #889195;\n}\n\n#login-logo {\n padding-top: 20px;\n padding-bottom: 10px;\n max-width: 200px\n}\n\n// accessibility skip link\na.skip-main {\n left:-999px;\n position:absolute;\n top:auto;\n width:1px;\n height:1px;\n overflow:hidden;\n z-index:-999;\n}\na.skip-main:focus, a.skip-main:active {\n color: #fff;\n background-color:#000;\n left: auto;\n top: auto;\n width: 30%;\n height: auto;\n overflow:auto;\n margin: 10px 35%;\n padding:5px;\n border-radius: 15px;\n border:4px solid yellow;\n text-align:center;\n font-size:1.2em;\n z-index:999;\n}\n\nh2 {\n font-size: 22px;\n}\n\nh2.task_menu {\n font-size: 14px;\n}\n\nh2 small {\n font-size: 85%;\n}\n\nh3 {\n font-size: 20px;\n}\n\nh4 {\n font-size: 16px;\n}\n\n\n.row-striped {\n vertical-align: top;\n line-height: 2.6;\n padding: 0px;\n margin-left: 20px;\n box-sizing: border-box;\n //border-left: 1px solid #dddddd;\n //border-right: 1px solid #dddddd;\n display: table;\n}\n\n.row-striped .row:nth-of-type(odd) div {\n background-color: #f9f9f9;\n border-top: 1px solid #dddddd;\n display: table-cell;\n word-wrap: break-word;\n}\n\n.row-striped .row:nth-of-type(even) div {\n background: #FFFFFF;\n border-top: 1px solid #dddddd;\n display: table-cell;\n word-wrap: break-word;\n}\n\n\n.row-new-striped {\n vertical-align: top;\n padding: 3px;\n display: table;\n width: 100%;\n word-wrap: break-word;\n table-layout:fixed;\n}\n\n/**\n* NEW STRIPING\n* This section is for the new row striping for nicer \n* display for non-table data as of v6\n**/\n.row-new-striped > .row:nth-of-type(even) {\n background: #FFFFFF;\n border-top: 1px solid #dddddd;\n line-height: 1.9;\n display: table-row;\n}\n\n.row-new-striped > .row:nth-of-type(odd) {\n background-color: #F8F8F8;\n border-top: 1px solid #dddddd;\n display: table-row;\n line-height: 1.9;\n padding: 2px;\n}\n\n.row-new-striped div {\n display: table-cell;\n border-top: 1px solid #dddddd;\n padding: 6px;\n}\n\n.row-new-striped div {\n display: table-cell;\n border-top: 1px solid #dddddd;\n padding: 6px;\n}\n\n\n.row-new-striped div[class^=\"col\"]:first-child {\n font-weight: bold;\n}\n\n\n\n/**\n* This just adds a little extra padding on mobile\n**/\n@media only screen and (max-width: 520px) {\n h1.pagetitle {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n\n .firstnav {\n padding-top: 120px !important;\n }\n\n .product {\n width: 400px;\n }\n\n .product img {\n min-width: 400px;\n }\n}\n\n.card-view-title {\n min-width: 40% !important;\n line-height: 3.0!important;\n padding-right: 20px;\n}\n\n.card-view {\n display: table-row;\n flex-direction: column;\n}\n\n// ---------------\n\n/**\n\n COLUMN SELECTOR ICONS\n -----------------------------\n This is kind of weird, but it is necessary to prevent the column-selector code from barfing, since\n any HTML used in the UserPresenter \"title\" attribute breaks the column selector HTML.\n\n Instead, we use CSS to add the icon into the table header, which leaves the column selector\n \"title\" text as-is and hides the icon.\n\n See https://github.com/grokability/snipe-it/issues/7989\n */\nth.css-accessory > .th-inner,\nth.css-accessory-alt > .th-inner,\nth.css-barcode > .th-inner,\nth.css-component > .th-inner,\nth.css-consumable > .th-inner,\nth.css-envelope > .th-inner,\nth.css-house-flag > .th-inner,\nth.css-house-laptop > .th-inner,\nth.css-house-user > .th-inner,\nth.css-license > .th-inner,\nth.css-location > .th-inner,\nth.css-users > .th-inner,\nth.css-currency > .th-inner,\nth.css-child-locations > .th-inner,\nth.css-history > .th-inner\n{\n font-size: 0px;\n line-height: 0.75 !important;\n text-align: left;\n text-rendering: auto;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n\nth.css-location > .th-inner::before,\nth.css-accessory > .th-inner::before,\nth.css-accessory-alt > .th-inner::before,\nth.css-barcode > .th-inner::before,\nth.css-component > .th-inner::before,\nth.css-consumable > .th-inner::before,\nth.css-envelope > .th-inner::before,\nth.css-house-flag > .th-inner::before,\nth.css-house-laptop > .th-inner::before,\nth.css-house-user > .th-inner::before,\nth.css-license > .th-inner::before,\nth.css-location > .th-inner::before,\nth.css-users > .th-inner::before,\nth.css-currency > .th-inner::before,\nth.css-child-locations > .th-inner::before,\nth.css-history > .th-inner::before\n{\n display: inline-block;\n font-size: 20px;\n font-family: \"Font Awesome 5 Free\";\n font-weight: 900;\n}\n\n/**\nBEGIN ICON TABLE HEADERS\nSet the font-weight css property as 900 (For Solid), 400 (Regular or Brands), 300 (Light for pro icons).\n**/\nth.css-barcode > .th-inner::before\n{\n content: \"\\f02a\"; font-family: \"Font Awesome 5 Free\"; font-weight: 900;\n}\n\nth.css-license > .th-inner::before\n{\n content: \"\\f0c7\"; font-family: \"Font Awesome 5 Free\"; font-weight: 400;\n}\n\nth.css-consumable > .th-inner::before\n{\n content: \"\\f043\"; font-family: \"Font Awesome 5 Free\"; font-weight: 900;\n}\n\nth.css-envelope > .th-inner::before\n{\n content: \"\\f0e0\"; font-family: \"Font Awesome 5 Free\"; font-weight: 400;\n}\n\nth.css-accessory > .th-inner::before\n{\n content: \"\\f11c\"; font-family: \"Font Awesome 5 Free\"; font-weight: 400;\n}\n\nth.css-users > .th-inner::before {\n content: \"\\f0c0\"; font-family: \"Font Awesome 5 Free\"; font-size: 15px;\n}\n\nth.css-location > .th-inner::before {\n content: \"\\f3c5\"; font-family: \"Font Awesome 5 Free\"; font-size: 19px; margin-bottom: 0px;\n}\n\nth.css-component > .th-inner::before\n{\n content: \"\\f0a0\"; font-family: \"Font Awesome 5 Free\"; font-weight: 500;\n}\n\nth.css-padlock > .th-inner::before\n{\n content: \"\\f023\"; font-family: \"Font Awesome 5 Free\";\n font-weight: 800;\n padding-right: 3px;\n}\n\nth.css-house-user > .th-inner::before {\n content: \"\\e1b0\";\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\nth.css-house-flag > .th-inner::before {\n content: \"\\e50d\";\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\nth.css-house-laptop > .th-inner::before {\n content: \"\\e066\";\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\nth.css-accessory-alt > .th-inner::before {\n content: \"\\f11c\";\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\n\nth.css-child-locations > .th-inner::before {\n content: \"\\f64f\"; // change this to f51e for coins\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\n\nth.css-currency > .th-inner::before {\n content: \"\\24\"; // change this to f51e for coins\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\n\nth.css-history > .th-inner::before {\n content: \"\\f1da\"; // change this to f51e for coins\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\n\n\n.small-box .inner {\n padding-left: 15px;\n padding-right: 15px;\n padding-top: 15px;\n color: #fff;\n}\n\n\n.small-box > a:link, .small-box > a:visited, .small-box > a:hover {\n color: #fff;\n}\n\n.select2-container--default .select2-selection--single, .select2-selection .select2-selection--single {\n border: 1px solid #d2d6de;\n border-radius: 0;\n padding: 6px 12px;\n height: 34px;\n}\n\n.form-group.has-error label, .form-group.has-error .help-block {\n color: #a94442;\n}\n\n.select2-container--default .select2-selection--multiple {\n border-radius: 0px;\n}\n\n@media screen and (max-width: 511px){\n .tab-content .tab-pane .alert-block {\n margin-top: 120px\n }\n .sidebar-menu{\n margin-top:160px;\n }\n}\n@media screen and (max-width: 912px) and (min-width: 512px){\n .sidebar-menu {\n margin-top:100px\n }\n .navbar-custom-menu > .navbar-nav > li.dropdown.user.user-menu {\n float:right;\n }\n .navbar-custom-menu > .navbar-nav > li > .dropdown-menu {\n margin-right:-39px;\n }\n}\n\n@media screen and (max-width: 1268px) and (min-width: 912px){\n .sidebar-menu {\n margin-top:50px\n }\n}\n@media screen and (max-width: 992px){\n .info-stack-container {\n flex-direction: column;\n }\n .col-md-3.col-xs-12.col-sm-push-9.info-stack{\n left:auto;\n order:1;\n }\n .col-md-9.col-xs-12.col-sm-pull-3.info-stack{\n right:auto;\n order:2;\n }\n .info-stack-container > .col-md-9.col-xs-12.col-sm-pull-3.info-stack > .row-new-striped > .row > .col-sm-2{\n width:auto;\n float:none;\n }\n}\n@media screen and (max-width: 992px){\n .row-new-striped div{\n width:100%;\n }\n}\n\n@media screen and (max-width: 1318px) and (min-width: 1200px){\n .admin.box{\n height:170px;\n }\n}\n@media screen and (max-width: 1494px) and (min-width: 1200px){\n .dashboard.small-box{\n white-space: nowrap;\n text-overflow: ellipsis;\n max-width: 188px;\n display: block;\n overflow: hidden;\n }\n}\n\n/** Form-stuff overrides for checkboxes and stuff **/\n\nlabel.form-control {\n display: grid;\n grid-template-columns: 1.8em auto;\n gap: 0.5em;\n border: 0px;\n padding-left: 0px;\n background-color: inherit;\n color: inherit;\n font-size: inherit;\n font-weight: inherit;\n}\n\nlabel.form-control--disabled {\n color: #959495;\n cursor: not-allowed;\n}\n\n\n/** --------------------------------------- **/\n/** Start checkbox styles to replace iCheck **/\n/** --------------------------------------- **/\ninput[type=\"checkbox\"] {\n /* Add if not using autoprefixer */\n -webkit-appearance: none;\n appearance: none;\n /* For iOS < 15 to remove gradient background */\n background-color: #fff;\n /* Not removed via appearance */\n margin: 0;\n font: inherit;\n color: #959495;\n width: 1.8em;\n height: 1.8em;\n border: 0.05em solid;\n border-radius: 0em;\n transform: translateY(-0.075em);\n display: grid;\n place-content: center;\n /*Windows High Contrast Mode*/\n}\n\n/** This sets the display of a checkbox, and what the \"fill\" checkmark should look like */\n\ninput[type=\"checkbox\"]::before {\n\n /** If you want to use the non-checkbox, filled square, use this instead **/\n content: \"\";\n width: 1em;\n height: 1em;\n transform: scale(0);\n transition: 120ms transform ease-in-out;\n box-shadow: inset 1em 1em rgb(211, 211, 211);\n\n content: \"\";\n width: 1em;\n height: 1em;\n clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);\n transform: scale(0);\n transform-origin: bottom left;\n transition: 120ms transform ease-in-out;\n box-shadow: inset 1em 1em #428bca;\n /* Windows High Contrast Mode */\n background-color: CanvasText;\n}\n\n/** This sets the size of the scale up for the shape we defined above **/\ninput[type=\"checkbox\"]:checked::before {\n transform: scale(1);\n}\n\n/** This sets the scale and color of the DISABLED but CHECKED checkbox */\ninput[type=checkbox]:disabled::before, input[type=radio]:disabled::before {\n content: \"\";\n width: 1em;\n height: 1em;\n transform: scale(1);\n box-shadow: inset 1em 1em rgb(211, 211, 211);\n}\n\n/* This sets the scale and style of a DISABLED checkbox that is NOT checked */\ninput[type=checkbox]:disabled:not(:checked)::before, input[type=radio]:disabled:not(:checked)::before {\n content: \"\";\n transform: scale(0);\n cursor: not-allowed;\n pointer-events:none;\n}\n\n/** this is the color of the checkbox and content on a disabled, checked box **/\ninput[type=checkbox]:disabled, input[type=radio]:disabled {\n --form-control-color: rgb(211, 211, 211);\n color: #959495;\n cursor: not-allowed;\n pointer-events:none;\n}\n\n\n/** Radio styles to replace iCheck **/\n\ninput[type=\"radio\"] {\n appearance: none;\n background-color: #fff;\n margin: 0;\n font: inherit;\n color: #959495;\n width: 1.8em;\n height: 1.8em;\n border: 0.05em solid;\n border-radius: 50%;\n transform: translateY(-0.075em);\n display: grid;\n place-content: center;\n}\n\ninput[type=\"radio\"]::before {\n content: \"\";\n width: 1em;\n height: 1em;\n border-radius: 50%;\n transform: scale(0);\n transition: 120ms transform ease-in-out;\n box-shadow: inset 1em 1em #428bca;\n}\n\ninput[type=\"radio\"]:checked::before {\n transform: scale(1);\n}\n\n\n/**\n* This addresses the column selector in bootstrap-table. Without these two lines, the\n* checkbox and the with the label text that BS tables generates will\n* end up on two different lines and it looks assy.\n */\n.dropdown-item-marker input[type=checkbox] {\n font-size: 10px;\n}\n\n.bootstrap-table .fixed-table-toolbar li.dropdown-item-marker label {\n font-weight: normal;\n display: grid;\n grid-template-columns: .1em auto;\n gap: 1.5em;\n}\n\n.container.row-striped .col-md-6 {\n overflow-wrap:anywhere;\n}\n\n.nav-tabs-custom > .nav-tabs > li {\n z-index: 1;\n}\n\n.select2-container .select2-search--inline .select2-search__field{\n padding-left:15px;\n}\n\n.nav-tabs-custom > .nav-tabs > li.active {\n font-weight: bold;\n}\n\n/** --------------------------------------- **/\n/** End checkbox styles to replace iCheck **/\n/** --------------------------------------- **/\n\n/**\n/** Separator styles with text in the middle. Currently only used by the login page but\n/** could be used elsewhere.\n */\n\n.separator {\n display: flex;\n align-items: center;\n text-align: center;\n padding-top: 20px;\n color: #959495;\n}\n\n.separator::before,\n.separator::after {\n content: '';\n flex: 1;\n border-bottom: 1px solid #959495;\n}\n\n.separator:not(:empty)::before {\n margin-right: .25em;\n}\n\n.separator:not(:empty)::after {\n margin-left: .25em;\n}\n.datepicker.dropdown-menu {\n z-index: 1030 !important;\n}\n\n.sidebar-menu > li .badge {\n margin-top: 0px;\n filter: brightness(70%);\n font-size: 70%;\n}\n\n/** this is needed to override ekko-lightboxes card view styles **/\n.bootstrap-table .fixed-table-container .table tbody tr .card-view {\n display: table-row !important;\n}\n\n.form-control-static {\n padding-top: 0px;\n}\n\n\ntd.text-right.text-padding-number-cell {\n padding-right: 30px !important;\n white-space: nowrap;\n}\n\nth.text-right.text-padding-number-footer-cell {\n padding-right: 20px !important;\n white-space: nowrap;\n}\n\ncode.single-line {\n white-space: pre-wrap;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n overflow: hidden;\n max-width: 400px;\n}\n\np.monospace, span.monospace {\n font-family: monospace, monospace;\n}\n\nlegend.highlight {\n background: repeating-linear-gradient(\n 45deg,\n #222d32,\n #222d32 10px,\n #444 10px,\n #444 11px\n );\n\n color: #fff;\n font-size: 18px;\n padding: 6px 6px 6px 10px;\n}\n\nlegend.highlight a {\n color: #fff;\n cursor: pointer;\n}\n\nfieldset.bottom-padded {\n padding-bottom: 20px;\n}\n\ncaption.tableCaption {\n font-size: 18px;\n padding-left: 8px;\n}\n\n// via https://github.com/grokability/snipe-it/issues/11754\n.sidebar-toggle.btn {\n border-radius: 3px;\n box-shadow: none;\n border-top: 0px solid transparent;\n border-bottom: 0px solid transparent;\n padding-left: 15px;\n padding-right: 15px;\n padding-top: 12px;\n padding-bottom: 12px;\n margin-left: -47px;\n margin-top: 2px;\n}\n.popover.help-popover,\n.popover.help-popover .popover-content,\n.popover.help-popover .popover-body,\n.popover.help-popover .popover-title,\n.popover.help-popover .popover-header {\n color: #000;\n}\n\n.visually-hidden {\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n clip: rect(0,0,0,0);\n white-space: preserve;\n display: inline-block;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"css/build/overrides.css","mappings":"AAAA;EAkBE;AAhBF;AAkBA;EACE;EACA;EACA;EACA;EACA;AAhBF;AAiBE;;;EACE;AAbJ;AAgBA;EACE;AAdF;AAiBA;EACE;EACA;AAfF;AAkBA;EACE;AAhBF;AAoBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AAlBF;AAqBA;EACE;EACA;EACA;EACA;EACA;AAnBF;AAsBA;EACE;AApBF;AAuBA;EACE;AArBF;AAwBA;EACE;EACA;AAtBF;AA0BA;EACE;AAxBF;AA2BA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAzBF;AA2BA;EACE;AAzBF;AA2BA;EACE;AAzBF;AA6BA;EACE;AA3BF;AA6BA;EACE;AA3BF;AA+BA;EACE;EACA;EACA;AA7BF;AAgCA;EACE;EACA;EACA;AA9BF;AAqDA;EACE;AAnDF;AAsDA;EACE;EACA;EACA;AApDF;AAuDA;EACE;EACA;AArDF;AAwDA;EACE;AAtDF;AAyDA;EACE;EACA;AAvDF;AA0DA;;EACE;EACA;AAvDF;AA0DA;EACE;EACA;AAxDF;AA0DA;EACE;AAxDF;AA2DA;EACE;EACA;EACA;AAzDF;AA4DA;EACE;AA1DF;AA6DA;EACE;AA3DF;AA8DA;EACE;AA5DF;AA8DA;EACE;AA5DF;AA+DA;EACE;AA7DF;AAgEA;;;;EACE;AA3DF;AA8DA;;;;;EACE;AAxDF;AA2DA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAzDF;AA2DA;EACE;EACA;EACA;EACA;EACA;EACA;AAzDF;AA2DA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAzDF;AA2DA;EACE;AAzDF;AA2DA;EACE;EACA;EACA;EACA;AAzDF;AA2DA;EACE;EACA;AAzDF;AA2DA;EACE;EACA;EACA;EACA;EACA;AAzDF;AA2DA;EACE;EACA;AAzDF;AA2DA;EACE;EACA;EACA;EACA;AAzDF;AA4DA;EACE;EACA;AA1DF;AA+DA;EAAY;AA5DZ;AACA,cAAc;AA8Dd;EAAY;EAAkC;AA1D9C;AA2DA;EAA8B;EAAY;AAvD1C;AAyDA;EAAiD;EAAgB;EAAiB;AApDlF;AAqDA;EAA8C;EAAa;AAjD3D;AAkDA;EAA+C;EAAoB;EAAa;EAAc;EAAgB;EAAqB;EAAW;EAAW;EAAmB;EAAoB;AAtChM;AAuCA;EAAqD;EAAc;EAAa;EAAc;EAAqB;EAAqB;EAAoB;EAAU;AA7BtK;AA8BA;EAA0C;EAAoB;EAAoB;EAAa;EAAkB;AAvBjH;AAwBA;EAA0D;EAAW;EAAkB;AAnBvF;AAoBA;EAAmE;AAjBnE;AAkBA;EAAiE;AAfjE;AAgBA;EAA6E;AAb7E;AAcA;EAA4E;AAX5E;AAYA;EAAwD;AATxD;AAUA;EAA8D;AAP9D;AAQA;EAAuD;EAAW;AAJlE;AAKA;EAAsD;AAFtD;AAGA;EAAuD;AAAvD;AACA,kBAAkB;AAElB;EACE;EACA;EACA;EACA;EACA;EAAA,gCAAgC;AAClC;AAGA;EAkBE;AAlBF;AAqBA;EACE;AAnBF;AAuBA;;EACE;AApBF;AAsBA;;EACE;AAnBF;AAsBA;EACE;EAIA;AAvBF;AA0BA;EACE;EACA;AAxBF;AA2BA;EACE;AAzBF;AA4BA;EACE;AA1BF;AA6BA;EAEE;IACE;IACA;EA5BF;EA+BA;IACE;IACA;IACA;EA7BF;EAgCA;IACE;EA9BF;EAiCA;;IACE;EA9BF;EAiCA;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;EA/BF;EACA,+CAA+C;EAkC/C;IACE;EAhCF;EAmCA;IACE;EAjCF;EAoCA;IACE;EAlCF;EAqCA;IACE;EAnCF;EACA,qCAAqC;EAsCrC;;IACE;EAnCF;EACA,QAAQ;EAsCR;;IACE;IACA;IACA;EAnCF;EAsCA;IACE;EApCF;EAuCA;IACE;EArCF;EAwCA;IACE;IACA;IACA;EAtCF;EAyCA;IACE;IACA;EAvCF;EA0CA;;IACE;EAvCF;EAyCA;;;;;;;;;;;;IACE;EA5BF;EA+BA;IACE;EA7BF;EA+BA;IACE;EA7BF;EA+BA;IACE;EA7BF;EA+BA;IACE;EA7BF;EA+BA;IACE;EA7BF;EA+BA;IACE;EA7BF;EA+BA;IACE;EA7BF;EA+BA;IACE;EA7BF;EA+BA;IACE;EA7BF;EA+BA;IACE;EA7BF;EA+BA;IACE;EA7BF;EA+BA;IACE;EA7BF;AACF;AAkCA;EACE;AAhCF;AAmCA;EACI;EACA;AAjCJ;AAoCA;EACE;AAlCF;AAqCA;EACE;EACA;EACA;AAnCF;AAwCA;EACE;EACA;OAAA;EACA;EACA;AAtCF;AAyCA;;EACE;EACA;EACA;AAtCF;AAyCA;;;EACE;AArCF;AAwCA;;EACE;AArCF;AAwCA;EACE;AAtCF;AAyCA;EACE;AAvCF;AA0CA;EACE;EACA;EACA;AAxCF;AA2CA;EACE;EACA;AAzCF;AA4CA;EACE;EACA;EACA;AA1CF;AA8CA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AA5CF;AA8CA;;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA3CF;AA8CA;EACE;AA5CF;AA+CA;EACE;AA7CF;AAgDA;EACE;AA9CF;AAiDA;EACE;AA/CF;AAkDA;EACE;AAhDF;AAoDA;EACE;EACA;EACA;EACA;EACA;EAGA;AApDF;AAuDA;EACE;EACA;EACA;EACA;AArDF;AAwDA;EACE;EACA;EACA;EACA;AAtDF;AA0DA;EACE;EACA;EACA;EACA;EACA;EACA;AAxDF;AACA;;;;EAIE;AA2DF;EACE;EACA;EACA;EACA;AAzDF;AA4DA;EACE;EACA;EACA;EACA;EACA;AA1DF;AA6DA;EACE;EACA;EACA;AA3DF;AA8DA;EACE;EACA;EACA;AA5DF;AAgEA;EACE;AA9DF;AACA;;EAEE;AAmEF;EACE;IACE;IACA;EAjEF;EAoEA;IACE;EAlEF;EAqEA;IACE;EAnEF;EAsEA;IACE;EApEF;AACF;AAuEA;EACE;EACA;EACA;AArEF;AAwEA;EACE;EACA;AAtEF;AACA;;;;;;;;;;;EAWE;AA2EF;;;;;;;;;;;;;;;EAgBE;EACA;EACA;EACA;EACA;EACA;AA1EF;AA8EA;;;;;;;;;;;;;;;;EAiBE;EACA;EACA;EACA;AA7EF;AACA;;;EAGE;AAgFF;EAEE;EAAkB;EAAoC;AA7ExD;AAgFA;EAEE;EAAkB;EAAoC;AA7ExD;AAgFA;EAEE;EAAkB;EAAoC;AA7ExD;AAgFA;EAEE;EAAkB;EAAoC;AA7ExD;AAgFA;EAEE;EAAkB;EAAoC;AA7ExD;AAgFA;EACE;EAAkB;EAAoC;AA5ExD;AA+EA;EACE;EAAkB;EAAoC;EAAiB;AA1EzE;AA6EA;EAEE;EAAkB;EAAoC;AA1ExD;AA6EA;EAEE;EAAkB;EAClB;EACA;AA3EF;AA8EA;EACE;EACA;EACA;EACA;AA5EF;AA8EA;EACE;EACA;EACA;EACA;AA5EF;AA8EA;EACE;EACA;EACA;EACA;AA5EF;AA8EA;EACE;EACA;EACA;EACA;AA5EF;AA+EA;EACE;EACA;EACA;EACA;AA7EF;AAgFA;EACE;EACA;EACA;EACA;AA9EF;AAiFA;EACE;EACA;EACA;EACA;AA/EF;AAmFA;EACE;EACA;EACA;EACA;AAjFF;AAqFA;;;EACE;AAjFF;AAoFA;;EACE;EACA;EACA;EACA;AAjFF;AAoFA;;EACE;AAjFF;AAoFA;EACE;AAlFF;AAqFA;EACE;IACE;EAnFF;EAqFA;IACE;EAnFF;AACF;AAqFA;EACE;IACE;EAnFF;EAqFA;IACE;EAnFF;EAqFA;IACE;EAnFF;AACF;AAsFA;EACE;IACE;EApFF;AACF;AAsFA;EACE;IACE;EApFF;EAsFA;IACE;IACA;EApFF;EAsFA;IACE;IACA;EApFF;EAsFA;IACE;IACA;EApFF;AACF;AAsFA;EACE;IACE;EApFF;AACF;AAuFA;EACE;IACE;EArFF;AACF;AAuFA;EACE;IACE;IACA;IACA;IACA;IACA;EArFF;AACF;AACA,oDAAoD;AAyFpD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAvFF;AA0FA;EACE;EACA;AAxFF;AACA,8CAA8C;AAC9C,8CAA8C;AAC9C,8CAA8C;AA4F9C;EA1FE,kCAAkC;EA4FlC;EACA;OAAA;EA1FA,+CAA+C;EA4F/C;EA1FA,+BAA+B;EA4F/B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA1FA,6BAA6B;AAC/B;AACA,yFAAyF;AA8FzF;EA5FE,2EAA2E;EAoG3E;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAnGA,+BAA+B;EAqG/B;AAnGF;AACA,wEAAwE;AAsGxE;EACE;AApGF;AACA,wEAAwE;AAuGxE;;EACE;EACA;EACA;EACA;EACA;AApGF;AACA,6EAA6E;AAuG7E;;EACE;EACA;EACA;EACA;AApGF;AACA,+EAA+E;AAuG/E;;EACE;EACA;EACA;EACA;AApGF;AACA,qCAAqC;AAyGrC;EACE;KAAA;UAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAvGF;AA0GA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AAxGF;AA2GA;EACE;AAzGF;AACA;;;;EAIE;AA6GF;EACE;AA3GF;AA8GA;EACE;EACA;EACA;EACA;AA5GF;AA+GA;EACE;AA7GF;AAgHA;EACE;AA9GF;AAiHA;EACE;AA/GF;AAkHA;EACE;AAhHF;AACA,8CAA8C;AAC9C,8CAA8C;AAC9C,8CAA8C;AAC9C;;;EAGE;AAqHF;EACE;EACA;EACA;EACA;EACA;AAnHF;AAsHA;;EAEE;EACA;EACA;AApHF;AAuHA;EACE;AArHF;AAwHA;EACE;AAtHF;AAwHA;EACE;AAtHF;AAyHA;EACE;EACA;EACA;AAvHF;AACA,kEAAkE;AA0HlE;EACE;AAxHF;AA2HA;EACE;AAzHF;AA6HA;EACE;EACA;AA3HF;AA8HA;EACE;EACA;AA5HF;AA+HA;EACE;EACA;EACA;EACA;EACA;EACA;AA7HF;AAgIA;;EACE;AA7HF;AAgIA;EACE;EAQA;EACA;EACA;AArIF;AAwIA;EACE;EACA;AAtIF;AAyIA;EACE;AAvIF;AA0IA;EACE;EACA;AAxIF;AA4IA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA1IF;AA4IA;;;;;EAKE;AA1IF;AA6IA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AA3IF;AA8IA;EACE;AA5IF","sources":["webpack:///./resources/assets/less/overrides.less"],"sourcesContent":[".skin-red\n.skin-purple\n.skin-blue\n.skin-black\n.skin-orange\n.skin-yellow\n.skin-green\n.skin-red-dark\n.skin-purple-dark\n.skin-blue-dark\n.skin-black-dark\n.skin-orange-dark\n.skin-yellow-dark\n.skin-green-dark\n.skin-contrast\n.main-header\n\n.logo {\n background-color: inherit;\n}\n.main-header .logo {\n width: 100% !important;\n white-space: nowrap;\n text-align: left;\n display: block;\n clear: both;\n &a:link, a:hover, a:visited {\n color: #fff\n }\n}\n.huge {\n font-size: 40px;\n}\n\n.btn-file {\n position: relative;\n overflow: hidden;\n}\n\n.dropdown-menu>li>a {\n color: #354044;\n}\n\n\n#sort tr.cansort {\n border-radius: 2px;\n padding: 10px;\n background: #f4f4f4;\n margin-bottom: 3px;\n border-inline: 2px solid #e6e7e8;\n color: #444;\n cursor: move;\n}\n\n.user-image-inline {\n float: left;\n width: 25px;\n height: 25px;\n border-radius: 50%;\n margin-right: 10px;\n}\n\n.input-group .input-group-addon {\n background-color: #f4f4f4;\n}\n\na.accordion-header {\n color: #333;\n}\n\n.dynamic-form-row {\n padding: 10px;\n margin: 20px;\n}\n\n\n.handle {\n padding-left: 10px;\n}\n\n.btn-file input[type=file] {\n position: absolute;\n top: 0;\n right: 0;\n min-width: 100%;\n min-height: 100%;\n font-size: 100px;\n text-align: right;\n filter: alpha(opacity=0);\n opacity: 0;\n outline: none;\n background: white;\n cursor: inherit;\n display: block;\n}\n.main-footer {\n font-size: 13px;\n}\n.main-header {\n max-height: 150px;\n}\n\n\n.navbar-nav>.user-menu>.dropdown-menu {\n width: inherit;\n}\n.main-header .logo {\n padding: 0px 5px 0px 15px;\n}\n\n\n.sidebar-toggle {\n margin-left: -48px;\n z-index: 100;\n background-color: inherit;\n}\n\n.sidebar-toggle-mobile {\n z-index: 100;\n width: 50px;\n padding-top: 10px;\n}\n\n.skin-red\n.skin-purple\n.skin-blue\n.skin-black\n.skin-orange\n.skin-yellow\n.skin-green\n.skin-red-dark\n.skin-purple-dark\n.skin-blue-dark\n.skin-black-dark\n.skin-orange-dark\n.skin-yellow-dark\n.skin-green-dark\n.skin-contrast\n.main-header\n.navbar\n.dropdown-menu li a {\n //color: inherit;\n}\n.pull-text-right{\n text-align: right !important;\n}\n\n.main-header .sidebar-toggle:before {\n content: \"\\f0c9\";\n font-weight: 900;\n font-family: 'Font Awesome\\ 5 Free';\n}\n\n.direct-chat-contacts {\n padding: 10px;\n height: 150px;\n}\n\n.select2-container {\n width: 100%;\n}\n\n.error input {\n color: #a94442;\n border: 2px solid #a94442 !important;\n}\n\n.error label, .alert-msg {\n color: #a94442;\n display: block;\n}\n\n.input-group[class*=\"col-\"] {\n padding-right: 15px;\n padding-left: 15px;\n}\n.control-label.multiline {\n padding-top: 10px;\n}\n\n.btn-outline {\n color: inherit;\n background-color: transparent;\n transition: all .5s;\n}\n\n.btn-primary.btn-outline {\n color: #428bca;\n}\n\n.btn-success.btn-outline {\n color: #5cb85c;\n}\n\n.btn-info.btn-outline {\n color: #5bc0de;\n}\n.btn-warning{\n background-color:#f39c12 !important;\n}\n\n.btn-warning.btn-outline {\n color: #f0ad4e;\n}\n\n.btn-danger.btn-outline, a.link-danger:link, a.link-danger:visited, a.link-danger:hover {\n color: #dd4b39;\n}\n\n.btn-primary.btn-outline:hover, .btn-success.btn-outline:hover, .btn-info.btn-outline:hover, .btn-warning.btn-outline:hover, .btn-danger.btn-outline:hover {\n color: #fff;\n}\n\n.slideout-menu {\n position: fixed;\n top: 0;\n right: -250px;\n width: 250px;\n height: 100%;\n background: #333;\n z-index: 100;\n margin-top: 100px;\n color: white;\n padding: 10px;\n}\n.slideout-menu h3 {\n position: relative;\n padding: 5px 5px;\n color: #fff;\n font-size: 1.2em;\n font-weight: 400;\n border-bottom: 4px solid #222;\n}\n.slideout-menu .slideout-menu-toggle {\n position: absolute;\n top: 12px;\n right: 10px;\n display: inline-block;\n padding: 6px 9px 5px;\n font-family: Arial, sans-serif;\n font-weight: bold;\n line-height: 1;\n background: #222;\n color: #999;\n text-decoration: none;\n vertical-align: top;\n}\n.slideout-menu .slideout-menu-toggle:hover {\n color: #fff;\n}\n.slideout-menu ul {\n list-style: none;\n font-weight: 300;\n border-top: 1px solid #151515;\n border-bottom: 1px solid #454545;\n}\n.slideout-menu ul li {\n border-top: 1px solid #454545;\n border-bottom: 1px solid #151515;\n}\n.slideout-menu ul li a {\n position: relative;\n display: block;\n padding: 10px;\n color: #999;\n text-decoration: none;\n}\n.slideout-menu ul li a:hover {\n background: #000;\n color: #fff;\n}\n.slideout-menu ul li a i {\n position: absolute;\n top: 15px;\n right: 10px;\n opacity: .5;\n}\n\n.btn-box-tool-lg {\n font-size: 16px;\n color: orange;\n}\n\n\n\n.bs-wizard {margin-top: 20px;}\n\n/*Form Wizard*/\n.bs-wizard {border-bottom: solid 1px #e0e0e0; padding: 0 0 10px 0;}\n.bs-wizard > .bs-wizard-step {padding: 0; position: relative;}\n.bs-wizard > .bs-wizard-step + .bs-wizard-step {}\n.bs-wizard > .bs-wizard-step .bs-wizard-stepnum {color: #595959; font-size: 16px; margin-bottom: 5px;}\n.bs-wizard > .bs-wizard-step .bs-wizard-info {color: #999; font-size: 14px;}\n.bs-wizard > .bs-wizard-step > .bs-wizard-dot {position: absolute; width: 30px; height: 30px; display: block; background: #fbe8aa; top: 45px; left: 50%; margin-top: -15px; margin-left: -15px; border-radius: 50%;}\n.bs-wizard > .bs-wizard-step > .bs-wizard-dot:after {content: ' '; width: 14px; height: 14px; background: #fbbd19; border-radius: 50px; position: absolute; top: 8px; left: 8px; }\n.bs-wizard > .bs-wizard-step > .progress {position: relative; border-radius: 0px; height: 8px; box-shadow: none; margin: 20px 0;}\n.bs-wizard > .bs-wizard-step > .progress > .progress-bar {width:0px; box-shadow: none; background: #fbe8aa;}\n.bs-wizard > .bs-wizard-step.complete > .progress > .progress-bar {width:100%;}\n.bs-wizard > .bs-wizard-step.active > .progress > .progress-bar {width:50%;}\n.bs-wizard > .bs-wizard-step:first-child.active > .progress > .progress-bar {width:0%;}\n.bs-wizard > .bs-wizard-step:last-child.active > .progress > .progress-bar {width: 100%;}\n.bs-wizard > .bs-wizard-step.disabled > .bs-wizard-dot {background-color: #f5f5f5;}\n.bs-wizard > .bs-wizard-step.disabled > .bs-wizard-dot:after {opacity: 0;}\n.bs-wizard > .bs-wizard-step:first-child > .progress {left: 50%; width: 50%;}\n.bs-wizard > .bs-wizard-step:last-child > .progress {width: 50%;}\n.bs-wizard > .bs-wizard-step.disabled a.bs-wizard-dot{ pointer-events: none; }\n/*END Form Wizard*/\n\n.left-navblock {\n display: inline-block;\n float: left;\n text-align: left;\n color: white;\n padding: 0px;\n /* adjust based on your layout */\n\n}\n.skin-red\n.skin-purple\n.skin-blue\n.skin-black\n.skin-orange\n.skin-yellow\n.skin-green\n.skin-red-dark\n.skin-purple-dark\n.skin-blue-dark\n.skin-black-dark\n.skin-orange-dark\n.skin-yellow-dark\n.skin-green-dark\n.skin-contrast\n.main-header\n.navbar\n.dropdown-menu li a {\n color: #333;\n}\n\na.logo.no-hover a:hover {\n background-color: transparent;\n}\n\n\ninput:required, select:required {\n border-right: 5px solid orange;\n}\nselect:required + .select2-container .select2-selection, select:required + .select2-container .select2-selection .select2-selection--multiple {\n border-right: 5px solid orange !important;\n}\n\nbody {\n font-family: -apple-system, BlinkMacSystemFont,\n \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\",\n \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;\n font-size: 13px;\n}\n\n.sidebar-menu {\n font-size: 14px;\n white-space: normal;\n}\n\n.modal-warning .modal-help {\n color: #fff8af;\n}\n\n.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading {\n z-index: 0 !important;\n}\n\n@media print {\n\n @page {\n size: A4;\n margin: 0mm;\n }\n\n .tab-content > .tab-pane {\n display: block !important;\n opacity: 1 !important;\n visibility: visible !important;\n }\n\n .img-responsive {\n width: 200px;\n }\n\n html, body {\n width: 1024px;\n }\n\n body {\n margin: 0 auto;\n line-height: 1em;\n word-spacing:1px;\n letter-spacing:0.2px;\n font: 15px \"Times New Roman\", Times, serif;\n background:white;\n color:black;\n width: 100%;\n float: none;\n }\n\n /* avoid page-breaks inside a listingContainer*/\n .listingContainer {\n page-break-inside: avoid;\n }\n\n h1 {\n font: 28px \"Times New Roman\", Times, serif;\n }\n\n h2 {\n font: 24px \"Times New Roman\", Times, serif;\n }\n\n h3 {\n font: 20px \"Times New Roman\", Times, serif;\n }\n\n /* Improve colour contrast of links */\n a:link, a:visited {\n color: #781351\n }\n\n /* URL */\n a:link, a:visited {\n background: transparent;\n color:#333;\n text-decoration:none;\n }\n\n a[href]:after {\n content: \"\" !important;\n }\n\n a[href^=\"http://\"] {\n color:#000;\n }\n\n #header {\n height:75px;\n font-size: 24pt;\n color:black\n }\n\n div.row-new-striped {\n margin: 0px;\n padding: 0px;\n }\n\n .pagination-detail, .fixed-table-toolbar {\n visibility: hidden;\n }\n .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 .col-sm-pull-3 .col-sm-push-9 {\n float: left;\n }\n\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666666666666%;\n }\n .col-sm-10 {\n width: 83.33333333333334%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666666666666%;\n }\n .col-sm-7 {\n width: 58.333333333333336%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666666666667%;\n }\n .col-sm-4 {\n width: 33.33333333333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.666666666666664%;\n }\n .col-sm-1 {\n width: 8.333333333333332%;\n }\n\n}\n\n\n.select2-selection__choice__remove {\n color: white !important;\n}\n\n.select2-selection--multiple {\n border-color: #d2d6de !important;\n overflow-y: auto;\n}\n\n.select2-selection__choice {\n border-radius: 0px !important;\n}\n\n.select2-search select2-search--inline {\n height: 35px !important;\n float: left;\n margin: 0;\n}\n\n\n\n.select2-results__option {\n padding: 5px;\n user-select: none;\n -webkit-user-select: none;\n margin: 0px;\n}\n\nimg.navbar-brand-img, .navbar-brand>img {\n float: left;\n padding: 5px 5px 5px 0;\n max-height: 50px;\n}\n\n.input-daterange, .input-daterange input:first-child, .input-daterange input:last-child {\n border-radius: 0px !important;\n}\n\n.btn.bg-maroon, .btn.bg-purple{\n min-width:90px;\n}\n\n[hidden] {\n display: none !important;\n}\n\n#toolbar {\n margin-top: 10px;\n}\n\n#uploadPreview {\n border-color: grey;\n border-width: 1px;\n border-style: solid\n}\n\n.icon-med {\n font-size: 14px;\n color: #889195;\n}\n\n#login-logo {\n padding-top: 20px;\n padding-bottom: 10px;\n max-width: 200px\n}\n\n// accessibility skip link\na.skip-main {\n left:-999px;\n position:absolute;\n top:auto;\n width:1px;\n height:1px;\n overflow:hidden;\n z-index:-999;\n}\na.skip-main:focus, a.skip-main:active {\n color: #fff;\n background-color:#000;\n left: auto;\n top: auto;\n width: 30%;\n height: auto;\n overflow:auto;\n margin: 10px 35%;\n padding:5px;\n border-radius: 15px;\n border:4px solid yellow;\n text-align:center;\n font-size:1.2em;\n z-index:999;\n}\n\nh2 {\n font-size: 22px;\n}\n\nh2.task_menu {\n font-size: 14px;\n}\n\nh2 small {\n font-size: 85%;\n}\n\nh3 {\n font-size: 20px;\n}\n\nh4 {\n font-size: 16px;\n}\n\n\n.row-striped {\n vertical-align: top;\n line-height: 2.6;\n padding: 0px;\n margin-left: 20px;\n box-sizing: border-box;\n //border-left: 1px solid #dddddd;\n //border-right: 1px solid #dddddd;\n display: table;\n}\n\n.row-striped .row:nth-of-type(odd) div {\n background-color: #f9f9f9;\n border-top: 1px solid #dddddd;\n display: table-cell;\n word-wrap: break-word;\n}\n\n.row-striped .row:nth-of-type(even) div {\n background: #FFFFFF;\n border-top: 1px solid #dddddd;\n display: table-cell;\n word-wrap: break-word;\n}\n\n\n.row-new-striped {\n vertical-align: top;\n padding: 3px;\n display: table;\n width: 100%;\n word-wrap: break-word;\n table-layout:fixed;\n}\n\n/**\n* NEW STRIPING\n* This section is for the new row striping for nicer \n* display for non-table data as of v6\n**/\n.row-new-striped > .row:nth-of-type(even) {\n background: #FFFFFF;\n border-top: 1px solid #dddddd;\n line-height: 1.9;\n display: table-row;\n}\n\n.row-new-striped > .row:nth-of-type(odd) {\n background-color: #F8F8F8;\n border-top: 1px solid #dddddd;\n display: table-row;\n line-height: 1.9;\n padding: 2px;\n}\n\n.row-new-striped div {\n display: table-cell;\n border-top: 1px solid #dddddd;\n padding: 6px;\n}\n\n.row-new-striped div {\n display: table-cell;\n border-top: 1px solid #dddddd;\n padding: 6px;\n}\n\n\n.row-new-striped div[class^=\"col\"]:first-child {\n font-weight: bold;\n}\n\n\n\n/**\n* This just adds a little extra padding on mobile\n**/\n@media only screen and (max-width: 520px) {\n h1.pagetitle {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n\n .firstnav {\n padding-top: 120px !important;\n }\n\n .product {\n width: 400px;\n }\n\n .product img {\n min-width: 400px;\n }\n}\n\n.card-view-title {\n min-width: 40% !important;\n line-height: 3.0!important;\n padding-right: 20px;\n}\n\n.card-view {\n display: table-row;\n flex-direction: column;\n}\n\n// ---------------\n\n/**\n\n COLUMN SELECTOR ICONS\n -----------------------------\n This is kind of weird, but it is necessary to prevent the column-selector code from barfing, since\n any HTML used in the UserPresenter \"title\" attribute breaks the column selector HTML.\n\n Instead, we use CSS to add the icon into the table header, which leaves the column selector\n \"title\" text as-is and hides the icon.\n\n See https://github.com/grokability/snipe-it/issues/7989\n */\nth.css-accessory > .th-inner,\nth.css-accessory-alt > .th-inner,\nth.css-barcode > .th-inner,\nth.css-component > .th-inner,\nth.css-consumable > .th-inner,\nth.css-envelope > .th-inner,\nth.css-house-flag > .th-inner,\nth.css-house-laptop > .th-inner,\nth.css-house-user > .th-inner,\nth.css-license > .th-inner,\nth.css-location > .th-inner,\nth.css-users > .th-inner,\nth.css-currency > .th-inner,\nth.css-child-locations > .th-inner,\nth.css-history > .th-inner\n{\n font-size: 0px;\n line-height: 0.75 !important;\n text-align: left;\n text-rendering: auto;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n\nth.css-location > .th-inner::before,\nth.css-accessory > .th-inner::before,\nth.css-accessory-alt > .th-inner::before,\nth.css-barcode > .th-inner::before,\nth.css-component > .th-inner::before,\nth.css-consumable > .th-inner::before,\nth.css-envelope > .th-inner::before,\nth.css-house-flag > .th-inner::before,\nth.css-house-laptop > .th-inner::before,\nth.css-house-user > .th-inner::before,\nth.css-license > .th-inner::before,\nth.css-location > .th-inner::before,\nth.css-users > .th-inner::before,\nth.css-currency > .th-inner::before,\nth.css-child-locations > .th-inner::before,\nth.css-history > .th-inner::before\n{\n display: inline-block;\n font-size: 20px;\n font-family: \"Font Awesome 5 Free\";\n font-weight: 900;\n}\n\n/**\nBEGIN ICON TABLE HEADERS\nSet the font-weight css property as 900 (For Solid), 400 (Regular or Brands), 300 (Light for pro icons).\n**/\nth.css-barcode > .th-inner::before\n{\n content: \"\\f02a\"; font-family: \"Font Awesome 5 Free\"; font-weight: 900;\n}\n\nth.css-license > .th-inner::before\n{\n content: \"\\f0c7\"; font-family: \"Font Awesome 5 Free\"; font-weight: 400;\n}\n\nth.css-consumable > .th-inner::before\n{\n content: \"\\f043\"; font-family: \"Font Awesome 5 Free\"; font-weight: 900;\n}\n\nth.css-envelope > .th-inner::before\n{\n content: \"\\f0e0\"; font-family: \"Font Awesome 5 Free\"; font-weight: 400;\n}\n\nth.css-accessory > .th-inner::before\n{\n content: \"\\f11c\"; font-family: \"Font Awesome 5 Free\"; font-weight: 400;\n}\n\nth.css-users > .th-inner::before {\n content: \"\\f0c0\"; font-family: \"Font Awesome 5 Free\"; font-size: 15px;\n}\n\nth.css-location > .th-inner::before {\n content: \"\\f3c5\"; font-family: \"Font Awesome 5 Free\"; font-size: 19px; margin-bottom: 0px;\n}\n\nth.css-component > .th-inner::before\n{\n content: \"\\f0a0\"; font-family: \"Font Awesome 5 Free\"; font-weight: 500;\n}\n\nth.css-padlock > .th-inner::before\n{\n content: \"\\f023\"; font-family: \"Font Awesome 5 Free\";\n font-weight: 800;\n padding-right: 3px;\n}\n\nth.css-house-user > .th-inner::before {\n content: \"\\e1b0\";\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\nth.css-house-flag > .th-inner::before {\n content: \"\\e50d\";\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\nth.css-house-laptop > .th-inner::before {\n content: \"\\e066\";\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\nth.css-accessory-alt > .th-inner::before {\n content: \"\\f11c\";\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\n\nth.css-child-locations > .th-inner::before {\n content: \"\\f64f\"; // change this to f51e for coins\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\n\nth.css-currency > .th-inner::before {\n content: \"\\24\"; // change this to f51e for coins\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\n\nth.css-history > .th-inner::before {\n content: \"\\f1da\"; // change this to f51e for coins\n font-family: \"Font Awesome 5 Free\";\n font-size: 19px;\n margin-bottom: 0px;\n}\n\n\n.small-box .inner {\n padding-left: 15px;\n padding-right: 15px;\n padding-top: 15px;\n color: #fff;\n}\n\n\n.small-box > a:link, .small-box > a:visited, .small-box > a:hover {\n color: #fff;\n}\n\n.select2-container--default .select2-selection--single, .select2-selection .select2-selection--single {\n border: 1px solid #d2d6de;\n border-radius: 0;\n padding: 6px 12px;\n height: 34px;\n}\n\n.form-group.has-error label, .form-group.has-error .help-block {\n color: #a94442;\n}\n\n.select2-container--default .select2-selection--multiple {\n border-radius: 0px;\n}\n\n@media screen and (max-width: 511px){\n .tab-content .tab-pane .alert-block {\n margin-top: 120px\n }\n .sidebar-menu{\n margin-top:160px;\n }\n}\n@media screen and (max-width: 912px) and (min-width: 512px){\n .sidebar-menu {\n margin-top:100px\n }\n .navbar-custom-menu > .navbar-nav > li.dropdown.user.user-menu {\n float:right;\n }\n .navbar-custom-menu > .navbar-nav > li > .dropdown-menu {\n margin-right:-39px;\n }\n}\n\n@media screen and (max-width: 1268px) and (min-width: 912px){\n .sidebar-menu {\n margin-top:50px\n }\n}\n@media screen and (max-width: 992px){\n .info-stack-container {\n flex-direction: column;\n }\n .col-md-3.col-xs-12.col-sm-push-9.info-stack{\n left:auto;\n order:1;\n }\n .col-md-9.col-xs-12.col-sm-pull-3.info-stack{\n right:auto;\n order:2;\n }\n .info-stack-container > .col-md-9.col-xs-12.col-sm-pull-3.info-stack > .row-new-striped > .row > .col-sm-2{\n width:auto;\n float:none;\n }\n}\n@media screen and (max-width: 992px){\n .row-new-striped div{\n width:100%;\n }\n}\n\n@media screen and (max-width: 1318px) and (min-width: 1200px){\n .admin.box{\n height:170px;\n }\n}\n@media screen and (max-width: 1494px) and (min-width: 1200px){\n .dashboard.small-box{\n white-space: nowrap;\n text-overflow: ellipsis;\n max-width: 188px;\n display: block;\n overflow: hidden;\n }\n}\n\n/** Form-stuff overrides for checkboxes and stuff **/\n\nlabel.form-control {\n display: grid;\n grid-template-columns: 1.8em auto;\n gap: 0.5em;\n border: 0px;\n padding-left: 0px;\n background-color: inherit;\n color: inherit;\n font-size: inherit;\n font-weight: inherit;\n}\n\nlabel.form-control--disabled {\n color: #959495;\n cursor: not-allowed;\n}\n\n\n/** --------------------------------------- **/\n/** Start checkbox styles to replace iCheck **/\n/** --------------------------------------- **/\ninput[type=\"checkbox\"] {\n /* Add if not using autoprefixer */\n -webkit-appearance: none;\n appearance: none;\n /* For iOS < 15 to remove gradient background */\n background-color: #fff;\n /* Not removed via appearance */\n margin: 0;\n font: inherit;\n color: #959495;\n width: 1.8em;\n height: 1.8em;\n border: 0.05em solid;\n border-radius: 0em;\n transform: translateY(-0.075em);\n display: grid;\n place-content: center;\n /*Windows High Contrast Mode*/\n}\n\n/** This sets the display of a checkbox, and what the \"fill\" checkmark should look like */\n\ninput[type=\"checkbox\"]::before {\n\n /** If you want to use the non-checkbox, filled square, use this instead **/\n content: \"\";\n width: 1em;\n height: 1em;\n transform: scale(0);\n transition: 120ms transform ease-in-out;\n box-shadow: inset 1em 1em rgb(211, 211, 211);\n\n content: \"\";\n width: 1em;\n height: 1em;\n clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);\n transform: scale(0);\n transform-origin: bottom left;\n transition: 120ms transform ease-in-out;\n box-shadow: inset 1em 1em #428bca;\n /* Windows High Contrast Mode */\n background-color: CanvasText;\n}\n\n/** This sets the size of the scale up for the shape we defined above **/\ninput[type=\"checkbox\"]:checked::before {\n transform: scale(1);\n}\n\n/** This sets the scale and color of the DISABLED but CHECKED checkbox */\ninput[type=checkbox]:disabled::before, input[type=radio]:disabled::before {\n content: \"\";\n width: 1em;\n height: 1em;\n transform: scale(1);\n box-shadow: inset 1em 1em rgb(211, 211, 211);\n}\n\n/* This sets the scale and style of a DISABLED checkbox that is NOT checked */\ninput[type=checkbox]:disabled:not(:checked)::before, input[type=radio]:disabled:not(:checked)::before {\n content: \"\";\n transform: scale(0);\n cursor: not-allowed;\n pointer-events:none;\n}\n\n/** this is the color of the checkbox and content on a disabled, checked box **/\ninput[type=checkbox]:disabled, input[type=radio]:disabled {\n --form-control-color: rgb(211, 211, 211);\n color: #959495;\n cursor: not-allowed;\n pointer-events:none;\n}\n\n\n/** Radio styles to replace iCheck **/\n\ninput[type=\"radio\"] {\n appearance: none;\n background-color: #fff;\n margin: 0;\n font: inherit;\n color: #959495;\n width: 1.8em;\n height: 1.8em;\n border: 0.05em solid;\n border-radius: 50%;\n transform: translateY(-0.075em);\n display: grid;\n place-content: center;\n}\n\ninput[type=\"radio\"]::before {\n content: \"\";\n width: 1em;\n height: 1em;\n border-radius: 50%;\n transform: scale(0);\n transition: 120ms transform ease-in-out;\n box-shadow: inset 1em 1em #428bca;\n}\n\ninput[type=\"radio\"]:checked::before {\n transform: scale(1);\n}\n\n\n/**\n* This addresses the column selector in bootstrap-table. Without these two lines, the\n* checkbox and the with the label text that BS tables generates will\n* end up on two different lines and it looks assy.\n */\n.dropdown-item-marker input[type=checkbox] {\n font-size: 10px;\n}\n\n.bootstrap-table .fixed-table-toolbar li.dropdown-item-marker label {\n font-weight: normal;\n display: grid;\n grid-template-columns: .1em auto;\n gap: 1.5em;\n}\n\n.container.row-striped .col-md-6 {\n overflow-wrap:anywhere;\n}\n\n.nav-tabs-custom > .nav-tabs > li {\n z-index: 1;\n}\n\n.select2-container .select2-search--inline .select2-search__field{\n padding-left:15px;\n}\n\n.nav-tabs-custom > .nav-tabs > li.active {\n font-weight: bold;\n}\n\n/** --------------------------------------- **/\n/** End checkbox styles to replace iCheck **/\n/** --------------------------------------- **/\n\n/**\n/** Separator styles with text in the middle. Currently only used by the login page but\n/** could be used elsewhere.\n */\n\n.separator {\n display: flex;\n align-items: center;\n text-align: center;\n padding-top: 20px;\n color: #959495;\n}\n\n.separator::before,\n.separator::after {\n content: '';\n flex: 1;\n border-bottom: 1px solid #959495;\n}\n\n.separator:not(:empty)::before {\n margin-right: .25em;\n}\n\n.separator:not(:empty)::after {\n margin-left: .25em;\n}\n.datepicker.dropdown-menu {\n z-index: 1030 !important;\n}\n\n.sidebar-menu > li .badge {\n margin-top: 0px;\n filter: brightness(70%);\n font-size: 70%;\n}\n\n/** this is needed to override ekko-lightboxes card view styles **/\n.bootstrap-table .fixed-table-container .table tbody tr .card-view {\n display: table-row !important;\n}\n\n.form-control-static {\n padding-top: 0px;\n}\n\n\ntd.text-right.text-padding-number-cell {\n padding-right: 30px !important;\n white-space: nowrap;\n}\n\nth.text-right.text-padding-number-footer-cell {\n padding-right: 20px !important;\n white-space: nowrap;\n}\n\ncode.single-line {\n white-space: pre-wrap;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n overflow: hidden;\n max-width: 400px;\n}\n\np.monospace, span.monospace {\n font-family: monospace, monospace;\n}\n\nlegend.highlight {\n background: repeating-linear-gradient(\n 45deg,\n #222d32,\n #222d32 10px,\n #444 10px,\n #444 11px\n );\n\n color: #fff;\n font-size: 18px;\n padding: 6px 6px 6px 10px;\n}\n\nlegend.highlight a {\n color: #fff;\n cursor: pointer;\n}\n\nfieldset.bottom-padded {\n padding-bottom: 20px;\n}\n\ncaption.tableCaption {\n font-size: 18px;\n padding-left: 8px;\n}\n\n// via https://github.com/grokability/snipe-it/issues/11754\n.sidebar-toggle.btn {\n border-radius: 3px;\n box-shadow: none;\n border-top: 0px solid transparent;\n border-bottom: 0px solid transparent;\n padding-left: 15px;\n padding-right: 15px;\n padding-top: 12px;\n padding-bottom: 12px;\n margin-left: -47px;\n margin-top: 2px;\n}\n.popover.help-popover,\n.popover.help-popover .popover-content,\n.popover.help-popover .popover-body,\n.popover.help-popover .popover-title,\n.popover.help-popover .popover-header {\n color: #000;\n}\n\n.visually-hidden {\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n clip: rect(0,0,0,0);\n white-space: preserve;\n display: inline-block;\n}\n\ninput[name=\"columnsSearch\"] {\n width: 120px;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/public/css/dist/all.css b/public/css/dist/all.css index 2c5aec8584..4f0251968a 100644 --- a/public/css/dist/all.css +++ b/public/css/dist/all.css @@ -22837,6 +22837,9 @@ caption.tableCaption { white-space: preserve; display: inline-block; } +input[name="columnsSearch"] { + width: 120px; +} /*# sourceMappingURL=app.css.map*/ @@ -24449,6 +24452,9 @@ caption.tableCaption { white-space: preserve; display: inline-block; } +input[name="columnsSearch"] { + width: 120px; +} /*# sourceMappingURL=overrides.css.map*/ \ No newline at end of file diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 99bbd47641..5a456020e0 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -2,8 +2,8 @@ "/js/dist/all.js": "/js/dist/all.js?id=76d88f0f91b852f7eecbce357ab5858b", "/css/dist/skins/skin-black-dark.css": "/css/dist/skins/skin-black-dark.css?id=42f97cd5b9ee7521b04a448e7fc16ac9", "/css/dist/skins/_all-skins.css": "/css/dist/skins/_all-skins.css?id=d81a7ed323f68a7c5e3e9115f7fb5404", - "/css/build/overrides.css": "/css/build/overrides.css?id=d8bef2b8ef03ee8dbb120749211eafc0", - "/css/build/app.css": "/css/build/app.css?id=1bf6a5e78cbccff6e6d32640c28c54b8", + "/css/build/overrides.css": "/css/build/overrides.css?id=d6ec1f1e36c57f8cd96218d2a59a2580", + "/css/build/app.css": "/css/build/app.css?id=d591faf82795dc8151a6d3f84c26f5a4", "/css/build/AdminLTE.css": "/css/build/AdminLTE.css?id=ee0ed88465dd878588ed044eefb67723", "/css/dist/skins/skin-yellow.css": "/css/dist/skins/skin-yellow.css?id=3d8a3d2035ea28aaad4a703c2646f515", "/css/dist/skins/skin-yellow-dark.css": "/css/dist/skins/skin-yellow-dark.css?id=3979929a3423ff35b96b1fc84299fdf3", @@ -19,7 +19,7 @@ "/css/dist/skins/skin-blue.css": "/css/dist/skins/skin-blue.css?id=b2cd9f59d7e8587939ce27b2d3363d82", "/css/dist/skins/skin-blue-dark.css": "/css/dist/skins/skin-blue-dark.css?id=7277edd636cf46aa7786a4449ce0ead7", "/css/dist/skins/skin-black.css": "/css/dist/skins/skin-black.css?id=cbd06cc1d58197ccc81d4376bbaf0d28", - "/css/dist/all.css": "/css/dist/all.css?id=dd5f7ab27ec80569b90d63a883718ff9", + "/css/dist/all.css": "/css/dist/all.css?id=ff957e6cef08b72d32cf28fe50da645a", "/css/dist/signature-pad.css": "/css/dist/signature-pad.css?id=6a89d3cd901305e66ced1cf5f13147f7", "/css/dist/signature-pad.min.css": "/css/dist/signature-pad.min.css?id=6a89d3cd901305e66ced1cf5f13147f7", "/js/select2/i18n/af.js": "/js/select2/i18n/af.js?id=4f6fcd73488ce79fae1b7a90aceaecde", diff --git a/resources/assets/less/overrides.less b/resources/assets/less/overrides.less index 0a9fc7c4c6..fdc7702f67 100644 --- a/resources/assets/less/overrides.less +++ b/resources/assets/less/overrides.less @@ -1260,4 +1260,8 @@ caption.tableCaption { clip: rect(0,0,0,0); white-space: preserve; display: inline-block; +} + +input[name="columnsSearch"] { + width: 120px; } \ No newline at end of file diff --git a/resources/views/hardware/index.blade.php b/resources/views/hardware/index.blade.php index fa67078b7b..444c807188 100755 --- a/resources/views/hardware/index.blade.php +++ b/resources/views/hardware/index.blade.php @@ -47,6 +47,8 @@ {{-- Page content --}} @section('content') + +
@@ -66,6 +68,7 @@ data-show-footer="true" data-sort-order="asc" data-sort-name="name" + data-show-columns-search="true" data-toolbar="#assetsBulkEditToolbar" data-bulk-button-id="#bulkAssetEditButton" data-bulk-form-id="#assetsBulkForm" From 2462bc05b3cfc0d6ce39c5c195e3663e81f31bc4 Mon Sep 17 00:00:00 2001 From: snipe Date: Fri, 19 Sep 2025 12:41:30 +0100 Subject: [PATCH 14/15] Added column search to additional views --- resources/views/categories/view.blade.php | 1 + resources/views/companies/view.blade.php | 1 + resources/views/depreciations/view.blade.php | 1 + resources/views/hardware/checkin-due.blade.php | 1 + resources/views/hardware/view.blade.php | 1 + resources/views/locations/view.blade.php | 3 +++ resources/views/manufacturers/view.blade.php | 1 + resources/views/models/view.blade.php | 1 + resources/views/statuslabels/view.blade.php | 1 + resources/views/suppliers/view.blade.php | 1 + resources/views/users/view.blade.php | 1 + 11 files changed, 13 insertions(+) diff --git a/resources/views/categories/view.blade.php b/resources/views/categories/view.blade.php index 7de415e11c..be11551d4c 100644 --- a/resources/views/categories/view.blade.php +++ b/resources/views/categories/view.blade.php @@ -61,6 +61,7 @@ @if ($category->category_type=='asset') data-columns="{{ \App\Presenters\AssetPresenter::dataTableLayout() }}" + data-show-columns-search="true" data-cookie-id-table="categoryAssetsTable" id="categoryAssetsTable" data-buttons="assetButtons" diff --git a/resources/views/companies/view.blade.php b/resources/views/companies/view.blade.php index 37088b2538..fe3347e81f 100644 --- a/resources/views/companies/view.blade.php +++ b/resources/views/companies/view.blade.php @@ -94,6 +94,7 @@ data-cookie-id-table="assetsListingTable" data-id-table="assetsListingTable" data-side-pagination="server" + data-show-columns-search="true" data-sort-order="asc" data-toolbar="#assetsBulkEditToolbar" data-bulk-button-id="#bulkAssetEditButton" diff --git a/resources/views/depreciations/view.blade.php b/resources/views/depreciations/view.blade.php index 591353ba28..59df3010dd 100644 --- a/resources/views/depreciations/view.blade.php +++ b/resources/views/depreciations/view.blade.php @@ -65,6 +65,7 @@
Date: Mon, 22 Sep 2025 15:23:14 +0200 Subject: [PATCH 15/15] fix typo --- resources/views/settings/backups.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/settings/backups.blade.php b/resources/views/settings/backups.blade.php index baa1d1ebd3..034d9e703c 100644 --- a/resources/views/settings/backups.blade.php +++ b/resources/views/settings/backups.blade.php @@ -150,7 +150,7 @@

- {!! trans('admin/settings/general.backups_path', ['path'=> 'storage/app/backup']) !!} + {!! trans('admin/settings/general.backups_path', ['path'=> 'storage/app/backups']) !!}

@if (config('app.lock_passwords')===true)