@dotcms/react 0.0.1-alpha.3 → 0.0.1-alpha.5

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.
package/index.esm.js CHANGED
@@ -2370,21 +2370,22 @@ $({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign },
2370
2370
  assign: assign
2371
2371
  });
2372
2372
 
2373
- const widthClassMap = {
2374
- 1: 'col-span-1',
2375
- 2: 'col-span-2',
2376
- 3: 'col-span-3',
2377
- 4: 'col-span-4',
2378
- 5: 'col-span-5',
2379
- 6: 'col-span-6',
2380
- 7: 'col-span-7',
2381
- 8: 'col-span-8',
2382
- 9: 'col-span-9',
2383
- 10: 'col-span-10',
2384
- 11: 'col-span-11',
2385
- 12: 'col-span-12'
2386
- };
2387
- const statrClassMap = {
2373
+ const endClassMap = {
2374
+ 1: 'col-end-1',
2375
+ 2: 'col-end-2',
2376
+ 3: 'col-end-3',
2377
+ 4: 'col-end-4',
2378
+ 5: 'col-end-5',
2379
+ 6: 'col-end-6',
2380
+ 7: 'col-end-7',
2381
+ 8: 'col-end-8',
2382
+ 9: 'col-end-9',
2383
+ 10: 'col-end-10',
2384
+ 11: 'col-end-11',
2385
+ 12: 'col-end-12',
2386
+ 13: 'col-end-13'
2387
+ };
2388
+ const startClassMap = {
2388
2389
  1: 'col-start-1',
2389
2390
  2: 'col-start-2',
2390
2391
  3: 'col-start-3',
@@ -2481,12 +2482,12 @@ const getContainersData = (containers, containerRef) => {
2481
2482
  });
2482
2483
  };
2483
2484
  const combineClasses = classes => classes.filter(Boolean).join(' ');
