fix TS build errors and add position-documents API
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
be8757e15e
commit
cae8386544
5 changed files with 75 additions and 5 deletions
|
|
@ -686,6 +686,71 @@ export async function deletePosition(
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// POSITION-DOCUMENT LINK API
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
export interface TrusteePositionDocument {
|
||||||
|
id: string;
|
||||||
|
positionId: string;
|
||||||
|
documentId: string;
|
||||||
|
mandateId?: string;
|
||||||
|
featureInstanceId?: string;
|
||||||
|
_createdAt?: number;
|
||||||
|
_modifiedAt?: number;
|
||||||
|
[key: string]: any;
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function fetchPositionDocuments(
|
||||||
|
request: ApiRequestFunction,
|
||||||
|
instanceId: string,
|
||||||
|
params?: PaginationParams
|
||||||
|
): Promise<PaginatedResponse<TrusteePositionDocument> | TrusteePositionDocument[]> {
|
||||||
|
return await request({
|
||||||
|
url: `${_getTrusteeBaseUrl(instanceId)}/position-documents`,
|
||||||
|
method: 'get',
|
||||||
|
params: _buildPaginationParams(params)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function fetchPositionDocumentById(
|
||||||
|
request: ApiRequestFunction,
|
||||||
|
instanceId: string,
|
||||||
|
linkId: string
|
||||||
|
): Promise<TrusteePositionDocument | null> {
|
||||||
|
try {
|
||||||
|
return await request({
|
||||||
|
url: `${_getTrusteeBaseUrl(instanceId)}/position-documents/${linkId}`,
|
||||||
|
method: 'get'
|
||||||
|
});
|
||||||
|
} catch {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function createPositionDocument(
|
||||||
|
request: ApiRequestFunction,
|
||||||
|
instanceId: string,
|
||||||
|
data: Partial<TrusteePositionDocument>
|
||||||
|
): Promise<TrusteePositionDocument> {
|
||||||
|
return await request({
|
||||||
|
url: `${_getTrusteeBaseUrl(instanceId)}/position-documents`,
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function deletePositionDocument(
|
||||||
|
request: ApiRequestFunction,
|
||||||
|
instanceId: string,
|
||||||
|
linkId: string
|
||||||
|
): Promise<void> {
|
||||||
|
await request({
|
||||||
|
url: `${_getTrusteeBaseUrl(instanceId)}/position-documents/${linkId}`,
|
||||||
|
method: 'delete'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
// ACCOUNTING API
|
// ACCOUNTING API
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
import type { IconType } from 'react-icons';
|
||||||
import { useLanguage } from '../../../providers/language/LanguageContext';
|
import { useLanguage } from '../../../providers/language/LanguageContext';
|
||||||
import styles from './FormGeneratorControls.module.css';
|
import styles from './FormGeneratorControls.module.css';
|
||||||
import { Button } from '../../UiComponents/Button';
|
import { Button } from '../../UiComponents/Button';
|
||||||
|
|
@ -44,7 +45,7 @@ export interface FormGeneratorControlsProps {
|
||||||
label: string;
|
label: string;
|
||||||
onClick: () => void | Promise<void>;
|
onClick: () => void | Promise<void>;
|
||||||
loading?: boolean;
|
loading?: boolean;
|
||||||
icon?: React.ReactNode;
|
icon?: IconType;
|
||||||
}[];
|
}[];
|
||||||
|
|
||||||
// Refresh handler
|
// Refresh handler
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import React, { useState, useMemo, useRef, useEffect, useCallback } from 'react';
|
import React, { useState, useMemo, useRef, useEffect, useCallback } from 'react';
|
||||||
|
import type { IconType } from 'react-icons';
|
||||||
import { useLanguage } from '../../../providers/language/LanguageContext';
|
import { useLanguage } from '../../../providers/language/LanguageContext';
|
||||||
import styles from './FormGeneratorTable.module.css';
|
import styles from './FormGeneratorTable.module.css';
|
||||||
import {
|
import {
|
||||||
|
|
@ -153,7 +154,7 @@ export interface FormGeneratorTableProps<T = any> {
|
||||||
label: string;
|
label: string;
|
||||||
onClick: (rows: T[]) => void | Promise<void>;
|
onClick: (rows: T[]) => void | Promise<void>;
|
||||||
loading?: boolean;
|
loading?: boolean;
|
||||||
icon?: React.ReactNode;
|
icon?: IconType;
|
||||||
}[];
|
}[];
|
||||||
onRefresh?: () => void;
|
onRefresh?: () => void;
|
||||||
className?: string;
|
className?: string;
|
||||||
|
|
|
||||||
|
|
@ -578,3 +578,6 @@ const positionConfig: TrusteeEntityConfig<TrusteePosition> = {
|
||||||
export const useTrusteePositions = _createTrusteeEntityHook(positionConfig);
|
export const useTrusteePositions = _createTrusteeEntityHook(positionConfig);
|
||||||
export const useTrusteePositionOperations = _createTrusteeOperationsHook(positionConfig);
|
export const useTrusteePositionOperations = _createTrusteeOperationsHook(positionConfig);
|
||||||
|
|
||||||
|
export { useTrusteePositionDocuments, useTrusteePositionDocumentOperations } from './useTrusteePositionDocuments';
|
||||||
|
export type { TrusteePositionDocument } from '../api/trusteeApi';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -56,8 +56,8 @@ export const TrusteePositionDocumentsView: React.FC = () => {
|
||||||
const excludedFields = ['id', 'mandateId', 'featureInstanceId', '_createdBy', '_createdAt', '_modifiedAt', '_modifiedBy'];
|
const excludedFields = ['id', 'mandateId', 'featureInstanceId', '_createdBy', '_createdAt', '_modifiedAt', '_modifiedBy'];
|
||||||
|
|
||||||
return attributes
|
return attributes
|
||||||
.filter(attr => !excludedFields.includes(attr.name))
|
.filter((attr: any) => !excludedFields.includes(attr.name))
|
||||||
.map(attr => {
|
.map((attr: any) => {
|
||||||
// Replace {instanceId} placeholder in options URL
|
// Replace {instanceId} placeholder in options URL
|
||||||
let fkSource = attr.options;
|
let fkSource = attr.options;
|
||||||
if (typeof fkSource === 'string' && instanceId) {
|
if (typeof fkSource === 'string' && instanceId) {
|
||||||
|
|
@ -133,7 +133,7 @@ export const TrusteePositionDocumentsView: React.FC = () => {
|
||||||
// Form attributes (exclude system fields)
|
// Form attributes (exclude system fields)
|
||||||
const formAttributes = useMemo(() => {
|
const formAttributes = useMemo(() => {
|
||||||
const excludedFields = ['id', 'mandateId', 'featureInstanceId', '_createdBy', '_createdAt', '_modifiedAt', '_modifiedBy'];
|
const excludedFields = ['id', 'mandateId', 'featureInstanceId', '_createdBy', '_createdAt', '_modifiedAt', '_modifiedBy'];
|
||||||
return (attributes || []).filter(attr => !excludedFields.includes(attr.name));
|
return (attributes || []).filter((attr: any) => !excludedFields.includes(attr.name));
|
||||||
}, [attributes]);
|
}, [attributes]);
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue