@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,22 +1,19 @@
|
|
|
1
1
|
import type { FindOptions } from '@furystack/core';
|
|
2
2
|
import type { ChildrenList } from '@furystack/shades';
|
|
3
3
|
import type { ObservableValue } from '@furystack/utils';
|
|
4
|
-
|
|
4
|
+
import type { ColumnFilterConfig, FilterableFindOptions } from './data-grid.js';
|
|
5
|
+
export type DataGridHeaderProps<T, Column extends string> = {
|
|
5
6
|
field: Column;
|
|
6
7
|
findOptions: ObservableValue<FindOptions<T, Array<keyof T>>>;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
findOptions: FindOptions<T, K[]>;
|
|
10
|
-
isSearchOpened: boolean;
|
|
11
|
-
updateSearchValue: (value: string) => void;
|
|
12
|
-
}
|
|
8
|
+
filterConfig?: ColumnFilterConfig;
|
|
9
|
+
};
|
|
13
10
|
export declare const OrderButton: (props: {
|
|
14
11
|
field: string;
|
|
15
|
-
findOptions: ObservableValue<
|
|
12
|
+
findOptions: ObservableValue<FilterableFindOptions>;
|
|
16
13
|
} & Omit<Partial<HTMLElement>, "style"> & {
|
|
17
14
|
style?: Partial<CSSStyleDeclaration>;
|
|
18
15
|
} & {
|
|
19
16
|
ref?: import("@furystack/shades").RefObject<Element>;
|
|
20
17
|
}, children?: ChildrenList) => JSX.Element;
|
|
21
|
-
export declare const DataGridHeader: <T, Column extends string>(props: DataGridHeaderProps<T, Column>, children: ChildrenList
|
|
18
|
+
export declare const DataGridHeader: <T, Column extends string>(props: DataGridHeaderProps<T, Column>, children: ChildrenList) => JSX.Element<any>;
|
|
22
19
|
//# sourceMappingURL=header.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../src/components/data-grid/header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../src/components/data-grid/header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAIvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAQ/E,MAAM,MAAM,mBAAmB,CAAC,CAAC,EAAE,MAAM,SAAS,MAAM,IAAI;IAC1D,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5D,YAAY,CAAC,EAAE,kBAAkB,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,WAAW;WACf,MAAM;iBACA,eAAe,CAAC,qBAAqB,CAAC;;;;;0CAyCnD,CAAA;AA0DF,eAAO,MAAM,cAAc,EAAE,CAAC,CAAC,EAAE,MAAM,SAAS,MAAM,EACpD,KAAK,EAAE,mBAAmB,CAAC,CAAC,EAAE,MAAM,CAAC,EACrC,QAAQ,EAAE,YAAY,KACnB,GAAG,CAAC,OAAO,CAAC,GAAG,CA8DlB,CAAA"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { Shade, createComponent } from '@furystack/shades';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { Button } from '../button.js';
|
|
5
|
-
import { Form } from '../form.js';
|
|
2
|
+
import { ToggleButton } from '../button-group.js';
|
|
3
|
+
import { arrowDown, arrowUp, arrowUpDown, filter as filterIcon } from '../icons/icon-definitions.js';
|
|
6
4
|
import { Icon } from '../icons/icon.js';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
5
|
+
import { BooleanFilter } from './filters/boolean-filter.js';
|
|
6
|
+
import { DateFilter } from './filters/date-filter.js';
|
|
7
|
+
import { EnumFilter } from './filters/enum-filter.js';
|
|
8
|
+
import { FilterDropdown } from './filters/filter-dropdown.js';
|
|
9
|
+
import { NumberFilter } from './filters/number-filter.js';
|
|
10
|
+
import { StringFilter } from './filters/string-filter.js';
|
|
9
11
|
export const OrderButton = Shade({
|
|
10
12
|
shadowDomName: 'data-grid-order-button',
|
|
11
13
|
css: {
|
|
@@ -15,7 +17,7 @@ export const OrderButton = Shade({
|
|
|
15
17
|
const [findOptions, onFindOptionsChange] = useObservable('findOptions', props.findOptions, {});
|
|
16
18
|
const currentOrder = Object.keys(findOptions.order || {})[0];
|
|
17
19
|
const currentOrderDirection = Object.values(findOptions.order || {})[0];
|
|
18
|
-
return (createComponent(
|
|
20
|
+
return (createComponent(ToggleButton, { title: "Change order", pressed: currentOrder === props.field, size: "small", value: props.field, onclick: (ev) => {
|
|
19
21
|
ev.stopPropagation();
|
|
20
22
|
let newDirection = 'ASC';
|
|
21
23
|
const newOrder = {};
|
|
@@ -28,146 +30,78 @@ export const OrderButton = Shade({
|
|
|
28
30
|
order: newOrder,
|
|
29
31
|
});
|
|
30
32
|
} }, (currentOrder === props.field &&
|
|
31
|
-
(currentOrderDirection === 'ASC' ? (createComponent(Icon, { icon: arrowDown, size:
|
|
33
|
+
(currentOrderDirection === 'ASC' ? (createComponent(Icon, { icon: arrowDown, size: 14 })) : (createComponent(Icon, { icon: arrowUp, size: 14 })))) || createComponent(Icon, { icon: arrowUpDown, size: 14 })));
|
|
32
34
|
},
|
|
33
35
|
});
|
|
34
|
-
const
|
|
35
|
-
shadowDomName: 'data-grid-
|
|
36
|
+
const FilterButton = Shade({
|
|
37
|
+
shadowDomName: 'data-grid-filter-button',
|
|
36
38
|
css: {
|
|
37
39
|
display: 'inline-block',
|
|
38
40
|
},
|
|
39
41
|
render: ({ props, useObservable }) => {
|
|
40
|
-
const [findOptions] = useObservable('currentValue', props.findOptions
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
const filterValue = findOptions.filter?.[props.fieldName]?.$regex || '';
|
|
46
|
-
return (createComponent(Button, { type: "button", title: "Filter", variant: "outlined", color: filterValue ? 'info' : undefined, onclick: props.onclick },
|
|
47
|
-
createComponent(Icon, { icon: searchIcon, size: 16 })));
|
|
48
|
-
},
|
|
49
|
-
});
|
|
50
|
-
const SearchForm = Shade({
|
|
51
|
-
shadowDomName: 'data-grid-search-form',
|
|
52
|
-
css: {
|
|
53
|
-
display: 'block',
|
|
54
|
-
'& .search-form': {
|
|
55
|
-
display: 'flex',
|
|
56
|
-
width: '100%',
|
|
57
|
-
overflow: 'hidden',
|
|
58
|
-
height: '0px',
|
|
59
|
-
justifyContent: 'space-around',
|
|
60
|
-
opacity: '0',
|
|
61
|
-
},
|
|
62
|
-
'& .search-form-actions': {
|
|
63
|
-
display: 'flex',
|
|
64
|
-
width: '64px',
|
|
65
|
-
alignItems: 'center',
|
|
66
|
-
justifyContent: 'center',
|
|
67
|
-
gap: '8px',
|
|
68
|
-
},
|
|
69
|
-
},
|
|
70
|
-
render: ({ props, useObservable }) => {
|
|
71
|
-
const [findOptions] = useObservable('currentValue', props.findOptions, {
|
|
72
|
-
filter: (newValue, lastValue) => {
|
|
73
|
-
const newFilter = newValue.filter?.[props.fieldName];
|
|
74
|
-
const lastFilter = lastValue.filter?.[props.fieldName];
|
|
75
|
-
return newFilter?.$regex !== lastFilter?.$regex;
|
|
76
|
-
},
|
|
77
|
-
});
|
|
78
|
-
const currentValue = findOptions.filter?.[props.fieldName]?.$regex || '';
|
|
79
|
-
return (createComponent(Form, { className: "search-form", validate: (data) => typeof data.searchValue?.length === 'number', onSubmit: ({ searchValue }) => {
|
|
80
|
-
props.onSubmit(searchValue);
|
|
42
|
+
const [findOptions] = useObservable('currentValue', props.findOptions);
|
|
43
|
+
const hasActiveFilter = !!findOptions.filter?.[props.field];
|
|
44
|
+
return (createComponent(ToggleButton, { type: "button", title: "Filter", size: "small", value: props.field, pressed: hasActiveFilter, onclick: (ev) => {
|
|
45
|
+
ev.stopPropagation();
|
|
46
|
+
props.onclick();
|
|
81
47
|
} },
|
|
82
|
-
createComponent(
|
|
83
|
-
style: { padding: '0px 2em' },
|
|
84
|
-
} }),
|
|
85
|
-
createComponent("div", { className: "search-form-actions" },
|
|
86
|
-
createComponent(Button, { type: "reset", variant: "outlined", onclick: (ev) => {
|
|
87
|
-
ev.preventDefault();
|
|
88
|
-
ev.stopPropagation();
|
|
89
|
-
props.onClear();
|
|
90
|
-
} },
|
|
91
|
-
createComponent(Icon, { icon: closeIcon, size: 16 })),
|
|
92
|
-
createComponent(Button, { variant: "outlined", type: "submit" },
|
|
93
|
-
createComponent(Icon, { icon: searchIcon, size: 16 })))));
|
|
48
|
+
createComponent(Icon, { icon: filterIcon, size: 14 })));
|
|
94
49
|
},
|
|
95
50
|
});
|
|
51
|
+
const renderFilterComponent = (filterConfig, field, findOptions, onClose) => {
|
|
52
|
+
switch (filterConfig.type) {
|
|
53
|
+
case 'number':
|
|
54
|
+
return createComponent(NumberFilter, { field: field, findOptions: findOptions, onClose: onClose });
|
|
55
|
+
case 'boolean':
|
|
56
|
+
return createComponent(BooleanFilter, { field: field, findOptions: findOptions, onClose: onClose });
|
|
57
|
+
case 'enum':
|
|
58
|
+
return createComponent(EnumFilter, { field: field, values: filterConfig.values, findOptions: findOptions, onClose: onClose });
|
|
59
|
+
case 'date':
|
|
60
|
+
return createComponent(DateFilter, { field: field, findOptions: findOptions, onClose: onClose });
|
|
61
|
+
case 'string':
|
|
62
|
+
return createComponent(StringFilter, { field: field, findOptions: findOptions, onClose: onClose });
|
|
63
|
+
default: {
|
|
64
|
+
const _exhaustive = filterConfig;
|
|
65
|
+
throw new Error(`Unknown filter type: ${_exhaustive.type}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
};
|
|
96
69
|
export const DataGridHeader = Shade({
|
|
97
70
|
shadowDomName: 'data-grid-header',
|
|
98
71
|
css: {
|
|
99
72
|
display: 'block',
|
|
73
|
+
position: 'relative',
|
|
100
74
|
'& .header-content': {
|
|
101
75
|
display: 'flex',
|
|
102
76
|
width: '100%',
|
|
103
|
-
height: '
|
|
77
|
+
height: '36px',
|
|
104
78
|
justifyContent: 'space-between',
|
|
105
79
|
alignItems: 'center',
|
|
106
|
-
gap: '
|
|
80
|
+
gap: '8px',
|
|
107
81
|
overflow: 'hidden',
|
|
108
82
|
},
|
|
109
83
|
'& .header-field-name': {
|
|
110
|
-
|
|
84
|
+
overflow: 'hidden',
|
|
85
|
+
textOverflow: 'ellipsis',
|
|
86
|
+
whiteSpace: 'nowrap',
|
|
111
87
|
},
|
|
112
88
|
'& .header-controls': {
|
|
113
89
|
display: 'flex',
|
|
114
|
-
justifyContent: 'center',
|
|
115
90
|
alignItems: 'center',
|
|
116
|
-
gap: '
|
|
91
|
+
gap: '2px',
|
|
92
|
+
flexShrink: '0',
|
|
117
93
|
},
|
|
118
94
|
},
|
|
119
|
-
render: ({ props,
|
|
120
|
-
const
|
|
121
|
-
const
|
|
122
|
-
const [, setIsSearchOpened] = useState('isSearchOpened', false);
|
|
123
|
-
const openSearch = () => {
|
|
124
|
-
setIsSearchOpened(true);
|
|
125
|
-
const searchForm = searchFormRef.current?.querySelector('.search-form');
|
|
126
|
-
const headerContent = headerContentRef.current;
|
|
127
|
-
if (!searchForm || !headerContent)
|
|
128
|
-
return;
|
|
129
|
-
searchForm.style.display = 'flex';
|
|
130
|
-
void expand(searchForm).then(async () => {
|
|
131
|
-
await sleepAsync(100);
|
|
132
|
-
searchForm.querySelector('input')?.focus();
|
|
133
|
-
});
|
|
134
|
-
void collapse(headerContent);
|
|
135
|
-
};
|
|
136
|
-
const closeSearch = () => {
|
|
137
|
-
setIsSearchOpened(false);
|
|
138
|
-
const searchForm = searchFormRef.current?.querySelector('.search-form');
|
|
139
|
-
const headerContent = headerContentRef.current;
|
|
140
|
-
if (!searchForm || !headerContent)
|
|
141
|
-
return;
|
|
142
|
-
void collapse(searchForm);
|
|
143
|
-
void expand(headerContent);
|
|
144
|
-
};
|
|
145
|
-
const [findOptions, setFindOptions] = useObservable('findOptions', props.findOptions);
|
|
146
|
-
const updateSearchValue = (value) => {
|
|
147
|
-
if (value) {
|
|
148
|
-
const newSettings = {
|
|
149
|
-
...findOptions,
|
|
150
|
-
filter: {
|
|
151
|
-
...findOptions.filter,
|
|
152
|
-
[props.field]: { $regex: value },
|
|
153
|
-
},
|
|
154
|
-
};
|
|
155
|
-
setFindOptions(newSettings);
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
const { [props.field]: _, ...newFilter } = findOptions.filter || {};
|
|
159
|
-
setFindOptions({ ...findOptions, filter: newFilter });
|
|
160
|
-
}
|
|
161
|
-
closeSearch();
|
|
162
|
-
};
|
|
95
|
+
render: ({ props, useState }) => {
|
|
96
|
+
const [isFilterOpen, setIsFilterOpen] = useState('isFilterOpen', false);
|
|
97
|
+
const closeFilter = () => setIsFilterOpen(false);
|
|
163
98
|
return (createComponent(createComponent, null,
|
|
164
|
-
createComponent("div", {
|
|
165
|
-
createComponent(SearchForm, { onSubmit: updateSearchValue, onClear: updateSearchValue, fieldName: props.field, findOptions: props.findOptions })),
|
|
166
|
-
createComponent("div", { ref: headerContentRef, className: "header-content" },
|
|
99
|
+
createComponent("div", { className: "header-content" },
|
|
167
100
|
createComponent("div", { className: "header-field-name" }, props.field),
|
|
168
101
|
createComponent("div", { className: "header-controls" },
|
|
169
|
-
createComponent(
|
|
170
|
-
createComponent(OrderButton, { field: props.field, findOptions: props.findOptions })))
|
|
102
|
+
props.filterConfig && (createComponent(FilterButton, { onclick: () => setIsFilterOpen(!isFilterOpen), findOptions: props.findOptions, field: props.field })),
|
|
103
|
+
createComponent(OrderButton, { field: props.field, findOptions: props.findOptions }))),
|
|
104
|
+
isFilterOpen && props.filterConfig && (createComponent(FilterDropdown, { onClose: closeFilter }, renderFilterComponent(props.filterConfig, props.field, props.findOptions, closeFilter)))));
|
|
171
105
|
},
|
|
172
106
|
});
|
|
173
107
|
//# sourceMappingURL=header.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.js","sourceRoot":"","sources":["../../../src/components/data-grid/header.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAE1D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"header.js","sourceRoot":"","sources":["../../../src/components/data-grid/header.tsx"],"names":[],"mappings":"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"}
|