Browse Source

[ADD] formik and yum start config

amenpunk 3 years ago
parent
commit
794dde3184

+ 166 - 1
psicoadmin/package-lock.json

18
         "@testing-library/user-event": "^12.1.10",
18
         "@testing-library/user-event": "^12.1.10",
19
         "bootstrap": "^5.1.3",
19
         "bootstrap": "^5.1.3",
20
         "date-fns": "^2.27.0",
20
         "date-fns": "^2.27.0",
21
+        "formik": "^2.2.9",
21
         "js-cookie": "^3.0.1",
22
         "js-cookie": "^3.0.1",
22
         "react": "^17.0.2",
23
         "react": "^17.0.2",
23
         "react-bootstrap": "^2.0.2",
24
         "react-bootstrap": "^2.0.2",
24
         "react-dom": "^17.0.2",
25
         "react-dom": "^17.0.2",
25
         "react-router-dom": "^6.0.2",
26
         "react-router-dom": "^6.0.2",
26
         "react-scripts": "4.0.3",
27
         "react-scripts": "4.0.3",
27
-        "web-vitals": "^1.0.1"
28
+        "web-vitals": "^1.0.1",
29
+        "yup": "^0.32.11"
28
       }
30
       }
29
     },
31
     },
30
     "node_modules/@babel/code-frame": {
32
     "node_modules/@babel/code-frame": {
3285
       "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
3287
       "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
3286
       "license": "MIT"
3288
       "license": "MIT"
3287
     },
3289
     },
3290
+    "node_modules/@types/lodash": {
3291
+      "version": "4.14.178",
3292
+      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.178.tgz",
3293
+      "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw=="
3294
+    },
3288
     "node_modules/@types/minimatch": {
3295
     "node_modules/@types/minimatch": {
3289
       "version": "3.0.3",
3296
       "version": "3.0.3",
3290
       "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
3297
       "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
9850
         "node": ">= 0.12"
9857
         "node": ">= 0.12"
9851
       }
9858
       }
9852
     },
9859
     },
9860
+    "node_modules/formik": {
9861
+      "version": "2.2.9",
9862
+      "resolved": "https://registry.npmjs.org/formik/-/formik-2.2.9.tgz",
9863
+      "integrity": "sha512-LQLcISMmf1r5at4/gyJigGn0gOwFbeEAlji+N9InZF6LIMXnFNkO42sCI8Jt84YZggpD4cPWObAZaxpEFtSzNA==",
9864
+      "funding": [
9865
+        {
9866
+          "type": "individual",
9867
+          "url": "https://opencollective.com/formik"
9868
+        }
9869
+      ],
9870
+      "dependencies": {
9871
+        "deepmerge": "^2.1.1",
9872
+        "hoist-non-react-statics": "^3.3.0",
9873
+        "lodash": "^4.17.21",
9874
+        "lodash-es": "^4.17.21",
9875
+        "react-fast-compare": "^2.0.1",
9876
+        "tiny-warning": "^1.0.2",
9877
+        "tslib": "^1.10.0"
9878
+      },
9879
+      "peerDependencies": {
9880
+        "react": ">=16.8.0"
9881
+      }
9882
+    },
9883
+    "node_modules/formik/node_modules/deepmerge": {
9884
+      "version": "2.2.1",
9885
+      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz",
9886
+      "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==",
9887
+      "engines": {
9888
+        "node": ">=0.10.0"
9889
+      }
9890
+    },
9891
+    "node_modules/formik/node_modules/tslib": {
9892
+      "version": "1.14.1",
9893
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
9894
+      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
9895
+    },
9853
     "node_modules/forwarded": {
9896
     "node_modules/forwarded": {
9854
       "version": "0.1.2",
9897
       "version": "0.1.2",
9855
       "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
9898
       "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
12665
       "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
12708
       "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
12666
       "license": "MIT"
12709
       "license": "MIT"
12667
     },
12710
     },
12711
+    "node_modules/lodash-es": {
12712
+      "version": "4.17.21",
12713
+      "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
12714
+      "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
12715
+    },
12668
     "node_modules/lodash._reinterpolate": {
12716
     "node_modules/lodash._reinterpolate": {
12669
       "version": "3.0.0",
12717
       "version": "3.0.0",
12670
       "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
12718
       "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
13244
       "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
13292
       "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
13245
       "license": "MIT"
13293
       "license": "MIT"
13246
     },
13294
     },
13295
+    "node_modules/nanoclone": {
13296
+      "version": "0.2.1",
13297
+      "resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz",
13298
+      "integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA=="
13299
+    },
13247
     "node_modules/nanoid": {
13300
     "node_modules/nanoid": {
13248
       "version": "3.1.20",
13301
       "version": "3.1.20",
13249
       "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz",
13302
       "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz",
15732
       "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
15785
       "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
15733
       "license": "MIT"
15786
       "license": "MIT"
15734
     },
15787
     },
