WIP(shops): start wiring up buy modals

This commit is contained in:
Sabe Jones
2024-03-11 16:09:16 -05:00
parent 0ead06937b
commit 0aa9d4d1d5
14 changed files with 28 additions and 38 deletions

View File

@@ -218,13 +218,12 @@
.btn-show-more { .btn-show-more {
display: block; display: block;
width: 100%; width: 100%;
margin-top: 12px;
padding: 8px; padding: 8px;
font-size: 14px; font-size: 14px;
line-height: 1.43; line-height: 1.43;
font-weight: bold; font-weight: bold;
text-align: center; text-align: center;
background: $gray-600; background: $gray-500;
color: $gray-200 !important; // Otherwise it gets ignored when used on an A element color: $gray-200 !important; // Otherwise it gets ignored when used on an A element
box-shadow: none; box-shadow: none;

View File

@@ -35,7 +35,7 @@
import appearance from '@/../../common/script/content/appearance'; import appearance from '@/../../common/script/content/appearance';
import { subPageMixin } from '../../mixins/subPage'; import { subPageMixin } from '../../mixins/subPage';
import { userStateMixin } from '../../mixins/userState'; import { userStateMixin } from '../../mixins/userState';
import { avatarEditorUtilies } from '../../mixins/avatarEditUtilities'; import { avatarEditorUtilities } from '../../mixins/avatarEditUtilities';
import subMenu from './sub-menu'; import subMenu from './sub-menu';
import customizeOptions from './customize-options'; import customizeOptions from './customize-options';
import gem from '@/assets/svg/gem.svg'; import gem from '@/assets/svg/gem.svg';
@@ -51,7 +51,7 @@ export default {
mixins: [ mixins: [
subPageMixin, subPageMixin,
userStateMixin, userStateMixin,
avatarEditorUtilies, avatarEditorUtilities,
], ],
props: [ props: [
'editing', 'editing',

View File

@@ -67,11 +67,11 @@
<script> <script>
import gem from '@/assets/svg/gem.svg'; import gem from '@/assets/svg/gem.svg';
import gold from '@/assets/svg/gold.svg'; import gold from '@/assets/svg/gold.svg';
import { avatarEditorUtilies } from '../../mixins/avatarEditUtilities'; import { avatarEditorUtilities } from '../../mixins/avatarEditUtilities';
export default { export default {
mixins: [ mixins: [
avatarEditorUtilies, avatarEditorUtilities,
], ],
props: ['items', 'currentValue', 'fullSet'], props: ['items', 'currentValue', 'fullSet'],
data () { data () {

View File

@@ -60,7 +60,7 @@
import appearance from '@/../../common/script/content/appearance'; import appearance from '@/../../common/script/content/appearance';
import { subPageMixin } from '../../mixins/subPage'; import { subPageMixin } from '../../mixins/subPage';
import { userStateMixin } from '../../mixins/userState'; import { userStateMixin } from '../../mixins/userState';
import { avatarEditorUtilies } from '../../mixins/avatarEditUtilities'; import { avatarEditorUtilities } from '../../mixins/avatarEditUtilities';
import subMenu from './sub-menu'; import subMenu from './sub-menu';
import customizeOptions from './customize-options'; import customizeOptions from './customize-options';
import gem from '@/assets/svg/gem.svg'; import gem from '@/assets/svg/gem.svg';
@@ -76,7 +76,7 @@ export default {
mixins: [ mixins: [
subPageMixin, subPageMixin,
userStateMixin, userStateMixin,
avatarEditorUtilies, avatarEditorUtilities,
], ],
props: [ props: [
'editing', 'editing',

View File

@@ -81,7 +81,7 @@ import appearance from '@/../../common/script/content/appearance';
import appearanceSets from '@/../../common/script/content/appearance/sets'; import appearanceSets from '@/../../common/script/content/appearance/sets';
import { subPageMixin } from '../../mixins/subPage'; import { subPageMixin } from '../../mixins/subPage';
import { userStateMixin } from '../../mixins/userState'; import { userStateMixin } from '../../mixins/userState';
import { avatarEditorUtilies } from '../../mixins/avatarEditUtilities'; import { avatarEditorUtilities } from '../../mixins/avatarEditUtilities';
import subMenu from './sub-menu'; import subMenu from './sub-menu';
import customizeOptions from './customize-options'; import customizeOptions from './customize-options';
import gem from '@/assets/svg/gem.svg'; import gem from '@/assets/svg/gem.svg';
@@ -97,7 +97,7 @@ export default {
mixins: [ mixins: [
subPageMixin, subPageMixin,
userStateMixin, userStateMixin,
avatarEditorUtilies, avatarEditorUtilities,
], ],
props: [ props: [
'editing', 'editing',

View File

@@ -36,7 +36,7 @@ import appearance from '@/../../common/script/content/appearance';
import appearanceSets from '@/../../common/script/content/appearance/sets'; import appearanceSets from '@/../../common/script/content/appearance/sets';
import { subPageMixin } from '../../mixins/subPage'; import { subPageMixin } from '../../mixins/subPage';
import { userStateMixin } from '../../mixins/userState'; import { userStateMixin } from '../../mixins/userState';
import { avatarEditorUtilies } from '../../mixins/avatarEditUtilities'; import { avatarEditorUtilities } from '../../mixins/avatarEditUtilities';
import subMenu from './sub-menu'; import subMenu from './sub-menu';
import customizeOptions from './customize-options'; import customizeOptions from './customize-options';
import gem from '@/assets/svg/gem.svg'; import gem from '@/assets/svg/gem.svg';
@@ -56,7 +56,7 @@ export default {
mixins: [ mixins: [
subPageMixin, subPageMixin,
userStateMixin, userStateMixin,
avatarEditorUtilies, avatarEditorUtilities,
], ],
props: [ props: [
'editing', 'editing',

View File

@@ -1187,7 +1187,7 @@ import gold from '@/assets/svg/gold.svg';
import arrowRight from '@/assets/svg/arrow_right.svg'; import arrowRight from '@/assets/svg/arrow_right.svg';
import arrowLeft from '@/assets/svg/arrow_left.svg'; import arrowLeft from '@/assets/svg/arrow_left.svg';
import svgClose from '@/assets/svg/close.svg'; import svgClose from '@/assets/svg/close.svg';
import { avatarEditorUtilies } from '../mixins/avatarEditUtilities'; import { avatarEditorUtilities } from '../mixins/avatarEditUtilities';
export default { export default {
components: { components: {
@@ -1201,7 +1201,7 @@ export default {
toggleSwitch, toggleSwitch,
usernameForm, usernameForm,
}, },
mixins: [guide, notifications, avatarEditorUtilies], mixins: [guide, notifications, avatarEditorUtilities],
data () { data () {
const backgroundShopSets = shops.getBackgroundShopSets(); const backgroundShopSets = shops.getBackgroundShopSets();

View File

@@ -89,19 +89,19 @@
v-if="item.value > 0 && !(item.key === 'gem' && gemsLeft < 1)" v-if="item.value > 0 && !(item.key === 'gem' && gemsLeft < 1)"
class="purchase-amount" class="purchase-amount"
> >
<!-- this is where the pretty item cost element lives --> <div class="item-cost justify-content-center my-3">
<div class="item-cost">
<span <span
class="cost" class="cost d-flex mx-auto"
:class="getPriceClass()" :class="getPriceClass()"
> >
<span <span
class="svg-icon inline icon-24" class="svg-icon icon-24 my-auto mr-1"
aria-hidden="true" aria-hidden="true"
v-html="icons[getPriceClass()]" v-html="icons[getPriceClass()]"
> >
</span> </span>
<span <span
class="my-auto"
:class="getPriceClass()" :class="getPriceClass()"
>{{ item.value }}</span> >{{ item.value }}</span>
</span> </span>
@@ -452,14 +452,11 @@
} }
.item-cost { .item-cost {
display: inline-flex;
margin: 16px 0;
align-items: center;
height: 40px; height: 40px;
} }
.cost { .cost {
display: inline-block; width: fit-content;
font-family: sans-serif; font-family: sans-serif;
font-size: 1.25rem; font-size: 1.25rem;
font-weight: bold; font-weight: bold;
@@ -470,19 +467,16 @@
&.gems { &.gems {
color: $green-10; color: $green-10;
background-color: rgba(36, 204, 143, 0.15); background-color: rgba(36, 204, 143, 0.15);
align-items: center;
} }
&.gold { &.gold {
color: $yellow-5; color: $yellow-5;
background-color: rgba(255, 190, 93, 0.15); background-color: rgba(255, 190, 93, 0.15);
align-items: center;
} }
&.hourglasses { &.hourglasses {
color: $hourglass-color; color: $hourglass-color;
background-color: rgba(41, 149, 205, 0.15); background-color: rgba(41, 149, 205, 0.15);
align-items: center;
} }
} }

View File

@@ -38,7 +38,6 @@
<div class="p-4"> <div class="p-4">
<h1 <h1
v-once v-once
class="mb-4"
> >
{{ $t('customizations') }} {{ $t('customizations') }}
</h1> </h1>
@@ -46,7 +45,7 @@
v-for="category in categories" v-for="category in categories"
:key="category.identifier" :key="category.identifier"
> >
<h2 class="mb-3"> <h2 class="mb-3 mt-4">
{{ category.text }} {{ category.text }}
</h2> </h2>
<item-rows <item-rows
@@ -67,6 +66,7 @@
:price-type="ctx.item.currency" :price-type="ctx.item.currency"
:empty-item="false" :empty-item="false"
:show-popover="Boolean(ctx.item.text)" :show-popover="Boolean(ctx.item.text)"
@click="selectItem(ctx.item)"
/> />
</template> </template>
</item-rows> </item-rows>
@@ -190,6 +190,9 @@ export default {
return category.items.filter(item => !searchBy return category.items.filter(item => !searchBy
|| item.text.toLowerCase().includes(searchBy)); || item.text.toLowerCase().includes(searchBy));
}, },
selectItem (item) {
this.$root.$emit('buyModal::showItem', item);
},
}, },
}; };
</script> </script>

View File

@@ -193,6 +193,7 @@
font-size: 12px; font-size: 12px;
font-weight: bold; font-weight: bold;
line-height: 1.33; line-height: 1.33;
margin-bottom: 1px;
&.gems { &.gems {
color: $green-1; color: $green-1;
@@ -367,6 +368,7 @@ export default {
this.$emit('click', {}); this.$emit('click', {});
}, },
blur () { blur () {
if (!this.$refs?.popover) return;
this.$refs.popover.$emit('enable'); this.$refs.popover.$emit('enable');
}, },
getPrice () { getPrice () {

View File

@@ -22,20 +22,12 @@
:show-all="showAll" :show-all="showAll"
@click="toggleItemsToShow()" @click="toggleItemsToShow()"
/> />
<div
v-else
class="fill-height"
></div>
</div> </div>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '~@/assets/scss/colors.scss';
.fill-height {
height: 38px; // button + margin + padding
}
.item-rows { .item-rows {
margin-right: -1.5rem; margin-right: -1.5rem;
} }

View File

@@ -1,6 +1,6 @@
<template> <template>
<button <button
class="btn btn-flat btn-show-more mb-4" class="btn btn-flat btn-show-more mt-2"
@click="$emit('click')" @click="$emit('click')"
> >
<span class="button-text"> <span class="button-text">

View File

@@ -9,7 +9,7 @@ import appearanceSets from '@/../../common/script/content/appearance/sets';
import { userStateMixin } from './userState'; import { userStateMixin } from './userState';
export const avatarEditorUtilies = { // eslint-disable-line import/prefer-default-export export const avatarEditorUtilities = { // eslint-disable-line import/prefer-default-export
mixins: [userStateMixin], mixins: [userStateMixin],
data () { data () {
return { return {

View File

@@ -549,7 +549,7 @@ shops.getCustomizationsShopCategories = function getCustomizationsShopCategories
const officialPinnedItems = getOfficialPinnedItems(); const officialPinnedItems = getOfficialPinnedItems();
const backgroundsCategory = { const backgroundsCategory = {
identifier: 'backgrounds', identifier: 'background',
text: i18n.t('backgrounds', language), text: i18n.t('backgrounds', language),
}; };
backgroundsCategory.items = values(content.backgroundsFlat) backgroundsCategory.items = values(content.backgroundsFlat)