Skip to content

Instantly share code, notes, and snippets.

View bicknest's full-sized avatar

Nick Best bicknest

  • Squamish, BC
View GitHub Profile
@bicknest
bicknest / ProfileForm.tsx
Created June 1, 2020 03:01
SchemaValidation
const ProfileFormSchema = Yup.object().shape({
name: Yup.string().required("Required"),
age: Yup.number(),
phoneNumber: Yup.string()
.matches(phoneRegExp, "Phone is not valid")
.required("Required"),
});
function ProfileForm(props: Props) {
const classes = useStyles();
const { profile } = props;
const [updateProfile] = useMutation<UpdateProfile, UpdateProfileVariables>(
UPDATE_PROFILE_INFORMATION
);
return (
<Grid container item spacing={2} xs={12} sm={6}>
<Typography variant="h5" gutterBottom>
Enter the user's profile information
@bicknest
bicknest / ProfileData.ts
Last active May 22, 2020 23:16
ProfileData fragment
// @generated
// This file was automatically generated and should not be edited.
// ====================================================
// GraphQL fragment: ProfileData
// ====================================================
export interface ProfileData_business {
__typename: "Business";
/**
@bicknest
bicknest / ProfileFormFragment.tsx
Last active June 1, 2020 02:46
ProfileForm query fragment
const fragments = {
data: gql`
fragment ProfileData on Profile {
name
age
phoneNumber
}
`
};
@bicknest
bicknest / Forms.tsx
Created May 15, 2020 21:33
Forms Parent early on
import React from "react";
import { useParams } from "react-router-dom";
import { gql, useQuery } from "@apollo/client";
import Container from "@material-ui/core/Container";
import Typography from "@material-ui/core/Typography";
import ProfileForm from "./ProfileForm";
const ProfileFormsQuery = gql`
query ProfileForms {
profile(pk: $pk) {
>>> from core.models import Business
>>> from core.models import Profile
>>> from core.schema import ProfileForm
>>> b = Business.objects.first()
>>> data = {"phone_number": "+15555555555"}
>>> f = ProfileForm(data=data)
>>> f.is_valid()
False
>>> f.errors
{'age': ['This field is required.'], 'business': ['This field is required.']}
@bicknest
bicknest / forms.core.schema.py
Last active May 7, 2020 23:01
Profile ModelForm
from django import forms
class ProfileForm(forms.ModelForm):
class Meta:
model = core.models.Profile
fields = ['name', 'age', 'phone_number', 'business']
@bicknest
bicknest / forms.core.schema.py
Created May 7, 2020 18:04
Exposing Django models as GraphQL types
import graphene
from graphene_django.types import DjangoObjectType
import core.models
class Profile(DjangoObjectType):
class Meta:
model = core.models.Profile
@bicknest
bicknest / forms.core.models.py
Created May 7, 2020 17:56
Models for our form data
from django.db import models
class Business(models.Model):
NORTH_AMERICA = "North America"
ASIA = "Asia"
AFRICA = "Africa"
SOUTH_AMERICA = "South America"
AUSTRALIA = "Australia"
LOCATION_CHOICES = (
@bicknest
bicknest / App.js
Last active February 22, 2020 01:52
React-Admin -- Basic Profile Display App Example
import React, {Component} from 'react';
import { Admin, Resource } from 'react-admin';
import buildGraphQLProvider from 'ra-data-graphql';
import ApolloClient from 'apollo-boost';
import { buildQuery } from './buildQuery';
import { uri } from './config';
const client = ApolloClient({ uri });