15788
+    "node_modules/property-expr": {
15789
+      "version": "2.0.4",
15790
+      "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.4.tgz",
15791
+      "integrity": "sha512-sFPkHQjVKheDNnPvotjQmm3KD3uk1fWKUN7CrpdbwmUx3CrG3QiM8QpTSimvig5vTXmTvjz7+TDvXOI9+4rkcg=="
15792
+    },
15735
     "node_modules/proxy-addr": {
15793
     "node_modules/proxy-addr": {
15736
       "version": "2.0.6",
15794
       "version": "2.0.6",
15737
       "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
15795
       "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
16157
       "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==",
16215
       "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==",
16158
       "license": "MIT"
16216
       "license": "MIT"
16159
     },
16217
     },
16218
+    "node_modules/react-fast-compare": {
16219
+      "version": "2.0.4",
16220
+      "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz",
16221
+      "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw=="
16222
+    },
16160
     "node_modules/react-is": {
16223
     "node_modules/react-is": {
16161
       "version": "17.0.2",
16224
       "version": "17.0.2",
16162
       "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
16225
       "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
19246
       "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
19309
       "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
19247
       "license": "MIT"
19310
       "license": "MIT"
19248
     },
19311
     },
19312
+    "node_modules/tiny-warning": {
19313
+      "version": "1.0.3",
19314
+      "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
19315
+      "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
19316
+    },
19249
     "node_modules/tmpl": {
19317
     "node_modules/tmpl": {
19250
       "version": "1.0.4",
19318
       "version": "1.0.4",
19251
       "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz",
19319
       "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz",
19354
         "node": ">=0.6"
19422
         "node": ">=0.6"
19355
       }
19423
       }
19356
     },
19424
     },
19425
+    "node_modules/toposort": {
19426
+      "version": "2.0.2",
19427
+      "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz",
19428
+      "integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA="
19429
+    },
19357
     "node_modules/tough-cookie": {
19430
     "node_modules/tough-cookie": {
19358
       "version": "2.5.0",
19431
       "version": "2.5.0",
19359
       "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
19432
       "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
21238
       "funding": {
21311
       "funding": {
21239
         "url": "https://github.com/sponsors/sindresorhus"
21312
         "url": "https://github.com/sponsors/sindresorhus"
21240
       }
21313
       }
21314
+    },
21315
+    "node_modules/yup": {
21316
+      "version": "0.32.11",
21317
+      "resolved": "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz",
21318
+      "integrity": "sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==",
21319
+      "dependencies": {
21320
+        "@babel/runtime": "^7.15.4",
21321
+        "@types/lodash": "^4.14.175",
21322
+        "lodash": "^4.17.21",
21323
+        "lodash-es": "^4.17.21",
21324
+        "nanoclone": "^0.2.1",
21325
+        "property-expr": "^2.0.4",
21326
+        "toposort": "^2.0.2"
21327
+      },
21328
+      "engines": {
21329
+        "node": ">=10"
21330
+      }
21241
     }
21331
     }
21242
   },
21332
   },
21243
   "dependencies": {
21333
   "dependencies": {
23485
       "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
23575
       "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
23486
       "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4="
23576
       "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4="
23487
     },
23577
     },
23578
+    "@types/lodash": {
23579
+      "version": "4.14.178",
23580
+      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.178.tgz",
23581
+      "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw=="
23582
+    },
23488
     "@types/minimatch": {
23583
     "@types/minimatch": {
23489
       "version": "3.0.3",
23584
       "version": "3.0.3",
23490
       "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
23585
       "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
28278
         "mime-types": "^2.1.12"
28373
         "mime-types": "^2.1.12"
28279
       }
28374
       }
28280
     },
28375
     },
28376
+    "formik": {
28377
+      "version": "2.2.9",
28378
+      "resolved": "https://registry.npmjs.org/formik/-/formik-2.2.9.tgz",
28379
+      "integrity": "sha512-LQLcISMmf1r5at4/gyJigGn0gOwFbeEAlji+N9InZF6LIMXnFNkO42sCI8Jt84YZggpD4cPWObAZaxpEFtSzNA==",
28380
+      "requires": {
28381
+        "deepmerge": "^2.1.1",
28382
+        "hoist-non-react-statics": "^3.3.0",
28383
+        "lodash": "^4.17.21",
28384
+        "lodash-es": "^4.17.21",
28385
+        "react-fast-compare": "^2.0.1",
28386
+        "tiny-warning": "^1.0.2",
28387
+        "tslib": "^1.10.0"
28388
+      },
28389
+      "dependencies": {
28390
+        "deepmerge": {
28391
+          "version": "2.2.1",
28392
+          "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz",
28393
+          "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA=="
28394
+        },
28395
+        "tslib": {
28396
+          "version": "1.14.1",
28397
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
28398
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
28399
+        }
28400
+      }
28401
+    },
28281
     "forwarded": {
28402
     "forwarded": {
28282
       "version": "0.1.2",
28403
       "version": "0.1.2",
28283
       "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
28404
       "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
30264
       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
30385
       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
30265
       "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
30386
       "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
30266
     },
30387
     },
30388
+    "lodash-es": {
30389
+      "version": "4.17.21",
30390
+      "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
30391
+      "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
30392
+    },
30267
     "lodash._reinterpolate": {
30393
     "lodash._reinterpolate": {
30268
       "version": "3.0.0",
30394
       "version": "3.0.0",
30269
       "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
30395
       "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
30673
       "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
30799
       "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
30674
       "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE="
30800
       "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE="
30675
     },
30801
     },
