feat: add custom statuses using class based script
(cherry picked from commit 8942bb7e4804553cd882c51d57c3956cdd579b76)
This commit is contained in:
parent
2e9c5b1d6f
commit
9c27d3dbc6
@ -117,6 +117,7 @@ export function getScript(doctype, view = 'Form') {
|
||||
isChildDoctype = false,
|
||||
) {
|
||||
document.actions = document.actions || []
|
||||
document.statuses = document.statuses || []
|
||||
|
||||
let instance = new FormClass()
|
||||
|
||||
@ -237,6 +238,42 @@ export function getScript(doctype, view = 'Form') {
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
if (
|
||||
!Object.prototype.hasOwnProperty.call(FormClass.prototype, 'statuses')
|
||||
) {
|
||||
Object.defineProperty(FormClass.prototype, 'statuses', {
|
||||
configurable: true,
|
||||
enumerable: true,
|
||||
get() {
|
||||
if (!this._originalDocumentContext) {
|
||||
console.warn(
|
||||
'CRM Script: _originalDocumentContext not found on instance for statuses getter.',
|
||||
)
|
||||
return []
|
||||
}
|
||||
|
||||
return this._originalDocumentContext.statuses
|
||||
},
|
||||
set(newValue) {
|
||||
if (!this._originalDocumentContext) {
|
||||
console.warn(
|
||||
'CRM Script: _originalDocumentContext not found on instance for statuses setter.',
|
||||
)
|
||||
return
|
||||
}
|
||||
if (!Array.isArray(newValue)) {
|
||||
console.warn(
|
||||
'CRM Script: "statuses" property must be an array. Value was not set.',
|
||||
newValue,
|
||||
)
|
||||
this._originalDocumentContext.statuses = []
|
||||
return
|
||||
}
|
||||
this._originalDocumentContext.statuses = newValue
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// utility function to setup a form controller
|
||||
|
||||
@ -22,7 +22,15 @@
|
||||
doctype="CRM Deal"
|
||||
/>
|
||||
<Dropdown
|
||||
:options="statusOptions('deal', updateField, deal.data._customStatuses)"
|
||||
:options="
|
||||
statusOptions(
|
||||
'deal',
|
||||
updateField,
|
||||
document.statuses?.length
|
||||
? document.statuses
|
||||
: deal.data._customStatuses,
|
||||
)
|
||||
"
|
||||
>
|
||||
<template #default="{ open }">
|
||||
<Button :label="deal.data.status">
|
||||
|
||||
@ -22,7 +22,15 @@
|
||||
doctype="CRM Lead"
|
||||
/>
|
||||
<Dropdown
|
||||
:options="statusOptions('lead', updateField, lead.data._customStatuses)"
|
||||
:options="
|
||||
statusOptions(
|
||||
'lead',
|
||||
updateField,
|
||||
document.statuses?.length
|
||||
? document.statuses
|
||||
: lead.data._customStatuses,
|
||||
)
|
||||
"
|
||||
>
|
||||
<template #default="{ open }">
|
||||
<Button :label="lead.data.status">
|
||||
|
||||
@ -11,7 +11,13 @@
|
||||
<div class="absolute right-0">
|
||||
<Dropdown
|
||||
:options="
|
||||
statusOptions('deal', updateField, deal.data._customStatuses)
|
||||
statusOptions(
|
||||
'deal',
|
||||
updateField,
|
||||
document.statuses?.length
|
||||
? document.statuses
|
||||
: deal.data._customStatuses,
|
||||
)
|
||||
"
|
||||
>
|
||||
<template #default="{ open }">
|
||||
|
||||
@ -11,7 +11,13 @@
|
||||
<div class="absolute right-0">
|
||||
<Dropdown
|
||||
:options="
|
||||
statusOptions('lead', updateField, lead.data._customStatuses)
|
||||
statusOptions(
|
||||
'lead',
|
||||
updateField,
|
||||
document.statuses?.length
|
||||
? document.statuses
|
||||
: lead.data._customStatuses,
|
||||
)
|
||||
"
|
||||
>
|
||||
<template #default="{ open }">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user