webviewer-ui icon indicating copy to clipboard operation
webviewer-ui copied to clipboard

API for adding custom modals or popups

Open sabieber opened this issue 5 years ago • 11 comments

I really like the new API for adding custom panels to the left panel. Could you add something similar for modals and popups so APIs like closeElement and openElement can be accessed there too?

sabieber avatar Nov 07 '18 14:11 sabieber

Yup, we also think that similar API should exist for modals and popups. It's in our roadmap, but not the highest priority at the moment. Hopefully we will get to it soon and create better dev experience for everyone :)

justinjung04 avatar Nov 09 '18 17:11 justinjung04

Something else I would like to add is that you might want to think about how you want to handle the onkey listeners for when a modal is open. In our product, we had a modal specifically linked to the selected annotation, and pressing delete would cause the annotation to be deleted and thus the modal to close. Because ondelete seemed to be handled in core code, I had to set up my own listener that would stop propagation if my modal was open. Perhaps you could turn off all listeners if a modal is open?

(This comment is related to issue #41)

image This is an image of our temporary solution fore delete within onKeyDown.js

ascherer1993 avatar Nov 13 '18 21:11 ascherer1993

That's a great point. We'll consider it when we design the API.

justinjung04 avatar Nov 22 '18 01:11 justinjung04

This would be very useful for our use as well for page operations. For moving and adding pages we pop up separate modals right now but it is a bit clunky and doesn't work when using WebViewer in full screen mode.

ghills avatar Aug 12 '19 20:08 ghills

During this time we've added a few APIs that can be used to customize modals and popups:

  • instance.setCustomModal can be used to create a custom modal in the viewer. The modal can be toggled using instance.openElements and instance.closeElements.
  • Popup APIs that can be used for instance.annotationPopup, instance.contextMenuPopup and instance.textPopup.
  • The settings overlay can also be customized using instance.settingsMenuOverlay

Let us know if you have any other questions.

ZhijieZhang avatar Apr 09 '21 18:04 ZhijieZhang

Thanks for the new APIs, the ones for custom modals are great to use. I currently only find the possibility of altering the existing popups via the new Popup API, is anything similar to setCustomModals for popups possible (so a setCustomPopup method that creates a new popup with a render function)? That in combination wwith an easy way of updating the position of the custom popup to be near the click when opened would make our live a lot easier. We currently do something similar via code that renders a custom box, positions and sizes it accordingly and renders its content.

sabieber avatar Oct 14 '21 10:10 sabieber

@ZhijieZhang @justinjung04 any news on this?

sabieber avatar Aug 29 '22 13:08 sabieber

Is there any news on the Custom Popup API front?

sabieber avatar Oct 06 '23 09:10 sabieber

Hi @sabieber,

We are currently working on a new and improved way to customize the UI without having to fork this repo, and can explore this requirement more in depth.

If I understand correctly you want:

  • An API to add a fully custom popup (not one of the default ones)
  • A mechanism to open this based on an action (like a click on a certain annotation?)

Can you elaborate more on what your ideal use case is, and what an ideal API would look like for you?

bollain avatar Oct 20 '23 22:10 bollain

Hi @bollain,

thanks for the update and heads up! This sounds really promising.

Yes our use case is to create an annotation for the word the user clicked on and displaying a custom popup next to the created annotation.

Best would be an API where a popup with a fully custom content (like the dialog APIs) can be created. Also it would be helpful if there was an easy way to update the position of that popup to be next to a specified annotation.

sabieber avatar Oct 24 '23 19:10 sabieber

Hi @sabieber,

We are currently working on a new and improved way to customize the UI without having to fork this repo, and can explore this requirement more in depth.

If I understand correctly you want:

  • An API to add a fully custom popup (not one of the default ones)
  • A mechanism to open this based on an action (like a click on a certain annotation?)

Can you elaborate more on what your ideal use case is, and what an ideal API would look like for you?

Hi guys...

Can you give me, please, some hints on how this customization works?

Any help will be very much appreciated...It's a real struggle just to build it...

Even following those steps found in here ((https://docs.apryse.com/documentation/web/guides/advanced-customization/))

I'm using the 10.6 branch.

I only get to do those steps after install Visual Studio 2019 with "Desktop development with C++" package...

But, after the build, the copied files (from webviewer-ui/build folder) don't work correctly with my app (build with React).

:(

Someone can help?

Tnx in advance!!!

adam9000 avatar Jan 31 '24 01:01 adam9000