@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.
Files changed (57) hide show
  1. package/dist/Area/index.d.ts +11 -0
  2. package/dist/Area/index.es.js +140 -0
  3. package/dist/Area/index.es.js.map +1 -0
  4. package/dist/AreaItem/AreaItem.d.ts +14 -0
  5. package/dist/AreaItem/AreaItem.es.js +78 -0
  6. package/dist/AreaItem/AreaItem.es.js.map +1 -0
  7. package/dist/AreaItem/Content.d.ts +6 -0
  8. package/dist/AreaItem/Content.es.js +26 -0
  9. package/dist/AreaItem/Content.es.js.map +1 -0
  10. package/dist/AreaItem/Handle.d.ts +4 -0
  11. package/dist/AreaItem/Handle.es.js +20 -0
  12. package/dist/AreaItem/Handle.es.js.map +1 -0
  13. package/dist/AreaItem/ItemContent.d.ts +10 -0
  14. package/dist/AreaItem/ItemContent.es.js +44 -0
  15. package/dist/AreaItem/ItemContent.es.js.map +1 -0
  16. package/dist/AreaItem/Visibility.d.ts +4 -0
  17. package/dist/AreaItem/Visibility.es.js +29 -0
  18. package/dist/AreaItem/Visibility.es.js.map +1 -0
  19. package/dist/AreaItem/index.d.ts +7 -0
  20. package/dist/AreaItem/index.es.js +48 -0
  21. package/dist/AreaItem/index.es.js.map +1 -0
  22. package/dist/Columns/hook.d.ts +13 -0
  23. package/dist/Columns/hook.es.js +66 -0
  24. package/dist/Columns/hook.es.js.map +1 -0
  25. package/dist/Columns/index.d.ts +1 -0
  26. package/dist/Columns/index.es.js +61 -0
  27. package/dist/Columns/index.es.js.map +1 -0
  28. package/dist/Columns/utils.d.ts +11 -0
  29. package/dist/Columns/utils.es.js +72 -0
  30. package/dist/Columns/utils.es.js.map +1 -0
  31. package/dist/DataGridSettings.d.ts +2 -0
  32. package/dist/DataGridSettings.es.js +51 -0
  33. package/dist/DataGridSettings.es.js.map +1 -0
  34. package/dist/DataGridSettingsContext.d.ts +12 -0
  35. package/dist/DataGridSettingsContext.es.js +22 -0
  36. package/dist/DataGridSettingsContext.es.js.map +1 -0
  37. package/dist/Footer/LeftButtons.d.ts +1 -0
  38. package/dist/Footer/LeftButtons.es.js +67 -0
  39. package/dist/Footer/LeftButtons.es.js.map +1 -0
  40. package/dist/Footer/index.d.ts +1 -0
  41. package/dist/Footer/index.es.js +30 -0
  42. package/dist/Footer/index.es.js.map +1 -0
  43. package/dist/Search/index.d.ts +1 -0
  44. package/dist/Search/index.es.js +43 -0
  45. package/dist/Search/index.es.js.map +1 -0
  46. package/dist/index.cjs +15 -0
  47. package/dist/index.cjs.map +1 -0
  48. package/dist/index.d.ts +3 -0
  49. package/dist/index.es.js +7 -0
  50. package/dist/index.es.js.map +1 -0
  51. package/dist/types.d.ts +65 -0
  52. package/dist/types.es.js +5 -0
  53. package/dist/types.es.js.map +1 -0
  54. package/dist/utils.d.ts +7 -0
  55. package/dist/utils.es.js +53 -0
  56. package/dist/utils.es.js.map +1 -0
  57. 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":";;AAOO,MAAMA,IAAWA,CAACC,GAAqBC,GAAoCC,MAA6B;;AAC7G,QAAMC,IAAa;AAAA,IACjB,CAACC,EAAWC,OAAO,GAAG;AAAA,IACtB,CAACD,EAAWE,SAAS,GAAG;AAAA,IACxB,CAACF,EAAWG,UAAU,GAAG;AAAA,EAC3B;AAEIC,MAAAA,IAAW,CAAC,GAAGR,CAAK,EACrBS,KAAK,CAACC,GAAGC,MAAM;AACd,UAAMC,IAAQF,EAAED,OAAOT,EAAMa,SAASV,EAAWO,EAAEI,IAAI,GACjDC,IAAQJ,EAAEF,OAAOT,EAAMa,SAASV,EAAWQ,EAAEG,IAAI;AAEvD,WAAOF,IAAQG;AAAAA,EAChB,CAAA,EACAC,IAAI,CAACC,GAAMR,OAAU;AAAA,IAAC,GAAGQ;AAAAA,IAAMR,MAAAA;AAAAA,EAAAA,EAAM;AAExC,QAAMS,IAAWV,EAASW,KAAKF,OAAQA,EAAKG,OAAOlB,EAAKkB,EAAE;AAE1D,MAAI,CAACF,GAAU;AACPG,UAAAA,KAAkCnB,KAAAA,IAAAA,EAAKoB,SAALpB,gBAAAA,EAAWqB,YAAXrB,gBAAAA,EAAoBY;AAC5D,WAAIO,MACFb,IAAWA,EAASQ,IAAIC,CAAAA,MAASA,EAAKG,OAAOnB,EAAOmB,KAAK;AAAA,MAAC,GAAGH;AAAAA,MAAMH,MAAMO;AAAAA,QAAWJ,CAAK,IAGpFT;AAAAA,EAAAA;AAGT,QAAMgB,IAAUN,EAAST,QAAQR,EAAOwB,UAAU,IAAI,IAEhD,CAACC,GAAeC,CAAU,IAAInB,EAASoB,OAC3C,CAACC,GAAKZ,OACJY,EAAI,CAACZ,EAAKa,QAAQ,EAAEC,KAAKd,CAAI,GACtBY,IAET,CAAC,CAAA,GAAI,CAAA,CAAE,CACT;AAEWH,EAAAA,IAAAA,EAAcV,IAAIC,CAAQA,MAC/BA,EAAKG,OAAOnB,EAAOmB,KACd;AAAA,IAAC,GAAGH;AAAAA,IAAMR,MAAMe;AAAAA,IAASV,MAAMI,EAASJ;AAAAA,EAAI,IAGjDG,EAAKR,QAAQe,IACR;AAAA,IAAC,GAAGP;AAAAA,IAAMR,MAAMQ,EAAKR,OAAO;AAAA,EAAC,IAG/BQ,CACR,GAEDT,EAASC,KAAK,CAACC,GAAGC,MAAMD,EAAED,OAAOE,EAAEF,IAAI;AAEvC,aAAWQ,KAAQU;AACjBnB,IAAAA,EAASwB,OAAOf,EAAKR,MAAM,GAAGQ,CAAI;AAGpC,SAAOT,EAASQ,IAAI,CAACC,GAAMR,OAAU;AAAA,IAAC,GAAGQ;AAAAA,IAAMR,MAAAA;AAAAA,EAAAA,EAAM;AACvD,GAEawB,IAAWA,CAACC,GAAsBjC,GAAgBC,MAAe;;AAC5E,QAAMgB,IAAWgB,EAAUC,IAAIjC,EAAKkB,EAAE;AACtC,MAAI,CAACF;AACI,WAAA;AAAA,MAACkB,QAAQC;AAAAA,MAAWZ,SAASY;AAAAA,IAAS;AAG/C,QAAMC,MAAUpC,KAAAA,KAAAA,IAAAA,EAAKoB,SAALpB,gBAAAA,EAAWqB,YAAXrB,gBAAAA,EAAoBqC,aAApBrC,gBAAAA,EAA8BsC,WAAU,GAClDC,KAAYxC,KAAAA,KAAAA,IAAAA,EAAOyC,SAAPzC,gBAAAA,EAAasB,YAAbtB,gBAAAA,EAAsB0C,eAAtB1C,gBAAAA,EAAkC2C,KAE9CnB,IAAUa,KAAW,CAAC,CAACG,KAAaA,MAAYvC,IAAAA,EAAKwC,SAALxC,gBAAAA,EAAW0C;AAE1D,SAAA;AAAA,IAACR,QAAQlB,EAASE;AAAAA,IAAIK,SAAAA;AAAAA,EAAO;AACtC,GAEaoB,IAAyCC,CAAQA,MAAA;AACtDC,QAAAA,IAAaC,EAAiBF,CAAI;AAEpCC,MAAAA,EAAWlC,WAAW;AACpB,QAAA;AACIoC,YAAAA,IAAYF,EAAWG,OAAOjC,CAAQA,MAAA;;AAAA,gBAAC,GAACA,KAAAA,KAAAA,KAAAA,IAAAA,EAAKK,SAALL,gBAAAA,EAAWkC,uBAAXlC,gBAAAA,EAA+BK,SAA/BL,gBAAAA,EAAqCM,YAArCN,QAAAA,EAA8CsB;AAAAA,OAAQ;AAChGU,UAAAA,EAAUpC,WAAW;AAChBoC,eAAAA;AAAAA,IACT,QAEM;AAAA,IAAA;AAGHF,SAAAA;AACT;"}
@@ -0,0 +1,2 @@
1
+ import { DataGridSettingsProps } from './types';
2
+ export declare const DataGridSettings: React.FC<DataGridSettingsProps>;
@@ -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;