Add PageBreak Support to Template Elements and Enhance TemplatePreview Resizing
All checks were successful
farmcontrol/farmcontrol-ui/pipeline/head This commit looks good
All checks were successful
farmcontrol/farmcontrol-ui/pipeline/head This commit looks good
- Added 'PageBreak' to the list of template elements in schema.js, allowing for better document structuring. - Updated TemplatePreview component to dynamically adjust the size of preview wrappers based on content dimensions, improving visual presentation and user experience.
This commit is contained in:
parent
f55a09ff1f
commit
c5b421533f
@ -77,6 +77,7 @@ const allTags = [
|
|||||||
'Text',
|
'Text',
|
||||||
'Bold',
|
'Bold',
|
||||||
'Divider',
|
'Divider',
|
||||||
|
'PageBreak',
|
||||||
'ProgressBar',
|
'ProgressBar',
|
||||||
'Barcode',
|
'Barcode',
|
||||||
'DateTime',
|
'DateTime',
|
||||||
@ -93,7 +94,7 @@ export const fcTemplateElements = allTags.map((name) => {
|
|||||||
el.attributes = ['format', 'barcodeWidth', ...styleAttrs]
|
el.attributes = ['format', 'barcodeWidth', ...styleAttrs]
|
||||||
} else if (name === 'Row') {
|
} else if (name === 'Row') {
|
||||||
el.attributes = ['type', ...styleAttrs]
|
el.attributes = ['type', ...styleAttrs]
|
||||||
} else if (name === 'Divider') {
|
} else if (name === 'Divider' || name === 'PageBreak') {
|
||||||
el.children = []
|
el.children = []
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -56,22 +56,31 @@ const TemplatePreview = ({
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const wrappers = doc.querySelectorAll('.previewWrapper')
|
||||||
|
wrappers.forEach((wrapper) => {
|
||||||
|
const page = wrapper.querySelector('.previewDocument')
|
||||||
|
if (!page) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const pageVisual = page.getBoundingClientRect()
|
||||||
|
if (pageVisual.width <= 0 && pageVisual.height <= 0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
wrapper.style.width = `${pageVisual.width}px`
|
||||||
|
wrapper.style.height = `${pageVisual.height}px`
|
||||||
|
})
|
||||||
|
|
||||||
const documentEl =
|
const documentEl =
|
||||||
|
doc.querySelector('.previewPages') ||
|
||||||
doc.querySelector('.previewDocument') ||
|
doc.querySelector('.previewDocument') ||
|
||||||
doc.querySelector('.previewWrapper') ||
|
doc.querySelector('.previewWrapper') ||
|
||||||
doc.body
|
doc.body
|
||||||
const container = doc.querySelector('.previewContainer')
|
const container = doc.querySelector('.previewContainer')
|
||||||
const wrapper = doc.querySelector('.previewWrapper')
|
|
||||||
const visual = documentEl.getBoundingClientRect()
|
const visual = documentEl.getBoundingClientRect()
|
||||||
if (visual.width <= 0 && visual.height <= 0) {
|
if (visual.width <= 0 && visual.height <= 0) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wrapper) {
|
|
||||||
wrapper.style.width = `${visual.width}px`
|
|
||||||
wrapper.style.height = `${visual.height}px`
|
|
||||||
}
|
|
||||||
|
|
||||||
let padX = 0
|
let padX = 0
|
||||||
let padY = 0
|
let padY = 0
|
||||||
if (container) {
|
if (container) {
|
||||||
@ -125,8 +134,9 @@ const TemplatePreview = ({
|
|||||||
|
|
||||||
const doc = iframeRef.current?.contentDocument
|
const doc = iframeRef.current?.contentDocument
|
||||||
const observed =
|
const observed =
|
||||||
doc?.querySelector('.previewDocument') ||
|
doc?.querySelector('.previewPages') ||
|
||||||
doc?.querySelector('.previewContainer') ||
|
doc?.querySelector('.previewContainer') ||
|
||||||
|
doc?.querySelector('.previewDocument') ||
|
||||||
doc?.body
|
doc?.body
|
||||||
if (observed && typeof ResizeObserver === 'function') {
|
if (observed && typeof ResizeObserver === 'function') {
|
||||||
const observer = new ResizeObserver(() => {
|
const observer = new ResizeObserver(() => {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user