elab_components 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +46 -0
  2. package/dist/App.d.ts +5 -0
  3. package/dist/App.test.d.ts +1 -0
  4. package/dist/components/Button/index.d.ts +6 -0
  5. package/dist/components/Button/props.d.ts +19 -0
  6. package/dist/components/ButtonGroup/index.d.ts +6 -0
  7. package/dist/components/ButtonGroup/props.d.ts +61 -0
  8. package/dist/components/Chart/index.d.ts +6 -0
  9. package/dist/components/Chart/props.d.ts +48 -0
  10. package/dist/components/DateInputs/Calendar/index.d.ts +6 -0
  11. package/dist/components/DateInputs/Calendar/props.d.ts +21 -0
  12. package/dist/components/DateInputs/DateInput/index.d.ts +6 -0
  13. package/dist/components/DateInputs/DateInput/props.d.ts +24 -0
  14. package/dist/components/DateInputs/DatePicker/index.d.ts +6 -0
  15. package/dist/components/DateInputs/DatePicker/props.d.ts +27 -0
  16. package/dist/components/DateInputs/DateRangePicker/index.d.ts +6 -0
  17. package/dist/components/DateInputs/DateRangePicker/props.d.ts +17 -0
  18. package/dist/components/DateInputs/DateTimePicker/index.d.ts +6 -0
  19. package/dist/components/DateInputs/DateTimePicker/props.d.ts +17 -0
  20. package/dist/components/DateInputs/MultiViewCalendar/index.d.ts +6 -0
  21. package/dist/components/DateInputs/MultiViewCalendar/props.d.ts +10 -0
  22. package/dist/components/DateInputs/TimePicker/index.d.ts +6 -0
  23. package/dist/components/DateInputs/TimePicker/props.d.ts +19 -0
  24. package/dist/components/Dialogs/Dialog/index.d.ts +6 -0
  25. package/dist/components/Dialogs/Dialog/props.d.ts +6 -0
  26. package/dist/components/Dialogs/Window/index.d.ts +6 -0
  27. package/dist/components/Dialogs/Window/props.d.ts +6 -0
  28. package/dist/components/Drawer/index.d.ts +6 -0
  29. package/dist/components/DropDownButton/index.d.ts +6 -0
  30. package/dist/components/DropDownButton/props.d.ts +22 -0
  31. package/dist/components/DropDowns/AutoComplete/index.d.ts +6 -0
  32. package/dist/components/DropDowns/AutoComplete/props.d.ts +4 -0
  33. package/dist/components/DropDowns/ComboBox/index.d.ts +6 -0
  34. package/dist/components/DropDowns/ComboBox/props.d.ts +4 -0
  35. package/dist/components/DropDowns/DropDownList/index.d.ts +6 -0
  36. package/dist/components/DropDowns/DropDownList/props.d.ts +4 -0
  37. package/dist/components/DropDowns/MultiSelect/index.d.ts +6 -0
  38. package/dist/components/DropDowns/MultiSelect/props.d.ts +4 -0
  39. package/dist/components/Editor/index.d.ts +6 -0
  40. package/dist/components/Editor/props.d.ts +8 -0
  41. package/dist/components/Gauges/ArcGauge/index.d.ts +6 -0
  42. package/dist/components/Gauges/ArcGauge/props.d.ts +12 -0
  43. package/dist/components/Grid/GridFormInlineEditor.d.ts +4 -0
  44. package/dist/components/Grid/RunQueries.d.ts +4 -0
  45. package/dist/components/Grid/index.d.ts +50 -0
  46. package/dist/components/Grid/props.d.ts +36 -0
  47. package/dist/components/Inputs/Input/index.d.ts +6 -0
  48. package/dist/components/Inputs/Input/props.d.ts +7 -0
  49. package/dist/components/Inputs/MaskedTextBox/index.d.ts +6 -0
  50. package/dist/components/Inputs/MaskedTextBox/props.d.ts +7 -0
  51. package/dist/components/Inputs/NumericTextBox/index.d.ts +6 -0
  52. package/dist/components/Inputs/NumericTextBox/props.d.ts +7 -0
  53. package/dist/components/Inputs/Switch/index.d.ts +6 -0
  54. package/dist/components/Inputs/Switch/props.d.ts +7 -0
  55. package/dist/components/SplitButton/index.d.ts +6 -0
  56. package/dist/components/SplitButton/props.d.ts +42 -0
  57. package/dist/components/Toolbar/index.d.ts +6 -0
  58. package/dist/components/Toolbar/props.d.ts +7 -0
  59. package/dist/components/TreeView/index.d.ts +6 -0
  60. package/dist/components/TreeView/props.d.ts +17 -0
  61. package/dist/index.d.ts +2 -0
  62. package/dist/index.esm.js +658 -0
  63. package/dist/index.esm.js.map +1 -0
  64. package/dist/index.js +666 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/reportWebVitals.d.ts +0 -0
  67. package/dist/setupTests.d.ts +1 -0
  68. package/dist/utils/icons.d.ts +1 -0
  69. package/dist/utils/locale.d.ts +4 -0
  70. package/package.json +199 -0
