-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.ts
More file actions
55 lines (47 loc) · 2.47 KB
/
index.ts
File metadata and controls
55 lines (47 loc) · 2.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import { AdminForthPlugin } from "adminforth";
import type { IAdminForth, AdminForthResource, AdminForthComponentDeclaration } from "adminforth";
import type { PluginOptions } from './types.js';
export default class extends AdminForthPlugin {
options: PluginOptions;
constructor(options: PluginOptions) {
super(options, import.meta.url);
this.options = options;
}
async modifyResourceConfig(adminforth: IAdminForth, resourceConfig: AdminForthResource) {
super.modifyResourceConfig(adminforth, resourceConfig);
if ( !resourceConfig.options.pageInjections ) {
resourceConfig.options.pageInjections = {};
}
if ( !resourceConfig.options.pageInjections.list ) {
resourceConfig.options.pageInjections.list = {};
}
if ( this.options.makeCloneButtonAsQuickAction ) {
if ( !resourceConfig.options.pageInjections.list.customActionIcons ) {
resourceConfig.options.pageInjections.list.customActionIcons = [];
}
(resourceConfig.options.pageInjections.list.customActionIcons as AdminForthComponentDeclaration[]).push(
{ file: this.componentPath('CloneRowButton.vue'), meta: { pluginInstanceId: this.pluginInstanceId, resourceId: this.resourceConfig.resourceId } }
);
} else {
//TODO: after customActionIconsThreeDotsMenuItems will be released in adminforth.main, remove ts-ignore
//@ts-ignore
if ( !resourceConfig.options.pageInjections.list.customActionIconsThreeDotsMenuItems ) {
//@ts-ignore
resourceConfig.options.pageInjections.list.customActionIconsThreeDotsMenuItems = [];
}
//@ts-ignore
(resourceConfig.options.pageInjections.list.customActionIconsThreeDotsMenuItems as AdminForthComponentDeclaration[]).push(
{ file: this.componentPath('CloneRowThreeDots.vue'), meta: { pluginInstanceId: this.pluginInstanceId, resourceId: this.resourceConfig.resourceId } }
);
}
// simply modify resourceConfig or adminforth.config. You can get access to plugin options via this.options;
}
validateConfigAfterDiscover(adminforth: IAdminForth, resourceConfig: AdminForthResource) {
// optional method where you can safely check field types after database discovery was performed
}
instanceUniqueRepresentation(pluginOptions: any) : string {
// optional method to return unique string representation of plugin instance.
// Needed if plugin can have multiple instances on one resource
return `${this.resourceConfig.resourceId}-clone-row`;
}
}