@join-x5/react-data-grid-settings 1.0.0-rc
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/dist/Area/index.d.ts +11 -0
- package/dist/Area/index.es.js +140 -0
- package/dist/Area/index.es.js.map +1 -0
- package/dist/AreaItem/AreaItem.d.ts +14 -0
- package/dist/AreaItem/AreaItem.es.js +78 -0
- package/dist/AreaItem/AreaItem.es.js.map +1 -0
- package/dist/AreaItem/Content.d.ts +6 -0
- package/dist/AreaItem/Content.es.js +26 -0
- package/dist/AreaItem/Content.es.js.map +1 -0
- package/dist/AreaItem/Handle.d.ts +4 -0
- package/dist/AreaItem/Handle.es.js +20 -0
- package/dist/AreaItem/Handle.es.js.map +1 -0
- package/dist/AreaItem/ItemContent.d.ts +10 -0
- package/dist/AreaItem/ItemContent.es.js +44 -0
- package/dist/AreaItem/ItemContent.es.js.map +1 -0
- package/dist/AreaItem/Visibility.d.ts +4 -0
- package/dist/AreaItem/Visibility.es.js +29 -0
- package/dist/AreaItem/Visibility.es.js.map +1 -0
- package/dist/AreaItem/index.d.ts +7 -0
- package/dist/AreaItem/index.es.js +48 -0
- package/dist/AreaItem/index.es.js.map +1 -0
- package/dist/Columns/hook.d.ts +13 -0
- package/dist/Columns/hook.es.js +66 -0
- package/dist/Columns/hook.es.js.map +1 -0
- package/dist/Columns/index.d.ts +1 -0
- package/dist/Columns/index.es.js +61 -0
- package/dist/Columns/index.es.js.map +1 -0
- package/dist/Columns/utils.d.ts +11 -0
- package/dist/Columns/utils.es.js +72 -0
- package/dist/Columns/utils.es.js.map +1 -0
- package/dist/DataGridSettings.d.ts +2 -0
- package/dist/DataGridSettings.es.js +51 -0
- package/dist/DataGridSettings.es.js.map +1 -0
- package/dist/DataGridSettingsContext.d.ts +12 -0
- package/dist/DataGridSettingsContext.es.js +22 -0
- package/dist/DataGridSettingsContext.es.js.map +1 -0
- package/dist/Footer/LeftButtons.d.ts +1 -0
- package/dist/Footer/LeftButtons.es.js +67 -0
- package/dist/Footer/LeftButtons.es.js.map +1 -0
- package/dist/Footer/index.d.ts +1 -0
- package/dist/Footer/index.es.js +30 -0
- package/dist/Footer/index.es.js.map +1 -0
- package/dist/Search/index.d.ts +1 -0
- package/dist/Search/index.es.js +43 -0
- package/dist/Search/index.es.js.map +1 -0
- package/dist/index.cjs +15 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.es.js +7 -0
- package/dist/index.es.js.map +1 -0
- package/dist/types.d.ts +65 -0
- package/dist/types.es.js +5 -0
- package/dist/types.es.js.map +1 -0
- package/dist/utils.d.ts +7 -0
- package/dist/utils.es.js +53 -0
- package/dist/utils.es.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { jsx as l } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { useContext as p } from "react";
|
|
3
|
+
import { SortableContext as m } from "@dnd-kit/sortable";
|
|
4
|
+
import { DataGridSettingsContext as A } from "../DataGridSettingsContext.es.js";
|
|
5
|
+
import { AreaItem as h } from "./AreaItem.es.js";
|
|
6
|
+
import { ActiveItemOverlay as y } from "./AreaItem.es.js";
|
|
7
|
+
const u = ({
|
|
8
|
+
id: i,
|
|
9
|
+
item: o,
|
|
10
|
+
isSearch: t,
|
|
11
|
+
activeItem: s
|
|
12
|
+
}) => {
|
|
13
|
+
const r = {
|
|
14
|
+
id: i,
|
|
15
|
+
item: o,
|
|
16
|
+
isSearch: t,
|
|
17
|
+
isActive: !1,
|
|
18
|
+
isAbove: !1,
|
|
19
|
+
isBelow: !1
|
|
20
|
+
};
|
|
21
|
+
return s && (r.isActive = o.id === s.id, o.id === s.overId && (r.isAbove = !!s.isAbove, r.isBelow = !s.isAbove)), /* @__PURE__ */ l(h, { ...r }, o.id);
|
|
22
|
+
}, C = ({
|
|
23
|
+
itemIds: i,
|
|
24
|
+
activeItem: o
|
|
25
|
+
}) => {
|
|
26
|
+
const {
|
|
27
|
+
itemsById: t,
|
|
28
|
+
searchItems: s
|
|
29
|
+
} = p(A), r = [], n = [];
|
|
30
|
+
for (const e of i) {
|
|
31
|
+
const d = t.get(e);
|
|
32
|
+
if (!d)
|
|
33
|
+
continue;
|
|
34
|
+
const f = e === (o == null ? void 0 : o.id) ? `${e}Placeholder` : e, c = s.includes(e);
|
|
35
|
+
n.push(f), r.push(u({
|
|
36
|
+
item: d,
|
|
37
|
+
activeItem: o,
|
|
38
|
+
isSearch: c,
|
|
39
|
+
id: f
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
return /* @__PURE__ */ l(m, { items: n, children: r });
|
|
43
|
+
};
|
|
44
|
+
export {
|
|
45
|
+
y as ActiveItemOverlay,
|
|
46
|
+
C as Items
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=index.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../src/AreaItem/index.tsx"],"sourcesContent":["import {useContext} from 'react';\nimport {SortableContext} from '@dnd-kit/sortable';\n\nimport {DataGridSettingsContext} from '../DataGridSettingsContext';\n\nimport {AreaItem} from './AreaItem';\n\nimport type {ReactNode} from 'react';\nimport type {ColumnItem, ColumnItemId, DataGridSettingsActiveItem} from '../types';\n\ntype GetItem = {\n id: ColumnItemId;\n item: ColumnItem;\n activeItem: DataGridSettingsActiveItem | undefined;\n isSearch: boolean;\n};\n\nconst getItem = ({id, item, isSearch, activeItem}: GetItem) => {\n const props = {\n id,\n item,\n isSearch,\n isActive: false,\n isAbove: false,\n isBelow: false,\n };\n\n if (activeItem) {\n props.isActive = item.id === activeItem.id;\n\n if (item.id === activeItem.overId) {\n props.isAbove = !!activeItem.isAbove;\n props.isBelow = !activeItem.isAbove;\n }\n }\n\n return <AreaItem key={item.id} {...props} />;\n};\n\ntype ItemsProps = {\n itemIds: ColumnItemId[];\n activeItem?: DataGridSettingsActiveItem;\n};\n\nexport const Items: React.FC<ItemsProps> = ({itemIds, activeItem}) => {\n const {itemsById, searchItems} = useContext(DataGridSettingsContext);\n\n const child: ReactNode[] = [];\n const newItemIds: ColumnItemId[] = [];\n\n for (const itemId of itemIds) {\n const item = itemsById.get(itemId);\n if (!item) {\n continue;\n }\n\n const newId = itemId === activeItem?.id ? `${itemId}Placeholder` : itemId;\n const isSearch = searchItems.includes(itemId);\n\n newItemIds.push(newId);\n child.push(getItem({item, activeItem, isSearch, id: newId}));\n }\n\n return <SortableContext items={newItemIds}>{child}</SortableContext>;\n};\n\nexport {ActiveItemOverlay} from './AreaItem';\n"],"names":["getItem","id","item","isSearch","activeItem","props","isActive","isAbove","isBelow","overId","jsx","AreaItem","Items","itemIds","itemsById","searchItems","useContext","DataGridSettingsContext","child","newItemIds","itemId","get","newId","includes","push","SortableContext"],"mappings":";;;;;;AAiBA,MAAMA,IAAUA,CAAC;AAAA,EAACC,IAAAA;AAAAA,EAAIC,MAAAA;AAAAA,EAAMC,UAAAA;AAAAA,EAAUC,YAAAA;AAAmB,MAAM;AAC7D,QAAMC,IAAQ;AAAA,IACZJ,IAAAA;AAAAA,IACAC,MAAAA;AAAAA,IACAC,UAAAA;AAAAA,IACAG,UAAU;AAAA,IACVC,SAAS;AAAA,IACTC,SAAS;AAAA,EACX;AAEA,SAAIJ,MACIE,EAAAA,WAAWJ,EAAKD,OAAOG,EAAWH,IAEpCC,EAAKD,OAAOG,EAAWK,WACnBF,EAAAA,UAAU,CAAC,CAACH,EAAWG,SACvBC,EAAAA,UAAU,CAACJ,EAAWG,WAIxB,gBAAAG,EAAAC,GAAA,EAA2BN,GAAAA,EAAAA,GAAbH,EAAKD,EAAiB;AAC9C,GAOaW,IAA8BA,CAAC;AAAA,EAACC,SAAAA;AAAAA,EAAST,YAAAA;AAAU,MAAM;AAC9D,QAAA;AAAA,IAACU,WAAAA;AAAAA,IAAWC,aAAAA;AAAAA,EAAAA,IAAeC,EAAWC,CAAuB,GAE7DC,IAAqB,CAAE,GACvBC,IAA6B,CAAE;AAErC,aAAWC,KAAUP,GAAS;AACtBX,UAAAA,IAAOY,EAAUO,IAAID,CAAM;AACjC,QAAI,CAAClB;AACH;AAGF,UAAMoB,IAAQF,OAAWhB,KAAAA,gBAAAA,EAAYH,MAAK,GAAGmB,CAAM,gBAAgBA,GAC7DjB,IAAWY,EAAYQ,SAASH,CAAM;AAE5CD,IAAAA,EAAWK,KAAKF,CAAK,GACrBJ,EAAMM,KAAKxB,EAAQ;AAAA,MAACE,MAAAA;AAAAA,MAAME,YAAAA;AAAAA,MAAYD,UAAAA;AAAAA,MAAUF,IAAIqB;AAAAA,IAAAA,CAAM,CAAC;AAAA,EAAA;AAG7D,SAAQ,gBAAAZ,EAAAe,GAAA,EAAgB,OAAON,GAAaD,UAAMA,GAAA;AACpD;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DataGridSettingsActiveItem } from '../types';
|
|
2
|
+
export declare const useColumns: () => {
|
|
3
|
+
columns: import('../types').ColumnData[];
|
|
4
|
+
itemsById: import('../types').ItemsById;
|
|
5
|
+
searchItems: import('../types').ColumnItemId[];
|
|
6
|
+
activeItem: DataGridSettingsActiveItem | undefined;
|
|
7
|
+
sensors: import('@dnd-kit/core').SensorDescriptor<import('@dnd-kit/core').SensorOptions>[];
|
|
8
|
+
onDragStart: (event: import('@dnd-kit/core').DragStartEvent) => void;
|
|
9
|
+
onDragMove: (event: import('@dnd-kit/core').DragMoveEvent) => void;
|
|
10
|
+
onDragEnd: (event: import('@dnd-kit/core').DragEndEvent) => void;
|
|
11
|
+
onDragCancel: () => void;
|
|
12
|
+
collisionDetection: import('@dnd-kit/core').CollisionDetection;
|
|
13
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { useSensors as g, useSensor as m, MouseSensor as D, TouchSensor as l } from "@dnd-kit/core";
|
|
2
|
+
import { useContext as A, useState as C } from "react";
|
|
3
|
+
import { useUpdateEffect as b } from "@join-x5/react-theme";
|
|
4
|
+
import { DataGridSettingsContext as x } from "../DataGridSettingsContext.es.js";
|
|
5
|
+
import { collisionDetection as h, moveItem as E, moveOver as M } from "./utils.es.js";
|
|
6
|
+
const T = () => {
|
|
7
|
+
const {
|
|
8
|
+
columns: c,
|
|
9
|
+
items: r,
|
|
10
|
+
setItems: u,
|
|
11
|
+
itemsById: o,
|
|
12
|
+
searchItems: f
|
|
13
|
+
} = A(x), [e, t] = C(), a = g(m(D), m(l)), v = () => {
|
|
14
|
+
t(void 0);
|
|
15
|
+
}, I = (n) => {
|
|
16
|
+
const s = o.get(n.active.id);
|
|
17
|
+
t(s);
|
|
18
|
+
}, p = ({
|
|
19
|
+
over: n,
|
|
20
|
+
active: s
|
|
21
|
+
}) => {
|
|
22
|
+
if (!e || !n) {
|
|
23
|
+
e && e.overId !== void 0 && t({
|
|
24
|
+
...e,
|
|
25
|
+
overId: void 0,
|
|
26
|
+
isAbove: void 0
|
|
27
|
+
});
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const {
|
|
31
|
+
overId: i,
|
|
32
|
+
isAbove: d
|
|
33
|
+
} = M(o, s, n);
|
|
34
|
+
e.overId === i && e.isAbove === d || t({
|
|
35
|
+
...e,
|
|
36
|
+
overId: i,
|
|
37
|
+
isAbove: d
|
|
38
|
+
});
|
|
39
|
+
}, S = ({
|
|
40
|
+
over: n
|
|
41
|
+
}) => {
|
|
42
|
+
if (!e || !n) {
|
|
43
|
+
e && t(void 0);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
t(void 0), u(E(r, e, n));
|
|
47
|
+
};
|
|
48
|
+
return b(() => {
|
|
49
|
+
t(void 0);
|
|
50
|
+
}, [r]), {
|
|
51
|
+
columns: c,
|
|
52
|
+
itemsById: o,
|
|
53
|
+
searchItems: f,
|
|
54
|
+
activeItem: e,
|
|
55
|
+
sensors: a,
|
|
56
|
+
onDragStart: I,
|
|
57
|
+
onDragMove: p,
|
|
58
|
+
onDragEnd: S,
|
|
59
|
+
onDragCancel: v,
|
|
60
|
+
collisionDetection: h
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
export {
|
|
64
|
+
T as useColumns
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=hook.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook.es.js","sources":["../../src/Columns/hook.ts"],"sourcesContent":["import {MouseSensor, TouchSensor, useSensor, useSensors} from '@dnd-kit/core';\n\nimport {useContext, useState} from 'react';\n\nimport {useUpdateEffect} from '@join-x5/react-theme';\n\nimport {DataGridSettingsContext} from '../DataGridSettingsContext';\n\nimport {moveItem, moveOver, collisionDetection} from './utils';\n\nimport type {DndContextProps} from '@dnd-kit/core';\nimport type {DataGridSettingsActiveItem} from '../types';\n\nexport const useColumns = () => {\n const {columns, items, setItems, itemsById, searchItems} = useContext(DataGridSettingsContext);\n const [activeItem, setActiveItem] = useState<DataGridSettingsActiveItem>();\n const sensors = useSensors(useSensor(MouseSensor), useSensor(TouchSensor));\n\n const onDragCancel = () => {\n setActiveItem(undefined);\n };\n\n const onDragStart: DndContextProps['onDragStart'] = args => {\n const newActiveItem = itemsById.get(args.active.id);\n setActiveItem(newActiveItem);\n };\n\n const onDragMove: DndContextProps['onDragMove'] = ({over, active}) => {\n if (!activeItem || !over) {\n if (activeItem && activeItem.overId !== undefined) {\n setActiveItem({...activeItem, overId: undefined, isAbove: undefined});\n }\n\n return;\n }\n\n const {overId, isAbove} = moveOver(itemsById, active, over);\n\n if (activeItem.overId === overId && activeItem.isAbove === isAbove) {\n return;\n }\n\n setActiveItem({...activeItem, overId, isAbove});\n };\n\n const onDragEnd: DndContextProps['onDragEnd'] = ({over}) => {\n if (!activeItem || !over) {\n if (activeItem) {\n setActiveItem(undefined);\n }\n\n return;\n }\n\n setActiveItem(undefined);\n setItems(moveItem(items, activeItem, over));\n };\n\n useUpdateEffect(() => {\n setActiveItem(undefined);\n }, [items]);\n\n return {\n columns,\n itemsById,\n searchItems,\n activeItem,\n sensors,\n onDragStart,\n onDragMove,\n onDragEnd,\n onDragCancel,\n collisionDetection,\n };\n};\n"],"names":["useColumns","columns","items","setItems","itemsById","searchItems","useContext","DataGridSettingsContext","activeItem","setActiveItem","useState","sensors","useSensors","useSensor","MouseSensor","TouchSensor","onDragCancel","undefined","onDragStart","args","newActiveItem","get","active","id","onDragMove","over","overId","isAbove","moveOver","onDragEnd","moveItem","useUpdateEffect","collisionDetection"],"mappings":";;;;;AAaO,MAAMA,IAAaA,MAAM;AACxB,QAAA;AAAA,IAACC,SAAAA;AAAAA,IAASC,OAAAA;AAAAA,IAAOC,UAAAA;AAAAA,IAAUC,WAAAA;AAAAA,IAAWC,aAAAA;AAAAA,EAAAA,IAAeC,EAAWC,CAAuB,GACvF,CAACC,GAAYC,CAAa,IAAIC,EAAqC,GACnEC,IAAUC,EAAWC,EAAUC,CAAW,GAAGD,EAAUE,CAAW,CAAC,GAEnEC,IAAeA,MAAM;AACzBP,IAAAA,EAAcQ,MAAS;AAAA,EACzB,GAEMC,IAA8CC,CAAQA,MAAA;AAC1D,UAAMC,IAAgBhB,EAAUiB,IAAIF,EAAKG,OAAOC,EAAE;AAClDd,IAAAA,EAAcW,CAAa;AAAA,EAC7B,GAEMI,IAA4CA,CAAC;AAAA,IAACC,MAAAA;AAAAA,IAAMH,QAAAA;AAAAA,EAAAA,MAAY;AAChE,QAAA,CAACd,KAAc,CAACiB,GAAM;AACpBjB,MAAAA,KAAcA,EAAWkB,WAAWT,UACxBR,EAAA;AAAA,QAAC,GAAGD;AAAAA,QAAYkB,QAAQT;AAAAA,QAAWU,SAASV;AAAAA,MAAAA,CAAU;AAGtE;AAAA,IAAA;AAGI,UAAA;AAAA,MAACS,QAAAA;AAAAA,MAAQC,SAAAA;AAAAA,IAAWC,IAAAA,EAASxB,GAAWkB,GAAQG,CAAI;AAE1D,IAAIjB,EAAWkB,WAAWA,KAAUlB,EAAWmB,YAAYA,KAI7ClB,EAAA;AAAA,MAAC,GAAGD;AAAAA,MAAYkB,QAAAA;AAAAA,MAAQC,SAAAA;AAAAA,IAAAA,CAAQ;AAAA,EAChD,GAEME,IAA0CA,CAAC;AAAA,IAACJ,MAAAA;AAAAA,EAAAA,MAAU;AACtD,QAAA,CAACjB,KAAc,CAACiB,GAAM;AACxB,MAAIjB,KACFC,EAAcQ,MAAS;AAGzB;AAAA,IAAA;AAGFR,IAAAA,EAAcQ,MAAS,GACvBd,EAAS2B,EAAS5B,GAAOM,GAAYiB,CAAI,CAAC;AAAA,EAC5C;AAEAM,SAAAA,EAAgB,MAAM;AACpBtB,IAAAA,EAAcQ,MAAS;AAAA,EAAA,GACtB,CAACf,CAAK,CAAC,GAEH;AAAA,IACLD,SAAAA;AAAAA,IACAG,WAAAA;AAAAA,IACAC,aAAAA;AAAAA,IACAG,YAAAA;AAAAA,IACAG,SAAAA;AAAAA,IACAO,aAAAA;AAAAA,IACAM,YAAAA;AAAAA,IACAK,WAAAA;AAAAA,IACAb,cAAAA;AAAAA,IACAgB,oBAAAA;AAAAA,EACF;AACF;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const Columns: React.FC;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { jsx as b, jsxs as l } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import C from "@emotion/styled/base";
|
|
3
|
+
import { DndContext as e } from "@dnd-kit/core";
|
|
4
|
+
import { ModalContent as X } from "@join-x5/react";
|
|
5
|
+
import { getArea as m } from "../Area/index.es.js";
|
|
6
|
+
import "react";
|
|
7
|
+
import "@dnd-kit/sortable";
|
|
8
|
+
import "../DataGridSettingsContext.es.js";
|
|
9
|
+
import { ActiveItemOverlay as W } from "../AreaItem/AreaItem.es.js";
|
|
10
|
+
import { Search as a } from "../Search/index.es.js";
|
|
11
|
+
import { useColumns as o } from "./hook.es.js";
|
|
12
|
+
function p() {
|
|
13
|
+
return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).";
|
|
14
|
+
}
|
|
15
|
+
const s = /* @__PURE__ */ C(X, process.env.NODE_ENV === "production" ? {
|
|
16
|
+
target: "e1epmz4z1"
|
|
17
|
+
} : {
|
|
18
|
+
target: "e1epmz4z1",
|
|
19
|
+
label: "ModalContent"
|
|
20
|
+
})(process.env.NODE_ENV === "production" ? {
|
|
21
|
+
name: "13i7c3v",
|
|
22
|
+
styles: "padding:0 24px 16px"
|
|
23
|
+
} : {
|
|
24
|
+
name: "13i7c3v",
|
|
25
|
+
styles: "padding:0 24px 16px/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3NhZHlrb3ZzZC9qb2luLXg1L3BhY2thZ2VzL2RhdGEtZ3JpZC1zZXR0aW5ncy9zcmMvQ29sdW1ucy9pbmRleC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYTZDIiwiZmlsZSI6Ii9ob21lL3NhZHlrb3ZzZC9qb2luLXg1L3BhY2thZ2VzL2RhdGEtZ3JpZC1zZXR0aW5ncy9zcmMvQ29sdW1ucy9pbmRleC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQge0RuZENvbnRleHR9IGZyb20gJ0BkbmQta2l0L2NvcmUnO1xuXG5pbXBvcnQge01vZGFsQ29udGVudCBhcyBCYXNlTW9kYWxDb250ZW50fSBmcm9tICdAam9pbi14NS9yZWFjdCc7XG5cbmltcG9ydCB7Z2V0QXJlYX0gZnJvbSAnLi4vQXJlYSc7XG5pbXBvcnQge0FjdGl2ZUl0ZW1PdmVybGF5fSBmcm9tICcuLi9BcmVhSXRlbSc7XG5pbXBvcnQge1NlYXJjaH0gZnJvbSAnLi4vU2VhcmNoJztcblxuaW1wb3J0IHt1c2VDb2x1bW5zfSBmcm9tICcuL2hvb2snO1xuXG5pbXBvcnQgdHlwZSB7UmVhY3ROb2RlfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IE1vZGFsQ29udGVudCA9IHN0eWxlZChCYXNlTW9kYWxDb250ZW50KWBcbiAgcGFkZGluZzogMCAyNHB4IDE2cHg7XG5gO1xuXG5jb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBtYXJnaW4tbGVmdDogLTMycHg7XG5cbiAgPiBkaXYge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiA0cHg7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBwYWRkaW5nLWxlZnQ6IDMycHg7XG5cbiAgICA6OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgd2lkdGg6IDA7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAxNnB4O1xuICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmNvbG9ycy5ncmV5WzEwXX07XG4gICAgfVxuXG4gICAgOmZpcnN0LW9mLXR5cGU6OmFmdGVyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgQ29sdW1uczogUmVhY3QuRkMgPSAoKSA9PiB7XG4gIGNvbnN0IHtjb2x1bW5zLCBpdGVtc0J5SWQsIHNlYXJjaEl0ZW1zLCBhY3RpdmVJdGVtLCAuLi5yZXN0fSA9IHVzZUNvbHVtbnMoKTtcblxuICBjb25zdCBjaGlsZCA9IGNvbHVtbnMubWFwKChjb2x1bW4sIGNvbHVtbkluZGV4KSA9PiB7XG4gICAgY29uc3QgYXJlYXM6IFJlYWN0Tm9kZVtdID0gQXJyYXkuZnJvbShjb2x1bW4pLm1hcCgoW2FyZWEsIGl0ZW1JZHNdKSA9PlxuICAgICAgZ2V0QXJlYSh7Y29sdW1uSW5kZXgsIGFyZWEsIGl0ZW1JZHMsIGl0ZW1zQnlJZCwgc2VhcmNoSXRlbXMsIGFjdGl2ZUl0ZW19KVxuICAgICk7XG5cbiAgICBjb25zdCB3aWR0aCA9IGBjYWxjKCR7MTAwIC8gY29sdW1ucy5sZW5ndGh9JSlgO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYga2V5PXtjb2x1bW5JbmRleH0gc3R5bGU9e3t3aWR0aH19PlxuICAgICAgICB7YXJlYXN9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDxNb2RhbENvbnRlbnQgbm9Cb3JkZXJTY3JvbGw+XG4gICAgICA8U2VhcmNoIC8+XG4gICAgICA8RG5kQ29udGV4dCBpZD1cIkRhdGFHcmlkU2V0dGluZ3NcIiB7Li4ucmVzdH0+XG4gICAgICAgIDxDb250YWluZXI+e2NoaWxkfTwvQ29udGFpbmVyPlxuICAgICAgICA8QWN0aXZlSXRlbU92ZXJsYXkgaXRlbT17YWN0aXZlSXRlbX0gLz5cbiAgICAgIDwvRG5kQ29udGV4dD5cbiAgICA8L01vZGFsQ29udGVudD5cbiAgKTtcbn07XG4iXX0= */",
|
|
26
|
+
toString: p
|
|
27
|
+
}), x = /* @__PURE__ */ C("div", process.env.NODE_ENV === "production" ? {
|
|
28
|
+
target: "e1epmz4z0"
|
|
29
|
+
} : {
|
|
30
|
+
target: "e1epmz4z0",
|
|
31
|
+
label: "Container"
|
|
32
|
+
})("display:flex;margin-left:-32px;>div{display:flex;position:relative;flex-direction:column;gap:4px;box-sizing:border-box;padding-left:32px;::after{content:'';position:absolute;width:0;height:100%;top:0;left:16px;border-left:1px solid ", (g) => g.theme.colors.grey[10], ";}:first-of-type::after{display:none;}}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3NhZHlrb3ZzZC9qb2luLXg1L3BhY2thZ2VzL2RhdGEtZ3JpZC1zZXR0aW5ncy9zcmMvQ29sdW1ucy9pbmRleC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUI0QiIsImZpbGUiOiIvaG9tZS9zYWR5a292c2Qvam9pbi14NS9wYWNrYWdlcy9kYXRhLWdyaWQtc2V0dGluZ3Mvc3JjL0NvbHVtbnMvaW5kZXgudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHtEbmRDb250ZXh0fSBmcm9tICdAZG5kLWtpdC9jb3JlJztcblxuaW1wb3J0IHtNb2RhbENvbnRlbnQgYXMgQmFzZU1vZGFsQ29udGVudH0gZnJvbSAnQGpvaW4teDUvcmVhY3QnO1xuXG5pbXBvcnQge2dldEFyZWF9IGZyb20gJy4uL0FyZWEnO1xuaW1wb3J0IHtBY3RpdmVJdGVtT3ZlcmxheX0gZnJvbSAnLi4vQXJlYUl0ZW0nO1xuaW1wb3J0IHtTZWFyY2h9IGZyb20gJy4uL1NlYXJjaCc7XG5cbmltcG9ydCB7dXNlQ29sdW1uc30gZnJvbSAnLi9ob29rJztcblxuaW1wb3J0IHR5cGUge1JlYWN0Tm9kZX0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBNb2RhbENvbnRlbnQgPSBzdHlsZWQoQmFzZU1vZGFsQ29udGVudClgXG4gIHBhZGRpbmc6IDAgMjRweCAxNnB4O1xuYDtcblxuY29uc3QgQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgbWFyZ2luLWxlZnQ6IC0zMnB4O1xuXG4gID4gZGl2IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogNHB4O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgcGFkZGluZy1sZWZ0OiAzMnB4O1xuXG4gICAgOjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHdpZHRoOiAwO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogMTZweDtcbiAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5jb2xvcnMuZ3JleVsxMF19O1xuICAgIH1cblxuICAgIDpmaXJzdC1vZi10eXBlOjphZnRlciB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IENvbHVtbnM6IFJlYWN0LkZDID0gKCkgPT4ge1xuICBjb25zdCB7Y29sdW1ucywgaXRlbXNCeUlkLCBzZWFyY2hJdGVtcywgYWN0aXZlSXRlbSwgLi4ucmVzdH0gPSB1c2VDb2x1bW5zKCk7XG5cbiAgY29uc3QgY2hpbGQgPSBjb2x1bW5zLm1hcCgoY29sdW1uLCBjb2x1bW5JbmRleCkgPT4ge1xuICAgIGNvbnN0IGFyZWFzOiBSZWFjdE5vZGVbXSA9IEFycmF5LmZyb20oY29sdW1uKS5tYXAoKFthcmVhLCBpdGVtSWRzXSkgPT5cbiAgICAgIGdldEFyZWEoe2NvbHVtbkluZGV4LCBhcmVhLCBpdGVtSWRzLCBpdGVtc0J5SWQsIHNlYXJjaEl0ZW1zLCBhY3RpdmVJdGVtfSlcbiAgICApO1xuXG4gICAgY29uc3Qgd2lkdGggPSBgY2FsYygkezEwMCAvIGNvbHVtbnMubGVuZ3RofSUpYDtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGtleT17Y29sdW1uSW5kZXh9IHN0eWxlPXt7d2lkdGh9fT5cbiAgICAgICAge2FyZWFzfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8TW9kYWxDb250ZW50IG5vQm9yZGVyU2Nyb2xsPlxuICAgICAgPFNlYXJjaCAvPlxuICAgICAgPERuZENvbnRleHQgaWQ9XCJEYXRhR3JpZFNldHRpbmdzXCIgey4uLnJlc3R9PlxuICAgICAgICA8Q29udGFpbmVyPntjaGlsZH08L0NvbnRhaW5lcj5cbiAgICAgICAgPEFjdGl2ZUl0ZW1PdmVybGF5IGl0ZW09e2FjdGl2ZUl0ZW19IC8+XG4gICAgICA8L0RuZENvbnRleHQ+XG4gICAgPC9Nb2RhbENvbnRlbnQ+XG4gICk7XG59O1xuIl19 */")), H = () => {
|
|
33
|
+
const {
|
|
34
|
+
columns: g,
|
|
35
|
+
itemsById: t,
|
|
36
|
+
activeItem: I,
|
|
37
|
+
...G
|
|
38
|
+
} = o(), Z = g.map((d, c) => {
|
|
39
|
+
const i = Array.from(d).map(([n, u]) => m({
|
|
40
|
+
columnIndex: c,
|
|
41
|
+
area: n,
|
|
42
|
+
itemIds: u,
|
|
43
|
+
itemsById: t,
|
|
44
|
+
activeItem: I
|
|
45
|
+
})), A = `calc(${100 / g.length}%)`;
|
|
46
|
+
return /* @__PURE__ */ b("div", { style: {
|
|
47
|
+
width: A
|
|
48
|
+
}, children: i }, c);
|
|
49
|
+
});
|
|
50
|
+
return /* @__PURE__ */ l(s, { noBorderScroll: !0, children: [
|
|
51
|
+
/* @__PURE__ */ b(a, {}),
|
|
52
|
+
/* @__PURE__ */ l(e, { id: "DataGridSettings", ...G, children: [
|
|
53
|
+
/* @__PURE__ */ b(x, { children: Z }),
|
|
54
|
+
/* @__PURE__ */ b(W, { item: I })
|
|
55
|
+
] })
|
|
56
|
+
] });
|
|
57
|
+
};
|
|
58
|
+
export {
|
|
59
|
+
H as Columns
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=index.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../src/Columns/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport {DndContext} from '@dnd-kit/core';\n\nimport {ModalContent as BaseModalContent} from '@join-x5/react';\n\nimport {getArea} from '../Area';\nimport {ActiveItemOverlay} from '../AreaItem';\nimport {Search} from '../Search';\n\nimport {useColumns} from './hook';\n\nimport type {ReactNode} from 'react';\n\nconst ModalContent = styled(BaseModalContent)`\n padding: 0 24px 16px;\n`;\n\nconst Container = styled.div`\n display: flex;\n margin-left: -32px;\n\n > div {\n display: flex;\n position: relative;\n flex-direction: column;\n gap: 4px;\n box-sizing: border-box;\n padding-left: 32px;\n\n ::after {\n content: '';\n position: absolute;\n width: 0;\n height: 100%;\n top: 0;\n left: 16px;\n border-left: 1px solid ${props => props.theme.colors.grey[10]};\n }\n\n :first-of-type::after {\n display: none;\n }\n }\n`;\n\nexport const Columns: React.FC = () => {\n const {columns, itemsById, searchItems, activeItem, ...rest} = useColumns();\n\n const child = columns.map((column, columnIndex) => {\n const areas: ReactNode[] = Array.from(column).map(([area, itemIds]) =>\n getArea({columnIndex, area, itemIds, itemsById, searchItems, activeItem})\n );\n\n const width = `calc(${100 / columns.length}%)`;\n\n return (\n <div key={columnIndex} style={{width}}>\n {areas}\n </div>\n );\n });\n\n return (\n <ModalContent noBorderScroll>\n <Search />\n <DndContext id=\"DataGridSettings\" {...rest}>\n <Container>{child}</Container>\n <ActiveItemOverlay item={activeItem} />\n </DndContext>\n </ModalContent>\n );\n};\n"],"names":["ModalContent","BaseModalContent","process","env","NODE_ENV","target","label","name","styles","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","Container","_styled","props","theme","colors","grey","Columns","columns","itemsById","activeItem","rest","useColumns","child","map","column","columnIndex","areas","Array","from","area","itemIds","getArea","width","length","jsx","jsxs","Search","DndContext","ActiveItemOverlay"],"mappings":";;;;;;;;;;;;;;AAaA,MAAMA,IAAsBC,gBAAAA,EAAAA,GAAgBC,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAA,QAAA;AAAA,EAAAC,OAAA;AAAA,CAAA,EAACJ,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAG,MAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAD,MAAA;AAAA,EAAAC,QAAA;AAAA,EAAAC,UAAAC;AAAA,CAE5C,GAEKC,IAAS,gBAAAC,EAAA,OAAAV,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAA,QAAA;AAAA,EAAAC,OAAA;AAAA,CAAA,EAAA,4OAmBgBO,CAASA,MAAAA,EAAMC,MAAMC,OAAOC,KAAK,EAAE,GAACd,6CAAAA,QAAAC,IAAAC,aAOlE,eAAA,KAAA,8mFAAA,GAEYa,IAAoBA,MAAM;AAC/B,QAAA;AAAA,IAACC,SAAAA;AAAAA,IAASC,WAAAA;AAAAA,IAAwBC,YAAAA;AAAAA,IAAY,GAAGC;AAAAA,MAAQC,EAAW,GAEpEC,IAAQL,EAAQM,IAAI,CAACC,GAAQC,MAAgB;AAC3CC,UAAAA,IAAqBC,MAAMC,KAAKJ,CAAM,EAAED,IAAI,CAAC,CAACM,GAAMC,CAAO,MAC/DC,EAAQ;AAAA,MAACN,aAAAA;AAAAA,MAAaI,MAAAA;AAAAA,MAAMC,SAAAA;AAAAA,MAASZ,WAAAA;AAAAA,MAAwBC,YAAAA;AAAAA,IAAAA,CAAW,CAC1E,GAEMa,IAAQ,QAAQ,MAAMf,EAAQgB,MAAM;AAGxC,WAAA,gBAAAC,EAAC,SAAsB,OAAO;AAAA,MAACF,OAAAA;AAAAA,IAAAA,GAC5BN,eADOD,CAEV;AAAA,EAAA,CAEH;AAGC,SAAA,gBAAAU,EAACpC,GAAa,EAAA,gBAAc,IAC1B,UAAA;AAAA,IAAA,gBAAAmC,EAACE,GAAM,EAAA;AAAA,IACN,gBAAAD,EAAAE,GAAA,EAAW,IAAG,oBAAuBjB,GAAAA,GACpC,UAAA;AAAA,MAAA,gBAAAc,EAACxB,KAAWY,UAAMA,EAAA,CAAA;AAAA,MAClB,gBAAAY,EAACI,GAAkB,EAAA,MAAMnB,EAAW,CAAA;AAAA,IAAA,EACtC,CAAA;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Active, CollisionDetection, Over } from '@dnd-kit/core';
|
|
2
|
+
import { ColumnItem, DataGridSettingsActiveItem, ItemsById } from '../types';
|
|
3
|
+
export declare const moveItem: (items: ColumnItem[], active: DataGridSettingsActiveItem, over: Over) => ColumnItem[];
|
|
4
|
+
export declare const moveOver: (itemsById: ItemsById, active: Active, over: Over) => {
|
|
5
|
+
overId: undefined;
|
|
6
|
+
isAbove: undefined;
|
|
7
|
+
} | {
|
|
8
|
+
overId: import('../types').ColumnItemId;
|
|
9
|
+
isAbove: boolean;
|
|
10
|
+
};
|
|
11
|
+
export declare const collisionDetection: CollisionDetection;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { rectIntersection as b } from "@dnd-kit/core";
|
|
2
|
+
import { ColumnArea as I } from "../types.es.js";
|
|
3
|
+
const v = (a, o, n) => {
|
|
4
|
+
var u, f;
|
|
5
|
+
const c = {
|
|
6
|
+
[I.Default]: 0,
|
|
7
|
+
[I.FixedLeft]: -1,
|
|
8
|
+
[I.FixedRight]: 1
|
|
9
|
+
};
|
|
10
|
+
let e = [...a].sort((t, r) => {
|
|
11
|
+
const p = t.sort + a.length * c[t.area], m = r.sort + a.length * c[r.area];
|
|
12
|
+
return p - m;
|
|
13
|
+
}).map((t, r) => ({
|
|
14
|
+
...t,
|
|
15
|
+
sort: r
|
|
16
|
+
}));
|
|
17
|
+
const s = e.find((t) => t.id === n.id);
|
|
18
|
+
if (!s) {
|
|
19
|
+
const t = (f = (u = n.data) == null ? void 0 : u.current) == null ? void 0 : f.area;
|
|
20
|
+
return t && (e = e.map((r) => r.id === o.id ? {
|
|
21
|
+
...r,
|
|
22
|
+
area: t
|
|
23
|
+
} : r)), e;
|
|
24
|
+
}
|
|
25
|
+
const i = s.sort + (o.isAbove ? 0 : 1), [d, l] = e.reduce((t, r) => (t[+r.isLocked].push(r), t), [[], []]);
|
|
26
|
+
e = d.map((t) => t.id === o.id ? {
|
|
27
|
+
...t,
|
|
28
|
+
sort: i,
|
|
29
|
+
area: s.area
|
|
30
|
+
} : t.sort >= i ? {
|
|
31
|
+
...t,
|
|
32
|
+
sort: t.sort + 1
|
|
33
|
+
} : t), e.sort((t, r) => t.sort - r.sort);
|
|
34
|
+
for (const t of l)
|
|
35
|
+
e.splice(t.sort, 0, t);
|
|
36
|
+
return e.map((t, r) => ({
|
|
37
|
+
...t,
|
|
38
|
+
sort: r
|
|
39
|
+
}));
|
|
40
|
+
}, x = (a, o, n) => {
|
|
41
|
+
var d, l, u, f, t, r, p;
|
|
42
|
+
const c = a.get(n.id);
|
|
43
|
+
if (!c)
|
|
44
|
+
return {
|
|
45
|
+
overId: void 0,
|
|
46
|
+
isAbove: void 0
|
|
47
|
+
};
|
|
48
|
+
const e = ((u = (l = (d = n.data) == null ? void 0 : d.current) == null ? void 0 : l.sortable) == null ? void 0 : u.index) === 0, s = (r = (t = (f = o.rect) == null ? void 0 : f.current) == null ? void 0 : t.translated) == null ? void 0 : r.top, i = e && !!s && s < ((p = n.rect) == null ? void 0 : p.top);
|
|
49
|
+
return {
|
|
50
|
+
overId: c.id,
|
|
51
|
+
isAbove: i
|
|
52
|
+
};
|
|
53
|
+
}, A = (a) => {
|
|
54
|
+
const o = b(a);
|
|
55
|
+
if (o.length === 2)
|
|
56
|
+
try {
|
|
57
|
+
const n = o.filter((c) => {
|
|
58
|
+
var e, s, i, d;
|
|
59
|
+
return !!((d = (i = (s = (e = c.data) == null ? void 0 : e.droppableContainer) == null ? void 0 : s.data) == null ? void 0 : i.current) != null && d.sortable);
|
|
60
|
+
});
|
|
61
|
+
if (n.length === 1)
|
|
62
|
+
return n;
|
|
63
|
+
} catch {
|
|
64
|
+
}
|
|
65
|
+
return o;
|
|
66
|
+
};
|
|
67
|
+
export {
|
|
68
|
+
A as collisionDetection,
|
|
69
|
+
v as moveItem,
|
|
70
|
+
x as moveOver
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=utils.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.es.js","sources":["../../src/Columns/utils.ts"],"sourcesContent":["import {rectIntersection} from '@dnd-kit/core';\n\nimport {ColumnArea} from '../types';\n\nimport type {Active, CollisionDetection, Over} from '@dnd-kit/core';\nimport type {ColumnItem, DataGridSettingsActiveItem, ItemsById} from '../types';\n\nexport const moveItem = (items: ColumnItem[], active: DataGridSettingsActiveItem, over: Over): ColumnItem[] => {\n const areaFactor = {\n [ColumnArea.Default]: 0,\n [ColumnArea.FixedLeft]: -1,\n [ColumnArea.FixedRight]: 1,\n };\n\n let newItems = [...items]\n .sort((a, b) => {\n const aSort = a.sort + items.length * areaFactor[a.area];\n const bSort = b.sort + items.length * areaFactor[b.area];\n\n return aSort - bSort;\n })\n .map((item, sort) => ({...item, sort}));\n\n const overItem = newItems.find(item => item.id === over.id);\n\n if (!overItem) {\n const newArea: ColumnArea | undefined = over.data?.current?.area;\n if (newArea) {\n newItems = newItems.map(item => (item.id === active.id ? {...item, area: newArea} : item));\n }\n\n return newItems;\n }\n\n const newSort = overItem.sort + (active.isAbove ? 0 : 1);\n\n const [relativeItems, fixedItems] = newItems.reduce(\n (acc, item) => {\n acc[+item.isLocked].push(item);\n return acc;\n },\n [[], []] as [ColumnItem[], ColumnItem[]]\n );\n\n newItems = relativeItems.map(item => {\n if (item.id === active.id) {\n return {...item, sort: newSort, area: overItem.area};\n }\n\n if (item.sort >= newSort) {\n return {...item, sort: item.sort + 1};\n }\n\n return item;\n });\n\n newItems.sort((a, b) => a.sort - b.sort);\n\n for (const item of fixedItems) {\n newItems.splice(item.sort, 0, item);\n }\n\n return newItems.map((item, sort) => ({...item, sort}));\n};\n\nexport const moveOver = (itemsById: ItemsById, active: Active, over: Over) => {\n const overItem = itemsById.get(over.id);\n if (!overItem) {\n return {overId: undefined, isAbove: undefined};\n }\n\n const isFirst = over.data?.current?.sortable?.index === 0;\n const offsetTop = active.rect?.current?.translated?.top;\n\n const isAbove = isFirst && !!offsetTop && offsetTop < over.rect?.top;\n\n return {overId: overItem.id, isAbove};\n};\n\nexport const collisionDetection: CollisionDetection = args => {\n const rectResult = rectIntersection(args);\n\n if (rectResult.length === 2) {\n try {\n const sortables = rectResult.filter(item => !!item.data?.droppableContainer?.data?.current?.sortable);\n if (sortables.length === 1) {\n return sortables;\n }\n //eslint-disable-next-line no-empty\n } catch {}\n }\n\n return rectResult;\n};\n"],"names":["moveItem","items","active","over","areaFactor","ColumnArea","Default","FixedLeft","FixedRight","newItems","sort","a","b","aSort","length","area","bSort","map","item","overItem","find","id","newArea","data","current","newSort","isAbove","relativeItems","fixedItems","reduce","acc","isLocked","push","splice","moveOver","itemsById","get","overId","undefined","isFirst","sortable","index","offsetTop","rect","translated","top","collisionDetection","args","rectResult","rectIntersection","sortables","filter","droppableContainer"],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { jsxs as c, jsx as m } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { useState as d, useMemo as I } from "react";
|
|
3
|
+
import { useUpdateEffect as f } from "@join-x5/react-theme";
|
|
4
|
+
import { Modal as D, ModalHeader as S } from "@join-x5/react";
|
|
5
|
+
import { Columns as M } from "./Columns/index.es.js";
|
|
6
|
+
import { Footer as P } from "./Footer/index.es.js";
|
|
7
|
+
import { DataGridSettingsContext as j } from "./DataGridSettingsContext.es.js";
|
|
8
|
+
import { getColumnsData as v } from "./utils.es.js";
|
|
9
|
+
import { ColumnArea as l } from "./types.es.js";
|
|
10
|
+
const L = (t) => {
|
|
11
|
+
const {
|
|
12
|
+
isOpen: e,
|
|
13
|
+
qa: r = "datagridsettings",
|
|
14
|
+
areas: o = [l.FixedLeft, l.Default],
|
|
15
|
+
...u
|
|
16
|
+
} = t, [s, i] = d(t.items), [p, a] = d([]), {
|
|
17
|
+
columns: x,
|
|
18
|
+
itemsById: g,
|
|
19
|
+
size: h
|
|
20
|
+
} = I(() => v(s, o), [s, o]), C = {
|
|
21
|
+
...u,
|
|
22
|
+
columns: x,
|
|
23
|
+
itemsById: g,
|
|
24
|
+
areas: o,
|
|
25
|
+
items: s,
|
|
26
|
+
setItems: i,
|
|
27
|
+
searchItems: p,
|
|
28
|
+
setSearchItems: a,
|
|
29
|
+
qa: r
|
|
30
|
+
}, n = () => t.setIsOpen(!1);
|
|
31
|
+
return f(() => {
|
|
32
|
+
i(t.items);
|
|
33
|
+
}, [t.items]), f(() => {
|
|
34
|
+
e || setTimeout(() => a([]));
|
|
35
|
+
}, [e]), /* @__PURE__ */ c(D, { ...{
|
|
36
|
+
isOpen: e,
|
|
37
|
+
onClose: n,
|
|
38
|
+
qa: r,
|
|
39
|
+
size: h
|
|
40
|
+
}, children: [
|
|
41
|
+
/* @__PURE__ */ m(S, { onClose: n, children: "Настройка таблицы" }),
|
|
42
|
+
/* @__PURE__ */ c(j.Provider, { value: C, children: [
|
|
43
|
+
/* @__PURE__ */ m(M, {}),
|
|
44
|
+
/* @__PURE__ */ m(P, {})
|
|
45
|
+
] })
|
|
46
|
+
] });
|
|
47
|
+
};
|
|
48
|
+
export {
|
|
49
|
+
L as DataGridSettings
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=DataGridSettings.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataGridSettings.es.js","sources":["../src/DataGridSettings.tsx"],"sourcesContent":["import {useMemo, useState} from 'react';\n\nimport {useUpdateEffect} from '@join-x5/react-theme';\nimport {Modal, ModalHeader} from '@join-x5/react';\n\nimport {Columns} from './Columns';\nimport {Footer} from './Footer';\nimport {DataGridSettingsContext} from './DataGridSettingsContext';\nimport {getColumnsData} from './utils';\nimport {ColumnArea} from './types';\n\nimport type {ColumnItem, ColumnItemId, DataGridSettingsProps} from './types';\n\nexport const DataGridSettings: React.FC<DataGridSettingsProps> = props => {\n const {\n isOpen,\n\n qa = 'datagridsettings',\n areas = [ColumnArea.FixedLeft, ColumnArea.Default],\n\n ...rest\n } = props;\n\n const [items, setItems] = useState<ColumnItem[]>(props.items);\n const [searchItems, setSearchItems] = useState<ColumnItemId[]>([]);\n\n const {columns, itemsById, size} = useMemo(() => getColumnsData(items, areas), [items, areas]);\n\n const context = {...rest, columns, itemsById, areas, items, setItems, searchItems, setSearchItems, qa};\n\n const onClose = () => props.setIsOpen(false);\n\n useUpdateEffect(() => {\n setItems(props.items);\n }, [props.items]);\n\n useUpdateEffect(() => {\n if (!isOpen) {\n setTimeout(() => setSearchItems([]));\n }\n }, [isOpen]);\n\n const modalProps = {isOpen, onClose, qa, size};\n\n return (\n <Modal {...modalProps}>\n <ModalHeader onClose={onClose}>Настройка таблицы</ModalHeader>\n <DataGridSettingsContext.Provider value={context}>\n <Columns />\n <Footer />\n </DataGridSettingsContext.Provider>\n </Modal>\n );\n};\n"],"names":["DataGridSettings","props","isOpen","qa","areas","ColumnArea","FixedLeft","Default","rest","items","setItems","useState","searchItems","setSearchItems","columns","itemsById","size","useMemo","getColumnsData","context","onClose","setIsOpen","useUpdateEffect","setTimeout","jsxs","Modal","jsx","ModalHeader","DataGridSettingsContext","Columns","Footer"],"mappings":";;;;;;;;;AAaO,MAAMA,IAAoDC,CAASA,MAAA;AAClE,QAAA;AAAA,IACJC,QAAAA;AAAAA,IAEAC,IAAAA,IAAK;AAAA,IACLC,OAAAA,IAAQ,CAACC,EAAWC,WAAWD,EAAWE,OAAO;AAAA,IAEjD,GAAGC;AAAAA,EAAAA,IACDP,GAEE,CAACQ,GAAOC,CAAQ,IAAIC,EAAuBV,EAAMQ,KAAK,GACtD,CAACG,GAAaC,CAAc,IAAIF,EAAyB,CAAA,CAAE,GAE3D;AAAA,IAACG,SAAAA;AAAAA,IAASC,WAAAA;AAAAA,IAAWC,MAAAA;AAAAA,EAAAA,IAAQC,EAAQ,MAAMC,EAAeT,GAAOL,CAAK,GAAG,CAACK,GAAOL,CAAK,CAAC,GAEvFe,IAAU;AAAA,IAAC,GAAGX;AAAAA,IAAMM,SAAAA;AAAAA,IAASC,WAAAA;AAAAA,IAAWX,OAAAA;AAAAA,IAAOK,OAAAA;AAAAA,IAAOC,UAAAA;AAAAA,IAAUE,aAAAA;AAAAA,IAAaC,gBAAAA;AAAAA,IAAgBV,IAAAA;AAAAA,EAAE,GAE/FiB,IAAUA,MAAMnB,EAAMoB,UAAU,EAAK;AAE3CC,SAAAA,EAAgB,MAAM;AACpBZ,IAAAA,EAAST,EAAMQ,KAAK;AAAA,EAAA,GACnB,CAACR,EAAMQ,KAAK,CAAC,GAEhBa,EAAgB,MAAM;AACpB,IAAKpB,KACHqB,WAAW,MAAMV,EAAe,CAAA,CAAE,CAAC;AAAA,EACrC,GACC,CAACX,CAAM,CAAC,GAKT,gBAAAsB,EAACC,GAAM,EAAA,GAHU;AAAA,IAACvB,QAAAA;AAAAA,IAAQkB,SAAAA;AAAAA,IAASjB,IAAAA;AAAAA,IAAIa,MAAAA;AAAAA,EAAI,GAIzC,UAAA;AAAA,IAAC,gBAAAU,EAAAC,GAAA,EAAY,SAAAP,GAAkB,UAAiB,oBAAA,CAAA;AAAA,IAC/C,gBAAAI,EAAAI,EAAwB,UAAxB,EAAiC,OAAOT,GACvC,UAAA;AAAA,MAAA,gBAAAO,EAACG,GAAO,EAAA;AAAA,wBACPC,GAAM,CAAA,CAAA;AAAA,IAAA,EACT,CAAA;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ColumnArea, ColumnItem, ColumnData, DataGridSettingsProps, ItemsById, ColumnItemId } from './types';
|
|
2
|
+
import { RequiredQA } from '@join-x5/react-theme';
|
|
3
|
+
type DataGridSettingsContextProps = {
|
|
4
|
+
columns: ColumnData[];
|
|
5
|
+
itemsById: ItemsById;
|
|
6
|
+
areas: ColumnArea[];
|
|
7
|
+
setItems: (newItems: ColumnItem[]) => void;
|
|
8
|
+
searchItems: ColumnItemId[];
|
|
9
|
+
setSearchItems: (newSearchItems: ColumnItemId[]) => void;
|
|
10
|
+
} & Pick<DataGridSettingsProps, 'setIsOpen' | 'items' | 'defaultItems' | 'onSave'> & RequiredQA;
|
|
11
|
+
export declare const DataGridSettingsContext: import('react').Context<DataGridSettingsContextProps>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { createContext as e } from "react";
|
|
2
|
+
const s = e({
|
|
3
|
+
items: [],
|
|
4
|
+
defaultItems: [],
|
|
5
|
+
areas: [],
|
|
6
|
+
columns: [],
|
|
7
|
+
itemsById: /* @__PURE__ */ new Map(),
|
|
8
|
+
searchItems: [],
|
|
9
|
+
setSearchItems: () => {
|
|
10
|
+
},
|
|
11
|
+
setIsOpen: () => {
|
|
12
|
+
},
|
|
13
|
+
setItems: () => {
|
|
14
|
+
},
|
|
15
|
+
onSave: () => {
|
|
16
|
+
},
|
|
17
|
+
qa: ""
|
|
18
|
+
});
|
|
19
|
+
export {
|
|
20
|
+
s as DataGridSettingsContext
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=DataGridSettingsContext.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataGridSettingsContext.es.js","sources":["../src/DataGridSettingsContext.ts"],"sourcesContent":["import {createContext} from 'react';\n\nimport type {ColumnArea, ColumnItem, ColumnData, DataGridSettingsProps, ItemsById, ColumnItemId} from './types';\nimport type {RequiredQA} from '@join-x5/react-theme';\n\ntype DataGridSettingsContextProps = {\n columns: ColumnData[];\n itemsById: ItemsById;\n areas: ColumnArea[];\n\n setItems: (newItems: ColumnItem[]) => void;\n\n searchItems: ColumnItemId[];\n setSearchItems: (newSearchItems: ColumnItemId[]) => void;\n} & Pick<DataGridSettingsProps, 'setIsOpen' | 'items' | 'defaultItems' | 'onSave'> &\n RequiredQA;\n\nexport const DataGridSettingsContext = createContext<DataGridSettingsContextProps>({\n items: [],\n defaultItems: [],\n areas: [],\n columns: [],\n itemsById: new Map(),\n searchItems: [],\n setSearchItems: () => {},\n\n setIsOpen: () => {},\n setItems: () => {},\n onSave: () => {},\n qa: '',\n});\n"],"names":["DataGridSettingsContext","createContext","items","defaultItems","areas","columns","itemsById","Map","searchItems","setSearchItems","setIsOpen","setItems","onSave","qa"],"mappings":";AAiBO,MAAMA,IAA0BC,EAA4C;AAAA,EACjFC,OAAO,CAAE;AAAA,EACTC,cAAc,CAAE;AAAA,EAChBC,OAAO,CAAE;AAAA,EACTC,SAAS,CAAE;AAAA,EACXC,+BAAeC,IAAI;AAAA,EACnBC,aAAa,CAAE;AAAA,EACfC,gBAAgBA,MAAM;AAAA,EAAC;AAAA,EAEvBC,WAAWA,MAAM;AAAA,EAAC;AAAA,EAClBC,UAAUA,MAAM;AAAA,EAAC;AAAA,EACjBC,QAAQA,MAAM;AAAA,EAAC;AAAA,EACfC,IAAI;AACN,CAAC;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const LeftButtons: React.FC;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { jsx as I, jsxs as t } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import V from "@emotion/styled/base";
|
|
3
|
+
import { useContext as e, useState as x, useRef as m } from "react";
|
|
4
|
+
import { SizeTokenValue as u, Placement as o } from "@join-x5/react-theme";
|
|
5
|
+
import { DropdownContent as a, ModalFooterContent as R, Button as W, ButtonVariant as A, IconButton as s, Dropdown as p } from "@join-x5/react";
|
|
6
|
+
import { MoreHorizontalIcon as J } from "@join-x5/react-icons";
|
|
7
|
+
import { DataGridSettingsContext as v } from "../DataGridSettingsContext.es.js";
|
|
8
|
+
function N() {
|
|
9
|
+
return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).";
|
|
10
|
+
}
|
|
11
|
+
const B = /* @__PURE__ */ V(a, process.env.NODE_ENV === "production" ? {
|
|
12
|
+
target: "e143cb4b1"
|
|
13
|
+
} : {
|
|
14
|
+
target: "e143cb4b1",
|
|
15
|
+
label: "DropdownContent"
|
|
16
|
+
})(process.env.NODE_ENV === "production" ? {
|
|
17
|
+
name: "d3v9zr",
|
|
18
|
+
styles: "overflow:hidden"
|
|
19
|
+
} : {
|
|
20
|
+
name: "d3v9zr",
|
|
21
|
+
styles: "overflow:hidden/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3NhZHlrb3ZzZC9qb2luLXg1L3BhY2thZ2VzL2RhdGEtZ3JpZC1zZXR0aW5ncy9zcmMvRm9vdGVyL0xlZnRCdXR0b25zLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQm1EIiwiZmlsZSI6Ii9ob21lL3NhZHlrb3ZzZC9qb2luLXg1L3BhY2thZ2VzL2RhdGEtZ3JpZC1zZXR0aW5ncy9zcmMvRm9vdGVyL0xlZnRCdXR0b25zLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dXNlQ29udGV4dCwgdXNlUmVmLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuXG5pbXBvcnQge1BsYWNlbWVudCwgU2l6ZVRva2VuVmFsdWV9IGZyb20gJ0Bqb2luLXg1L3JlYWN0LXRoZW1lJztcbmltcG9ydCB7XG4gIEJ1dHRvbixcbiAgQnV0dG9uVmFyaWFudCxcbiAgSWNvbkJ1dHRvbixcbiAgTW9kYWxGb290ZXJDb250ZW50LFxuICBEcm9wZG93bixcbiAgRHJvcGRvd25Db250ZW50IGFzIEJhc2VEcm9wZG93bkNvbnRlbnQsXG59IGZyb20gJ0Bqb2luLXg1L3JlYWN0JztcblxuaW1wb3J0IHtNb3JlSG9yaXpvbnRhbEljb259IGZyb20gJ0Bqb2luLXg1L3JlYWN0LWljb25zJztcblxuaW1wb3J0IHtEYXRhR3JpZFNldHRpbmdzQ29udGV4dH0gZnJvbSAnLi4vRGF0YUdyaWRTZXR0aW5nc0NvbnRleHQnO1xuXG5pbXBvcnQgdHlwZSB7UmVxdWlyZWRRQX0gZnJvbSAnQGpvaW4teDUvcmVhY3QtdGhlbWUnO1xuXG5jb25zdCBEcm9wZG93bkNvbnRlbnQgPSBzdHlsZWQoQmFzZURyb3Bkb3duQ29udGVudClgXG4gIG92ZXJmbG93OiBoaWRkZW47XG5gO1xuXG5jb25zdCBEcm9wZG93bkJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiA2cHggMTJweDtcbiAgYm9yZGVyOiAwO1xuICBvdXRsaW5lOiBub25lO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50eXBvZ3JhcGh5LnAxY29tcGFjdH1cblxuICA6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuY29sb3JzLmdyZXlbMTBdfTtcbiAgfVxuYDtcblxudHlwZSBEcm9wZG93bkJ1dHRvbnNQcm9wcyA9IHtcbiAgaXNBbGxWaXNpYmxlOiBib29sZWFuO1xuICBvblJlc2V0OiAoKSA9PiB2b2lkO1xuICBvblRvZ2dsZVZpc2libGU6ICgpID0+IHZvaWQ7XG59ICYgUmVxdWlyZWRRQTtcblxuY29uc3QgRHJvcGRvd25CdXR0b25zOiBSZWFjdC5GQzxEcm9wZG93bkJ1dHRvbnNQcm9wcz4gPSAoe2lzQWxsVmlzaWJsZSwgcWEsIC4uLnByb3BzfSkgPT4ge1xuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+KG51bGwpO1xuXG4gIGNvbnN0IG9uVG9nZ2xlID0gKCkgPT4gc2V0SXNPcGVuKCFpc09wZW4pO1xuXG4gIGNvbnN0IG9uUmVzZXQgPSAoKSA9PiB7XG4gICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgICBwcm9wcy5vblJlc2V0KCk7XG4gIH07XG5cbiAgY29uc3Qgb25Ub2dnbGVWaXNpYmxlID0gKCkgPT4ge1xuICAgIHNldElzT3BlbihmYWxzZSk7XG4gICAgcHJvcHMub25Ub2dnbGVWaXNpYmxlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8TW9kYWxGb290ZXJDb250ZW50PlxuICAgICAgPEljb25CdXR0b25cbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIHNpemU9e1NpemVUb2tlblZhbHVlLlNtYWxsfVxuICAgICAgICB2YXJpYW50PXtCdXR0b25WYXJpYW50LklubmVySW5wdXR9XG4gICAgICAgIG9uQ2xpY2s9e29uVG9nZ2xlfVxuICAgICAgICBxYT17YCR7cWF9LWZvb3Rlci1kcm9wZG93bmB9XG4gICAgICA+XG4gICAgICAgIDxNb3JlSG9yaXpvbnRhbEljb24gc2l6ZT17U2l6ZVRva2VuVmFsdWUuU21hbGx9IC8+XG4gICAgICA8L0ljb25CdXR0b24+XG4gICAgICA8RHJvcGRvd24gd2lkdGg9XCIxNTJweFwiIHBsYWNlbWVudD17UGxhY2VtZW50LlRvcFN0YXJ0fSBpc09wZW49e2lzT3Blbn0gc2V0SXNPcGVuPXtzZXRJc09wZW59IHRhcmdldFJlZj17cmVmfT5cbiAgICAgICAgPERyb3Bkb3duQ29udGVudD5cbiAgICAgICAgICA8RHJvcGRvd25CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e29uUmVzZXR9IGRhdGEtcWE9e2Ake3FhfS1yZXNldGB9PlxuICAgICAgICAgICAg0J/QviDRg9C80L7Qu9GH0LDQvdC40Y5cbiAgICAgICAgICA8L0Ryb3Bkb3duQnV0dG9uPlxuICAgICAgICAgIDxEcm9wZG93bkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17b25Ub2dnbGVWaXNpYmxlfSBkYXRhLXFhPXtgJHtxYX0tdG9nZ2xlLXZpc2libGVgfT5cbiAgICAgICAgICAgIHtpc0FsbFZpc2libGUgPyAn0KHQutGA0YvRgtGMINCy0YHQtScgOiAn0J/QvtC60LDQt9Cw0YLRjCDQstGB0LUnfVxuICAgICAgICAgIDwvRHJvcGRvd25CdXR0b24+XG4gICAgICAgIDwvRHJvcGRvd25Db250ZW50PlxuICAgICAgPC9Ecm9wZG93bj5cbiAgICA8L01vZGFsRm9vdGVyQ29udGVudD5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBMZWZ0QnV0dG9uczogUmVhY3QuRkMgPSAoKSA9PiB7XG4gIGNvbnN0IHtpdGVtcywgZGVmYXVsdEl0ZW1zLCBzZXRJdGVtcywgY29sdW1ucywgcWF9ID0gdXNlQ29udGV4dChEYXRhR3JpZFNldHRpbmdzQ29udGV4dCk7XG5cbiAgY29uc3QgaXNBbGxWaXNpYmxlID0gaXRlbXMuZmluZEluZGV4KGl0ZW0gPT4gIWl0ZW0uaXNWaXNpYmxlKSA9PT0gLTE7XG5cbiAgY29uc3Qgb25SZXNldCA9ICgpID0+IHNldEl0ZW1zKGRlZmF1bHRJdGVtcyk7XG5cbiAgY29uc3Qgb25Ub2dnbGVWaXNpYmxlID0gKCkgPT4ge1xuICAgIGNvbnN0IG5ld0l0ZW1zID0gaXRlbXMubWFwKGl0ZW0gPT4gKHsuLi5pdGVtLCBpc1Zpc2libGU6IGl0ZW0uaXNBbHdheXNWaXNpYmxlIHx8ICFpc0FsbFZpc2libGV9KSk7XG5cbiAgICBzZXRJdGVtcyhuZXdJdGVtcyk7XG4gIH07XG5cbiAgaWYgKGNvbHVtbnMubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIDxEcm9wZG93bkJ1dHRvbnMgaXNBbGxWaXNpYmxlPXtpc0FsbFZpc2libGV9IG9uUmVzZXQ9e29uUmVzZXR9IG9uVG9nZ2xlVmlzaWJsZT17b25Ub2dnbGVWaXNpYmxlfSBxYT17cWF9IC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8TW9kYWxGb290ZXJDb250ZW50PlxuICAgICAgPEJ1dHRvbiBzaXplPXtTaXplVG9rZW5WYWx1ZS5TbWFsbH0gdmFyaWFudD17QnV0dG9uVmFyaWFudC5HaG9zdH0gb25DbGljaz17b25SZXNldH0gcWE9e2Ake3FhfS1yZXNldGB9PlxuICAgICAgICDQn9C+INGD0LzQvtC70YfQsNC90LjRjlxuICAgICAgPC9CdXR0b24+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIHNpemU9e1NpemVUb2tlblZhbHVlLlNtYWxsfVxuICAgICAgICB2YXJpYW50PXtCdXR0b25WYXJpYW50Lkdob3N0fVxuICAgICAgICBvbkNsaWNrPXtvblRvZ2dsZVZpc2libGV9XG4gICAgICAgIHFhPXtgJHtxYX0tdG9nZ2xlLXZpc2libGVgfVxuICAgICAgPlxuICAgICAgICB7aXNBbGxWaXNpYmxlID8gJ9Ch0LrRgNGL0YLRjCDQstGB0LUnIDogJ9Cf0L7QutCw0LfQsNGC0Ywg0LLRgdC1J31cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvTW9kYWxGb290ZXJDb250ZW50PlxuICApO1xufTtcbiJdfQ== */",
|
|
22
|
+
toString: N
|
|
23
|
+
}), i = /* @__PURE__ */ V("button", process.env.NODE_ENV === "production" ? {
|
|
24
|
+
target: "e143cb4b0"
|
|
25
|
+
} : {
|
|
26
|
+
target: "e143cb4b0",
|
|
27
|
+
label: "DropdownButton"
|
|
28
|
+
})("width:100%;padding:6px 12px;border:0;outline:none;background:none;text-align:left;cursor:pointer;", (b) => b.theme.typography.p1compact, " :hover{background-color:", (b) => b.theme.colors.grey[10], ";}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3NhZHlrb3ZzZC9qb2luLXg1L3BhY2thZ2VzL2RhdGEtZ3JpZC1zZXR0aW5ncy9zcmMvRm9vdGVyL0xlZnRCdXR0b25zLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1Qm9DIiwiZmlsZSI6Ii9ob21lL3NhZHlrb3ZzZC9qb2luLXg1L3BhY2thZ2VzL2RhdGEtZ3JpZC1zZXR0aW5ncy9zcmMvRm9vdGVyL0xlZnRCdXR0b25zLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dXNlQ29udGV4dCwgdXNlUmVmLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuXG5pbXBvcnQge1BsYWNlbWVudCwgU2l6ZVRva2VuVmFsdWV9IGZyb20gJ0Bqb2luLXg1L3JlYWN0LXRoZW1lJztcbmltcG9ydCB7XG4gIEJ1dHRvbixcbiAgQnV0dG9uVmFyaWFudCxcbiAgSWNvbkJ1dHRvbixcbiAgTW9kYWxGb290ZXJDb250ZW50LFxuICBEcm9wZG93bixcbiAgRHJvcGRvd25Db250ZW50IGFzIEJhc2VEcm9wZG93bkNvbnRlbnQsXG59IGZyb20gJ0Bqb2luLXg1L3JlYWN0JztcblxuaW1wb3J0IHtNb3JlSG9yaXpvbnRhbEljb259IGZyb20gJ0Bqb2luLXg1L3JlYWN0LWljb25zJztcblxuaW1wb3J0IHtEYXRhR3JpZFNldHRpbmdzQ29udGV4dH0gZnJvbSAnLi4vRGF0YUdyaWRTZXR0aW5nc0NvbnRleHQnO1xuXG5pbXBvcnQgdHlwZSB7UmVxdWlyZWRRQX0gZnJvbSAnQGpvaW4teDUvcmVhY3QtdGhlbWUnO1xuXG5jb25zdCBEcm9wZG93bkNvbnRlbnQgPSBzdHlsZWQoQmFzZURyb3Bkb3duQ29udGVudClgXG4gIG92ZXJmbG93OiBoaWRkZW47XG5gO1xuXG5jb25zdCBEcm9wZG93bkJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiA2cHggMTJweDtcbiAgYm9yZGVyOiAwO1xuICBvdXRsaW5lOiBub25lO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50eXBvZ3JhcGh5LnAxY29tcGFjdH1cblxuICA6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuY29sb3JzLmdyZXlbMTBdfTtcbiAgfVxuYDtcblxudHlwZSBEcm9wZG93bkJ1dHRvbnNQcm9wcyA9IHtcbiAgaXNBbGxWaXNpYmxlOiBib29sZWFuO1xuICBvblJlc2V0OiAoKSA9PiB2b2lkO1xuICBvblRvZ2dsZVZpc2libGU6ICgpID0+IHZvaWQ7XG59ICYgUmVxdWlyZWRRQTtcblxuY29uc3QgRHJvcGRvd25CdXR0b25zOiBSZWFjdC5GQzxEcm9wZG93bkJ1dHRvbnNQcm9wcz4gPSAoe2lzQWxsVmlzaWJsZSwgcWEsIC4uLnByb3BzfSkgPT4ge1xuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+KG51bGwpO1xuXG4gIGNvbnN0IG9uVG9nZ2xlID0gKCkgPT4gc2V0SXNPcGVuKCFpc09wZW4pO1xuXG4gIGNvbnN0IG9uUmVzZXQgPSAoKSA9PiB7XG4gICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgICBwcm9wcy5vblJlc2V0KCk7XG4gIH07XG5cbiAgY29uc3Qgb25Ub2dnbGVWaXNpYmxlID0gKCkgPT4ge1xuICAgIHNldElzT3BlbihmYWxzZSk7XG4gICAgcHJvcHMub25Ub2dnbGVWaXNpYmxlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8TW9kYWxGb290ZXJDb250ZW50PlxuICAgICAgPEljb25CdXR0b25cbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIHNpemU9e1NpemVUb2tlblZhbHVlLlNtYWxsfVxuICAgICAgICB2YXJpYW50PXtCdXR0b25WYXJpYW50LklubmVySW5wdXR9XG4gICAgICAgIG9uQ2xpY2s9e29uVG9nZ2xlfVxuICAgICAgICBxYT17YCR7cWF9LWZvb3Rlci1kcm9wZG93bmB9XG4gICAgICA+XG4gICAgICAgIDxNb3JlSG9yaXpvbnRhbEljb24gc2l6ZT17U2l6ZVRva2VuVmFsdWUuU21hbGx9IC8+XG4gICAgICA8L0ljb25CdXR0b24+XG4gICAgICA8RHJvcGRvd24gd2lkdGg9XCIxNTJweFwiIHBsYWNlbWVudD17UGxhY2VtZW50LlRvcFN0YXJ0fSBpc09wZW49e2lzT3Blbn0gc2V0SXNPcGVuPXtzZXRJc09wZW59IHRhcmdldFJlZj17cmVmfT5cbiAgICAgICAgPERyb3Bkb3duQ29udGVudD5cbiAgICAgICAgICA8RHJvcGRvd25CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e29uUmVzZXR9IGRhdGEtcWE9e2Ake3FhfS1yZXNldGB9PlxuICAgICAgICAgICAg0J/QviDRg9C80L7Qu9GH0LDQvdC40Y5cbiAgICAgICAgICA8L0Ryb3Bkb3duQnV0dG9uPlxuICAgICAgICAgIDxEcm9wZG93bkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17b25Ub2dnbGVWaXNpYmxlfSBkYXRhLXFhPXtgJHtxYX0tdG9nZ2xlLXZpc2libGVgfT5cbiAgICAgICAgICAgIHtpc0FsbFZpc2libGUgPyAn0KHQutGA0YvRgtGMINCy0YHQtScgOiAn0J/QvtC60LDQt9Cw0YLRjCDQstGB0LUnfVxuICAgICAgICAgIDwvRHJvcGRvd25CdXR0b24+XG4gICAgICAgIDwvRHJvcGRvd25Db250ZW50PlxuICAgICAgPC9Ecm9wZG93bj5cbiAgICA8L01vZGFsRm9vdGVyQ29udGVudD5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBMZWZ0QnV0dG9uczogUmVhY3QuRkMgPSAoKSA9PiB7XG4gIGNvbnN0IHtpdGVtcywgZGVmYXVsdEl0ZW1zLCBzZXRJdGVtcywgY29sdW1ucywgcWF9ID0gdXNlQ29udGV4dChEYXRhR3JpZFNldHRpbmdzQ29udGV4dCk7XG5cbiAgY29uc3QgaXNBbGxWaXNpYmxlID0gaXRlbXMuZmluZEluZGV4KGl0ZW0gPT4gIWl0ZW0uaXNWaXNpYmxlKSA9PT0gLTE7XG5cbiAgY29uc3Qgb25SZXNldCA9ICgpID0+IHNldEl0ZW1zKGRlZmF1bHRJdGVtcyk7XG5cbiAgY29uc3Qgb25Ub2dnbGVWaXNpYmxlID0gKCkgPT4ge1xuICAgIGNvbnN0IG5ld0l0ZW1zID0gaXRlbXMubWFwKGl0ZW0gPT4gKHsuLi5pdGVtLCBpc1Zpc2libGU6IGl0ZW0uaXNBbHdheXNWaXNpYmxlIHx8ICFpc0FsbFZpc2libGV9KSk7XG5cbiAgICBzZXRJdGVtcyhuZXdJdGVtcyk7XG4gIH07XG5cbiAgaWYgKGNvbHVtbnMubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIDxEcm9wZG93bkJ1dHRvbnMgaXNBbGxWaXNpYmxlPXtpc0FsbFZpc2libGV9IG9uUmVzZXQ9e29uUmVzZXR9IG9uVG9nZ2xlVmlzaWJsZT17b25Ub2dnbGVWaXNpYmxlfSBxYT17cWF9IC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8TW9kYWxGb290ZXJDb250ZW50PlxuICAgICAgPEJ1dHRvbiBzaXplPXtTaXplVG9rZW5WYWx1ZS5TbWFsbH0gdmFyaWFudD17QnV0dG9uVmFyaWFudC5HaG9zdH0gb25DbGljaz17b25SZXNldH0gcWE9e2Ake3FhfS1yZXNldGB9PlxuICAgICAgICDQn9C+INGD0LzQvtC70YfQsNC90LjRjlxuICAgICAgPC9CdXR0b24+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIHNpemU9e1NpemVUb2tlblZhbHVlLlNtYWxsfVxuICAgICAgICB2YXJpYW50PXtCdXR0b25WYXJpYW50Lkdob3N0fVxuICAgICAgICBvbkNsaWNrPXtvblRvZ2dsZVZpc2libGV9XG4gICAgICAgIHFhPXtgJHtxYX0tdG9nZ2xlLXZpc2libGVgfVxuICAgICAgPlxuICAgICAgICB7aXNBbGxWaXNpYmxlID8gJ9Ch0LrRgNGL0YLRjCDQstGB0LUnIDogJ9Cf0L7QutCw0LfQsNGC0Ywg0LLRgdC1J31cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvTW9kYWxGb290ZXJDb250ZW50PlxuICApO1xufTtcbiJdfQ== */")), Y = ({
|
|
29
|
+
isAllVisible: b,
|
|
30
|
+
qa: C,
|
|
31
|
+
...G
|
|
32
|
+
}) => {
|
|
33
|
+
const [d, g] = x(!1), l = m(null), X = () => g(!d), Z = () => {
|
|
34
|
+
g(!1), G.onReset();
|
|
35
|
+
}, c = () => {
|
|
36
|
+
g(!1), G.onToggleVisible();
|
|
37
|
+
};
|
|
38
|
+
return /* @__PURE__ */ t(R, { children: [
|
|
39
|
+
/* @__PURE__ */ I(s, { ref: l, size: u.Small, variant: A.InnerInput, onClick: X, qa: `${C}-footer-dropdown`, children: /* @__PURE__ */ I(J, { size: u.Small }) }),
|
|
40
|
+
/* @__PURE__ */ I(p, { width: "152px", placement: o.TopStart, isOpen: d, setIsOpen: g, targetRef: l, children: /* @__PURE__ */ t(B, { children: [
|
|
41
|
+
/* @__PURE__ */ I(i, { type: "button", onClick: Z, "data-qa": `${C}-reset`, children: "По умолчанию" }),
|
|
42
|
+
/* @__PURE__ */ I(i, { type: "button", onClick: c, "data-qa": `${C}-toggle-visible`, children: b ? "Скрыть все" : "Показать все" })
|
|
43
|
+
] }) })
|
|
44
|
+
] });
|
|
45
|
+
}, y = () => {
|
|
46
|
+
const {
|
|
47
|
+
items: b,
|
|
48
|
+
defaultItems: C,
|
|
49
|
+
setItems: G,
|
|
50
|
+
columns: d,
|
|
51
|
+
qa: g
|
|
52
|
+
} = e(v), l = b.findIndex((c) => !c.isVisible) === -1, X = () => G(C), Z = () => {
|
|
53
|
+
const c = b.map((n) => ({
|
|
54
|
+
...n,
|
|
55
|
+
isVisible: n.isAlwaysVisible || !l
|
|
56
|
+
}));
|
|
57
|
+
G(c);
|
|
58
|
+
};
|
|
59
|
+
return d.length === 1 ? /* @__PURE__ */ I(Y, { isAllVisible: l, onReset: X, onToggleVisible: Z, qa: g }) : /* @__PURE__ */ t(R, { children: [
|
|
60
|
+
/* @__PURE__ */ I(W, { size: u.Small, variant: A.Ghost, onClick: X, qa: `${g}-reset`, children: "По умолчанию" }),
|
|
61
|
+
/* @__PURE__ */ I(W, { size: u.Small, variant: A.Ghost, onClick: Z, qa: `${g}-toggle-visible`, children: l ? "Скрыть все" : "Показать все" })
|
|
62
|
+
] });
|
|
63
|
+
};
|
|
64
|
+
export {
|
|
65
|
+
y as LeftButtons
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=LeftButtons.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LeftButtons.es.js","sources":["../../src/Footer/LeftButtons.tsx"],"sourcesContent":["import {useContext, useRef, useState} from 'react';\nimport styled from '@emotion/styled';\n\nimport {Placement, SizeTokenValue} from '@join-x5/react-theme';\nimport {\n Button,\n ButtonVariant,\n IconButton,\n ModalFooterContent,\n Dropdown,\n DropdownContent as BaseDropdownContent,\n} from '@join-x5/react';\n\nimport {MoreHorizontalIcon} from '@join-x5/react-icons';\n\nimport {DataGridSettingsContext} from '../DataGridSettingsContext';\n\nimport type {RequiredQA} from '@join-x5/react-theme';\n\nconst DropdownContent = styled(BaseDropdownContent)`\n overflow: hidden;\n`;\n\nconst DropdownButton = styled.button`\n width: 100%;\n padding: 6px 12px;\n border: 0;\n outline: none;\n background: none;\n text-align: left;\n cursor: pointer;\n\n ${props => props.theme.typography.p1compact}\n\n :hover {\n background-color: ${props => props.theme.colors.grey[10]};\n }\n`;\n\ntype DropdownButtonsProps = {\n isAllVisible: boolean;\n onReset: () => void;\n onToggleVisible: () => void;\n} & RequiredQA;\n\nconst DropdownButtons: React.FC<DropdownButtonsProps> = ({isAllVisible, qa, ...props}) => {\n const [isOpen, setIsOpen] = useState(false);\n const ref = useRef<HTMLButtonElement>(null);\n\n const onToggle = () => setIsOpen(!isOpen);\n\n const onReset = () => {\n setIsOpen(false);\n props.onReset();\n };\n\n const onToggleVisible = () => {\n setIsOpen(false);\n props.onToggleVisible();\n };\n\n return (\n <ModalFooterContent>\n <IconButton\n ref={ref}\n size={SizeTokenValue.Small}\n variant={ButtonVariant.InnerInput}\n onClick={onToggle}\n qa={`${qa}-footer-dropdown`}\n >\n <MoreHorizontalIcon size={SizeTokenValue.Small} />\n </IconButton>\n <Dropdown width=\"152px\" placement={Placement.TopStart} isOpen={isOpen} setIsOpen={setIsOpen} targetRef={ref}>\n <DropdownContent>\n <DropdownButton type=\"button\" onClick={onReset} data-qa={`${qa}-reset`}>\n По умолчанию\n </DropdownButton>\n <DropdownButton type=\"button\" onClick={onToggleVisible} data-qa={`${qa}-toggle-visible`}>\n {isAllVisible ? 'Скрыть все' : 'Показать все'}\n </DropdownButton>\n </DropdownContent>\n </Dropdown>\n </ModalFooterContent>\n );\n};\n\nexport const LeftButtons: React.FC = () => {\n const {items, defaultItems, setItems, columns, qa} = useContext(DataGridSettingsContext);\n\n const isAllVisible = items.findIndex(item => !item.isVisible) === -1;\n\n const onReset = () => setItems(defaultItems);\n\n const onToggleVisible = () => {\n const newItems = items.map(item => ({...item, isVisible: item.isAlwaysVisible || !isAllVisible}));\n\n setItems(newItems);\n };\n\n if (columns.length === 1) {\n return <DropdownButtons isAllVisible={isAllVisible} onReset={onReset} onToggleVisible={onToggleVisible} qa={qa} />;\n }\n\n return (\n <ModalFooterContent>\n <Button size={SizeTokenValue.Small} variant={ButtonVariant.Ghost} onClick={onReset} qa={`${qa}-reset`}>\n По умолчанию\n </Button>\n <Button\n size={SizeTokenValue.Small}\n variant={ButtonVariant.Ghost}\n onClick={onToggleVisible}\n qa={`${qa}-toggle-visible`}\n >\n {isAllVisible ? 'Скрыть все' : 'Показать все'}\n </Button>\n </ModalFooterContent>\n );\n};\n"],"names":["DropdownContent","BaseDropdownContent","process","env","NODE_ENV","target","label","name","styles","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","DropdownButton","_styled","props","theme","typography","p1compact","colors","grey","DropdownButtons","isAllVisible","qa","isOpen","setIsOpen","useState","ref","useRef","onToggle","onReset","onToggleVisible","ModalFooterContent","jsx","IconButton","SizeTokenValue","Small","ButtonVariant","InnerInput","MoreHorizontalIcon","Dropdown","Placement","TopStart","jsxs","LeftButtons","items","defaultItems","setItems","columns","useContext","DataGridSettingsContext","findIndex","item","isVisible","newItems","map","isAlwaysVisible","length","Button","Ghost"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const Footer: React.FC;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsxs as c, jsx as t } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import C from "@emotion/styled/base";
|
|
3
|
+
import { useContext as Z } from "react";
|
|
4
|
+
import { SizeTokenValue as n } from "@join-x5/react-theme";
|
|
5
|
+
import { ModalFooter as i, ModalFooterContent as a, Button as o, ButtonVariant as e } from "@join-x5/react";
|
|
6
|
+
import { DataGridSettingsContext as u } from "../DataGridSettingsContext.es.js";
|
|
7
|
+
import { LeftButtons as X } from "./LeftButtons.es.js";
|
|
8
|
+
const m = /* @__PURE__ */ C(i, process.env.NODE_ENV === "production" ? {
|
|
9
|
+
target: "enotiur0"
|
|
10
|
+
} : {
|
|
11
|
+
target: "enotiur0",
|
|
12
|
+
label: "ModalFooter"
|
|
13
|
+
})("padding:20px 24px 20px 16px;border-top:1px solid ", (b) => b.theme.colors.grey[20], ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3NhZHlrb3ZzZC9qb2luLXg1L3BhY2thZ2VzL2RhdGEtZ3JpZC1zZXR0aW5ncy9zcmMvRm9vdGVyL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVMkMiLCJmaWxlIjoiL2hvbWUvc2FkeWtvdnNkL2pvaW4teDUvcGFja2FnZXMvZGF0YS1ncmlkLXNldHRpbmdzL3NyYy9Gb290ZXIvaW5kZXgudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt1c2VDb250ZXh0fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5cbmltcG9ydCB7U2l6ZVRva2VuVmFsdWV9IGZyb20gJ0Bqb2luLXg1L3JlYWN0LXRoZW1lJztcbmltcG9ydCB7QnV0dG9uLCBCdXR0b25WYXJpYW50LCBNb2RhbEZvb3RlciBhcyBCYXNlTW9kYWxGb290ZXIsIE1vZGFsRm9vdGVyQ29udGVudH0gZnJvbSAnQGpvaW4teDUvcmVhY3QnO1xuXG5pbXBvcnQge0RhdGFHcmlkU2V0dGluZ3NDb250ZXh0fSBmcm9tICcuLi9EYXRhR3JpZFNldHRpbmdzQ29udGV4dCc7XG5cbmltcG9ydCB7TGVmdEJ1dHRvbnN9IGZyb20gJy4vTGVmdEJ1dHRvbnMnO1xuXG5jb25zdCBNb2RhbEZvb3RlciA9IHN0eWxlZChCYXNlTW9kYWxGb290ZXIpYFxuICBwYWRkaW5nOiAyMHB4IDI0cHggMjBweCAxNnB4O1xuICBib3JkZXItdG9wOiAxcHggc29saWQgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5jb2xvcnMuZ3JleVsyMF19O1xuYDtcblxuZXhwb3J0IGNvbnN0IEZvb3RlcjogUmVhY3QuRkMgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KERhdGFHcmlkU2V0dGluZ3NDb250ZXh0KTtcbiAgY29uc3Qge2l0ZW1zLCBzZXRJc09wZW4sIHFhfSA9IGNvbnRleHQ7XG5cbiAgY29uc3Qgb25DbG9zZSA9ICgpID0+IHNldElzT3BlbihmYWxzZSk7XG4gIGNvbnN0IG9uU2F2ZSA9ICgpID0+IGNvbnRleHQub25TYXZlKGl0ZW1zKTtcblxuICByZXR1cm4gKFxuICAgIDxNb2RhbEZvb3Rlcj5cbiAgICAgIDxMZWZ0QnV0dG9ucyAvPlxuICAgICAgPE1vZGFsRm9vdGVyQ29udGVudD5cbiAgICAgICAgPEJ1dHRvbiBzaXplPXtTaXplVG9rZW5WYWx1ZS5TbWFsbH0gdmFyaWFudD17QnV0dG9uVmFyaWFudC5PdXRsaW5lZH0gb25DbGljaz17b25DbG9zZX0gcWE9e2Ake3FhfS1jYW5jZWxgfT5cbiAgICAgICAgICDQntGC0LzQtdC90LjRgtGMXG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uIHNpemU9e1NpemVUb2tlblZhbHVlLlNtYWxsfSB2YXJpYW50PXtCdXR0b25WYXJpYW50LlByaW1hcnl9IG9uQ2xpY2s9e29uU2F2ZX0gcWE9e2Ake3FhfS1zYXZlYH0+XG4gICAgICAgICAg0J/RgNC40LzQtdC90LjRgtGMXG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Nb2RhbEZvb3RlckNvbnRlbnQ+XG4gICAgPC9Nb2RhbEZvb3Rlcj5cbiAgKTtcbn07XG4iXX0= */")), N = () => {
|
|
14
|
+
const b = Z(u), {
|
|
15
|
+
items: d,
|
|
16
|
+
setIsOpen: g,
|
|
17
|
+
qa: l
|
|
18
|
+
} = b, I = () => g(!1), G = () => b.onSave(d);
|
|
19
|
+
return /* @__PURE__ */ c(m, { children: [
|
|
20
|
+
/* @__PURE__ */ t(X, {}),
|
|
21
|
+
/* @__PURE__ */ c(a, { children: [
|
|
22
|
+
/* @__PURE__ */ t(o, { size: n.Small, variant: e.Outlined, onClick: I, qa: `${l}-cancel`, children: "Отменить" }),
|
|
23
|
+
/* @__PURE__ */ t(o, { size: n.Small, variant: e.Primary, onClick: G, qa: `${l}-save`, children: "Применить" })
|
|
24
|
+
] })
|
|
25
|
+
] });
|
|
26
|
+
};
|
|
27
|
+
export {
|
|
28
|
+
N as Footer
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=index.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../src/Footer/index.tsx"],"sourcesContent":["import {useContext} from 'react';\nimport styled from '@emotion/styled';\n\nimport {SizeTokenValue} from '@join-x5/react-theme';\nimport {Button, ButtonVariant, ModalFooter as BaseModalFooter, ModalFooterContent} from '@join-x5/react';\n\nimport {DataGridSettingsContext} from '../DataGridSettingsContext';\n\nimport {LeftButtons} from './LeftButtons';\n\nconst ModalFooter = styled(BaseModalFooter)`\n padding: 20px 24px 20px 16px;\n border-top: 1px solid ${props => props.theme.colors.grey[20]};\n`;\n\nexport const Footer: React.FC = () => {\n const context = useContext(DataGridSettingsContext);\n const {items, setIsOpen, qa} = context;\n\n const onClose = () => setIsOpen(false);\n const onSave = () => context.onSave(items);\n\n return (\n <ModalFooter>\n <LeftButtons />\n <ModalFooterContent>\n <Button size={SizeTokenValue.Small} variant={ButtonVariant.Outlined} onClick={onClose} qa={`${qa}-cancel`}>\n Отменить\n </Button>\n <Button size={SizeTokenValue.Small} variant={ButtonVariant.Primary} onClick={onSave} qa={`${qa}-save`}>\n Применить\n </Button>\n </ModalFooterContent>\n </ModalFooter>\n );\n};\n"],"names":["ModalFooter","BaseModalFooter","process","env","NODE_ENV","target","label","props","theme","colors","grey","Footer","context","useContext","DataGridSettingsContext","items","setIsOpen","qa","onClose","onSave","jsx","LeftButtons","ModalFooterContent","Button","SizeTokenValue","Small","ButtonVariant","Outlined","Primary"],"mappings":";;;;;;;AAUA,MAAMA,IAAqBC,gBAAAA,EAAAA,GAAeC,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAA,QAAA;AAAA,EAAAC,OAAA;AAAA,CAAA,uDAEhBC,CAASA,MAAAA,EAAMC,MAAMC,OAAOC,KAAK,EAAE,GAACR,OAAAA,QAAAC,IAAAC,aAC7D,eAAA,KAAA,08DAAA,GAEYO,IAAmBA,MAAM;AAC9BC,QAAAA,IAAUC,EAAWC,CAAuB,GAC5C;AAAA,IAACC,OAAAA;AAAAA,IAAOC,WAAAA;AAAAA,IAAWC,IAAAA;AAAAA,EAAAA,IAAML,GAEzBM,IAAUA,MAAMF,EAAU,EAAK,GAC/BG,IAASA,MAAMP,EAAQO,OAAOJ,CAAK;AAEzC,2BACGf,GACC,EAAA,UAAA;AAAA,IAAA,gBAAAoB,EAACC,GAAW,EAAA;AAAA,sBACXC,GACC,EAAA,UAAA;AAAA,MAAA,gBAAAF,EAACG,GAAO,EAAA,MAAMC,EAAeC,OAAO,SAASC,EAAcC,UAAU,SAAST,GAAS,IAAI,GAAGD,CAAE,WAAU,UAE1G,YAAA;AAAA,MACC,gBAAAG,EAAAG,GAAA,EAAO,MAAMC,EAAeC,OAAO,SAASC,EAAcE,SAAS,SAAST,GAAQ,IAAI,GAAGF,CAAE,SAAQ,UAEtG,YAAA,CAAA;AAAA,IAAA,EACF,CAAA;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const Search: React.FC;
|