@@ -0,0 +1,658 @@
1
+ import React, { useState, useMemo, useCallback, useEffect } from 'react';
2
+ import ReactDOM from 'react-dom/client';
3
+ import { Grid, getSelectedState, GridColumn } from '@progress/kendo-react-grid';
4
+ import styled from 'styled-components';
5
+ import { getter, process } from '@progress/kendo-data-query';
6
+ import { Dialog, DialogActionsBar } from '@progress/kendo-react-dialogs';
7
+ import { ExcelExport } from '@progress/kendo-react-excel-export';
8
+ import { Input, Checkbox } from '@progress/kendo-react-inputs';
9
+ import { Button } from '@progress/kendo-react-buttons';
10
+ import { DropDownList } from '@progress/kendo-react-dropdowns';
11
+
12
+ function styleInject(css, ref) {
13
+ if ( ref === void 0 ) ref = {};
14
+ var insertAt = ref.insertAt;
15
+
16
+ if (!css || typeof document === 'undefined') { return; }
17
+
18
+ var head = document.head || document.getElementsByTagName('head')[0];
19
+ var style = document.createElement('style');
20
+ style.type = 'text/css';
21
+
22
+ if (insertAt === 'top') {
23
+ if (head.firstChild) {
24
+ head.insertBefore(style, head.firstChild);
25
+ } else {
26
+ head.appendChild(style);
27
+ }
28
+ } else {
29
+ head.appendChild(style);
30
+ }
31
+
32
+ if (style.styleSheet) {
33
+ style.styleSheet.cssText = css;
34
+ } else {
35
+ style.appendChild(document.createTextNode(css));
36
+ }
37
+ }
38
+
39
+ var css_248z$1 = "/** @format */\r\n@import '@progress/kendo-theme-material/dist/all';\r\n\r\nbody {\r\n margin: 0;\r\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto',\r\n 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans',\r\n 'Helvetica Neue', sans-serif;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n}\r\n\r\ncode {\r\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\r\n monospace;\r\n}\r\n";
40
+ styleInject(css_248z$1);
41
+
42
+ /******************************************************************************
43
+ Copyright (c) Microsoft Corporation.
44
+
45
+ Permission to use, copy, modify, and/or distribute this software for any
46
+ purpose with or without fee is hereby granted.
47
+
48
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
49
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
50
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
51
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
52
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
53
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
54
+ PERFORMANCE OF THIS SOFTWARE.
55
+ ***************************************************************************** */
56
+
57
+ var __assign = function() {
58
+ __assign = Object.assign || function __assign(t) {
59
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
60
+ s = arguments[i];
61
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
62
+ }
63
+ return t;
64
+ };
65
+ return __assign.apply(this, arguments);
66
+ };
67
+
68
+ function __rest(s, e) {
69
+ var t = {};
70
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
71
+ t[p] = s[p];
72
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
73
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
74
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
75
+ t[p[i]] = s[p[i]];
76
+ }
77
+ return t;
78
+ }
79
+
80
+ function __awaiter(thisArg, _arguments, P, generator) {
81
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
82
+ return new (P || (P = Promise))(function (resolve, reject) {
83
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
84
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
85
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
86
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
87
+ });
88
+ }
89
+
90
+ function __generator(thisArg, body) {
91
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
92
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
93
+ function verb(n) { return function (v) { return step([n, v]); }; }
94
+ function step(op) {
95
+ if (f) throw new TypeError("Generator is already executing.");
96
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
97
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
98
+ if (y = 0, t) op = [op[0] & 2, t.value];
99
+ switch (op[0]) {
100
+ case 0: case 1: t = op; break;
101
+ case 4: _.label++; return { value: op[1], done: false };
102
+ case 5: _.label++; y = op[1]; op = [0]; continue;
103
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
104
+ default:
105
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
106
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
107
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
108
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
109
+ if (t[2]) _.ops.pop();
110
+ _.trys.pop(); continue;
111
+ }
112
+ op = body.call(thisArg, _);
113
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
114
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
115
+ }
116
+ }
117
+
118
+ function __spreadArray(to, from, pack) {
119
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
120
+ if (ar || !(i in from)) {
121
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
122
+ ar[i] = from[i];
123
+ }
124
+ }
125
+ return to.concat(ar || Array.prototype.slice.call(from));
126
+ }
127
+
128
+ function __makeTemplateObject(cooked, raw) {
129
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
130
+ return cooked;
131
+ }
132
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
133
+ var e = new Error(message);
134
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
135
+ };
136
+
137
+ var css_248z = ".App {\r\n text-align: center;\r\n}\r\n\r\n.App-logo {\r\n height: 40vmin;\r\n pointer-events: none;\r\n}\r\n\r\n@media (prefers-reduced-motion: no-preference) {\r\n .App-logo {\r\n animation: App-logo-spin infinite 20s linear;\r\n }\r\n}\r\n\r\n.App-header {\r\n background-color: #282c34;\r\n min-height: 100vh;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n font-size: calc(10px + 2vmin);\r\n color: white;\r\n}\r\n\r\n.App-link {\r\n color: #61dafb;\r\n}\r\n\r\n@keyframes App-logo-spin {\r\n from {\r\n transform: rotate(0deg);\r\n }\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n}\r\n";
138
+ styleInject(css_248z);
139
+
140
+ var StyledButton = styled(Button)(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject([""], [""])));
141
+ var OkButton = function (_a) {
142
+ var props = __rest(_a, []);
143
+ return React.createElement(StyledButton, __assign({}, props));
144
+ };
145
+ var templateObject_1$3;
146
+
147
+ var StyledDropDownList = styled(DropDownList)(templateObject_1$2 || (templateObject_1$2 = __makeTemplateObject([""], [""])));
148
+ var OkDropDownList = function (_a) {
149
+ var props = __rest(_a, []);
150
+ return React.createElement(StyledDropDownList, __assign({}, props));
151
+ };
152
+ var templateObject_1$2;
153
+
154
+ var StyledInput = styled(Input)(templateObject_1$1 || (templateObject_1$1 = __makeTemplateObject([""], [""])));
155
+ var OkInput = function (_a) {
156
+ var props = __rest(_a, []);
157
+ return React.createElement(StyledInput, __assign({}, props));
158
+ };
159
+ var templateObject_1$1;
160
+
161
+ /** @format */
162
+ var StyledGrid = styled(Grid)(templateObject_1 || (templateObject_1 = __makeTemplateObject([""], [""])));
163
+ var OkGrid = function (_a) {
164
+ var props = __rest(_a, []);
165
+ var resizable = props.resizable, reorderable = props.reorderable, data = props.data, pageSizeValue = props.pageSizeValue, filterable = props.filterable, style = props.style, sortable = props.sortable, groupable = props.groupable, editField = props.editField, skip = props.skip, take = props.take, detail = props.detail, expandField = props.expandField, dataItemKey = props.dataItemKey, columnConfigs = props.columnConfigs, setSelectedState = props.setSelectedState, selectedState = props.selectedState; props.setPageSizeValue; props.setPage; var columnOption = props.columnOption, setColumnOption = props.setColumnOption, expandChange = props.expandChange, setSearchKeyword = props.setSearchKeyword, searchKeyword = props.searchKeyword, allColumnsField = props.allColumnsField, expandedRows = props.expandedRows;
166
+ var excelExport = React.useRef(null);
167
+ var _b = useState([]), newData = _b[0], setNewData = _b[1];
168
+ var _c = useState(), runQueriesFilter = _c[0]; _c[1];
169
+ var _d = React.useState(null), editID = _d[0]; _d[1];
170
+ var isRowExpanded = function (productID) {
171
+ return expandedRows.includes(productID);
172
+ };
173
+ var idGetter = getter(dataItemKey);
174
+ var filteredProducts = useMemo(function () {
175
+ var lowerSearchTerm = searchKeyword.toLowerCase();
176
+ return data
177
+ .filter(function (product) {
178
+ return Object.values(product).some(function (value) {
179
+ if (typeof value === 'object' && value !== null) {
180
+ return Object.values(value).some(function (nestedValue) {
181
+ return nestedValue.toString().toLowerCase().includes(lowerSearchTerm);
182
+ });
183
+ }
184
+ return value.toString().toLowerCase().includes(lowerSearchTerm);
185
+ });
186
+ })
187
+ .map(function (product, index) {
188
+ var _a;
189
+ return (__assign(__assign({}, product), (_a = { expanded: isRowExpanded(product.id) }, _a['selected'] = selectedState[idGetter(product)], _a.inEdit = product.id === editID, _a['formDataIndex'] = index, _a)));
190
+ });
191
+ }, [data, searchKeyword, expandedRows, selectedState, editID]);
192
+ console.log('filteredProducts', filteredProducts);
193
+ var _e = React.useState({
194
+ take: 10,
195
+ skip: 0,
196
+ group: [],
197
+ sort: [],
198
+ filter: {
199
+ logic: 'and',
200
+ filters: [],
201
+ },
202
+ }), dataState = _e[0], setDataState = _e[1];
203
+ var _f = React.useState(columnConfigs), columns = _f[0], setColumns = _f[1];
204
+ var _g = React.useState(function () {
205
+ var savedOptions = localStorage.getItem('gridOptions');
206
+ return savedOptions
207
+ ? JSON.parse(savedOptions)
208
+ : {
209
+ filter: false,
210
+ groupable: false,
211
+ filterByQueries: false,
212
+ };
213
+ }), gridOptions = _g[0], setGridOptions = _g[1];
214
+ var _h = React.useState(process(data, dataState)), dataResult = _h[0], setDataResult = _h[1];
215
+ var onDataStateChange = function (e) {
216
+ setDataState(e.dataState);
217
+ setDataResult(process(data, e.dataState));
218
+ };
219
+ var onSelectionChange = React.useCallback(function (event) {
220
+ var newSelectedState = getSelectedState({
221
+ event: event,
222
+ selectedState: selectedState,
223
+ dataItemKey: dataItemKey,
224
+ });
225
+ setSelectedState(newSelectedState);
226
+ }, [selectedState]);
227
+ var onHeaderSelectionChange = React.useCallback(function (event) {
228
+ var checkboxElement = event.syntheticEvent.target;
229
+ var checked = checkboxElement.checked;
230
+ var newSelectedState = {};
231
+ event.dataItems.forEach(function (item) {
232
+ newSelectedState[idGetter(item)] = checked;
233
+ });
234
+ setSelectedState(newSelectedState);
235
+ }, []);
236
+ var onColumnReorderChange = useCallback(function (e) {
237
+ console.log('GridColumnReorderEvent', e.columnId);
238
+ console.log('GridColumnReorderEvent', e.columns);
239
+ console.log('GridColumnReorderEvent', e.nativeEvent);
240
+ console.log('GridColumnReorderEvent', e.target);
241
+ // use a oderIndex
242
+ }, []);
243
+ var onItemChange = function (event) {
244
+ // const editedItemID = event.dataItem;
245
+ };
246
+ useEffect(function () {
247
+ setDataState(function (item) {
248
+ return __assign(__assign({}, item), { filter: runQueriesFilter });
249
+ });
250
+ }, [data, runQueriesFilter]);
251
+ useEffect(function () {
252
+ setDataResult(process(data, dataState));
253
+ }, [data, dataState]);
254
+ console.log(gridOptions);
255
+ console.log('dataResult', dataResult);
256
+ var onFilterChange = function (e) {
257
+ setSearchKeyword(e.target.value);
258
+ };
259
+ var exportExport = function () {
260
+ if (excelExport.current !== null) {
261
+ excelExport.current.save(newData);
262
+ }
263
+ };
264
+ var addNew = function () {
265
+ var newDataItem = {
266
+ id: '',
267
+ title: 'string',
268
+ price: 0,
269
+ description: 'string',
270
+ categoryId: 0,
271
+ images: 'string',
272
+ };
273
+ setNewData(__spreadArray([newDataItem], newData, true));
274
+ };
275
+ return (React.createElement("div", { style: {
276
+ display: 'flex',
277
+ flexDirection: 'column',
278
+ gap: 25,
279
+ marginTop: '25px',
280
+ marginLeft: '10px',
281
+ marginRight: '10px',
282
+ } },
283
+ ' ',
284
+ React.createElement("div", null,
285
+ React.createElement("div", { style: {
286
+ display: 'flex',
287
+ justifyContent: 'space-between',
288
+ alignItems: 'center',
289
+ } },
290
+ React.createElement(OkInput, { style: {
291
+ width: '30%',
292
+ }, value: searchKeyword, onChange: function (e) { return onFilterChange(e); }, placeholder: "Filter by keyword" }),
293
+ React.createElement("div", { style: { marginLeft: 'auto', display: 'flex', gap: '15px' } },
294
+ React.createElement(OkButton, { onClick: function () {
295
+ return setColumnOption(function (prevState) { return (__assign(__assign({}, prevState), { columnOptionModel: true })); });
296
+ }, themeColor: 'primary', type: "button" }, "Column option"),
297
+ React.createElement(OkButton, { style: {
298
+ width: '120px',
299
+ }, title: "Export Excel", themeColor: 'primary', type: "button", onClick: exportExport }, "Export"),
300
+ React.createElement(OkButton, { themeColor: 'primary', type: "button" }, "Open in Queries"),
301
+ React.createElement(OkButton, { onClick: addNew, themeColor: 'primary', type: "button" }, "Create +"),
302
+ React.createElement(OkButton, { onClick: function () {
303
+ return setColumnOption(function (prevState) { return (__assign(__assign({}, prevState), { columnConfigsModel: true })); });
304
+ }, themeColor: 'primary', type: "button" }, "view option")))),
305
+ React.createElement(ExcelExport, { data: dataResult, ref: excelExport },
306
+ React.createElement(StyledGrid, __assign({ onHeaderSelectionChange: function (e) {
307
+ return onHeaderSelectionChange(e);
308
+ }, onSelectionChange: function (e) {
309
+ return onSelectionChange(e);
310
+ }, onColumnReorder: function (e) {
311
+ onColumnReorderChange(e);
312
+ }, skip: skip, onExpandChange: function (e) {
313
+ expandChange(e);
314
+ }, onDataStateChange: onDataStateChange, onItemChange: onItemChange, pageable: {
315
+ buttonCount: 4,
316
+ pageSizes: [2, 10, 15, 'All'],
317
+ pageSizeValue: pageSizeValue,
318
+ }, filterable: filterable, editField: editField, reorderable: reorderable, groupable: groupable, resizable: resizable, style: style, data: filteredProducts, dataItemKey: dataItemKey, take: take, sortable: sortable, detail: detail, expandField: expandField }, dataState), columns.map(function (col, index) { return (React.createElement(GridColumn, { filterable: true, key: index, editable: true, field: col.field, title: col.title, format: col.format, cell: col.cell, width: col.width, headerSelectionValue: col.headerSelectionValue, editor: col.editor })); }))),
319
+ columnOption.columnOptionModel && (React.createElement(ColumnAdd, { setColumnOption: setColumnOption, setColumns: setColumns, columns: columns, allColumnsField: allColumnsField, dataResult: dataResult, setDataResult: setDataResult })),
320
+ columnOption.columnConfigsModel && (React.createElement(GridFeatureEnableHandler, { gridOptions: gridOptions, setGridOptions: setGridOptions, setColumnOption: setColumnOption }))));
321
+ };
322
+ var SortableItem = function (_a) {
323
+ var filterColumnUnShows = _a.filterColumnUnShows, handleColumnChange = _a.handleColumnChange, handleRemoveColumn = _a.handleRemoveColumn, selectedColumn = _a.selectedColumn, index = _a.index, col = _a.col;
324
+ return (React.createElement("li", { style: {
325
+ display: 'flex',
326
+ alignItems: 'center',
327
+ marginBottom: '10px',
328
+ } },
329
+ React.createElement(OkDropDownList, { style: {
330
+ backgroundColor: 'white',
331
+ }, data: filterColumnUnShows !== null && filterColumnUnShows !== void 0 ? filterColumnUnShows : [], dataItemKey: "field", textField: "title", value: selectedColumn[index] || '', onChange: function (event) { return handleColumnChange(event, index, 'existing'); } }),
332
+ React.createElement("div", { style: {
333
+ fontSize: '24px',
334
+ marginRight: '10px',
335
+ marginLeft: '10px',
336
+ fontWeight: '700px',
337
+ color: 'red',
338
+ }, onClick: function () { return handleRemoveColumn(col.id); } }, "X")));
339
+ };
340
+ var ColumnAdd = function (_a) {
341
+ var columns = _a.columns, setColumns = _a.setColumns, setColumnOption = _a.setColumnOption, allColumnsField = _a.allColumnsField;
342
+ var _b = useState([]), selectedColumn = _b[0], setSelectedColumn = _b[1];
343
+ var handleAddColumn = function () {
344
+ setSelectedColumn(function (item) {
345
+ return __spreadArray(__spreadArray([], item, true), [
346
+ {
347
+ field: '',
348
+ title: '',
349
+ id: item.length + 1,
350
+ },
351
+ ], false);
352
+ });
353
+ };
354
+ var handleRemoveColumn = function (field) {
355
+ setSelectedColumn(selectedColumn.filter(function (col) { return col.id !== field; }));
356
+ };
357
+ var handleColumnChange = function (e, index, type) {
358
+ var newValue = e.target.value;
359
+ if (type === 'existing') {
360
+ var newSelectedColumn = __spreadArray([], selectedColumn, true);
361
+ newSelectedColumn[index] = newValue;
362
+ setSelectedColumn(newSelectedColumn);
363
+ }
364
+ };
365
+ var handleSaveColumns = function () {
366
+ var dynamicColumns = selectedColumn.map(function (col) {
367
+ var dynamicColumn = {};
368
+ Object.keys(col).forEach(function (key) {
369
+ dynamicColumn[key] = col[key];
370
+ });
371
+ return dynamicColumn;
372
+ });
373
+ setColumns(dynamicColumns);
374
+ setColumnOption(function (prevState) { return (__assign(__assign({}, prevState), { columnOptionModel: false })); });
375
+ };
376
+ var filterColumnUnShows = useMemo(function () {
377
+ return allColumnsField.filter(function (allCol) {
378
+ return !selectedColumn.some(function (col) { return col.field === allCol.field; });
379
+ });
380
+ }, [selectedColumn, allColumnsField]);
381
+ useEffect(function () {
382
+ var filteredData = columns.filter(function (item) { return item.title !== 'Actions' && item.id !== 8; });
383
+ setSelectedColumn(filteredData);
384
+ }, [columns]);
385
+ return (React.createElement("div", null,
386
+ React.createElement(Dialog, { onClose: function () {
387
+ return setColumnOption(function (prevState) { return (__assign(__assign({}, prevState), { columnOptionModel: false })); });
388
+ }, width: 500, height: 700, style: {
389
+ display: 'flex',
390
+ flexDirection: 'row',
391
+ justifyContent: 'right',
392
+ width: '100%',
393
+ }, title: "Column options" },
394
+ React.createElement("p", null, "Add or remove columns."),
395
+ React.createElement("div", { style: { marginTop: '20px' } },
396
+ selectedColumn.map(function (col, index) {
397
+ return (React.createElement(SortableItem, { key: col.id, filterColumnUnShows: filterColumnUnShows, handleColumnChange: handleColumnChange, handleRemoveColumn: handleRemoveColumn, selectedColumn: selectedColumn, index: index, col: col }));
398
+ }),
399
+ React.createElement(OkButton, { disabled: selectedColumn.length == allColumnsField.length, style: { marginTop: '10px' }, onClick: handleAddColumn }, "+ Add Column")),
400
+ React.createElement(DialogActionsBar, null,
401
+ React.createElement(OkButton, { disabled: selectedColumn.some(function (column) {
402
+ return column.field === '' && column.title === '';
403
+ }), style: { marginTop: '10px' }, onClick: handleSaveColumns, themeColor: "primary" }, "Save"),
404
+ React.createElement(OkButton, { onClick: function () {
405
+ return setColumnOption(function (prevState) { return (__assign(__assign({}, prevState), { columnOptionModel: false })); });
406
+ }, style: { marginTop: '10px' } }, "Cancel")))));
407
+ };
408
+ var GridFeatureEnableHandler = function (_a) {
409
+ var setColumnOption = _a.setColumnOption, gridOptions = _a.gridOptions, setGridOptions = _a.setGridOptions;
410
+ var handleCheckboxChange = function (option, value) {
411
+ console.log(option, value);
412
+ setGridOptions(function (prevState) {
413
+ var _a;
414
+ var updatedState = __assign(__assign({}, prevState), (_a = {}, _a[option] = value, _a));
415
+ localStorage.setItem('gridOptions', JSON.stringify(updatedState));
416
+ return updatedState;
417
+ });
418
+ };
419
+ var handleCancel = function () {
420
+ setColumnOption(function (prevState) { return (__assign(__assign({}, prevState), { columnConfigsModel: false })); });
421
+ };
422
+ return (React.createElement("div", null,
423
+ React.createElement(Dialog, { onClose: handleCancel, width: 400, height: 400, title: "Column Settings", className: "k-dialog-wrapper" },
424
+ React.createElement("div", { style: { padding: '20px' } },
425
+ React.createElement("p", { style: { fontSize: '14px', color: '#666' } }, "Customize the column settings for the grid by enabling or disabling features below."),
426
+ React.createElement("div", { style: { marginTop: '20px' } },
427
+ React.createElement("div", { className: "k-form-field" },
428
+ React.createElement(Checkbox, { size: "large", style: {
429
+ fontSize: '24px',
430
+ }, label: "Enable Filtering", checked: gridOptions.filter, onChange: function (e) { return handleCheckboxChange('filter', e.value); } })),
431
+ React.createElement("div", { className: "k-form-field", style: { marginTop: '10px' } },
432
+ React.createElement(Checkbox, { style: {
433
+ fontSize: '24px',
434
+ }, size: "large", label: "Enable Grouping", checked: gridOptions.groupable, onChange: function (e) {
435
+ return handleCheckboxChange('groupable', e.value);
436
+ } })),
437
+ React.createElement("div", { className: "k-form-field", style: { marginTop: '10px' } },
438
+ React.createElement(Checkbox, { size: "large", style: {
439
+ fontSize: '24px',
440
+ }, label: "Enable Filter by Queries", checked: gridOptions.filterByQueries, onChange: function (e) {
441
+ return handleCheckboxChange('filterByQueries', e.value);
442
+ } })))))));
443
+ };
444
+ var templateObject_1;
445
+
446
+ /** @format */
447
+ var DATA_ITEM_KEY = 'id';
448
+ var SELECTED_FIELD = 'selected';
449
+ var initialDataState = {
450
+ take: 10,
451
+ skip: 0,
452
+ group: [{ field: 'UnitsInStock' }, { field: 'ProductName' }],
453
+ };
454
+ var allColumnsField = [
455
+ { field: 'id', title: 'ID', type: 'text' },
456
+ { field: 'title', title: 'Title', type: 'text' },
457
+ { field: 'price', title: 'Price', type: 'number' },
458
+ { field: 'description', title: 'Description', type: 'text' },
459
+ { field: 'createdAt', title: 'Creation Date', type: 'date' },
460
+ { field: 'updatedAt', title: 'Last Updated', type: 'date' },
461
+ ];
462
+ var UnitPriceCell = function (props) {
463
+ var dataItem = props.dataItem, field = props.field;
464
+ var value = dataItem[field];
465
+ var style = {
466
+ backgroundColor: value > 20 ? 'lightgreen' : 'lightcoral',
467
+ };
468
+ return React.createElement("td", { style: style }, dataItem.price);
469
+ };
470
+ var DetailComponent = function (props) {
471
+ var dataItem = props.dataItem;
472
+ return (React.createElement("section", null,
473
+ React.createElement("p", null,
474
+ React.createElement("strong", null, "In Stock:"),
475
+ " ",
476
+ dataItem.UnitsInStock,
477
+ " units"),
478
+ React.createElement("p", null,
479
+ React.createElement("strong", null, "On Order:"),
480
+ " ",
481
+ dataItem.UnitsOnOrder,
482
+ " units"),
483
+ React.createElement("p", null,
484
+ React.createElement("strong", null, "Reorder Level:"),
485
+ " ",
486
+ dataItem.ReorderLevel,
487
+ " units"),
488
+ React.createElement("p", null,
489
+ React.createElement("strong", null, "Discontinued:"),
490
+ " ",
491
+ dataItem.Discontinued)));
492
+ };
493
+ var EditButtonCell = function (props) {
494
+ var dataItem = props.dataItem, onEdit = props.onEdit;
495
+ return (React.createElement("td", null,
496
+ React.createElement(OkButton, { onClick: function () { return onEdit(dataItem); }, icon: "edit" }, "Edit")));
497
+ };
498
+ function App() {
499
+ var _this = this;
500
+ var _a = useState([]), data = _a[0], setData = _a[1];
501
+ var handleEdit = function (dataItem) {
502
+ data.map(function (product) {
503
+ return product.ProductID === dataItem.ProductID
504
+ ? __assign(__assign({}, product), { inEdit: true }) : product;
505
+ });
506
+ };
507
+ var checkHeaderSelectionValue = function () { };
508
+ var apiConfigs = [
509
+ {
510
+ id: 1,
511
+ field: 'id',
512
+ title: 'ID',
513
+ editable: false,
514
+ editor: 'text',
515
+ },
516
+ {
517
+ id: 2,
518
+ field: 'title',
519
+ title: 'Title',
520
+ editable: true,
521
+ editor: 'text',
522
+ },
523
+ {
524
+ id: 3,
525
+ field: 'price',
526
+ title: 'Price',
527
+ editable: true,
528
+ editor: 'numeric',
529
+ cell: UnitPriceCell,
530
+ },
531
+ {
532
+ id: 4,
533
+ field: 'description',
534
+ title: 'Description',
535
+ editor: 'numeric',
536
+ editable: true,
537
+ width: '400px',
538
+ },
539
+ ];
540
+ var columnConfigs = __spreadArray(__spreadArray([
541
+ {
542
+ id: 8,
543
+ field: SELECTED_FIELD,
544
+ title: '',
545
+ width: '70px',
546
+ headerSelectionValue: checkHeaderSelectionValue(),
547
+ }
548
+ ], apiConfigs, true), [
549
+ {
550
+ id: 10,
551
+ field: '',
552
+ title: 'Actions',
553
+ cell: function (props) { return (React.createElement(EditButtonCell, __assign({}, props, { onEdit: handleEdit }))); },
554
+ },
555
+ ], false);
556
+ var _b = useState([]), expandedRows = _b[0], setExpandedRows = _b[1];
557
+ var _c = useState(''), searchKeyword = _c[0], setSearchKeyword = _c[1];
558
+ var _d = useState(initialDataState), page = _d[0], setPage = _d[1];
559
+ var _e = React.useState(), pageSizeValue = _e[0], setPageSizeValue = _e[1];
560
+ var _f = React.useState({}), selectedState = _f[0], setSelectedState = _f[1];
561
+ var _g = useState({
562
+ columnOptionModel: false,
563
+ columnConfigsModel: false,
564
+ runQueriesModel: false,
565
+ }), columnOption = _g[0], setColumnOption = _g[1];
566
+ var handleExpandChange = function (event) {
567
+ var dataItem = event.dataItem;
568
+ var productID = dataItem.id;
569
+ setExpandedRows(function (prevExpandedRows) {
570
+ return prevExpandedRows.includes(productID)
571
+ ? prevExpandedRows.filter(function (id) { return id !== productID; })
572
+ : __spreadArray(__spreadArray([], prevExpandedRows, true), [productID], false);
573
+ });
574
+ };
575
+ var onHeaderSelectionChange = React.useCallback(function (event) {
576
+ var checkboxElement = event.syntheticEvent.target;
577
+ checkboxElement.checked;
578
+ }, []);
579
+ var onSelectionChange = function (event) {
580
+ event.dataItem.id;
581
+ };
582
+ useEffect(function () {
583
+ var fetchData = function () { return __awaiter(_this, void 0, void 0, function () {
584
+ var response, data_1;
585
+ return __generator(this, function (_a) {
586
+ switch (_a.label) {
587
+ case 0:
588
+ _a.trys.push([0, 3, , 4]);
589
+ return [4 /*yield*/, fetch('https://api.escuelajs.co/api/v1/products?limit=0&offset=0')];
590
+ case 1:
591
+ response = _a.sent();
592
+ if (!response.ok) {
593
+ throw new Error('Network response was not ok');
594
+ }
595
+ return [4 /*yield*/, response.json()];
596
+ case 2:
597
+ data_1 = _a.sent();
598
+ setData(data_1);
599
+ return [3 /*break*/, 4];
600
+ case 3:
601
+ _a.sent();
602
+ return [3 /*break*/, 4];
603
+ case 4: return [2 /*return*/];
604
+ }
605
+ });
606
+ }); };
607
+ fetchData();
608
+ }, []);
609
+ return (React.createElement("div", { style: {
610
+ display: 'flex',
611
+ flexDirection: 'column',
612
+ gap: 25,
613
+ marginTop: '25px',
614
+ marginLeft: '10px',
615
+ marginRight: '10px',
616
+ } },
617
+ React.createElement(OkGrid, { data: data, columnConfigs: columnConfigs, detailComponent: DetailComponent, expandChange: handleExpandChange, page: page, pageSizeValue: pageSizeValue, setPageSizeValue: setPageSizeValue, setPage: setPage, dataItemKey: DATA_ITEM_KEY, selectedField: SELECTED_FIELD, onHeaderSelectionChange: onHeaderSelectionChange, onSelectionChange: onSelectionChange, expandedRows: expandedRows, selectedState: selectedState, setSelectedState: setSelectedState, columnOption: columnOption, setColumnOption: setColumnOption, apiColumnConfig: apiConfigs, style: {
618
+ maxHeight: '550px',
619
+ }, reorderable: false, resizable: false, sortable: {
620
+ mode: 'single',
621
+ allowUnsort: true,
622
+ }, editField: '', filterable: false, groupable: false, searchKeyword: searchKeyword, setSearchKeyword: setSearchKeyword, allColumnsField: allColumnsField })));
623
+ }
624
+
625
+ /** @format */
626
+ // import reportWebVitals from './reportWebVitals';
627
+ // export {
628
+ // OkArcGauge,
629
+ // OkButton,
630
+ // OkButtonGroup,
631
+ // OkCalender,
632
+ // OkChart,
633
+ // OkDateInput,
634
+ // OkDateRangePicker,
635
+ // OkDateTimePicker,
636
+ // OkDialog,
637
+ // OkDropDownButton,
638
+ // OkDropDownList,
639
+ // OkEditor,
640
+ // OkGrid,
641
+ // OkInput,
642
+ // OkMaskedTextBox,
643
+ // OkMultiSelect,
644
+ // OkMultiViewCalendar,
645
+ // OkNumericTextBox,
646
+ // OkSplitButton,
647
+ // OkSwitch,
648
+ // OkTimePicker,
649
+ // OkToolbar,
650
+ // OkTreeView,
651
+ // OkWindow,
652
+ // OkDrawer,
653
+ // OkDrawerContent,
654
+ // };
655
+ var root = ReactDOM.createRoot(document.getElementById('root'));
656
+ root.render(React.createElement(React.StrictMode, null,
657
+ React.createElement(App, null)));
658
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../node_modules/style-inject/dist/style-inject.es.js"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n"],"names":[],"mappings":";;;;;;;;;;;AAAA,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/B,EAAE,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;AACjC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,EAAE;AAC1D;AACA,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC9C,EAAE,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;AAC1B;AACA,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAChD,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9B,KAAK;AACL,GAAG,MAAM;AACT,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5B,GAAG;AACH;AACA,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC;AACnC,GAAG,MAAM;AACT,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AACpD,GAAG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}