@snack-uikit/toolbar 0.12.2 → 0.12.3-preview-a879b9ed.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/README.md +0 -12
- package/dist/cjs/components/Toolbar/Toolbar.d.ts +2 -1
- package/dist/cjs/components/Toolbar/Toolbar.js +5 -3
- package/dist/cjs/components/Toolbar/hooks.d.ts +2 -1
- package/dist/cjs/components/Toolbar/hooks.js +3 -2
- package/dist/esm/components/Toolbar/Toolbar.d.ts +2 -1
- package/dist/esm/components/Toolbar/Toolbar.js +5 -2
- package/dist/esm/components/Toolbar/hooks.d.ts +2 -1
- package/dist/esm/components/Toolbar/hooks.js +2 -2
- package/package.json +2 -2
- package/src/components/Toolbar/Toolbar.tsx +6 -1
- package/src/components/Toolbar/hooks.ts +3 -1
package/README.md
CHANGED
|
@@ -13,18 +13,6 @@ Toolbar
|
|
|
13
13
|
### Props
|
|
14
14
|
| name | type | default value | description |
|
|
15
15
|
|------|------|---------------|-------------|
|
|
16
|
-
| search | `{ value: string; onChange(value: string): void; onSubmit?(value: string): void; placeholder?: string; loading?: boolean; }` | - | Параметры отвечают за строку поиска <br> <strong>value</strong>: Значение строки поиска <br> <strong>onChange</strong>: Колбэк смены значения <br> <strong>onSubmit</strong>: Колбэк на подтверждение поиска по строке <strong>placeholder</strong>: Плейсхолдер <br> <strong>loading</strong>: Состояние загрузки <br> |
|
|
17
|
-
| className | `string` | - | Класснейм |
|
|
18
|
-
| outline | `boolean` | - | Внешний бордер |
|
|
19
|
-
| onCheck | `() => void` | - | Колбек смены значения чекбокса |
|
|
20
|
-
| checked | `boolean` | - | Значение чекбокса |
|
|
21
|
-
| indeterminate | `boolean` | - | Состояние частичного выбора |
|
|
22
|
-
| selectionMode | enum SelectionMode: `"single"`, `"multiple"` | 'multiple' | Режим выбора |
|
|
23
|
-
| bulkActions | `BulkAction[]` | - | Список массовых действий |
|
|
24
|
-
| onRefresh | `() => void` | - | Колбек обновления |
|
|
25
|
-
| after | `ReactNode` | - | Дополнительный слот в конце тулбара |
|
|
26
|
-
| moreActions | `Action[]` | - | Элементы выпадающего списка кнопки с действиями |
|
|
27
|
-
| filterRow | `FilterRow<TState>` | - | |
|
|
28
16
|
|
|
29
17
|
|
|
30
18
|
[//]: DOCUMENTATION_SECTION_END
|
|
@@ -3,5 +3,6 @@ import { WithSupportProps } from '@snack-uikit/utils';
|
|
|
3
3
|
import { CheckedToolbarProps, DefaultToolbarProps, FilterRow } from './types';
|
|
4
4
|
export type ToolbarProps<TState extends FiltersState = Record<string, unknown>> = WithSupportProps<DefaultToolbarProps | CheckedToolbarProps> & {
|
|
5
5
|
filterRow?: FilterRow<TState>;
|
|
6
|
+
filtersDefaultOpen?: boolean;
|
|
6
7
|
};
|
|
7
|
-
export declare function Toolbar<TState extends FiltersState = Record<string, unknown>>({ className, after, outline, moreActions, onRefresh, search, filterRow: filterRowProps, ...rest }: ToolbarProps<TState>): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare function Toolbar<TState extends FiltersState = Record<string, unknown>>({ className, after, outline, moreActions, onRefresh, search, filterRow: filterRowProps, filtersDefaultOpen, ...rest }: ToolbarProps<TState>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -38,9 +38,10 @@ function Toolbar(_a) {
|
|
|
38
38
|
moreActions,
|
|
39
39
|
onRefresh,
|
|
40
40
|
search,
|
|
41
|
-
filterRow: filterRowProps
|
|
41
|
+
filterRow: filterRowProps,
|
|
42
|
+
filtersDefaultOpen
|
|
42
43
|
} = _a,
|
|
43
|
-
rest = __rest(_a, ["className", "after", "outline", "moreActions", "onRefresh", "search", "filterRow"]);
|
|
44
|
+
rest = __rest(_a, ["className", "after", "outline", "moreActions", "onRefresh", "search", "filterRow", "filtersDefaultOpen"]);
|
|
44
45
|
const needsBulkActions = (0, helpers_1.isBulkActionsProps)(rest);
|
|
45
46
|
const hasLeftSideElements = Boolean(needsBulkActions || onRefresh);
|
|
46
47
|
const resizingContainerRef = (0, react_1.useRef)(null);
|
|
@@ -48,7 +49,8 @@ function Toolbar(_a) {
|
|
|
48
49
|
filterButton,
|
|
49
50
|
filterRow
|
|
50
51
|
} = (0, hooks_1.useFilters)({
|
|
51
|
-
filterRow: filterRowProps
|
|
52
|
+
filterRow: filterRowProps,
|
|
53
|
+
defaultOpen: filtersDefaultOpen
|
|
52
54
|
});
|
|
53
55
|
return (0, jsx_runtime_1.jsxs)("div", Object.assign({
|
|
54
56
|
className: styles_module_scss_1.default.containerWrapper
|
|
@@ -3,10 +3,11 @@ import { FilterButtonProps } from '../../helperComponents';
|
|
|
3
3
|
import { FilterRow } from './types';
|
|
4
4
|
type UseFiltersProps<TState extends FiltersState> = {
|
|
5
5
|
filterRow?: FilterRow<TState>;
|
|
6
|
+
defaultOpen?: boolean;
|
|
6
7
|
};
|
|
7
8
|
type UseFiltersReturnType<TState extends FiltersState> = {
|
|
8
9
|
filterButton?: FilterButtonProps;
|
|
9
10
|
filterRow?: FilterRow<TState>;
|
|
10
11
|
};
|
|
11
|
-
export declare function useFilters<TState extends FiltersState>({ filterRow, }: UseFiltersProps<TState>): UseFiltersReturnType<TState>;
|
|
12
|
+
export declare function useFilters<TState extends FiltersState>({ filterRow, defaultOpen, }: UseFiltersProps<TState>): UseFiltersReturnType<TState>;
|
|
12
13
|
export {};
|
|
@@ -16,10 +16,11 @@ const chips_1 = require("@snack-uikit/chips");
|
|
|
16
16
|
const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
|
|
17
17
|
function useFilters(_ref) {
|
|
18
18
|
let {
|
|
19
|
-
filterRow
|
|
19
|
+
filterRow,
|
|
20
|
+
defaultOpen = false
|
|
20
21
|
} = _ref;
|
|
21
22
|
var _a;
|
|
22
|
-
const [filtersOpen, setFiltersOpen] = (0, uncontrollable_1.useUncontrolledProp)(filterRow === null || filterRow === void 0 ? void 0 : filterRow.open,
|
|
23
|
+
const [filtersOpen, setFiltersOpen] = (0, uncontrollable_1.useUncontrolledProp)(filterRow === null || filterRow === void 0 ? void 0 : filterRow.open, defaultOpen, newValue => {
|
|
23
24
|
var _a;
|
|
24
25
|
const result = typeof newValue === 'function' ? newValue(filtersOpen) : newValue;
|
|
25
26
|
(_a = filterRow === null || filterRow === void 0 ? void 0 : filterRow.onOpenChange) === null || _a === void 0 ? void 0 : _a.call(filterRow, result);
|
|
@@ -3,5 +3,6 @@ import { WithSupportProps } from '@snack-uikit/utils';
|
|
|
3
3
|
import { CheckedToolbarProps, DefaultToolbarProps, FilterRow } from './types';
|
|
4
4
|
export type ToolbarProps<TState extends FiltersState = Record<string, unknown>> = WithSupportProps<DefaultToolbarProps | CheckedToolbarProps> & {
|
|
5
5
|
filterRow?: FilterRow<TState>;
|
|
6
|
+
filtersDefaultOpen?: boolean;
|
|
6
7
|
};
|
|
7
|
-
export declare function Toolbar<TState extends FiltersState = Record<string, unknown>>({ className, after, outline, moreActions, onRefresh, search, filterRow: filterRowProps, ...rest }: ToolbarProps<TState>): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare function Toolbar<TState extends FiltersState = Record<string, unknown>>({ className, after, outline, moreActions, onRefresh, search, filterRow: filterRowProps, filtersDefaultOpen, ...rest }: ToolbarProps<TState>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -23,10 +23,13 @@ import { extractBulkActionsProps, isBulkActionsProps } from './helpers';
|
|
|
23
23
|
import { useFilters } from './hooks';
|
|
24
24
|
import styles from './styles.module.css';
|
|
25
25
|
export function Toolbar(_a) {
|
|
26
|
-
var { className, after, outline, moreActions, onRefresh, search, filterRow: filterRowProps } = _a, rest = __rest(_a, ["className", "after", "outline", "moreActions", "onRefresh", "search", "filterRow"]);
|
|
26
|
+
var { className, after, outline, moreActions, onRefresh, search, filterRow: filterRowProps, filtersDefaultOpen } = _a, rest = __rest(_a, ["className", "after", "outline", "moreActions", "onRefresh", "search", "filterRow", "filtersDefaultOpen"]);
|
|
27
27
|
const needsBulkActions = isBulkActionsProps(rest);
|
|
28
28
|
const hasLeftSideElements = Boolean(needsBulkActions || onRefresh);
|
|
29
29
|
const resizingContainerRef = useRef(null);
|
|
30
|
-
const { filterButton, filterRow } = useFilters({
|
|
30
|
+
const { filterButton, filterRow } = useFilters({
|
|
31
|
+
filterRow: filterRowProps,
|
|
32
|
+
defaultOpen: filtersDefaultOpen,
|
|
33
|
+
});
|
|
31
34
|
return (_jsxs("div", Object.assign({ className: styles.containerWrapper }, extractSupportProps(rest), { children: [_jsxs("div", { className: cn(styles.container, className), "data-outline": outline || undefined, ref: resizingContainerRef, children: [hasLeftSideElements && (_jsxs("div", { className: styles.beforeSearch, children: [needsBulkActions && (_jsxs(_Fragment, { children: [_jsx(BulkActions, Object.assign({}, extractBulkActionsProps(rest), { resizingContainerRef: resizingContainerRef })), _jsx(Separator, {})] })), onRefresh && (_jsxs(_Fragment, { children: [_jsx(ButtonFunction, { icon: _jsx(UpdateSVG, {}), size: 'm', className: styles.updateButton, onClick: onRefresh, "data-test-id": TEST_IDS.refreshButton }), _jsx(Separator, {})] }))] })), search && _jsx(SearchPrivate, Object.assign({}, search, { className: styles.search, size: 'm', "data-test-id": TEST_IDS.search })), (moreActions || after || filterButton) && (_jsxs("div", { className: styles.flexRow, "data-align-right": (!search && !hasLeftSideElements) || undefined, children: [after && (_jsxs(_Fragment, { children: [(search || hasLeftSideElements) && _jsx(Separator, {}), _jsx("div", { "data-test-id": TEST_IDS.after, className: styles.actions, children: after })] })), (moreActions || filterButton) && _jsx(Separator, {}), filterButton && _jsx(FilterButton, Object.assign({}, filterButton)), moreActions && _jsx(MoreActions, { moreActions: moreActions })] }))] }), filterRow && _jsx(ChipChoiceRow, Object.assign({}, filterRow, { size: 'xs', "data-test-id": TEST_IDS.filterRow }))] })));
|
|
32
35
|
}
|
|
@@ -3,10 +3,11 @@ import { FilterButtonProps } from '../../helperComponents';
|
|
|
3
3
|
import { FilterRow } from './types';
|
|
4
4
|
type UseFiltersProps<TState extends FiltersState> = {
|
|
5
5
|
filterRow?: FilterRow<TState>;
|
|
6
|
+
defaultOpen?: boolean;
|
|
6
7
|
};
|
|
7
8
|
type UseFiltersReturnType<TState extends FiltersState> = {
|
|
8
9
|
filterButton?: FilterButtonProps;
|
|
9
10
|
filterRow?: FilterRow<TState>;
|
|
10
11
|
};
|
|
11
|
-
export declare function useFilters<TState extends FiltersState>({ filterRow, }: UseFiltersProps<TState>): UseFiltersReturnType<TState>;
|
|
12
|
+
export declare function useFilters<TState extends FiltersState>({ filterRow, defaultOpen, }: UseFiltersProps<TState>): UseFiltersReturnType<TState>;
|
|
12
13
|
export {};
|
|
@@ -3,9 +3,9 @@ import { useMemo } from 'react';
|
|
|
3
3
|
import { useUncontrolledProp } from 'uncontrollable';
|
|
4
4
|
import { hasFilterBeenApplied } from '@snack-uikit/chips';
|
|
5
5
|
import styles from './styles.module.css';
|
|
6
|
-
export function useFilters({ filterRow, }) {
|
|
6
|
+
export function useFilters({ filterRow, defaultOpen = false, }) {
|
|
7
7
|
var _a;
|
|
8
|
-
const [filtersOpen, setFiltersOpen] = useUncontrolledProp(filterRow === null || filterRow === void 0 ? void 0 : filterRow.open,
|
|
8
|
+
const [filtersOpen, setFiltersOpen] = useUncontrolledProp(filterRow === null || filterRow === void 0 ? void 0 : filterRow.open, defaultOpen, newValue => {
|
|
9
9
|
var _a;
|
|
10
10
|
const result = typeof newValue === 'function' ? newValue(filtersOpen) : newValue;
|
|
11
11
|
(_a = filterRow === null || filterRow === void 0 ? void 0 : filterRow.onOpenChange) === null || _a === void 0 ? void 0 : _a.call(filterRow, result);
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"title": "Toolbar",
|
|
7
|
-
"version": "0.12.
|
|
7
|
+
"version": "0.12.3-preview-a879b9ed.0",
|
|
8
8
|
"sideEffects": [
|
|
9
9
|
"*.css",
|
|
10
10
|
"*.woff",
|
|
@@ -51,5 +51,5 @@
|
|
|
51
51
|
"peerDependencies": {
|
|
52
52
|
"@snack-uikit/locale": "*"
|
|
53
53
|
},
|
|
54
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "fe6e582495064f88a840c966c0cbd3381c2482a3"
|
|
55
55
|
}
|
|
@@ -18,6 +18,7 @@ export type ToolbarProps<TState extends FiltersState = Record<string, unknown>>
|
|
|
18
18
|
DefaultToolbarProps | CheckedToolbarProps
|
|
19
19
|
> & {
|
|
20
20
|
filterRow?: FilterRow<TState>;
|
|
21
|
+
filtersDefaultOpen?: boolean;
|
|
21
22
|
};
|
|
22
23
|
|
|
23
24
|
export function Toolbar<TState extends FiltersState = Record<string, unknown>>({
|
|
@@ -28,13 +29,17 @@ export function Toolbar<TState extends FiltersState = Record<string, unknown>>({
|
|
|
28
29
|
onRefresh,
|
|
29
30
|
search,
|
|
30
31
|
filterRow: filterRowProps,
|
|
32
|
+
filtersDefaultOpen,
|
|
31
33
|
...rest
|
|
32
34
|
}: ToolbarProps<TState>) {
|
|
33
35
|
const needsBulkActions = isBulkActionsProps(rest);
|
|
34
36
|
const hasLeftSideElements = Boolean(needsBulkActions || onRefresh);
|
|
35
37
|
const resizingContainerRef = useRef<HTMLDivElement>(null);
|
|
36
38
|
|
|
37
|
-
const { filterButton, filterRow } = useFilters<TState>({
|
|
39
|
+
const { filterButton, filterRow } = useFilters<TState>({
|
|
40
|
+
filterRow: filterRowProps,
|
|
41
|
+
defaultOpen: filtersDefaultOpen,
|
|
42
|
+
});
|
|
38
43
|
|
|
39
44
|
return (
|
|
40
45
|
<div className={styles.containerWrapper} {...extractSupportProps(rest)}>
|
|
@@ -10,6 +10,7 @@ import { FilterRow } from './types';
|
|
|
10
10
|
|
|
11
11
|
type UseFiltersProps<TState extends FiltersState> = {
|
|
12
12
|
filterRow?: FilterRow<TState>;
|
|
13
|
+
defaultOpen?: boolean;
|
|
13
14
|
};
|
|
14
15
|
|
|
15
16
|
type UseFiltersReturnType<TState extends FiltersState> = {
|
|
@@ -19,8 +20,9 @@ type UseFiltersReturnType<TState extends FiltersState> = {
|
|
|
19
20
|
|
|
20
21
|
export function useFilters<TState extends FiltersState>({
|
|
21
22
|
filterRow,
|
|
23
|
+
defaultOpen = false,
|
|
22
24
|
}: UseFiltersProps<TState>): UseFiltersReturnType<TState> {
|
|
23
|
-
const [filtersOpen, setFiltersOpen] = useUncontrolledProp<boolean>(filterRow?.open,
|
|
25
|
+
const [filtersOpen, setFiltersOpen] = useUncontrolledProp<boolean>(filterRow?.open, defaultOpen, newValue => {
|
|
24
26
|
const result = typeof newValue === 'function' ? newValue(filtersOpen) : newValue;
|
|
25
27
|
filterRow?.onOpenChange?.(result);
|
|
26
28
|
});
|