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

Reduce duplicate code across plugins using notify popup #443

Closed
kirsty-hames opened this issue May 24, 2023 · 5 comments · Fixed by #448
Closed

Reduce duplicate code across plugins using notify popup #443

kirsty-hames opened this issue May 24, 2023 · 5 comments · Fixed by #448

Comments

@kirsty-hames
Copy link
Contributor

kirsty-hames commented May 24, 2023

Subject of the enhancement

Currently the default style for Notify icon buttons is consistent across all plugins however we've duplicated the styling code across the various plugin LESS files.

See Hotgraphic close button in comparison to core Notify close button. The CSS being applied is the same but attached to different selectors.

notify_close_btn

See references to duplicate styles below:

Expected behaviour

The generic Notify button icon selector .notify__btn-icon is only being used in the notifyPopup template.

I'd expect .notify__btn-icon to be used for all Notify icon buttons. This means the default style is set in one place but we still have plugin specific classes to target should you want to style these different - although there's good reason for keeping UI button styling consistent.

Next steps

  • Raise issues and PRs for the plugins where the additional selector .notify__btn-icon is applicable.
  • Only once plugin PRs are merged should the plugin styles be removed from Vanilla. As we're removing styles that require the compatible plugin? Is this a breaking change for Vanilla or the relevant plugin? Or both?
@StuartNicholls
Copy link
Contributor

StuartNicholls commented May 25, 2023

@kirsty-hames, as a general question, what are the advantages of having four separate classes/selectors for the close button? As apposed to say, one class/selector called close-btn. The selector can target the icon with a mixin for example.

There seems to be some confusion looking at how this has been implemented generally speaking - across plug-ins, but even in the theme for example

border-radius: 50%;

Looking at the naming logic for the classes, I'd expect the radius to apply to the button, rather than in the selector than deals with the icon.

I'm just wondering if it might be better to create a new selector, call it close-btn, then leave those specific selectors (for customisations) then tidy up the less. Thoughts?

@kirsty-hames
Copy link
Contributor Author

@kirsty-hames, as a general question, what are the advantages of having four separate classes/selectors for the close button? As apposed to say, one class/selector called close-btn. The selector can target the icon with a mixin for example.

I completely agree. On the off chance you did want to do different styles you can still target a parent selector for a particular plugin. Whether we touch the plugin selectors or not a single mixin in the theme would reduce the need for duplicate CSS and resolve the issue raised.

There seems to be some confusion looking at how this has been implemented generally speaking - across plug-ins, but even in the theme for example

border-radius: 50%;

Looking at the naming logic for the classes, I'd expect the radius to apply to the button, rather than in the selector than deals with the icon.

I'd also agree. I think this needs to be looked at from a wider UI perspective though (same issue applies to Drawer buttons etc) so I think this can be a separate issue/task. For the purpose of this ticket, attaching the current styles to mixin is a starting point.

I'm just wondering if it might be better to create a new selector, call it close-btn, then leave those specific selectors (for customisations) then tidy up the less. Thoughts?

Yep agree again, leaving the selectors as is avoids any breaking changes/compatibility issues across Vanilla and plugins so I prefer this approach. Thanks for raising. We just need to rethink the mixin name as I raised this issue for Notify icon buttons not just close so would apply to the controls too (back/next) but your suggestion of a mixin is a good way to go for this.

@StuartNicholls
Copy link
Contributor

StuartNicholls commented May 25, 2023

@kirsty-hames , what I meant was re. the new selector, was create a new selector and add the class to the DOM so, call it adapt-close-btn , but perhaps thats out of scope here. I suggested that as you were suggesting adding notify__btn-icon, to hotgrid etc. this is slightly confusing as its BEM style class but used like utility class if we add it here.

So for now, yeah lets stay away from adding that class to the DOM in other plug-ins and perhaps if we need to add in XXX_btn-icon (so hotgrid_btn-icon in the case of hotgrid) so it (sort of) follows the same BEM naming. And use a mixin like we said above. Otherwise just a mixin.

Added a comment here:

cgkineo/adapt-hotgrid#127 (comment)

All the other stuff about utility classes and rationalising the ones already in use can get raised in another ticket.

What do you think?

@kirsty-hames
Copy link
Contributor Author

@kirsty-hames , what I meant was re. the new selector, was create a new selector and add the class to the DOM so, call it adapt-close-btn , but perhaps thats out of scope here. I suggested that as you were suggesting adding notify__btn-icon, to hotgrid etc. this is slightly confusing as its BEM style class but used like utility class if we add it here.

