@thednp/shorty 2.0.4 → 2.0.6

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 (225) hide show
  1. package/README.md +5 -5
  2. package/dist/shorty.cjs +18 -1
  3. package/dist/shorty.cjs.map +1 -1
  4. package/dist/shorty.d.ts +31 -18
  5. package/dist/shorty.js +18 -1
  6. package/dist/shorty.js.map +1 -1
  7. package/dist/shorty.mjs +451 -386
  8. package/dist/shorty.mjs.map +1 -1
  9. package/dts.config.ts +1 -7
  10. package/package.json +16 -28
  11. package/src/attr/hasAttribute.ts +2 -1
  12. package/src/attr/hasAttributeNS.ts +5 -2
  13. package/src/attr/removeAttribute.ts +2 -1
  14. package/src/attr/removeAttributeNS.ts +5 -2
  15. package/src/attr/setAttributeNS.ts +6 -2
  16. package/src/boolean/isApple.ts +6 -4
  17. package/src/boolean/isFirefox.ts +2 -2
  18. package/src/boolean/isMobile.ts +4 -4
  19. package/src/boolean/support3DTransform.ts +4 -2
  20. package/src/boolean/supportAnimation.ts +4 -2
  21. package/src/boolean/supportPassive.ts +6 -6
  22. package/src/boolean/supportTouch.ts +3 -2
  23. package/src/boolean/supportTransform.ts +4 -2
  24. package/src/boolean/supportTransition.ts +4 -2
  25. package/src/event/off.ts +5 -1
  26. package/src/event/on.ts +5 -1
  27. package/src/event/one.ts +5 -5
  28. package/src/get/getBoundingClientRect.ts +10 -5
  29. package/src/get/getDocument.ts +4 -4
  30. package/src/get/getDocumentBody.ts +1 -1
  31. package/src/get/getDocumentElement.ts +1 -1
  32. package/src/get/getDocumentHead.ts +4 -2
  33. package/src/get/getElementAnimationDelay.ts +9 -6
  34. package/src/get/getElementAnimationDuration.ts +9 -6
  35. package/src/get/getElementStyle.ts +2 -2
  36. package/src/get/getElementTransitionDelay.ts +9 -8
  37. package/src/get/getElementTransitionDuration.ts +9 -8
  38. package/src/get/getNodeScroll.ts +4 -2
  39. package/src/get/getParentNode.ts +5 -5
  40. package/src/get/getRectRelativeToOffsetParent.ts +9 -6
  41. package/src/get/getUID.ts +1 -1
  42. package/src/get/getWindow.ts +2 -2
  43. package/src/index.ts +425 -415
  44. package/src/interface/event.d.ts +49 -41
  45. package/src/interface/fn.ts +1 -0
  46. package/src/interface/originalEvent.d.ts +1 -1
  47. package/src/is/isArray.ts +2 -1
  48. package/src/is/isCanvas.ts +2 -2
  49. package/src/is/isCustomElement.ts +5 -3
  50. package/src/is/isDocument.ts +3 -2
  51. package/src/is/isElement.ts +3 -2
  52. package/src/is/isElementInScrollRange.ts +3 -3
  53. package/src/is/isElementInViewport.ts +5 -4
  54. package/src/is/isElementsArray.ts +2 -2
  55. package/src/is/isFunction.ts +4 -2
  56. package/src/is/isHTMLCollection.ts +2 -2
  57. package/src/is/isHTMLElement.ts +1 -1
  58. package/src/is/isHTMLImageElement.ts +2 -2
  59. package/src/is/isJSON.ts +2 -2
  60. package/src/is/isMap.ts +3 -3
  61. package/src/is/isMedia.ts +9 -3
  62. package/src/is/isNode.ts +5 -3
  63. package/src/is/isNodeList.ts +2 -2
  64. package/src/is/isNumber.ts +2 -1
  65. package/src/is/isObject.ts +1 -1
  66. package/src/is/isRTL.ts +2 -2
  67. package/src/is/isSVGElement.ts +2 -2
  68. package/src/is/isScaledElement.ts +4 -3
  69. package/src/is/isShadowRoot.ts +2 -2
  70. package/src/is/isString.ts +2 -1
  71. package/src/is/isTableElement.ts +6 -3
  72. package/src/is/isWeakMap.ts +3 -3
  73. package/src/is/isWindow.ts +2 -2
  74. package/src/misc/Float32ArrayFrom.ts +3 -2
  75. package/src/misc/Float64ArrayFrom.ts +3 -2
  76. package/src/misc/ObjectAssign.ts +15 -4
  77. package/src/misc/ObjectEntries.ts +1 -1
  78. package/src/misc/ObjectHasOwn.ts +3 -2
  79. package/src/misc/ObjectKeys.ts +2 -1
  80. package/src/misc/ObjectValues.ts +3 -2
  81. package/src/misc/createCustomEvent.ts +8 -5
  82. package/src/misc/createElement.ts +6 -4
  83. package/src/misc/createElementNS.ts +3 -3
  84. package/src/misc/data.ts +4 -7
  85. package/src/misc/dispatchEvent.ts +2 -1
  86. package/src/misc/distinct.ts +2 -1
  87. package/src/misc/emulateAnimationEnd.ts +12 -9
  88. package/src/misc/emulateTransitionEnd.ts +11 -8
  89. package/src/misc/focus.ts +2 -1
  90. package/src/misc/focusTrap.ts +67 -0
  91. package/src/misc/getInstance.ts +1 -1
  92. package/src/misc/normalizeOptions.ts +16 -13
  93. package/src/misc/normalizeValue.ts +8 -6
  94. package/src/misc/setElementStyle.ts +9 -6
  95. package/src/misc/timer.ts +15 -8
  96. package/src/selectors/closest.ts +2 -2
  97. package/src/selectors/getCustomElements.ts +4 -5
  98. package/src/selectors/getElementById.ts +3 -3
  99. package/src/selectors/getElementsByClassName.ts +5 -5
  100. package/src/selectors/getElementsByTagName.ts +7 -5
  101. package/src/selectors/matches.ts +2 -1
  102. package/src/selectors/querySelector.ts +9 -6
  103. package/src/selectors/querySelectorAll.ts +6 -3
  104. package/src/strings/DOMContentLoadedEvent.ts +1 -1
  105. package/src/strings/DOMMouseScrollEvent.ts +1 -1
  106. package/src/strings/abortEvent.ts +1 -1
  107. package/src/strings/addEventListener.ts +1 -1
  108. package/src/strings/animationDelay.ts +1 -1
  109. package/src/strings/animationDuration.ts +1 -1
  110. package/src/strings/animationEndEvent.ts +1 -1
  111. package/src/strings/animationName.ts +1 -1
  112. package/src/strings/ariaChecked.ts +1 -1
  113. package/src/strings/ariaDescribedBy.ts +1 -1
  114. package/src/strings/ariaDescription.ts +1 -1
  115. package/src/strings/ariaExpanded.ts +1 -1
  116. package/src/strings/ariaHasPopup.ts +1 -1
  117. package/src/strings/ariaHidden.ts +1 -1
  118. package/src/strings/ariaLabel.ts +1 -1
  119. package/src/strings/ariaLabelledBy.ts +1 -1
  120. package/src/strings/ariaModal.ts +1 -1
  121. package/src/strings/ariaPressed.ts +1 -1
  122. package/src/strings/ariaSelected.ts +1 -1
  123. package/src/strings/ariaValueMax.ts +1 -1
  124. package/src/strings/ariaValueMin.ts +1 -1
  125. package/src/strings/ariaValueNow.ts +1 -1
  126. package/src/strings/ariaValueText.ts +1 -1
  127. package/src/strings/beforeunloadEvent.ts +1 -1
  128. package/src/strings/bezierEasings.ts +25 -25
  129. package/src/strings/blurEvent.ts +1 -1
  130. package/src/strings/changeEvent.ts +1 -1
  131. package/src/strings/contextmenuEvent.ts +1 -1
  132. package/src/strings/dragEvent.ts +1 -1
  133. package/src/strings/dragendEvent.ts +1 -1
  134. package/src/strings/dragenterEvent.ts +1 -1
  135. package/src/strings/dragleaveEvent.ts +1 -1
  136. package/src/strings/dragoverEvent.ts +1 -1
  137. package/src/strings/dragstartEvent.ts +1 -1
  138. package/src/strings/errorEvent.ts +1 -1
  139. package/src/strings/focusEvent.ts +1 -1
  140. package/src/strings/focusEvents.ts +1 -1
  141. package/src/strings/focusableSelector.ts +4 -0
  142. package/src/strings/focusinEvent.ts +1 -1
  143. package/src/strings/focusoutEvent.ts +1 -1
  144. package/src/strings/gesturechangeEvent.ts +1 -1
  145. package/src/strings/gestureendEvent.ts +1 -1
  146. package/src/strings/gesturestartEvent.ts +1 -1
  147. package/src/strings/keyAlt.ts +1 -1
  148. package/src/strings/keyArrowDown.ts +1 -1
  149. package/src/strings/keyArrowLeft.ts +1 -1
  150. package/src/strings/keyArrowRight.ts +1 -1
  151. package/src/strings/keyArrowUp.ts +1 -1
  152. package/src/strings/keyBackspace.ts +1 -1
  153. package/src/strings/keyCapsLock.ts +1 -1
  154. package/src/strings/keyControl.ts +1 -1
  155. package/src/strings/keyDelete.ts +1 -1
  156. package/src/strings/keyEnter.ts +1 -1
  157. package/src/strings/keyEscape.ts +1 -1
  158. package/src/strings/keyInsert.ts +1 -1
  159. package/src/strings/keyMeta.ts +1 -1
  160. package/src/strings/keyNumpadEnter.ts +1 -1
  161. package/src/strings/keyPause.ts +1 -1
  162. package/src/strings/keyScrollLock.ts +1 -1
  163. package/src/strings/keyShift.ts +1 -1
  164. package/src/strings/keySpace.ts +1 -1
  165. package/src/strings/keyTab.ts +1 -1
  166. package/src/strings/keyboardEventKeys.ts +19 -19
  167. package/src/strings/keydownEvent.ts +1 -1
  168. package/src/strings/keypressEvent.ts +1 -1
  169. package/src/strings/keyupEvent.ts +1 -1
  170. package/src/strings/loadEvent.ts +1 -1
  171. package/src/strings/loadstartEvent.ts +1 -1
  172. package/src/strings/mouseClickEvents.ts +1 -1
  173. package/src/strings/mouseHoverEvents.ts +3 -4
  174. package/src/strings/mouseSwipeEvents.ts +4 -4
  175. package/src/strings/mouseclickEvent.ts +1 -1
  176. package/src/strings/mousedblclickEvent.ts +1 -1
  177. package/src/strings/mousedownEvent.ts +1 -1
  178. package/src/strings/mouseenterEvent.ts +1 -1
  179. package/src/strings/mousehoverEvent.ts +1 -1
  180. package/src/strings/mouseinEvent.ts +1 -1
  181. package/src/strings/mouseleaveEvent.ts +1 -1
  182. package/src/strings/mousemoveEvent.ts +1 -1
  183. package/src/strings/mouseoutEvent.ts +1 -1
  184. package/src/strings/mouseoverEvent.ts +1 -1
  185. package/src/strings/mouseupEvent.ts +1 -1
  186. package/src/strings/mousewheelEvent.ts +1 -1
  187. package/src/strings/moveEvent.ts +1 -1
  188. package/src/strings/nativeEvents.ts +50 -50
  189. package/src/strings/offsetHeight.ts +1 -1
  190. package/src/strings/offsetWidth.ts +1 -1
  191. package/src/strings/orientationchangeEvent.ts +1 -1
  192. package/src/strings/pointercancelEvent.ts +1 -1
  193. package/src/strings/pointerdownEvent.ts +1 -1
  194. package/src/strings/pointerleaveEvent.ts +1 -1
  195. package/src/strings/pointermoveEvent.ts +1 -1
  196. package/src/strings/pointerupEvent.ts +1 -1
  197. package/src/strings/readystatechangeEvent.ts +1 -1
  198. package/src/strings/removeEventListener.ts +1 -1
  199. package/src/strings/resetEvent.ts +1 -1
  200. package/src/strings/resizeEvent.ts +1 -1
  201. package/src/strings/scrollEvent.ts +1 -1
  202. package/src/strings/scrollHeight.ts +1 -1
  203. package/src/strings/scrollWidth.ts +1 -1
  204. package/src/strings/selectEvent.ts +1 -1
  205. package/src/strings/selectendEvent.ts +1 -1
  206. package/src/strings/selectstartEvent.ts +1 -1
  207. package/src/strings/submitEvent.ts +1 -1
  208. package/src/strings/tabindex.ts +1 -1
  209. package/src/strings/touchEvents.ts +4 -4
  210. package/src/strings/touchcancelEvent.ts +1 -1
  211. package/src/strings/touchendEvent.ts +1 -1
  212. package/src/strings/touchmoveEvent.ts +1 -1
  213. package/src/strings/touchstartEvent.ts +1 -1
  214. package/src/strings/transitionDelay.ts +1 -1
  215. package/src/strings/transitionDuration.ts +1 -1
  216. package/src/strings/transitionEndEvent.ts +1 -1
  217. package/src/strings/transitionProperty.ts +1 -1
  218. package/src/strings/unloadEvent.ts +1 -1
  219. package/src/strings/userAgentData.ts +2 -2
  220. package/test/fixtures/getExampleDom.ts +12 -8
  221. package/test/is.test.ts +15 -11
  222. package/test/misc.test.ts +65 -17
  223. package/{vite.config.ts → vite.config.mts} +4 -8
  224. package/{vitest.config-ui.ts → vitest.config-ui.mts} +5 -0
  225. package/{vitest.config.ts → vitest.config.mts} +5 -0
