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

support for @fortawesome/free-* library icons #76

Open
3 tasks done
bjornharvold opened this issue Apr 5, 2025 · 5 comments
Open
3 tasks done

support for @fortawesome/free-* library icons #76

bjornharvold opened this issue Apr 5, 2025 · 5 comments

Comments

@bjornharvold
Copy link

Clear and concise description of the problem

Thank you for a great editor. Superb! 🦸‍♂️

We are already using FontAwesome heavily by importing individual icons (e.g. faBell) into our apps with <fa-icon [icon]="faBell">. It keeps it manageable.

By having to doubly import the entire CSS library increases the size of our main bundle quite dramatically.

Suggested solution

Moving away from using the entire FontAwesome CSS library is the optimal way forward. Only import the icons your component needs.

Alternative

No response

Additional context

No response

Validations

@ghiscoding
Copy link
Owner

If you want to work on this then I would accept a Pull Request, I'm not going to work on this myself, I just don't have the time to spend on this anymore.

@bjornharvold
Copy link
Author

That's fair @ghiscoding. I looked at the code to see how much effort it would be. It's not clear to me where the actual editor tool component on top of the text area exists. Where you configure the buttons as strings (e.g. fa fa-strikethrough) could also support IconDefinition from FontAwesome. If you could point me to the place where the buttons are defined in the code. Can't find md-header.

Cheers

@ghiscoding
Copy link
Owner

ghiscoding commented Apr 6, 2025

I think you can read the buttons from $.fn.markdown.defaults.buttons and then loop through all buttons and change their icon and finally reassign to your editor options

const defaultButtons = $.fn.markdown.defaults.buttons;

// loop through all buttons and change all necessary icons
const newButtons = ...

// reassign to your editor options
this.editorOptions = {
  iconLibrary: 'fa', // change this if other than fa (font-awesome) 
  buttons: newButtons

so you might be able to do this without having to modify the library at all

the buttons have the structure shown below, icon: { fa: 'fa fa-strikethrough' } where fa is the iconLibrary and its associated icon

additionalButtons: [
[{
name: 'groupFont',
data: [{
name: 'cmdStrikethrough',
toggle: false,
title: 'Strikethrough',
icon: {
fa: 'fa fa-strikethrough'
},

and here's the link of where that is located in the bootstrap-markdown library, where the buttons are all defined:

https://github.com/refactory-id/bootstrap-markdown/blob/f3754636b7fb154a69a093ac0d06a1622720f6f1/js/bootstrap-markdown.js#L983-L995

@bjornharvold
Copy link
Author

Yeah, I saw that.... but I don't know where this gets used. How / Where is the toolbar actually generated using this config?

@ghiscoding
Copy link
Owner

ghiscoding commented Apr 7, 2025

in the external library bootstrap-markdown, I gave you all the links already. You should just try the code.

I guess that it would still be preferable to remove font-awesome from my list of dependencies as well

"dependencies": {
"bootstrap": ">=4.6.2",
"bootstrap-markdown": "refactory-id/bootstrap-markdown",
"font-awesome": "^4.7.0",

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

2 participants