@rivm-loculus-tools/common-frontend 0.6.0 → 0.8.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.
Files changed (35) hide show
  1. package/dist/@types/common-frontend.d.ts +2 -0
  2. package/dist/@types/mui.d.ts +48 -0
  3. package/dist/components/fasta/FastaPageHeaderCenterComponent/FastaPageHeaderCenterComponent.d.ts +4 -0
  4. package/dist/components/fasta/FastaPageHeaderCenterComponent/index.js +18 -22
  5. package/dist/components/fasta/FastaPageHeaderCenterComponent/index.js.map +1 -1
  6. package/dist/components/fasta/FastaPageHeaderImportButton/FastaPageHeaderImportButton.d.ts +4 -0
  7. package/dist/components/fasta/FastaPageHeaderImportButton/index.js +17 -15
  8. package/dist/components/fasta/FastaPageHeaderImportButton/index.js.map +1 -1
  9. package/dist/components/ui/ButtonWithMenu/ButtonWithMenu.d.ts +7 -1
  10. package/dist/components/ui/ButtonWithMenu/index.js +32 -27
  11. package/dist/components/ui/ButtonWithMenu/index.js.map +1 -1
  12. package/dist/components/ui/PageCommonHeader/PageCommonHeader.d.ts +5 -1
  13. package/dist/components/ui/PageCommonHeader/index.js +42 -35
  14. package/dist/components/ui/PageCommonHeader/index.js.map +1 -1
  15. package/dist/components/ui/SearchBar/SearchBar.d.ts +15 -0
  16. package/dist/components/ui/SearchBar/SearchBarNodeCounter.d.ts +8 -0
  17. package/dist/components/ui/SearchBar/index.js +136 -0
  18. package/dist/components/ui/SearchBar/index.js.map +1 -0
  19. package/dist/models/config.models.d.ts +1 -5
  20. package/dist/theme/demoTheme/demoTheme.d.ts +3 -0
  21. package/dist/theme/demoTheme/index.d.ts +1 -0
  22. package/dist/theme/{index.js → demoTheme/index.js} +56 -31
  23. package/dist/theme/demoTheme/index.js.map +1 -0
  24. package/dist/utils/StandardConfigUtil/StandardConfigUtil.d.ts +1 -1
  25. package/dist/utils/StandardConfigUtil/index.js +1 -5
  26. package/dist/utils/StandardConfigUtil/index.js.map +1 -1
  27. package/package.json +16 -12
  28. package/dist/components/SearchBar/SearchBar.d.ts +0 -10
  29. package/dist/components/SearchBar/SearchBarNodeCounter.d.ts +0 -4
  30. package/dist/components/SearchBar/index.js +0 -128
  31. package/dist/components/SearchBar/index.js.map +0 -1
  32. package/dist/theme/index.d.ts +0 -1
  33. package/dist/theme/index.js.map +0 -1
  34. package/dist/theme/theme.d.ts +0 -1
  35. /package/dist/components/{SearchBar → ui/SearchBar}/index.d.ts +0 -0
