@equinor/fusion-framework-react-components-bookmark 2.0.1 → 2.0.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 (108) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +69 -0
  3. package/dist/esm/components/Bookmark.js +12 -2
  4. package/dist/esm/components/Bookmark.js.map +1 -1
  5. package/dist/esm/components/BookmarkProvider.js +16 -0
  6. package/dist/esm/components/BookmarkProvider.js.map +1 -1
  7. package/dist/esm/components/create-bookmark/{CreateBookmark.js → CreateBookmarkModal.js} +13 -5
  8. package/dist/esm/components/create-bookmark/CreateBookmarkModal.js.map +1 -0
  9. package/dist/esm/components/create-bookmark/index.js +1 -1
  10. package/dist/esm/components/create-bookmark/index.js.map +1 -1
  11. package/dist/esm/components/edit-bookmark/{EditBookmark.js → EditBookmarkModal.js} +16 -4
  12. package/dist/esm/components/edit-bookmark/EditBookmarkModal.js.map +1 -0
  13. package/dist/esm/components/edit-bookmark/index.js +1 -1
  14. package/dist/esm/components/edit-bookmark/index.js.map +1 -1
  15. package/dist/esm/components/filter/{Filter.js → BookmarkFilter.js} +9 -3
  16. package/dist/esm/components/filter/BookmarkFilter.js.map +1 -0
  17. package/dist/esm/components/import-bookmark/{ImportBookmark.js → ImportBookmarkModal.js} +13 -1
  18. package/dist/esm/components/import-bookmark/ImportBookmarkModal.js.map +1 -0
  19. package/dist/esm/components/import-bookmark/index.js +1 -1
  20. package/dist/esm/components/import-bookmark/index.js.map +1 -1
  21. package/dist/esm/components/loading/Loading.js +5 -0
  22. package/dist/esm/components/loading/Loading.js.map +1 -1
  23. package/dist/esm/components/messages/Message.js +7 -0
  24. package/dist/esm/components/messages/Message.js.map +1 -1
  25. package/dist/esm/components/row/MoreMenu.js +15 -7
  26. package/dist/esm/components/row/MoreMenu.js.map +1 -1
  27. package/dist/esm/components/row/Row.js +9 -4
  28. package/dist/esm/components/row/Row.js.map +1 -1
  29. package/dist/esm/components/section/Section.js +6 -0
  30. package/dist/esm/components/section/Section.js.map +1 -1
  31. package/dist/esm/components/sectionList/SectionList.js +16 -5
  32. package/dist/esm/components/sectionList/SectionList.js.map +1 -1
  33. package/dist/esm/components/shared/SharedIcon.js +7 -1
  34. package/dist/esm/components/shared/SharedIcon.js.map +1 -1
  35. package/dist/esm/hooks/useBookmarkGrouping.js +23 -10
  36. package/dist/esm/hooks/useBookmarkGrouping.js.map +1 -1
  37. package/dist/esm/index.js +10 -0
  38. package/dist/esm/index.js.map +1 -1
  39. package/dist/esm/utils/{append-bookmark-to-uri.js → append-bookmark-id-to-url.js} +1 -1
  40. package/dist/esm/utils/append-bookmark-id-to-url.js.map +1 -0
  41. package/dist/esm/utils/filter-empty-groups.js +4 -0
  42. package/dist/esm/utils/filter-empty-groups.js.map +1 -0
  43. package/dist/esm/utils/sort-by-name.js +2 -0
  44. package/dist/esm/utils/sort-by-name.js.map +1 -0
  45. package/dist/esm/utils/to-human-readable.js +6 -0
  46. package/dist/esm/utils/to-human-readable.js.map +1 -0
  47. package/dist/esm/version.js +1 -1
  48. package/dist/tsconfig.tsbuildinfo +1 -1
  49. package/dist/types/components/Bookmark.d.ts +6 -1
  50. package/dist/types/components/BookmarkProvider.d.ts +16 -1
  51. package/dist/types/components/create-bookmark/CreateBookmarkModal.d.ts +12 -0
  52. package/dist/types/components/create-bookmark/index.d.ts +1 -1
  53. package/dist/types/components/edit-bookmark/EditBookmarkModal.d.ts +14 -0
  54. package/dist/types/components/edit-bookmark/index.d.ts +1 -1
  55. package/dist/types/components/filter/BookmarkFilter.d.ts +16 -0
  56. package/dist/types/components/import-bookmark/ImportBookmarkModal.d.ts +6 -0
  57. package/dist/types/components/import-bookmark/index.d.ts +1 -1
  58. package/dist/types/components/loading/Loading.d.ts +6 -1
  59. package/dist/types/components/messages/Message.d.ts +7 -1
  60. package/dist/types/components/row/MoreMenu.d.ts +7 -1
  61. package/dist/types/components/row/Row.d.ts +7 -1
  62. package/dist/types/components/section/Section.d.ts +7 -1
  63. package/dist/types/components/sectionList/SectionList.d.ts +7 -1
  64. package/dist/types/components/shared/SharedIcon.d.ts +7 -1
  65. package/dist/types/hooks/useBookmarkGrouping.d.ts +6 -0
  66. package/dist/types/index.d.ts +10 -0
  67. package/dist/types/utils/filter-empty-groups.d.ts +5 -0
  68. package/dist/types/utils/sort-by-name.d.ts +2 -0
  69. package/dist/types/utils/to-human-readable.d.ts +1 -0
  70. package/dist/types/version.d.ts +1 -1
  71. package/package.json +8 -8
  72. package/src/components/Bookmark.tsx +12 -5
  73. package/src/components/BookmarkProvider.tsx +16 -0
  74. package/src/components/create-bookmark/{CreateBookmark.tsx → CreateBookmarkModal.tsx} +12 -4
  75. package/src/components/create-bookmark/index.ts +1 -1
  76. package/src/components/edit-bookmark/{EditBookmark.tsx → EditBookmarkModal.tsx} +16 -4
  77. package/src/components/edit-bookmark/index.ts +1 -1
  78. package/src/components/filter/{Filter.tsx → BookmarkFilter.tsx} +11 -5
  79. package/src/components/import-bookmark/{ImportBookmark.tsx → ImportBookmarkModal.tsx} +12 -0
  80. package/src/components/import-bookmark/index.ts +1 -1
  81. package/src/components/loading/Loading.tsx +5 -1
  82. package/src/components/messages/Message.tsx +7 -0
  83. package/src/components/row/MoreMenu.tsx +24 -17
  84. package/src/components/row/Row.tsx +8 -1
  85. package/src/components/section/Section.tsx +6 -0
  86. package/src/components/sectionList/SectionList.tsx +16 -5
  87. package/src/components/shared/SharedIcon.tsx +6 -0
  88. package/src/hooks/useBookmarkGrouping.ts +29 -18
  89. package/src/index.ts +10 -0
  90. package/src/utils/filter-empty-groups.ts +5 -0
  91. package/src/utils/sort-by-name.ts +4 -0
  92. package/src/utils/to-human-readable.ts +6 -0
  93. package/src/version.ts +1 -1
  94. package/dist/esm/components/create-bookmark/CreateBookmark.js.map +0 -1
  95. package/dist/esm/components/edit-bookmark/EditBookmark.js.map +0 -1
  96. package/dist/esm/components/filter/Filter.js.map +0 -1
  97. package/dist/esm/components/import-bookmark/ImportBookmark.js.map +0 -1
  98. package/dist/esm/utils/append-bookmark-to-uri.js.map +0 -1
  99. package/dist/esm/utils/utils.js +0 -9
  100. package/dist/esm/utils/utils.js.map +0 -1
  101. package/dist/types/components/create-bookmark/CreateBookmark.d.ts +0 -4
  102. package/dist/types/components/edit-bookmark/EditBookmark.d.ts +0 -5
  103. package/dist/types/components/filter/Filter.d.ts +0 -10
  104. package/dist/types/components/import-bookmark/ImportBookmark.d.ts +0 -1
  105. package/dist/types/utils/utils.d.ts +0 -7
  106. package/src/utils/utils.ts +0 -13
  107. /package/dist/types/utils/{append-bookmark-to-uri.d.ts → append-bookmark-id-to-url.d.ts} +0 -0
  108. /package/src/utils/{append-bookmark-to-uri.ts → append-bookmark-id-to-url.ts} +0 -0
