Tooltip component now not responsible (but mobile friendly) & tooltips
This commit is contained in:
parent
ce8c8f97ec
commit
f9c289aacd
@ -46,6 +46,7 @@
|
|||||||
"mini-css-extract-plugin": "^0.4.2",
|
"mini-css-extract-plugin": "^0.4.2",
|
||||||
"portal-vue": "^2.1.7",
|
"portal-vue": "^2.1.7",
|
||||||
"vue-dragscroll": "^1.10.2",
|
"vue-dragscroll": "^1.10.2",
|
||||||
|
"vue-removed-hook-mixin": "^0.1.1",
|
||||||
"vue2-leaflet": "^1.0.2",
|
"vue2-leaflet": "^1.0.2",
|
||||||
"vuex": "^3.0.1",
|
"vuex": "^3.0.1",
|
||||||
"vuex-class": "^0.3.1",
|
"vuex-class": "^0.3.1",
|
||||||
|
@ -29,7 +29,8 @@
|
|||||||
|
|
||||||
<div class="stop__actions flex-space-left">
|
<div class="stop__actions flex-space-left">
|
||||||
<button class="btn btn-action" @click="showTrip = !showTrip">
|
<button class="btn btn-action" @click="showTrip = !showTrip">
|
||||||
<fa :icon="['far', 'code-commit']" rotation="90" />
|
<tooltip placement="top">pokaż/ukryj trasę</tooltip>
|
||||||
|
<fa :icon="['far', 'code-commit']" />
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn btn-action" @click="remove(favourite)">
|
<button class="btn btn-action" @click="remove(favourite)">
|
||||||
|
<tooltip placement="left">usuń</tooltip>
|
||||||
<fa :icon="['fal', 'trash-alt']"></fa>
|
<fa :icon="['fal', 'trash-alt']"></fa>
|
||||||
</button>
|
</button>
|
||||||
</li>
|
</li>
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
<portal to="popups">
|
<portal to="popups">
|
||||||
<popper class="popper--tooltip" arrow :reference="element" :placement="placement" v-if="show">
|
<transition name="fade">
|
||||||
<slot />
|
<popper class="popper--tooltip" arrow :reference="element" :placement="placement" v-if="show" :responsive="false">
|
||||||
</popper>
|
<slot />
|
||||||
|
</popper>
|
||||||
|
</transition>
|
||||||
</portal>
|
</portal>
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@include vue-animation(fade, 250ms ease-in-out) {
|
@include vue-animation(fade, 150ms ease-in-out) {
|
||||||
0% {
|
0% {
|
||||||
opacity: 0
|
opacity: 0
|
||||||
}
|
}
|
||||||
|
@ -5,14 +5,23 @@ import { Prop } from "vue-property-decorator";
|
|||||||
@Component({ template: require('../../components/tooltip.html') })
|
@Component({ template: require('../../components/tooltip.html') })
|
||||||
export class TooltipComponent extends Vue {
|
export class TooltipComponent extends Vue {
|
||||||
@Prop({ type: String, default: "auto" }) public placement: string;
|
@Prop({ type: String, default: "auto" }) public placement: string;
|
||||||
|
@Prop({ type: Number, default: 100 }) public delay: number;
|
||||||
|
|
||||||
public show: boolean = false;
|
public show: boolean = false;
|
||||||
public element: Element = null;
|
public element: Element = null;
|
||||||
|
|
||||||
private _events: { [event: string]: any };
|
private _events: { [event: string]: any };
|
||||||
|
private _timeout: number;
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
this.$el.parentElement.addEventListener('mouseenter', this._events['mouseenter'] = () => this.show = true);
|
this.$el.parentElement.addEventListener('mouseenter', this._events['mouseenter'] = () => {
|
||||||
this.$el.parentElement.addEventListener('mouseleave', this._events['mouseleave'] = () => this.show = false);
|
this._timeout = window.setTimeout(() => { this.show = true }, this.delay);
|
||||||
|
});
|
||||||
|
|
||||||
|
this.$el.parentElement.addEventListener('mouseleave', this._events['mouseleave'] = () => {
|
||||||
|
window.clearTimeout(this._timeout);
|
||||||
|
this.show = false
|
||||||
|
});
|
||||||
|
|
||||||
this.element = this.$el.parentElement;
|
this.element = this.$el.parentElement;
|
||||||
}
|
}
|
||||||
|
@ -2,9 +2,11 @@ import Vue from 'vue';
|
|||||||
import { Component, Prop, Watch } from "vue-property-decorator";
|
import { Component, Prop, Watch } from "vue-property-decorator";
|
||||||
import Popper, { Placement } from "popper.js";
|
import Popper, { Placement } from "popper.js";
|
||||||
import { Portal } from "portal-vue";
|
import { Portal } from "portal-vue";
|
||||||
|
import vueRemovedHookMixin from "vue-removed-hook-mixin";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
template: require("../../components/popper.html")
|
template: require("../../components/popper.html"),
|
||||||
|
mixins: [ vueRemovedHookMixin ]
|
||||||
})
|
})
|
||||||
export class PopperComponent extends Vue {
|
export class PopperComponent extends Vue {
|
||||||
@Prop([ String, HTMLElement ])
|
@Prop([ String, HTMLElement ])
|
||||||
@ -19,6 +21,9 @@ export class PopperComponent extends Vue {
|
|||||||
@Prop(Boolean)
|
@Prop(Boolean)
|
||||||
public arrow: boolean;
|
public arrow: boolean;
|
||||||
|
|
||||||
|
@Prop({ type: Boolean, default: true })
|
||||||
|
public responsive: boolean;
|
||||||
|
|
||||||
private _event;
|
private _event;
|
||||||
private _popper;
|
private _popper;
|
||||||
|
|
||||||
@ -60,11 +65,11 @@ export class PopperComponent extends Vue {
|
|||||||
modifiers: {
|
modifiers: {
|
||||||
arrow: { enabled: this.arrow, element: this.$refs['arrow'] as Element },
|
arrow: { enabled: this.arrow, element: this.$refs['arrow'] as Element },
|
||||||
responsive: {
|
responsive: {
|
||||||
enabled: true,
|
enabled: this.responsive,
|
||||||
order: 890,
|
order: 890,
|
||||||
fn(data) {
|
fn(data) {
|
||||||
if (window.innerWidth < 560) {
|
if (window.innerWidth < 560) {
|
||||||
data.instance.options.placement = 'bottom';
|
data.instance.options.placement = 'top';
|
||||||
data.styles.transform = `translate3d(0, ${data.offsets.popper.top}px, 0)`;
|
data.styles.transform = `translate3d(0, ${data.offsets.popper.top}px, 0)`;
|
||||||
data.styles.right = '0';
|
data.styles.right = '0';
|
||||||
data.styles.left = '0';
|
data.styles.left = '0';
|
||||||
@ -95,9 +100,12 @@ export class PopperComponent extends Vue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
this._popper.destroy();
|
|
||||||
this._event && document.removeEventListener('click', this._event, { capture: true });
|
this._event && document.removeEventListener('click', this._event, { capture: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
removed() {
|
||||||
|
this._popper.destroy();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Component({ template: require('../../components/fold.html') })
|
@Component({ template: require('../../components/fold.html') })
|
||||||
|
@ -86,6 +86,7 @@
|
|||||||
<span class="text">Przystanki</span>
|
<span class="text">Przystanki</span>
|
||||||
</h2>
|
</h2>
|
||||||
<button class="btn btn-action flex-space-left" @click="clear">
|
<button class="btn btn-action flex-space-left" @click="clear">
|
||||||
|
<tooltip placement="top">usuń wszystkie</tooltip>
|
||||||
<fa :icon="['fal', 'trash-alt']" fixed-width></fa>
|
<fa :icon="['fal', 'trash-alt']" fixed-width></fa>
|
||||||
</button>
|
</button>
|
||||||
</header>
|
</header>
|
||||||
@ -118,6 +119,7 @@
|
|||||||
Wybierz przystanki
|
Wybierz przystanki
|
||||||
</h2>
|
</h2>
|
||||||
<button class="btn btn-action" @click="visibility.picker = 'favourites'">
|
<button class="btn btn-action" @click="visibility.picker = 'favourites'">
|
||||||
|
<tooltip placement="top">Zapisane</tooltip>
|
||||||
<fa :icon="['fal', 'star']" fixed-witdth></fa>
|
<fa :icon="['fal', 'star']" fixed-witdth></fa>
|
||||||
</button>
|
</button>
|
||||||
</template>
|
</template>
|
||||||
@ -127,6 +129,7 @@
|
|||||||
Zapisane
|
Zapisane
|
||||||
</h2>
|
</h2>
|
||||||
<button class="btn btn-action" @click="visibility.picker = 'search'">
|
<button class="btn btn-action" @click="visibility.picker = 'search'">
|
||||||
|
<tooltip placement="top">Wybierz przystanki</tooltip>
|
||||||
<fa :icon="['fal', 'search']" fixed-witdth></fa>
|
<fa :icon="['fal', 'search']" fixed-witdth></fa>
|
||||||
</button>
|
</button>
|
||||||
</template>
|
</template>
|
||||||
|
@ -6460,6 +6460,11 @@ vue-property-decorator@^7.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
vue-class-component "^6.2.0"
|
vue-class-component "^6.2.0"
|
||||||
|
|
||||||
|
vue-removed-hook-mixin@^0.1.1:
|
||||||
|
version "0.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/vue-removed-hook-mixin/-/vue-removed-hook-mixin-0.1.1.tgz#df2e939c87d8ecf1707f0b3b3a21def81dedbaf5"
|
||||||
|
integrity sha512-ElO0fn1QT25S7WVHUS7rSug7qBHwR/OPxBTdaH2+DdMz0A/lyw3H40c/Q08k2xvndmx7tAglsevcTk2DgKPsvw==
|
||||||
|
|
||||||
vue2-leaflet@^1.0.2:
|
vue2-leaflet@^1.0.2:
|
||||||
version "1.2.3"
|
version "1.2.3"
|
||||||
resolved "https://registry.yarnpkg.com/vue2-leaflet/-/vue2-leaflet-1.2.3.tgz#00ddeb9db4fb9a5e3b8f9c09cd97a4734366415e"
|
resolved "https://registry.yarnpkg.com/vue2-leaflet/-/vue2-leaflet-1.2.3.tgz#00ddeb9db4fb9a5e3b8f9c09cd97a4734366415e"
|
||||||
|
Loading…
Reference in New Issue
Block a user