@aquera/nile-elements 0.1.39-beta-1.0 → 0.1.39-beta-1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/demo/filenames.txt +1 -1
  2. package/dist/index.cjs.js +1 -1
  3. package/dist/index.esm.js +1 -1
  4. package/dist/index.js +618 -636
  5. package/dist/internal/animate.cjs.js +1 -1
  6. package/dist/internal/animate.cjs.js.map +1 -1
  7. package/dist/internal/animate.esm.js +1 -1
  8. package/dist/nile-avatar/nile-avatar.test.cjs.js +1 -1
  9. package/dist/nile-avatar/nile-avatar.test.cjs.js.map +1 -1
  10. package/dist/nile-avatar/nile-avatar.test.esm.js +1 -1
  11. package/dist/nile-badge/index.cjs.js +1 -1
  12. package/dist/nile-badge/index.esm.js +1 -1
  13. package/dist/nile-badge/nile-badge.cjs.js +1 -1
  14. package/dist/nile-badge/nile-badge.cjs.js.map +1 -1
  15. package/dist/nile-badge/nile-badge.esm.js +1 -1
  16. package/dist/nile-badge/nile-badge.test.cjs.js +1 -1
  17. package/dist/nile-badge/nile-badge.test.cjs.js.map +1 -1
  18. package/dist/nile-badge/nile-badge.test.esm.js +1 -1
  19. package/dist/nile-button/index.cjs.js +1 -1
  20. package/dist/nile-button/index.esm.js +1 -1
  21. package/dist/nile-button/nile-button.cjs.js +1 -1
  22. package/dist/nile-button/nile-button.cjs.js.map +1 -1
  23. package/dist/nile-button/nile-button.esm.js +1 -1
  24. package/dist/nile-button/nile-button.test.cjs.js +1 -1
  25. package/dist/nile-button/nile-button.test.cjs.js.map +1 -1
  26. package/dist/nile-button/nile-button.test.esm.js +1 -1
  27. package/dist/nile-calendar/nile-calendar.test.cjs.js +1 -1
  28. package/dist/nile-calendar/nile-calendar.test.cjs.js.map +1 -1
  29. package/dist/nile-calendar/nile-calendar.test.esm.js +1 -1
  30. package/dist/nile-chip/nile-chip.test.cjs.js +1 -1
  31. package/dist/nile-chip/nile-chip.test.cjs.js.map +1 -1
  32. package/dist/nile-chip/nile-chip.test.esm.js +1 -1
  33. package/dist/nile-dialog/index.cjs.js +1 -1
  34. package/dist/nile-dialog/index.esm.js +1 -1
  35. package/dist/nile-dialog/nile-dialog.cjs.js +1 -1
  36. package/dist/nile-dialog/nile-dialog.cjs.js.map +1 -1
  37. package/dist/nile-dialog/nile-dialog.esm.js +1 -1
  38. package/dist/nile-dialog/nile-dialog.test.cjs.js +1 -1
  39. package/dist/nile-dialog/nile-dialog.test.cjs.js.map +1 -1
  40. package/dist/nile-dialog/nile-dialog.test.esm.js +1 -1
  41. package/dist/nile-drawer/index.cjs.js +1 -1
  42. package/dist/nile-drawer/index.esm.js +1 -1
  43. package/dist/nile-drawer/nile-drawer.cjs.js +1 -1
  44. package/dist/nile-drawer/nile-drawer.cjs.js.map +1 -1
  45. package/dist/nile-drawer/nile-drawer.esm.js +1 -1
  46. package/dist/nile-drawer/nile-drawer.test.cjs.js +1 -1
  47. package/dist/nile-drawer/nile-drawer.test.cjs.js.map +1 -1
  48. package/dist/nile-drawer/nile-drawer.test.esm.js +1 -1
  49. package/dist/nile-icon/icons/svg/index.cjs.js +1 -1
  50. package/dist/nile-icon/icons/svg/index.esm.js +1 -1
  51. package/dist/nile-icon/icons/svg/savings.cjs.js +2 -0
  52. package/dist/nile-icon/icons/svg/savings.cjs.js.map +1 -0
  53. package/dist/nile-icon/icons/svg/savings.esm.js +1 -0
  54. package/dist/nile-icon/index.cjs.js +1 -1
  55. package/dist/nile-icon/index.cjs.js.map +1 -1
  56. package/dist/nile-icon/index.esm.js +1 -1
  57. package/dist/nile-icon/nile-icon.test.cjs.js +1 -1
  58. package/dist/nile-icon/nile-icon.test.cjs.js.map +1 -1
  59. package/dist/nile-icon/nile-icon.test.esm.js +1 -1
  60. package/dist/nile-icon-button/index.cjs.js +1 -1
  61. package/dist/nile-icon-button/index.esm.js +1 -1
  62. package/dist/nile-icon-button/nile-icon-button.cjs.js +1 -1
  63. package/dist/nile-icon-button/nile-icon-button.cjs.js.map +1 -1
  64. package/dist/nile-icon-button/nile-icon-button.esm.js +1 -1
  65. package/dist/nile-input/index.cjs.js +1 -1
  66. package/dist/nile-input/index.esm.js +1 -1
  67. package/dist/nile-input/nile-input.cjs.js +1 -1
  68. package/dist/nile-input/nile-input.cjs.js.map +1 -1
  69. package/dist/nile-input/nile-input.css.cjs.js +1 -1
  70. package/dist/nile-input/nile-input.css.cjs.js.map +1 -1
  71. package/dist/nile-input/nile-input.css.esm.js +12 -4
  72. package/dist/nile-input/nile-input.esm.js +1 -1
  73. package/dist/nile-input/nile-input.test.cjs.js +1 -1
  74. package/dist/nile-input/nile-input.test.cjs.js.map +1 -1
  75. package/dist/nile-input/nile-input.test.esm.js +1 -1
  76. package/dist/nile-menu-item/index.cjs.js +1 -1
  77. package/dist/nile-menu-item/index.esm.js +1 -1
  78. package/dist/nile-menu-item/nile-menu-item.cjs.js +1 -1
  79. package/dist/nile-menu-item/nile-menu-item.cjs.js.map +1 -1
  80. package/dist/nile-menu-item/nile-menu-item.esm.js +1 -1
  81. package/dist/nile-option/index.cjs.js +1 -1
  82. package/dist/nile-option/index.esm.js +1 -1
  83. package/dist/nile-option/nile-option.cjs.js +1 -1
  84. package/dist/nile-option/nile-option.cjs.js.map +1 -1
  85. package/dist/nile-option/nile-option.esm.js +1 -1
  86. package/dist/nile-select/index.cjs.js +1 -1
  87. package/dist/nile-select/index.esm.js +1 -1
  88. package/dist/nile-select/nile-select.cjs.js +1 -1
  89. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  90. package/dist/nile-select/nile-select.css.cjs.js +1 -1
  91. package/dist/nile-select/nile-select.css.cjs.js.map +1 -1
  92. package/dist/nile-select/nile-select.css.esm.js +3 -3
  93. package/dist/nile-select/nile-select.esm.js +1 -1
  94. package/dist/nile-select/nile-select.test.cjs.js +1 -1
  95. package/dist/nile-select/nile-select.test.cjs.js.map +1 -1
  96. package/dist/nile-select/nile-select.test.esm.js +1 -1
  97. package/dist/nile-tab/index.cjs.js +1 -1
  98. package/dist/nile-tab/index.esm.js +1 -1
  99. package/dist/nile-tab/nile-tab.cjs.js +1 -1
  100. package/dist/nile-tab/nile-tab.cjs.js.map +1 -1
  101. package/dist/nile-tab/nile-tab.esm.js +1 -1
  102. package/dist/nile-tab-group/index.cjs.js +1 -1
  103. package/dist/nile-tab-group/index.esm.js +1 -1
  104. package/dist/nile-tab-group/nile-tab-group.cjs.js +1 -1
  105. package/dist/nile-tab-group/nile-tab-group.cjs.js.map +1 -1
  106. package/dist/nile-tab-group/nile-tab-group.esm.js +1 -1
  107. package/dist/nile-tab-group/nile-tab-group.test.cjs.js +1 -1
  108. package/dist/nile-tab-group/nile-tab-group.test.cjs.js.map +1 -1
  109. package/dist/nile-tab-group/nile-tab-group.test.esm.js +1 -1
  110. package/dist/nile-tag/index.cjs.js +1 -1
  111. package/dist/nile-tag/index.esm.js +1 -1
  112. package/dist/nile-tag/nile-tag.cjs.js +1 -1
  113. package/dist/nile-tag/nile-tag.cjs.js.map +1 -1
  114. package/dist/nile-tag/nile-tag.esm.js +1 -1
  115. package/dist/nile-toast/index.cjs.js +1 -1
  116. package/dist/nile-toast/index.esm.js +1 -1
  117. package/dist/nile-toast/nile-toast.cjs.js +1 -1
  118. package/dist/nile-toast/nile-toast.cjs.js.map +1 -1
  119. package/dist/nile-toast/nile-toast.esm.js +1 -1
  120. package/dist/nile-tooltip/index.cjs.js +1 -1
  121. package/dist/nile-tooltip/index.esm.js +1 -1
  122. package/dist/nile-tooltip/nile-tooltip.cjs.js +1 -1
  123. package/dist/nile-tooltip/nile-tooltip.cjs.js.map +1 -1
  124. package/dist/nile-tooltip/nile-tooltip.css.cjs.js +1 -1
  125. package/dist/nile-tooltip/nile-tooltip.css.cjs.js.map +1 -1
  126. package/dist/nile-tooltip/nile-tooltip.css.esm.js +48 -79
  127. package/dist/nile-tooltip/nile-tooltip.esm.js +28 -23
  128. package/dist/nile-tree/index.cjs.js +1 -1
  129. package/dist/nile-tree/index.esm.js +1 -1
  130. package/dist/nile-tree/nile-tree.cjs.js +1 -1
  131. package/dist/nile-tree/nile-tree.cjs.js.map +1 -1
  132. package/dist/nile-tree/nile-tree.esm.js +1 -1
  133. package/dist/nile-tree-item/index.cjs.js +1 -1
  134. package/dist/nile-tree-item/index.esm.js +1 -1
  135. package/dist/nile-tree-item/nile-tree-item.cjs.js +1 -1
  136. package/dist/nile-tree-item/nile-tree-item.cjs.js.map +1 -1
  137. package/dist/nile-tree-item/nile-tree-item.esm.js +1 -1
  138. package/dist/src/nile-icon/icons/svg/index.d.ts +1 -0
  139. package/dist/src/nile-icon/icons/svg/index.js +1 -0
  140. package/dist/src/nile-icon/icons/svg/index.js.map +1 -1
  141. package/dist/src/nile-icon/icons/svg/savings.d.ts +5 -0
  142. package/dist/src/nile-icon/icons/svg/savings.js +5 -0
  143. package/dist/src/nile-icon/icons/svg/savings.js.map +1 -0
  144. package/dist/src/nile-input/nile-input.css.js +10 -2
  145. package/dist/src/nile-input/nile-input.css.js.map +1 -1
  146. package/dist/src/nile-select/nile-select.css.js +3 -3
  147. package/dist/src/nile-select/nile-select.css.js.map +1 -1
  148. package/dist/src/nile-tooltip/nile-tooltip.css.js +46 -77
  149. package/dist/src/nile-tooltip/nile-tooltip.css.js.map +1 -1
  150. package/dist/src/nile-tooltip/nile-tooltip.d.ts +46 -24
  151. package/dist/src/nile-tooltip/nile-tooltip.js +232 -235
  152. package/dist/src/nile-tooltip/nile-tooltip.js.map +1 -1
  153. package/dist/tsconfig.tsbuildinfo +1 -1
  154. package/package.json +1 -1
  155. package/src/nile-icon/icons/svg/index.ts +1 -0
  156. package/src/nile-icon/icons/svg/savings.ts +5 -0
  157. package/src/nile-input/nile-input.css.ts +10 -2
  158. package/src/nile-select/nile-select.css.ts +3 -3
  159. package/src/nile-tooltip/nile-tooltip.css.ts +46 -77
  160. package/src/nile-tooltip/nile-tooltip.ts +231 -269
  161. package/vscode-html-custom-data.json +91 -79
  162. package/dist/nile-tooltip/nile-tooltip-utils.cjs.js +0 -2
  163. package/dist/nile-tooltip/nile-tooltip-utils.cjs.js.map +0 -1
  164. package/dist/nile-tooltip/nile-tooltip-utils.esm.js +0 -1
  165. package/dist/nile-tooltip/nile-tooltip.test.cjs.js +0 -2
  166. package/dist/nile-tooltip/nile-tooltip.test.cjs.js.map +0 -1
  167. package/dist/nile-tooltip/nile-tooltip.test.esm.js +0 -47
  168. package/dist/src/nile-tooltip/nile-tooltip-utils.d.ts +0 -18
  169. package/dist/src/nile-tooltip/nile-tooltip-utils.js +0 -216
  170. package/dist/src/nile-tooltip/nile-tooltip-utils.js.map +0 -1
  171. package/dist/src/nile-tooltip/nile-tooltip.test.d.ts +0 -1
  172. package/dist/src/nile-tooltip/nile-tooltip.test.js +0 -148
  173. package/dist/src/nile-tooltip/nile-tooltip.test.js.map +0 -1
  174. package/src/nile-tooltip/nile-tooltip-utils.ts +0 -271
  175. package/src/nile-tooltip/nile-tooltip.test.ts +0 -168