@@ -1,7 +1,4 @@
1
- export const getExampleDOM = () => {
2
- const div = document.createElement('div');
3
- div.className = 'm-4';
4
- const tempDocument = new DOMParser().parseFromString(`
1
+ const markup = `<div class="p-5">
5
2
  <div id="alertDemo" class="alert alert-warning alert-dismissible fade show" data-bs-op1="false" data-bs-op2="true" data-bs-op3="10" data-bs-title="" role="alert">
6
3
  <button role="button" type="button" class="btn-close bg-none" data-bs-target="alertDemo" data-bs-dismiss="alert" aria-label="Close">
7
4
  <svg viewBox="0 0 16 16" class="align-top">
@@ -10,6 +7,10 @@ export const getExampleDOM = () => {
10
7
  </svg>
11
8
  </button>
12
9
  <p><b>Holy guacamole!</b> Best check yo self, you're not looking too good.</p>
10
+ <button class="btn btn-outline-secondary">
11
+ ReadMore
12
+ </button>
13
+
13
14
  <img src="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgODAgNDMiIHdpZHRoPSI4MCIgaGVpZ2h0PSI0MyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICAgICAgICAgICAgICAgIDxyZWN0IGZpbGw9IndoaXRlIiBzdHJva2U9IiNjY2MiIHN0cm9rZS13aWR0aD0iMSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcng9IjUiPjwvcmVjdD4NCiAgICAgICAgICAgICAgICAgIDx0ZXh0IGRpcmVjdGlvbj0ibHRyIiBmaWxsPSIjMzMzIiB4PSIyNSIgeT0iMjUiIGZvbnQtc2l6ZT0iMTQiPklNRzwvdGV4dD4NCiAgICAgICAgICAgICAgICA8L3N2Zz4=" alt="Image">
14
15
  </div>
15
16
  <table class="table">
@@ -40,9 +41,12 @@ export const getExampleDOM = () => {
40
41
  </tr>
41
42
  </tbody>
42
43
  </table>
43
- `, 'text/html');
44
- // console.log(tempDocument.body.children)
45
- div.append(...tempDocument.body.children);
44
+ </div>
45
+ `;
46
+
47
+ export const getExampleDOM = () => {
48
+ const tempDocument = new DOMParser().parseFromString(markup, 'text/html');
49
+ const container = tempDocument.body.querySelector('div')!;
46
50
 
47
- return div;
51
+ return container;
48
52
  };
package/test/is.test.ts CHANGED
@@ -8,13 +8,20 @@ import CustomElem from './fixtures/custom-elem';
8
8
  describe('Shorty Library Tests - IS', () => {
9
9
  const wrapper = document.createElement('div');
10
10
  document.body.append(wrapper);
11
+
11
12
  afterEach(async () => {
12
13
  wrapper.innerHTML = '';
13
14
  });
14
15
 
15
- it('Test is folder', () => {
16
+ it('Test is folder', async () => {
17
+ vi.useFakeTimers();
16
18
  const container = getExampleDOM();
19
+ const CE1 = new CustomElem();
20
+ CE1.className = 'btn btn-outline-primary';
21
+ CE1.style.transform = 'scale(1.01)';
22
+ container.append(CE1);
17
23
  wrapper.append(container);
24
+ await vi.waitFor(() => container.querySelector('table'), 200);
18
25
  const win = container.ownerDocument.defaultView!;
19
26
 
20
27
  const {
@@ -51,15 +58,12 @@ describe('Shorty Library Tests - IS', () => {
51
58
  } = SHORTY;
52
59
 
53
60
  // const win = getWindow($element[0]);
54
- const CE1 = new CustomElem();
55
- CE1.className = 'btn btn-outline-primary';
56
- CE1.style.transform = 'scale(1.01)';
57
- document.body.append(CE1);
61
+
58
62
 
59
63
  const element = querySelector('.alert', container)!;
60
64
  const CE = querySelector('custom-elem', document) as HTMLElement;
61
65
  CE.className = 'btn btn-outline-primary';
62
- // CE.style.transform = 'scale(1.01)';
66
+ CE.style.transform = 'scale(1.01)';
63
67
  // win.document.body.append(CE);
64
68
  const img = querySelector('img', element);
65
69
  const svg = querySelector('svg', element);
@@ -154,12 +158,12 @@ describe('Shorty Library Tests - IS', () => {
154
158
 
155
159
  expect(isElementInScrollRange(), 'isElementInScrollRange()').to.be.false;
156
160
  expect(isElementInScrollRange(win as any), 'isElementInScrollRange(window)').to.be.false;
157
- expect(isElementInScrollRange(CE!), 'isElementInScrollRange(CustomElement)').to.be.true;
161
+ expect(isElementInScrollRange(CE!), 'isElementInScrollRange(CustomElement)').to.be.false;
158
162
  expect(isElementInScrollRange(element), 'isElementInScrollRange(node)').to.be.true;
159
163
 
160
164
  expect(isElementInViewport(), 'isElementInScrollRange()').to.be.false;
161
165
  expect(isElementInViewport(win as any), 'isElementInScrollRange(window)').to.be.false;
162
- expect(isElementInViewport(CE!), 'isElementInViewport(CustomElement)').to.be.false;
166
+ expect(isElementInViewport(CE), 'isElementInViewport(CustomElement)').to.be.false;
163
167
  expect(isElementInViewport(element), 'isElementInScrollRange(node)').to.be.true;
164
168
 
165
169
  expect(isNode(), 'isNode()').to.be.false;
@@ -183,7 +187,7 @@ describe('Shorty Library Tests - IS', () => {
183
187
  expect(isScaledElement(element), 'isScaledElement(node)').to.be.false;
184
188
  expect(isScaledElement(win as any), 'isScaledElement(window)').to.be.false;
185
189
  expect(isScaledElement(win.document as any), 'isScaledElement(document)').to.be.false;
186
- expect(isScaledElement(CE!), 'isScaledElement(expected)').to.be.true;
190
+ expect(isScaledElement(CE), 'isScaledElement(expected)').to.be.true;
187
191
 
188
192
  expect(isSVGElement(), 'isSVGElement()').to.be.false;
189
193
  expect(isSVGElement(element), 'isSVGElement(node)').to.be.false;
@@ -230,7 +234,7 @@ describe('Shorty Library Tests - IS', () => {
230
234
  expect(isShadowRoot(element), 'isShadowRoot(element)').to.be.false;
231
235
  expect(isShadowRoot(document), 'isShadowRoot(document)').to.be.false;
232
236
  expect(isShadowRoot(CE!.shadowRoot), 'isShadowRoot(CustomElement.shadowRoot)').to.be.true;
233
-
234
- }, { timeout: 150 })
237
+ }, 350);
238
+ vi.advanceTimersByTime(350)
235
239
  });
236
240
  });
package/test/misc.test.ts CHANGED
@@ -6,13 +6,16 @@ import "./fixtures/style.css";
6
6
  describe('Shorty Library Tests - MISC', () => {
7
7
  const wrapper = document.createElement('div');
8
8
  document.body.append(wrapper);
9
+
9
10
  afterEach(async () => {
10
11
  wrapper.innerHTML = '';
11
12
  });
12
13
 
13
- it('Test misc folder - emulateTransitionEnd - no transition', () => {
14
+ it('Test misc folder - emulateTransitionEnd - no transition', async () => {
15
+ vi.useFakeTimers();
14
16
  const container = getExampleDOM();
15
17
  wrapper.append(container);
18
+ await vi.waitFor(() => container.querySelector('.alert'), 200);
16
19
 
17
20
  const {
18
21
  dispatchEvent,
@@ -57,16 +60,18 @@ describe('Shorty Library Tests - MISC', () => {
57
60
  dispatchEvent(el, alertHideEvent);
58
61
  emulateTransitionEnd(el, function () {
59
62
  addClass(el, 'show');
63
+ vi.advanceTimersByTime(350);
60
64
  });
61
65
  });
62
66
 
63
67
  btn.click();
64
68
  });
65
69
 
66
- it('Test misc folder - emulateTransitionEnd - default', () => {
70
+ it('Test misc folder - emulateTransitionEnd - default', async () => {
67
71
  vi.useFakeTimers();
68
72
  const container = getExampleDOM();
69
73
  wrapper.append(container);
74
+ await vi.waitFor(() => container.querySelector('.alert'), 200);
70
75
 
71
76
  const {
72
77
  dispatchEvent,
@@ -79,7 +84,7 @@ describe('Shorty Library Tests - MISC', () => {
79
84
  one,
80
85
  focus,
81
86
  } = SHORTY;
82
-
87
+
83
88
  const el = querySelector('.alert', container) as HTMLElement;
84
89
  const btn = querySelector('.btn-close', el) as HTMLButtonElement;
85
90
  const alertHideEvent = createCustomEvent('hide-alert', { relatedTarget: null });
@@ -99,62 +104,105 @@ describe('Shorty Library Tests - MISC', () => {
99
104
  addClass(el, 'show');
100
105
  focus(btn, { preventScroll: false });
101
106
  console.log('transitionend triggered');
107
+ vi.advanceTimersByTime(350);
102
108
  });
103
- vi.advanceTimersByTime(350);
104
109
  });
105
110
 
106
- btn!.click();
111
+ btn.click();
112
+ });
107
113
 
114
+ it("Can use focus trap", async () => {
115
+ const container = getExampleDOM();
116
+ const { focus, toggleFocusTrap, focusableSelector } = SHORTY;
117
+ wrapper.append(container);
118
+ await vi.waitFor(() => container.querySelector('.alert'), 200);
119
+ const element = container.querySelector<HTMLElement>('.alert')!;
120
+ const firstFocusable = element.querySelector<SHORTY.FocusableElement>(focusableSelector)!;
121
+ const table = container.querySelector<HTMLElement>('table')!;
122
+ const doc = element.ownerDocument!;
123
+
124
+ focus(firstFocusable);
125
+ toggleFocusTrap(element);
126
+ element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', key: 'Tab', shiftKey: true }));
127
+ element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', key: 'Tab', shiftKey: true }));
128
+ element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', key: 'Tab', shiftKey: true }));
129
+ element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', key: 'Tab', shiftKey: true }));
130
+ element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', key: 'Tab', shiftKey: true }));
131
+ element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', key: 'Tab', }));
132
+ element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', key: 'Tab', }));
133
+ element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', key: 'Tab', }));
134
+ element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', key: 'Tab', }));
135
+ element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', key: 'Tab', }));
136
+
137
+ await vi.waitFor(() => {
138
+ expect(element).to.contain(doc.activeElement);
139
+ }, 50)
140
+ toggleFocusTrap(element);
141
+
142
+ toggleFocusTrap(table);
143
+ table.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', shiftKey: true }));
144
+ table.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab' }));
145
+
146
+ await vi.waitFor(() => {
147
+ expect(element).to.contain(doc.activeElement);
148
+ }, 50)
149
+ toggleFocusTrap(table);
108
150
  });
109
151
 
110
152
  it('Test misc folder - emulateAnimationEnd - default', async () => {
111
153
  vi.useFakeTimers();
112
154
  const container = getExampleDOM();
113
155
  wrapper.append(container);
114
-
115
156
  const { emulateAnimationEnd, getElementStyle, querySelector, addClass } = SHORTY;
157
+ await vi.waitFor(() => container.querySelector('.alert'), 200);
116
158
 
117
159
  const el = querySelector('.alert') as HTMLElement;
118
160
 
119
161
  addClass(el, 'animate-test');
120
162
  emulateAnimationEnd(el, () => {
121
163
  console.log('animationend fired - default');
164
+ vi.advanceTimersByTime(350);
165
+ });
166
+ await vi.waitFor(() => {
122
167
  expect(getElementStyle(el, 'animationName'), 'animationName').to.equal('animate-test');
123
168
  expect(getElementStyle(el, 'animationDuration'), 'animationDuration').to.equal('0.3s');
124
169
  expect(getElementStyle(el, 'animationDelay'), 'animationDelay').to.equal('0s');
125
- });
126
- vi.advanceTimersByTime(350);
127
-
170
+ }, 351)
128
171
  });
129
172
 
130
- it('Test misc folder - emulateAnimationEnd - no duration', () => {
173
+
174
+ it('Test misc folder - emulateAnimationEnd - no duration', async () => {
175
+ vi.useFakeTimers();
131
176
  const container = getExampleDOM();
132
177
  wrapper.append(container);
178
+ await vi.waitFor(() => container.querySelector('.alert'), 200);
133
179
 
134
180
  const { emulateAnimationEnd, setElementStyle, getElementStyle, querySelector, addClass } =
135
181
  SHORTY;
136
182
 
137
183
  const el = querySelector('.alert', container)!;
138
- setElementStyle(el, { animationDuration: '0.1s' });
184
+ // setElementStyle(el, { animationDuration: '0.1s' });
185
+ setElementStyle(el, { animationDuration: '0s' });
139
186
 
140
187
  addClass(el, 'animate-test');
141
188
 
142
-
143
189
  emulateAnimationEnd(el, () => {
144
- // await vi.waitUntil(() => {
145
190
  console.log('animationend fired no duration');
191
+ vi.advanceTimersByTime(150);
192
+ });
193
+
194
+ await vi.waitFor(() => {
146
195
  expect(getElementStyle(el, 'animationName'), 'animationName').to.equal('animate-test');
147
196
  expect(getElementStyle(el, 'animationDuration'), 'animationDuration').to.equal('0s');
148
197
  expect(getElementStyle(el, 'animationDelay'), 'animationDelay').to.equal('0s');
149
-
150
- // }, { timeout: 150 })
151
- });
198
+ }, 50)
152
199
 
153
200
  });
154
201
 
155
- it('Test misc folder - everything else', () => {
202
+ it('Test misc folder - everything else', async () => {
156
203
  const container = getExampleDOM();
157
204
  wrapper.append(container);
205
+ await vi.waitFor(() => container.querySelector('.alert'), 200);
158
206
 
159
207
  const {
160
208
  ArrayFrom,
@@ -1,17 +1,12 @@
1
1
  import { resolve } from 'path';
2
2
  import { defineConfig } from 'vite';
3
- import { name } from './package.json';
4
-
5
- const getPackageName = () => {
6
- return name.includes('@') ? name.split('/')[1] : name;
7
- };
8
3
 
9
4
  const NAME = 'SHORTY';
10
5
 
11
6
  const fileName = {
12
- es: `${getPackageName()}.mjs`,
13
- cjs: `${getPackageName()}.cjs`,
14
- iife: `${getPackageName()}.js`,
7
+ es: `shorty.mjs`,
8
+ cjs: `shorty.cjs`,
9
+ iife: `shorty.js`,
15
10
  };
16
11
 
17
12
  export default defineConfig({
@@ -19,6 +14,7 @@ export default defineConfig({
19
14
  build: {
20
15
  emptyOutDir: true,
21
16
  outDir: 'dist',
17
+ target: 'ESNext',
22
18
  lib: {
23
19
  entry: resolve(__dirname, 'src/index.ts'),
24
20
  name: NAME,
@@ -1,6 +1,11 @@
1
1
  import { defineConfig } from "vitest/config";
2
2
 
3
3
  export default defineConfig({
4
+ optimizeDeps: {
5
+ include: [
6
+ "@vitest/coverage-istanbul"
7
+ ]
8
+ },
4
9
  test: {
5
10
  css: true,
6
11
  globals: true,
@@ -1,6 +1,11 @@
1
1
  import { defineConfig } from "vitest/config";
2
2
 
3
3
  export default defineConfig({
4
+ optimizeDeps: {
5
+ include: [
6
+ "@vitest/coverage-istanbul"
7
+ ]
8
+ },
4
9
  test: {
5
10
  css: true,
6
11
  globals: true,