@bit.rhplus/ui.grid-layout 0.0.1

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.
@@ -0,0 +1,231 @@
1
+ /* eslint-disable */
2
+ /**
3
+ * Hook pro komunikaci s Grid Layout API službou
4
+ * Poskytuje funkcionalitu pro načítání a ukládání personalizovaných nastavení gridů
5
+ */
6
+ import { useCallback, useMemo } from 'react';
7
+ import { useQueryClient } from '@tanstack/react-query';
8
+ import { useApiQuery, useApiQuerySilence } from '@bit.rhplus/data';
9
+ import { userFieldsApi, getSingleGridApi, getUserGridsApi, saveGridLayoutApi } from './gridLayout';
10
+ import useData from '@bit.rhplus/data';
11
+ /**
12
+ * Hook pro práci s Grid Layout API
13
+ * @param {Object} config - Konfigurace gridu
14
+ * @param {string} config.userKey - Klíč uživatele
15
+ * @param {string} config.applicationName - Název aplikace
16
+ * @param {string} config.gridName - Název gridu
17
+ * @param {string} [config.filterName] - Název filtru (volitelné)
18
+ * @param {string} [config.accessToken] - Přístupový token
19
+ * @returns {Object} API methods pro grid layout
20
+ */
21
+ export const useGridLayoutApi = ({ userKey, applicationName, gridName, filterName = null, accessToken = null }) => {
22
+ const { fetchDataUIAsync } = useData();
23
+ const queryClient = useQueryClient();
24
+ // Základní identifikace pro API volání
25
+ const baseParams = useMemo(() => ({
26
+ userKey,
27
+ applicationName,
28
+ gridName,
29
+ ...(filterName && { filterName })
30
+ }), [userKey, applicationName, gridName, filterName]);
31
+ // Query key pro caching
32
+ const gridQueryKey = useMemo(() => `grid_layout_${userKey}_${applicationName}_${gridName}_${filterName || 'default'}`, [userKey, applicationName, gridName, filterName]);
33
+ /**
34
+ * Načte seznam polí pro konkrétní grid s personalizací uživatele
35
+ * @param {Array} fields - Definice polí gridu
36
+ * @param {Object} options - React Query options
37
+ */
38
+ const useUserFields = (fields = [], options = {}) => {
39
+ const params = useMemo(() => ({
40
+ ...baseParams,
41
+ fields
42
+ }), [baseParams, fields]);
43
+ return useApiQuery(`${gridQueryKey}_fields`, userFieldsApi, params, accessToken, null, options?.enabled ?? true, 5, // 5 minut stale time
44
+ options);
45
+ };
46
+ /**
47
+ * Načte konkrétní jeden grid pro uživatele
48
+ * @param {Object} options - React Query options
49
+ */
50
+ const useSingleGrid = (options = {}) => {
51
+ return useApiQuery(gridQueryKey, getSingleGridApi, baseParams, accessToken, null, true, 5 // 5 minut stale time
52
+ );
53
+ };
54
+ /**
55
+ * Načte seznam všech gridů uživatele v aplikaci
56
+ * @param {Object} options - React Query options
57
+ */
58
+ const useUserGrids = (options = {}) => {
59
+ const params = useMemo(() => ({
60
+ userKey,
61
+ applicationName
62
+ }), [userKey, applicationName]);
63
+ return useApiQuery(`user_grids_${userKey}_${applicationName}`, getUserGridsApi, params, accessToken, null, true, 10 // 10 minut stale time
64
+ );
65
+ };
66
+ /**
67
+ * Uloží personalizované nastavení gridu pomocí SaveUserFields endpoint
68
+ * @param {Array} userFields - UserFieldModel array pro uložení
69
+ * @returns {Promise} Promise s výsledkem
70
+ */
71
+ const saveGridLayout = useCallback(async (userFields) => {
72
+ try {
73
+ const params = {
74
+ ...baseParams,
75
+ userFields // Nová struktura pro SaveUserFieldsCommand
76
+ };
77
+ const result = await fetchDataUIAsync(saveGridLayoutApi, params, accessToken);
78
+ if (result.success) {
79
+ // Invalidujeme cache pro načtení čerstvých dat z API - všechny queries související s tímto gridem
80
+ await queryClient.invalidateQueries({
81
+ predicate: (query) => {
82
+ // Invalidujeme všechny queries které začínají našim gridQueryKey
83
+ const queryKey = query.queryKey?.[0];
84
+ return queryKey && typeof queryKey === 'string' && queryKey.startsWith(gridQueryKey);
85
+ }
86
+ });
87
+ console.log("✅ Grid layout uložen a cache invalidován pro pattern:", gridQueryKey);
88
+ return {
89
+ success: true,
90
+ data: result.data,
91
+ message: result.message
92
+ };
93
+ }
94
+ else {
95
+ throw new Error(result.message || result.error?.message || 'Chyba při ukládání grid layoutu');
96
+ }
97
+ }
98
+ catch (error) {
99
+ console.error('Chyba při ukládání grid layout:', error);
100
+ throw error;
101
+ }
102
+ }, [baseParams, fetchDataUIAsync, accessToken, queryClient, gridQueryKey]);
103
+ /**
104
+ * Transformuje AG-Grid column state na UserFieldModel format
105
+ * @param {Array} columnState - AG-Grid column state
106
+ * @param {Array} columnDefs - Původní column definitions
107
+ * @returns {Array} UserFieldModel array pro SaveUserFields API
108
+ */
109
+ const transformColumnStateToFields = useCallback((columnState, columnDefs) => {
110
+ if (!columnState || !columnDefs)
111
+ return [];
112
+ if (!Array.isArray(columnDefs)) {
113
+ console.error('transformColumnStateToFields: columnDefs musí být array, získán:', typeof columnDefs);
114
+ return [];
115
+ }
116
+ return columnState.map((columnStateItem, index) => {
117
+ // Najdeme odpovídající column definition podle colId
118
+ const colDef = columnDefs.find(cd => cd.field === columnStateItem.colId) || {};
119
+ return {
120
+ // Mapování na UserFieldModel strukturu
121
+ Id: 0, // Nové pole má ID = 0, existující budou mít správné ID z API
122
+ UserKey: baseParams.userKey,
123
+ ApplicationName: baseParams.applicationName,
124
+ GridName: baseParams.gridName,
125
+ FilterName: baseParams.filterName || null,
126
+ FieldName: columnStateItem.colId,
127
+ HeaderName: colDef.headerName || columnStateItem.colId || `Column ${index + 1}`,
128
+ Order: index, // Pořadí podle pozice v column state
129
+ Show: columnStateItem.hide !== true,
130
+ Width: columnStateItem.width || colDef.width || null,
131
+ System: colDef.system || false // Systémové sloupce nejde skrývat/editovat
132
+ };
133
+ });
134
+ }, [baseParams]);
135
+ /**
136
+ * Transformuje UserFieldModel array na AG-Grid column state
137
+ * Používá columnDefs jako primární zdroj a userFields jen pro úpravy
138
+ * @param {Array} userFields - UserFieldModel array z API (pro úpravy)
139
+ * @param {Array} columnDefs - Původní column definitions (primární)
140
+ * @returns {Array} Column state pro AG-Grid
141
+ */
142
+ const transformFieldsToColumnState = useCallback((userFields, columnDefs) => {
143
+ if (!columnDefs || !Array.isArray(columnDefs)) {
144
+ return [];
145
+ }
146
+ // Pokud nemáme userFields, vrátíme default column state z columnDefs
147
+ if (!userFields || !Array.isArray(userFields)) {
148
+ return columnDefs.map((colDef, index) => ({
149
+ colId: colDef.field,
150
+ width: colDef.width || 100,
151
+ hide: colDef.hide || false,
152
+ pinned: colDef.pinned || null,
153
+ sort: null,
154
+ sortIndex: null
155
+ }));
156
+ }
157
+ // Vytvoříme mapu userFields pro rychlé vyhledávání
158
+ const userFieldsMap = new Map();
159
+ userFields.forEach(userField => {
160
+ // API používá lowercase názvy (fieldName, order, show) místo uppercase (FieldName, Order, Show)
161
+ const fieldName = userField.fieldName || userField.FieldName;
162
+ userFieldsMap.set(fieldName, userField);
163
+ });
164
+ console.log("🔍 transformFieldsToColumnState debug:", {
165
+ userFields: userFields.map(uf => ({
166
+ fieldName: uf.fieldName || uf.FieldName,
167
+ order: uf.order ?? uf.Order,
168
+ show: uf.show ?? uf.Show,
169
+ width: uf.width ?? uf.Width
170
+ })),
171
+ columnDefs: columnDefs.map(cd => ({ field: cd.field, headerName: cd.headerName })),
172
+ userFieldsMapKeys: Array.from(userFieldsMap.keys())
173
+ });
174
+ // Vytvoříme column state POUZE pro sloupce, které mají záznam v userFields
175
+ const columnStateWithUserFields = columnDefs
176
+ .map((colDef, defaultIndex) => {
177
+ const userField = userFieldsMap.get(colDef.field);
178
+ // Pokud pro tento sloupec není userField, vracíme null (bude odfiltrován)
179
+ if (!userField) {
180
+ console.log(`🔍 No userField for ${colDef.field} - skipping`);
181
+ return null;
182
+ }
183
+ const result = {
184
+ colId: colDef.field,
185
+ // API používá lowercase názvy polí
186
+ width: userField.width ?? userField.Width ?? colDef.width ?? 100,
187
+ hide: !(userField.show ?? userField.Show ?? true),
188
+ pinned: colDef.pinned || null, // Pinning z columnDefs, userFields to zatím nepodporuje
189
+ sort: null, // Sorting není součástí layout managementu
190
+ sortIndex: null,
191
+ // Pořadí z userFields (lowercase/uppercase)
192
+ __order: userField.order ?? userField.Order ?? defaultIndex
193
+ };
194
+ console.log(`🔍 Column mapping for ${colDef.field}:`, {
195
+ colDefField: colDef.field,
196
+ foundUserField: true,
197
+ userFieldOrder: userField.order ?? userField.Order,
198
+ defaultIndex,
199
+ finalOrder: result.__order,
200
+ userFieldData: userField
201
+ });
202
+ return result;
203
+ })
204
+ .filter(Boolean); // Odfiltrujeme null hodnoty
205
+ // Seřadíme podle pořadí z userFields
206
+ const sortedColumnState = columnStateWithUserFields.sort((a, b) => (a.__order || 0) - (b.__order || 0));
207
+ console.log("🔍 Sorting result:", {
208
+ beforeSort: columnStateWithUserFields.map(c => ({ colId: c.colId, order: c.__order })),
209
+ afterSort: sortedColumnState.map(c => ({ colId: c.colId, order: c.__order }))
210
+ });
211
+ const finalResult = sortedColumnState.map(({ __order, ...columnState }) => columnState);
212
+ console.log("🔍 Final column state:", finalResult.map(c => c.colId));
213
+ return finalResult;
214
+ }, []);
215
+ return {
216
+ // Query hooks
217
+ useUserFields,
218
+ useSingleGrid,
219
+ useUserGrids,
220
+ // Mutation methods
221
+ saveGridLayout,
222
+ // Transform utilities
223
+ transformColumnStateToFields,
224
+ transformFieldsToColumnState,
225
+ // Config
226
+ gridQueryKey,
227
+ baseParams
228
+ };
229
+ };
230
+ export default useGridLayoutApi;
231
+ //# sourceMappingURL=useGridLayoutApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGridLayoutApi.js","sourceRoot":"","sources":["../useGridLayoutApi.js"],"names":[],"mappings":"AAAA,oBAAoB;AACpB;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EAClB,MAAM,cAAc,CAAC;AACtB,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAEvC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAC/B,OAAO,EACP,eAAe,EACf,QAAQ,EACR,UAAU,GAAG,IAAI,EACjB,WAAW,GAAG,IAAI,EACnB,EAAE,EAAE;IACH,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,uCAAuC;IACvC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAChC,OAAO;QACP,eAAe;QACf,QAAQ;QACR,GAAG,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,CAAC;KAClC,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAEtD,wBAAwB;IACxB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAChC,eAAe,OAAO,IAAI,eAAe,IAAI,QAAQ,IAAI,UAAU,IAAI,SAAS,EAAE,EAClF,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,CAAC,CACjD,CAAC;IAEF;;;;OAIG;IACH,MAAM,aAAa,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE;QAClD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAC5B,GAAG,UAAU;YACb,MAAM;SACP,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;QAE1B,OAAO,WAAW,CAChB,GAAG,YAAY,SAAS,EACxB,aAAa,EACb,MAAM,EACN,WAAW,EACX,IAAI,EACJ,OAAO,EAAE,OAAO,IAAI,IAAI,EACxB,CAAC,EAAE,qBAAqB;QACxB,OAAO,CACR,CAAC;IACJ,CAAC,CAAC;IAEF;;;OAGG;IACH,MAAM,aAAa,GAAG,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE;QACrC,OAAO,WAAW,CAChB,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,IAAI,EACJ,IAAI,EACJ,CAAC,CAAC,qBAAqB;SACxB,CAAC;IACJ,CAAC,CAAC;IAEF;;;OAGG;IACH,MAAM,YAAY,GAAG,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE;QACpC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAC5B,OAAO;YACP,eAAe;SAChB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;QAEhC,OAAO,WAAW,CAChB,cAAc,OAAO,IAAI,eAAe,EAAE,EAC1C,eAAe,EACf,MAAM,EACN,WAAW,EACX,IAAI,EACJ,IAAI,EACJ,EAAE,CAAC,sBAAsB;SAC1B,CAAC;IACJ,CAAC,CAAC;IAEF;;;;OAIG;IACH,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;QACtD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG;gBACb,GAAG,UAAU;gBACb,UAAU,CAAC,2CAA2C;aACvD,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,iBAAiB,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAE9E,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,kGAAkG;gBAClG,MAAM,WAAW,CAAC,iBAAiB,CAAC;oBAClC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;wBACnB,iEAAiE;wBACjE,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;wBACrC,OAAO,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;oBACvF,CAAC;iBACF,CAAC,CAAC;gBAEH,OAAO,CAAC,GAAG,CAAC,uDAAuD,EAAE,YAAY,CAAC,CAAC;gBAEnF,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,iCAAiC,CAAC,CAAC;YAChG,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;YACxD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;IAE3E;;;;;OAKG;IACH,MAAM,4BAA4B,GAAG,WAAW,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE;QAC3E,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,kEAAkE,EAAE,OAAO,UAAU,CAAC,CAAC;YACrG,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,KAAK,EAAE,EAAE;YAChD,qDAAqD;YACrD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAE/E,OAAO;gBACL,uCAAuC;gBACvC,EAAE,EAAE,CAAC,EAAE,6DAA6D;gBACpE,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,eAAe,EAAE,UAAU,CAAC,eAAe;gBAC3C,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,UAAU,EAAE,UAAU,CAAC,UAAU,IAAI,IAAI;gBACzC,SAAS,EAAE,eAAe,CAAC,KAAK;gBAChC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,eAAe,CAAC,KAAK,IAAI,UAAU,KAAK,GAAG,CAAC,EAAE;gBAC/E,KAAK,EAAE,KAAK,EAAE,qCAAqC;gBACnD,IAAI,EAAE,eAAe,CAAC,IAAI,KAAK,IAAI;gBACnC,KAAK,EAAE,eAAe,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI;gBACpD,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,2CAA2C;aAC3E,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB;;;;;;OAMG;IACH,MAAM,4BAA4B,GAAG,WAAW,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE;QAC1E,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,qEAAqE;QACrE,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9C,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBACxC,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG;gBAC1B,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,KAAK;gBAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;gBAC7B,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC,CAAC;QACN,CAAC;QAED,mDAAmD;QACnD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;QAChC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YAC7B,gGAAgG;YAChG,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC;YAC7D,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE;YACpD,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAChC,SAAS,EAAE,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS;gBACvC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK;gBAC3B,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI;gBACxB,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK;aAC5B,CAAC,CAAC;YACH,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;YAClF,iBAAiB,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;SACpD,CAAC,CAAC;QAEH,2EAA2E;QAC3E,MAAM,yBAAyB,GAAG,UAAU;aACzC,GAAG,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE;YAC5B,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAElD,0EAA0E;YAC1E,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,KAAK,aAAa,CAAC,CAAC;gBAC9D,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,MAAM,GAAG;gBACb,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,mCAAmC;gBACnC,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,GAAG;gBAChE,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC;gBACjD,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,wDAAwD;gBACvF,IAAI,EAAE,IAAI,EAAE,2CAA2C;gBACvD,SAAS,EAAE,IAAI;gBACf,4CAA4C;gBAC5C,OAAO,EAAE,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,IAAI,YAAY;aAC5D,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,KAAK,GAAG,EAAE;gBACpD,WAAW,EAAE,MAAM,CAAC,KAAK;gBACzB,cAAc,EAAE,IAAI;gBACpB,cAAc,EAAE,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK;gBAClD,YAAY;gBACZ,UAAU,EAAE,MAAM,CAAC,OAAO;gBAC1B,aAAa,EAAE,SAAS;aACzB,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;aACD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B;QAEhD,qCAAqC;QACrC,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;QAExG,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE;YAChC,UAAU,EAAE,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACtF,SAAS,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;SAC9E,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;QAExF,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAErE,OAAO,WAAW,CAAC;IACrB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,cAAc;QACd,aAAa;QACb,aAAa;QACb,YAAY;QACZ,mBAAmB;QACnB,cAAc;QACd,sBAAsB;QACtB,4BAA4B;QAC5B,4BAA4B;QAC5B,SAAS;QACT,YAAY;QACZ,UAAU;KACX,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
package/gridLayout.js ADDED
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Grid Layout API konfigurace pro komunikaci s Grid API službou
3
+ * Poskytuje centralizovanou správu personalizovaných nastavení gridů
4
+ */
5
+
6
+ /**
7
+ * Načítá seznam polí pro konkrétní grid s personalizací uživatele
8
+ * POST /api/UserFields
9
+ *
10
+ * Request body: UserFieldsCommand
11
+ * {
12
+ * userKey: Guid,
13
+ * applicationName: string,
14
+ * gridName: string,
15
+ * filterName?: string
16
+ * }
17
+ *
18
+ * Response: UserFieldsResponse
19
+ * {
20
+ * success: boolean,
21
+ * data: UserFieldModel[]
22
+ * }
23
+ */
24
+ export const userFieldsApi = {
25
+ url: '/grid_layout_api/Grid/UserFields',
26
+ methodType: "POST",
27
+ version: "1.0",
28
+ compression: true,
29
+ withCredentials: true
30
+ };
31
+
32
+ /**
33
+ * Načítá konkrétní jeden grid pro uživatele
34
+ * POST /api/GetSingleGrid
35
+ *
36
+ * Request body: GetSingleGridCommand
37
+ * {
38
+ * userKey: Guid,
39
+ * applicationName: string,
40
+ * gridName: string,
41
+ * filterName?: string
42
+ * }
43
+ *
44
+ * Response: UserFieldsResponse
45
+ * {
46
+ * success: boolean,
47
+ * data: UserFieldModel[]
48
+ * }
49
+ */
50
+ export const getSingleGridApi = {
51
+ url: '/grid_layout_api/Grid/GetSingleGrid',
52
+ methodType: "POST",
53
+ version: "1.0",
54
+ compression: true,
55
+ withCredentials: true
56
+ };
57
+
58
+ /**
59
+ * Načítá seznam všech gridů uživatele v aplikaci
60
+ * POST /api/GetUserGrids
61
+ *
62
+ * Request body: GetUserGridsCommand
63
+ * {
64
+ * userKey: Guid,
65
+ * applicationName: string
66
+ * }
67
+ *
68
+ * Response: GetUserGridsResponse
69
+ * {
70
+ * success: boolean,
71
+ * data: UserGridSummary[]
72
+ * }
73
+ */
74
+ export const getUserGridsApi = {
75
+ url: '/grid_layout_api/Grid/GetUserGrids',
76
+ methodType: "POST",
77
+ version: "1.0",
78
+ compression: true,
79
+ withCredentials: true
80
+ };
81
+
82
+ /**
83
+ * Ukládá nebo aktualizuje personalizované nastavení gridu s merge logikou
84
+ * POST /api/SaveUserFields
85
+ *
86
+ * Request body: SaveUserFieldsCommand
87
+ * {
88
+ * userKey: Guid,
89
+ * applicationName: string,
90
+ * gridName: string,
91
+ * filterName?: string,
92
+ * userFields: UserFieldModel[]
93
+ * }
94
+ *
95
+ * Response: SaveUserFieldsResponse
96
+ * {
97
+ * success: boolean,
98
+ * message?: string
99
+ * }
100
+ */
101
+ export const saveGridLayoutApi = {
102
+ url: '/grid_layout_api/Grid/SaveUserFields',
103
+ methodType: "POST",
104
+ version: "1.0",
105
+ compression: true,
106
+ withCredentials: true
107
+ };
package/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export {default as useGridLayout} from './useGridLayout';
2
+ export {useGridLayoutApi} from './useGridLayoutApi';
3
+ export {default as ColumnEditorModal} from './ColumnEditorModal';
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "@bit.rhplus/ui.grid-layout",
3
+ "version": "0.0.1",
4
+ "main": "dist/index.js",
5
+ "componentId": {
6
+ "name": "ui/grid-layout",
7
+ "version": "0.0.1",
8
+ "scope": "remote-scope"
9
+ },
10
+ "dependencies": {
11
+ "@ant-design/icons": "^5.4.0",
12
+ "@dnd-kit/core": "^6.3.1",
13
+ "@dnd-kit/sortable": "^10.0.0",
14
+ "@dnd-kit/utilities": "^3.2.2",
15
+ "antd": "^5.20.6",
16
+ "lodash": "^4.17.21",
17
+ "@tanstack/react-query": "^5.66.9",
18
+ "@bit.rhplus/draggable-modal": "0.0.10",
19
+ "@bit.rhplus/data": "0.0.35"
20
+ },
21
+ "devDependencies": {
22
+ "@teambit/react.react-env": "1.0.132"
23
+ },
24
+ "peerDependencies": {
25
+ "react": "^17.0.0 || ^18.0.0"
26
+ },
27
+ "license": "SEE LICENSE IN UNLICENSED",
28
+ "optionalDependencies": {},
29
+ "peerDependenciesMeta": {},
30
+ "private": false,
31
+ "publishConfig": {
32
+ "scope": "@bit.rhplus",
33
+ "registry": "https://registry.npmjs.org/"
34
+ }
35
+ }
@@ -0,0 +1,43 @@
1
+ declare module '*.png' {
2
+ const value: any;
3
+ export = value;
4
+ }
5
+ declare module '*.svg' {
6
+ import type { FunctionComponent, SVGProps } from 'react';
7
+
8
+ export const ReactComponent: FunctionComponent<
9
+ SVGProps<SVGSVGElement> & { title?: string }
10
+ >;
11
+ const src: string;
12
+ export default src;
13
+ }
14
+
15
+ // @TODO Gilad
16
+ declare module '*.jpg' {
17
+ const value: any;
18
+ export = value;
19
+ }
20
+ declare module '*.jpeg' {
21
+ const value: any;
22
+ export = value;
23
+ }
24
+ declare module '*.gif' {
25
+ const value: any;
26
+ export = value;
27
+ }
28
+ declare module '*.bmp' {
29
+ const value: any;
30
+ export = value;
31
+ }
32
+ declare module '*.otf' {
33
+ const value: any;
34
+ export = value;
35
+ }
36
+ declare module '*.woff' {
37
+ const value: any;
38
+ export = value;
39
+ }
40
+ declare module '*.woff2' {
41
+ const value: any;
42
+ export = value;
43
+ }
@@ -0,0 +1,42 @@
1
+ declare module '*.module.css' {
2
+ const classes: { readonly [key: string]: string };
3
+ export default classes;
4
+ }
5
+ declare module '*.module.scss' {
6
+ const classes: { readonly [key: string]: string };
7
+ export default classes;
8
+ }
9
+ declare module '*.module.sass' {
10
+ const classes: { readonly [key: string]: string };
11
+ export default classes;
12
+ }
13
+
14
+ declare module '*.module.less' {
15
+ const classes: { readonly [key: string]: string };
16
+ export default classes;
17
+ }
18
+
19
+ declare module '*.less' {
20
+ const classes: { readonly [key: string]: string };
21
+ export default classes;
22
+ }
23
+
24
+ declare module '*.css' {
25
+ const classes: { readonly [key: string]: string };
26
+ export default classes;
27
+ }
28
+
29
+ declare module '*.sass' {
30
+ const classes: { readonly [key: string]: string };
31
+ export default classes;
32
+ }
33
+
34
+ declare module '*.scss' {
35
+ const classes: { readonly [key: string]: string };
36
+ export default classes;
37
+ }
38
+
39
+ declare module '*.mdx' {
40
+ const component: any;
41
+ export default component;
42
+ }