Feat(settings-ratecard-drawer): add role show drop down fix
This commit is contained in:
@@ -43,7 +43,7 @@ const RatecardDrawer = ({
|
|||||||
const [isAddingRole, setIsAddingRole] = useState(false);
|
const [isAddingRole, setIsAddingRole] = useState(false);
|
||||||
const [selectedJobTitleId, setSelectedJobTitleId] = useState<string | undefined>(undefined);
|
const [selectedJobTitleId, setSelectedJobTitleId] = useState<string | undefined>(undefined);
|
||||||
const [searchQuery, setSearchQuery] = useState('');
|
const [searchQuery, setSearchQuery] = useState('');
|
||||||
const [currency, setCurrency] = useState('LKR');
|
const [currency, setCurrency] = useState('USD');
|
||||||
const [name, setName] = useState<string>('Untitled Rate Card');
|
const [name, setName] = useState<string>('Untitled Rate Card');
|
||||||
const [jobTitles, setJobTitles] = useState<IJobTitlesViewModel>({});
|
const [jobTitles, setJobTitles] = useState<IJobTitlesViewModel>({});
|
||||||
const [pagination, setPagination] = useState<PaginationType>({
|
const [pagination, setPagination] = useState<PaginationType>({
|
||||||
@@ -95,7 +95,7 @@ const RatecardDrawer = ({
|
|||||||
if (type === 'update' && drawerRatecard) {
|
if (type === 'update' && drawerRatecard) {
|
||||||
setRoles(drawerRatecard.jobRolesList || []);
|
setRoles(drawerRatecard.jobRolesList || []);
|
||||||
setName(drawerRatecard.name || '');
|
setName(drawerRatecard.name || '');
|
||||||
setCurrency(drawerRatecard.currency || 'LKR');
|
setCurrency(drawerRatecard.currency || 'USD');
|
||||||
}
|
}
|
||||||
}, [drawerRatecard, type]);
|
}, [drawerRatecard, type]);
|
||||||
|
|
||||||
@@ -121,15 +121,17 @@ const RatecardDrawer = ({
|
|||||||
setRoles(mergedRoles);
|
setRoles(mergedRoles);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const handleAddRole = () => {
|
const handleAddRole = () => {
|
||||||
// Only allow adding if there are job titles not already in roles
|
|
||||||
const existingIds = new Set(roles.map(r => r.job_title_id));
|
const existingIds = new Set(roles.map(r => r.job_title_id));
|
||||||
const availableJobTitles = jobTitles.data?.filter(jt => !existingIds.has(jt.id!));
|
const availableJobTitles = jobTitles.data?.filter(jt => !existingIds.has(jt.id!));
|
||||||
if (availableJobTitles && availableJobTitles.length > 0) {
|
if (availableJobTitles && availableJobTitles.length > 0) {
|
||||||
setRoles([...roles, { job_title_id: '', rate: 0 }]);
|
setRoles([...roles, { job_title_id: '', rate: 0 }]);
|
||||||
setAddingRowIndex(roles.length); // index of the new row
|
setAddingRowIndex(roles.length);
|
||||||
|
setIsAddingRole(true);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleDeleteRole = (index: number) => {
|
const handleDeleteRole = (index: number) => {
|
||||||
const updatedRoles = [...roles];
|
const updatedRoles = [...roles];
|
||||||
updatedRoles.splice(index, 1);
|
updatedRoles.splice(index, 1);
|
||||||
@@ -185,7 +187,7 @@ const RatecardDrawer = ({
|
|||||||
} finally {
|
} finally {
|
||||||
setRoles([]);
|
setRoles([]);
|
||||||
setName('Untitled Rate Card');
|
setName('Untitled Rate Card');
|
||||||
setCurrency('LKR');
|
setCurrency('USD');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -253,14 +255,13 @@ const RatecardDrawer = ({
|
|||||||
render: (text: number, record: any, index: number) => (
|
render: (text: number, record: any, index: number) => (
|
||||||
<Input
|
<Input
|
||||||
type="number"
|
type="number"
|
||||||
autoFocus={index === addingRowIndex}
|
|
||||||
value={roles[index]?.rate ?? 0}
|
value={roles[index]?.rate ?? 0}
|
||||||
style={{
|
style={{
|
||||||
background: 'transparent',
|
background: 'transparent',
|
||||||
border: 'none',
|
border: 'none',
|
||||||
boxShadow: 'none',
|
boxShadow: 'none',
|
||||||
padding: 0,
|
|
||||||
textAlign: 'right',
|
textAlign: 'right',
|
||||||
|
padding: 0,
|
||||||
}}
|
}}
|
||||||
onChange={(e) => {
|
onChange={(e) => {
|
||||||
const updatedRoles = roles.map((role, idx) =>
|
const updatedRoles = roles.map((role, idx) =>
|
||||||
@@ -322,8 +323,8 @@ const RatecardDrawer = ({
|
|||||||
<Select
|
<Select
|
||||||
value={currency}
|
value={currency}
|
||||||
options={[
|
options={[
|
||||||
{ value: 'LKR', label: 'LKR' },
|
|
||||||
{ value: 'USD', label: 'USD' },
|
{ value: 'USD', label: 'USD' },
|
||||||
|
{ value: 'LKR', label: 'LKR' },
|
||||||
{ value: 'INR', label: 'INR' },
|
{ value: 'INR', label: 'INR' },
|
||||||
]}
|
]}
|
||||||
onChange={(value) => setCurrency(value)}
|
onChange={(value) => setCurrency(value)}
|
||||||
@@ -350,26 +351,6 @@ const RatecardDrawer = ({
|
|||||||
rowKey={(record) => record.job_title_id}
|
rowKey={(record) => record.job_title_id}
|
||||||
pagination={false}
|
pagination={false}
|
||||||
footer={() => (
|
footer={() => (
|
||||||
isAddingRole ? (
|
|
||||||
<Select
|
|
||||||
showSearch
|
|
||||||
style={{ minWidth: 200 }}
|
|
||||||
placeholder={t('selectJobTitle')}
|
|
||||||
optionFilterProp="children"
|
|
||||||
value={selectedJobTitleId}
|
|
||||||
onChange={handleSelectJobTitle}
|
|
||||||
onBlur={() => setIsAddingRole(false)}
|
|
||||||
filterOption={(input, option) =>
|
|
||||||
(option?.children as string).toLowerCase().includes(input.toLowerCase())
|
|
||||||
}
|
|
||||||
>
|
|
||||||
{jobTitles.data?.map((jt) => (
|
|
||||||
<Select.Option key={jt.id} value={jt.id}>
|
|
||||||
{jt.name}
|
|
||||||
</Select.Option>
|
|
||||||
))}
|
|
||||||
</Select>
|
|
||||||
) : (
|
|
||||||
<Button
|
<Button
|
||||||
type="dashed"
|
type="dashed"
|
||||||
onClick={handleAddRole}
|
onClick={handleAddRole}
|
||||||
@@ -378,7 +359,6 @@ const RatecardDrawer = ({
|
|||||||
>
|
>
|
||||||
{t('addRoleButton')}
|
{t('addRoleButton')}
|
||||||
</Button>
|
</Button>
|
||||||
)
|
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
</Drawer>
|
</Drawer>
|
||||||
|
|||||||
Reference in New Issue
Block a user