@steedos-labs/plugin-workflow 3.0.66 → 3.0.68

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/designer/dist/amis-renderer/amis-renderer.css +1 -1
  2. package/designer/dist/amis-renderer/amis-renderer.js +1 -1
  3. package/designer/dist/assets/index-BocXPX7W.css +1 -0
  4. package/designer/dist/assets/index-CRxbSR2M.js +990 -0
  5. package/designer/dist/index.html +2 -2
  6. package/main/default/client/navigation_guard.client.js +2 -0
  7. package/main/default/manager/uuflow_manager.js +37 -2
  8. package/main/default/methods/trace_approve_cc.js +16 -2
  9. package/main/default/objectTranslations/instances.en/instances.en.objectTranslation.yml +10 -0
  10. package/main/default/objectTranslations/instances.zh-CN/instances.zh-CN.objectTranslation.yml +10 -0
  11. package/main/default/objects/instance_tasks/buttons/instance_new.button.yml +18 -4
  12. package/main/default/objects/instances/buttons/instance_hide.button.yml +65 -2
  13. package/main/default/objects/instances/buttons/instance_reopen.button.yml +65 -3
  14. package/main/default/objects/instances/buttons/instance_save.button.yml +2 -2
  15. package/main/default/objects/instances/buttons/view_instance.button.yml +2 -6
  16. package/main/default/objects/instances/fields/is_hidden.field.yml +5 -0
  17. package/main/default/pages/page_instance_print.page.amis.json +33 -5
  18. package/main/default/routes/api_workflow_ai_form_design.router.js +7 -416
  19. package/main/default/routes/api_workflow_ai_form_design_stream.router.js +7 -435
  20. package/main/default/routes/api_workflow_approve_save.router.js +22 -6
  21. package/main/default/routes/api_workflow_instance_hide.router.js +93 -0
  22. package/main/default/routes/api_workflow_next_step_users.router.js +17 -2
  23. package/main/default/routes/buildFormDesignSystemPrompt.js +522 -0
  24. package/main/default/routes/flow_form_design.ejs +1 -1
  25. package/main/default/services/instance.service.js +4 -0
  26. package/main/default/utils/designerManager.js +2 -1
  27. package/main/default/utils/formula-compat.js +10 -1
  28. package/package.json +1 -1
  29. package/public/amis-renderer/amis-renderer.css +1 -1
  30. package/public/amis-renderer/amis-renderer.js +1 -1
  31. package/src/schema/steedos_form_schema.amis.js +1 -1
  32. package/designer/dist/assets/index-DX2PUSq4.js +0 -994
  33. package/designer/dist/assets/index-YXPc2HMf.css +0 -1
@@ -5,8 +5,8 @@
5
5
  <link rel="shortcut icon" type="image/svg+xml" href="/images/logo.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>designer</title>
8
- <script type="module" crossorigin src="/api/workflow/designer-v2/assets/index-DX2PUSq4.js"></script>
9
- <link rel="stylesheet" crossorigin href="/api/workflow/designer-v2/assets/index-YXPc2HMf.css">
8
+ <script type="module" crossorigin src="/api/workflow/designer-v2/assets/index-CRxbSR2M.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/api/workflow/designer-v2/assets/index-BocXPX7W.css">
10
10
  </head>
11
11
  <body>
12
12
  <div id="root"></div>
@@ -18,8 +18,10 @@
18
18
  // 检查是否发生了变化
