-
Notifications
You must be signed in to change notification settings - Fork 0
/
options-config.ts
104 lines (99 loc) · 3.09 KB
/
options-config.ts
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
type SettingType = "boolean" | "string" | "integer" | OptionSettingType | "button";
type OptionSettingType = "menulist" | "radiobuttons";
interface ISetting {
key: string,
title: string,
type: SettingType,
description?: string,
}
interface IOptionSetting extends ISetting {
type: OptionSettingType,
optionValues: OptionValue[],
}
interface IButtonSetting extends ISetting {
text: string
}
type OptionValue = { value: string, label: string }
/* This file defines the settings presented to the user in the inline options. It must define a variable named optionsConfig as an
* array of settings objects. Each setting object must have the following properties on it:
*
* key: The key for the setting, as passed to browser.storage.local.get and .set to read and write the setting. Also used as the id for the setting controls.
* title: The main text that appears on the left of the setting
* description: (optional) The smaller grey text that appears below the title
* type: The type of control to use for the setting. This may be one of:
* boolean
* string
* integer
* menulist
* radiobuttons
* button
*
* For menulist and radiobuttons types, a further property must be provided:
*
* optionValues: an array of objects with properties {value, label}. Each one represents one of the values which may be picked by the user.
*
* For the button type, a further property must be provided:
*
* text: The text to display on the button itself
*
* Button types work slightly differently in that they do not get or set values from browser.storage.local, but instead when
* clicked will send their key value as a message (using browser.runtime.sendMessage).
*/
const optionsConfig: ISetting[] = [
{
key: "1",
title: "Boolean no description",
type: "boolean",
},
{
key: "2",
title: "Boolean with a description",
type: "boolean",
description: "A description",
},
{
key: "3",
title: "Integer",
type: "integer",
description: "A description",
},
{
key: "4",
title: "String",
type: "string",
description: "A description",
},
{
key: "5",
title: "String no description",
type: "string",
},
{
key: "6",
title: "Dropdown",
type: "menulist",
optionValues: [
{ value: "1", label: "Option one" },
{ value: "2", label: "Option two" },
{ value: "3", label: "Option three" },
]
} as IOptionSetting,
{
key: "7",
title: "Radio button choices",
description: "Radio button description",
type: "radiobuttons",
optionValues: [
{ value: "c", label: "Option one" },
{ value: "b", label: "Option two" },
{ value: "a", label: "Option three" },
]
} as IOptionSetting,
{
key: "Command:TestButton",
title: "Button title",
description: "Button description",
text: "A Button ",
type: "button",
} as IButtonSetting
];