@kartverket/backstage-plugin-risk-scorecard 3.1.0 → 3.1.2

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 (113) hide show
  1. package/dist/PluginRoot.esm.js +10 -6
  2. package/dist/PluginRoot.esm.js.map +1 -1
  3. package/dist/components/common/EditButton.esm.js +2 -2
  4. package/dist/components/common/EditButton.esm.js.map +1 -1
  5. package/dist/components/common/Input.esm.js +25 -32
  6. package/dist/components/common/Input.esm.js.map +1 -1
  7. package/dist/components/common/Markdown.esm.js +25 -0
  8. package/dist/components/common/Markdown.esm.js.map +1 -0
  9. package/dist/components/common/MarkdownInput.esm.js +24 -25
  10. package/dist/components/common/MarkdownInput.esm.js.map +1 -1
  11. package/dist/components/common/Select.esm.js +32 -25
  12. package/dist/components/common/Select.esm.js.map +1 -1
  13. package/dist/components/common/Spinner.esm.js +23 -21
  14. package/dist/components/common/Spinner.esm.js.map +1 -1
  15. package/dist/components/riScDialog/ConfigEncryptionDialog.esm.js +85 -44
  16. package/dist/components/riScDialog/ConfigEncryptionDialog.esm.js.map +1 -1
  17. package/dist/components/riScDialog/ConfigRiscInfo.esm.js +4 -4
  18. package/dist/components/riScDialog/ConfigRiscInfo.esm.js.map +1 -1
  19. package/dist/components/riScDialog/MatrixDialog.esm.js +3 -3
  20. package/dist/components/riScDialog/MatrixDialog.esm.js.map +1 -1
  21. package/dist/components/riScDialog/RiScDialog.esm.js +7 -7
  22. package/dist/components/riScDialog/RiScDialog.esm.js.map +1 -1
  23. package/dist/components/riScInfo/MigrationDialog.esm.js +2 -2
  24. package/dist/components/riScInfo/MigrationDialog.esm.js.map +1 -1
  25. package/dist/components/riScInfo/PublishDialog.esm.js +2 -2
  26. package/dist/components/riScInfo/PublishDialog.esm.js.map +1 -1
  27. package/dist/components/riScInfo/RiScInfo.esm.js +5 -5
  28. package/dist/components/riScInfo/RiScInfo.esm.js.map +1 -1
  29. package/dist/components/riScInfo/riScStatus/DifferenceText.esm.js +47 -85
  30. package/dist/components/riScInfo/riScStatus/DifferenceText.esm.js.map +1 -1
  31. package/dist/components/riScInfo/riScStatus/Progress.esm.js +4 -4
  32. package/dist/components/riScInfo/riScStatus/Progress.esm.js.map +1 -1
  33. package/dist/components/riScInfo/riScStatus/RiScDifferenceDialog.esm.js +7 -6
  34. package/dist/components/riScInfo/riScStatus/RiScDifferenceDialog.esm.js.map +1 -1
  35. package/dist/components/riScInfo/riScStatus/RiScStatusComponent.esm.js +59 -36
  36. package/dist/components/riScInfo/riScStatus/RiScStatusComponent.esm.js.map +1 -1
  37. package/dist/components/riScInfo/riScStatus/StatusIconWithText.esm.js +25 -0
  38. package/dist/components/riScInfo/riScStatus/StatusIconWithText.esm.js.map +1 -0
  39. package/dist/components/riScInfo/riScStatus/icons/disabled.svg +6 -0
  40. package/dist/components/riScPlugin/RiScPlugin.esm.js +16 -8
  41. package/dist/components/riScPlugin/RiScPlugin.esm.js.map +1 -1
  42. package/dist/components/riskMatrix/AggregatedCost.esm.js +2 -2
  43. package/dist/components/riskMatrix/AggregatedCost.esm.js.map +1 -1
  44. package/dist/components/riskMatrix/EstimatedRiskInfoDialog.esm.js +3 -3
  45. package/dist/components/riskMatrix/EstimatedRiskInfoDialog.esm.js.map +1 -1
  46. package/dist/components/riskMatrix/RiskMatrix.esm.js +7 -11
  47. package/dist/components/riskMatrix/RiskMatrix.esm.js.map +1 -1
  48. package/dist/components/riskMatrix/RiskMatrixScenarioCount.esm.js +5 -5
  49. package/dist/components/riskMatrix/RiskMatrixScenarioCount.esm.js.map +1 -1
  50. package/dist/components/riskMatrix/Tabs.esm.js +3 -3
  51. package/dist/components/riskMatrix/Tabs.esm.js.map +1 -1
  52. package/dist/components/riskMatrix/utils.esm.js +8 -0
  53. package/dist/components/riskMatrix/utils.esm.js.map +1 -0
  54. package/dist/components/scenarioDrawer/ScenarioDrawer.esm.js +10 -10
  55. package/dist/components/scenarioDrawer/ScenarioDrawer.esm.js.map +1 -1
  56. package/dist/components/scenarioDrawer/components/ActionBox.esm.js +11 -20
  57. package/dist/components/scenarioDrawer/components/ActionBox.esm.js.map +1 -1
  58. package/dist/components/scenarioDrawer/components/ActionFormItem.esm.js +15 -8
  59. package/dist/components/scenarioDrawer/components/ActionFormItem.esm.js.map +1 -1
  60. package/dist/components/scenarioDrawer/components/ActionsSection.esm.js +3 -3
  61. package/dist/components/scenarioDrawer/components/ActionsSection.esm.js.map +1 -1
  62. package/dist/components/scenarioDrawer/components/DeleteConfirmation.esm.js +3 -3
  63. package/dist/components/scenarioDrawer/components/DeleteConfirmation.esm.js.map +1 -1
  64. package/dist/components/scenarioDrawer/components/RiskFormSection.esm.js +3 -3
  65. package/dist/components/scenarioDrawer/components/RiskFormSection.esm.js.map +1 -1
  66. package/dist/components/scenarioDrawer/components/RiskSection.esm.js +4 -4
  67. package/dist/components/scenarioDrawer/components/RiskSection.esm.js.map +1 -1
  68. package/dist/components/scenarioDrawer/components/ScopeFormSection.esm.js +17 -12
  69. package/dist/components/scenarioDrawer/components/ScopeFormSection.esm.js.map +1 -1
  70. package/dist/components/scenarioDrawer/components/ScopeSection.esm.js +5 -5
  71. package/dist/components/scenarioDrawer/components/ScopeSection.esm.js.map +1 -1
  72. package/dist/components/scenarioTable/ScenarioTable.esm.js +9 -9
  73. package/dist/components/scenarioTable/ScenarioTable.esm.js.map +1 -1
  74. package/dist/components/scenarioTable/ScenarioTableRow.esm.js +3 -3
  75. package/dist/components/scenarioTable/ScenarioTableRow.esm.js.map +1 -1
  76. package/dist/components/scenarioWizard/ScenarioWizard.esm.js +10 -10
  77. package/dist/components/scenarioWizard/ScenarioWizard.esm.js.map +1 -1
  78. package/dist/components/scenarioWizard/components/CloseConfirmation.esm.js +3 -3
  79. package/dist/components/scenarioWizard/components/CloseConfirmation.esm.js.map +1 -1
  80. package/dist/components/scenarioWizard/components/ConsequenceTable.esm.js +34 -28
  81. package/dist/components/scenarioWizard/components/ConsequenceTable.esm.js.map +1 -1
  82. package/dist/components/scenarioWizard/components/ProbabilityTable.esm.js +24 -20
  83. package/dist/components/scenarioWizard/components/ProbabilityTable.esm.js.map +1 -1
  84. package/dist/components/scenarioWizard/steps/ActionsStep.esm.js +6 -8
  85. package/dist/components/scenarioWizard/steps/ActionsStep.esm.js.map +1 -1
  86. package/dist/components/scenarioWizard/steps/RiskStep.esm.js +2 -2
  87. package/dist/components/scenarioWizard/steps/RiskStep.esm.js.map +1 -1
  88. package/dist/components/scenarioWizard/steps/ScenarioStep.esm.js +3 -3
  89. package/dist/components/scenarioWizard/steps/ScenarioStep.esm.js.map +1 -1
  90. package/dist/components/sopsConfigDialog/GcpCryptoKeyMenu.esm.js +26 -14
  91. package/dist/components/sopsConfigDialog/GcpCryptoKeyMenu.esm.js.map +1 -1
  92. package/dist/components/sopsConfigDialog/GcpCryptoKeyMenuItem.esm.js +39 -36
  93. package/dist/components/sopsConfigDialog/GcpCryptoKeyMenuItem.esm.js.map +1 -1
  94. package/dist/contexts/RiScContext.esm.js +12 -12
  95. package/dist/contexts/RiScContext.esm.js.map +1 -1
  96. package/dist/contexts/ScenarioContext.esm.js +39 -37
  97. package/dist/contexts/ScenarioContext.esm.js.map +1 -1
  98. package/dist/index.d.ts +3 -1
  99. package/dist/urls/backend.esm.js +1 -3
  100. package/dist/urls/backend.esm.js.map +1 -1
  101. package/dist/utils/DTOs.esm.js +1 -11
  102. package/dist/utils/DTOs.esm.js.map +1 -1
  103. package/dist/utils/hooks.esm.js +83 -132
  104. package/dist/utils/hooks.esm.js.map +1 -1
  105. package/dist/utils/style.esm.js +12 -1
  106. package/dist/utils/style.esm.js.map +1 -1
  107. package/dist/utils/translations.esm.js +16 -0
  108. package/dist/utils/translations.esm.js.map +1 -1
  109. package/dist/utils/types.esm.js +11 -7
  110. package/dist/utils/types.esm.js.map +1 -1
  111. package/dist/utils/utilityfunctions.esm.js +25 -19
  112. package/dist/utils/utilityfunctions.esm.js.map +1 -1
  113. package/package.json +5 -3
