Ps: The current setup was done on 01-04-19
Project Dependency Versions at the time 👇
"react": "^16.7.0",
"react-dom": "^16.7.0",
"react-scripts": "2.1.3",
"typescript": "^3.2.2"
"tslint": "^5.12.0",
"tslint-config-prettier": "^1.17.0",| footer.footer | |
| .wrapper.footer__wrapper | |
| .footer__col | |
| .footer__head | |
| .footer__payment | |
| .footer__info | |
| .footer__col | |
| - var menu = content.index.menu | |
| each items in menu.items |
| 1. anchor scroll | |
| `<a href="[[~[[*id]]]]#anchor[[+idx]]" class="sv-list__link" data-scroll-to>[[+city]]</a>` | |
| `[[~[[*id]]]]` - link of current page; | |
| `[[+idx]]` - order, starting with 1; | |
| 2. anchor links `[[!++site_url]]category/[[*alias]]/#review` | |
| useful resources: |
| var $price = $(".woocommerce-Price-amount"); | |
| $price.each(function(index, item) { | |
| var $this = $(item); | |
| var text = $this.clone().children().remove().end().text(); | |
| var $currency = $this.find(".woocommerce-Price-currencySymbol"); | |
| $this.html(Number(text.replace(/[^0-9\.-]+/g,""))).append($currency); | |
| }); |
| 1. Сетка bootstrap 12 колоночная | |
| 2. Задание дефолтных стилей для типографии h1-h6, p, ul, ol, | |
| 3. Верстка дополнительных страниц: search, special, cart, ... | |
| 4. |
| prettify(num) { | |
| const n = num.toString() | |
| return n.replace(/(\d{1,3}(?=(?:\d\d\d)+(?!\d)))/g, "$1" + " ") | |
| }, |
| select { | |
| background: #fff; | |
| border: 1px solid #eee; | |
| border-radius: 3px; | |
| padding: 3px 22px 3px 3px; | |
| background-image: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M7.406 7.828l4.594 4.594 4.594-4.594 1.406 1.406-6 6-6-6z'%3E%3C/path%3E%3C/svg%3E"); | |
| background-position: calc(100% - 3px) 50%; | |
| background-repeat: no-repeat; | |
| background-size: 16px; | |
| -webkit-appearance: none; |
Ps: The current setup was done on 01-04-19
Project Dependency Versions at the time 👇
"react": "^16.7.0",
"react-dom": "^16.7.0",
"react-scripts": "2.1.3",
"typescript": "^3.2.2"
"tslint": "^5.12.0",
"tslint-config-prettier": "^1.17.0",| module.exports = { | |
| parser: 'babel-eslint', | |
| extends: ['airbnb'], | |
| plugins: ['prettier'], | |
| env: { | |
| browser: true, | |
| }, | |
| rules: { | |
| 'react/jsx-filename-extension': 'off', | |
| 'linebreak-style': 0, |
| /* src/actions/clients.js */ | |
| import * as types from '../constants/chats' | |
| import callApi from '../utils/call-api' | |
| export function fetchAllClients() { | |
| return (dispatch) => { | |
| dispatch({ | |
| type: types.FETCH_ALL_CHATS_REQUEST, |
| if ('serviceWorker' in navigator) { | |
| window.addEventListener('load', async function() { | |
| const registration = await navigator.serviceWorker.register('/service-worker.js'); | |
| if (registration.waiting && registration.active) { | |
| // The page has been loaded when there's already a waiting and active SW. | |
| // This would happen if skipWaiting isn't being called, and there are | |
| // still old tabs open. | |
| console.log('Please close all tabs to get updates.'); | |
| } else { | |
| // updatefound is also fired for the very first install. ¯\_(ツ)_/¯ |