@perses-dev/dashboards 0.19.0 → 0.20.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.
@@ -122,7 +122,7 @@ function VariableEditor(props) {
122
122
  display: 'flex',
123
123
  alignItems: 'center',
124
124
  padding: (theme)=>theme.spacing(1, 2),
125
- borderBottom: (theme)=>`1px solid ${theme.palette.grey[100]}`
125
+ borderBottom: (theme)=>`1px solid ${theme.palette.divider}`
126
126
  },
127
127
  children: [
128
128
  /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Typography, {
@@ -143,6 +143,7 @@ function VariableEditor(props) {
143
143
  children: "Apply"
144
144
  }),
145
145
  /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Button, {
146
+ color: "secondary",
146
147
  variant: "outlined",
147
148
  onClick: ()=>{
148
149
  props.onCancel();
@@ -172,7 +173,6 @@ function VariableEditor(props) {
172
173
  children: error
173
174
  }, error)),
174
175
  /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.TableContainer, {
175
- component: _material.Paper,
176
176
  children: /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.Table, {
177
177
  sx: {
178
178
  minWidth: 650
@@ -182,16 +182,16 @@ function VariableEditor(props) {
182
182
  /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.TableHead, {
183
183
  children: /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.TableRow, {
184
184
  children: [
185
- /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.TableCell, {
185
+ /*#__PURE__*/ (0, _jsxRuntime.jsx)(TableCell, {
186
186
  children: "Visibility"
187
187
  }),
188
- /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.TableCell, {
188
+ /*#__PURE__*/ (0, _jsxRuntime.jsx)(TableCell, {
189
189
  children: "Variable Name"
190
190
  }),
191
- /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.TableCell, {
191
+ /*#__PURE__*/ (0, _jsxRuntime.jsx)(TableCell, {
192
192
  children: "Variable Type"
193
193
  }),
194
- /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.TableCell, {
194
+ /*#__PURE__*/ (0, _jsxRuntime.jsx)(TableCell, {
195
195
  align: "right",
196
196
  children: "Action"
197
197
  })
@@ -203,7 +203,7 @@ function VariableEditor(props) {
203
203
  var ref;
204
204
  /*#__PURE__*/ return (0, _jsxRuntime.jsxs)(_material.TableRow, {
205
205
  children: [
206
- /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.TableCell, {
206
+ /*#__PURE__*/ (0, _jsxRuntime.jsx)(TableCell, {
207
207
  component: "th",
208
208
  scope: "row",
209
209
  children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Switch, {
@@ -213,7 +213,7 @@ function VariableEditor(props) {
213
213
  }
214
214
  })
215
215
  }),
216
- /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.TableCell, {
216
+ /*#__PURE__*/ (0, _jsxRuntime.jsx)(TableCell, {
217
217
  component: "th",
218
218
  scope: "row",
219
219
  sx: {
@@ -221,10 +221,10 @@ function VariableEditor(props) {
221
221
  },
222
222
  children: v.spec.name
223
223
  }),
224
- /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.TableCell, {
224
+ /*#__PURE__*/ (0, _jsxRuntime.jsx)(TableCell, {
225
225
  children: v.kind
226
226
  }),
227
- /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.TableCell, {
227
+ /*#__PURE__*/ (0, _jsxRuntime.jsxs)(TableCell, {
228
228
  align: "right",
229
229
  children: [
230
230
  /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.IconButton, {
@@ -271,3 +271,6 @@ function VariableEditor(props) {
271
271
  ]
272
272
  });
273
273
  }
274
+ const TableCell = (0, _material.styled)(_material.TableCell)(({ theme })=>({
275
+ borderBottom: `solid 1px ${theme.palette.divider}`
276
+ }));
@@ -168,7 +168,7 @@ function VariableEditForm({ initialVariableDefinition , onChange , onCancel })
168
168
  display: 'flex',
169
169
  alignItems: 'center',
170
170
  padding: (theme)=>theme.spacing(1, 2),
171
- borderBottom: (theme)=>`1px solid ${theme.palette.grey[100]}`
171
+ borderBottom: (theme)=>`1px solid ${theme.palette.divider}`
172
172
  },
173
173
  children: [
174
174
  /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Typography, {
@@ -191,6 +191,7 @@ function VariableEditForm({ initialVariableDefinition , onChange , onCancel })
191
191
  children: "Update"
192
192
  }),
193
193
  /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Button, {
194
+ color: "secondary",
194
195
  variant: "outlined",
195
196
  onClick: ()=>{
196
197
  onCancel();
@@ -1 +1 @@
1
- {"version":3,"file":"VariableEditor.d.ts","sourceRoot":"","sources":["../../../src/components/Variables/VariableEditor.tsx"],"names":[],"mappings":";AA8BA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAwBtD,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C,QAAQ,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;IAC9D,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,eAkLA"}
1
+ {"version":3,"file":"VariableEditor.d.ts","sourceRoot":"","sources":["../../../src/components/Variables/VariableEditor.tsx"],"names":[],"mappings":";AA8BA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAwBtD,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C,QAAQ,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;IAC9D,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,eAmLA"}
@@ -12,7 +12,7 @@
12
12
  // limitations under the License.
13
13
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
14
14
  import { useState, useMemo } from 'react';
15
- import { Button, Stack, Box, TableContainer, TableBody, TableRow, TableCell, Table, Paper, TableHead, Switch, Typography, IconButton, Alert } from '@mui/material';
15
+ import { Button, Stack, Box, TableContainer, TableBody, TableRow, TableCell as MuiTableCell, Table, TableHead, Switch, Typography, IconButton, Alert, styled } from '@mui/material';
16
16
  import { useImmer } from 'use-immer';
17
17
  import PencilIcon from 'mdi-material-ui/Pencil';
18
18
  import TrashIcon from 'mdi-material-ui/TrashCan';
@@ -109,7 +109,7 @@ export function VariableEditor(props) {
109
109
  display: 'flex',
110
110
  alignItems: 'center',
111
111
  padding: (theme)=>theme.spacing(1, 2),
112
- borderBottom: (theme)=>`1px solid ${theme.palette.grey[100]}`
112
+ borderBottom: (theme)=>`1px solid ${theme.palette.divider}`
113
113
  },
114
114
  children: [
115
115
  /*#__PURE__*/ _jsx(Typography, {
@@ -130,6 +130,7 @@ export function VariableEditor(props) {
130
130
  children: "Apply"
131
131
  }),
132
132
  /*#__PURE__*/ _jsx(Button, {
133
+ color: "secondary",
133
134
  variant: "outlined",
134
135
  onClick: ()=>{
135
136
  props.onCancel();
@@ -159,7 +160,6 @@ export function VariableEditor(props) {
159
160
  children: error
160
161
  }, error)),
161
162
  /*#__PURE__*/ _jsx(TableContainer, {
162
- component: Paper,
163
163
  children: /*#__PURE__*/ _jsxs(Table, {
164
164
  sx: {
165
165
  minWidth: 650
@@ -258,5 +258,8 @@ export function VariableEditor(props) {
258
258
  ]
259
259
  });
260
260
  }
261
+ const TableCell = styled(MuiTableCell)(({ theme })=>({
262
+ borderBottom: `solid 1px ${theme.palette.divider}`
263
+ }));
261
264
 
262
265
  //# sourceMappingURL=VariableEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Variables/VariableEditor.tsx"],"sourcesContent":["// Copyright 2022 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { useState, useMemo } from 'react';\nimport {\n Button,\n Stack,\n Box,\n TableContainer,\n TableBody,\n TableRow,\n TableCell,\n Table,\n Paper,\n TableHead,\n Switch,\n Typography,\n IconButton,\n Alert,\n} from '@mui/material';\nimport { VariableDefinition } from '@perses-dev/core';\nimport { useImmer } from 'use-immer';\nimport PencilIcon from 'mdi-material-ui/Pencil';\nimport TrashIcon from 'mdi-material-ui/TrashCan';\nimport ArrowUp from 'mdi-material-ui/ArrowUp';\nimport ArrowDown from 'mdi-material-ui/ArrowDown';\n\nimport { VariableEditForm } from './VariableEditorForm';\n\nfunction getValidation(variableDefinitions: VariableDefinition[]) {\n const errors = [];\n\n /** Variable names must be unique */\n const variableNames = variableDefinitions.map((variableDefinition) => variableDefinition.spec.name);\n const uniqueVariableNames = new Set(variableNames);\n if (variableNames.length !== uniqueVariableNames.size) {\n errors.push('Variable names must be unique');\n }\n return {\n errors: errors,\n isValid: errors.length === 0,\n };\n}\n\nexport function VariableEditor(props: {\n variableDefinitions: VariableDefinition[];\n onChange: (variableDefinitions: VariableDefinition[]) => void;\n onCancel: () => void;\n}) {\n const [variableDefinitions, setVariableDefinitions] = useImmer(props.variableDefinitions);\n const [variableEditIdx, setVariableEditIdx] = useState<number | null>(null);\n\n const validation = useMemo(() => getValidation(variableDefinitions), [variableDefinitions]);\n const currentEditingVariableDefinition = typeof variableEditIdx === 'number' && variableDefinitions[variableEditIdx];\n\n const removeVariable = (index: number) => {\n setVariableDefinitions((draft) => {\n draft.splice(index, 1);\n });\n };\n\n const addVariable = () => {\n setVariableDefinitions((draft) => {\n draft.push({\n kind: 'TextVariable',\n spec: {\n name: 'NewVariable',\n value: '',\n },\n });\n });\n };\n\n const toggleVariableVisibility = (index: number, visible: boolean) => {\n setVariableDefinitions((draft) => {\n const v = draft[index];\n if (!v) {\n return;\n }\n if (!v.spec.display) {\n v.spec.display = {\n name: v.spec.name,\n hidden: false,\n };\n }\n v.spec.display.hidden = visible === false;\n });\n };\n\n const changeVariableOrder = (index: number, direction: 'up' | 'down') => {\n setVariableDefinitions((draft) => {\n if (direction === 'up') {\n const prevElement = draft[index - 1];\n const currentElement = draft[index];\n if (index === 0 || !prevElement || !currentElement) {\n return;\n }\n draft[index - 1] = currentElement;\n draft[index] = prevElement;\n } else {\n const nextElement = draft[index + 1];\n const currentElement = draft[index];\n if (index === draft.length - 1 || !nextElement || !currentElement) {\n return;\n }\n draft[index + 1] = currentElement;\n draft[index] = nextElement;\n }\n });\n };\n\n return (\n <>\n {currentEditingVariableDefinition && (\n <VariableEditForm\n initialVariableDefinition={currentEditingVariableDefinition}\n onChange={(definition) => {\n setVariableDefinitions((draft) => {\n draft[variableEditIdx] = definition;\n setVariableEditIdx(null);\n });\n }}\n onCancel={() => setVariableEditIdx(null)}\n />\n )}\n {!currentEditingVariableDefinition && (\n <>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n padding: (theme) => theme.spacing(1, 2),\n borderBottom: (theme) => `1px solid ${theme.palette.grey[100]}`,\n }}\n >\n <Typography variant=\"h2\">Template Variables</Typography>\n <Stack direction=\"row\" spacing={1} marginLeft=\"auto\">\n <Button\n disabled={props.variableDefinitions === variableDefinitions || !validation.isValid}\n variant=\"contained\"\n onClick={() => {\n props.onChange(variableDefinitions);\n }}\n >\n Apply\n </Button>\n <Button\n variant=\"outlined\"\n onClick={() => {\n props.onCancel();\n }}\n >\n Cancel\n </Button>\n </Stack>\n </Box>\n <Box padding={2} sx={{ overflowY: 'scroll' }}>\n <Typography variant=\"h3\" mb={2}>\n Variable List\n </Typography>\n <Stack spacing={2}>\n {!validation.isValid &&\n validation.errors.map((error) => (\n <Alert severity=\"error\" key={error}>\n {error}\n </Alert>\n ))}\n <TableContainer component={Paper}>\n <Table sx={{ minWidth: 650 }} aria-label=\"simple table\">\n <TableHead>\n <TableRow>\n <TableCell>Visibility</TableCell>\n <TableCell>Variable Name</TableCell>\n <TableCell>Variable Type</TableCell>\n <TableCell align=\"right\">Action</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {variableDefinitions.map((v, idx) => (\n <TableRow key={v.spec.name}>\n <TableCell component=\"th\" scope=\"row\">\n <Switch\n checked={v.spec.display?.hidden !== true}\n onChange={(e) => {\n toggleVariableVisibility(idx, e.target.checked);\n }}\n />\n </TableCell>\n <TableCell component=\"th\" scope=\"row\" sx={{ fontWeight: 'bold' }}>\n {v.spec.name}\n </TableCell>\n <TableCell>{v.kind}</TableCell>\n <TableCell align=\"right\">\n <IconButton onClick={() => changeVariableOrder(idx, 'up')} disabled={idx === 0}>\n <ArrowUp />\n </IconButton>\n <IconButton\n onClick={() => changeVariableOrder(idx, 'down')}\n disabled={idx === variableDefinitions.length - 1}\n >\n <ArrowDown />\n </IconButton>\n\n <IconButton onClick={() => setVariableEditIdx(idx)}>\n <PencilIcon />\n </IconButton>\n <IconButton onClick={() => removeVariable(idx)}>\n <TrashIcon />\n </IconButton>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n <Box display=\"flex\">\n <Button onClick={addVariable} variant=\"contained\">\n Add New Variable\n </Button>\n </Box>\n </Stack>\n </Box>\n </>\n )}\n </>\n );\n}\n"],"names":["useState","useMemo","Button","Stack","Box","TableContainer","TableBody","TableRow","TableCell","Table","Paper","TableHead","Switch","Typography","IconButton","Alert","useImmer","PencilIcon","TrashIcon","ArrowUp","ArrowDown","VariableEditForm","getValidation","variableDefinitions","errors","variableNames","map","variableDefinition","spec","name","uniqueVariableNames","Set","length","size","push","isValid","VariableEditor","props","setVariableDefinitions","variableEditIdx","setVariableEditIdx","validation","currentEditingVariableDefinition","removeVariable","index","draft","splice","addVariable","kind","value","toggleVariableVisibility","visible","v","display","hidden","changeVariableOrder","direction","prevElement","currentElement","nextElement","initialVariableDefinition","onChange","definition","onCancel","sx","alignItems","padding","theme","spacing","borderBottom","palette","grey","variant","marginLeft","disabled","onClick","overflowY","mb","error","severity","component","minWidth","aria-label","align","idx","scope","checked","e","target","fontWeight"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC;AAAA,SAASA,QAAQ,EAAEC,OAAO,QAAQ,OAAO,CAAC;AAC1C,SACEC,MAAM,EACNC,KAAK,EACLC,GAAG,EACHC,cAAc,EACdC,SAAS,EACTC,QAAQ,EACRC,SAAS,EACTC,KAAK,EACLC,KAAK,EACLC,SAAS,EACTC,MAAM,EACNC,UAAU,EACVC,UAAU,EACVC,KAAK,QACA,eAAe,CAAC;AAEvB,SAASC,QAAQ,QAAQ,WAAW,CAAC;AACrC,OAAOC,UAAU,MAAM,wBAAwB,CAAC;AAChD,OAAOC,SAAS,MAAM,0BAA0B,CAAC;AACjD,OAAOC,OAAO,MAAM,yBAAyB,CAAC;AAC9C,OAAOC,SAAS,MAAM,2BAA2B,CAAC;AAElD,SAASC,gBAAgB,QAAQ,sBAAsB,CAAC;AAExD,SAASC,aAAa,CAACC,mBAAyC,EAAE;IAChE,MAAMC,MAAM,GAAG,EAAE,AAAC;IAElB,mCAAmC,GACnC,MAAMC,aAAa,GAAGF,mBAAmB,CAACG,GAAG,CAAC,CAACC,kBAAkB,GAAKA,kBAAkB,CAACC,IAAI,CAACC,IAAI,CAAC,AAAC;IACpG,MAAMC,mBAAmB,GAAG,IAAIC,GAAG,CAACN,aAAa,CAAC,AAAC;IACnD,IAAIA,aAAa,CAACO,MAAM,KAAKF,mBAAmB,CAACG,IAAI,EAAE;QACrDT,MAAM,CAACU,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO;QACLV,MAAM,EAAEA,MAAM;QACdW,OAAO,EAAEX,MAAM,CAACQ,MAAM,KAAK,CAAC;KAC7B,CAAC;AACJ,CAAC;AAED,OAAO,SAASI,cAAc,CAACC,KAI9B,EAAE;IACD,MAAM,CAACd,mBAAmB,EAAEe,sBAAsB,CAAC,GAAGtB,QAAQ,CAACqB,KAAK,CAACd,mBAAmB,CAAC,AAAC;IAC1F,MAAM,CAACgB,eAAe,EAAEC,kBAAkB,CAAC,GAAGxC,QAAQ,CAAgB,IAAI,CAAC,AAAC;IAE5E,MAAMyC,UAAU,GAAGxC,OAAO,CAAC,IAAMqB,aAAa,CAACC,mBAAmB,CAAC,EAAE;QAACA,mBAAmB;KAAC,CAAC,AAAC;IAC5F,MAAMmB,gCAAgC,GAAG,OAAOH,eAAe,KAAK,QAAQ,IAAIhB,mBAAmB,CAACgB,eAAe,CAAC,AAAC;IAErH,MAAMI,cAAc,GAAG,CAACC,KAAa,GAAK;QACxCN,sBAAsB,CAAC,CAACO,KAAK,GAAK;YAChCA,KAAK,CAACC,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,AAAC;IAEF,MAAMG,WAAW,GAAG,IAAM;QACxBT,sBAAsB,CAAC,CAACO,KAAK,GAAK;YAChCA,KAAK,CAACX,IAAI,CAAC;gBACTc,IAAI,EAAE,cAAc;gBACpBpB,IAAI,EAAE;oBACJC,IAAI,EAAE,aAAa;oBACnBoB,KAAK,EAAE,EAAE;iBACV;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,AAAC;IAEF,MAAMC,wBAAwB,GAAG,CAACN,KAAa,EAAEO,OAAgB,GAAK;QACpEb,sBAAsB,CAAC,CAACO,KAAK,GAAK;YAChC,MAAMO,CAAC,GAAGP,KAAK,CAACD,KAAK,CAAC,AAAC;YACvB,IAAI,CAACQ,CAAC,EAAE;gBACN,OAAO;YACT,CAAC;YACD,IAAI,CAACA,CAAC,CAACxB,IAAI,CAACyB,OAAO,EAAE;gBACnBD,CAAC,CAACxB,IAAI,CAACyB,OAAO,GAAG;oBACfxB,IAAI,EAAEuB,CAAC,CAACxB,IAAI,CAACC,IAAI;oBACjByB,MAAM,EAAE,KAAK;iBACd,CAAC;YACJ,CAAC;YACDF,CAAC,CAACxB,IAAI,CAACyB,OAAO,CAACC,MAAM,GAAGH,OAAO,KAAK,KAAK,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,AAAC;IAEF,MAAMI,mBAAmB,GAAG,CAACX,KAAa,EAAEY,SAAwB,GAAK;QACvElB,sBAAsB,CAAC,CAACO,KAAK,GAAK;YAChC,IAAIW,SAAS,KAAK,IAAI,EAAE;gBACtB,MAAMC,WAAW,GAAGZ,KAAK,CAACD,KAAK,GAAG,CAAC,CAAC,AAAC;gBACrC,MAAMc,cAAc,GAAGb,KAAK,CAACD,KAAK,CAAC,AAAC;gBACpC,IAAIA,KAAK,KAAK,CAAC,IAAI,CAACa,WAAW,IAAI,CAACC,cAAc,EAAE;oBAClD,OAAO;gBACT,CAAC;gBACDb,KAAK,CAACD,KAAK,GAAG,CAAC,CAAC,GAAGc,cAAc,CAAC;gBAClCb,KAAK,CAACD,KAAK,CAAC,GAAGa,WAAW,CAAC;YAC7B,OAAO;gBACL,MAAME,WAAW,GAAGd,KAAK,CAACD,KAAK,GAAG,CAAC,CAAC,AAAC;gBACrC,MAAMc,eAAc,GAAGb,KAAK,CAACD,KAAK,CAAC,AAAC;gBACpC,IAAIA,KAAK,KAAKC,KAAK,CAACb,MAAM,GAAG,CAAC,IAAI,CAAC2B,WAAW,IAAI,CAACD,eAAc,EAAE;oBACjE,OAAO;gBACT,CAAC;gBACDb,KAAK,CAACD,KAAK,GAAG,CAAC,CAAC,GAAGc,eAAc,CAAC;gBAClCb,KAAK,CAACD,KAAK,CAAC,GAAGe,WAAW,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,AAAC;IAEF,qBACE;;YACGjB,gCAAgC,kBAC/B,KAACrB,gBAAgB;gBACfuC,yBAAyB,EAAElB,gCAAgC;gBAC3DmB,QAAQ,EAAE,CAACC,UAAU,GAAK;oBACxBxB,sBAAsB,CAAC,CAACO,KAAK,GAAK;wBAChCA,KAAK,CAACN,eAAe,CAAC,GAAGuB,UAAU,CAAC;wBACpCtB,kBAAkB,CAAC,IAAI,CAAC,CAAC;oBAC3B,CAAC,CAAC,CAAC;gBACL,CAAC;gBACDuB,QAAQ,EAAE,IAAMvB,kBAAkB,CAAC,IAAI,CAAC;cACxC,AACH;YACA,CAACE,gCAAgC,kBAChC;;kCACE,MAACtC,GAAG;wBACF4D,EAAE,EAAE;4BACFX,OAAO,EAAE,MAAM;4BACfY,UAAU,EAAE,QAAQ;4BACpBC,OAAO,EAAE,CAACC,KAAK,GAAKA,KAAK,CAACC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;4BACvCC,YAAY,EAAE,CAACF,KAAK,GAAK,CAAC,UAAU,EAAEA,KAAK,CAACG,OAAO,CAACC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;yBAChE;;0CAED,KAAC1D,UAAU;gCAAC2D,OAAO,EAAC,IAAI;0CAAC,oBAAkB;8BAAa;0CACxD,MAACrE,KAAK;gCAACqD,SAAS,EAAC,KAAK;gCAACY,OAAO,EAAE,CAAC;gCAAEK,UAAU,EAAC,MAAM;;kDAClD,KAACvE,MAAM;wCACLwE,QAAQ,EAAErC,KAAK,CAACd,mBAAmB,KAAKA,mBAAmB,IAAI,CAACkB,UAAU,CAACN,OAAO;wCAClFqC,OAAO,EAAC,WAAW;wCACnBG,OAAO,EAAE,IAAM;4CACbtC,KAAK,CAACwB,QAAQ,CAACtC,mBAAmB,CAAC,CAAC;wCACtC,CAAC;kDACF,OAED;sCAAS;kDACT,KAACrB,MAAM;wCACLsE,OAAO,EAAC,UAAU;wCAClBG,OAAO,EAAE,IAAM;4CACbtC,KAAK,CAAC0B,QAAQ,EAAE,CAAC;wCACnB,CAAC;kDACF,QAED;sCAAS;;8BACH;;sBACJ;kCACN,MAAC3D,GAAG;wBAAC8D,OAAO,EAAE,CAAC;wBAAEF,EAAE,EAAE;4BAAEY,SAAS,EAAE,QAAQ;yBAAE;;0CAC1C,KAAC/D,UAAU;gCAAC2D,OAAO,EAAC,IAAI;gCAACK,EAAE,EAAE,CAAC;0CAAE,eAEhC;8BAAa;0CACb,MAAC1E,KAAK;gCAACiE,OAAO,EAAE,CAAC;;oCACd,CAAC3B,UAAU,CAACN,OAAO,IAClBM,UAAU,CAACjB,MAAM,CAACE,GAAG,CAAC,CAACoD,KAAK,iBAC1B,KAAC/D,KAAK;4CAACgE,QAAQ,EAAC,OAAO;sDACpBD,KAAK;2CADqBA,KAAK,CAE1B,AACT,CAAC;kDACJ,KAACzE,cAAc;wCAAC2E,SAAS,EAAEtE,KAAK;kDAC9B,cAAA,MAACD,KAAK;4CAACuD,EAAE,EAAE;gDAAEiB,QAAQ,EAAE,GAAG;6CAAE;4CAAEC,YAAU,EAAC,cAAc;;8DACrD,KAACvE,SAAS;8DACR,cAAA,MAACJ,QAAQ;;0EACP,KAACC,SAAS;0EAAC,YAAU;8DAAY;0EACjC,KAACA,SAAS;0EAAC,eAAa;8DAAY;0EACpC,KAACA,SAAS;0EAAC,eAAa;8DAAY;0EACpC,KAACA,SAAS;gEAAC2E,KAAK,EAAC,OAAO;0EAAC,QAAM;8DAAY;;sDAClC;kDACD;8DACZ,KAAC7E,SAAS;8DACPiB,mBAAmB,CAACG,GAAG,CAAC,CAAC0B,CAAC,EAAEgC,GAAG;4DAIfhC,GAAc;sEAH7B,OAAA,MAAC7C,QAAQ;;8EACP,KAACC,SAAS;oEAACwE,SAAS,EAAC,IAAI;oEAACK,KAAK,EAAC,KAAK;8EACnC,cAAA,KAACzE,MAAM;wEACL0E,OAAO,EAAElC,CAAAA,CAAAA,GAAc,GAAdA,CAAC,CAACxB,IAAI,CAACyB,OAAO,cAAdD,GAAc,WAAQ,GAAtBA,KAAAA,CAAsB,GAAtBA,GAAc,CAAEE,MAAM,CAAA,KAAK,IAAI;wEACxCO,QAAQ,EAAE,CAAC0B,CAAC,GAAK;4EACfrC,wBAAwB,CAACkC,GAAG,EAAEG,CAAC,CAACC,MAAM,CAACF,OAAO,CAAC,CAAC;wEAClD,CAAC;sEACD;kEACQ;8EACZ,KAAC9E,SAAS;oEAACwE,SAAS,EAAC,IAAI;oEAACK,KAAK,EAAC,KAAK;oEAACrB,EAAE,EAAE;wEAAEyB,UAAU,EAAE,MAAM;qEAAE;8EAC7DrC,CAAC,CAACxB,IAAI,CAACC,IAAI;kEACF;8EACZ,KAACrB,SAAS;8EAAE4C,CAAC,CAACJ,IAAI;kEAAa;8EAC/B,MAACxC,SAAS;oEAAC2E,KAAK,EAAC,OAAO;;sFACtB,KAACrE,UAAU;4EAAC6D,OAAO,EAAE,IAAMpB,mBAAmB,CAAC6B,GAAG,EAAE,IAAI,CAAC;4EAAEV,QAAQ,EAAEU,GAAG,KAAK,CAAC;sFAC5E,cAAA,KAACjE,OAAO,KAAG;0EACA;sFACb,KAACL,UAAU;4EACT6D,OAAO,EAAE,IAAMpB,mBAAmB,CAAC6B,GAAG,EAAE,MAAM,CAAC;4EAC/CV,QAAQ,EAAEU,GAAG,KAAK7D,mBAAmB,CAACS,MAAM,GAAG,CAAC;sFAEhD,cAAA,KAACZ,SAAS,KAAG;0EACF;sFAEb,KAACN,UAAU;4EAAC6D,OAAO,EAAE,IAAMnC,kBAAkB,CAAC4C,GAAG,CAAC;sFAChD,cAAA,KAACnE,UAAU,KAAG;0EACH;sFACb,KAACH,UAAU;4EAAC6D,OAAO,EAAE,IAAMhC,cAAc,CAACyC,GAAG,CAAC;sFAC5C,cAAA,KAAClE,SAAS,KAAG;0EACF;;kEACH;;2DA9BCkC,CAAC,CAACxB,IAAI,CAACC,IAAI,CA+Bf,CAAA;qDACZ,CAAC;kDACQ;;0CACN;sCACO;kDACjB,KAACzB,GAAG;wCAACiD,OAAO,EAAC,MAAM;kDACjB,cAAA,KAACnD,MAAM;4CAACyE,OAAO,EAAE5B,WAAW;4CAAEyB,OAAO,EAAC,WAAW;sDAAC,kBAElD;0CAAS;sCACL;;8BACA;;sBACJ;;cACL,AACJ;;MACA,CACH;AACJ,CAAC"}
1
+ {"version":3,"sources":["../../../src/components/Variables/VariableEditor.tsx"],"sourcesContent":["// Copyright 2022 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { useState, useMemo } from 'react';\nimport {\n Button,\n Stack,\n Box,\n TableContainer,\n TableBody,\n TableRow,\n TableCell as MuiTableCell,\n Table,\n TableHead,\n Switch,\n Typography,\n IconButton,\n Alert,\n styled,\n} from '@mui/material';\nimport { VariableDefinition } from '@perses-dev/core';\nimport { useImmer } from 'use-immer';\nimport PencilIcon from 'mdi-material-ui/Pencil';\nimport TrashIcon from 'mdi-material-ui/TrashCan';\nimport ArrowUp from 'mdi-material-ui/ArrowUp';\nimport ArrowDown from 'mdi-material-ui/ArrowDown';\n\nimport { VariableEditForm } from './VariableEditorForm';\n\nfunction getValidation(variableDefinitions: VariableDefinition[]) {\n const errors = [];\n\n /** Variable names must be unique */\n const variableNames = variableDefinitions.map((variableDefinition) => variableDefinition.spec.name);\n const uniqueVariableNames = new Set(variableNames);\n if (variableNames.length !== uniqueVariableNames.size) {\n errors.push('Variable names must be unique');\n }\n return {\n errors: errors,\n isValid: errors.length === 0,\n };\n}\n\nexport function VariableEditor(props: {\n variableDefinitions: VariableDefinition[];\n onChange: (variableDefinitions: VariableDefinition[]) => void;\n onCancel: () => void;\n}) {\n const [variableDefinitions, setVariableDefinitions] = useImmer(props.variableDefinitions);\n const [variableEditIdx, setVariableEditIdx] = useState<number | null>(null);\n\n const validation = useMemo(() => getValidation(variableDefinitions), [variableDefinitions]);\n const currentEditingVariableDefinition = typeof variableEditIdx === 'number' && variableDefinitions[variableEditIdx];\n\n const removeVariable = (index: number) => {\n setVariableDefinitions((draft) => {\n draft.splice(index, 1);\n });\n };\n\n const addVariable = () => {\n setVariableDefinitions((draft) => {\n draft.push({\n kind: 'TextVariable',\n spec: {\n name: 'NewVariable',\n value: '',\n },\n });\n });\n };\n\n const toggleVariableVisibility = (index: number, visible: boolean) => {\n setVariableDefinitions((draft) => {\n const v = draft[index];\n if (!v) {\n return;\n }\n if (!v.spec.display) {\n v.spec.display = {\n name: v.spec.name,\n hidden: false,\n };\n }\n v.spec.display.hidden = visible === false;\n });\n };\n\n const changeVariableOrder = (index: number, direction: 'up' | 'down') => {\n setVariableDefinitions((draft) => {\n if (direction === 'up') {\n const prevElement = draft[index - 1];\n const currentElement = draft[index];\n if (index === 0 || !prevElement || !currentElement) {\n return;\n }\n draft[index - 1] = currentElement;\n draft[index] = prevElement;\n } else {\n const nextElement = draft[index + 1];\n const currentElement = draft[index];\n if (index === draft.length - 1 || !nextElement || !currentElement) {\n return;\n }\n draft[index + 1] = currentElement;\n draft[index] = nextElement;\n }\n });\n };\n\n return (\n <>\n {currentEditingVariableDefinition && (\n <VariableEditForm\n initialVariableDefinition={currentEditingVariableDefinition}\n onChange={(definition) => {\n setVariableDefinitions((draft) => {\n draft[variableEditIdx] = definition;\n setVariableEditIdx(null);\n });\n }}\n onCancel={() => setVariableEditIdx(null)}\n />\n )}\n {!currentEditingVariableDefinition && (\n <>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n padding: (theme) => theme.spacing(1, 2),\n borderBottom: (theme) => `1px solid ${theme.palette.divider}`,\n }}\n >\n <Typography variant=\"h2\">Template Variables</Typography>\n <Stack direction=\"row\" spacing={1} marginLeft=\"auto\">\n <Button\n disabled={props.variableDefinitions === variableDefinitions || !validation.isValid}\n variant=\"contained\"\n onClick={() => {\n props.onChange(variableDefinitions);\n }}\n >\n Apply\n </Button>\n <Button\n color=\"secondary\"\n variant=\"outlined\"\n onClick={() => {\n props.onCancel();\n }}\n >\n Cancel\n </Button>\n </Stack>\n </Box>\n <Box padding={2} sx={{ overflowY: 'scroll' }}>\n <Typography variant=\"h3\" mb={2}>\n Variable List\n </Typography>\n <Stack spacing={2}>\n {!validation.isValid &&\n validation.errors.map((error) => (\n <Alert severity=\"error\" key={error}>\n {error}\n </Alert>\n ))}\n <TableContainer>\n <Table sx={{ minWidth: 650 }} aria-label=\"simple table\">\n <TableHead>\n <TableRow>\n <TableCell>Visibility</TableCell>\n <TableCell>Variable Name</TableCell>\n <TableCell>Variable Type</TableCell>\n <TableCell align=\"right\">Action</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {variableDefinitions.map((v, idx) => (\n <TableRow key={v.spec.name}>\n <TableCell component=\"th\" scope=\"row\">\n <Switch\n checked={v.spec.display?.hidden !== true}\n onChange={(e) => {\n toggleVariableVisibility(idx, e.target.checked);\n }}\n />\n </TableCell>\n <TableCell component=\"th\" scope=\"row\" sx={{ fontWeight: 'bold' }}>\n {v.spec.name}\n </TableCell>\n <TableCell>{v.kind}</TableCell>\n <TableCell align=\"right\">\n <IconButton onClick={() => changeVariableOrder(idx, 'up')} disabled={idx === 0}>\n <ArrowUp />\n </IconButton>\n <IconButton\n onClick={() => changeVariableOrder(idx, 'down')}\n disabled={idx === variableDefinitions.length - 1}\n >\n <ArrowDown />\n </IconButton>\n\n <IconButton onClick={() => setVariableEditIdx(idx)}>\n <PencilIcon />\n </IconButton>\n <IconButton onClick={() => removeVariable(idx)}>\n <TrashIcon />\n </IconButton>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n <Box display=\"flex\">\n <Button onClick={addVariable} variant=\"contained\">\n Add New Variable\n </Button>\n </Box>\n </Stack>\n </Box>\n </>\n )}\n </>\n );\n}\n\nconst TableCell = styled(MuiTableCell)(({ theme }) => ({\n borderBottom: `solid 1px ${theme.palette.divider}`,\n}));\n"],"names":["useState","useMemo","Button","Stack","Box","TableContainer","TableBody","TableRow","TableCell","MuiTableCell","Table","TableHead","Switch","Typography","IconButton","Alert","styled","useImmer","PencilIcon","TrashIcon","ArrowUp","ArrowDown","VariableEditForm","getValidation","variableDefinitions","errors","variableNames","map","variableDefinition","spec","name","uniqueVariableNames","Set","length","size","push","isValid","VariableEditor","props","setVariableDefinitions","variableEditIdx","setVariableEditIdx","validation","currentEditingVariableDefinition","removeVariable","index","draft","splice","addVariable","kind","value","toggleVariableVisibility","visible","v","display","hidden","changeVariableOrder","direction","prevElement","currentElement","nextElement","initialVariableDefinition","onChange","definition","onCancel","sx","alignItems","padding","theme","spacing","borderBottom","palette","divider","variant","marginLeft","disabled","onClick","color","overflowY","mb","error","severity","minWidth","aria-label","align","idx","component","scope","checked","e","target","fontWeight"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"VariableEditorForm.d.ts","sourceRoot":"","sources":["../../../../src/components/Variables/VariableEditorForm/VariableEditorForm.tsx"],"names":[],"mappings":";AAiCA,OAAO,EAAE,kBAAkB,EAA0B,MAAM,kBAAkB,CAAC;AAgE9E,wBAAgB,gBAAgB,CAAC,EAC/B,yBAAyB,EACzB,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,yBAAyB,EAAE,kBAAkB,CAAC;IAC9C,QAAQ,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC5C,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,eAuNA"}
1
+ {"version":3,"file":"VariableEditorForm.d.ts","sourceRoot":"","sources":["../../../../src/components/Variables/VariableEditorForm/VariableEditorForm.tsx"],"names":[],"mappings":";AAiCA,OAAO,EAAE,kBAAkB,EAA0B,MAAM,kBAAkB,CAAC;AAgE9E,wBAAgB,gBAAgB,CAAC,EAC/B,yBAAyB,EACzB,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,yBAAyB,EAAE,kBAAkB,CAAC;IAC9C,QAAQ,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC5C,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,eAwNA"}
@@ -116,7 +116,7 @@ export function VariableEditForm({ initialVariableDefinition , onChange , onCanc
116
116
  display: 'flex',
117
117
  alignItems: 'center',
118
118
  padding: (theme)=>theme.spacing(1, 2),
119
- borderBottom: (theme)=>`1px solid ${theme.palette.grey[100]}`
119
+ borderBottom: (theme)=>`1px solid ${theme.palette.divider}`
120
120
  },
121
121
  children: [
122
122
  /*#__PURE__*/ _jsx(Typography, {
@@ -139,6 +139,7 @@ export function VariableEditForm({ initialVariableDefinition , onChange , onCanc
139
139
  children: "Update"
140
140
  }),
141
141
  /*#__PURE__*/ _jsx(Button, {
142
+ color: "secondary",
142
143
  variant: "outlined",
143
144
  onClick: ()=>{
144
145
  onCancel();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Variables/VariableEditorForm/VariableEditorForm.tsx"],"sourcesContent":["// Copyright 2022 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport React, { useMemo, useState } from 'react';\nimport {\n Box,\n Typography,\n Switch,\n TextField,\n Grid,\n FormControl,\n InputLabel,\n MenuItem,\n Select,\n Button,\n Stack,\n Alert,\n Chip,\n IconButton,\n ClickAwayListener,\n} from '@mui/material';\nimport { useImmer } from 'use-immer';\nimport { PluginEditor } from '@perses-dev/plugin-system';\nimport { VariableDefinition, ListVariableDefinition } from '@perses-dev/core';\nimport { ErrorBoundary } from '@perses-dev/components';\nimport Refresh from 'mdi-material-ui/Refresh';\n\nimport { useListVariablePluginValues } from '../variable-model';\nimport { VariableEditorState, getVariableDefinitionFromState, getInitialState } from './variable-editor-form-model';\n\nconst VARIABLE_TYPES = ['ListVariable', 'TextVariable'] as const;\nconst DEFAULT_MAX_PREVIEW_VALUES = 50;\n\n// TODO: Replace with proper validation library\nfunction getValidation(state: ReturnType<typeof getInitialState>) {\n /** Name validation */\n let name = null;\n if (!state.name) {\n name = 'Name is required';\n }\n // name can only contain alphanumeric characters and underscores and no spaces\n if (state.name && !/^[a-zA-Z0-9_-]+$/.test(state.name)) {\n name = 'Name can only contain alphanumeric characters, underscores, and dashes';\n }\n\n return {\n name,\n isValid: !name,\n };\n}\n\nconst SectionHeader = ({ children }: React.PropsWithChildren) => (\n <Typography pb={2} variant=\"subtitle1\">\n {children}\n </Typography>\n);\n\nfunction VariableListPreview({ definition }: { definition: ListVariableDefinition }) {\n const { data, isFetching, error } = useListVariablePluginValues(definition);\n const [maxValues, setMaxValues] = useState<number | undefined>(DEFAULT_MAX_PREVIEW_VALUES);\n const showAll = () => {\n setMaxValues(undefined);\n };\n let notShown = 0;\n\n if (data && data?.length > 0 && maxValues) {\n notShown = data.length - maxValues;\n }\n const errorMessage = (error as Error)?.message;\n\n return (\n <Box>\n {errorMessage && <Alert severity=\"error\">{errorMessage}</Alert>}\n {isFetching && 'Loading...'}\n {data?.length === 0 && <Alert severity=\"info\">No results</Alert>}\n <>\n {data?.slice(0, maxValues).map((val) => (\n <Chip sx={{ mr: 1, mb: 1 }} size=\"small\" key={val.value} label={val.label} />\n ))}\n {notShown > 0 && (\n <Chip onClick={showAll} variant=\"outlined\" sx={{ mr: 1, mb: 1 }} size=\"small\" label={`+${notShown} more`} />\n )}\n </>\n </Box>\n );\n}\n\nexport function VariableEditForm({\n initialVariableDefinition,\n onChange,\n onCancel,\n}: {\n initialVariableDefinition: VariableDefinition;\n onChange: (def: VariableDefinition) => void;\n onCancel: () => void;\n}) {\n const [state, setState] = useImmer(getInitialState(initialVariableDefinition));\n const validation = useMemo(() => getValidation(state), [state]);\n\n const [previewKey, setPreviewKey] = React.useState(0);\n\n const refreshPreview = () => {\n setPreviewKey((prev) => prev + 1);\n };\n\n /** We use the `previewKey` that we increment to know when to explicity update the\n * spec that will be used for preview. The reason why we do this is to avoid\n * having to re-fetch the values when the user is still editing the spec.\n */\n const previewSpec = useMemo(() => {\n return getVariableDefinitionFromState(state) as ListVariableDefinition;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [previewKey]);\n\n return (\n <>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n padding: (theme) => theme.spacing(1, 2),\n borderBottom: (theme) => `1px solid ${theme.palette.grey[100]}`,\n }}\n >\n <Typography variant=\"h2\">Template Variables / Edit Variable</Typography>\n <Stack direction=\"row\" spacing={1} sx={{ marginLeft: 'auto' }}>\n <Button\n disabled={!validation.isValid}\n variant=\"contained\"\n onClick={() => {\n onChange(getVariableDefinitionFromState(state));\n }}\n >\n Update\n </Button>\n <Button\n variant=\"outlined\"\n onClick={() => {\n onCancel();\n }}\n >\n Cancel\n </Button>\n </Stack>\n </Box>\n <Box padding={2} sx={{ overflowY: 'scroll' }}>\n <Typography variant=\"h3\" mb={2}>\n Edit Variable\n </Typography>\n <SectionHeader>General</SectionHeader>\n <Grid container spacing={2} mb={2}>\n <Grid item xs={6}>\n <TextField\n required\n error={!!validation.name}\n fullWidth\n label=\"Name\"\n value={state.name}\n helperText={validation.name}\n onChange={(v) => {\n setState((draft) => {\n draft.name = v.target.value as string;\n });\n }}\n />\n </Grid>\n <Grid item xs={6}>\n <FormControl fullWidth>\n <InputLabel id=\"variable-type-select-label\">Type</InputLabel>\n <Select\n labelId=\"variable-type-select-label\"\n id=\"variable-type-select\"\n label=\"Type\"\n value={state.kind}\n onChange={(v) => {\n setState((draft) => {\n draft.kind = v.target.value as VariableEditorState['kind'];\n });\n }}\n >\n {VARIABLE_TYPES.map((v) => (\n <MenuItem key={v} value={v}>\n {v}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Grid>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Label\"\n value={state.title}\n onChange={(v) => {\n setState((draft) => {\n draft.title = v.target.value;\n });\n }}\n />\n </Grid>\n <Grid item xs={12}>\n <TextField\n fullWidth\n label=\"Description\"\n value={state.description}\n onChange={(v) => {\n setState((draft) => {\n draft.description = v.target.value;\n });\n }}\n />\n </Grid>\n </Grid>\n\n {state.kind === 'TextVariable' && (\n <>\n <SectionHeader>Text Options</SectionHeader>\n <Grid container spacing={2} mb={2}>\n <Grid item xs={12}>\n <TextField\n label=\"Value\"\n value={state.textVariableFields.value}\n onChange={(v) => {\n setState((draft) => {\n draft.textVariableFields.value = v.target.value;\n });\n }}\n />\n </Grid>\n </Grid>\n </>\n )}\n\n {state.kind === 'ListVariable' && (\n <>\n <SectionHeader>List Options</SectionHeader>\n <Grid container spacing={2} mb={2}>\n <Grid item xs={6}>\n <TextField\n sx={{ mb: 1 }}\n label=\"Capturing Regexp\"\n value={state.listVariableFields.capturing_regexp}\n onChange={(e) => {\n setState((draft) => {\n draft.listVariableFields.capturing_regexp = e.target.value;\n });\n }}\n />\n {/** Hack?: Cool technique to refresh the preview to simulate onBlur event */}\n <ClickAwayListener onClickAway={() => refreshPreview()}>\n <Box />\n </ClickAwayListener>\n {/** */}\n <PluginEditor\n width={500}\n pluginType=\"Variable\"\n pluginKindLabel=\"Source\"\n value={state.listVariableFields.plugin}\n onChange={(val) => {\n setState((draft) => {\n draft.listVariableFields.plugin = val;\n });\n }}\n />\n </Grid>\n {state.listVariableFields.plugin.kind && (\n <Grid item xs={12}>\n <ErrorBoundary FallbackComponent={() => <div>Error previewing values</div>} resetKeys={[previewSpec]}>\n <Stack direction={'row'} spacing={1} alignItems=\"center\">\n <Typography variant=\"caption\">Preview Values</Typography>\n <IconButton onClick={refreshPreview} size=\"small\">\n <Refresh />\n </IconButton>\n </Stack>\n <VariableListPreview definition={previewSpec} />\n </ErrorBoundary>\n </Grid>\n )}\n </Grid>\n\n <SectionHeader>Dropdown Options</SectionHeader>\n <Grid container spacing={1} mb={1}>\n <Grid item xs={12}>\n Allow Multiple\n <Switch\n checked={state.listVariableFields.allowMultiple}\n onChange={(e) => {\n setState((draft) => {\n draft.listVariableFields.allowMultiple = e.target.checked;\n });\n }}\n />\n </Grid>\n <Grid item xs={12}>\n Allow All\n <Switch\n checked={state.listVariableFields.allowAll}\n onChange={(e) => {\n setState((draft) => {\n draft.listVariableFields.allowAll = e.target.checked;\n });\n }}\n />\n </Grid>\n </Grid>\n </>\n )}\n </Box>\n </>\n );\n}\n"],"names":["React","useMemo","useState","Box","Typography","Switch","TextField","Grid","FormControl","InputLabel","MenuItem","Select","Button","Stack","Alert","Chip","IconButton","ClickAwayListener","useImmer","PluginEditor","ErrorBoundary","Refresh","useListVariablePluginValues","getVariableDefinitionFromState","getInitialState","VARIABLE_TYPES","DEFAULT_MAX_PREVIEW_VALUES","getValidation","state","name","test","isValid","SectionHeader","children","pb","variant","VariableListPreview","definition","data","isFetching","error","maxValues","setMaxValues","showAll","undefined","notShown","length","errorMessage","message","severity","slice","map","val","sx","mr","mb","size","label","value","onClick","VariableEditForm","initialVariableDefinition","onChange","onCancel","setState","validation","previewKey","setPreviewKey","refreshPreview","prev","previewSpec","display","alignItems","padding","theme","spacing","borderBottom","palette","grey","direction","marginLeft","disabled","overflowY","container","item","xs","required","fullWidth","helperText","v","draft","target","id","labelId","kind","title","description","textVariableFields","listVariableFields","capturing_regexp","e","onClickAway","width","pluginType","pluginKindLabel","plugin","FallbackComponent","div","resetKeys","checked","allowMultiple","allowAll"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/Variables/VariableEditorForm/VariableEditorForm.tsx"],"sourcesContent":["// Copyright 2022 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport React, { useMemo, useState } from 'react';\nimport {\n Box,\n Typography,\n Switch,\n TextField,\n Grid,\n FormControl,\n InputLabel,\n MenuItem,\n Select,\n Button,\n Stack,\n Alert,\n Chip,\n IconButton,\n ClickAwayListener,\n} from '@mui/material';\nimport { useImmer } from 'use-immer';\nimport { PluginEditor } from '@perses-dev/plugin-system';\nimport { VariableDefinition, ListVariableDefinition } from '@perses-dev/core';\nimport { ErrorBoundary } from '@perses-dev/components';\nimport Refresh from 'mdi-material-ui/Refresh';\n\nimport { useListVariablePluginValues } from '../variable-model';\nimport { VariableEditorState, getVariableDefinitionFromState, getInitialState } from './variable-editor-form-model';\n\nconst VARIABLE_TYPES = ['ListVariable', 'TextVariable'] as const;\nconst DEFAULT_MAX_PREVIEW_VALUES = 50;\n\n// TODO: Replace with proper validation library\nfunction getValidation(state: ReturnType<typeof getInitialState>) {\n /** Name validation */\n let name = null;\n if (!state.name) {\n name = 'Name is required';\n }\n // name can only contain alphanumeric characters and underscores and no spaces\n if (state.name && !/^[a-zA-Z0-9_-]+$/.test(state.name)) {\n name = 'Name can only contain alphanumeric characters, underscores, and dashes';\n }\n\n return {\n name,\n isValid: !name,\n };\n}\n\nconst SectionHeader = ({ children }: React.PropsWithChildren) => (\n <Typography pb={2} variant=\"subtitle1\">\n {children}\n </Typography>\n);\n\nfunction VariableListPreview({ definition }: { definition: ListVariableDefinition }) {\n const { data, isFetching, error } = useListVariablePluginValues(definition);\n const [maxValues, setMaxValues] = useState<number | undefined>(DEFAULT_MAX_PREVIEW_VALUES);\n const showAll = () => {\n setMaxValues(undefined);\n };\n let notShown = 0;\n\n if (data && data?.length > 0 && maxValues) {\n notShown = data.length - maxValues;\n }\n const errorMessage = (error as Error)?.message;\n\n return (\n <Box>\n {errorMessage && <Alert severity=\"error\">{errorMessage}</Alert>}\n {isFetching && 'Loading...'}\n {data?.length === 0 && <Alert severity=\"info\">No results</Alert>}\n <>\n {data?.slice(0, maxValues).map((val) => (\n <Chip sx={{ mr: 1, mb: 1 }} size=\"small\" key={val.value} label={val.label} />\n ))}\n {notShown > 0 && (\n <Chip onClick={showAll} variant=\"outlined\" sx={{ mr: 1, mb: 1 }} size=\"small\" label={`+${notShown} more`} />\n )}\n </>\n </Box>\n );\n}\n\nexport function VariableEditForm({\n initialVariableDefinition,\n onChange,\n onCancel,\n}: {\n initialVariableDefinition: VariableDefinition;\n onChange: (def: VariableDefinition) => void;\n onCancel: () => void;\n}) {\n const [state, setState] = useImmer(getInitialState(initialVariableDefinition));\n const validation = useMemo(() => getValidation(state), [state]);\n\n const [previewKey, setPreviewKey] = React.useState(0);\n\n const refreshPreview = () => {\n setPreviewKey((prev) => prev + 1);\n };\n\n /** We use the `previewKey` that we increment to know when to explicity update the\n * spec that will be used for preview. The reason why we do this is to avoid\n * having to re-fetch the values when the user is still editing the spec.\n */\n const previewSpec = useMemo(() => {\n return getVariableDefinitionFromState(state) as ListVariableDefinition;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [previewKey]);\n\n return (\n <>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n padding: (theme) => theme.spacing(1, 2),\n borderBottom: (theme) => `1px solid ${theme.palette.divider}`,\n }}\n >\n <Typography variant=\"h2\">Template Variables / Edit Variable</Typography>\n <Stack direction=\"row\" spacing={1} sx={{ marginLeft: 'auto' }}>\n <Button\n disabled={!validation.isValid}\n variant=\"contained\"\n onClick={() => {\n onChange(getVariableDefinitionFromState(state));\n }}\n >\n Update\n </Button>\n <Button\n color=\"secondary\"\n variant=\"outlined\"\n onClick={() => {\n onCancel();\n }}\n >\n Cancel\n </Button>\n </Stack>\n </Box>\n <Box padding={2} sx={{ overflowY: 'scroll' }}>\n <Typography variant=\"h3\" mb={2}>\n Edit Variable\n </Typography>\n <SectionHeader>General</SectionHeader>\n <Grid container spacing={2} mb={2}>\n <Grid item xs={6}>\n <TextField\n required\n error={!!validation.name}\n fullWidth\n label=\"Name\"\n value={state.name}\n helperText={validation.name}\n onChange={(v) => {\n setState((draft) => {\n draft.name = v.target.value as string;\n });\n }}\n />\n </Grid>\n <Grid item xs={6}>\n <FormControl fullWidth>\n <InputLabel id=\"variable-type-select-label\">Type</InputLabel>\n <Select\n labelId=\"variable-type-select-label\"\n id=\"variable-type-select\"\n label=\"Type\"\n value={state.kind}\n onChange={(v) => {\n setState((draft) => {\n draft.kind = v.target.value as VariableEditorState['kind'];\n });\n }}\n >\n {VARIABLE_TYPES.map((v) => (\n <MenuItem key={v} value={v}>\n {v}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Grid>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Label\"\n value={state.title}\n onChange={(v) => {\n setState((draft) => {\n draft.title = v.target.value;\n });\n }}\n />\n </Grid>\n <Grid item xs={12}>\n <TextField\n fullWidth\n label=\"Description\"\n value={state.description}\n onChange={(v) => {\n setState((draft) => {\n draft.description = v.target.value;\n });\n }}\n />\n </Grid>\n </Grid>\n\n {state.kind === 'TextVariable' && (\n <>\n <SectionHeader>Text Options</SectionHeader>\n <Grid container spacing={2} mb={2}>\n <Grid item xs={12}>\n <TextField\n label=\"Value\"\n value={state.textVariableFields.value}\n onChange={(v) => {\n setState((draft) => {\n draft.textVariableFields.value = v.target.value;\n });\n }}\n />\n </Grid>\n </Grid>\n </>\n )}\n\n {state.kind === 'ListVariable' && (\n <>\n <SectionHeader>List Options</SectionHeader>\n <Grid container spacing={2} mb={2}>\n <Grid item xs={6}>\n <TextField\n sx={{ mb: 1 }}\n label=\"Capturing Regexp\"\n value={state.listVariableFields.capturing_regexp}\n onChange={(e) => {\n setState((draft) => {\n draft.listVariableFields.capturing_regexp = e.target.value;\n });\n }}\n />\n {/** Hack?: Cool technique to refresh the preview to simulate onBlur event */}\n <ClickAwayListener onClickAway={() => refreshPreview()}>\n <Box />\n </ClickAwayListener>\n {/** */}\n <PluginEditor\n width={500}\n pluginType=\"Variable\"\n pluginKindLabel=\"Source\"\n value={state.listVariableFields.plugin}\n onChange={(val) => {\n setState((draft) => {\n draft.listVariableFields.plugin = val;\n });\n }}\n />\n </Grid>\n {state.listVariableFields.plugin.kind && (\n <Grid item xs={12}>\n <ErrorBoundary FallbackComponent={() => <div>Error previewing values</div>} resetKeys={[previewSpec]}>\n <Stack direction={'row'} spacing={1} alignItems=\"center\">\n <Typography variant=\"caption\">Preview Values</Typography>\n <IconButton onClick={refreshPreview} size=\"small\">\n <Refresh />\n </IconButton>\n </Stack>\n <VariableListPreview definition={previewSpec} />\n </ErrorBoundary>\n </Grid>\n )}\n </Grid>\n\n <SectionHeader>Dropdown Options</SectionHeader>\n <Grid container spacing={1} mb={1}>\n <Grid item xs={12}>\n Allow Multiple\n <Switch\n checked={state.listVariableFields.allowMultiple}\n onChange={(e) => {\n setState((draft) => {\n draft.listVariableFields.allowMultiple = e.target.checked;\n });\n }}\n />\n </Grid>\n <Grid item xs={12}>\n Allow All\n <Switch\n checked={state.listVariableFields.allowAll}\n onChange={(e) => {\n setState((draft) => {\n draft.listVariableFields.allowAll = e.target.checked;\n });\n }}\n />\n </Grid>\n </Grid>\n </>\n )}\n </Box>\n </>\n );\n}\n"],"names":["React","useMemo","useState","Box","Typography","Switch","TextField","Grid","FormControl","InputLabel","MenuItem","Select","Button","Stack","Alert","Chip","IconButton","ClickAwayListener","useImmer","PluginEditor","ErrorBoundary","Refresh","useListVariablePluginValues","getVariableDefinitionFromState","getInitialState","VARIABLE_TYPES","DEFAULT_MAX_PREVIEW_VALUES","getValidation","state","name","test","isValid","SectionHeader","children","pb","variant","VariableListPreview","definition","data","isFetching","error","maxValues","setMaxValues","showAll","undefined","notShown","length","errorMessage","message","severity","slice","map","val","sx","mr","mb","size","label","value","onClick","VariableEditForm","initialVariableDefinition","onChange","onCancel","setState","validation","previewKey","setPreviewKey","refreshPreview","prev","previewSpec","display","alignItems","padding","theme","spacing","borderBottom","palette","divider","direction","marginLeft","disabled","color","overflowY","container","item","xs","required","fullWidth","helperText","v","draft","target","id","labelId","kind","title","description","textVariableFields","listVariableFields","capturing_regexp","e","onClickAway","width","pluginType","pluginKindLabel","plugin","FallbackComponent","div","resetKeys","checked","allowMultiple","allowAll"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@perses-dev/dashboards",
3
- "version": "0.19.0",
3
+ "version": "0.20.0",
4
4
  "description": "The dashboards feature in Perses",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/perses/perses/blob/main/README.md",
@@ -28,9 +28,9 @@
28
28
  "lint:fix": "eslint --fix src --ext .ts,.tsx"
29
29
  },
30
30
  "dependencies": {
31
- "@perses-dev/components": "^0.19.0",
32
- "@perses-dev/core": "^0.19.0",
33
- "@perses-dev/plugin-system": "^0.19.0",
31
+ "@perses-dev/components": "^0.20.0",
32
+ "@perses-dev/core": "^0.20.0",
33
+ "@perses-dev/plugin-system": "^0.20.0",
34
34
  "@types/react-grid-layout": "^1.3.2",
35
35
  "date-fns": "^2.28.0",
36
36
  "immer": "^9.0.15",