@@ -14,12 +14,16 @@ const cache = createCache({
14
14
  key: "css",
15
15
  insertionPoint: emotionInsertionPoint
16
16
  });
17
- const ProvidedPlugin = () => /* @__PURE__ */ jsx(CacheProvider, { value: cache, children: /* @__PURE__ */ jsx(RiScProvider, { children: /* @__PURE__ */ jsx(ScenarioProvider, { children: /* @__PURE__ */ jsx(RiScPlugin, {}) }) }) });
18
- const PluginRoot = () => /* @__PURE__ */ jsxs(Routes, { children: [
19
- /* @__PURE__ */ jsx(Route, { path: "/", element: /* @__PURE__ */ jsx(ProvidedPlugin, {}) }),
20
- /* @__PURE__ */ jsx(Route, { path: riScRouteRef.path, element: /* @__PURE__ */ jsx(ProvidedPlugin, {}) }),
21
- /* @__PURE__ */ jsx(Route, { path: scenarioRouteRef.path, element: /* @__PURE__ */ jsx(ProvidedPlugin, {}) })
22
- ] });
17
+ function ProvidedPlugin() {
18
+ return /* @__PURE__ */ jsx(CacheProvider, { value: cache, children: /* @__PURE__ */ jsx(RiScProvider, { children: /* @__PURE__ */ jsx(ScenarioProvider, { children: /* @__PURE__ */ jsx(RiScPlugin, {}) }) }) });
19
+ }
20
+ function PluginRoot() {
21
+ return /* @__PURE__ */ jsxs(Routes, { children: [
22
+ /* @__PURE__ */ jsx(Route, { path: "/", element: /* @__PURE__ */ jsx(ProvidedPlugin, {}) }),
23
+ /* @__PURE__ */ jsx(Route, { path: riScRouteRef.path, element: /* @__PURE__ */ jsx(ProvidedPlugin, {}) }),
24
+ /* @__PURE__ */ jsx(Route, { path: scenarioRouteRef.path, element: /* @__PURE__ */ jsx(ProvidedPlugin, {}) })
25
+ ] });
26
+ }
23
27
 
24
28
  export { PluginRoot };
25
29
  //# sourceMappingURL=PluginRoot.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PluginRoot.esm.js","sources":["../src/PluginRoot.tsx"],"sourcesContent":["import { Route, Routes } from 'react-router-dom';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\nimport { RiScPlugin } from './components/riScPlugin/RiScPlugin';\nimport { ScenarioProvider } from './contexts/ScenarioContext';\nimport { riScRouteRef, scenarioRouteRef } from './routes';\nimport { RiScProvider } from './contexts/RiScContext';\n\nconst emotionInsertionPoint = document.createElement('meta');\nemotionInsertionPoint.setAttribute('name', 'emotion-insertion-point');\ndocument.querySelector('head')?.appendChild(emotionInsertionPoint);\n\nconst cache = createCache({\n key: 'css',\n insertionPoint: emotionInsertionPoint,\n});\n\nconst ProvidedPlugin = () => (\n <CacheProvider value={cache}>\n <RiScProvider>\n <ScenarioProvider>\n <RiScPlugin />\n </ScenarioProvider>\n </RiScProvider>\n </CacheProvider>\n);\n\nexport const PluginRoot = () => (\n <Routes>\n <Route path=\"/\" element={<ProvidedPlugin />} />\n <Route path={riScRouteRef.path} element={<ProvidedPlugin />} />\n <Route path={scenarioRouteRef.path} element={<ProvidedPlugin />} />\n </Routes>\n);\n"],"names":[],"mappings":";;;;;;;;;AAQA,MAAM,qBAAA,GAAwB,QAAS,CAAA,aAAA,CAAc,MAAM,CAAA;AAC3D,qBAAsB,CAAA,YAAA,CAAa,QAAQ,yBAAyB,CAAA;AACpE,QAAA,CAAS,aAAc,CAAA,MAAM,CAAG,EAAA,WAAA,CAAY,qBAAqB,CAAA;AAEjE,MAAM,QAAQ,WAAY,CAAA;AAAA,EACxB,GAAK,EAAA,KAAA;AAAA,EACL,cAAgB,EAAA;AAClB,CAAC,CAAA;AAED,MAAM,cAAiB,GAAA,sBACpB,GAAA,CAAA,aAAA,EAAA,EAAc,OAAO,KACpB,EAAA,QAAA,kBAAA,GAAA,CAAC,YACC,EAAA,EAAA,QAAA,kBAAA,GAAA,CAAC,gBACC,EAAA,EAAA,QAAA,kBAAA,GAAA,CAAC,UAAW,EAAA,EAAA,CAAA,EACd,GACF,CACF,EAAA,CAAA;AAGW,MAAA,UAAA,GAAa,sBACxB,IAAA,CAAC,MACC,EAAA,EAAA,QAAA,EAAA;AAAA,kBAAA,GAAA,CAAC,SAAM,IAAK,EAAA,GAAA,EAAI,OAAS,kBAAA,GAAA,CAAC,kBAAe,CAAI,EAAA,CAAA;AAAA,kBAC7C,GAAA,CAAC,SAAM,IAAM,EAAA,YAAA,CAAa,MAAM,OAAS,kBAAA,GAAA,CAAC,kBAAe,CAAI,EAAA,CAAA;AAAA,kBAC7D,GAAA,CAAC,SAAM,IAAM,EAAA,gBAAA,CAAiB,MAAM,OAAS,kBAAA,GAAA,CAAC,kBAAe,CAAI,EAAA;AAAA,CACnE,EAAA;;;;"}
