Conversation
Addresses #1418 by implementing content-item level citations (Chicago and BibTeX) and enhancing metadata visibility for staff users. This PR also includes architectural cleanups for bitmap handling and utility migrations. Citation & Metadata Features New Citation Component: Added ContentItemCitation supporting Chicago and BibTeX formats. Copy-to-Clipboard: Integrated a configurable button with navigator.clipboard and DOMParser for clean plain-text extraction. Conditional Visibility: Staff get full access to metadata grids; non-staff view is restricted to "Cite as..." (temporary limitation). UI & Component Updates ContentItemModal: Introduced a new modal with 'card' and 'transcript' modes, featuring transcript splitting via image.lineBreaks. Storybook: Added comprehensive stories with MSW handlers for media sources and mock data providers. Technical Improvements Bitmap Handling: Formalized DecodedBitmap types and added getPlansFromDecodedBitmap to map binary data to human-readable membership plans. Utility Migration (#1877): Replaced manual Buffer usage with the base64BytesToBigInt utility for improved performance and type safety. --------- Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Replace the standalone fullscreen toggle with a controls bar that includes a "Show Regions" checkbox, and import BFormCheckbox. Add a reactive showOverlays ref and a watcher to toggle a new .overlay.hidden class on existing overlays; ensure new overlays respect the showOverlays state. Update overlay transition rules to include opacity and add styles for the controls bar and hidden overlays. Add i18n key "showRegions". These changes let users show/hide region overlays and improve controls styling.
Trim the inputDescription to 1000 characters before passing it to exporterService.create to avoid oversized payloads or backend validation errors. Uses this.inputDescription.slice(0, 1000) for the description field.
* solved import issues * uid -> id * filter facet updated * histogram slider typing * interface fixes * ongoing issues * timeline fixed * fixed filter monitor * wiki image URL * refactor: update interface visibility and improve label checks in Topic model * removing deprecated interface
* Add mock data and stories for Autocomplete component * added mention pill * updated ux
* Versions bump and legacy updates * refactored suggestion model to fix collection suggestions
…prevent initialization order errors in production build
* add notifications in Insitution access app component * Use URL token, show notifications, and i18n Prefill the magic-link token from the URL and wire it into the MagicLinkForm (MagicLink.vue -> MagicLinkForm.vue). Add a token prop to the form and initialize form state from it. Replace alert UX in Login.vue with notification store calls and an isEmailConfirmed flag to toggle a confirmation Card and message. Add an i18n entry for the verify button label and related messages; improve error logging and user-facing error notifications. * Create Reviewer.vue * Add BSearchInputForm component and stories Introduce a new BSearchInputForm Vue component and corresponding Storybook stories. The component wraps a BFormInput with an attached search button, uses Vuelidate for conditional validation (required, minLength, maxLength based on props), emits a 'submit' event with the query, and exposes its validation instance. Default props (debounce, placeholder, min/max lengths, search button label) and scoped input styles are provided. The Storybook file adds interactive controls and four example stories (Default, WithMinLength, Optional, FastDebounce) to demonstrate usage and parameters. * Update ListOfFindResponseItems.vue * Update SpecialMembershipRequestReviewItem.vue * Update App.vue * Update main.ts * Add search, sorting & toggle modal to requests view Split the layout into a main list and a sidebar and add search/sort controls and a status-toggle UI to the special membership requests view. Replaced the inline params with a computed userSpecialMembershipRequestsReviewsServiceParams (now includes limit, order_by and q driven by reactive refs), added BSearchInputForm and an order-by dropdown in the header, and wired performSearch to update the query. Each SpecialMembershipRequestReviewItem now exposes an actions slot with a "Toggle Status" button, backed by ToggleSpecialMembershipRequestStatusModal plus show/hide and itemToUpdate state. Also added related imports, i18n keys, and a Reviewer card in the sidebar. Note: default limit changed from 10 to 2 in the new params. * Create ToggleSpecialMembershipRequestStatusModal.vue * Add UserDropdown & institution access changes Introduce a new UserDropdown component and use it in the institutions-access header (replacing the old Reviewer UI). Add InstitutionalAccessGroup constant and a userHasInstitutionAccess getter to the user store to detect institution access. Expose frontend version/branch/revision on window in main.ts for use in the dropdown, and add a small router debug log for JWT groups. Miscellaneous: adjust Card box-shadow, rename z-index class, remove Reviewer component and its usages, log successful magic-link authentication, fix some template formatting/whitespace in recommendation panels, and rename a query param from q to term in institutions-access view service params. --------- Co-authored-by: Daniele Guido <1181642+danieleguido@users.noreply.github.com>
* handle new types of messages * less reasoning/tool noise * Enhance tooltip functionality and styling in Barista components
add corresponding story to test plurals and remove serif text. Adapt initialHeight in Ellipsis to match font size change
Refactor SearchFacets and HistogramSlider to migrate from FilterRange to FilterDynamicRange, supporting statistic-driven dynamic range facets (such as contentLength). Update prop names and add new bindings in SearchFacets. Rewrite FilterRange and HistogramSlider to script-setup Composition API, modernizing renders, i18n usage, state management, and D3 logic. HistogramSlider now features improved bucket sorting, full-width interactive zones, tooltip fixes, and clearer max-value labels. Tooltip and range logic preserve bucket bounds for dynamic facets. Various UI, accessibility, and template details addressed. Fixes issue #1889
…en (#1902) Feature auto-authenticate on magic link token, redirect to index on success Changes * add text-color-inherit and gap-N class CSS * TermsOfUse is not always available * add Role slot in UserDropdown * Add default Slot in FeathersErrorManager to add custom description * add action slot to add extra action buttons next tot the submit button * Add role slot and logout handler to Header Expose a role slot in the UserDropdown to display the institution contact point (i18n key `institutionContactpoint` -> "Reviewer") and wire a local logout() that calls userStore.logout via the component's @logout event * enable logout and redirect --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: danieleguido <1181642+danieleguido@users.noreply.github.com> Agent-Logs-Url: https://github.com/impresso/impresso-frontend/sessions/b69ea5a1-5522-44a9-a46a-6c314c474df7
…equest interfaces (#1904)
Import NewCollectionRequest and cast the payload passed to collectionsItemsService.create in CreateCollectionModal.vue to ensure the request matches the generated API type and avoid TypeScript type errors
* Update Index.vue * Add InfoButton story and refactor props Add a Storybook file for InfoButton with Default and WithSlot examples. Refactor InfoButton.vue to export InfoButtonProps, switch to defineProps<T>() with withDefaults for stronger typing, adjust offsetOptions typing and default, import Side as a type from @floating-ui/vue, and update faq import path. Also expose a default slot in the template to allow custom popover content and perform small import/cleanup changes. * update content access * flatten down the request access button * Add success/already-requested UI to request modal Show informational alerts when the user already requested access or after a successful submission, and hide the form in those cases. Track isSuccess and isAlreadyRequested state (computed) and treat a 409 conflict from the API as a success to reflect existing requests * Normalize content item special-membership bits Refactor content access handling and add plan bit metadata. - Replace legacy common-bit logic with explicit bit-position computations: extract user and content bitmap bit positions, compute normalized special-membership bit positions (subtracting plan bits offset), and expose contentItemRequiresSpecialMembershipAccess and accessLevel computed properties. - Update ContentItemAccessButton usage to accept normalized special-membership positions - Remove several old helpers and bitstring/plan conversion code and eliminate stray junk line. Probably more to be removed. - constants.ts: add PlanResearcherPlus entry (reserved for future use), introduce PlanBitPositions and MaxPlanBitPosition, and annotate reserved values. These changes formalize plan-bit offsets and make special-membership bit handling explicit so UI components receive normalized bit indexes. * Replace access list with check button and modal Replace the v-for list of SpecialMembershipAccessItem components with a single button that triggers an on-demand access check and opens a SpecialMembershipRequestModal via Teleport. Add reactive state (isAccessChecked, isModalVisible, specialMembershipAccessItem) and a handleModalDismiss handler. Update getSpecialMembershipAccess to set the modal item (uses first returned item), warn if none, and adjust loading/access-checked flags. Remove the emit/requestAccess flow and the automatic check on mount — switching to explicit user-initiated checks and modal-based request UI. * Update SpecialMembershipAccessItem.vue * fix storybook * fix copilot linting * Add specialMemberships feature flag and UI guard Introduce a new specialMemberships feature flag to the Features interface and default feature set (defaulted to disabled): the special-membership access UI only renders when the feature is enabled. * Notify on special membership status update Import the notifications store and use it to show feedback when toggling a special membership request status, and close the modal if any change is successfull * Update index.ts * Add special-membership route and re-auth guard Add a /special-membership-request/:id route that prefetched the request via services.userSpecialMembershipRequestsReviews.get in beforeEnter, passes it as prop prefetchedItem, and logs success/failure. Add debug logging to the existing auth check beforeEach. Introduce a second beforeEach that re-authenticates the backend session via services.app.reAuthenticate(true) for protected routes and redirects to the Login route on failure. * Dynamic request cards and modal routing Replace separate pending/approved Card blocks with a v-for-driven cardViewsWithServiceParams computed array (pending & approved) to DRY the list rendering. Add route-based modal navigation: introduce useRouter, routeToModal to navigate to a SpecialMembershipRequest route, and a prefetchedItem prop + watcher to open the toggle-status modal when loaded via route. Increase list query limit to 50, update i18n keys for card titles/errors/empty messages, change card spacing (mt-4 -> my-4), and ensure hiding the modal returns to the Index route. * Update ContentItemAccess.vue * Update SpecialMembershipModal.vue * Update UserArea.vue --------- Co-authored-by: Daniele Guido <1181642+danieleguido@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.