@grafana/create-plugin 5.3.1 → 5.3.3-canary.1041.1ab47f9.0

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ # v5.3.2 (Thu Aug 22 2024)
2
+
3
+ #### 🐛 Bug Fix
4
+
5
+ - Create Plugin: Fix missing module.ts in sourcemaps [#1071](https://github.com/grafana/plugin-tools/pull/1071) ([@jackw](https://github.com/jackw))
6
+
7
+ #### Authors: 1
8
+
9
+ - Jack Westbrook ([@jackw](https://github.com/jackw))
10
+
11
+ ---
12
+
1
13
  # v5.3.1 (Wed Aug 21 2024)
2
14
 
3
15
  #### 🐛 Bug Fix
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grafana/create-plugin",
3
- "version": "5.3.1",
3
+ "version": "5.3.3-canary.1041.1ab47f9.0",
4
4
  "repository": {
5
5
  "directory": "packages/create-plugin",
6
6
  "url": "https://github.com/grafana/plugin-tools"
@@ -87,5 +87,5 @@
87
87
  "engines": {
88
88
  "node": ">=20"
89
89
  },
90
- "gitHead": "acc595c46c832320e3e90f7db18dd69728b4ecd8"
90
+ "gitHead": "1ab47f9435853af26327c194ec7eece7b6ad533c"
91
91
  }
@@ -30,6 +30,8 @@ export const AppConfig = ({ plugin }: AppConfigProps) => {
30
30
  isApiKeySet: Boolean(secureJsonFields?.apiKey),
31
31
  });
32
32
 
33
+ const isSubmitDisabled = Boolean(!state.apiUrl || (!state.isApiKeySet && !state.apiKey));
34
+
33
35
  const onResetApiKey = () =>
34
36
  setState({
35
37
  ...state,
@@ -44,8 +46,29 @@ export const AppConfig = ({ plugin }: AppConfigProps) => {
44
46
  });
45
47
  };
46
48
 
49
+ const onSubmit = () => {
50
+ if (isSubmitDisabled) {
51
+ return;
52
+ }
53
+
54
+ updatePluginAndReload(plugin.meta.id, {
55
+ enabled,
56
+ pinned,
57
+ jsonData: {
58
+ apiUrl: state.apiUrl,
59
+ },
60
+ // This cannot be queried later by the frontend.
61
+ // We don't want to override it in case it was set previously and left untouched now.
62
+ secureJsonData: state.isApiKeySet
63
+ ? undefined
64
+ : {
65
+ apiKey: state.apiKey,
66
+ },
67
+ });
68
+ };
69
+
47
70
  return (
48
- <div data-testid={testIds.appConfig.container}>
71
+ <form onSubmit={onSubmit}>
49
72
  <FieldSet label="API Settings">
50
73
  <Field label="API Key" description="A secret key for authenticating to our custom API">
51
74
  <SecretInput
@@ -77,29 +100,13 @@ export const AppConfig = ({ plugin }: AppConfigProps) => {
77
100
  <Button
78
101
  type="submit"
79
102
  data-testid={testIds.appConfig.submit}
80
- onClick={() =>
81
- updatePluginAndReload(plugin.meta.id, {
82
- enabled,
83
- pinned,
84
- jsonData: {
85
- apiUrl: state.apiUrl,
86
- },
87
- // This cannot be queried later by the frontend.
88
- // We don't want to override it in case it was set previously and left untouched now.
89
- secureJsonData: state.isApiKeySet
90
- ? undefined
91
- : {
92
- apiKey: state.apiKey,
93
- },
94
- })
95
- }
96
- disabled={Boolean(!state.apiUrl || (!state.isApiKeySet && !state.apiKey))}
103
+ disabled={isSubmitDisabled}
97
104
  >
98
105
  Save API settings
99
106
  </Button>
100
107
  </div>
101
108
  </FieldSet>
102
- </div>
109
+ </form>
103
110
  );
104
111
  };
105
112
 
@@ -1,6 +1,5 @@
1
1
  export const testIds = {
2
2
  appConfig: {
3
- container: 'data-testid ac-container',
4
3
  apiKey: 'data-testid ac-api-key',
5
4
  apiUrl: 'data-testid ac-api-url',
6
5
  submit: 'data-testid ac-submit-form',
@@ -98,6 +98,18 @@ const config = async (env): Promise<Configuration> => {
98
98
 
99
99
  module: {
100
100
  rules: [
101
+ // This must come first in the rules array otherwise it breaks sourcemaps.
102
+ {
103
+ test: /src\/(?:.*\/)?module\.tsx?$/,
104
+ use: [
105
+ {
106
+ loader: 'imports-loader',
107
+ options: {
108
+ imports: `side-effects grafana-public-path`,
109
+ },
110
+ },
111
+ ],
112
+ },
101
113
  {
102
114
  exclude: /(node_modules)/,
103
115
  test: /\.[tj]sx?$/,
@@ -118,17 +130,6 @@ const config = async (env): Promise<Configuration> => {
118
130
  },
119
131
  },
120
132
  },
121
- {
122
- test: /src\/(?:.*\/)?module\.tsx?$/,
123
- use: [
124
- {
125
- loader: 'imports-loader',
126
- options: {
127
- imports: `side-effects grafana-public-path`,
128
- },
129
- },
130
- ],
131
- },
132
133
  {
133
134
  test: /\.css$/,
134
135
  use: ['style-loader', 'css-loader'],
@@ -33,6 +33,8 @@ export const AppConfig = ({ plugin }: Props) => {
33
33
  isApiKeySet: Boolean(jsonData?.isApiKeySet),
34
34
  });
35
35
 
36
+ const isSubmitDisabled = Boolean(!state.apiUrl || (!state.isApiKeySet && !state.apiKey));
37
+
36
38
  const onResetApiKey = () =>
37
39
  setState({
38
40
  ...state,
@@ -54,51 +56,26 @@ export const AppConfig = ({ plugin }: Props) => {
54
56
  });
55
57
  };
56
58
 
57
- return (
58
- <div data-testid={testIds.appConfig.container}>
59
- {/* ENABLE / DISABLE PLUGIN */}
60
- <FieldSet label="Enable / Disable">
61
- {!enabled && (
62
- <>
63
- <div className={s.colorWeak}>The plugin is currently not enabled.</div>
64
- <Button
65
- className={s.marginTop}
66
- variant="primary"
67
- onClick={() =>
68
- updatePluginAndReload(plugin.meta.id, {
69
- enabled: true,
70
- pinned: true,
71
- jsonData,
72
- })
73
- }
74
- >
75
- Enable plugin
76
- </Button>
77
- </>
78
- )}
79
-
80
- {/* Disable the plugin */}
81
- {enabled && (
82
- <>
83
- <div className={s.colorWeak}>The plugin is currently enabled.</div>
84
- <Button
85
- className={s.marginTop}
86
- variant="destructive"
87
- onClick={() =>
88
- updatePluginAndReload(plugin.meta.id, {
89
- enabled: false,
90
- pinned: false,
91
- jsonData,
92
- })
93
- }
94
- >
95
- Disable plugin
96
- </Button>
97
- </>
98
- )}
99
- </FieldSet>
59
+ const onSubmit = () => {
60
+ updatePluginAndReload(plugin.meta.id, {
61
+ enabled,
62
+ pinned,
63
+ jsonData: {
64
+ apiUrl: state.apiUrl,
65
+ isApiKeySet: true,
66
+ },
67
+ // This cannot be queried later by the frontend.
68
+ // We don't want to override it in case it was set previously and left untouched now.
69
+ secureJsonData: state.isApiKeySet
70
+ ? undefined
71
+ : {
72
+ apiKey: state.apiKey,
73
+ },
74
+ });
75
+ };
100
76
 
101
- {/* CUSTOM SETTINGS */}
77
+ return (
78
+ <form onSubmit={onSubmit}>
102
79
  <FieldSet label="API Settings" className={s.marginTopXl}>
103
80
  {/* API Key */}
104
81
  <Field label="API Key" description="A secret key for authenticating to our custom API">
@@ -128,33 +105,12 @@ export const AppConfig = ({ plugin }: Props) => {
128
105
  </Field>
129
106
 
130
107
  <div className={s.marginTop}>
131
- <Button
132
- type="submit"
133
- data-testid={testIds.appConfig.submit}
134
- onClick={() =>
135
- updatePluginAndReload(plugin.meta.id, {
136
- enabled,
137
- pinned,
138
- jsonData: {
139
- apiUrl: state.apiUrl,
140
- isApiKeySet: true,
141
- },
142
- // This cannot be queried later by the frontend.
143
- // We don't want to override it in case it was set previously and left untouched now.
144
- secureJsonData: state.isApiKeySet
145
- ? undefined
146
- : {
147
- apiKey: state.apiKey,
148
- },
149
- })
150
- }
151
- disabled={Boolean(!state.apiUrl || (!state.isApiKeySet && !state.apiKey))}
152
- >
108
+ <Button type="submit" data-testid={testIds.appConfig.submit} disabled={isSubmitDisabled}>
153
109
  Save API settings
154
110
  </Button>
155
111
  </div>
156
112
  </FieldSet>
157
- </div>
113
+ </form>
158
114
  );
159
115
  };
160
116