1
+ {"version":3,"file":"PluginRoot.esm.js","sources":["../src/PluginRoot.tsx"],"sourcesContent":["import { Route, Routes } from 'react-router-dom';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\nimport { RiScPlugin } from './components/riScPlugin/RiScPlugin';\nimport { ScenarioProvider } from './contexts/ScenarioContext';\nimport { riScRouteRef, scenarioRouteRef } from './routes';\nimport { RiScProvider } from './contexts/RiScContext';\n\nconst emotionInsertionPoint = document.createElement('meta');\nemotionInsertionPoint.setAttribute('name', 'emotion-insertion-point');\ndocument.querySelector('head')?.appendChild(emotionInsertionPoint);\n\nconst cache = createCache({\n key: 'css',\n insertionPoint: emotionInsertionPoint,\n});\n\nfunction ProvidedPlugin() {\n return (\n <CacheProvider value={cache}>\n <RiScProvider>\n <ScenarioProvider>\n <RiScPlugin />\n </ScenarioProvider>\n </RiScProvider>\n </CacheProvider>\n );\n}\n\nexport function PluginRoot() {\n return (\n <Routes>\n <Route path=\"/\" element={<ProvidedPlugin />} />\n <Route path={riScRouteRef.path} element={<ProvidedPlugin />} />\n <Route path={scenarioRouteRef.path} element={<ProvidedPlugin />} />\n </Routes>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AAQA,MAAM,qBAAA,GAAwB,QAAS,CAAA,aAAA,CAAc,MAAM,CAAA;AAC3D,qBAAsB,CAAA,YAAA,CAAa,QAAQ,yBAAyB,CAAA;AACpE,QAAA,CAAS,aAAc,CAAA,MAAM,CAAG,EAAA,WAAA,CAAY,qBAAqB,CAAA;AAEjE,MAAM,QAAQ,WAAY,CAAA;AAAA,EACxB,GAAK,EAAA,KAAA;AAAA,EACL,cAAgB,EAAA;AAClB,CAAC,CAAA;AAED,SAAS,cAAiB,GAAA;AACxB,EAAA,uBACG,GAAA,CAAA,aAAA,EAAA,EAAc,KAAO,EAAA,KAAA,EACpB,QAAC,kBAAA,GAAA,CAAA,YAAA,EAAA,EACC,QAAC,kBAAA,GAAA,CAAA,gBAAA,EAAA,EACC,QAAC,kBAAA,GAAA,CAAA,UAAA,EAAA,EAAW,CACd,EAAA,CAAA,EACF,CACF,EAAA,CAAA;AAEJ;AAEO,SAAS,UAAa,GAAA;AAC3B,EAAA,4BACG,MACC,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,SAAM,IAAK,EAAA,GAAA,EAAI,OAAS,kBAAA,GAAA,CAAC,kBAAe,CAAI,EAAA,CAAA;AAAA,oBAC7C,GAAA,CAAC,SAAM,IAAM,EAAA,YAAA,CAAa,MAAM,OAAS,kBAAA,GAAA,CAAC,kBAAe,CAAI,EAAA,CAAA;AAAA,oBAC7D,GAAA,CAAC,SAAM,IAAM,EAAA,gBAAA,CAAiB,MAAM,OAAS,kBAAA,GAAA,CAAC,kBAAe,CAAI,EAAA;AAAA,GACnE,EAAA,CAAA;AAEJ;;;;"}
@@ -7,10 +7,10 @@ const useEditButtonStyle = makeStyles((theme) => ({
7
7
  color: theme.palette.type === "dark" ? "#fff" : "rgba(0, 0, 0, 0.54)"
8
8
  }
9
9
  }));
10
- const EditButton = (props) => {
10
+ function EditButton(props) {
11
11
  const { icon } = useEditButtonStyle();
12
12
  return /* @__PURE__ */ jsx(IconButton, { size: "small", ...props, children: /* @__PURE__ */ jsx(EditIcon, { className: icon, "aria-label": "Edit" }) });
13
- };
13
+ }
14
14
 
15
15
  export { EditButton as default };
16
16
  //# sourceMappingURL=EditButton.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditButton.esm.js","sources":["../../../src/components/common/EditButton.tsx"],"sourcesContent":["import {\n IconButton,\n IconButtonProps,\n makeStyles,\n Theme,\n} from '@material-ui/core';\nimport EditIcon from '@mui/icons-material/Edit';\n\nconst useEditButtonStyle = makeStyles((theme: Theme) => ({\n icon: {\n color: theme.palette.type === 'dark' ? '#fff' : 'rgba(0, 0, 0, 0.54)',\n },\n}));\n\nconst EditButton = (props: IconButtonProps) => {\n const { icon } = useEditButtonStyle();\n\n return (\n <IconButton size=\"small\" {...props}>\n <EditIcon className={icon} aria-label=\"Edit\" />\n </IconButton>\n );\n};\n\nexport default EditButton;\n"],"names":[],"mappings":";;;;AAQA,MAAM,kBAAA,GAAqB,UAAW,CAAA,CAAC,KAAkB,MAAA;AAAA,EACvD,IAAM,EAAA;AAAA,IACJ,KAAO,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,MAAS,GAAA;AAAA;AAEpD,CAAE,CAAA,CAAA;AAEI,MAAA,UAAA,GAAa,CAAC,KAA2B,KAAA;AAC7C,EAAM,MAAA,EAAE,IAAK,EAAA,GAAI,kBAAmB,EAAA;AAEpC,EAAA,uBACG,GAAA,CAAA,UAAA,EAAA,EAAW,IAAK,EAAA,OAAA,EAAS,GAAG,KAAA,EAC3B,QAAC,kBAAA,GAAA,CAAA,QAAA,EAAA,EAAS,SAAW,EAAA,IAAA,EAAM,YAAW,EAAA,MAAA,EAAO,CAC/C,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"EditButton.esm.js","sources":["../../../src/components/common/EditButton.tsx"],"sourcesContent":["import {\n IconButton,\n IconButtonProps,\n makeStyles,\n Theme,\n} from '@material-ui/core';\nimport EditIcon from '@mui/icons-material/Edit';\n\nconst useEditButtonStyle = makeStyles((theme: Theme) => ({\n icon: {\n color: theme.palette.type === 'dark' ? '#fff' : 'rgba(0, 0, 0, 0.54)',\n },\n}));\n\nfunction EditButton(props: IconButtonProps) {\n const { icon } = useEditButtonStyle();\n\n return (\n <IconButton size=\"small\" {...props}>\n <EditIcon className={icon} aria-label=\"Edit\" />\n </IconButton>\n );\n}\n\nexport default EditButton;\n"],"names":[],"mappings":";;;;AAQA,MAAM,kBAAA,GAAqB,UAAW,CAAA,CAAC,KAAkB,MAAA;AAAA,EACvD,IAAM,EAAA;AAAA,IACJ,KAAO,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,MAAS,GAAA;AAAA;AAEpD,CAAE,CAAA,CAAA;AAEF,SAAS,WAAW,KAAwB,EAAA;AAC1C,EAAM,MAAA,EAAE,IAAK,EAAA,GAAI,kBAAmB,EAAA;AAEpC,EAAA,uBACG,GAAA,CAAA,UAAA,EAAA,EAAW,IAAK,EAAA,OAAA,EAAS,GAAG,KAAA,EAC3B,QAAC,kBAAA,GAAA,CAAA,QAAA,EAAA,EAAS,SAAW,EAAA,IAAA,EAAM,YAAW,EAAA,MAAA,EAAO,CAC/C,EAAA,CAAA;AAEJ;;;;"}
