@furystack/shades-common-components 13.5.0 → 14.0.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 +58 -0
- package/README.md +3 -3
- package/esm/components/accordion/accordion-item.js +1 -1
- package/esm/components/accordion/accordion-item.js.map +1 -1
- package/esm/components/accordion/accordion.js +1 -1
- package/esm/components/accordion/accordion.js.map +1 -1
- package/esm/components/alert.js +1 -1
- package/esm/components/alert.js.map +1 -1
- package/esm/components/app-bar-link.js +1 -1
- package/esm/components/app-bar-link.js.map +1 -1
- package/esm/components/app-bar.js +1 -1
- package/esm/components/app-bar.js.map +1 -1
- package/esm/components/avatar.js +1 -1
- package/esm/components/avatar.js.map +1 -1
- package/esm/components/badge.js +1 -1
- package/esm/components/badge.js.map +1 -1
- package/esm/components/breadcrumb.js +1 -1
- package/esm/components/breadcrumb.js.map +1 -1
- package/esm/components/breadcrumb.spec.js +3 -3
- package/esm/components/breadcrumb.spec.js.map +1 -1
- package/esm/components/button-group.js +4 -4
- package/esm/components/button-group.js.map +1 -1
- package/esm/components/button.js +1 -1
- package/esm/components/button.js.map +1 -1
- package/esm/components/button.spec.js +1 -1
- package/esm/components/button.spec.js.map +1 -1
- package/esm/components/cache-view.js +1 -1
- package/esm/components/cache-view.js.map +1 -1
- package/esm/components/cache-view.spec.js +2 -2
- package/esm/components/cache-view.spec.js.map +1 -1
- package/esm/components/card.js +5 -5
- package/esm/components/card.js.map +1 -1
- package/esm/components/carousel.js +1 -1
- package/esm/components/carousel.js.map +1 -1
- package/esm/components/chip.js +1 -1
- package/esm/components/chip.js.map +1 -1
- package/esm/components/circular-progress.d.ts +2 -4
- package/esm/components/circular-progress.d.ts.map +1 -1
- package/esm/components/circular-progress.js +3 -6
- package/esm/components/circular-progress.js.map +1 -1
- package/esm/components/circular-progress.spec.js +19 -14
- package/esm/components/circular-progress.spec.js.map +1 -1
- package/esm/components/command-palette/command-palette-input.js +1 -1
- package/esm/components/command-palette/command-palette-input.js.map +1 -1
- package/esm/components/command-palette/command-palette-suggestion-list.js +1 -1
- package/esm/components/command-palette/command-palette-suggestion-list.js.map +1 -1
- package/esm/components/command-palette/command-palette-suggestion-list.spec.js +1 -1
- package/esm/components/command-palette/command-palette-suggestion-list.spec.js.map +1 -1
- package/esm/components/command-palette/index.js +1 -1
- package/esm/components/command-palette/index.js.map +1 -1
- package/esm/components/context-menu/context-menu-item.js +1 -1
- package/esm/components/context-menu/context-menu-item.js.map +1 -1
- package/esm/components/context-menu/context-menu.js +1 -1
- package/esm/components/context-menu/context-menu.js.map +1 -1
- package/esm/components/data-grid/body.js +1 -1
- package/esm/components/data-grid/body.js.map +1 -1
- package/esm/components/data-grid/data-grid-row.js +1 -1
- package/esm/components/data-grid/data-grid-row.js.map +1 -1
- package/esm/components/data-grid/data-grid.d.ts +5 -2
- package/esm/components/data-grid/data-grid.d.ts.map +1 -1
- package/esm/components/data-grid/data-grid.js +5 -3
- package/esm/components/data-grid/data-grid.js.map +1 -1
- package/esm/components/data-grid/data-grid.spec.js +60 -60
- package/esm/components/data-grid/data-grid.spec.js.map +1 -1
- package/esm/components/data-grid/filters/boolean-filter.d.ts +2 -2
- package/esm/components/data-grid/filters/boolean-filter.d.ts.map +1 -1
- package/esm/components/data-grid/filters/boolean-filter.js +4 -4
- package/esm/components/data-grid/filters/boolean-filter.js.map +1 -1
- package/esm/components/data-grid/filters/boolean-filter.spec.js +18 -17
- package/esm/components/data-grid/filters/boolean-filter.spec.js.map +1 -1
- package/esm/components/data-grid/filters/date-filter.d.ts +2 -2
- package/esm/components/data-grid/filters/date-filter.d.ts.map +1 -1
- package/esm/components/data-grid/filters/date-filter.js +6 -6
- package/esm/components/data-grid/filters/date-filter.js.map +1 -1
- package/esm/components/data-grid/filters/date-filter.spec.js +26 -21
- package/esm/components/data-grid/filters/date-filter.spec.js.map +1 -1
- package/esm/components/data-grid/filters/enum-filter.d.ts +2 -2
- package/esm/components/data-grid/filters/enum-filter.d.ts.map +1 -1
- package/esm/components/data-grid/filters/enum-filter.js +5 -5
- package/esm/components/data-grid/filters/enum-filter.js.map +1 -1
- package/esm/components/data-grid/filters/enum-filter.spec.js +21 -19
- package/esm/components/data-grid/filters/enum-filter.spec.js.map +1 -1
- package/esm/components/data-grid/filters/filter-dropdown.js +1 -1
- package/esm/components/data-grid/filters/filter-dropdown.js.map +1 -1
- package/esm/components/data-grid/filters/number-filter.d.ts +2 -2
- package/esm/components/data-grid/filters/number-filter.d.ts.map +1 -1
- package/esm/components/data-grid/filters/number-filter.js +5 -5
- package/esm/components/data-grid/filters/number-filter.js.map +1 -1
- package/esm/components/data-grid/filters/number-filter.spec.js +23 -21
- package/esm/components/data-grid/filters/number-filter.spec.js.map +1 -1
- package/esm/components/data-grid/filters/string-filter.d.ts +2 -2
- package/esm/components/data-grid/filters/string-filter.d.ts.map +1 -1
- package/esm/components/data-grid/filters/string-filter.js +5 -5
- package/esm/components/data-grid/filters/string-filter.js.map +1 -1
- package/esm/components/data-grid/filters/string-filter.spec.js +21 -19
- package/esm/components/data-grid/filters/string-filter.spec.js.map +1 -1
- package/esm/components/data-grid/footer.d.ts +2 -2
- package/esm/components/data-grid/footer.d.ts.map +1 -1
- package/esm/components/data-grid/footer.js +8 -13
- package/esm/components/data-grid/footer.js.map +1 -1
- package/esm/components/data-grid/footer.spec.js +38 -27
- package/esm/components/data-grid/footer.spec.js.map +1 -1
- package/esm/components/data-grid/header.d.ts +6 -6
- package/esm/components/data-grid/header.d.ts.map +1 -1
- package/esm/components/data-grid/header.js +16 -17
- package/esm/components/data-grid/header.js.map +1 -1
- package/esm/components/data-grid/header.spec.js +66 -60
- package/esm/components/data-grid/header.spec.js.map +1 -1
- package/esm/components/data-grid/selection-cell.js +1 -1
- package/esm/components/data-grid/selection-cell.js.map +1 -1
- package/esm/components/dialog.js +1 -1
- package/esm/components/dialog.js.map +1 -1
- package/esm/components/divider.js +1 -1
- package/esm/components/divider.js.map +1 -1
- package/esm/components/drawer/drawer-toggle-button.js +1 -1
- package/esm/components/drawer/drawer-toggle-button.js.map +1 -1
- package/esm/components/drawer/index.js +1 -1
- package/esm/components/drawer/index.js.map +1 -1
- package/esm/components/dropdown.js +1 -1
- package/esm/components/dropdown.js.map +1 -1
- package/esm/components/fab.js +1 -1
- package/esm/components/fab.js.map +1 -1
- package/esm/components/form.js +1 -1
- package/esm/components/form.js.map +1 -1
- package/esm/components/grid.js +1 -1
- package/esm/components/grid.js.map +1 -1
- package/esm/components/icons/icon.js +1 -1
- package/esm/components/icons/icon.js.map +1 -1
- package/esm/components/image.js +2 -2
- package/esm/components/image.js.map +1 -1
- package/esm/components/inputs/autocomplete.js +1 -1
- package/esm/components/inputs/autocomplete.js.map +1 -1
- package/esm/components/inputs/checkbox.js +1 -1
- package/esm/components/inputs/checkbox.js.map +1 -1
- package/esm/components/inputs/checkbox.spec.js +1 -1
- package/esm/components/inputs/checkbox.spec.js.map +1 -1
- package/esm/components/inputs/input-number.js +1 -1
- package/esm/components/inputs/input-number.js.map +1 -1
- package/esm/components/inputs/input-number.spec.js +1 -1
- package/esm/components/inputs/input-number.spec.js.map +1 -1
- package/esm/components/inputs/input.js +1 -1
- package/esm/components/inputs/input.js.map +1 -1
- package/esm/components/inputs/input.spec.js +1 -1
- package/esm/components/inputs/input.spec.js.map +1 -1
- package/esm/components/inputs/radio-group.js +1 -1
- package/esm/components/inputs/radio-group.js.map +1 -1
- package/esm/components/inputs/radio-group.spec.js +1 -1
- package/esm/components/inputs/radio-group.spec.js.map +1 -1
- package/esm/components/inputs/radio.js +1 -1
- package/esm/components/inputs/radio.js.map +1 -1
- package/esm/components/inputs/radio.spec.js +1 -1
- package/esm/components/inputs/radio.spec.js.map +1 -1
- package/esm/components/inputs/select.js +1 -1
- package/esm/components/inputs/select.js.map +1 -1
- package/esm/components/inputs/slider.js +1 -1
- package/esm/components/inputs/slider.js.map +1 -1
- package/esm/components/inputs/switch.js +1 -1
- package/esm/components/inputs/switch.js.map +1 -1
- package/esm/components/inputs/switch.spec.js +1 -1
- package/esm/components/inputs/switch.spec.js.map +1 -1
- package/esm/components/inputs/text-area.js +1 -1
- package/esm/components/inputs/text-area.js.map +1 -1
- package/esm/components/inputs/text-area.spec.js +1 -1
- package/esm/components/inputs/text-area.spec.js.map +1 -1
- package/esm/components/linear-progress.d.ts +2 -4
- package/esm/components/linear-progress.d.ts.map +1 -1
- package/esm/components/linear-progress.js +3 -6
- package/esm/components/linear-progress.js.map +1 -1
- package/esm/components/linear-progress.spec.js +21 -18
- package/esm/components/linear-progress.spec.js.map +1 -1
- package/esm/components/list/list-item.js +1 -1
- package/esm/components/list/list-item.js.map +1 -1
- package/esm/components/list/list.js +1 -1
- package/esm/components/list/list.js.map +1 -1
- package/esm/components/loader.js +1 -1
- package/esm/components/loader.js.map +1 -1
- package/esm/components/loader.spec.js +1 -1
- package/esm/components/loader.spec.js.map +1 -1
- package/esm/components/markdown/markdown-display.js +1 -1
- package/esm/components/markdown/markdown-display.js.map +1 -1
- package/esm/components/markdown/markdown-display.spec.js +1 -1
- package/esm/components/markdown/markdown-display.spec.js.map +1 -1
- package/esm/components/markdown/markdown-editor.js +1 -1
- package/esm/components/markdown/markdown-editor.js.map +1 -1
- package/esm/components/markdown/markdown-editor.spec.js +1 -1
- package/esm/components/markdown/markdown-editor.spec.js.map +1 -1
- package/esm/components/markdown/markdown-input.js +1 -1
- package/esm/components/markdown/markdown-input.js.map +1 -1
- package/esm/components/markdown/markdown-input.spec.js +1 -1
- package/esm/components/markdown/markdown-input.spec.js.map +1 -1
- package/esm/components/menu/menu.js +1 -1
- package/esm/components/menu/menu.js.map +1 -1
- package/esm/components/modal.js +1 -1
- package/esm/components/modal.js.map +1 -1
- package/esm/components/modal.spec.js +3 -3
- package/esm/components/modal.spec.js.map +1 -1
- package/esm/components/noty-list.js +2 -2
- package/esm/components/noty-list.js.map +1 -1
- package/esm/components/page-container/index.js +1 -1
- package/esm/components/page-container/index.js.map +1 -1
- package/esm/components/page-container/page-header.js +1 -1
- package/esm/components/page-container/page-header.js.map +1 -1
- package/esm/components/page-layout/index.js +1 -1
- package/esm/components/page-layout/index.js.map +1 -1
- package/esm/components/pagination.js +1 -1
- package/esm/components/pagination.js.map +1 -1
- package/esm/components/paper.js +1 -1
- package/esm/components/paper.js.map +1 -1
- package/esm/components/rating.js +1 -1
- package/esm/components/rating.js.map +1 -1
- package/esm/components/rating.spec.js +1 -1
- package/esm/components/rating.spec.js.map +1 -1
- package/esm/components/result.js +1 -1
- package/esm/components/result.js.map +1 -1
- package/esm/components/skeleton.js +1 -1
- package/esm/components/skeleton.js.map +1 -1
- package/esm/components/suggest/index.js +1 -1
- package/esm/components/suggest/index.js.map +1 -1
- package/esm/components/suggest/index.spec.js +1 -1
- package/esm/components/suggest/index.spec.js.map +1 -1
- package/esm/components/suggest/suggest-input.js +1 -1
- package/esm/components/suggest/suggest-input.js.map +1 -1
- package/esm/components/suggest/suggest-input.spec.js +1 -1
- package/esm/components/suggest/suggest-input.spec.js.map +1 -1
- package/esm/components/suggest/suggestion-list.js +1 -1
- package/esm/components/suggest/suggestion-list.js.map +1 -1
- package/esm/components/suggest/suggestion-list.spec.js +1 -1
- package/esm/components/suggest/suggestion-list.spec.js.map +1 -1
- package/esm/components/tabs.js +2 -2
- package/esm/components/tabs.js.map +1 -1
- package/esm/components/timeline.js +2 -2
- package/esm/components/timeline.js.map +1 -1
- package/esm/components/tooltip.js +1 -1
- package/esm/components/tooltip.js.map +1 -1
- package/esm/components/tree/tree-item.js +1 -1
- package/esm/components/tree/tree-item.js.map +1 -1
- package/esm/components/tree/tree.js +1 -1
- package/esm/components/tree/tree.js.map +1 -1
- package/esm/components/typography.js +1 -1
- package/esm/components/typography.js.map +1 -1
- package/esm/components/wizard/index.js +1 -1
- package/esm/components/wizard/index.js.map +1 -1
- package/esm/components/wizard/index.spec.js +3 -3
- package/esm/components/wizard/index.spec.js.map +1 -1
- package/package.json +3 -3
- package/src/components/accordion/accordion-item.tsx +1 -1
- package/src/components/accordion/accordion.tsx +1 -1
- package/src/components/alert.tsx +1 -1
- package/src/components/app-bar-link.tsx +1 -1
- package/src/components/app-bar.tsx +1 -1
- package/src/components/avatar.tsx +1 -1
- package/src/components/badge.tsx +1 -1
- package/src/components/breadcrumb.spec.tsx +3 -3
- package/src/components/breadcrumb.tsx +1 -1
- package/src/components/button-group.tsx +4 -4
- package/src/components/button.spec.tsx +1 -1
- package/src/components/button.tsx +1 -1
- package/src/components/cache-view.spec.tsx +2 -2
- package/src/components/cache-view.tsx +3 -3
- package/src/components/card.tsx +5 -5
- package/src/components/carousel.tsx +1 -1
- package/src/components/chip.tsx +1 -1
- package/src/components/circular-progress.spec.tsx +20 -14
- package/src/components/circular-progress.tsx +5 -11
- package/src/components/command-palette/command-palette-input.tsx +1 -1
- package/src/components/command-palette/command-palette-suggestion-list.spec.tsx +1 -1
- package/src/components/command-palette/command-palette-suggestion-list.tsx +1 -1
- package/src/components/command-palette/index.tsx +1 -1
- package/src/components/context-menu/context-menu-item.tsx +1 -1
- package/src/components/context-menu/context-menu.tsx +1 -1
- package/src/components/data-grid/body.tsx +1 -1
- package/src/components/data-grid/data-grid-row.tsx +1 -1
- package/src/components/data-grid/data-grid.spec.tsx +62 -36
- package/src/components/data-grid/data-grid.tsx +14 -8
- package/src/components/data-grid/filters/boolean-filter.spec.tsx +29 -18
- package/src/components/data-grid/filters/boolean-filter.tsx +6 -6
- package/src/components/data-grid/filters/date-filter.spec.tsx +35 -22
- package/src/components/data-grid/filters/date-filter.tsx +8 -8
- package/src/components/data-grid/filters/enum-filter.spec.tsx +35 -20
- package/src/components/data-grid/filters/enum-filter.tsx +7 -7
- package/src/components/data-grid/filters/filter-dropdown.tsx +1 -1
- package/src/components/data-grid/filters/number-filter.spec.tsx +32 -22
- package/src/components/data-grid/filters/number-filter.tsx +7 -7
- package/src/components/data-grid/filters/string-filter.spec.tsx +32 -20
- package/src/components/data-grid/filters/string-filter.tsx +7 -7
- package/src/components/data-grid/footer.spec.tsx +79 -31
- package/src/components/data-grid/footer.tsx +10 -15
- package/src/components/data-grid/header.spec.tsx +152 -68
- package/src/components/data-grid/header.tsx +64 -27
- package/src/components/data-grid/selection-cell.tsx +1 -1
- package/src/components/dialog.tsx +1 -1
- package/src/components/divider.tsx +1 -1
- package/src/components/drawer/drawer-toggle-button.tsx +1 -1
- package/src/components/drawer/index.tsx +1 -1
- package/src/components/dropdown.tsx +1 -1
- package/src/components/fab.tsx +1 -1
- package/src/components/form.tsx +1 -1
- package/src/components/grid.tsx +1 -1
- package/src/components/icons/icon.tsx +1 -1
- package/src/components/image.tsx +2 -2
- package/src/components/inputs/autocomplete.tsx +1 -1
- package/src/components/inputs/checkbox.spec.tsx +1 -1
- package/src/components/inputs/checkbox.tsx +1 -1
- package/src/components/inputs/input-number.spec.tsx +1 -1
- package/src/components/inputs/input-number.tsx +1 -1
- package/src/components/inputs/input.spec.tsx +1 -1
- package/src/components/inputs/input.tsx +1 -1
- package/src/components/inputs/radio-group.spec.tsx +1 -1
- package/src/components/inputs/radio-group.tsx +1 -1
- package/src/components/inputs/radio.spec.tsx +1 -1
- package/src/components/inputs/radio.tsx +1 -1
- package/src/components/inputs/select.tsx +1 -1
- package/src/components/inputs/slider.tsx +1 -1
- package/src/components/inputs/switch.spec.tsx +1 -1
- package/src/components/inputs/switch.tsx +1 -1
- package/src/components/inputs/text-area.spec.tsx +1 -1
- package/src/components/inputs/text-area.tsx +1 -1
- package/src/components/linear-progress.spec.tsx +22 -18
- package/src/components/linear-progress.tsx +5 -11
- package/src/components/list/list-item.tsx +1 -1
- package/src/components/list/list.tsx +1 -1
- package/src/components/loader.spec.tsx +1 -1
- package/src/components/loader.tsx +1 -1
- package/src/components/markdown/markdown-display.spec.tsx +1 -1
- package/src/components/markdown/markdown-display.tsx +1 -1
- package/src/components/markdown/markdown-editor.spec.tsx +1 -1
- package/src/components/markdown/markdown-editor.tsx +1 -1
- package/src/components/markdown/markdown-input.spec.tsx +1 -1
- package/src/components/markdown/markdown-input.tsx +1 -1
- package/src/components/menu/menu.tsx +1 -1
- package/src/components/modal.spec.tsx +3 -3
- package/src/components/modal.tsx +1 -1
- package/src/components/noty-list.tsx +2 -2
- package/src/components/page-container/index.tsx +1 -1
- package/src/components/page-container/page-header.tsx +1 -1
- package/src/components/page-layout/index.tsx +1 -1
- package/src/components/pagination.tsx +1 -1
- package/src/components/paper.tsx +1 -1
- package/src/components/rating.spec.tsx +1 -1
- package/src/components/rating.tsx +1 -1
- package/src/components/result.tsx +1 -1
- package/src/components/skeleton.tsx +1 -1
- package/src/components/suggest/index.spec.tsx +1 -1
- package/src/components/suggest/index.tsx +1 -1
- package/src/components/suggest/suggest-input.spec.tsx +1 -1
- package/src/components/suggest/suggest-input.tsx +1 -1
- package/src/components/suggest/suggestion-list.spec.tsx +1 -1
- package/src/components/suggest/suggestion-list.tsx +1 -1
- package/src/components/tabs.tsx +2 -2
- package/src/components/timeline.tsx +2 -2
- package/src/components/tooltip.tsx +1 -1
- package/src/components/tree/tree-item.tsx +1 -1
- package/src/components/tree/tree.tsx +1 -1
- package/src/components/typography.tsx +1 -1
- package/src/components/wizard/index.spec.tsx +3 -3
- package/src/components/wizard/index.tsx +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { FindOptions } from '@furystack/core'
|
|
2
2
|
import { Injector } from '@furystack/inject'
|
|
3
3
|
import { createComponent, flushUpdates, initializeShadeRoot } from '@furystack/shades'
|
|
4
|
-
import {
|
|
5
|
-
import { afterEach, beforeEach, describe, expect, it } from 'vitest'
|
|
4
|
+
import { usingAsync } from '@furystack/utils'
|
|
5
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
|
6
6
|
import { CollectionService } from '../../services/collection-service.js'
|
|
7
7
|
import { DataGridFooter, dataGridItemsPerPage } from './footer.js'
|
|
8
8
|
|
|
@@ -23,11 +23,8 @@ describe('DataGridFooter', () => {
|
|
|
23
23
|
return service
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
const createFindOptions = (
|
|
27
|
-
top
|
|
28
|
-
skip: number = 0,
|
|
29
|
-
): ObservableValue<FindOptions<TestItem, Array<keyof TestItem>>> => {
|
|
30
|
-
return new ObservableValue<FindOptions<TestItem, Array<keyof TestItem>>>({ top, skip })
|
|
26
|
+
const createFindOptions = (top: number = 10, skip: number = 0): FindOptions<TestItem, Array<keyof TestItem>> => {
|
|
27
|
+
return { top, skip }
|
|
31
28
|
}
|
|
32
29
|
|
|
33
30
|
it('should render with custom element', async () => {
|
|
@@ -35,11 +32,14 @@ describe('DataGridFooter', () => {
|
|
|
35
32
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
36
33
|
const service = createService()
|
|
37
34
|
const findOptions = createFindOptions()
|
|
35
|
+
const onFindOptionsChange = vi.fn()
|
|
38
36
|
|
|
39
37
|
initializeShadeRoot({
|
|
40
38
|
injector,
|
|
41
39
|
rootElement,
|
|
42
|
-
jsxElement:
|
|
40
|
+
jsxElement: (
|
|
41
|
+
<DataGridFooter service={service} findOptions={findOptions} onFindOptionsChange={onFindOptionsChange} />
|
|
42
|
+
),
|
|
43
43
|
})
|
|
44
44
|
|
|
45
45
|
await flushUpdates()
|
|
@@ -54,11 +54,14 @@ describe('DataGridFooter', () => {
|
|
|
54
54
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
55
55
|
const service = createService()
|
|
56
56
|
const findOptions = createFindOptions()
|
|
57
|
+
const onFindOptionsChange = vi.fn()
|
|
57
58
|
|
|
58
59
|
initializeShadeRoot({
|
|
59
60
|
injector,
|
|
60
61
|
rootElement,
|
|
61
|
-
jsxElement:
|
|
62
|
+
jsxElement: (
|
|
63
|
+
<DataGridFooter service={service} findOptions={findOptions} onFindOptionsChange={onFindOptionsChange} />
|
|
64
|
+
),
|
|
62
65
|
})
|
|
63
66
|
|
|
64
67
|
await flushUpdates()
|
|
@@ -75,11 +78,14 @@ describe('DataGridFooter', () => {
|
|
|
75
78
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
76
79
|
const service = createService()
|
|
77
80
|
const findOptions = createFindOptions()
|
|
81
|
+
const onFindOptionsChange = vi.fn()
|
|
78
82
|
|
|
79
83
|
initializeShadeRoot({
|
|
80
84
|
injector,
|
|
81
85
|
rootElement,
|
|
82
|
-
jsxElement:
|
|
86
|
+
jsxElement: (
|
|
87
|
+
<DataGridFooter service={service} findOptions={findOptions} onFindOptionsChange={onFindOptionsChange} />
|
|
88
|
+
),
|
|
83
89
|
})
|
|
84
90
|
|
|
85
91
|
await flushUpdates()
|
|
@@ -102,11 +108,14 @@ describe('DataGridFooter', () => {
|
|
|
102
108
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
103
109
|
const service = createService([], 100)
|
|
104
110
|
const findOptions = createFindOptions(10, 0)
|
|
111
|
+
const onFindOptionsChange = vi.fn()
|
|
105
112
|
|
|
106
113
|
initializeShadeRoot({
|
|
107
114
|
injector,
|
|
108
115
|
rootElement,
|
|
109
|
-
jsxElement:
|
|
116
|
+
jsxElement: (
|
|
117
|
+
<DataGridFooter service={service} findOptions={findOptions} onFindOptionsChange={onFindOptionsChange} />
|
|
118
|
+
),
|
|
110
119
|
})
|
|
111
120
|
|
|
112
121
|
await flushUpdates()
|
|
@@ -122,11 +131,14 @@ describe('DataGridFooter', () => {
|
|
|
122
131
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
123
132
|
const service = createService([], 50)
|
|
124
133
|
const findOptions = createFindOptions(Infinity, 0)
|
|
134
|
+
const onFindOptionsChange = vi.fn()
|
|
125
135
|
|
|
126
136
|
initializeShadeRoot({
|
|
127
137
|
injector,
|
|
128
138
|
rootElement,
|
|
129
|
-
jsxElement:
|
|
139
|
+
jsxElement: (
|
|
140
|
+
<DataGridFooter service={service} findOptions={findOptions} onFindOptionsChange={onFindOptionsChange} />
|
|
141
|
+
),
|
|
130
142
|
})
|
|
131
143
|
|
|
132
144
|
await flushUpdates()
|
|
@@ -142,11 +154,14 @@ describe('DataGridFooter', () => {
|
|
|
142
154
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
143
155
|
const service = createService([], 100)
|
|
144
156
|
const findOptions = createFindOptions(25, 0)
|
|
157
|
+
const onFindOptionsChange = vi.fn()
|
|
145
158
|
|
|
146
159
|
initializeShadeRoot({
|
|
147
160
|
injector,
|
|
148
161
|
rootElement,
|
|
149
|
-
jsxElement:
|
|
162
|
+
jsxElement: (
|
|
163
|
+
<DataGridFooter service={service} findOptions={findOptions} onFindOptionsChange={onFindOptionsChange} />
|
|
164
|
+
),
|
|
150
165
|
})
|
|
151
166
|
|
|
152
167
|
await flushUpdates()
|
|
@@ -162,16 +177,19 @@ describe('DataGridFooter', () => {
|
|
|
162
177
|
})
|
|
163
178
|
})
|
|
164
179
|
|
|
165
|
-
it('should
|
|
180
|
+
it('should call onFindOptionsChange when page is changed via Pagination', async () => {
|
|
166
181
|
await usingAsync(new Injector(), async (injector) => {
|
|
167
182
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
168
183
|
const service = createService([], 100)
|
|
169
184
|
const findOptions = createFindOptions(10, 0)
|
|
185
|
+
const onFindOptionsChange = vi.fn()
|
|
170
186
|
|
|
171
187
|
initializeShadeRoot({
|
|
172
188
|
injector,
|
|
173
189
|
rootElement,
|
|
174
|
-
jsxElement:
|
|
190
|
+
jsxElement: (
|
|
191
|
+
<DataGridFooter service={service} findOptions={findOptions} onFindOptionsChange={onFindOptionsChange} />
|
|
192
|
+
),
|
|
175
193
|
})
|
|
176
194
|
|
|
177
195
|
await flushUpdates()
|
|
@@ -185,21 +203,23 @@ describe('DataGridFooter', () => {
|
|
|
185
203
|
|
|
186
204
|
await flushUpdates()
|
|
187
205
|
|
|
188
|
-
|
|
189
|
-
expect(updatedOptions.skip).toBe(10)
|
|
206
|
+
expect(onFindOptionsChange).toHaveBeenCalledWith(expect.objectContaining({ skip: 10 }))
|
|
190
207
|
})
|
|
191
208
|
})
|
|
192
209
|
|
|
193
|
-
it('should
|
|
210
|
+
it('should call onFindOptionsChange when items per page is changed', async () => {
|
|
194
211
|
await usingAsync(new Injector(), async (injector) => {
|
|
195
212
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
196
213
|
const service = createService([], 100)
|
|
197
214
|
const findOptions = createFindOptions(10, 0)
|
|
215
|
+
const onFindOptionsChange = vi.fn()
|
|
198
216
|
|
|
199
217
|
initializeShadeRoot({
|
|
200
218
|
injector,
|
|
201
219
|
rootElement,
|
|
202
|
-
jsxElement:
|
|
220
|
+
jsxElement: (
|
|
221
|
+
<DataGridFooter service={service} findOptions={findOptions} onFindOptionsChange={onFindOptionsChange} />
|
|
222
|
+
),
|
|
203
223
|
})
|
|
204
224
|
|
|
205
225
|
await flushUpdates()
|
|
@@ -218,8 +238,7 @@ describe('DataGridFooter', () => {
|
|
|
218
238
|
|
|
219
239
|
await flushUpdates()
|
|
220
240
|
|
|
221
|
-
|
|
222
|
-
expect(updatedOptions.top).toBe(25)
|
|
241
|
+
expect(onFindOptionsChange).toHaveBeenCalledWith(expect.objectContaining({ top: 25 }))
|
|
223
242
|
})
|
|
224
243
|
})
|
|
225
244
|
|
|
@@ -228,11 +247,14 @@ describe('DataGridFooter', () => {
|
|
|
228
247
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
229
248
|
const service = createService([], 100)
|
|
230
249
|
const findOptions = createFindOptions(10, 20)
|
|
250
|
+
const onFindOptionsChange = vi.fn()
|
|
231
251
|
|
|
232
252
|
initializeShadeRoot({
|
|
233
253
|
injector,
|
|
234
254
|
rootElement,
|
|
235
|
-
jsxElement:
|
|
255
|
+
jsxElement: (
|
|
256
|
+
<DataGridFooter service={service} findOptions={findOptions} onFindOptionsChange={onFindOptionsChange} />
|
|
257
|
+
),
|
|
236
258
|
})
|
|
237
259
|
|
|
238
260
|
await flushUpdates()
|
|
@@ -251,9 +273,7 @@ describe('DataGridFooter', () => {
|
|
|
251
273
|
|
|
252
274
|
await flushUpdates()
|
|
253
275
|
|
|
254
|
-
|
|
255
|
-
expect(updatedOptions.top).toBe(25)
|
|
256
|
-
expect(updatedOptions.skip).toBe(50)
|
|
276
|
+
expect(onFindOptionsChange).toHaveBeenCalledWith(expect.objectContaining({ top: 25, skip: 50 }))
|
|
257
277
|
})
|
|
258
278
|
})
|
|
259
279
|
|
|
@@ -262,11 +282,14 @@ describe('DataGridFooter', () => {
|
|
|
262
282
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
263
283
|
const service = createService([], 100)
|
|
264
284
|
const findOptions = createFindOptions(10, 30)
|
|
285
|
+
const onFindOptionsChange = vi.fn()
|
|
265
286
|
|
|
266
287
|
initializeShadeRoot({
|
|
267
288
|
injector,
|
|
268
289
|
rootElement,
|
|
269
|
-
jsxElement:
|
|
290
|
+
jsxElement: (
|
|
291
|
+
<DataGridFooter service={service} findOptions={findOptions} onFindOptionsChange={onFindOptionsChange} />
|
|
292
|
+
),
|
|
270
293
|
})
|
|
271
294
|
|
|
272
295
|
await flushUpdates()
|
|
@@ -285,11 +308,14 @@ describe('DataGridFooter', () => {
|
|
|
285
308
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
286
309
|
const service = createService([], 100)
|
|
287
310
|
const findOptions = createFindOptions(25, 0)
|
|
311
|
+
const onFindOptionsChange = vi.fn()
|
|
288
312
|
|
|
289
313
|
initializeShadeRoot({
|
|
290
314
|
injector,
|
|
291
315
|
rootElement,
|
|
292
|
-
jsxElement:
|
|
316
|
+
jsxElement: (
|
|
317
|
+
<DataGridFooter service={service} findOptions={findOptions} onFindOptionsChange={onFindOptionsChange} />
|
|
318
|
+
),
|
|
293
319
|
})
|
|
294
320
|
|
|
295
321
|
await flushUpdates()
|
|
@@ -311,11 +337,14 @@ describe('DataGridFooter', () => {
|
|
|
311
337
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
312
338
|
const service = createService([], 30)
|
|
313
339
|
const findOptions = createFindOptions(10, 0)
|
|
340
|
+
const onFindOptionsChange = vi.fn()
|
|
314
341
|
|
|
315
342
|
initializeShadeRoot({
|
|
316
343
|
injector,
|
|
317
344
|
rootElement,
|
|
318
|
-
jsxElement:
|
|
345
|
+
jsxElement: (
|
|
346
|
+
<DataGridFooter service={service} findOptions={findOptions} onFindOptionsChange={onFindOptionsChange} />
|
|
347
|
+
),
|
|
319
348
|
})
|
|
320
349
|
|
|
321
350
|
await flushUpdates()
|
|
@@ -349,11 +378,19 @@ describe('DataGridFooter', () => {
|
|
|
349
378
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
350
379
|
const service = createService()
|
|
351
380
|
const findOptions = createFindOptions()
|
|
381
|
+
const onFindOptionsChange = vi.fn()
|
|
352
382
|
|
|
353
383
|
initializeShadeRoot({
|
|
354
384
|
injector,
|
|
355
385
|
rootElement,
|
|
356
|
-
jsxElement:
|
|
386
|
+
jsxElement: (
|
|
387
|
+
<DataGridFooter
|
|
388
|
+
service={service}
|
|
389
|
+
findOptions={findOptions}
|
|
390
|
+
onFindOptionsChange={onFindOptionsChange}
|
|
391
|
+
paginationOptions={[5, 15, 30]}
|
|
392
|
+
/>
|
|
393
|
+
),
|
|
357
394
|
})
|
|
358
395
|
|
|
359
396
|
await flushUpdates()
|
|
@@ -375,11 +412,19 @@ describe('DataGridFooter', () => {
|
|
|
375
412
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
376
413
|
const service = createService([], 50)
|
|
377
414
|
const findOptions = createFindOptions(10, 0)
|
|
415
|
+
const onFindOptionsChange = vi.fn()
|
|
378
416
|
|
|
379
417
|
initializeShadeRoot({
|
|
380
418
|
injector,
|
|
381
419
|
rootElement,
|
|
382
|
-
jsxElement:
|
|
420
|
+
jsxElement: (
|
|
421
|
+
<DataGridFooter
|
|
422
|
+
service={service}
|
|
423
|
+
findOptions={findOptions}
|
|
424
|
+
onFindOptionsChange={onFindOptionsChange}
|
|
425
|
+
paginationOptions={[10]}
|
|
426
|
+
/>
|
|
427
|
+
),
|
|
383
428
|
})
|
|
384
429
|
|
|
385
430
|
await flushUpdates()
|
|
@@ -395,11 +440,14 @@ describe('DataGridFooter', () => {
|
|
|
395
440
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
396
441
|
const service = createService()
|
|
397
442
|
const findOptions = createFindOptions()
|
|
443
|
+
const onFindOptionsChange = vi.fn()
|
|
398
444
|
|
|
399
445
|
initializeShadeRoot({
|
|
400
446
|
injector,
|
|
401
447
|
rootElement,
|
|
402
|
-
jsxElement:
|
|
448
|
+
jsxElement: (
|
|
449
|
+
<DataGridFooter service={service} findOptions={findOptions} onFindOptionsChange={onFindOptionsChange} />
|
|
450
|
+
),
|
|
403
451
|
})
|
|
404
452
|
|
|
405
453
|
await flushUpdates()
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { FindOptions } from '@furystack/core'
|
|
2
2
|
import { Shade, createComponent } from '@furystack/shades'
|
|
3
|
-
import type { ObservableValue } from '@furystack/utils'
|
|
4
3
|
import type { CollectionService } from '../../services/collection-service.js'
|
|
5
4
|
import { cssVariableTheme } from '../../services/css-variable-theme.js'
|
|
6
5
|
import { Pagination } from '../pagination.js'
|
|
@@ -9,10 +8,11 @@ export const dataGridItemsPerPage = [10, 20, 25, 50, 100, Infinity]
|
|
|
9
8
|
|
|
10
9
|
export const DataGridFooter: <T>(props: {
|
|
11
10
|
service: CollectionService<T>
|
|
12
|
-
findOptions:
|
|
11
|
+
findOptions: FindOptions<T, Array<keyof T>>
|
|
12
|
+
onFindOptionsChange: (options: FindOptions<T, Array<keyof T>>) => void
|
|
13
13
|
paginationOptions?: number[]
|
|
14
14
|
}) => JSX.Element = Shade({
|
|
15
|
-
|
|
15
|
+
customElementName: 'shade-data-grid-footer',
|
|
16
16
|
css: {
|
|
17
17
|
display: 'block',
|
|
18
18
|
fontFamily: cssVariableTheme.typography.fontFamily,
|
|
@@ -44,20 +44,15 @@ export const DataGridFooter: <T>(props: {
|
|
|
44
44
|
},
|
|
45
45
|
},
|
|
46
46
|
render: ({ props, useObservable }) => {
|
|
47
|
-
const { service, findOptions, paginationOptions = dataGridItemsPerPage } = props
|
|
47
|
+
const { service, findOptions, onFindOptionsChange, paginationOptions = dataGridItemsPerPage } = props
|
|
48
48
|
const [currentData] = useObservable('dataUpdater', service.data)
|
|
49
|
-
const [currentOptions, setCurrentOptions] = useObservable('optionsUpdater', findOptions, {
|
|
50
|
-
filter: (newValue, oldValue) => {
|
|
51
|
-
return newValue.top !== oldValue.top || newValue.skip !== oldValue.skip
|
|
52
|
-
},
|
|
53
|
-
})
|
|
54
49
|
|
|
55
|
-
const top =
|
|
56
|
-
const skip =
|
|
50
|
+
const top = findOptions.top || Infinity
|
|
51
|
+
const skip = findOptions.skip || 0
|
|
57
52
|
const currentPage = Math.ceil(skip) / (top || 1)
|
|
58
53
|
const currentEntriesPerPage = top
|
|
59
54
|
|
|
60
|
-
const pageCount = Math.ceil(currentData.count / (
|
|
55
|
+
const pageCount = Math.ceil(currentData.count / (findOptions.top || Infinity))
|
|
61
56
|
|
|
62
57
|
return (
|
|
63
58
|
<div className="pager">
|
|
@@ -67,7 +62,7 @@ export const DataGridFooter: <T>(props: {
|
|
|
67
62
|
page={currentPage + 1}
|
|
68
63
|
size="small"
|
|
69
64
|
onPageChange={(newPage) => {
|
|
70
|
-
|
|
65
|
+
onFindOptionsChange({ ...findOptions, skip: (findOptions.top || 0) * (newPage - 1) })
|
|
71
66
|
}}
|
|
72
67
|
/>
|
|
73
68
|
)}
|
|
@@ -77,8 +72,8 @@ export const DataGridFooter: <T>(props: {
|
|
|
77
72
|
<select
|
|
78
73
|
onchange={(ev) => {
|
|
79
74
|
const value = parseInt((ev.currentTarget as HTMLInputElement).value, 10)
|
|
80
|
-
|
|
81
|
-
...
|
|
75
|
+
onFindOptionsChange({
|
|
76
|
+
...findOptions,
|
|
82
77
|
top: value,
|
|
83
78
|
skip: currentPage * value,
|
|
84
79
|
})
|