2484
- const getPositionStyleClasses = (width, leftOffset) => {
2485
- const widthClass = widthClassMap[width];
2486
- const startClass = statrClassMap[leftOffset];
2485
+ const getPositionStyleClasses = (start, end) => {
2486
+ const startClass = startClassMap[start];
2487
+ const endClass = endClassMap[end];
2487
2488
  return {
2488
- widthClass,
2489
- startClass
2489
+ startClass,
2490
+ endClass
2490
2491
  };
2491
2492
  };
2492
2493
 
@@ -2527,7 +2528,37 @@ function useEventMessageHandler({
2527
2528
  reload = window.location.reload
2528
2529
  }) {
2529
2530
  const rows = useRef([]);
2531
+ const observer = useRef(null);
2530
2532
  const [isInsideEditor, setIsInsideEditor] = useState(false);
2533
+ useEffect(() => {
2534
+ var _observer$current;
2535
+ observer.current = new MutationObserver(mutationsList => {
2536
+ for (const {
2537
+ addedNodes,
2538
+ removedNodes,
2539
+ type
2540
+ } of mutationsList) {
2541
+ if (type === 'childList') {
2542
+ const didNodesChanged = [...Array.from(addedNodes), ...Array.from(removedNodes)].filter(node => {
2543
+ var _node$dataset;
2544
+ return ((_node$dataset = node.dataset) == null ? void 0 : _node$dataset.dot) === 'contentlet';
2545
+ }).length;
2546
+ if (didNodesChanged) {
2547
+ postMessageToEditor({
2548
+ action: CUSTOMER_ACTIONS.CONTENT_CHANGE
2549
+ });
2550
+ }
2551
+ }
2552
+ }
2553
+ });
2554
+ (_observer$current = observer.current) == null || _observer$current.observe(document, {
2555
+ childList: true,
2556
+ subtree: true
2557
+ });
2558
+ return () => {
2559
+ if (observer.current) observer.current.disconnect();
2560
+ };
2561
+ }, []);
2531
2562
  useEffect(() => {
2532
2563
  // If the page is not inside an iframe we do nothing.
2533
2564
  if (window.parent === window) return;
@@ -2649,10 +2680,32 @@ var css_248z$1 = ".row-module_row__8V7Eh {\n display: grid;\n grid-templat
2649
2680
  var styles$1 = {"row":"row-module_row__8V7Eh"};
2650
2681
  styleInject(css_248z$1);
2651
2682
 
2652
- var css_248z = ".column-module_col-start-1__GK-q- {\n grid-column-start: 1;\n}\n\n.column-module_col-start-2__1DmkY {\n grid-column-start: 2;\n}\n\n.column-module_col-start-3__HNEPh {\n grid-column-start: 3;\n}\n\n.column-module_col-start-4__oCAwh {\n grid-column-start: 4;\n}\n\n.column-module_col-start-5__re1rB {\n grid-column-start: 5;\n}\n\n.column-module_col-start-6__dkB4w {\n grid-column-start: 6;\n}\n\n.column-module_col-start-7__kEfJb {\n grid-column-start: 7;\n}\n\n.column-module_col-start-8__Yx31z {\n grid-column-start: 8;\n}\n\n.column-module_col-start-9__9YiVY {\n grid-column-start: 9;\n}\n\n.column-module_col-start-10__6AFbk {\n grid-column-start: 10;\n}\n\n.column-module_col-start-11__LP24D {\n grid-column-start: 11;\n}\n\n.column-module_col-start-12__8p0QS {\n grid-column-start: 12;\n}\n\n.column-module_col-span-1__vOPKg {\n grid-column: span 1 / span 1;\n}\n\n.column-module_col-span-2__qVdyn {\n grid-column: span 2 / span 2;\n}\n\n.column-module_col-span-3__brcdA {\n grid-column: span 3 / span 3;\n}\n\n.column-module_col-span-4__1-c-f {\n grid-column: span 4 / span 4;\n}\n\n.column-module_col-span-5__nAGLD {\n grid-column: span 5 / span 5;\n}\n\n.column-module_col-span-6__emtw7 {\n grid-column: span 6 / span 6;\n}\n\n.column-module_col-span-7__Ad5-V {\n grid-column: span 7 / span 7;\n}\n\n.column-module_col-span-8__gEnsA {\n grid-column: span 8 / span 8;\n}\n\n.column-module_col-span-9__jWemC {\n grid-column: span 9 / span 9;\n}\n\n.column-module_col-span-10__Dzuph {\n grid-column: span 10 / span 10;\n}\n\n.column-module_col-span-11__Xgct2 {\n grid-column: span 11 / span 11;\n}\n\n.column-module_col-span-12__LvJrY {\n grid-column: span 12 / span 12;\n}\n";
2653
- var styles = {"col-start-1":"column-module_col-start-1__GK-q-","col-start-2":"column-module_col-start-2__1DmkY","col-start-3":"column-module_col-start-3__HNEPh","col-start-4":"column-module_col-start-4__oCAwh","col-start-5":"column-module_col-start-5__re1rB","col-start-6":"column-module_col-start-6__dkB4w","col-start-7":"column-module_col-start-7__kEfJb","col-start-8":"column-module_col-start-8__Yx31z","col-start-9":"column-module_col-start-9__9YiVY","col-start-10":"column-module_col-start-10__6AFbk","col-start-11":"column-module_col-start-11__LP24D","col-start-12":"column-module_col-start-12__8p0QS","col-span-1":"column-module_col-span-1__vOPKg","col-span-2":"column-module_col-span-2__qVdyn","col-span-3":"column-module_col-span-3__brcdA","col-span-4":"column-module_col-span-4__1-c-f","col-span-5":"column-module_col-span-5__nAGLD","col-span-6":"column-module_col-span-6__emtw7","col-span-7":"column-module_col-span-7__Ad5-V","col-span-8":"column-module_col-span-8__gEnsA","col-span-9":"column-module_col-span-9__jWemC","col-span-10":"column-module_col-span-10__Dzuph","col-span-11":"column-module_col-span-11__Xgct2","col-span-12":"column-module_col-span-12__LvJrY"};
2683
+ var css_248z = ".column-module_col-start-1__GK-q- {\n grid-column-start: 1;\n}\n\n.column-module_col-start-2__1DmkY {\n grid-column-start: 2;\n}\n\n.column-module_col-start-3__HNEPh {\n grid-column-start: 3;\n}\n\n.column-module_col-start-4__oCAwh {\n grid-column-start: 4;\n}\n\n.column-module_col-start-5__re1rB {\n grid-column-start: 5;\n}\n\n.column-module_col-start-6__dkB4w {\n grid-column-start: 6;\n}\n\n.column-module_col-start-7__kEfJb {\n grid-column-start: 7;\n}\n\n.column-module_col-start-8__Yx31z {\n grid-column-start: 8;\n}\n\n.column-module_col-start-9__9YiVY {\n grid-column-start: 9;\n}\n\n.column-module_col-start-10__6AFbk {\n grid-column-start: 10;\n}\n\n.column-module_col-start-11__LP24D {\n grid-column-start: 11;\n}\n\n.column-module_col-start-12__8p0QS {\n grid-column-start: 12;\n}\n\n.column-module_col-end-1__G9axv {\n grid-column-end: 1;\n}\n\n.column-module_col-end-2__pYjHG {\n grid-column-end: 2;\n}\n\n.column-module_col-end-3__4woe6 {\n grid-column-end: 3;\n}\n\n.column-module_col-end-4__zlBaT {\n grid-column-end: 4;\n}\n\n.column-module_col-end-5__aC-y8 {\n grid-column-end: 5;\n}\n\n.column-module_col-end-6__YljAP {\n grid-column-end: 6;\n}\n\n.column-module_col-end-7__lpQrW {\n grid-column-end: 7;\n}\n\n.column-module_col-end-8__F6UVd {\n grid-column-end: 8;\n}\n\n.column-module_col-end-9__kvQ3T {\n grid-column-end: 9;\n}\n\n.column-module_col-end-10__XJhrd {\n grid-column-end: 10;\n}\n\n.column-module_col-end-11__nx-lF {\n grid-column-end: 11;\n}\n\n.column-module_col-end-12__LIRnk {\n grid-column-end: 12;\n}\n\n.column-module_col-end-13__0p7YI {\n grid-column-end: 13;\n}\n";
2684
+ var styles = {"col-start-1":"column-module_col-start-1__GK-q-","col-start-2":"column-module_col-start-2__1DmkY","col-start-3":"column-module_col-start-3__HNEPh","col-start-4":"column-module_col-start-4__oCAwh","col-start-5":"column-module_col-start-5__re1rB","col-start-6":"column-module_col-start-6__dkB4w","col-start-7":"column-module_col-start-7__kEfJb","col-start-8":"column-module_col-start-8__Yx31z","col-start-9":"column-module_col-start-9__9YiVY","col-start-10":"column-module_col-start-10__6AFbk","col-start-11":"column-module_col-start-11__LP24D","col-start-12":"column-module_col-start-12__8p0QS","col-end-1":"column-module_col-end-1__G9axv","col-end-2":"column-module_col-end-2__pYjHG","col-end-3":"column-module_col-end-3__4woe6","col-end-4":"column-module_col-end-4__zlBaT","col-end-5":"column-module_col-end-5__aC-y8","col-end-6":"column-module_col-end-6__YljAP","col-end-7":"column-module_col-end-7__lpQrW","col-end-8":"column-module_col-end-8__F6UVd","col-end-9":"column-module_col-end-9__kvQ3T","col-end-10":"column-module_col-end-10__XJhrd","col-end-11":"column-module_col-end-11__nx-lF","col-end-12":"column-module_col-end-12__LIRnk","col-end-13":"column-module_col-end-13__0p7YI"};
2654
2685
  styleInject(css_248z);
2655
2686
 
2687
+ const FAKE_CONTENLET = {
2688
+ identifier: 'TEMP_EMPTY_CONTENTLET',
2689
+ title: 'TEMP_EMPTY_CONTENTLET',
2690
+ contentType: 'TEMP_EMPTY_CONTENTLET_TYPE',
2691
+ inode: 'TEMPY_EMPTY_CONTENTLET_INODE',
2692
+ widgetTitle: 'TEMP_EMPTY_CONTENTLET'
2693
+ };
2694
+ function EmptyContainer() {
2695
+ return jsx("div", {
2696
+ "data-testid": "empty-container",
2697
+ style: {
2698
+ width: '100%',
2699
+ backgroundColor: '#ECF0FD',
2700
+ display: 'flex',
2701
+ justifyContent: 'center',
2702
+ alignItems: 'center',
2703
+ color: '#030E32',
2704
+ height: '10rem'
2705
+ },
2706
+ children: "This container is empty."
2707
+ });
2708
+ }
2656
2709
  function NoContent({
2657
2710
  contentType
2658
2711
  }) {
@@ -2684,7 +2737,8 @@ function Container({
2684
2737
  pageContainers,
2685
2738
  path
2686
2739
  } = getContainersData(containers, containerRef);
2687
- const contentletsId = contentlets.map(contentlet => contentlet.identifier);
2740
+ const updatedContentlets = contentlets.length === 0 && isInsideEditor ? [FAKE_CONTENLET] : contentlets;
2741
+ const contentletsId = updatedContentlets.map(contentlet => contentlet.identifier);
2688
2742
  const container = {
2689
2743
  acceptTypes,
2690
2744
  contentletsId,
@@ -2726,9 +2780,10 @@ function Container({
2726
2780
  }
2727
2781
  });
2728
2782
  }
2729
- const renderContentlets = contentlets.map(contentlet => {
2783
+ const renderContentlets = updatedContentlets.map(contentlet => {
2730
2784
  var _viewAs$persona2;
2731
- const Component = components[contentlet.contentType] || NoContent;
2785
+ const ContentTypeComponent = components[contentlet.contentType] || NoContent;
2786
+ const Component = contentlet.identifier === 'TEMP_EMPTY_CONTENTLET' ? EmptyContainer : ContentTypeComponent;
2732
2787
  const contentletPayload = {
2733
2788
  container,
2734
2789
  contentlet: {
@@ -2768,10 +2823,10 @@ function Column({
2768
2823
  isInsideEditor
2769
2824
  } = useContext(PageContext);
2770
2825
  const {
2771
- widthClass,
2772
- startClass
2773
- } = getPositionStyleClasses(column.width, column.leftOffset);
2774
- const combinedClasses = combineClasses([styles[widthClass], styles[startClass], column.styleClass]);
2826
+ startClass,
2827
+ endClass
2828
+ } = getPositionStyleClasses(column.leftOffset, column.width + column.leftOffset);
2829
+ const combinedClasses = combineClasses([styles[endClass], styles[startClass], column.styleClass]);
2775
2830
  const columnProps = isInsideEditor ? {
2776
2831
  'data-dot': 'column',
2777
2832
  'data-testid': 'column'
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@dotcms/react",
3
- "version": "0.0.1-alpha.3",
3
+ "version": "0.0.1-alpha.5",
4
4
  "peerDependencies": {
5
5
  "react": "^18",
6
6
  "react-dom": "^18",
7
- "@dotcms/client": "latest"
7
+ "@dotcms/client": "0.0.1-alpha.5"
8
8
  },
9
9
  "description": "Official React Components library to render a dotCMS page.",
10
10
  "repository": {
@@ -49,7 +49,7 @@ export declare const getContainersData: (containers: ContainerData, containerRef
49
49
  maxContentlets: number;
50
50
  };
51
51
  export declare const combineClasses: (classes: string[]) => string;
52
- export declare const getPositionStyleClasses: (width: number, leftOffset: number) => {
53
- widthClass: string;
52
+ export declare const getPositionStyleClasses: (start: number, end: number) => {
54
53
  startClass: string;
54
+ endClass: string;
55
55
  };