@bigbinary/neeto-molecules 3.7.1 → 3.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/FileUpload.js +51 -43
- package/dist/FileUpload.js.map +1 -1
- package/dist/OptionFields.js +30 -38
- package/dist/OptionFields.js.map +1 -1
- package/dist/cjs/FileUpload.js +51 -43
- package/dist/cjs/FileUpload.js.map +1 -1
- package/dist/cjs/OptionFields.js +28 -36
- package/dist/cjs/OptionFields.js.map +1 -1
- package/package.json +1 -1
- package/types/FileUpload.d.ts +1 -0
- package/types/OptionFields.d.ts +0 -1
package/dist/FileUpload.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { isNotPresent, findBy, isNotEmpty, noop } from '@bigbinary/neeto-cist';
|
|
2
2
|
import { assoc, isEmpty, isNotNil } from 'ramda';
|
|
3
|
+
import { globalProps } from '@bigbinary/neeto-commons-frontend/initializers';
|
|
3
4
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
4
5
|
import classnames from 'classnames';
|
|
5
6
|
import FileUpload$1 from '@bigbinary/neeto-icons/FileUpload';
|
|
@@ -22,6 +23,44 @@ import { useDropzone } from 'react-dropzone';
|
|
|
22
23
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
23
24
|
import { useField } from 'formik';
|
|
24
25
|
|
|
26
|
+
var FILE_MIME_TYPES = {
|
|
27
|
+
pdf: ["application/pdf"],
|
|
28
|
+
doc: ["application/msword", "application/wps-writer"],
|
|
29
|
+
docx: ["application/vnd.openxmlformats-officedocument.wordprocessingml.document"],
|
|
30
|
+
xls: ["application/vnd.ms-excel"],
|
|
31
|
+
xlsx: ["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"],
|
|
32
|
+
csv: ["text/csv"],
|
|
33
|
+
txt: ["text/plain"],
|
|
34
|
+
rtf: ["application/rtf", "text/rtf"],
|
|
35
|
+
html: ["text/html"],
|
|
36
|
+
htm: ["text/html"],
|
|
37
|
+
md: ["text/markdown", "text/x-markdown"],
|
|
38
|
+
zip: ["application/zip"],
|
|
39
|
+
mp3: ["audio/mpeg"],
|
|
40
|
+
wma: ["audio/x-ms-wma", "video/x-ms-asf"],
|
|
41
|
+
mp4: ["video/mp4"],
|
|
42
|
+
mpg: ["video/mpeg"],
|
|
43
|
+
mpeg: ["video/mpeg"],
|
|
44
|
+
flv: ["video/x-flv"],
|
|
45
|
+
avi: ["video/x-msvideo"],
|
|
46
|
+
jpg: ["image/jpeg"],
|
|
47
|
+
jpeg: ["image/jpeg"],
|
|
48
|
+
png: ["image/png"],
|
|
49
|
+
gif: ["image/gif"],
|
|
50
|
+
json: ["application/json"],
|
|
51
|
+
epub: ["application/epub+zip"],
|
|
52
|
+
aac: ["audio/aac"],
|
|
53
|
+
svg: ["image/svg+xml"],
|
|
54
|
+
ico: ["image/vnd.microsoft.icon"]
|
|
55
|
+
};
|
|
56
|
+
var ERROR_CODES = {
|
|
57
|
+
FILE_TOO_LARGE: "file-too-large",
|
|
58
|
+
FILE_INVALID_TYPE: "file-invalid-type",
|
|
59
|
+
TOO_MANY_FILES: "too-many-files"
|
|
60
|
+
};
|
|
61
|
+
var DIRECT_UPLOAD_URL = "/api/direct_uploads";
|
|
62
|
+
var MAX_FILE_SIZE = (globalProps === null || globalProps === void 0 ? void 0 : globalProps.endUserUploadedFileSizeLimitInMb) || 10;
|
|
63
|
+
|
|
25
64
|
function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
26
65
|
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
27
66
|
var DropZone = function DropZone(_ref) {
|
|
@@ -30,11 +69,12 @@ var DropZone = function DropZone(_ref) {
|
|
|
30
69
|
getInputProps = _ref.getInputProps,
|
|
31
70
|
multipleFilesAllowed = _ref.multipleFilesAllowed,
|
|
32
71
|
maxFileSize = _ref.maxFileSize,
|
|
33
|
-
allowedFileTypes = _ref.allowedFileTypes
|
|
72
|
+
allowedFileTypes = _ref.allowedFileTypes,
|
|
73
|
+
hasFileSizeLimit = _ref.hasFileSizeLimit;
|
|
34
74
|
var _useTranslation = useTranslation(),
|
|
35
75
|
t = _useTranslation.t;
|
|
36
76
|
var shouldAllowSingleFileUpload = !multipleFilesAllowed;
|
|
37
|
-
var shouldShowFileSizeLimit = maxFileSize;
|
|
77
|
+
var shouldShowFileSizeLimit = hasFileSizeLimit && maxFileSize;
|
|
38
78
|
return /*#__PURE__*/jsx("div", _objectSpread$2(_objectSpread$2({}, getRootProps({
|
|
39
79
|
className: classnames(["neeto-molecules-file-upload__dropzone"], {
|
|
40
80
|
"neeto-molecules-file-upload__dropzone--drag-active": isDragActive
|
|
@@ -84,43 +124,6 @@ var DropZone = function DropZone(_ref) {
|
|
|
84
124
|
}));
|
|
85
125
|
};
|
|
86
126
|
|
|
87
|
-
var FILE_MIME_TYPES = {
|
|
88
|
-
pdf: ["application/pdf"],
|
|
89
|
-
doc: ["application/msword", "application/wps-writer"],
|
|
90
|
-
docx: ["application/vnd.openxmlformats-officedocument.wordprocessingml.document"],
|
|
91
|
-
xls: ["application/vnd.ms-excel"],
|
|
92
|
-
xlsx: ["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"],
|
|
93
|
-
csv: ["text/csv"],
|
|
94
|
-
txt: ["text/plain"],
|
|
95
|
-
rtf: ["application/rtf", "text/rtf"],
|
|
96
|
-
html: ["text/html"],
|
|
97
|
-
htm: ["text/html"],
|
|
98
|
-
md: ["text/markdown", "text/x-markdown"],
|
|
99
|
-
zip: ["application/zip"],
|
|
100
|
-
mp3: ["audio/mpeg"],
|
|
101
|
-
wma: ["audio/x-ms-wma", "video/x-ms-asf"],
|
|
102
|
-
mp4: ["video/mp4"],
|
|
103
|
-
mpg: ["video/mpeg"],
|
|
104
|
-
mpeg: ["video/mpeg"],
|
|
105
|
-
flv: ["video/x-flv"],
|
|
106
|
-
avi: ["video/x-msvideo"],
|
|
107
|
-
jpg: ["image/jpeg"],
|
|
108
|
-
jpeg: ["image/jpeg"],
|
|
109
|
-
png: ["image/png"],
|
|
110
|
-
gif: ["image/gif"],
|
|
111
|
-
json: ["application/json"],
|
|
112
|
-
epub: ["application/epub+zip"],
|
|
113
|
-
aac: ["audio/aac"],
|
|
114
|
-
svg: ["image/svg+xml"],
|
|
115
|
-
ico: ["image/vnd.microsoft.icon"]
|
|
116
|
-
};
|
|
117
|
-
var ERROR_CODES = {
|
|
118
|
-
FILE_TOO_LARGE: "file-too-large",
|
|
119
|
-
FILE_INVALID_TYPE: "file-invalid-type",
|
|
120
|
-
TOO_MANY_FILES: "too-many-files"
|
|
121
|
-
};
|
|
122
|
-
var DIRECT_UPLOAD_URL = "/api/direct_uploads";
|
|
123
|
-
|
|
124
127
|
var getAcceptedFileTypes = function getAcceptedFileTypes(allowedFileTypes) {
|
|
125
128
|
var accepted = {};
|
|
126
129
|
allowedFileTypes.split(", ").forEach(function (type) {
|
|
@@ -350,7 +353,8 @@ var useFileUpload = function useFileUpload(_ref) {
|
|
|
350
353
|
files = _ref.files,
|
|
351
354
|
onChange = _ref.onChange,
|
|
352
355
|
setError = _ref.setError,
|
|
353
|
-
setTouched = _ref.setTouched
|
|
356
|
+
setTouched = _ref.setTouched,
|
|
357
|
+
hasFileSizeLimit = _ref.hasFileSizeLimit;
|
|
354
358
|
var _useState = useState({}),
|
|
355
359
|
_useState2 = _slicedToArray(_useState, 2),
|
|
356
360
|
uploadProgress = _useState2[0],
|
|
@@ -463,7 +467,7 @@ var useFileUpload = function useFileUpload(_ref) {
|
|
|
463
467
|
minSize: convertMbToBytes(minFileSize),
|
|
464
468
|
onDropAccepted: onDropAccepted,
|
|
465
469
|
onDropRejected: onDropRejected
|
|
466
|
-
}, maxFileSize && {
|
|
470
|
+
}, maxFileSize && hasFileSizeLimit && {
|
|
467
471
|
maxSize: convertMbToBytes(maxFileSize)
|
|
468
472
|
})),
|
|
469
473
|
getRootProps = _useDropzone.getRootProps,
|
|
@@ -486,7 +490,9 @@ var FileUpload = function FileUpload(_ref) {
|
|
|
486
490
|
_ref$multipleFilesAll = _ref.multipleFilesAllowed,
|
|
487
491
|
multipleFilesAllowed = _ref$multipleFilesAll === void 0 ? true : _ref$multipleFilesAll,
|
|
488
492
|
_ref$maxFileSize = _ref.maxFileSize,
|
|
489
|
-
maxFileSize = _ref$maxFileSize === void 0 ?
|
|
493
|
+
maxFileSize = _ref$maxFileSize === void 0 ? MAX_FILE_SIZE : _ref$maxFileSize,
|
|
494
|
+
_ref$hasFileSizeLimit = _ref.hasFileSizeLimit,
|
|
495
|
+
hasFileSizeLimit = _ref$hasFileSizeLimit === void 0 ? true : _ref$hasFileSizeLimit,
|
|
490
496
|
_ref$isPreview = _ref.isPreview,
|
|
491
497
|
isPreview = _ref$isPreview === void 0 ? false : _ref$isPreview,
|
|
492
498
|
_ref$minFileSize = _ref.minFileSize,
|
|
@@ -509,7 +515,8 @@ var FileUpload = function FileUpload(_ref) {
|
|
|
509
515
|
files: files,
|
|
510
516
|
onChange: onChange,
|
|
511
517
|
setError: setError,
|
|
512
|
-
setTouched: setTouched
|
|
518
|
+
setTouched: setTouched,
|
|
519
|
+
hasFileSizeLimit: hasFileSizeLimit
|
|
513
520
|
}),
|
|
514
521
|
progress = _useFileUpload.progress,
|
|
515
522
|
cancel = _useFileUpload.cancel,
|
|
@@ -527,6 +534,7 @@ var FileUpload = function FileUpload(_ref) {
|
|
|
527
534
|
allowedFileTypes: allowedFileTypes,
|
|
528
535
|
getInputProps: getInputProps,
|
|
529
536
|
getRootProps: getRootProps,
|
|
537
|
+
hasFileSizeLimit: hasFileSizeLimit,
|
|
530
538
|
isDragActive: isDragActive,
|
|
531
539
|
maxFileSize: maxFileSize,
|
|
532
540
|
multipleFilesAllowed: multipleFilesAllowed
|
package/dist/FileUpload.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileUpload.js","sources":["../src/components/FileUpload/DropZone.jsx","../src/components/FileUpload/constants.js","../src/components/FileUpload/utils.js","../src/components/FileUpload/ErrorMessages.jsx","../src/components/FileUpload/Progress.jsx","../src/components/FileUpload/FilePreview.jsx","../src/components/FileUpload/hooks/useFileUpload.js","../src/components/FileUpload/FileUpload.jsx","../src/components/FileUpload/FormikFileUpload.jsx"],"sourcesContent":["import classnames from \"classnames\";\nimport { FileUpload } from \"neetoicons\";\nimport { useTranslation } from \"react-i18next\";\n\nconst DropZone = ({\n isDragActive,\n getRootProps,\n getInputProps,\n multipleFilesAllowed,\n maxFileSize,\n allowedFileTypes,\n}) => {\n const { t } = useTranslation();\n\n const shouldAllowSingleFileUpload = !multipleFilesAllowed;\n const shouldShowFileSizeLimit = maxFileSize;\n\n return (\n <div\n {...getRootProps({\n className: classnames([\"neeto-molecules-file-upload__dropzone\"], {\n \"neeto-molecules-file-upload__dropzone--drag-active\": isDragActive,\n }),\n })}\n >\n <div\n className=\"neeto-molecules-file-upload__dropzone-inner\"\n data-cy=\"file-upload-body\"\n data-testid=\"file-upload-body\"\n >\n <FileUpload\n className=\"neeto-molecules-file-upload__upload-icon\"\n size=\"36\"\n />\n <div className=\"neeto-molecules-file-upload__dropzone-content\">\n <label\n className=\"neeto-molecules-file-upload__upload-label\"\n htmlFor=\"file-upload\"\n >\n <span className=\"neeto-molecules-file-upload__choose-file\">\n {t(\n \"neetoMolecules.fileUpload.filesDropzone.chooseFileOrDragHere\"\n )}\n </span>\n <input {...getInputProps()} data-cy=\"image-browse-button\" />\n </label>\n <div className=\"neeto-molecules-file-upload__dropzone-helper-block\">\n {shouldAllowSingleFileUpload && (\n <p\n className=\"neeto-molecules-file-upload__dropzone-helper-text\"\n data-cy=\"upload-only-one-file-text\"\n >\n {t(\"neetoMolecules.fileUpload.filesDropzone.oneFileAllowed\")}\n </p>\n )}\n {shouldShowFileSizeLimit && (\n <p\n className=\"neeto-molecules-file-upload__dropzone-helper-text\"\n data-cy=\"maximum-allowed-size-text\"\n >\n {t(\"neetoMolecules.fileUpload.filesDropzone.maxFileSize\", {\n size: maxFileSize,\n unit: \"MB\",\n })}\n </p>\n )}\n {allowedFileTypes && (\n <p\n className=\"neeto-molecules-file-upload__dropzone-helper-text\"\n data-cy=\"allowed-files-types-text\"\n >\n {t(\"neetoMolecules.fileUpload.filesDropzone.allowedFileTypes\", {\n types: allowedFileTypes,\n })}\n </p>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default DropZone;\n","export const FILE_MIME_TYPES = {\n pdf: [\"application/pdf\"],\n doc: [\"application/msword\", \"application/wps-writer\"],\n docx: [\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n ],\n xls: [\"application/vnd.ms-excel\"],\n xlsx: [\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"],\n csv: [\"text/csv\"],\n txt: [\"text/plain\"],\n rtf: [\"application/rtf\", \"text/rtf\"],\n html: [\"text/html\"],\n htm: [\"text/html\"],\n md: [\"text/markdown\", \"text/x-markdown\"],\n zip: [\"application/zip\"],\n mp3: [\"audio/mpeg\"],\n wma: [\"audio/x-ms-wma\", \"video/x-ms-asf\"],\n mp4: [\"video/mp4\"],\n mpg: [\"video/mpeg\"],\n mpeg: [\"video/mpeg\"],\n flv: [\"video/x-flv\"],\n avi: [\"video/x-msvideo\"],\n jpg: [\"image/jpeg\"],\n jpeg: [\"image/jpeg\"],\n png: [\"image/png\"],\n gif: [\"image/gif\"],\n json: [\"application/json\"],\n epub: [\"application/epub+zip\"],\n aac: [\"audio/aac\"],\n svg: [\"image/svg+xml\"],\n ico: [\"image/vnd.microsoft.icon\"],\n};\n\nexport const ERROR_CODES = {\n FILE_TOO_LARGE: \"file-too-large\",\n FILE_INVALID_TYPE: \"file-invalid-type\",\n TOO_MANY_FILES: \"too-many-files\",\n};\n\nexport const DIRECT_UPLOAD_URL = \"/api/direct_uploads\";\n","import path from \"path\";\n\nimport { t } from \"i18next\";\nimport { isNotPresent } from \"neetocist\";\n\nimport { FILE_MIME_TYPES, ERROR_CODES } from \"./constants\";\n\nexport const getAcceptedFileTypes = allowedFileTypes => {\n const accepted = {};\n\n allowedFileTypes.split(\", \").forEach(type => {\n const mimeTypes = FILE_MIME_TYPES[type] || [\"application/octet-stream\"];\n const extension = `.${type}`;\n\n if (isNotPresent(type) || isNotPresent(mimeTypes)) return;\n\n mimeTypes.forEach(mimeType => {\n if (accepted[mimeType]) accepted[mimeType].push(extension);\n else accepted[mimeType] = [extension];\n });\n });\n\n return accepted;\n};\n\nexport const convertBytesToMb = bytes =>\n ((bytes - 10) / (1028 * 1024)).toFixed(2);\n\nexport const renderErrorMessage = (errorObject, maxFileSize, isMultiple) => {\n const error = errorObject.errors[0];\n const file = errorObject.file;\n if (error) {\n const { code } = error;\n if (code === ERROR_CODES.FILE_TOO_LARGE) {\n return t(\"neetoMolecules.fileUpload.filesDropzone.errors.fileTooLarge\", {\n fileName: file.name,\n maxSize: `${Math.round(maxFileSize / 1048576)}MB`,\n });\n } else if (code === ERROR_CODES.FILE_INVALID_TYPE) {\n return t(\n \"neetoMolecules.fileUpload.filesDropzone.errors.fileInvalidType\",\n { fileType: path.extname(file.name) }\n );\n } else if (code === ERROR_CODES.TOO_MANY_FILES && !isMultiple) {\n return t(\"neetoMolecules.fileUpload.filesDropzone.errors.tooManyFiles\", {\n maxFiles: 1,\n });\n }\n }\n\n return t(\"neetoMolecules.fileUpload.filesDropzone.errors.defaultError\", {\n fileName: file.name,\n });\n};\n\nexport const convertMbToBytes = mb => mb * 1028 * 1024 + 10;\n","import { useTranslation } from \"react-i18next\";\n\nimport { ERROR_CODES } from \"./constants\";\nimport { renderErrorMessage } from \"./utils\";\n\nconst ErrorMessages = ({ fileRejections, maxFileSizeInBytes }) => {\n const { t } = useTranslation();\n\n const hasMultipleFileErrors = fileRejections.some(\n ({ errors }) => errors[0].code === ERROR_CODES.TOO_MANY_FILES\n );\n\n return (\n <>\n {hasMultipleFileErrors && (\n <p\n className=\"neeto-molecules-input__error-text\"\n data-cy=\"form-file-upload-input-error\"\n >\n <span className=\"neeto-molecules-input__error-text-style-handle\">\n {t(\"neetoMolecules.fileUpload.filesDropzone.errors.tooManyFiles\", {\n maxFiles: 1,\n })}\n </span>\n </p>\n )}\n {fileRejections\n .filter(({ errors }) => errors[0].code !== ERROR_CODES.TOO_MANY_FILES)\n .map((file, index) => (\n <p\n className=\"neeto-molecules-input__error-text\"\n data-cy=\"form-file-upload-input-error\"\n key={index}\n >\n <span className=\"neeto-molecules-input__error-text-style-handle\">\n {renderErrorMessage(file, maxFileSizeInBytes, false)}\n </span>\n </p>\n ))}\n </>\n );\n};\n\nexport default ErrorMessages;\n","import { motion } from \"framer-motion\";\n\nconst Progress = ({\n percents,\n stroke = \"currentColor\",\n emptyStroke = stroke,\n emptyStrokeOpacity = 0.25,\n duration = 0.5,\n delay = 0,\n size = 100,\n strokeWidth = 12,\n}) => {\n const radius = 45;\n const circumference = Math.ceil(2 * Math.PI * radius);\n const fillPercents = Math.abs(\n Math.ceil((circumference / 100) * (percents - 100))\n );\n\n const transition = { duration, delay };\n\n const variants = {\n hidden: { strokeDashoffset: circumference, transition },\n show: { strokeDashoffset: fillPercents, transition },\n };\n\n return (\n <div className=\"neeto-molecules-progress__circle\">\n <div\n className=\"neeto-molecules-progress__circle-wrapper\"\n style={{ height: size }}\n >\n <svg\n height={size}\n version=\"1.1\"\n viewBox=\"0 0 100 100\"\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n {...{ strokeWidth }}\n className=\"circle\"\n cx=\"50\"\n cy=\"50\"\n fill=\"transparent\"\n r={radius}\n stroke={emptyStroke}\n strokeOpacity={emptyStrokeOpacity}\n />\n </svg>\n <svg\n height={size}\n viewBox=\"0 0 100 100\"\n width={size}\n style={{\n position: \"absolute\",\n transform: \"rotate(-90deg)\",\n overflow: \"visible\",\n top: 0,\n }}\n >\n <motion.circle\n {...{ stroke, strokeWidth, variants }}\n animate=\"show\"\n cx=\"50\"\n cy=\"50\"\n fill=\"transparent\"\n initial=\"hidden\"\n r={radius}\n strokeDasharray={circumference}\n strokeDashoffset={fillPercents}\n />\n </svg>\n </div>\n </div>\n );\n};\n\nexport default Progress;\n","import classnames from \"classnames\";\nimport { FileGeneric, Check, Close } from \"neetoicons\";\n\nimport Progress from \"./Progress\";\nimport { convertBytesToMb } from \"./utils\";\n\nconst FilePreview = ({ file, isUploading, cancel, progress }) => (\n <li\n className=\"neeto-molecules-file-upload__uploaded-list-item\"\n key={file.url}\n >\n <div className=\"neeto-molecules-file-upload__file-preview\">\n <a\n className={classnames({ \"neeto-molecules-invisible\": isUploading })}\n href={file.url}\n rel=\"noreferrer\"\n target=\"_blank\"\n >\n <FileGeneric />\n </a>\n {isUploading && (\n <div className=\"neeto-molecules-progress\">\n <Progress percents={progress || 0} size={20} />\n </div>\n )}\n </div>\n <div className=\"neeto-molecules-file-upload__file-info\">\n <span\n className=\"neeto-molecules-file-upload__file-info-name\"\n data-cy=\"file-name\"\n >\n {file.name}\n </span>\n <span className=\"neeto-molecules-file-upload__file-info-size\">\n {file.size ? `${convertBytesToMb(file.size)} MB` : \"\"}\n </span>\n </div>\n <div className=\"neeto-molecules-file-upload__actions\">\n <span\n className={classnames(\n \"neeto-molecules-file-upload__success-indicator\",\n { \"neeto-molecules-file-upload__success-indicator--active\": file.url }\n )}\n >\n {file.url && <Check data-cy=\"file-upload-success\" />}\n </span>\n <button\n className=\"neeto-molecules-file-upload__button--red neeto-molecules-file-upload__remove-button\"\n type=\"button\"\n onClick={cancel}\n >\n <Close />\n </button>\n </div>\n </li>\n);\n\nexport default FilePreview;\n","import { useState, useCallback, useEffect, useRef } from \"react\";\n\nimport { DirectUpload } from \"@rails/activestorage\";\nimport { findBy } from \"neetocist\";\nimport { assoc } from \"ramda\";\nimport { useDropzone } from \"react-dropzone\";\n\nimport { DIRECT_UPLOAD_URL } from \"../constants\";\nimport { convertMbToBytes, renderErrorMessage } from \"../utils\";\n\nconst useFileUpload = ({\n disabled,\n accept,\n multiple,\n maxFileSize,\n minFileSize,\n files,\n onChange,\n setError,\n setTouched,\n}) => {\n const [uploadProgress, setUploadProgress] = useState({});\n const [uploadError, setUploadError] = useState(\"\");\n\n const filesRef = useRef(files);\n filesRef.current = files;\n\n const cancel = useCallback(\n index => () => {\n setUploadProgress(assoc(files[index].name, null));\n const newFiles = files?.filter((_, idx) => idx !== index);\n onChange(newFiles);\n },\n [files]\n );\n\n useEffect(() => {\n uploadError && setError(uploadError);\n }, [uploadError]);\n\n const onDropAccepted = async acceptedFiles => {\n setTouched(false);\n setUploadError(\"\");\n const initialFiles = acceptedFiles.map(file => ({\n name: file.name,\n size: file.size,\n }));\n\n const updatedFiles = multiple\n ? [...(files || []), ...initialFiles]\n : initialFiles;\n onChange(updatedFiles);\n const newFiles = await new Promise(resolve => {\n const files = [];\n\n acceptedFiles.forEach(file => {\n setUploadProgress(assoc(file.name, 0));\n\n const upload = new DirectUpload(file, DIRECT_UPLOAD_URL, {\n directUploadWillStoreFileWithXHR: xhr => {\n xhr.upload.addEventListener(\"progress\", event => {\n const percentComplete = Math.round(\n (event.loaded / event.total) * 100\n );\n setUploadProgress(assoc(file.name, percentComplete));\n });\n\n xhr.upload.addEventListener(\"load\", () => {\n setUploadProgress(assoc(file.name, undefined));\n });\n },\n });\n\n upload.create((error, blob) => {\n if (error) {\n return setUploadError(error);\n }\n\n files.push({\n url: blob.blob_url,\n name: blob.filename,\n signedId: blob.signed_id,\n });\n\n const isUploadCompleted = multiple\n ? acceptedFiles.length === files.length\n : files.length === 1;\n\n if (isUploadCompleted) {\n return resolve(files);\n }\n\n return \"\";\n });\n });\n\n return files;\n });\n\n if (multiple) {\n const updatedFiles = filesRef.current.map(file => {\n const uploadedFile = findBy({ name: file.name }, newFiles);\n\n return { ...file, ...uploadedFile };\n });\n onChange(updatedFiles);\n } else {\n onChange(newFiles);\n }\n };\n\n const onDropRejected = fileRejections => {\n fileRejections.forEach(fileObject => {\n setTouched(true);\n if (fileObject.errors[0].code === \"too-many-files\") {\n setUploadError(renderErrorMessage(fileObject, maxFileSize, multiple));\n } else {\n setUploadError(renderErrorMessage(fileObject, maxFileSize, multiple));\n }\n });\n };\n\n const { getRootProps, getInputProps, isDragActive, fileRejections } =\n useDropzone({\n disabled,\n accept,\n multiple,\n minSize: convertMbToBytes(minFileSize),\n onDropAccepted,\n onDropRejected,\n ...(maxFileSize && { maxSize: convertMbToBytes(maxFileSize) }),\n });\n\n return {\n progress: uploadProgress,\n cancel,\n getRootProps,\n getInputProps,\n isDragActive,\n fileRejections,\n };\n};\n\nexport default useFileUpload;\n","import { isNotEmpty, noop } from \"neetocist\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty, isNotNil } from \"ramda\";\n\nimport DropZone from \"./DropZone\";\nimport ErrorMessages from \"./ErrorMessages\";\nimport \"./file-upload.scss\";\nimport FilePreview from \"./FilePreview\";\nimport useFileUpload from \"./hooks/useFileUpload\";\nimport { getAcceptedFileTypes } from \"./utils\";\n\nconst FileUpload = ({\n allowedFileTypes = \"\",\n multipleFilesAllowed = true,\n maxFileSize = 1,\n isPreview = false,\n minFileSize = 0,\n files = [],\n onChange = noop,\n error,\n setError = noop,\n setTouched = noop,\n}) => {\n const {\n progress,\n cancel,\n getRootProps,\n getInputProps,\n isDragActive,\n fileRejections,\n } = useFileUpload({\n disabled: isPreview,\n accept: getAcceptedFileTypes(allowedFileTypes),\n multiple: multipleFilesAllowed,\n maxFileSize,\n minFileSize,\n files,\n onChange,\n setError,\n setTouched,\n });\n\n const maxFileSizeInBytes = maxFileSize * 1000000;\n\n const isUploadingFile = file =>\n isNotNil(progress[file.name]) && (progress[file.name] !== 100 || !file.url);\n\n const shouldShowError = error && isEmpty(fileRejections);\n\n return (\n <>\n <DropZone\n {...{\n allowedFileTypes,\n getInputProps,\n getRootProps,\n isDragActive,\n maxFileSize,\n multipleFilesAllowed,\n }}\n />\n {!isEmpty(files) && (\n <ul className=\"neeto-molecules-file-upload__uploaded-list\">\n {files?.map((file, idx) => (\n <FilePreview\n {...{ file }}\n cancel={cancel(idx)}\n isUploading={isUploadingFile(file)}\n key={idx}\n progress={progress[file.name]}\n />\n ))}\n </ul>\n )}\n {isNotEmpty(fileRejections) && (\n <ErrorMessages {...{ fileRejections, maxFileSizeInBytes }} />\n )}\n {shouldShowError && (\n <p\n className=\"neeto-molecules-input__error-text\"\n data-cy=\"form-file-upload-input-error\"\n >\n <span className=\"neeto-molecules-input__error-text-style-handle\">\n {error}\n </span>\n </p>\n )}\n </>\n );\n};\n\nFileUpload.propTypes = {\n /**\n * Allowed file types for the file upload component.\n */\n allowedFileTypes: PropTypes.string,\n /**\n * Boolean to allow multiple files to be uploaded.\n */\n multipleFilesAllowed: PropTypes.bool,\n /**\n * Maximum file size allowed for the file upload component(MB).\n */\n maxFileSize: PropTypes.number,\n /**\n * Boolean to use component as a preview component.\n */\n isPreview: PropTypes.bool,\n /**\n * Minimum file size allowed for the file upload component(MB).\n */\n minFileSize: PropTypes.number,\n /**\n * Uploaded files.\n */\n files: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string,\n size: PropTypes.number,\n url: PropTypes.string,\n })\n ),\n /**\n * Function to be called on file upload, with the updated files array.\n */\n onChange: PropTypes.func,\n /**\n * Error message to be displayed.\n */\n error: PropTypes.string,\n /**\n * Function to set error message.\n */\n setError: PropTypes.func,\n};\n\nexport default FileUpload;\n","import { useField } from \"formik\";\n\nimport FileUpload from \"./FileUpload\";\n\nconst FormikFileUpload = ({ name, ...props }) => {\n const [_, { value, touched, error }, { setValue, setTouched, setError }] =\n useField(name);\n\n const errorToDisplay = touched && error ? error : \"\";\n\n return (\n <FileUpload\n {...{ ...props, setError, setTouched }}\n error={errorToDisplay}\n files={value}\n onChange={setValue}\n />\n );\n};\n\nexport default FormikFileUpload;\n"],"names":["DropZone","_ref","isDragActive","getRootProps","getInputProps","multipleFilesAllowed","maxFileSize","allowedFileTypes","_useTranslation","useTranslation","t","shouldAllowSingleFileUpload","shouldShowFileSizeLimit","_jsx","_objectSpread","className","classnames","children","_jsxs","FileUpload","size","htmlFor","unit","types","FILE_MIME_TYPES","pdf","doc","docx","xls","xlsx","csv","txt","rtf","html","htm","md","zip","mp3","wma","mp4","mpg","mpeg","flv","avi","jpg","jpeg","png","gif","json","epub","aac","svg","ico","ERROR_CODES","FILE_TOO_LARGE","FILE_INVALID_TYPE","TOO_MANY_FILES","DIRECT_UPLOAD_URL","getAcceptedFileTypes","accepted","split","forEach","type","mimeTypes","extension","concat","isNotPresent","mimeType","push","convertBytesToMb","bytes","toFixed","renderErrorMessage","errorObject","isMultiple","error","errors","file","code","fileName","name","maxSize","Math","round","fileType","path","extname","maxFiles","convertMbToBytes","mb","ErrorMessages","fileRejections","maxFileSizeInBytes","hasMultipleFileErrors","some","_ref2","_Fragment","filter","_ref3","map","index","Progress","percents","_ref$stroke","stroke","_ref$emptyStroke","emptyStroke","_ref$emptyStrokeOpaci","emptyStrokeOpacity","_ref$duration","duration","_ref$delay","delay","_ref$size","_ref$strokeWidth","strokeWidth","radius","circumference","ceil","PI","fillPercents","abs","transition","variants","hidden","strokeDashoffset","show","style","height","version","viewBox","width","xmlns","cx","cy","fill","r","strokeOpacity","position","transform","overflow","top","motion","circle","animate","initial","strokeDasharray","FilePreview","isUploading","cancel","progress","href","url","rel","target","FileGeneric","Check","onClick","Close","useFileUpload","disabled","accept","multiple","minFileSize","files","onChange","setError","setTouched","_useState","useState","_useState2","_slicedToArray","uploadProgress","setUploadProgress","_useState3","_useState4","uploadError","setUploadError","filesRef","useRef","current","useCallback","assoc","newFiles","_","idx","useEffect","onDropAccepted","_asyncToGenerator","_regeneratorRuntime","mark","_callee","acceptedFiles","initialFiles","updatedFiles","_updatedFiles","wrap","_callee$","_context","prev","next","_toConsumableArray","Promise","resolve","upload","DirectUpload","directUploadWillStoreFileWithXHR","xhr","addEventListener","event","percentComplete","loaded","total","undefined","create","blob","blob_url","filename","signedId","signed_id","isUploadCompleted","length","sent","uploadedFile","findBy","stop","_x","apply","arguments","onDropRejected","fileObject","_useDropzone","useDropzone","minSize","_ref$allowedFileTypes","_ref$multipleFilesAll","_ref$maxFileSize","_ref$isPreview","isPreview","_ref$minFileSize","_ref$files","_ref$onChange","noop","_ref$setError","_ref$setTouched","_useFileUpload","isUploadingFile","isNotNil","shouldShowError","isEmpty","_createElement","key","isNotEmpty","FormikFileUpload","props","_objectWithoutProperties","_excluded","_useField","useField","_useField2","_useField2$","value","touched","_useField2$2","setValue","errorToDisplay"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FileUpload.js","sources":["../src/components/FileUpload/constants.js","../src/components/FileUpload/DropZone.jsx","../src/components/FileUpload/utils.js","../src/components/FileUpload/ErrorMessages.jsx","../src/components/FileUpload/Progress.jsx","../src/components/FileUpload/FilePreview.jsx","../src/components/FileUpload/hooks/useFileUpload.js","../src/components/FileUpload/FileUpload.jsx","../src/components/FileUpload/FormikFileUpload.jsx"],"sourcesContent":["import { globalProps } from \"neetocommons/initializers\";\n\nexport const FILE_MIME_TYPES = {\n pdf: [\"application/pdf\"],\n doc: [\"application/msword\", \"application/wps-writer\"],\n docx: [\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n ],\n xls: [\"application/vnd.ms-excel\"],\n xlsx: [\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"],\n csv: [\"text/csv\"],\n txt: [\"text/plain\"],\n rtf: [\"application/rtf\", \"text/rtf\"],\n html: [\"text/html\"],\n htm: [\"text/html\"],\n md: [\"text/markdown\", \"text/x-markdown\"],\n zip: [\"application/zip\"],\n mp3: [\"audio/mpeg\"],\n wma: [\"audio/x-ms-wma\", \"video/x-ms-asf\"],\n mp4: [\"video/mp4\"],\n mpg: [\"video/mpeg\"],\n mpeg: [\"video/mpeg\"],\n flv: [\"video/x-flv\"],\n avi: [\"video/x-msvideo\"],\n jpg: [\"image/jpeg\"],\n jpeg: [\"image/jpeg\"],\n png: [\"image/png\"],\n gif: [\"image/gif\"],\n json: [\"application/json\"],\n epub: [\"application/epub+zip\"],\n aac: [\"audio/aac\"],\n svg: [\"image/svg+xml\"],\n ico: [\"image/vnd.microsoft.icon\"],\n};\n\nexport const ERROR_CODES = {\n FILE_TOO_LARGE: \"file-too-large\",\n FILE_INVALID_TYPE: \"file-invalid-type\",\n TOO_MANY_FILES: \"too-many-files\",\n};\n\nexport const DIRECT_UPLOAD_URL = \"/api/direct_uploads\";\n\nexport const MAX_FILE_SIZE =\n globalProps?.endUserUploadedFileSizeLimitInMb || 10;\n","import classnames from \"classnames\";\nimport { FileUpload } from \"neetoicons\";\nimport { useTranslation } from \"react-i18next\";\n\nconst DropZone = ({\n isDragActive,\n getRootProps,\n getInputProps,\n multipleFilesAllowed,\n maxFileSize,\n allowedFileTypes,\n hasFileSizeLimit,\n}) => {\n const { t } = useTranslation();\n\n const shouldAllowSingleFileUpload = !multipleFilesAllowed;\n const shouldShowFileSizeLimit = hasFileSizeLimit && maxFileSize;\n\n return (\n <div\n {...getRootProps({\n className: classnames([\"neeto-molecules-file-upload__dropzone\"], {\n \"neeto-molecules-file-upload__dropzone--drag-active\": isDragActive,\n }),\n })}\n >\n <div\n className=\"neeto-molecules-file-upload__dropzone-inner\"\n data-cy=\"file-upload-body\"\n data-testid=\"file-upload-body\"\n >\n <FileUpload\n className=\"neeto-molecules-file-upload__upload-icon\"\n size=\"36\"\n />\n <div className=\"neeto-molecules-file-upload__dropzone-content\">\n <label\n className=\"neeto-molecules-file-upload__upload-label\"\n htmlFor=\"file-upload\"\n >\n <span className=\"neeto-molecules-file-upload__choose-file\">\n {t(\n \"neetoMolecules.fileUpload.filesDropzone.chooseFileOrDragHere\"\n )}\n </span>\n <input {...getInputProps()} data-cy=\"image-browse-button\" />\n </label>\n <div className=\"neeto-molecules-file-upload__dropzone-helper-block\">\n {shouldAllowSingleFileUpload && (\n <p\n className=\"neeto-molecules-file-upload__dropzone-helper-text\"\n data-cy=\"upload-only-one-file-text\"\n >\n {t(\"neetoMolecules.fileUpload.filesDropzone.oneFileAllowed\")}\n </p>\n )}\n {shouldShowFileSizeLimit && (\n <p\n className=\"neeto-molecules-file-upload__dropzone-helper-text\"\n data-cy=\"maximum-allowed-size-text\"\n >\n {t(\"neetoMolecules.fileUpload.filesDropzone.maxFileSize\", {\n size: maxFileSize,\n unit: \"MB\",\n })}\n </p>\n )}\n {allowedFileTypes && (\n <p\n className=\"neeto-molecules-file-upload__dropzone-helper-text\"\n data-cy=\"allowed-files-types-text\"\n >\n {t(\"neetoMolecules.fileUpload.filesDropzone.allowedFileTypes\", {\n types: allowedFileTypes,\n })}\n </p>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default DropZone;\n","import path from \"path\";\n\nimport { t } from \"i18next\";\nimport { isNotPresent } from \"neetocist\";\n\nimport { FILE_MIME_TYPES, ERROR_CODES } from \"./constants\";\n\nexport const getAcceptedFileTypes = allowedFileTypes => {\n const accepted = {};\n\n allowedFileTypes.split(\", \").forEach(type => {\n const mimeTypes = FILE_MIME_TYPES[type] || [\"application/octet-stream\"];\n const extension = `.${type}`;\n\n if (isNotPresent(type) || isNotPresent(mimeTypes)) return;\n\n mimeTypes.forEach(mimeType => {\n if (accepted[mimeType]) accepted[mimeType].push(extension);\n else accepted[mimeType] = [extension];\n });\n });\n\n return accepted;\n};\n\nexport const convertBytesToMb = bytes =>\n ((bytes - 10) / (1028 * 1024)).toFixed(2);\n\nexport const renderErrorMessage = (errorObject, maxFileSize, isMultiple) => {\n const error = errorObject.errors[0];\n const file = errorObject.file;\n if (error) {\n const { code } = error;\n if (code === ERROR_CODES.FILE_TOO_LARGE) {\n return t(\"neetoMolecules.fileUpload.filesDropzone.errors.fileTooLarge\", {\n fileName: file.name,\n maxSize: `${Math.round(maxFileSize / 1048576)}MB`,\n });\n } else if (code === ERROR_CODES.FILE_INVALID_TYPE) {\n return t(\n \"neetoMolecules.fileUpload.filesDropzone.errors.fileInvalidType\",\n { fileType: path.extname(file.name) }\n );\n } else if (code === ERROR_CODES.TOO_MANY_FILES && !isMultiple) {\n return t(\"neetoMolecules.fileUpload.filesDropzone.errors.tooManyFiles\", {\n maxFiles: 1,\n });\n }\n }\n\n return t(\"neetoMolecules.fileUpload.filesDropzone.errors.defaultError\", {\n fileName: file.name,\n });\n};\n\nexport const convertMbToBytes = mb => mb * 1028 * 1024 + 10;\n","import { useTranslation } from \"react-i18next\";\n\nimport { ERROR_CODES } from \"./constants\";\nimport { renderErrorMessage } from \"./utils\";\n\nconst ErrorMessages = ({ fileRejections, maxFileSizeInBytes }) => {\n const { t } = useTranslation();\n\n const hasMultipleFileErrors = fileRejections.some(\n ({ errors }) => errors[0].code === ERROR_CODES.TOO_MANY_FILES\n );\n\n return (\n <>\n {hasMultipleFileErrors && (\n <p\n className=\"neeto-molecules-input__error-text\"\n data-cy=\"form-file-upload-input-error\"\n >\n <span className=\"neeto-molecules-input__error-text-style-handle\">\n {t(\"neetoMolecules.fileUpload.filesDropzone.errors.tooManyFiles\", {\n maxFiles: 1,\n })}\n </span>\n </p>\n )}\n {fileRejections\n .filter(({ errors }) => errors[0].code !== ERROR_CODES.TOO_MANY_FILES)\n .map((file, index) => (\n <p\n className=\"neeto-molecules-input__error-text\"\n data-cy=\"form-file-upload-input-error\"\n key={index}\n >\n <span className=\"neeto-molecules-input__error-text-style-handle\">\n {renderErrorMessage(file, maxFileSizeInBytes, false)}\n </span>\n </p>\n ))}\n </>\n );\n};\n\nexport default ErrorMessages;\n","import { motion } from \"framer-motion\";\n\nconst Progress = ({\n percents,\n stroke = \"currentColor\",\n emptyStroke = stroke,\n emptyStrokeOpacity = 0.25,\n duration = 0.5,\n delay = 0,\n size = 100,\n strokeWidth = 12,\n}) => {\n const radius = 45;\n const circumference = Math.ceil(2 * Math.PI * radius);\n const fillPercents = Math.abs(\n Math.ceil((circumference / 100) * (percents - 100))\n );\n\n const transition = { duration, delay };\n\n const variants = {\n hidden: { strokeDashoffset: circumference, transition },\n show: { strokeDashoffset: fillPercents, transition },\n };\n\n return (\n <div className=\"neeto-molecules-progress__circle\">\n <div\n className=\"neeto-molecules-progress__circle-wrapper\"\n style={{ height: size }}\n >\n <svg\n height={size}\n version=\"1.1\"\n viewBox=\"0 0 100 100\"\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n {...{ strokeWidth }}\n className=\"circle\"\n cx=\"50\"\n cy=\"50\"\n fill=\"transparent\"\n r={radius}\n stroke={emptyStroke}\n strokeOpacity={emptyStrokeOpacity}\n />\n </svg>\n <svg\n height={size}\n viewBox=\"0 0 100 100\"\n width={size}\n style={{\n position: \"absolute\",\n transform: \"rotate(-90deg)\",\n overflow: \"visible\",\n top: 0,\n }}\n >\n <motion.circle\n {...{ stroke, strokeWidth, variants }}\n animate=\"show\"\n cx=\"50\"\n cy=\"50\"\n fill=\"transparent\"\n initial=\"hidden\"\n r={radius}\n strokeDasharray={circumference}\n strokeDashoffset={fillPercents}\n />\n </svg>\n </div>\n </div>\n );\n};\n\nexport default Progress;\n","import classnames from \"classnames\";\nimport { FileGeneric, Check, Close } from \"neetoicons\";\n\nimport Progress from \"./Progress\";\nimport { convertBytesToMb } from \"./utils\";\n\nconst FilePreview = ({ file, isUploading, cancel, progress }) => (\n <li\n className=\"neeto-molecules-file-upload__uploaded-list-item\"\n key={file.url}\n >\n <div className=\"neeto-molecules-file-upload__file-preview\">\n <a\n className={classnames({ \"neeto-molecules-invisible\": isUploading })}\n href={file.url}\n rel=\"noreferrer\"\n target=\"_blank\"\n >\n <FileGeneric />\n </a>\n {isUploading && (\n <div className=\"neeto-molecules-progress\">\n <Progress percents={progress || 0} size={20} />\n </div>\n )}\n </div>\n <div className=\"neeto-molecules-file-upload__file-info\">\n <span\n className=\"neeto-molecules-file-upload__file-info-name\"\n data-cy=\"file-name\"\n >\n {file.name}\n </span>\n <span className=\"neeto-molecules-file-upload__file-info-size\">\n {file.size ? `${convertBytesToMb(file.size)} MB` : \"\"}\n </span>\n </div>\n <div className=\"neeto-molecules-file-upload__actions\">\n <span\n className={classnames(\n \"neeto-molecules-file-upload__success-indicator\",\n { \"neeto-molecules-file-upload__success-indicator--active\": file.url }\n )}\n >\n {file.url && <Check data-cy=\"file-upload-success\" />}\n </span>\n <button\n className=\"neeto-molecules-file-upload__button--red neeto-molecules-file-upload__remove-button\"\n type=\"button\"\n onClick={cancel}\n >\n <Close />\n </button>\n </div>\n </li>\n);\n\nexport default FilePreview;\n","import { useState, useCallback, useEffect, useRef } from \"react\";\n\nimport { DirectUpload } from \"@rails/activestorage\";\nimport { findBy } from \"neetocist\";\nimport { assoc } from \"ramda\";\nimport { useDropzone } from \"react-dropzone\";\n\nimport { DIRECT_UPLOAD_URL } from \"../constants\";\nimport { convertMbToBytes, renderErrorMessage } from \"../utils\";\n\nconst useFileUpload = ({\n disabled,\n accept,\n multiple,\n maxFileSize,\n minFileSize,\n files,\n onChange,\n setError,\n setTouched,\n hasFileSizeLimit,\n}) => {\n const [uploadProgress, setUploadProgress] = useState({});\n const [uploadError, setUploadError] = useState(\"\");\n\n const filesRef = useRef(files);\n filesRef.current = files;\n\n const cancel = useCallback(\n index => () => {\n setUploadProgress(assoc(files[index].name, null));\n const newFiles = files?.filter((_, idx) => idx !== index);\n onChange(newFiles);\n },\n [files]\n );\n\n useEffect(() => {\n uploadError && setError(uploadError);\n }, [uploadError]);\n\n const onDropAccepted = async acceptedFiles => {\n setTouched(false);\n setUploadError(\"\");\n const initialFiles = acceptedFiles.map(file => ({\n name: file.name,\n size: file.size,\n }));\n\n const updatedFiles = multiple\n ? [...(files || []), ...initialFiles]\n : initialFiles;\n onChange(updatedFiles);\n const newFiles = await new Promise(resolve => {\n const files = [];\n\n acceptedFiles.forEach(file => {\n setUploadProgress(assoc(file.name, 0));\n\n const upload = new DirectUpload(file, DIRECT_UPLOAD_URL, {\n directUploadWillStoreFileWithXHR: xhr => {\n xhr.upload.addEventListener(\"progress\", event => {\n const percentComplete = Math.round(\n (event.loaded / event.total) * 100\n );\n setUploadProgress(assoc(file.name, percentComplete));\n });\n\n xhr.upload.addEventListener(\"load\", () => {\n setUploadProgress(assoc(file.name, undefined));\n });\n },\n });\n\n upload.create((error, blob) => {\n if (error) {\n return setUploadError(error);\n }\n\n files.push({\n url: blob.blob_url,\n name: blob.filename,\n signedId: blob.signed_id,\n });\n\n const isUploadCompleted = multiple\n ? acceptedFiles.length === files.length\n : files.length === 1;\n\n if (isUploadCompleted) {\n return resolve(files);\n }\n\n return \"\";\n });\n });\n\n return files;\n });\n\n if (multiple) {\n const updatedFiles = filesRef.current.map(file => {\n const uploadedFile = findBy({ name: file.name }, newFiles);\n\n return { ...file, ...uploadedFile };\n });\n onChange(updatedFiles);\n } else {\n onChange(newFiles);\n }\n };\n\n const onDropRejected = fileRejections => {\n fileRejections.forEach(fileObject => {\n setTouched(true);\n if (fileObject.errors[0].code === \"too-many-files\") {\n setUploadError(renderErrorMessage(fileObject, maxFileSize, multiple));\n } else {\n setUploadError(renderErrorMessage(fileObject, maxFileSize, multiple));\n }\n });\n };\n\n const { getRootProps, getInputProps, isDragActive, fileRejections } =\n useDropzone({\n disabled,\n accept,\n multiple,\n minSize: convertMbToBytes(minFileSize),\n onDropAccepted,\n onDropRejected,\n ...(maxFileSize &&\n hasFileSizeLimit && { maxSize: convertMbToBytes(maxFileSize) }),\n });\n\n return {\n progress: uploadProgress,\n cancel,\n getRootProps,\n getInputProps,\n isDragActive,\n fileRejections,\n };\n};\n\nexport default useFileUpload;\n","import { isNotEmpty, noop } from \"neetocist\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty, isNotNil } from \"ramda\";\n\nimport { MAX_FILE_SIZE } from \"./constants\";\nimport DropZone from \"./DropZone\";\nimport ErrorMessages from \"./ErrorMessages\";\nimport \"./file-upload.scss\";\nimport FilePreview from \"./FilePreview\";\nimport useFileUpload from \"./hooks/useFileUpload\";\nimport { getAcceptedFileTypes } from \"./utils\";\n\nconst FileUpload = ({\n allowedFileTypes = \"\",\n multipleFilesAllowed = true,\n maxFileSize = MAX_FILE_SIZE,\n hasFileSizeLimit = true,\n isPreview = false,\n minFileSize = 0,\n files = [],\n onChange = noop,\n error,\n setError = noop,\n setTouched = noop,\n}) => {\n const {\n progress,\n cancel,\n getRootProps,\n getInputProps,\n isDragActive,\n fileRejections,\n } = useFileUpload({\n disabled: isPreview,\n accept: getAcceptedFileTypes(allowedFileTypes),\n multiple: multipleFilesAllowed,\n maxFileSize,\n minFileSize,\n files,\n onChange,\n setError,\n setTouched,\n hasFileSizeLimit,\n });\n\n const maxFileSizeInBytes = maxFileSize * 1000000;\n\n const isUploadingFile = file =>\n isNotNil(progress[file.name]) && (progress[file.name] !== 100 || !file.url);\n\n const shouldShowError = error && isEmpty(fileRejections);\n\n return (\n <>\n <DropZone\n {...{\n allowedFileTypes,\n getInputProps,\n getRootProps,\n hasFileSizeLimit,\n isDragActive,\n maxFileSize,\n multipleFilesAllowed,\n }}\n />\n {!isEmpty(files) && (\n <ul className=\"neeto-molecules-file-upload__uploaded-list\">\n {files?.map((file, idx) => (\n <FilePreview\n {...{ file }}\n cancel={cancel(idx)}\n isUploading={isUploadingFile(file)}\n key={idx}\n progress={progress[file.name]}\n />\n ))}\n </ul>\n )}\n {isNotEmpty(fileRejections) && (\n <ErrorMessages {...{ fileRejections, maxFileSizeInBytes }} />\n )}\n {shouldShowError && (\n <p\n className=\"neeto-molecules-input__error-text\"\n data-cy=\"form-file-upload-input-error\"\n >\n <span className=\"neeto-molecules-input__error-text-style-handle\">\n {error}\n </span>\n </p>\n )}\n </>\n );\n};\n\nFileUpload.propTypes = {\n /**\n * Allowed file types for the file upload component.\n */\n allowedFileTypes: PropTypes.string,\n /**\n * Boolean to allow multiple files to be uploaded.\n */\n multipleFilesAllowed: PropTypes.bool,\n /**\n * Maximum file size allowed for the file upload component(MB).\n */\n maxFileSize: PropTypes.number,\n /**\n * Boolean to check if file size limit is enabled.\n */\n hasFileSizeLimit: PropTypes.bool,\n /**\n * Boolean to use component as a preview component.\n */\n isPreview: PropTypes.bool,\n /**\n * Minimum file size allowed for the file upload component(MB).\n */\n minFileSize: PropTypes.number,\n /**\n * Uploaded files.\n */\n files: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string,\n size: PropTypes.number,\n url: PropTypes.string,\n })\n ),\n /**\n * Function to be called on file upload, with the updated files array.\n */\n onChange: PropTypes.func,\n /**\n * Error message to be displayed.\n */\n error: PropTypes.string,\n /**\n * Function to set error message.\n */\n setError: PropTypes.func,\n};\n\nexport default FileUpload;\n","import { useField } from \"formik\";\n\nimport FileUpload from \"./FileUpload\";\n\nconst FormikFileUpload = ({ name, ...props }) => {\n const [_, { value, touched, error }, { setValue, setTouched, setError }] =\n useField(name);\n\n const errorToDisplay = touched && error ? error : \"\";\n\n return (\n <FileUpload\n {...{ ...props, setError, setTouched }}\n error={errorToDisplay}\n files={value}\n onChange={setValue}\n />\n );\n};\n\nexport default FormikFileUpload;\n"],"names":["FILE_MIME_TYPES","pdf","doc","docx","xls","xlsx","csv","txt","rtf","html","htm","md","zip","mp3","wma","mp4","mpg","mpeg","flv","avi","jpg","jpeg","png","gif","json","epub","aac","svg","ico","ERROR_CODES","FILE_TOO_LARGE","FILE_INVALID_TYPE","TOO_MANY_FILES","DIRECT_UPLOAD_URL","MAX_FILE_SIZE","globalProps","endUserUploadedFileSizeLimitInMb","DropZone","_ref","isDragActive","getRootProps","getInputProps","multipleFilesAllowed","maxFileSize","allowedFileTypes","hasFileSizeLimit","_useTranslation","useTranslation","t","shouldAllowSingleFileUpload","shouldShowFileSizeLimit","_jsx","_objectSpread","className","classnames","children","_jsxs","FileUpload","size","htmlFor","unit","types","getAcceptedFileTypes","accepted","split","forEach","type","mimeTypes","extension","concat","isNotPresent","mimeType","push","convertBytesToMb","bytes","toFixed","renderErrorMessage","errorObject","isMultiple","error","errors","file","code","fileName","name","maxSize","Math","round","fileType","path","extname","maxFiles","convertMbToBytes","mb","ErrorMessages","fileRejections","maxFileSizeInBytes","hasMultipleFileErrors","some","_ref2","_Fragment","filter","_ref3","map","index","Progress","percents","_ref$stroke","stroke","_ref$emptyStroke","emptyStroke","_ref$emptyStrokeOpaci","emptyStrokeOpacity","_ref$duration","duration","_ref$delay","delay","_ref$size","_ref$strokeWidth","strokeWidth","radius","circumference","ceil","PI","fillPercents","abs","transition","variants","hidden","strokeDashoffset","show","style","height","version","viewBox","width","xmlns","cx","cy","fill","r","strokeOpacity","position","transform","overflow","top","motion","circle","animate","initial","strokeDasharray","FilePreview","isUploading","cancel","progress","href","url","rel","target","FileGeneric","Check","onClick","Close","useFileUpload","disabled","accept","multiple","minFileSize","files","onChange","setError","setTouched","_useState","useState","_useState2","_slicedToArray","uploadProgress","setUploadProgress","_useState3","_useState4","uploadError","setUploadError","filesRef","useRef","current","useCallback","assoc","newFiles","_","idx","useEffect","onDropAccepted","_asyncToGenerator","_regeneratorRuntime","mark","_callee","acceptedFiles","initialFiles","updatedFiles","_updatedFiles","wrap","_callee$","_context","prev","next","_toConsumableArray","Promise","resolve","upload","DirectUpload","directUploadWillStoreFileWithXHR","xhr","addEventListener","event","percentComplete","loaded","total","undefined","create","blob","blob_url","filename","signedId","signed_id","isUploadCompleted","length","sent","uploadedFile","findBy","stop","_x","apply","arguments","onDropRejected","fileObject","_useDropzone","useDropzone","minSize","_ref$allowedFileTypes","_ref$multipleFilesAll","_ref$maxFileSize","_ref$hasFileSizeLimit","_ref$isPreview","isPreview","_ref$minFileSize","_ref$files","_ref$onChange","noop","_ref$setError","_ref$setTouched","_useFileUpload","isUploadingFile","isNotNil","shouldShowError","isEmpty","_createElement","key","isNotEmpty","FormikFileUpload","props","_objectWithoutProperties","_excluded","_useField","useField","_useField2","_useField2$","value","touched","_useField2$2","setValue","errorToDisplay"],"mappings":"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"}
|
package/dist/OptionFields.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
2
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
3
|
-
import { useState, createElement } from 'react';
|
|
3
|
+
import { useState, useRef, createElement } from 'react';
|
|
4
4
|
import { DragDropContext, Droppable, Draggable } from '@hello-pangea/dnd';
|
|
5
5
|
import { findIndexById, isNotEmpty, noop, slugify } from '@bigbinary/neeto-cist';
|
|
6
6
|
import Plus from '@bigbinary/neeto-icons/Plus';
|
|
7
7
|
import Button from '@bigbinary/neetoui/Button';
|
|
8
8
|
import Typography from '@bigbinary/neetoui/Typography';
|
|
9
|
-
import { reject, prop, isEmpty, assocPath, remove, move, append,
|
|
9
|
+
import { reject, prop, isEmpty, assocPath, remove, move, append, pluck } from 'ramda';
|
|
10
10
|
import { useTranslation, Trans } from 'react-i18next';
|
|
11
11
|
import { withT } from '@bigbinary/neeto-commons-frontend/react-utils';
|
|
12
12
|
import Delete from '@bigbinary/neeto-icons/Delete';
|
|
@@ -16,7 +16,6 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
|
16
16
|
import Modal from '@bigbinary/neetoui/Modal';
|
|
17
17
|
import Textarea from '@bigbinary/neetoui/Textarea';
|
|
18
18
|
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
19
|
-
import { useFormikContext } from 'formik';
|
|
20
19
|
import i18next from 'i18next';
|
|
21
20
|
import ImageUpload from '@bigbinary/neeto-icons/ImageUpload';
|
|
22
21
|
import Input from '@bigbinary/neetoui/Input';
|
|
@@ -174,7 +173,7 @@ var BulkOptionModal = function BulkOptionModal(_ref) {
|
|
|
174
173
|
|
|
175
174
|
var DEFAULT_OPTION_LABEL = i18next.t("neetoMolecules.optionFields.defaultOption");
|
|
176
175
|
|
|
177
|
-
var
|
|
176
|
+
var getOrderedVisibleOptions = function getOrderedVisibleOptions() {
|
|
178
177
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
179
178
|
return options.filter(function (option) {
|
|
180
179
|
return !option.deleted;
|
|
@@ -200,31 +199,32 @@ var useOptionFields = function useOptionFields(_ref) {
|
|
|
200
199
|
var options = _ref.options,
|
|
201
200
|
onChange = _ref.onChange,
|
|
202
201
|
shouldDestroy = _ref.shouldDestroy,
|
|
203
|
-
_ref$name = _ref.name,
|
|
204
|
-
name = _ref$name === void 0 ? "" : _ref$name,
|
|
205
|
-
currentRecord = _ref.currentRecord,
|
|
206
202
|
_ref$itemLabel = _ref.itemLabel,
|
|
207
203
|
itemLabel = _ref$itemLabel === void 0 ? DEFAULT_OPTION_LABEL : _ref$itemLabel;
|
|
208
204
|
var _useState = useState(false),
|
|
209
205
|
_useState2 = _slicedToArray(_useState, 2),
|
|
210
206
|
shouldFocus = _useState2[0],
|
|
211
207
|
setShouldFocus = _useState2[1];
|
|
212
|
-
var
|
|
213
|
-
|
|
208
|
+
var editingOptionDetailsRef = useRef({
|
|
209
|
+
id: "",
|
|
210
|
+
value: ""
|
|
214
211
|
});
|
|
215
|
-
var _useFormikContext = useFormikContext(),
|
|
216
|
-
initialValues = _useFormikContext.initialValues;
|
|
217
212
|
var handleChange = function handleChange(id, value) {
|
|
218
213
|
var isOnBlur = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
var draftAttributes = currentRecord === null || currentRecord === void 0 ? void 0 : currentRecord.draftAttributes;
|
|
222
|
-
var getNextOptions = function getNextOptions() {
|
|
223
|
-
var _path$index, _path$index2;
|
|
224
|
-
return assocPath([index, "label"], isOnBlur ? ((_path$index = path(name.split("."), initialValues)[index]) === null || _path$index === void 0 ? void 0 : _path$index.label) || ((_path$index2 = path(name.split("."), draftAttributes)[index]) === null || _path$index2 === void 0 ? void 0 : _path$index2.label) : value, filteredOptions);
|
|
225
|
-
};
|
|
214
|
+
// Ignores onBlur events if the value in the input field is not cleared.
|
|
215
|
+
// The value will be reset to the initial value if user clicks outside after clearing the value.
|
|
226
216
|
if (isOnBlur && !isEmpty(value)) return;
|
|
227
|
-
|
|
217
|
+
var index = findIndexById(id, options);
|
|
218
|
+
if (editingOptionDetailsRef.current.id !== id) {
|
|
219
|
+
editingOptionDetailsRef.current = {
|
|
220
|
+
id: id,
|
|
221
|
+
value: options[index].label
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// Resets the value to initial value if the user cleared and blurred the input field.
|
|
226
|
+
var valueToUpdate = isOnBlur ? editingOptionDetailsRef.current.value : value;
|
|
227
|
+
onChange(assocPath([index, "label"], valueToUpdate, options));
|
|
228
228
|
};
|
|
229
229
|
var _generateLabel = function generateLabel(opts, count) {
|
|
230
230
|
var labelCount = count || opts.length + 1;
|
|
@@ -234,39 +234,35 @@ var useOptionFields = function useOptionFields(_ref) {
|
|
|
234
234
|
};
|
|
235
235
|
var handleDelete = function handleDelete(_, id) {
|
|
236
236
|
var nextOptions;
|
|
237
|
+
var indexToDelete = findIndexById(id, options);
|
|
237
238
|
if (shouldDestroy) {
|
|
238
|
-
|
|
239
|
-
var indexToDelete = findIndexById(id, filteredOptions);
|
|
240
|
-
nextOptions = assocPath([indexToDelete, "deleted"], true, filteredOptions);
|
|
239
|
+
nextOptions = assocPath([indexToDelete, "deleted"], true, options);
|
|
241
240
|
} else {
|
|
242
|
-
|
|
243
|
-
nextOptions = remove(_indexToDelete, 1, options);
|
|
244
|
-
nextOptions = attachPosition(nextOptions);
|
|
241
|
+
nextOptions = attachPosition(remove(indexToDelete, 1, options));
|
|
245
242
|
}
|
|
246
|
-
onChange(
|
|
243
|
+
onChange(nextOptions);
|
|
247
244
|
};
|
|
248
245
|
var handleDragEnd = function handleDragEnd(_ref2) {
|
|
249
246
|
var source = _ref2.source,
|
|
250
247
|
destination = _ref2.destination;
|
|
251
248
|
// When dragged outside of draggable
|
|
252
249
|
if (destination === null) return;
|
|
250
|
+
var deletedOptions = options.filter(prop("deleted"));
|
|
253
251
|
var filteredOptions = filterDeletedRecords(options);
|
|
254
252
|
var nextOptions = move(source.index, destination.index, filteredOptions);
|
|
255
253
|
var finalOptions = attachPosition(nextOptions);
|
|
256
254
|
onChange([].concat(_toConsumableArray(deletedOptions), _toConsumableArray(finalOptions)));
|
|
257
255
|
};
|
|
258
256
|
var handleAddOption = function handleAddOption() {
|
|
259
|
-
setShouldFocus(true);
|
|
260
|
-
var position = options.length;
|
|
261
257
|
var id = randomId();
|
|
262
258
|
var newOption = {
|
|
263
259
|
id: "draft-".concat(id),
|
|
264
260
|
altId: "alt-".concat(id),
|
|
265
261
|
label: _generateLabel(options, null),
|
|
266
|
-
position:
|
|
262
|
+
position: options.length
|
|
267
263
|
};
|
|
268
|
-
|
|
269
|
-
onChange(
|
|
264
|
+
setShouldFocus(true);
|
|
265
|
+
onChange(append(newOption, options));
|
|
270
266
|
};
|
|
271
267
|
var handleBulkAddOption = function handleBulkAddOption(optionsString) {
|
|
272
268
|
setShouldFocus(true);
|
|
@@ -416,8 +412,6 @@ var OptionFields = function OptionFields(_ref) {
|
|
|
416
412
|
isTextArea = _ref$isTextArea === void 0 ? false : _ref$isTextArea,
|
|
417
413
|
_ref$shouldDestroy = _ref.shouldDestroy,
|
|
418
414
|
shouldDestroy = _ref$shouldDestroy === void 0 ? false : _ref$shouldDestroy,
|
|
419
|
-
_ref$currentRecord = _ref.currentRecord,
|
|
420
|
-
currentRecord = _ref$currentRecord === void 0 ? {} : _ref$currentRecord,
|
|
421
415
|
_ref$bulkActionProps = _ref.bulkActionProps,
|
|
422
416
|
bulkActionProps = _ref$bulkActionProps === void 0 ? {
|
|
423
417
|
enabled: false,
|
|
@@ -433,8 +427,6 @@ var OptionFields = function OptionFields(_ref) {
|
|
|
433
427
|
options: options,
|
|
434
428
|
onChange: onChange,
|
|
435
429
|
shouldDestroy: shouldDestroy,
|
|
436
|
-
name: name,
|
|
437
|
-
currentRecord: currentRecord,
|
|
438
430
|
itemLabel: itemLabel
|
|
439
431
|
}),
|
|
440
432
|
shouldFocus = _useOptionFields.shouldFocus,
|
|
@@ -457,8 +449,8 @@ var OptionFields = function OptionFields(_ref) {
|
|
|
457
449
|
var deleteFunction = onDelete !== null && onDelete !== void 0 ? onDelete : handleDelete;
|
|
458
450
|
deleteFunction(index, id);
|
|
459
451
|
};
|
|
460
|
-
var
|
|
461
|
-
var hideDeleteOption =
|
|
452
|
+
var orderedVisibleOptions = getOrderedVisibleOptions(options);
|
|
453
|
+
var hideDeleteOption = orderedVisibleOptions.length <= minOptions;
|
|
462
454
|
var getUniqueOptionId = function getUniqueOptionId(option) {
|
|
463
455
|
var _option$id, _option$position;
|
|
464
456
|
return option.altId || ((_option$id = option.id) === null || _option$id === void 0 ? void 0 : _option$id.toString()) || ((_option$position = option.position) === null || _option$position === void 0 ? void 0 : _option$position.toString()) || slugify(option.label);
|
|
@@ -479,7 +471,7 @@ var OptionFields = function OptionFields(_ref) {
|
|
|
479
471
|
return /*#__PURE__*/jsxs("div", _objectSpread(_objectSpread({
|
|
480
472
|
ref: innerRef
|
|
481
473
|
}, droppableProps), {}, {
|
|
482
|
-
children: [
|
|
474
|
+
children: [orderedVisibleOptions.map(function (option, index) {
|
|
483
475
|
return /*#__PURE__*/createElement(Draggable, {
|
|
484
476
|
index: index,
|
|
485
477
|
dataKey: getUniqueOptionId(option),
|