30802
+    "nanoclone": {
30803
+      "version": "0.2.1",
30804
+      "resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz",
30805
+      "integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA=="
30806
+    },
30676
     "nanoid": {
30807
     "nanoid": {
30677
       "version": "3.1.20",
30808
       "version": "3.1.20",
30678
       "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz",
30809
       "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz",
32462
         }
32593
         }
32463
       }
32594
       }
32464
     },
32595
     },
32596
+    "property-expr": {
32597
+      "version": "2.0.4",
32598
+      "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.4.tgz",
32599
+      "integrity": "sha512-sFPkHQjVKheDNnPvotjQmm3KD3uk1fWKUN7CrpdbwmUx3CrG3QiM8QpTSimvig5vTXmTvjz7+TDvXOI9+4rkcg=="
32600
+    },
32465
     "proxy-addr": {
32601
     "proxy-addr": {
32466
       "version": "2.0.6",
32602
       "version": "2.0.6",
32467
       "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
32603
       "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
32773
       "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz",
32909
       "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz",
32774
       "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew=="
32910
       "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew=="
32775
     },
32911
     },
32912
+    "react-fast-compare": {
32913
+      "version": "2.0.4",
32914
+      "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz",
32915
+      "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw=="
32916
+    },
32776
     "react-is": {
32917
     "react-is": {
32777
       "version": "17.0.2",
32918
       "version": "17.0.2",
32778
       "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
32919
       "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
34998
       "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
35139
       "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
34999
       "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q="
35140
       "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q="
35000
     },
35141
     },
35142
+    "tiny-warning": {
35143
+      "version": "1.0.3",
35144
+      "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
35145
+      "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
35146
+    },
35001
     "tmpl": {
35147
     "tmpl": {
35002
       "version": "1.0.4",
35148
       "version": "1.0.4",
35003
       "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz",
35149
       "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz",
35074
       "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
35220
       "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
35075
       "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
35221
       "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
35076
     },
35222
     },
35223
+    "toposort": {
35224
+      "version": "2.0.2",
35225
+      "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz",
35226
+      "integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA="
35227
+    },
35077
     "tough-cookie": {
35228
     "tough-cookie": {
35078
       "version": "2.5.0",
35229
       "version": "2.5.0",
35079
       "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
35230
       "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
36467
       "version": "0.1.0",
36618
       "version": "0.1.0",
36468
       "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
36619
       "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
36469
       "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
36620
       "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
36621
+    },
36622
+    "yup": {
36623
+      "version": "0.32.11",
36624
+      "resolved": "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz",
36625
+      "integrity": "sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==",
36626
+      "requires": {
36627
+        "@babel/runtime": "^7.15.4",
36628
+        "@types/lodash": "^4.14.175",
36629
+        "lodash": "^4.17.21",
36630
+        "lodash-es": "^4.17.21",
36631
+        "nanoclone": "^0.2.1",
36632
+        "property-expr": "^2.0.4",
36633
+        "toposort": "^2.0.2"
36634
+      }
36470
     }
36635
     }
36471
   }
36636
   }
36472
 }
36637
 }

+ 3 - 1
psicoadmin/package.json

13
     "@testing-library/user-event": "^12.1.10",
13
     "@testing-library/user-event": "^12.1.10",
14
     "bootstrap": "^5.1.3",
14
     "bootstrap": "^5.1.3",
15
     "date-fns": "^2.27.0",
15
     "date-fns": "^2.27.0",
16
+    "formik": "^2.2.9",
16
     "js-cookie": "^3.0.1",
17
     "js-cookie": "^3.0.1",
17
     "react": "^17.0.2",
18
     "react": "^17.0.2",
18
     "react-bootstrap": "^2.0.2",
19
     "react-bootstrap": "^2.0.2",
19
     "react-dom": "^17.0.2",
20
     "react-dom": "^17.0.2",
20
     "react-router-dom": "^6.0.2",
21
     "react-router-dom": "^6.0.2",
21
     "react-scripts": "4.0.3",
22
     "react-scripts": "4.0.3",
22
-    "web-vitals": "^1.0.1"
23
+    "web-vitals": "^1.0.1",
24
+    "yup": "^0.32.11"
23
   },
25
   },