@@ -1,2 +0,0 @@
1
- function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o;}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o;},_typeof(o);}System.register(["../fixture-3bfb4490.cjs.js","lit/static-html.js","lit/html.js","lit/directive-helpers.js","lit","lit/directives/unsafe-html.js","./nile-tooltip.cjs.js","tslib","lit/decorators.js","./nile-tooltip.css.cjs.js","../internal/nile-element.cjs.js","./nile-tooltip-utils.cjs.js"],function(_export,_context){"use strict";var t,o,i,e,n,_templateObject,_templateObject2,_templateObject3,_templateObject4,_templateObject5,_templateObject6,_templateObject7,_templateObject8,_templateObject9,_templateObject10,_templateObject11,_templateObject12,_templateObject13;function _regeneratorRuntime(){"use strict";/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */_regeneratorRuntime=function _regeneratorRuntime(){return e;};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value;},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function define(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e];}try{define({},"");}catch(t){define=function define(t,e,r){return t[e]=r;};}function wrap(t,e,r,n){var i=e&&e.prototype instanceof Generator?e:Generator,a=Object.create(i.prototype),c=new Context(n||[]);return o(a,"_invoke",{value:makeInvokeMethod(t,r,c)}),a;}function tryCatch(t,e,r){try{return{type:"normal",arg:t.call(e,r)};}catch(t){return{type:"throw",arg:t};}}e.wrap=wrap;var h="suspendedStart",l="suspendedYield",f="executing",s="completed",y={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}var p={};define(p,a,function(){return this;});var d=Object.getPrototypeOf,v=d&&d(d(values([])));v&&v!==r&&n.call(v,a)&&(p=v);var g=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(p);function defineIteratorMethods(t){["next","throw","return"].forEach(function(e){define(t,e,function(t){return this._invoke(e,t);});});}function AsyncIterator(t,e){function invoke(r,o,i,a){var c=tryCatch(t[r],t,o);if("throw"!==c.type){var u=c.arg,h=u.value;return h&&"object"==_typeof(h)&&n.call(h,"__await")?e.resolve(h.__await).then(function(t){invoke("next",t,i,a);},function(t){invoke("throw",t,i,a);}):e.resolve(h).then(function(t){u.value=t,i(u);},function(t){return invoke("throw",t,i,a);});}a(c.arg);}var r;o(this,"_invoke",{value:function value(t,n){function callInvokeWithMethodAndArg(){return new e(function(e,r){invoke(t,n,e,r);});}return r=r?r.then(callInvokeWithMethodAndArg,callInvokeWithMethodAndArg):callInvokeWithMethodAndArg();}});}function makeInvokeMethod(e,r,n){var o=h;return function(i,a){if(o===f)throw Error("Generator is already running");if(o===s){if("throw"===i)throw a;return{value:t,done:!0};}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var u=maybeInvokeDelegate(c,n);if(u){if(u===y)continue;return u;}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===h)throw o=s,n.arg;n.dispatchException(n.arg);}else"return"===n.method&&n.abrupt("return",n.arg);o=f;var p=tryCatch(e,r,n);if("normal"===p.type){if(o=n.done?s:l,p.arg===y)continue;return{value:p.arg,done:n.done};}"throw"===p.type&&(o=s,n.method="throw",n.arg=p.arg);}};}function maybeInvokeDelegate(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator["return"]&&(r.method="return",r.arg=t,maybeInvokeDelegate(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var i=tryCatch(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,y;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,y):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y);}function pushTryEntry(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e);}function resetTryEntry(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e;}function Context(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(pushTryEntry,this),this.reset(!0);}function values(e){if(e||""===e){var r=e[a];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function next(){for(;++o<e.length;)if(n.call(e,o))return next.value=e[o],next.done=!1,next;return next.value=t,next.done=!0,next;};return i.next=i;}}throw new TypeError(_typeof(e)+" is not iterable");}return GeneratorFunction.prototype=GeneratorFunctionPrototype,o(g,"constructor",{value:GeneratorFunctionPrototype,configurable:!0}),o(GeneratorFunctionPrototype,"constructor",{value:GeneratorFunction,configurable:!0}),GeneratorFunction.displayName=define(GeneratorFunctionPrototype,u,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===GeneratorFunction||"GeneratorFunction"===(e.displayName||e.name));},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,GeneratorFunctionPrototype):(t.__proto__=GeneratorFunctionPrototype,define(t,u,"GeneratorFunction")),t.prototype=Object.create(g),t;},e.awrap=function(t){return{__await:t};},defineIteratorMethods(AsyncIterator.prototype),define(AsyncIterator.prototype,c,function(){return this;}),e.AsyncIterator=AsyncIterator,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new AsyncIterator(wrap(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then(function(t){return t.done?t.value:a.next();});},defineIteratorMethods(g),define(g,u,"Generator"),define(g,a,function(){return this;}),define(g,"toString",function(){return"[object Generator]";}),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function next(){for(;r.length;){var t=r.pop();if(t in e)return next.value=t,next.done=!1,next;}return next.done=!0,next;};},e.values=values,Context.prototype={constructor:Context,reset:function reset(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(resetTryEntry),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t);},stop:function stop(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval;},dispatchException:function dispatchException(e){if(this.done)throw e;var r=this;function handle(n,o){return a.type="throw",a.arg=e,r.next=n,o&&(r.method="next",r.arg=t),!!o;}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return handle("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),u=n.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return handle(i.catchLoc,!0);if(this.prev<i.finallyLoc)return handle(i.finallyLoc);}else if(c){if(this.prev<i.catchLoc)return handle(i.catchLoc,!0);}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return handle(i.finallyLoc);}}}},abrupt:function abrupt(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break;}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,y):this.complete(a);},complete:function complete(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),y;},finish:function finish(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),resetTryEntry(r),y;}},"catch":function _catch(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;resetTryEntry(r);}return o;}}throw Error("illegal catch attempt");},delegateYield:function delegateYield(e,r,n){return this.delegate={iterator:values(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),y;}},e;}function _taggedTemplateLiteral(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}));}function asyncGeneratorStep(n,t,e,r,o,a,c){try{var i=n[a](c),u=i.value;}catch(n){return void e(n);}i.done?t(u):Promise.resolve(u).then(r,o);}function _asyncToGenerator(n){return function(){var t=this,e=arguments;return new Promise(function(r,o){var a=n.apply(t,e);function _next(n){asyncGeneratorStep(a,r,o,_next,_throw,"next",n);}function _throw(n){asyncGeneratorStep(a,r,o,_next,_throw,"throw",n);}_next(void 0);});};}return{setters:[function(_fixture002CjsJs){t=_fixture002CjsJs.f;o=_fixture002CjsJs.h;i=_fixture002CjsJs.w;e=_fixture002CjsJs.o;},function(_litStaticHtmlJs){n=_litStaticHtmlJs.html;},function(_litHtmlJs){},function(_litDirectiveHelpersJs){},function(_lit){},function(_litDirectivesUnsafeHtmlJs){},function(_nileTooltipCjsJs){},function(_tslib){},function(_litDecoratorsJs){},function(_nileTooltipCssCjsJs){},function(_internalNileElementCjsJs){},function(_nileTooltipUtilsCjsJs){}],execute:function execute(){describe("NileTooltip",function(){it("renders with default properties",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(){var i;return _regeneratorRuntime().wrap(function _callee$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.next=2;return t(n(_templateObject||(_templateObject=_taggedTemplateLiteral(["<nile-tooltip content=\"Hello\"><button>Hover me</button></nile-tooltip>"]))));case 2:i=_context2.sent;o.equal(i.content,"Hello"),o.equal(i.placement,"top"),o.equal(i.disabled,!1),o.equal(i.open,!1);case 4:case"end":return _context2.stop();}},_callee);}))),it("renders text content when no slot is used",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(){var i;return _regeneratorRuntime().wrap(function _callee2$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:_context3.next=2;return t(n(_templateObject2||(_templateObject2=_taggedTemplateLiteral(["<nile-tooltip content=\"Fallback\"><button>Trigger</button></nile-tooltip>"]))));case 2:i=_context3.sent.shadowRoot.querySelector(".tooltip-content");o.include(i.textContent,"Fallback");case 4:case"end":return _context3.stop();}},_callee2);}))),it("uses slotted content when provided",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(){var _i$0$textContent;var i;return _regeneratorRuntime().wrap(function _callee3$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:_context4.next=2;return t(n(_templateObject3||(_templateObject3=_taggedTemplateLiteral(["\n <nile-tooltip>\n <div slot=\"content\">Slot Content</div>\n <button>Trigger</button>\n </nile-tooltip>\n "]))));case 2:i=_context4.sent.shadowRoot.querySelector('slot[name="content"]').assignedNodes({flatten:!0});o.isAbove(i.length,0),o.include((_i$0$textContent=i[0].textContent)!==null&&_i$0$textContent!==void 0?_i$0$textContent:"","Slot Content");case 4:case"end":return _context4.stop();}},_callee3);}))),it('shows tooltip on hover when trigger includes "hover"',/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(){var e;return _regeneratorRuntime().wrap(function _callee4$(_context5){while(1)switch(_context5.prev=_context5.next){case 0:_context5.next=2;return t(n(_templateObject4||(_templateObject4=_taggedTemplateLiteral(["\n <nile-tooltip content=\"Tooltip\" trigger=\"hover\">\n <button>Hover me</button>\n </nile-tooltip>\n "]))));case 2:e=_context5.sent;e.shadowRoot.querySelector(".trigger-container").dispatchEvent(new Event("mouseover",{bubbles:!0}));_context5.next=6;return i(function(){return!0===e.open;});case 6:o.isTrue(e.open);case 7:case"end":return _context5.stop();}},_callee4);}))),it('hides tooltip on mouseout when trigger includes "hover"',/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(){var o,e;return _regeneratorRuntime().wrap(function _callee5$(_context6){while(1)switch(_context6.prev=_context6.next){case 0:_context6.next=2;return t(n(_templateObject5||(_templateObject5=_taggedTemplateLiteral(["\n <nile-tooltip content=\"Tooltip\" trigger=\"hover\">\n <button>Hover me</button>\n </nile-tooltip>\n "]))));case 2:o=_context6.sent;e=o.shadowRoot.querySelector(".trigger-container");e.dispatchEvent(new Event("mouseover",{bubbles:!0}));_context6.next=7;return i(function(){return!0===o.open;});case 7:e.dispatchEvent(new Event("mouseout",{bubbles:!0}));_context6.next=10;return i(function(){return!1===o.open;});case 10:case"end":return _context6.stop();}},_callee5);}))),it('toggles tooltip on click when trigger includes "click"',/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(){var o,e;return _regeneratorRuntime().wrap(function _callee6$(_context7){while(1)switch(_context7.prev=_context7.next){case 0:_context7.next=2;return t(n(_templateObject6||(_templateObject6=_taggedTemplateLiteral(["\n <nile-tooltip content=\"Click me\" trigger=\"click\">\n <button>Click</button>\n </nile-tooltip>\n "]))));case 2:o=_context7.sent;e=o.shadowRoot.querySelector(".trigger-container");e.click();_context7.next=7;return i(function(){return!0===o.open;});case 7:e.click();_context7.next=10;return i(function(){return!1===o.open;});case 10:case"end":return _context7.stop();}},_callee6);}))),it('shows and hides tooltip on focus/blur when trigger includes "focus"',/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7(){var o,e;return _regeneratorRuntime().wrap(function _callee7$(_context8){while(1)switch(_context8.prev=_context8.next){case 0:_context8.next=2;return t(n(_templateObject7||(_templateObject7=_taggedTemplateLiteral(["\n <nile-tooltip content=\"Focus\" trigger=\"focus\">\n <button>Focus</button>\n </nile-tooltip>\n "]))));case 2:o=_context8.sent;e=o.shadowRoot.querySelector(".trigger-container");e.dispatchEvent(new Event("focusin"));_context8.next=7;return i(function(){return!0===o.open;});case 7:e.dispatchEvent(new Event("focusout"));_context8.next=10;return i(function(){return!1===o.open;});case 10:case"end":return _context8.stop();}},_callee7);}))),it("does not show tooltip when disabled",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8(){var i;return _regeneratorRuntime().wrap(function _callee8$(_context9){while(1)switch(_context9.prev=_context9.next){case 0:_context9.next=2;return t(n(_templateObject8||(_templateObject8=_taggedTemplateLiteral(["\n <nile-tooltip content=\"Disabled\" disabled trigger=\"hover\">\n <button>Hover me</button>\n </nile-tooltip>\n "]))));case 2:i=_context9.sent;i.shadowRoot.querySelector(".trigger-container").dispatchEvent(new Event("mouseover"));_context9.next=6;return new Promise(function(t){return setTimeout(t,200);});case 6:o.isFalse(i.open);case 7:case"end":return _context9.stop();}},_callee8);}))),it("emits nile-show and nile-after-show events",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee9(){var i,l,s,a;return _regeneratorRuntime().wrap(function _callee9$(_context10){while(1)switch(_context10.prev=_context10.next){case 0:_context10.next=2;return t(n(_templateObject9||(_templateObject9=_taggedTemplateLiteral(["\n <nile-tooltip content=\"Event test\" trigger=\"click\">\n <button>Click</button>\n </nile-tooltip>\n "]))));case 2:i=_context10.sent;l=i.shadowRoot.querySelector(".trigger-container");setTimeout(function(){return l.click();});_context10.next=7;return e(i,"nile-show");case 7:s=_context10.sent;o.ok(s);_context10.next=11;return e(i,"nile-after-show");case 11:a=_context10.sent;o.ok(a);case 13:case"end":return _context10.stop();}},_callee9);}))),it("emits nile-hide and nile-after-hide events",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee10(){var l,s,a,c;return _regeneratorRuntime().wrap(function _callee10$(_context11){while(1)switch(_context11.prev=_context11.next){case 0:_context11.next=2;return t(n(_templateObject10||(_templateObject10=_taggedTemplateLiteral(["\n <nile-tooltip content=\"Event test\" trigger=\"click\">\n <button>Click</button>\n </nile-tooltip>\n "]))));case 2:l=_context11.sent;s=l.shadowRoot.querySelector(".trigger-container");s.click();_context11.next=7;return i(function(){return!0===l.open;});case 7:setTimeout(function(){return s.click();});_context11.next=10;return e(l,"nile-hide");case 10:a=_context11.sent;o.ok(a);_context11.next=14;return e(l,"nile-after-hide");case 14:c=_context11.sent;o.ok(c);case 16:case"end":return _context11.stop();}},_callee10);}))),it('defaults to "bottom" placement when given invalid value',/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee11(){var i;return _regeneratorRuntime().wrap(function _callee11$(_context12){while(1)switch(_context12.prev=_context12.next){case 0:_context12.next=2;return t(n(_templateObject11||(_templateObject11=_taggedTemplateLiteral(["\n <nile-tooltip content=\"Fallback\" placement="," >\n <button>Trigger</button>\n </nile-tooltip>\n "])),"invalid"));case 2:i=_context12.sent;_context12.next=5;return i.updateComplete;case 5:o.equal(i.placement,"top");case 6:case"end":return _context12.stop();}},_callee11);}))),it("updates hasTooltipSlot on slot change",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee12(){var i,e,l;return _regeneratorRuntime().wrap(function _callee12$(_context13){while(1)switch(_context13.prev=_context13.next){case 0:_context13.next=2;return t(n(_templateObject12||(_templateObject12=_taggedTemplateLiteral(["\n <nile-tooltip>\n <div slot=\"content\">Initial slot</div>\n <button>Trigger</button>\n </nile-tooltip>\n "]))));case 2:i=_context13.sent;e=i.shadowRoot.querySelector('slot[name="content"]');l=document.createElement("div");l.slot="content";l.textContent="Updated slot";i.appendChild(l);e.dispatchEvent(new Event("slotchange"));_context13.next=11;return i.updateComplete;case 11:o.isTrue(i.hasTooltipSlot);case 12:case"end":return _context13.stop();}},_callee12);}))),it("respects hoist attribute",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee13(){var i;return _regeneratorRuntime().wrap(function _callee13$(_context14){while(1)switch(_context14.prev=_context14.next){case 0:_context14.next=2;return t(n(_templateObject13||(_templateObject13=_taggedTemplateLiteral(["\n <nile-tooltip hoist content=\"Hoisted\">\n <button>Hoist</button>\n </nile-tooltip>\n "]))));case 2:i=_context14.sent;o.isTrue(i.hoist);case 4:case"end":return _context14.stop();}},_callee13);})));});}};});
2
- //# sourceMappingURL=nile-tooltip.test.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nile-tooltip.test.cjs.js","sources":["../../../src/nile-tooltip/nile-tooltip.test.ts"],"sourcesContent":["import { fixture, html, assert, oneEvent, waitUntil } from '@open-wc/testing';\nimport './nile-tooltip';\nimport { NileTooltip } from './nile-tooltip';\n\ndescribe('NileTooltip', () => {\n\n it('renders with default properties', async () => {\n const el = await fixture<NileTooltip>(html`<nile-tooltip content=\"Hello\"><button>Hover me</button></nile-tooltip>`);\n assert.equal(el.content, 'Hello');\n assert.equal(el.placement, 'top');\n assert.equal(el.disabled, false);\n assert.equal(el.open, false);\n });\n\n it('renders text content when no slot is used', async () => {\n const el = await fixture<NileTooltip>(html`<nile-tooltip content=\"Fallback\"><button>Trigger</button></nile-tooltip>`);\n const content = el.shadowRoot!.querySelector('.tooltip-content')!;\n assert.include(content.textContent!, 'Fallback');\n });\n\n it('uses slotted content when provided', async () => {\n const el = await fixture<NileTooltip>(html`\n <nile-tooltip>\n <div slot=\"content\">Slot Content</div>\n <button>Trigger</button>\n </nile-tooltip>\n `);\n\n const slot = el.shadowRoot!.querySelector('slot[name=\"content\"]') as HTMLSlotElement;\n const assigned = slot.assignedNodes({ flatten: true });\n assert.isAbove(assigned.length, 0);\n assert.include(assigned[0].textContent ?? '', 'Slot Content');\n });\n\n it('shows tooltip on hover when trigger includes \"hover\"', async () => {\n const el = await fixture<NileTooltip>(html`\n <nile-tooltip content=\"Tooltip\" trigger=\"hover\">\n <button>Hover me</button>\n </nile-tooltip>\n `);\n const trigger = el.shadowRoot!.querySelector('.trigger-container')!;\n trigger.dispatchEvent(new Event('mouseover', { bubbles: true }));\n await waitUntil(() => el.open === true);\n assert.isTrue(el.open);\n });\n\n it('hides tooltip on mouseout when trigger includes \"hover\"', async () => {\n const el = await fixture<NileTooltip>(html`\n <nile-tooltip content=\"Tooltip\" trigger=\"hover\">\n <button>Hover me</button>\n </nile-tooltip>\n `);\n const trigger = el.shadowRoot!.querySelector('.trigger-container')!;\n trigger.dispatchEvent(new Event('mouseover', { bubbles: true }));\n await waitUntil(() => el.open === true);\n trigger.dispatchEvent(new Event('mouseout', { bubbles: true }));\n await waitUntil(() => el.open === false);\n });\n\n it('toggles tooltip on click when trigger includes \"click\"', async () => {\n const el = await fixture<NileTooltip>(html`\n <nile-tooltip content=\"Click me\" trigger=\"click\">\n <button>Click</button>\n </nile-tooltip>\n `);\n const trigger = el.shadowRoot!.querySelector('.trigger-container') as HTMLElement;\n trigger.click();\n await waitUntil(() => el.open === true);\n trigger.click();\n await waitUntil(() => el.open === false);\n });\n\n it('shows and hides tooltip on focus/blur when trigger includes \"focus\"', async () => {\n const el = await fixture<NileTooltip>(html`\n <nile-tooltip content=\"Focus\" trigger=\"focus\">\n <button>Focus</button>\n </nile-tooltip>\n `);\n const trigger = el.shadowRoot!.querySelector('.trigger-container')!;\n trigger.dispatchEvent(new Event('focusin'));\n await waitUntil(() => el.open === true);\n trigger.dispatchEvent(new Event('focusout'));\n await waitUntil(() => el.open === false);\n });\n\n it('does not show tooltip when disabled', async () => {\n const el = await fixture<NileTooltip>(html`\n <nile-tooltip content=\"Disabled\" disabled trigger=\"hover\">\n <button>Hover me</button>\n </nile-tooltip>\n `);\n const trigger = el.shadowRoot!.querySelector('.trigger-container')!;\n trigger.dispatchEvent(new Event('mouseover'));\n await new Promise(resolve => setTimeout(resolve, 200));\n assert.isFalse(el.open);\n });\n\n\n it('emits nile-show and nile-after-show events', async () => {\n const el = await fixture<NileTooltip>(html`\n <nile-tooltip content=\"Event test\" trigger=\"click\">\n <button>Click</button>\n </nile-tooltip>\n `);\n const trigger = el.shadowRoot!.querySelector('.trigger-container') as HTMLElement;\n setTimeout(() => trigger.click());\n const showEvent = await oneEvent(el, 'nile-show');\n assert.ok(showEvent);\n const afterShow = await oneEvent(el, 'nile-after-show');\n assert.ok(afterShow);\n });\n\n it('emits nile-hide and nile-after-hide events', async () => {\n const el = await fixture<NileTooltip>(html`\n <nile-tooltip content=\"Event test\" trigger=\"click\">\n <button>Click</button>\n </nile-tooltip>\n `);\n const trigger = el.shadowRoot!.querySelector('.trigger-container') as HTMLElement;\n trigger.click();\n await waitUntil(() => el.open === true);\n setTimeout(() => trigger.click());\n const hideEvent = await oneEvent(el, 'nile-hide');\n assert.ok(hideEvent);\n const afterHide = await oneEvent(el, 'nile-after-hide');\n assert.ok(afterHide);\n });\n\n it('defaults to \"bottom\" placement when given invalid value', async () => {\n const el = await fixture<NileTooltip>(html`\n <nile-tooltip content=\"Fallback\" placement=${'invalid' as unknown as NileTooltip['placement']} >\n <button>Trigger</button>\n </nile-tooltip>\n `);\n await el.updateComplete;\n assert.equal(el.placement, 'top');\n });\n\n\n it('updates hasTooltipSlot on slot change', async () => {\n const el = await fixture<NileTooltip>(html`\n <nile-tooltip>\n <div slot=\"content\">Initial slot</div>\n <button>Trigger</button>\n </nile-tooltip>\n `);\n\n const slot = el.shadowRoot!.querySelector('slot[name=\"content\"]') as HTMLSlotElement;\n const newSlotNode = document.createElement('div');\n newSlotNode.slot = 'content';\n newSlotNode.textContent = 'Updated slot';\n el.appendChild(newSlotNode);\n\n slot.dispatchEvent(new Event('slotchange'));\n await el.updateComplete;\n\n assert.isTrue((el as any).hasTooltipSlot);\n });\n\n it('respects hoist attribute', async () => {\n const el = await fixture<NileTooltip>(html`\n <nile-tooltip hoist content=\"Hoisted\">\n <button>Hoist</button>\n </nile-tooltip>\n `);\n assert.isTrue(el.hoist);\n });\n});\n"],"names":["describe","it","async","fixture","html","_templateObject","_taggedTemplateLiteral","el","assert","equal","content","placement","disabled","open","_context2","stop","_callee","_templateObject2","shadowRoot","querySelector","include","textContent","_context3","_callee2","_templateObject3","assigned","assignedNodes","flatten","isAbove","length","_i$0$textContent","_context4","_callee3","_asyncToGenerator","_regeneratorRuntime","mark","_templateObject4","dispatchEvent","Event","bubbles","waitUntil","isTrue","_context5","_callee4","_templateObject5","trigger","_context6","next","_callee5","_templateObject6","click","_context7","_callee6","_templateObject7","_context8","_callee7","_templateObject8","_context9","Promise","resolve","setTimeout","isFalse","_callee8","_templateObject9","_context10","oneEvent","showEvent","ok","afterShow","_callee9","_templateObject10","_context11","hideEvent","afterHide","_callee10","_templateObject11","updateComplete","_context12","_callee11","_templateObject12","slot","newSlotNode","document","createElement","appendChild","_context13","hasTooltipSlot","_callee12","_templateObject13","hoist","_context14","_callee13"],"mappings":"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"}
@@ -1,47 +0,0 @@
1
- import{f as t,h as o,w as e,o as i}from"../fixture-8edec91c.esm.js";import{html as n}from"lit/static-html.js";import"lit/html.js";import"lit/directive-helpers.js";import"lit";import"lit/directives/unsafe-html.js";import"./nile-tooltip.esm.js";import"tslib";import"lit/decorators.js";import"./nile-tooltip.css.esm.js";import"../internal/nile-element.esm.js";import"./nile-tooltip-utils.esm.js";describe("NileTooltip",(()=>{it("renders with default properties",(async()=>{const e=await t(n`<nile-tooltip content="Hello"><button>Hover me</button></nile-tooltip>`);o.equal(e.content,"Hello"),o.equal(e.placement,"top"),o.equal(e.disabled,!1),o.equal(e.open,!1)})),it("renders text content when no slot is used",(async()=>{const e=(await t(n`<nile-tooltip content="Fallback"><button>Trigger</button></nile-tooltip>`)).shadowRoot.querySelector(".tooltip-content");o.include(e.textContent,"Fallback")})),it("uses slotted content when provided",(async()=>{const e=(await t(n`
2
- <nile-tooltip>
3
- <div slot="content">Slot Content</div>
4
- <button>Trigger</button>
5
- </nile-tooltip>
6
- `)).shadowRoot.querySelector('slot[name="content"]').assignedNodes({flatten:!0});o.isAbove(e.length,0),o.include(e[0].textContent??"","Slot Content")})),it('shows tooltip on hover when trigger includes "hover"',(async()=>{const i=await t(n`
7
- <nile-tooltip content="Tooltip" trigger="hover">
8
- <button>Hover me</button>
9
- </nile-tooltip>
10
- `);i.shadowRoot.querySelector(".trigger-container").dispatchEvent(new Event("mouseover",{bubbles:!0})),await e((()=>!0===i.open)),o.isTrue(i.open)})),it('hides tooltip on mouseout when trigger includes "hover"',(async()=>{const o=await t(n`
11
- <nile-tooltip content="Tooltip" trigger="hover">
12
- <button>Hover me</button>
13
- </nile-tooltip>
14
- `),i=o.shadowRoot.querySelector(".trigger-container");i.dispatchEvent(new Event("mouseover",{bubbles:!0})),await e((()=>!0===o.open)),i.dispatchEvent(new Event("mouseout",{bubbles:!0})),await e((()=>!1===o.open))})),it('toggles tooltip on click when trigger includes "click"',(async()=>{const o=await t(n`
15
- <nile-tooltip content="Click me" trigger="click">
16
- <button>Click</button>
17
- </nile-tooltip>
18
- `),i=o.shadowRoot.querySelector(".trigger-container");i.click(),await e((()=>!0===o.open)),i.click(),await e((()=>!1===o.open))})),it('shows and hides tooltip on focus/blur when trigger includes "focus"',(async()=>{const o=await t(n`
19
- <nile-tooltip content="Focus" trigger="focus">
20
- <button>Focus</button>
21
- </nile-tooltip>
22
- `),i=o.shadowRoot.querySelector(".trigger-container");i.dispatchEvent(new Event("focusin")),await e((()=>!0===o.open)),i.dispatchEvent(new Event("focusout")),await e((()=>!1===o.open))})),it("does not show tooltip when disabled",(async()=>{const e=await t(n`
23
- <nile-tooltip content="Disabled" disabled trigger="hover">
24
- <button>Hover me</button>
25
- </nile-tooltip>
26
- `);e.shadowRoot.querySelector(".trigger-container").dispatchEvent(new Event("mouseover")),await new Promise((t=>setTimeout(t,200))),o.isFalse(e.open)})),it("emits nile-show and nile-after-show events",(async()=>{const e=await t(n`
27
- <nile-tooltip content="Event test" trigger="click">
28
- <button>Click</button>
29
- </nile-tooltip>
30
- `),l=e.shadowRoot.querySelector(".trigger-container");setTimeout((()=>l.click()));const s=await i(e,"nile-show");o.ok(s);const a=await i(e,"nile-after-show");o.ok(a)})),it("emits nile-hide and nile-after-hide events",(async()=>{const l=await t(n`
31
- <nile-tooltip content="Event test" trigger="click">
32
- <button>Click</button>
33
- </nile-tooltip>
34
- `),s=l.shadowRoot.querySelector(".trigger-container");s.click(),await e((()=>!0===l.open)),setTimeout((()=>s.click()));const a=await i(l,"nile-hide");o.ok(a);const r=await i(l,"nile-after-hide");o.ok(r)})),it('defaults to "bottom" placement when given invalid value',(async()=>{const e=await t(n`
35
- <nile-tooltip content="Fallback" placement=${"invalid"} >
36
- <button>Trigger</button>
37
- </nile-tooltip>
38
- `);await e.updateComplete,o.equal(e.placement,"top")})),it("updates hasTooltipSlot on slot change",(async()=>{const e=await t(n`
39
- <nile-tooltip>
40
- <div slot="content">Initial slot</div>
41
- <button>Trigger</button>
42
- </nile-tooltip>
43
- `),i=e.shadowRoot.querySelector('slot[name="content"]'),l=document.createElement("div");l.slot="content",l.textContent="Updated slot",e.appendChild(l),i.dispatchEvent(new Event("slotchange")),await e.updateComplete,o.isTrue(e.hasTooltipSlot)})),it("respects hoist attribute",(async()=>{const e=await t(n`
44
- <nile-tooltip hoist content="Hoisted">
45
- <button>Hoist</button>
46
- </nile-tooltip>
47
- `);o.isTrue(e.hoist)}))}));
@@ -1,18 +0,0 @@
1
- export declare function isInViewport(element: HTMLElement): boolean;
2
- export declare function getValidTooltipPosition(triggerRect: DOMRect, tooltipRect: DOMRect, originalPlacement: string, distance: number, skidding: number, caretSize: number, viewportWidth: number, viewportHeight: number): {
3
- top: number;
4
- left: number;
5
- placement: string;
6
- };
7
- export interface CaretPositionInput {
8
- placement: string;
9
- tooltipRect: DOMRect;
10
- triggerRect: DOMRect;
11
- caretSize: number;
12
- left: number;
13
- top: number;
14
- }
15
- export declare function getCaretPosition({ placement, tooltipRect, triggerRect, caretSize, left, top }: CaretPositionInput): {
16
- caretLeft: number;
17
- caretTop: number;
18
- };
@@ -1,216 +0,0 @@
1
- export function isInViewport(element) {
2
- const rect = element.getBoundingClientRect();
3
- return (rect.top >= 0 &&
4
- rect.left >= 0 &&
5
- rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
6
- rect.right <= (window.innerWidth || document.documentElement.clientWidth));
7
- }
8
- export function getValidTooltipPosition(triggerRect, tooltipRect, originalPlacement, distance, skidding, caretSize, viewportWidth, viewportHeight) {
9
- const triggerCenterX = triggerRect.left + triggerRect.width / 2;
10
- const getCandidatePosition = (placement) => {
11
- let top = 0;
12
- let left = 0;
13
- switch (placement) {
14
- case 'top':
15
- top = triggerRect.top - tooltipRect.height - distance;
16
- left = triggerRect.left + (triggerRect.width - tooltipRect.width) / 2 + skidding;
17
- break;
18
- case 'top-start': {
19
- top = triggerRect.top - tooltipRect.height - distance;
20
- const centeredLeft = triggerRect.left + (triggerRect.width / 2) - (tooltipRect.width / 2) + skidding;
21
- left = Math.max(triggerRect.left + skidding, centeredLeft);
22
- break;
23
- }
24
- case 'top-end': {
25
- top = triggerRect.top - tooltipRect.height - distance;
26
- const centeredLeft = triggerRect.left + (triggerRect.width / 2) - (tooltipRect.width / 2) + skidding;
27
- const maxLeft = triggerRect.right - tooltipRect.width + skidding;
28
- left = Math.min(centeredLeft, maxLeft);
29
- break;
30
- }
31
- case 'bottom':
32
- top = triggerRect.bottom + distance;
33
- left = triggerRect.left + (triggerRect.width - tooltipRect.width) / 2 + skidding;
34
- break;
35
- case 'bottom-start': {
36
- top = triggerRect.bottom + distance;
37
- const centeredLeft = triggerRect.left + (triggerRect.width / 2) - (tooltipRect.width / 2) + skidding;
38
- left = Math.max(triggerRect.left + skidding, centeredLeft);
39
- break;
40
- }
41
- case 'bottom-end': {
42
- top = triggerRect.bottom + distance;
43
- const centeredLeft = triggerRect.left + (triggerRect.width / 2) - (tooltipRect.width / 2) + skidding;
44
- const maxLeft = triggerRect.right - tooltipRect.width + skidding;
45
- left = Math.min(centeredLeft, maxLeft);
46
- break;
47
- }
48
- case 'left':
49
- top = triggerRect.top + (triggerRect.height - tooltipRect.height) / 2 + skidding;
50
- left = triggerRect.left - tooltipRect.width - distance;
51
- break;
52
- case 'left-start': {
53
- const triggerCenterY = triggerRect.top + triggerRect.height / 2;
54
- top = triggerCenterY - tooltipRect.height / 2;
55
- left = triggerRect.left - tooltipRect.width - distance;
56
- if (top < triggerRect.top) {
57
- top = triggerRect.top;
58
- }
59
- break;
60
- }
61
- case 'left-end': {
62
- const triggerCenterY = triggerRect.top + triggerRect.height / 2;
63
- top = triggerCenterY - tooltipRect.height / 2;
64
- left = triggerRect.left - tooltipRect.width - distance;
65
- if (top + tooltipRect.height > triggerRect.bottom) {
66
- top = triggerRect.bottom - tooltipRect.height;
67
- }
68
- break;
69
- }
70
- case 'right':
71
- top = triggerRect.top + (triggerRect.height - tooltipRect.height) / 2 + skidding;
72
- left = triggerRect.right + distance;
73
- break;
74
- case 'right-start': {
75
- const triggerCenterY = triggerRect.top + triggerRect.height / 2;
76
- top = triggerCenterY - tooltipRect.height / 2;
77
- left = triggerRect.right + distance;
78
- if (top < triggerRect.top) {
79
- top = triggerRect.top;
80
- }
81
- break;
82
- }
83
- case 'right-end': {
84
- const triggerCenterY = triggerRect.top + triggerRect.height / 2;
85
- top = triggerCenterY - tooltipRect.height / 2;
86
- left = triggerRect.right + distance;
87
- if (top + tooltipRect.height > triggerRect.bottom) {
88
- top = triggerRect.bottom - tooltipRect.height;
89
- }
90
- break;
91
- }
92
- default:
93
- top = triggerRect.top - tooltipRect.height - distance;
94
- left = triggerRect.left + (triggerRect.width - tooltipRect.width) / 2 + skidding;
95
- }
96
- return { top, left };
97
- };
98
- const candidateFits = (top, left) => top >= 0 &&
99
- left >= 0 &&
100
- top + tooltipRect.height <= viewportHeight &&
101
- left + tooltipRect.width <= viewportWidth;
102
- let placement = originalPlacement;
103
- let candidate = getCandidatePosition(placement);
104
- if (!candidateFits(candidate.top, candidate.left)) {
105
- if (['top', 'top-start', 'top-end'].includes(originalPlacement)) {
106
- placement = 'bottom';
107
- }
108
- else if (['bottom', 'bottom-start', 'bottom-end'].includes(originalPlacement)) {
109
- placement = 'top';
110
- }
111
- else if (['right', 'right-start', 'right-end'].includes(originalPlacement)) {
112
- placement = 'left';
113
- }
114
- else if (['left', 'left-start', 'left-end'].includes(originalPlacement)) {
115
- placement = 'right';
116
- }
117
- candidate = getCandidatePosition(placement);
118
- const leftCandidate = getCandidatePosition('left');
119
- const bottomCandidate = getCandidatePosition('bottom');
120
- const topCandidate = getCandidatePosition('top');
121
- if (!candidateFits(leftCandidate.top, leftCandidate.left) &&
122
- !candidateFits(bottomCandidate.top, bottomCandidate.left) &&
123
- !candidateFits(topCandidate.top, topCandidate.left)) {
124
- placement = 'right';
125
- candidate = getCandidatePosition(placement);
126
- }
127
- else {
128
- const rightCandidate = getCandidatePosition('right');
129
- if (!candidateFits(rightCandidate.top, rightCandidate.left) &&
130
- !candidateFits(bottomCandidate.top, bottomCandidate.left) &&
131
- !candidateFits(topCandidate.top, topCandidate.left)) {
132
- placement = 'left';
133
- candidate = getCandidatePosition(placement);
134
- }
135
- }
136
- }
137
- if (candidate.left < 0) {
138
- candidate.left = 5;
139
- }
140
- else if (candidate.left + tooltipRect.width > viewportWidth) {
141
- candidate.left = viewportWidth - tooltipRect.width - 5;
142
- }
143
- if (candidate.top < 0) {
144
- candidate.top = 5;
145
- }
146
- else if (candidate.top + tooltipRect.height > viewportHeight) {
147
- candidate.top = viewportHeight - tooltipRect.height - 5;
148
- }
149
- return { ...candidate, placement };
150
- }
151
- export function getCaretPosition({ placement, tooltipRect, triggerRect, caretSize, left, top }) {
152
- const triggerCenterX = triggerRect.left + triggerRect.width / 2;
153
- const triggerCenterY = triggerRect.top + triggerRect.height / 2;
154
- const [primaryPlacement, secondaryPlacement] = placement.split('-');
155
- let caretLeft = 0;
156
- let caretTop = 0;
157
- switch (primaryPlacement) {
158
- case 'top':
159
- caretTop = tooltipRect.height - caretSize;
160
- caretLeft = triggerCenterX - left - caretSize;
161
- if (placement === 'top-end') {
162
- caretLeft = triggerCenterX - left - caretSize;
163
- }
164
- else if (secondaryPlacement === 'start') {
165
- caretLeft = triggerCenterX - left - caretSize;
166
- }
167
- else if (secondaryPlacement === 'end') {
168
- caretLeft = tooltipRect.width - 2 * caretSize + 8;
169
- }
170
- caretLeft = Math.max(caretSize, Math.min(caretLeft, tooltipRect.width - 2 * caretSize));
171
- break;
172
- case 'bottom':
173
- caretTop = -caretSize;
174
- caretLeft = triggerCenterX - left - caretSize;
175
- break;
176
- case 'left':
177
- caretLeft = tooltipRect.width - caretSize;
178
- if (secondaryPlacement === 'start') {
179
- const computedCaretTop = triggerCenterY - top - caretSize;
180
- const minCaretTop = triggerRect.top - top;
181
- caretTop = Math.max(computedCaretTop, minCaretTop);
182
- }
183
- else if (secondaryPlacement === 'end') {
184
- const computedCaretTop = triggerCenterY - top - caretSize;
185
- const maxCaretTop = triggerRect.bottom - top - 2 * caretSize;
186
- caretTop = Math.min(computedCaretTop, maxCaretTop);
187
- }
188
- else {
189
- caretTop = triggerCenterY - top - caretSize;
190
- }
191
- caretTop = Math.max(caretSize, Math.min(caretTop, tooltipRect.height - 2 * caretSize));
192
- break;
193
- case 'right':
194
- caretLeft = -caretSize;
195
- if (secondaryPlacement === 'start') {
196
- const computedCaretTop = triggerCenterY - top - caretSize;
197
- const minCaretTop = triggerRect.top - top;
198
- caretTop = Math.max(computedCaretTop, minCaretTop);
199
- }
200
- else if (secondaryPlacement === 'end') {
201
- const computedCaretTop = triggerCenterY - top - caretSize;
202
- const maxCaretTop = triggerRect.bottom - top - 2 * caretSize;
203
- caretTop = Math.min(computedCaretTop, maxCaretTop);
204
- }
205
- else {
206
- caretTop = triggerCenterY - top - caretSize;
207
- }
208
- caretTop = Math.max(caretSize, Math.min(caretTop, tooltipRect.height - 2 * caretSize));
209
- break;
210
- default:
211
- caretLeft = tooltipRect.width / 2 - caretSize;
212
- caretTop = tooltipRect.height / 2 - caretSize;
213
- }
214
- return { caretLeft, caretTop };
215
- }
216
- //# sourceMappingURL=nile-tooltip-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nile-tooltip-utils.js","sourceRoot":"","sources":["../../../src/nile-tooltip/nile-tooltip-utils.ts"],"names":[],"mappings":"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","sourcesContent":["export function isInViewport(element: HTMLElement): boolean {\n const rect = element.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n}\n\n\nexport function getValidTooltipPosition(\n triggerRect: DOMRect,\n tooltipRect: DOMRect,\n originalPlacement: string,\n distance: number,\n skidding: number,\n caretSize: number,\n viewportWidth: number,\n viewportHeight: number\n): { top: number; left: number; placement: string } {\n const triggerCenterX = triggerRect.left + triggerRect.width / 2;\n\n const getCandidatePosition = (placement: string) => {\n let top = 0;\n let left = 0;\n\n switch (placement) {\n case 'top':\n top = triggerRect.top - tooltipRect.height - distance;\n left = triggerRect.left + (triggerRect.width - tooltipRect.width) / 2 + skidding;\n break;\n case 'top-start': {\n top = triggerRect.top - tooltipRect.height - distance;\n const centeredLeft = triggerRect.left + (triggerRect.width / 2) - (tooltipRect.width / 2) + skidding;\n left = Math.max(triggerRect.left + skidding, centeredLeft);\n break;\n }\n case 'top-end': {\n top = triggerRect.top - tooltipRect.height - distance;\n const centeredLeft = triggerRect.left + (triggerRect.width / 2) - (tooltipRect.width / 2) + skidding;\n const maxLeft = triggerRect.right - tooltipRect.width + skidding;\n left = Math.min(centeredLeft, maxLeft);\n break;\n }\n\n case 'bottom':\n top = triggerRect.bottom + distance;\n left = triggerRect.left + (triggerRect.width - tooltipRect.width) / 2 + skidding;\n break;\n case 'bottom-start': {\n top = triggerRect.bottom + distance;\n const centeredLeft = triggerRect.left + (triggerRect.width / 2) - (tooltipRect.width / 2) + skidding;\n left = Math.max(triggerRect.left + skidding, centeredLeft);\n\n break;\n }\n\n case 'bottom-end': {\n top = triggerRect.bottom + distance;\n const centeredLeft = triggerRect.left + (triggerRect.width / 2) - (tooltipRect.width / 2) + skidding;\n const maxLeft = triggerRect.right - tooltipRect.width + skidding;\n left = Math.min(centeredLeft, maxLeft);\n break;\n }\n\n case 'left':\n top = triggerRect.top + (triggerRect.height - tooltipRect.height) / 2 + skidding;\n left = triggerRect.left - tooltipRect.width - distance;\n break;\n case 'left-start': {\n const triggerCenterY = triggerRect.top + triggerRect.height / 2;\n top = triggerCenterY - tooltipRect.height / 2;\n left = triggerRect.left - tooltipRect.width - distance;\n if (top < triggerRect.top) {\n top = triggerRect.top;\n }\n break;\n }\n\n case 'left-end': {\n const triggerCenterY = triggerRect.top + triggerRect.height / 2;\n top = triggerCenterY - tooltipRect.height / 2;\n left = triggerRect.left - tooltipRect.width - distance;\n if (top + tooltipRect.height > triggerRect.bottom) {\n top = triggerRect.bottom - tooltipRect.height;\n }\n\n break;\n }\n\n case 'right':\n top = triggerRect.top + (triggerRect.height - tooltipRect.height) / 2 + skidding;\n left = triggerRect.right + distance;\n break;\n case 'right-start': {\n const triggerCenterY = triggerRect.top + triggerRect.height / 2;\n top = triggerCenterY - tooltipRect.height / 2;\n left = triggerRect.right + distance;\n if (top < triggerRect.top) {\n top = triggerRect.top;\n }\n\n break;\n }\n\n case 'right-end': {\n const triggerCenterY = triggerRect.top + triggerRect.height / 2;\n top = triggerCenterY - tooltipRect.height / 2;\n left = triggerRect.right + distance;\n if (top + tooltipRect.height > triggerRect.bottom) {\n top = triggerRect.bottom - tooltipRect.height;\n }\n\n break;\n }\n\n default:\n top = triggerRect.top - tooltipRect.height - distance;\n left = triggerRect.left + (triggerRect.width - tooltipRect.width) / 2 + skidding;\n }\n\n return { top, left };\n };\n\n const candidateFits = (top: number, left: number) =>\n top >= 0 &&\n left >= 0 &&\n top + tooltipRect.height <= viewportHeight &&\n left + tooltipRect.width <= viewportWidth;\n\n let placement = originalPlacement;\n let candidate = getCandidatePosition(placement);\n\n if (!candidateFits(candidate.top, candidate.left)) {\n if (['top', 'top-start', 'top-end'].includes(originalPlacement)) {\n placement = 'bottom';\n } else if (['bottom', 'bottom-start', 'bottom-end'].includes(originalPlacement)) {\n placement = 'top';\n } else if (['right', 'right-start', 'right-end'].includes(originalPlacement)) {\n placement = 'left';\n } else if (['left', 'left-start', 'left-end'].includes(originalPlacement)) {\n placement = 'right';\n }\n candidate = getCandidatePosition(placement);\n const leftCandidate = getCandidatePosition('left');\n const bottomCandidate = getCandidatePosition('bottom');\n const topCandidate = getCandidatePosition('top');\n if (\n !candidateFits(leftCandidate.top, leftCandidate.left) &&\n !candidateFits(bottomCandidate.top, bottomCandidate.left) &&\n !candidateFits(topCandidate.top, topCandidate.left)\n ) {\n placement = 'right';\n candidate = getCandidatePosition(placement);\n }\n else {\n const rightCandidate = getCandidatePosition('right');\n if (\n !candidateFits(rightCandidate.top, rightCandidate.left) &&\n !candidateFits(bottomCandidate.top, bottomCandidate.left) &&\n !candidateFits(topCandidate.top, topCandidate.left)\n ) {\n placement = 'left';\n candidate = getCandidatePosition(placement);\n }\n }\n }\n\n if (candidate.left < 0) {\n candidate.left = 5;\n } else if (candidate.left + tooltipRect.width > viewportWidth) {\n candidate.left = viewportWidth - tooltipRect.width - 5;\n }\n\n if (candidate.top < 0) {\n candidate.top = 5;\n } else if (candidate.top + tooltipRect.height > viewportHeight) {\n candidate.top = viewportHeight - tooltipRect.height - 5;\n }\n\n return { ...candidate, placement };\n}\n\n\n\nexport interface CaretPositionInput {\n placement: string;\n tooltipRect: DOMRect;\n triggerRect: DOMRect;\n caretSize: number;\n left: number;\n top: number;\n}\n\nexport function getCaretPosition({\n placement,\n tooltipRect,\n triggerRect,\n caretSize,\n left,\n top\n}: CaretPositionInput): { caretLeft: number; caretTop: number } {\n const triggerCenterX = triggerRect.left + triggerRect.width / 2;\n const triggerCenterY = triggerRect.top + triggerRect.height / 2;\n\n const [primaryPlacement, secondaryPlacement] = placement.split('-');\n\n let caretLeft = 0;\n let caretTop = 0;\n\n switch (primaryPlacement) {\n case 'top':\n caretTop = tooltipRect.height - caretSize;\n caretLeft = triggerCenterX - left - caretSize;\n if (placement === 'top-end') {\n caretLeft = triggerCenterX - left - caretSize;\n } else if (secondaryPlacement === 'start') {\n caretLeft = triggerCenterX - left - caretSize;\n } else if (secondaryPlacement === 'end') {\n caretLeft = tooltipRect.width - 2 * caretSize + 8;\n }\n caretLeft = Math.max(caretSize, Math.min(caretLeft, tooltipRect.width - 2 * caretSize));\n break;\n\n case 'bottom':\n caretTop = -caretSize;\n caretLeft = triggerCenterX - left - caretSize;\n break;\n\n case 'left':\n caretLeft = tooltipRect.width - caretSize;\n if (secondaryPlacement === 'start') {\n const computedCaretTop = triggerCenterY - top - caretSize;\n const minCaretTop = triggerRect.top - top;\n caretTop = Math.max(computedCaretTop, minCaretTop);\n } else if (secondaryPlacement === 'end') {\n const computedCaretTop = triggerCenterY - top - caretSize;\n const maxCaretTop = triggerRect.bottom - top - 2 * caretSize;\n caretTop = Math.min(computedCaretTop, maxCaretTop);\n } else {\n caretTop = triggerCenterY - top - caretSize;\n }\n caretTop = Math.max(caretSize, Math.min(caretTop, tooltipRect.height - 2 * caretSize));\n break;\n\n\n case 'right':\n caretLeft = -caretSize;\n if (secondaryPlacement === 'start') {\n const computedCaretTop = triggerCenterY - top - caretSize;\n const minCaretTop = triggerRect.top - top;\n caretTop = Math.max(computedCaretTop, minCaretTop);\n } else if (secondaryPlacement === 'end') {\n const computedCaretTop = triggerCenterY - top - caretSize;\n const maxCaretTop = triggerRect.bottom - top - 2 * caretSize;\n caretTop = Math.min(computedCaretTop, maxCaretTop);\n } else {\n caretTop = triggerCenterY - top - caretSize;\n }\n caretTop = Math.max(caretSize, Math.min(caretTop, tooltipRect.height - 2 * caretSize));\n break;\n\n\n default:\n caretLeft = tooltipRect.width / 2 - caretSize;\n caretTop = tooltipRect.height / 2 - caretSize;\n }\n\n return { caretLeft, caretTop };\n}\n"]}
@@ -1 +0,0 @@
1
- import './nile-tooltip';
@@ -1,148 +0,0 @@
1
- import { fixture, html, assert, oneEvent, waitUntil } from '@open-wc/testing';
2
- import './nile-tooltip';
3
- describe('NileTooltip', () => {
4
- it('renders with default properties', async () => {
5
- const el = await fixture(html `<nile-tooltip content="Hello"><button>Hover me</button></nile-tooltip>`);
6
- assert.equal(el.content, 'Hello');
7
- assert.equal(el.placement, 'top');
8
- assert.equal(el.disabled, false);
9
- assert.equal(el.open, false);
10
- });
11
- it('renders text content when no slot is used', async () => {
12
- const el = await fixture(html `<nile-tooltip content="Fallback"><button>Trigger</button></nile-tooltip>`);
13
- const content = el.shadowRoot.querySelector('.tooltip-content');
14
- assert.include(content.textContent, 'Fallback');
15
- });
16
- it('uses slotted content when provided', async () => {
17
- const el = await fixture(html `
18
- <nile-tooltip>
19
- <div slot="content">Slot Content</div>
20
- <button>Trigger</button>
21
- </nile-tooltip>
22
- `);
23
- const slot = el.shadowRoot.querySelector('slot[name="content"]');
24
- const assigned = slot.assignedNodes({ flatten: true });
25
- assert.isAbove(assigned.length, 0);
26
- assert.include(assigned[0].textContent ?? '', 'Slot Content');
27
- });
28
- it('shows tooltip on hover when trigger includes "hover"', async () => {
29
- const el = await fixture(html `
30
- <nile-tooltip content="Tooltip" trigger="hover">
31
- <button>Hover me</button>
32
- </nile-tooltip>
33
- `);
34
- const trigger = el.shadowRoot.querySelector('.trigger-container');
35
- trigger.dispatchEvent(new Event('mouseover', { bubbles: true }));
36
- await waitUntil(() => el.open === true);
37
- assert.isTrue(el.open);
38
- });
39
- it('hides tooltip on mouseout when trigger includes "hover"', async () => {
40
- const el = await fixture(html `
41
- <nile-tooltip content="Tooltip" trigger="hover">
42
- <button>Hover me</button>
43
- </nile-tooltip>
44
- `);
45
- const trigger = el.shadowRoot.querySelector('.trigger-container');
46
- trigger.dispatchEvent(new Event('mouseover', { bubbles: true }));
47
- await waitUntil(() => el.open === true);
48
- trigger.dispatchEvent(new Event('mouseout', { bubbles: true }));
49
- await waitUntil(() => el.open === false);
50
- });
51
- it('toggles tooltip on click when trigger includes "click"', async () => {
52
- const el = await fixture(html `
53
- <nile-tooltip content="Click me" trigger="click">
54
- <button>Click</button>
55
- </nile-tooltip>
56
- `);
57
- const trigger = el.shadowRoot.querySelector('.trigger-container');
58
- trigger.click();
59
- await waitUntil(() => el.open === true);
60
- trigger.click();
61
- await waitUntil(() => el.open === false);
62
- });
63
- it('shows and hides tooltip on focus/blur when trigger includes "focus"', async () => {
64
- const el = await fixture(html `
65
- <nile-tooltip content="Focus" trigger="focus">
66
- <button>Focus</button>
67
- </nile-tooltip>
68
- `);
69
- const trigger = el.shadowRoot.querySelector('.trigger-container');
70
- trigger.dispatchEvent(new Event('focusin'));
71
- await waitUntil(() => el.open === true);
72
- trigger.dispatchEvent(new Event('focusout'));
73
- await waitUntil(() => el.open === false);
74
- });
75
- it('does not show tooltip when disabled', async () => {
76
- const el = await fixture(html `
77
- <nile-tooltip content="Disabled" disabled trigger="hover">
78
- <button>Hover me</button>
79
- </nile-tooltip>
80
- `);
81
- const trigger = el.shadowRoot.querySelector('.trigger-container');
82
- trigger.dispatchEvent(new Event('mouseover'));
83
- await new Promise(resolve => setTimeout(resolve, 200));
84
- assert.isFalse(el.open);
85
- });
86
- it('emits nile-show and nile-after-show events', async () => {
87
- const el = await fixture(html `
88
- <nile-tooltip content="Event test" trigger="click">
89
- <button>Click</button>
90
- </nile-tooltip>
91
- `);
92
- const trigger = el.shadowRoot.querySelector('.trigger-container');
93
- setTimeout(() => trigger.click());
94
- const showEvent = await oneEvent(el, 'nile-show');
95
- assert.ok(showEvent);
96
- const afterShow = await oneEvent(el, 'nile-after-show');
97
- assert.ok(afterShow);
98
- });
99
- it('emits nile-hide and nile-after-hide events', async () => {
100
- const el = await fixture(html `
101
- <nile-tooltip content="Event test" trigger="click">
102
- <button>Click</button>
103
- </nile-tooltip>
104
- `);
105
- const trigger = el.shadowRoot.querySelector('.trigger-container');
106
- trigger.click();
107
- await waitUntil(() => el.open === true);
108
- setTimeout(() => trigger.click());
109
- const hideEvent = await oneEvent(el, 'nile-hide');
110
- assert.ok(hideEvent);
111
- const afterHide = await oneEvent(el, 'nile-after-hide');
112
- assert.ok(afterHide);
113
- });
114
- it('defaults to "bottom" placement when given invalid value', async () => {
115
- const el = await fixture(html `
116
- <nile-tooltip content="Fallback" placement=${'invalid'} >
117
- <button>Trigger</button>
118
- </nile-tooltip>
119
- `);
120
- await el.updateComplete;
121
- assert.equal(el.placement, 'top');
122
- });
123
- it('updates hasTooltipSlot on slot change', async () => {
124
- const el = await fixture(html `
125
- <nile-tooltip>
126
- <div slot="content">Initial slot</div>
127
- <button>Trigger</button>
128
- </nile-tooltip>
129
- `);
130
- const slot = el.shadowRoot.querySelector('slot[name="content"]');
131
- const newSlotNode = document.createElement('div');
132
- newSlotNode.slot = 'content';
133
- newSlotNode.textContent = 'Updated slot';
134
- el.appendChild(newSlotNode);
135
- slot.dispatchEvent(new Event('slotchange'));
136
- await el.updateComplete;
137
- assert.isTrue(el.hasTooltipSlot);
138
- });
139
- it('respects hoist attribute', async () => {
140
- const el = await fixture(html `
141
- <nile-tooltip hoist content="Hoisted">
142
- <button>Hoist</button>
143
- </nile-tooltip>
144
- `);
145
- assert.isTrue(el.hoist);
146
- });
147
- });
148
- //# sourceMappingURL=nile-tooltip.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nile-tooltip.test.js","sourceRoot":"","sources":["../../../src/nile-tooltip/nile-tooltip.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { fixture, html, assert, oneEvent, waitUntil } from '@open-wc/testing';\nimport './nile-tooltip';\nimport { NileTooltip } from './nile-tooltip';\n\ndescribe('NileTooltip', () => {\n\n it('renders with default properties', async () => {\n const el = await fixture<NileTooltip>(html`<nile-tooltip content=\"Hello\"><button>Hover me</button></nile-tooltip>`);\n assert.equal(el.content, 'Hello');\n assert.equal(el.placement, 'top');\n assert.equal(el.disabled, false);\n assert.equal(el.open, false);\n });\n\n it('renders text content when no slot is used', async () => {\n const el = await fixture<NileTooltip>(html`<nile-tooltip content=\"Fallback\"><button>Trigger</button></nile-tooltip>`);\n const content = el.shadowRoot!.querySelector('.tooltip-content')!;\n assert.include(content.textContent!, 'Fallback');\n });\n\n it('uses slotted content when provided', async () => {\n const el = await fixture<NileTooltip>(html`\n <nile-tooltip>\n <div slot=\"content\">Slot Content</div>\n <button>Trigger</button>\n </nile-tooltip>\n `);\n\n const slot = el.shadowRoot!.querySelector('slot[name=\"content\"]') as HTMLSlotElement;\n const assigned = slot.assignedNodes({ flatten: true });\n assert.isAbove(assigned.length, 0);\n assert.include(assigned[0].textContent ?? '', 'Slot Content');\n });\n\n it('shows tooltip on hover when trigger includes \"hover\"', async () => {\n const el = await fixture<NileTooltip>(html`\n <nile-tooltip content=\"Tooltip\" trigger=\"hover\">\n <button>Hover me</button>\n </nile-tooltip>\n `);\n const trigger = el.shadowRoot!.querySelector('.trigger-container')!;\n trigger.dispatchEvent(new Event('mouseover', { bubbles: true }));\n await waitUntil(() => el.open === true);\n assert.isTrue(el.open);\n });\n\n it('hides tooltip on mouseout when trigger includes \"hover\"', async () => {\n const el = await fixture<NileTooltip>(html`\n <nile-tooltip content=\"Tooltip\" trigger=\"hover\">\n <button>Hover me</button>\n </nile-tooltip>\n `);\n const trigger = el.shadowRoot!.querySelector('.trigger-container')!;\n trigger.dispatchEvent(new Event('mouseover', { bubbles: true }));\n await waitUntil(() => el.open === true);\n trigger.dispatchEvent(new Event('mouseout', { bubbles: true }));\n await waitUntil(() => el.open === false);\n });\n\n it('toggles tooltip on click when trigger includes \"click\"', async () => {\n const el = await fixture<NileTooltip>(html`\n <nile-tooltip content=\"Click me\" trigger=\"click\">\n <button>Click</button>\n </nile-tooltip>\n `);\n const trigger = el.shadowRoot!.querySelector('.trigger-container') as HTMLElement;\n trigger.click();\n await waitUntil(() => el.open === true);\n trigger.click();\n await waitUntil(() => el.open === false);\n });\n\n it('shows and hides tooltip on focus/blur when trigger includes \"focus\"', async () => {\n const el = await fixture<NileTooltip>(html`\n <nile-tooltip content=\"Focus\" trigger=\"focus\">\n <button>Focus</button>\n </nile-tooltip>\n `);\n const trigger = el.shadowRoot!.querySelector('.trigger-container')!;\n trigger.dispatchEvent(new Event('focusin'));\n await waitUntil(() => el.open === true);\n trigger.dispatchEvent(new Event('focusout'));\n await waitUntil(() => el.open === false);\n });\n\n it('does not show tooltip when disabled', async () => {\n const el = await fixture<NileTooltip>(html`\n <nile-tooltip content=\"Disabled\" disabled trigger=\"hover\">\n <button>Hover me</button>\n </nile-tooltip>\n `);\n const trigger = el.shadowRoot!.querySelector('.trigger-container')!;\n trigger.dispatchEvent(new Event('mouseover'));\n await new Promise(resolve => setTimeout(resolve, 200));\n assert.isFalse(el.open);\n });\n\n\n it('emits nile-show and nile-after-show events', async () => {\n const el = await fixture<NileTooltip>(html`\n <nile-tooltip content=\"Event test\" trigger=\"click\">\n <button>Click</button>\n </nile-tooltip>\n `);\n const trigger = el.shadowRoot!.querySelector('.trigger-container') as HTMLElement;\n setTimeout(() => trigger.click());\n const showEvent = await oneEvent(el, 'nile-show');\n assert.ok(showEvent);\n const afterShow = await oneEvent(el, 'nile-after-show');\n assert.ok(afterShow);\n });\n\n it('emits nile-hide and nile-after-hide events', async () => {\n const el = await fixture<NileTooltip>(html`\n <nile-tooltip content=\"Event test\" trigger=\"click\">\n <button>Click</button>\n </nile-tooltip>\n `);\n const trigger = el.shadowRoot!.querySelector('.trigger-container') as HTMLElement;\n trigger.click();\n await waitUntil(() => el.open === true);\n setTimeout(() => trigger.click());\n const hideEvent = await oneEvent(el, 'nile-hide');\n assert.ok(hideEvent);\n const afterHide = await oneEvent(el, 'nile-after-hide');\n assert.ok(afterHide);\n });\n\n it('defaults to \"bottom\" placement when given invalid value', async () => {\n const el = await fixture<NileTooltip>(html`\n <nile-tooltip content=\"Fallback\" placement=${'invalid' as unknown as NileTooltip['placement']} >\n <button>Trigger</button>\n </nile-tooltip>\n `);\n await el.updateComplete;\n assert.equal(el.placement, 'top');\n });\n\n\n it('updates hasTooltipSlot on slot change', async () => {\n const el = await fixture<NileTooltip>(html`\n <nile-tooltip>\n <div slot=\"content\">Initial slot</div>\n <button>Trigger</button>\n </nile-tooltip>\n `);\n\n const slot = el.shadowRoot!.querySelector('slot[name=\"content\"]') as HTMLSlotElement;\n const newSlotNode = document.createElement('div');\n newSlotNode.slot = 'content';\n newSlotNode.textContent = 'Updated slot';\n el.appendChild(newSlotNode);\n\n slot.dispatchEvent(new Event('slotchange'));\n await el.updateComplete;\n\n assert.isTrue((el as any).hasTooltipSlot);\n });\n\n it('respects hoist attribute', async () => {\n const el = await fixture<NileTooltip>(html`\n <nile-tooltip hoist content=\"Hoisted\">\n <button>Hoist</button>\n </nile-tooltip>\n `);\n assert.isTrue(el.hoist);\n });\n});\n"]}