@topconsultnpm/sdkui-react-beta 6.10.19 → 6.10.21

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.
@@ -16,10 +16,7 @@ const TMDataGrid = React.forwardRef((props, ref) => {
16
16
  // main properties
17
17
  keyExpr = 'id', dataSource, focusedRowEnabled = true, hoverStateEnabled = true, focusedRowKey, selectedRowKeys = [],
18
18
  // custom options
19
- dataColumns = [], pageSize = TMDataGridPageSize.Large, showHeaderFilter = true, showFilterPanel = false, showLoadPanel = true, showSearchPanel = true, searchPanelToolbarPosition = 'before', counterConfig = {
20
- show: false,
21
- items: new Map()
22
- },
19
+ dataColumns = [], pageSize = TMDataGridPageSize.Large, showHeaderFilter = true, showFilterPanel = false, showLoadPanel = true, showSearchPanel = true, searchPanelToolbarPosition = 'before', counterConfig = { show: false, items: new Map() },
23
20
  // events and callbacks
24
21
  onSelectionChanged, onFocusedRowChanged, onRowDblClick, onRowClick, onCellClick, onOptionChanged, onContentReady, onContextMenuPreparing, onInitialized, onEditorPreparing, onCellPrepared, onRowPrepared, onRowUpdating, onRowExpanded, onRowCollapsed, onRowUpdated, onSaved, onEditCanceled, onEditingStart, onEditingChange, customizeColumns, scrolling = { mode: 'standard', useNative: SDKUI_Globals.dataGridUseNativeScrollbar }, paging = { enabled: true, pageSize: pageSize }, pager = { visible: true, showInfo: true, showNavigationButtons: true }, selection = { mode: 'multiple', showCheckBoxesMode: "always", selectAllMode: "allPages" }, sorting, summary, stateStoring, columnChooser, grouping, groupPanel, filterRow, headerFilter, editing, rowDragging,
25
22
  // other properties
@@ -31,7 +31,7 @@ const TMRightSidebar = ({ items = [], onItemClick, selectedItem, showPanel = fal
31
31
  onItemClick && onItemClick(item.id, activeItems.has(item.id));
32
32
  }
33
33
  };
34
- return (_jsx(SidebarContainer, { children: items.map((item, index) => (item.visible !== false && (_jsxs(StyledMenuItem, { "$disabled": item.disabled, style: { paddingTop: '10px', borderTop: item.beginGroup ? '2px solid #9c9c9c' : 'none' }, "$isHovered": hoveredItem === item.id, "$isSelected": item.isActive, onMouseEnter: () => setHoveredItem(item.id), onMouseLeave: () => setHoveredItem(null), onClick: () => item.onClick?.() ?? onClickHandler(item), children: [_jsx(StyledAnimatedComponentScaleColor, { "$delay": `${(index * 150) + 650}ms`, children: item.icon }), _jsx("span", { children: item.visibleName })] }, item.id)))) }));
34
+ return (_jsx(SidebarContainer, { children: items.map((item, index) => (item.visible !== false && (_jsxs(StyledMenuItem, { "$disabled": item.disabled, style: { paddingTop: '10px', borderTop: item.beginGroup ? '2px solid #9c9c9c' : 'none' }, "$isHovered": hoveredItem === item.id, "$isSelected": item.isActive, onMouseEnter: () => setHoveredItem(item.id), onMouseLeave: () => setHoveredItem(null), onClick: () => !item.disabled && (item.onClick?.() ?? onClickHandler(item)), children: [_jsx(StyledAnimatedComponentScaleColor, { "$delay": `${(index * 150) + 650}ms`, children: item.icon }), _jsx("span", { children: item.visibleName })] }, item.id)))) }));
35
35
  };
36
36
  export default TMRightSidebar;
37
37
  // Styled Components
@@ -1,7 +1,7 @@
1
1
  import { useEffect, useState } from "react";
2
2
  import { FormModes } from "../ts";
3
3
  import { TMExceptionBoxManager, TMSpinner } from "../components";
4
- import { AreaDescriptor, BasketTypeDescriptor, DataListDescriptor, DiskDescriptor, GroupDescriptor, JobEngine, JobTypes, LDAPDescriptor, LDAPProviders, MembershipConstraints, NumeratorDescriptor, ObjectClasses, ProcessEngine, ResultTypes, SavedQueryEngine, SDK_Globals, SignCertDescriptor, TaskDescriptor, TreeDescriptor, TSADescriptor, UserDescriptor } from "@topconsultnpm/sdk-ts-beta";
4
+ import { AreaDescriptor, BasketTypeDescriptor, DataListDescriptor, DiskDescriptor, GroupDescriptor, JobEngine, JobTypes, LDAPDescriptor, LDAPProviders, MembershipConstraints, NumeratorDescriptor, ObjectClasses, ProcessEngine, ResultTypes, SavedQueryEngine, SDK_Globals, SignCertDescriptor, TaskDescriptor, TreeDescriptor, TSADescriptor, UserDescriptor, UserLevels, UserTypes } from "@topconsultnpm/sdk-ts-beta";
5
5
  import { PlatformObjectService } from "../services";
6
6
  import { SDKUI_Localizator, calcIsModified } from "../helper";
7
7
  export class SaveFormOptions {
@@ -15,6 +15,26 @@ export function useSaveForm(formMode, id, sfo, validator, onSaved, onStatusChang
15
15
  const [formDataOrig, setFormDataOrig] = useState();
16
16
  const [exception, setException] = useState();
17
17
  const [validationItems, setValidationItems] = useState([]);
18
+ // #region Normalize object
19
+ function normalizeGroup(d) {
20
+ d.membershipConstraint = MembershipConstraints.Mixed;
21
+ return d;
22
+ }
23
+ function normalizeLDAP(d) {
24
+ d.provider = LDAPProviders.MSActiveDirectory;
25
+ return d;
26
+ }
27
+ function normalizeSignCert(d) {
28
+ d.isAuto = 1;
29
+ return d;
30
+ }
31
+ function normalizeUser(d) {
32
+ d.level = UserLevels.Member;
33
+ d.type = UserTypes.TopMedia;
34
+ d.secureAuth = 1;
35
+ return d;
36
+ }
37
+ // #endregion
18
38
  const getDataAsync = async (id, fm) => {
19
39
  switch (fm) {
20
40
  case FormModes.Create:
@@ -23,22 +43,13 @@ export function useSaveForm(formMode, id, sfo, validator, onSaved, onStatusChang
23
43
  case ObjectClasses.BasketType: return new BasketTypeDescriptor();
24
44
  case ObjectClasses.Disk: return new DiskDescriptor();
25
45
  case ObjectClasses.DataList: return new DataListDescriptor();
26
- case ObjectClasses.Group:
27
- let newGroup = new GroupDescriptor();
28
- newGroup.membershipConstraint = MembershipConstraints.Mixed;
29
- return newGroup;
30
- case ObjectClasses.LDAP:
31
- let newLdap = new LDAPDescriptor();
32
- newLdap.provider = LDAPProviders.MSActiveDirectory;
33
- return newLdap;
46
+ case ObjectClasses.Group: return normalizeGroup(new GroupDescriptor());
47
+ case ObjectClasses.LDAP: return normalizeLDAP(new LDAPDescriptor());
34
48
  case ObjectClasses.Numerator: return new NumeratorDescriptor();
35
- case ObjectClasses.SignCert:
36
- let newSc = new SignCertDescriptor();
37
- newSc.isAuto = 1;
38
- return newSc;
49
+ case ObjectClasses.SignCert: return normalizeSignCert(new SignCertDescriptor());
39
50
  case ObjectClasses.Tree: return new TreeDescriptor();
40
51
  case ObjectClasses.TSA: return new TSADescriptor();
41
- case ObjectClasses.User: return new UserDescriptor();
52
+ case ObjectClasses.User: return normalizeUser(new UserDescriptor());
42
53
  case ObjectClasses.Process: return ProcessEngine.NewProcessDescriptor();
43
54
  case ObjectClasses.Job: return JobEngine.NewJobDescriptor(sfo.objType);
44
55
  case ObjectClasses.SavedQuery: return SavedQueryEngine.NewSavedQueryDescriptor();
@@ -1,4 +1,4 @@
1
1
  import { Meta } from '@storybook/react';
2
2
  declare const _default: Meta;
3
3
  export default _default;
4
- export declare const NormalButton: any;
4
+ export declare const NormalTMButton: any;
@@ -1,28 +1,29 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import TMButton from '../components/base/TMButton';
3
3
  import { TMDeviceProvider } from '../components/base/TMDeviceProvider';
4
4
  import { IconCheck } from '../helper';
5
+ import { sortArgTypes } from './TMStoriesUtils';
5
6
  export default {
7
+ // The title will determine how the component appears in the sidebar of Storybook
6
8
  title: 'Components/TMButton',
9
+ // Specifies the component that is being documented in this story
7
10
  component: TMButton,
8
- decorators: [
9
- (Story) => (_jsx(TMDeviceProvider, { children: _jsx(Story, {}) })),
10
- ],
11
- tags: ['autodocs'], // per indicare che vogliamo generare la documentazione
12
- argTypes: {
13
- // per ogni property, indicare la descrizione che si desidera mostrare nella documentazione
11
+ decorators: [(Story) => (_jsxs(TMDeviceProvider, { children: [" ", _jsx(Story, {}), " "] })),],
12
+ tags: ['autodocs'],
13
+ // Tags for categorizing the component within Storybook
14
+ argTypes: sortArgTypes({
14
15
  color: { description: 'The color of the button' },
15
- },
16
+ }),
16
17
  };
18
+ /******* 1. Default Template and Default TMButton *******/
17
19
  const Template = (args) => _jsx(TMButton, { ...args });
18
- // definiamo un prototipo che verrà mostrato nel browser (è possibile definirne altri, es.: AdvancedButton)
19
- export const NormalButton = Template.bind({});
20
- NormalButton.args = {
20
+ export const NormalTMButton = Template.bind({});
21
+ NormalTMButton.args = {
21
22
  caption: 'Click Me!',
22
23
  btnStyle: 'normal',
23
24
  icon: _jsx(IconCheck, {}),
24
- // advancedColor: '#28a745',
25
25
  width: '120px',
26
26
  height: '40px',
27
+ showTooltip: false,
27
28
  onClick: () => alert('NormalButton clicked!')
28
29
  };
@@ -0,0 +1,10 @@
1
+ import { Meta } from '@storybook/react';
2
+ declare const _default: Meta;
3
+ export default _default;
4
+ import 'devextreme/dist/css/dx.material.blue.light.css';
5
+ import '/lib/css/tm-sdkui.css';
6
+ export declare const DefaultTMDatagrid: any;
7
+ /******* 2. Default Template and Datagrid with Search Panel to Right *******/
8
+ export declare const TMDatagridWithSearchPanelToRight: any;
9
+ /******* 3. Default Template and Datagrid with Counter enable *******/
10
+ export declare const TMDatagridWithCounters: any;
@@ -0,0 +1,310 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useMemo, useState } from 'react';
3
+ import { TMDataGrid, TMDeviceProvider } from '../components';
4
+ import { TMDataGridPageSize } from '../components/base/TMDataGrid';
5
+ const generateData = (count) => {
6
+ const data = [];
7
+ for (let i = 1; i <= count; i++) {
8
+ data.push({
9
+ id: i,
10
+ name: `User ${i}`,
11
+ email: `user${i}@example.com`,
12
+ phone: `+1-555-000${i % 1000}`,
13
+ city: `City ${i % 100}`,
14
+ age: 20 + (i % 50),
15
+ gender: i % 2 === 0 ? "Male" : "Female",
16
+ address: `Street ${i}`,
17
+ country: `Country ${i % 5}`,
18
+ zipCode: `12345-${i % 100}`,
19
+ state: `State ${i % 10}`,
20
+ occupation: `Occupation ${i % 3}`,
21
+ company: `Company ${i % 10}`,
22
+ socialSecurityNumber: `SSN-${i % 10000}`,
23
+ birthDate: `199${(i % 30) + 1}-01-01`,
24
+ maritalStatus: i % 2 === 0 ? "Single" : "Married",
25
+ hobby: `Hobby ${i % 5}`,
26
+ profilePicture: `https://example.com/pic${i}.jpg`,
27
+ lastLogin: `2025-02-0${i % 10}`,
28
+ creditScore: 600 + (i % 400),
29
+ loyaltyPoints: i % 1000,
30
+ referralCode: `REF${i % 1000}`,
31
+ preferredLanguage: `Language ${i % 5}`,
32
+ subscriptionStatus: i % 2 === 0 ? "Active" : "Inactive",
33
+ device: `Device ${i % 5}`,
34
+ lastPurchaseDate: `2025-01-0${i % 10}`,
35
+ shippingAddress: `Address ${i}`,
36
+ preferredPaymentMethod: `Payment ${i % 3}`,
37
+ totalSpent: 100 + (i * 10),
38
+ referralCount: i % 50,
39
+ notes: `Notes about user ${i}`,
40
+ lastUpdated: `2025-02-0${i % 10}`,
41
+ emergencyContact: `Emergency ${i % 5}`,
42
+ jobTitle: `Job ${i % 10}`,
43
+ vehicle: `Vehicle ${i % 4}`,
44
+ bloodType: i % 4 === 0 ? "O" : i % 4 === 1 ? "A" : i % 4 === 2 ? "B" : "AB",
45
+ pet: i % 2 === 0 ? "Dog" : "Cat",
46
+ subscriptionPlan: `Plan ${i % 3}`,
47
+ favoriteColor: `Color ${i % 7}`,
48
+ });
49
+ }
50
+ return data;
51
+ };
52
+ // Default export for Storybook configuration for TMDataGrid component
53
+ export default {
54
+ // The title will determine how the component appears in the sidebar of Storybook
55
+ title: 'Components/TMDataGrid',
56
+ // Specifies the component that is being documented in this story
57
+ component: TMDataGrid,
58
+ decorators: [(Story) => (_jsxs(TMDeviceProvider, { children: [" ", _jsx(Story, {}), " "] })),],
59
+ // Tags for categorizing the component within Storybook
60
+ tags: ['autodocs'],
61
+ // Description
62
+ description: 'A responsive, customizable data grid component for displaying tabular data efficiently.',
63
+ argTypes: sortArgTypes({
64
+ accessKey: {
65
+ description: "Specifies the shortcut key that sets focus on the UI component",
66
+ control: { type: 'text' },
67
+ type: { name: "string", required: false },
68
+ },
69
+ activeStateEnabled: {
70
+ description: "Specifies whether the UI component changes its visual state as a result of user interaction"
71
+ },
72
+ allowColumnReordering: {
73
+ description: "Specifies whether a user can reorder columns"
74
+ },
75
+ allowColumnResizing: {
76
+ description: "Specifies whether a user can resize columns"
77
+ },
78
+ autoNavigateToFocusedRow: {
79
+ description: "Automatically scrolls the component to the focused row when the focusedRowKey is changed. Incompatible with infinite scrolling mode"
80
+ },
81
+ cacheEnabled: {
82
+ description: "Specifies whether data should be cached"
83
+ },
84
+ cellHintEnabled: {
85
+ description: "Enables a hint that appears when a user hovers the mouse pointer over a cell with truncated content"
86
+ },
87
+ columnAutoWidth: {
88
+ description: "Specifies whether columns should adjust their widths to the content"
89
+ },
90
+ columnChooser: {
91
+ description: "Configures the column chooser"
92
+ },
93
+ columnFixing: {
94
+ description: "Configures column fixing"
95
+ },
96
+ columnHidingEnabled: {
97
+ description: "Specifies whether the UI component should hide columns to adapt to the screen or container size. Ignored if allowColumnResizing is true and columnResizingMode is 'widget'"
98
+ },
99
+ columnMinWidth: {
100
+ description: "Specifies the minimum width of columns"
101
+ },
102
+ columnResizingMode: {
103
+ description: "Specifies how the UI component resizes columns. Applies only if allowColumnResizing is true"
104
+ },
105
+ columns: {
106
+ description: "An array of grid columns"
107
+ },
108
+ columnWidth: {
109
+ description: "Specifies the width for all data columns. Has a lower priority than the column.width property"
110
+ },
111
+ customizeColumns: {
112
+ description: "Customizes columns after they are created"
113
+ },
114
+ dataRowComponent: {
115
+ description: "An alias for the dataRowTemplate property specified in React. Accepts a custom component"
116
+ },
117
+ dataRowRender: {
118
+ description: "An alias for the dataRowTemplate property specified in React. Accepts a rendering function"
119
+ },
120
+ dataRowTemplate: {
121
+ description: "Specifies a custom template for data rows"
122
+ },
123
+ dataSource: {
124
+ description: "Binds the UI component to data"
125
+ },
126
+ dateSerializationFormat: {
127
+ description: "Specifies the format in which date-time values should be sent to the server"
128
+ },
129
+ disabled: {
130
+ description: "Specifies whether the UI component responds to user interaction"
131
+ },
132
+ editing: {
133
+ description: "Configures editing"
134
+ },
135
+ elementAttr: {
136
+ description: "Specifies the global attributes to be attached to the UI component's container element"
137
+ },
138
+ errorRowEnabled: {
139
+ description: "Indicates whether to show the error row"
140
+ },
141
+ export: {
142
+ description: "Configures client-side exporting"
143
+ },
144
+ filterBuilder: {
145
+ description: "Configures the integrated filter builder"
146
+ },
147
+ filterBuilderPopup: {
148
+ description: "Configures the popup in which the integrated filter builder is shown"
149
+ },
150
+ filterPanel: {
151
+ description: "Configures the filter panel"
152
+ },
153
+ filterRow: {
154
+ description: "Configures the filter row"
155
+ },
156
+ filterSyncEnabled: {
157
+ description: "Specifies whether to synchronize the filter row, header filter, and filter builder"
158
+ },
159
+ filterValue: {
160
+ description: "Specifies a filter expression"
161
+ },
162
+ focusedColumnIndex: {
163
+ description: "The index of the column that contains the focused data cell"
164
+ },
165
+ focusedRowEnabled: {
166
+ description: "Specifies whether the focused row feature is enabled"
167
+ },
168
+ focusedRowIndex: {
169
+ description: "Specifies or indicates the focused data row's index"
170
+ },
171
+ focusedRowKey: {
172
+ description: "Specifies initially or currently focused grid row's key"
173
+ },
174
+ grouping: {
175
+ description: "Configures grouping"
176
+ },
177
+ groupPanel: {
178
+ description: "Configures the group panel"
179
+ },
180
+ headerFilter: {
181
+ description: "Configures the header filter feature"
182
+ },
183
+ height: {
184
+ description: "Specifies the UI component's height"
185
+ },
186
+ highlightChanges: {
187
+ description: "Specifies whether to highlight rows and cells with edited data. repaintChangesOnly should be true"
188
+ },
189
+ hint: {
190
+ description: "Specifies text for a hint that appears when a user pauses on the UI component"
191
+ },
192
+ hoverStateEnabled: {
193
+ description: "Specifies whether to highlight rows when a user moves the mouse pointer over them"
194
+ },
195
+ keyboardNavigation: {
196
+ description: "Configures keyboard navigation"
197
+ },
198
+ keyExpr: {
199
+ description: "Specifies the key property (or properties) that provide key values to access data items"
200
+ },
201
+ loadPanel: {
202
+ description: "Configures the load panel"
203
+ },
204
+ masterDetail: {
205
+ description: "Allows you to build a master-detail interface in the grid"
206
+ },
207
+ noDataText: {
208
+ description: "Specifies a text string shown when the DataGrid does not display any data"
209
+ },
210
+ pager: {
211
+ description: "Configures the pager"
212
+ },
213
+ paging: {
214
+ description: "Configures paging"
215
+ },
216
+ remoteOperations: {
217
+ description: "Notifies the DataGrid of the server's data processing operations"
218
+ },
219
+ renderAsync: {
220
+ description: "Specifies whether to render the filter row, command columns, and columns with showEditorAlways set to true after other elements"
221
+ },
222
+ rowAlternationEnabled: {
223
+ description: "Specifies whether rows should be shaded differently"
224
+ },
225
+ rowDragging: {
226
+ description: "Configures row reordering using drag and drop gestures"
227
+ },
228
+ rtlEnabled: {
229
+ description: "Switches the UI component to a right-to-left representation"
230
+ },
231
+ scrolling: {
232
+ description: "Configures scrolling"
233
+ },
234
+ searchPanel: {
235
+ description: "Configures the search panel"
236
+ },
237
+ selectedRowKeys: {
238
+ description: "Allows you to select rows or determine which rows are selected"
239
+ },
240
+ selection: {
241
+ description: "Configures runtime selection"
242
+ },
243
+ selectionFilter: {
244
+ description: "Specifies filters for the rows that must be selected initially"
245
+ },
246
+ showBorders: {
247
+ description: "Specifies whether the outer borders of the UI component are visible"
248
+ },
249
+ showColumnHeaders: {
250
+ description: "Specifies whether column headers are visible"
251
+ },
252
+ showColumnLines: {
253
+ description: "Specifies whether vertical lines that separate one column from another are visible"
254
+ },
255
+ showRowLines: {
256
+ description: "Specifies whether horizontal lines that separate one row from another are visible"
257
+ },
258
+ stateStoring: {
259
+ description: "Configures state storing"
260
+ },
261
+ summary: {
262
+ description: "Specifies the properties of the grid summary"
263
+ },
264
+ tabIndex: {
265
+ description: "Specifies the number of the element when the Tab key is used for navigating"
266
+ },
267
+ toolbar: {
268
+ description: "Configures the toolbar"
269
+ },
270
+ visible: {
271
+ description: "Specifies whether the UI component is visible"
272
+ },
273
+ width: {
274
+ description: "Specifies the UI component's width"
275
+ },
276
+ wordWrapEnabled: {
277
+ description: "Specifies whether text that does not fit into a column should be wrapped"
278
+ },
279
+ }),
280
+ };
281
+ // Importing the DevExtreme library's Material Design theme in light blue color scheme
282
+ import 'devextreme/dist/css/dx.material.blue.light.css';
283
+ // Importing custom styles for the tm-sdkui library
284
+ import '/lib/css/tm-sdkui.css';
285
+ import { sortArgTypes } from './TMStoriesUtils';
286
+ /******* 1. Default Template and Default TMDatagrid *******/
287
+ const DefaultTemplate = (args) => {
288
+ const dataSource = useMemo(() => generateData(5), []);
289
+ const [selectedRowKeys, setSelectedRowKeys] = useState([]);
290
+ const [focusedRowKey, setFocusedRowKey] = useState(undefined);
291
+ const onSelectionChanged = useCallback((e) => {
292
+ setSelectedRowKeys(e.component.getSelectedRowKeys());
293
+ }, []);
294
+ const onFocusedRowChanged = useCallback((e) => {
295
+ setFocusedRowKey(e.row?.key);
296
+ }, []);
297
+ return (_jsx(TMDataGrid, { ...args, dataSource: dataSource, pageSize: TMDataGridPageSize.Small, keyExpr: "id", width: "100%", height: "100%", focusedRowEnabled: true, focusedRowKey: focusedRowKey, onFocusedRowChanged: onFocusedRowChanged, selectedRowKeys: selectedRowKeys, onSelectionChanged: onSelectionChanged, columnResizingMode: 'widget', columnHidingEnabled: true, columnAutoWidth: true, allowColumnResizing: true, allowColumnReordering: true, style: { userSelect: "none" } }));
298
+ };
299
+ export const DefaultTMDatagrid = DefaultTemplate.bind({});
300
+ DefaultTMDatagrid.args = {};
301
+ /******* 2. Default Template and Datagrid with Search Panel to Right *******/
302
+ export const TMDatagridWithSearchPanelToRight = DefaultTemplate.bind({});
303
+ TMDatagridWithSearchPanelToRight.args = {
304
+ searchPanelToolbarPosition: 'default',
305
+ };
306
+ /******* 3. Default Template and Datagrid with Counter enable *******/
307
+ export const TMDatagridWithCounters = DefaultTemplate.bind({});
308
+ TMDatagridWithCounters.args = {
309
+ counterConfig: { show: true }
310
+ };
@@ -0,0 +1 @@
1
+ export declare const sortArgTypes: (argTypes: Record<string, any>) => Record<string, any>;
@@ -0,0 +1,10 @@
1
+ // Helper function to sort an object by its keys alphabetically
2
+ export const sortArgTypes = (argTypes) => {
3
+ const sortedArgTypes = Object.keys(argTypes)
4
+ .sort()
5
+ .reduce((acc, key) => {
6
+ acc[key] = argTypes[key];
7
+ return acc;
8
+ }, {});
9
+ return sortedArgTypes;
10
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@topconsultnpm/sdkui-react-beta",
3
- "version": "6.10.19",
3
+ "version": "6.10.21",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1",
@@ -52,5 +52,4 @@
52
52
  "overrides": {
53
53
  "esbuild": "^0.25.0"
54
54
  }
55
-
56
55
  }