@@ -5,41 +5,34 @@ import FormLabel from '@mui/material/FormLabel';
5
5
  import TextField from '@mui/material/TextField';
6
6
  import { forwardRef } from 'react';
7
7
  import { formLabel, formHelperText } from './typography.esm.js';
8
+ import { formControlStyles, commonTextColor } from '../../utils/style.esm.js';
8
9
 
9
10
  const Input = forwardRef(
10
11
  ({ label, sublabel, error, helperText, required, ...props }, ref) => {
11
- return /* @__PURE__ */ jsxs(
12
- FormControl,
13
- {
14
- sx: { width: "100%", gap: "4px" },
15
- error,
16
- required,
17
- children: [
18
- label && /* @__PURE__ */ jsx(FormLabel, { required, sx: formLabel, children: label }),
19
- sublabel && /* @__PURE__ */ jsx(FormHelperText, { sx: formHelperText, children: sublabel }),
20
- /* @__PURE__ */ jsx(
21
- TextField,
22
- {
23
- id: "filled-multiline-static",
24
- error,
25
- multiline: true,
26
- fullWidth: true,
27
- variant: "outlined",
28
- inputRef: ref,
29
- InputProps: {
30
- sx: (theme) => ({
31
- "&.Mui-disabled": {
32
- color: theme.palette.mode === "dark" ? "#FFFFFF80" : "#757575"
33
- }
34
- })
35
- },
36
- ...props
37
- }
38
- ),
39
- helperText && /* @__PURE__ */ jsx(FormHelperText, { children: helperText })
40
- ]
41
- }
42
- );
12
+ return /* @__PURE__ */ jsxs(FormControl, { sx: formControlStyles, error, required, children: [
13
+ label && /* @__PURE__ */ jsx(FormLabel, { required, sx: formLabel, children: label }),
14
+ sublabel && /* @__PURE__ */ jsx(FormHelperText, { sx: formHelperText, children: sublabel }),
15
+ /* @__PURE__ */ jsx(
16
+ TextField,
17
+ {
18
+ id: "filled-multiline-static",
19
+ error,
20
+ multiline: true,
21
+ fullWidth: true,
22
+ variant: "outlined",
23
+ inputRef: ref,
24
+ InputProps: {
25
+ sx: (theme) => ({
26
+ "&.Mui-disabled": {
27
+ color: commonTextColor(theme, true)
28
+ }
29
+ })
30
+ },
31
+ ...props
32
+ }
33
+ ),
34
+ helperText && /* @__PURE__ */ jsx(FormHelperText, { children: helperText })
35
+ ] });
43
36
  }
44
37
  );
45
38
 
