import chartist from 'chartist';
VueChartist.Interpolation.simple()
chartist.Interpolation.simple()
т.к. объектов много (~2000) при очистке фильтра страница подлагивает
const videos = document.querySelectorAll('video');
const onPlay = e => videos.forEach(n => n !== e.target && n.pause());
videos.forEach(n => n.addEventListener('play', onPlay));
каждый пункт из этого списка должен выводиться на конкретной странице, например, в виде заголовка
<h1>{{ $route.meta.title }}</h1>
echo implode('<br>', array_map(function($n, $i) use(&$result) {
return
"Книгу ".$result['BOOKS'][$i]['bookName'].
" написали для машины ".$n['name']." в ".$n['year'].
" году, можно заказать по электронной почте ".$result['BOOKS'][$i]['authorEmail'];
}, $result['CARS'], array_keys($result['BOOKS'])));
const letters = {
'а': 'a',
'б': 'b',
'в': 'v',
...
};
state = {
value: '',
translitValue: '',
}
onChange = ({ target: { value } }) => {
this.setState({
value,
translitValue: value.toLowerCase().split('').map(n => letters[n] || n).join(''),
});
}
<input value={this.state.value} onChange={this.onChange} />
<input value={this.state.translitValue} readOnly />
data: () => ({
filters: [ 'ArmorProtective_LowerBody', 'ArmorProtective_Head' ],
activeFilter: null,
...
computed: {
filteredHeads() {
const f = this.activeFilter;
return f
? this.heads.flatMap(n => n[f]).filter(Boolean)
: [];
},
...
<a v-for="f in filters" @click="activeFilter = f">{{ f }}</a>
...
<div v-for="head in filteredHeads">
...
const items = [
{ title: 'London', content: 'London is the capital city of England.' },
{ title: 'Paris', content: 'Paris is the capital of France.' },
{ title: 'Tokyo', content: 'Tokyo is the capital of Japan.' },
];
const TabContent = ({ title, content }) => (
<div className="tabcontent">
<h3>{title}</h3>
<p>{content}</p>
</div>
);
function Tabs({ items }) {
const [ active, setActive ] = React.useState(null);
const openTab = e => setActive(+e.target.dataset.index);
return (
<div>
<div className="tab">
{items.map((n, i) => (
<button
className={`tablinks ${i === active ? 'active' : ''}`}
onClick={openTab}
data-index={i}
>{n.title}</button>
))}
</div>
{items[active] && <TabContent {...items[active]} />}
</div>
);
}
emit
из дочернего компонента, v-on
из родительского. Параметр list
- заменить статическую передачу значения на динамическую: :list="{{ json_encode($tasks) }}"
. Так переданное значение будет рассматриваться не как строка, а в качестве javascript выражения - применять JSON.parse
не нужно. const str = arr
.map(n => `${n[0].toUpperCase()}${n.slice(1)}`)
.join(', ');
// или
const str = arr.reduce((acc, n) => acc + (acc && ', ') + n.replace(/./, m => m.toUpperCase()), '');
// или
const str = arr
.map(n => ''.concat(...Array.from(n, (m, i) => i ? m : m.toUpperCase())))
.join`, `;
есть массив индексов[0, 3, 1, empty, 2]
<...>
должно быть -[100, 400, 200, empty, 300]
for (let i = 0; i < indexes.length; i++) {
if (indexes.hasOwnProperty(i)) {
arr.push(arr[indexes[i]]);
} else {
arr.length++;
}
}
arr.splice(0, arr.length - indexes.length);
arr.splice(0, arr.length, ...indexes.map(i => arr[i]));
ol
на transition-group
:<transition-group tag="ol" name="todo">
<li
v-for="(todo, i) in todos"
:key="todo.id"
@click="todos.splice(i, 1)"
>{{ todo.text }}</li>
</transition-group>
li {
transition: all 0.7s;
}
.todo-leave-active {
position: absolute;
}
.todo-leave-to {
transform: translateX(500px);
opacity: 0;
}
:class="{ 'authorization__label--done': name }"
:class="{ 'authorization__label--done': password }"