@equinor/fusion-framework-dev-portal 4.0.4 → 5.0.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.
- package/CHANGELOG.md +96 -31
- package/README.md +61 -55
- package/dist/lib-D7s4zR0Q.js +6058 -0
- package/dist/main.js +73023 -90431
- package/package.json +53 -37
- package/src/AppLoader.tsx +18 -9
- package/src/BookMarkSideSheet.tsx +11 -0
- package/src/ContextSelector/ContextSelector.tsx +11 -5
- package/src/ContextSelector/useContextResolver.ts +41 -11
- package/src/EquinorLoader.tsx +10 -1
- package/src/ErrorViewer.tsx +9 -0
- package/src/FusionLogo.tsx +12 -0
- package/src/Header.Actions.tsx +12 -0
- package/src/Header.tsx +7 -0
- package/src/PersonSideSheet/index.tsx +10 -2
- package/src/PersonSideSheet/sheets/FeatureSheetContent.tsx +6 -2
- package/src/PersonSideSheet/sheets/FeatureTogglerApp.tsx +4 -1
- package/src/PersonSideSheet/sheets/FeatureTogglerPortal.tsx +4 -1
- package/src/PersonSideSheet/sheets/LandingSheetContent.tsx +7 -1
- package/src/PersonSideSheet/sheets/Styled.tsx +4 -0
- package/src/PersonSideSheet/sheets/types.ts +9 -0
- package/src/Router.tsx +17 -0
- package/src/config.ts +23 -10
- package/src/main.tsx +11 -0
- package/src/resources/fallback-photo.svg.ts +5 -0
- package/src/useAppContextNavigation.ts +19 -10
- package/src/version.ts +1 -1
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,101 @@
|
|
|
1
1
|
# @equinor/fusion-framework-dev-portal
|
|
2
2
|
|
|
3
|
+
## 5.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- abffa53: Major version bump for Fusion Framework React 19 release.
|
|
8
|
+
|
|
9
|
+
All packages are bumped to the next major version as part of the React 19 upgrade. This release drops support for React versions below 18 and includes breaking changes across the framework.
|
|
10
|
+
|
|
11
|
+
**Breaking changes:**
|
|
12
|
+
- Peer dependencies now require React 18 or 19 (`^18.0.0 || ^19.0.0`)
|
|
13
|
+
- React Router upgraded from v6 to v7
|
|
14
|
+
- Navigation module refactored with new history API
|
|
15
|
+
- `renderComponent` and `renderApp` now use `createRoot` API
|
|
16
|
+
|
|
17
|
+
**Migration:**
|
|
18
|
+
- Update your React version to 18.0.0 or higher before upgrading
|
|
19
|
+
- Replace `NavigationProvider.createRouter()` with `@equinor/fusion-framework-react-router`
|
|
20
|
+
- See individual package changelogs for package-specific migration steps
|
|
21
|
+
|
|
22
|
+
- abffa53: Upgrade to React 19 and remove support for React versions lower than 18.
|
|
23
|
+
|
|
24
|
+
**Breaking changes:**
|
|
25
|
+
- Peer dependencies now require React 18 or 19 (`^18.0.0 || ^19.0.0`)
|
|
26
|
+
- React 16 and 17 are no longer supported
|
|
27
|
+
- Dev dependencies upgraded to React 19.2.1 and @types/react 19.2.7
|
|
28
|
+
|
|
29
|
+
**Migration:**
|
|
30
|
+
- Update your React version to 18.0.0 or higher before upgrading these packages
|
|
31
|
+
- If using React 16 or 17, upgrade to React 18 or 19 first
|
|
32
|
+
|
|
33
|
+
Closes https://github.com/equinor/fusion-framework/issues/3504
|
|
34
|
+
|
|
35
|
+
### Minor Changes
|
|
36
|
+
|
|
37
|
+
- abffa53: Update EDS (Equinor Design System) packages to latest versions: `@equinor/eds-core-react` to ^2.2.0, `@equinor/eds-icons` to ^1.1.0, `@equinor/eds-tokens` to ^2.1.1, and `@equinor/eds-utils` to ^2.0.0.
|
|
38
|
+
|
|
39
|
+
These are major version updates from the 0.x series. Consumers should verify compatibility with their applications, particularly if using `@equinor/fusion-react-side-sheet` which may require updates to support the new EDS versions.
|
|
40
|
+
|
|
41
|
+
### Patch Changes
|
|
42
|
+
|
|
43
|
+
- abffa53: Render application content inside a stable `#app-section` container so browser-driven evaluation tools can target the app surface consistently.
|
|
44
|
+
|
|
45
|
+
This makes automated cookbook and dev-portal validation more reliable when using `agent-browser` and Copilot-based evaluation flows.
|
|
46
|
+
|
|
47
|
+
Refs https://github.com/equinor/fusion-core-tasks/issues/724
|
|
48
|
+
|
|
49
|
+
- abffa53: Upgrade dev-portal dependencies for React 19 compatibility.
|
|
50
|
+
- Upgrade `react-router` from v6 to v7.13 (backward-compatible, no code changes required)
|
|
51
|
+
- Upgrade `@equinor/fusion-react-styles` to 2.0.0 (removes `@material-ui/styles` dependency)
|
|
52
|
+
- Upgrade `@equinor/fusion-react-context-selector` to 2.0.1
|
|
53
|
+
|
|
54
|
+
This resolves the React 19 blocker identified in https://github.com/equinor/fusion-framework/issues/3698
|
|
55
|
+
|
|
56
|
+
- abffa53: Upgrade `react-router-dom` from v6 to v7.9.5 for React 19 compatibility.
|
|
57
|
+
|
|
58
|
+
This is a backward-compatible upgrade - all existing Router 6 patterns continue to work with Router 7. No code changes required.
|
|
59
|
+
|
|
60
|
+
- aa35c46: chore: bump @vitejs/plugin-react from 5.1.4 to 6.0.1
|
|
61
|
+
- 32bcf83: Bump `vite` from `7.3.1` to `8.0.0`.
|
|
62
|
+
|
|
63
|
+
Vite 8 replaces Rollup with Rolldown and esbuild with Oxc for faster builds.
|
|
64
|
+
No breaking API changes affect this codebase. The `dev-server` peerDependency
|
|
65
|
+
is widened to accept both Vite 7 and Vite 8.
|
|
66
|
+
|
|
67
|
+
- Updated dependencies [abffa53]
|
|
68
|
+
- Updated dependencies [abffa53]
|
|
69
|
+
- Updated dependencies [abffa53]
|
|
70
|
+
- Updated dependencies [abffa53]
|
|
71
|
+
- Updated dependencies [abffa53]
|
|
72
|
+
- Updated dependencies [aa35c46]
|
|
73
|
+
- Updated dependencies [abffa53]
|
|
74
|
+
- Updated dependencies [abffa53]
|
|
75
|
+
- Updated dependencies [abffa53]
|
|
76
|
+
- Updated dependencies [aaa3f74]
|
|
77
|
+
- Updated dependencies [abffa53]
|
|
78
|
+
- Updated dependencies [abffa53]
|
|
79
|
+
- Updated dependencies [32bcf83]
|
|
80
|
+
- @equinor/fusion-framework@8.0.0
|
|
81
|
+
- @equinor/fusion-framework-app@11.0.0
|
|
82
|
+
- @equinor/fusion-framework-dev-server@2.0.0
|
|
83
|
+
- @equinor/fusion-framework-module-ag-grid@36.0.0
|
|
84
|
+
- @equinor/fusion-framework-module-analytics@2.0.0
|
|
85
|
+
- @equinor/fusion-framework-module-app@8.0.0
|
|
86
|
+
- @equinor/fusion-framework-module-bookmark@4.0.0
|
|
87
|
+
- @equinor/fusion-framework-module-context@8.0.0
|
|
88
|
+
- @equinor/fusion-framework-module-feature-flag@2.0.0
|
|
89
|
+
- @equinor/fusion-framework-module-navigation@7.0.0
|
|
90
|
+
- @equinor/fusion-framework-module-services@8.0.0
|
|
91
|
+
- @equinor/fusion-framework-module-telemetry@5.0.0
|
|
92
|
+
- @equinor/fusion-framework-react@8.0.0
|
|
93
|
+
- @equinor/fusion-framework-react-components-bookmark@2.0.0
|
|
94
|
+
- @equinor/fusion-framework-react-components-people-provider@2.0.0
|
|
95
|
+
- @equinor/fusion-framework-react-module-bookmark@6.0.0
|
|
96
|
+
- @equinor/fusion-observable@9.0.0
|
|
97
|
+
- @equinor/fusion-query@7.0.0
|
|
98
|
+
|
|
3
99
|
## 4.0.4
|
|
4
100
|
|
|
5
101
|
### Patch Changes
|
|
@@ -144,7 +240,6 @@
|
|
|
144
240
|
- [#3922](https://github.com/equinor/fusion-framework/pull/3922) [`d34ebd8`](https://github.com/equinor/fusion-framework/commit/d34ebd82c93acabc88f88e44a725f084af3af5ec) Thanks [@odinr](https://github.com/odinr)! - Enable AG Grid Enterprise license injection for the dev-portal by setting a global window key produced from the SPA template environment. The portal reads `window.FUSION_AG_GRID_KEY` to configure the AG Grid module and silence license warnings when a valid key is present. CLI docs now mention the license key setup.
|
|
145
241
|
|
|
146
242
|
**Usage:**
|
|
147
|
-
|
|
148
243
|
- In your SPA environment file, set `FUSION_SPA_AG_GRID_KEY=your-license-key-here`.
|
|
149
244
|
- The SPA HTML template injects `window.FUSION_AG_GRID_KEY` before bootstrap runs, and the dev-portal picks it up automatically.
|
|
150
245
|
|
|
@@ -182,20 +277,17 @@
|
|
|
182
277
|
## New Features
|
|
183
278
|
|
|
184
279
|
### App Tag/Version Support
|
|
185
|
-
|
|
186
280
|
- **App Client**: Added `getAppBuild` method to fetch build manifests by app key and tag
|
|
187
281
|
- **App Module Provider**: Enhanced `getAppManifest` to accept optional tag parameter
|
|
188
282
|
- **App Loading**: Modified `setCurrentApp` to support `AppReference` objects with tag specification
|
|
189
283
|
- **URL Integration**: Added `getAppTagFromUrl` utility to extract app tags from URL parameters
|
|
190
284
|
|
|
191
285
|
### Enhanced Type System
|
|
192
|
-
|
|
193
286
|
- Added `AppReference` type for specifying app key and optional tag
|
|
194
287
|
- Extended `AppBundleState` to include optional `tag` property
|
|
195
288
|
- Updated `AppBuildManifest` type definition for build-specific metadata
|
|
196
289
|
|
|
197
290
|
### API Improvements
|
|
198
|
-
|
|
199
291
|
- **AppClient**: Updated interface to support tag-based manifest and build fetching
|
|
200
292
|
- **App Class**: Added `tag` getter property for accessing current app tag
|
|
201
293
|
- **Action System**: Enhanced `fetchManifest` action to handle tag parameters
|
|
@@ -203,7 +295,6 @@
|
|
|
203
295
|
## Changes by Package
|
|
204
296
|
|
|
205
297
|
### `@equinor/fusion-framework-module-app`
|
|
206
|
-
|
|
207
298
|
- **AppClient.ts**: Added `getAppBuild` method with tag support and updated `getAppManifest` signature
|
|
208
299
|
- **AppModuleProvider.ts**: Enhanced `setCurrentApp` method to handle `AppReference` objects with tags
|
|
209
300
|
- **App.ts**: Added `tag` getter and improved error handling in initialization
|
|
@@ -212,7 +303,6 @@
|
|
|
212
303
|
- **flows.ts**: Modified manifest fetching flow to handle tag-based requests
|
|
213
304
|
|
|
214
305
|
### `@equinor/fusion-framework-dev-portal`
|
|
215
|
-
|
|
216
306
|
- **AppLoader.tsx**: Added `getAppTagFromUrl` utility function and integrated tag-based app loading
|
|
217
307
|
|
|
218
308
|
## Usage Examples
|
|
@@ -245,17 +335,14 @@
|
|
|
245
335
|
## Migration Guide
|
|
246
336
|
|
|
247
337
|
### For App Consumers
|
|
248
|
-
|
|
249
338
|
- No breaking changes - existing code continues to work
|
|
250
339
|
- Optionally use new tag-based loading for version-specific deployments
|
|
251
340
|
|
|
252
341
|
### For App Developers
|
|
253
|
-
|
|
254
342
|
- Consider adding `&tag` URL parameter support for testing different versions
|
|
255
343
|
- Use new `AppReference` type when programmatically setting current apps with tags
|
|
256
344
|
|
|
257
345
|
## Technical Details
|
|
258
|
-
|
|
259
346
|
- **Backward Compatibility**: All changes are backward compatible
|
|
260
347
|
- **Caching**: Tag-based manifests and builds are cached separately
|
|
261
348
|
- **Error Handling**: Enhanced error handling for build and manifest loading failures
|
|
@@ -281,20 +368,17 @@
|
|
|
281
368
|
This update addresses a security vulnerability in Vite's development server and includes bug fixes for improved compatibility. The update ensures secure development environments and better plugin ecosystem compatibility.
|
|
282
369
|
|
|
283
370
|
**Changes:**
|
|
284
|
-
|
|
285
371
|
- Updated Vite from v7.1.10 to v7.1.12
|
|
286
372
|
- Includes security fix for development server file system checks
|
|
287
373
|
- Includes compatibility fix for CommonJS plugin
|
|
288
374
|
- No breaking changes or API modifications
|
|
289
375
|
|
|
290
376
|
**Security Fix (v7.1.11):**
|
|
291
|
-
|
|
292
377
|
- **dev**: trim trailing slash before `server.fs.deny` check ([#20968](https://github.com/vitejs/vite/issues/20968))
|
|
293
378
|
- Prevents potential path traversal vulnerability in development server
|
|
294
379
|
- Only affects development environment, not production builds
|
|
295
380
|
|
|
296
381
|
**Bug Fix (v7.1.12):**
|
|
297
|
-
|
|
298
382
|
- **deps**: downgrade commonjs plugin to 28.0.6 to avoid rollup/plugins issues ([#20990](https://github.com/vitejs/vite/issues/20990))
|
|
299
383
|
- Improves compatibility with Rollup plugin ecosystem
|
|
300
384
|
- Prevents potential build issues
|
|
@@ -314,12 +398,10 @@
|
|
|
314
398
|
### Patch Changes
|
|
315
399
|
|
|
316
400
|
- [#3542](https://github.com/equinor/fusion-framework/pull/3542) [`2d4fd18`](https://github.com/equinor/fusion-framework/commit/2d4fd18394e8545b4616140a93a369d5ae77ccbc) Thanks [@eikeland](https://github.com/eikeland)! - Updated person component dependencies for improved functionality and bug fixes.
|
|
317
|
-
|
|
318
401
|
- Updated `@equinor/fusion-react-person` from `^0.10.3` to `^0.10.10` in app-react-people cookbook
|
|
319
402
|
- Updated `@equinor/fusion-wc-person` from `^3.1.8` to `^3.2.4` in dev-portal and people-resolver packages
|
|
320
403
|
|
|
321
404
|
- [#3547](https://github.com/equinor/fusion-framework/pull/3547) [`99a3c26`](https://github.com/equinor/fusion-framework/commit/99a3c26275c2089c3708124f5819ce383d8dc3dc) Thanks [@odinr](https://github.com/odinr)! - Enhanced dev-portal with portal proxy service worker configuration ([Issue #3546](https://github.com/equinor/fusion-framework/issues/3546)).
|
|
322
|
-
|
|
323
405
|
- Added `/portal-proxy` service worker resource configuration in dev-server.ts
|
|
324
406
|
- Routes portal proxy requests to Fusion portal service API (`/@fusion-api/portals`)
|
|
325
407
|
- Enables portal proxy functionality for testing against real portal environments
|
|
@@ -333,14 +415,12 @@
|
|
|
333
415
|
- [#3522](https://github.com/equinor/fusion-framework/pull/3522) [`63ac6a1`](https://github.com/equinor/fusion-framework/commit/63ac6a1178fc6f6b0702f51a9c36a67db76b92cd) Thanks [@odinr](https://github.com/odinr)! - Add comprehensive telemetry integration to the Fusion Dev Portal.
|
|
334
416
|
|
|
335
417
|
**New Features:**
|
|
336
|
-
|
|
337
418
|
- Enable telemetry tracking for portal usage analytics and monitoring
|
|
338
419
|
- Configure portal-specific metadata including version and name identification
|
|
339
420
|
- Set up telemetry event scoping for portal-specific tracking
|
|
340
421
|
- Attach framework configurator events for comprehensive telemetry coverage
|
|
341
422
|
|
|
342
423
|
**Technical Implementation:**
|
|
343
|
-
|
|
344
424
|
- Integrate `@equinor/fusion-framework-module-telemetry` module
|
|
345
425
|
- Configure telemetry with portal metadata (`type: 'portal-telemetry'`)
|
|
346
426
|
- Set default scope to `['portal']` for event categorization
|
|
@@ -348,7 +428,6 @@
|
|
|
348
428
|
- Add TypeScript path references for telemetry module
|
|
349
429
|
|
|
350
430
|
**Configuration Updates:**
|
|
351
|
-
|
|
352
431
|
- Enhanced `config.ts` with detailed telemetry setup and documentation
|
|
353
432
|
- Updated dependency versions to use `workspace:*` for better monorepo compatibility
|
|
354
433
|
- Improved code documentation and developer experience features
|
|
@@ -360,14 +439,12 @@
|
|
|
360
439
|
- [#3515](https://github.com/equinor/fusion-framework/pull/3515) [`6cb288b`](https://github.com/equinor/fusion-framework/commit/6cb288b9e1ec4fae68ae6899735c176837bb4275) Thanks [@odinr](https://github.com/odinr)! - ## Global Biome Configuration Modernization
|
|
361
440
|
|
|
362
441
|
**Workspace-wide changes:**
|
|
363
|
-
|
|
364
442
|
- Remove 19 rule overrides from `biome.json` to use Biome's strict "error" defaults
|
|
365
443
|
- Enable `correctness/useUniqueElementIds` accessibility rule globally
|
|
366
444
|
- Reduce configuration size by 40% (60+ → ~35 lines)
|
|
367
445
|
- Eliminate all custom linting rule customizations
|
|
368
446
|
|
|
369
447
|
**Package-specific changes:**
|
|
370
|
-
|
|
371
448
|
- Replace static IDs with React `useId()` hooks in bookmark and dev-portal components
|
|
372
449
|
- Fix `suspicious/noAssignInExpressions` violations in context, legacy-interopt, and observable packages
|
|
373
450
|
- Update 11 React components for accessibility compliance
|
|
@@ -414,7 +491,6 @@
|
|
|
414
491
|
- [#3349](https://github.com/equinor/fusion-framework/pull/3349) [`c511123`](https://github.com/equinor/fusion-framework/commit/c511123c835e24e9ddefcc4c47c2455f5df12087) Thanks [@dependabot](https://github.com/apps/dependabot)! - chore: bump vite from 6.x to 7.1.5
|
|
415
492
|
|
|
416
493
|
Major version update of Vite build tool across all packages. This update includes:
|
|
417
|
-
|
|
418
494
|
- Enhanced build performance and caching
|
|
419
495
|
- Better error reporting with code frames
|
|
420
496
|
- Improved TypeScript integration
|
|
@@ -422,14 +498,12 @@
|
|
|
422
498
|
- New development server features
|
|
423
499
|
|
|
424
500
|
### Links
|
|
425
|
-
|
|
426
501
|
- [Vite 7.1.5 Release Notes](https://github.com/vitejs/vite/releases/tag/v7.1.5)
|
|
427
502
|
- [Vite 7.x Migration Guide](https://vitejs.dev/guide/migration)
|
|
428
503
|
|
|
429
504
|
### Patch Changes
|
|
430
505
|
|
|
431
506
|
- [#3365](https://github.com/equinor/fusion-framework/pull/3365) [`6eeef2f`](https://github.com/equinor/fusion-framework/commit/6eeef2f2033dfacf7c972295c8c2cc2d4cd83976) Thanks [@dependabot](https://github.com/apps/dependabot)! - Updated @equinor/eds-tokens from 0.9.2 to 0.10.0
|
|
432
|
-
|
|
433
507
|
- Added support for CSS custom properties via variables-static.css and variables-dynamic.css
|
|
434
508
|
- Improved design token integration for better CSS compatibility
|
|
435
509
|
- Updated dependencies and internal tooling (pnpm v10, node v22)
|
|
@@ -439,7 +513,6 @@
|
|
|
439
513
|
- [#3400](https://github.com/equinor/fusion-framework/pull/3400) [`aed6c53`](https://github.com/equinor/fusion-framework/commit/aed6c5385df496a86d06dc0af9dacafc255ea605) Thanks [@dependabot](https://github.com/apps/dependabot)! - chore: bump @equinor/eds-core-react from 0.45.1 to 0.49.0
|
|
440
514
|
|
|
441
515
|
### New Features
|
|
442
|
-
|
|
443
516
|
- ✨ Always show "add new option" in Autocomplete when onAddNewOption is provided
|
|
444
517
|
- ✨ Tabs call onChange with provided value if present
|
|
445
518
|
- ✨ Add disabled prop to Tooltip
|
|
@@ -447,7 +520,6 @@
|
|
|
447
520
|
- ✨ Add support for adding new options in Autocomplete
|
|
448
521
|
|
|
449
522
|
### Bug Fixes
|
|
450
|
-
|
|
451
523
|
- 🐛 Autocomplete - Don't call onOptionsChange when clicking "Add new"
|
|
452
524
|
- 🐛 Table - Fix Firefox table header wrapping issue
|
|
453
525
|
- 🐛 Tabs documentation type mismatch - update onChange parameter from number to number | string
|
|
@@ -459,28 +531,24 @@
|
|
|
459
531
|
- 🐛 Menu: Ensure onClose is called when a MenuItem without onClick is clicked
|
|
460
532
|
|
|
461
533
|
### Links
|
|
462
|
-
|
|
463
534
|
- [GitHub releases](https://github.com/equinor/design-system/releases/tag/eds-core-react%400.49.0)
|
|
464
535
|
- [npm changelog](https://www.npmjs.com/package/@equinor/eds-core-react?activeTab=versions)
|
|
465
536
|
|
|
466
537
|
- [#3366](https://github.com/equinor/fusion-framework/pull/3366) [`daa362e`](https://github.com/equinor/fusion-framework/commit/daa362e7d92ad362e46d666c434d0f09687abad5) Thanks [@dependabot](https://github.com/apps/dependabot)! - Update @equinor/eds-core-react from 0.48.0 to 0.49.0
|
|
467
538
|
|
|
468
539
|
### Changes
|
|
469
|
-
|
|
470
540
|
- Updated @equinor/eds-core-react dependency to latest version across all packages
|
|
471
541
|
- Fixed peerDependencies version mismatch in bookmark package
|
|
472
542
|
- Includes bug fixes for Autocomplete and Table components
|
|
473
543
|
- Adds new Autocomplete features for "add new option" functionality
|
|
474
544
|
|
|
475
545
|
### Affected Packages
|
|
476
|
-
|
|
477
546
|
- packages/dev-portal
|
|
478
547
|
- packages/react/components/bookmark
|
|
479
548
|
- cookbooks/app-react-feature-flag
|
|
480
549
|
- cookbooks/app-react-people
|
|
481
550
|
|
|
482
551
|
### Links
|
|
483
|
-
|
|
484
552
|
- [GitHub releases](https://github.com/equinor/design-system/releases)
|
|
485
553
|
- [Full Changelog](https://github.com/equinor/design-system/compare/eds-core-react@0.48.0...eds-core-react@0.49.0)
|
|
486
554
|
|
|
@@ -489,7 +557,6 @@
|
|
|
489
557
|
### Patch Changes
|
|
490
558
|
|
|
491
559
|
- [#3381](https://github.com/equinor/fusion-framework/pull/3381) [`bae9c95`](https://github.com/equinor/fusion-framework/commit/bae9c9554f335d0384b864436874bded47d00ed8) Thanks [@dependabot](https://github.com/apps/dependabot)! - Update rollup from 4.49.0 to 4.50.2
|
|
492
|
-
|
|
493
560
|
- Updated rollup dependency via vite transitive dependency
|
|
494
561
|
- Includes bug fixes for tree-shaking array destructuring patterns
|
|
495
562
|
- Performance improvements and platform support updates
|
|
@@ -517,7 +584,6 @@
|
|
|
517
584
|
The refactor moves specific functionality and code related to the development portal into its own dedicated package to improve modularity and maintainability.
|
|
518
585
|
|
|
519
586
|
**Features**
|
|
520
|
-
|
|
521
587
|
- Development portal for the Fusion framework
|
|
522
588
|
- Support for MSAL authentication
|
|
523
589
|
- Integration with service discovery
|
|
@@ -552,7 +618,6 @@
|
|
|
552
618
|
### Patch Changes
|
|
553
619
|
|
|
554
620
|
- [#3075](https://github.com/equinor/fusion-framework/pull/3075) [`84c16d7`](https://github.com/equinor/fusion-framework/commit/84c16d74c3235f809ce4c3e75868be12010ed695) Thanks [@odinr](https://github.com/odinr)! - Add `prepack` script to `dev-portal` and `dev-server` packages
|
|
555
|
-
|
|
556
621
|
- Added a `prepack` script to `@equinor/fusion-framework-dev-portal` and `@equinor/fusion-framework-dev-server` to ensure the build runs before packaging.
|
|
557
622
|
- This helps guarantee that the latest build artifacts are included when publishing these packages.
|
|
558
623
|
|
package/README.md
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
# @equinor/fusion-framework-dev-portal
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Minimal development portal for building and testing Fusion Framework applications locally.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## What Is It?
|
|
6
6
|
|
|
7
|
-
It is
|
|
8
|
-
|
|
7
|
+
`@equinor/fusion-framework-dev-portal` provides a lightweight portal shell that mirrors the production Fusion portal layout — header, context selector, bookmark side sheet, person settings, and application routing — without the full production overhead. It is the portal component loaded by `@equinor/fusion-framework-dev-server` and `@equinor/fusion-framework-cli` when running apps locally.
|
|
8
|
+
|
|
9
|
+
Use this package when you need a portal host for local app development. For the recommended development workflow, pair it with `@equinor/fusion-framework-dev-server`.
|
|
10
|
+
|
|
11
|
+
## Key Concepts
|
|
12
|
+
|
|
13
|
+
- **Portal shell**: A React application that renders the top bar, context selector, and an app mounting area.
|
|
14
|
+
- **Application loader**: Dynamically initializes and mounts a Fusion app by its `appKey`, handling manifest resolution, script loading, and teardown.
|
|
15
|
+
- **Framework modules**: The portal pre-configures telemetry, navigation, bookmarks, feature flags, analytics, AG Grid, and service integrations so loaded apps inherit a realistic environment.
|
|
16
|
+
- **Context navigation**: When an app uses the context module, the portal synchronizes URL navigation with context changes automatically.
|
|
9
17
|
|
|
10
18
|
## Installation
|
|
11
19
|
|
|
@@ -15,55 +23,55 @@ pnpm add @equinor/fusion-framework-dev-portal
|
|
|
15
23
|
|
|
16
24
|
## Environment Variables
|
|
17
25
|
|
|
18
|
-
|
|
26
|
+
Set these in a `.env` file or in your server environment:
|
|
19
27
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
28
|
+
| Variable | Required | Description |
|
|
29
|
+
|---|---|---|
|
|
30
|
+
| `FUSION_MSAL_CLIENT_ID` | Yes | MSAL application client ID for authentication |
|
|
31
|
+
| `FUSION_MSAL_TENANT_ID` | Yes | Azure AD tenant ID for authentication |
|
|
32
|
+
| `FUSION_SERVICE_DISCOVERY_URL` | Yes | URL for the Fusion service discovery endpoint |
|
|
33
|
+
| `FUSION_SERVICE_SCOPE` | Yes | OAuth scopes for service requests |
|
|
34
|
+
| `FUSION_SPA_AG_GRID_KEY` | No | AG Grid Enterprise license key — silences console warnings locally |
|
|
25
35
|
|
|
26
|
-
###
|
|
36
|
+
### AG Grid License
|
|
27
37
|
|
|
28
|
-
To
|
|
38
|
+
To suppress AG Grid Enterprise license warnings during local development:
|
|
29
39
|
|
|
30
|
-
1.
|
|
31
|
-
2.
|
|
32
|
-
|
|
33
|
-
FUSION_SPA_AG_GRID_KEY=your-license-key-here
|
|
34
|
-
```
|
|
35
|
-
3. Start the dev portal:
|
|
36
|
-
```sh
|
|
37
|
-
pnpm start
|
|
38
|
-
```
|
|
39
|
-
4. Verify the configuration by opening the portal and checking the browser console - there should be no AG Grid license warnings
|
|
40
|
+
1. Add `FUSION_SPA_AG_GRID_KEY=<your-key>` to your `.env` file.
|
|
41
|
+
2. Start the dev portal with `pnpm start`.
|
|
42
|
+
3. Verify the browser console shows no AG Grid license warnings.
|
|
40
43
|
|
|
41
|
-
|
|
44
|
+
The license key is only used locally and must not be committed to the repository.
|
|
42
45
|
|
|
43
|
-
##
|
|
46
|
+
## Quick Start
|
|
44
47
|
|
|
45
48
|
```sh
|
|
46
49
|
pnpm start
|
|
47
50
|
```
|
|
48
51
|
|
|
49
|
-
|
|
52
|
+
This launches the dev server with the portal loaded.
|
|
53
|
+
|
|
54
|
+
## Public API
|
|
55
|
+
|
|
56
|
+
The package exports a single `render` function that mounts the portal into a DOM element:
|
|
50
57
|
|
|
51
58
|
```ts
|
|
52
|
-
import { render } from
|
|
59
|
+
import { render } from '@equinor/fusion-framework-dev-portal';
|
|
53
60
|
|
|
54
|
-
const el = document.createElement(
|
|
55
|
-
el.id =
|
|
61
|
+
const el = document.createElement('div');
|
|
62
|
+
el.id = 'dev-portal';
|
|
56
63
|
document.body.appendChild(el);
|
|
57
64
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
render(el, {ref: framework});
|
|
65
|
+
// `framework` is a pre-configured Fusion Framework instance with Service Discovery and MSAL
|
|
66
|
+
render(el, { ref: framework });
|
|
61
67
|
```
|
|
62
68
|
|
|
63
69
|
### Usage with `@equinor/fusion-framework-dev-server`
|
|
64
70
|
|
|
71
|
+
The dev server loads this portal automatically. A typical integration looks like:
|
|
72
|
+
|
|
65
73
|
```ts
|
|
66
|
-
import { createDevServer } from
|
|
74
|
+
import { createDevServer } from '@equinor/fusion-framework-dev-server';
|
|
67
75
|
|
|
68
76
|
const portalId = '@equinor/fusion-framework-dev-portal';
|
|
69
77
|
const devServer = await createDevServer({
|
|
@@ -72,33 +80,31 @@ const devServer = await createDevServer({
|
|
|
72
80
|
portal: {
|
|
73
81
|
id: portalId,
|
|
74
82
|
tag: 'latest',
|
|
75
|
-
}
|
|
76
|
-
/** --- Add any other environment variables you need here --- */
|
|
83
|
+
},
|
|
77
84
|
},
|
|
78
85
|
},
|
|
79
86
|
api: {
|
|
80
|
-
serviceDiscoveryUrl:
|
|
81
|
-
processServices: /** generate proxy routes */
|
|
82
|
-
routes: [
|
|
83
|
-
{
|
|
84
|
-
// intercept for the dev-portal manifest
|
|
85
|
-
match: `/PROXY_SERVICE_KEY/PROXY_PATH/${options.portal}{@:tag}`,
|
|
86
|
-
middleware: async (req, res) => {
|
|
87
|
-
res.writeHead(200, { 'content-type': 'application/json' });
|
|
88
|
-
// resolve the local path to the dev-portal
|
|
89
|
-
// __CWD__/node_modules/@equinor/fusion-framework-dev-portal/dist/main.js
|
|
90
|
-
const path = fileURLToPath('/@fs' + import.meta.resolve(portalId));
|
|
91
|
-
const manifest = {
|
|
92
|
-
build: {
|
|
93
|
-
entrypoint: new URL(path, req.headers.referer),
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
res.end(JSON.stringify(manifest));
|
|
97
|
-
},
|
|
98
|
-
}
|
|
99
|
-
]
|
|
87
|
+
serviceDiscoveryUrl: 'https://location.of.your.service.discovery',
|
|
100
88
|
},
|
|
101
89
|
});
|
|
102
90
|
```
|
|
103
91
|
|
|
92
|
+
## Architecture
|
|
93
|
+
|
|
94
|
+
The portal is composed of these internal parts:
|
|
95
|
+
|
|
96
|
+
- **`render`** — Entry point; creates a React root with theme, framework, and people-resolver providers.
|
|
97
|
+
- **`configure`** — Configures all framework modules (telemetry, navigation, bookmarks, feature flags, analytics, AG Grid, services).
|
|
98
|
+
- **`Router`** — Sets up routes with `react-router` via the navigation module; routes `/apps/:appKey/*` to the app loader.
|
|
99
|
+
- **`AppLoader`** — Resolves, initializes, and mounts a Fusion app by key; handles loading states and errors.
|
|
100
|
+
- **`Header`** — Top bar with the Fusion logo, context selector, bookmark toggle, and person settings.
|
|
101
|
+
- **`ContextSelector`** — Wired to the current app's context module for searching and selecting context items.
|
|
102
|
+
- **`useAppContextNavigation`** — Synchronizes URL pathname with context changes for apps that use the context module.
|
|
103
|
+
|
|
104
|
+
## Constraints
|
|
105
|
+
|
|
106
|
+
- This portal is for **local development only** and is not intended for production deployment.
|
|
107
|
+
- Visuals may differ from the production Fusion portal.
|
|
108
|
+
- The portal assumes MSAL and service discovery are configured in the parent framework instance.
|
|
109
|
+
|
|
104
110
|
|