Skip to content

Incorrect octicon name crashes live preview#1377

Merged
ang-zeyu merged 5 commits into
MarkBind:masterfrom
KendrickAng:bugfix/check-octicon-exists
Oct 24, 2020
Merged

Incorrect octicon name crashes live preview#1377
ang-zeyu merged 5 commits into
MarkBind:masterfrom
KendrickAng:bugfix/check-octicon-exists

Conversation

@KendrickAng

@KendrickAng KendrickAng commented Oct 18, 2020

Copy link
Copy Markdown
Contributor

What is the purpose of this pull request? (put "X" next to an item, remove the rest)

• [X] Bug fix

What is the rationale for this request?
Resolves #1266

Currently, if a user tries to use an invalid octicon, the live server crashes. On the other hand, this does not happen with glyphicons since usage of empty glyphicons just results in an empty <span glyphicon glyphicon-invalid></span>.
image

What changes did you make? (Give an overview)
Added an existence check for the octicon the user wants to use, returning an empty <span> otherwise.

Provide some example code that this change will affect:

    // ensure octicons exist
    if (iconFontType === 'octicon' || iconFontType === 'octiconlight') {
      if (!octicons.hasOwnProperty(iconFontName)) {
        return `<span aria-hidden="true"></span>`;
      }
    }

Is there anything you'd like reviewers to focus on?
https://primer.style/octicons/packages/javascript
It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need. This would be much less of a hassle that currently having to create a new class just to resize the icon. Perhaps we could consider adding in this functionality?
image

Testing instructions:
Try serving a webpage with invalid octicon.

Proposed commit message: (wrap lines at 72 characters)
add validity check for octicons

@ang-zeyu ang-zeyu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

Let's remove the unrelated style changes and keep that to a separate pr (there's quite a few files in the markdown-it folder that should really be linted) (some not, to preserve the style of the external source we extracted it from)

@KendrickAng

Copy link
Copy Markdown
Contributor Author

Got it! In the meantime, what do you think about extending octicon functionality to allow configuration of height and width of octicons with markdown? I mentioned in the description that It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need.

This might be beneficial for users who want to manually adjust octicon width/height with minimal hassle

@ang-zeyu

ang-zeyu commented Oct 19, 2020

Copy link
Copy Markdown
Contributor

Got it! In the meantime, what do you think about extending octicon functionality to allow configuration of height and width of octicons with markdown? I mentioned in the description that It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need.

This might be beneficial for users who want to manually adjust octicon width/height with minimal hassle

hmm definitely nice to have, although icons are already responsive to font-size

If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?

Could get user opinions from @damithc too

if (!octicons.hasOwnProperty(iconFontName)) {
return `<span aria-hidden="true"></span>`;
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it possible to combine the below checks (iconFontType === 'octicon' and `iconFontType === 'octiconlight') and only adjust the style conditionally?
so we have less repeated code down there, and integrate this check only where its needed

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, that would be much better, I'll do that

@damithc

damithc commented Oct 19, 2020

Copy link
Copy Markdown
Contributor

hmm definitely nice to have, although icons are already responsive to font-size

If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?

Could get user opinions from @damithc too

As @ang-zeyu mentioned, if we were to add that feature, we should do that for all three types of icons. Perhaps no need as we can use the font size to adjust the icon size?

@KendrickAng

KendrickAng commented Oct 20, 2020

Copy link
Copy Markdown
Contributor Author

hmm definitely nice to have, although icons are already responsive to font-size
If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?
Could get user opinions from @damithc too

As @ang-zeyu mentioned, if we were to add that feature, we should do that for all three types of icons. Perhaps no need as we can use the font size to adjust the icon size?

My concern was that users not familiar with css would have trouble with the usage of classes to resize the icons (I was unaware that you could use font-size to resize icons..), but I suppose it wouldn't be needed right now

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

@damithc

damithc commented Oct 20, 2020

Copy link
Copy Markdown
Contributor

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

From what I understand (I could be wrong), these icons are implemented as a text font. So, they can be manipulated as text.

? octicons[iconFontName].toSVG({"class": iconClass})
: octicons[iconFontName].toSVG();
// ensure octicons are valid
if (!octicons.hasOwnProperty(iconFontName)) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should this be above octicons[iconFontName]? 😮

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, it shouldn't ... so sorry about that 😓

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

corrected!

@ang-zeyu ang-zeyu added this to the v2.17.0 milestone Oct 24, 2020
@ang-zeyu ang-zeyu merged commit cb9886d into MarkBind:master Oct 24, 2020
@ang-zeyu

Copy link
Copy Markdown
Contributor

Lgtm 👍

My concern was that users not familiar with css would have trouble with the usage of classes to resize the icons (I was unaware that you could use font-size to resize icons..), but I suppose it wouldn't be needed right now

My view is that it may still be convenient to be able to easily adjust just the size of the icon octicon-xx-2x vs using a wrapper <span class="..."> :octicon-xx: </span>

Perhaps we could raise this as a low priority issue? But if such cases are few and far between then maybe not worth the maintenance costs

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

From what I understand (I could be wrong), these icons are implemented as a text font. So, they can be manipulated as text.

and any element that uses em / rem sizing #1132 (octicons are svgs)

wxwxwxwx9 pushed a commit to wxwxwxwx9/markbind that referenced this pull request Nov 1, 2020
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

Successfully merging this pull request may close these issues.

Incorrect octicon name crashes live preview

3 participants