function popupLibraryOpen() {
isLibraryOpen.value = true
}
<MyButton @click="popupLibraryOpen">Библиотека игр</MyButton>
<MyButton @click="isLibraryOpen = true">Библиотека игр</MyButton>
function removeSomeShit(arr) {
const table = {};
const result = [];
for(const current of arr) {
const {uid, owner, createdAt} = current;
const uidOvnerKey = `${uid}\0${owner}`;
const ownerUidKey = `${owner}\0${uid}`;
const matched = table[uidOvnerKey];
if (matched) {
delete table[uidOvnerKey];
result.push(matched.createdAt > createdAt ? matched : current);
} else {
table[ownerUidKey] = current;
}
};
return Object.values(table).concat(result);
}
<div>
<p>1111</p>
<v-cost />
</div>
<div>
<p>22222</p>
<v-cost />
</div>
<div v-for="{ title } in arr" :key="title">
<p>{{title}}</p>
<div class="cost">
<div class="cost__title">test:</div>
<div class="cost__number">3 400 </div>
</div>
</div>
render
функции, но там уже никаких шаблонов - чистый код. Тема "продвинутая", и в твоём случае явно не нужная, так разбирайся сам если хочешь.:) if (el === event.target || el.contains(event.target)) {
-> if (el !== event.target && !el.contains(event.target)) {
-> if (!el.contains(event.target)) {
// contains работает на самого себя, дополнительно проверять не надо
@click
.value
, иначе у тебя директива поломается при его реактивном изменении(обычно конечно не меняют, но зачем закладывать бомбу?). // если esm
//const _dirname = path.dirname(fileURLToPath(import.meta.url));
// просто берём весь путь, и отрезаем его перед первым вхождением node_modules
const appRoot = path.resolve(__dirname).split(/[/\\]node_modules/, 1)[0];
// если esm
// import(appRoot + "/dbconfig.js").then(...);
require(appRoot + "/dbconfig.js");
function isPermittedObject(obj) {
if (!obj) return false;
const permitted = new Set(["v", "c", "g"]);
let max = 1;
for (const key in obj)
if (!permitted.has(key) || !max--)
return false;
return true;
}
console.log(!isPermittedObject({
v: 1,
c: 3,
g: 5
}))
console.log(!isPermittedObject({
v: 1
}))
calc(100vw - 100%)
- ширина сколлбара. Используя это - можно что-то намагичить.:)calc(min(100vw - 100%, 1px) * 10)
, где результат min будет 1px или 0px в зависимости от наличия скроллбара, а 10 - любой нужный множитель.:)