@paro.io/expert-shared-components 1.8.7 → 1.8.9
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/lib/components/ClientReferencesSection/DeleteButton.js +11 -11
- package/lib/components/ClientReferencesSection/ParoError.js +10 -10
- package/lib/components/ClientReferencesSection/TagsSection.js +2 -2
- package/lib/components/ClientReferencesSection/styles/BrandedTypography.js +2 -2
- package/lib/components/ClientReferencesSection/styles/Buttons.js +15 -15
- package/lib/components/ClientReferencesSection/styles/Name.js +5 -5
- package/lib/components/ClientReferencesSection/styles/NullContentConditionalColor.js +4 -4
- package/lib/components/ClientReferencesSection/styles/SectionBody.js +11 -11
- package/lib/components/ClientReferencesSection/styles/SectionTitle.js +6 -6
- package/lib/components/ClientReferencesSection/styles/Tags.js +2 -2
- package/lib/components/DocumentCenter/DocumentTable.d.ts +15 -15
- package/lib/components/DocumentCenter/DocumentTable.js +350 -350
- package/lib/components/DocumentCenter/UploadFilesButton.d.ts +6 -6
- package/lib/components/DocumentCenter/UploadFilesButton.js +29 -29
- package/lib/components/ExpertProfileHeader/ActionButtonSection.js +6 -6
- package/lib/components/ExpertProfileHeader/ExpertProfileHeader.js +1 -1
- package/lib/components/ExpertProfileHeader/ProfileSection.d.ts +1 -3
- package/lib/components/ExpertProfileHeader/ProfileSection.js +22 -32
- package/lib/components/OrganizationChart/OrganizationChart.js +7 -7
- package/lib/components/Reviews/Pagination.js +6 -6
- package/lib/components/ReviewsTab/RatingHeader.js +6 -6
- package/lib/components/ReviewsTab/expert-shared-components.code-workspace +20 -20
- package/lib/components/ReviewsTab/reviewRequestModal.js +5 -5
- package/lib/components/ServiceLinesTemplate/index.js +66 -20
- package/lib/components/shared/Error.d.ts +6 -6
- package/lib/components/shared/Error.js +40 -40
- package/lib/components/shared/Image.js +13 -13
- package/lib/components/shared/ProfileTextField.d.ts +18 -18
- package/lib/components/shared/ProfileTextField.js +16 -16
- package/lib/components/shared/StyledActionButtons.d.ts +7 -7
- package/lib/components/shared/StyledActionButtons.js +15 -15
- package/lib/components/shared/ToastNotification.d.ts +10 -10
- package/lib/components/shared/ToastNotification.js +63 -63
- package/lib/components/shared/utils.js +12 -5
- package/package.json +59 -59
|
@@ -31,20 +31,20 @@ const react_1 = __importStar(require("react"));
|
|
|
31
31
|
const core_1 = require("@material-ui/core");
|
|
32
32
|
const styled_components_1 = __importDefault(require("styled-components"));
|
|
33
33
|
const cdn_1 = require("./constants/cdn");
|
|
34
|
-
const ProfilePhotoPreview = styled_components_1.default.img `
|
|
35
|
-
height: 86px;
|
|
36
|
-
width: 86px;
|
|
37
|
-
border: 4px solid #F8FAFC;
|
|
38
|
-
border-radius: 10px;
|
|
39
|
-
object-fit: cover;
|
|
40
|
-
object-position: top;
|
|
34
|
+
const ProfilePhotoPreview = styled_components_1.default.img `
|
|
35
|
+
height: 86px;
|
|
36
|
+
width: 86px;
|
|
37
|
+
border: 4px solid #F8FAFC;
|
|
38
|
+
border-radius: 10px;
|
|
39
|
+
object-fit: cover;
|
|
40
|
+
object-position: top;
|
|
41
41
|
`;
|
|
42
|
-
const PhotoChangeButton = (0, styled_components_1.default)(core_1.Typography) `
|
|
43
|
-
text-decoration: underline;
|
|
44
|
-
cursor: pointer;
|
|
45
|
-
:active {
|
|
46
|
-
text-decoration: none !important;
|
|
47
|
-
}
|
|
42
|
+
const PhotoChangeButton = (0, styled_components_1.default)(core_1.Typography) `
|
|
43
|
+
text-decoration: underline;
|
|
44
|
+
cursor: pointer;
|
|
45
|
+
:active {
|
|
46
|
+
text-decoration: none !important;
|
|
47
|
+
}
|
|
48
48
|
`;
|
|
49
49
|
exports.defaultAvatar = cdn_1.CDN_URL + 'defaultAvatar.png';
|
|
50
50
|
const Image = ({ imageUrl, getUserDocument, uploadUserPhotoMutation, loadingNewImage, imageUpdateError, legacyFreelancerId, }) => {
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { FieldError } from 'react-hook-form/dist/types/form';
|
|
2
|
-
type SectionContents = {
|
|
3
|
-
defaultValue?: string | number;
|
|
4
|
-
error?: boolean;
|
|
5
|
-
helperText: string | undefined | (FieldError | undefined)[];
|
|
6
|
-
inputRef?: ((instance: any) => void) | null | undefined;
|
|
7
|
-
label?: string;
|
|
8
|
-
multiline?: boolean;
|
|
9
|
-
name?: string;
|
|
10
|
-
placeholder?: string;
|
|
11
|
-
props?: unknown;
|
|
12
|
-
size?: 'small' | 'medium' | undefined;
|
|
13
|
-
onChange?: ((value: any) => void) | undefined;
|
|
14
|
-
width?: boolean;
|
|
15
|
-
InputProps?: any;
|
|
16
|
-
};
|
|
17
|
-
declare const ProfileTextField: ({ defaultValue, error, helperText, inputRef, label, multiline, name, placeholder, props, size, width, onChange, InputProps }: SectionContents) => JSX.Element;
|
|
18
|
-
export default ProfileTextField;
|
|
1
|
+
import { FieldError } from 'react-hook-form/dist/types/form';
|
|
2
|
+
type SectionContents = {
|
|
3
|
+
defaultValue?: string | number;
|
|
4
|
+
error?: boolean;
|
|
5
|
+
helperText: string | undefined | (FieldError | undefined)[];
|
|
6
|
+
inputRef?: ((instance: any) => void) | null | undefined;
|
|
7
|
+
label?: string;
|
|
8
|
+
multiline?: boolean;
|
|
9
|
+
name?: string;
|
|
10
|
+
placeholder?: string;
|
|
11
|
+
props?: unknown;
|
|
12
|
+
size?: 'small' | 'medium' | undefined;
|
|
13
|
+
onChange?: ((value: any) => void) | undefined;
|
|
14
|
+
width?: boolean;
|
|
15
|
+
InputProps?: any;
|
|
16
|
+
};
|
|
17
|
+
declare const ProfileTextField: ({ defaultValue, error, helperText, inputRef, label, multiline, name, placeholder, props, size, width, onChange, InputProps }: SectionContents) => JSX.Element;
|
|
18
|
+
export default ProfileTextField;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const react_1 = __importDefault(require("react"));
|
|
7
|
-
const TextField_1 = __importDefault(require("@material-ui/core/TextField"));
|
|
8
|
-
const ProfileTextField = ({ defaultValue, error, helperText, inputRef, label, multiline = false, name, placeholder, props, size, width = false, onChange, InputProps }) => {
|
|
9
|
-
return (onChange ? react_1.default.createElement(TextField_1.default, Object.assign({ InputProps: InputProps, "x-id": 'TextField' }, props, { defaultValue: defaultValue, error: error, fullWidth: true, helperText: helperText, InputLabelProps: {
|
|
10
|
-
shrink: true
|
|
11
|
-
}, inputRef: inputRef, label: label, margin: 'normal', multiline: multiline, name: name, placeholder: placeholder, size: size, style: Object.assign({ marginTop: '8px' }, (width && { width: '100%' })), variant: 'outlined', onChange: onChange, classes: { root: 'inputCurrency' } })) :
|
|
12
|
-
react_1.default.createElement(TextField_1.default, Object.assign({ InputProps: InputProps, "x-id": 'TextField' }, props, { defaultValue: defaultValue, error: error, fullWidth: true, helperText: helperText, InputLabelProps: {
|
|
13
|
-
shrink: true
|
|
14
|
-
}, inputRef: inputRef, label: label, margin: 'normal', multiline: multiline, name: name, placeholder: placeholder, size: size, style: Object.assign({ marginTop: '8px' }, (width && { width: '100%' })), variant: 'outlined' })));
|
|
15
|
-
};
|
|
16
|
-
exports.default = ProfileTextField;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const TextField_1 = __importDefault(require("@material-ui/core/TextField"));
|
|
8
|
+
const ProfileTextField = ({ defaultValue, error, helperText, inputRef, label, multiline = false, name, placeholder, props, size, width = false, onChange, InputProps }) => {
|
|
9
|
+
return (onChange ? react_1.default.createElement(TextField_1.default, Object.assign({ InputProps: InputProps, "x-id": 'TextField' }, props, { defaultValue: defaultValue, error: error, fullWidth: true, helperText: helperText, InputLabelProps: {
|
|
10
|
+
shrink: true
|
|
11
|
+
}, inputRef: inputRef, label: label, margin: 'normal', multiline: multiline, name: name, placeholder: placeholder, size: size, style: Object.assign({ marginTop: '8px' }, (width && { width: '100%' })), variant: 'outlined', onChange: onChange, classes: { root: 'inputCurrency' } })) :
|
|
12
|
+
react_1.default.createElement(TextField_1.default, Object.assign({ InputProps: InputProps, "x-id": 'TextField' }, props, { defaultValue: defaultValue, error: error, fullWidth: true, helperText: helperText, InputLabelProps: {
|
|
13
|
+
shrink: true
|
|
14
|
+
}, inputRef: inputRef, label: label, margin: 'normal', multiline: multiline, name: name, placeholder: placeholder, size: size, style: Object.assign({ marginTop: '8px' }, (width && { width: '100%' })), variant: 'outlined' })));
|
|
15
|
+
};
|
|
16
|
+
exports.default = ProfileTextField;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
declare const StyledActionButtons: ({ closeOnClick, isDisabled, isLoading, handleSubmit }: {
|
|
2
|
-
closeOnClick: () => void;
|
|
3
|
-
isDisabled: boolean;
|
|
4
|
-
isLoading: boolean;
|
|
5
|
-
handleSubmit?: () => void;
|
|
6
|
-
}) => JSX.Element;
|
|
7
|
-
export default StyledActionButtons;
|
|
1
|
+
declare const StyledActionButtons: ({ closeOnClick, isDisabled, isLoading, handleSubmit }: {
|
|
2
|
+
closeOnClick: () => void;
|
|
3
|
+
isDisabled: boolean;
|
|
4
|
+
isLoading: boolean;
|
|
5
|
+
handleSubmit?: () => void;
|
|
6
|
+
}) => JSX.Element;
|
|
7
|
+
export default StyledActionButtons;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const react_1 = __importDefault(require("react"));
|
|
7
|
-
const core_1 = require("@material-ui/core");
|
|
8
|
-
const Button_1 = __importDefault(require("@material-ui/core/Button"));
|
|
9
|
-
const Loader_1 = __importDefault(require("./Loader"));
|
|
10
|
-
const StyledActionButtons = ({ closeOnClick, isDisabled, isLoading, handleSubmit }) => {
|
|
11
|
-
return (react_1.default.createElement(core_1.DialogActions, null,
|
|
12
|
-
react_1.default.createElement(Button_1.default, { variant: 'outlined', onClick: closeOnClick, color: 'primary' }, "Close"),
|
|
13
|
-
react_1.default.createElement(Button_1.default, { color: 'default', disabled: isDisabled, key: String(isDisabled), onClick: handleSubmit, variant: 'contained' }, isLoading ? react_1.default.createElement(Loader_1.default, { key: String(isLoading) }) : 'Save')));
|
|
14
|
-
};
|
|
15
|
-
exports.default = StyledActionButtons;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const core_1 = require("@material-ui/core");
|
|
8
|
+
const Button_1 = __importDefault(require("@material-ui/core/Button"));
|
|
9
|
+
const Loader_1 = __importDefault(require("./Loader"));
|
|
10
|
+
const StyledActionButtons = ({ closeOnClick, isDisabled, isLoading, handleSubmit }) => {
|
|
11
|
+
return (react_1.default.createElement(core_1.DialogActions, null,
|
|
12
|
+
react_1.default.createElement(Button_1.default, { variant: 'outlined', onClick: closeOnClick, color: 'primary' }, "Close"),
|
|
13
|
+
react_1.default.createElement(Button_1.default, { color: 'default', disabled: isDisabled, key: String(isDisabled), onClick: handleSubmit, variant: 'contained' }, isLoading ? react_1.default.createElement(Loader_1.default, { key: String(isLoading) }) : 'Save')));
|
|
14
|
+
};
|
|
15
|
+
exports.default = StyledActionButtons;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
interface ToastModalProps {
|
|
3
|
-
color: 'success' | 'info' | 'warning' | 'danger';
|
|
4
|
-
icon: string;
|
|
5
|
-
message: string;
|
|
6
|
-
duration?: number;
|
|
7
|
-
position?: 'top-right' | 'bottom-right' | 'top-left' | 'bottom-left';
|
|
8
|
-
}
|
|
9
|
-
declare const ToastModal: React.FC<ToastModalProps>;
|
|
10
|
-
export default ToastModal;
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface ToastModalProps {
|
|
3
|
+
color: 'success' | 'info' | 'warning' | 'danger';
|
|
4
|
+
icon: string;
|
|
5
|
+
message: string;
|
|
6
|
+
duration?: number;
|
|
7
|
+
position?: 'top-right' | 'bottom-right' | 'top-left' | 'bottom-left';
|
|
8
|
+
}
|
|
9
|
+
declare const ToastModal: React.FC<ToastModalProps>;
|
|
10
|
+
export default ToastModal;
|
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
const react_1 = __importStar(require("react"));
|
|
27
|
-
const core_1 = require("@material-ui/core");
|
|
28
|
-
const base_ui_1 = require("@paro.io/base-ui");
|
|
29
|
-
const ToastModal = ({ color, icon, message, duration = 6000, // Default duration is 6 seconds
|
|
30
|
-
position = 'bottom-right', }) => {
|
|
31
|
-
const [open, setOpen] = (0, react_1.useState)(false);
|
|
32
|
-
// Automatically open the modal on mount
|
|
33
|
-
(0, react_1.useEffect)(() => {
|
|
34
|
-
setOpen(true);
|
|
35
|
-
// Automatically close the modal after the specified duration
|
|
36
|
-
const timer = setTimeout(() => {
|
|
37
|
-
setOpen(false);
|
|
38
|
-
}, duration);
|
|
39
|
-
// Cleanup the timeout if the component unmounts or if the duration changes
|
|
40
|
-
return () => clearTimeout(timer);
|
|
41
|
-
}, [duration]);
|
|
42
|
-
console.log("triggered");
|
|
43
|
-
return (react_1.default.createElement(core_1.Dialog, { open: open, onClose: () => setOpen(false), "aria-labelledby": "toast-modal-title", maxWidth: "xs", fullWidth: true, PaperProps: {
|
|
44
|
-
style: {
|
|
45
|
-
backgroundColor: '#323232', // Dark background to resemble toast style
|
|
46
|
-
color: '#fff', // White text
|
|
47
|
-
borderRadius: '8px',
|
|
48
|
-
display: 'flex',
|
|
49
|
-
justifyContent: 'center',
|
|
50
|
-
alignItems: 'center',
|
|
51
|
-
zIndex: 9999, // Ensure it’s on top of the MUI Dialog
|
|
52
|
-
position: 'absolute', // Absolute positioning to control location
|
|
53
|
-
top: position.includes('top') ? '10%' : 'auto',
|
|
54
|
-
bottom: position.includes('bottom') ? '10%' : 'auto',
|
|
55
|
-
right: position.includes('right') ? '10%' : 'auto',
|
|
56
|
-
left: position.includes('left') ? '10%' : 'auto',
|
|
57
|
-
},
|
|
58
|
-
} },
|
|
59
|
-
react_1.default.createElement(core_1.DialogContent, { style: { textAlign: 'center' } },
|
|
60
|
-
react_1.default.createElement(base_ui_1.Alert, { color: color, icon: icon, label: message, className: color === 'warning' ? 'bg-warning' : 'bg-success' }),
|
|
61
|
-
",")));
|
|
62
|
-
};
|
|
63
|
-
exports.default = ToastModal;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const react_1 = __importStar(require("react"));
|
|
27
|
+
const core_1 = require("@material-ui/core");
|
|
28
|
+
const base_ui_1 = require("@paro.io/base-ui");
|
|
29
|
+
const ToastModal = ({ color, icon, message, duration = 6000, // Default duration is 6 seconds
|
|
30
|
+
position = 'bottom-right', }) => {
|
|
31
|
+
const [open, setOpen] = (0, react_1.useState)(false);
|
|
32
|
+
// Automatically open the modal on mount
|
|
33
|
+
(0, react_1.useEffect)(() => {
|
|
34
|
+
setOpen(true);
|
|
35
|
+
// Automatically close the modal after the specified duration
|
|
36
|
+
const timer = setTimeout(() => {
|
|
37
|
+
setOpen(false);
|
|
38
|
+
}, duration);
|
|
39
|
+
// Cleanup the timeout if the component unmounts or if the duration changes
|
|
40
|
+
return () => clearTimeout(timer);
|
|
41
|
+
}, [duration]);
|
|
42
|
+
console.log("triggered");
|
|
43
|
+
return (react_1.default.createElement(core_1.Dialog, { open: open, onClose: () => setOpen(false), "aria-labelledby": "toast-modal-title", maxWidth: "xs", fullWidth: true, PaperProps: {
|
|
44
|
+
style: {
|
|
45
|
+
backgroundColor: '#323232', // Dark background to resemble toast style
|
|
46
|
+
color: '#fff', // White text
|
|
47
|
+
borderRadius: '8px',
|
|
48
|
+
display: 'flex',
|
|
49
|
+
justifyContent: 'center',
|
|
50
|
+
alignItems: 'center',
|
|
51
|
+
zIndex: 9999, // Ensure it’s on top of the MUI Dialog
|
|
52
|
+
position: 'absolute', // Absolute positioning to control location
|
|
53
|
+
top: position.includes('top') ? '10%' : 'auto',
|
|
54
|
+
bottom: position.includes('bottom') ? '10%' : 'auto',
|
|
55
|
+
right: position.includes('right') ? '10%' : 'auto',
|
|
56
|
+
left: position.includes('left') ? '10%' : 'auto',
|
|
57
|
+
},
|
|
58
|
+
} },
|
|
59
|
+
react_1.default.createElement(core_1.DialogContent, { style: { textAlign: 'center' } },
|
|
60
|
+
react_1.default.createElement(base_ui_1.Alert, { color: color, icon: icon, label: message, className: color === 'warning' ? 'bg-warning' : 'bg-success' }),
|
|
61
|
+
",")));
|
|
62
|
+
};
|
|
63
|
+
exports.default = ToastModal;
|
|
@@ -299,6 +299,7 @@ exports.serviceDescriptions = {
|
|
|
299
299
|
"CPA/Accounting Advisory": "Provide expert accounting advice and support to help businesses make informed financial decisions. This service includes guiding clients on best practices for financial reporting, compliance, budgeting, and overall financial health."
|
|
300
300
|
};
|
|
301
301
|
const selectedServicesReducer = (selectedServices, action) => {
|
|
302
|
+
var _a;
|
|
302
303
|
switch (action.type) {
|
|
303
304
|
case "populate":
|
|
304
305
|
const selectedServicesUpdated = [];
|
|
@@ -311,6 +312,7 @@ const selectedServicesReducer = (selectedServices, action) => {
|
|
|
311
312
|
service: serviceTitle,
|
|
312
313
|
rate: currentRate,
|
|
313
314
|
currentService: true,
|
|
315
|
+
selected: true,
|
|
314
316
|
});
|
|
315
317
|
}
|
|
316
318
|
if (expertRates.length > 0) {
|
|
@@ -321,11 +323,12 @@ const selectedServicesReducer = (selectedServices, action) => {
|
|
|
321
323
|
if (existingIndex === -1) {
|
|
322
324
|
selectedServicesUpdated.push({
|
|
323
325
|
service: serviceTitle,
|
|
324
|
-
rate: rate.rate
|
|
326
|
+
rate: rate.rate,
|
|
327
|
+
selected: true
|
|
325
328
|
});
|
|
326
329
|
}
|
|
327
330
|
else {
|
|
328
|
-
selectedServicesUpdated[existingIndex] = Object.assign(Object.assign({}, selectedServicesUpdated[existingIndex]), { rate: rate.rate });
|
|
331
|
+
selectedServicesUpdated[existingIndex] = Object.assign(Object.assign({}, selectedServicesUpdated[existingIndex]), { rate: rate.rate, selected: true });
|
|
329
332
|
}
|
|
330
333
|
});
|
|
331
334
|
}
|
|
@@ -336,14 +339,18 @@ const selectedServicesReducer = (selectedServices, action) => {
|
|
|
336
339
|
return [...selectedServices];
|
|
337
340
|
}
|
|
338
341
|
const updatedServices = [...selectedServices];
|
|
339
|
-
updatedServices[serviceIndex] = Object.assign(Object.assign({}, updatedServices[serviceIndex]), { rate: action.newPrice });
|
|
342
|
+
updatedServices[serviceIndex] = Object.assign(Object.assign({}, updatedServices[serviceIndex]), { rate: action.newPrice, selected: action.selected });
|
|
340
343
|
return updatedServices;
|
|
341
344
|
case "update":
|
|
342
345
|
const existingServiceIndex = selectedServices.findIndex((svc) => svc.service === action.service);
|
|
343
346
|
if (existingServiceIndex !== -1) {
|
|
344
|
-
|
|
347
|
+
const updatedServices = [...selectedServices];
|
|
348
|
+
updatedServices[existingServiceIndex] = Object.assign(Object.assign({}, updatedServices[existingServiceIndex]), { selected: !action.selected });
|
|
349
|
+
return updatedServices;
|
|
345
350
|
}
|
|
346
|
-
return [...selectedServices, { service: action.service, rate: 0 }];
|
|
351
|
+
return [...selectedServices, { service: action.service, rate: (_a = action.rate) !== null && _a !== void 0 ? _a : 0, selected: action.selected }];
|
|
352
|
+
case 'remove':
|
|
353
|
+
return selectedServices.filter((svc) => svc.service !== action.service);
|
|
347
354
|
default:
|
|
348
355
|
return selectedServices;
|
|
349
356
|
}
|
package/package.json
CHANGED
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@paro.io/expert-shared-components",
|
|
3
|
-
"version": "1.8.
|
|
4
|
-
"description": "",
|
|
5
|
-
"main": "lib/index.js",
|
|
6
|
-
"scripts": {
|
|
7
|
-
"build": "tsc",
|
|
8
|
-
"prepare": "yarn build",
|
|
9
|
-
"test": "yarn test:build",
|
|
10
|
-
"test:build": "yarn build",
|
|
11
|
-
"clean": "yarn -rf lib",
|
|
12
|
-
"predeploy": "tsc && cp package.json README.md ./lib",
|
|
13
|
-
"link-local": "yarn link && cd node_modules/react && yarn link && cd ../react-dom && yarn link",
|
|
14
|
-
"unlink-local": "yarn unlink && cd node_modules/react && yarn unlink && cd ../react-dom && yarn unlink"
|
|
15
|
-
},
|
|
16
|
-
"repository": "https://github.com/paroadmin/expert-shared-components.git",
|
|
17
|
-
"keywords": ["react", "components", "shared"],
|
|
18
|
-
"author": "apande@paro.io",
|
|
19
|
-
"license": "MIT",
|
|
20
|
-
"dependencies": {
|
|
21
|
-
"@fortawesome/fontawesome-svg-core": "^6.6.0",
|
|
22
|
-
"@fortawesome/free-solid-svg-icons": "^6.6.0",
|
|
23
|
-
"@fortawesome/react-fontawesome": "^0.2.2",
|
|
24
|
-
"@hookform/resolvers": "3.3.4",
|
|
25
|
-
"@material-ui/core": "^4.11.0",
|
|
26
|
-
"@material-ui/icons": "^4.11.3",
|
|
27
|
-
"@material-ui/lab": "^4.0.0-alpha.61",
|
|
28
|
-
"@paro.io/base-icons": "^1.0.4",
|
|
29
|
-
"@paro.io/base-ui": "^1.8.3",
|
|
30
|
-
"@types/react-input-mask": "^3.0.5",
|
|
31
|
-
"dayjs": "^1.10.7",
|
|
32
|
-
"lodash": "^4.17.21",
|
|
33
|
-
"react": "^18.2.0",
|
|
34
|
-
"react-copy-to-clipboard": "^5.0.4",
|
|
35
|
-
"react-datepicker": "^4.6.0",
|
|
36
|
-
"react-dom": "^17.0.2",
|
|
37
|
-
"react-hook-form": "7.51.1",
|
|
38
|
-
"react-hot-toast": "^2.4.1",
|
|
39
|
-
"react-input-mask": "^3.0.0-alpha.2",
|
|
40
|
-
"styled-components": "^5.3.3",
|
|
41
|
-
"yup": "^0.32.11"
|
|
42
|
-
},
|
|
43
|
-
"devDependencies": {
|
|
44
|
-
"@types/lodash": "^4.14.170",
|
|
45
|
-
"@types/react": "^18.2.73",
|
|
46
|
-
"@types/react-copy-to-clipboard": "^5.0.2",
|
|
47
|
-
"@types/react-datepicker": "^4.19.6",
|
|
48
|
-
"@types/react-dom": "^18.2.22",
|
|
49
|
-
"@types/styled-components": "^5.1.22",
|
|
50
|
-
"@types/yup": "^0.29.13",
|
|
51
|
-
"typescript": "^5.3.3"
|
|
52
|
-
},
|
|
53
|
-
"files": [
|
|
54
|
-
"lib/**/*"
|
|
55
|
-
],
|
|
56
|
-
"directories": {
|
|
57
|
-
"lib": "lib"
|
|
58
|
-
}
|
|
59
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@paro.io/expert-shared-components",
|
|
3
|
+
"version": "1.8.9",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "lib/index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"build": "tsc",
|
|
8
|
+
"prepare": "yarn build",
|
|
9
|
+
"test": "yarn test:build",
|
|
10
|
+
"test:build": "yarn build",
|
|
11
|
+
"clean": "yarn -rf lib",
|
|
12
|
+
"predeploy": "tsc && cp package.json README.md ./lib",
|
|
13
|
+
"link-local": "yarn link && cd node_modules/react && yarn link && cd ../react-dom && yarn link",
|
|
14
|
+
"unlink-local": "yarn unlink && cd node_modules/react && yarn unlink && cd ../react-dom && yarn unlink"
|
|
15
|
+
},
|
|
16
|
+
"repository": "https://github.com/paroadmin/expert-shared-components.git",
|
|
17
|
+
"keywords": ["react", "components", "shared"],
|
|
18
|
+
"author": "apande@paro.io",
|
|
19
|
+
"license": "MIT",
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"@fortawesome/fontawesome-svg-core": "^6.6.0",
|
|
22
|
+
"@fortawesome/free-solid-svg-icons": "^6.6.0",
|
|
23
|
+
"@fortawesome/react-fontawesome": "^0.2.2",
|
|
24
|
+
"@hookform/resolvers": "3.3.4",
|
|
25
|
+
"@material-ui/core": "^4.11.0",
|
|
26
|
+
"@material-ui/icons": "^4.11.3",
|
|
27
|
+
"@material-ui/lab": "^4.0.0-alpha.61",
|
|
28
|
+
"@paro.io/base-icons": "^1.0.4",
|
|
29
|
+
"@paro.io/base-ui": "^1.8.3",
|
|
30
|
+
"@types/react-input-mask": "^3.0.5",
|
|
31
|
+
"dayjs": "^1.10.7",
|
|
32
|
+
"lodash": "^4.17.21",
|
|
33
|
+
"react": "^18.2.0",
|
|
34
|
+
"react-copy-to-clipboard": "^5.0.4",
|
|
35
|
+
"react-datepicker": "^4.6.0",
|
|
36
|
+
"react-dom": "^17.0.2",
|
|
37
|
+
"react-hook-form": "7.51.1",
|
|
38
|
+
"react-hot-toast": "^2.4.1",
|
|
39
|
+
"react-input-mask": "^3.0.0-alpha.2",
|
|
40
|
+
"styled-components": "^5.3.3",
|
|
41
|
+
"yup": "^0.32.11"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@types/lodash": "^4.14.170",
|
|
45
|
+
"@types/react": "^18.2.73",
|
|
46
|
+
"@types/react-copy-to-clipboard": "^5.0.2",
|
|
47
|
+
"@types/react-datepicker": "^4.19.6",
|
|
48
|
+
"@types/react-dom": "^18.2.22",
|
|
49
|
+
"@types/styled-components": "^5.1.22",
|
|
50
|
+
"@types/yup": "^0.29.13",
|
|
51
|
+
"typescript": "^5.3.3"
|
|
52
|
+
},
|
|
53
|
+
"files": [
|
|
54
|
+
"lib/**/*"
|
|
55
|
+
],
|
|
56
|
+
"directories": {
|
|
57
|
+
"lib": "lib"
|
|
58
|
+
}
|
|
59
|
+
}
|