* create new pack, handle user follow buttons, use pack on article page, remove initializeUserFollowButts
* init all follow button types, add pack to tag index and podcast episode pages
* add pack to all relevant pages, listen for newly inserted follow buttons
* change to searchParams to remove follow button initializer calls
* fix bug with tag page, add pack to notifications page
* fix issue with follow back inner text
* update cypress specs
* run the followbuttons code on sponsors page
* remove extra foreach
* add test for follow from article sidebar
* add test for follow and unfollow tag
* add test for the tag index page
* add spec for organisation profile follow
* add tests for follow buttons in search results
* add tests for notification follows
* commit missed file - woops
* show login modal if user is logged out when they click
* add cypress tests for logged out state
* change tag button initialization
* remove data-button-initialized
* init follow buttons from base pack
* handle the case where multiple follow buttons exist on a page for the same user
* account for instantclick and userdata not being defined, lower coverage for jest
* use getInstantClick
* fix issue with set initialisation
* only listen for mutations in areas we know follow buttons may be added dynamically
* small refactors
* Banner v2 - first working version
* Move pack_with_chunks_tag up + removing comments
* Trying to fix unlrelated tests
* Revert experiment
* Defer initialization until page is ready
* Test refactor + trying out UDL Server refactor
* Revert experiment - to be handled in separate PR
* refactor to use function component
* Cleanup unused lines in cypress test
* Update app/javascript/runtimeBanner/RuntimeBanner.jsx
Co-authored-by: Nick Taylor <nick@forem.com>
* Apply review feedback
* Update app/javascript/runtimeBanner/RuntimeBanner.jsx
Co-authored-by: Nick Taylor <nick@forem.com>
* Add import clause + extract functions outside of component
Co-authored-by: Nick Taylor <nick@forem.com>
* use initializedropdown in profileDropdown
* improve aria in html
* add cypress tests, stop buttons and dropdown initializing twice or more
* make sure dropdown shows when logged out
* use dropdownutils in dashboard and manage pages
* add tests for the toggle menu on dashboard
* add test for archiving from manage post view
* small tweak to avoid unhandled errors
* small tweaks to form methods
* WIP - basic init of comment dropdowns with open and close on click
* WIP - initialize the share dropdown
* initialize all post dropdowns within packs, init copy to clipboard announcer
* refactor and add JSDocs to helper
* undo changes to base jsx
* update accessible name of post actions button in cypress test
* make sure dropdowns pack loaded on comment index page
* undo prettier changes in base jsx
* undo prettier changes in base jsx
* initialize comment dropdowns in podcasts
* add test for the post actions
* add article comment tests
* add cypress tests for comment dropdowns
* Remove early call to setup local storage for user
The first thing the callInitializers function does is re-invoke
initializeLocalStorageRender, calling the same function twice (for a
different outcome?) seems like it's not effective.
I tried to trace down how long it had been that way, and came to the
very first commit in the repo -
301c6080e3, where the pattern already
existed, so it's unclear at what point (prior to 2018) this was added,
and what problem it was trying to solve.
If we inlined callInitializers (by renaming it initializePage and
deleting the bottom function), the duplication would be especially
evident. This is the only call site for callInitializers, which would
be the other reason we _might_ want to have redundancy.
* Inline function call
Since initializePage only acted as a new name for
callInitializers (immediately transferring control to the
callInitializer function), remove the wrapper function and rename
the *actual* code with the public name initializePage.
No logic/behavior should change, unless we were unit testing callInitializers.
* Shorten method by moving long list of logicless calls to a helper
"We don't want to make a habit of pandering to Code Climate and its
metrics blindly".
Appease the robot by moving about 20 lines of uninteresting sequential
code out of the initializePage function and into a "callInitializers"
function, which is also the name of the function I just inlined.
* Working version of Runtime Filter with banner behind Feature Flag
* First attempt to add a cypress test
* Adds simplified test
* Cleanup global references
* Add multi-platform e2e test
* Use --runtime-display var with fallback to block
* Update app/assets/javascripts/initializers/runtime.js
Co-authored-by: Suzanne Aitchison <suzanne@forem.com>
* Add FeatureFlag stub to fix unrelated specs
Co-authored-by: Suzanne Aitchison <suzanne@forem.com>
* Improve keyboard a11y of header menu dropdown
This commit also includes some cleanup of unnecessary functions that seemed to degrade performance.
Closes https://github.com/forem/forem/issues/1154
* Add temporary focus style on navigation-button
* Put menu items in a list
* Adjust menu button based on VoiceOver testing
* Refactor menu logic to be reusable/work on touch
* Preserve admin link visibility
* Focus on first item on menu open
* Clean up some HTML and CSS
* Apply suggestions from code review
Co-authored-by: ludwiczakpawel <ludwiczakpawel@gmail.com>
* Ensure menu hides on click outside
* Rename toggle function and adjust formatting
* Update nav button focus style
* Clean up padding on header avatar focus style
* Make button show focus state for keyboard only
Using .focus-visible:focus targets keyboard focus and eliminates a flash of the blue border on click before focus is moved to the child item (which also has no focus style on mouse click)
* Update app/views/layouts/_top_bar.html.erb
Co-authored-by: ludwiczakpawel <ludwiczakpawel@gmail.com>
* Add some defensive programming
* Removed initializeTouchDevice from base.js.erb
* navigation-butt ID is now member-menu-button
* Moved all the logic from initializeTouchDevice.js into a pack file/utilities.
* committing re-ordered schema after setup
* add tests for initializeTouchDevice
* remove some unneeded html setup
* make sure menu doesn't close if user tabs back from sign out
* Revert "committing re-ordered schema after setup"
This reverts commit a41a1c861cca3b97d8a7b8a99268b8afaae9f028.
* optimized code
* small tweaks, only show outline when focused
Co-authored-by: ludwiczakpawel <ludwiczakpawel@gmail.com>
Co-authored-by: rhymes <rhymes@hey.com>
Co-authored-by: Nick Taylor <nick@dev.to>
Co-authored-by: Suzanne Aitchison <suzanne@forem.com>
* .
* .
* .
* .
* .
* specs
* specs
* .
* .
* merge
* moving cheese around
* layout
* .
* merge
* Fixed invalid selector for search.
* Fixed issue with URL not updating after a search.
* do things better
* kinda merge
* whoops
* whoops
* .
* .
* im a backend developer
* tooltips 1.0.1
* tooltips 1.0.1
* fix
* specs
* .
* reduce the spacing
* schema drop
* reverts
* revert
* reverts
* revert
* drop unused nav
* drop unused nav
* drop unused nav
* drop unused nav
* typos
* paths fixes
* speeding up JS
* js
* search
* Reworked initializeTopBarIcons.js
* Reworked initializeNavigation.js
* Small refactor and updated exported function API docs.
* Fixed a bug I created when refactoring the top navigation icons.
* sidebar nav links
* spec
* Fixed issues with logged out experience for top nav icons.
* Small refactor of top nav icons.
* Small refactor and added some API docs.
* Added @testing-library/dom
* Added tests for top navigation utilities.
* spec
* spec
Co-authored-by: Nick Taylor <nick@dev.to>
* Add local_date helper to handle dates with respect of user timezone
* Fix date timezone bug for articles/show
* Fix date_helper to meet system specs requirements
* Initial user payment pointer work
* Finalize functionality and tests
* Fix schema
* Update app/views/shared/_payment_pointer.html.erb
* Add function to list
* Serialize broadcast_data within AsyncInfoController::base_data
Adds a `broadcast:` key to our `base_data`, regardless of whether a user is logged in or not.
If a broadcast is not present, passes along a `nil` value.
* Initialize active broadcast (if present) when rendering main page
* Allow admins to preview a broadcast's processed_html when editing
* Add some fixed position styling to active broadcast
* Add system specs around broadcasts on homepage
* Use sanitize in place of html_safe when previewing broadcast
* Do not initialize broadcast if no broadcastData available
* Render default value on broadcast in options_for_select
* JS cleanup
* Unset fixed positioning for static navbar config
Also add some default styling for an active broadcast