Skip to content

Commit c96e0da

Browse files
committed
pat tooltop: Change show/hide classes to less generic names.
pat tooltip: Change show/hide classes to ``tooltip-active-click`` resp. ``tooltip-active-hover`` and ``tooltip-inactive``. Fixes: quaive/ploneintranet#3723
1 parent f95d2f1 commit c96e0da

File tree

3 files changed

+74
-21
lines changed

3 files changed

+74
-21
lines changed

CHANGES.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
The `polyfills` bundle can be injected on demand with the `polyfills-loader` script.
1919
- pat tooltip: Remove undocumented "souce: content-html" parameter.
2020
- pat tooltip: Remove undocumented "souce: auto" parameter. This parameter should not be used as it is not explicit enough and would lead to unintuitive behavior.
21+
- pat tooltip: Change show/hide classes to ``tooltip-active-click`` resp. ``tooltip-active-hover`` and ``tooltip-inactive``.
22+
Fixes: https://github.com/quaive/ploneintranet/issues/3723
2123
- Remove outdated pre IE9 browser compatibility polyfill `core/compat`.
2224
- Remove unused `lib/htmlparser`.
2325
- Remove obsolete library `prefixfree`.

src/pat/tooltip/tooltip.js

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ export default Base.extend({
4848
canFetch: true,
4949
},
5050

51+
active_class: "tooltip-active-hover",
52+
inactive_class: "tooltip-inactive",
53+
5154
async init($el, opts) {
5255
const el = this.el;
5356

@@ -79,11 +82,6 @@ export default Base.extend({
7982
el.removeAttribute("title");
8083
}
8184

82-
if (this.options.markInactive) {
83-
// Initially mark "inactive"
84-
el.classList.add("inactive");
85-
}
86-
8785
if (
8886
this.options.trigger === "click" &&
8987
this.options.source === "ajax"
@@ -94,6 +92,14 @@ export default Base.extend({
9492
event.stopPropagation();
9593
});
9694
}
95+
96+
if (this.options.trigger === "click") {
97+
this.active_class = "tooltip-active-click";
98+
}
99+
if (this.options.markInactive) {
100+
// Initially mark as inactive
101+
el.classList.add(this.inactive_class);
102+
}
97103
},
98104

99105
parseOptionsForTippy(opts) {
@@ -272,8 +278,8 @@ export default Base.extend({
272278
}
273279

274280
if (this.options.markInactive) {
275-
this.el.classList.remove("inactive");
276-
this.el.classList.add("active");
281+
this.el.classList.remove(this.inactive_class);
282+
this.el.classList.add(this.active_class);
277283
}
278284

279285
if (this.options.class) {
@@ -288,8 +294,8 @@ export default Base.extend({
288294

289295
_onHide() {
290296
if (this.options.markInactive) {
291-
this.el.classList.remove("active");
292-
this.el.classList.add("inactive");
297+
this.el.classList.remove(this.active_class);
298+
this.el.classList.add(this.inactive_class);
293299
}
294300

295301
if (

src/pat/tooltip/tooltip.test.js

Lines changed: 57 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -699,17 +699,21 @@ describe("pat-tooltip", () => {
699699

700700
let containers;
701701

702-
expect(el.classList.contains("active")).toBeFalsy();
703-
expect(el.classList.contains("inactive")).toBeTruthy();
702+
expect(
703+
el.classList.contains("tooltip-active-click")
704+
).toBeFalsy();
705+
expect(el.classList.contains("tooltip-inactive")).toBeTruthy();
704706

705707
testutils.click($el);
706708
await utils.timeout(1);
707709

708710
expect(spy_show).toHaveBeenCalled();
709711
containers = document.querySelectorAll(".tippy-box");
710712
expect(containers.length).toEqual(1);
711-
expect(el.classList.contains("active")).toBeTruthy();
712-
expect(el.classList.contains("inactive")).toBeFalsy();
713+
expect(
714+
el.classList.contains("tooltip-active-click")
715+
).toBeTruthy();
716+
expect(el.classList.contains("tooltip-inactive")).toBeFalsy();
713717

714718
testutils.click($el);
715719

@@ -721,8 +725,10 @@ describe("pat-tooltip", () => {
721725
// TODO: inspect, why container are not removed.
722726
//containers = document.querySelectorAll(".tippy-box");
723727
//expect(containers.length).toEqual(0);
724-
expect(el.classList.contains("active")).toBeFalsy();
725-
expect(el.classList.contains("inactive")).toBeTruthy();
728+
expect(
729+
el.classList.contains("tooltip-active-click")
730+
).toBeFalsy();
731+
expect(el.classList.contains("tooltip-inactive")).toBeTruthy();
726732

727733
done();
728734
});
@@ -745,17 +751,21 @@ describe("pat-tooltip", () => {
745751

746752
let containers;
747753

748-
expect(el.classList.contains("active")).toBeFalsy();
749-
expect(el.classList.contains("inactive")).toBeFalsy();
754+
expect(
755+
el.classList.contains("tooltip-active-click")
756+
).toBeFalsy();
757+
expect(el.classList.contains("tooltip-inactive")).toBeFalsy();
750758

751759
testutils.click($el);
752760
await utils.timeout(1);
753761

754762
expect(spy_show).toHaveBeenCalled();
755763
containers = document.querySelectorAll(".tippy-box");
756764
expect(containers.length).toEqual(1);
757-
expect(el.classList.contains("active")).toBeFalsy();
758-
expect(el.classList.contains("inactive")).toBeFalsy();
765+
expect(
766+
el.classList.contains("tooltip-active-click")
767+
).toBeFalsy();
768+
expect(el.classList.contains("tooltip-inactive")).toBeFalsy();
759769

760770
testutils.click($el);
761771

@@ -767,8 +777,43 @@ describe("pat-tooltip", () => {
767777
// TODO: inspect, why container are not removed.
768778
//containers = document.querySelectorAll(".tippy-box");
769779
//expect(containers.length).toEqual(0);
770-
expect(el.classList.contains("active")).toBeFalsy();
771-
expect(el.classList.contains("inactive")).toBeFalsy();
780+
expect(
781+
el.classList.contains("tooltip-active-click")
782+
).toBeFalsy();
783+
expect(el.classList.contains("tooltip-inactive")).toBeFalsy();
784+
785+
done();
786+
});
787+
it("when true and trigger is hover, toggles a different active class on the trigger", async (done) => {
788+
const $el = testutils.createTooltip({
789+
data: "mark-inactive: true; trigger: hover",
790+
});
791+
const el = $el[0];
792+
const instance = new pattern($el);
793+
await utils.timeout(1);
794+
795+
const spy_show = spyOn(
796+
instance.tippy.props,
797+
"onShow"
798+
).and.callThrough();
799+
800+
let containers;
801+
802+
expect(
803+
el.classList.contains("tooltip-active-hover")
804+
).toBeFalsy();
805+
expect(el.classList.contains("tooltip-inactive")).toBeTruthy();
806+
807+
testutils.mouseenter($el);
808+
await utils.timeout(1);
809+
810+
expect(spy_show).toHaveBeenCalled();
811+
containers = document.querySelectorAll(".tippy-box");
812+
expect(containers.length).toEqual(1);
813+
expect(
814+
el.classList.contains("tooltip-active-hover")
815+
).toBeTruthy();
816+
expect(el.classList.contains("tooltip-inactive")).toBeFalsy();
772817

773818
done();
774819
});

0 commit comments

Comments
 (0)