yarn-error.log* | yarn-error.log* | ||||
react-formik-tailwind-labwork.code-workspace | react-formik-tailwind-labwork.code-workspace | ||||
src/assets/styles/.index.css | src/assets/styles/.index.css | ||||
.eslintcache |
module.exports = { | module.exports = { | ||||
port: 8989, | port: 8989, | ||||
//headless: false, | |||||
headless: false, | |||||
slowMo: 0, | slowMo: 0, | ||||
close: true, | |||||
//close: true, | |||||
}; | }; |
/*eslint no-console: ["error", { allow: ["log"] }] */ | /*eslint no-console: ["error", { allow: ["log"] }] */ | ||||
// Dependencies | // Dependencies | ||||
const { After, Before, AfterAll } = require('@cucumber/cucumber'); | const { After, Before, AfterAll } = require('@cucumber/cucumber'); | ||||
const config = require('./support/config'); | |||||
const config = require('./config'); | |||||
const scope = require('./support/scope'); | const scope = require('./support/scope'); | ||||
// Here is where you might clean up database tables to have a clean slate before the tests run | // Here is where you might clean up database tables to have a clean slate before the tests run |
const config = require('./config'); | |||||
const config = require('../config'); | |||||
const assert = require('assert'); | const assert = require('assert'); | ||||
const scope = require('./scope'); | const scope = require('./scope'); | ||||
const pages = require('./pages'); | const pages = require('./pages'); |
const config = require('./support/config'); | |||||
const config = require('./config'); | |||||
const { setWorldConstructor } = require('@cucumber/cucumber'); | const { setWorldConstructor } = require('@cucumber/cucumber'); | ||||
const puppeteer = require('puppeteer'); | const puppeteer = require('puppeteer'); | ||||
const scope = require('./support/scope'); | const scope = require('./support/scope'); |
"@tailwindcss/custom-forms": "^0.2.1", | "@tailwindcss/custom-forms": "^0.2.1", | ||||
"formik": "^2.1.7", | "formik": "^2.1.7", | ||||
"formik-persist": "^1.1.0", | "formik-persist": "^1.1.0", | ||||
"framer-motion": "^2.7.7", | |||||
"framer-motion": "^3.2.1", | |||||
"http-shutdown": "^1.2.2", | "http-shutdown": "^1.2.2", | ||||
"react": "^16.13.1", | |||||
"react-dom": "^16.13.1", | |||||
"react": "^17.0.1", | |||||
"react-dom": "^17.0.1", | |||||
"react-google-recaptcha": "^2.1.0", | "react-google-recaptcha": "^2.1.0", | ||||
"react-json-view": "^1.19.1", | |||||
"react-json-view": "^1.20.4", | |||||
"react-remove-scroll": "^2.4.0", | "react-remove-scroll": "^2.4.0", | ||||
"tailwindcss": "^1.8.10", | |||||
"tailwindcss": "^1.0", | |||||
"tailwindcss-filters": "^3.0.0", | "tailwindcss-filters": "^3.0.0", | ||||
"yup": "^0.29.3" | |||||
"yup": "^0.32.8" | |||||
}, | }, | ||||
"scripts": { | "scripts": { | ||||
"start": "yarn build:css && react-scripts start", | "start": "yarn build:css && react-scripts start", | ||||
}, | }, | ||||
"devDependencies": { | "devDependencies": { | ||||
"@cucumber/cucumber": "^7.0.0", | "@cucumber/cucumber": "^7.0.0", | ||||
"@testing-library/jest-dom": "^4.2.4", | |||||
"@testing-library/react": "^9.3.2", | |||||
"@testing-library/user-event": "^7.1.2", | |||||
"autoprefixer": "9.8.6", | |||||
"@testing-library/jest-dom": "^5.11.9", | |||||
"@testing-library/react": "^11.2.3", | |||||
"@testing-library/user-event": "^12.6.2", | |||||
"autoprefixer": "10.2.3", | |||||
"postcss": "8.2.4", | |||||
"postcss-cli": "^8.0.0", | "postcss-cli": "^8.0.0", | ||||
"prop-types": "^15.7.2", | "prop-types": "^15.7.2", | ||||
"puppeteer": "^5.5.0", | "puppeteer": "^5.5.0", | ||||
"react-scripts": "3.4.3" | |||||
"react-scripts": "4.0.1" | |||||
} | } | ||||
} | } |
color: #a0aec0; | color: #a0aec0; | ||||
} | } | ||||
input::-ms-input-placeholder, textarea::-ms-input-placeholder { | |||||
color: #a0aec0; | |||||
} | |||||
input::placeholder, | input::placeholder, | ||||
textarea::placeholder { | textarea::placeholder { | ||||
color: #a0aec0; | color: #a0aec0; | ||||
opacity: 1; | opacity: 1; | ||||
} | } | ||||
.form-input::-ms-input-placeholder { | |||||
color: #a0aec0; | |||||
opacity: 1; | |||||
} | |||||
.form-input::placeholder { | .form-input::placeholder { | ||||
color: #a0aec0; | color: #a0aec0; | ||||
opacity: 1; | opacity: 1; | ||||
} | } | ||||
.outline-none { | .outline-none { | ||||
outline: 0; | |||||
outline: 2px solid transparent; | |||||
outline-offset: 2px; | |||||
} | } | ||||
.focus\:outline-none:focus { | .focus\:outline-none:focus { | ||||
outline: 0; | |||||
outline: 2px solid transparent; | |||||
outline-offset: 2px; | |||||
} | } | ||||
.overflow-y-auto { | .overflow-y-auto { | ||||
transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform; | transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform; | ||||
} | } | ||||
@-webkit-keyframes spin { | |||||
to { | |||||
transform: rotate(360deg); | |||||
} | |||||
} | |||||
@keyframes spin { | @keyframes spin { | ||||
to { | to { | ||||
transform: rotate(360deg); | transform: rotate(360deg); | ||||
} | } | ||||
} | } | ||||
@-webkit-keyframes ping { | |||||
75%, 100% { | |||||
transform: scale(2); | |||||
opacity: 0; | |||||
} | |||||
} | |||||
@keyframes ping { | @keyframes ping { | ||||
75%, 100% { | 75%, 100% { | ||||
transform: scale(2); | transform: scale(2); | ||||
} | } | ||||
} | } | ||||
@-webkit-keyframes pulse { | |||||
50% { | |||||
opacity: .5; | |||||
} | |||||
} | |||||
@keyframes pulse { | @keyframes pulse { | ||||
50% { | 50% { | ||||
opacity: .5; | opacity: .5; | ||||
} | } | ||||
} | } | ||||
@-webkit-keyframes bounce { | |||||
0%, 100% { | |||||
transform: translateY(-25%); | |||||
-webkit-animation-timing-function: cubic-bezier(0.8,0,1,1); | |||||
animation-timing-function: cubic-bezier(0.8,0,1,1); | |||||
} | |||||
50% { | |||||
transform: none; | |||||
-webkit-animation-timing-function: cubic-bezier(0,0,0.2,1); | |||||
animation-timing-function: cubic-bezier(0,0,0.2,1); | |||||
} | |||||
} | |||||
@keyframes bounce { | @keyframes bounce { | ||||
0%, 100% { | 0%, 100% { | ||||
transform: translateY(-25%); | transform: translateY(-25%); | ||||
-webkit-animation-timing-function: cubic-bezier(0.8,0,1,1); | |||||
animation-timing-function: cubic-bezier(0.8,0,1,1); | |||||
animation-timing-function: cubic-bezier(0.8,0,1,1); | |||||
} | } | ||||
50% { | 50% { | ||||
transform: none; | transform: none; | ||||
-webkit-animation-timing-function: cubic-bezier(0,0,0.2,1); | |||||
animation-timing-function: cubic-bezier(0,0,0.2,1); | |||||
animation-timing-function: cubic-bezier(0,0,0.2,1); | |||||
} | } | ||||
} | } | ||||
--bg-opacity: 1; | --bg-opacity: 1; | ||||
background-color: #6c6fc6; | background-color: #6c6fc6; | ||||
background-color: rgba(108, 111, 198, var(--bg-opacity)); | background-color: rgba(108, 111, 198, var(--bg-opacity)); | ||||
outline: 0; | |||||
outline: 2px solid transparent; | |||||
outline-offset: 2px; | |||||
} | } | ||||
.btn-primary:active { | .btn-primary:active { | ||||
--bg-opacity: 1; | --bg-opacity: 1; | ||||
background-color: #6c6fc6; | background-color: #6c6fc6; | ||||
background-color: rgba(108, 111, 198, var(--bg-opacity)); | background-color: rgba(108, 111, 198, var(--bg-opacity)); | ||||
outline: 0; | |||||
outline: 2px solid transparent; | |||||
outline-offset: 2px; | |||||
} | } | ||||
.btn-secondary:active { | .btn-secondary:active { |
email: Yup.string() | email: Yup.string() | ||||
.required('Required') | .required('Required') | ||||
.email('Must be a valid email address'), | .email('Must be a valid email address'), | ||||
section: Yup.mixed() | |||||
section: Yup.string() | |||||
.required('Required') | .required('Required') | ||||
.oneOf(['users', 'partners'], 'Invalid section'), | .oneOf(['users', 'partners'], 'Invalid section'), | ||||
support_type: Yup.array(Yup.string()).ensure().when('section', { | support_type: Yup.array(Yup.string()).ensure().when('section', { | ||||
is: 'users', | is: 'users', | ||||
then: Yup.array().required('Required').test('is-valid-support-type', 'Invalid support type', val => { | |||||
const sb = val.filter(n => !support_types_values.includes(n)) | |||||
return 0 === sb.length | |||||
}), | |||||
then: Yup.array(Yup.string()).min(1, 'Required') | |||||
.test('is-valid-support-type', 'Invalid support type', val => { | |||||
const sb = val.filter(n => !support_types_values.includes(n)) | |||||
return 0 === sb.length | |||||
} | |||||
), | |||||
}), | }), | ||||
message: Yup.string() | message: Yup.string() | ||||
.required('Required') | .required('Required') |
let lastId = 0; | let lastId = 0; | ||||
export default function(prefix='id') { | |||||
const newId = function(prefix='id') { | |||||
lastId++; | lastId++; | ||||
return `${prefix}${lastId}`; | return `${prefix}${lastId}`; | ||||
} | |||||
} | |||||
export default newId |