slickgrid-react 5.8.0 → 5.9.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 (83) hide show
  1. package/README.md +8 -0
  2. package/dist/cjs/components/slickgrid-react.js +44 -32
  3. package/dist/cjs/components/slickgrid-react.js.map +1 -1
  4. package/dist/cjs/extensions/slickRowDetailView.js +316 -0
  5. package/dist/cjs/extensions/slickRowDetailView.js.map +1 -0
  6. package/dist/cjs/global-grid-options.js +9 -0
  7. package/dist/cjs/global-grid-options.js.map +1 -1
  8. package/dist/cjs/index.js +3 -2
  9. package/dist/cjs/index.js.map +1 -1
  10. package/dist/cjs/models/rowDetailView.interface.js +3 -0
  11. package/dist/cjs/models/rowDetailView.interface.js.map +1 -0
  12. package/dist/cjs/models/viewModelBindableData.interface.js +3 -0
  13. package/dist/cjs/models/viewModelBindableData.interface.js.map +1 -0
  14. package/dist/cjs/models/viewModelBindableInputData.interface.js +3 -0
  15. package/dist/cjs/models/viewModelBindableInputData.interface.js.map +1 -0
  16. package/dist/cjs/services/index.js +0 -1
  17. package/dist/cjs/services/index.js.map +1 -1
  18. package/dist/cjs/services/reactUtils.js +20 -0
  19. package/dist/cjs/services/reactUtils.js.map +1 -0
  20. package/dist/esm/components/slickgrid-react.js +43 -31
  21. package/dist/esm/components/slickgrid-react.js.map +1 -1
  22. package/dist/esm/extensions/slickRowDetailView.js +312 -0
  23. package/dist/esm/extensions/slickRowDetailView.js.map +1 -0
  24. package/dist/esm/global-grid-options.js +9 -0
  25. package/dist/esm/global-grid-options.js.map +1 -1
  26. package/dist/esm/index.js +3 -2
  27. package/dist/esm/index.js.map +1 -1
  28. package/dist/esm/models/rowDetailView.interface.js +2 -0
  29. package/dist/esm/models/rowDetailView.interface.js.map +1 -0
  30. package/dist/esm/models/viewModelBindableData.interface.js +2 -0
  31. package/dist/esm/models/viewModelBindableData.interface.js.map +1 -0
  32. package/dist/esm/models/viewModelBindableInputData.interface.js +2 -0
  33. package/dist/esm/models/viewModelBindableInputData.interface.js.map +1 -0
  34. package/dist/esm/services/index.js +0 -1
  35. package/dist/esm/services/index.js.map +1 -1
  36. package/dist/esm/services/reactUtils.js +14 -0
  37. package/dist/esm/services/reactUtils.js.map +1 -0
  38. package/dist/types/components/slickgrid-react.d.ts +13 -14
  39. package/dist/types/components/slickgrid-react.d.ts.map +1 -1
  40. package/dist/types/components/slickgridReactProps.d.ts +0 -2
  41. package/dist/types/components/slickgridReactProps.d.ts.map +1 -1
  42. package/dist/types/extensions/slickRowDetailView.d.ts +82 -0
  43. package/dist/types/extensions/slickRowDetailView.d.ts.map +1 -0
  44. package/dist/types/global-grid-options.d.ts.map +1 -1
  45. package/dist/types/index.d.ts +4 -3
  46. package/dist/types/index.d.ts.map +1 -1
  47. package/dist/types/models/gridOption.interface.d.ts +3 -0
  48. package/dist/types/models/gridOption.interface.d.ts.map +1 -1
  49. package/dist/types/models/index.d.ts +5 -2
  50. package/dist/types/models/index.d.ts.map +1 -1
  51. package/dist/types/models/rowDetailView.interface.d.ts +13 -0
  52. package/dist/types/models/rowDetailView.interface.d.ts.map +1 -0
  53. package/dist/types/models/slickgridReactInstance.interface.d.ts +4 -2
  54. package/dist/types/models/slickgridReactInstance.interface.d.ts.map +1 -1
  55. package/dist/types/models/viewModelBindableData.interface.d.ts +10 -0
  56. package/dist/types/models/viewModelBindableData.interface.d.ts.map +1 -0
  57. package/dist/types/models/viewModelBindableInputData.interface.d.ts +9 -0
  58. package/dist/types/models/viewModelBindableInputData.interface.d.ts.map +1 -0
  59. package/dist/types/services/index.d.ts +0 -1
  60. package/dist/types/services/index.d.ts.map +1 -1
  61. package/dist/types/services/reactUtils.d.ts +6 -0
  62. package/dist/types/services/reactUtils.d.ts.map +1 -0
  63. package/package.json +48 -69
  64. package/src/slickgrid-react/components/slickgrid-react.tsx +53 -44
  65. package/src/slickgrid-react/components/slickgridReactProps.ts +0 -2
  66. package/src/slickgrid-react/extensions/slickRowDetailView.ts +383 -0
  67. package/src/slickgrid-react/global-grid-options.ts +10 -1
  68. package/src/slickgrid-react/index.ts +5 -2
  69. package/src/slickgrid-react/models/gridOption.interface.ts +5 -0
  70. package/src/slickgrid-react/models/index.ts +5 -2
  71. package/src/slickgrid-react/models/rowDetailView.interface.ts +15 -0
  72. package/src/slickgrid-react/models/slickgridReactInstance.interface.ts +5 -2
  73. package/src/slickgrid-react/models/viewModelBindableData.interface.ts +10 -0
  74. package/src/slickgrid-react/models/viewModelBindableInputData.interface.ts +9 -0
  75. package/src/slickgrid-react/services/index.ts +0 -1
  76. package/src/slickgrid-react/services/reactUtils.ts +15 -0
  77. package/dist/cjs/services/reactUtil.service.js +0 -30
  78. package/dist/cjs/services/reactUtil.service.js.map +0 -1
  79. package/dist/esm/services/reactUtil.service.js +0 -23
  80. package/dist/esm/services/reactUtil.service.js.map +0 -1
  81. package/dist/types/services/reactUtil.service.d.ts +0 -6
  82. package/dist/types/services/reactUtil.service.d.ts.map +0 -1
  83. package/src/slickgrid-react/services/reactUtil.service.ts +0 -26
