@dotcms/react 0.0.1-beta.2 → 0.0.1-beta.20

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/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@dotcms/react",
3
- "version": "0.0.1-beta.2",
3
+ "version": "0.0.1-beta.20",
4
4
  "peerDependencies": {
5
5
  "react": ">=18",
6
6
  "react-dom": ">=18",
7
- "@dotcms/client": "0.0.1-beta.2",
8
- "@dotcms/uve": "0.0.1-beta.2",
7
+ "@dotcms/client": "0.0.1-beta.20",
8
+ "@dotcms/uve": "0.0.1-beta.20",
9
9
  "@tinymce/tinymce-react": "^5.1.1"
10
10
  },
11
11
  "description": "Official React Components library to render a dotCMS page.",
@@ -22,6 +22,27 @@
22
22
  "React",
23
23
  "Components"
24
24
  ],
25
+ "exports": {
26
+ "./package.json": "./package.json",
27
+ ".": {
28
+ "import": "./index.esm.js",
29
+ "types": "./index.esm.d.ts"
30
+ },
31
+ "./next": {
32
+ "import": "./next.esm.js",
33
+ "types": "./next.esm.d.ts"
34
+ }
35
+ },
36
+ "typesVersions": {
37
+ "*": {
38
+ ".": [
39
+ "./src/index.d.ts"
40
+ ],
41
+ "next": [
42
+ "./src/next.d.ts"
43
+ ]
44
+ }
45
+ },
25
46
  "author": "dotcms <dev@dotcms.com>",
26
47
  "license": "MIT",
