@paro.io/expert-shared-components 1.8.0 → 1.8.2
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.
|
@@ -123,7 +123,7 @@ const NetworkSection = ({ handleScrollToBottom, preferenceTasks, isWhiteLabel, d
|
|
|
123
123
|
react_1.default.createElement(core_1.Divider, null)),
|
|
124
124
|
vanityTitle && react_1.default.createElement(react_1.default.Fragment, null,
|
|
125
125
|
react_1.default.createElement(core_1.Box, { ml: 1, display: "flex", justifyContent: "space-between", alignItems: "center", "data-testid": "Matching-Id", style: { marginRight: '10px' } },
|
|
126
|
-
react_1.default.createElement(core_1.Typography, { variant: "body2" }, "Expertise as a "),
|
|
126
|
+
react_1.default.createElement(core_1.Typography, { variant: "body2", style: { marginRight: '20px' } }, "Expertise as a "),
|
|
127
127
|
react_1.default.createElement("b", null, vanityTitle),
|
|
128
128
|
!isInternal && react_1.default.createElement(core_1.IconButton, { onClick: () => { setOpenModal(true); } },
|
|
129
129
|
react_1.default.createElement(icons_1.Cached, null))),
|
|
@@ -4,7 +4,6 @@ type ServiceLinesTemplateProps = {
|
|
|
4
4
|
createOrUpdateRates?: any;
|
|
5
5
|
updateExpert?: any;
|
|
6
6
|
openServiceLinesTemplate?: boolean;
|
|
7
|
-
setOpenServiceLinesTemplate?: any;
|
|
8
7
|
getRatesByExpertId?: any;
|
|
9
8
|
setView?: any;
|
|
10
9
|
getServiceLines?: any;
|
|
@@ -17,6 +16,7 @@ type ServiceLinesTemplateProps = {
|
|
|
17
16
|
isInternalProfile?: boolean;
|
|
18
17
|
updateFreelancerPreferences?: any;
|
|
19
18
|
getExpertVanityTitles?: any;
|
|
19
|
+
reactAppUrl: string;
|
|
20
20
|
};
|
|
21
|
-
export declare const ServiceLinesTemplate: ({ getFreelancerDataResult, createOrUpdateRates, getRatesByExpertId, updateExpert, openServiceLinesTemplate,
|
|
21
|
+
export declare const ServiceLinesTemplate: ({ getFreelancerDataResult, createOrUpdateRates, getRatesByExpertId, updateExpert, openServiceLinesTemplate, getServiceLines, legacyFreelancerId, expertId, isFirmProfile, serviceLineData, selectedServicesList, isInternalProfile, updateFreelancerPreferences, getExpertVanityTitles, reactAppUrl, }: ServiceLinesTemplateProps) => false | React.JSX.Element | undefined;
|
|
22
22
|
export {};
|
|
@@ -39,22 +39,31 @@ const icons_1 = require("@material-ui/icons");
|
|
|
39
39
|
const ReviewsTab_1 = require("../ReviewsTab/ReviewsTab");
|
|
40
40
|
const base_ui_1 = require("@paro.io/base-ui");
|
|
41
41
|
const utils_1 = require("../shared/utils");
|
|
42
|
-
const lab_1 = require("@material-ui/lab");
|
|
43
42
|
const react_hot_toast_1 = require("react-hot-toast");
|
|
44
|
-
const ServiceLinesTemplate = ({ getFreelancerDataResult, createOrUpdateRates, getRatesByExpertId, updateExpert, openServiceLinesTemplate,
|
|
43
|
+
const ServiceLinesTemplate = ({ getFreelancerDataResult, createOrUpdateRates, getRatesByExpertId, updateExpert, openServiceLinesTemplate, getServiceLines, legacyFreelancerId, expertId, isFirmProfile, serviceLineData, selectedServicesList = [], isInternalProfile = false, updateFreelancerPreferences, getExpertVanityTitles, reactAppUrl, }) => {
|
|
45
44
|
const [selectedServices, dispatch] = (0, react_1.useReducer)(utils_1.selectedServicesReducer, selectedServicesList);
|
|
46
45
|
const [updateClicked, setUpdateClicked] = (0, react_1.useState)(false);
|
|
47
|
-
const [loading, setLoading] = (0, react_1.useState)(
|
|
46
|
+
const [loading, setLoading] = (0, react_1.useState)(true);
|
|
48
47
|
const [serviceLines, setServiceLines] = (0, react_1.useState)(serviceLineData);
|
|
49
48
|
const [currentServiveRate, setCurrentServiceRate] = (0, react_1.useState)(null);
|
|
50
49
|
const [value, setValue] = (0, react_1.useState)(0);
|
|
51
50
|
const [titleOptions, setTitleOptions] = (0, react_1.useState)([]);
|
|
52
51
|
const [selectedTitle, setSelectedTitle] = (0, react_1.useState)(null);
|
|
53
52
|
const [customTitle, setCustomTitle] = (0, react_1.useState)(null);
|
|
53
|
+
const [expandedServices, setExpandedServices] = (0, react_1.useState)(new Map());
|
|
54
|
+
const [currentFeatureStatus, setCurrentFeatureStatus] = (0, react_1.useState)({});
|
|
55
|
+
const [disablePublicProfile, setDisablePublicProfile] = (0, react_1.useState)(true);
|
|
56
|
+
const handleExpandToggle = (serviceTitle) => {
|
|
57
|
+
setExpandedServices(prev => {
|
|
58
|
+
const updatedState = new Map(prev);
|
|
59
|
+
const currentExpandedState = updatedState.get(serviceTitle) || false;
|
|
60
|
+
updatedState.set(serviceTitle, !currentExpandedState);
|
|
61
|
+
return updatedState;
|
|
62
|
+
});
|
|
63
|
+
};
|
|
54
64
|
const fetchServiceLineData = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
55
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
65
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
56
66
|
try {
|
|
57
|
-
setLoading(true);
|
|
58
67
|
if (!isInternalProfile) {
|
|
59
68
|
const [expertVanityTitles] = yield Promise.all([
|
|
60
69
|
getExpertVanityTitles({ fetchPolicy: 'network-only' }),
|
|
@@ -73,7 +82,9 @@ const ServiceLinesTemplate = ({ getFreelancerDataResult, createOrUpdateRates, ge
|
|
|
73
82
|
const expertRates = (_j = ratesResponse === null || ratesResponse === void 0 ? void 0 : ratesResponse.data) === null || _j === void 0 ? void 0 : _j.getRatesByExpertId;
|
|
74
83
|
setCurrentServiceRate(currentRate);
|
|
75
84
|
const isTitleExists = (_l = (_k = freelancerResponse === null || freelancerResponse === void 0 ? void 0 : freelancerResponse.data) === null || _k === void 0 ? void 0 : _k.getExpertByLegacyFreelancerId) === null || _l === void 0 ? void 0 : _l.vanityTitle;
|
|
76
|
-
|
|
85
|
+
const featureStatus = (_o = (_m = freelancerResponse === null || freelancerResponse === void 0 ? void 0 : freelancerResponse.data) === null || _m === void 0 ? void 0 : _m.getExpertByLegacyFreelancerId) === null || _o === void 0 ? void 0 : _o.featureStatus;
|
|
86
|
+
setCurrentFeatureStatus(featureStatus);
|
|
87
|
+
isTitleExists && setSelectedTitle(isTitleExists);
|
|
77
88
|
dispatch({
|
|
78
89
|
currentService,
|
|
79
90
|
currentRate,
|
|
@@ -143,6 +154,7 @@ const ServiceLinesTemplate = ({ getFreelancerDataResult, createOrUpdateRates, ge
|
|
|
143
154
|
});
|
|
144
155
|
}).finally(() => {
|
|
145
156
|
setUpdateClicked(false);
|
|
157
|
+
setDisablePublicProfile(false);
|
|
146
158
|
});
|
|
147
159
|
});
|
|
148
160
|
const handleUpdateProfile = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -172,16 +184,18 @@ const ServiceLinesTemplate = ({ getFreelancerDataResult, createOrUpdateRates, ge
|
|
|
172
184
|
console.log('DB Updation failed: ', error.message);
|
|
173
185
|
}
|
|
174
186
|
finally {
|
|
175
|
-
|
|
187
|
+
setUpdateClicked(false);
|
|
188
|
+
setValue(1);
|
|
176
189
|
}
|
|
177
190
|
;
|
|
178
191
|
});
|
|
179
192
|
const updateFeatureStatus = () => {
|
|
193
|
+
const updateFeatureStatus = Object.assign(Object.assign({}, currentFeatureStatus), { serviceLines: true });
|
|
180
194
|
updateExpert({
|
|
181
195
|
variables: {
|
|
182
196
|
expertId: expertId,
|
|
183
197
|
input: {
|
|
184
|
-
featureStatus:
|
|
198
|
+
featureStatus: updateFeatureStatus
|
|
185
199
|
}
|
|
186
200
|
},
|
|
187
201
|
}).then(() => {
|
|
@@ -198,14 +212,11 @@ const ServiceLinesTemplate = ({ getFreelancerDataResult, createOrUpdateRates, ge
|
|
|
198
212
|
message: 'Update failed!',
|
|
199
213
|
icon: 'warning'
|
|
200
214
|
});
|
|
201
|
-
console.log('DB Updation failed : ', error.message);
|
|
202
215
|
}).finally(() => {
|
|
203
|
-
|
|
216
|
+
setUpdateClicked(false);
|
|
217
|
+
setValue(1);
|
|
204
218
|
});
|
|
205
219
|
};
|
|
206
|
-
const handleNotInterestedClick = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
207
|
-
yield updateFeatureStatus();
|
|
208
|
-
});
|
|
209
220
|
const isUpdateButtonDisabled = () => {
|
|
210
221
|
if ((selectedServices === null || selectedServices === void 0 ? void 0 : selectedServices.length) === 0)
|
|
211
222
|
return true;
|
|
@@ -229,110 +240,129 @@ const ServiceLinesTemplate = ({ getFreelancerDataResult, createOrUpdateRates, ge
|
|
|
229
240
|
type: 'update'
|
|
230
241
|
});
|
|
231
242
|
};
|
|
232
|
-
const handleChange = (event, newValue) => {
|
|
233
|
-
if (newValue >= 0) {
|
|
234
|
-
setValue(newValue);
|
|
235
|
-
}
|
|
236
|
-
};
|
|
237
243
|
const handleChangeTitle = (event) => {
|
|
238
244
|
setSelectedTitle(event.target.value);
|
|
239
245
|
};
|
|
240
|
-
const ActionButtons = () => {
|
|
241
|
-
return react_1.default.createElement(core_1.Grid, { container: true, direction: "row", justifyContent: "space-evenly", style: {
|
|
242
|
-
react_1.default.createElement(base_ui_1.Button, { label: "
|
|
243
|
-
react_1.default.createElement(base_ui_1.Button, { label: "
|
|
244
|
-
};
|
|
245
|
-
const ServiceLinesTab = () => {
|
|
246
|
-
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
247
|
-
react_1.default.createElement(core_1.Grid, { style: { backgroundColor: '#132f4a', padding: 12 }, className: "service-lines-header" },
|
|
248
|
-
react_1.default.createElement(core_1.Typography, { className: "headerTop", variant: "h5", style: { color: '#ffffff', fontWeight: 500, padding: 12, justifyContent: 'space-between', display: 'flex', alignItems: 'center' } },
|
|
249
|
-
"Expand Your Expertise: Add More Services to Your Profile",
|
|
250
|
-
react_1.default.createElement("img", { src: 'https://expert-files-dev.s3.us-east-1.amazonaws.com/ParoGroupLogo.png', alt: "Paro Group Logo", style: { width: 24, height: 24, marginLeft: 8 } })),
|
|
251
|
-
react_1.default.createElement(core_1.Typography, { className: "headerMiddle", style: { color: '#ffffff', fontWeight: 200, fontStyle: 'italic', paddingLeft: 12 } }, "Why Add More Services?"),
|
|
252
|
-
react_1.default.createElement(core_1.Grid, { container: true, spacing: 3, style: { padding: 12, color: '#ffffff' }, direction: "row", justifyContent: "flex-start", alignItems: "center" }, utils_1.features.map((feature, index) => (react_1.default.createElement(core_1.Box, { key: index, display: "flex", alignItems: "center", m: 2 },
|
|
253
|
-
react_1.default.createElement(icons_1.AdjustRounded, { style: {
|
|
254
|
-
marginRight: 8,
|
|
255
|
-
color: '#2A9D8F',
|
|
256
|
-
fontSize: 20
|
|
257
|
-
}, className: "headerCircle" }),
|
|
258
|
-
react_1.default.createElement(core_1.Typography, { className: "headerFeature", variant: "body2", style: { color: '#ffffff' } }, feature)))))),
|
|
259
|
-
react_1.default.createElement(core_1.Grid, { container: true, style: { padding: 4 } },
|
|
260
|
-
react_1.default.createElement(core_1.Typography, { variant: "h6", style: { marginLeft: 20, fontWeight: 500 } }, "Select from the following service lines:"),
|
|
261
|
-
react_1.default.createElement(core_1.Grid, { container: true, direction: "row", justifyContent: "space-evenly", alignItems: "center" }, services === null || services === void 0 ? void 0 :
|
|
262
|
-
services.map((service, index) => {
|
|
263
|
-
const serviceExistsInArray = selectedServices.find((svc) => svc.service === service.title);
|
|
264
|
-
return (react_1.default.createElement(core_1.Grid, { item: true, xs: 12, md: 5, key: index, style: { margin: 12 } },
|
|
265
|
-
react_1.default.createElement(core_1.Box, { sx: { display: "flex" } },
|
|
266
|
-
react_1.default.createElement(core_1.Box, { display: 'flex', alignItems: 'center' },
|
|
267
|
-
react_1.default.createElement(CustomCheckbox, { checked: serviceExistsInArray, disabled: serviceExistsInArray === null || serviceExistsInArray === void 0 ? void 0 : serviceExistsInArray.currentService, onChange: () => handleServiceToggle(service.title) })),
|
|
268
|
-
react_1.default.createElement(core_1.Box, { sx: { flex: 1 } },
|
|
269
|
-
react_1.default.createElement(core_1.Box, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center", mb: 2 } },
|
|
270
|
-
react_1.default.createElement(core_1.Box, null,
|
|
271
|
-
react_1.default.createElement(core_1.Typography, { component: "div", style: { fontWeight: 300, fontSize: 16 } },
|
|
272
|
-
service.title,
|
|
273
|
-
(serviceExistsInArray === null || serviceExistsInArray === void 0 ? void 0 : serviceExistsInArray.currentService) && (react_1.default.createElement(core_1.Typography, { variant: "caption", style: { fontWeight: 400, fontSize: 16 } }, "\u00A0(current service line)"))),
|
|
274
|
-
react_1.default.createElement(core_1.Typography, { variant: "body2", style: { fontWeight: 50, fontSize: 14 } }, service.description)),
|
|
275
|
-
react_1.default.createElement(core_1.Box, { display: 'flex', alignItems: 'center', ml: 4 },
|
|
276
|
-
react_1.default.createElement(core_1.TextField, { size: "small", variant: "outlined", value: (serviceExistsInArray === null || serviceExistsInArray === void 0 ? void 0 : serviceExistsInArray.rate) || '', onChange: (e) => handlePriceChange(service.title, e.target.value ? parseInt(e.target.value) : 0, serviceExistsInArray === null || serviceExistsInArray === void 0 ? void 0 : serviceExistsInArray.currentService), InputProps: {
|
|
277
|
-
startAdornment: react_1.default.createElement(core_1.Typography, null, "$\u00A0"),
|
|
278
|
-
endAdornment: react_1.default.createElement(core_1.Typography, null, "\u00A0/hr"),
|
|
279
|
-
}, style: { width: 100 }, required: serviceExistsInArray, error: serviceExistsInArray && !serviceExistsInArray.rate, label: "Rate", className: "serviceLineRateInput" })))))));
|
|
280
|
-
}),
|
|
281
|
-
react_1.default.createElement(core_1.Grid, { item: true, xs: 12, md: 5, style: { margin: 5 } }, ActionButtons())))));
|
|
246
|
+
const ActionButtons = (disabled) => {
|
|
247
|
+
return react_1.default.createElement(core_1.Grid, { container: true, direction: "row", justifyContent: "space-evenly", style: { margin: 'auto' }, spacing: 2 },
|
|
248
|
+
react_1.default.createElement(base_ui_1.Button, { label: "PREVIEW PUBLIC PROFILE", onClick: () => window.open(`${reactAppUrl}/public/${legacyFreelancerId}`, '_blank'), type: "button", disabled: disabled, isLoading: updateClicked }),
|
|
249
|
+
react_1.default.createElement(base_ui_1.Button, { label: "UPDATE PROFILE", onClick: handleUpdateExpertTitle, type: "button", isLoading: updateClicked, disabled: isUpdateButtonDisabled(), color: "primary" }));
|
|
282
250
|
};
|
|
283
|
-
const
|
|
251
|
+
const newServiceLine = () => {
|
|
284
252
|
var _a;
|
|
285
|
-
return react_1.default.createElement(core_1.Grid, { container: true, item: true, direction: "
|
|
286
|
-
|
|
287
|
-
react_1.default.createElement(core_1.
|
|
288
|
-
"
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
react_1.default.createElement(core_1.
|
|
300
|
-
react_1.default.createElement(
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
253
|
+
return (react_1.default.createElement(core_1.Grid, { container: true, item: true, direction: "column", justifyContent: "center" },
|
|
254
|
+
(value === 0 || isInternalProfile) ?
|
|
255
|
+
react_1.default.createElement(core_1.Grid, { container: true, className: "service-lines-header", direction: "column", justifyContent: "center" },
|
|
256
|
+
react_1.default.createElement(core_1.Grid, { item: true, container: true, direction: "row", justifyContent: "space-between", alignItems: "flex-start" },
|
|
257
|
+
react_1.default.createElement(core_1.Grid, { item: true, direction: "column", justifyContent: "flex-start" },
|
|
258
|
+
react_1.default.createElement(core_1.Typography, { variant: "h6", style: { color: '#12756F', fontSize: '24px', fontWeight: 600 } }, "Expand Your Expertise"),
|
|
259
|
+
react_1.default.createElement(core_1.Typography, { variant: "body2", style: { color: '#1C1F2B', fontSize: '16px', fontWeight: 600 } }, "Step 1: Add more services to your profile to stand out")),
|
|
260
|
+
react_1.default.createElement(core_1.Grid, { item: true, style: { backgroundColor: '#0E3435', color: '#ffffff', borderRadius: '20px', padding: '6px 20px' } },
|
|
261
|
+
"Step ",
|
|
262
|
+
value + 1,
|
|
263
|
+
" of 2")),
|
|
264
|
+
react_1.default.createElement(core_1.Grid, { container: true, item: true, direction: "column", justifyContent: "center", alignItems: "center" },
|
|
265
|
+
react_1.default.createElement(core_1.Typography, { variant: "subtitle1", style: { textDecoration: 'underline', fontStyle: 'italic', fontSize: '18px', fontWeight: 400, marginTop: '8px', marginBottom: '8px' } }, "Why Add More Services?")),
|
|
266
|
+
react_1.default.createElement(core_1.Grid, { item: true, container: true, direction: "row", justifyContent: "space-between", alignItems: "center", xs: 10, style: { margin: 'auto' } },
|
|
267
|
+
react_1.default.createElement(core_1.Box, { display: "flex", flexDirection: "row", alignItems: "center", width: '50%' },
|
|
268
|
+
react_1.default.createElement(icons_1.AdjustRounded, { style: {
|
|
269
|
+
marginRight: 8,
|
|
270
|
+
color: '#248384',
|
|
271
|
+
fontSize: '20px'
|
|
272
|
+
}, className: "headerCircle" }),
|
|
273
|
+
react_1.default.createElement(core_1.Typography, { className: "headerFeature", variant: "body2", style: { fontSize: '16px', fontWeight: 400 } }, "Increase your visibility to clients searching for diverse expertise")),
|
|
274
|
+
react_1.default.createElement(core_1.Box, { display: "flex", flexDirection: "row", alignItems: "center", width: '50%' },
|
|
275
|
+
react_1.default.createElement(icons_1.AdjustRounded, { style: {
|
|
276
|
+
marginRight: 8,
|
|
277
|
+
color: '#248384',
|
|
278
|
+
fontSize: '20px'
|
|
279
|
+
}, className: "headerCircle" }),
|
|
280
|
+
react_1.default.createElement(core_1.Typography, { className: "headerFeature", variant: "body2", style: { fontSize: '16px', fontWeight: 400 } }, "Position yourself as a versatile professional"))),
|
|
281
|
+
react_1.default.createElement(core_1.Grid, { item: true, container: true, style: { marginTop: '16px' } },
|
|
282
|
+
react_1.default.createElement(core_1.Typography, { variant: "h6", style: { fontSize: '16px', fontWeight: 600 } }, "Add Service Lines to your profile:"),
|
|
283
|
+
react_1.default.createElement(core_1.Grid, { item: true, container: true, direction: "row", justifyContent: "space-evenly", alignItems: "center" }, services === null || services === void 0 ? void 0 : services.map((service, index) => {
|
|
284
|
+
const serviceExistsInArray = selectedServices.find((svc) => svc.service === service.title);
|
|
285
|
+
const isExpanded = expandedServices.get(service.title) || false;
|
|
286
|
+
return (react_1.default.createElement(core_1.Grid, { item: true, xs: 12, key: index, style: { margin: 4 } },
|
|
287
|
+
react_1.default.createElement(core_1.Box, { sx: { display: "flex" } },
|
|
288
|
+
react_1.default.createElement(core_1.Box, { display: 'flex', alignItems: 'center' },
|
|
289
|
+
react_1.default.createElement(CustomCheckbox, { checked: serviceExistsInArray, disabled: serviceExistsInArray === null || serviceExistsInArray === void 0 ? void 0 : serviceExistsInArray.currentService, onChange: () => handleServiceToggle(service.title) })),
|
|
290
|
+
react_1.default.createElement(core_1.Box, { sx: { flex: 1 } },
|
|
291
|
+
react_1.default.createElement(core_1.Box, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center" } },
|
|
292
|
+
react_1.default.createElement(core_1.Box, { display: 'flex', alignItems: 'center' },
|
|
293
|
+
react_1.default.createElement(core_1.Typography, { component: "div", style: { fontWeight: 600, fontSize: '16px', color: '#1C1F2B' } },
|
|
294
|
+
service.title,
|
|
295
|
+
(serviceExistsInArray === null || serviceExistsInArray === void 0 ? void 0 : serviceExistsInArray.currentService) && (react_1.default.createElement(core_1.Typography, { variant: "caption", style: { fontWeight: 400, fontSize: '16px', fontStyle: 'italic' } }, "\u00A0(current service line)")))),
|
|
296
|
+
react_1.default.createElement(core_1.Box, { display: 'flex', alignItems: 'center', ml: 4 },
|
|
297
|
+
react_1.default.createElement(core_1.TextField, { size: "small", variant: "outlined", value: (serviceExistsInArray === null || serviceExistsInArray === void 0 ? void 0 : serviceExistsInArray.rate) || '', onChange: (e) => handlePriceChange(service.title, e.target.value ? parseInt(e.target.value) : 0, serviceExistsInArray === null || serviceExistsInArray === void 0 ? void 0 : serviceExistsInArray.currentService), InputProps: {
|
|
298
|
+
startAdornment: react_1.default.createElement(core_1.Typography, null, "$\u00A0"),
|
|
299
|
+
endAdornment: react_1.default.createElement(core_1.Typography, null, "\u00A0/hr"),
|
|
300
|
+
}, style: { width: 100 }, required: serviceExistsInArray, error: serviceExistsInArray && !serviceExistsInArray.rate, label: "Rate", className: "serviceLineRateInput" }),
|
|
301
|
+
react_1.default.createElement(core_1.IconButton, { onClick: () => handleExpandToggle(service.title) }, isExpanded ? react_1.default.createElement(icons_1.ExpandLess, null) : react_1.default.createElement(icons_1.ExpandMore, null)))))),
|
|
302
|
+
isExpanded && react_1.default.createElement(core_1.Box, { ml: 2 },
|
|
303
|
+
react_1.default.createElement(core_1.Typography, { variant: "caption", style: { fontWeight: 400, fontSize: '16px' } }, service.description))));
|
|
304
|
+
}))))
|
|
305
|
+
:
|
|
306
|
+
react_1.default.createElement(core_1.Grid, { container: true, className: "service-lines-header", direction: "column", justifyContent: "center" },
|
|
307
|
+
react_1.default.createElement(core_1.Grid, { item: true, container: true, direction: "row", justifyContent: "space-between", alignItems: "flex-start" },
|
|
308
|
+
react_1.default.createElement(core_1.Grid, { item: true, direction: "column", justifyContent: "flex-start" },
|
|
309
|
+
react_1.default.createElement(core_1.Typography, { variant: "h6", style: { color: '#12756F', fontSize: '24px', fontWeight: 600 } }, "Give your Expertise a Title"),
|
|
310
|
+
react_1.default.createElement(core_1.Typography, { variant: "body2", style: { color: '#1C1F2B', fontSize: '16px', fontWeight: 600 } }, "Step 2: Showcase your profile with a title")),
|
|
311
|
+
react_1.default.createElement(core_1.Grid, { item: true, style: { backgroundColor: '#0E3435', color: '#ffffff', borderRadius: '20px', padding: '6px 20px' } },
|
|
312
|
+
"Step ",
|
|
313
|
+
value + 1,
|
|
314
|
+
" of 2")),
|
|
315
|
+
react_1.default.createElement(core_1.Grid, { container: true, item: true, direction: "column", justifyContent: "center", alignItems: "center" },
|
|
316
|
+
react_1.default.createElement(core_1.Typography, { variant: "subtitle1", style: { textDecoration: 'underline', fontStyle: 'italic', fontSize: '16px', fontWeight: 400, marginTop: '16px', marginBottom: '16px' } }, "Why Add a Job Title to Your Profile?")),
|
|
317
|
+
react_1.default.createElement(core_1.Grid, { container: true, item: true, direction: "row", justifyContent: "space-between", alignItems: "center", xs: 10, spacing: 1, style: { margin: 'auto' } },
|
|
318
|
+
react_1.default.createElement(core_1.Box, { display: "flex", flexDirection: "row", alignItems: "center", width: '50%' },
|
|
319
|
+
react_1.default.createElement(icons_1.AdjustRounded, { style: {
|
|
320
|
+
marginRight: 8,
|
|
321
|
+
color: '#248384',
|
|
322
|
+
fontSize: '20px'
|
|
323
|
+
}, className: "headerCircle" }),
|
|
324
|
+
react_1.default.createElement(core_1.Typography, { className: "headerFeature", variant: "body2", style: { fontSize: '16px', fontWeight: 400 } },
|
|
325
|
+
react_1.default.createElement("b", { style: { display: 'inline', whiteSpace: 'nowrap' } }, "Showcase Your Brand:"),
|
|
326
|
+
" Your job title is the first impression Clients get of your professional identity")),
|
|
327
|
+
react_1.default.createElement(core_1.Box, { display: "flex", flexDirection: "row", alignItems: "center", width: '50%' },
|
|
328
|
+
react_1.default.createElement(icons_1.AdjustRounded, { style: {
|
|
329
|
+
marginRight: 8,
|
|
330
|
+
color: '#248384',
|
|
331
|
+
fontSize: '20px'
|
|
332
|
+
}, className: "headerCircle" }),
|
|
333
|
+
react_1.default.createElement(core_1.Typography, { className: "headerFeature", variant: "body2", style: { fontSize: '16px', fontWeight: 400 } },
|
|
334
|
+
react_1.default.createElement("b", { style: { display: 'inline', whiteSpace: 'nowrap' } }, "Control Your Narrative:"),
|
|
335
|
+
" Your job title gives you the opportunity to shape how Clients perceive you, positioning yourself as a trusted expert in your field."))),
|
|
336
|
+
react_1.default.createElement(core_1.Grid, { xs: 12, style: { marginTop: 16 }, container: true, direction: "column", justifyContent: "center", alignItems: "center" },
|
|
337
|
+
react_1.default.createElement(core_1.Box, null,
|
|
338
|
+
react_1.default.createElement(core_1.Typography, { variant: "h5", style: { fontWeight: 500 } }, "Select from the following Expertise titles:")),
|
|
339
|
+
react_1.default.createElement(core_1.Grid, { item: true, style: { marginBottom: 12, width: '50%' } },
|
|
340
|
+
react_1.default.createElement(core_1.Select, { required: true, autoWidth: false, variant: "outlined", fullWidth: true, defaultValue: titleOptions, onChange: (event) => handleChangeTitle(event), value: selectedTitle !== null && selectedTitle !== void 0 ? selectedTitle : (_a = titleOptions[0]) === null || _a === void 0 ? void 0 : _a.title },
|
|
341
|
+
titleOptions.length > 1 && (react_1.default.createElement(core_1.MenuItem, { disabled: true, value: "" },
|
|
342
|
+
react_1.default.createElement("em", null, "Select title"))),
|
|
343
|
+
titleOptions.map((option) => (react_1.default.createElement(core_1.MenuItem, { key: option.id, value: option.title }, option.title))),
|
|
344
|
+
react_1.default.createElement(core_1.MenuItem, { value: "Other" },
|
|
345
|
+
react_1.default.createElement("em", null, "Other")))),
|
|
346
|
+
selectedTitle === 'Other' && react_1.default.createElement(core_1.Grid, { item: true, style: { width: '70%' } },
|
|
347
|
+
react_1.default.createElement(core_1.TextField, { size: "small", variant: "outlined", value: customTitle, fullWidth: true, onChange: (e) => { setCustomTitle(e.target.value); }, placeholder: "Enter custom title" })))),
|
|
348
|
+
(value === 1 || isInternalProfile) ?
|
|
349
|
+
react_1.default.createElement(react_1.default.Fragment, null, ActionButtons(disablePublicProfile))
|
|
350
|
+
:
|
|
351
|
+
react_1.default.createElement(core_1.Grid, { item: true, direction: "row", justifyContent: "flex-end", style: { marginLeft: 'auto' } },
|
|
352
|
+
react_1.default.createElement(base_ui_1.Button, { label: "NEXT", onClick: () => handleUpdateProfile(), type: "button", isLoading: updateClicked, disabled: isUpdateButtonDisabled(), color: "primary" }))));
|
|
318
353
|
};
|
|
319
|
-
|
|
320
|
-
react_1.default.createElement(core_1.
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
style: {
|
|
333
|
-
zIndex: 9999,
|
|
334
|
-
backgroundColor: 'transparent'
|
|
335
|
-
},
|
|
336
|
-
} }))))));
|
|
354
|
+
if (loading) {
|
|
355
|
+
return (react_1.default.createElement(core_1.Box, { display: "flex", justifyContent: "center", alignItems: "center", width: '100%', style: { margin: 'auto' } },
|
|
356
|
+
react_1.default.createElement(core_1.CircularProgress, null)));
|
|
357
|
+
}
|
|
358
|
+
return (openServiceLinesTemplate && (react_1.default.createElement(core_1.Grid, { style: { backgroundColor: '#fff', minWidth: '100%' } },
|
|
359
|
+
react_1.default.createElement(react_1.default.Fragment, null,
|
|
360
|
+
newServiceLine(),
|
|
361
|
+
react_1.default.createElement(react_hot_toast_1.Toaster, { position: "top-center", toastOptions: {
|
|
362
|
+
style: {
|
|
363
|
+
zIndex: 9999,
|
|
364
|
+
backgroundColor: 'transparent'
|
|
365
|
+
},
|
|
366
|
+
} })))));
|
|
337
367
|
};
|
|
338
368
|
exports.ServiceLinesTemplate = ServiceLinesTemplate;
|