@@ -2,18 +2,19 @@ import 'regenerator-runtime/runtime.js';
2
2
  export * from '@slickgrid-universal/common';
3
3
 
4
4
  import { SlickgridReact } from './components/slickgrid-react';
5
+ import { SlickRowDetailView } from './extensions/slickRowDetailView';
5
6
  import type { SlickgridEventAggregator } from './components/slickgridEventAggregator';
6
7
  import type { SlickgridConfig } from './slickgrid-config';
7
8
 
8
9
  import type {
9
10
  SlickgridReactInstance,
10
11
  SlickgridReactComponentOutput,
12
+ RowDetailView,
11
13
  GridOption,
12
14
  } from './models/index';
13
15
 
14
16
  // expose all public classes
15
17
  export {
16
- ReactUtilService,
17
18
  TranslaterService,
18
19
  disposeAllSubscriptions
19
20
  } from './services/index';
@@ -23,6 +24,8 @@ export {
23
24
  type SlickgridReactInstance,
24
25
  type SlickgridReactComponentOutput,
25
26
  type GridOption,
27
+ type RowDetailView,
26
28
  SlickgridReact,
27
- SlickgridConfig
29
+ SlickgridConfig,
30
+ SlickRowDetailView,
28
31
  };
@@ -1,7 +1,12 @@
1
1
  import type { GridOption as UniversalGridOption } from '@slickgrid-universal/common';
2
2
  import type * as i18next from 'i18next';
3
3
 
4
+ import type { RowDetailView } from './rowDetailView.interface';
5
+
4
6
  export interface GridOption extends UniversalGridOption {
5
7
  /** I18N translation service instance */
6
8
  i18n?: i18next.i18n;
9
+
10
+ /** Row Detail View Plugin options & events (columnId, cssClass, toolTip, width) */
11
+ rowDetailView?: RowDetailView;
7
12
  }
@@ -1,3 +1,6 @@
1
- export type * from './slickgridReactInstance.interface';
2
- export type * from './reactComponentOutput.interface';
3
1
  export type * from './gridOption.interface';