27
48
  "bugs": {
@@ -1,4 +1,4 @@
1
- import { DotCMSColumnContainer, DotCMSPageAsset, DotPageAssetLayoutColumn } from '../types';
1
+ import { DotCMSColumnContainer, DotCMSPageAsset, DotPageAssetLayoutColumn } from '@dotcms/uve/types';
2
2
  export declare const MOCK_COLUMN: DotPageAssetLayoutColumn;
3
3
  export declare const MOCK_CONTAINER: DotCMSColumnContainer;
4
4
  export declare const MOCK_PAGE_ASSET: DotCMSPageAsset;
@@ -1,4 +1,4 @@
1
- import { DotPageAssetLayoutColumn } from '../../types';
1
+ import { DotPageAssetLayoutColumn } from '@dotcms/uve/types';
2
2
  /**
3
3
  * @internal
4
4
  *
@@ -1,4 +1,4 @@
1
- import { DotCMSColumnContainer } from '../../types';
1
+ import { DotCMSColumnContainer } from '@dotcms/uve/types';
2
2
  /**
3
3
  * @internal
4
4
  *
@@ -1,4 +1,4 @@
1
- import { DotContainerAttributes } from '../../utils';
1
+ import { DotContainerAttributes } from '@dotcms/uve/types';
2
2
  /**
3
3
  * @internal
4
4
  *
@@ -10,7 +10,7 @@ import { DotContainerAttributes } from '../../utils';
10
10
  * @param {string} props.identifier - Container identifier
11
11
  * @returns {JSX.Element | null} Message about missing container or null in production
12
12
  */
13
- export declare const ContainerNoFound: ({ identifier }: {
13
+ export declare const ContainerNotFound: ({ identifier }: {
14
14
  identifier: string;
15
15
  }) => import("react/jsx-runtime").JSX.Element | null;
16
16
  /**
@@ -1,4 +1,4 @@
1
- import { DotCMSContentlet } from '../../types';
1
+ import { DotCMSContentlet } from '@dotcms/uve/types';
2
2
  /**
3
3
  * @internal
4
4
  *
@@ -1,6 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { DotCMSPageRendererMode } from '../../contexts/DotCMSPageContext';
3
- import { DotCMSContentlet, DotCMSPageAsset } from '../../types';
2
+ import { DotCMSContentlet, DotCMSPageAsset, DotCMSPageRendererMode } from '@dotcms/uve/types';
4
3
  interface DotCMSLayoutBodyProps {
5
4
  page: DotCMSPageAsset;
6
5
  components: Record<string, React.ComponentType<DotCMSContentlet>>;
@@ -9,28 +8,18 @@ interface DotCMSLayoutBodyProps {
9
8
  /**
10
9
  * DotCMSLayoutBody component renders the layout body for a DotCMS page.
11
10
  *
12
- * It utilizes the page asset's layout body to render rows using the Row component.
13
- * If the layout body does not exist, it renders an error message.
14
- * It also provides context (DotCMSPageContext) with the page asset, optional user components,
15
- * and the renderer mode to its children.
11
+ * It utilizes the dotCMS page asset's layout body to render the page body.
12
+ * If the layout body does not exist, it renders an error message in the mode is `development`.
16
13
  *
17
14
  * @public
18
15
  * @component
19
16
  * @param {Object} props - Component properties.
20
17
  * @param {DotCMSPageAsset} props.page - The DotCMS page asset containing the layout information.
21
- * @param {Record<string, React.ComponentType<DotCMSContentlet>>} [props.components] - Optional mapping of custom components for content rendering.
18
+ * @param {Record<string, React.ComponentType<DotCMSContentlet>>} [props.components] - mapping of custom components for content rendering.
22
19
  * @param {DotCMSPageRendererMode} [props.mode='production'] - The renderer mode; defaults to 'production'. Alternate modes might trigger different behaviors.
23
20
  *
24
21
  * @returns {JSX.Element} The rendered DotCMS page body or an error message if the layout body is missing.
25
22
  *
26
- * -------------------------------------------------------------------
27
- *
28
- * El componente DotCMSLayoutBody renderiza el cuerpo del layout para una página de DotCMS.
29
- *
30
- * Utiliza el "body" del layout del asset de la página para renderizar las filas mediante el componente Row.
31
- * Si el "body" del layout no está presente, renderiza un mensaje de error.
32
- * También provee un contexto (DotCMSPageContext) con el asset de la página, componentes de usuario opcionales,
33
- * y el modo del renderizado para sus componentes hijos.
34
23
  */
35
24
  export declare const DotCMSLayoutBody: ({ page, components, mode }: DotCMSLayoutBodyProps) => import("react/jsx-runtime").JSX.Element;
36
25
  export {};
@@ -1,9 +1,6 @@
1
- import { DotCMSPageRendererMode } from '../../../contexts/DotCMSPageContext';
2
1
  /**
3
2
  * Error message component for when the page body is missing
4
3
  *
5
4
  * @return {JSX.Element} Error message component
6
5
  */
7
- export declare const ErrorMessage: ({ mode }: {
8
- mode: DotCMSPageRendererMode;
9
- }) => import("react/jsx-runtime").JSX.Element | null;
6
+ export declare const ErrorMessage: () => false | import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,49 @@
1
+ /// <reference types="react" />
2
+ import { UVE_MODE } from '@dotcms/uve/types';
3
+ /**
4
+ * Props for the DotCMSShow component.
5
+ *
6
+ * @typedef {Object} DotCMSShowProps
7
+ * @property {React.ReactNode} children - The children to be rendered when the condition is met.
8
+ * @property {UVE_MODE} [when=UVE_MODE.EDIT] - The UVE mode in which the children should be rendered.
9
+ */
10
+ type DotCMSShowProps = {
11
+ children: React.ReactNode;
12
+ when?: UVE_MODE;
13
+ };
14
+ /**
15
+ * DotCMSShow component is used to conditionally render its children
16
+ * based on the Universal Visual Editor (UVE) mode. It checks if the UVE
17
+ * is in a specified mode and only renders its children in that case.
18
+ *
19
+ * @param {Object} props - The component props.
20
+ * @param {React.ReactNode} props.children - The children to be rendered when the condition is met.
21
+ * @param {UVE_MODE} [props.when=UVE_MODE.EDIT] - The UVE mode in which the children should be rendered.
22
+ * @returns {React.ReactNode | null} The children if the current UVE mode matches the `when` prop, otherwise null.
23
+ *
24
+ * @example
25
+ * // Basic usage: Render content only in edit mode
26
+ * <DotCMSShow when={UVE_MODE.EDIT}>
27
+ * <div>Edit Mode Content</div>
28
+ * </DotCMSShow>
29
+ *
30
+ * // This will render <div>Edit Mode Content</div> only if the UVE is in edit mode.
31
+ *
32
+ * @example
33
+ * // Render content in preview mode
34
+ * <DotCMSShow when={UVE_MODE.PREVIEW}>
35
+ * <MyCustomPreviewComponent />
36
+ * </DotCMSShow>
37
+ *
38
+ * // MyCustomPreviewComponent will only be rendered if the UVE is in preview mode.
39
+ *
40
+ * @example
41
+ * // Render content in live mode
42
+ * <DotCMSShow when={UVE_MODE.LIVE}>
43
+ * <LiveContentComponent />
44
+ * </DotCMSShow>
45
+ *
46
+ * // LiveContentComponent will only be rendered if the UVE is in live mode.
47
+ */
48
+ export declare const DotCMSShow: ({ children, when }: DotCMSShowProps) => React.ReactNode | null;
49
+ export {};
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { DotCMSContentlet } from '../../types';
2
+ import { DotCMSContentlet } from '@dotcms/uve/types';
3
3
  /**
4
4
  * @internal
5
5
  *
@@ -1,4 +1,4 @@
1
- import { DotPageAssetLayoutRow } from '../../types';
1
+ import { DotPageAssetLayoutRow } from '@dotcms/uve/types';
2
2
  /**
3
3
  * @internal
4
4
  *
@@ -1,6 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { DotCMSContentlet, DotCMSPageAsset } from '../types';
3
- export type DotCMSPageRendererMode = 'production' | 'development';
2
+ import { DotCMSContentlet, DotCMSPageAsset, DotCMSPageRendererMode } from '@dotcms/uve/types';
4
3
  /**
5
4
  * @internal
6
5
  *
@@ -0,0 +1,31 @@
1
+ import { UVE_MODE } from '@dotcms/uve/types';
2
+ /**
3
+ * Custom hook to determine if the current UVE (Universal Visual Editor) mode
4
+ * matches the specified mode. This hook is useful for conditionally rendering
5
+ * components based on the UVE mode.
6
+ *
7
+ * @param {UVE_MODE} when - The UVE mode to check against.
8
+ * @returns {boolean} True if the current UVE mode matches the specified mode, otherwise false.
9
+ *
10
+ * @example
11
+ * // Basic usage: Check if the UVE is in edit mode
12
+ * const showInEditMode = useDotCMSShowWhen(UVE_MODE.EDIT);
13
+ * if (showInEditMode) {
14
+ * // Render edit-specific components
15
+ * }
16
+ *
17
+ * @example
18
+ * // Check if the UVE is in preview mode
19
+ * const showInPreviewMode = useDotCMSShowWhen(UVE_MODE.PREVIEW);
20
+ * if (showInPreviewMode) {
21
+ * // Render preview-specific components
22
+ * }
23
+ *
24
+ * @example
25
+ * // Check if the UVE is in live mode
26
+ * const showInLiveMode = useDotCMSShowWhen(UVE_MODE.LIVE);
27
+ * if (showInLiveMode) {
28
+ * // Render live-specific components
29
+ * }
30
+ */
31
+ export declare const useDotCMSShowWhen: (when: UVE_MODE) => boolean;
@@ -1,13 +1,10 @@
1
- import { DotCMSPageRendererMode } from '../contexts/DotCMSPageContext';
2
1
  /**
3
2
  * @internal
4
3
  * A React hook that determines if the current environment is in development mode.
5
4
  *
6
5
  * The hook returns `true` if either:
7
- * - The context mode (or the optional `renderMode` argument) is set to 'development', or
8
- * - The application is running inside the DotCMS editor (as determined by `isInsideEditor()`).
6
+ * - The application is running inside the DotCMS editor (as determined by `getUVEState()`).
9
7
  *
10
- * @param {DotCMSPageRendererMode} [renderMode] - Optional override for the render mode.
11
8
  * @returns {boolean} - `true` if in development mode or inside the editor; otherwise, `false`.
12
9
  */
13
- export declare const useIsDevMode: (renderMode?: DotCMSPageRendererMode) => boolean;
10
+ export declare const useIsDevMode: () => boolean;
package/src/next.d.ts CHANGED
@@ -1 +1,3 @@
1
1
  export { DotCMSLayoutBody } from './lib/next/components/DotCMSLayoutBody/DotCMSLayoutBody';
2
+ export { DotCMSShow } from './lib/next/components/DotCMSShow/DotCMSShow';
3
+ export { useDotCMSShowWhen } from './lib/next/hooks/useDotCMSShowWhen';
@@ -1,421 +0,0 @@
1
- export interface DotCMSPageAsset {
2
- canCreateTemplate?: boolean;
3
- containers: {
4
- [key: string]: DotCMSPageAssetContainer;
5
- };
6
- layout: DotCMSLayout;
7
- page: DotCMSPage;
8
- site: DotCMSSite;
9
- template: DotCMSTemplate;
10
- viewAs?: DotCMSViewAs;
11
- vanityUrl?: DotCMSVanityUrl;
12
- }
13
- export interface DotPageAssetLayoutRow {
14
- identifier: number;
15
- value?: string;
16
- id?: string;
17
- columns: DotPageAssetLayoutColumn[];
18
- styleClass?: string;
19
- }
20
- export interface DotCMSVanityUrl {
21
- pattern: string;
22
- vanityUrlId: string;
23
- url: string;
24
- siteId: string;
25
- languageId: number;
26
- forwardTo: string;
27
- response: number;
28
- order: number;
29
- temporaryRedirect: boolean;
30
- permanentRedirect: boolean;
31
- forward: boolean;
32
- }
33
- export interface DotPageAssetLayoutColumn {
34
- preview: boolean;
35
- containers: DotCMSColumnContainer[];
36
- widthPercent: number;
37
- width: number;
38
- leftOffset: number;
39
- left: number;
40
- styleClass?: string;
41
- }
42
- export interface DotCMSColumnContainer {
43
- identifier: string;
44
- uuid: string;
45
- historyUUIDs: string[];
46
- }
47
- export interface DotCMSPageAssetContainer {
48
- container: DotCMSContainer;
49
- containerStructures: DotCMSContainerStructure[];
50
- contentlets: {
51
- [key: string]: DotCMSContentlet[];
52
- };
53
- }
54
- export interface DotCMSContainer {
55
- identifier: string;
56
- uuid: string;
57
- iDate: number;
58
- type: string;
59
- owner?: string;
60
- inode: string;
61
- source: string;
62
- title: string;
63
- friendlyName: string;
64
- modDate: number;
65
- modUser: string;
66
- sortOrder: number;
67
- showOnMenu: boolean;
68
- code?: string;
69
- maxContentlets: number;
70
- useDiv: boolean;
71
- sortContentletsBy?: string;
72
- preLoop: string;
73
- postLoop: string;
74
- staticify: boolean;
75
- luceneQuery?: string;
76
- notes: string;
77
- languageId?: number;
78
- path?: string;
79
- live: boolean;
80
- locked: boolean;
81
- working: boolean;
82
- deleted: boolean;
83
- name: string;
84
- archived: boolean;
85
- permissionId: string;
86
- versionId: string;
87
- versionType: string;
88
- permissionType: string;
89
- categoryId: string;
90
- idate: number;
91
- new: boolean;
92
- acceptTypes: string;
93
- contentlets: DotCMSContentlet[];
94
- parentPermissionable: DotCMSSiteParentPermissionable;
95
- }
96
- export interface DotCMSContentlet {
97
- archived: boolean;
98
- baseType: string;
99
- deleted?: boolean;
100
- binary?: string;
101
- binaryContentAsset?: string;
102
- binaryVersion?: string;
103
- contentType: string;
104
- file?: string;
105
- folder: string;
106
- hasLiveVersion?: boolean;
107
- hasTitleImage: boolean;
108
- host: string;
109
- hostName: string;
110
- identifier: string;
111
- inode: string;
112
- image?: any;
113
- languageId: number;
114
- language?: string;
115
- live: boolean;
116
- locked: boolean;
117
- mimeType?: string;
118
- modDate: string;
119
- modUser: string;
120
- modUserName: string;
121
- owner: string;
122
- sortOrder: number;
123
- stInode: string;
124
- title: string;
125
- titleImage: string;
126
- text?: string;
127
- url: string;
128
- working: boolean;
129
- body?: string;
130
- contentTypeIcon?: string;
131
- variant?: string;
132
- __icon__?: string;
133
- [key: string]: any;
134
- }
135
- export interface DotcmsNavigationItem {
136
- code?: any;
137
- folder: string;
138
- children?: DotcmsNavigationItem[];
139
- host: string;
140
- languageId: number;
141
- href: string;
142
- title: string;
143
- type: string;
144
- hash: number;
145
- target: string;
146
- order: number;
147
- }
148
- interface DotCMSTemplate {
149
- iDate: number;
150
- type: string;
151
- owner: string;
152
- inode: string;
153
- identifier: string;
154
- source: string;
155
- title: string;
156
- friendlyName: string;
157
- modDate: number;
158
- modUser: string;
159
- sortOrder: number;
160
- showOnMenu: boolean;
161
- image: string;
162
- drawed: boolean;
163
- drawedBody: string;
164
- theme: string;
165
- anonymous: boolean;
166
- template: boolean;
167
- name: string;
168
- live: boolean;
169
- archived: boolean;
170
- locked: boolean;
171
- working: boolean;
172
- permissionId: string;
173
- versionId: string;
174
- versionType: string;
175
- deleted: boolean;
176
- permissionType: string;
177
- categoryId: string;
178
- idate: number;
179
- new: boolean;
180
- canEdit: boolean;
181
- }
182
- interface DotCMSPage {
183
- template: string;
184
- modDate: number;
185
- metadata: string;
186
- cachettl: string;
187
- pageURI: string;
188
- title: string;
189
- type: string;
190
- showOnMenu: string;
191
- httpsRequired: boolean;
192
- inode: string;
193
- disabledWYSIWYG: any[];
194
- seokeywords: string;
195
- host: string;
196
- lastReview: number;
197
- working: boolean;
198
- locked: boolean;
199
- stInode: string;
200
- friendlyName: string;
201
- live: boolean;
202
- owner: string;
203
- identifier: string;
204
- nullProperties: any[];
205
- friendlyname: string;
206
- pagemetadata: string;
207
- languageId: number;
208
- url: string;
209
- seodescription: string;
210
- modUserName: string;
211
- folder: string;
212
- deleted: boolean;
213
- sortOrder: number;
214
- modUser: string;
215
- pageUrl: string;
216
- workingInode: string;
217
- shortyWorking: string;
218
- canEdit: boolean;
219
- canRead: boolean;
220
- canLock: boolean;
221
- lockedOn: number;
222
- lockedBy: string;
223
- lockedByName: string;
224
- liveInode: string;
225
- shortyLive: string;
226
- }
227
- interface DotCMSViewAs {
228
- language: {
229
- id: number;
230
- languageCode: string;
231
- countryCode: string;
232
- language: string;
233
- country: string;
234
- };
235
- mode: string;
236
- }
237
- interface DotCMSLayout {
238
- pageWidth: string;
239
- width: string;
240
- layout: string;
241
- title: string;
242
- header: boolean;
243
- footer: boolean;
244
- body: DotPageAssetLayoutBody;
245
- sidebar: DotPageAssetLayoutSidebar;
246
- }
247
- interface DotCMSContainerStructure {
248
- id: string;
249
- structureId: string;
250
- containerInode: string;
251
- containerId: string;
252
- code: string;
253
- contentTypeVar: string;
254
- }
255
- interface DotPageAssetLayoutSidebar {
256
- preview: boolean;
257
- containers: DotCMSContainer[];
258
- location: string;
259
- widthPercent: number;
260
- width: string;
261
- }
262
- interface DotPageAssetLayoutBody {
263
- rows: DotPageAssetLayoutRow[];
264
- }
265
- interface DotCMSSite {
266
- lowIndexPriority: boolean;
267
- name: string;
268
- default: boolean;
269
- aliases: string;
270
- parent: boolean;
271
- tagStorage: string;
272
- systemHost: boolean;
273
- inode: string;
274
- versionType: string;
275
- structureInode: string;
276
- hostname: string;
277
- hostThumbnail?: any;
278
- owner: string;
279
- permissionId: string;
280
- permissionType: string;
281
- type: string;
282
- identifier: string;
283
- modDate: number;
284
- host: string;
285
- live: boolean;
286
- indexPolicy: string;
287
- categoryId: string;
288
- actionId?: any;
289
- new: boolean;
290
- archived: boolean;
291
- locked: boolean;
292
- disabledWysiwyg: any[];
293
- modUser: string;
294
- working: boolean;
295
- titleImage: {
296
- present: boolean;
297
- };
298
- folder: string;
299
- htmlpage: boolean;
300
- fileAsset: boolean;
301
- vanityUrl: boolean;
302
- keyValue: boolean;
303
- structure?: DotCMSSiteStructure;
304
- title: string;
305
- languageId: number;
306
- indexPolicyDependencies: string;
307
- contentTypeId: string;
308
- versionId: string;
309
- lastReview: number;
310
- nextReview?: any;
311
- reviewInterval?: any;
312
- sortOrder: number;
313
- contentType: DotCMSSiteContentType;
314
- }
315
- interface DotCMSSiteContentType {
316
- owner?: any;
317
- parentPermissionable: DotCMSSiteParentPermissionable;
318
- permissionId: string;
319
- permissionType: string;
320
- }
321
- export interface DotCMSSiteParentPermissionable {
322
- Inode: string;
323
- Identifier: string;
324
- permissionByIdentifier: boolean;
325
- type: string;
326
- owner?: any;
327
- identifier: string;
328
- permissionId: string;
329
- parentPermissionable?: any;
330
- permissionType: string;
331
- inode: string;
332
- childrenPermissionable?: any;
333
- variantId?: string;
334
- }
335
- interface DotCMSSiteStructure {
336
- iDate: number;
337
- type: string;
338
- owner?: any;
339
- inode: string;
340
- identifier: string;
341
- name: string;
342
- description: string;
343
- defaultStructure: boolean;
344
- reviewInterval?: any;
345
- reviewerRole?: any;
346
- pagedetail?: any;
347
- structureType: number;
348
- fixed: boolean;
349
- system: boolean;
350
- velocityVarName: string;
351
- urlMapPattern?: any;
352
- host: string;
353
- folder: string;
354
- publishDateVar?: any;
355
- expireDateVar?: any;
356
- modDate: number;
357
- fields: DotCMSSiteField[];
358
- widget: boolean;
359
- detailPage?: any;
360
- fieldsBySortOrder: DotCMSSiteField[];
361
- form: boolean;
362
- htmlpageAsset: boolean;
363
- content: boolean;
364
- fileAsset: boolean;
365
- persona: boolean;
366
- permissionId: string;
367
- permissionType: string;
368
- live: boolean;
369
- categoryId: string;
370
- idate: number;
371
- new: boolean;
372
- archived: boolean;
373
- locked: boolean;
374
- modUser: string;
375
- working: boolean;
376
- title: string;
377
- versionId: string;
378
- versionType: string;
379
- }
380
- interface DotCMSSiteField {
381
- iDate: number;
382
- type: string;
383
- owner?: any;
384
- inode: string;
385
- identifier: string;
386
- structureInode: string;
387
- fieldName: string;
388
- fieldType: string;
389
- fieldRelationType?: any;
390
- fieldContentlet: string;
391
- required: boolean;
392
- velocityVarName: string;
393
- sortOrder: number;
394
- values?: any;
395
- regexCheck?: any;
396
- hint?: any;
397
- defaultValue?: any;
398
- indexed: boolean;
399
- listed: boolean;
400
- fixed: boolean;
401
- readOnly: boolean;
402
- searchable: boolean;
403
- unique: boolean;
404
- modDate: number;
405
- dataType: string;
406
- live: boolean;
407
- categoryId: string;
408
- idate: number;
409
- new: boolean;
410
- archived: boolean;
411
- locked: boolean;
412
- modUser: string;
413
- working: boolean;
414
- permissionId: string;
415
- parentPermissionable?: any;
416
- permissionType: string;
417
- title: string;
418
- versionId: string;
419
- versionType: string;
420
- }
421
- export {};