Attention: the list was moved to
https://github.com/dypsilon/frontend-dev-bookmarks
This page is not maintained anymore, please update your bookmarks.
| defmodule Mix.Tasks.ConvertToVerifiedRoutes do | |
| @shortdoc "Fix routes" | |
| use Mix.Task | |
| @regex ~r/(Routes\.)(.*)_(path|url)\(.*?\)/ | |
| @web_module MyAppWeb | |
| def run(_) do | |
| Path.wildcard("lib/**/*.*ex") |
| defmodule NestedWeb.FormLive do | |
| use NestedWeb, :live_view | |
| require Logger | |
| defmodule Form do | |
| use Ecto.Schema | |
| import Ecto.Changeset | |
| embedded_schema do | |
| field :name, :string |
| import {Controller} from '@hotwired/stimulus' | |
| import {Editor} from "@tiptap/core" | |
| import {Mention} from "@tiptap/extension-mention"; | |
| import StarterKit from "@tiptap/starter-kit" | |
| export default class extends Controller { | |
| static targets = ['input', 'suggestions'] | |
| connect() { | |
| this.editor = new Editor({ |
| // This code is to be used with https://turbo.hotwire.dev. By default Turbo keeps visited pages in its cache | |
| // so that when you visit one of those pages again, Turbo will fetch the copy from cache first and present that to the user, then | |
| // it will fetch the updated page from the server and replace the preview. This makes for a much more responsive navigation | |
| // between pages. We can improve this further with the code in this file. It enables automatic prefetching of a page when you | |
| // hover with the mouse on a link or touch it on a mobile device. There is a delay between the mouseover event and the click | |
| // event, so with this trick the page is already being fetched before the click happens, speeding up also the first | |
| // view of a page not yet in cache. When the page has been prefetched it is then added to Turbo's cache so it's available for | |
| // the next visit during the same session. Turbo's default behavior plus this trick make for much more responsive UIs (non SPA). | |
| :plain | |
| var existingModal = document.querySelector("[data-controller='modal']"); | |
| if (existingModal) { | |
| document.body.removeChild(existingModal); | |
| } | |
| document.body.insertAdjacentHTML("beforeend", "#{j render partial: template.to_s, locals: local_assigns }"); |
| // app/locations/history.js | |
| export default Ember.HistoryLocation.extend({ | |
| pushState() { | |
| this._super(...arguments); | |
| window.scrollTo(0, 0); | |
| } | |
| }); | |
| ``` |
Attention: the list was moved to
https://github.com/dypsilon/frontend-dev-bookmarks
This page is not maintained anymore, please update your bookmarks.
| var distance_of_time_in_words, time_ago_in_words; | |
| time_ago_in_words = function(from_time, include_seconds) { | |
| if (include_seconds != null) { | |
| include_seconds; | |
| } else { | |
| include_seconds = false; | |
| }; | |
| return App.distance_of_time_in_words(from_time, Date.now(), include_seconds); | |
| }; | |
| distance_of_time_in_words = function(from_time, to_time, include_seconds) { |
| #Deploy and rollback on Heroku in staging and production | |
| task :deploy_staging => ['deploy:set_staging_app', 'deploy:push', 'deploy:restart', 'deploy:tag'] | |
| task :deploy_production => ['deploy:set_production_app', 'deploy:push', 'deploy:restart', 'deploy:tag'] | |
| namespace :deploy do | |
| PRODUCTION_APP = 'YOUR_PRODUCTION_APP_NAME_ON_HEROKU' | |
| STAGING_APP = 'YOUR_STAGING_APP_NAME_ON_HEROKU' | |
| task :staging_migrations => [:set_staging_app, :push, :off, :migrate, :restart, :on, :tag] | |
| task :staging_rollback => [:set_staging_app, :off, :push_previous, :restart, :on] |