24
   "scripts": {
26
   "scripts": {
25
     "start": "react-scripts start",
27
     "start": "react-scripts start",

+ 6 - 0
psicoadmin/src/App.css

117
 .css-12jypm1-MuiToolbar-root {
117
 .css-12jypm1-MuiToolbar-root {
118
     padding-left : 20px !important;
118
     padding-left : 20px !important;
119
 }
119
 }
120
+.error_feedback{
121
+    color: #2ec5d3;
122
+    font-weight :bold;
123
+    padding : 15px;
124
+    margin: 0px;
125
+}

+ 2 - 2
psicoadmin/src/Components/Actividades.js

130
                                         value={value}
130
                                         value={value}
131
                                         onChange={handleChange}
131
                                         onChange={handleChange}
132
                                         renderInput={(params) => 
132
                                         renderInput={(params) => 
133
-                                        <TextField variant="standard" label="Standard warning" {...params} />}
133
+                                        <TextField fullWidth={true} variant="standard" label="Standard warning" {...params} />}
134
                                     />
134
                                     />
135
                                 </LocalizationProvider>
135
                                 </LocalizationProvider>
136
                             </Col>
136
                             </Col>
142
                                         value={value}
142
                                         value={value}
143
                                         onChange={handleChange}
143
                                         onChange={handleChange}
144
                                         renderInput={(params) => 
144
                                         renderInput={(params) => 
145
-                                        <TextField variant="standard" label="Standard warning" {...params} />}
145
+                                        <TextField fullWidth={true} variant="standard" label="Standard warning" {...params} />}
146
                                     />
146
                                     />
147
                                 </LocalizationProvider>
147
                                 </LocalizationProvider>
148
                             </Col>
148
                             </Col>

+ 138 - 0
psicoadmin/src/Components/FileInput.js

1
+import React, { Component } from "react";
2
+import {  Typography, Icon, Avatar, withStyles  } from '@mui/material/'
3
+import classnames from "classnames";
4
+
5
+
6
+class CustomImageInput extends Component {
7
+    constructor(props) {
8
+        super(props);
9
+        this.fileUpload = React.createRef();
10
+        this.showFileUpload = this.showFileUpload.bind(this);
11
+        this.handleImageChange = this.handleImageChange.bind(this);
12
+    }
13
+
14
+    state = {
15
+        file: undefined,
16
+        imagePreviewUrl: undefined
17
+    };
18
+
19
+    showFileUpload() {
20
+        if (this.fileUpload) {
21
+            this.fileUpload.current.click();
22
+        }
23
+    }
24
+
25
+    handleImageChange(e) {
26
+        e.preventDefault();
27
+        let reader = new FileReader();
28
+        let file = e.target.files[0];
29
+        if (file) {
30
+            reader.onloadend = () => {
31
+                this.setState({
32
+                    file: file,
33
+                    imagePreviewUrl: reader.result
34
+                });
35
+            };
36
+            reader.readAsDataURL(file);
37
+            this.props.setFieldValue(this.props.field.name, file);
38
+        }
39
+    }
40
+
41
+    showPreloadImage() {
42
+        const { errorMessage, classes } = this.props;
43
+        const { file, imagePreviewUrl } = this.state;
44
+
45
+        let comp = null;
46
+
47
+        if (errorMessage) {
48
+            comp = <Icon style={{ fontSize: 36 }}>error_outline</Icon>;
49
+        } else if (file) {
50
+            comp = (
51
+                <img className={classes.avatarThumb} src={imagePreviewUrl} alt="..." />
52
+            );
53
+        } else {
54
+            comp = <Icon style={{ fontSize: 36 }}>folder</Icon>;
55
+        }
56
+        return comp;
57
+    }
58
+
59
+    componentDidMount() {
60
+        console.log(this.fileUpload.current);
61
+    }
62
+
63
+    render() {
64
+        const { errorMessage, title, classes } = this.props;
65
+        const { name, onBlur } = this.props.field;
66
+
67
+        const avatarStyle = classnames(
68
+            classes.bigAvatar,
69
+            this.state.file ? [classes.whiteBack] : [classes.primaryBack],
70
+            { [classes.errorBack]: errorMessage }
71
+        );
72
+
73
+        return (
74
+            <div className={classes.container}>
75
+                <input
76
+                    className={classes.hidden}
77
+                    id={name}
78
+                    name={name}
79
+                    type="file"
80
+                    onChange={this.handleImageChange}
81
+                    ref={this.fileUpload}
82
+                    onBlur={onBlur}
83
+                    //className="form-control"
84
+                />
85
+                <Typography className={classes.title} variant="h5">
86
+                    {title}
87
+                </Typography>
88
+                <Avatar className={avatarStyle} onClick={this.showFileUpload}>
89
+                    {this.showPreloadImage()}
90
+                </Avatar>
91
+
92
+                {errorMessage ? (
93
+                    <Typography variant="caption" color="error">
94
+                        {errorMessage}
95
+                    </Typography>
96
+                ) : null}
97
+            </div>
98
+        );
99
+    }
100
+}
101
+
102
+const customImageInputStyle = theme => ({
103
+    hidden: { display: "none" },
104
+
105
+    container: {
106
+        margin: "auto"
107
+    },
108
+    title: {
109
+        margin: "auto",
110
+        display: "flex",
111
+        justifyContent: "center",
112
+        //fontFamily: 'Roboto Slab',
113
+        //fontWeight:'bold',
114
+        padding: theme.spacing.unit
115
+    },
116
+    bigAvatar: {
117
+        margin: "auto",
118
+        width: 80,
119
+        height: 80,
120
+        borderColor: theme.palette.primary.main,
121
+        borderStyle: "solid",
122
+        borderSize: "1px"
123
+    },
124
+    avatarThumb: {
125
+        maxWidth: 80,
126
+        maxHeight: 80
127
+    },
128
+    primaryBack: {
129
+        background: theme.palette.primary.main
130
+    },
131
+    whiteBack: {
132
+        background: "white"
133
+    },
134
+
135
+    errorBack: { background: theme.palette.error.main }
136
+});
137
+
138
+export default withStyles(customImageInputStyle)(CustomImageInput);

+ 2 - 2
psicoadmin/src/Css/all.css

215
 }
215
 }
