Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HTML returned from mentionSelect function is being escaped #45

Closed
agarbund opened this issue Oct 6, 2017 · 17 comments
Closed

HTML returned from mentionSelect function is being escaped #45

agarbund opened this issue Oct 6, 2017 · 17 comments

Comments

@agarbund
Copy link

agarbund commented Oct 6, 2017

Hey @dmacfarlane it's me again :) I'm continuing rewrite of app to Angular 4 and encountered following issue:
I'm attaching [mention] to contenteditable div. A function which is formatting selected item returns HTML to style selected label nicely and disallow editing it:

onFieldSelect(item: Models.SourceField): string {
    return `<em data-id="${item.id}" contenteditable="false">${item.label}</em>`;
}

However, this HTML is being escaped when inserted to contenteditable element. Any idea how to bypass this?

@agarbund
Copy link
Author

@dmacfarlane I've created PR resolving this issue: #50

@gurpreet2-kaur
Copy link

Can I apply CSS to element selected using mentionSelect

@agarbund
Copy link
Author

@gurpreet2-kaur I don't see a reason why you couldn't

@gurpreet2-kaur
Copy link

I am using function [mentionConfig]="{maxItems:2,mentionSelect:modifyvalue}
modifyvalue(input){
return 'input.label';
}
This value is returned as is and the color is not applied . I want to apply color to the selected item/
Please suggest

@ghost
Copy link

ghost commented Sep 16, 2018

@agarbund hi..

Is it formatting supposed to work like this:

onMentionSelect(selection): string {
  return '<b>' + selection.label + '</b>';
}

Because the result in my textarea is just "<b>Text</b>" instead of "Text" .. any idea?

<textarea matInput [rows]="4" style="resize: none;"
          type="text" [mention]="mentions" 
          [mentionConfig]="{mentionSelect: onMentionSelect}">              
</textarea>   

@agarbund
Copy link
Author

@silentsnooc you can't have a formatted text in textarea. You need to use [contenteditable] attribute if you need formatting.

https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Editable_content

@agarbund
Copy link
Author

If anyone reaches here in search for @mentions for Angular 2+ with support for HTML in [contenteditable], I've created ngx-tribute, an Angular 2+ wrapper for @mentions library written in pure JS - Tribute

@ghost
Copy link

ghost commented Sep 21, 2018

@agarbund Could you provide an example? This is not working for me:

<div [mention]="mentions" [mentionConfig]="mentionConfig" contenteditable 
     style="padding-bottom: 24px;">              
</div>

I am still getting " <b>Text</b>".

@agarbund
Copy link
Author

@silentsnooc can I see the issue somewhere? jsbin or sth like that

@ghost
Copy link

ghost commented Sep 21, 2018

@agarbund I created a stackblitz example: https://stackblitz.com/edit/angular-389kgl

@agarbund
Copy link
Author

@silentsnooc an example you've attached is using a version of angular-mentions from npm. Feature of supporting formatted text was never merged, so it's not available in the npm package. If you want to use it, you'd need to install my fork directly from a git repo: npm i https://github.com/agarbund/angular2-mentions.

I couldn't import a package directly from git on stackblitz demo, but if you want to see a working example of formatting a selected item, then clone my fork, run npm i && npm start, and check example with contenteditable.

If you prefer to stick with packages from NPM you might also check a package I've published recently.

@tanmayrajani
Copy link

I am still getting "<b>Text</b>".

I know this issue is quite old but this happens to me as well in a tinymce using iframe..

@dmacfarlane any plans on this? or am I missing something?

thanks!

@vamulya
Copy link

vamulya commented Mar 30, 2020

@agarbund I created a stackblitz example: https://stackblitz.com/edit/angular-389kgl

hi @silentsnooc Is it working now?

@aeslinger0
Copy link

@tanmayrajani, my work-around for that is to return a blank string, wait a tick with setTimeout so the search term gets cleared out, then insert the html manually using tinymce's API.

@Manishpri
Copy link

@agarbund Could you provide an example? This is not working for me:

<div [mention]="mentions" [mentionConfig]="mentionConfig" contenteditable 
     style="padding-bottom: 24px;">              
</div>

I am still getting " Text".

Still, I am facing the same issue,

@dmacfarlane
Copy link
Owner

Closing in favor of #170.

@kartik8393
Copy link

@tanmayrajani, my work-around for that is to return a blank string, wait a tick with setTimeout so the search term gets cleared out, then insert the html manually using tinymce's API.

Can you please explain the exact solution or a stackblitz if possible.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants