From 5dfd0c9102e683b00212bbfea89d775ea6b7c457 Mon Sep 17 00:00:00 2001 From: Johnston Jiaa Date: Sun, 28 Feb 2016 11:48:27 -0500 Subject: [PATCH 1/2] Show tooltip immediately if the tooltip trigger is manual --- spec/tooltip-manager-spec.coffee | 4 ++++ src/tooltip-manager.coffee | 2 ++ src/tooltip.js | 4 +++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/spec/tooltip-manager-spec.coffee b/spec/tooltip-manager-spec.coffee index 87082504a..264d1a3bb 100644 --- a/spec/tooltip-manager-spec.coffee +++ b/spec/tooltip-manager-spec.coffee @@ -28,6 +28,10 @@ describe "TooltipManager", -> hover element, -> expect(document.body.querySelector(".tooltip")).toHaveText("Title") + it "creates a tooltip immediately if the trigger type is manual", -> + manager.add element, title: "Title", trigger: "manual" + expect(document.body.querySelector(".tooltip")).toHaveText("Title") + it "allows jQuery elements to be passed as the target", -> element2 = document.createElement('div') jasmine.attachToDOM(element2) diff --git a/src/tooltip-manager.coffee b/src/tooltip-manager.coffee index 247437535..90f0ab8e6 100644 --- a/src/tooltip-manager.coffee +++ b/src/tooltip-manager.coffee @@ -63,6 +63,8 @@ class TooltipManager # full list of options. You can also supply the following additional options: # * `title` A {String} or {Function} to use for the text in the tip. If # given a function, `this` will be set to the `target` element. + # * `trigger` A {String} that's the same as Bootstrap 'click | hover | focus + # | manual', except 'manual' will show the tooltip immediately. # * `keyBindingCommand` A {String} containing a command name. If you specify # this option and a key binding exists that matches the command, it will # be appended to the title or rendered alone if no title is specified. diff --git a/src/tooltip.js b/src/tooltip.js index 4ea952a64..ad5ce0cdd 100644 --- a/src/tooltip.js +++ b/src/tooltip.js @@ -64,7 +64,9 @@ Tooltip.prototype.init = function (element, options) { if (trigger === 'click') { this.disposables.add(listen(this.element, 'click', this.options.selector, this.toggle.bind(this))) - } else if (trigger !== 'manual') { + } else if (trigger === 'manual') { + this.show() + } else { var eventIn, eventOut if (trigger === 'hover') { From d9ee94031f31abccfdda23d528f8f42ded48fbf0 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Fri, 4 Mar 2016 13:40:16 -0700 Subject: [PATCH 2/2] Test disposal of manually-created tooltips This also prevents subsequent tests from failing due to the manual tooltip never being removed from document.body. --- spec/tooltip-manager-spec.coffee | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spec/tooltip-manager-spec.coffee b/spec/tooltip-manager-spec.coffee index 264d1a3bb..d4bfc1bd6 100644 --- a/spec/tooltip-manager-spec.coffee +++ b/spec/tooltip-manager-spec.coffee @@ -29,8 +29,10 @@ describe "TooltipManager", -> expect(document.body.querySelector(".tooltip")).toHaveText("Title") it "creates a tooltip immediately if the trigger type is manual", -> - manager.add element, title: "Title", trigger: "manual" + disposable = manager.add element, title: "Title", trigger: "manual" expect(document.body.querySelector(".tooltip")).toHaveText("Title") + disposable.dispose() + expect(document.body.querySelector(".tooltip")).toBeNull() it "allows jQuery elements to be passed as the target", -> element2 = document.createElement('div')