216
 .content-section {
216
 .content-section {
217
     background-color : #f1f1f1;
217
     background-color : #f1f1f1;
218
-    padding: 70px 15px;
218
+    padding: 70px 50px;
219
 }
219
 }
220
 .nav-item a i{
220
 .nav-item a i{
221
     color: #212529;
221
     color: #212529;
1853
 }
1853
 }
1854
 .filtros_history .col-md-4 input {
1854
 .filtros_history .col-md-4 input {
1855
     width: 100%;
1855
     width: 100%;
1856
-    border: 1px solid #eceff1;
1856
+    /*border: 1px solid #eceff1*/
1857
     font-size: 14px;
1857
     font-size: 14px;
1858
     padding: 1px 10px;
1858
     padding: 1px 10px;
1859
 }
1859
 }

+ 92 - 51
psicoadmin/src/Pages/Puestos.js

1
 import React, {  } from 'react';
1
 import React, {  } from 'react';
2
 import { Row, Col, Modal, Button, Table } from 'react-bootstrap'
2
 import { Row, Col, Modal, Button, Table } from 'react-bootstrap'
3
-import { Box, Typography, Button as MuiButton, ListItem, withStyles } from '@mui/material';
4
-
3
+import { Box } from '@mui/material';
4
+import { Formik, Field, Form } from 'formik';
5
+import * as Yup from 'yup';
5
 
6
 
6
 import ToggleButton from '@mui/material/ToggleButton';
7
 import ToggleButton from '@mui/material/ToggleButton';
7
 import ToggleButtonGroup from '@mui/material/ToggleButtonGroup';
8
 import ToggleButtonGroup from '@mui/material/ToggleButtonGroup';
13
 import EditIcon from '@mui/icons-material/Edit';
14
 import EditIcon from '@mui/icons-material/Edit';
14
 import HighlightOffIcon from '@mui/icons-material/HighlightOff';
15
 import HighlightOffIcon from '@mui/icons-material/HighlightOff';
15
 
16
 
16
-///import { makeStyles, useTheme } from "@material-ui/core/styles";
17
-import { makeStyles, useTheme } from "@mui/material/styles";
18
-import TextField from "@mui/material/TextField";
19
-import ButtonBase from "@mui/material/ButtonBase";
20
-
21
 import NotFound from '../Images/not_found.png';
17
 import NotFound from '../Images/not_found.png';
18
+
19
+const NewPlazaSchema = Yup.object().shape({
20
+    nombre : Yup.string().required('El nombre es requerido').min(5).max(20),
21
+    description : Yup.string().required('La description es requerida').min(5).max(20),
22
+    salario : Yup.number().required('El salario es requerido')
23
+})
22
     
24
     
