fix: parse multiple class in form script
(cherry picked from commit 39fa9c78f8bc673463b3bbfb822854d4e7674ef0)
This commit is contained in:
parent
cac40bc538
commit
6dcd290bb7
@ -52,26 +52,30 @@ export function getScript(doctype, view = 'Form') {
|
|||||||
let script = scriptStrings[scriptName]?.script
|
let script = scriptStrings[scriptName]?.script
|
||||||
if (!script) continue
|
if (!script) continue
|
||||||
try {
|
try {
|
||||||
const className = getClassName(script)
|
const classNames = getClassNames(script)
|
||||||
if (!className) {
|
if (!classNames) continue
|
||||||
if (script.includes('setupForm(')) {
|
|
||||||
let message = __(
|
|
||||||
'setupForm() is deprecated, use class syntax instead. Check the documentation for more details.',
|
|
||||||
)
|
|
||||||
createToast({
|
|
||||||
title: __('Deprecation Warning'),
|
|
||||||
text: message,
|
|
||||||
icon: 'alert-triangle',
|
|
||||||
iconClasses: 'text-orange-500',
|
|
||||||
timeout: 10,
|
|
||||||
})
|
|
||||||
console.warn(message)
|
|
||||||
}
|
|
||||||
throw new Error(__('No class found in script'))
|
|
||||||
}
|
|
||||||
|
|
||||||
const FormClass = evaluateFormClass(script, className, helpers)
|
classNames.forEach((className) => {
|
||||||
controllers[className] = setupFormController(FormClass, document)
|
if (!className) {
|
||||||
|
if (script.includes('setupForm(')) {
|
||||||
|
let message = __(
|
||||||
|
'setupForm() is deprecated, use class syntax instead. Check the documentation for more details.',
|
||||||
|
)
|
||||||
|
createToast({
|
||||||
|
title: __('Deprecation Warning'),
|
||||||
|
text: message,
|
||||||
|
icon: 'alert-triangle',
|
||||||
|
iconClasses: 'text-orange-500',
|
||||||
|
timeout: 10,
|
||||||
|
})
|
||||||
|
console.warn(message)
|
||||||
|
}
|
||||||
|
throw new Error(__('No class found in script'))
|
||||||
|
}
|
||||||
|
|
||||||
|
const FormClass = evaluateFormClass(script, className, helpers)
|
||||||
|
controllers[className] = setupFormController(FormClass, document)
|
||||||
|
})
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error('Failed to load form controller:', err)
|
console.error('Failed to load form controller:', err)
|
||||||
}
|
}
|
||||||
@ -97,9 +101,12 @@ export function getScript(doctype, view = 'Form') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// utility function to setup a form controller
|
// utility function to setup a form controller
|
||||||
function getClassName(script) {
|
function getClassNames(script) {
|
||||||
const match = script.match(/class\s+([A-Za-z0-9_]+)/)
|
return (
|
||||||
return match ? match[1] : null
|
[...script.matchAll(/class\s+([A-Za-z0-9_]+)/g)].map(
|
||||||
|
(match) => match[1],
|
||||||
|
) || []
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
function evaluateFormClass(script, className, helpers = {}) {
|
function evaluateFormClass(script, className, helpers = {}) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user