openvsx-webui-test 0.17.1 → 0.18.0-dev.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/lib/components/button-with-progress.d.ts +1 -0
- package/lib/components/button-with-progress.d.ts.map +1 -1
- package/lib/components/button-with-progress.js +1 -1
- package/lib/components/button-with-progress.js.map +1 -1
- package/lib/components/sanitized-markdown.d.ts.map +1 -1
- package/lib/components/sanitized-markdown.js +79 -1
- package/lib/components/sanitized-markdown.js.map +1 -1
- package/lib/components/scan-admin/common/auto-refresh.d.ts +21 -0
- package/lib/components/scan-admin/common/auto-refresh.d.ts.map +1 -0
- package/lib/components/scan-admin/common/auto-refresh.js +45 -0
- package/lib/components/scan-admin/common/auto-refresh.js.map +1 -0
- package/lib/components/scan-admin/common/conditional-tooltip.d.ts +24 -0
- package/lib/components/scan-admin/common/conditional-tooltip.d.ts.map +1 -0
- package/lib/components/scan-admin/common/conditional-tooltip.js +63 -0
- package/lib/components/scan-admin/common/conditional-tooltip.js.map +1 -0
- package/lib/components/scan-admin/common/file-table.d.ts +23 -0
- package/lib/components/scan-admin/common/file-table.d.ts.map +1 -0
- package/lib/components/scan-admin/common/file-table.js +350 -0
- package/lib/components/scan-admin/common/file-table.js.map +1 -0
- package/lib/components/scan-admin/common/index.d.ts +18 -0
- package/lib/components/scan-admin/common/index.d.ts.map +1 -0
- package/lib/components/scan-admin/common/index.js +18 -0
- package/lib/components/scan-admin/common/index.js.map +1 -0
- package/lib/components/scan-admin/common/tab-panel.d.ts +25 -0
- package/lib/components/scan-admin/common/tab-panel.d.ts.map +1 -0
- package/lib/components/scan-admin/common/tab-panel.js +22 -0
- package/lib/components/scan-admin/common/tab-panel.js.map +1 -0
- package/lib/components/scan-admin/common/utils.d.ts +15 -0
- package/lib/components/scan-admin/common/utils.d.ts.map +1 -0
- package/lib/components/scan-admin/common/utils.js +46 -0
- package/lib/components/scan-admin/common/utils.js.map +1 -0
- package/lib/components/scan-admin/dialogs/file-dialog.d.ts +19 -0
- package/lib/components/scan-admin/dialogs/file-dialog.d.ts.map +1 -0
- package/lib/components/scan-admin/dialogs/file-dialog.js +85 -0
- package/lib/components/scan-admin/dialogs/file-dialog.js.map +1 -0
- package/lib/components/scan-admin/dialogs/index.d.ts +15 -0
- package/lib/components/scan-admin/dialogs/index.d.ts.map +1 -0
- package/lib/components/scan-admin/dialogs/index.js +15 -0
- package/lib/components/scan-admin/dialogs/index.js.map +1 -0
- package/lib/components/scan-admin/dialogs/quarantine-dialog.d.ts +23 -0
- package/lib/components/scan-admin/dialogs/quarantine-dialog.d.ts.map +1 -0
- package/lib/components/scan-admin/dialogs/quarantine-dialog.js +192 -0
- package/lib/components/scan-admin/dialogs/quarantine-dialog.js.map +1 -0
- package/lib/components/scan-admin/index.d.ts +20 -0
- package/lib/components/scan-admin/index.d.ts.map +1 -0
- package/lib/components/scan-admin/index.js +25 -0
- package/lib/components/scan-admin/index.js.map +1 -0
- package/lib/components/scan-admin/scan-card/index.d.ts +20 -0
- package/lib/components/scan-admin/scan-card/index.d.ts.map +1 -0
- package/lib/components/scan-admin/scan-card/index.js +20 -0
- package/lib/components/scan-admin/scan-card/index.js.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card-content.d.ts +30 -0
- package/lib/components/scan-admin/scan-card/scan-card-content.d.ts.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card-content.js +232 -0
- package/lib/components/scan-admin/scan-card/scan-card-content.js.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card-expand-strip-badges.d.ts +26 -0
- package/lib/components/scan-admin/scan-card/scan-card-expand-strip-badges.d.ts.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card-expand-strip-badges.js +121 -0
- package/lib/components/scan-admin/scan-card/scan-card-expand-strip-badges.js.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card-expand-strip.d.ts +27 -0
- package/lib/components/scan-admin/scan-card/scan-card-expand-strip.d.ts.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card-expand-strip.js +66 -0
- package/lib/components/scan-admin/scan-card/scan-card-expand-strip.js.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card-expanded-content.d.ts +26 -0
- package/lib/components/scan-admin/scan-card/scan-card-expanded-content.d.ts.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card-expanded-content.js +151 -0
- package/lib/components/scan-admin/scan-card/scan-card-expanded-content.js.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card-header.d.ts +26 -0
- package/lib/components/scan-admin/scan-card/scan-card-header.d.ts.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card-header.js +101 -0
- package/lib/components/scan-admin/scan-card/scan-card-header.js.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card.d.ts +34 -0
- package/lib/components/scan-admin/scan-card/scan-card.d.ts.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card.js +90 -0
- package/lib/components/scan-admin/scan-card/scan-card.js.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-detail-card.d.ts +38 -0
- package/lib/components/scan-admin/scan-card/scan-detail-card.d.ts.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-detail-card.js +72 -0
- package/lib/components/scan-admin/scan-card/scan-detail-card.js.map +1 -0
- package/lib/components/scan-admin/scan-card/utils.d.ts +48 -0
- package/lib/components/scan-admin/scan-card/utils.d.ts.map +1 -0
- package/lib/components/scan-admin/scan-card/utils.js +166 -0
- package/lib/components/scan-admin/scan-card/utils.js.map +1 -0
- package/lib/components/scan-admin/tab-contents/allow-list-tab-content.d.ts +19 -0
- package/lib/components/scan-admin/tab-contents/allow-list-tab-content.d.ts.map +1 -0
- package/lib/components/scan-admin/tab-contents/allow-list-tab-content.js +55 -0
- package/lib/components/scan-admin/tab-contents/allow-list-tab-content.js.map +1 -0
- package/lib/components/scan-admin/tab-contents/auto-rejected-tab-content.d.ts +19 -0
- package/lib/components/scan-admin/tab-contents/auto-rejected-tab-content.d.ts.map +1 -0
- package/lib/components/scan-admin/tab-contents/auto-rejected-tab-content.js +43 -0
- package/lib/components/scan-admin/tab-contents/auto-rejected-tab-content.js.map +1 -0
- package/lib/components/scan-admin/tab-contents/block-list-tab-content.d.ts +19 -0
- package/lib/components/scan-admin/tab-contents/block-list-tab-content.d.ts.map +1 -0
- package/lib/components/scan-admin/tab-contents/block-list-tab-content.js +55 -0
- package/lib/components/scan-admin/tab-contents/block-list-tab-content.js.map +1 -0
- package/lib/components/scan-admin/tab-contents/index.d.ts +18 -0
- package/lib/components/scan-admin/tab-contents/index.d.ts.map +1 -0
- package/lib/components/scan-admin/tab-contents/index.js +18 -0
- package/lib/components/scan-admin/tab-contents/index.js.map +1 -0
- package/lib/components/scan-admin/tab-contents/quarantined-tab-content.d.ts +19 -0
- package/lib/components/scan-admin/tab-contents/quarantined-tab-content.d.ts.map +1 -0
- package/lib/components/scan-admin/tab-contents/quarantined-tab-content.js +78 -0
- package/lib/components/scan-admin/tab-contents/quarantined-tab-content.js.map +1 -0
- package/lib/components/scan-admin/tab-contents/scans-tab-content.d.ts +19 -0
- package/lib/components/scan-admin/tab-contents/scans-tab-content.d.ts.map +1 -0
- package/lib/components/scan-admin/tab-contents/scans-tab-content.js +52 -0
- package/lib/components/scan-admin/tab-contents/scans-tab-content.js.map +1 -0
- package/lib/components/scan-admin/toolbars/counts-toolbar.d.ts +35 -0
- package/lib/components/scan-admin/toolbars/counts-toolbar.d.ts.map +1 -0
- package/lib/components/scan-admin/toolbars/counts-toolbar.js +132 -0
- package/lib/components/scan-admin/toolbars/counts-toolbar.js.map +1 -0
- package/lib/components/scan-admin/toolbars/index.d.ts +16 -0
- package/lib/components/scan-admin/toolbars/index.d.ts.map +1 -0
- package/lib/components/scan-admin/toolbars/index.js +16 -0
- package/lib/components/scan-admin/toolbars/index.js.map +1 -0
- package/lib/components/scan-admin/toolbars/search-toolbar.d.ts +43 -0
- package/lib/components/scan-admin/toolbars/search-toolbar.d.ts.map +1 -0
- package/lib/components/scan-admin/toolbars/search-toolbar.js +106 -0
- package/lib/components/scan-admin/toolbars/search-toolbar.js.map +1 -0
- package/lib/components/scan-admin/toolbars/tab-toolbar.d.ts +25 -0
- package/lib/components/scan-admin/toolbars/tab-toolbar.d.ts.map +1 -0
- package/lib/components/scan-admin/toolbars/tab-toolbar.js +33 -0
- package/lib/components/scan-admin/toolbars/tab-toolbar.js.map +1 -0
- package/lib/context/scan-admin/index.d.ts +21 -0
- package/lib/context/scan-admin/index.d.ts.map +1 -0
- package/lib/context/scan-admin/index.js +27 -0
- package/lib/context/scan-admin/index.js.map +1 -0
- package/lib/context/scan-admin/scan-actions.d.ts +19 -0
- package/lib/context/scan-admin/scan-actions.d.ts.map +1 -0
- package/lib/context/scan-admin/scan-actions.js +64 -0
- package/lib/context/scan-admin/scan-actions.js.map +1 -0
- package/lib/context/scan-admin/scan-api-actions.d.ts +26 -0
- package/lib/context/scan-admin/scan-api-actions.d.ts.map +1 -0
- package/lib/context/scan-admin/scan-api-actions.js +118 -0
- package/lib/context/scan-admin/scan-api-actions.js.map +1 -0
- package/lib/context/scan-admin/scan-api-effects.d.ts +40 -0
- package/lib/context/scan-admin/scan-api-effects.d.ts.map +1 -0
- package/lib/context/scan-admin/scan-api-effects.js +446 -0
- package/lib/context/scan-admin/scan-api-effects.js.map +1 -0
- package/lib/context/scan-admin/scan-context-types.d.ts +69 -0
- package/lib/context/scan-admin/scan-context-types.d.ts.map +1 -0
- package/lib/context/scan-admin/scan-context-types.js +14 -0
- package/lib/context/scan-admin/scan-context-types.js.map +1 -0
- package/lib/context/scan-admin/scan-context.d.ts +17 -0
- package/lib/context/scan-admin/scan-context.d.ts.map +1 -0
- package/lib/context/scan-admin/scan-context.js +90 -0
- package/lib/context/scan-admin/scan-context.js.map +1 -0
- package/lib/context/scan-admin/scan-helpers.d.ts +28 -0
- package/lib/context/scan-admin/scan-helpers.d.ts.map +1 -0
- package/lib/context/scan-admin/scan-helpers.js +56 -0
- package/lib/context/scan-admin/scan-helpers.js.map +1 -0
- package/lib/context/scan-admin/scan-reducer.d.ts +18 -0
- package/lib/context/scan-admin/scan-reducer.d.ts.map +1 -0
- package/lib/context/scan-admin/scan-reducer.js +194 -0
- package/lib/context/scan-admin/scan-reducer.js.map +1 -0
- package/lib/context/scan-admin/scan-types.d.ts +292 -0
- package/lib/context/scan-admin/scan-types.d.ts.map +1 -0
- package/lib/context/scan-admin/scan-types.js +67 -0
- package/lib/context/scan-admin/scan-types.js.map +1 -0
- package/lib/default/page-settings.d.ts.map +1 -1
- package/lib/default/page-settings.js +3 -0
- package/lib/default/page-settings.js.map +1 -1
- package/lib/default/theme.d.ts +50 -12
- package/lib/default/theme.d.ts.map +1 -1
- package/lib/default/theme.js +42 -0
- package/lib/default/theme.js.map +1 -1
- package/lib/extension-registry-service.d.ts +85 -1
- package/lib/extension-registry-service.d.ts.map +1 -1
- package/lib/extension-registry-service.js +197 -0
- package/lib/extension-registry-service.js.map +1 -1
- package/lib/extension-registry-types.d.ts +140 -0
- package/lib/extension-registry-types.d.ts.map +1 -1
- package/lib/extension-registry-types.js.map +1 -1
- package/lib/hooks/scan-admin/index.d.ts +34 -0
- package/lib/hooks/scan-admin/index.d.ts.map +1 -0
- package/lib/hooks/scan-admin/index.js +28 -0
- package/lib/hooks/scan-admin/index.js.map +1 -0
- package/lib/hooks/scan-admin/use-auto-rejected-tab.d.ts +76 -0
- package/lib/hooks/scan-admin/use-auto-rejected-tab.d.ts.map +1 -0
- package/lib/hooks/scan-admin/use-auto-rejected-tab.js +79 -0
- package/lib/hooks/scan-admin/use-auto-rejected-tab.js.map +1 -0
- package/lib/hooks/scan-admin/use-dialogs.d.ts +43 -0
- package/lib/hooks/scan-admin/use-dialogs.d.ts.map +1 -0
- package/lib/hooks/scan-admin/use-dialogs.js +55 -0
- package/lib/hooks/scan-admin/use-dialogs.js.map +1 -0
- package/lib/hooks/scan-admin/use-file-list-tab.d.ts +208 -0
- package/lib/hooks/scan-admin/use-file-list-tab.d.ts.map +1 -0
- package/lib/hooks/scan-admin/use-file-list-tab.js +125 -0
- package/lib/hooks/scan-admin/use-file-list-tab.js.map +1 -0
- package/lib/hooks/scan-admin/use-pagination.d.ts +36 -0
- package/lib/hooks/scan-admin/use-pagination.d.ts.map +1 -0
- package/lib/hooks/scan-admin/use-pagination.js +79 -0
- package/lib/hooks/scan-admin/use-pagination.js.map +1 -0
- package/lib/hooks/scan-admin/use-quarantined-tab.d.ts +92 -0
- package/lib/hooks/scan-admin/use-quarantined-tab.d.ts.map +1 -0
- package/lib/hooks/scan-admin/use-quarantined-tab.js +125 -0
- package/lib/hooks/scan-admin/use-quarantined-tab.js.map +1 -0
- package/lib/hooks/scan-admin/use-scan-card-state.d.ts +29 -0
- package/lib/hooks/scan-admin/use-scan-card-state.d.ts.map +1 -0
- package/lib/hooks/scan-admin/use-scan-card-state.js +50 -0
- package/lib/hooks/scan-admin/use-scan-card-state.js.map +1 -0
- package/lib/hooks/scan-admin/use-scan-filters.d.ts +53 -0
- package/lib/hooks/scan-admin/use-scan-filters.d.ts.map +1 -0
- package/lib/hooks/scan-admin/use-scan-filters.js +75 -0
- package/lib/hooks/scan-admin/use-scan-filters.js.map +1 -0
- package/lib/hooks/scan-admin/use-scans-tab.d.ts +85 -0
- package/lib/hooks/scan-admin/use-scans-tab.d.ts.map +1 -0
- package/lib/hooks/scan-admin/use-scans-tab.js +87 -0
- package/lib/hooks/scan-admin/use-scans-tab.js.map +1 -0
- package/lib/hooks/scan-admin/use-search.d.ts +32 -0
- package/lib/hooks/scan-admin/use-search.d.ts.map +1 -0
- package/lib/hooks/scan-admin/use-search.js +48 -0
- package/lib/hooks/scan-admin/use-search.js.map +1 -0
- package/lib/hooks/scan-admin/use-tab-navigation.d.ts +96 -0
- package/lib/hooks/scan-admin/use-tab-navigation.d.ts.map +1 -0
- package/lib/hooks/scan-admin/use-tab-navigation.js +70 -0
- package/lib/hooks/scan-admin/use-tab-navigation.js.map +1 -0
- package/lib/hooks/scan-admin/use-url-sync.d.ts +22 -0
- package/lib/hooks/scan-admin/use-url-sync.d.ts.map +1 -0
- package/lib/hooks/scan-admin/use-url-sync.js +252 -0
- package/lib/hooks/scan-admin/use-url-sync.js.map +1 -0
- package/lib/page-settings.d.ts +4 -0
- package/lib/page-settings.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/admin-dashboard.d.ts +1 -0
- package/lib/pages/admin-dashboard/admin-dashboard.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/admin-dashboard.js +23 -3
- package/lib/pages/admin-dashboard/admin-dashboard.js.map +1 -1
- package/lib/pages/admin-dashboard/publisher-admin.js +1 -1
- package/lib/pages/admin-dashboard/publisher-admin.js.map +1 -1
- package/lib/pages/admin-dashboard/publisher-revoke-dialog.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/publisher-revoke-dialog.js +1 -1
- package/lib/pages/admin-dashboard/publisher-revoke-dialog.js.map +1 -1
- package/lib/pages/admin-dashboard/scan-admin.d.ts +20 -0
- package/lib/pages/admin-dashboard/scan-admin.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/scan-admin.js +66 -0
- package/lib/pages/admin-dashboard/scan-admin.js.map +1 -0
- package/lib/pages/admin-dashboard/welcome.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/welcome.js +2 -1
- package/lib/pages/admin-dashboard/welcome.js.map +1 -1
- package/lib/pages/extension-detail/extension-detail-overview.d.ts.map +1 -1
- package/lib/pages/extension-detail/extension-detail-overview.js +9 -1
- package/lib/pages/extension-detail/extension-detail-overview.js.map +1 -1
- package/lib/pages/extension-detail/extension-detail-reviews.d.ts.map +1 -1
- package/lib/pages/extension-detail/extension-detail-reviews.js +67 -18
- package/lib/pages/extension-detail/extension-detail-reviews.js.map +1 -1
- package/lib/pages/extension-detail/extension-detail.js +2 -2
- package/lib/pages/extension-detail/extension-detail.js.map +1 -1
- package/lib/pages/extension-detail/extension-rating-stars.d.ts +2 -2
- package/lib/pages/extension-detail/extension-rating-stars.d.ts.map +1 -1
- package/lib/pages/extension-detail/extension-rating-stars.js +1 -1
- package/lib/pages/extension-detail/extension-rating-stars.js.map +1 -1
- package/lib/pages/extension-list/extension-list-item.js +2 -2
- package/lib/pages/extension-list/extension-list-item.js.map +1 -1
- package/lib/pages/user/user-namespace-extension-list-item.d.ts.map +1 -1
- package/lib/pages/user/user-namespace-extension-list-item.js +23 -9
- package/lib/pages/user/user-namespace-extension-list-item.js.map +1 -1
- package/lib/pages/user/user-publisher-agreement.d.ts.map +1 -1
- package/lib/pages/user/user-publisher-agreement.js +34 -13
- package/lib/pages/user/user-publisher-agreement.js.map +1 -1
- package/lib/pages/user/user-settings-profile.d.ts.map +1 -1
- package/lib/pages/user/user-settings-profile.js +10 -5
- package/lib/pages/user/user-settings-profile.js.map +1 -1
- package/lib/pages/user/user-settings-tokens.d.ts.map +1 -1
- package/lib/pages/user/user-settings-tokens.js +13 -5
- package/lib/pages/user/user-settings-tokens.js.map +1 -1
- package/package.json +10 -9
- package/src/components/button-with-progress.tsx +2 -1
- package/src/components/sanitized-markdown.tsx +81 -1
- package/src/components/scan-admin/common/auto-refresh.tsx +79 -0
- package/src/components/scan-admin/common/conditional-tooltip.tsx +74 -0
- package/src/components/scan-admin/common/file-table.tsx +508 -0
- package/src/components/scan-admin/common/index.ts +18 -0
- package/src/components/scan-admin/common/tab-panel.tsx +42 -0
- package/src/components/scan-admin/common/utils.ts +48 -0
- package/src/components/scan-admin/dialogs/file-dialog.tsx +137 -0
- package/src/components/scan-admin/dialogs/index.ts +15 -0
- package/src/components/scan-admin/dialogs/quarantine-dialog.tsx +270 -0
- package/src/components/scan-admin/index.ts +52 -0
- package/src/components/scan-admin/scan-card/index.ts +20 -0
- package/src/components/scan-admin/scan-card/scan-card-content.tsx +457 -0
- package/src/components/scan-admin/scan-card/scan-card-expand-strip-badges.tsx +186 -0
- package/src/components/scan-admin/scan-card/scan-card-expand-strip.tsx +104 -0
- package/src/components/scan-admin/scan-card/scan-card-expanded-content.tsx +262 -0
- package/src/components/scan-admin/scan-card/scan-card-header.tsx +176 -0
- package/src/components/scan-admin/scan-card/scan-card.tsx +152 -0
- package/src/components/scan-admin/scan-card/scan-detail-card.tsx +144 -0
- package/src/components/scan-admin/scan-card/utils.ts +199 -0
- package/src/components/scan-admin/tab-contents/allow-list-tab-content.tsx +119 -0
- package/src/components/scan-admin/tab-contents/auto-rejected-tab-content.tsx +106 -0
- package/src/components/scan-admin/tab-contents/block-list-tab-content.tsx +119 -0
- package/src/components/scan-admin/tab-contents/index.ts +18 -0
- package/src/components/scan-admin/tab-contents/quarantined-tab-content.tsx +158 -0
- package/src/components/scan-admin/tab-contents/scans-tab-content.tsx +113 -0
- package/src/components/scan-admin/toolbars/counts-toolbar.tsx +262 -0
- package/src/components/scan-admin/toolbars/index.ts +16 -0
- package/src/components/scan-admin/toolbars/search-toolbar.tsx +255 -0
- package/src/components/scan-admin/toolbars/tab-toolbar.tsx +56 -0
- package/src/context/scan-admin/index.ts +43 -0
- package/src/context/scan-admin/scan-actions.ts +87 -0
- package/src/context/scan-admin/scan-api-actions.ts +137 -0
- package/src/context/scan-admin/scan-api-effects.ts +491 -0
- package/src/context/scan-admin/scan-context-types.ts +102 -0
- package/src/context/scan-admin/scan-context.tsx +123 -0
- package/src/context/scan-admin/scan-helpers.ts +63 -0
- package/src/context/scan-admin/scan-reducer.ts +321 -0
- package/src/context/scan-admin/scan-types.ts +337 -0
- package/src/default/page-settings.tsx +3 -0
- package/src/default/theme.tsx +102 -13
- package/src/extension-registry-service.ts +216 -1
- package/src/extension-registry-types.ts +157 -0
- package/src/hooks/scan-admin/index.ts +48 -0
- package/src/hooks/scan-admin/use-auto-rejected-tab.ts +85 -0
- package/src/hooks/scan-admin/use-dialogs.ts +83 -0
- package/src/hooks/scan-admin/use-file-list-tab.ts +149 -0
- package/src/hooks/scan-admin/use-pagination.ts +90 -0
- package/src/hooks/scan-admin/use-quarantined-tab.ts +138 -0
- package/src/hooks/scan-admin/use-scan-card-state.ts +73 -0
- package/src/hooks/scan-admin/use-scan-filters.ts +83 -0
- package/src/hooks/scan-admin/use-scans-tab.ts +92 -0
- package/src/hooks/scan-admin/use-search.ts +54 -0
- package/src/hooks/scan-admin/use-tab-navigation.ts +82 -0
- package/src/hooks/scan-admin/use-url-sync.ts +293 -0
- package/src/page-settings.ts +4 -0
- package/src/pages/admin-dashboard/admin-dashboard.tsx +26 -2
- package/src/pages/admin-dashboard/publisher-admin.tsx +1 -1
- package/src/pages/admin-dashboard/publisher-revoke-dialog.tsx +2 -1
- package/src/pages/admin-dashboard/scan-admin.tsx +109 -0
- package/src/pages/admin-dashboard/welcome.tsx +1 -0
- package/src/pages/extension-detail/extension-detail-overview.tsx +16 -2
- package/src/pages/extension-detail/extension-detail-reviews.tsx +116 -30
- package/src/pages/extension-detail/extension-detail.tsx +2 -2
- package/src/pages/extension-detail/extension-rating-stars.tsx +2 -2
- package/src/pages/extension-list/extension-list-item.tsx +2 -2
- package/src/pages/user/user-namespace-extension-list-item.tsx +38 -13
- package/src/pages/user/user-publisher-agreement.tsx +30 -11
- package/src/pages/user/user-settings-profile.tsx +10 -6
- package/src/pages/user/user-settings-tokens.tsx +15 -6
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 Contributors to the Eclipse Foundation
|
|
3
|
+
*
|
|
4
|
+
* See the NOTICE file(s) distributed with this work for additional
|
|
5
|
+
* information regarding copyright ownership.
|
|
6
|
+
*
|
|
7
|
+
* This program and the accompanying materials are made available under the
|
|
8
|
+
* terms of the Eclipse Public License 2.0 which is available at
|
|
9
|
+
* https://www.eclipse.org/legal/epl-2.0
|
|
10
|
+
*
|
|
11
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
12
|
+
********************************************************************************/
|
|
13
|
+
import React from 'react';
|
|
14
|
+
import { Box, Typography, Link, IconButton, Tooltip } from '@mui/material';
|
|
15
|
+
import { Check as CheckIcon, Warning as WarningAmberIcon, } from '@mui/icons-material';
|
|
16
|
+
import { ConditionalTooltip, formatDateTime, formatDuration } from '../common';
|
|
17
|
+
import { useTheme } from '@mui/material/styles';
|
|
18
|
+
import { isRunning, hasDownload, getFileName, } from './utils';
|
|
19
|
+
/**
|
|
20
|
+
* Content section of the ScanCard containing:
|
|
21
|
+
* - Publisher, Version, Download (Row 2)
|
|
22
|
+
* - Scan Start, Scan End, Duration, Decision Status (Row 3)
|
|
23
|
+
* - Checkbox for selection
|
|
24
|
+
*/
|
|
25
|
+
export const ScanCardContent = ({ scan, showCheckbox, checked, onCheckboxChange, liveDuration, }) => {
|
|
26
|
+
const theme = useTheme();
|
|
27
|
+
const [isCheckboxHovering, setIsCheckboxHovering] = React.useState(false);
|
|
28
|
+
return (React.createElement(React.Fragment, null,
|
|
29
|
+
React.createElement(Box, { sx: { gridRow: '2', gridColumn: '1' } }),
|
|
30
|
+
React.createElement(Box, { sx: { gridRow: '2', gridColumn: '2', minWidth: 0 } },
|
|
31
|
+
React.createElement(Typography, { variant: 'caption', color: 'text.secondary', display: 'block', sx: {
|
|
32
|
+
overflow: 'hidden',
|
|
33
|
+
textOverflow: 'ellipsis',
|
|
34
|
+
whiteSpace: 'nowrap',
|
|
35
|
+
} }, "Publisher"),
|
|
36
|
+
React.createElement(ConditionalTooltip, { title: scan.publisher, arrow: true },
|
|
37
|
+
React.createElement(Box, { sx: {
|
|
38
|
+
overflow: 'hidden',
|
|
39
|
+
textOverflow: 'ellipsis',
|
|
40
|
+
whiteSpace: 'nowrap',
|
|
41
|
+
} },
|
|
42
|
+
React.createElement(Link, { href: scan.publisherUrl || undefined, target: '_blank', rel: 'noopener noreferrer', variant: 'body2', sx: {
|
|
43
|
+
overflow: 'hidden',
|
|
44
|
+
textOverflow: 'ellipsis',
|
|
45
|
+
whiteSpace: 'nowrap',
|
|
46
|
+
display: 'block',
|
|
47
|
+
} }, scan.publisher)))),
|
|
48
|
+
React.createElement(Box, { sx: { gridRow: '2', gridColumn: '3', minWidth: 0 } },
|
|
49
|
+
React.createElement(Typography, { variant: 'caption', color: 'text.secondary', display: 'block', sx: {
|
|
50
|
+
overflow: 'hidden',
|
|
51
|
+
textOverflow: 'ellipsis',
|
|
52
|
+
whiteSpace: 'nowrap',
|
|
53
|
+
} }, "Version"),
|
|
54
|
+
React.createElement(ConditionalTooltip, { title: scan.version, arrow: true },
|
|
55
|
+
React.createElement(Typography, { variant: 'body2', sx: {
|
|
56
|
+
display: 'block',
|
|
57
|
+
overflow: 'hidden',
|
|
58
|
+
textOverflow: 'ellipsis',
|
|
59
|
+
whiteSpace: 'nowrap',
|
|
60
|
+
} }, scan.version))),
|
|
61
|
+
React.createElement(Box, { sx: { gridRow: '2', gridColumn: '4', minWidth: 0 } },
|
|
62
|
+
React.createElement(Typography, { variant: 'caption', color: 'text.secondary', display: 'block', sx: {
|
|
63
|
+
overflow: 'hidden',
|
|
64
|
+
textOverflow: 'ellipsis',
|
|
65
|
+
whiteSpace: 'nowrap',
|
|
66
|
+
} }, "Download"),
|
|
67
|
+
isRunning(scan.status) ? (React.createElement(Typography, { variant: 'body2', color: 'text.disabled' }, "N/A")) : hasDownload(scan) && scan.downloadUrl ? (React.createElement(Box, { sx: { display: 'flex', alignItems: 'center', gap: 0.5, minWidth: 0 } },
|
|
68
|
+
scan.status === 'QUARANTINED' && (React.createElement(Tooltip, { title: 'Potentially malicious', arrow: true, disableInteractive: true, PopperProps: {
|
|
69
|
+
disablePortal: true,
|
|
70
|
+
sx: { pointerEvents: 'none' },
|
|
71
|
+
} },
|
|
72
|
+
React.createElement(WarningAmberIcon, { sx: {
|
|
73
|
+
fontSize: 16,
|
|
74
|
+
color: theme.palette.quarantined.dark,
|
|
75
|
+
flexShrink: 0,
|
|
76
|
+
} }))),
|
|
77
|
+
React.createElement(ConditionalTooltip, { title: getFileName(scan.downloadUrl), arrow: true },
|
|
78
|
+
React.createElement(Link, { href: scan.downloadUrl, variant: 'body2', sx: {
|
|
79
|
+
overflow: 'hidden',
|
|
80
|
+
textOverflow: 'ellipsis',
|
|
81
|
+
whiteSpace: 'nowrap',
|
|
82
|
+
minWidth: 0,
|
|
83
|
+
display: 'block',
|
|
84
|
+
fontSize: '0.875rem',
|
|
85
|
+
} }, getFileName(scan.downloadUrl))))) : (React.createElement(Typography, { variant: 'body2', color: 'text.disabled' }, "N/A"))),
|
|
86
|
+
React.createElement(Box, { sx: { gridRow: '2', gridColumn: '5', display: 'flex', alignItems: 'center', justifyContent: 'flex-end', minWidth: 0 } }, showCheckbox && (React.createElement(IconButton, { onClick: () => onCheckboxChange === null || onCheckboxChange === void 0 ? void 0 : onCheckboxChange(scan.id, !checked), onMouseEnter: () => setIsCheckboxHovering(true), onMouseLeave: () => setIsCheckboxHovering(false), disableRipple: true, sx: {
|
|
87
|
+
padding: 0,
|
|
88
|
+
width: 36,
|
|
89
|
+
height: 36,
|
|
90
|
+
backgroundColor: 'transparent',
|
|
91
|
+
} },
|
|
92
|
+
React.createElement(Box, { className: 'checkbox-circle', sx: {
|
|
93
|
+
position: 'relative',
|
|
94
|
+
width: 36,
|
|
95
|
+
height: 36,
|
|
96
|
+
display: 'flex',
|
|
97
|
+
alignItems: 'center',
|
|
98
|
+
justifyContent: 'center',
|
|
99
|
+
} },
|
|
100
|
+
React.createElement(Box, { className: 'checkbox-circle-outline', sx: {
|
|
101
|
+
position: 'absolute',
|
|
102
|
+
width: 36,
|
|
103
|
+
height: 36,
|
|
104
|
+
borderRadius: '50%',
|
|
105
|
+
border: checked ? 'none' : `2px solid ${isCheckboxHovering ? theme.palette.selected.border : theme.palette.scanBackground.light}`,
|
|
106
|
+
backgroundColor: checked
|
|
107
|
+
? 'secondary.main'
|
|
108
|
+
: isCheckboxHovering
|
|
109
|
+
? theme.palette.selected.background
|
|
110
|
+
: 'transparent',
|
|
111
|
+
transition: 'border-color 0.2s, background-color 0.2s',
|
|
112
|
+
} }),
|
|
113
|
+
React.createElement(CheckIcon, { className: 'checkbox-icon', sx: {
|
|
114
|
+
fontSize: 24,
|
|
115
|
+
color: checked
|
|
116
|
+
? 'white'
|
|
117
|
+
: isCheckboxHovering
|
|
118
|
+
? theme.palette.selected.border
|
|
119
|
+
: theme.palette.scanBackground.light,
|
|
120
|
+
position: 'relative',
|
|
121
|
+
zIndex: 1,
|
|
122
|
+
transition: 'color 0.2s',
|
|
123
|
+
} }))))),
|
|
124
|
+
React.createElement(Box, { sx: { gridRow: '3', gridColumn: '1' } }),
|
|
125
|
+
React.createElement(Box, { sx: { gridRow: '3', gridColumn: '2', minWidth: 0 } },
|
|
126
|
+
React.createElement(Typography, { variant: 'caption', color: 'text.secondary', display: 'block', sx: {
|
|
127
|
+
overflow: 'hidden',
|
|
128
|
+
textOverflow: 'ellipsis',
|
|
129
|
+
whiteSpace: 'nowrap',
|
|
130
|
+
} }, "Scan Start"),
|
|
131
|
+
React.createElement(ConditionalTooltip, { title: formatDateTime(scan.dateScanStarted), arrow: true },
|
|
132
|
+
React.createElement(Typography, { variant: 'body2', sx: {
|
|
133
|
+
display: 'block',
|
|
134
|
+
fontSize: '0.8rem',
|
|
135
|
+
overflow: 'hidden',
|
|
136
|
+
textOverflow: 'ellipsis',
|
|
137
|
+
whiteSpace: 'nowrap',
|
|
138
|
+
} }, formatDateTime(scan.dateScanStarted)))),
|
|
139
|
+
React.createElement(Box, { sx: { gridRow: '3', gridColumn: '3', minWidth: 0 } },
|
|
140
|
+
React.createElement(Typography, { variant: 'caption', color: 'text.secondary', display: 'block', sx: {
|
|
141
|
+
overflow: 'hidden',
|
|
142
|
+
textOverflow: 'ellipsis',
|
|
143
|
+
whiteSpace: 'nowrap',
|
|
144
|
+
} }, "Scan End"),
|
|
145
|
+
isRunning(scan.status) ? (React.createElement(ConditionalTooltip, { title: `${scan.status}...`, arrow: true },
|
|
146
|
+
React.createElement(Typography, { variant: 'body2', sx: {
|
|
147
|
+
display: 'block',
|
|
148
|
+
background: theme.palette.gray.gradient,
|
|
149
|
+
backgroundSize: '200% 100%',
|
|
150
|
+
backgroundClip: 'text',
|
|
151
|
+
WebkitBackgroundClip: 'text',
|
|
152
|
+
color: 'transparent',
|
|
153
|
+
animation: 'shimmer 2s infinite',
|
|
154
|
+
'@keyframes shimmer': {
|
|
155
|
+
'0%': { backgroundPosition: '200% 0' },
|
|
156
|
+
'100%': { backgroundPosition: '-200% 0' },
|
|
157
|
+
},
|
|
158
|
+
overflow: 'hidden',
|
|
159
|
+
textOverflow: 'ellipsis',
|
|
160
|
+
whiteSpace: 'nowrap',
|
|
161
|
+
} },
|
|
162
|
+
scan.status,
|
|
163
|
+
"..."))) : scan.dateScanEnded ? (React.createElement(ConditionalTooltip, { title: formatDateTime(scan.dateScanEnded), arrow: true },
|
|
164
|
+
React.createElement(Typography, { variant: 'body2', sx: {
|
|
165
|
+
display: 'block',
|
|
166
|
+
fontSize: '0.8rem',
|
|
167
|
+
overflow: 'hidden',
|
|
168
|
+
textOverflow: 'ellipsis',
|
|
169
|
+
whiteSpace: 'nowrap',
|
|
170
|
+
} }, formatDateTime(scan.dateScanEnded)))) : (React.createElement(Typography, { variant: 'body2', color: 'text.disabled' }, "N/A"))),
|
|
171
|
+
React.createElement(Box, { sx: { gridRow: '3', gridColumn: '4', minWidth: 0 } },
|
|
172
|
+
React.createElement(Typography, { variant: 'caption', color: 'text.secondary', display: 'block', sx: {
|
|
173
|
+
overflow: 'hidden',
|
|
174
|
+
textOverflow: 'ellipsis',
|
|
175
|
+
whiteSpace: 'nowrap',
|
|
176
|
+
} }, "Scan Duration"),
|
|
177
|
+
isRunning(scan.status) ? (React.createElement(ConditionalTooltip, { title: liveDuration, arrow: true },
|
|
178
|
+
React.createElement(Typography, { variant: 'body2', sx: {
|
|
179
|
+
display: 'block',
|
|
180
|
+
background: theme.palette.gray.gradient,
|
|
181
|
+
backgroundSize: '200% 100%',
|
|
182
|
+
backgroundClip: 'text',
|
|
183
|
+
WebkitBackgroundClip: 'text',
|
|
184
|
+
color: 'transparent',
|
|
185
|
+
animation: 'shimmer 2s infinite',
|
|
186
|
+
'@keyframes shimmer': {
|
|
187
|
+
'0%': { backgroundPosition: '200% 0' },
|
|
188
|
+
'100%': { backgroundPosition: '-200% 0' },
|
|
189
|
+
},
|
|
190
|
+
overflow: 'hidden',
|
|
191
|
+
textOverflow: 'ellipsis',
|
|
192
|
+
whiteSpace: 'nowrap',
|
|
193
|
+
} }, liveDuration))) : (React.createElement(ConditionalTooltip, { title: formatDuration(scan.dateScanStarted, scan.dateScanEnded || undefined), arrow: true },
|
|
194
|
+
React.createElement(Typography, { variant: 'body2', sx: {
|
|
195
|
+
display: 'block',
|
|
196
|
+
overflow: 'hidden',
|
|
197
|
+
textOverflow: 'ellipsis',
|
|
198
|
+
whiteSpace: 'nowrap',
|
|
199
|
+
} }, formatDuration(scan.dateScanStarted, scan.dateScanEnded || undefined))))),
|
|
200
|
+
scan.status === 'QUARANTINED' && scan.adminDecision && (React.createElement(Box, { sx: {
|
|
201
|
+
gridRow: '3',
|
|
202
|
+
gridColumn: '5',
|
|
203
|
+
display: 'flex',
|
|
204
|
+
justifyContent: 'flex-end',
|
|
205
|
+
alignSelf: 'end',
|
|
206
|
+
minWidth: 0,
|
|
207
|
+
} },
|
|
208
|
+
React.createElement(Tooltip, { title: `Decided by ${scan.adminDecision.decidedBy} on ${formatDateTime(scan.adminDecision.dateDecided)}`, arrow: true, disableInteractive: true, PopperProps: {
|
|
209
|
+
disablePortal: true,
|
|
210
|
+
sx: { pointerEvents: 'none' },
|
|
211
|
+
} },
|
|
212
|
+
React.createElement(Typography, { variant: 'h6', sx: {
|
|
213
|
+
fontWeight: 700,
|
|
214
|
+
color: scan.adminDecision.decision.toLowerCase() === 'allowed' ? theme.palette.allowed : theme.palette.blocked,
|
|
215
|
+
whiteSpace: 'nowrap',
|
|
216
|
+
cursor: 'help',
|
|
217
|
+
} }, scan.adminDecision.decision.toLowerCase() === 'allowed' ? 'ALLOWED' : 'BLOCKED')))),
|
|
218
|
+
scan.status === 'QUARANTINED' && !scan.adminDecision && (React.createElement(Box, { sx: {
|
|
219
|
+
gridRow: '3',
|
|
220
|
+
gridColumn: '5',
|
|
221
|
+
display: 'flex',
|
|
222
|
+
justifyContent: 'flex-end',
|
|
223
|
+
alignSelf: 'end',
|
|
224
|
+
minWidth: 0,
|
|
225
|
+
} },
|
|
226
|
+
React.createElement(Typography, { variant: 'h6', sx: {
|
|
227
|
+
fontWeight: 700,
|
|
228
|
+
color: theme.palette.review,
|
|
229
|
+
whiteSpace: 'nowrap',
|
|
230
|
+
} }, "NEEDS REVIEW")))));
|
|
231
|
+
};
|
|
232
|
+
//# sourceMappingURL=scan-card-content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan-card-content.js","sourceRoot":"","sources":["../../../../src/components/scan-admin/scan-card/scan-card-content.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 Contributors to the Eclipse Foundation
|
|
3
|
+
*
|
|
4
|
+
* See the NOTICE file(s) distributed with this work for additional
|
|
5
|
+
* information regarding copyright ownership.
|
|
6
|
+
*
|
|
7
|
+
* This program and the accompanying materials are made available under the
|
|
8
|
+
* terms of the Eclipse Public License 2.0 which is available at
|
|
9
|
+
* https://www.eclipse.org/legal/epl-2.0
|
|
10
|
+
*
|
|
11
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
12
|
+
********************************************************************************/
|
|
13
|
+
import React from 'react';
|
|
14
|
+
import { DetailBadge } from './utils';
|
|
15
|
+
interface ScanCardExpandStripBadgesProps {
|
|
16
|
+
badges: DetailBadge[];
|
|
17
|
+
containerWidth: number;
|
|
18
|
+
maxWidthPercent?: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Renders badges with overflow handling - shows as many badges as fit
|
|
22
|
+
* within the available width, plus a "+ X more" indicator for hidden badges.
|
|
23
|
+
*/
|
|
24
|
+
export declare const ScanCardExpandStripBadges: React.FC<ScanCardExpandStripBadgesProps>;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=scan-card-expand-strip-badges.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan-card-expand-strip-badges.d.ts","sourceRoot":"","sources":["../../../../src/components/scan-admin/scan-card/scan-card-expand-strip-badges.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;kFAWkF;AAElF,OAAO,KAAuD,MAAM,OAAO,CAAC;AAG5E,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,UAAU,8BAA8B;IACpC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAAC,8BAA8B,CA6J9E,CAAC"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 Contributors to the Eclipse Foundation
|
|
3
|
+
*
|
|
4
|
+
* See the NOTICE file(s) distributed with this work for additional
|
|
5
|
+
* information regarding copyright ownership.
|
|
6
|
+
*
|
|
7
|
+
* This program and the accompanying materials are made available under the
|
|
8
|
+
* terms of the Eclipse Public License 2.0 which is available at
|
|
9
|
+
* https://www.eclipse.org/legal/epl-2.0
|
|
10
|
+
*
|
|
11
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
12
|
+
********************************************************************************/
|
|
13
|
+
import React, { useRef, useEffect, useState, useLayoutEffect } from 'react';
|
|
14
|
+
import { Box, Chip, Typography } from '@mui/material';
|
|
15
|
+
import { useTheme, alpha } from '@mui/material/styles';
|
|
16
|
+
/**
|
|
17
|
+
* Renders badges with overflow handling - shows as many badges as fit
|
|
18
|
+
* within the available width, plus a "+ X more" indicator for hidden badges.
|
|
19
|
+
*/
|
|
20
|
+
export const ScanCardExpandStripBadges = ({ badges, containerWidth, maxWidthPercent = 0.45, }) => {
|
|
21
|
+
const theme = useTheme();
|
|
22
|
+
const measureRef = useRef(null);
|
|
23
|
+
const [visibleCount, setVisibleCount] = useState(null);
|
|
24
|
+
const calculateVisibleBadges = () => {
|
|
25
|
+
if (!measureRef.current || badges.length === 0 || containerWidth <= 0) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const availableWidth = containerWidth * maxWidthPercent;
|
|
29
|
+
const chips = measureRef.current.querySelectorAll('.measure-chip');
|
|
30
|
+
if (chips.length === 0) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
// 65px width for "+ X more" text
|
|
34
|
+
const moreIndicatorWidth = 65;
|
|
35
|
+
const gap = 4; // 0.5 spacing unit = 4px
|
|
36
|
+
let totalWidth = 0;
|
|
37
|
+
let count = 0;
|
|
38
|
+
for (let index = 0; index < chips.length; index++) {
|
|
39
|
+
const chip = chips[index];
|
|
40
|
+
const chipWidth = chip.offsetWidth;
|
|
41
|
+
const widthWithGap = chipWidth + (index > 0 ? gap : 0);
|
|
42
|
+
// Check if this chip fits
|
|
43
|
+
// If not all badges fit, we need room for the "+ X more" indicator
|
|
44
|
+
const remainingBadges = badges.length - (index + 1);
|
|
45
|
+
const needsMoreIndicator = remainingBadges > 0;
|
|
46
|
+
const reservedWidth = needsMoreIndicator ? moreIndicatorWidth + gap : 0;
|
|
47
|
+
if (totalWidth + widthWithGap + reservedWidth <= availableWidth) {
|
|
48
|
+
totalWidth += widthWithGap;
|
|
49
|
+
count++;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
setVisibleCount(count);
|
|
56
|
+
};
|
|
57
|
+
// Use layoutEffect to measure before paint (to avoid flicker)
|
|
58
|
+
useLayoutEffect(() => {
|
|
59
|
+
calculateVisibleBadges();
|
|
60
|
+
}, [badges, containerWidth]);
|
|
61
|
+
// Recalculate when container width changes
|
|
62
|
+
useEffect(() => {
|
|
63
|
+
calculateVisibleBadges();
|
|
64
|
+
}, [containerWidth]);
|
|
65
|
+
// Use all badges until calculation completes
|
|
66
|
+
const effectiveVisibleCount = visibleCount !== null && visibleCount !== void 0 ? visibleCount : badges.length;
|
|
67
|
+
const visibleBadges = badges.slice(0, effectiveVisibleCount);
|
|
68
|
+
const hiddenCount = badges.length - effectiveVisibleCount;
|
|
69
|
+
const chipStyles = (badge) => (Object.assign({ height: '20px', fontSize: '0.7rem', flexShrink: 0 }, (badge.type === 'error' ? {
|
|
70
|
+
// Error badges: solid grey for required, striped for optional
|
|
71
|
+
// Must set backgroundColor to 'transparent' when using striped background to override Chip defaults
|
|
72
|
+
backgroundColor: badge.isEnforced ? theme.palette.errorStatus.dark : 'transparent',
|
|
73
|
+
color: theme.palette.errorStatus.light,
|
|
74
|
+
background: !badge.isEnforced ? `${theme.palette.unenforced.stripe}, ${theme.palette.errorStatus.dark}` : undefined,
|
|
75
|
+
} : badge.type === 'threat' ? {
|
|
76
|
+
backgroundColor: badge.isEnforced ? theme.palette.quarantined.dark : 'transparent',
|
|
77
|
+
color: theme.palette.quarantined.light,
|
|
78
|
+
background: !badge.isEnforced ? `${theme.palette.unenforced.stripe}, ${theme.palette.quarantined.dark}` : undefined,
|
|
79
|
+
} : {
|
|
80
|
+
backgroundColor: badge.isEnforced ? theme.palette.rejected.dark : 'transparent',
|
|
81
|
+
color: theme.palette.rejected.light,
|
|
82
|
+
background: !badge.isEnforced ? `${theme.palette.unenforced.stripe}, ${theme.palette.rejected.dark}` : undefined,
|
|
83
|
+
})));
|
|
84
|
+
if (badges.length === 0) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
return (React.createElement(React.Fragment, null,
|
|
88
|
+
React.createElement(Box, { ref: measureRef, sx: {
|
|
89
|
+
position: 'absolute',
|
|
90
|
+
visibility: 'hidden',
|
|
91
|
+
pointerEvents: 'none',
|
|
92
|
+
display: 'flex',
|
|
93
|
+
alignItems: 'center',
|
|
94
|
+
gap: 0.5,
|
|
95
|
+
flexWrap: 'nowrap',
|
|
96
|
+
left: 0,
|
|
97
|
+
top: 0,
|
|
98
|
+
}, "aria-hidden": 'true' }, badges.map((badge, index) => (React.createElement(Chip, { key: `measure-${badge.label}-${index}`, className: 'measure-chip', label: badge.label, size: 'small', sx: chipStyles(badge) })))),
|
|
99
|
+
React.createElement(Box, { sx: {
|
|
100
|
+
display: 'flex',
|
|
101
|
+
alignItems: 'center',
|
|
102
|
+
gap: 0.5,
|
|
103
|
+
flexWrap: 'nowrap',
|
|
104
|
+
overflow: 'hidden',
|
|
105
|
+
maxWidth: `${maxWidthPercent * 100}%`,
|
|
106
|
+
minWidth: 0,
|
|
107
|
+
} },
|
|
108
|
+
visibleBadges.map((badge, index) => (React.createElement(Chip, { key: `${badge.label}-${index}`, label: badge.label, size: 'small', sx: chipStyles(badge) }))),
|
|
109
|
+
hiddenCount > 0 && (React.createElement(Typography, { variant: 'caption', sx: {
|
|
110
|
+
flexShrink: 0,
|
|
111
|
+
color: alpha(theme.palette.text.secondary, 0.8),
|
|
112
|
+
fontSize: '0.7rem',
|
|
113
|
+
fontWeight: 500,
|
|
114
|
+
whiteSpace: 'nowrap',
|
|
115
|
+
ml: 0.5,
|
|
116
|
+
} },
|
|
117
|
+
"+ ",
|
|
118
|
+
hiddenCount,
|
|
119
|
+
" more")))));
|
|
120
|
+
};
|
|
121
|
+
//# sourceMappingURL=scan-card-expand-strip-badges.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan-card-expand-strip-badges.js","sourceRoot":"","sources":["../../../../src/components/scan-admin/scan-card/scan-card-expand-strip-badges.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 Contributors to the Eclipse Foundation
|
|
3
|
+
*
|
|
4
|
+
* See the NOTICE file(s) distributed with this work for additional
|
|
5
|
+
* information regarding copyright ownership.
|
|
6
|
+
*
|
|
7
|
+
* This program and the accompanying materials are made available under the
|
|
8
|
+
* terms of the Eclipse Public License 2.0 which is available at
|
|
9
|
+
* https://www.eclipse.org/legal/epl-2.0
|
|
10
|
+
*
|
|
11
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
12
|
+
********************************************************************************/
|
|
13
|
+
import React from 'react';
|
|
14
|
+
import { DetailBadge } from './utils';
|
|
15
|
+
interface ScanCardExpandStripProps {
|
|
16
|
+
expanded: boolean;
|
|
17
|
+
onExpandClick: () => void;
|
|
18
|
+
badges: DetailBadge[];
|
|
19
|
+
collapseComplete: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Expandable strip at the bottom of the card
|
|
23
|
+
* Shows validationFailure/threat badges (click to expand/show detail cards)
|
|
24
|
+
*/
|
|
25
|
+
export declare const ScanCardExpandStrip: React.FC<ScanCardExpandStripProps>;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=scan-card-expand-strip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan-card-expand-strip.d.ts","sourceRoot":"","sources":["../../../../src/components/scan-admin/scan-card/scan-card-expand-strip.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;kFAWkF;AAElF,OAAO,KAAsC,MAAM,OAAO,CAAC;AAI3D,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtC,UAAU,wBAAwB;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;CAC7B;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAwElE,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 Contributors to the Eclipse Foundation
|
|
3
|
+
*
|
|
4
|
+
* See the NOTICE file(s) distributed with this work for additional
|
|
5
|
+
* information regarding copyright ownership.
|
|
6
|
+
*
|
|
7
|
+
* This program and the accompanying materials are made available under the
|
|
8
|
+
* terms of the Eclipse Public License 2.0 which is available at
|
|
9
|
+
* https://www.eclipse.org/legal/epl-2.0
|
|
10
|
+
*
|
|
11
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
12
|
+
********************************************************************************/
|
|
13
|
+
import React, { useRef, useEffect, useState } from 'react';
|
|
14
|
+
import { Box } from '@mui/material';
|
|
15
|
+
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
|
16
|
+
import { useTheme } from '@mui/material/styles';
|
|
17
|
+
import { ScanCardExpandStripBadges } from './scan-card-expand-strip-badges';
|
|
18
|
+
/**
|
|
19
|
+
* Expandable strip at the bottom of the card
|
|
20
|
+
* Shows validationFailure/threat badges (click to expand/show detail cards)
|
|
21
|
+
*/
|
|
22
|
+
export const ScanCardExpandStrip = ({ expanded, onExpandClick, badges, collapseComplete, }) => {
|
|
23
|
+
const theme = useTheme();
|
|
24
|
+
const [isHovering, setIsHovering] = useState(false);
|
|
25
|
+
const wrapperRef = useRef(null);
|
|
26
|
+
const [containerWidth, setContainerWidth] = useState(0);
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
const updateWidth = () => {
|
|
29
|
+
if (wrapperRef.current) {
|
|
30
|
+
setContainerWidth(wrapperRef.current.offsetWidth);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
updateWidth();
|
|
34
|
+
const resizeObserver = new ResizeObserver(() => {
|
|
35
|
+
updateWidth();
|
|
36
|
+
});
|
|
37
|
+
if (wrapperRef.current) {
|
|
38
|
+
resizeObserver.observe(wrapperRef.current);
|
|
39
|
+
}
|
|
40
|
+
return () => resizeObserver.disconnect();
|
|
41
|
+
}, []);
|
|
42
|
+
return (React.createElement(Box, { ref: wrapperRef, onClick: onExpandClick, onMouseEnter: () => setIsHovering(true), onMouseLeave: () => setIsHovering(false), sx: {
|
|
43
|
+
pb: 0,
|
|
44
|
+
pt: 0.5,
|
|
45
|
+
px: 5,
|
|
46
|
+
display: 'flex',
|
|
47
|
+
alignItems: 'center',
|
|
48
|
+
justifyContent: 'space-between',
|
|
49
|
+
cursor: 'pointer',
|
|
50
|
+
borderBottomRightRadius: expanded ? 0 : 8,
|
|
51
|
+
minHeight: 40,
|
|
52
|
+
backgroundColor: isHovering ? theme.palette.selected.hover : 'transparent',
|
|
53
|
+
transition: 'background-color 0.2s',
|
|
54
|
+
position: 'relative',
|
|
55
|
+
} },
|
|
56
|
+
React.createElement(Box, { sx: { flex: 1 } }),
|
|
57
|
+
React.createElement(Box, { sx: { display: 'flex', alignItems: 'center', justifyContent: 'center', position: 'absolute', left: '50%', transform: 'translateX(-50%)' } },
|
|
58
|
+
React.createElement(ExpandMoreIcon, { sx: {
|
|
59
|
+
fontSize: 36,
|
|
60
|
+
color: 'secondary.main',
|
|
61
|
+
transform: expanded ? 'rotate(180deg)' : 'rotate(0deg)',
|
|
62
|
+
transition: 'transform 0.3s',
|
|
63
|
+
} })),
|
|
64
|
+
!expanded && collapseComplete && (React.createElement(ScanCardExpandStripBadges, { badges: badges, containerWidth: containerWidth }))));
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=scan-card-expand-strip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan-card-expand-strip.js","sourceRoot":"","sources":["../../../../src/components/scan-admin/scan-card/scan-card-expand-strip.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 Contributors to the Eclipse Foundation
|
|
3
|
+
*
|
|
4
|
+
* See the NOTICE file(s) distributed with this work for additional
|
|
5
|
+
* information regarding copyright ownership.
|
|
6
|
+
*
|
|
7
|
+
* This program and the accompanying materials are made available under the
|
|
8
|
+
* terms of the Eclipse Public License 2.0 which is available at
|
|
9
|
+
* https://www.eclipse.org/legal/epl-2.0
|
|
10
|
+
*
|
|
11
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
12
|
+
********************************************************************************/
|
|
13
|
+
import React from 'react';
|
|
14
|
+
import { ScanResult } from '../../../context/scan-admin';
|
|
15
|
+
interface ScanCardExpandedContentProps {
|
|
16
|
+
scan: ScanResult;
|
|
17
|
+
expanded: boolean;
|
|
18
|
+
onCollapseComplete?: () => void;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The expanded content section showing threats, validation failures, and check results.
|
|
22
|
+
* Each item's enforcedFlag controls its individual striping effect.
|
|
23
|
+
*/
|
|
24
|
+
export declare const ScanCardExpandedContent: React.FC<ScanCardExpandedContentProps>;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=scan-card-expanded-content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan-card-expanded-content.d.ts","sourceRoot":"","sources":["../../../../src/components/scan-admin/scan-card/scan-card-expanded-content.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;kFAWkF;AAElF,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,UAAU,EAA0C,MAAM,6BAA6B,CAAC;AAIjG,UAAU,4BAA4B;IAClC,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;CACnC;AA4JD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CA6E1E,CAAC"}
|