@awell-health/ui-library 0.1.92 → 0.1.94
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/index.css +25 -1
- package/dist/index.js +104 -95
- package/dist/types/atoms/fileInputField/FileInputField.d.ts +5 -11
- package/package.json +1 -1
package/dist/index.css
CHANGED
|
@@ -5956,10 +5956,34 @@ html {
|
|
|
5956
5956
|
display: flex;
|
|
5957
5957
|
flex-direction: column;
|
|
5958
5958
|
gap: 12px;
|
|
5959
|
+
/* Higher specificity to override Tailwind */
|
|
5960
|
+
}
|
|
5961
|
+
.awell__FileInputField_file_input_field_container.awell__FileInputField_file_input_field_container {
|
|
5962
|
+
width: 100%;
|
|
5963
|
+
}
|
|
5964
|
+
|
|
5965
|
+
.awell__FileInputField_error_message {
|
|
5966
|
+
color: #e53e3e; /* Red for error */
|
|
5967
|
+
font-size: 14px;
|
|
5968
|
+
margin-bottom: 4px;
|
|
5969
|
+
}
|
|
5970
|
+
|
|
5971
|
+
.awell__FileInputField_file_upload_wrapper {
|
|
5972
|
+
/* Isolate FileUpload component styles */
|
|
5973
|
+
}
|
|
5974
|
+
.awell__FileInputField_file_upload_wrapper .awell-file-upload {
|
|
5975
|
+
width: 100%;
|
|
5959
5976
|
}
|
|
5960
5977
|
|
|
5961
|
-
.
|
|
5978
|
+
.awell__FileInputField_file_list_wrapper {
|
|
5979
|
+
/* Isolate FileList component styles */
|
|
5980
|
+
width: 100%;
|
|
5981
|
+
/* Override Tailwind with higher specificity if needed */
|
|
5982
|
+
}
|
|
5983
|
+
.awell__FileInputField_file_list_wrapper .awell-file-list {
|
|
5984
|
+
width: 100%;
|
|
5962
5985
|
display: flex;
|
|
5986
|
+
flex-direction: column;
|
|
5963
5987
|
}
|
|
5964
5988
|
@import 'https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap';
|
|
5965
5989
|
:root {
|
package/dist/index.js
CHANGED
|
@@ -48050,41 +48050,105 @@ var Kr=[{
|
|
|
48050
48050
|
.styles-module_tooltip__mnnfp{padding:8px 16px;border-radius:3px;font-size:90%;width:max-content}.styles-module_arrow__K0L3T{width:8px;height:8px}[class*='react-tooltip__place-top']>.styles-module_arrow__K0L3T{transform:rotate(45deg)}[class*='react-tooltip__place-right']>.styles-module_arrow__K0L3T{transform:rotate(135deg)}[class*='react-tooltip__place-bottom']>.styles-module_arrow__K0L3T{transform:rotate(225deg)}[class*='react-tooltip__place-left']>.styles-module_arrow__K0L3T{transform:rotate(315deg)}.styles-module_dark__xNqje{background:var(--rt-color-dark);color:var(--rt-color-white)}.styles-module_light__Z6W-X{background-color:var(--rt-color-white);color:var(--rt-color-dark)}.styles-module_success__A2AKt{background-color:var(--rt-color-success);color:var(--rt-color-white)}.styles-module_warning__SCK0X{background-color:var(--rt-color-warning);color:var(--rt-color-white)}.styles-module_error__JvumD{background-color:var(--rt-color-error);color:var(--rt-color-white)}.styles-module_info__BWdHW{background-color:var(--rt-color-info);color:var(--rt-color-white)}`,type:"base"});
|
|
48051
48051
|
});
|
|
48052
48052
|
|
|
48053
|
-
var classes$9 = {"file_input_field_container":"awell__FileInputField_file_input_field_container","
|
|
48053
|
+
var classes$9 = {"file_input_field_container":"awell__FileInputField_file_input_field_container","error_message":"awell__FileInputField_error_message","file_upload_wrapper":"awell__FileInputField_file_upload_wrapper","file_list_wrapper":"awell__FileInputField_file_list_wrapper"};
|
|
48054
48054
|
|
|
48055
48055
|
var FileInputField = function (_a) {
|
|
48056
|
-
_a.id
|
|
48057
|
-
var
|
|
48056
|
+
var id = _a.id,label = _a.label,accept = _a.accept,_b = _a.multiple,multiple = _b === void 0 ? true : _b,error = _a.error,onChange = _a.onChange,onError = _a.onError,_c = _a.className,className = _c === void 0 ? '' : _c,dataCy = _a.dataCy,onFileUpload = _a.onFileUpload,configId = _a.configId,value = _a.value;
|
|
48057
|
+
var _d = React.useState(Array.isArray(value) ?
|
|
48058
|
+
value === null || value === void 0 ? void 0 : value.map(function (attachment) {
|
|
48059
|
+
var _a, _b, _c, _d;
|
|
48060
|
+
return {
|
|
48061
|
+
name: (_a = attachment.filename) !== null && _a !== void 0 ? _a : '',
|
|
48062
|
+
size: (_b = attachment.size) !== null && _b !== void 0 ? _b : 0,
|
|
48063
|
+
type: (_c = attachment.contentType) !== null && _c !== void 0 ? _c : '',
|
|
48064
|
+
url: (_d = attachment.url) !== null && _d !== void 0 ? _d : '',
|
|
48065
|
+
progress: 100,
|
|
48066
|
+
error: undefined };
|
|
48067
|
+
|
|
48068
|
+
}) :
|
|
48069
|
+
[]),selectedFiles = _d[0],setSelectedFiles = _d[1];
|
|
48058
48070
|
React.useEffect(function () {
|
|
48059
|
-
|
|
48060
|
-
|
|
48061
|
-
|
|
48062
|
-
|
|
48063
|
-
|
|
48064
|
-
|
|
48065
|
-
|
|
48066
|
-
return __assign(__assign({}, file), { error: error.error });
|
|
48067
|
-
}
|
|
48068
|
-
return file;
|
|
48069
|
-
});
|
|
48070
|
-
});
|
|
48071
|
-
}
|
|
48072
|
-
}, [fileUploadErrors]);
|
|
48073
|
-
var handleFileChange = function (files) {
|
|
48074
|
-
var updatedFiles = files;
|
|
48075
|
-
var filesAsListItems = updatedFiles.map(function (file) {return {
|
|
48076
|
-
name: file.name,
|
|
48077
|
-
size: file.size,
|
|
48078
|
-
type: file.type };
|
|
48071
|
+
var attachments = selectedFiles.
|
|
48072
|
+
filter(function (file) {return file.url;}).
|
|
48073
|
+
map(function (file) {return {
|
|
48074
|
+
url: file.url,
|
|
48075
|
+
filename: file.name,
|
|
48076
|
+
contentType: file.type,
|
|
48077
|
+
size: file.size };
|
|
48079
48078
|
});
|
|
48080
|
-
|
|
48081
|
-
|
|
48082
|
-
|
|
48079
|
+
onChange(attachments);
|
|
48080
|
+
}, [selectedFiles]);
|
|
48081
|
+
var uploadFilesToStorage = function (files) {return __awaiter(void 0, void 0, void 0, function () {
|
|
48082
|
+
var fileListWithUrls;
|
|
48083
|
+
return __generator(this, function (_a) {
|
|
48084
|
+
switch (_a.label) {
|
|
48085
|
+
case 0:return [4, Promise.all(Array.from(files).map(function (file) {return __awaiter(void 0, void 0, void 0, function () {
|
|
48086
|
+
var fileUrl, error_1;
|
|
48087
|
+
return __generator(this, function (_a) {
|
|
48088
|
+
switch (_a.label) {
|
|
48089
|
+
case 0:
|
|
48090
|
+
_a.trys.push([0, 2,, 3]);
|
|
48091
|
+
return [4, onFileUpload === null || onFileUpload === void 0 ? void 0 : onFileUpload(file, configId)];
|
|
48092
|
+
case 1:
|
|
48093
|
+
fileUrl = _a.sent();
|
|
48094
|
+
return [2, {
|
|
48095
|
+
id: file.name,
|
|
48096
|
+
name: file.name,
|
|
48097
|
+
size: file.size,
|
|
48098
|
+
type: file.type,
|
|
48099
|
+
progress: 100,
|
|
48100
|
+
error: undefined,
|
|
48101
|
+
url: fileUrl }];
|
|
48102
|
+
|
|
48103
|
+
case 2:
|
|
48104
|
+
error_1 = _a.sent();
|
|
48105
|
+
return [2, {
|
|
48106
|
+
id: file.name,
|
|
48107
|
+
name: file.name,
|
|
48108
|
+
size: file.size,
|
|
48109
|
+
type: file.type,
|
|
48110
|
+
progress: 0,
|
|
48111
|
+
error: error_1 instanceof Error ? error_1.message : 'File upload failed',
|
|
48112
|
+
url: undefined }];
|
|
48113
|
+
|
|
48114
|
+
case 3:return [2];}
|
|
48115
|
+
|
|
48116
|
+
});
|
|
48117
|
+
});}))];
|
|
48118
|
+
case 1:
|
|
48119
|
+
fileListWithUrls = _a.sent();
|
|
48120
|
+
return [2, fileListWithUrls];}
|
|
48121
|
+
|
|
48122
|
+
});
|
|
48123
|
+
});};
|
|
48124
|
+
var handleFilesChange = function (files) {return __awaiter(void 0, void 0, void 0, function () {
|
|
48125
|
+
var fileList, fileListWithUrls;
|
|
48126
|
+
return __generator(this, function (_a) {
|
|
48127
|
+
switch (_a.label) {
|
|
48128
|
+
case 0:
|
|
48129
|
+
fileList = Array.from(files).map(function (file) {return {
|
|
48130
|
+
id: file.name,
|
|
48131
|
+
name: "".concat(file.name, " (uploading...)"),
|
|
48132
|
+
size: file.size,
|
|
48133
|
+
type: file.type,
|
|
48134
|
+
progress: 0,
|
|
48135
|
+
error: undefined };
|
|
48136
|
+
});
|
|
48137
|
+
setSelectedFiles(function (prev) {return __spreadArray(__spreadArray([], prev, true), fileList, true);});
|
|
48138
|
+
return [4, uploadFilesToStorage(files)];
|
|
48139
|
+
case 1:
|
|
48140
|
+
fileListWithUrls = _a.sent();
|
|
48141
|
+
setSelectedFiles(function (prev) {
|
|
48142
|
+
return prev.map(function (file) {return fileListWithUrls.find(function (f) {return f.id === file.id;}) || file;});
|
|
48143
|
+
});
|
|
48144
|
+
return [2];}
|
|
48145
|
+
|
|
48146
|
+
});
|
|
48147
|
+
});};
|
|
48083
48148
|
var handleRemoveFile = function (file) {
|
|
48084
|
-
setSelectedFiles(
|
|
48085
|
-
onChange(selectedFiles.filter(function (f) {return f.name !== file.name;}));
|
|
48149
|
+
setSelectedFiles(selectedFiles.filter(function (f) {return f.name !== file.name;}));
|
|
48086
48150
|
};
|
|
48087
|
-
return jsxRuntime.exports.
|
|
48151
|
+
return jsxRuntime.exports.jsxs("div", __assign({ className: "".concat(classes$9.file_input_field_container, " ").concat(className), "data-cy": dataCy }, { children: [error && jsxRuntime.exports.jsx("div", __assign({ className: classes$9.error_message }, { children: error })), jsxRuntime.exports.jsx("div", __assign({ className: classes$9.file_upload_wrapper }, { children: jsxRuntime.exports.jsx(ag, { onChange: handleFilesChange, onError: onError, isMultiple: multiple, accept: accept, label: label, error: error }) })), selectedFiles.length > 0 && jsxRuntime.exports.jsx("div", __assign({ className: classes$9.file_list_wrapper }, { children: jsxRuntime.exports.jsx(og, { files: selectedFiles, onDelete: handleRemoveFile }) }))] }), id);
|
|
48088
48152
|
};
|
|
48089
48153
|
|
|
48090
48154
|
var custom_json_parser = function (blob) {
|
|
@@ -48109,53 +48173,6 @@ var Kr=[{
|
|
|
48109
48173
|
var question = _a.question,control = _a.control,getValues = _a.getValues,labels = _a.labels,_g = _a.inputAutoFocus,inputAutoFocus = _g === void 0 ? false : _g,_h = _a.submitAndMoveToNextQuestion,submitAndMoveToNextQuestion = _h === void 0 ? lodash.exports.noop : _h,_j = _a.onAnswerChange,onAnswerChange = _j === void 0 ? lodash.exports.noop : _j,_k = _a.shouldAutoProgress,shouldAutoProgress = _k === void 0 ? function () {return false;} : _k,onFileUpload = _a.onFileUpload;
|
|
48110
48174
|
var config = question === null || question === void 0 ? void 0 : question.questionConfig;
|
|
48111
48175
|
var _l = useICDClassificationList(question.id),icdClassificationOptions = _l.options,optionsLoading = _l.loading,onIcdClassificationSearchChange = _l.onIcdClassificationSearchChange;
|
|
48112
|
-
var _m = React.useState([]),fileUploadErrors = _m[0],setFileUploadErrors = _m[1];
|
|
48113
|
-
var handleFilesUpload = function (files, onControllerChange) {return __awaiter(void 0, void 0, void 0, function () {
|
|
48114
|
-
var attachments;
|
|
48115
|
-
return __generator(this, function (_a) {
|
|
48116
|
-
switch (_a.label) {
|
|
48117
|
-
case 0:
|
|
48118
|
-
if (!onFileUpload) return [3, 2];
|
|
48119
|
-
setFileUploadErrors([]);
|
|
48120
|
-
return [4, Promise.all(files.map(function (file) {return __awaiter(void 0, void 0, void 0, function () {
|
|
48121
|
-
var configId, fileUrl, attachment, error_1, errorMessage_1;
|
|
48122
|
-
var _a;
|
|
48123
|
-
return __generator(this, function (_b) {
|
|
48124
|
-
switch (_b.label) {
|
|
48125
|
-
case 0:
|
|
48126
|
-
_b.trys.push([0, 2,, 3]);
|
|
48127
|
-
configId = (_a = config === null || config === void 0 ? void 0 : config.file_storage) === null || _a === void 0 ? void 0 : _a.file_storage_destination_id;
|
|
48128
|
-
return [4, onFileUpload(file, configId)];
|
|
48129
|
-
case 1:
|
|
48130
|
-
fileUrl = _b.sent();
|
|
48131
|
-
attachment = {
|
|
48132
|
-
url: fileUrl,
|
|
48133
|
-
filename: file.name,
|
|
48134
|
-
contentType: file.type,
|
|
48135
|
-
size: file.size };
|
|
48136
|
-
|
|
48137
|
-
return [2, attachment];
|
|
48138
|
-
case 2:
|
|
48139
|
-
error_1 = _b.sent();
|
|
48140
|
-
errorMessage_1 = error_1 instanceof Error ?
|
|
48141
|
-
error_1.message :
|
|
48142
|
-
'This file could not be uploaded';
|
|
48143
|
-
setFileUploadErrors(function (prev) {return __spreadArray(__spreadArray([], prev, true), [
|
|
48144
|
-
{ id: file.name, error: errorMessage_1 }],
|
|
48145
|
-
false);});
|
|
48146
|
-
return [3, 3];
|
|
48147
|
-
case 3:return [2];}
|
|
48148
|
-
|
|
48149
|
-
});
|
|
48150
|
-
});}))];
|
|
48151
|
-
case 1:
|
|
48152
|
-
attachments = _a.sent();
|
|
48153
|
-
onControllerChange(JSON.stringify(attachments.filter(function (attachment) {return !lodash.exports.isNil(attachment);})));
|
|
48154
|
-
_a.label = 2;
|
|
48155
|
-
case 2:return [2];}
|
|
48156
|
-
|
|
48157
|
-
});
|
|
48158
|
-
});};
|
|
48159
48176
|
switch (question.userQuestionType) {
|
|
48160
48177
|
case exports.UserQuestionType.YesNo:
|
|
48161
48178
|
return jsxRuntime.exports.jsx(Controller, { name: question.id, control: control, defaultValue: "", rules: { required: config === null || config === void 0 ? void 0 : config.mandatory }, render: function (_a) {
|
|
@@ -48328,29 +48345,21 @@ var Kr=[{
|
|
|
48328
48345
|
} });
|
|
48329
48346
|
case exports.UserQuestionType.File:
|
|
48330
48347
|
return jsxRuntime.exports.jsx(Controller, { name: question.id, control: control, defaultValue: [], rules: { required: config === null || config === void 0 ? void 0 : config.mandatory }, render: function (_a) {
|
|
48331
|
-
var _b, _c;
|
|
48332
|
-
var
|
|
48333
|
-
return jsxRuntime.exports.jsx(FileInputField, { onChange: function (
|
|
48334
|
-
|
|
48335
|
-
},
|
|
48348
|
+
var _b, _c, _d;
|
|
48349
|
+
var _e = _a.field,onControllerChange = _e.onChange,onBlur = _e.onBlur,value = _e.value;
|
|
48350
|
+
return jsxRuntime.exports.jsx(FileInputField, { id: question.id, value: custom_json_parser(value), onChange: function (attachments) {
|
|
48351
|
+
onControllerChange(JSON.stringify(attachments));
|
|
48352
|
+
}, onBlur: onBlur, accept: (_c = (_b = config === null || config === void 0 ? void 0 : config.file_storage) === null || _b === void 0 ? void 0 : _b.accepted_file_types) !== null && _c !== void 0 ? _c : [
|
|
48336
48353
|
'application/pdf'],
|
|
48337
|
-
|
|
48338
|
-
setFileUploadErrors(function (prev) {return __spreadArray(__spreadArray([], prev, true), [
|
|
48339
|
-
{ id: error, error: error }],
|
|
48340
|
-
false);});
|
|
48341
|
-
} });
|
|
48354
|
+
configId: (_d = config === null || config === void 0 ? void 0 : config.file_storage) === null || _d === void 0 ? void 0 : _d.file_storage_destination_id, onFileUpload: onFileUpload });
|
|
48342
48355
|
} });
|
|
48343
48356
|
case exports.UserQuestionType.Image:
|
|
48344
48357
|
return jsxRuntime.exports.jsx(Controller, { name: question.id, control: control, defaultValue: [], rules: { required: config === null || config === void 0 ? void 0 : config.mandatory }, render: function (_a) {
|
|
48345
|
-
var _b, _c;
|
|
48346
|
-
var
|
|
48347
|
-
return jsxRuntime.exports.jsx(FileInputField, { value: custom_json_parser(value), onChange: function (
|
|
48348
|
-
|
|
48349
|
-
}, onBlur: onBlur, accept: (_c = (_b = config === null || config === void 0 ? void 0 : config.file_storage) === null || _b === void 0 ? void 0 : _b.accepted_file_types) !== null && _c !== void 0 ? _c : ['image/*'],
|
|
48350
|
-
setFileUploadErrors(function (prev) {return __spreadArray(__spreadArray([], prev, true), [
|
|
48351
|
-
{ id: error, error: error }],
|
|
48352
|
-
false);});
|
|
48353
|
-
} });
|
|
48358
|
+
var _b, _c, _d;
|
|
48359
|
+
var _e = _a.field,onControllerChange = _e.onChange,onBlur = _e.onBlur,value = _e.value;
|
|
48360
|
+
return jsxRuntime.exports.jsx(FileInputField, { id: question.id, value: custom_json_parser(value), onChange: function (attachments) {
|
|
48361
|
+
onControllerChange(JSON.stringify(attachments));
|
|
48362
|
+
}, onBlur: onBlur, accept: (_c = (_b = config === null || config === void 0 ? void 0 : config.file_storage) === null || _b === void 0 ? void 0 : _b.accepted_file_types) !== null && _c !== void 0 ? _c : ['image/*'], configId: (_d = config === null || config === void 0 ? void 0 : config.file_storage) === null || _d === void 0 ? void 0 : _d.file_storage_destination_id, onFileUpload: onFileUpload });
|
|
48354
48363
|
} });
|
|
48355
48364
|
case exports.UserQuestionType.Description:
|
|
48356
48365
|
return jsxRuntime.exports.jsx(Description, { content: question.title });
|
|
@@ -1,25 +1,19 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { Attachment } from '../../molecules/question/types';
|
|
2
3
|
interface Props {
|
|
3
4
|
id?: string;
|
|
4
5
|
label?: string;
|
|
5
|
-
description?: string;
|
|
6
6
|
accept?: Array<string>;
|
|
7
|
-
maxSize?: number;
|
|
8
7
|
multiple?: boolean;
|
|
9
8
|
error?: string;
|
|
10
|
-
|
|
11
|
-
required?: boolean;
|
|
12
|
-
onChange: (files: Array<File>) => void;
|
|
9
|
+
onChange: (attachments: Array<Attachment>) => void;
|
|
13
10
|
onError?: (error: string) => void;
|
|
14
11
|
className?: string;
|
|
15
12
|
onBlur?: () => void;
|
|
16
13
|
dataCy?: string;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
id: string;
|
|
21
|
-
error: string;
|
|
22
|
-
}>;
|
|
14
|
+
onFileUpload?: (file: File, configId?: string) => Promise<string | undefined>;
|
|
15
|
+
configId?: string;
|
|
16
|
+
value?: Array<Attachment>;
|
|
23
17
|
}
|
|
24
18
|
export declare const FileInputField: React.FC<Props>;
|
|
25
19
|
export {};
|