So for now, yeah lets stay away from adding that class to the DOM in other plug-ins and perhaps if we need to add in XXX_btn-icon (so hotgrid_btn-icon in the case of hotgrid) so it (sort of) follows the same BEM naming. And use a mixin like we said above. Otherwise just a mixin.

Added a comment here:

cgkineo/adapt-hotgrid#127 (comment)

All the other stuff about utility classes and rationalising the ones already in use can get raised in another ticket.

What do you think?

Lets just go with the mixin. I'd say adding/changing classes is out of scope for this issue. The mixin alone resolves the issue of duplicate styles.

@kirsty-hames kirsty-hames moved this from Awaiting Response to Needs Reviewing in adapt_framework: The TODO Board Jun 15, 2023
kirsty-hames added a commit that referenced this issue Jul 4, 2023
…443) (#448)

* create mixin for notify icon button styles

* replace notifyPush close button styles with mixin

* replace hotgraphicPopup icon button styles with mixin

* replace tutor close button styles with mixin
@github-project-automation github-project-automation bot moved this from Needs Reviewing to Recently Released in adapt_framework: The TODO Board Jul 4, 2023
github-actions bot pushed a commit that referenced this issue Jul 4, 2023
# [9.7.0](v9.6.16...v9.7.0) (2023-07-04)

### Update

* replace notify button icon duplicate styles with mixin (fixes #443) (#448) ([bf2f2e6](bf2f2e6)), closes [#443](#443) [#448](#448)
@github-actions
Copy link

github-actions bot commented Jul 4, 2023

🎉 This issue has been resolved in version 9.7.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

github-actions bot pushed a commit to redwoodperforms/adapt-contrib-vanilla that referenced this issue Jul 10, 2023
# [7.0.0](v6.0.0...v7.0.0) (2023-07-10)

### Breaking

* block padding property (fixes adaptlearning#358) (adaptlearning#359) ([aa8a3b4](aa8a3b4)), closes [adaptlearning#358](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/358) [adaptlearning#359](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/359) [adaptlearning#358](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/358)
* Moved background images into their own divs (adaptlearning#334) ([1a8a9b6](1a8a9b6)), closes [adaptlearning#334](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/334)
* Quote styling rework (fixes adaptlearning#351) (adaptlearning#370) ([499412e](499412e)), closes [adaptlearning#351](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/351) [adaptlearning#370](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/370)

### Chore

* Updated GHA packages for release process (adaptlearning#441) ([ac2c8ca](ac2c8ca)), closes [adaptlearning#441](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/441)

### Docs

* Removed accordion / hotgraphic item image classes (fixes adaptlearning#365) ([446d923](446d923)), closes [adaptlearning#365](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/365)
* Updated readMe and example.json (fixes adaptlearning#345) (adaptlearning#371) ([265cdc9](265cdc9)), closes [adaptlearning#345](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/345) [adaptlearning#371](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/371)

### Fix

* Add @shadow-opacity (adaptlearning#425) ([24e022e](24e022e)), closes [adaptlearning#425](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/425)
* Add font size variable for nav button label (fixes adaptlearning#414) ([0a9c548](0a9c548)), closes [adaptlearning#414](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/414)
* Add missing xlarge to vanilla theme (adaptlearning#432) ([3614bf5](3614bf5)), closes [adaptlearning#432](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/432)
* Add new menu header color variables (fixes adaptlearning#402) ([23f4ac3](23f4ac3)), closes [adaptlearning#402](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/402)
* Add variable for .on-screen-anim() mixin's transition-delay (fixes adaptlearning#416) ([ca68ffd](ca68ffd)), closes [adaptlearning#416](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/416)
* Added gitignore for release automation (adaptlearning#347) ([5c7d9b5](5c7d9b5)), closes [adaptlearning#347](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/347)
* Added missing defaults for comp header bg mixin (fixes adaptlearning#374) ([00c28b9](00c28b9)), closes [adaptlearning#374](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/374)
* Added missing header-color default (fixes: adaptlearning#372) ([62af1d8](62af1d8)), closes [adaptlearning#372](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/372)
* Added release automation (adaptlearning#344) ([8d7237a](8d7237a)), closes [adaptlearning#344](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/344)
* Added slider fill and marking styling (fixes adaptlearning#407) (adaptlearning#408) ([992d162](992d162)), closes [adaptlearning#407](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/407) [adaptlearning#408](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/408)
* Added textinput item bottom margin (adaptlearning#421) ([f306206](f306206)), closes [adaptlearning#421](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/421)
* align-vert-center to work with block min-heights (adaptlearning#405) ([aef4e21](aef4e21)), closes [adaptlearning#405](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/405)
* Bump http-cache-semantics from 4.1.0 to 4.1.1 (adaptlearning#392) ([c6670db](c6670db)), closes [adaptlearning#392](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/392)
* convert item and button borders from px to rem (fixes adaptlearning#436) (adaptlearning#437) ([3828504](3828504)), closes [adaptlearning#436](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/436) [adaptlearning#437](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/437)
* Convert the default instruction text styling from italics to bold (adaptlearning#438) ([a1e2992](a1e2992)), closes [adaptlearning#438](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/438)
* Defensive Check (fixes: adaptlearning#400) (adaptlearning#401) ([c51c0f8](c51c0f8)), closes [adaptlearning#400](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/400) [adaptlearning#401](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/401)
* Make Notify icon buttons dark in initial state, darker in hover (fixes adaptlearning#250) ([82c9181](82c9181)), closes [adaptlearning#250](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/250)
* Match columns to breakpoints (adaptlearning#429) ([61ad869](61ad869)), closes [adaptlearning#429](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/429)
* Remove hover states from progress indicators (adaptlearning#399) ([5c98ce2](5c98ce2)), closes [adaptlearning#399](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/399)
* Removed rangeslider styling (adaptlearning#406) ([2627896](2627896)), closes [adaptlearning#406](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/406)
* Replace glossary textbox margin with padding (adaptlearning#409) ([106a2cf](106a2cf)), closes [adaptlearning#409](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/409)
* Slider fill styling (adaptlearning#413) ([a2531ae](a2531ae)), closes [adaptlearning#413](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/413)
* Small theme file shake up (fixes adaptlearning#331) (adaptlearning#384) ([5d99c00](5d99c00)), closes [adaptlearning#331](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/331) [adaptlearning#384](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/384)
* update margins on menu-body and menu-instruction (fixes adaptlearning#387) ([77f0560](77f0560)), closes [adaptlearning#387](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/387)
* Version numbers removed from Readme files ([5f4e68a](5f4e68a))

### New

* Add @body-background-color and apply to body element (fixes adaptlearning#349) ([68b4e1d](68b4e1d)), closes [adaptlearning#349](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/349)
* Add block horizontal alignment option (fixes adaptlearning#393) ([501adcb](501adcb)), closes [adaptlearning#393](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/393)
* Added favicon support (fixes adaptlearning#306) (adaptlearning#396) ([fe46c7e](fe46c7e)), closes [adaptlearning#306](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/306) [adaptlearning#396](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/396)
* Added hotgraphic visited icon (adaptlearning#336) ([7c1145e](7c1145e)), closes [adaptlearning#336](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/336)
* Adds locking icon to locked menu items (fixes: adaptlearning#389) (adaptlearning#390) ([4301511](4301511)), closes [adaptlearning#389](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/389) [adaptlearning#390](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/390)
* Issue and pr project addition automation (refs adaptlearning/adapt_framework#3315) (adaptlearning#343) ([3a7a955](3a7a955)), closes [adaptlearning#343](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/343)
* Text alignment update (fixes adaptlearning#362) (adaptlearning#364) ([a13e2f0](a13e2f0)), closes [adaptlearning#362](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/362) [adaptlearning#364](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/364)

### Update

* component vertical alignment property (fixes adaptlearning#353) (adaptlearning#354) ([31c46f9](31c46f9)), closes [adaptlearning#353](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/353) [adaptlearning#354](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/354)
* Control content max width via variable (fixes adaptlearning#379) (adaptlearning#380) ([d4b3f99](d4b3f99)), closes [adaptlearning#379](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/379) [adaptlearning#380](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/380)
* Convert focus to focus-visible (fixes adaptlearning#376 adaptlearning#377) (adaptlearning#378) ([7d93d24](7d93d24)), closes [adaptlearning#376](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/376) [adaptlearning#377](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/377) [adaptlearning#378](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/378)
* Extend columns to support menu item widths (fixes adaptlearning#383) ([5af105c](5af105c)), closes [adaptlearning#383](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/383)
* replace notify button icon duplicate styles with mixin (fixes adaptlearning#443) (adaptlearning#448) ([bf2f2e6](bf2f2e6)), closes [adaptlearning#443](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/443) [adaptlearning#448](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/448)

### Upgrade

* Bump yaml and semantic-release (adaptlearning#422) ([579cc13](579cc13)), closes [adaptlearning#422](https://github.com/redwoodperforms/adapt-contrib-vanilla/issues/422)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
2 participants