@@ -47,6 +47,12 @@ const Styled = {
47
47
  `,
48
48
  };
49
49
 
50
+ /**
51
+ * A single bookmark row, with actions and click-to-set-current behavior.
52
+ *
53
+ * @param props - The component's props
54
+ * @returns The row
55
+ */
50
56
  export const Row = ({ name, menuOptions, children, id, menuOpen, onMenuOpen }: RowProps) => {
51
57
  const pRef = useRef<HTMLElement | null>(null);
52
58
  const { provider } = useBookmarkComponentContext();
@@ -55,6 +61,7 @@ export const Row = ({ name, menuOptions, children, id, menuOpen, onMenuOpen }: R
55
61
  (e: React.MouseEvent) => {
56
62
  e.preventDefault();
57
63
  e.stopPropagation();
64
+ // Only attempt to set the current bookmark when a provider is available
58
65
  if (provider) {
59
66
  from(provider.setCurrentBookmark(id)).subscribe();
60
67
  }
@@ -64,7 +71,7 @@ export const Row = ({ name, menuOptions, children, id, menuOpen, onMenuOpen }: R
64
71
 
65
72
  useOutsideClick(pRef.current, () => onMenuOpen(''));
66
73
 
67
- // TODO: @noggling fix this
74
+ // TODO(#5093): fix accessibility (keyboard support) for this click handler
68
75
  return (
69
76
  /* eslint-disable-next-line styled-components-a11y/click-events-have-key-events, styled-components-a11y/no-static-element-interactions*/
70
77
  <Styled.ListItem onClick={onListItemClick}>
@@ -42,6 +42,12 @@ type SectionProps = {
42
42
  readonly name: string;
43
43
  readonly children: ReactNode;
44
44
  };
45
+ /**
46
+ * A collapsible section with a named header and its contents.
47
+ *
48
+ * @param props - The component's props
49
+ * @returns The section
50
+ */
45
51
  export const Section = ({ children, name }: SectionProps) => {
46
52
  const [isExpanded, setIsExpanded] = useState(true);
47
53
 
@@ -3,12 +3,14 @@ import type { useBookmarkGrouping } from '../../hooks';
3
3
  import { type MenuOption, Row } from '../row/Row';
4
4
  import { Section } from '../section/Section';
5
5
  import { SharedIcon } from '../shared/SharedIcon';
6
- // TODO - export from `@equinor/fusion-framework-react-module-bookmark`
6
+ // TODO(#5094): export from `@equinor/fusion-framework-react-module-bookmark`
7
7
  import type { BookmarkWithoutData } from '@equinor/fusion-framework-module-bookmark';
8
8
  import { useCurrentUser } from '@equinor/fusion-framework-react/hooks';
9
9
  import { useCallback, useState } from 'react';
10
10
  import { delete_to_trash, share, edit, close, update } from '@equinor/eds-icons';
11
- import { filterEmptyGroups, sortByName, toHumanReadable } from '../../utils/utils';
11
+ import { filterEmptyGroups } from '../../utils/filter-empty-groups';
12
+ import { sortByName } from '../../utils/sort-by-name';
13
+ import { toHumanReadable } from '../../utils/to-human-readable';
12
14
  import { useBookmarkComponentContext } from '../BookmarkProvider';
13
15
  import { from } from 'rxjs';
14
16
 
@@ -24,19 +26,26 @@ type SectionListProps = {
24
26
  readonly bookmarkGroups: ReturnType<typeof useBookmarkGrouping>['bookmarkGroups'];
25
27
  };
26
28
 
29
+ /**
30
+ * Renders bookmark groups as sections of rows with edit/share/delete actions.
31
+ *
32
+ * @param props - The component's props
33
+ * @returns The section list
34
+ */
27
35
  export const SectionList = ({ bookmarkGroups }: SectionListProps) => {
28
36
  // const { deleteBookmarkById, updateBookmark, removeBookmarkFavorite } = useBookmark();
29
37
 
30
38
  const { provider, currentApp, showEditBookmark, addBookmarkToClipboard } =
31
39
  useBookmarkComponentContext();
32
40
 
33
- // TODO - should be removed when bookmark has property for isOwner
41
+ // TODO(#5095): should be removed when bookmark has property for isOwner
34
42
  const user = useCurrentUser();
35
43
 
36
44
  const [isMenuByIdOpen, setIsMenuByIdOpen] = useState('');
37
45
 
38
46
  const createMenuOptions = useCallback(
39
47
  (bookmark: BookmarkWithoutData) => {
48
+ // Without a provider there are no actions that can be performed on the bookmark
40
49
  if (!provider) return [];
41
50
  const appKey = currentApp?.appKey;
42
51
  const bookmarkId = bookmark.id;
@@ -51,6 +60,7 @@ export const SectionList = ({ bookmarkGroups }: SectionListProps) => {
51
60
  Icon: <Icon name="share" />,
52
61
  };
53
62
 
63
+ // Only the bookmark owner is allowed to edit, update, remove, or share it
54
64
  if (isOwner) {
55
65
  const ownerOptions = [
56
66
  {
@@ -65,7 +75,7 @@ export const SectionList = ({ bookmarkGroups }: SectionListProps) => {
65
75
  name: 'Update with current view',
66
76
  disabled: appKey !== bookmark.appKey,
67
77
  onClick: () => {
68
- // TODO: add success and failure message
78
+ // TODO(#5089): add success and failure message
69
79
  from(
70
80
  provider.updateBookmark(bookmark.id, undefined, {
71
81
  excludePayloadGeneration: false,
@@ -85,7 +95,7 @@ export const SectionList = ({ bookmarkGroups }: SectionListProps) => {
85
95
  name: 'Remove',
86
96
  disabled: false,
87
97
  onClick: () => {
88
- // TODO: add success and failure message
98
+ // TODO(#5089): add success and failure message
89
99
  from(provider.deleteBookmark(bookmark.id)).subscribe({
90
100
  error(err) {
91
101
  console.error('Failed to remove bookmark', err);
@@ -107,6 +117,7 @@ export const SectionList = ({ bookmarkGroups }: SectionListProps) => {
107
117
  }),
108
118
  ).subscribe({
109
119
  next(value) {
120
+ // Copy the bookmark URL to the clipboard once it becomes shared
110
121
  if (value.isShared) {
111
122
  addBookmarkToClipboard(value.id);
112
123
  }
@@ -24,6 +24,12 @@ type SharedIconProps = {
24
24
  readonly createdById: string;
25
25
  };
26
26
 
27
+ /**
28
+ * Displays a "shared by" indicator when a bookmark was created by another user.
29
+ *
30
+ * @param props - The component's props
31
+ * @returns The shared icon, or nothing when the current user created the bookmark
32
+ */
27
33
  export const SharedIcon = ({ createdBy, createdById }: SharedIconProps) => {
28
34
  const myId = useFramework().modules.auth.account?.localAccountId;
29
35
 
@@ -10,6 +10,12 @@ const groupingModes: Record<GroupingKeys, (_item: BookmarkWithoutData) => string
10
10
  'Group by Context': (item: BookmarkWithoutData) => item?.context?.name ?? 'Unknown',
11
11
  } as const;
12
12
 
13
+ /**
14
+ * Hook for grouping and searching bookmarks by app, creator, or context.
15
+ *
16
+ * @param bookmarks - The bookmarks to group and search
17
+ * @returns The grouped bookmarks along with the search text and grouping key state/setters
18
+ */
13
19
  export const useBookmarkGrouping = (bookmarks?: Bookmarks) => {
14
20
  const [searchText, setSearchText] = useState<string | null>(null);
15
21
 
@@ -33,22 +39,27 @@ const groupBy = <T>(
33
39
  searchText: string | null,
34
40
  field: keyof T,
35
41
  ) => {
36
- return (
37
- array
38
- ?.map(getKey)
39
- .filter((v, i, a) => a.indexOf(v) === i)
40
- .map((groupingProperty) => ({
41
- groupingProperty,
42
- values: array
43
- .filter((s) => getKey(s) === groupingProperty)
44
- .filter((s) => {
45
- const fieldData = s[field];
46
- if (typeof fieldData === 'string' && searchText) {
47
- return fieldData.includes(searchText);
48
- }
49
-
50
- return true;
51
- }),
52
- })) ?? []
53
- );
42
+ // Treat a missing array as an empty one so downstream calls are safe
43
+ const items = array ?? [];
44
+ // Collect the key for every item
45
+ const keys = items.map(getKey);
46
+ // Deduplicate to get the unique set of group keys, preserving first-seen order
47
+ const uniqueKeys = keys.filter((v, i, a) => a.indexOf(v) === i);
48
+ // Build a group entry for each unique key
49
+ const groups = uniqueKeys.map((groupingProperty) => {
50
+ // Only include values in this group whose key matches
51
+ const matchingValues = array.filter((s) => getKey(s) === groupingProperty);
52
+ // Then narrow those matches down by the search-text filter
53
+ const values = matchingValues.filter((s) => {
54
+ const fieldData = s[field];
55
+ // Only apply search-text filtering to string fields
56
+ if (typeof fieldData === 'string' && searchText) {
57
+ return fieldData.includes(searchText);
58
+ }
59
+
60
+ return true;
61
+ });
62
+ return { groupingProperty, values };
63
+ });
64
+ return groups;
54
65
  };
package/src/index.ts CHANGED
@@ -1,2 +1,12 @@
1
+ /**
2
+ * Pre-built React UI components for bookmark management.
3
+ *
4
+ * Provides the {@link Bookmark} list component and {@link BookmarkProvider}
5
+ * context wrapper with built-in create, edit, and import modals plus filtering controls.
6
+ *
7
+ * For bookmark hooks without UI, see `@equinor/fusion-framework-react-app/bookmark`.
8
+ *
9
+ * @packageDocumentation
10
+ */
1
11
  export { Bookmark } from './components/Bookmark';
2
12
  export { BookmarkProvider, useBookmarkComponentContext } from './components/BookmarkProvider';
@@ -0,0 +1,5 @@
1
+ import type { Bookmarks } from '@equinor/fusion-framework-module-bookmark';
2
+
3
+ /** Helpers.. */
4
+ export const filterEmptyGroups = (i: { values: Bookmarks }) => i.values.length;
5
+ // const extractNameFromMail = (mail: string) => mail.split('@')[0].toLowerCase();
@@ -0,0 +1,4 @@
1
+ import type { BookmarkWithoutData } from '@equinor/fusion-framework-module-bookmark';
2
+
3
+ export const sortByName = (a: BookmarkWithoutData, b: BookmarkWithoutData) =>
4
+ a.name.localeCompare(b.name);
@@ -0,0 +1,6 @@
1
+ export const toHumanReadable = (val: string) =>
2
+ val
3
+ .split('-')
4
+ // Capitalize the first letter of each hyphen-separated segment
5
+ .map((s) => `${s[0].toUpperCase()}${s.slice(1)}`)
6
+ .join(' ');
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  // Generated by genversion.
2
- export const version = '2.0.1';
2
+ export const version = '2.0.2';
@@ -1 +0,0 @@
1
- {"version":3,"file":"CreateBookmark.js","sourceRoot":"","sources":["../../../../src/components/create-bookmark/CreateBookmark.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"EditBookmark.js","sourceRoot":"","sources":["../../../../src/components/edit-bookmark/EditBookmark.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Filter.js","sourceRoot":"","sources":["../../../../src/components/filter/Filter.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAgB,MAAM,yBAAyB,CAAC;AAG/D,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAUvC,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,MAAM,CAAC,GAAG,CAAA;;;;KAIb;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAC7B,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,OAAO,GACa,EAAE,EAAE;IACxB,OAAO,CACL,KAAC,MAAM,IACL,WAAW,EAAC,wBAAwB,EACpC,KAAK,EAAE,UAAU,IAAI,EAAE,EACvB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;YACd,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7E,CAAC,GACD,CACH,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ImportBookmark.js","sourceRoot":"","sources":["../../../../src/components/import-bookmark/ImportBookmark.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"append-bookmark-to-uri.js","sourceRoot":"","sources":["../../../src/utils/append-bookmark-to-uri.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EAAU,EAAU,EAAE;IAC1D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACvC,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC,CAAC"}
@@ -1,9 +0,0 @@
1
- /** Helpers.. */
2
- export const filterEmptyGroups = (i) => i.values.length;
3
- export const sortByName = (a, b) => a.name.localeCompare(b.name);
4
- // const extractNameFromMail = (mail: string) => mail.split('@')[0].toLowerCase();
5
- export const toHumanReadable = (val) => val
6
- .split('-')
7
- .map((s) => `${s[0].toUpperCase()}${s.slice(1)}`)
8
- .join(' ');
9
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/utils/utils.ts"],"names":[],"mappings":"AAEA,gBAAgB;AAChB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAwB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AAC/E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAsB,EAAE,CAAsB,EAAE,EAAE,CAC3E,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/B,kFAAkF;AAElF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,EAAE,CAC7C,GAAG;KACA,KAAK,CAAC,GAAG,CAAC;KACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;KAChD,IAAI,CAAC,GAAG,CAAC,CAAC"}
@@ -1,4 +0,0 @@
1
- export declare const CreateBookmarkModal: ({ isOpen, onClose, }: {
2
- readonly isOpen: boolean;
3
- readonly onClose: (b: boolean) => void;
4
- }) => import("react/jsx-runtime").JSX.Element;
@@ -1,5 +0,0 @@
1
- export declare const EditBookmarkModal: ({ isOpen, onClose, bookmarkId, }: {
2
- readonly isOpen: boolean;
3
- readonly onClose: (b: boolean) => void;
4
- readonly bookmarkId: string;
5
- }) => import("react/jsx-runtime").JSX.Element;
@@ -1,10 +0,0 @@
1
- import type { GroupingKeys } from '../../hooks/useBookmarkGrouping';
2
- type BookmarkFilterProps = {
3
- readonly searchText: string;
4
- readonly setSearchText: (newVal: string | null) => void;
5
- readonly setGroupBy: (groupBy: GroupingKeys) => void;
6
- readonly groupingModes: string[];
7
- readonly groupBy: string;
8
- };
9
- export declare const BookmarkFilter: ({ searchText, setGroupBy, setSearchText, groupingModes, groupBy, }: BookmarkFilterProps) => import("react/jsx-runtime").JSX.Element;
10
- export {};
@@ -1 +0,0 @@
1
- export declare const ImportBookmarkModal: () => import("react/jsx-runtime").JSX.Element | null;
@@ -1,7 +0,0 @@
1
- import type { Bookmarks, BookmarkWithoutData } from '@equinor/fusion-framework-module-bookmark';
2
- /** Helpers.. */
3
- export declare const filterEmptyGroups: (i: {
4
- values: Bookmarks;
5
- }) => number;
6
- export declare const sortByName: (a: BookmarkWithoutData, b: BookmarkWithoutData) => number;
7
- export declare const toHumanReadable: (val: string) => string;
@@ -1,13 +0,0 @@
1
- import type { Bookmarks, BookmarkWithoutData } from '@equinor/fusion-framework-module-bookmark';
2
-
3
- /** Helpers.. */
4
- export const filterEmptyGroups = (i: { values: Bookmarks }) => i.values.length;
5
- export const sortByName = (a: BookmarkWithoutData, b: BookmarkWithoutData) =>
6
- a.name.localeCompare(b.name);
7
- // const extractNameFromMail = (mail: string) => mail.split('@')[0].toLowerCase();
8
-
9
- export const toHumanReadable = (val: string) =>
10
- val
11
- .split('-')
12
- .map((s) => `${s[0].toUpperCase()}${s.slice(1)}`)
13
- .join(' ');