@equinor/fusion-framework-react-components-bookmark 2.0.2 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +1 -1
- package/dist/esm/components/edit-bookmark/AppNameField.js +10 -0
- package/dist/esm/components/edit-bookmark/AppNameField.js.map +1 -0
- package/dist/esm/components/edit-bookmark/EditBookmarkModal.js +6 -2
- package/dist/esm/components/edit-bookmark/EditBookmarkModal.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/components/edit-bookmark/AppNameField.d.ts +11 -0
- package/dist/types/version.d.ts +1 -1
- package/package.json +8 -6
- package/src/__tests__/AppNameField.test.tsx +39 -0
- package/src/components/edit-bookmark/AppNameField.tsx +27 -0
- package/src/components/edit-bookmark/EditBookmarkModal.tsx +13 -4
- package/src/version.ts +1 -1
- package/tsconfig.json +1 -1
- package/vitest.config.ts +10 -0
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -59,7 +59,7 @@ The provider manages modal state for creating, editing, and importing bookmarks.
|
|
|
59
59
|
- **Filtering** — text search across bookmark names
|
|
60
60
|
- **Grouping** — group bookmarks by app, creator, or other criteria
|
|
61
61
|
- **Create modal** — form for creating new bookmarks
|
|
62
|
-
- **Edit modal** — form for updating existing bookmarks
|
|
62
|
+
- **Edit modal** — form for updating existing bookmarks with loading feedback while resolving the source app name
|
|
63
63
|
- **Import modal** — import bookmarks shared via URL
|
|
64
64
|
- **Clipboard sharing** — copy bookmark URL to clipboard
|
|
65
65
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Input, Progress } from '@equinor/eds-core-react';
|
|
3
|
+
/**
|
|
4
|
+
* Renders the bookmark's app name while making manifest resolution visible.
|
|
5
|
+
*
|
|
6
|
+
* @param props - The resolved display name and whether the manifest request is pending.
|
|
7
|
+
* @returns A read-only app name field with an accessible loading indicator when needed.
|
|
8
|
+
*/
|
|
9
|
+
export const AppNameField = ({ id, displayName, isLoading, }) => (_jsx(Input, { id: id, readOnly: true, value: displayName ?? '', "aria-busy": isLoading, rightAdornments: isLoading ? _jsx(Progress.Circular, { "aria-label": "Loading app name", size: 16 }) : undefined }));
|
|
10
|
+
//# sourceMappingURL=AppNameField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppNameField.js","sourceRoot":"","sources":["../../../../src/components/edit-bookmark/AppNameField.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC3B,EAAE,EACF,WAAW,EACX,SAAS,GAKV,EAAE,EAAE,CAAC,CACJ,KAAC,KAAK,IACJ,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,IAAI,EACd,KAAK,EAAE,WAAW,IAAI,EAAE,eACb,SAAS,EACpB,eAAe,EACb,SAAS,CAAC,CAAC,CAAC,KAAC,QAAQ,CAAC,QAAQ,kBAAY,kBAAkB,EAAC,IAAI,EAAE,EAAE,GAAI,CAAC,CAAC,CAAC,SAAS,GAEvF,CACH,CAAC"}
|
|
@@ -6,6 +6,7 @@ import { useFrameworkModule } from '@equinor/fusion-framework-react';
|
|
|
6
6
|
import { Button, Checkbox, Dialog, Input, Label, Textarea } from '@equinor/eds-core-react';
|
|
7
7
|
import styled from 'styled-components';
|
|
8
8
|
import { useBookmarkComponentContext } from '../BookmarkProvider';
|
|
9
|
+
import { AppNameField } from './AppNameField';
|
|
9
10
|
const Styled = {
|
|
10
11
|
Dialog: styled(Dialog) `
|
|
11
12
|
width: 500px;
|
|
@@ -42,6 +43,7 @@ export const EditBookmarkModal = ({ isOpen, onClose, bookmarkId, }) => {
|
|
|
42
43
|
});
|
|
43
44
|
const nameId = useId();
|
|
44
45
|
const descriptionId = useId();
|
|
46
|
+
const appId = useId();
|
|
45
47
|
const [updatePayload, setUpdatePayload] = useState(false);
|
|
46
48
|
const bookmark$ = useMemo(() => from(provider ? provider.getBookmark(bookmarkId) : EMPTY), [provider, bookmarkId]);
|
|
47
49
|
const { value: bookmark } = useObservableState(bookmark$);
|
|
@@ -55,7 +57,9 @@ export const EditBookmarkModal = ({ isOpen, onClose, bookmarkId, }) => {
|
|
|
55
57
|
}, [bookmark]);
|
|
56
58
|
// TODO(#5091): this should be on the bookmark object
|
|
57
59
|
const appProvider = useFrameworkModule('app');
|
|
58
|
-
const { value: appName } = useObservableState(useMemo(() => (bookmark && appProvider ? appProvider.getAppManifest(bookmark.appKey) : of(undefined)), [appProvider, bookmark]));
|
|
60
|
+
const { value: appName, error: appNameError } = useObservableState(useMemo(() => (bookmark && appProvider ? appProvider.getAppManifest(bookmark.appKey) : of(undefined)), [appProvider, bookmark]));
|
|
61
|
+
// Only report a pending manifest request; missing providers and failed requests are not loading.
|
|
62
|
+
const isAppNameLoading = Boolean(bookmark && appProvider && appName === undefined && appNameError === null);
|
|
59
63
|
const updateBookmark = useCallback(async (updates) => {
|
|
60
64
|
// Cannot update a bookmark without a provider to persist the change
|
|
61
65
|
if (!provider) {
|
|
@@ -83,7 +87,7 @@ export const EditBookmarkModal = ({ isOpen, onClose, bookmarkId, }) => {
|
|
|
83
87
|
setState((s) => ({ ...s, name: event.target.value }));
|
|
84
88
|
} })] }), _jsx("div", { children: _jsx(Textarea, { id: descriptionId, label: "Description", value: state?.description, rows: 3, rowsMax: 10, onChange: (event) => {
|
|
85
89
|
setState((s) => ({ ...s, description: event.target.value }));
|
|
86
|
-
} }) }), _jsxs("div", { children: [_jsx(Label, { htmlFor:
|
|
90
|
+
} }) }), _jsxs("div", { children: [_jsx(Label, { htmlFor: appId, label: "App" }), _jsx(AppNameField, { id: appId, displayName: appName?.displayName, isLoading: isAppNameLoading })] }), _jsxs(Styled.CheckboxWrapper, { children: [_jsx(Checkbox, { label: "Is Shared", checked: state.isShared, onChange: (changeEvent) => {
|
|
87
91
|
const isShared = changeEvent.target.checked;
|
|
88
92
|
// Copy the bookmark URL when the user shares it so it's easy to send along
|
|
89
93
|
if (isShared) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditBookmarkModal.js","sourceRoot":"","sources":["../../../../src/components/edit-bookmark/EditBookmarkModal.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAoB,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE3F,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAEvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAIrE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC3F,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"EditBookmarkModal.js","sourceRoot":"","sources":["../../../../src/components/edit-bookmark/EditBookmarkModal.tsx"],"names":[],"mappings":"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"}
|
package/dist/esm/version.js
CHANGED