2
+ export type * from './reactComponentOutput.interface';
3
+ export type * from './rowDetailView.interface';
4
+ export type * from './slickgridReactInstance.interface';
5
+ export type * from './viewModelBindableData.interface';
6
+ export type * from './viewModelBindableInputData.interface';
@@ -0,0 +1,15 @@
1
+ import type { RowDetailView as UniversalRowDetailView } from '@slickgrid-universal/common';
2
+
3
+ export interface RowDetailView extends UniversalRowDetailView {
4
+ /**
5
+ * Optionally pass your Parent Component reference to your Child Component (row detail component).
6
+ * note:: If anyone finds a better way of passing the parent to the row detail extension, please reach out and/or create a PR
7
+ */
8
+ parent?: any;
9
+
10
+ /** View Model of the preload template which shows after opening row detail & before row detail data shows up */
11
+ preloadComponent?: any;
12
+
13
+ /** View Model template that will be loaded once the async function finishes */
14
+ viewComponent?: any;
15
+ }
@@ -5,7 +5,7 @@ import type {
5
5
  GridEventService,
6
6
  GridService,
7
7
  GridStateService,
8
- GroupingAndColspanService,
8
+ HeaderGroupingService,
9
9
  PaginationService,
10
10
  ResizerService,
11
11
  SlickDataView,
@@ -53,8 +53,11 @@ export interface SlickgridReactInstance {
53
53
  /** Grid State Service */
54
54
  gridStateService: GridStateService;
55
55
 
56
+ /** @deprecated @use `headerGroupingService` */
57
+ groupingService: HeaderGroupingService;
58
+
56
59
  /** Grouping (and colspan) Service */
57
- groupingService: GroupingAndColspanService;
60
+ headerGroupingService: HeaderGroupingService;
58
61
 
59
62
  /** Pagination Service (allows you to programmatically go to first/last page, etc...) */
60
63
  paginationService?: PaginationService;
@@ -0,0 +1,10 @@
1
+ import type { SlickDataView, SlickGrid } from '@slickgrid-universal/common';
2
+
3
+ export interface ViewModelBindableData {
4
+ template: string;
5
+ model: any;
6
+ addon: any;
7
+ grid: SlickGrid;
8
+ dataView: SlickDataView;
9
+ parent?: any;
10
+ }
@@ -0,0 +1,9 @@
1
+ import type { SlickDataView, SlickGrid } from '@slickgrid-universal/common';
2
+
3
+ export interface ViewModelBindableInputData {
4
+ model: any;
5
+ addon: any;
6
+ grid: SlickGrid;
7
+ dataView: SlickDataView;
8
+ parent?: any;
9
+ }
@@ -1,4 +1,3 @@
1
- export * from './reactUtil.service';
2
1
  export * from './container.service';
3
2
  export * from './translater.service';
4
3
  export * from './utilities';
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { createRef } from 'react';
3
+ import { createRoot, type Root } from 'react-dom/client';
4
+
5
+ export function loadReactComponentDynamically<T = any>(customComponent: any, targetElm: HTMLElement, props?: any, root?: Root | null): Promise<{ component: T, root: Root }> {
6
+ return new Promise(resolve => {
7
+ const compRef = createRef();
8
+ root ??= createRoot(targetElm);
9
+ root.render(React.createElement(customComponent, { ...props, ref: compRef }));
10
+
11
+ queueMicrotask(() => {
12
+ resolve({ component: compRef.current as T, root: root as Root });
13
+ });
14
+ });
15
+ }
@@ -1,30 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ReactUtilService = void 0;
7
- const react_1 = __importDefault(require("react"));
8
- const react_dom_1 = __importDefault(require("react-dom"));
9
- class ReactUtilService {
10
- createReactComponentAppendToDom(component, targetElement, clearTargetContent = false, props = undefined, children = []) {
11
- const componentElement = react_1.default.createElement(component, props, children);
12
- let componentInstance;
13
- // Append DOM element to the HTML element specified
14
- if (targetElement) {
15
- if (clearTargetContent && targetElement.innerHTML) {
16
- targetElement.innerHTML = '';
17
- }
18
- // @ts-ignore
19
- componentInstance = react_dom_1.default.render(componentElement, targetElement);
20
- }
21
- else {
22
- // @ts-ignore
23
- componentInstance = react_dom_1.default.render(componentElement, document.body);
24
- }
25
- const domElement = react_dom_1.default.findDOMNode(componentInstance);
26
- return { componentInstance, componentElement, domElement };
27
- }
28
- }
29
- exports.ReactUtilService = ReactUtilService;
30
- //# sourceMappingURL=reactUtil.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reactUtil.service.js","sourceRoot":"","sources":["../../../src/slickgrid-react/services/reactUtil.service.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA8C;AAC9C,0DAAiC;AAGjC,MAAa,gBAAgB;IAC3B,+BAA+B,CAAC,SAAc,EAAE,aAAqC,EAAE,kBAAkB,GAAG,KAAK,EAAE,QAAa,SAAS,EAAE,WAAwB,EAAE;QACnK,MAAM,gBAAgB,GAAG,eAAK,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACzE,IAAI,iBAAsB,CAAC;QAE3B,mDAAmD;QACnD,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,kBAAkB,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;gBAClD,aAAa,CAAC,SAAS,GAAG,EAAE,CAAC;YAC/B,CAAC;YACD,aAAa;YACb,iBAAiB,GAAG,mBAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACN,aAAa;YACb,iBAAiB,GAAG,mBAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,UAAU,GAAG,mBAAQ,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAE3D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC;IAC7D,CAAC;CACF;AArBD,4CAqBC"}
@@ -1,23 +0,0 @@
1
- import React from 'react';
2
- import ReactDOM from 'react-dom';
3
- export class ReactUtilService {
4
- createReactComponentAppendToDom(component, targetElement, clearTargetContent = false, props = undefined, children = []) {
5
- const componentElement = React.createElement(component, props, children);
6
- let componentInstance;
7
- // Append DOM element to the HTML element specified
8
- if (targetElement) {
9
- if (clearTargetContent && targetElement.innerHTML) {
10
- targetElement.innerHTML = '';
11
- }
12
- // @ts-ignore
13
- componentInstance = ReactDOM.render(componentElement, targetElement);
14
- }
15
- else {
16
- // @ts-ignore
17
- componentInstance = ReactDOM.render(componentElement, document.body);
18
- }
19
- const domElement = ReactDOM.findDOMNode(componentInstance);
20
- return { componentInstance, componentElement, domElement };
21
- }
22
- }
23
- //# sourceMappingURL=reactUtil.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reactUtil.service.js","sourceRoot":"","sources":["../../../src/slickgrid-react/services/reactUtil.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAyB,MAAM,OAAO,CAAC;AAC9C,OAAO,QAAQ,MAAM,WAAW,CAAC;AAGjC,MAAM,OAAO,gBAAgB;IAC3B,+BAA+B,CAAC,SAAc,EAAE,aAAqC,EAAE,kBAAkB,GAAG,KAAK,EAAE,QAAa,SAAS,EAAE,WAAwB,EAAE;QACnK,MAAM,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACzE,IAAI,iBAAsB,CAAC;QAE3B,mDAAmD;QACnD,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,kBAAkB,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;gBAClD,aAAa,CAAC,SAAS,GAAG,EAAE,CAAC;YAC/B,CAAC;YACD,aAAa;YACb,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACN,aAAa;YACb,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAE3D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC;IAC7D,CAAC;CACF"}
@@ -1,6 +0,0 @@
1
- import { type ReactNode } from 'react';
2
- import type { SlickgridReactComponentOutput } from '../models/reactComponentOutput.interface';
3
- export declare class ReactUtilService {
4
- createReactComponentAppendToDom(component: any, targetElement?: HTMLElement | Element, clearTargetContent?: boolean, props?: any, children?: ReactNode[]): SlickgridReactComponentOutput;
5
- }
6
- //# sourceMappingURL=reactUtil.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reactUtil.service.d.ts","sourceRoot":"","sources":["../../../src/slickgrid-react/services/reactUtil.service.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE9C,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AAE9F,qBAAa,gBAAgB;IAC3B,+BAA+B,CAAC,SAAS,EAAE,GAAG,EAAE,aAAa,CAAC,EAAE,WAAW,GAAG,OAAO,EAAE,kBAAkB,UAAQ,EAAE,KAAK,GAAE,GAAe,EAAE,QAAQ,GAAE,SAAS,EAAO,GAAG,6BAA6B;CAoBtM"}
@@ -1,26 +0,0 @@
1
- import React, { type ReactNode } from 'react';
2
- import ReactDOM from 'react-dom';
3
- import type { SlickgridReactComponentOutput } from '../models/reactComponentOutput.interface';
4
-
5
- export class ReactUtilService {
6
- createReactComponentAppendToDom(component: any, targetElement?: HTMLElement | Element, clearTargetContent = false, props: any = undefined, children: ReactNode[] = []): SlickgridReactComponentOutput {
7
- const componentElement = React.createElement(component, props, children);
8
- let componentInstance: any;
9
-
10
- // Append DOM element to the HTML element specified
11
- if (targetElement) {
12
- if (clearTargetContent && targetElement.innerHTML) {
13
- targetElement.innerHTML = '';
14
- }
15
- // @ts-ignore
16
- componentInstance = ReactDOM.render(componentElement, targetElement);
17
- } else {
18
- // @ts-ignore
19
- componentInstance = ReactDOM.render(componentElement, document.body);
20
- }
21
-
22
- const domElement = ReactDOM.findDOMNode(componentInstance);
23
-
24
- return { componentInstance, componentElement, domElement };
25
- }
26
- }