@@ -1 +1 @@
1
- {"version":3,"file":"Input.esm.js","sources":["../../../src/components/common/Input.tsx"],"sourcesContent":["import FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormLabel from '@mui/material/FormLabel';\nimport TextField, { TextFieldProps } from '@mui/material/TextField';\nimport { forwardRef } from 'react';\nimport { formHelperText, formLabel } from './typography';\n\ntype Props = TextFieldProps & {\n sublabel?: string;\n};\n\nexport const Input = forwardRef<HTMLInputElement, Props>(\n ({ label, sublabel, error, helperText, required, ...props }, ref) => {\n return (\n <FormControl\n sx={{ width: '100%', gap: '4px' }}\n error={error}\n required={required}\n >\n {label && (\n <FormLabel required={required} sx={formLabel}>\n {label}\n </FormLabel>\n )}\n {sublabel && (\n <FormHelperText sx={formHelperText}>{sublabel}</FormHelperText>\n )}\n <TextField\n id=\"filled-multiline-static\"\n error={error}\n multiline\n fullWidth\n variant=\"outlined\"\n inputRef={ref}\n InputProps={{\n sx: theme => ({\n '&.Mui-disabled': {\n color: theme.palette.mode === 'dark' ? '#FFFFFF80' : '#757575',\n },\n }),\n }}\n {...props}\n />\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\n </FormControl>\n );\n },\n);\n"],"names":[],"mappings":";;;;;;;;AAWO,MAAM,KAAQ,GAAA,UAAA;AAAA,EACnB,CAAC,EAAE,KAAA,EAAO,QAAU,EAAA,KAAA,EAAO,YAAY,QAAU,EAAA,GAAG,KAAM,EAAA,EAAG,GAAQ,KAAA;AACnE,IACE,uBAAA,IAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,EAAI,EAAA,EAAE,KAAO,EAAA,MAAA,EAAQ,KAAK,KAAM,EAAA;AAAA,QAChC,KAAA;AAAA,QACA,QAAA;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,KAAA,oBACE,GAAA,CAAA,SAAA,EAAA,EAAU,QAAoB,EAAA,EAAA,EAAI,WAChC,QACH,EAAA,KAAA,EAAA,CAAA;AAAA,UAED,QACC,oBAAA,GAAA,CAAC,cAAe,EAAA,EAAA,EAAA,EAAI,gBAAiB,QAAS,EAAA,QAAA,EAAA,CAAA;AAAA,0BAEhD,GAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACC,EAAG,EAAA,yBAAA;AAAA,cACH,KAAA;AAAA,cACA,SAAS,EAAA,IAAA;AAAA,cACT,SAAS,EAAA,IAAA;AAAA,cACT,OAAQ,EAAA,UAAA;AAAA,cACR,QAAU,EAAA,GAAA;AAAA,cACV,UAAY,EAAA;AAAA,gBACV,IAAI,CAAU,KAAA,MAAA;AAAA,kBACZ,gBAAkB,EAAA;AAAA,oBAChB,KAAO,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,WAAc,GAAA;AAAA;AACvD,iBACF;AAAA,eACF;AAAA,cACC,GAAG;AAAA;AAAA,WACN;AAAA,UACC,UAAA,oBAAe,GAAA,CAAA,cAAA,EAAA,EAAgB,QAAW,EAAA,UAAA,EAAA;AAAA;AAAA;AAAA,KAC7C;AAAA;AAGN;;;;"}
1
+ {"version":3,"file":"Input.esm.js","sources":["../../../src/components/common/Input.tsx"],"sourcesContent":["import FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormLabel from '@mui/material/FormLabel';\nimport TextField, { TextFieldProps } from '@mui/material/TextField';\nimport { forwardRef } from 'react';\nimport { formHelperText, formLabel } from './typography';\nimport { commonTextColor, formControlStyles } from '../../utils/style';\n\ntype Props = TextFieldProps & {\n sublabel?: string;\n};\n\nexport const Input = forwardRef<HTMLInputElement, Props>(\n ({ label, sublabel, error, helperText, required, ...props }, ref) => {\n return (\n <FormControl sx={formControlStyles} error={error} required={required}>\n {label && (\n <FormLabel required={required} sx={formLabel}>\n {label}\n </FormLabel>\n )}\n {sublabel && (\n <FormHelperText sx={formHelperText}>{sublabel}</FormHelperText>\n )}\n <TextField\n id=\"filled-multiline-static\"\n error={error}\n multiline\n fullWidth\n variant=\"outlined\"\n inputRef={ref}\n InputProps={{\n sx: theme => ({\n '&.Mui-disabled': {\n color: commonTextColor(theme, true),\n },\n }),\n }}\n {...props}\n />\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\n </FormControl>\n );\n },\n);\n"],"names":[],"mappings":";;;;;;;;;AAYO,MAAM,KAAQ,GAAA,UAAA;AAAA,EACnB,CAAC,EAAE,KAAA,EAAO,QAAU,EAAA,KAAA,EAAO,YAAY,QAAU,EAAA,GAAG,KAAM,EAAA,EAAG,GAAQ,KAAA;AACnE,IAAA,uBACG,IAAA,CAAA,WAAA,EAAA,EAAY,EAAI,EAAA,iBAAA,EAAmB,OAAc,QAC/C,EAAA,QAAA,EAAA;AAAA,MAAA,KAAA,oBACE,GAAA,CAAA,SAAA,EAAA,EAAU,QAAoB,EAAA,EAAA,EAAI,WAChC,QACH,EAAA,KAAA,EAAA,CAAA;AAAA,MAED,QACC,oBAAA,GAAA,CAAC,cAAe,EAAA,EAAA,EAAA,EAAI,gBAAiB,QAAS,EAAA,QAAA,EAAA,CAAA;AAAA,sBAEhD,GAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,EAAG,EAAA,yBAAA;AAAA,UACH,KAAA;AAAA,UACA,SAAS,EAAA,IAAA;AAAA,UACT,SAAS,EAAA,IAAA;AAAA,UACT,OAAQ,EAAA,UAAA;AAAA,UACR,QAAU,EAAA,GAAA;AAAA,UACV,UAAY,EAAA;AAAA,YACV,IAAI,CAAU,KAAA,MAAA;AAAA,cACZ,gBAAkB,EAAA;AAAA,gBAChB,KAAA,EAAO,eAAgB,CAAA,KAAA,EAAO,IAAI;AAAA;AACpC,aACF;AAAA,WACF;AAAA,UACC,GAAG;AAAA;AAAA,OACN;AAAA,MACC,UAAA,oBAAe,GAAA,CAAA,cAAA,EAAA,EAAgB,QAAW,EAAA,UAAA,EAAA;AAAA,KAC7C,EAAA,CAAA;AAAA;AAGN;;;;"}
@@ -0,0 +1,25 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import Typography from '@mui/material/Typography';
3
+ import ReactMarkdown from 'react-markdown';
4
+ import { useTheme } from '@mui/material/styles';
5
+ import 'github-markdown-css/github-markdown.css';
6
+ import remarkBreaks from 'remark-breaks';
7
+ import { commonBackgroundColor, commonTextColor } from '../../utils/style.esm.js';
8
+
9
+ function Markdown({ description, disabled = false }) {
10
+ const theme = useTheme();
11
+ return /* @__PURE__ */ jsx(
12
+ Typography,
13
+ {
14
+ className: "markdown-body",
15
+ sx: {
16
+ color: commonTextColor(theme, disabled),
17
+ backgroundColor: commonBackgroundColor(theme, disabled)
18
+ },
19
+ children: /* @__PURE__ */ jsx(ReactMarkdown, { remarkPlugins: [remarkBreaks], children: description })
20
+ }
21
+ );
22
+ }
23
+
24
+ export { Markdown };
25
+ //# sourceMappingURL=Markdown.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Markdown.esm.js","sources":["../../../src/components/common/Markdown.tsx"],"sourcesContent":["import Typography from '@mui/material/Typography';\nimport ReactMarkdown from 'react-markdown';\nimport { useTheme } from '@mui/material/styles';\nimport 'github-markdown-css/github-markdown.css';\nimport remarkBreaks from 'remark-breaks';\nimport { commonTextColor, commonBackgroundColor } from '../../utils/style';\n\ntype Props = {\n description: string;\n disabled?: boolean;\n};\n\nexport function Markdown({ description, disabled = false }: Props) {\n const theme = useTheme();\n\n return (\n <Typography\n className=\"markdown-body\"\n sx={{\n color: commonTextColor(theme, disabled),\n backgroundColor: commonBackgroundColor(theme, disabled),\n }}\n >\n <ReactMarkdown remarkPlugins={[remarkBreaks]}>\n {description}\n </ReactMarkdown>\n </Typography>\n );\n}\n"],"names":[],"mappings":";;;;;;;;AAYO,SAAS,QAAS,CAAA,EAAE,WAAa,EAAA,QAAA,GAAW,OAAgB,EAAA;AACjE,EAAA,MAAM,QAAQ,QAAS,EAAA;AAEvB,EACE,uBAAA,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,SAAU,EAAA,eAAA;AAAA,MACV,EAAI,EAAA;AAAA,QACF,KAAA,EAAO,eAAgB,CAAA,KAAA,EAAO,QAAQ,CAAA;AAAA,QACtC,eAAA,EAAiB,qBAAsB,CAAA,KAAA,EAAO,QAAQ;AAAA,OACxD;AAAA,MAEA,8BAAC,aAAc,EAAA,EAAA,aAAA,EAAe,CAAC,YAAY,GACxC,QACH,EAAA,WAAA,EAAA;AAAA;AAAA,GACF;AAEJ;;;;"}
@@ -5,6 +5,8 @@ import FormHelperText from '@mui/material/FormHelperText';
5
5
  import FormLabel from '@mui/material/FormLabel';
6
6
  import MDEditor from '@uiw/react-md-editor';
7
7
  import { formLabel, formHelperText } from './typography.esm.js';
8
+ import { useTheme } from '@mui/material/styles';
9
+ import { formControlStyles, commonBackgroundColor, commonTextColor } from '../../utils/style.esm.js';
8
10
 
