@furystack/shades-common-components 12.4.0 → 12.5.0
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.
- package/CHANGELOG.md +56 -0
- package/esm/components/app-bar-link.spec.js +16 -19
- package/esm/components/app-bar-link.spec.js.map +1 -1
- package/esm/components/app-bar.spec.js +6 -4
- package/esm/components/app-bar.spec.js.map +1 -1
- package/esm/components/avatar.spec.js +9 -9
- package/esm/components/avatar.spec.js.map +1 -1
- package/esm/components/breadcrumb.spec.js +2 -2
- package/esm/components/breadcrumb.spec.js.map +1 -1
- package/esm/components/button-group.d.ts +32 -0
- package/esm/components/button-group.d.ts.map +1 -1
- package/esm/components/button-group.js +26 -2
- package/esm/components/button-group.js.map +1 -1
- package/esm/components/button-group.spec.js +127 -11
- package/esm/components/button-group.spec.js.map +1 -1
- package/esm/components/button.spec.js +4 -4
- package/esm/components/button.spec.js.map +1 -1
- package/esm/components/cache-view.spec.js +2 -3
- package/esm/components/cache-view.spec.js.map +1 -1
- package/esm/components/carousel.spec.js +47 -47
- package/esm/components/carousel.spec.js.map +1 -1
- package/esm/components/circular-progress.spec.js +2 -2
- package/esm/components/command-palette/command-palette-input.spec.js +23 -19
- package/esm/components/command-palette/command-palette-input.spec.js.map +1 -1
- package/esm/components/command-palette/command-palette-suggestion-list.spec.js +27 -27
- package/esm/components/command-palette/command-palette-suggestion-list.spec.js.map +1 -1
- package/esm/components/command-palette/index.spec.js +64 -51
- package/esm/components/command-palette/index.spec.js.map +1 -1
- package/esm/components/context-menu/context-menu.spec.js +33 -33
- package/esm/components/context-menu/context-menu.spec.js.map +1 -1
- package/esm/components/data-grid/body.spec.js +13 -13
- package/esm/components/data-grid/body.spec.js.map +1 -1
- package/esm/components/data-grid/data-grid-row.spec.js +8 -8
- package/esm/components/data-grid/data-grid-row.spec.js.map +1 -1
- package/esm/components/data-grid/data-grid.d.ts +40 -2
- package/esm/components/data-grid/data-grid.d.ts.map +1 -1
- package/esm/components/data-grid/data-grid.js +7 -10
- package/esm/components/data-grid/data-grid.js.map +1 -1
- package/esm/components/data-grid/data-grid.spec.js +71 -28
- package/esm/components/data-grid/data-grid.spec.js.map +1 -1
- package/esm/components/data-grid/filters/boolean-filter.d.ts +12 -0
- package/esm/components/data-grid/filters/boolean-filter.d.ts.map +1 -0
- package/esm/components/data-grid/filters/boolean-filter.js +27 -0
- package/esm/components/data-grid/filters/boolean-filter.js.map +1 -0
- package/esm/components/data-grid/filters/boolean-filter.spec.d.ts +2 -0
- package/esm/components/data-grid/filters/boolean-filter.spec.d.ts.map +1 -0
- package/esm/components/data-grid/filters/boolean-filter.spec.js +114 -0
- package/esm/components/data-grid/filters/boolean-filter.spec.js.map +1 -0
- package/esm/components/data-grid/filters/date-filter.d.ts +12 -0
- package/esm/components/data-grid/filters/date-filter.d.ts.map +1 -0
- package/esm/components/data-grid/filters/date-filter.js +109 -0
- package/esm/components/data-grid/filters/date-filter.js.map +1 -0
- package/esm/components/data-grid/filters/date-filter.spec.d.ts +2 -0
- package/esm/components/data-grid/filters/date-filter.spec.d.ts.map +1 -0
- package/esm/components/data-grid/filters/date-filter.spec.js +145 -0
- package/esm/components/data-grid/filters/date-filter.spec.js.map +1 -0
- package/esm/components/data-grid/filters/enum-filter.d.ts +16 -0
- package/esm/components/data-grid/filters/enum-filter.d.ts.map +1 -0
- package/esm/components/data-grid/filters/enum-filter.js +72 -0
- package/esm/components/data-grid/filters/enum-filter.js.map +1 -0
- package/esm/components/data-grid/filters/enum-filter.spec.d.ts +2 -0
- package/esm/components/data-grid/filters/enum-filter.spec.d.ts.map +1 -0
- package/esm/components/data-grid/filters/enum-filter.spec.js +136 -0
- package/esm/components/data-grid/filters/enum-filter.spec.js.map +1 -0
- package/esm/components/data-grid/filters/filter-dropdown.d.ts +6 -0
- package/esm/components/data-grid/filters/filter-dropdown.d.ts.map +1 -0
- package/esm/components/data-grid/filters/filter-dropdown.js +41 -0
- package/esm/components/data-grid/filters/filter-dropdown.js.map +1 -0
- package/esm/components/data-grid/filters/filter-dropdown.spec.d.ts +2 -0
- package/esm/components/data-grid/filters/filter-dropdown.spec.d.ts.map +1 -0
- package/esm/components/data-grid/filters/filter-dropdown.spec.js +69 -0
- package/esm/components/data-grid/filters/filter-dropdown.spec.js.map +1 -0
- package/esm/components/data-grid/filters/filter-styles.d.ts +24 -0
- package/esm/components/data-grid/filters/filter-styles.d.ts.map +1 -0
- package/esm/components/data-grid/filters/filter-styles.js +25 -0
- package/esm/components/data-grid/filters/filter-styles.js.map +1 -0
- package/esm/components/data-grid/filters/index.d.ts +7 -0
- package/esm/components/data-grid/filters/index.d.ts.map +1 -0
- package/esm/components/data-grid/filters/index.js +7 -0
- package/esm/components/data-grid/filters/index.js.map +1 -0
- package/esm/components/data-grid/filters/number-filter.d.ts +12 -0
- package/esm/components/data-grid/filters/number-filter.d.ts.map +1 -0
- package/esm/components/data-grid/filters/number-filter.js +65 -0
- package/esm/components/data-grid/filters/number-filter.js.map +1 -0
- package/esm/components/data-grid/filters/number-filter.spec.d.ts +2 -0
- package/esm/components/data-grid/filters/number-filter.spec.d.ts.map +1 -0
- package/esm/components/data-grid/filters/number-filter.spec.js +142 -0
- package/esm/components/data-grid/filters/number-filter.spec.js.map +1 -0
- package/esm/components/data-grid/filters/string-filter.d.ts +12 -0
- package/esm/components/data-grid/filters/string-filter.d.ts.map +1 -0
- package/esm/components/data-grid/filters/string-filter.js +63 -0
- package/esm/components/data-grid/filters/string-filter.js.map +1 -0
- package/esm/components/data-grid/filters/string-filter.spec.d.ts +2 -0
- package/esm/components/data-grid/filters/string-filter.spec.d.ts.map +1 -0
- package/esm/components/data-grid/filters/string-filter.spec.js +128 -0
- package/esm/components/data-grid/filters/string-filter.spec.js.map +1 -0
- package/esm/components/data-grid/footer.d.ts.map +1 -1
- package/esm/components/data-grid/footer.js +24 -9
- package/esm/components/data-grid/footer.js.map +1 -1
- package/esm/components/data-grid/footer.spec.js +38 -36
- package/esm/components/data-grid/footer.spec.js.map +1 -1
- package/esm/components/data-grid/header.d.ts +6 -9
- package/esm/components/data-grid/header.d.ts.map +1 -1
- package/esm/components/data-grid/header.js +51 -117
- package/esm/components/data-grid/header.js.map +1 -1
- package/esm/components/data-grid/header.spec.js +116 -187
- package/esm/components/data-grid/header.spec.js.map +1 -1
- package/esm/components/data-grid/index.d.ts +1 -0
- package/esm/components/data-grid/index.d.ts.map +1 -1
- package/esm/components/data-grid/index.js +1 -0
- package/esm/components/data-grid/index.js.map +1 -1
- package/esm/components/data-grid/selection-cell.spec.js +8 -8
- package/esm/components/data-grid/selection-cell.spec.js.map +1 -1
- package/esm/components/drawer/drawer-toggle-button.spec.js +22 -22
- package/esm/components/drawer/drawer-toggle-button.spec.js.map +1 -1
- package/esm/components/drawer/index.spec.js +36 -36
- package/esm/components/drawer/index.spec.js.map +1 -1
- package/esm/components/dropdown.spec.js +38 -30
- package/esm/components/dropdown.spec.js.map +1 -1
- package/esm/components/fab.spec.js +4 -4
- package/esm/components/fab.spec.js.map +1 -1
- package/esm/components/form.spec.js +37 -37
- package/esm/components/form.spec.js.map +1 -1
- package/esm/components/grid.spec.js +3 -3
- package/esm/components/grid.spec.js.map +1 -1
- package/esm/components/image.spec.js +55 -52
- package/esm/components/image.spec.js.map +1 -1
- package/esm/components/inputs/autocomplete.spec.js +7 -14
- package/esm/components/inputs/autocomplete.spec.js.map +1 -1
- package/esm/components/inputs/checkbox.spec.js +22 -22
- package/esm/components/inputs/checkbox.spec.js.map +1 -1
- package/esm/components/inputs/input-number.spec.js +47 -47
- package/esm/components/inputs/input-number.spec.js.map +1 -1
- package/esm/components/inputs/input.spec.js +53 -53
- package/esm/components/inputs/input.spec.js.map +1 -1
- package/esm/components/inputs/radio-group.spec.js +14 -14
- package/esm/components/inputs/radio-group.spec.js.map +1 -1
- package/esm/components/inputs/radio.spec.js +16 -16
- package/esm/components/inputs/radio.spec.js.map +1 -1
- package/esm/components/inputs/select.spec.js +74 -74
- package/esm/components/inputs/select.spec.js.map +1 -1
- package/esm/components/inputs/slider.spec.js +16 -16
- package/esm/components/inputs/slider.spec.js.map +1 -1
- package/esm/components/inputs/switch.spec.js +24 -24
- package/esm/components/inputs/switch.spec.js.map +1 -1
- package/esm/components/inputs/text-area.spec.js +17 -17
- package/esm/components/inputs/text-area.spec.js.map +1 -1
- package/esm/components/linear-progress.spec.js +2 -2
- package/esm/components/list/list.spec.js +36 -36
- package/esm/components/list/list.spec.js.map +1 -1
- package/esm/components/markdown/markdown-display.spec.js +15 -15
- package/esm/components/markdown/markdown-display.spec.js.map +1 -1
- package/esm/components/markdown/markdown-editor.spec.js +8 -8
- package/esm/components/markdown/markdown-editor.spec.js.map +1 -1
- package/esm/components/markdown/markdown-input.spec.js +17 -17
- package/esm/components/markdown/markdown-input.spec.js.map +1 -1
- package/esm/components/menu/menu.spec.js +28 -28
- package/esm/components/menu/menu.spec.js.map +1 -1
- package/esm/components/modal.spec.js +15 -18
- package/esm/components/modal.spec.js.map +1 -1
- package/esm/components/noty-list.spec.js +25 -23
- package/esm/components/noty-list.spec.js.map +1 -1
- package/esm/components/page-container/index.spec.js +16 -16
- package/esm/components/page-container/index.spec.js.map +1 -1
- package/esm/components/page-container/page-header.spec.js +16 -16
- package/esm/components/page-container/page-header.spec.js.map +1 -1
- package/esm/components/page-layout/index.spec.js +29 -29
- package/esm/components/page-layout/index.spec.js.map +1 -1
- package/esm/components/paper.spec.js +3 -3
- package/esm/components/paper.spec.js.map +1 -1
- package/esm/components/rating.spec.js +61 -61
- package/esm/components/rating.spec.js.map +1 -1
- package/esm/components/skeleton.spec.js +10 -6
- package/esm/components/skeleton.spec.js.map +1 -1
- package/esm/components/suggest/suggest-input.spec.js +4 -10
- package/esm/components/suggest/suggest-input.spec.js.map +1 -1
- package/esm/components/tabs.spec.js +30 -30
- package/esm/components/tabs.spec.js.map +1 -1
- package/esm/components/tree/tree.spec.js +27 -27
- package/esm/components/tree/tree.spec.js.map +1 -1
- package/esm/components/typography.spec.js +3 -3
- package/esm/components/typography.spec.js.map +1 -1
- package/esm/components/wizard/index.spec.js +5 -5
- package/esm/components/wizard/index.spec.js.map +1 -1
- package/esm/utils/promisify-animation.d.ts.map +1 -1
- package/esm/utils/promisify-animation.js +3 -0
- package/esm/utils/promisify-animation.js.map +1 -1
- package/package.json +2 -2
- package/src/components/app-bar-link.spec.tsx +16 -19
- package/src/components/app-bar.spec.tsx +6 -4
- package/src/components/avatar.spec.tsx +9 -9
- package/src/components/breadcrumb.spec.tsx +2 -2
- package/src/components/button-group.spec.tsx +155 -11
- package/src/components/button-group.tsx +49 -2
- package/src/components/button.spec.tsx +4 -4
- package/src/components/cache-view.spec.tsx +3 -3
- package/src/components/carousel.spec.tsx +47 -47
- package/src/components/circular-progress.spec.tsx +2 -2
- package/src/components/command-palette/command-palette-input.spec.tsx +23 -19
- package/src/components/command-palette/command-palette-suggestion-list.spec.tsx +27 -27
- package/src/components/command-palette/index.spec.tsx +64 -51
- package/src/components/context-menu/context-menu.spec.tsx +33 -33
- package/src/components/data-grid/body.spec.tsx +13 -13
- package/src/components/data-grid/data-grid-row.spec.tsx +8 -8
- package/src/components/data-grid/data-grid.spec.tsx +106 -28
- package/src/components/data-grid/data-grid.tsx +44 -11
- package/src/components/data-grid/filters/boolean-filter.spec.tsx +142 -0
- package/src/components/data-grid/filters/boolean-filter.tsx +45 -0
- package/src/components/data-grid/filters/date-filter.spec.tsx +181 -0
- package/src/components/data-grid/filters/date-filter.tsx +162 -0
- package/src/components/data-grid/filters/enum-filter.spec.tsx +168 -0
- package/src/components/data-grid/filters/enum-filter.tsx +119 -0
- package/src/components/data-grid/filters/filter-dropdown.spec.tsx +89 -0
- package/src/components/data-grid/filters/filter-dropdown.tsx +60 -0
- package/src/components/data-grid/filters/filter-styles.ts +26 -0
- package/src/components/data-grid/filters/index.ts +6 -0
- package/src/components/data-grid/filters/number-filter.spec.tsx +174 -0
- package/src/components/data-grid/filters/number-filter.tsx +115 -0
- package/src/components/data-grid/filters/string-filter.spec.tsx +157 -0
- package/src/components/data-grid/filters/string-filter.tsx +112 -0
- package/src/components/data-grid/footer.spec.tsx +38 -36
- package/src/components/data-grid/footer.tsx +21 -8
- package/src/components/data-grid/header.spec.tsx +128 -212
- package/src/components/data-grid/header.tsx +95 -183
- package/src/components/data-grid/index.tsx +1 -0
- package/src/components/data-grid/selection-cell.spec.tsx +8 -8
- package/src/components/drawer/drawer-toggle-button.spec.tsx +22 -22
- package/src/components/drawer/index.spec.tsx +36 -36
- package/src/components/dropdown.spec.tsx +38 -30
- package/src/components/fab.spec.tsx +4 -4
- package/src/components/form.spec.tsx +37 -37
- package/src/components/grid.spec.tsx +3 -3
- package/src/components/image.spec.tsx +55 -52
- package/src/components/inputs/autocomplete.spec.tsx +7 -14
- package/src/components/inputs/checkbox.spec.tsx +22 -22
- package/src/components/inputs/input-number.spec.tsx +47 -47
- package/src/components/inputs/input.spec.tsx +53 -53
- package/src/components/inputs/radio-group.spec.tsx +14 -14
- package/src/components/inputs/radio.spec.tsx +16 -16
- package/src/components/inputs/select.spec.tsx +74 -74
- package/src/components/inputs/slider.spec.tsx +16 -16
- package/src/components/inputs/switch.spec.tsx +24 -24
- package/src/components/inputs/text-area.spec.tsx +17 -17
- package/src/components/linear-progress.spec.tsx +2 -2
- package/src/components/list/list.spec.tsx +36 -36
- package/src/components/markdown/markdown-display.spec.tsx +15 -15
- package/src/components/markdown/markdown-editor.spec.tsx +8 -8
- package/src/components/markdown/markdown-input.spec.tsx +17 -17
- package/src/components/menu/menu.spec.tsx +28 -28
- package/src/components/modal.spec.tsx +15 -18
- package/src/components/noty-list.spec.tsx +25 -23
- package/src/components/page-container/index.spec.tsx +16 -16
- package/src/components/page-container/page-header.spec.tsx +16 -16
- package/src/components/page-layout/index.spec.tsx +29 -29
- package/src/components/paper.spec.tsx +3 -3
- package/src/components/rating.spec.tsx +61 -61
- package/src/components/skeleton.spec.tsx +10 -6
- package/src/components/suggest/suggest-input.spec.tsx +4 -10
- package/src/components/tabs.spec.tsx +30 -30
- package/src/components/tree/tree.spec.tsx +27 -27
- package/src/components/typography.spec.tsx +3 -3
- package/src/components/wizard/index.spec.tsx +5 -5
- package/src/utils/promisify-animation.ts +3 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Injector } from '@furystack/inject'
|
|
2
|
-
import { createComponent, initializeShadeRoot } from '@furystack/shades'
|
|
3
|
-
import {
|
|
2
|
+
import { createComponent, flushUpdates, initializeShadeRoot } from '@furystack/shades'
|
|
3
|
+
import { usingAsync } from '@furystack/utils'
|
|
4
4
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
|
5
5
|
import { ThemeProviderService } from '../../services/theme-provider-service.js'
|
|
6
6
|
import { Slider } from './slider.js'
|
|
@@ -23,7 +23,7 @@ describe('Slider', () => {
|
|
|
23
23
|
rootElement: root,
|
|
24
24
|
jsxElement: <Slider {...props} />,
|
|
25
25
|
})
|
|
26
|
-
await
|
|
26
|
+
await flushUpdates()
|
|
27
27
|
return {
|
|
28
28
|
injector,
|
|
29
29
|
slider: document.querySelector('shade-slider') as HTMLElement,
|
|
@@ -675,7 +675,7 @@ describe('Slider', () => {
|
|
|
675
675
|
|
|
676
676
|
root.dispatchEvent(new MouseEvent('mousedown', { clientX: 150, clientY: 2, bubbles: true }))
|
|
677
677
|
document.dispatchEvent(new MouseEvent('mouseup', { bubbles: true }))
|
|
678
|
-
await
|
|
678
|
+
await flushUpdates()
|
|
679
679
|
|
|
680
680
|
expect(onValueChange).toHaveBeenCalled()
|
|
681
681
|
const calledWith = onValueChange.mock.calls[0][0] as number
|
|
@@ -691,7 +691,7 @@ describe('Slider', () => {
|
|
|
691
691
|
|
|
692
692
|
slider.dispatchEvent(new MouseEvent('mousedown', { clientX: 100, clientY: 2, bubbles: true }))
|
|
693
693
|
document.dispatchEvent(new MouseEvent('mouseup', { bubbles: true }))
|
|
694
|
-
await
|
|
694
|
+
await flushUpdates()
|
|
695
695
|
|
|
696
696
|
expect(onValueChange).not.toHaveBeenCalled()
|
|
697
697
|
})
|
|
@@ -709,7 +709,7 @@ describe('Slider', () => {
|
|
|
709
709
|
expect(root.hasAttribute('data-dragging')).toBe(true)
|
|
710
710
|
|
|
711
711
|
document.dispatchEvent(new MouseEvent('mouseup', { bubbles: true }))
|
|
712
|
-
await
|
|
712
|
+
await flushUpdates()
|
|
713
713
|
|
|
714
714
|
expect(root.hasAttribute('data-dragging')).toBe(false)
|
|
715
715
|
},
|
|
@@ -728,7 +728,7 @@ describe('Slider', () => {
|
|
|
728
728
|
|
|
729
729
|
document.dispatchEvent(new MouseEvent('mousemove', { clientX: 100, clientY: 2, bubbles: true }))
|
|
730
730
|
document.dispatchEvent(new MouseEvent('mouseup', { bubbles: true }))
|
|
731
|
-
await
|
|
731
|
+
await flushUpdates()
|
|
732
732
|
|
|
733
733
|
expect(onValueChange).toHaveBeenCalled()
|
|
734
734
|
const calledWith = onValueChange.mock.calls[0][0] as number
|
|
@@ -754,7 +754,7 @@ describe('Slider', () => {
|
|
|
754
754
|
// Click at 90% (180px) → closer to thumb at 80%
|
|
755
755
|
root.dispatchEvent(new MouseEvent('mousedown', { clientX: 180, clientY: 2, bubbles: true }))
|
|
756
756
|
document.dispatchEvent(new MouseEvent('mouseup', { bubbles: true }))
|
|
757
|
-
await
|
|
757
|
+
await flushUpdates()
|
|
758
758
|
|
|
759
759
|
expect(onValueChange).toHaveBeenCalled()
|
|
760
760
|
const val = onValueChange.mock.calls[0][0] as [number, number]
|
|
@@ -782,7 +782,7 @@ describe('Slider', () => {
|
|
|
782
782
|
// New val for thumb[0]=20. 20 < 60, no swap.
|
|
783
783
|
root.dispatchEvent(new MouseEvent('mousedown', { clientX: 40, clientY: 2, bubbles: true }))
|
|
784
784
|
document.dispatchEvent(new MouseEvent('mouseup', { bubbles: true }))
|
|
785
|
-
await
|
|
785
|
+
await flushUpdates()
|
|
786
786
|
|
|
787
787
|
expect(onValueChange).toHaveBeenCalled()
|
|
788
788
|
const val = onValueChange.mock.calls[0][0] as [number, number]
|
|
@@ -814,7 +814,7 @@ describe('Slider', () => {
|
|
|
814
814
|
// Move to 60px (30%)
|
|
815
815
|
document.dispatchEvent(new MouseEvent('mousemove', { clientX: 60, clientY: 2, bubbles: true }))
|
|
816
816
|
document.dispatchEvent(new MouseEvent('mouseup', { bubbles: true }))
|
|
817
|
-
await
|
|
817
|
+
await flushUpdates()
|
|
818
818
|
|
|
819
819
|
expect(onValueChange).toHaveBeenCalled()
|
|
820
820
|
const val = onValueChange.mock.calls[0][0] as [number, number]
|
|
@@ -835,7 +835,7 @@ describe('Slider', () => {
|
|
|
835
835
|
// Click at bottom-50px (bottom=200, clientY=150 → (200-150)/200=25%)
|
|
836
836
|
root.dispatchEvent(new MouseEvent('mousedown', { clientX: 2, clientY: 150, bubbles: true }))
|
|
837
837
|
document.dispatchEvent(new MouseEvent('mouseup', { bubbles: true }))
|
|
838
|
-
await
|
|
838
|
+
await flushUpdates()
|
|
839
839
|
|
|
840
840
|
expect(onValueChange).toHaveBeenCalled()
|
|
841
841
|
const calledWith = onValueChange.mock.calls[0][0] as number
|
|
@@ -855,7 +855,7 @@ describe('Slider', () => {
|
|
|
855
855
|
// Click far to the right beyond the track
|
|
856
856
|
root.dispatchEvent(new MouseEvent('mousedown', { clientX: 400, clientY: 2, bubbles: true }))
|
|
857
857
|
document.dispatchEvent(new MouseEvent('mouseup', { bubbles: true }))
|
|
858
|
-
await
|
|
858
|
+
await flushUpdates()
|
|
859
859
|
|
|
860
860
|
expect(onValueChange).toHaveBeenCalled()
|
|
861
861
|
const calledWith = onValueChange.mock.calls[0][0] as number
|
|
@@ -895,7 +895,7 @@ describe('Slider', () => {
|
|
|
895
895
|
const touch = { clientX: 100, clientY: 2, identifier: 0, target: root }
|
|
896
896
|
root.dispatchEvent(new TouchEvent('touchstart', { touches: [touch as unknown as Touch] }))
|
|
897
897
|
document.dispatchEvent(new TouchEvent('touchend', { changedTouches: [touch as unknown as Touch] }))
|
|
898
|
-
await
|
|
898
|
+
await flushUpdates()
|
|
899
899
|
|
|
900
900
|
expect(onValueChange).toHaveBeenCalled()
|
|
901
901
|
const calledWith = onValueChange.mock.calls[0][0] as number
|
|
@@ -922,7 +922,7 @@ describe('Slider', () => {
|
|
|
922
922
|
|
|
923
923
|
const endTouch = { clientX: 150, clientY: 2, identifier: 0, target: slider }
|
|
924
924
|
document.dispatchEvent(new TouchEvent('touchend', { changedTouches: [endTouch as unknown as Touch] }))
|
|
925
|
-
await
|
|
925
|
+
await flushUpdates()
|
|
926
926
|
|
|
927
927
|
expect(onValueChange).toHaveBeenCalled()
|
|
928
928
|
const calledWith = onValueChange.mock.calls[0][0] as number
|
|
@@ -974,7 +974,7 @@ describe('Slider', () => {
|
|
|
974
974
|
expect(root!.hasAttribute('data-dragging')).toBe(true)
|
|
975
975
|
|
|
976
976
|
document.dispatchEvent(new MouseEvent('mouseup', { bubbles: true }))
|
|
977
|
-
await
|
|
977
|
+
await flushUpdates()
|
|
978
978
|
|
|
979
979
|
expect(onValueChange).toHaveBeenCalled()
|
|
980
980
|
},
|
|
@@ -1003,7 +1003,7 @@ describe('Slider', () => {
|
|
|
1003
1003
|
|
|
1004
1004
|
slider.dispatchEvent(new MouseEvent('mousedown', { clientX: 100, clientY: 2, bubbles: true }))
|
|
1005
1005
|
document.dispatchEvent(new MouseEvent('mouseup', { bubbles: true }))
|
|
1006
|
-
await
|
|
1006
|
+
await flushUpdates()
|
|
1007
1007
|
|
|
1008
1008
|
// Should not have fired because getValueFromPointer returned null
|
|
1009
1009
|
expect(onValueChange).not.toHaveBeenCalled()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Injector } from '@furystack/inject'
|
|
2
|
-
import { createComponent, initializeShadeRoot } from '@furystack/shades'
|
|
3
|
-
import {
|
|
2
|
+
import { createComponent, flushUpdates, initializeShadeRoot } from '@furystack/shades'
|
|
3
|
+
import { usingAsync } from '@furystack/utils'
|
|
4
4
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
|
5
5
|
import { ThemeProviderService } from '../../services/theme-provider-service.js'
|
|
6
6
|
import { Form, FormService } from '../form.js'
|
|
@@ -26,7 +26,7 @@ describe('Switch', () => {
|
|
|
26
26
|
jsxElement: <Switch />,
|
|
27
27
|
})
|
|
28
28
|
|
|
29
|
-
await
|
|
29
|
+
await flushUpdates()
|
|
30
30
|
|
|
31
31
|
const switchEl = document.querySelector('shade-switch')
|
|
32
32
|
expect(switchEl).not.toBeNull()
|
|
@@ -43,7 +43,7 @@ describe('Switch', () => {
|
|
|
43
43
|
jsxElement: <Switch name="testSwitch" />,
|
|
44
44
|
})
|
|
45
45
|
|
|
46
|
-
await
|
|
46
|
+
await flushUpdates()
|
|
47
47
|
|
|
48
48
|
const input = document.querySelector('shade-switch input[type="checkbox"]') as HTMLInputElement
|
|
49
49
|
expect(input).not.toBeNull()
|
|
@@ -62,7 +62,7 @@ describe('Switch', () => {
|
|
|
62
62
|
jsxElement: <Switch />,
|
|
63
63
|
})
|
|
64
64
|
|
|
65
|
-
await
|
|
65
|
+
await flushUpdates()
|
|
66
66
|
|
|
67
67
|
const track = document.querySelector('shade-switch .switch-track')
|
|
68
68
|
const thumb = document.querySelector('shade-switch .switch-thumb')
|
|
@@ -81,7 +81,7 @@ describe('Switch', () => {
|
|
|
81
81
|
jsxElement: <Switch labelTitle="Enable notifications" />,
|
|
82
82
|
})
|
|
83
83
|
|
|
84
|
-
await
|
|
84
|
+
await flushUpdates()
|
|
85
85
|
|
|
86
86
|
const label = document.querySelector('shade-switch label') as HTMLLabelElement
|
|
87
87
|
expect(label).not.toBeNull()
|
|
@@ -99,7 +99,7 @@ describe('Switch', () => {
|
|
|
99
99
|
jsxElement: <Switch />,
|
|
100
100
|
})
|
|
101
101
|
|
|
102
|
-
await
|
|
102
|
+
await flushUpdates()
|
|
103
103
|
|
|
104
104
|
const labelSpan = document.querySelector('shade-switch .switch-label')
|
|
105
105
|
expect(labelSpan).toBeNull()
|
|
@@ -117,7 +117,7 @@ describe('Switch', () => {
|
|
|
117
117
|
jsxElement: <Switch checked />,
|
|
118
118
|
})
|
|
119
119
|
|
|
120
|
-
await
|
|
120
|
+
await flushUpdates()
|
|
121
121
|
|
|
122
122
|
const input = document.querySelector('shade-switch input[type="checkbox"]') as HTMLInputElement
|
|
123
123
|
expect(input.checked).toBe(true)
|
|
@@ -134,7 +134,7 @@ describe('Switch', () => {
|
|
|
134
134
|
jsxElement: <Switch checked={false} />,
|
|
135
135
|
})
|
|
136
136
|
|
|
137
|
-
await
|
|
137
|
+
await flushUpdates()
|
|
138
138
|
|
|
139
139
|
const input = document.querySelector('shade-switch input[type="checkbox"]') as HTMLInputElement
|
|
140
140
|
expect(input.checked).toBe(false)
|
|
@@ -153,7 +153,7 @@ describe('Switch', () => {
|
|
|
153
153
|
jsxElement: <Switch disabled />,
|
|
154
154
|
})
|
|
155
155
|
|
|
156
|
-
await
|
|
156
|
+
await flushUpdates()
|
|
157
157
|
|
|
158
158
|
const switchEl = document.querySelector('shade-switch') as HTMLElement
|
|
159
159
|
expect(switchEl.hasAttribute('data-disabled')).toBe(true)
|
|
@@ -170,7 +170,7 @@ describe('Switch', () => {
|
|
|
170
170
|
jsxElement: <Switch disabled={false} />,
|
|
171
171
|
})
|
|
172
172
|
|
|
173
|
-
await
|
|
173
|
+
await flushUpdates()
|
|
174
174
|
|
|
175
175
|
const switchEl = document.querySelector('shade-switch') as HTMLElement
|
|
176
176
|
expect(switchEl.hasAttribute('data-disabled')).toBe(false)
|
|
@@ -187,7 +187,7 @@ describe('Switch', () => {
|
|
|
187
187
|
jsxElement: <Switch disabled />,
|
|
188
188
|
})
|
|
189
189
|
|
|
190
|
-
await
|
|
190
|
+
await flushUpdates()
|
|
191
191
|
|
|
192
192
|
const input = document.querySelector('shade-switch input[type="checkbox"]') as HTMLInputElement
|
|
193
193
|
expect(input.disabled).toBe(true)
|
|
@@ -206,7 +206,7 @@ describe('Switch', () => {
|
|
|
206
206
|
jsxElement: <Switch size="small" />,
|
|
207
207
|
})
|
|
208
208
|
|
|
209
|
-
await
|
|
209
|
+
await flushUpdates()
|
|
210
210
|
|
|
211
211
|
const switchEl = document.querySelector('shade-switch') as HTMLElement
|
|
212
212
|
expect(switchEl.getAttribute('data-size')).toBe('small')
|
|
@@ -223,7 +223,7 @@ describe('Switch', () => {
|
|
|
223
223
|
jsxElement: <Switch size="medium" />,
|
|
224
224
|
})
|
|
225
225
|
|
|
226
|
-
await
|
|
226
|
+
await flushUpdates()
|
|
227
227
|
|
|
228
228
|
const switchEl = document.querySelector('shade-switch') as HTMLElement
|
|
229
229
|
expect(switchEl.hasAttribute('data-size')).toBe(false)
|
|
@@ -243,12 +243,12 @@ describe('Switch', () => {
|
|
|
243
243
|
jsxElement: <Switch name="toggle" onchange={onchange} />,
|
|
244
244
|
})
|
|
245
245
|
|
|
246
|
-
await
|
|
246
|
+
await flushUpdates()
|
|
247
247
|
|
|
248
248
|
const input = document.querySelector('shade-switch input[type="checkbox"]') as HTMLInputElement
|
|
249
249
|
input.dispatchEvent(new Event('change', { bubbles: true }))
|
|
250
250
|
|
|
251
|
-
await
|
|
251
|
+
await flushUpdates()
|
|
252
252
|
|
|
253
253
|
expect(onchange).toHaveBeenCalled()
|
|
254
254
|
})
|
|
@@ -266,7 +266,7 @@ describe('Switch', () => {
|
|
|
266
266
|
jsxElement: <Switch />,
|
|
267
267
|
})
|
|
268
268
|
|
|
269
|
-
await
|
|
269
|
+
await flushUpdates()
|
|
270
270
|
|
|
271
271
|
const switchEl = document.querySelector('shade-switch') as HTMLElement
|
|
272
272
|
const themeService = injector.getInstance(ThemeProviderService)
|
|
@@ -284,7 +284,7 @@ describe('Switch', () => {
|
|
|
284
284
|
jsxElement: <Switch color="secondary" />,
|
|
285
285
|
})
|
|
286
286
|
|
|
287
|
-
await
|
|
287
|
+
await flushUpdates()
|
|
288
288
|
|
|
289
289
|
const switchEl = document.querySelector('shade-switch') as HTMLElement
|
|
290
290
|
const themeService = injector.getInstance(ThemeProviderService)
|
|
@@ -310,7 +310,7 @@ describe('Switch', () => {
|
|
|
310
310
|
),
|
|
311
311
|
})
|
|
312
312
|
|
|
313
|
-
await
|
|
313
|
+
await flushUpdates()
|
|
314
314
|
|
|
315
315
|
const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
|
|
316
316
|
const formInjector = (form as unknown as { injector: Injector }).injector
|
|
@@ -336,7 +336,7 @@ describe('Switch', () => {
|
|
|
336
336
|
),
|
|
337
337
|
})
|
|
338
338
|
|
|
339
|
-
await
|
|
339
|
+
await flushUpdates()
|
|
340
340
|
|
|
341
341
|
const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
|
|
342
342
|
const formInjector = (form as unknown as { injector: Injector }).injector
|
|
@@ -346,7 +346,7 @@ describe('Switch', () => {
|
|
|
346
346
|
|
|
347
347
|
rootElement.innerHTML = ''
|
|
348
348
|
|
|
349
|
-
await
|
|
349
|
+
await flushUpdates()
|
|
350
350
|
})
|
|
351
351
|
})
|
|
352
352
|
})
|
|
@@ -362,7 +362,7 @@ describe('Switch', () => {
|
|
|
362
362
|
jsxElement: <Switch labelProps={{ className: 'custom-label' }} />,
|
|
363
363
|
})
|
|
364
364
|
|
|
365
|
-
await
|
|
365
|
+
await flushUpdates()
|
|
366
366
|
|
|
367
367
|
const label = document.querySelector('shade-switch label') as HTMLLabelElement
|
|
368
368
|
expect(label.className).toContain('custom-label')
|
|
@@ -381,7 +381,7 @@ describe('Switch', () => {
|
|
|
381
381
|
jsxElement: <Switch required />,
|
|
382
382
|
})
|
|
383
383
|
|
|
384
|
-
await
|
|
384
|
+
await flushUpdates()
|
|
385
385
|
|
|
386
386
|
const input = document.querySelector('shade-switch input[type="checkbox"]') as HTMLInputElement
|
|
387
387
|
expect(input.required).toBe(true)
|
|
@@ -400,7 +400,7 @@ describe('Switch', () => {
|
|
|
400
400
|
jsxElement: <Switch value="yes" />,
|
|
401
401
|
})
|
|
402
402
|
|
|
403
|
-
await
|
|
403
|
+
await flushUpdates()
|
|
404
404
|
|
|
405
405
|
const input = document.querySelector('shade-switch input[type="checkbox"]') as HTMLInputElement
|
|
406
406
|
expect(input.value).toBe('yes')
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Injector } from '@furystack/inject'
|
|
2
|
-
import { createComponent, initializeShadeRoot } from '@furystack/shades'
|
|
3
|
-
import {
|
|
2
|
+
import { createComponent, flushUpdates, initializeShadeRoot } from '@furystack/shades'
|
|
3
|
+
import { usingAsync } from '@furystack/utils'
|
|
4
4
|
import { afterEach, beforeEach, describe, expect, it } from 'vitest'
|
|
5
5
|
import { TextArea } from './text-area.js'
|
|
6
6
|
|
|
@@ -23,7 +23,7 @@ describe('TextArea', () => {
|
|
|
23
23
|
jsxElement: <TextArea />,
|
|
24
24
|
})
|
|
25
25
|
|
|
26
|
-
await
|
|
26
|
+
await flushUpdates()
|
|
27
27
|
|
|
28
28
|
const textArea = document.querySelector('shade-text-area')
|
|
29
29
|
expect(textArea).not.toBeNull()
|
|
@@ -40,7 +40,7 @@ describe('TextArea', () => {
|
|
|
40
40
|
jsxElement: <TextArea labelTitle="Test Label" />,
|
|
41
41
|
})
|
|
42
42
|
|
|
43
|
-
await
|
|
43
|
+
await flushUpdates()
|
|
44
44
|
|
|
45
45
|
const textArea = document.querySelector('shade-text-area')
|
|
46
46
|
expect(textArea).not.toBeNull()
|
|
@@ -63,7 +63,7 @@ describe('TextArea', () => {
|
|
|
63
63
|
jsxElement: <TextArea labelTitle="Test" labelProps={{ className: 'custom-label-class' }} />,
|
|
64
64
|
})
|
|
65
65
|
|
|
66
|
-
await
|
|
66
|
+
await flushUpdates()
|
|
67
67
|
|
|
68
68
|
const textArea = document.querySelector('shade-text-area')
|
|
69
69
|
const label = textArea?.querySelector('label')
|
|
@@ -82,7 +82,7 @@ describe('TextArea', () => {
|
|
|
82
82
|
jsxElement: <TextArea variant="outlined" />,
|
|
83
83
|
})
|
|
84
84
|
|
|
85
|
-
await
|
|
85
|
+
await flushUpdates()
|
|
86
86
|
|
|
87
87
|
const textArea = document.querySelector('shade-text-area') as HTMLElement
|
|
88
88
|
expect(textArea).not.toBeNull()
|
|
@@ -100,7 +100,7 @@ describe('TextArea', () => {
|
|
|
100
100
|
jsxElement: <TextArea variant="contained" />,
|
|
101
101
|
})
|
|
102
102
|
|
|
103
|
-
await
|
|
103
|
+
await flushUpdates()
|
|
104
104
|
|
|
105
105
|
const textArea = document.querySelector('shade-text-area') as HTMLElement
|
|
106
106
|
expect(textArea).not.toBeNull()
|
|
@@ -118,7 +118,7 @@ describe('TextArea', () => {
|
|
|
118
118
|
jsxElement: <TextArea />,
|
|
119
119
|
})
|
|
120
120
|
|
|
121
|
-
await
|
|
121
|
+
await flushUpdates()
|
|
122
122
|
|
|
123
123
|
const textArea = document.querySelector('shade-text-area') as HTMLElement
|
|
124
124
|
expect(textArea).not.toBeNull()
|
|
@@ -136,7 +136,7 @@ describe('TextArea', () => {
|
|
|
136
136
|
jsxElement: <TextArea disabled />,
|
|
137
137
|
})
|
|
138
138
|
|
|
139
|
-
await
|
|
139
|
+
await flushUpdates()
|
|
140
140
|
|
|
141
141
|
const textArea = document.querySelector('shade-text-area') as HTMLElement
|
|
142
142
|
expect(textArea).not.toBeNull()
|
|
@@ -154,7 +154,7 @@ describe('TextArea', () => {
|
|
|
154
154
|
jsxElement: <TextArea disabled={false} />,
|
|
155
155
|
})
|
|
156
156
|
|
|
157
|
-
await
|
|
157
|
+
await flushUpdates()
|
|
158
158
|
|
|
159
159
|
const textArea = document.querySelector('shade-text-area') as HTMLElement
|
|
160
160
|
expect(textArea).not.toBeNull()
|
|
@@ -172,7 +172,7 @@ describe('TextArea', () => {
|
|
|
172
172
|
jsxElement: <TextArea value="Test content" />,
|
|
173
173
|
})
|
|
174
174
|
|
|
175
|
-
await
|
|
175
|
+
await flushUpdates()
|
|
176
176
|
|
|
177
177
|
const textArea = document.querySelector('shade-text-area')
|
|
178
178
|
const contentDiv = textArea?.querySelector('.textarea-content')
|
|
@@ -192,7 +192,7 @@ describe('TextArea', () => {
|
|
|
192
192
|
jsxElement: <TextArea />,
|
|
193
193
|
})
|
|
194
194
|
|
|
195
|
-
await
|
|
195
|
+
await flushUpdates()
|
|
196
196
|
|
|
197
197
|
const textArea = document.querySelector('shade-text-area')
|
|
198
198
|
const contentDiv = textArea?.querySelector('.textarea-content') as HTMLElement
|
|
@@ -211,7 +211,7 @@ describe('TextArea', () => {
|
|
|
211
211
|
jsxElement: <TextArea readOnly />,
|
|
212
212
|
})
|
|
213
213
|
|
|
214
|
-
await
|
|
214
|
+
await flushUpdates()
|
|
215
215
|
|
|
216
216
|
const textArea = document.querySelector('shade-text-area')
|
|
217
217
|
const contentDiv = textArea?.querySelector('.textarea-content') as HTMLElement
|
|
@@ -230,7 +230,7 @@ describe('TextArea', () => {
|
|
|
230
230
|
jsxElement: <TextArea disabled />,
|
|
231
231
|
})
|
|
232
232
|
|
|
233
|
-
await
|
|
233
|
+
await flushUpdates()
|
|
234
234
|
|
|
235
235
|
const textArea = document.querySelector('shade-text-area')
|
|
236
236
|
const contentDiv = textArea?.querySelector('.textarea-content') as HTMLElement
|
|
@@ -249,7 +249,7 @@ describe('TextArea', () => {
|
|
|
249
249
|
jsxElement: <TextArea style={{ color: 'red' }} />,
|
|
250
250
|
})
|
|
251
251
|
|
|
252
|
-
await
|
|
252
|
+
await flushUpdates()
|
|
253
253
|
|
|
254
254
|
const textArea = document.querySelector('shade-text-area')
|
|
255
255
|
const contentDiv = textArea?.querySelector('.textarea-content') as HTMLElement
|
|
@@ -268,7 +268,7 @@ describe('TextArea', () => {
|
|
|
268
268
|
jsxElement: <TextArea labelProps={{ style: { backgroundColor: 'blue' } }} />,
|
|
269
269
|
})
|
|
270
270
|
|
|
271
|
-
await
|
|
271
|
+
await flushUpdates()
|
|
272
272
|
|
|
273
273
|
const textArea = document.querySelector('shade-text-area')
|
|
274
274
|
const label = textArea?.querySelector('label') as HTMLElement
|
|
@@ -287,7 +287,7 @@ describe('TextArea', () => {
|
|
|
287
287
|
jsxElement: <TextArea />,
|
|
288
288
|
})
|
|
289
289
|
|
|
290
|
-
await
|
|
290
|
+
await flushUpdates()
|
|
291
291
|
|
|
292
292
|
const textArea = document.querySelector('shade-text-area') as HTMLElement
|
|
293
293
|
expect(textArea).not.toBeNull()
|
|
@@ -178,7 +178,7 @@ describe('LinearProgress', () => {
|
|
|
178
178
|
expect(bar.style.width).toBe('20%')
|
|
179
179
|
|
|
180
180
|
value.setValue(80)
|
|
181
|
-
await sleepAsync(
|
|
181
|
+
await sleepAsync(50)
|
|
182
182
|
|
|
183
183
|
expect(bar.style.width).toBe('80%')
|
|
184
184
|
})
|
|
@@ -201,7 +201,7 @@ describe('LinearProgress', () => {
|
|
|
201
201
|
expect(el.getAttribute('aria-valuenow')).toBe('30')
|
|
202
202
|
|
|
203
203
|
value.setValue(90)
|
|
204
|
-
await sleepAsync(
|
|
204
|
+
await sleepAsync(50)
|
|
205
205
|
|
|
206
206
|
expect(el.getAttribute('aria-valuenow')).toBe('90')
|
|
207
207
|
})
|