23
 let data = [{
25
 let data = [{
24
     nombre : 'The standard Lorem Ipsum passage, used since the 1500s',
26
     nombre : 'The standard Lorem Ipsum passage, used since the 1500s',
35
 
37
 
36
 var ID = idMaker(); // "Generator { }"
38
 var ID = idMaker(); // "Generator { }"
37
 
39
 
38
-for ( var _ of new Array(23) ){
40
+for ( var _ of new Array(46) ){
39
     data.push({
41
     data.push({
40
         ...data[0],
42
         ...data[0],
41
         id : ID.next().value,
43
         id : ID.next().value,
66
 
68
 
67
                         {
69
                         {
68
                             data.length ? 
70
                             data.length ? 
69
-                                data.map( (plaza, i) => {
71
+                                data.slice(0,23).map( (plaza, i) => {
70
                                     return (
72
                                     return (
71
                                         <tr key={plaza.id}>
73
                                         <tr key={plaza.id}>
72
                                             <td className="text-center">{ plaza.nombre }</td>
74
                                             <td className="text-center">{ plaza.nombre }</td>
118
         <React.Fragment> 
120
         <React.Fragment> 
119
             {
121
             {
120
                 data.length ? 
122
                 data.length ? 
121
-                data.map( plaza => {
123
+                data.slice(23).map( plaza => {
122
                     return(
124
                     return(
123
                         <Col key={plaza.id} lg="4" md="6" sm="6" xs="12" >
125
                         <Col key={plaza.id} lg="4" md="6" sm="6" xs="12" >
124
                             <div className="panel">
126
                             <div className="panel">
134
                                             <p>{ plaza.description }</p>
136
                                             <p>{ plaza.description }</p>
135
                                             <p>{ plaza.salario }</p>
137
                                             <p>{ plaza.salario }</p>
136
                                         </div>
138
                                         </div>
137
-                                        <div class="btn_interactivos">
139
+                                        <div className="btn_interactivos">
138
                                             { buttons }
140
                                             { buttons }
139
                                         </div>
141
                                         </div>
140
                                     </Col>
142
                                     </Col>
166
     // to handle the user-selected file 
168
     // to handle the user-selected file 
167
     const handleChange = event => {
169
     const handleChange = event => {
168
         const fileUploaded = event.target.files[0];
170
         const fileUploaded = event.target.files[0];
169
-        console.log( "FILE >> ", fileUploaded )
171
+        // console.log( "FILE >> ", fileUploaded )
170
         setFilename( fileUploaded.name )
172
         setFilename( fileUploaded.name )
171
         //props.handleFile(fileUploaded);
173
         //props.handleFile(fileUploaded);
172
     };
174
     };
173
 
175
 
176
+    const validateEmail = (value) => value === "Edgar";
174
 
177
 
175
     return (
178
     return (
176
         <Modal size="lg" aria-labelledby="contained-modal-title-vcenter" centered  show={visible} onHide={onClose}>
179
         <Modal size="lg" aria-labelledby="contained-modal-title-vcenter" centered  show={visible} onHide={onClose}>
179
                 <h4 className="modal-title">Agregar plaza</h4>
182
                 <h4 className="modal-title">Agregar plaza</h4>
180
             </Modal.Header>
183
             </Modal.Header>
181
             <Modal.Body className="modal-body">
184
             <Modal.Body className="modal-body">
182
-                <Row>
183
-                    <Col md="4">
184
-                        <div className="img-container">
185
-                            <img alt="agregar plaza manual" src={NotFound}/>
186
-                        </div>
187
-                    </Col>
188
-                    <Col md="8">
189
-
190
-                        <input 
191
-                            value={ filename ? filename : "" } 
192
-                            type="text" 
193
-                            class="file-upload-input" 
194
-                            disabled="" 
195
-                            placeholder="Ningún archivo seleccionado"/>
196
-
197
-                        <Button className="btn_add_producto_confirm" style={{ marginLeft : 15 }} onClick={handleClick}>
198
-                            SUBIR FOTO
199
-                        </Button>
200
-                        <input
201
-                            type="file"
202
-                            ref={hiddenFileInput}
203
-                            onChange={handleChange}
204
-                            style={{display: 'none'}}
205
-                        />
206
 
185
 
207
-                    </Col>
208
-                </Row>
209
-                <div className="data_product">
210
-                    <Row>
211
-                        <Col md="12">
212
-                            <input type="text" name="nombre" placeholder="Nombre de la plaza"/>
213
-                            <textarea placeholder="Descripción general de la plaza"></textarea>
214
-                            <input type="number" name="salario" placeholder="Salario"/>
215
-                        </Col>
216
-                        <div className="add_producto_confirm">
217
-                            <div className="btn_add_producto_confirm">
218
-                                <span type="submit">Agregar plaza</span>
186
+                <Formik
187
+                    initialValues={{
188
+                        nombre: '',
189
+                        description: '',
190
+                        salario: '',
191
+                    }}
192
+                    validationSchema={NewPlazaSchema}
193
+                    onSubmit={async (values) => {
194
+                        console.log('VALUES >> ',values)
195
+                    }} >
196
+
197
+
198
+                    { ({  errors, touched, validateField, validateForm }) => (
199
+                        <Form>
200
+                            <Row>
201
+
202
+                                <Col md="4">
203
+                                    <div className="img-container">
204
+                                        <img alt="agregar plaza manual" src={NotFound}/>
205
+                                    </div>
206
+                                </Col>
207
+
208
+                                <Col md="8">
209
+
210
+                                    <input 
211
+                                        value={ filename ? filename : "" } 
212
+                                        type="text" 
213
+                                        className="file-upload-input" 
214
+                                        disabled="" 
215
+                                        placeholder="Ningún archivo seleccionado"/>
216
+
217
+                                    <Button className="btn_add_producto_confirm" style={{ marginLeft : 15 }} onClick={handleClick}>
218
+                                        SUBIR FOTO
219
+                                    </Button>
220
+
221
+                                    <input
222
+                                        type="file"
223
+                                        ref={hiddenFileInput}
224
+                                        onChange={handleChange}
225
+                                        style={{display: 'none'}}
226
+                                    />
227
+
228
+                                </Col>
229
+
230
+                            </Row>
231
+                            <div className="data_product">
232
+                                <Row>
233
+                                    <Col md="12">
234
+
235
+                                        {errors.nombre && touched.nombre && <div className="error_feedback">{errors.nombre}</div>}
236
+                                        <Field name="nombre" placeholder="Nombre de la plaza" validate={validateEmail}/>
237
+
238
+                                        {errors.description && touched.description && <div className="error_feedback">{errors.description}</div>}
239
+                                        <Field name="description">
240
+                                            {({ field, form, meta }) => {
241
+                                                return(
242
+                                                    <textarea id="description" name="description" defaultValue="" value={field.value} onChange={field.onChange} placeholder="Descripción general de la plaza"></textarea>
243
+                                                )
244
+                                            }}
245
+                                        </Field>
246
+
247
+                                        {errors.salario && touched.salario && <div className="error_feedback">{errors.salario}</div>}
248
+                                        <Field name="salario" type="number" name="salario" placeholder="Salario"/>
249
+
250
+
251
+                                    </Col>
252
+                                    <div className="add_producto_confirm">
253
+                                        <button className="btn_add_producto_confirm" type="submit">Agregar plaza</button>
254
+                                    </div>
255
+                                </Row>
219
                             </div>
256
                             </div>
220
-                        </div>
221
-                    </Row>
222
-                </div>
257
+                        </Form>
258
+                    )}
259
+
260
+
261
+
262
+
263
+                </Formik>
223
             </Modal.Body>
264
             </Modal.Body>
224
         </Modal>
265
         </Modal>
225
     )
266
     )

+ 74 - 3
psicoadmin/yarn.lock

1131
     "core-js-pure" "^3.0.0"
1131
     "core-js-pure" "^3.0.0"
1132
     "regenerator-runtime" "^0.13.4"
1132
     "regenerator-runtime" "^0.13.4"
1133
 
1133
 
1134
-"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.13.16", "@babel/runtime@^7.14.0", "@babel/runtime@^7.16.0", "@babel/runtime@^7.16.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
1134
+"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.13.16", "@babel/runtime@^7.14.0", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.0", "@babel/runtime@^7.16.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
1135
   "integrity" "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ=="
1135
   "integrity" "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ=="
1136
   "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz"
1136
   "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz"
1137
   "version" "7.16.3"
1137
   "version" "7.16.3"
2107
   "resolved" "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz"
2107
   "resolved" "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz"
2108
   "version" "0.0.29"
2108
   "version" "0.0.29"
2109
 
2109
 
2110
+"@types/lodash@^4.14.175":
2111
+  "integrity" "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw=="
2112
+  "resolved" "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.178.tgz"
2113
+  "version" "4.14.178"
2114
+
2110
 "@types/minimatch@*":
2115
 "@types/minimatch@*":
2111
   "integrity" "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA=="
2116
   "integrity" "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA=="
2112
   "resolved" "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz"
2117
   "resolved" "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz"
4453
   "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz"
4458
   "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz"
4454
   "version" "0.1.3"
4459
   "version" "0.1.3"
4455
 
4460
 
4461
+"deepmerge@^2.1.1":
4462
+  "integrity" "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA=="
4463
+  "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz"
4464
+  "version" "2.2.1"
4465
+
4456
 "deepmerge@^4.2.2":
4466
 "deepmerge@^4.2.2":
4457
   "integrity" "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg=="
4467
   "integrity" "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg=="
4458
   "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz"
4468
   "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz"
5615
     "combined-stream" "^1.0.6"
5625
     "combined-stream" "^1.0.6"
5616
     "mime-types" "^2.1.12"
5626
     "mime-types" "^2.1.12"
5617
 
5627
 
5628
+"formik@^2.2.9":
5629
+  "integrity" "sha512-LQLcISMmf1r5at4/gyJigGn0gOwFbeEAlji+N9InZF6LIMXnFNkO42sCI8Jt84YZggpD4cPWObAZaxpEFtSzNA=="
5630
+  "resolved" "https://registry.npmjs.org/formik/-/formik-2.2.9.tgz"
5631
+  "version" "2.2.9"
5632
+  dependencies:
5633
+    "deepmerge" "^2.1.1"
5634
+    "hoist-non-react-statics" "^3.3.0"
5635
+    "lodash" "^4.17.21"
5636
+    "lodash-es" "^4.17.21"
5637
+    "react-fast-compare" "^2.0.1"
5638
+    "tiny-warning" "^1.0.2"
5639
+    "tslib" "^1.10.0"
5640
+
5618
 "forwarded@~0.1.2":
5641
 "forwarded@~0.1.2":
5619
   "integrity" "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
5642
   "integrity" "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
5620
   "resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz"
5643
   "resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz"
5982
     "minimalistic-assert" "^1.0.0"
6005
     "minimalistic-assert" "^1.0.0"
5983
     "minimalistic-crypto-utils" "^1.0.1"
6006
     "minimalistic-crypto-utils" "^1.0.1"
5984
 
6007
 
5985
-"hoist-non-react-statics@^3.3.1", "hoist-non-react-statics@^3.3.2":
6008
+"hoist-non-react-statics@^3.3.0", "hoist-non-react-statics@^3.3.1", "hoist-non-react-statics@^3.3.2":
5986
   "integrity" "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw=="
6009
   "integrity" "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw=="
5987
   "resolved" "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz"
6010
   "resolved" "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz"
5988
   "version" "3.3.2"
6011
   "version" "3.3.2"
7529
   dependencies:
7552
   dependencies:
7530
     "p-locate" "^4.1.0"
7553
     "p-locate" "^4.1.0"
7531
 
7554
 
7555
+"lodash-es@^4.17.21":
7556
+  "integrity" "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
7557
+  "resolved" "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz"
7558
+  "version" "4.17.21"
7559
+
7532
 "lodash._reinterpolate@^3.0.0":
7560
 "lodash._reinterpolate@^3.0.0":
7533
   "integrity" "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0="
7561
   "integrity" "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0="
7534
   "resolved" "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz"
7562
   "resolved" "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz"
7564
   "resolved" "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz"
7592
   "resolved" "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz"
7565
   "version" "4.5.0"
7593
   "version" "4.5.0"
7566
 
7594
 
7567
-"lodash@^4.17.11", "lodash@^4.17.14", "lodash@^4.17.15", "lodash@^4.17.19", "lodash@^4.17.20", "lodash@^4.17.5", "lodash@>=3.5 <5":
7595
+"lodash@^4.17.11", "lodash@^4.17.14", "lodash@^4.17.15", "lodash@^4.17.19", "lodash@^4.17.20", "lodash@^4.17.21", "lodash@^4.17.5", "lodash@>=3.5 <5":
7568
   "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
7596
   "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
7569
   "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
7597
   "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
7570
   "version" "4.17.21"
7598
   "version" "4.17.21"
7953
     "dns-packet" "^1.3.1"
7981
     "dns-packet" "^1.3.1"
7954
     "thunky" "^1.0.2"
7982
     "thunky" "^1.0.2"
7955
 
7983
 
7984
+"nanoclone@^0.2.1":
7985
+  "integrity" "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA=="
7986
+  "resolved" "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz"
7987
+  "version" "0.2.1"
7988
+
7956
 "nanoid@^3.1.20":
7989
 "nanoid@^3.1.20":
7957
   "integrity" "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw=="
7990
   "integrity" "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw=="
7958
   "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz"
7991
   "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz"
9467
     "object-assign" "^4.1.1"
9500
     "object-assign" "^4.1.1"
9468
     "react-is" "^16.8.1"
9501
     "react-is" "^16.8.1"
9469
 
9502
 
9503
+"property-expr@^2.0.4":
9504
+  "integrity" "sha512-sFPkHQjVKheDNnPvotjQmm3KD3uk1fWKUN7CrpdbwmUx3CrG3QiM8QpTSimvig5vTXmTvjz7+TDvXOI9+4rkcg=="
9505
+  "resolved" "https://registry.npmjs.org/property-expr/-/property-expr-2.0.4.tgz"
9506
+  "version" "2.0.4"
9507
+
9470
 "proxy-addr@~2.0.5":
9508
 "proxy-addr@~2.0.5":
9471
   "integrity" "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw=="
9509
   "integrity" "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw=="
9472
   "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz"
9510
   "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz"
9701
   "resolved" "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz"
9739
   "resolved" "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz"
9702
   "version" "6.0.9"
9740
   "version" "6.0.9"
9703
 
9741
 
9742
+"react-fast-compare@^2.0.1":
9743
+  "integrity" "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw=="
9744
+  "resolved" "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz"
9745
+  "version" "2.0.4"
9746
+
9704
 "react-is@^16.3.2":
9747
 "react-is@^16.3.2":
9705
   "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
9748
   "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
9706
   "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
9749
   "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
11321
   "resolved" "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz"
11364
   "resolved" "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz"
11322
   "version" "0.3.0"
11365
   "version" "0.3.0"
11323
 
11366
 
11367
+"tiny-warning@^1.0.2":
11368
+  "integrity" "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
11369
+  "resolved" "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz"
11370
+  "version" "1.0.3"
11371
+
11324
 "tmpl@1.0.x":
11372
 "tmpl@1.0.x":
11325
   "integrity" "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE="
11373
   "integrity" "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE="
11326
   "resolved" "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz"
11374
   "resolved" "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz"
11373
   "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz"
11421
   "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz"
11374
   "version" "1.0.0"
11422
   "version" "1.0.0"
11375
 
11423
 
11424
+"toposort@^2.0.2":
11425
+  "integrity" "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA="
11426
+  "resolved" "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz"
11427
+  "version" "2.0.2"
11428
+
11376
 "tough-cookie@^2.3.3", "tough-cookie@~2.5.0":
11429
 "tough-cookie@^2.3.3", "tough-cookie@~2.5.0":
11377
   "integrity" "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g=="
11430
   "integrity" "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g=="
11378
   "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz"
11431
   "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz"
11417
     "minimist" "^1.2.0"
11470
     "minimist" "^1.2.0"
11418
     "strip-bom" "^3.0.0"
11471
     "strip-bom" "^3.0.0"
11419
 
11472
 
11473
+"tslib@^1.10.0":
11474
+  "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
11475
+  "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz"
11476
+  "version" "1.14.1"
11477
+
11420
 "tslib@^1.8.1":
11478
 "tslib@^1.8.1":
11421
   "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
11479
   "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
11422
   "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz"
11480
   "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz"
12328
   "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
12386
   "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
12329
   "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"
12387
   "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"
12330
   "version" "0.1.0"
12388
   "version" "0.1.0"
12389
+
12390
+"yup@^0.32.11":
12391
+  "integrity" "sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg=="
12392
+  "resolved" "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz"
12393
+  "version" "0.32.11"
12394
+  dependencies:
12395
+    "@babel/runtime" "^7.15.4"
12396
+    "@types/lodash" "^4.14.175"
12397
+    "lodash" "^4.17.21"
12398
+    "lodash-es" "^4.17.21"
12399
+    "nanoclone" "^0.2.1"
12400
+    "property-expr" "^2.0.4"
12401
+    "toposort" "^2.0.2"