19
19
  if(window.SteedosWorkflow.Instance.changed){
20
20
  // 触发保存按钮点击
21
+ window.__instance_save_silent = true;
21
22
  $(".instance-save-btn").trigger('click');
22
23
  await sleep(100);
24
+ window.__instance_save_silent = false;
23
25
  try {
24
26
  // 等待 SteedosWorkflow.Instance.changed 变为 false
25
27
  await waitForThing(window, 'SteedosWorkflow.Instance', function(){
@@ -820,7 +820,7 @@ UUFlowManager.enrichLookupFieldValues = async function (fields, __values, lines)
820
820
  if (!allConditions) return;
821
821
 
822
822
  // 2. 提取所有 {fieldCode.xxx} 中的 fieldCode(不限定 .xxx 的内容,如 @label)
823
- const dotAccessRegex = /\{(\w+)\./g;
823
+ const dotAccessRegex = /\{([^{}.]+)\./g;
824
824
  const referencedFieldCodes = new Set();
825
825
  let match;
826
826
  while ((match = dotAccessRegex.exec(allConditions)) !== null) {
@@ -1151,7 +1151,21 @@ UUFlowManager.getUpdatedValues = function (instance, approve_id) {
1151
1151
  } else if (!trace_approve?.values) {
1152
1152
  newest_values = instance.values;
1153
1153
  } else {
1154
- newest_values = _.extend(_.clone(instance.values), trace_approve.values);
1154
+ const cloned = _.clone(instance.values);
1155
+ // For table fields with partial child permissions, merge rows by _id
1156
+ // so that non-editable child field values are preserved
1157
+ for (const key of Object.keys(trace_approve.values)) {
1158
+ if (Array.isArray(trace_approve.values[key]) && Array.isArray(cloned[key])) {
1159
+ const existingRows = cloned[key];
1160
+ trace_approve.values[key] = trace_approve.values[key].map((submittedRow) => {
1161
+ if (!submittedRow._id) return submittedRow;
1162
+ const existingRow = existingRows.find(r => r._id === submittedRow._id);
1163
+ if (!existingRow) return submittedRow;
1164
+ return _.extend({}, existingRow, submittedRow);
1165
+ });
1166
+ }
1167
+ }
1168
+ newest_values = _.extend(cloned, trace_approve.values);
1155
1169
  }
1156
1170
 
1157
1171
  if (process.env.STEEDOS_DEBUG) {
@@ -1382,6 +1396,27 @@ UUFlowManager.getApproveValues = async function (approve_values, permissions, fo
1382
1396
  delete approve_values[sectionField.code];
1383
1397
  }
1384
1398
  }
1399
+ } else if (field.type === "table" && !field.formula && (permissions[field.code] === null || permissions[field.code] !== "editable")) {
1400
+ // Handle table fields: if the table itself is not editable, check if any child has editable permission
1401
+ const childFields = field.fields || [];
1402
+ const hasEditableChild = childFields.some(c => permissions[c.code] === "editable");
1403
+ if (hasEditableChild && Array.isArray(approve_values[field.code])) {
1404
+ // Keep only children that have editable permission (plus _id for row identity)
1405
+ const editableChildCodes = new Set(childFields.filter(c => permissions[c.code] === "editable").map(c => c.code));
1406
+ editableChildCodes.add('_id');
1407
+ approve_values[field.code] = approve_values[field.code].map(row => {
1408
+ const filtered = {};
1409
+ for (const key of Object.keys(row)) {
1410
+ if (editableChildCodes.has(key)) {
1411
+ filtered[key] = row[key];
1412
+ }
1413
+ }
1414
+ return filtered;
1415
+ });
1416
+ } else {
1417
+ // No editable children → delete entire table
1418
+ delete approve_values[field.code];
1419
+ }
1385
1420
  } else if (!field.formula && (permissions[field.code] === null || permissions[field.code] !== "editable")) {
1386
1421
  // Handle regular fields
1387
1422
  delete approve_values[field.code];
@@ -540,9 +540,23 @@ module.exports = {
540
540
 
541
541
  var permissions_values = await UUFlowManager.getApproveValues(myApprove.values, step.permissions, instance.form, instance.form_version);
542
542
 
543
- var change_values = approveManager.getChangeValues(instance.values, permissions_values);
543
+ // For table fields with partial child permissions, merge rows by _id
544
+ var existingValues = instance.values || {};
545
+ for (var pvKey of Object.keys(permissions_values)) {
546
+ if (Array.isArray(permissions_values[pvKey]) && Array.isArray(existingValues[pvKey])) {
547
+ var existingRows = existingValues[pvKey];
548
+ permissions_values[pvKey] = permissions_values[pvKey].map(function(submittedRow) {
549
+ if (!submittedRow._id) return submittedRow;
550
+ var existingRow = existingRows.find(function(r) { return r._id === submittedRow._id; });
551
+ if (!existingRow) return submittedRow;
552
+ return _.extend({}, existingRow, submittedRow);
553
+ });
554
+ }
555
+ }
556
+
557
+ var change_values = approveManager.getChangeValues(existingValues, permissions_values);
544
558
 
545
- setObj.values = _.extend((instance.values || {}), permissions_values);
559
+ setObj.values = _.extend(existingValues, permissions_values);
546
560
  // 计算extras
547
561
  var form = await db.forms.findOne({ _id: instance.form });
548
562
  setObj.extras = await UUFlowManager.caculateExtras(setObj.values, form, instance.form_version);
@@ -183,6 +183,10 @@ actions:
183
183
  label: Delete
184
184
  instance_export:
185
185
  label: Export
186
+ instance_hide:
187
+ label: Hide Instance
188
+ instance_reopen:
189
+ label: Show Instance
186
190
  CustomLabels:
187
191
  instance_action_new_dialog_title: Please select the process
188
192
  instance_action_new_dialog_msg_success: Created successfully!
@@ -218,4 +222,10 @@ CustomLabels:
218
222
  instance_export_last_month: Last Month
219
223
  instance_export_this_year: This Year
220
224
  instance_export_all: All
225
+ instance_action_hide_confirm: Are you sure you want to hide this instance?
226
+ instance_action_hide_msg_success: Instance hidden successfully
227
+ instance_action_hide_msg_failed: Failed to hide instance
228
+ instance_action_reopen_confirm: Are you sure you want to show this instance?
229
+ instance_action_reopen_msg_success: Instance shown successfully
230
+ instance_action_reopen_msg_failed: Failed to show instance
221
231
 
@@ -181,6 +181,10 @@ actions:
181
181
  label: 删除
182
182
  instance_export:
183
183
  label: 导出
184
+ instance_hide:
185
+ label: 隐藏审批单
186
+ instance_reopen:
187
+ label: 显示审批单
184
188
  CustomLabels:
185
189
  instance_action_new_dialog_title: 请选择流程
186
190
  instance_action_new_dialog_msg_success: 创建成功!
@@ -216,3 +220,9 @@ CustomLabels:
216
220
  instance_export_last_month: 上月
217
221
  instance_export_this_year: 本年度
218
222
  instance_export_all: 所有
223
+ instance_action_hide_confirm: 确认要隐藏此审批单吗?
224
+ instance_action_hide_msg_success: 隐藏审批单成功
225
+ instance_action_hide_msg_failed: 隐藏审批单失败
226
+ instance_action_reopen_confirm: 确认要显示此审批单吗?
227
+ instance_action_reopen_msg_success: 显示审批单成功
228
+ instance_action_reopen_msg_failed: 显示审批单失败
@@ -54,15 +54,29 @@ amis_schema: |-
54
54
  },
55
55
  "actionType": "ajax"
56
56
  },
57
+ {
58
+ "componentId": "",
59
+ "args": {
60
+ },
61
+ "actionType": "closeDrawer"
62
+ },
57
63
  {
58
64
  "actionType": "custom",
59
- "script": "\nconst {instance, appId, objectName} = event.data;\nconsole.log(`instance===`);doAction({\n actionType: 'link',\n args: {\n blank: false,\n link: `/app/${appId}/instances/view/${instance._id}?side_object=instances&side_listview_id=draft&additionalFilters=&flowId=&categoryId=`\n }\n});\n"
65
+ "script": "const {instance, appId, objectName} = event.data;\nconsole.log(`instance===`);doAction({\n actionType: 'link',\n args: {\n blank: false,\n link: `/app/${appId}/instances/view/${instance._id}?side_object=instances&side_listview_id=draft&additionalFilters=&flowId=&categoryId=`\n }\n});\n;"
66
+ },
67
+ {
68
+ "actionType": "wait",
69
+ "args": {
70
+ "time": 500
71
+ }
60
72
  },
61
73
  {
62
- "componentId": "",
63
- "args": {
74
+ "actionType": "custom",
75
+ "script":"window.$('.list-view-btn-reload').click()"
64
76
  },
65
- "actionType": "closeDrawer"
77
+ {
78
+ "actionType": "custom",
79
+ "script":"window.postMessage({ type: 'approval-tree-menu:reload' }, '*')"
66
80
  }
67
81
  ]
68
82
  }
@@ -1,6 +1,69 @@
1
1
  name: instance_hide
2
- is_enable: false
3
- label: 隐藏
2
+ is_enable: true
3
+ label: 隐藏审批单
4
4
  'on': record_only
5
5
  type: amis_button
6
6
  visible: true
7
+ sort: 2100
8
+ amis_schema: |-
9
+ {
10
+ "type": "service",
11
+ "body": [
12
+ {
13
+ "type": "button",
14
+ "label": "${'CustomAction.instances.instance_hide' | t}",
15
+ "id": "u:instance_hide",
16
+ "className": " ",
17
+ "confirmText": "${'CustomLabels.instance_action_hide_confirm' | t}",
18
+ "onEvent": {
19
+ "click": {
20
+ "actions": [
21
+ {
22
+ "args": {
23
+ "api": {
24
+ "url": "${context.rootUrl}/api/workflow/instance/hide",
25
+ "method": "post",
26
+ "data": {
27
+ "instance_id": "${record._id}",
28
+ "is_hidden": true
29
+ },
30
+ "headers": {
31
+ "Authorization": "Bearer ${context.tenantId},${context.authToken}"
32
+ },
33
+ "adaptor": "return response.status == 200 ? {data: {...payload}, status: 0, msg: payload.message || t('instance_action_hide_msg_success')} : {...payload, status: 1, msg: payload.message || t('instance_action_hide_msg_failed')};"
34
+ },
35
+ "messages": {}
36
+ },
37
+ "actionType": "ajax"
38
+ },
39
+ {
40
+ "actionType": "wait",
41
+ "args": {
42
+ "time": 500
43
+ }
44
+ },
45
+ {
46
+ "actionType": "custom",
47
+ "script": "SteedosWorkflow.Instance.changed=false; $('.steedos-workflow-reload-btn').trigger('click')"
48
+ },
49
+ {
50
+ "actionType": "custom",
51
+ "script": "window.$('.list-view-btn-reload').click()"
52
+ },
53
+ {
54
+ "actionType": "custom",
55
+ "script": "window.postMessage({ type: 'approval-tree-menu:reload' }, '*')"
56
+ }
57
+ ],
58
+ "weight": 0
59
+ }
60
+ },
61
+ "visibleOn": "(this.record.box === 'monitor' || this.record.box === 'completed') && this.record.state === 'completed' && !this.record.is_hidden && context.user.is_space_admin"
62
+ }
63
+ ],
64
+ "regions": [
65
+ "body"
66
+ ],
67
+ "bodyClassName": "p-0",
68
+ "id": "u:instance_hide_service"
69
+ }
@@ -1,7 +1,69 @@
1
1
  name: instance_reopen
2
- is_enable: false
3
- label: 取消隐藏
2
+ is_enable: true
3
+ label: 显示审批单
4
4
  'on': record_only
5
5
  type: amis_button
6
6
  visible: true
7
- sort: 990
7
+ sort: 2110
8
+ amis_schema: |-
9
+ {
10
+ "type": "service",
11
+ "body": [
12
+ {
13
+ "type": "button",
14
+ "label": "${'CustomAction.instances.instance_reopen' | t}",
15
+ "id": "u:instance_reopen",
16
+ "className": " ",
17
+ "confirmText": "${'CustomLabels.instance_action_reopen_confirm' | t}",
18
+ "onEvent": {
19
+ "click": {
20
+ "actions": [
21
+ {
22
+ "args": {
23
+ "api": {
24
+ "url": "${context.rootUrl}/api/workflow/instance/hide",
25
+ "method": "post",
26
+ "data": {
27
+ "instance_id": "${record._id}",
28
+ "is_hidden": false
29
+ },
30
+ "headers": {
31
+ "Authorization": "Bearer ${context.tenantId},${context.authToken}"
32
+ },
33
+ "adaptor": "return response.status == 200 ? {data: {...payload}, status: 0, msg: payload.message || t('instance_action_reopen_msg_success')} : {...payload, status: 1, msg: payload.message || t('instance_action_reopen_msg_failed')};"
34
+ },
35
+ "messages": {}
36
+ },
37
+ "actionType": "ajax"
38
+ },
39
+ {
40
+ "actionType": "wait",
41
+ "args": {
42
+ "time": 500
43
+ }
44
+ },
45
+ {
46
+ "actionType": "custom",
47
+ "script": "SteedosWorkflow.Instance.changed=false; $('.steedos-workflow-reload-btn').trigger('click')"
48
+ },
49
+ {
50
+ "actionType": "custom",
51
+ "script": "window.$('.list-view-btn-reload').click()"
52
+ },
53
+ {
54
+ "actionType": "custom",
55
+ "script": "window.postMessage({ type: 'approval-tree-menu:reload' }, '*')"
56
+ }
57
+ ],
58
+ "weight": 0
59
+ }
60
+ },
61
+ "visibleOn": "(this.record.box === 'monitor' || this.record.box === 'completed') && this.record.state === 'completed' && this.record.is_hidden === true && context.user.is_space_admin"
62
+ }
63
+ ],
64
+ "regions": [
65
+ "body"
66
+ ],
67
+ "bodyClassName": "p-0",
68
+ "id": "u:instance_reopen_service"
69
+ }
@@ -18,7 +18,7 @@ amis_schema: |-
18
18
  "method": "post",
19
19
  "sendOn": "",
20
20
  "requestAdaptor": "var _SteedosUI$getRef$get, _approveValues$next_s;\nconst formValues = context._scoped.getComponentById(\"instance_form\").getValues();const _formValues = JSON.parse(JSON.stringify(formValues)); if(_formValues){delete _formValues.__applicant} \nconst approveValues = (_SteedosUI$getRef$get = context._scoped.getComponentById(\"instance_approval\")) === null || _SteedosUI$getRef$get === void 0 ? void 0 : _SteedosUI$getRef$get.getValues();\nlet nextUsers = approveValues === null || approveValues === void 0 ? void 0 : approveValues.next_users;\nif (_.isString(nextUsers)) {\n nextUsers = [approveValues.next_users];\n}\nconst instance = context.record;\nconst body = {\n instance: {\n _id: instance._id,\n applicant: formValues.__applicant || formValues.applicant.user,\n submitter: formValues.submitter,\n traces: [{\n _id: instance.trace._id,\n step: instance.step._id,\n approves: [{\n _id: instance.approve._id,\n next_steps: [{\n step: approveValues === null || approveValues === void 0 || (_approveValues$next_s = approveValues.next_step) === null || _approveValues$next_s === void 0 ? void 0 : _approveValues$next_s._id,\n users: nextUsers\n }],\n description: approveValues === null || approveValues === void 0 ? void 0 : approveValues.suggestion,\n values: _formValues\n }]\n }]\n }\n};\napi.data = body;\nreturn api;",
21
- "adaptor": "window.SteedosWorkflow.Instance.changed = false; if (payload.instance == \"upgraded\") { window.setTimeout(function(){ $('.steedos-workflow-reload-btn').trigger('click'); }, 2000); return {...payload, status: 1, msg: t('instance_action_instance_save_msg_upgraded')}; } \n return payload.instance != false ? {data: payload, status: 0, msg: t('instance_action_instance_save_msg_success')} : {...payload, status: 1, msg: t('instance_action_instance_save_msg_failed')};",
21
+ "adaptor": "window.SteedosWorkflow.Instance.changed = false; if (payload.instance == \"upgraded\") { window.setTimeout(function(){ $('.steedos-workflow-reload-btn').trigger('click'); }, 2000); return {...payload, status: 1, msg: t('instance_action_instance_save_msg_upgraded')}; } \n var _silent = window.__instance_save_silent; return payload.instance != false ? {data: payload, status: 0, msg: _silent ? '' : t('instance_action_instance_save_msg_success')} : {...payload, status: 1, msg: t('instance_action_instance_save_msg_failed')};",
22
22
  "data": {
23
23
  "&": "$$"
24
24
  }
@@ -34,7 +34,7 @@ amis_schema: |-
34
34
  "method": "post",
35
35
  "sendOn": "",
36
36
  "requestAdaptor": "var _SteedosUI$getRef$get, _approveValues$next_s;\nconst formValues = context._scoped.getComponentById(\"instance_form\").getValues();\nconst approveValues = (_SteedosUI$getRef$get = context._scoped.getComponentById(\"instance_approval\")) === null || _SteedosUI$getRef$get === void 0 ? void 0 : _SteedosUI$getRef$get.getValues();\nlet nextUsers = approveValues === null || approveValues === void 0 ? void 0 : approveValues.next_users;\nif (_.isString(nextUsers)) {\n nextUsers = [approveValues.next_users];\n}\nconst instance = context.record;\nconst body = {\n approve: {\n id: instance.approve._id,\n instance: instance._id,\n trace: instance.trace._id,\n next_steps: [{\n step: approveValues === null || approveValues === void 0 || (_approveValues$next_s = approveValues.next_step) === null || _approveValues$next_s === void 0 ? void 0 : _approveValues$next_s._id,\n users: nextUsers\n }],\n description: approveValues === null || approveValues === void 0 ? void 0 : approveValues.suggestion,\n judge: approveValues === null || approveValues === void 0 ? void 0 : approveValues.judge,\n values: formValues\n }\n};\napi.data = body;\nreturn api;",
37
- "adaptor": "window.SteedosWorkflow.Instance.changed = false; return payload.instance ? {...payload, status: 0, msg: t('instance_action_instance_save_msg_success')} : {...payload, status: 1, msg: t('instance_action_instance_save_msg_failed')};",
37
+ "adaptor": "window.SteedosWorkflow.Instance.changed = false; var _silent = window.__instance_save_silent; return payload.instance ? {...payload, status: 0, msg: _silent ? '' : t('instance_action_instance_save_msg_success')} : {...payload, status: 1, msg: t('instance_action_instance_save_msg_failed')};",
38
38
  "data": {
39
39
  "&": "$$"
40
40
  }
@@ -13,12 +13,8 @@ amis_schema: |-
13
13
  {
14
14
  "componentId": "",
15
15
  "args": {
16
- "url": "${context.rootUrl}/workflow/space/${context.tenantId}/print/${record._id}",
17
- "params": {
18
- "box": "monitor",
19
- "print_is_show_traces": "1",
20
- "print_is_show_attachments": "1"
21
- }
16
+ "url": "${context.rootUrl}/api/workflow/instance/${record._id}",
17
+ "blank": false
22
18
  },
23
19
  "actionType": "url"
24
20
  }
@@ -0,0 +1,5 @@
1
+ name: is_hidden
2
+ label: Hidden
3
+ type: boolean
4
+ defaultValue: false
5
+ visible_on: "${false}"
@@ -107,7 +107,7 @@
107
107
  "actions": [
108
108
  {
109
109
  "actionType": "custom",
110
- "script": "doAction({actionType: 'setValue', componentId: 'u:print-width', args: {value: Number(event.data.value)}}); $('.steedos-instance-related-view-wrapper').css('width', event.data.value + 'mm'); var orientation = event.data.value === '297' ? 'landscape' : 'portrait'; var styleEl = document.getElementById('print-page-orientation'); if (!styleEl) { styleEl = document.createElement('style'); styleEl.id = 'print-page-orientation'; document.head.appendChild(styleEl); } styleEl.textContent = '@page { size: A4 ' + orientation + '; }';"
110
+ "script": "doAction({actionType: 'setValue', componentId: 'u:print-width', args: {value: Number(event.data.value)}}); $('.steedos-instance-related-view-wrapper').css('width', event.data.value + 'mm'); var el=document.getElementById('print-page-orientation'); if(el){ var v=Number(event.data.value); el.textContent = v && v !== 210 ? '@media print { .steedos-instance-related-view-wrapper { width: ' + v + 'mm !important; } }' : ''; }"
111
111
  }
112
112
  ]
113
113
  }
@@ -126,7 +126,7 @@
126
126
  "actions": [
127
127
  {
128
128
  "actionType": "custom",
129
- "script": "$('.steedos-instance-related-view-wrapper').css('width', event.data.value + 'mm');"
129
+ "script": "$('.steedos-instance-related-view-wrapper').css('width', event.data.value + 'mm'); var el=document.getElementById('print-page-orientation'); if(el){ var v=Number(event.data.value); el.textContent = v && v !== 210 ? '@media print { .steedos-instance-related-view-wrapper { width: ' + v + 'mm !important; } }' : ''; }"
130
130
  }
131
131
  ]
132
132
  }
@@ -234,7 +234,8 @@
234
234
  "editorState": "default",
235
235
  "css": {
236
236
  "body": {
237
- "background-color": "#C0C0C0"
237
+ "background-color": "#C0C0C0",
238
+ "overflow-x": "hidden !important"
238
239
  },
239
240
  "body > .bg-slate-50": {
240
241
  "background-color": "transparent !important"
@@ -244,6 +245,9 @@
244
245
  "margin": "0 auto",
245
246
  "background-color": "#fff"
246
247
  },
248
+ ".steedos-instance-related-view-wrapper .steedos-amis-instance-view-content": {
249
+ "min-width": "0 !important"
250
+ },
247
251
  ".steedos-instance-related-view-wrapper > .antd-Page-content": {
248
252
  "transition": "width 0.5s ease-in-out"
249
253
  },
@@ -259,6 +263,10 @@
259
263
  "padding": "0 15px",
260
264
  "transition": "width 0.5s ease-in-out"
261
265
  },
266
+ ".steedos-instance-related-view-wrapper .instance-approve-history table td": {
267
+ "min-width": "0 !important",
268
+ "width": "auto !important"
269
+ },
262
270
  ".steedos-instance-related-view-wrapper .instance-name": {
263
271
  "margin": "10px 0 5px 0"
264
272
  },
@@ -378,6 +386,7 @@
378
386
  },
379
387
  ".steedos-instance-related-view-wrapper": {
380
388
  "display": "block !important",
389
+ "width": "100% !important",
381
390
  "height": "auto !important",
382
391
  "margin": "0 auto !important",
383
392
  "overflow": "visible !important",
@@ -429,7 +438,7 @@
429
438
  "-webkit-print-color-adjust": "exact !important",
430
439
  "print-color-adjust": "exact !important",
431
440
  "table-layout": "auto !important",
432
- "width": "100% !important",
441
+ "min-width": "100% !important",
433
442
  "border-collapse": "collapse !important"
434
443
  },
435
444
  ".steedos-instance-related-view-wrapper .steedos-input-table .antd-Table-table thead": {
@@ -471,6 +480,25 @@
471
480
  ".steedos-instance-related-view-wrapper .instance-approve-history .antd-Table-table tr td": {
472
481
  "border-bottom": "1px solid #e8e8e8 !important"
473
482
  },
483
+ ".steedos-instance-related-view-wrapper a, .steedos-instance-related-view-wrapper a:link, .steedos-instance-related-view-wrapper a:visited, .steedos-instance-related-view-wrapper a:hover, .steedos-instance-related-view-wrapper a:active": {
484
+ "color": "inherit !important",
485
+ "text-decoration": "none !important",
486
+ "cursor": "text !important",
487
+ "pointer-events": "none !important",
488
+ "display": "contents !important"
489
+ },
490
+ ".steedos-instance-related-view-wrapper .instance-approve-history, .steedos-instance-related-view-wrapper .instance-approve-history *": {
491
+ "color": "inherit !important",
492
+ "background-color": "transparent !important"
493
+ },
494
+ ".steedos-instance-related-view-wrapper .steedos-field-lookup-wrapper, .steedos-instance-related-view-wrapper .steedos-field-lookup-each, .steedos-instance-related-view-wrapper .steedos-field-lookup-each > .antd-Form-item, .steedos-instance-related-view-wrapper .steedos-field-lookup-each .antd-Form-static, .steedos-instance-related-view-wrapper .steedos-field-lookup-each .antd-Form-control, .steedos-instance-related-view-wrapper .steedos-field-lookup-each .antd-TplField, .steedos-instance-related-view-wrapper .steedos-field-lookup-each .antd-TplField > span": {
495
+ "padding": "0 !important",
496
+ "margin": "0 !important",
497
+ "min-height": "0 !important"
498
+ },
499
+ ".steedos-instance-related-view-wrapper .steedos-field-lookup-each .antd-Form-control": {
500
+ "padding-left": "12px !important"
501
+ },
474
502
  ".antd-Table-content.scroll-end": {
475
503
  "direction": "rtl !important"
476
504
  },
@@ -491,7 +519,7 @@
491
519
  "actions": [
492
520
  {
493
521
  "actionType": "custom",
494
- "script": "document.querySelectorAll('link[rel=\"stylesheet\"]').forEach(link => { if (link.href.includes('salesforce-lightning-design-system.min.css')) { link.remove(); } }); for(var si=0;si<document.styleSheets.length;si++){try{var sh=document.styleSheets[si];if(!sh.href||!sh.href.match(/index-[A-Za-z0-9]+\\.css/))continue;for(var ri=sh.cssRules.length-1;ri>=0;ri--){var sel=sh.cssRules[ri].selectorText||'';if(sel.match(/^::?-webkit-scrollbar/))sh.deleteRule(ri);}}catch(e){}} var styleEl=document.createElement('style'); styleEl.id='print-page-orientation'; styleEl.textContent='@page { size: A4 portrait; }'; document.head.appendChild(styleEl); document.addEventListener('scroll',function(e){var t=e.target;if(t&&t.classList&&t.classList.contains('antd-Table-content')){if(window._isPrinting)return;var sl=t.scrollLeft;var max=t.scrollWidth-t.clientWidth;if(sl>0&&sl>=max-1){t.classList.add('scroll-end');}else{t.classList.remove('scroll-end');}}},true); window.addEventListener('beforeprint',function(){window._isPrinting=true;}); window.addEventListener('afterprint',function(){window._isPrinting=false;});"
522
+ "script": "document.querySelectorAll('link[rel=\"stylesheet\"]').forEach(link => { if (link.href.includes('salesforce-lightning-design-system.min.css')) { link.remove(); } }); for(var si=0;si<document.styleSheets.length;si++){try{var sh=document.styleSheets[si];if(!sh.href||!sh.href.match(/index-[A-Za-z0-9]+\\.css/))continue;for(var ri=sh.cssRules.length-1;ri>=0;ri--){var sel=sh.cssRules[ri].selectorText||'';if(sel.match(/^::?-webkit-scrollbar/))sh.deleteRule(ri);}}catch(e){}} var styleEl=document.createElement('style'); styleEl.id='print-page-orientation'; styleEl.textContent=''; document.head.appendChild(styleEl); document.addEventListener('scroll',function(e){var t=e.target;if(t&&t.classList&&t.classList.contains('antd-Table-content')){if(window._isPrinting)return;var sl=t.scrollLeft;var max=t.scrollWidth-t.clientWidth;if(sl>0&&sl>=max-1){t.classList.add('scroll-end');}else{t.classList.remove('scroll-end');}}},true); window.addEventListener('beforeprint',function(){window._isPrinting=true;}); window.addEventListener('afterprint',function(){window._isPrinting=false;});"
495
523
  },
496
524
  {
497
525
  "actionType": "custom",