@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 type { ContextMenuItem } from './context-menu-manager.js'
|
|
6
6
|
import { ContextMenuManager } from './context-menu-manager.js'
|
|
@@ -35,7 +35,7 @@ describe('ContextMenu', () => {
|
|
|
35
35
|
jsxElement: <ContextMenu<TestData> manager={manager} onItemSelect={options?.onItemSelect} />,
|
|
36
36
|
})
|
|
37
37
|
|
|
38
|
-
await
|
|
38
|
+
await flushUpdates()
|
|
39
39
|
|
|
40
40
|
return {
|
|
41
41
|
injector,
|
|
@@ -71,7 +71,7 @@ describe('ContextMenu', () => {
|
|
|
71
71
|
it('should render the menu container when opened', async () => {
|
|
72
72
|
await usingAsync(await renderContextMenu(), async ({ manager, getMenu }) => {
|
|
73
73
|
manager.open({ items: createTestItems(), position: { x: 100, y: 200 } })
|
|
74
|
-
await
|
|
74
|
+
await flushUpdates()
|
|
75
75
|
|
|
76
76
|
expect(getMenu()).not.toBeNull()
|
|
77
77
|
expect(getMenu().getAttribute('role')).toBe('menu')
|
|
@@ -81,7 +81,7 @@ describe('ContextMenu', () => {
|
|
|
81
81
|
it('should render menu items', async () => {
|
|
82
82
|
await usingAsync(await renderContextMenu(), async ({ manager, getMenuItems }) => {
|
|
83
83
|
manager.open({ items: createTestItems(), position: { x: 0, y: 0 } })
|
|
84
|
-
await
|
|
84
|
+
await flushUpdates()
|
|
85
85
|
|
|
86
86
|
expect(getMenuItems().length).toBe(3)
|
|
87
87
|
})
|
|
@@ -90,7 +90,7 @@ describe('ContextMenu', () => {
|
|
|
90
90
|
it('should render separators', async () => {
|
|
91
91
|
await usingAsync(await renderContextMenu(), async ({ manager, getSeparators }) => {
|
|
92
92
|
manager.open({ items: createTestItems(), position: { x: 0, y: 0 } })
|
|
93
|
-
await
|
|
93
|
+
await flushUpdates()
|
|
94
94
|
|
|
95
95
|
expect(getSeparators().length).toBe(1)
|
|
96
96
|
})
|
|
@@ -99,7 +99,7 @@ describe('ContextMenu', () => {
|
|
|
99
99
|
it('should render items with menuitem role', async () => {
|
|
100
100
|
await usingAsync(await renderContextMenu(), async ({ manager, getMenuItems }) => {
|
|
101
101
|
manager.open({ items: createTestItems(), position: { x: 0, y: 0 } })
|
|
102
|
-
await
|
|
102
|
+
await flushUpdates()
|
|
103
103
|
|
|
104
104
|
const items = getMenuItems()
|
|
105
105
|
items.forEach((item) => {
|
|
@@ -111,7 +111,7 @@ describe('ContextMenu', () => {
|
|
|
111
111
|
it('should render a backdrop element', async () => {
|
|
112
112
|
await usingAsync(await renderContextMenu(), async ({ manager, getBackdrop }) => {
|
|
113
113
|
manager.open({ items: createTestItems(), position: { x: 0, y: 0 } })
|
|
114
|
-
await
|
|
114
|
+
await flushUpdates()
|
|
115
115
|
|
|
116
116
|
expect(getBackdrop()).not.toBeNull()
|
|
117
117
|
})
|
|
@@ -120,7 +120,7 @@ describe('ContextMenu', () => {
|
|
|
120
120
|
it('should position the menu at the specified coordinates', async () => {
|
|
121
121
|
await usingAsync(await renderContextMenu(), async ({ manager, getMenu }) => {
|
|
122
122
|
manager.open({ items: createTestItems(), position: { x: 150, y: 250 } })
|
|
123
|
-
await
|
|
123
|
+
await flushUpdates()
|
|
124
124
|
|
|
125
125
|
const menu = getMenu()
|
|
126
126
|
expect(menu.style.left).toBe('150px')
|
|
@@ -133,12 +133,12 @@ describe('ContextMenu', () => {
|
|
|
133
133
|
it('should close when backdrop is clicked', async () => {
|
|
134
134
|
await usingAsync(await renderContextMenu(), async ({ manager, getBackdrop, getMenu }) => {
|
|
135
135
|
manager.open({ items: createTestItems(), position: { x: 0, y: 0 } })
|
|
136
|
-
await
|
|
136
|
+
await flushUpdates()
|
|
137
137
|
|
|
138
138
|
expect(getMenu()).not.toBeNull()
|
|
139
139
|
|
|
140
140
|
getBackdrop().click()
|
|
141
|
-
await
|
|
141
|
+
await flushUpdates()
|
|
142
142
|
|
|
143
143
|
expect(manager.isOpened.getValue()).toBe(false)
|
|
144
144
|
expect(getMenu()).toBeNull()
|
|
@@ -148,12 +148,12 @@ describe('ContextMenu', () => {
|
|
|
148
148
|
it('should close when Escape is pressed', async () => {
|
|
149
149
|
await usingAsync(await renderContextMenu(), async ({ manager, getMenu }) => {
|
|
150
150
|
manager.open({ items: createTestItems(), position: { x: 0, y: 0 } })
|
|
151
|
-
await
|
|
151
|
+
await flushUpdates()
|
|
152
152
|
|
|
153
153
|
expect(getMenu()).not.toBeNull()
|
|
154
154
|
|
|
155
155
|
window.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true }))
|
|
156
|
-
await
|
|
156
|
+
await flushUpdates()
|
|
157
157
|
|
|
158
158
|
expect(manager.isOpened.getValue()).toBe(false)
|
|
159
159
|
expect(getMenu()).toBeNull()
|
|
@@ -163,11 +163,11 @@ describe('ContextMenu', () => {
|
|
|
163
163
|
it('should not close when clicking inside the menu container', async () => {
|
|
164
164
|
await usingAsync(await renderContextMenu(), async ({ manager, getMenu }) => {
|
|
165
165
|
manager.open({ items: createTestItems(), position: { x: 0, y: 0 } })
|
|
166
|
-
await
|
|
166
|
+
await flushUpdates()
|
|
167
167
|
|
|
168
168
|
const menu = getMenu()
|
|
169
169
|
menu.click()
|
|
170
|
-
await
|
|
170
|
+
await flushUpdates()
|
|
171
171
|
|
|
172
172
|
expect(manager.isOpened.getValue()).toBe(true)
|
|
173
173
|
})
|
|
@@ -179,11 +179,11 @@ describe('ContextMenu', () => {
|
|
|
179
179
|
const onItemSelect = vi.fn()
|
|
180
180
|
await usingAsync(await renderContextMenu({ onItemSelect }), async ({ manager, getMenuItems }) => {
|
|
181
181
|
manager.open({ items: createTestItems(), position: { x: 0, y: 0 } })
|
|
182
|
-
await
|
|
182
|
+
await flushUpdates()
|
|
183
183
|
|
|
184
184
|
const items = getMenuItems()
|
|
185
185
|
;(items[1] as HTMLElement).click()
|
|
186
|
-
await
|
|
186
|
+
await flushUpdates()
|
|
187
187
|
|
|
188
188
|
expect(onItemSelect).toHaveBeenCalledWith({ id: 2, name: 'Copy' })
|
|
189
189
|
})
|
|
@@ -192,11 +192,11 @@ describe('ContextMenu', () => {
|
|
|
192
192
|
it('should close the menu after item selection', async () => {
|
|
193
193
|
await usingAsync(await renderContextMenu(), async ({ manager, getMenuItems, getMenu }) => {
|
|
194
194
|
manager.open({ items: createTestItems(), position: { x: 0, y: 0 } })
|
|
195
|
-
await
|
|
195
|
+
await flushUpdates()
|
|
196
196
|
|
|
197
197
|
const items = getMenuItems()
|
|
198
198
|
;(items[0] as HTMLElement).click()
|
|
199
|
-
await
|
|
199
|
+
await flushUpdates()
|
|
200
200
|
|
|
201
201
|
expect(manager.isOpened.getValue()).toBe(false)
|
|
202
202
|
expect(getMenu()).toBeNull()
|
|
@@ -207,11 +207,11 @@ describe('ContextMenu', () => {
|
|
|
207
207
|
const onItemSelect = vi.fn()
|
|
208
208
|
await usingAsync(await renderContextMenu({ onItemSelect }), async ({ manager }) => {
|
|
209
209
|
manager.open({ items: createTestItems(), position: { x: 0, y: 0 } })
|
|
210
|
-
await
|
|
210
|
+
await flushUpdates()
|
|
211
211
|
|
|
212
212
|
manager.focusedIndex.setValue(1)
|
|
213
213
|
window.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', bubbles: true }))
|
|
214
|
-
await
|
|
214
|
+
await flushUpdates()
|
|
215
215
|
|
|
216
216
|
expect(onItemSelect).toHaveBeenCalledWith({ id: 2, name: 'Copy' })
|
|
217
217
|
})
|
|
@@ -222,7 +222,7 @@ describe('ContextMenu', () => {
|
|
|
222
222
|
it('should move focus down with ArrowDown', async () => {
|
|
223
223
|
await usingAsync(await renderContextMenu(), async ({ manager }) => {
|
|
224
224
|
manager.open({ items: createTestItems(), position: { x: 0, y: 0 } })
|
|
225
|
-
await
|
|
225
|
+
await flushUpdates()
|
|
226
226
|
|
|
227
227
|
window.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowDown', bubbles: true }))
|
|
228
228
|
|
|
@@ -233,7 +233,7 @@ describe('ContextMenu', () => {
|
|
|
233
233
|
it('should move focus up with ArrowUp', async () => {
|
|
234
234
|
await usingAsync(await renderContextMenu(), async ({ manager }) => {
|
|
235
235
|
manager.open({ items: createTestItems(), position: { x: 0, y: 0 } })
|
|
236
|
-
await
|
|
236
|
+
await flushUpdates()
|
|
237
237
|
|
|
238
238
|
manager.focusedIndex.setValue(1)
|
|
239
239
|
window.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowUp', bubbles: true }))
|
|
@@ -245,7 +245,7 @@ describe('ContextMenu', () => {
|
|
|
245
245
|
it('should skip separators during navigation', async () => {
|
|
246
246
|
await usingAsync(await renderContextMenu(), async ({ manager }) => {
|
|
247
247
|
manager.open({ items: createTestItems(), position: { x: 0, y: 0 } })
|
|
248
|
-
await
|
|
248
|
+
await flushUpdates()
|
|
249
249
|
|
|
250
250
|
manager.focusedIndex.setValue(1)
|
|
251
251
|
window.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowDown', bubbles: true }))
|
|
@@ -257,10 +257,10 @@ describe('ContextMenu', () => {
|
|
|
257
257
|
it('should add focused class to the focused item', async () => {
|
|
258
258
|
await usingAsync(await renderContextMenu(), async ({ manager, getMenuItems }) => {
|
|
259
259
|
manager.open({ items: createTestItems(), position: { x: 0, y: 0 } })
|
|
260
|
-
await
|
|
260
|
+
await flushUpdates()
|
|
261
261
|
|
|
262
262
|
manager.focusedIndex.setValue(1)
|
|
263
|
-
await
|
|
263
|
+
await flushUpdates()
|
|
264
264
|
|
|
265
265
|
const items = getMenuItems()
|
|
266
266
|
expect(items[0].hasAttribute('data-focused')).toBe(false)
|
|
@@ -272,7 +272,7 @@ describe('ContextMenu', () => {
|
|
|
272
272
|
it('should move focus to Home', async () => {
|
|
273
273
|
await usingAsync(await renderContextMenu(), async ({ manager }) => {
|
|
274
274
|
manager.open({ items: createTestItems(), position: { x: 0, y: 0 } })
|
|
275
|
-
await
|
|
275
|
+
await flushUpdates()
|
|
276
276
|
|
|
277
277
|
manager.focusedIndex.setValue(3)
|
|
278
278
|
window.dispatchEvent(new KeyboardEvent('keydown', { key: 'Home', bubbles: true }))
|
|
@@ -284,7 +284,7 @@ describe('ContextMenu', () => {
|
|
|
284
284
|
it('should move focus to End', async () => {
|
|
285
285
|
await usingAsync(await renderContextMenu(), async ({ manager }) => {
|
|
286
286
|
manager.open({ items: createTestItems(), position: { x: 0, y: 0 } })
|
|
287
|
-
await
|
|
287
|
+
await flushUpdates()
|
|
288
288
|
|
|
289
289
|
window.dispatchEvent(new KeyboardEvent('keydown', { key: 'End', bubbles: true }))
|
|
290
290
|
|
|
@@ -304,11 +304,11 @@ describe('ContextMenu', () => {
|
|
|
304
304
|
],
|
|
305
305
|
position: { x: 0, y: 0 },
|
|
306
306
|
})
|
|
307
|
-
await
|
|
307
|
+
await flushUpdates()
|
|
308
308
|
|
|
309
309
|
const items = getMenuItems()
|
|
310
310
|
;(items[1] as HTMLElement).click()
|
|
311
|
-
await
|
|
311
|
+
await flushUpdates()
|
|
312
312
|
|
|
313
313
|
expect(onItemSelect).not.toHaveBeenCalled()
|
|
314
314
|
})
|
|
@@ -323,7 +323,7 @@ describe('ContextMenu', () => {
|
|
|
323
323
|
],
|
|
324
324
|
position: { x: 0, y: 0 },
|
|
325
325
|
})
|
|
326
|
-
await
|
|
326
|
+
await flushUpdates()
|
|
327
327
|
|
|
328
328
|
const items = getMenuItems()
|
|
329
329
|
expect(items[0].getAttribute('aria-disabled')).toBeNull()
|
|
@@ -336,11 +336,11 @@ describe('ContextMenu', () => {
|
|
|
336
336
|
it('should remove keyboard listener when component is disconnected', async () => {
|
|
337
337
|
await usingAsync(await renderContextMenu(), async ({ manager, getContextMenu }) => {
|
|
338
338
|
manager.open({ items: createTestItems(), position: { x: 0, y: 0 } })
|
|
339
|
-
await
|
|
339
|
+
await flushUpdates()
|
|
340
340
|
|
|
341
341
|
const contextMenu = getContextMenu()
|
|
342
342
|
contextMenu.remove()
|
|
343
|
-
await
|
|
343
|
+
await flushUpdates()
|
|
344
344
|
|
|
345
345
|
manager.focusedIndex.setValue(0)
|
|
346
346
|
window.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowDown', bubbles: true }))
|
|
@@ -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 { CollectionService } from '../../services/collection-service.js'
|
|
6
6
|
import { DataGridBody } from './body.js'
|
|
@@ -31,7 +31,7 @@ describe('DataGridBody', () => {
|
|
|
31
31
|
),
|
|
32
32
|
})
|
|
33
33
|
|
|
34
|
-
await
|
|
34
|
+
await flushUpdates()
|
|
35
35
|
|
|
36
36
|
const body = document.querySelector('tbody[is="shade-data-grid-body"]')
|
|
37
37
|
expect(body).not.toBeNull()
|
|
@@ -59,7 +59,7 @@ describe('DataGridBody', () => {
|
|
|
59
59
|
),
|
|
60
60
|
})
|
|
61
61
|
|
|
62
|
-
await
|
|
62
|
+
await flushUpdates()
|
|
63
63
|
|
|
64
64
|
const body = document.querySelector('tbody[is="shade-data-grid-body"]')
|
|
65
65
|
expect(body).not.toBeNull()
|
|
@@ -92,7 +92,7 @@ describe('DataGridBody', () => {
|
|
|
92
92
|
),
|
|
93
93
|
})
|
|
94
94
|
|
|
95
|
-
await
|
|
95
|
+
await flushUpdates()
|
|
96
96
|
|
|
97
97
|
const body = document.querySelector('tbody[is="shade-data-grid-body"]')
|
|
98
98
|
expect(body).not.toBeNull()
|
|
@@ -123,7 +123,7 @@ describe('DataGridBody', () => {
|
|
|
123
123
|
),
|
|
124
124
|
})
|
|
125
125
|
|
|
126
|
-
await
|
|
126
|
+
await flushUpdates()
|
|
127
127
|
|
|
128
128
|
const body = document.querySelector('tbody[is="shade-data-grid-body"]')
|
|
129
129
|
const cells = body?.querySelectorAll('td')
|
|
@@ -150,7 +150,7 @@ describe('DataGridBody', () => {
|
|
|
150
150
|
),
|
|
151
151
|
})
|
|
152
152
|
|
|
153
|
-
await
|
|
153
|
+
await flushUpdates()
|
|
154
154
|
|
|
155
155
|
let body = document.querySelector('tbody[is="shade-data-grid-body"]')
|
|
156
156
|
expect(body?.textContent).toContain('- No Data -')
|
|
@@ -160,7 +160,7 @@ describe('DataGridBody', () => {
|
|
|
160
160
|
entries: [{ id: 1, name: 'New Entry' }],
|
|
161
161
|
})
|
|
162
162
|
|
|
163
|
-
await
|
|
163
|
+
await flushUpdates()
|
|
164
164
|
|
|
165
165
|
body = document.querySelector('tbody[is="shade-data-grid-body"]')
|
|
166
166
|
const rows = body?.querySelectorAll('shades-data-grid-row')
|
|
@@ -195,7 +195,7 @@ describe('DataGridBody', () => {
|
|
|
195
195
|
),
|
|
196
196
|
})
|
|
197
197
|
|
|
198
|
-
await
|
|
198
|
+
await flushUpdates()
|
|
199
199
|
|
|
200
200
|
const cell = document.querySelector('td') as HTMLTableCellElement
|
|
201
201
|
cell.click()
|
|
@@ -231,7 +231,7 @@ describe('DataGridBody', () => {
|
|
|
231
231
|
),
|
|
232
232
|
})
|
|
233
233
|
|
|
234
|
-
await
|
|
234
|
+
await flushUpdates()
|
|
235
235
|
|
|
236
236
|
const cell = document.querySelector('td') as HTMLTableCellElement
|
|
237
237
|
const dblClickEvent = new MouseEvent('dblclick', { bubbles: true })
|
|
@@ -269,7 +269,7 @@ describe('DataGridBody', () => {
|
|
|
269
269
|
),
|
|
270
270
|
})
|
|
271
271
|
|
|
272
|
-
await
|
|
272
|
+
await flushUpdates()
|
|
273
273
|
|
|
274
274
|
const customId = document.querySelector('[data-testid="custom-id"]')
|
|
275
275
|
const customName = document.querySelector('[data-testid="custom-name"]')
|
|
@@ -306,7 +306,7 @@ describe('DataGridBody', () => {
|
|
|
306
306
|
),
|
|
307
307
|
})
|
|
308
308
|
|
|
309
|
-
await
|
|
309
|
+
await flushUpdates()
|
|
310
310
|
|
|
311
311
|
const defaultCells = document.querySelectorAll('[data-testid="default-cell"]')
|
|
312
312
|
expect(defaultCells.length).toBe(2)
|
|
@@ -334,7 +334,7 @@ describe('DataGridBody', () => {
|
|
|
334
334
|
),
|
|
335
335
|
})
|
|
336
336
|
|
|
337
|
-
await
|
|
337
|
+
await flushUpdates()
|
|
338
338
|
|
|
339
339
|
const body = document.querySelector('tbody[is="shade-data-grid-body"]')
|
|
340
340
|
expect(body?.textContent).toContain('- No Data -')
|
|
@@ -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 { CollectionService } from '../../services/collection-service.js'
|
|
6
6
|
import { DataGridRow } from './data-grid-row.js'
|
|
@@ -71,7 +71,7 @@ describe('DataGridRow', () => {
|
|
|
71
71
|
</div>
|
|
72
72
|
),
|
|
73
73
|
})
|
|
74
|
-
await
|
|
74
|
+
await flushUpdates()
|
|
75
75
|
|
|
76
76
|
return {
|
|
77
77
|
injector,
|
|
@@ -166,11 +166,11 @@ describe('DataGridRow', () => {
|
|
|
166
166
|
expect(row?.hasAttribute('data-selected')).toBe(false)
|
|
167
167
|
|
|
168
168
|
service.selection.setValue([entry])
|
|
169
|
-
await
|
|
169
|
+
await flushUpdates()
|
|
170
170
|
expect(row?.hasAttribute('data-selected')).toBe(true)
|
|
171
171
|
|
|
172
172
|
service.selection.setValue([])
|
|
173
|
-
await
|
|
173
|
+
await flushUpdates()
|
|
174
174
|
expect(row?.hasAttribute('data-selected')).toBe(false)
|
|
175
175
|
})
|
|
176
176
|
})
|
|
@@ -184,7 +184,7 @@ describe('DataGridRow', () => {
|
|
|
184
184
|
expect(row?.getAttribute('aria-selected')).toBe('false')
|
|
185
185
|
|
|
186
186
|
service.selection.setValue([entry])
|
|
187
|
-
await
|
|
187
|
+
await flushUpdates()
|
|
188
188
|
expect(row?.getAttribute('aria-selected')).toBe('true')
|
|
189
189
|
})
|
|
190
190
|
})
|
|
@@ -256,11 +256,11 @@ describe('DataGridRow', () => {
|
|
|
256
256
|
expect(row?.hasAttribute('data-focused')).toBe(false)
|
|
257
257
|
|
|
258
258
|
service.focusedEntry.setValue(entry)
|
|
259
|
-
await
|
|
259
|
+
await flushUpdates()
|
|
260
260
|
expect(row?.hasAttribute('data-focused')).toBe(true)
|
|
261
261
|
|
|
262
262
|
service.focusedEntry.setValue(undefined)
|
|
263
|
-
await
|
|
263
|
+
await flushUpdates()
|
|
264
264
|
expect(row?.hasAttribute('data-focused')).toBe(false)
|
|
265
265
|
})
|
|
266
266
|
})
|