Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Письменов Дмитрий Иванович
/
yourroomads
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit a49456b3
authored
May 22, 2019
by
Jonathan Reinink
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Simplify error handling
1 parent
9a5a4a30
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
47 additions
and
106 deletions
resources/js/Pages/Auth/Login.vue
resources/js/Pages/Contacts/Create.vue
resources/js/Pages/Contacts/Edit.vue
resources/js/Pages/Organizations/Create.vue
resources/js/Pages/Organizations/Edit.vue
resources/js/Pages/Users/Create.vue
resources/js/Pages/Users/Edit.vue
resources/js/Utils/Errors.js
resources/js/Pages/Auth/Login.vue
View file @
a49456b
...
...
@@ -6,7 +6,7 @@
<div
class=
"px-10 py-12"
>
<h1
class=
"text-center font-bold text-3xl"
>
Welcome Back!
</h1>
<div
class=
"mx-auto mt-6 w-24 border-b-2"
/>
<text-input
v-model=
"form.email"
:errors=
"errors.email"
class=
"mt-10"
label=
"Email"
type=
"email"
autofocus
autocapitalize=
"off"
/>
<text-input
v-model=
"form.email"
:errors=
"
$page.
errors.email"
class=
"mt-10"
label=
"Email"
type=
"email"
autofocus
autocapitalize=
"off"
/>
<text-input
v-model=
"form.password"
class=
"mt-6"
label=
"Password"
type=
"password"
/>
<label
class=
"mt-6 select-none flex items-center"
for=
"remember"
>
<input
id=
"remember"
v-model=
"form.remember"
class=
"mr-1"
type=
"checkbox"
>
...
...
resources/js/Pages/Contacts/Create.vue
View file @
a49456b
...
...
@@ -7,23 +7,23 @@
<div
class=
"bg-white rounded shadow overflow-hidden max-w-lg"
>
<form
@
submit
.
prevent=
"submit"
>
<div
class=
"p-8 -mr-6 -mb-8 flex flex-wrap"
>
<text-input
v-model=
"form.first_name"
:errors=
"errors.first_name"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"First name"
/>
<text-input
v-model=
"form.last_name"
:errors=
"errors.last_name"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Last name"
/>
<select-input
v-model=
"form.organization_id"
:errors=
"errors.organization_id"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Organization"
>
<text-input
v-model=
"form.first_name"
:errors=
"
$page.
errors.first_name"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"First name"
/>
<text-input
v-model=
"form.last_name"
:errors=
"
$page.
errors.last_name"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Last name"
/>
<select-input
v-model=
"form.organization_id"
:errors=
"
$page.
errors.organization_id"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Organization"
>
<option
:value=
"null"
/>
<option
v-for=
"organization in organizations"
:key=
"organization.id"
:value=
"organization.id"
>
{{
organization
.
name
}}
</option>
</select-input>
<text-input
v-model=
"form.email"
:errors=
"errors.email"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Email"
/>
<text-input
v-model=
"form.phone"
:errors=
"errors.phone"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Phone"
/>
<text-input
v-model=
"form.address"
:errors=
"errors.address"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Address"
/>
<text-input
v-model=
"form.city"
:errors=
"errors.city"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"City"
/>
<text-input
v-model=
"form.region"
:errors=
"errors.region"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Province/State"
/>
<select-input
v-model=
"form.country"
:errors=
"errors.country"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Country"
>
<text-input
v-model=
"form.email"
:errors=
"
$page.
errors.email"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Email"
/>
<text-input
v-model=
"form.phone"
:errors=
"
$page.
errors.phone"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Phone"
/>
<text-input
v-model=
"form.address"
:errors=
"
$page.
errors.address"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Address"
/>
<text-input
v-model=
"form.city"
:errors=
"
$page.
errors.city"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"City"
/>
<text-input
v-model=
"form.region"
:errors=
"
$page.
errors.region"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Province/State"
/>
<select-input
v-model=
"form.country"
:errors=
"
$page.
errors.country"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Country"
>
<option
:value=
"null"
/>
<option
value=
"CA"
>
Canada
</option>
<option
value=
"US"
>
United States
</option>
</select-input>
<text-input
v-model=
"form.postal_code"
:errors=
"errors.postal_code"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Postal code"
/>
<text-input
v-model=
"form.postal_code"
:errors=
"
$page.
errors.postal_code"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Postal code"
/>
</div>
<div
class=
"px-8 py-4 bg-grey-lightest border-t border-grey-lighter flex justify-end items-center"
>
<loading-button
:loading=
"sending"
class=
"btn-indigo"
type=
"submit"
>
Create Contact
</loading-button>
...
...
@@ -48,10 +48,6 @@ export default {
},
props
:
{
organizations
:
Array
,
errors
:
{
type
:
Object
,
default
:
()
=>
({}),
},
},
remember
:
'form'
,
data
()
{
...
...
resources/js/Pages/Contacts/Edit.vue
View file @
a49456b
...
...
@@ -11,23 +11,23 @@
<div
class=
"bg-white rounded shadow overflow-hidden max-w-lg"
>
<form
@
submit
.
prevent=
"submit"
>
<div
class=
"p-8 -mr-6 -mb-8 flex flex-wrap"
>
<text-input
v-model=
"form.first_name"
:errors=
"errors.first_name"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"First name"
/>
<text-input
v-model=
"form.last_name"
:errors=
"errors.last_name"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Last name"
/>
<select-input
v-model=
"form.organization_id"
:errors=
"errors.organization_id"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Organization"
>
<text-input
v-model=
"form.first_name"
:errors=
"
$page.
errors.first_name"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"First name"
/>
<text-input
v-model=
"form.last_name"
:errors=
"
$page.
errors.last_name"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Last name"
/>
<select-input
v-model=
"form.organization_id"
:errors=
"
$page.
errors.organization_id"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Organization"
>
<option
:value=
"null"
/>
<option
v-for=
"organization in organizations"
:key=
"organization.id"
:value=
"organization.id"
>
{{
organization
.
name
}}
</option>
</select-input>
<text-input
v-model=
"form.email"
:errors=
"errors.email"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Email"
/>
<text-input
v-model=
"form.phone"
:errors=
"errors.phone"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Phone"
/>
<text-input
v-model=
"form.address"
:errors=
"errors.address"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Address"
/>
<text-input
v-model=
"form.city"
:errors=
"errors.city"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"City"
/>
<text-input
v-model=
"form.region"
:errors=
"errors.region"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Province/State"
/>
<select-input
v-model=
"form.country"
:errors=
"errors.country"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Country"
>
<text-input
v-model=
"form.email"
:errors=
"
$page.
errors.email"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Email"
/>
<text-input
v-model=
"form.phone"
:errors=
"
$page.
errors.phone"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Phone"
/>
<text-input
v-model=
"form.address"
:errors=
"
$page.
errors.address"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Address"
/>
<text-input
v-model=
"form.city"
:errors=
"
$page.
errors.city"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"City"
/>
<text-input
v-model=
"form.region"
:errors=
"
$page.
errors.region"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Province/State"
/>
<select-input
v-model=
"form.country"
:errors=
"
$page.
errors.country"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Country"
>
<option
:value=
"null"
/>
<option
value=
"CA"
>
Canada
</option>
<option
value=
"US"
>
United States
</option>
</select-input>
<text-input
v-model=
"form.postal_code"
:errors=
"errors.postal_code"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Postal code"
/>
<text-input
v-model=
"form.postal_code"
:errors=
"
$page.
errors.postal_code"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Postal code"
/>
</div>
<div
class=
"px-8 py-4 bg-grey-lightest border-t border-grey-lighter flex items-center"
>
<button
v-if=
"!contact.deleted_at"
class=
"text-red hover:underline"
tabindex=
"-1"
type=
"button"
@
click=
"destroy"
>
Delete Contact
</button>
...
...
@@ -56,10 +56,6 @@ export default {
props
:
{
contact
:
Object
,
organizations
:
Array
,
errors
:
{
type
:
Object
,
default
:
()
=>
({}),
},
},
remember
:
'form'
,
data
()
{
...
...
resources/js/Pages/Organizations/Create.vue
View file @
a49456b
...
...
@@ -7,18 +7,18 @@
<div
class=
"bg-white rounded shadow overflow-hidden max-w-lg"
>
<form
@
submit
.
prevent=
"submit"
>
<div
class=
"p-8 -mr-6 -mb-8 flex flex-wrap"
>
<text-input
v-model=
"form.name"
:errors=
"errors.name"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Name"
/>
<text-input
v-model=
"form.email"
:errors=
"errors.email"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Email"
/>
<text-input
v-model=
"form.phone"
:errors=
"errors.phone"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Phone"
/>
<text-input
v-model=
"form.address"
:errors=
"errors.address"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Address"
/>
<text-input
v-model=
"form.city"
:errors=
"errors.city"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"City"
/>
<text-input
v-model=
"form.region"
:errors=
"errors.region"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Province/State"
/>
<select-input
v-model=
"form.country"
:errors=
"errors.country"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Country"
>
<text-input
v-model=
"form.name"
:errors=
"
$page.
errors.name"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Name"
/>
<text-input
v-model=
"form.email"
:errors=
"
$page.
errors.email"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Email"
/>
<text-input
v-model=
"form.phone"
:errors=
"
$page.
errors.phone"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Phone"
/>
<text-input
v-model=
"form.address"
:errors=
"
$page.
errors.address"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Address"
/>
<text-input
v-model=
"form.city"
:errors=
"
$page.
errors.city"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"City"
/>
<text-input
v-model=
"form.region"
:errors=
"
$page.
errors.region"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Province/State"
/>
<select-input
v-model=
"form.country"
:errors=
"
$page.
errors.country"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Country"
>
<option
:value=
"null"
/>
<option
value=
"CA"
>
Canada
</option>
<option
value=
"US"
>
United States
</option>
</select-input>
<text-input
v-model=
"form.postal_code"
:errors=
"errors.postal_code"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Postal code"
/>
<text-input
v-model=
"form.postal_code"
:errors=
"
$page.
errors.postal_code"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Postal code"
/>
</div>
<div
class=
"px-8 py-4 bg-grey-lightest border-t border-grey-lighter flex justify-end items-center"
>
<loading-button
:loading=
"sending"
class=
"btn-indigo"
type=
"submit"
>
Create Organization
</loading-button>
...
...
@@ -41,12 +41,6 @@ export default {
SelectInput
,
TextInput
,
},
props
:
{
errors
:
{
type
:
Object
,
default
:
()
=>
({}),
},
},
remember
:
'form'
,
data
()
{
return
{
...
...
resources/js/Pages/Organizations/Edit.vue
View file @
a49456b
...
...
@@ -11,18 +11,18 @@
<div
class=
"bg-white rounded shadow overflow-hidden max-w-lg"
>
<form
@
submit
.
prevent=
"submit"
>
<div
class=
"p-8 -mr-6 -mb-8 flex flex-wrap"
>
<text-input
v-model=
"form.name"
:errors=
"errors.name"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Name"
/>
<text-input
v-model=
"form.email"
:errors=
"errors.email"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Email"
/>
<text-input
v-model=
"form.phone"
:errors=
"errors.phone"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Phone"
/>
<text-input
v-model=
"form.address"
:errors=
"errors.address"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Address"
/>
<text-input
v-model=
"form.city"
:errors=
"errors.city"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"City"
/>
<text-input
v-model=
"form.region"
:errors=
"errors.region"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Province/State"
/>
<select-input
v-model=
"form.country"
:errors=
"errors.country"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Country"
>
<text-input
v-model=
"form.name"
:errors=
"
$page.
errors.name"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Name"
/>
<text-input
v-model=
"form.email"
:errors=
"
$page.
errors.email"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Email"
/>
<text-input
v-model=
"form.phone"
:errors=
"
$page.
errors.phone"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Phone"
/>
<text-input
v-model=
"form.address"
:errors=
"
$page.
errors.address"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Address"
/>
<text-input
v-model=
"form.city"
:errors=
"
$page.
errors.city"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"City"
/>
<text-input
v-model=
"form.region"
:errors=
"
$page.
errors.region"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Province/State"
/>
<select-input
v-model=
"form.country"
:errors=
"
$page.
errors.country"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Country"
>
<option
:value=
"null"
/>
<option
value=
"CA"
>
Canada
</option>
<option
value=
"US"
>
United States
</option>
</select-input>
<text-input
v-model=
"form.postal_code"
:errors=
"errors.postal_code"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Postal code"
/>
<text-input
v-model=
"form.postal_code"
:errors=
"
$page.
errors.postal_code"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Postal code"
/>
</div>
<div
class=
"px-8 py-4 bg-grey-lightest border-t border-grey-lighter flex items-center"
>
<button
v-if=
"!organization.deleted_at"
class=
"text-red hover:underline"
tabindex=
"-1"
type=
"button"
@
click=
"destroy"
>
Delete Organization
</button>
...
...
@@ -88,10 +88,6 @@ export default {
},
props
:
{
organization
:
Object
,
errors
:
{
type
:
Object
,
default
:
()
=>
({}),
},
},
remember
:
'form'
,
data
()
{
...
...
resources/js/Pages/Users/Create.vue
View file @
a49456b
...
...
@@ -7,11 +7,11 @@
<div
class=
"bg-white rounded shadow overflow-hidden max-w-lg"
>
<form
@
submit
.
prevent=
"submit"
>
<div
class=
"p-8 -mr-6 -mb-8 flex flex-wrap"
>
<text-input
v-model=
"form.first_name"
:errors=
"errors.first_name"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"First name"
/>
<text-input
v-model=
"form.last_name"
:errors=
"errors.last_name"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Last name"
/>
<text-input
v-model=
"form.email"
:errors=
"errors.email"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Email"
/>
<text-input
v-model=
"form.password"
:errors=
"errors.password"
class=
"pr-6 pb-8 w-full lg:w-1/2"
type=
"password"
autocomplete=
"new-password"
label=
"Password"
/>
<select-input
v-model=
"form.owner"
:errors=
"errors.owner"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Owner"
>
<text-input
v-model=
"form.first_name"
:errors=
"
$page.
errors.first_name"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"First name"
/>
<text-input
v-model=
"form.last_name"
:errors=
"
$page.
errors.last_name"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Last name"
/>
<text-input
v-model=
"form.email"
:errors=
"
$page.
errors.email"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Email"
/>
<text-input
v-model=
"form.password"
:errors=
"
$page.
errors.password"
class=
"pr-6 pb-8 w-full lg:w-1/2"
type=
"password"
autocomplete=
"new-password"
label=
"Password"
/>
<select-input
v-model=
"form.owner"
:errors=
"
$page.
errors.owner"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Owner"
>
<option
:value=
"true"
>
Yes
</option>
<option
:value=
"false"
>
No
</option>
</select-input>
...
...
@@ -37,12 +37,6 @@ export default {
SelectInput
,
TextInput
,
},
props
:
{
errors
:
{
type
:
Object
,
default
:
()
=>
({}),
},
},
remember
:
'form'
,
data
()
{
return
{
...
...
resources/js/Pages/Users/Edit.vue
View file @
a49456b
...
...
@@ -11,11 +11,11 @@
<div
class=
"bg-white rounded shadow overflow-hidden max-w-lg"
>
<form
@
submit
.
prevent=
"submit"
>
<div
class=
"p-8 -mr-6 -mb-8 flex flex-wrap"
>
<text-input
v-model=
"form.first_name"
:errors=
"errors.first_name"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"First name"
/>
<text-input
v-model=
"form.last_name"
:errors=
"errors.last_name"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Last name"
/>
<text-input
v-model=
"form.email"
:errors=
"errors.email"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Email"
/>
<text-input
v-model=
"form.password"
:errors=
"errors.password"
class=
"pr-6 pb-8 w-full lg:w-1/2"
type=
"password"
autocomplete=
"new-password"
label=
"Password"
/>
<select-input
v-model=
"form.owner"
:errors=
"errors.owner"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Owner"
>
<text-input
v-model=
"form.first_name"
:errors=
"
$page.
errors.first_name"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"First name"
/>
<text-input
v-model=
"form.last_name"
:errors=
"
$page.
errors.last_name"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Last name"
/>
<text-input
v-model=
"form.email"
:errors=
"
$page.
errors.email"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Email"
/>
<text-input
v-model=
"form.password"
:errors=
"
$page.
errors.password"
class=
"pr-6 pb-8 w-full lg:w-1/2"
type=
"password"
autocomplete=
"new-password"
label=
"Password"
/>
<select-input
v-model=
"form.owner"
:errors=
"
$page.
errors.owner"
class=
"pr-6 pb-8 w-full lg:w-1/2"
label=
"Owner"
>
<option
:value=
"true"
>
Yes
</option>
<option
:value=
"false"
>
No
</option>
</select-input>
...
...
@@ -46,10 +46,6 @@ export default {
},
props
:
{
user
:
Object
,
errors
:
{
type
:
Object
,
default
:
()
=>
({}),
},
},
remember
:
'form'
,
data
()
{
...
...
resources/js/Utils/Errors.js
deleted
100644 → 0
View file @
9a5a4a3
class
Errors
{
constructor
(
errors
=
{})
{
this
.
record
(
errors
)
}
record
(
errors
=
{})
{
this
.
errors
=
errors
}
all
()
{
return
this
.
errors
}
any
()
{
return
Object
.
keys
(
this
.
errors
).
length
>
0
}
has
(
key
)
{
return
key
in
this
.
errors
}
first
(
field
)
{
return
this
.
get
(
field
)[
0
]
}
get
(
field
)
{
return
this
.
errors
[
field
]
||
[]
}
}
export
default
Errors
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment