1 |
|
2 | "use strict";
|
3 | var __importStar = (this && this.__importStar) || function (mod) {
|
4 | if (mod && mod.__esModule) return mod;
|
5 | var result = {};
|
6 | if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
7 | result["default"] = mod;
|
8 | return result;
|
9 | };
|
10 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
11 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
12 | };
|
13 | Object.defineProperty(exports, "__esModule", { value: true });
|
14 | var ag_grid_community_1 = require("ag-grid-community");
|
15 | var react_1 = __importStar(require("react"));
|
16 | var beansContext_1 = require("./beansContext");
|
17 | var gridBodyComp_1 = __importDefault(require("./gridBodyComp"));
|
18 | var reactComment_1 = __importDefault(require("./reactComment"));
|
19 | var tabGuardComp_1 = __importDefault(require("./tabGuardComp"));
|
20 | var utils_1 = require("./utils");
|
21 | var GridComp = function (_a) {
|
22 | var context = _a.context;
|
23 | var _b = react_1.useState(''), rtlClass = _b[0], setRtlClass = _b[1];
|
24 | var _c = react_1.useState(''), keyboardFocusClass = _c[0], setKeyboardFocusClass = _c[1];
|
25 | var _d = react_1.useState(''), layoutClass = _d[0], setLayoutClass = _d[1];
|
26 | var _e = react_1.useState(null), cursor = _e[0], setCursor = _e[1];
|
27 | var _f = react_1.useState(null), userSelect = _f[0], setUserSelect = _f[1];
|
28 | var _g = react_1.useState(false), initialised = _g[0], setInitialised = _g[1];
|
29 | var _h = react_1.useState(), tabGuardReady = _h[0], setTabGuardReady = _h[1];
|
30 | var gridCtrlRef = react_1.useRef(null);
|
31 | var eRootWrapperRef = react_1.useRef(null);
|
32 | var tabGuardRef = react_1.useRef();
|
33 | var eGridBodyParentRef = react_1.useRef(null);
|
34 | var focusInnerElementRef = react_1.useRef(function () { return undefined; });
|
35 | var onTabKeyDown = react_1.useCallback(function () { return undefined; }, []);
|
36 | var beans = react_1.useMemo(function () { return context.getBean('beans'); }, []);
|
37 | reactComment_1.default(' AG Grid ', eRootWrapperRef);
|
38 |
|
39 | react_1.useEffect(function () {
|
40 | var currentController = gridCtrlRef.current = context.createBean(new ag_grid_community_1.GridCtrl());
|
41 | return function () {
|
42 | context.destroyBean(currentController);
|
43 | gridCtrlRef.current = null;
|
44 | };
|
45 | }, []);
|
46 |
|
47 | react_1.useEffect(function () {
|
48 | var gridCtrl = gridCtrlRef.current;
|
49 | focusInnerElementRef.current = gridCtrl.focusInnerElement.bind(gridCtrl);
|
50 | var compProxy = {
|
51 | destroyGridUi: function () { },
|
52 | setRtlClass: setRtlClass,
|
53 | addOrRemoveKeyboardFocusClass: function (addOrRemove) { return setKeyboardFocusClass(addOrRemove ? ag_grid_community_1.FocusService.AG_KEYBOARD_FOCUS : ''); },
|
54 | forceFocusOutOfContainer: function () {
|
55 | tabGuardRef.current.forceFocusOutOfContainer();
|
56 | },
|
57 | updateLayoutClasses: setLayoutClass,
|
58 | getFocusableContainers: function () {
|
59 | var els = [];
|
60 | var gridBodyCompEl = eRootWrapperRef.current.querySelector('.ag-root');
|
61 | var sideBarEl = eRootWrapperRef.current.querySelector('.ag-side-bar');
|
62 | if (gridBodyCompEl) {
|
63 | els.push(gridBodyCompEl);
|
64 | }
|
65 | if (sideBarEl) {
|
66 | els.push(sideBarEl);
|
67 | }
|
68 | return els;
|
69 | },
|
70 | setCursor: setCursor,
|
71 | setUserSelect: setUserSelect
|
72 | };
|
73 | gridCtrl.setComp(compProxy, eRootWrapperRef.current, eRootWrapperRef.current);
|
74 | setInitialised(true);
|
75 | }, []);
|
76 |
|
77 | react_1.useEffect(function () {
|
78 | if (!tabGuardReady) {
|
79 | return;
|
80 | }
|
81 | var gridCtrl = gridCtrlRef.current;
|
82 | var beansToDestroy = [];
|
83 | var agStackComponentsRegistry = beans.agStackComponentsRegistry;
|
84 | var HeaderDropZonesClass = agStackComponentsRegistry.getComponentClass('AG-GRID-HEADER-DROP-ZONES');
|
85 | var SideBarClass = agStackComponentsRegistry.getComponentClass('AG-SIDE-BAR');
|
86 | var StatusBarClass = agStackComponentsRegistry.getComponentClass('AG-STATUS-BAR');
|
87 | var WatermarkClass = agStackComponentsRegistry.getComponentClass('AG-WATERMARK');
|
88 | var PaginationClass = agStackComponentsRegistry.getComponentClass('AG-PAGINATION');
|
89 | var additionalEls = [];
|
90 | var eRootWrapper = eRootWrapperRef.current;
|
91 | var eGridBodyParent = eGridBodyParentRef.current;
|
92 | if (gridCtrl.showDropZones() && HeaderDropZonesClass) {
|
93 | var headerDropZonesComp = context.createBean(new HeaderDropZonesClass());
|
94 | var eGui = headerDropZonesComp.getGui();
|
95 | eRootWrapper.insertAdjacentElement('afterbegin', eGui);
|
96 | additionalEls.push(eGui);
|
97 | beansToDestroy.push(headerDropZonesComp);
|
98 | }
|
99 | if (gridCtrl.showSideBar() && SideBarClass) {
|
100 | var sideBarComp = context.createBean(new SideBarClass());
|
101 | var eGui = sideBarComp.getGui();
|
102 | var bottomTabGuard = eGridBodyParent.querySelector('.ag-tab-guard-bottom');
|
103 | if (bottomTabGuard) {
|
104 | bottomTabGuard.insertAdjacentElement('beforebegin', eGui);
|
105 | additionalEls.push(eGui);
|
106 | }
|
107 | beansToDestroy.push(sideBarComp);
|
108 | }
|
109 | if (gridCtrl.showStatusBar() && StatusBarClass) {
|
110 | var statusBarComp = context.createBean(new StatusBarClass());
|
111 | var eGui = statusBarComp.getGui();
|
112 | eRootWrapper.insertAdjacentElement('beforeend', eGui);
|
113 | additionalEls.push(eGui);
|
114 | beansToDestroy.push(statusBarComp);
|
115 | }
|
116 | if (PaginationClass) {
|
117 | var paginationComp = context.createBean(new PaginationClass());
|
118 | var eGui = paginationComp.getGui();
|
119 | eRootWrapper.insertAdjacentElement('beforeend', eGui);
|
120 | additionalEls.push(eGui);
|
121 | beansToDestroy.push(paginationComp);
|
122 | }
|
123 | if (gridCtrl.showWatermark() && WatermarkClass) {
|
124 | var watermarkComp = context.createBean(new WatermarkClass());
|
125 | var eGui = watermarkComp.getGui();
|
126 | eRootWrapper.insertAdjacentElement('beforeend', eGui);
|
127 | additionalEls.push(eGui);
|
128 | beansToDestroy.push(watermarkComp);
|
129 | }
|
130 | return function () {
|
131 | context.destroyBeans(beansToDestroy);
|
132 | additionalEls.forEach(function (el) {
|
133 | if (el.parentElement) {
|
134 | el.parentElement.removeChild(el);
|
135 | }
|
136 | });
|
137 | };
|
138 | }, [tabGuardReady]);
|
139 | var rootWrapperClasses = react_1.useMemo(function () { return utils_1.classesList('ag-root-wrapper', rtlClass, keyboardFocusClass, layoutClass); }, [rtlClass, keyboardFocusClass, layoutClass]);
|
140 | var rootWrapperBodyClasses = react_1.useMemo(function () { return utils_1.classesList('ag-root-wrapper-body', 'ag-focus-managed', layoutClass); }, [layoutClass]);
|
141 | var topStyle = react_1.useMemo(function () { return ({
|
142 | userSelect: userSelect != null ? userSelect : '',
|
143 | WebkitUserSelect: userSelect != null ? userSelect : '',
|
144 | cursor: cursor != null ? cursor : ''
|
145 | }); }, [userSelect, cursor]);
|
146 | var eGridBodyParent = eGridBodyParentRef.current;
|
147 | var setTabGuardCompRef = react_1.useCallback(function (ref) {
|
148 | tabGuardRef.current = ref;
|
149 | setTabGuardReady(true);
|
150 | }, []);
|
151 | return (react_1.default.createElement("div", { ref: eRootWrapperRef, className: rootWrapperClasses, style: topStyle },
|
152 | react_1.default.createElement("div", { className: rootWrapperBodyClasses, ref: eGridBodyParentRef }, initialised && eGridBodyParent &&
|
153 | react_1.default.createElement(beansContext_1.BeansContext.Provider, { value: beans },
|
154 | react_1.default.createElement(tabGuardComp_1.default, { ref: setTabGuardCompRef, eFocusableElement: eGridBodyParent, onTabKeyDown: onTabKeyDown, gridCtrl: gridCtrlRef.current },
|
155 |
|
156 |
|
157 |
|
158 |
|
159 | react_1.default.createElement(gridBodyComp_1.default, null))))));
|
160 | };
|
161 | exports.default = react_1.memo(GridComp);
|