9
11
  const MarkdownInput = forwardRef(
10
12
  ({
@@ -12,14 +14,15 @@ const MarkdownInput = forwardRef(
12
14
  sublabel,
13
15
  error,
14
16
  helperText,
15
- required,
16
17
  minRows,
17
18
  value,
18
- onMarkdownChange
19
+ onMarkdownChange,
20
+ disabled = false
19
21
  }, ref) => {
20
22
  const [markdownContent, setMarkdownContent] = useState(
21
23
  value
22
24
  );
25
+ const theme = useTheme();
23
26
  useEffect(() => {
24
27
  setMarkdownContent(value);
25
28
  }, [value]);
@@ -27,29 +30,25 @@ const MarkdownInput = forwardRef(
27
30
  setMarkdownContent(newValue || "");
28
31
  onMarkdownChange?.(newValue || "");
29
32
  };
30
- return /* @__PURE__ */ jsxs(
31
- FormControl,
32
- {
33
- sx: { width: "100%", gap: "4px" },
34
- error,
35
- required,
36
- children: [
37
- label && /* @__PURE__ */ jsx(FormLabel, { required, sx: formLabel, children: label }),
38
- sublabel && /* @__PURE__ */ jsx(FormHelperText, { sx: formHelperText, children: sublabel }),
39
- /* @__PURE__ */ jsx(
40
- MDEditor,
41
- {
42
- ref,
43
- value: markdownContent,
44
- onChange: handleMarkdownChange,
45
- preview: "edit",
46
- height: minRows ? minRows * 24 : 64
47
- }
48
- ),
49
- helperText && /* @__PURE__ */ jsx(FormHelperText, { children: helperText })
50
- ]
51
- }
52
- );
33
+ return /* @__PURE__ */ jsxs(FormControl, { sx: formControlStyles, error, children: [
34
+ label && /* @__PURE__ */ jsx(FormLabel, { sx: formLabel, children: label }),
35
+ sublabel && /* @__PURE__ */ jsx(FormHelperText, { sx: formHelperText, children: sublabel }),
36
+ /* @__PURE__ */ jsx(
37
+ MDEditor,
38
+ {
39
+ ref,
40
+ value: markdownContent,
41
+ onChange: handleMarkdownChange,
42
+ preview: "edit",
43
+ height: minRows ? minRows * 24 : 64,
44
+ style: {
45
+ color: commonTextColor(theme, disabled),
46
+ backgroundColor: commonBackgroundColor(theme, disabled)
47
+ }
48
+ }
49
+ ),
50
+ helperText && /* @__PURE__ */ jsx(FormHelperText, { children: helperText })
51
+ ] });
53
52
  }
54
53
  );
55
54
 
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownInput.esm.js","sources":["../../../src/components/common/MarkdownInput.tsx"],"sourcesContent":["import { forwardRef, useState, useEffect } from 'react';\nimport FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormLabel from '@mui/material/FormLabel';\nimport MDEditor from '@uiw/react-md-editor';\nimport { formHelperText, formLabel } from './typography';\nimport { TextFieldProps } from '@material-ui/core';\n\ntype Props = TextFieldProps & {\n sublabel?: string;\n value?: string;\n onMarkdownChange?: (markdown: string) => void;\n minRows?: number;\n};\n\nexport const MarkdownInput = forwardRef<HTMLDivElement, Props>(\n (\n {\n label,\n sublabel,\n error,\n helperText,\n required,\n minRows,\n value,\n onMarkdownChange,\n },\n ref,\n ) => {\n const [markdownContent, setMarkdownContent] = useState<string | undefined>(\n value,\n );\n\n useEffect(() => {\n setMarkdownContent(value);\n }, [value]);\n\n const handleMarkdownChange = (newValue: string | undefined) => {\n setMarkdownContent(newValue || '');\n onMarkdownChange?.(newValue || '');\n };\n\n return (\n <FormControl\n sx={{ width: '100%', gap: '4px' }}\n error={error}\n required={required}\n >\n {label && (\n <FormLabel required={required} sx={formLabel}>\n {label}\n </FormLabel>\n )}\n {sublabel && (\n <FormHelperText sx={formHelperText}>{sublabel}</FormHelperText>\n )}\n <MDEditor\n ref={ref}\n value={markdownContent}\n onChange={handleMarkdownChange}\n preview=\"edit\"\n height={minRows ? minRows * 24 : 64}\n />\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\n </FormControl>\n );\n },\n);\n"],"names":[],"mappings":";;;;;;;;AAeO,MAAM,aAAgB,GAAA,UAAA;AAAA,EAC3B,CACE;AAAA,IACE,KAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,KAEF,GACG,KAAA;AACH,IAAM,MAAA,CAAC,eAAiB,EAAA,kBAAkB,CAAI,GAAA,QAAA;AAAA,MAC5C;AAAA,KACF;AAEA,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,kBAAA,CAAmB,KAAK,CAAA;AAAA,KAC1B,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,IAAM,MAAA,oBAAA,GAAuB,CAAC,QAAiC,KAAA;AAC7D,MAAA,kBAAA,CAAmB,YAAY,EAAE,CAAA;AACjC,MAAA,gBAAA,GAAmB,YAAY,EAAE,CAAA;AAAA,KACnC;AAEA,IACE,uBAAA,IAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,EAAI,EAAA,EAAE,KAAO,EAAA,MAAA,EAAQ,KAAK,KAAM,EAAA;AAAA,QAChC,KAAA;AAAA,QACA,QAAA;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,KAAA,oBACE,GAAA,CAAA,SAAA,EAAA,EAAU,QAAoB,EAAA,EAAA,EAAI,WAChC,QACH,EAAA,KAAA,EAAA,CAAA;AAAA,UAED,QACC,oBAAA,GAAA,CAAC,cAAe,EAAA,EAAA,EAAA,EAAI,gBAAiB,QAAS,EAAA,QAAA,EAAA,CAAA;AAAA,0BAEhD,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,GAAA;AAAA,cACA,KAAO,EAAA,eAAA;AAAA,cACP,QAAU,EAAA,oBAAA;AAAA,cACV,OAAQ,EAAA,MAAA;AAAA,cACR,MAAA,EAAQ,OAAU,GAAA,OAAA,GAAU,EAAK,GAAA;AAAA;AAAA,WACnC;AAAA,UACC,UAAA,oBAAe,GAAA,CAAA,cAAA,EAAA,EAAgB,QAAW,EAAA,UAAA,EAAA;AAAA;AAAA;AAAA,KAC7C;AAAA;AAGN;;;;"}
1
+ {"version":3,"file":"MarkdownInput.esm.js","sources":["../../../src/components/common/MarkdownInput.tsx"],"sourcesContent":["import { forwardRef, useState, useEffect } from 'react';\nimport FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormLabel from '@mui/material/FormLabel';\nimport MDEditor from '@uiw/react-md-editor';\nimport { formHelperText, formLabel } from './typography';\nimport { TextFieldProps } from '@material-ui/core';\nimport { useTheme } from '@mui/material/styles';\nimport {\n commonTextColor,\n commonBackgroundColor,\n formControlStyles,\n} from '../../utils/style';\n\ntype Props = TextFieldProps & {\n sublabel?: string;\n value?: string;\n onMarkdownChange?: (markdown: string) => void;\n minRows?: number;\n};\n\nexport const MarkdownInput = forwardRef<HTMLDivElement, Props>(\n (\n {\n label,\n sublabel,\n error,\n helperText,\n minRows,\n value,\n onMarkdownChange,\n disabled = false,\n },\n ref,\n ) => {\n const [markdownContent, setMarkdownContent] = useState<string | undefined>(\n value,\n );\n\n const theme = useTheme();\n\n useEffect(() => {\n setMarkdownContent(value);\n }, [value]);\n\n const handleMarkdownChange = (newValue: string | undefined) => {\n setMarkdownContent(newValue || '');\n onMarkdownChange?.(newValue || '');\n };\n\n return (\n <FormControl sx={formControlStyles} error={error}>\n {label && <FormLabel sx={formLabel}>{label}</FormLabel>}\n {sublabel && (\n <FormHelperText sx={formHelperText}>{sublabel}</FormHelperText>\n )}\n <MDEditor\n ref={ref}\n value={markdownContent}\n onChange={handleMarkdownChange}\n preview=\"edit\"\n height={minRows ? minRows * 24 : 64}\n style={{\n color: commonTextColor(theme, disabled),\n backgroundColor: commonBackgroundColor(theme, disabled),\n }}\n />\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\n </FormControl>\n );\n },\n);\n"],"names":[],"mappings":";;;;;;;;;;AAqBO,MAAM,aAAgB,GAAA,UAAA;AAAA,EAC3B,CACE;AAAA,IACE,KAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,gBAAA;AAAA,IACA,QAAW,GAAA;AAAA,KAEb,GACG,KAAA;AACH,IAAM,MAAA,CAAC,eAAiB,EAAA,kBAAkB,CAAI,GAAA,QAAA;AAAA,MAC5C;AAAA,KACF;AAEA,IAAA,MAAM,QAAQ,QAAS,EAAA;AAEvB,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,kBAAA,CAAmB,KAAK,CAAA;AAAA,KAC1B,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,IAAM,MAAA,oBAAA,GAAuB,CAAC,QAAiC,KAAA;AAC7D,MAAA,kBAAA,CAAmB,YAAY,EAAE,CAAA;AACjC,MAAA,gBAAA,GAAmB,YAAY,EAAE,CAAA;AAAA,KACnC;AAEA,IAAA,uBACG,IAAA,CAAA,WAAA,EAAA,EAAY,EAAI,EAAA,iBAAA,EAAmB,KACjC,EAAA,QAAA,EAAA;AAAA,MAAA,KAAA,oBAAU,GAAA,CAAA,SAAA,EAAA,EAAU,EAAI,EAAA,SAAA,EAAY,QAAM,EAAA,KAAA,EAAA,CAAA;AAAA,MAC1C,QACC,oBAAA,GAAA,CAAC,cAAe,EAAA,EAAA,EAAA,EAAI,gBAAiB,QAAS,EAAA,QAAA,EAAA,CAAA;AAAA,sBAEhD,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,KAAO,EAAA,eAAA;AAAA,UACP,QAAU,EAAA,oBAAA;AAAA,UACV,OAAQ,EAAA,MAAA;AAAA,UACR,MAAA,EAAQ,OAAU,GAAA,OAAA,GAAU,EAAK,GAAA,EAAA;AAAA,UACjC,KAAO,EAAA;AAAA,YACL,KAAA,EAAO,eAAgB,CAAA,KAAA,EAAO,QAAQ,CAAA;AAAA,YACtC,eAAA,EAAiB,qBAAsB,CAAA,KAAA,EAAO,QAAQ;AAAA;AACxD;AAAA,OACF;AAAA,MACC,UAAA,oBAAe,GAAA,CAAA,cAAA,EAAA,EAAgB,QAAW,EAAA,UAAA,EAAA;AAAA,KAC7C,EAAA,CAAA;AAAA;AAGN;;;;"}
@@ -13,7 +13,7 @@ import MenuItem from '@mui/material/MenuItem';
13
13
  import ListItemText from '@mui/material/ListItemText';
14
14
  import { formLabel, formHelperText } from './typography.esm.js';
15
15
 
16
- const Select = ({
16
+ function Select({
17
17
  label,
18
18
  sublabel,
19
19
  error,
@@ -25,38 +25,45 @@ const Select = ({
25
25
  labelTranslationKey,
26
26
  options,
27
27
  ...props
28
- }) => {
28
+ }) {
29
29
  const { t } = useTranslationRef(pluginRiScTranslationRef);
30
30
  const { field } = useController({
31
31
  name,
32
32
  control,
33
33
  rules: { required }
34
34
  });
35
- const renderValue = (values) => multiple ? /* @__PURE__ */ jsx(
36
- Box,
37
- {
38
- sx: {
39
- display: "flex",
40
- flexWrap: "wrap",
41
- marginBottom: 0,
42
- paddingBottom: 0
43
- },
44
- children: values.map((value) => /* @__PURE__ */ jsx(
45
- Chip,
46
- {
47
- label: (
48
- /* @ts-ignore Because ts can't typecheck strings against our keys */
49
- labelTranslationKey ? t(`${labelTranslationKey}.${value}`) : value
50
- )
35
+ function renderValue(values) {
36
+ if (!multiple) {
37
+ return options.find((option) => option.value === values)?.renderedValue;
38
+ }
39
+ return /* @__PURE__ */ jsx(
40
+ Box,
41
+ {
42
+ sx: {
43
+ display: "flex",
44
+ flexWrap: "wrap",
45
+ marginBottom: 0,
46
+ paddingBottom: 0
51
47
  },
52
- value
53
- ))
48
+ children: values.map((value) => /* @__PURE__ */ jsx(
49
+ Chip,
50
+ {
51
+ label: (
52
+ /* @ts-ignore Because ts can't typecheck strings against our keys */
53
+ labelTranslationKey ? t(`${labelTranslationKey}.${value}`) : value
54
+ )
55
+ },
56
+ value
57
+ ))
58
+ }
59
+ );
60
+ }
61
+ function handleChecked(fieldValue, optionValue) {
62
+ if (Array.isArray(fieldValue)) {
63
+ return fieldValue.includes(optionValue);
54
64
  }
55
- ) : options.find((option) => option.value === values)?.renderedValue;
56
- const handleChecked = (fieldValue, optionValue) => {
57
- if (Array.isArray(fieldValue)) return fieldValue.includes(optionValue);
58
65
  return fieldValue === optionValue;
59
- };
66
+ }
60
67
  return /* @__PURE__ */ jsxs(FormControl, { sx: { width: "100%", gap: "4px" }, children: [
61
68
  label && /* @__PURE__ */ jsx(FormLabel, { sx: formLabel, required, children: label }),
62
69
  sublabel && /* @__PURE__ */ jsx(FormHelperText, { sx: formHelperText, children: sublabel }),
@@ -87,7 +94,7 @@ const Select = ({
87
94
  ),
88
95
  error && /* @__PURE__ */ jsx(FormHelperText, { error: true, children: helperText })
89
96
  ] });
90
- };
97
+ }
91
98
 
92
99
  export { Select };
93
100
  //# sourceMappingURL=Select.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.esm.js","sources":["../../../src/components/common/Select.tsx"],"sourcesContent":["import {\n Control,\n FieldValues,\n Path,\n useController,\n type UseControllerReturn,\n} from 'react-hook-form';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport Box from '@mui/material/Box';\nimport Chip from '@mui/material/Chip';\nimport FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormLabel from '@mui/material/FormLabel';\nimport MUISelect, { SelectProps } from '@mui/material/Select';\nimport Checkbox from '@mui/material/Checkbox';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemText from '@mui/material/ListItemText';\nimport { formHelperText, formLabel } from './typography';\n\ntype Props<T extends FieldValues> = SelectProps & {\n sublabel?: string;\n helperText?: string;\n control?: Control<T, any>;\n name: Path<T>;\n labelTranslationKey?: string;\n options: { value: string | number; renderedValue: string | number }[];\n};\n\nexport const Select = <T extends FieldValues>({\n label,\n sublabel,\n error,\n helperText,\n required,\n control,\n name,\n multiple,\n labelTranslationKey,\n options,\n ...props\n}: Props<T>) => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { field } = useController({\n name,\n control,\n rules: { required },\n });\n\n // values er strengt tatt unknown, men da må vi bruke mye ts-ignore for å komme i mål\n const renderValue = (values: any) =>\n multiple ? (\n <Box\n sx={{\n display: 'flex',\n flexWrap: 'wrap',\n marginBottom: 0,\n paddingBottom: 0,\n }}\n >\n {values.map((value: string) => (\n <Chip\n key={value}\n label={\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n labelTranslationKey ? t(`${labelTranslationKey}.${value}`) : value\n }\n />\n ))}\n </Box>\n ) : (\n options.find(option => option.value === values)?.renderedValue\n );\n\n const handleChecked = (\n fieldValue: UseControllerReturn['field']['value'],\n optionValue: Props<T>['options'][number]['value'],\n ) => {\n if (Array.isArray(fieldValue)) return fieldValue.includes(optionValue);\n return fieldValue === optionValue;\n };\n\n return (\n <FormControl sx={{ width: '100%', gap: '4px' }}>\n {label && (\n <FormLabel sx={formLabel} required={required}>\n {label}\n </FormLabel>\n )}\n {sublabel && (\n <FormHelperText sx={formHelperText}>{sublabel}</FormHelperText>\n )}\n\n <MUISelect\n MenuProps={{\n disablePortal: true,\n }}\n variant=\"outlined\"\n renderValue={renderValue}\n multiple={multiple}\n SelectDisplayProps={\n multiple\n ? {\n style: {\n paddingBottom: 8,\n paddingTop: 16,\n minHeight: 40,\n },\n }\n : {}\n }\n inputRef={field.ref}\n {...field}\n {...props}\n >\n {options.map(option => (\n <MenuItem key={option.value} value={option.value}>\n {multiple && (\n <Checkbox checked={handleChecked(field.value, option.value)} />\n )}\n <ListItemText primary={option.renderedValue} />\n </MenuItem>\n ))}\n </MUISelect>\n {error && <FormHelperText error>{helperText}</FormHelperText>}\n </FormControl>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Select.esm.js","sources":["../../../src/components/common/Select.tsx"],"sourcesContent":["import {\n Control,\n FieldValues,\n Path,\n useController,\n type UseControllerReturn,\n} from 'react-hook-form';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport Box from '@mui/material/Box';\nimport Chip from '@mui/material/Chip';\nimport FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormLabel from '@mui/material/FormLabel';\nimport MUISelect, { SelectProps } from '@mui/material/Select';\nimport Checkbox from '@mui/material/Checkbox';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemText from '@mui/material/ListItemText';\nimport { formHelperText, formLabel } from './typography';\n\ntype Props<T extends FieldValues> = SelectProps & {\n sublabel?: string;\n helperText?: string;\n control?: Control<T, any>;\n name: Path<T>;\n labelTranslationKey?: string;\n options: { value: string | number; renderedValue: string | number }[];\n};\n\nexport function Select<T extends FieldValues>({\n label,\n sublabel,\n error,\n helperText,\n required,\n control,\n name,\n multiple,\n labelTranslationKey,\n options,\n ...props\n}: Props<T>) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { field } = useController({\n name,\n control,\n rules: { required },\n });\n\n // values er strengt tatt unknown, men da må vi bruke mye ts-ignore for å komme i mål\n function renderValue(values: any) {\n if (!multiple) {\n return options.find(option => option.value === values)?.renderedValue;\n }\n return (\n <Box\n sx={{\n display: 'flex',\n flexWrap: 'wrap',\n marginBottom: 0,\n paddingBottom: 0,\n }}\n >\n {values.map((value: string) => (\n <Chip\n key={value}\n label={\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n labelTranslationKey ? t(`${labelTranslationKey}.${value}`) : value\n }\n />\n ))}\n </Box>\n );\n }\n\n function handleChecked(\n fieldValue: UseControllerReturn['field']['value'],\n optionValue: Props<T>['options'][number]['value'],\n ) {\n if (Array.isArray(fieldValue)) {\n return fieldValue.includes(optionValue);\n }\n return fieldValue === optionValue;\n }\n\n return (\n <FormControl sx={{ width: '100%', gap: '4px' }}>\n {label && (\n <FormLabel sx={formLabel} required={required}>\n {label}\n </FormLabel>\n )}\n {sublabel && (\n <FormHelperText sx={formHelperText}>{sublabel}</FormHelperText>\n )}\n\n <MUISelect\n MenuProps={{\n disablePortal: true,\n }}\n variant=\"outlined\"\n renderValue={renderValue}\n multiple={multiple}\n SelectDisplayProps={\n multiple\n ? {\n style: {\n paddingBottom: 8,\n paddingTop: 16,\n minHeight: 40,\n },\n }\n : {}\n }\n inputRef={field.ref}\n {...field}\n {...props}\n >\n {options.map(option => (\n <MenuItem key={option.value} value={option.value}>\n {multiple && (\n <Checkbox checked={handleChecked(field.value, option.value)} />\n )}\n <ListItemText primary={option.renderedValue} />\n </MenuItem>\n ))}\n </MUISelect>\n {error && <FormHelperText error>{helperText}</FormHelperText>}\n </FormControl>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -2,28 +2,30 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import Box from '@mui/material/Box';
3
3
  import CircularProgress from '@mui/material/CircularProgress';
4
4
 
5
- const Spinner = ({ size }) => /* @__PURE__ */ jsx(
6
- Box,
7
- {
8
- sx: {
9
- display: "flex",
10
- minWidth: "100wh",
11
- height: "100vh",
12
- justifyContent: "center",
13
- alignItems: "flex-start"
14
- },
15
- children: /* @__PURE__ */ jsx(
16
- CircularProgress,
17
- {
18
- size,
19
- sx: {
20
- display: "flex",
21
- marginTop: "200px"
5
+ function Spinner({ size }) {
6
+ return /* @__PURE__ */ jsx(
7
+ Box,
8
+ {
9
+ sx: {
10
+ display: "flex",
11
+ minWidth: "100wh",
12
+ height: "100vh",
13
+ justifyContent: "center",
14
+ alignItems: "flex-start"
15
+ },
16
+ children: /* @__PURE__ */ jsx(
17
+ CircularProgress,
18
+ {
19
+ size,
20
+ sx: {
21
+ display: "flex",
22
+ marginTop: "200px"
23
+ }
22
24
  }
23
- }
24
- )
25
- }
26
- );
25
+ )
26
+ }
27
+ );
28
+ }
27
29
 
28
30
  export { Spinner };
29
31
  //# sourceMappingURL=Spinner.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Spinner.esm.js","sources":["../../../src/components/common/Spinner.tsx"],"sourcesContent":["import Box from '@mui/material/Box';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nexport const Spinner = ({ size }: { size?: string | number }) => (\n <Box\n sx={{\n display: 'flex',\n minWidth: '100wh',\n height: '100vh',\n justifyContent: 'center',\n alignItems: 'flex-start',\n }}\n >\n <CircularProgress\n size={size}\n sx={{\n display: 'flex',\n marginTop: '200px',\n }}\n />\n </Box>\n);\n"],"names":[],"mappings":";;;;AAGO,MAAM,OAAU,GAAA,CAAC,EAAE,IAAA,EACxB,qBAAA,GAAA;AAAA,EAAC,GAAA;AAAA,EAAA;AAAA,IACC,EAAI,EAAA;AAAA,MACF,OAAS,EAAA,MAAA;AAAA,MACT,QAAU,EAAA,OAAA;AAAA,MACV,MAAQ,EAAA,OAAA;AAAA,MACR,cAAgB,EAAA,QAAA;AAAA,MAChB,UAAY,EAAA;AAAA,KACd;AAAA,IAEA,QAAA,kBAAA,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,EAAI,EAAA;AAAA,UACF,OAAS,EAAA,MAAA;AAAA,UACT,SAAW,EAAA;AAAA;AACb;AAAA;AACF;AACF;;;;"}
1
+ {"version":3,"file":"Spinner.esm.js","sources":["../../../src/components/common/Spinner.tsx"],"sourcesContent":["import Box from '@mui/material/Box';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nexport function Spinner({ size }: { size?: string | number }) {\n return (\n <Box\n sx={{\n display: 'flex',\n minWidth: '100wh',\n height: '100vh',\n justifyContent: 'center',\n alignItems: 'flex-start',\n }}\n >\n <CircularProgress\n size={size}\n sx={{\n display: 'flex',\n marginTop: '200px',\n }}\n />\n </Box>\n );\n}\n"],"names":[],"mappings":";;;;AAGgB,SAAA,OAAA,CAAQ,EAAE,IAAA,EAAoC,EAAA;AAC5D,EACE,uBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,EAAI,EAAA;AAAA,QACF,OAAS,EAAA,MAAA;AAAA,QACT,QAAU,EAAA,OAAA;AAAA,QACV,MAAQ,EAAA,OAAA;AAAA,QACR,cAAgB,EAAA,QAAA;AAAA,QAChB,UAAY,EAAA;AAAA,OACd;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,IAAA;AAAA,UACA,EAAI,EAAA;AAAA,YACF,OAAS,EAAA,MAAA;AAAA,YACT,SAAW,EAAA;AAAA;AACb;AAAA;AACF;AAAA,GACF;AAEJ;;;;"}