diff --git a/website/client/assets/scss/item.scss b/website/client/assets/scss/item.scss index f880f096a5..d9468d9f9d 100644 --- a/website/client/assets/scss/item.scss +++ b/website/client/assets/scss/item.scss @@ -46,6 +46,10 @@ &.highlight { box-shadow: 0 0 8px 8px rgba($black, 0.16), 0 5px 10px 0 rgba($black, 0.12) !important; } + + &.highlight-border { + border-color: $purple-500; + } } .flat .item { diff --git a/website/client/assets/scss/modal.scss b/website/client/assets/scss/modal.scss index 27993d83c9..dc79171453 100644 --- a/website/client/assets/scss/modal.scss +++ b/website/client/assets/scss/modal.scss @@ -22,7 +22,6 @@ line-height: 1.2; text-align: center; color: $gray-50; - display: inline-block; } .text { diff --git a/website/client/components/inventory/equipment/equipGearModal.vue b/website/client/components/inventory/equipment/equipGearModal.vue new file mode 100644 index 0000000000..0a1b884ed4 --- /dev/null +++ b/website/client/components/inventory/equipment/equipGearModal.vue @@ -0,0 +1,165 @@ + + + + diff --git a/website/client/components/inventory/equipment/index.vue b/website/client/components/inventory/equipment/index.vue index cd31e6aed2..48c2d1990b 100644 --- a/website/client/components/inventory/equipment/index.vue +++ b/website/client/components/inventory/equipment/index.vue @@ -22,10 +22,14 @@ h1.float-left.mb-0.page-header(v-once) {{ $t('equipment') }} .float-right span.dropdown-label {{ $t('sortBy') }} - b-dropdown(:text="'Sort 1'", right=true) - b-dropdown-item(href="#") Option 1 - b-dropdown-item(href="#") Option 2 - b-dropdown-item(href="#") Option 3 + b-dropdown(:text="$t(selectedSortGearBy)", right=true) + b-dropdown-item( + v-for="sort in sortGearBy", + @click="selectedSortGearBy = sort", + :active="selectedSortGearBy === sort", + :key="sort" + ) {{ $t(sort) }} + span.dropdown-label {{ $t('groupBy2') }} b-dropdown(:text="$t(groupBy === 'type' ? 'equipmentType' : 'class')", right=true) b-dropdown-item(@click="groupBy = 'type'", :active="groupBy === 'type'") {{ $t('equipmentType') }} @@ -88,10 +92,11 @@ ) h2 | {{ group.label }} + | span.badge.badge-pill.badge-default {{items[group.key].length}} itemRows( - :items="items[group.key]", + :items="sortItems(items[group.key], selectedSortGearBy)", :itemWidth=94, :itemMargin=24, :noItemsLabel="$t('noGearItemsOfType', { type: group.label })" @@ -102,28 +107,32 @@ :itemContentClass="'shop_' + context.item.key", :emptyItem="!context.item || context.item.key.indexOf('_base_0') !== -1", :key="context.item.key", + @click="openEquipDialog(context.item)" ) template(slot="itemBadge", scope="context") starBadge( :selected="activeItems[context.item.type] === context.item.key", :show="!costume || user.preferences.costume", - @click="equip(context.item)", + @click="openEquipDialog(context.item)", ) template(slot="popoverContent", scope="context") equipmentAttributesPopover(:item="context.item") - - + equipGearModal( + :item="gearToEquip", + @equipItem="equipItem($event)", + @change="changeModalState($event)", + :costumeMode="costume", + :isEquipped="gearToEquip == null ? false : activeItems[gearToEquip.type] === gearToEquip.key" + ) + diff --git a/website/client/components/ui/drawer.vue b/website/client/components/ui/drawer.vue index 9602ab93e6..ae52fc6d8c 100644 --- a/website/client/components/ui/drawer.vue +++ b/website/client/components/ui/drawer.vue @@ -92,7 +92,7 @@ } .drawer-slider { - padding: 12px 0 0 0; + padding: 12px 0 0 8px; overflow-x: auto; overflow-y: hidden; white-space: nowrap; diff --git a/website/client/components/ui/itemRows.vue b/website/client/components/ui/itemRows.vue index 2dbace0fd9..c05b24a683 100644 --- a/website/client/components/ui/itemRows.vue +++ b/website/client/components/ui/itemRows.vue @@ -10,7 +10,7 @@ div(v-if="items.length === 0") p(v-once) {{ noItemsLabel }} - .btn.btn-show-more( + .btn-flat.btn-show-more( @click="showAll = !showAll", v-if="items.length > itemsPerRow()" ) {{ showAll ? $t('showLess') : $t('showMore') }} diff --git a/website/client/directives/dragdrop.directive.js b/website/client/directives/dragdrop.directive.js index 03b7cc5ab9..d8aedafb82 100644 --- a/website/client/directives/dragdrop.directive.js +++ b/website/client/directives/dragdrop.directive.js @@ -1,8 +1,10 @@ +/* import {emit} from './directive.common'; + import _keys from 'lodash/keys'; import _without from 'lodash/without'; - +*/ /** * DRAG_GROUP is a static custom value * KEY_OF_ITEM @@ -11,14 +13,15 @@ import _without from 'lodash/without'; * v-drag.drop.DRAG_GROUP="KEY_OF_ITEM" @itemDropped="callback" @itemDragOver="optional" */ +/* const DROPPED_EVENT_NAME = 'itemDropped'; const DRAGSTART_EVENT_NAME = 'itemDragStart'; const DRAGEND_EVENT_NAME = 'itemDragEnd'; const DRAGOVER_EVENT_NAME = 'itemDragOver'; const DRAGLEAVE_EVENT_NAME = 'itemDragLeave'; - +*/ export default { - bind (el, binding, vnode) { + /* bind (el, binding, vnode) { el.isDropHandler = binding.modifiers.drop === true; el.dragGroup = _without(_keys(binding.modifiers), 'drop')[0]; el.key = binding.value; @@ -32,17 +35,20 @@ export default { }; emit(vnode, DRAGSTART_EVENT_NAME, dragStartEventData); + + if(!el.handleDragEnd) { + el.handleDragEnd = () => { + let dragEndEventData = {}; + emit(vnode, DRAGEND_EVENT_NAME, dragEndEventData); + }; + + // need to add the listener after the drag begin, cause its fired right after start :/ + setTimeout(function () { + el.addEventListener('dragend', el.handleDragEnd); + }, 50); + } }; el.addEventListener('dragstart', el.handleDrag); - - el.handleDragEnd = () => { - let dragEndEventData = {}; - - emit(vnode, DRAGEND_EVENT_NAME, dragEndEventData); - }; - - - el.addEventListener('dragend', el.handleDrag); } else { el.handleDragOver = (ev) => { let dragOverEventData = { @@ -51,6 +57,7 @@ export default { event: ev, }; + console.info('dragover'); emit(vnode, DRAGOVER_EVENT_NAME, dragOverEventData); if (dragOverEventData.dropable) { @@ -62,10 +69,13 @@ export default { draggingKey: ev.dataTransfer.getData('KEY'), }; + console.info('dragdrop'); emit(vnode, DROPPED_EVENT_NAME, dropEventData); }; el.handleDragLeave = () => { + + console.info('dragleave'); emit(vnode, DRAGLEAVE_EVENT_NAME, {}); }; @@ -73,7 +83,7 @@ export default { el.addEventListener('dragleave', el.handleDragLeave); el.addEventListener('drop', el.handleDrop); } - }, + }, */ unbind (el) { if (!el.isDropHandler) { diff --git a/website/client/store/actions/common.js b/website/client/store/actions/common.js index f9adb779bd..ae242fea7b 100644 --- a/website/client/store/actions/common.js +++ b/website/client/store/actions/common.js @@ -23,12 +23,11 @@ export function hatch (store, params) { // .catch((err) => console.error('equip', err)); } -export function feed (store, params) { +export async function feed (store, params) { const user = store.state.user.data; feedOp(user, {params}); - axios + let response = await axios .post(`/api/v3/user/feed/${params.pet}/${params.food}`); - // TODO - // .then((res) => console.log('equip', res)) - // .catch((err) => console.error('equip', err)); + + return response.data; } diff --git a/website/common/locales/en/gear.json b/website/common/locales/en/gear.json index 97dea78e86..2d2d71b1b8 100644 --- a/website/common/locales/en/gear.json +++ b/website/common/locales/en/gear.json @@ -662,8 +662,8 @@ "armorArmoireYellowPartyDressText": "Yellow Party Dress", "armorArmoireYellowPartyDressNotes": "Yellow Party Dress: You're perceptive, strong, smart, and so fashionable! Increases Perception, Strength, and Intelligence by <%= attrs %> each. Enchanted Armoire: Yellow Hairbow Set (Item 2 of 2).", - "headgear": "headgear", - "headgearCapitalized": "Headgear", + "headgear": "helm", + "headgearCapitalized": "Helm", "headBase0Text": "No Helm", "headBase0Notes": "No headgear.", diff --git a/website/common/locales/en/newClient.json b/website/common/locales/en/newClient.json index 53189da793..bda3f7c2c9 100644 --- a/website/common/locales/en/newClient.json +++ b/website/common/locales/en/newClient.json @@ -274,5 +274,9 @@ "self_improvement": "Self-Improvement", "spirituality": "Spirituality", "time_management": "Time-Management + Accountability", - "recovery_support_groups": "Recovery + Support Groups" + "recovery_support_groups": "Recovery + Support Groups", + "equip": "Equip", + "unequip": "Unequip", + "sortByName": "Name", + "haveHatchablePet": "You have a <%= potion %> hatching potion and <%= egg %> egg to hatch this pet! Click the paw print to hatch." }