fix: parse multiple class in form script
(cherry picked from commit 39fa9c78f8bc673463b3bbfb822854d4e7674ef0)
This commit is contained in:
parent
cac40bc538
commit
6dcd290bb7
@ -52,7 +52,10 @@ export function getScript(doctype, view = 'Form') {
|
||||
let script = scriptStrings[scriptName]?.script
|
||||
if (!script) continue
|
||||
try {
|
||||
const className = getClassName(script)
|
||||
const classNames = getClassNames(script)
|
||||
if (!classNames) continue
|
||||
|
||||
classNames.forEach((className) => {
|
||||
if (!className) {
|
||||
if (script.includes('setupForm(')) {
|
||||
let message = __(
|
||||
@ -72,6 +75,7 @@ export function getScript(doctype, view = 'Form') {
|
||||
|
||||
const FormClass = evaluateFormClass(script, className, helpers)
|
||||
controllers[className] = setupFormController(FormClass, document)
|
||||
})
|
||||
} catch (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
|
||||
function getClassName(script) {
|
||||
const match = script.match(/class\s+([A-Za-z0-9_]+)/)
|
||||
return match ? match[1] : null
|
||||
function getClassNames(script) {
|
||||
return (
|
||||
[...script.matchAll(/class\s+([A-Za-z0-9_]+)/g)].map(
|
||||
(match) => match[1],
|
||||
) || []
|
||||
)
|
||||
}
|
||||
|
||||
function evaluateFormClass(script, className, helpers = {}) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user