feat: add page setup precision (#6294)

Co-authored-by: r.sergeev <r.sergeev@yadro.com>
This commit is contained in:
Roman Sergeev
2025-12-17 09:36:57 +03:00
committed by GitHub
parent 120263f0b8
commit 24107e04e1
@@ -35,6 +35,10 @@ export interface IPageSettings {
left: number;
right: number;
};
pageSise: {
width: number;
height: number;
};
}
const getPaperSize = (size: ISize) => {
@@ -60,6 +64,10 @@ export function PageSettings(props: IConfirmChildrenProps) {
const localeService = useDependency(LocaleService);
const [settings, setSettings] = useState<IPageSettings>(() => ({
paperSize: getPaperSize(documentStyle.pageSize!),
pageSise: {
width: documentStyle.pageSize?.width ?? 0,
height: documentStyle.pageSize?.height ?? 0,
},
orientation: documentStyle.pageOrient ?? PageOrientType.PORTRAIT,
margins: {
top: documentStyle.marginTop ?? 0,
@@ -80,11 +88,15 @@ export function PageSettings(props: IConfirmChildrenProps) {
}, [settings]);
const handlePaperSizeChange = (value: string) => {
setSettings((prev) => ({ ...prev, paperSize: value }));
setSettings((prev) => ({ ...prev, paperSize: value, pageSise: PAGE_SIZE[value as PaperType] }));
};
const handleOrientationChange = (value: PageOrientType) => {
setSettings((prev) => ({ ...prev, orientation: value }));
setSettings((prev) => ({
...prev,
orientation: value,
pageSise: { width: settings.pageSise.height, height: settings.pageSise.width },
}));
};
const handleMarginChange = (position: keyof IPageSettings['margins'], value: number | null) => {
@@ -134,6 +146,8 @@ export function PageSettings(props: IConfirmChildrenProps) {
{localeService.t('page-settings.top')}
</label>
<InputNumber
precision={2}
max={settings.pageSise.height / 2}
value={settings.margins.top}
onChange={(e) => handleMarginChange('top', e)}
/>
@@ -143,6 +157,8 @@ export function PageSettings(props: IConfirmChildrenProps) {
{localeService.t('page-settings.bottom')}
</label>
<InputNumber
precision={2}
max={settings.pageSise.height / 2}
value={settings.margins.bottom}
onChange={(e) => handleMarginChange('bottom', e)}
/>
@@ -154,6 +170,8 @@ export function PageSettings(props: IConfirmChildrenProps) {
{localeService.t('page-settings.left')}
</label>
<InputNumber
precision={2}
max={settings.pageSise.width / 2}
value={settings.margins.left}
onChange={(e) => handleMarginChange('left', e)}
/>
@@ -163,6 +181,8 @@ export function PageSettings(props: IConfirmChildrenProps) {
{localeService.t('page-settings.right')}
</label>
<InputNumber
precision={2}
max={settings.pageSise.width / 2}
value={settings.margins.right}
onChange={(e) => handleMarginChange('right', e)}
/>