@furystack/shades-common-components 12.4.0 → 12.6.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 +119 -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 +47 -3
- package/esm/components/data-grid/data-grid.d.ts.map +1 -1
- package/esm/components/data-grid/data-grid.js +8 -11
- 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 +1 -0
- package/esm/components/data-grid/footer.d.ts.map +1 -1
- package/esm/components/data-grid/footer.js +24 -16
- package/esm/components/data-grid/footer.js.map +1 -1
- package/esm/components/data-grid/footer.spec.js +111 -71
- 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.d.ts +3 -0
- package/esm/components/grid.d.ts.map +1 -1
- package/esm/components/grid.js +3 -0
- package/esm/components/grid.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.d.ts +3 -0
- package/esm/components/inputs/autocomplete.d.ts.map +1 -1
- package/esm/components/inputs/autocomplete.js +3 -0
- package/esm/components/inputs/autocomplete.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.d.ts +10 -0
- package/esm/components/list/list.d.ts.map +1 -1
- package/esm/components/list/list.js +23 -2
- package/esm/components/list/list.js.map +1 -1
- package/esm/components/list/list.spec.js +137 -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.d.ts +14 -0
- package/esm/components/markdown/markdown-input.d.ts.map +1 -1
- package/esm/components/markdown/markdown-input.js +48 -2
- package/esm/components/markdown/markdown-input.js.map +1 -1
- package/esm/components/markdown/markdown-input.spec.js +114 -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/index.d.ts +10 -2
- package/esm/components/suggest/index.d.ts.map +1 -1
- package/esm/components/suggest/index.js +21 -1
- package/esm/components/suggest/index.js.map +1 -1
- package/esm/components/suggest/index.spec.js +50 -0
- package/esm/components/suggest/index.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.d.ts +8 -0
- package/esm/components/wizard/index.d.ts.map +1 -1
- package/esm/components/wizard/index.js +90 -0
- package/esm/components/wizard/index.js.map +1 -1
- package/esm/components/wizard/index.spec.js +84 -7
- 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 +3 -3
- 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 +57 -13
- 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 +130 -74
- package/src/components/data-grid/footer.tsx +41 -34
- 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/grid.tsx +3 -0
- package/src/components/image.spec.tsx +55 -52
- package/src/components/inputs/autocomplete.spec.tsx +7 -14
- package/src/components/inputs/autocomplete.tsx +3 -0
- 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 +209 -36
- package/src/components/list/list.tsx +56 -19
- 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 +159 -17
- package/src/components/markdown/markdown-input.tsx +65 -1
- 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/index.spec.tsx +83 -0
- package/src/components/suggest/index.tsx +36 -3
- 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 +123 -6
- package/src/components/wizard/index.tsx +125 -0
- 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 } from 'vitest'
|
|
5
5
|
import { Image, ImageGroup } from './image.js'
|
|
6
6
|
|
|
@@ -25,7 +25,7 @@ describe('Image component', () => {
|
|
|
25
25
|
jsxElement: <Image src={testSrc} alt={testAlt} />,
|
|
26
26
|
})
|
|
27
27
|
|
|
28
|
-
await
|
|
28
|
+
await flushUpdates()
|
|
29
29
|
|
|
30
30
|
const imageComponent = document.querySelector('shade-image')
|
|
31
31
|
expect(imageComponent).not.toBeNull()
|
|
@@ -47,7 +47,7 @@ describe('Image component', () => {
|
|
|
47
47
|
jsxElement: <Image src="https://example.com/photo.jpg" />,
|
|
48
48
|
})
|
|
49
49
|
|
|
50
|
-
await
|
|
50
|
+
await flushUpdates()
|
|
51
51
|
|
|
52
52
|
const img = document.querySelector('shade-image img')
|
|
53
53
|
expect(img).not.toBeNull()
|
|
@@ -65,7 +65,7 @@ describe('Image component', () => {
|
|
|
65
65
|
jsxElement: <Image src="https://example.com/photo.jpg" width="300px" height="200px" />,
|
|
66
66
|
})
|
|
67
67
|
|
|
68
|
-
await
|
|
68
|
+
await flushUpdates()
|
|
69
69
|
|
|
70
70
|
const img = document.querySelector('shade-image img') as HTMLImageElement
|
|
71
71
|
expect(img).not.toBeNull()
|
|
@@ -84,7 +84,7 @@ describe('Image component', () => {
|
|
|
84
84
|
jsxElement: <Image src="https://example.com/photo.jpg" objectFit="contain" />,
|
|
85
85
|
})
|
|
86
86
|
|
|
87
|
-
await
|
|
87
|
+
await flushUpdates()
|
|
88
88
|
|
|
89
89
|
const img = document.querySelector('shade-image img') as HTMLImageElement
|
|
90
90
|
expect(img).not.toBeNull()
|
|
@@ -102,7 +102,7 @@ describe('Image component', () => {
|
|
|
102
102
|
jsxElement: <Image src="https://example.com/photo.jpg" lazy />,
|
|
103
103
|
})
|
|
104
104
|
|
|
105
|
-
await
|
|
105
|
+
await flushUpdates()
|
|
106
106
|
|
|
107
107
|
const img = document.querySelector('shade-image img') as HTMLImageElement
|
|
108
108
|
expect(img).not.toBeNull()
|
|
@@ -120,7 +120,7 @@ describe('Image component', () => {
|
|
|
120
120
|
jsxElement: <Image src="https://example.com/photo.jpg" />,
|
|
121
121
|
})
|
|
122
122
|
|
|
123
|
-
await
|
|
123
|
+
await flushUpdates()
|
|
124
124
|
|
|
125
125
|
const img = document.querySelector('shade-image img') as HTMLImageElement
|
|
126
126
|
expect(img).not.toBeNull()
|
|
@@ -138,7 +138,7 @@ describe('Image component', () => {
|
|
|
138
138
|
jsxElement: <Image src="invalid-url" />,
|
|
139
139
|
})
|
|
140
140
|
|
|
141
|
-
await
|
|
141
|
+
await flushUpdates()
|
|
142
142
|
|
|
143
143
|
const imageComponent = document.querySelector('shade-image')
|
|
144
144
|
expect(imageComponent).not.toBeNull()
|
|
@@ -149,7 +149,7 @@ describe('Image component', () => {
|
|
|
149
149
|
const errorEvent = new Event('error')
|
|
150
150
|
img.dispatchEvent(errorEvent)
|
|
151
151
|
|
|
152
|
-
await
|
|
152
|
+
await flushUpdates()
|
|
153
153
|
|
|
154
154
|
expect(img.style.display).toBe('none')
|
|
155
155
|
|
|
@@ -170,7 +170,7 @@ describe('Image component', () => {
|
|
|
170
170
|
jsxElement: <Image src="invalid-url" fallback={<span data-testid="custom-fallback">Image not found</span>} />,
|
|
171
171
|
})
|
|
172
172
|
|
|
173
|
-
await
|
|
173
|
+
await flushUpdates()
|
|
174
174
|
|
|
175
175
|
const imageComponent = document.querySelector('shade-image')
|
|
176
176
|
const img = imageComponent?.querySelector('img') as HTMLImageElement
|
|
@@ -178,7 +178,7 @@ describe('Image component', () => {
|
|
|
178
178
|
const errorEvent = new Event('error')
|
|
179
179
|
img.dispatchEvent(errorEvent)
|
|
180
180
|
|
|
181
|
-
await
|
|
181
|
+
await flushUpdates()
|
|
182
182
|
|
|
183
183
|
const customFallback = imageComponent?.querySelector('[data-testid="custom-fallback"]')
|
|
184
184
|
expect(customFallback).not.toBeNull()
|
|
@@ -196,7 +196,7 @@ describe('Image component', () => {
|
|
|
196
196
|
jsxElement: <Image src="https://example.com/photo.jpg" preview />,
|
|
197
197
|
})
|
|
198
198
|
|
|
199
|
-
await
|
|
199
|
+
await flushUpdates()
|
|
200
200
|
|
|
201
201
|
const imageComponent = document.querySelector('shade-image') as HTMLElement
|
|
202
202
|
expect(imageComponent).not.toBeNull()
|
|
@@ -217,7 +217,7 @@ describe('Image component', () => {
|
|
|
217
217
|
jsxElement: <Image src="https://example.com/photo.jpg" />,
|
|
218
218
|
})
|
|
219
219
|
|
|
220
|
-
await
|
|
220
|
+
await flushUpdates()
|
|
221
221
|
|
|
222
222
|
const imageComponent = document.querySelector('shade-image') as HTMLElement
|
|
223
223
|
expect(imageComponent.hasAttribute('data-preview')).toBe(false)
|
|
@@ -237,12 +237,12 @@ describe('Image component', () => {
|
|
|
237
237
|
jsxElement: <Image src="https://example.com/photo.jpg" alt="My photo" preview />,
|
|
238
238
|
})
|
|
239
239
|
|
|
240
|
-
await
|
|
240
|
+
await flushUpdates()
|
|
241
241
|
|
|
242
242
|
const img = document.querySelector('shade-image img') as HTMLImageElement
|
|
243
243
|
img.click()
|
|
244
244
|
|
|
245
|
-
await
|
|
245
|
+
await flushUpdates()
|
|
246
246
|
|
|
247
247
|
const lightbox = document.querySelector('.lightbox-backdrop')
|
|
248
248
|
expect(lightbox).not.toBeNull()
|
|
@@ -271,12 +271,12 @@ describe('Image component', () => {
|
|
|
271
271
|
jsxElement: <Image src="https://example.com/photo.jpg" />,
|
|
272
272
|
})
|
|
273
273
|
|
|
274
|
-
await
|
|
274
|
+
await flushUpdates()
|
|
275
275
|
|
|
276
276
|
const img = document.querySelector('shade-image img') as HTMLImageElement
|
|
277
277
|
img.click()
|
|
278
278
|
|
|
279
|
-
await
|
|
279
|
+
await flushUpdates()
|
|
280
280
|
|
|
281
281
|
const lightbox = document.querySelector('.lightbox-backdrop')
|
|
282
282
|
expect(lightbox).toBeNull()
|
|
@@ -293,19 +293,20 @@ describe('Image component', () => {
|
|
|
293
293
|
jsxElement: <Image src="https://example.com/photo.jpg" preview />,
|
|
294
294
|
})
|
|
295
295
|
|
|
296
|
-
await
|
|
296
|
+
await flushUpdates()
|
|
297
297
|
|
|
298
298
|
const img = document.querySelector('shade-image img') as HTMLImageElement
|
|
299
299
|
img.click()
|
|
300
300
|
|
|
301
|
-
await
|
|
301
|
+
await flushUpdates()
|
|
302
302
|
|
|
303
303
|
let lightbox = document.querySelector('.lightbox-backdrop')
|
|
304
304
|
expect(lightbox).not.toBeNull()
|
|
305
305
|
|
|
306
306
|
document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape' }))
|
|
307
307
|
|
|
308
|
-
await
|
|
308
|
+
await flushUpdates()
|
|
309
|
+
await flushUpdates()
|
|
309
310
|
|
|
310
311
|
lightbox = document.querySelector('.lightbox-backdrop')
|
|
311
312
|
expect(lightbox).toBeNull()
|
|
@@ -322,12 +323,12 @@ describe('Image component', () => {
|
|
|
322
323
|
jsxElement: <Image src="https://example.com/photo.jpg" preview />,
|
|
323
324
|
})
|
|
324
325
|
|
|
325
|
-
await
|
|
326
|
+
await flushUpdates()
|
|
326
327
|
|
|
327
328
|
const img = document.querySelector('shade-image img') as HTMLImageElement
|
|
328
329
|
img.click()
|
|
329
330
|
|
|
330
|
-
await
|
|
331
|
+
await flushUpdates()
|
|
331
332
|
|
|
332
333
|
const lightbox = document.querySelector('.lightbox-backdrop')
|
|
333
334
|
expect(lightbox).not.toBeNull()
|
|
@@ -354,7 +355,7 @@ describe('Image component', () => {
|
|
|
354
355
|
jsxElement: <Image src="https://example.com/photo.jpg" alt="Test" />,
|
|
355
356
|
})
|
|
356
357
|
|
|
357
|
-
await
|
|
358
|
+
await flushUpdates()
|
|
358
359
|
|
|
359
360
|
const imageComponent = document.querySelector('shade-image') as HTMLElement
|
|
360
361
|
expect(imageComponent.getAttribute('data-src')).toBe('https://example.com/photo.jpg')
|
|
@@ -388,7 +389,7 @@ describe('ImageGroup component', () => {
|
|
|
388
389
|
),
|
|
389
390
|
})
|
|
390
391
|
|
|
391
|
-
await
|
|
392
|
+
await flushUpdates()
|
|
392
393
|
|
|
393
394
|
const group = document.querySelector('shade-image-group')
|
|
394
395
|
expect(group).not.toBeNull()
|
|
@@ -413,7 +414,7 @@ describe('ImageGroup component', () => {
|
|
|
413
414
|
),
|
|
414
415
|
})
|
|
415
416
|
|
|
416
|
-
await
|
|
417
|
+
await flushUpdates()
|
|
417
418
|
|
|
418
419
|
const group = document.querySelector('shade-image-group') as HTMLElement
|
|
419
420
|
expect(group).not.toBeNull()
|
|
@@ -437,7 +438,7 @@ describe('ImageGroup component', () => {
|
|
|
437
438
|
),
|
|
438
439
|
})
|
|
439
440
|
|
|
440
|
-
await
|
|
441
|
+
await flushUpdates()
|
|
441
442
|
|
|
442
443
|
const images = document.querySelectorAll('shade-image img')
|
|
443
444
|
expect(images.length).toBe(3)
|
|
@@ -445,7 +446,7 @@ describe('ImageGroup component', () => {
|
|
|
445
446
|
// Click the second image
|
|
446
447
|
;(images[1] as HTMLImageElement).click()
|
|
447
448
|
|
|
448
|
-
await
|
|
449
|
+
await flushUpdates()
|
|
449
450
|
|
|
450
451
|
const lightbox = document.querySelector('.lightbox-backdrop')
|
|
451
452
|
expect(lightbox).not.toBeNull()
|
|
@@ -482,12 +483,12 @@ describe('ImageGroup component', () => {
|
|
|
482
483
|
),
|
|
483
484
|
})
|
|
484
485
|
|
|
485
|
-
await
|
|
486
|
+
await flushUpdates()
|
|
486
487
|
|
|
487
488
|
const images = document.querySelectorAll('shade-image img')
|
|
488
489
|
;(images[0] as HTMLImageElement).click()
|
|
489
490
|
|
|
490
|
-
await
|
|
491
|
+
await flushUpdates()
|
|
491
492
|
|
|
492
493
|
const lightbox = document.querySelector('.lightbox-backdrop')
|
|
493
494
|
expect(lightbox).not.toBeNull()
|
|
@@ -499,7 +500,7 @@ describe('ImageGroup component', () => {
|
|
|
499
500
|
const nextBtn = lightbox?.querySelector('.lightbox-next') as HTMLButtonElement
|
|
500
501
|
nextBtn.click()
|
|
501
502
|
|
|
502
|
-
await
|
|
503
|
+
await flushUpdates()
|
|
503
504
|
|
|
504
505
|
expect(lightboxImg.src).toBe('https://example.com/2.jpg')
|
|
505
506
|
|
|
@@ -527,12 +528,12 @@ describe('ImageGroup component', () => {
|
|
|
527
528
|
),
|
|
528
529
|
})
|
|
529
530
|
|
|
530
|
-
await
|
|
531
|
+
await flushUpdates()
|
|
531
532
|
|
|
532
533
|
const images = document.querySelectorAll('shade-image img')
|
|
533
534
|
;(images[0] as HTMLImageElement).click()
|
|
534
535
|
|
|
535
|
-
await
|
|
536
|
+
await flushUpdates()
|
|
536
537
|
|
|
537
538
|
const lightbox = document.querySelector('.lightbox-backdrop')
|
|
538
539
|
const lightboxImg = lightbox?.querySelector('.lightbox-image') as HTMLImageElement
|
|
@@ -541,7 +542,7 @@ describe('ImageGroup component', () => {
|
|
|
541
542
|
const prevBtn = lightbox?.querySelector('.lightbox-prev') as HTMLButtonElement
|
|
542
543
|
prevBtn.click()
|
|
543
544
|
|
|
544
|
-
await
|
|
545
|
+
await flushUpdates()
|
|
545
546
|
|
|
546
547
|
expect(lightboxImg.src).toBe('https://example.com/3.jpg')
|
|
547
548
|
|
|
@@ -568,12 +569,12 @@ describe('ImageGroup component', () => {
|
|
|
568
569
|
),
|
|
569
570
|
})
|
|
570
571
|
|
|
571
|
-
await
|
|
572
|
+
await flushUpdates()
|
|
572
573
|
|
|
573
574
|
const images = document.querySelectorAll('shade-image img')
|
|
574
575
|
;(images[0] as HTMLImageElement).click()
|
|
575
576
|
|
|
576
|
-
await
|
|
577
|
+
await flushUpdates()
|
|
577
578
|
|
|
578
579
|
const lightbox = document.querySelector('.lightbox-backdrop')
|
|
579
580
|
expect(lightbox).not.toBeNull()
|
|
@@ -583,13 +584,13 @@ describe('ImageGroup component', () => {
|
|
|
583
584
|
|
|
584
585
|
// Navigate with ArrowRight
|
|
585
586
|
document.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowRight' }))
|
|
586
|
-
await
|
|
587
|
+
await flushUpdates()
|
|
587
588
|
|
|
588
589
|
expect(lightboxImg.src).toBe('https://example.com/2.jpg')
|
|
589
590
|
|
|
590
591
|
// Navigate with ArrowLeft
|
|
591
592
|
document.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowLeft' }))
|
|
592
|
-
await
|
|
593
|
+
await flushUpdates()
|
|
593
594
|
|
|
594
595
|
expect(lightboxImg.src).toBe('https://example.com/1.jpg')
|
|
595
596
|
|
|
@@ -608,12 +609,12 @@ describe('ImageGroup component', () => {
|
|
|
608
609
|
jsxElement: <Image src="https://example.com/photo.jpg" preview />,
|
|
609
610
|
})
|
|
610
611
|
|
|
611
|
-
await
|
|
612
|
+
await flushUpdates()
|
|
612
613
|
|
|
613
614
|
const img = document.querySelector('shade-image img') as HTMLImageElement
|
|
614
615
|
img.click()
|
|
615
616
|
|
|
616
|
-
await
|
|
617
|
+
await flushUpdates()
|
|
617
618
|
|
|
618
619
|
const lightbox = document.querySelector('.lightbox-backdrop')
|
|
619
620
|
expect(lightbox).not.toBeNull()
|
|
@@ -623,14 +624,14 @@ describe('ImageGroup component', () => {
|
|
|
623
624
|
// Zoom in
|
|
624
625
|
const zoomInBtn = lightbox?.querySelector('.lightbox-zoom-in') as HTMLButtonElement
|
|
625
626
|
zoomInBtn.click()
|
|
626
|
-
await
|
|
627
|
+
await flushUpdates()
|
|
627
628
|
|
|
628
629
|
expect(lightboxImg.style.transform).toContain('scale(1.25)')
|
|
629
630
|
|
|
630
631
|
// Zoom out
|
|
631
632
|
const zoomOutBtn = lightbox?.querySelector('.lightbox-zoom-out') as HTMLButtonElement
|
|
632
633
|
zoomOutBtn.click()
|
|
633
|
-
await
|
|
634
|
+
await flushUpdates()
|
|
634
635
|
|
|
635
636
|
expect(lightboxImg.style.transform).toContain('scale(1)')
|
|
636
637
|
|
|
@@ -649,19 +650,19 @@ describe('ImageGroup component', () => {
|
|
|
649
650
|
jsxElement: <Image src="https://example.com/photo.jpg" preview />,
|
|
650
651
|
})
|
|
651
652
|
|
|
652
|
-
await
|
|
653
|
+
await flushUpdates()
|
|
653
654
|
|
|
654
655
|
const img = document.querySelector('shade-image img') as HTMLImageElement
|
|
655
656
|
img.click()
|
|
656
657
|
|
|
657
|
-
await
|
|
658
|
+
await flushUpdates()
|
|
658
659
|
|
|
659
660
|
const lightbox = document.querySelector('.lightbox-backdrop')
|
|
660
661
|
const lightboxImg = lightbox?.querySelector('.lightbox-image') as HTMLImageElement
|
|
661
662
|
|
|
662
663
|
const rotateBtn = lightbox?.querySelector('.lightbox-rotate') as HTMLButtonElement
|
|
663
664
|
rotateBtn.click()
|
|
664
|
-
await
|
|
665
|
+
await flushUpdates()
|
|
665
666
|
|
|
666
667
|
expect(lightboxImg.style.transform).toContain('rotate(90deg)')
|
|
667
668
|
|
|
@@ -680,12 +681,12 @@ describe('ImageGroup component', () => {
|
|
|
680
681
|
jsxElement: <Image src="https://example.com/photo.jpg" preview />,
|
|
681
682
|
})
|
|
682
683
|
|
|
683
|
-
await
|
|
684
|
+
await flushUpdates()
|
|
684
685
|
|
|
685
686
|
const img = document.querySelector('shade-image img') as HTMLImageElement
|
|
686
687
|
img.click()
|
|
687
688
|
|
|
688
|
-
await
|
|
689
|
+
await flushUpdates()
|
|
689
690
|
|
|
690
691
|
let lightbox = document.querySelector('.lightbox-backdrop')
|
|
691
692
|
expect(lightbox).not.toBeNull()
|
|
@@ -693,7 +694,8 @@ describe('ImageGroup component', () => {
|
|
|
693
694
|
const closeBtn = lightbox?.querySelector('.lightbox-close') as HTMLButtonElement
|
|
694
695
|
closeBtn.click()
|
|
695
696
|
|
|
696
|
-
await
|
|
697
|
+
await flushUpdates()
|
|
698
|
+
await flushUpdates()
|
|
697
699
|
|
|
698
700
|
lightbox = document.querySelector('.lightbox-backdrop')
|
|
699
701
|
expect(lightbox).toBeNull()
|
|
@@ -710,12 +712,12 @@ describe('ImageGroup component', () => {
|
|
|
710
712
|
jsxElement: <Image src="https://example.com/photo.jpg" preview />,
|
|
711
713
|
})
|
|
712
714
|
|
|
713
|
-
await
|
|
715
|
+
await flushUpdates()
|
|
714
716
|
|
|
715
717
|
const img = document.querySelector('shade-image img') as HTMLImageElement
|
|
716
718
|
img.click()
|
|
717
719
|
|
|
718
|
-
await
|
|
720
|
+
await flushUpdates()
|
|
719
721
|
|
|
720
722
|
const lightbox = document.querySelector('.lightbox-backdrop') as HTMLElement
|
|
721
723
|
expect(lightbox).not.toBeNull()
|
|
@@ -723,7 +725,8 @@ describe('ImageGroup component', () => {
|
|
|
723
725
|
// Click on the backdrop itself (not child elements)
|
|
724
726
|
lightbox.dispatchEvent(new MouseEvent('click', { bubbles: true }))
|
|
725
727
|
|
|
726
|
-
await
|
|
728
|
+
await flushUpdates()
|
|
729
|
+
await flushUpdates()
|
|
727
730
|
|
|
728
731
|
expect(document.querySelector('.lightbox-backdrop')).toBeNull()
|
|
729
732
|
})
|
|
@@ -739,7 +742,7 @@ describe('ImageGroup component', () => {
|
|
|
739
742
|
jsxElement: <Image src="https://example.com/photo.jpg" style={{ margin: '10px' }} />,
|
|
740
743
|
})
|
|
741
744
|
|
|
742
|
-
await
|
|
745
|
+
await flushUpdates()
|
|
743
746
|
|
|
744
747
|
const imageComponent = document.querySelector('shade-image') as HTMLElement
|
|
745
748
|
expect(imageComponent.style.margin).toBe('10px')
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Injector } from '@furystack/inject'
|
|
2
2
|
import { createComponent, flushUpdates, initializeShadeRoot } from '@furystack/shades'
|
|
3
|
-
import {
|
|
3
|
+
import { usingAsync } from '@furystack/utils'
|
|
4
4
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
|
5
5
|
import { Autocomplete } from './autocomplete.js'
|
|
6
6
|
|
|
@@ -25,7 +25,6 @@ describe('Autocomplete component', () => {
|
|
|
25
25
|
})
|
|
26
26
|
|
|
27
27
|
await flushUpdates()
|
|
28
|
-
await sleepAsync(50)
|
|
29
28
|
|
|
30
29
|
const autocomplete = document.querySelector('shade-autocomplete')
|
|
31
30
|
expect(autocomplete).not.toBeNull()
|
|
@@ -55,7 +54,8 @@ describe('Autocomplete component', () => {
|
|
|
55
54
|
})
|
|
56
55
|
|
|
57
56
|
await flushUpdates()
|
|
58
|
-
await
|
|
57
|
+
await new Promise((resolve) => setTimeout(resolve, 0))
|
|
58
|
+
await flushUpdates()
|
|
59
59
|
|
|
60
60
|
const autocomplete = document.querySelector('shade-autocomplete')
|
|
61
61
|
const input = autocomplete?.querySelector('input')
|
|
@@ -80,7 +80,6 @@ describe('Autocomplete component', () => {
|
|
|
80
80
|
})
|
|
81
81
|
|
|
82
82
|
await flushUpdates()
|
|
83
|
-
await sleepAsync(50)
|
|
84
83
|
|
|
85
84
|
const autocomplete = document.querySelector('shade-autocomplete')
|
|
86
85
|
const input = autocomplete?.querySelector('input') as HTMLInputElement
|
|
@@ -90,7 +89,7 @@ describe('Autocomplete component', () => {
|
|
|
90
89
|
const changeEvent = new Event('change', { bubbles: true })
|
|
91
90
|
input.dispatchEvent(changeEvent)
|
|
92
91
|
|
|
93
|
-
await
|
|
92
|
+
await flushUpdates()
|
|
94
93
|
|
|
95
94
|
expect(onchange).toHaveBeenCalledWith('foo')
|
|
96
95
|
})
|
|
@@ -109,7 +108,6 @@ describe('Autocomplete component', () => {
|
|
|
109
108
|
})
|
|
110
109
|
|
|
111
110
|
await flushUpdates()
|
|
112
|
-
await sleepAsync(50)
|
|
113
111
|
|
|
114
112
|
const autocomplete = document.querySelector('shade-autocomplete')
|
|
115
113
|
const input = autocomplete?.querySelector('input') as HTMLInputElement
|
|
@@ -118,7 +116,7 @@ describe('Autocomplete component', () => {
|
|
|
118
116
|
const changeEvent = new Event('change', { bubbles: true })
|
|
119
117
|
input.dispatchEvent(changeEvent)
|
|
120
118
|
|
|
121
|
-
await
|
|
119
|
+
await flushUpdates()
|
|
122
120
|
|
|
123
121
|
expect(onchange).toHaveBeenCalledWith('custom-value')
|
|
124
122
|
})
|
|
@@ -137,7 +135,6 @@ describe('Autocomplete component', () => {
|
|
|
137
135
|
})
|
|
138
136
|
|
|
139
137
|
await flushUpdates()
|
|
140
|
-
await sleepAsync(50)
|
|
141
138
|
|
|
142
139
|
const autocomplete = document.querySelector('shade-autocomplete')
|
|
143
140
|
const input = autocomplete?.querySelector('input') as HTMLInputElement
|
|
@@ -148,7 +145,7 @@ describe('Autocomplete component', () => {
|
|
|
148
145
|
const changeEvent = new Event('change', { bubbles: true })
|
|
149
146
|
input.dispatchEvent(changeEvent)
|
|
150
147
|
|
|
151
|
-
await
|
|
148
|
+
await flushUpdates()
|
|
152
149
|
|
|
153
150
|
expect(setCustomValiditySpy).toHaveBeenCalledWith('Please select a valid entry!')
|
|
154
151
|
// Verify that onchange was not called with the invalid string value
|
|
@@ -171,7 +168,6 @@ describe('Autocomplete component', () => {
|
|
|
171
168
|
})
|
|
172
169
|
|
|
173
170
|
await flushUpdates()
|
|
174
|
-
await sleepAsync(50)
|
|
175
171
|
|
|
176
172
|
const autocomplete = document.querySelector('shade-autocomplete')
|
|
177
173
|
const input = autocomplete?.querySelector('input') as HTMLInputElement
|
|
@@ -180,7 +176,7 @@ describe('Autocomplete component', () => {
|
|
|
180
176
|
const changeEvent = new Event('change', { bubbles: true })
|
|
181
177
|
input.dispatchEvent(changeEvent)
|
|
182
178
|
|
|
183
|
-
await
|
|
179
|
+
await flushUpdates()
|
|
184
180
|
|
|
185
181
|
expect(onchange).toHaveBeenCalledWith('valid1')
|
|
186
182
|
})
|
|
@@ -206,7 +202,6 @@ describe('Autocomplete component', () => {
|
|
|
206
202
|
})
|
|
207
203
|
|
|
208
204
|
await flushUpdates()
|
|
209
|
-
await sleepAsync(50)
|
|
210
205
|
|
|
211
206
|
const autocomplete = document.querySelector('shade-autocomplete')
|
|
212
207
|
const input = autocomplete?.querySelector('input') as HTMLInputElement
|
|
@@ -228,7 +223,6 @@ describe('Autocomplete component', () => {
|
|
|
228
223
|
})
|
|
229
224
|
|
|
230
225
|
await flushUpdates()
|
|
231
|
-
await sleepAsync(50)
|
|
232
226
|
|
|
233
227
|
const autocomplete = document.querySelector('shade-autocomplete')
|
|
234
228
|
expect(autocomplete).not.toBeNull()
|
|
@@ -252,7 +246,6 @@ describe('Autocomplete component', () => {
|
|
|
252
246
|
})
|
|
253
247
|
|
|
254
248
|
await flushUpdates()
|
|
255
|
-
await sleepAsync(50)
|
|
256
249
|
|
|
257
250
|
const autocomplete = document.querySelector('shade-autocomplete')
|
|
258
251
|
const input = autocomplete?.querySelector('input') as HTMLInputElement
|
|
@@ -2,6 +2,9 @@ import { Shade, createComponent } from '@furystack/shades'
|
|
|
2
2
|
import type { TextInputProps } from './input.js'
|
|
3
3
|
import { Input } from './input.js'
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* @deprecated Use `Suggest` with the `suggestions` prop instead. This component will be removed in a future version.
|
|
7
|
+
*/
|
|
5
8
|
export const Autocomplete = Shade<{
|
|
6
9
|
inputProps?: TextInputProps
|
|
7
10
|
suggestions: string[]
|