diff --git a/frontend/src/data/script.js b/frontend/src/data/script.js
index 9532fc11..78c22be6 100644
--- a/frontend/src/data/script.js
+++ b/frontend/src/data/script.js
@@ -116,8 +116,12 @@ export function getScript(doctype, view = 'Form') {
parentInstance = null,
isChildDoctype = false,
) {
+ document.actions = document.actions || []
+
let instance = new FormClass()
+ // Store the original document context to be used by properties like 'actions'
+ instance._originalDocumentContext = document
instance._isChildDoctype = isChildDoctype
for (const key in document) {
@@ -199,6 +203,40 @@ export function getScript(doctype, view = 'Form') {
return createDocProxy(row, this)
}
}
+
+ if (!Object.prototype.hasOwnProperty.call(FormClass.prototype, 'actions')) {
+ Object.defineProperty(FormClass.prototype, 'actions', {
+ configurable: true,
+ enumerable: true,
+ get() {
+ if (!this._originalDocumentContext) {
+ console.warn(
+ 'CRM Script: _originalDocumentContext not found on instance for actions getter.',
+ )
+ return []
+ }
+
+ return this._originalDocumentContext.actions
+ },
+ set(newValue) {
+ if (!this._originalDocumentContext) {
+ console.warn(
+ 'CRM Script: _originalDocumentContext not found on instance for actions setter.',
+ )
+ return
+ }
+ if (!Array.isArray(newValue)) {
+ console.warn(
+ 'CRM Script: "actions" property must be an array. Value was not set.',
+ newValue,
+ )
+ this._originalDocumentContext.actions = []
+ return
+ }
+ this._originalDocumentContext.actions = newValue
+ },
+ })
+ }
}
// utility function to setup a form controller
diff --git a/frontend/src/pages/Deal.vue b/frontend/src/pages/Deal.vue
index d9b29299..67e37d18 100644
--- a/frontend/src/pages/Deal.vue
+++ b/frontend/src/pages/Deal.vue
@@ -12,6 +12,10 @@
v-if="deal.data._customActions?.length"
:actions="deal.data._customActions"
/>
+
+