@@ -0,0 +1,136 @@
1
+ import { Box as e, FilledInput as t, IconButton as n, InputAdornment as r, styled as i, useTheme as a, useThemeProps as o } from "@mui/material";
2
+ import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
3
+ import { useCallback as u, useMemo as d, useRef as f } from "react";
4
+ import p from "@mui/icons-material/Search";
5
+ import m from "@mui/icons-material/KeyboardArrowUp";
6
+ import h from "@mui/icons-material/KeyboardArrowDown";
7
+ import g from "@mui/icons-material/Close";
8
+ // src/components/ui/SearchBar/SearchBar.tsx
9
+ var _ = i(t, {
10
+ name: "RivmLoculusToolsCommonFrontendSearchBar",
11
+ slot: "Root"
12
+ })(({ theme: e }) => ({
13
+ backgroundColor: e.palette.background.paper,
14
+ height: e.spacing(4)
15
+ })), v = (t) => {
16
+ let { allowNavigation: i, highlightedIndex: v, numResults: y = 0, onHighlightedIndexChange: b, onSearchQueryChange: x, searchQuery: S, truncated: C } = o({
17
+ name: "RivmLoculusToolsCommonFrontendSearchBar",
18
+ props: t
19
+ }), w = a(), T = d(() => ({
20
+ buttonColor: w.palette.primary.main,
21
+ ...w.components?.RivmLoculusToolsCommonFrontendSearchBar ?? {}
22
+ }), [w]), E = f(null), D = f(null), O = f(null), k = u((e) => {
23
+ let t = e.target.value;
24
+ x(t);
25
+ }, [x]), A = u(() => {
26
+ x(""), E.current?.focus();
27
+ }, [x]), j = u((e) => {
28
+ if (e.key === "Enter") {
29
+ if (!y) return;
30
+ e.preventDefault(), b?.(0), O.current?.focus();
31
+ }
32
+ }, [y, b]), M = u(() => {
33
+ if (!y) return;
34
+ let e = v == null || Number.isNaN(v) || v <= 0 ? y - 1 : v - 1;
35
+ b?.(e);
36
+ }, [
37
+ y,
38
+ v,
39
+ b
40
+ ]), N = u(() => {
41
+ if (!y) return;
42
+ let e = v == null || Number.isNaN(v) || v >= y - 1 ? 0 : v + 1;
43
+ b?.(e);
44
+ }, [
45
+ y,
46
+ v,
47
+ b
48
+ ]), P = u((e) => {
49
+ if (e.key === "ArrowRight") {
50
+ e.preventDefault();
51
+ let t = e.currentTarget.nextElementSibling;
52
+ t && t.focus();
53
+ }
54
+ if (e.key === "ArrowLeft") {
55
+ if (e.preventDefault(), e.target === D.current) {
56
+ E.current?.focus();
57
+ return;
58
+ }
59
+ let t = e.currentTarget.previousElementSibling;
60
+ t && t.focus();
61
+ }
62
+ }, []), F = d(() => S ? S && (Number.isNaN(y) || y <= 0) ? "No results" : v == null || Number.isNaN(v) || v < 0 || !i ? `${y}${C ? "+" : ""} results` : i ? `${v + 1}/${y}${C ? "+" : ""} results` : "" : "", [
63
+ S,
64
+ y,
65
+ v,
66
+ i,
67
+ C
68
+ ]);
69
+ return /* @__PURE__ */ c(_, {
70
+ endAdornment: /* @__PURE__ */ l(r, {
71
+ position: "end",
72
+ children: [
73
+ F && /* @__PURE__ */ c(e, {
74
+ "aria-atomic": "true",
75
+ "aria-live": "polite",
76
+ role: "status",
77
+ sx: { fontSize: "1rem" },
78
+ children: F
79
+ }),
80
+ y > 0 && i && /* @__PURE__ */ l(s, { children: [/* @__PURE__ */ c(n, {
81
+ "aria-label": "Goto previous search result",
82
+ disabled: !y,
83
+ edge: "end",
84
+ onClick: M,
85
+ onKeyDown: P,
86
+ ref: D,
87
+ sx: { color: T.buttonColor },
88
+ children: /* @__PURE__ */ c(m, {})
89
+ }), /* @__PURE__ */ c(n, {
90
+ "aria-label": "Goto next search result",
91
+ disabled: !y,
92
+ edge: "end",
93
+ onClick: N,
94
+ onKeyDown: P,
95
+ ref: O,
96
+ sx: { color: T.buttonColor },
97
+ children: /* @__PURE__ */ c(h, {})
98
+ })] }),
99
+ S && /* @__PURE__ */ c(n, {
100
+ "aria-label": "Clear",
101
+ edge: "end",
102
+ onClick: A,
103
+ onKeyDown: P,
104
+ children: /* @__PURE__ */ c(g, {})
105
+ })
106
+ ]
107
+ }),
108
+ fullWidth: !0,
109
+ inputRef: E,
110
+ name: "Search",
111
+ onChange: k,
112
+ onKeyDown: j,
113
+ placeholder: "Search",
114
+ size: "small",
115
+ slotProps: { input: {
116
+ "aria-label": "Search",
117
+ sx: {
118
+ "&::-webkit-search-cancel-button": { display: "none" },
119
+ fontSize: "1rem",
120
+ height: w.spacing(4),
121
+ outline: "none !important",
122
+ paddingBottom: "0 !important",
123
+ paddingTop: "0 !important"
124
+ }
125
+ } },
126
+ startAdornment: /* @__PURE__ */ c(r, {
127
+ position: "start",
128
+ children: /* @__PURE__ */ c(p, { fontSize: "small" })
129
+ }),
130
+ type: "search",
131
+ value: S
132
+ });
133
+ };
134
+ export { v as SearchBar };
135
+
136
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_Fragment","SearchIcon","KeyboardArrowUpIcon","KeyboardArrowDownIcon","CloseIcon","SearchBarFilledInput","styled","FilledInput","theme","SearchBar","useThemeProps","inProps","useTheme","searchBarTheme","useMemo","inputRef","useRef","arrowUpButtonRef","arrowDownButtonRef","onTextInputChange","useCallback","nextSearchText","event","onSearchQueryChange","onClearButtonClick","onTextInputKeyDown","numResults","onHighlightedIndexChange","onUpArrowButtonClick","newHighlightedIndex","highlightedIndex","onDownArrowButtonClick","onGenericKeyDown","nextFocusableElement","previousFocusableElement","searchResultStatusText","searchQuery","allowNavigation","truncated","InputAdornment","Box","Fragment","IconButton"],"sources":["../../../../src/components/ui/SearchBar/SearchBar.tsx"],"sourcesContent":["import type {\n ChangeEvent,\n KeyboardEvent,\n} from 'react';\nimport {\n useCallback,\n useMemo,\n useRef,\n} from 'react';\nimport {\n Box,\n FilledInput,\n IconButton,\n InputAdornment,\n styled,\n useTheme,\n useThemeProps,\n} from '@mui/material';\nimport type {\n ComponentsOverrides,\n Theme,\n} from '@mui/material/styles';\nimport SearchIcon from '@mui/icons-material/Search';\nimport KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport CloseIcon from '@mui/icons-material/Close';\n\nexport type SearchBarProps = {\n allowNavigation?: boolean;\n highlightedIndex?: null | number;\n numResults?: number;\n onHighlightedIndexChange?: (index: number) => void;\n onSearchQueryChange: (query: string) => void;\n searchQuery: string;\n truncated?: boolean;\n};\n\nexport interface SearchBarTheme {\n buttonColor: string;\n styleOverrides?: ComponentsOverrides<Theme>['MuiFilledInput'];\n}\n\nconst SearchBarFilledInput = styled(FilledInput, {\n name: 'RivmLoculusToolsCommonFrontendSearchBar',\n slot: 'Root',\n})(({ theme }) => ({\n backgroundColor: theme.palette.background.paper,\n height: theme.spacing(4),\n}));\n\nexport const SearchBar = (inProps: SearchBarProps) => {\n const {\n allowNavigation,\n highlightedIndex,\n numResults = 0,\n onHighlightedIndexChange,\n onSearchQueryChange,\n searchQuery,\n truncated,\n } = useThemeProps({ name: 'RivmLoculusToolsCommonFrontendSearchBar', props: inProps });\n const theme = useTheme();\n const searchBarTheme = useMemo<SearchBarTheme>(() => ({\n ...{\n buttonColor: theme.palette.primary.main,\n } satisfies SearchBarTheme,\n ...(theme.components?.RivmLoculusToolsCommonFrontendSearchBar ?? {}),\n }), [theme]);\n\n\n const inputRef = useRef<HTMLInputElement>(null);\n const arrowUpButtonRef = useRef<HTMLButtonElement>(null);\n const arrowDownButtonRef = useRef<HTMLButtonElement>(null);\n\n const onTextInputChange = useCallback((event: ChangeEvent<HTMLInputElement>) => {\n const nextSearchText = event.target.value;\n onSearchQueryChange(nextSearchText);\n }, [onSearchQueryChange]);\n\n const onClearButtonClick = useCallback(() => {\n onSearchQueryChange('');\n inputRef.current?.focus();\n }, [onSearchQueryChange]);\n\n const onTextInputKeyDown = useCallback((event: KeyboardEvent<HTMLInputElement>) => {\n // on enter press, highlight the first result and focus the down arrow button\n if (event.key === 'Enter') {\n if (!numResults) {\n return;\n }\n event.preventDefault();\n onHighlightedIndexChange?.(0);\n arrowDownButtonRef.current?.focus();\n }\n }, [numResults, onHighlightedIndexChange]);\n\n const onUpArrowButtonClick = useCallback(() => {\n // goto previous result\n if (!numResults) {\n return;\n }\n const newHighlightedIndex = highlightedIndex === null || highlightedIndex === undefined || Number.isNaN(highlightedIndex) || highlightedIndex <= 0 ? numResults - 1 : highlightedIndex - 1;\n\n onHighlightedIndexChange?.(newHighlightedIndex);\n }, [numResults, highlightedIndex, onHighlightedIndexChange]);\n\n const onDownArrowButtonClick = useCallback(() => {\n // goto next result\n if (!numResults) {\n return;\n }\n const newHighlightedIndex = highlightedIndex === null || highlightedIndex === undefined || Number.isNaN(highlightedIndex) || highlightedIndex >= numResults - 1 ? 0 : highlightedIndex + 1;\n onHighlightedIndexChange?.(newHighlightedIndex);\n }, [numResults, highlightedIndex, onHighlightedIndexChange]);\n\n const onGenericKeyDown = useCallback((event: KeyboardEvent<HTMLButtonElement>) => {\n // arrow right, focus the next focusable element\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n const nextFocusableElement = event.currentTarget.nextElementSibling as HTMLElement;\n if (nextFocusableElement) {\n nextFocusableElement.focus();\n }\n }\n // arrow left, focus the previous focusable element\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n if (event.target === arrowUpButtonRef.current) {\n inputRef.current?.focus();\n return;\n }\n const previousFocusableElement = event.currentTarget.previousElementSibling as HTMLElement;\n if (previousFocusableElement) {\n previousFocusableElement.focus();\n }\n }\n }, []);\n\n const searchResultStatusText = useMemo(() => {\n if (!searchQuery) {\n return '';\n }\n if (searchQuery && (Number.isNaN(numResults) || numResults <= 0)) {\n return 'No results';\n } else if (highlightedIndex === null || highlightedIndex === undefined || Number.isNaN(highlightedIndex) || highlightedIndex < 0 || !allowNavigation) {\n return `${numResults}${truncated ? '+' : ''} results`;\n } else if (allowNavigation) {\n return `${highlightedIndex + 1}/${numResults}${truncated ? '+' : ''} results`;\n }\n return '';\n }, [searchQuery, numResults, highlightedIndex, allowNavigation, truncated]);\n\n\n return (\n <SearchBarFilledInput\n endAdornment={(\n <InputAdornment position={'end'}>\n {searchResultStatusText && (\n <Box\n aria-atomic={'true'}\n aria-live={'polite'}\n role={'status'}\n sx={{\n fontSize: '1rem',\n }}\n >\n {searchResultStatusText}\n </Box>\n )}\n {numResults > 0 && allowNavigation && (\n <>\n <IconButton\n aria-label={'Goto previous search result'}\n disabled={!numResults}\n edge={'end'}\n onClick={onUpArrowButtonClick}\n onKeyDown={onGenericKeyDown}\n ref={arrowUpButtonRef}\n sx={{ color: searchBarTheme.buttonColor }}\n >\n <KeyboardArrowUpIcon />\n </IconButton>\n <IconButton\n aria-label={'Goto next search result'}\n disabled={!numResults}\n edge={'end'}\n onClick={onDownArrowButtonClick}\n onKeyDown={onGenericKeyDown}\n ref={arrowDownButtonRef}\n sx={{ color: searchBarTheme.buttonColor }}\n >\n <KeyboardArrowDownIcon />\n </IconButton>\n </>\n )}\n {searchQuery && (\n <IconButton\n aria-label={'Clear'}\n edge={'end'}\n onClick={onClearButtonClick}\n onKeyDown={onGenericKeyDown}\n >\n <CloseIcon />\n </IconButton>\n )}\n </InputAdornment>\n )}\n fullWidth\n inputRef={inputRef}\n name={'Search'}\n onChange={onTextInputChange}\n onKeyDown={onTextInputKeyDown}\n placeholder={'Search'}\n size={'small'}\n slotProps={{\n input: {\n 'aria-label': 'Search',\n sx: {\n '&::-webkit-search-cancel-button': {\n display: 'none',\n },\n fontSize: '1rem',\n height: theme.spacing(4),\n outline: 'none !important',\n paddingBottom: '0 !important',\n paddingTop: '0 !important',\n },\n },\n }}\n startAdornment={(\n <InputAdornment position={'start'}>\n <SearchIcon fontSize={'small'} />\n </InputAdornment>\n )}\n type={'search'}\n value={searchQuery}\n />\n );\n};\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { ReactElement } from 'react';
2
- import { CircularProgressProps, Theme } from '@mui/material';
2
+ import { Theme } from '@mui/material';
3
3
  import { PageCommonConfig } from '../context/pageCommonContext';
4
4
  export interface ConfigBase {
5
5
  applicationName: string;
@@ -8,9 +8,5 @@ export interface ConfigBase {
8
8
  readonly headerComponent?: () => ReactElement;
9
9
  nonce?: string;
10
10
  pageConfig?: PageCommonConfig;
11
- spinner: {
12
- DEFAULT_CIRCULAR_PROGRESS_SIZE: CircularProgressProps['size'];
13
- DEFAULT_TAKING_LONGER_TIMEOUT_MS: number;
14
- };
15
11
  theme: Theme;
16
12
  }
@@ -0,0 +1,3 @@
1
+ import { PaletteMode, Theme, ThemeOptions } from '@mui/material';
2
+ export declare const createDemoThemeOptions: (paletteMode: PaletteMode) => ThemeOptions;
3
+ export declare const createDemoTheme: (paletteMode: PaletteMode) => Theme;
@@ -0,0 +1 @@
1
+ export * from './demoTheme';