mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-12 22:22:32 +01:00
Fixes for merge
This commit is contained in:
commit
e78ae16e3c
@ -9,7 +9,7 @@
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
namespace App\Livewire;
|
||||
|
||||
use App\DataMapper\ClientSettings;
|
||||
use App\Factory\ClientFactory;
|
||||
@ -251,7 +251,7 @@ class BillingPortalPurchase extends Component
|
||||
$company = $this->subscription->company;
|
||||
$user = $this->subscription->user;
|
||||
$user->setCompany($company);
|
||||
|
||||
|
||||
$client_repo = new ClientRepository(new ClientContactRepository());
|
||||
|
||||
$data = [
|
||||
@ -411,7 +411,7 @@ class BillingPortalPurchase extends Component
|
||||
'campaign' => $this->campaign,
|
||||
], now()->addMinutes(60));
|
||||
|
||||
$this->emit('beforePaymentEventsCompleted');
|
||||
$this->dispatch('beforePaymentEventsCompleted');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -432,7 +432,7 @@ class BillingPortalPurchase extends Component
|
||||
public function handlePaymentNotRequired()
|
||||
{
|
||||
$is_eligible = $this->subscription->service()->isEligible($this->contact);
|
||||
|
||||
|
||||
if ($is_eligible['status_code'] != 200) {
|
||||
$this->steps['not_eligible'] = true;
|
||||
$this->steps['not_eligible_message'] = $is_eligible['message'];
|
@ -9,7 +9,7 @@
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
namespace App\Livewire;
|
||||
|
||||
use App\DataMapper\ClientSettings;
|
||||
use App\Factory\ClientFactory;
|
||||
@ -542,7 +542,7 @@ class BillingPortalPurchasev2 extends Component
|
||||
'bundle' => $this->bundle,
|
||||
], now()->addMinutes(60));
|
||||
|
||||
$this->emit('beforePaymentEventsCompleted');
|
||||
$this->dispatch('beforePaymentEventsCompleted');
|
||||
|
||||
return $this;
|
||||
}
|
@ -10,7 +10,7 @@
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
namespace App\Livewire;
|
||||
|
||||
use App\Libraries\MultiDB;
|
||||
use App\Models\Company;
|
@ -10,7 +10,7 @@
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
namespace App\Livewire;
|
||||
|
||||
use App\Libraries\MultiDB;
|
||||
use App\Models\Client;
|
@ -10,7 +10,7 @@
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
namespace App\Livewire;
|
||||
|
||||
use App\Libraries\MultiDB;
|
||||
use App\Models\Company;
|
@ -10,7 +10,7 @@
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
namespace App\Livewire;
|
||||
|
||||
use App\Libraries\MultiDB;
|
||||
use Livewire\Component;
|
@ -10,7 +10,7 @@
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Http\Livewire\PaymentMethods;
|
||||
namespace App\Livewire\PaymentMethods;
|
||||
|
||||
use App\Libraries\MultiDB;
|
||||
use Livewire\Component;
|
||||
@ -46,7 +46,7 @@ class UpdateDefaultMethod extends Component
|
||||
$this->token->is_default = 1;
|
||||
$this->token->save();
|
||||
|
||||
$this->emit('UpdateDefaultMethod::method-updated');
|
||||
$this->dispatch('UpdateDefaultMethod::method-updated');
|
||||
}
|
||||
|
||||
public function render()
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
namespace App\Livewire;
|
||||
|
||||
use App\Libraries\MultiDB;
|
||||
use App\Models\Client;
|
@ -10,7 +10,7 @@
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
namespace App\Livewire;
|
||||
|
||||
use App\Libraries\MultiDB;
|
||||
use App\Models\Company;
|
@ -10,7 +10,7 @@
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
namespace App\Livewire;
|
||||
|
||||
use App\Jobs\Invoice\CreateEInvoice;
|
||||
use App\Libraries\MultiDB;
|
@ -10,7 +10,7 @@
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Http\Livewire\Profile\Settings;
|
||||
namespace App\Livewire\Profile\Settings;
|
||||
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Livewire\Component;
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Profile\Settings;
|
||||
namespace App\Livewire\Profile\Settings;
|
||||
|
||||
use Livewire\Component;
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Profile\Settings;
|
||||
namespace App\Livewire\Profile\Settings;
|
||||
|
||||
use Livewire\Component;
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Profile\Settings;
|
||||
namespace App\Livewire\Profile\Settings;
|
||||
|
||||
use Livewire\Component;
|
||||
|
@ -10,7 +10,7 @@
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
namespace App\Livewire;
|
||||
|
||||
use App\Libraries\MultiDB;
|
||||
use App\Models\Invoice;
|
@ -10,7 +10,7 @@
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
namespace App\Livewire;
|
||||
|
||||
use App\Libraries\MultiDB;
|
||||
use App\Models\Company;
|
@ -10,7 +10,7 @@
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
namespace App\Livewire;
|
||||
|
||||
use App\Libraries\MultiDB;
|
||||
use App\Models\RecurringInvoice;
|
@ -10,7 +10,7 @@
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Http\Livewire\RecurringInvoices;
|
||||
namespace App\Livewire\RecurringInvoices;
|
||||
|
||||
use App\Models\Invoice;
|
||||
use Livewire\Component;
|
@ -10,7 +10,7 @@
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
namespace App\Livewire;
|
||||
|
||||
use App\Libraries\MultiDB;
|
||||
use App\Models\RecurringInvoice;
|
@ -10,7 +10,7 @@
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
namespace App\Livewire;
|
||||
|
||||
use App\Libraries\MultiDB;
|
||||
use App\Models\ClientContact;
|
||||
@ -190,9 +190,10 @@ class RequiredClientInfo extends Component
|
||||
}
|
||||
|
||||
if ($this->updateClientDetails($data)) {
|
||||
$this->emit('passed-required-fields-check', [
|
||||
'client_postal_code' => $this->contact->client->postal_code,
|
||||
]);
|
||||
$this->dispatch(
|
||||
'passed-required-fields-check',
|
||||
client_postal_code: $this->contact->client->postal_code
|
||||
);
|
||||
|
||||
//if stripe is enabled, we want to update the customer at this point.
|
||||
|
||||
@ -258,7 +259,6 @@ class RequiredClientInfo extends Component
|
||||
}
|
||||
|
||||
if (Str::startsWith($field['name'], 'contact_')) {
|
||||
|
||||
if (empty($this->contact->{$_field}) || is_null($this->contact->{$_field}) || str_contains($this->contact->{$_field}, '@example.com')) {
|
||||
$this->show_form = true;
|
||||
} else {
|
||||
@ -289,14 +289,15 @@ class RequiredClientInfo extends Component
|
||||
|
||||
public function handleCopyBilling(): void
|
||||
{
|
||||
$this->emit('update-shipping-data', [
|
||||
'client_shipping_address_line_1' => $this->contact->client->address1,
|
||||
'client_shipping_address_line_2' => $this->contact->client->address2,
|
||||
'client_shipping_city' => $this->contact->client->city,
|
||||
'client_shipping_state' => $this->contact->client->state,
|
||||
'client_shipping_postal_code' => $this->contact->client->postal_code,
|
||||
'client_shipping_country_id' => $this->contact->client->country_id,
|
||||
]);
|
||||
$this->dispatch(
|
||||
'update-shipping-data',
|
||||
client_shipping_address_line_1: $this->contact->client->address1,
|
||||
client_shipping_address_line_2: $this->contact->client->address2,
|
||||
client_shipping_city: $this->contact->client->city,
|
||||
client_shipping_state: $this->contact->client->state,
|
||||
client_shipping_postal_code: $this->contact->client->postal_code,
|
||||
client_shipping_country_id: $this->contact->client->country_id,
|
||||
);
|
||||
}
|
||||
|
||||
public function render()
|
@ -10,7 +10,7 @@
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
namespace App\Livewire;
|
||||
|
||||
use App\Libraries\MultiDB;
|
||||
use App\Models\ClientContact;
|
||||
@ -122,7 +122,7 @@ class SubscriptionPlanSwitch extends Component
|
||||
$this->handlePaymentNotRequired();
|
||||
}
|
||||
|
||||
$this->emit('beforePaymentEventsCompleted');
|
||||
$this->dispatch('beforePaymentEventsCompleted');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -153,7 +153,7 @@ class SubscriptionPlanSwitch extends Component
|
||||
|
||||
$this->hide_button = true;
|
||||
|
||||
$this->dispatchBrowserEvent('redirectRoute', ['route' => $response]);
|
||||
$this->dispatch('redirectRoute', ['route' => $response]);
|
||||
|
||||
// return redirect($response);
|
||||
}
|
@ -10,7 +10,7 @@
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
namespace App\Livewire;
|
||||
|
||||
use App\Libraries\MultiDB;
|
||||
use App\Models\RecurringInvoice;
|
@ -10,7 +10,7 @@
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
namespace App\Livewire;
|
||||
|
||||
use App\Libraries\MultiDB;
|
||||
use App\Models\RecurringInvoice;
|
@ -10,7 +10,7 @@
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
namespace App\Livewire;
|
||||
|
||||
use App\Libraries\MultiDB;
|
||||
use App\Models\Task;
|
@ -10,7 +10,7 @@
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
namespace App\Livewire;
|
||||
|
||||
use App\DataMapper\FeesAndLimits;
|
||||
use App\Factory\CompanyGatewayFactory;
|
@ -35,7 +35,7 @@ class StaticModel extends Model
|
||||
{
|
||||
use MakesHash;
|
||||
use Excludable;
|
||||
|
||||
|
||||
protected $casts = [
|
||||
'updated_at' => 'timestamp',
|
||||
'created_at' => 'timestamp',
|
||||
|
@ -11,23 +11,24 @@
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use App\Helpers\Mail\GmailTransport;
|
||||
use App\Helpers\Mail\Office365MailTransport;
|
||||
use App\Http\Middleware\SetDomainNameDb;
|
||||
use App\Utils\Ninja;
|
||||
use Livewire\Livewire;
|
||||
use App\Models\Invoice;
|
||||
use App\Models\Proposal;
|
||||
use App\Utils\Ninja;
|
||||
use App\Utils\TruthSource;
|
||||
use Illuminate\Database\Eloquent\Relations\Relation;
|
||||
use Illuminate\Mail\Mailer;
|
||||
use Illuminate\Queue\Events\JobProcessing;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use Illuminate\Support\Facades\Blade;
|
||||
use App\Helpers\Mail\GmailTransport;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use Illuminate\Support\Facades\Blade;
|
||||
use Illuminate\Support\Facades\Queue;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Livewire\Livewire;
|
||||
use App\Http\Middleware\SetDomainNameDb;
|
||||
use Illuminate\Queue\Events\JobProcessing;
|
||||
use App\Helpers\Mail\Office365MailTransport;
|
||||
use Illuminate\Database\Eloquent\Relations\Relation;
|
||||
|
||||
class AppServiceProvider extends ServiceProvider
|
||||
{
|
||||
@ -72,6 +73,12 @@ class AppServiceProvider extends ServiceProvider
|
||||
]);
|
||||
}
|
||||
|
||||
Livewire::setUpdateRoute(function ($handle) {
|
||||
return Route::post('/livewire/update', $handle)
|
||||
->middleware('client');
|
||||
});
|
||||
|
||||
|
||||
/* Ensure we don't have stale state in jobs */
|
||||
Queue::before(function (JobProcessing $event) {
|
||||
App::forgetInstance('truthsource');
|
||||
@ -96,11 +103,11 @@ class AppServiceProvider extends ServiceProvider
|
||||
'transport' => 'postmark',
|
||||
'token' => $postmark_key
|
||||
]));
|
||||
|
||||
|
||||
return $this;
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
Mailer::macro('mailgun_config', function (string $secret, string $domain, string $endpoint = 'api.mailgun.net') {
|
||||
// @phpstan-ignore /** @phpstan-ignore-next-line **/
|
||||
Mailer::setSymfonyTransport(app('mail.manager')->createSymfonyTransport([
|
||||
@ -110,7 +117,7 @@ class AppServiceProvider extends ServiceProvider
|
||||
'endpoint' => $endpoint,
|
||||
'scheme' => config('services.mailgun.scheme'),
|
||||
]));
|
||||
|
||||
|
||||
return $this;
|
||||
});
|
||||
|
||||
|
@ -68,7 +68,7 @@
|
||||
"league/flysystem-aws-s3-v3": "^3.0",
|
||||
"league/fractal": "^0.20.0",
|
||||
"league/omnipay": "^3.1",
|
||||
"livewire/livewire": "^2.10",
|
||||
"livewire/livewire": "^3.0",
|
||||
"microsoft/microsoft-graph": "^1.69",
|
||||
"mollie/mollie-api-php": "^2.36",
|
||||
"nelexa/zip": "^4.0",
|
||||
|
18737
composer.lock
generated
18737
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@ -3,156 +3,157 @@
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|---------------------------------------------------------------------------
|
||||
| Class Namespace
|
||||
|--------------------------------------------------------------------------
|
||||
|---------------------------------------------------------------------------
|
||||
|
|
||||
| This value sets the root namespace for Livewire component classes in
|
||||
| your application. This value affects component auto-discovery and
|
||||
| any Livewire file helper commands, like `artisan make:livewire`.
|
||||
|
|
||||
| After changing this item, run: `php artisan livewire:discover`.
|
||||
| This value sets the root class namespace for Livewire component classes in
|
||||
| your application. This value will change where component auto-discovery
|
||||
| finds components. It's also referenced by the file creation commands.
|
||||
|
|
||||
*/
|
||||
|
||||
'class_namespace' => 'App\\Http\\Livewire',
|
||||
'class_namespace' => 'App\\Livewire',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|---------------------------------------------------------------------------
|
||||
| View Path
|
||||
|--------------------------------------------------------------------------
|
||||
|---------------------------------------------------------------------------
|
||||
|
|
||||
| This value sets the path for Livewire component views. This affects
|
||||
| file manipulation helper commands like `artisan make:livewire`.
|
||||
| This value is used to specify where Livewire component Blade templates are
|
||||
| stored when running file creation commands like `artisan make:livewire`.
|
||||
| It is also used if you choose to omit a component's render() method.
|
||||
|
|
||||
*/
|
||||
|
||||
'view_path' => resource_path('views/livewire'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|---------------------------------------------------------------------------
|
||||
| Layout
|
||||
|--------------------------------------------------------------------------
|
||||
| The default layout view that will be used when rendering a component via
|
||||
| Route::get('/some-endpoint', SomeComponent::class);. In this case the
|
||||
| the view returned by SomeComponent will be wrapped in "layouts.app"
|
||||
|---------------------------------------------------------------------------
|
||||
| The view that will be used as the layout when rendering a single component
|
||||
| as an entire page via `Route::get('/post/create', CreatePost::class);`.
|
||||
| In this case, the view returned by CreatePost will render into $slot.
|
||||
|
|
||||
*/
|
||||
|
||||
'layout' => 'layouts.app',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Livewire Assets URL
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This value sets the path to Livewire JavaScript assets, for cases where
|
||||
| your app's domain root is not the correct path. By default, Livewire
|
||||
| will load its JavaScript assets from the app's "relative root".
|
||||
|
|
||||
| Examples: "/assets", "myurl.com/app".
|
||||
|---------------------------------------------------------------------------
|
||||
| Lazy Loading Placeholder
|
||||
|---------------------------------------------------------------------------
|
||||
| Livewire allows you to lazy load components that would otherwise slow down
|
||||
| the initial page load. Every component can have a custom placeholder or
|
||||
| you can define the default placeholder view for all components below.
|
||||
|
|
||||
*/
|
||||
|
||||
'asset_url' => null,
|
||||
'lazy_placeholder' => null,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Livewire App URL
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This value should be used if livewire assets are served from CDN.
|
||||
| Livewire will communicate with an app through this url.
|
||||
|
|
||||
| Examples: "https://my-app.com", "myurl.com/app".
|
||||
|
|
||||
*/
|
||||
|
||||
'app_url' => null,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Livewire Endpoint Middleware Group
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This value sets the middleware group that will be applied to the main
|
||||
| Livewire "message" endpoint (the endpoint that gets hit everytime
|
||||
| a Livewire component updates). It is set to "web" by default.
|
||||
|
|
||||
*/
|
||||
|
||||
'middleware_group' => 'web',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Livewire Temporary File Uploads Endpoint Configuration
|
||||
|--------------------------------------------------------------------------
|
||||
|---------------------------------------------------------------------------
|
||||
| Temporary File Uploads
|
||||
|---------------------------------------------------------------------------
|
||||
|
|
||||
| Livewire handles file uploads by storing uploads in a temporary directory
|
||||
| before the file is validated and stored permanently. All file uploads
|
||||
| are directed to a global endpoint for temporary storage. The config
|
||||
| items below are used for customizing the way the endpoint works.
|
||||
| before the file is stored permanently. All file uploads are directed to
|
||||
| a global endpoint for temporary storage. You may configure this below:
|
||||
|
|
||||
*/
|
||||
|
||||
'temporary_file_upload' => [
|
||||
'disk' => null, // Example: 'local', 's3' Default: 'default'
|
||||
'rules' => null, // Example: ['file', 'mimes:png,jpg'] Default: ['required', 'file', 'max:12288'] (12MB)
|
||||
'directory' => null, // Example: 'tmp' Default 'livewire-tmp'
|
||||
'middleware' => null, // Example: 'throttle:5,1' Default: 'throttle:60,1'
|
||||
'preview_mimes' => [ // Supported file types for temporary pre-signed file URLs.
|
||||
'disk' => null, // Example: 'local', 's3' | Default: 'default'
|
||||
'rules' => null, // Example: ['file', 'mimes:png,jpg'] | Default: ['required', 'file', 'max:12288'] (12MB)
|
||||
'directory' => null, // Example: 'tmp' | Default: 'livewire-tmp'
|
||||
'middleware' => null, // Example: 'throttle:5,1' | Default: 'throttle:60,1'
|
||||
'preview_mimes' => [ // Supported file types for temporary pre-signed file URLs...
|
||||
'png', 'gif', 'bmp', 'svg', 'wav', 'mp4',
|
||||
'mov', 'avi', 'wmv', 'mp3', 'm4a',
|
||||
'jpg', 'jpeg', 'mpga', 'webp', 'wma',
|
||||
],
|
||||
'max_upload_time' => 5, // Max duration (in minutes) before an upload gets invalidated.
|
||||
'max_upload_time' => 5, // Max duration (in minutes) before an upload is invalidated...
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Manifest File Path
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This value sets the path to the Livewire manifest file.
|
||||
| The default should work for most cases (which is
|
||||
| "<app_root>/bootstrap/cache/livewire-components.php"), but for specific
|
||||
| cases like when hosting on Laravel Vapor, it could be set to a different value.
|
||||
|
|
||||
| Example: for Laravel Vapor, it would be "/tmp/storage/bootstrap/cache/livewire-components.php".
|
||||
|
|
||||
*/
|
||||
|
||||
'manifest_path' => null,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Back Button Cache
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This value determines whether the back button cache will be used on pages
|
||||
| that contain Livewire. By disabling back button cache, it ensures that
|
||||
| the back button shows the correct state of components, instead of
|
||||
| potentially stale, cached data.
|
||||
|
|
||||
| Setting it to "false" (default) will disable back button cache.
|
||||
|
|
||||
*/
|
||||
|
||||
'back_button_cache' => false,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|---------------------------------------------------------------------------
|
||||
| Render On Redirect
|
||||
|--------------------------------------------------------------------------
|
||||
|---------------------------------------------------------------------------
|
||||
|
|
||||
| This value determines whether Livewire will render before it's redirected
|
||||
| or not. Setting it to "false" (default) will mean the render method is
|
||||
| skipped when redirecting. And "true" will mean the render method is
|
||||
| run before redirecting. Browsers bfcache can store a potentially
|
||||
| stale view if render is skipped on redirect.
|
||||
| This value determines if Livewire will run a component's `render()` method
|
||||
| after a redirect has been triggered using something like `redirect(...)`
|
||||
| Setting this to true will render the view once more before redirecting
|
||||
|
|
||||
*/
|
||||
|
||||
'render_on_redirect' => false,
|
||||
|
||||
/*
|
||||
|---------------------------------------------------------------------------
|
||||
| Eloquent Model Binding
|
||||
|---------------------------------------------------------------------------
|
||||
|
|
||||
| Previous versions of Livewire supported binding directly to eloquent model
|
||||
| properties using wire:model by default. However, this behavior has been
|
||||
| deemed too "magical" and has therefore been put under a feature flag.
|
||||
|
|
||||
*/
|
||||
|
||||
'legacy_model_binding' => true,
|
||||
|
||||
/*
|
||||
|---------------------------------------------------------------------------
|
||||
| Auto-inject Frontend Assets
|
||||
|---------------------------------------------------------------------------
|
||||
|
|
||||
| By default, Livewire automatically injects its JavaScript and CSS into the
|
||||
| <head> and <body> of pages containing Livewire components. By disabling
|
||||
| this behavior, you need to use @livewireStyles and @livewireScripts.
|
||||
|
|
||||
*/
|
||||
|
||||
'inject_assets' => true,
|
||||
|
||||
/*
|
||||
|---------------------------------------------------------------------------
|
||||
| Navigate (SPA mode)
|
||||
|---------------------------------------------------------------------------
|
||||
|
|
||||
| By adding `wire:navigate` to links in your Livewire application, Livewire
|
||||
| will prevent the default link handling and instead request those pages
|
||||
| via AJAX, creating an SPA-like effect. Configure this behavior here.
|
||||
|
|
||||
*/
|
||||
|
||||
'navigate' => [
|
||||
'show_progress_bar' => true,
|
||||
'progress_bar_color' => '#2299dd',
|
||||
],
|
||||
|
||||
/*
|
||||
|---------------------------------------------------------------------------
|
||||
| HTML Morph Markers
|
||||
|---------------------------------------------------------------------------
|
||||
|
|
||||
| Livewire intelligently "morphs" existing HTML into the newly rendered HTML
|
||||
| after each update. To make this process more reliable, Livewire injects
|
||||
| "markers" into the rendered Blade surrounding @if, @class & @foreach.
|
||||
|
|
||||
*/
|
||||
|
||||
'inject_morph_markers' => true,
|
||||
|
||||
/*
|
||||
|---------------------------------------------------------------------------
|
||||
| Pagination Theme
|
||||
|---------------------------------------------------------------------------
|
||||
|
|
||||
| When enabling Livewire's pagination feature by using the `WithPagination`
|
||||
| trait, Livewire will use Tailwind templates to render pagination views
|
||||
| on the page. If you want Bootstrap CSS, you can specify: "bootstrap"
|
||||
|
|
||||
*/
|
||||
|
||||
'pagination_theme' => 'tailwind',
|
||||
];
|
||||
|
@ -49,7 +49,6 @@
|
||||
|
||||
<!-- Scripts -->
|
||||
@vite('resources/js/app.js')
|
||||
<script src="{{ asset('vendor/alpinejs@2.8.2/alpine.js') }}" defer></script>
|
||||
|
||||
<!-- Fonts -->
|
||||
{{-- <link rel="dns-prefetch" href="https://fonts.gstatic.com"> --}}
|
||||
|
@ -19,7 +19,7 @@
|
||||
<h1 class="text-center text-3xl mt-8">{{ ctrans('texts.register') }}</h1>
|
||||
<p class="block text-center text-gray-600">{{ ctrans('texts.register_label') }}</p>
|
||||
|
||||
<form id="register-form" action="{{ route('client.register', request()->route('company_key')) }}" method="POST" x-data="{more: false, busy: false, isSubmitted: false}" x-on:submit="isSubmitted = true">
|
||||
<form id="register-form" action="{{ route('client.register', request()->route('company_key')) }}" method="POST" x-data="{more: false, busy: false, isSubmitted: false}" x-on:submit="busy = true; isSubmitted = true">
|
||||
@if($register_company)
|
||||
<input type="hidden" name="company_key" value="{{ $register_company->company_key }}">
|
||||
@endif
|
||||
@ -32,8 +32,8 @@
|
||||
@if($field['visible'])
|
||||
<div class="col-span-12 md:col-span-6">
|
||||
<section class="flex items-center">
|
||||
<label
|
||||
for="{{ $field['key'] }}"
|
||||
<label
|
||||
for="{{ $field['key'] }}"
|
||||
class="input-label">
|
||||
@if(in_array($field['key'], ['custom_value1','custom_value2','custom_value3','custom_value4']))
|
||||
{{ (new App\Utils\Helpers())->makeCustomField($register_company->custom_fields, str_replace("custom_value","client", $field['key']))}}
|
||||
@ -41,29 +41,29 @@
|
||||
{{ ctrans("texts.{$field['key']}") }}
|
||||
@endif
|
||||
</label>
|
||||
|
||||
|
||||
@if($field['required'])
|
||||
<section class="text-red-400 ml-1 text-sm">*</section>
|
||||
@endif
|
||||
</section>
|
||||
|
||||
@if($field['key'] === 'email')
|
||||
<input
|
||||
id="{{ $field['key'] }}"
|
||||
class="input w-full"
|
||||
<input
|
||||
id="{{ $field['key'] }}"
|
||||
class="input w-full"
|
||||
type="email"
|
||||
name="{{ $field['key'] }}"
|
||||
value="{{ old($field['key']) }}"
|
||||
/>
|
||||
@elseif($field['key'] === 'password')
|
||||
<input
|
||||
id="{{ $field['key'] }}"
|
||||
class="input w-full"
|
||||
<input
|
||||
id="{{ $field['key'] }}"
|
||||
class="input w-full"
|
||||
type="password"
|
||||
name="{{ $field['key'] }}"
|
||||
/>
|
||||
@elseif($field['key'] === 'currency_id')
|
||||
<select
|
||||
<select
|
||||
id="currency_id"
|
||||
class="input w-full form-select bg-white"
|
||||
name="currency_id">
|
||||
@ -75,7 +75,7 @@
|
||||
@endforeach
|
||||
</select>
|
||||
@elseif($field['key'] === 'country_id')
|
||||
<select
|
||||
<select
|
||||
id="shipping_country"
|
||||
class="input w-full form-select bg-white"
|
||||
name="country_id">
|
||||
@ -89,9 +89,9 @@
|
||||
@endforeach
|
||||
</select>
|
||||
@else
|
||||
<input
|
||||
id="{{ $field['key'] }}"
|
||||
class="input w-full"
|
||||
<input
|
||||
id="{{ $field['key'] }}"
|
||||
class="input w-full"
|
||||
name="{{ $field['key'] }}"
|
||||
value="{{ old($field['key']) }}"
|
||||
/>
|
||||
@ -104,24 +104,24 @@
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
@if($field['key'] === 'password')
|
||||
@if($field['key'] === 'password')
|
||||
<div class="col-span-12 md:col-span-6">
|
||||
<section class="flex items-center">
|
||||
<label
|
||||
for="password_confirmation"
|
||||
<label
|
||||
for="password_confirmation"
|
||||
class="input-label">
|
||||
{{ ctrans('texts.password_confirmation') }}
|
||||
</label>
|
||||
|
||||
|
||||
@if($field['required'])
|
||||
<section class="text-red-400 ml-1 text-sm">*</section>
|
||||
@endif
|
||||
</section>
|
||||
|
||||
<input
|
||||
id="password_confirmation"
|
||||
type="password"
|
||||
class="input w-full"
|
||||
<input
|
||||
id="password_confirmation"
|
||||
type="password"
|
||||
class="input w-full"
|
||||
name="password_confirmation"
|
||||
/>
|
||||
</div>
|
||||
@ -132,7 +132,7 @@
|
||||
</div>
|
||||
|
||||
<div class="flex justify-between items-center mt-8">
|
||||
|
||||
|
||||
<a href="{{route('client.login')}}" class="button button-info bg-green-600 text-white">{{ ctrans('texts.login_label') }}</a>
|
||||
|
||||
<span class="inline-flex items-center" x-data="{ terms_of_service: false, privacy_policy: false }">
|
||||
@ -151,8 +151,8 @@
|
||||
@enderror
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<button class="button button-primary bg-blue-600" :disabled={{ $submitsForm == 'true' ? 'isSubmitted' : 'busy'}} x-on:click="busy = true">
|
||||
|
||||
<button class="button button-primary bg-blue-600" :disabled={{ $submitsForm == 'true' ? 'isSubmitted' : 'busy'}}>
|
||||
{{ ctrans('texts.register')}}
|
||||
</button>
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
||||
<div class="relative inline-block text-left" x-data="{ open: false }">
|
||||
<div>
|
||||
<span class="rounded shadow-sm">
|
||||
<button x-on:click="open = !open" x-on:click.away="open = false" type="button" class="inline-flex justify-center w-full rounded-md border border-gray-300 px-4 py-2 bg-white text-sm leading-5 font-medium text-gray-700 hover:text-gray-500 focus:outline-none focus:border-blue-300 focus:ring-blue active:bg-gray-50 active:text-gray-800 transition ease-in-out duration-150">
|
||||
<button x-on:click="open = !open" x-on:click.outside="open = false" type="button" class="inline-flex justify-center w-full rounded-md border border-gray-300 px-4 py-2 bg-white text-sm leading-5 font-medium text-gray-700 hover:text-gray-500 focus:outline-none focus:border-blue-300 focus:ring-blue active:bg-gray-50 active:text-gray-800 transition ease-in-out duration-150">
|
||||
<span class="hidden md:block mr-1">{{ auth()->guard('contact')->user()->company->present()->name }}</span>
|
||||
<svg class="md:-mr-1 md:ml-2 h-5 w-5" fill="currentColor" viewBox="0 0 20 20">
|
||||
<path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd" />
|
||||
@ -33,7 +33,7 @@
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div @click.away="open = false" class="ml-3 relative" x-data="{ open: false }">
|
||||
<div @click.outside="open = false" class="ml-3 relative" x-data="{ open: false }">
|
||||
<div>
|
||||
<button data-ref="client-profile-dropdown" @click="open = !open"
|
||||
class="max-w-xs flex items-center text-sm rounded-full focus:outline-none focus:ring">
|
||||
|
@ -7,8 +7,7 @@
|
||||
<div class="flex-1 px-3 md:px-8 flex justify-between items-center">
|
||||
<span class="text-xl text-gray-900" data-ref="meta-title">@yield('meta_title')</span>
|
||||
<div class="flex items-center md:ml-6 md:mr-2">
|
||||
|
||||
<div @click.away="open = false" class="ml-3 relative" x-data="{ open: false }">
|
||||
<div @click.outside="open = false" class="ml-3 relative" x-data="{ open: false }">
|
||||
<div>
|
||||
<button data-ref="client-profile-dropdown" @click="open = !open"
|
||||
class="max-w-xs flex items-center text-sm rounded-full focus:outline-none focus:ring">
|
||||
|
@ -161,14 +161,14 @@
|
||||
@endif
|
||||
</div>
|
||||
@elseif(!$steps['payment_required'])
|
||||
<form wire:submit.prevent="handlePaymentNotRequired" class="mt-8">
|
||||
<form wire:submit="handlePaymentNotRequired" class="mt-8">
|
||||
@csrf
|
||||
<button class="px-3 py-2 border rounded mr-4 hover:border-blue-600">
|
||||
{{ ctrans('texts.click_to_continue') }}
|
||||
</button>
|
||||
</form>
|
||||
@elseif($steps['show_start_trial'])
|
||||
<form wire:submit.prevent="handleTrial" class="mt-8">
|
||||
<form wire:submit="handleTrial" class="mt-8">
|
||||
@csrf
|
||||
<button class="px-3 py-2 border rounded mr-4 hover:border-blue-600">
|
||||
{{ ctrans('texts.trial_call_to_action') }}
|
||||
@ -176,12 +176,12 @@
|
||||
</form>
|
||||
|
||||
@else
|
||||
<form wire:submit.prevent="authenticate" class="mt-8">
|
||||
<form wire:submit="authenticate" class="mt-8">
|
||||
@csrf
|
||||
|
||||
<label for="email_address">
|
||||
<span class="input-label">{{ ctrans('texts.email_address') }}</span>
|
||||
<input wire:model.defer="email" type="email" class="input w-full"/>
|
||||
<input wire:model="email" type="email" class="input w-full"/>
|
||||
|
||||
@error('email')
|
||||
<p class="validation validation-fail block w-full" role="alert">
|
||||
@ -193,7 +193,7 @@
|
||||
@if($steps['existing_user'])
|
||||
<label for="password" class="block mt-2">
|
||||
<span class="input-label">{{ ctrans('texts.password') }}</span>
|
||||
<input wire:model.defer="password" type="password" class="input w-full" autofocus/>
|
||||
<input wire:model="password" type="password" class="input w-full" autofocus/>
|
||||
|
||||
@error('password')
|
||||
<p class="validation validation-fail block w-full" role="alert">
|
||||
@ -229,11 +229,11 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form wire:submit.prevent="handleCoupon" class="flex items-center mt-4">
|
||||
<form wire:submit="handleCoupon" class="flex items-center mt-4">
|
||||
@csrf
|
||||
|
||||
<label class="w-full mr-2">
|
||||
<input type="text" wire:model.defer="coupon" class="input w-full m-0"/>
|
||||
<input type="text" wire:model="coupon" class="input w-full m-0"/>
|
||||
</label>
|
||||
|
||||
<button class="button button-primary bg-primary">{{ ctrans('texts.apply') }}</button>
|
||||
|
@ -30,7 +30,7 @@
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<form wire:submit.prevent="submit">
|
||||
<form wire:submit="submit">
|
||||
<!-- Recurring Plan Products-->
|
||||
<ul role="list" class="-my-6 divide-y divide-gray-200">
|
||||
@if(!empty($subscription->recurring_product_ids))
|
||||
@ -62,7 +62,7 @@
|
||||
@else
|
||||
<p class="text-sm font-light text-gray-700 text-right mr-2 mt-2">{{ ctrans('texts.qty') }}</p>
|
||||
@endif
|
||||
<select wire:model.debounce.300ms="data.{{ $index }}.recurring_qty" class="rounded-md border-gray-300 shadow-sm sm:text-sm"
|
||||
<select wire:model.live.debounce.300ms="data.{{ $index }}.recurring_qty" class="rounded-md border-gray-300 shadow-sm sm:text-sm"
|
||||
@if($subscription->use_inventory_management && $product->in_stock_quantity == 0)
|
||||
disabled
|
||||
@endif
|
||||
@ -164,7 +164,7 @@
|
||||
@else
|
||||
<p class="text-sm font-light text-gray-700 text-right mr-2 mt-2">{{ ctrans('texts.qty') }}</p>
|
||||
@endif
|
||||
<select wire:model.debounce.300ms="data.{{ $index }}.optional_recurring_qty" class="rounded-md border-gray-300 shadow-sm sm:text-sm"
|
||||
<select wire:model.live.debounce.300ms="data.{{ $index }}.optional_recurring_qty" class="rounded-md border-gray-300 shadow-sm sm:text-sm"
|
||||
@if($subscription->use_inventory_management && $product->in_stock_quantity == 0)
|
||||
disabled
|
||||
@endif
|
||||
@ -210,7 +210,7 @@
|
||||
@else
|
||||
<p class="text-sm font-light text-gray-700 text-right mr-2 mt-2">{{ ctrans('texts.qty') }}</p>
|
||||
@endif
|
||||
<select wire:model.debounce.300ms="data.{{ $index }}.optional_qty" class="rounded-md border-gray-300 shadow-sm sm:text-sm">
|
||||
<select wire:model.live.debounce.300ms="data.{{ $index }}.optional_qty" class="rounded-md border-gray-300 shadow-sm sm:text-sm">
|
||||
<option value="0" selected="selected">0</option>
|
||||
@for ($i = 1; $i <= ($subscription->use_inventory_management ? min($product->in_stock_quantity, min(100,$product->max_quantity)) : min(100,$product->max_quantity)); $i++)
|
||||
<option value="{{$i}}">{{$i}}</option>
|
||||
@ -250,7 +250,7 @@
|
||||
@endforeach
|
||||
|
||||
@if(!empty($subscription->promo_code) && !$subscription->trial_enabled)
|
||||
<form wire:submit.prevent="handleCoupon" class="">
|
||||
<form wire:submit="handleCoupon" class="">
|
||||
@csrf
|
||||
<div class="mt-4">
|
||||
<label for="coupon" class="block text-sm font-medium text-white">{{ ctrans('texts.promo_code') }}</label>
|
||||
@ -258,7 +258,7 @@
|
||||
<div class="relative flex flex-grow items-stretch focus-within:z-10">
|
||||
<div class="pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3">
|
||||
</div>
|
||||
<input type="text" wire:model.defer="coupon" class="block w-full rounded-none rounded-l-md border-gray-300 pl-2 focus:border-indigo-500 focus:ring-indigo-500 sm:text-sm text-gray-700" placeholder="">
|
||||
<input type="text" wire:model="coupon" class="block w-full rounded-none rounded-l-md border-gray-300 pl-2 focus:border-indigo-500 focus:ring-indigo-500 sm:text-sm text-gray-700" placeholder="">
|
||||
</div>
|
||||
<button class="relative -ml-px inline-flex items-center space-x-2 rounded-r-md border border-gray-300 bg-gray-50 px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-100 focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500">
|
||||
|
||||
@ -305,7 +305,7 @@
|
||||
<span>{{ $total }}</span>
|
||||
</div>
|
||||
|
||||
<div class="mx-auto text-center mt-20 content-center" x-data="{open: @entangle('payment_started'), toggle: @entangle('payment_confirmed'), buttonDisabled: false}" x-show.important="open" x-transition>
|
||||
<div class="mx-auto text-center mt-20 content-center" x-data="{open: @entangle('payment_started').live, toggle: @entangle('payment_confirmed').live, buttonDisabled: false}" x-show.important="open" x-transition>
|
||||
<h2 class="text-2xl font-bold tracking-wide border-b-2 pb-4">{{ $heading_text ?? ctrans('texts.checkout') }}</h2>
|
||||
@if (session()->has('message'))
|
||||
@component('portal.ninja2020.components.message')
|
||||
@ -313,7 +313,7 @@
|
||||
@endcomponent
|
||||
@endif
|
||||
@if($subscription->trial_enabled)
|
||||
<form wire:submit.prevent="handleTrial" class="mt-8">
|
||||
<form wire:submit="handleTrial" class="mt-8">
|
||||
@csrf
|
||||
<button class="relative -ml-px inline-flex items-center space-x-2 rounded border border-gray-300 bg-gray-50 px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-100 focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500">
|
||||
{{ ctrans('texts.trial_call_to_action') }}
|
||||
@ -331,7 +331,7 @@
|
||||
@endforeach
|
||||
</div>
|
||||
@elseif(intval($float_amount_total) == 0)
|
||||
<form wire:submit.prevent="handlePaymentNotRequired" class="mt-8">
|
||||
<form wire:submit="handlePaymentNotRequired" class="mt-8">
|
||||
@csrf
|
||||
<button class="relative -ml-px inline-flex items-center space-x-2 rounded border border-gray-300 bg-gray-50 px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-100 focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500">
|
||||
{{ ctrans('texts.click_to_continue') }}
|
||||
@ -358,7 +358,7 @@
|
||||
</div>
|
||||
|
||||
@if(!$email || $errors->has('email'))
|
||||
<form wire:submit.prevent="handleEmail" class="">
|
||||
<form wire:submit="handleEmail" class="">
|
||||
@csrf
|
||||
<div class="mt-4">
|
||||
<label for="email" class="block text-sm font-medium text-white">{{ ctrans('texts.email') }}</label>
|
||||
@ -366,7 +366,7 @@
|
||||
<div class="relative flex flex-grow items-stretch focus-within:z-10">
|
||||
<div class="pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3">
|
||||
</div>
|
||||
<input type="text" wire:model.defer="email" class="block w-full rounded-none rounded-l-md border-gray-300 pl-2 focus:border-indigo-500 focus:ring-indigo-500 sm:text-sm text-gray-700" placeholder="">
|
||||
<input type="text" wire:model="email" class="block w-full rounded-none rounded-l-md border-gray-300 pl-2 focus:border-indigo-500 focus:ring-indigo-500 sm:text-sm text-gray-700" placeholder="">
|
||||
</div>
|
||||
<button class="relative -ml-px inline-flex items-center space-x-2 rounded-r-md border border-gray-300 bg-gray-50 px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-100 focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500">
|
||||
|
||||
@ -388,7 +388,7 @@
|
||||
<p class="w-full p-2">{{ ctrans('texts.otp_code_message', ['email' => $email])}}</p>
|
||||
</div>
|
||||
<div class="pb-6 px-6 w-80 mx-auto text-center">
|
||||
<form wire:submit.prevent="handleLogin" class="" x-data="otpForm()">
|
||||
<form wire:submit="handleLogin" class="" x-data="otpForm()">
|
||||
<p class="mb-4"></p>
|
||||
<div class="flex justify-between">
|
||||
<template x-for="(input, index) in length" :key="index">
|
||||
|
@ -2,7 +2,7 @@
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="flex items-center">
|
||||
<span class="mr-2 text-sm hidden md:block">{{ ctrans('texts.per_page') }}</span>
|
||||
<select wire:model="per_page" class="form-select py-1 text-sm">
|
||||
<select wire:model.live="per_page" class="form-select py-1 text-sm">
|
||||
<option>5</option>
|
||||
<option selected>10</option>
|
||||
<option>15</option>
|
||||
|
@ -52,7 +52,7 @@
|
||||
<div class="flex items-center justify-between mt-6">
|
||||
<div class="flex items-center">
|
||||
<span class="mr-2 text-sm hidden md:block">{{ ctrans('texts.per_page') }}</span>
|
||||
<select wire:model="per_page" class="form-select py-1 text-sm">
|
||||
<select wire:model.live="per_page" class="form-select py-1 text-sm">
|
||||
<option>5</option>
|
||||
<option selected>10</option>
|
||||
<option>15</option>
|
||||
|
@ -2,7 +2,7 @@
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="flex items-center">
|
||||
<span class="hidden mr-2 text-sm md:block">{{ ctrans('texts.per_page') }}</span>
|
||||
<select wire:model="per_page" class="py-1 text-sm form-select">
|
||||
<select wire:model.live="per_page" class="py-1 text-sm form-select">
|
||||
<option>5</option>
|
||||
<option selected>10</option>
|
||||
<option>15</option>
|
||||
@ -11,15 +11,15 @@
|
||||
</div>
|
||||
<div class="flex items-center">
|
||||
<div class="mr-3">
|
||||
<input wire:model="status" value="paid" type="checkbox" class="cursor-pointer form-checkbox" id="paid-checkbox">
|
||||
<input wire:model.live="status" value="paid" type="checkbox" class="cursor-pointer form-checkbox" id="paid-checkbox">
|
||||
<label for="paid-checkbox" class="text-sm cursor-pointer">{{ ctrans('texts.status_paid') }}</label>
|
||||
</div>
|
||||
<div class="mr-3">
|
||||
<input wire:model="status" value="unpaid" type="checkbox" class="cursor-pointer form-checkbox" id="unpaid-checkbox">
|
||||
<input wire:model.live="status" value="unpaid" type="checkbox" class="cursor-pointer form-checkbox" id="unpaid-checkbox">
|
||||
<label for="unpaid-checkbox" class="text-sm cursor-pointer">{{ ctrans('texts.status_unpaid') }}</label>
|
||||
</div>
|
||||
<div class="mr-3">
|
||||
<input wire:model="status" value="overdue" type="checkbox" class="cursor-pointer form-checkbox" id="overdue-checkbox">
|
||||
<input wire:model.live="status" value="overdue" type="checkbox" class="cursor-pointer form-checkbox" id="overdue-checkbox">
|
||||
<label for="overdue-checkbox" class="text-sm cursor-pointer">{{ ctrans('texts.past_due') }}</label>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<div>
|
||||
@unless(count($methods) == 0)
|
||||
<div x-data="{ open: false }" @keydown.window.escape="open = false" @click.away="open = false"
|
||||
<div x-data="{ open: false }" @keydown.window.escape="open = false" @click.outside="open = false"
|
||||
class="relative inline-block text-left" dusk="payment-methods-dropdown">
|
||||
<div>
|
||||
<div class="rounded-md shadow-sm">
|
||||
@ -20,7 +20,7 @@
|
||||
<div class="py-1">
|
||||
@foreach($methods as $index => $method)
|
||||
@if($method['label'] == 'Custom')
|
||||
<a href="#" @click="{ open = false }" dusk="pay-with-custom"
|
||||
<a href="#" @click="open = false" dusk="pay-with-custom"
|
||||
data-company-gateway-id="{{ $method['company_gateway_id'] }}"
|
||||
data-gateway-type-id="{{ $method['gateway_type_id'] }}"
|
||||
class="block px-4 py-2 text-sm leading-5 text-gray-700 dropdown-gateway-button hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"
|
||||
@ -28,7 +28,7 @@
|
||||
{{ \App\Models\CompanyGateway::find($method['company_gateway_id'])->firstOrFail()->getConfigField('name') }}
|
||||
</a>
|
||||
@elseif($total > 0)
|
||||
<a href="#" @click="{ open = false }" dusk="pay-with-{{ $index }}"
|
||||
<a href="#" @click="open = false" dusk="pay-with-{{ $index }}"
|
||||
data-company-gateway-id="{{ $method['company_gateway_id'] }}"
|
||||
data-gateway-type-id="{{ $method['gateway_type_id'] }}"
|
||||
class="block px-4 py-2 text-sm leading-5 text-gray-700 dropdown-gateway-button hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"
|
||||
|
@ -2,7 +2,7 @@
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="flex items-center">
|
||||
<span class="mr-2 text-sm hidden md:block">{{ ctrans('texts.per_page') }}</span>
|
||||
<select wire:model="per_page" class="form-select py-1 text-sm">
|
||||
<select wire:model.live="per_page" class="form-select py-1 text-sm">
|
||||
<option>5</option>
|
||||
<option selected>10</option>
|
||||
<option>15</option>
|
||||
|
@ -2,7 +2,7 @@
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="flex items-center">
|
||||
<span class="mr-2 text-sm hidden md:block">{{ ctrans('texts.per_page') }}</span>
|
||||
<select wire:model="per_page" class="form-select py-1 text-sm">
|
||||
<select wire:model.live="per_page" class="form-select py-1 text-sm">
|
||||
<option>5</option>
|
||||
<option selected>10</option>
|
||||
<option>15</option>
|
||||
|
@ -2,7 +2,7 @@
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="flex items-center">
|
||||
<span class="hidden mr-2 text-sm md:block">{{ ctrans('texts.per_page') }}</span>
|
||||
<select wire:model="per_page" class="py-1 text-sm form-select">
|
||||
<select wire:model.live="per_page" class="py-1 text-sm form-select">
|
||||
<option>5</option>
|
||||
<option selected>10</option>
|
||||
<option>15</option>
|
||||
@ -11,11 +11,11 @@
|
||||
</div>
|
||||
<div class="flex items-center">
|
||||
<div class="mr-3">
|
||||
<input wire:model="status" value="sent" type="checkbox" class="cursor-pointer form-checkbox" id="paid-checkbox">
|
||||
<input wire:model.live="status" value="sent" type="checkbox" class="cursor-pointer form-checkbox" id="paid-checkbox">
|
||||
<label for="paid-checkbox" class="text-sm cursor-pointer">{{ ctrans('texts.status_sent') }}</label>
|
||||
</div>
|
||||
<div class="mr-3">
|
||||
<input wire:model="status" value="accepted" type="checkbox" class="cursor-pointer form-checkbox" id="unpaid-checkbox">
|
||||
<input wire:model.live="status" value="accepted" type="checkbox" class="cursor-pointer form-checkbox" id="unpaid-checkbox">
|
||||
<label for="unpaid-checkbox" class="text-sm cursor-pointer">{{ ctrans('texts.accepted') }}</label>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -2,7 +2,7 @@
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="flex items-center">
|
||||
<span class="hidden mr-2 text-sm md:block">{{ ctrans('texts.per_page') }}</span>
|
||||
<select wire:model="per_page" class="py-1 text-sm form-select">
|
||||
<select wire:model.live="per_page" class="py-1 text-sm form-select">
|
||||
<option>5</option>
|
||||
<option selected>10</option>
|
||||
<option>15</option>
|
||||
@ -11,15 +11,15 @@
|
||||
</div>
|
||||
<div class="flex items-center">
|
||||
<div class="mr-3">
|
||||
<input wire:model="status" value="{{ App\Models\Quote::STATUS_SENT }}" value="sent" type="checkbox" class="cursor-pointer form-checkbox" id="sent-checkbox">
|
||||
<input wire:model.live="status" value="{{ App\Models\Quote::STATUS_SENT }}" value="sent" type="checkbox" class="cursor-pointer form-checkbox" id="sent-checkbox">
|
||||
<label for="sent-checkbox" class="text-sm cursor-pointer">{{ ctrans('texts.status_pending') }}</label>
|
||||
</div>
|
||||
<div class="mr-3">
|
||||
<input wire:model="status" value="{{ App\Models\Quote::STATUS_APPROVED }}" value="approved" type="checkbox" class="cursor-pointer form-checkbox" id="approved-checkbox">
|
||||
<input wire:model.live="status" value="{{ App\Models\Quote::STATUS_APPROVED }}" value="approved" type="checkbox" class="cursor-pointer form-checkbox" id="approved-checkbox">
|
||||
<label for="approved-checkbox" class="text-sm cursor-pointer">{{ ctrans('texts.approved') }}</label>
|
||||
</div>
|
||||
<div class="mr-3">
|
||||
<input wire:model="status" value="{{ App\Models\Quote::STATUS_EXPIRED }}" value="expired" type="checkbox" class="cursor-pointer form-checkbox" id="expired-checkbox">
|
||||
<input wire:model.live="status" value="{{ App\Models\Quote::STATUS_EXPIRED }}" value="expired" type="checkbox" class="cursor-pointer form-checkbox" id="expired-checkbox">
|
||||
<label for="expired-checkbox" class="text-sm cursor-pointer">{{ ctrans('texts.expired') }}</label>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -2,7 +2,7 @@
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="flex items-center">
|
||||
<span class="mr-2 text-sm hidden md:block">{{ ctrans('texts.per_page') }}</span>
|
||||
<select wire:model="per_page" class="form-select py-1 text-sm">
|
||||
<select wire:model.live="per_page" class="form-select py-1 text-sm">
|
||||
<option>5</option>
|
||||
<option selected>10</option>
|
||||
<option>15</option>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<div class="container mx-auto grid grid-cols-12 mb-4" data-ref="required-fields-container">
|
||||
<div wire:ignore.self class="container mx-auto grid grid-cols-12 mb-4" data-ref="required-fields-container">
|
||||
<div class="col-span-12 lg:col-span-6 lg:col-start-4 overflow-hidden bg-white shadow rounded-lg">
|
||||
<div class="px-4 py-5 border-b border-gray-200 sm:px-6">
|
||||
<h3 class="text-lg font-medium leading-6 text-gray-900">
|
||||
@ -10,12 +10,12 @@
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<form id="required-client-info-form" wire:submit.prevent="handleSubmit(Object.fromEntries(new FormData(document.getElementById('required-client-info-form'))))">
|
||||
<form id="required-client-info-form" x-on:submit.prevent="$wire.handleSubmit(Object.fromEntries(new FormData(document.getElementById('required-client-info-form'))))">
|
||||
@foreach($fields as $field)
|
||||
@if(!array_key_exists('filled', $field))
|
||||
@component('portal.ninja2020.components.general.card-element', ['title' => $field['label']])
|
||||
@if($field['name'] == 'client_country_id' || $field['name'] == 'client_shipping_country_id')
|
||||
<select id="client_country" class="input w-full form-select bg-white" name="{{ $field['name'] }}" wire:model.defer="{{ str_replace(["client_","_line_","contact_"], ["client.","","contact."], $field['name']) }}">
|
||||
<select id="client_country" class="input w-full form-select bg-white" name="{{ $field['name'] }}" wire:model="{{ str_replace(["client_","_line_","contact_"], ["client.","","contact."], $field['name']) }}">
|
||||
<option value="none"></option>
|
||||
|
||||
@foreach($countries as $country)
|
||||
@ -25,7 +25,7 @@
|
||||
@endforeach
|
||||
</select>
|
||||
@else
|
||||
<input class="input w-full" type="{{ $field['type'] ?? 'text' }}" name="{{ $field['name'] }}" wire:model.defer="{{ str_replace(["client_","_line_","contact_"], ["client.","","contact."], $field['name']) }}">
|
||||
<input class="input w-full" type="{{ $field['type'] ?? 'text' }}" name="{{ $field['name'] }}" wire:model="{{ str_replace(["client_","_line_","contact_"], ["client.","","contact."], $field['name']) }}">
|
||||
@endif
|
||||
|
||||
@if(session()->has('validation_errors') && array_key_exists($field['name'], session('validation_errors')))
|
||||
@ -48,16 +48,16 @@
|
||||
@if($show_terms)
|
||||
|
||||
@component('portal.ninja2020.components.general.card-element', ['title' => ctrans('texts.terms_of_service') ])
|
||||
<div x-data="{ open: false }">
|
||||
<div x-data="{ open: false }">
|
||||
<input
|
||||
wire:click="toggleTermsAccepted()"
|
||||
id="terms"
|
||||
name="terms_accepted"
|
||||
type="checkbox"
|
||||
class="h-4 w-4 rounded border-gray-300 text-indigo-600 focus:ring-indigo-500"
|
||||
/>
|
||||
/>
|
||||
<a href="#" class="group relative inline-block ml-4 text-blue-500 hover:text-red-500 duration-300 no-underline" @click="open = true">{{ ctrans('texts.agree_to_terms', ['terms' => ctrans('texts.terms')]) }}</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<div x-show="open" class="fixed bottom-0 inset-x-0 px-4 pb-4 sm:inset-0 sm:flex sm:items-center sm:justify-center z-50"
|
||||
@ -102,7 +102,7 @@
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endcomponent
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="flex items-center">
|
||||
<span class="mr-2 text-sm hidden md:block">{{ ctrans('texts.per_page') }}</span>
|
||||
<select wire:model="per_page" class="form-select py-1 text-sm">
|
||||
<select wire:model.live="per_page" class="form-select py-1 text-sm">
|
||||
<option>5</option>
|
||||
<option selected>10</option>
|
||||
<option>15</option>
|
||||
|
@ -2,7 +2,7 @@
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="flex items-center">
|
||||
<span class="mr-2 text-sm hidden md:block">{{ ctrans('texts.per_page') }}</span>
|
||||
<select wire:model="per_page" class="form-select py-1 text-sm">
|
||||
<select wire:model.live="per_page" class="form-select py-1 text-sm">
|
||||
<option>5</option>
|
||||
<option selected>10</option>
|
||||
<option>15</option>
|
||||
|
@ -2,7 +2,7 @@
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="flex items-center">
|
||||
<span class="mr-2 text-sm hidden md:block">{{ ctrans('texts.per_page') }}</span>
|
||||
<select wire:model="per_page" class="form-select py-1 text-sm">
|
||||
<select wire:model.live="per_page" class="form-select py-1 text-sm">
|
||||
<option>5</option>
|
||||
<option selected>10</option>
|
||||
<option>15</option>
|
||||
|
@ -14,7 +14,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-5 sm:mt-0 sm:ml-6 sm:flex-shrink-0 sm:flex sm:items-center">
|
||||
<form wire:submit.prevent="makeDefault">
|
||||
<form wire:submit="makeDefault">
|
||||
<button class="button button-primary bg-primary" {{ $token->is_default ? 'disabled' : '' }}>
|
||||
{{ ctrans('texts.save_as_default') }}
|
||||
</button>
|
||||
|
@ -15,4 +15,4 @@
|
||||
<div class="flex flex-col">
|
||||
@livewire('credits-table', ['company_id' => $company->id, 'db' => $company->db])
|
||||
</div>
|
||||
@endsection
|
||||
@endsection
|
||||
|
@ -1,6 +1,6 @@
|
||||
<div class="flex flex-col justify-center items-center my-10">
|
||||
|
||||
<form wire:submit.prevent="submit">
|
||||
<form wire:submit="submit">
|
||||
@csrf
|
||||
@method('POST')
|
||||
<div class="shadow overflow-hidden rounded">
|
||||
@ -8,7 +8,7 @@
|
||||
<div class="grid grid-cols-6 gap-6 max-w-4xl">
|
||||
<div class="col-span-6 sm:col-span-3">
|
||||
<label for="first_name" class="input-label">@lang('texts.first_name')</label>
|
||||
<input id="first_name" class="input w-full" name="first_name" wire:model.defer="first_name"/>
|
||||
<input id="first_name" class="input w-full" name="first_name" wire:model="first_name"/>
|
||||
@error('first_name')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
@ -18,7 +18,7 @@
|
||||
|
||||
<div class="col-span-6 sm:col-span-3">
|
||||
<label for="last_name" class="input-label">@lang('texts.last_name')</label>
|
||||
<input id="last_name" class="input w-full" name="last_name" wire:model.defer="last_name"/>
|
||||
<input id="last_name" class="input w-full" name="last_name" wire:model="last_name"/>
|
||||
@error('last_name')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
@ -29,7 +29,7 @@
|
||||
<div class="col-span-6 sm:col-span-4">
|
||||
<label for="email_address" class="input-label">@lang('texts.email_address')</label>
|
||||
<input id="email_address" class="input w-full" type="email" name="email"
|
||||
wire:model.defer="email" disabled="true"/>
|
||||
wire:model="email" disabled="true"/>
|
||||
@error('email')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
@ -40,7 +40,7 @@
|
||||
<div class="col-span-6 sm:col-span-4">
|
||||
<label for="company_name" class="input-label">@lang('texts.company_name')</label>
|
||||
<input id="company_name" class="input w-full" name="company_name"
|
||||
wire:model.defer="company_name"/>
|
||||
wire:model="company_name"/>
|
||||
@error('company_name')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
@ -53,19 +53,19 @@
|
||||
|
||||
<div class="radio mr-4">
|
||||
<input class="form-radio cursor-pointer" type="radio" value="US" name="country" checked
|
||||
wire:model.defer="country">
|
||||
wire:model="country">
|
||||
<span>{{ ctrans('texts.country_United States') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="radio mr-4">
|
||||
<input class="form-radio cursor-pointer" type="radio" value="CA" name="country"
|
||||
wire:model.defer="country">
|
||||
wire:model="country">
|
||||
<span>{{ ctrans('texts.country_Canada') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="radio mr-4">
|
||||
<input class="form-radio cursor-pointer" type="radio" value="GB" name="country"
|
||||
wire:model.defer="country">
|
||||
wire:model="country">
|
||||
<span>{{ ctrans('texts.country_United Kingdom') }}</span>
|
||||
</div>
|
||||
|
||||
@ -76,7 +76,7 @@
|
||||
<label for="country" class="input-label">@lang('texts.debit_cards')</label>
|
||||
|
||||
<div class="checkbox">
|
||||
<input class="form-checkbox cursor-pointer mr-2" type="checkbox" name="debit_cards" value="1" wire:model.defer="debit_cards">
|
||||
<input class="form-checkbox cursor-pointer mr-2" type="checkbox" name="debit_cards" value="1" wire:model="debit_cards">
|
||||
<span>{{ ctrans('texts.accept_debit_cards') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
@ -87,7 +87,7 @@
|
||||
<div class="col-span-6 sm:col-span-4 {{ $country != 'US' ? 'hidden' : 'block' }}">
|
||||
<label for="country" class="input-label">@lang('texts.ach')</label>
|
||||
<div class="checkbox">
|
||||
<input class="form-checkbox cursor-pointer mr-2" type="checkbox" name="ach" value="1" wire:model="ach">
|
||||
<input class="form-checkbox cursor-pointer mr-2" type="checkbox" name="ach" value="1" wire:model.live="ach">
|
||||
<span>{{ ctrans('texts.enable_ach')}}</span>
|
||||
</div>
|
||||
</div>
|
||||
@ -96,7 +96,7 @@
|
||||
<div class="col-span-6 sm:col-span-4">
|
||||
<label for="country" class="input-label"></label>
|
||||
<div class="checkbox">
|
||||
<input class="form-checkbox cursor-pointer mr-2" type="checkbox" name="wepay_payment_tos_agree" value="1" wire:model.defer="wepay_payment_tos_agree">
|
||||
<input class="form-checkbox cursor-pointer mr-2" type="checkbox" name="wepay_payment_tos_agree" value="1" wire:model="wepay_payment_tos_agree">
|
||||
<span>{!! ctrans('texts.wepay_payment_tos_agree', ['terms' => $terms, 'privacy_policy' => $privacy_policy]) !!}</span>
|
||||
</div>
|
||||
@error('wepay_payment_tos_agree')
|
||||
|
@ -1,4 +1,4 @@
|
||||
<div style="display: none;" id="displaySignatureModal" class="fixed bottom-0 inset-x-0 px-4 pb-4 sm:inset-0 sm:flex sm:items-center sm:justify-center" x-data>
|
||||
<div style="display: none;" id="displaySignatureModal" class="fixed bottom-0 inset-x-0 px-4 pb-4 sm:inset-0 sm:flex sm:items-center sm:justify-center" x-data="{ open: true }">
|
||||
<div x-show="open" x-transition:enter="ease-out duration-300" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="ease-in duration-200" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" class="fixed inset-0 transition-opacity">
|
||||
<div class="absolute inset-0 bg-gray-500 opacity-75"></div>
|
||||
</div>
|
||||
@ -20,7 +20,7 @@
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="flex w-full mx-auto content-center">
|
||||
<p class="text-sm mx-auto content-center">{{ ctrans('texts.sign_here_ux_tip') }}</p>
|
||||
@ -36,7 +36,7 @@
|
||||
{{ ctrans('texts.close') }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<div style="display: none;" id="displayTermsModal" class="fixed bottom-0 inset-x-0 px-4 pb-4 sm:inset-0 sm:flex sm:items-center sm:justify-center" x-data>
|
||||
<div x-data="{ open: true }" style="display: none;" id="displayTermsModal" class="fixed bottom-0 inset-x-0 px-4 pb-4 sm:inset-0 sm:flex sm:items-center sm:justify-center">
|
||||
<div x-show="open" x-transition:enter="ease-out duration-300" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="ease-in duration-200" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" class="fixed inset-0 transition-opacity">
|
||||
<div class="absolute inset-0 bg-gray-500 opacity-75"></div>
|
||||
</div>
|
||||
@ -25,9 +25,9 @@
|
||||
</div>
|
||||
<div class="mt-5 sm:mt-4 sm:flex sm:flex-row-reverse">
|
||||
<div class="flex w-full rounded-md shadow-sm sm:ml-3 sm:w-auto" x-data>
|
||||
<button
|
||||
<button
|
||||
type="button"
|
||||
id="accept-terms-button"
|
||||
id="accept-terms-button"
|
||||
onclick="setTimeout(() => this.disabled = true, 0); setTimeout(() => this.disabled = false, 5000); return true;"
|
||||
class="button button-primary bg-primary">
|
||||
{{ ctrans('texts.i_agree') }}
|
||||
|
@ -65,7 +65,6 @@
|
||||
|
||||
<!-- Scripts -->
|
||||
@vite('resources/js/app.js')
|
||||
<script src="{{ asset('vendor/alpinejs@2.8.2/alpine.js') }}" defer></script>
|
||||
|
||||
<!-- Fonts -->
|
||||
<style>
|
||||
|
@ -74,7 +74,6 @@
|
||||
|
||||
<!-- Scripts -->
|
||||
@vite('resources/js/app.js')
|
||||
<script src="{{ asset('vendor/alpinejs@2.8.2/alpine.js') }}" defer></script>
|
||||
|
||||
<!-- Fonts -->
|
||||
<style>
|
||||
|
@ -66,7 +66,6 @@
|
||||
@else
|
||||
<script src="{{ str_replace("setup", "", Request::url())}}js/app.js" defer></script>
|
||||
@endif
|
||||
<script src="{{ asset('vendor/alpinejs@2.8.2/alpine.js') }}" defer></script>
|
||||
|
||||
<!-- Fonts -->
|
||||
{{-- <link rel="dns-prefetch" href="https://fonts.gstatic.com"> --}}
|
||||
@ -89,7 +88,7 @@
|
||||
@else
|
||||
<link href="{{ str_replace("setup", "", Request::url())}}css/app.css" rel="stylesheet">
|
||||
@endif
|
||||
|
||||
|
||||
@if(auth()->guard('contact')->user() && !auth()->guard('contact')->user()->user->account->isPaid())
|
||||
{{-- <link href="{{ mix('favicon.png') }}" rel="shortcut icon" type="image/png"> --}}
|
||||
@endif
|
||||
|
@ -65,7 +65,6 @@
|
||||
|
||||
<!-- Scripts -->
|
||||
@vite('resources/js/app.js')
|
||||
<script src="{{ asset('vendor/alpinejs@2.8.2/alpine.js') }}" defer></script>
|
||||
|
||||
<!-- Fonts -->
|
||||
{{-- <link rel="dns-prefetch" href="https://fonts.gstatic.com"> --}}
|
||||
|
@ -7,7 +7,7 @@
|
||||
</div> <!-- End of left-side -->
|
||||
|
||||
<div class="mt-5 md:mt-0 md:col-span-2">
|
||||
<form wire:submit.prevent="submit" id="update_client">
|
||||
<form wire:submit="submit" id="update_client">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
<div class="shadow overflow-hidden rounded">
|
||||
@ -17,7 +17,7 @@
|
||||
<label for="first_name" class="input-label">@lang('texts.first_name')</label>
|
||||
<input id="contact_first_name"
|
||||
class="input w-full {{ in_array('contact_first_name', (array) session('missing_required_fields')) ? 'border border-red-400' : '' }}"
|
||||
name="first_name" wire:model.defer="first_name"/>
|
||||
name="first_name" wire:model="first_name"/>
|
||||
@error('first_name')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
@ -29,7 +29,7 @@
|
||||
<label for="last_name" class="input-label">@lang('texts.last_name')</label>
|
||||
<input id="contact_last_name"
|
||||
class="input w-full {{ in_array('contact_last_name', (array) session('missing_required_fields')) ? 'border border-red-400' : '' }}"
|
||||
name="last_name" wire:model.defer="last_name"/>
|
||||
name="last_name" wire:model="last_name"/>
|
||||
@error('last_name')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
@ -41,7 +41,7 @@
|
||||
<label for="email_address" class="input-label">@lang('texts.email_address')</label>
|
||||
<input id="contact_email_address"
|
||||
class="input w-full {{ in_array('contact_email', (array) session('missing_required_fields')) ? 'border border-red-400' : '' }}"
|
||||
type="email" name="email" wire:model.defer="email"/>
|
||||
type="email" name="email" wire:model="email"/>
|
||||
@error('email')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
@ -52,7 +52,7 @@
|
||||
<div class="col-span-6 sm:col-span-4">
|
||||
<label for="contact_phone" class="input-label">@lang('texts.phone')</label>
|
||||
<input id="contact_phone" class="input w-full" name="phone"
|
||||
wire:model.defer="phone"/>
|
||||
wire:model="phone"/>
|
||||
@error('phone')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
@ -63,7 +63,7 @@
|
||||
<div class="col-span-6 sm:col-span-6 lg:col-span-3">
|
||||
<label for="contact_password" class="input-label">@lang('texts.password')</label>
|
||||
<input id="contact_password" class="input w-full" name="password"
|
||||
wire:model.defer="password" type="password"/>
|
||||
wire:model="password" type="password"/>
|
||||
@error('password')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
@ -76,7 +76,7 @@
|
||||
class="input-label">@lang('texts.confirm_password')</label>
|
||||
<input id="contact_password_confirmation" class="input w-full"
|
||||
name="password_confirmation"
|
||||
wire:model.defer="password_confirmation" type="password"/>
|
||||
wire:model="password_confirmation" type="password"/>
|
||||
@error('password_confirmation')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
|
@ -7,14 +7,14 @@
|
||||
</div> <!-- End of left side -->
|
||||
|
||||
<div class="mt-5 md:mt-0 md:col-span-2">
|
||||
<form wire:submit.prevent="submit" method="POST" id="update_contact">
|
||||
<form wire:submit="submit" method="POST" id="update_contact">
|
||||
@csrf
|
||||
<div class="shadow overflow-hidden rounded">
|
||||
<div class="px-4 py-5 bg-white sm:p-6">
|
||||
<div class="grid grid-cols-6 gap-6">
|
||||
<div class="col-span-6 sm:col-span-3">
|
||||
<label for="client_name" class="input-label">{{ ctrans('texts.name') }}</label>
|
||||
<input id="client_name" class="input w-full" name="name" wire:model.defer="name"/>
|
||||
<input id="client_name" class="input w-full" name="name" wire:model="name"/>
|
||||
@error('name')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
@ -26,7 +26,7 @@
|
||||
<label for="client_vat_number"
|
||||
class="input-label">{{ ctrans('texts.vat_number') }}</label>
|
||||
<input id="client_vat_number" class="input w-full" name="vat_number"
|
||||
wire:model.defer="vat_number"/>
|
||||
wire:model="vat_number"/>
|
||||
@error('vat_number')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
@ -36,7 +36,7 @@
|
||||
|
||||
<div class="col-span-6 sm:col-span-3">
|
||||
<label for="client_phone" class="input-label">{{ ctrans('texts.phone') }}</label>
|
||||
<input id="client_phone" class="input w-full" name="phone" wire:model.defer="phone"/>
|
||||
<input id="client_phone" class="input w-full" name="phone" wire:model="phone"/>
|
||||
@error('phone')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
@ -51,7 +51,7 @@
|
||||
<span class="text-xs ml-2 text-gray-600">E.g. https://example.com</span>
|
||||
</div>
|
||||
<input id="client_website" class="input w-full" name="website"
|
||||
wire:model.defer="website"/>
|
||||
wire:model="website"/>
|
||||
@error('website')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
|
@ -6,13 +6,13 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-5 md:mt-0 md:col-span-2">
|
||||
<form wire:submit.prevent="submit" method="POST" id="update_billing_address">
|
||||
<form wire:submit="submit" method="POST" id="update_billing_address">
|
||||
@csrf
|
||||
<div class="px-4 py-5 bg-white sm:p-6">
|
||||
<div class="grid grid-cols-6 gap-6">
|
||||
<div class="col-span-6 sm:col-span-4">
|
||||
<label for="address1" class="input-label">{{ ctrans('texts.address1') }}</label>
|
||||
<input id="address1" class="input w-full {{ in_array('billing_address1', (array) session('missing_required_fields')) ? 'border border-red-400' : '' }}" name="address1" wire:model.defer="address1" />
|
||||
<input id="address1" class="input w-full {{ in_array('billing_address1', (array) session('missing_required_fields')) ? 'border border-red-400' : '' }}" name="address1" wire:model="address1" />
|
||||
@error('address1')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
@ -21,7 +21,7 @@
|
||||
</div>
|
||||
<div class="col-span-6 sm:col-span-3">
|
||||
<label for="address2" class="input-label">{{ ctrans('texts.address2') }}</label>
|
||||
<input id="address2" class="input w-full {{ in_array('billing_address2', (array) session('missing_required_fields')) ? 'border border-red-400' : '' }}" name="address2" wire:model.defer="address2" />
|
||||
<input id="address2" class="input w-full {{ in_array('billing_address2', (array) session('missing_required_fields')) ? 'border border-red-400' : '' }}" name="address2" wire:model="address2" />
|
||||
@error('address2')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
@ -30,7 +30,7 @@
|
||||
</div>
|
||||
<div class="col-span-6 sm:col-span-3">
|
||||
<label for="city" class="input-label">{{ ctrans('texts.city') }}</label>
|
||||
<input id="city" class="input w-full {{ in_array('billing_city', (array) session('missing_required_fields')) ? 'border border-red-400' : '' }}" name="city" wire:model.defer="city" />
|
||||
<input id="city" class="input w-full {{ in_array('billing_city', (array) session('missing_required_fields')) ? 'border border-red-400' : '' }}" name="city" wire:model="city" />
|
||||
@error('city')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
@ -39,7 +39,7 @@
|
||||
</div>
|
||||
<div class="col-span-6 sm:col-span-2">
|
||||
<label for="state" class="input-label">{{ ctrans('texts.state') }}</label>
|
||||
<input id="state" class="input w-full {{ in_array('billing_state', (array) session('missing_required_fields')) ? 'border border-red-400' : '' }}" name="state" wire:model.defer="state" />
|
||||
<input id="state" class="input w-full {{ in_array('billing_state', (array) session('missing_required_fields')) ? 'border border-red-400' : '' }}" name="state" wire:model="state" />
|
||||
@error('state')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
@ -48,7 +48,7 @@
|
||||
</div>
|
||||
<div class="col-span-6 sm:col-span-2">
|
||||
<label for="postal_code" class="input-label">{{ ctrans('texts.postal_code') }}</label>
|
||||
<input id="postal_code" class="input w-full {{ in_array('billing_postal_code', (array) session('missing_required_fields')) ? 'border border-red-400' : '' }}" name="postal_code" wire:model.defer="postal_code" />
|
||||
<input id="postal_code" class="input w-full {{ in_array('billing_postal_code', (array) session('missing_required_fields')) ? 'border border-red-400' : '' }}" name="postal_code" wire:model="postal_code" />
|
||||
@error('postal_code')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
@ -57,7 +57,7 @@
|
||||
</div>
|
||||
<div class="col-span-6 sm:col-span-2">
|
||||
<label for="country" class="input-label">@lang('texts.country')</label>
|
||||
<select id="country" class="input w-full form-select bg-white {{ in_array('billing_country', (array) session('missing_required_fields')) ? 'border border-red-400' : '' }}" wire:model.defer="country_id">
|
||||
<select id="country" class="input w-full form-select bg-white {{ in_array('billing_country', (array) session('missing_required_fields')) ? 'border border-red-400' : '' }}" wire:model="country_id">
|
||||
<option value="none"></option>
|
||||
@foreach($countries as $country)
|
||||
<option value="{{ $country->id }}">
|
||||
|
@ -6,14 +6,14 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-5 md:mt-0 md:col-span-2">
|
||||
<form wire:submit.prevent="submit" method="POST" id="update_shipping_address">
|
||||
<form wire:submit="submit" method="POST" id="update_shipping_address">
|
||||
@csrf
|
||||
<div class="shadow overflow-hidden rounded">
|
||||
<div class="px-4 py-5 bg-white sm:p-6">
|
||||
<div class="grid grid-cols-6 gap-6">
|
||||
<div class="col-span-6 sm:col-span-4">
|
||||
<label for="shipping_address1" class="input-label">{{ ctrans('texts.shipping_address1') }}</label>
|
||||
<input id="shipping_address1" class="input w-full" name="shipping_address1" wire:model.defer="shipping_address1" />
|
||||
<input id="shipping_address1" class="input w-full" name="shipping_address1" wire:model="shipping_address1" />
|
||||
@error('shipping_address1')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
@ -22,7 +22,7 @@
|
||||
</div>
|
||||
<div class="col-span-6 sm:col-span-3">
|
||||
<label for="shipping_address2" class="input-label">@lang('texts.shipping_address2')</label>
|
||||
<input id="shipping_address2" class="input w-full" name="shipping_address2" wire:model.defer="shipping_address2" />
|
||||
<input id="shipping_address2" class="input w-full" name="shipping_address2" wire:model="shipping_address2" />
|
||||
@error('shipping_address2')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
@ -31,7 +31,7 @@
|
||||
</div>
|
||||
<div class="col-span-6 sm:col-span-3">
|
||||
<label for="shipping_city" class="input-label">@lang('texts.shipping_city')</label>
|
||||
<input id="shipping_city" class="input w-full" name="shipping_city" wire:model.defer="shipping_city" />
|
||||
<input id="shipping_city" class="input w-full" name="shipping_city" wire:model="shipping_city" />
|
||||
@error('shipping_city')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
@ -40,7 +40,7 @@
|
||||
</div>
|
||||
<div class="col-span-6 sm:col-span-2">
|
||||
<label for="shipping_state" class="input-label">@lang('texts.shipping_state')</label>
|
||||
<input id="shipping_state" class="input w-full" name="shipping_state" wire:model.defer="shipping_state" />
|
||||
<input id="shipping_state" class="input w-full" name="shipping_state" wire:model="shipping_state" />
|
||||
@error('shipping_state')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
@ -49,7 +49,7 @@
|
||||
</div>
|
||||
<div class="col-span-6 sm:col-span-2">
|
||||
<label for="shipping_postal_code" class="input-label">@lang('texts.shipping_postal_code')</label>
|
||||
<input id="shipping_postal_code" class="input w-full" name="shipping_postal_code" wire:model.defer="shipping_postal_code" />
|
||||
<input id="shipping_postal_code" class="input w-full" name="shipping_postal_code" wire:model="shipping_postal_code" />
|
||||
@error('shipping_postal_code')
|
||||
<div class="validation validation-fail">
|
||||
{{ $message }}
|
||||
@ -58,7 +58,7 @@
|
||||
</div>
|
||||
<div class="col-span-4 sm:col-span-2">
|
||||
<label for="shipping_country" class="input-label">@lang('texts.shipping_country')</label>
|
||||
<select id="shipping_country" class="input w-full form-select bg-white" wire:model.defer="shipping_country_id">
|
||||
<select id="shipping_country" class="input w-full form-select bg-white" wire:model="shipping_country_id">
|
||||
<option value="none"></option>
|
||||
@foreach($countries as $country)
|
||||
<option value="{{ $country->id }}">
|
||||
|
@ -1,4 +1,4 @@
|
||||
<form action="{{ route('client.quotes.bulk') }}" method="post" id="approve-form" />
|
||||
<form action="{{ route('client.quotes.bulk') }}" method="post" id="approve-form">
|
||||
@csrf
|
||||
|
||||
<input type="hidden" name="action" value="approve">
|
||||
@ -11,18 +11,17 @@
|
||||
<div class="px-4 py-5 sm:p-6">
|
||||
<div class="sm:flex sm:items-start sm:justify-between">
|
||||
<div>
|
||||
|
||||
|
||||
<h3 class="text-lg leading-6 font-medium text-gray-900">
|
||||
{{ ctrans('texts.approve') }}
|
||||
</h3>
|
||||
|
||||
|
||||
<div class="btn hidden md:block" data-clipboard-text="{{url("client/quote/{$key}")}}" aria-label="Copied!">
|
||||
<div class="flex text-sm leading-6 font-medium text-gray-500">
|
||||
<p class="mr-2">{{url("client/quote/{$key}")}}</p>
|
||||
<p><img class="h-5 w-5" src="{{ asset('assets/clippy.svg') }}" alt="Copy to clipboard"></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="mt-5 sm:mt-0 sm:ml-6 sm:flex-shrink-0 sm:flex sm:items-center">
|
||||
|
@ -11,7 +11,7 @@
|
||||
})(window,document,'script','dataLayer','GTM-WMJ5W23');</script>
|
||||
<!-- End Google Tag Manager -->
|
||||
@endif
|
||||
|
||||
|
||||
<!-- Error: {{ session('error') }} -->
|
||||
|
||||
@if (config('services.analytics.tracking_id'))
|
||||
@ -58,7 +58,6 @@
|
||||
|
||||
<!-- Scripts -->
|
||||
@vite('resources/js/app.js')
|
||||
<script src="{{ asset('vendor/alpinejs@2.8.2/alpine.js') }}" defer></script>
|
||||
|
||||
<!-- Fonts -->
|
||||
{{-- <link rel="dns-prefetch" href="https://fonts.gstatic.com"> --}}
|
||||
@ -75,7 +74,7 @@
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<!-- Styles -->
|
||||
@vite('resources/sass/app.scss')
|
||||
@if(auth()->guard('contact')->user() && !auth()->guard('contact')->user()->user->account->isPaid())
|
||||
|
60
resources/views/vendor/livewire/bootstrap.blade.php
vendored
Normal file
60
resources/views/vendor/livewire/bootstrap.blade.php
vendored
Normal file
@ -0,0 +1,60 @@
|
||||
@php
|
||||
if (! isset($scrollTo)) {
|
||||
$scrollTo = 'body';
|
||||
}
|
||||
|
||||
$scrollIntoViewJsSnippet = ($scrollTo !== false)
|
||||
? <<<JS
|
||||
(\$el.closest('{$scrollTo}') || document.querySelector('{$scrollTo}')).scrollIntoView()
|
||||
JS
|
||||
: '';
|
||||
@endphp
|
||||
|
||||
<div>
|
||||
@if ($paginator->hasPages())
|
||||
<nav>
|
||||
<ul class="pagination">
|
||||
{{-- Previous Page Link --}}
|
||||
@if ($paginator->onFirstPage())
|
||||
<li class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.previous')">
|
||||
<span class="page-link" aria-hidden="true">‹</span>
|
||||
</li>
|
||||
@else
|
||||
<li class="page-item">
|
||||
<button type="button" dusk="previousPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}" class="page-link" wire:click="previousPage('{{ $paginator->getPageName() }}')" x-on:click="{{ $scrollIntoViewJsSnippet }}" wire:loading.attr="disabled" rel="prev" aria-label="@lang('pagination.previous')">‹</button>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
{{-- Pagination Elements --}}
|
||||
@foreach ($elements as $element)
|
||||
{{-- "Three Dots" Separator --}}
|
||||
@if (is_string($element))
|
||||
<li class="page-item disabled" aria-disabled="true"><span class="page-link">{{ $element }}</span></li>
|
||||
@endif
|
||||
|
||||
{{-- Array Of Links --}}
|
||||
@if (is_array($element))
|
||||
@foreach ($element as $page => $url)
|
||||
@if ($page == $paginator->currentPage())
|
||||
<li class="page-item active" wire:key="paginator-{{ $paginator->getPageName() }}-page-{{ $page }}" aria-current="page"><span class="page-link">{{ $page }}</span></li>
|
||||
@else
|
||||
<li class="page-item" wire:key="paginator-{{ $paginator->getPageName() }}-page-{{ $page }}"><button type="button" class="page-link" wire:click="gotoPage({{ $page }}, '{{ $paginator->getPageName() }}')" x-on:click="{{ $scrollIntoViewJsSnippet }}">{{ $page }}</button></li>
|
||||
@endif
|
||||
@endforeach
|
||||
@endif
|
||||
@endforeach
|
||||
|
||||
{{-- Next Page Link --}}
|
||||
@if ($paginator->hasMorePages())
|
||||
<li class="page-item">
|
||||
<button type="button" dusk="nextPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}" class="page-link" wire:click="nextPage('{{ $paginator->getPageName() }}')" x-on:click="{{ $scrollIntoViewJsSnippet }}" wire:loading.attr="disabled" rel="next" aria-label="@lang('pagination.next')">›</button>
|
||||
</li>
|
||||
@else
|
||||
<li class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.next')">
|
||||
<span class="page-link" aria-hidden="true">›</span>
|
||||
</li>
|
||||
@endif
|
||||
</ul>
|
||||
</nav>
|
||||
@endif
|
||||
</div>
|
@ -1,3 +1,15 @@
|
||||
@php
|
||||
if (! isset($scrollTo)) {
|
||||
$scrollTo = 'body';
|
||||
}
|
||||
|
||||
$scrollIntoViewJsSnippet = ($scrollTo !== false)
|
||||
? <<<JS
|
||||
(\$el.closest('{$scrollTo}') || document.querySelector('{$scrollTo}')).scrollIntoView()
|
||||
JS
|
||||
: '';
|
||||
@endphp
|
||||
|
||||
<div>
|
||||
@if ($paginator->hasPages())
|
||||
<nav>
|
||||
@ -10,11 +22,11 @@
|
||||
@else
|
||||
@if(method_exists($paginator,'getCursorName'))
|
||||
<li class="page-item">
|
||||
<button dusk="previousPage" type="button" class="page-link" wire:click="setPage('{{$paginator->previousCursor()->encode()}}','{{ $paginator->getCursorName() }}')" wire:loading.attr="disabled" rel="prev">@lang('pagination.previous')</button>
|
||||
<button dusk="previousPage" type="button" class="page-link" wire:key="cursor-{{ $paginator->getCursorName() }}-{{ $paginator->previousCursor()->encode() }}" wire:click="setPage('{{$paginator->previousCursor()->encode()}}','{{ $paginator->getCursorName() }}')" x-on:click="{{ $scrollIntoViewJsSnippet }}" wire:loading.attr="disabled" rel="prev">@lang('pagination.previous')</button>
|
||||
</li>
|
||||
@else
|
||||
<li class="page-item">
|
||||
<button type="button" dusk="previousPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}" class="page-link" wire:click="previousPage('{{ $paginator->getPageName() }}')" wire:loading.attr="disabled" rel="prev">@lang('pagination.previous')</button>
|
||||
<button type="button" dusk="previousPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}" class="page-link" wire:click="previousPage('{{ $paginator->getPageName() }}')" x-on:click="{{ $scrollIntoViewJsSnippet }}" wire:loading.attr="disabled" rel="prev">@lang('pagination.previous')</button>
|
||||
</li>
|
||||
@endif
|
||||
@endif
|
||||
@ -23,11 +35,11 @@
|
||||
@if ($paginator->hasMorePages())
|
||||
@if(method_exists($paginator,'getCursorName'))
|
||||
<li class="page-item">
|
||||
<button dusk="nextPage" type="button" class="page-link" wire:click="setPage('{{$paginator->nextCursor()->encode()}}','{{ $paginator->getCursorName() }}')" wire:loading.attr="disabled" rel="next">@lang('pagination.next')</button>
|
||||
<button dusk="nextPage" type="button" class="page-link" wire:key="cursor-{{ $paginator->getCursorName() }}-{{ $paginator->nextCursor()->encode() }}" wire:click="setPage('{{$paginator->nextCursor()->encode()}}','{{ $paginator->getCursorName() }}')" x-on:click="{{ $scrollIntoViewJsSnippet }}" wire:loading.attr="disabled" rel="next">@lang('pagination.next')</button>
|
||||
</li>
|
||||
@else
|
||||
<li class="page-item">
|
||||
<button type="button" dusk="nextPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}" class="page-link" wire:click="nextPage('{{ $paginator->getPageName() }}')" wire:loading.attr="disabled" rel="next">@lang('pagination.next')</button>
|
||||
<button type="button" dusk="nextPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}" class="page-link" wire:click="nextPage('{{ $paginator->getPageName() }}')" x-on:click="{{ $scrollIntoViewJsSnippet }}" wire:loading.attr="disabled" rel="next">@lang('pagination.next')</button>
|
||||
</li>
|
||||
@endif
|
||||
@else
|
||||
|
56
resources/views/vendor/livewire/simple-tailwind.blade.php
vendored
Normal file
56
resources/views/vendor/livewire/simple-tailwind.blade.php
vendored
Normal file
@ -0,0 +1,56 @@
|
||||
@php
|
||||
if (! isset($scrollTo)) {
|
||||
$scrollTo = 'body';
|
||||
}
|
||||
|
||||
$scrollIntoViewJsSnippet = ($scrollTo !== false)
|
||||
? <<<JS
|
||||
(\$el.closest('{$scrollTo}') || document.querySelector('{$scrollTo}')).scrollIntoView()
|
||||
JS
|
||||
: '';
|
||||
@endphp
|
||||
|
||||
<div>
|
||||
@if ($paginator->hasPages())
|
||||
<nav role="navigation" aria-label="Pagination Navigation" class="flex justify-between">
|
||||
<span>
|
||||
{{-- Previous Page Link --}}
|
||||
@if ($paginator->onFirstPage())
|
||||
<span class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5 rounded-md select-none">
|
||||
{!! __('pagination.previous') !!}
|
||||
</span>
|
||||
@else
|
||||
@if(method_exists($paginator,'getCursorName'))
|
||||
<button type="button" dusk="previousPage" wire:key="cursor-{{ $paginator->getCursorName() }}-{{ $paginator->previousCursor()->encode() }}" wire:click="setPage('{{$paginator->previousCursor()->encode()}}','{{ $paginator->getCursorName() }}')" x-on:click="{{ $scrollIntoViewJsSnippet }}" wire:loading.attr="disabled" class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:shadow-outline-blue focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
|
||||
{!! __('pagination.previous') !!}
|
||||
</button>
|
||||
@else
|
||||
<button
|
||||
type="button" wire:click="previousPage('{{ $paginator->getPageName() }}')" x-on:click="{{ $scrollIntoViewJsSnippet }}" wire:loading.attr="disabled" dusk="previousPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}" class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:shadow-outline-blue focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
|
||||
{!! __('pagination.previous') !!}
|
||||
</button>
|
||||
@endif
|
||||
@endif
|
||||
</span>
|
||||
|
||||
<span>
|
||||
{{-- Next Page Link --}}
|
||||
@if ($paginator->hasMorePages())
|
||||
@if(method_exists($paginator,'getCursorName'))
|
||||
<button type="button" dusk="nextPage" wire:key="cursor-{{ $paginator->getCursorName() }}-{{ $paginator->nextCursor()->encode() }}" wire:click="setPage('{{$paginator->nextCursor()->encode()}}','{{ $paginator->getCursorName() }}')" x-on:click="{{ $scrollIntoViewJsSnippet }}" wire:loading.attr="disabled" class="relative inline-flex items-center px-4 py-2 ml-3 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:shadow-outline-blue focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
|
||||
{!! __('pagination.next') !!}
|
||||
</button>
|
||||
@else
|
||||
<button type="button" wire:click="nextPage('{{ $paginator->getPageName() }}')" x-on:click="{{ $scrollIntoViewJsSnippet }}" wire:loading.attr="disabled" dusk="nextPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}" class="relative inline-flex items-center px-4 py-2 ml-3 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:shadow-outline-blue focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
|
||||
{!! __('pagination.next') !!}
|
||||
</button>
|
||||
@endif
|
||||
@else
|
||||
<span class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5 rounded-md select-none">
|
||||
{!! __('pagination.next') !!}
|
||||
</span>
|
||||
@endif
|
||||
</span>
|
||||
</nav>
|
||||
@endif
|
||||
</div>
|
126
resources/views/vendor/livewire/tailwind.blade.php
vendored
Normal file
126
resources/views/vendor/livewire/tailwind.blade.php
vendored
Normal file
@ -0,0 +1,126 @@
|
||||
@php
|
||||
if (! isset($scrollTo)) {
|
||||
$scrollTo = 'body';
|
||||
}
|
||||
|
||||
$scrollIntoViewJsSnippet = ($scrollTo !== false)
|
||||
? <<<JS
|
||||
(\$el.closest('{$scrollTo}') || document.querySelector('{$scrollTo}')).scrollIntoView()
|
||||
JS
|
||||
: '';
|
||||
@endphp
|
||||
|
||||
<div>
|
||||
@if ($paginator->hasPages())
|
||||
<nav role="navigation" aria-label="Pagination Navigation" class="flex items-center justify-between">
|
||||
<div class="flex justify-between flex-1 sm:hidden">
|
||||
<span>
|
||||
@if ($paginator->onFirstPage())
|
||||
<span class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5 rounded-md select-none">
|
||||
{!! __('pagination.previous') !!}
|
||||
</span>
|
||||
@else
|
||||
<button type="button" wire:click="previousPage('{{ $paginator->getPageName() }}')" x-on:click="{{ $scrollIntoViewJsSnippet }}" wire:loading.attr="disabled" dusk="previousPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}.before" class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:shadow-outline-blue focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
|
||||
{!! __('pagination.previous') !!}
|
||||
</button>
|
||||
@endif
|
||||
</span>
|
||||
|
||||
<span>
|
||||
@if ($paginator->hasMorePages())
|
||||
<button type="button" wire:click="nextPage('{{ $paginator->getPageName() }}')" x-on:click="{{ $scrollIntoViewJsSnippet }}" wire:loading.attr="disabled" dusk="nextPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}.before" class="relative inline-flex items-center px-4 py-2 ml-3 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:shadow-outline-blue focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
|
||||
{!! __('pagination.next') !!}
|
||||
</button>
|
||||
@else
|
||||
<span class="relative inline-flex items-center px-4 py-2 ml-3 text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5 rounded-md select-none">
|
||||
{!! __('pagination.next') !!}
|
||||
</span>
|
||||
@endif
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="hidden sm:flex-1 sm:flex sm:items-center sm:justify-between">
|
||||
<div>
|
||||
<p class="text-sm text-gray-700 leading-5">
|
||||
<span>{!! __('Showing') !!}</span>
|
||||
<span class="font-medium">{{ $paginator->firstItem() }}</span>
|
||||
<span>{!! __('to') !!}</span>
|
||||
<span class="font-medium">{{ $paginator->lastItem() }}</span>
|
||||
<span>{!! __('of') !!}</span>
|
||||
<span class="font-medium">{{ $paginator->total() }}</span>
|
||||
<span>{!! __('results') !!}</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<span class="relative z-0 inline-flex rounded-md shadow-sm">
|
||||
<span>
|
||||
{{-- Previous Page Link --}}
|
||||
@if ($paginator->onFirstPage())
|
||||
<span aria-disabled="true" aria-label="{{ __('pagination.previous') }}">
|
||||
<span class="relative inline-flex items-center px-2 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default rounded-l-md leading-5" aria-hidden="true">
|
||||
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
|
||||
<path fill-rule="evenodd" d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" clip-rule="evenodd" />
|
||||
</svg>
|
||||
</span>
|
||||
</span>
|
||||
@else
|
||||
<button type="button" wire:click="previousPage('{{ $paginator->getPageName() }}')" x-on:click="{{ $scrollIntoViewJsSnippet }}" dusk="previousPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}.after" rel="prev" class="relative inline-flex items-center px-2 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 rounded-l-md leading-5 hover:text-gray-400 focus:z-10 focus:outline-none focus:border-blue-300 focus:shadow-outline-blue active:bg-gray-100 active:text-gray-500 transition ease-in-out duration-150" aria-label="{{ __('pagination.previous') }}">
|
||||
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
|
||||
<path fill-rule="evenodd" d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" clip-rule="evenodd" />
|
||||
</svg>
|
||||
</button>
|
||||
@endif
|
||||
</span>
|
||||
|
||||
{{-- Pagination Elements --}}
|
||||
@foreach ($elements as $element)
|
||||
{{-- "Three Dots" Separator --}}
|
||||
@if (is_string($element))
|
||||
<span aria-disabled="true">
|
||||
<span class="relative inline-flex items-center px-4 py-2 -ml-px text-sm font-medium text-gray-700 bg-white border border-gray-300 cursor-default leading-5 select-none">{{ $element }}</span>
|
||||
</span>
|
||||
@endif
|
||||
|
||||
{{-- Array Of Links --}}
|
||||
@if (is_array($element))
|
||||
@foreach ($element as $page => $url)
|
||||
<span wire:key="paginator-{{ $paginator->getPageName() }}-page{{ $page }}">
|
||||
@if ($page == $paginator->currentPage())
|
||||
<span aria-current="page">
|
||||
<span class="relative inline-flex items-center px-4 py-2 -ml-px text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5 select-none">{{ $page }}</span>
|
||||
</span>
|
||||
@else
|
||||
<button type="button" wire:click="gotoPage({{ $page }}, '{{ $paginator->getPageName() }}')" x-on:click="{{ $scrollIntoViewJsSnippet }}" class="relative inline-flex items-center px-4 py-2 -ml-px text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 hover:text-gray-500 focus:z-10 focus:outline-none focus:border-blue-300 focus:shadow-outline-blue active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150" aria-label="{{ __('Go to page :page', ['page' => $page]) }}">
|
||||
{{ $page }}
|
||||
</button>
|
||||
@endif
|
||||
</span>
|
||||
@endforeach
|
||||
@endif
|
||||
@endforeach
|
||||
|
||||
<span>
|
||||
{{-- Next Page Link --}}
|
||||
@if ($paginator->hasMorePages())
|
||||
<button type="button" wire:click="nextPage('{{ $paginator->getPageName() }}')" x-on:click="{{ $scrollIntoViewJsSnippet }}" dusk="nextPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}.after" rel="next" class="relative inline-flex items-center px-2 py-2 -ml-px text-sm font-medium text-gray-500 bg-white border border-gray-300 rounded-r-md leading-5 hover:text-gray-400 focus:z-10 focus:outline-none focus:border-blue-300 focus:shadow-outline-blue active:bg-gray-100 active:text-gray-500 transition ease-in-out duration-150" aria-label="{{ __('pagination.next') }}">
|
||||
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
|
||||
<path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd" />
|
||||
</svg>
|
||||
</button>
|
||||
@else
|
||||
<span aria-disabled="true" aria-label="{{ __('pagination.next') }}">
|
||||
<span class="relative inline-flex items-center px-2 py-2 -ml-px text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default rounded-r-md leading-5" aria-hidden="true">
|
||||
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
|
||||
<path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd" />
|
||||
</svg>
|
||||
</span>
|
||||
</span>
|
||||
@endif
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
@endif
|
||||
</div>
|
@ -14,7 +14,7 @@ namespace Tests\Feature\ClientPortal;
|
||||
|
||||
use App\DataMapper\ClientSettings;
|
||||
use App\DataMapper\CompanySettings;
|
||||
use App\Http\Livewire\CreditsTable;
|
||||
use App\Livewire\CreditsTable;
|
||||
use App\Models\Account;
|
||||
use App\Models\Client;
|
||||
use App\Models\ClientContact;
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
namespace Tests\Feature\ClientPortal;
|
||||
|
||||
use App\Http\Livewire\InvoicesTable;
|
||||
use App\Livewire\InvoicesTable;
|
||||
use App\Models\Account;
|
||||
use App\Models\Client;
|
||||
use App\Models\ClientContact;
|
||||
|
Loading…
Reference in New Issue
Block a user