@exdst-sitecore-content-sdk/astro 0.0.16 → 0.0.19

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 (110) hide show
  1. package/README.md +3 -3
  2. package/package.json +41 -42
  3. package/src/client/index.ts +1 -1
  4. package/src/client/sitecore-astro-client.test.ts +41 -20
  5. package/src/client/sitecore-astro-client.ts +74 -57
  6. package/src/components/AstroImage.astro +2 -2
  7. package/src/components/AstroImage.astro.test.ts +542 -0
  8. package/src/components/Date.astro +5 -1
  9. package/src/components/Date.astro.test.ts +197 -0
  10. package/src/components/DefaultEmptyFieldEditingComponentImage.astro +4 -0
  11. package/src/components/DefaultEmptyFieldEditingComponentText.astro +4 -0
  12. package/src/components/EditingScripts.astro +2 -2
  13. package/src/components/EditingScripts.astro.test.ts +267 -0
  14. package/src/components/ErrorBoundary.astro +8 -9
  15. package/src/components/ErrorBoundary.astro.test.ts +252 -0
  16. package/src/components/ErrorComponent.astro +16 -0
  17. package/src/components/ErrorComponent.astro.test.ts +31 -0
  18. package/src/components/FieldMetadata.astro +1 -1
  19. package/src/components/FieldMetadata.astro.test.ts +40 -0
  20. package/src/components/File.astro +5 -1
  21. package/src/components/File.astro.test.ts +68 -0
  22. package/src/components/HiddenRendering.astro.test.ts +36 -0
  23. package/src/components/Image.astro +18 -4
  24. package/src/components/Image.astro.test.ts +438 -0
  25. package/src/components/Link.astro +13 -1
  26. package/src/components/Link.astro.test.ts +261 -0
  27. package/src/components/MissingComponent.astro.test.ts +21 -0
  28. package/src/components/Placeholder/Placeholder.astro +18 -23
  29. package/src/components/Placeholder/Placeholder.astro.test.ts +1088 -0
  30. package/src/components/Placeholder/PlaceholderMetadata.astro +24 -18
  31. package/src/components/Placeholder/PlaceholderMetadata.astro.test.ts +228 -0
  32. package/src/components/Placeholder/PlaceholderUtils.astro +21 -40
  33. package/src/components/Placeholder/PlaceholderUtils.astro.test.ts +149 -0
  34. package/src/components/Placeholder/models.ts +26 -17
  35. package/src/components/Placeholder/placeholder-utils.test.ts +153 -6
  36. package/src/components/Placeholder/placeholder-utils.ts +33 -11
  37. package/src/components/RichText.astro +9 -1
  38. package/src/components/RichText.astro.test.ts +205 -0
  39. package/src/components/Text.astro +15 -3
  40. package/src/components/Text.astro.test.ts +273 -0
  41. package/src/config/define-config.test.ts +5 -5
  42. package/src/config/define-config.ts +22 -42
  43. package/src/config-cli/define-cli-config.test.ts +5 -12
  44. package/src/config-cli/define-cli-config.ts +4 -8
  45. package/src/context.ts +42 -11
  46. package/src/debug.ts +13 -0
  47. package/src/editing/editing-config-middleware.test.ts +5 -7
  48. package/src/editing/editing-config-middleware.ts +11 -7
  49. package/src/editing/editing-render-middleware.test.ts +366 -24
  50. package/src/editing/editing-render-middleware.ts +34 -12
  51. package/src/editing/index.ts +2 -0
  52. package/src/editing/render-middleware.test.ts +1 -1
  53. package/src/editing/render-middleware.ts +1 -1
  54. package/src/editing/types.ts +39 -0
  55. package/src/editing/utils.test.ts +364 -4
  56. package/src/editing/utils.ts +82 -24
  57. package/src/enhancers/WithEmptyFieldEditingComponent.astro +1 -1
  58. package/src/enhancers/WithEmptyFieldEditingComponent.astro.test.ts +380 -0
  59. package/src/enhancers/WithFieldMetadata.astro.test.ts +113 -0
  60. package/src/index.ts +10 -7
  61. package/src/middleware/index.ts +4 -12
  62. package/src/middleware/middleware.test.ts +13 -0
  63. package/src/middleware/middleware.ts +12 -3
  64. package/src/middleware/multisite-middleware.test.ts +45 -50
  65. package/src/middleware/multisite-middleware.ts +33 -6
  66. package/src/middleware/robots-middleware.test.ts +20 -4
  67. package/src/middleware/robots-middleware.ts +10 -3
  68. package/src/middleware/sitemap-middleware.test.ts +35 -3
  69. package/src/middleware/sitemap-middleware.ts +7 -6
  70. package/src/services/component-props-service.ts +7 -6
  71. package/src/sharedTypes/component-props.ts +15 -4
  72. package/src/site/index.ts +1 -1
  73. package/src/tests/astro-helpers.ts +61 -0
  74. package/src/tests/test-components/CustomErrorComponent.astro +3 -0
  75. package/src/tests/test-components/CustomHiddenRendering.astro +10 -0
  76. package/src/tests/test-components/CustomMissingComponent.astro +9 -0
  77. package/src/tests/test-components/DownloadCallout.astro +12 -0
  78. package/src/tests/test-components/EmptyFieldEditingComponent.astro +5 -0
  79. package/src/tests/test-components/ErrorBoundaryWithError.astro +10 -0
  80. package/src/tests/test-components/Home.astro +12 -0
  81. package/src/tests/test-components/SxaRichText.astro +23 -0
  82. package/src/tests/test-components/SxaRichTextDefault.astro +7 -0
  83. package/src/tests/test-components/SxaRichTextWithTitle.astro +8 -0
  84. package/src/tests/test-components/TestComponent.astro +9 -0
  85. package/src/tests/test-components/TestComponentWithError.astro +4 -0
  86. package/src/tests/test-components/TestComponentWithField.astro +17 -0
  87. package/src/tests/test-components/TestHeader.astro +8 -0
  88. package/src/tests/test-components/TestLogo.astro +5 -0
  89. package/src/tests/test-components/TestParentWrapperComponent.astro +5 -0
  90. package/src/tests/test-components/TestWrapperComponent.astro +5 -0
  91. package/src/tests/test-data/metadata-data.ts +86 -0
  92. package/src/tests/test-data/normal-mode-data.ts +466 -0
  93. package/src/tests/vitest.setup.ts +4 -0
  94. package/src/tools/generate-map.ts +4 -3
  95. package/src/tools/index.ts +2 -4
  96. package/src/tools/templating/components.test.ts +100 -87
  97. package/src/tools/templating/components.ts +2 -1
  98. package/src/tools/templating/default-component.ts +3 -8
  99. package/src/utils/utils.ts +20 -2
  100. /package/src/{test-data → tests}/helpers.ts +0 -0
  101. /package/src/{test-data → tests}/personalizeData.ts +0 -0
  102. /package/src/{test-data/components → tests/test-components/map-components}/Bar.astro +0 -0
  103. /package/src/{test-data/components → tests/test-components/map-components}/Baz.astro +0 -0
  104. /package/src/{test-data/components → tests/test-components/map-components}/Foo.astro +0 -0
  105. /package/src/{test-data/components → tests/test-components/map-components}/Hero.variant.astro +0 -0
  106. /package/src/{test-data/components → tests/test-components/map-components}/NotComponent.bsx +0 -0
  107. /package/src/{test-data/components → tests/test-components/map-components}/Qux.astro +0 -0
  108. /package/src/{test-data/components → tests/test-components/map-components}/folded/Folded.astro +0 -0
  109. /package/src/{test-data/components → tests/test-components/map-components}/folded/random-file-2.docx +0 -0
  110. /package/src/{test-data/components → tests/test-components/map-components}/random-file.txt +0 -0
@@ -0,0 +1,252 @@
1
+ import { describe, test, expect, vi, beforeAll, afterAll } from 'vitest';
2
+ import { mockSitecoreContext, renderAstroComponent } from '../tests/astro-helpers';
3
+ import { ComponentRendering, LayoutServicePageState } from '@sitecore-content-sdk/content/layout';
4
+ import { Page } from '@sitecore-content-sdk/content/client';
5
+ import CustomErrorComponent from '../tests/test-components/CustomErrorComponent.astro';
6
+ import ErrorBoundaryWithError from '../tests/test-components/ErrorBoundaryWithError.astro';
7
+
8
+ describe('ErrorBoundary', () => {
9
+ vi.spyOn(console, 'error').mockImplementation(() => undefined);
10
+
11
+ const testComponentProps = {
12
+ page: {
13
+ locale: 'en',
14
+ layout: {
15
+ sitecore: {
16
+ context: {},
17
+ route: null,
18
+ },
19
+ },
20
+ mode: {
21
+ name: LayoutServicePageState.Normal,
22
+ isPreview: false,
23
+ isNormal: false,
24
+ isEditing: false,
25
+ isDesignLibrary: false,
26
+ designLibrary: {
27
+ isVariantGeneration: false,
28
+ },
29
+ },
30
+ },
31
+ };
32
+
33
+ describe('when in page editing or preview mode', () => {
34
+ test('Should render custom error component when custom error component is provided and error is thrown', async () => {
35
+ const previewContext = { ...testComponentProps };
36
+
37
+ previewContext.page.mode.isPreview = true;
38
+
39
+ mockSitecoreContext(previewContext.page);
40
+
41
+ const testComponentName = 'Test component Name';
42
+ const rendering: ComponentRendering = {
43
+ componentName: testComponentName,
44
+ };
45
+
46
+ const rendered = await renderAstroComponent(ErrorBoundaryWithError, {
47
+ props: { rendering: rendering, errorComponent: CustomErrorComponent },
48
+ });
49
+
50
+ expect(rendered.querySelectorAll('div').length).to.equal(1);
51
+ expect(rendered.querySelector('div')?.textContent).to.equal(
52
+ 'This is a custom error component!'
53
+ );
54
+ });
55
+
56
+ test('Should render errors message and errored component name when error is thrown in edit mode', async () => {
57
+ const editingContext = {
58
+ ...testComponentProps,
59
+ };
60
+
61
+ editingContext.page.mode.isEditing = true;
62
+ mockSitecoreContext(editingContext.page);
63
+
64
+ const testComponentName = 'Test component Name';
65
+ const rendering: ComponentRendering = {
66
+ componentName: testComponentName,
67
+ };
68
+
69
+ const errorMessage = 'an error occured';
70
+
71
+ const rendered = await renderAstroComponent(ErrorBoundaryWithError, {
72
+ props: { rendering: rendering },
73
+ });
74
+
75
+ const ems = rendered.querySelectorAll('em');
76
+ expect(rendered.innerHTML).to.contain('class="sc-content-sdk-placeholder-error"');
77
+ expect(rendered.innerHTML).to.contain('A rendering error occurred in component');
78
+ expect(ems.length).to.equal(2);
79
+ expect(ems[0].textContent).to.equal(testComponentName);
80
+ expect(ems[1].textContent).to.equal(errorMessage);
81
+ });
82
+
83
+ test('Should render errors message and errored component name when error is thrown in preview mode', async () => {
84
+ const previewContext = { ...testComponentProps };
85
+
86
+ previewContext.page.mode.isPreview = true;
87
+ mockSitecoreContext(previewContext.page);
88
+
89
+ const testComponentName = 'Test component Name';
90
+ const rendering: ComponentRendering = {
91
+ componentName: testComponentName,
92
+ };
93
+
94
+ const errorMessage = 'an error occured';
95
+
96
+ const rendered = await renderAstroComponent(ErrorBoundaryWithError, {
97
+ props: { rendering: rendering },
98
+ });
99
+
100
+ const ems = rendered.querySelectorAll('em');
101
+
102
+ expect(rendered.innerHTML).to.contain('class="sc-content-sdk-placeholder-error"');
103
+ expect(rendered.innerHTML).to.contain('A rendering error occurred in component');
104
+ expect(ems.length).to.equal(2);
105
+ expect(ems[0].textContent).to.equal(testComponentName);
106
+ expect(ems[1].textContent).to.equal(errorMessage);
107
+ });
108
+ });
109
+
110
+ describe('when in development mode', () => {
111
+ beforeAll(() => {
112
+ process.env.NODE_ENV = 'development';
113
+ });
114
+
115
+ afterAll(() => {
116
+ delete process.env.NODE_ENV;
117
+ });
118
+
119
+ test('Should render custom error component when custom error component is provided and error is thrown', async () => {
120
+ const rendered = await renderAstroComponent(ErrorBoundaryWithError, {
121
+ props: { errorComponent: CustomErrorComponent },
122
+ });
123
+
124
+ expect(rendered.querySelectorAll('div').length).to.equal(1);
125
+ expect(rendered.querySelector('div')?.textContent).to.equal(
126
+ 'This is a custom error component!'
127
+ );
128
+ });
129
+
130
+ test('Should render errors message and errored component name when error is thrown and is in page editing mode', async () => {
131
+ const editingContext = {
132
+ ...testComponentProps,
133
+ };
134
+ editingContext.page.mode.isEditing = true;
135
+ mockSitecoreContext(editingContext.page);
136
+
137
+ const testComponentName = 'Test component Name';
138
+ const rendering: ComponentRendering = {
139
+ componentName: testComponentName,
140
+ };
141
+
142
+ const errorMessage = 'an error occured';
143
+
144
+ const rendered = await renderAstroComponent(ErrorBoundaryWithError, {
145
+ props: { rendering: rendering },
146
+ });
147
+
148
+ const ems = rendered.querySelectorAll('em');
149
+ expect(rendered.innerHTML).to.contain('class="sc-content-sdk-placeholder-error"');
150
+ expect(rendered.innerHTML).to.contain('A rendering error occurred in component');
151
+ expect(ems.length).to.equal(2);
152
+ expect(ems[0].textContent).to.equal(testComponentName);
153
+ expect(ems[1].textContent).to.equal(errorMessage);
154
+ });
155
+
156
+ test('Should render errors message and errored component name when error is thrown and is not in page editing mode', async () => {
157
+ const normalContext = { ...testComponentProps };
158
+
159
+ normalContext.page.mode.isNormal = true;
160
+ mockSitecoreContext(normalContext.page);
161
+
162
+ const testComponentName = 'Test component Name';
163
+ const rendering: ComponentRendering = {
164
+ componentName: testComponentName,
165
+ };
166
+
167
+ const errorMessage = 'an error occured';
168
+
169
+ const rendered = await renderAstroComponent(ErrorBoundaryWithError, {
170
+ props: { rendering: rendering },
171
+ });
172
+
173
+ const ems = rendered.querySelectorAll('em');
174
+
175
+ expect(rendered.innerHTML).to.contain('class="sc-content-sdk-placeholder-error"');
176
+ expect(rendered.innerHTML).to.contain('A rendering error occurred in component');
177
+ expect(ems.length).to.equal(2);
178
+ expect(ems[0].textContent).to.equal(testComponentName);
179
+ expect(ems[1].textContent).to.equal(errorMessage);
180
+ });
181
+ });
182
+
183
+ describe('when not in page editing and not in development mode', () => {
184
+ test('Should render custom error component when custom error component is provided and error is thrown', async () => {
185
+ const page: Page = {
186
+ locale: 'en',
187
+ layout: {
188
+ sitecore: {
189
+ context: {},
190
+ route: null,
191
+ },
192
+ },
193
+ mode: {
194
+ name: LayoutServicePageState.Normal,
195
+ isNormal: false,
196
+ isPreview: false,
197
+ isEditing: false,
198
+ isDesignLibrary: false,
199
+ designLibrary: {
200
+ isVariantGeneration: false,
201
+ },
202
+ },
203
+ };
204
+
205
+ mockSitecoreContext(page);
206
+
207
+ const rendered = await renderAstroComponent(ErrorBoundaryWithError, {
208
+ props: { errorComponent: CustomErrorComponent },
209
+ });
210
+
211
+ expect(rendered.querySelectorAll('div').length).to.equal(1);
212
+ expect(rendered.querySelector('div')?.textContent).to.equal(
213
+ 'This is a custom error component!'
214
+ );
215
+ });
216
+
217
+ test('Should render default errors message when error is thrown and custom error component is not provided', async () => {
218
+ const errorMessage = 'an error occured';
219
+
220
+ const page: Page = {
221
+ locale: 'en',
222
+ layout: {
223
+ sitecore: {
224
+ context: {},
225
+ route: null,
226
+ },
227
+ },
228
+ mode: {
229
+ name: LayoutServicePageState.Normal,
230
+ isNormal: false,
231
+ isPreview: false,
232
+ isEditing: false,
233
+ isDesignLibrary: false,
234
+ designLibrary: {
235
+ isVariantGeneration: false,
236
+ },
237
+ },
238
+ };
239
+
240
+ mockSitecoreContext(page);
241
+
242
+ const rendered = await renderAstroComponent(ErrorBoundaryWithError);
243
+
244
+ expect(rendered.innerHTML).to.contain('class="sc-content-sdk-placeholder-error"');
245
+ expect(rendered.innerHTML).to.contain(
246
+ 'There was a problem loading this section.' // eslint-disable-line
247
+ );
248
+ expect(rendered.querySelectorAll('em').length).to.equal(0);
249
+ expect(rendered.innerHTML).to.not.contain(errorMessage);
250
+ });
251
+ });
252
+ });
@@ -0,0 +1,16 @@
1
+ ---
2
+ /**
3
+ * Simple error component applying basic error styling.
4
+ * Use either the `message` prop or slot content, but not both.
5
+ * @internal
6
+ */
7
+ interface ErrorComponentProps {
8
+ message?: string;
9
+ }
10
+
11
+ const { message } = Astro.props as ErrorComponentProps;
12
+ ---
13
+
14
+ <div class="sc-content-sdk-placeholder-error">
15
+ {message ? message : <slot />}
16
+ </div>
@@ -0,0 +1,31 @@
1
+ import { describe, test, expect } from 'vitest';
2
+ import { renderAstroComponent } from '../tests/astro-helpers';
3
+ import ErrorComponent from './ErrorComponent.astro';
4
+
5
+ describe('ErrorComponent', () => {
6
+ test('should render message prop with correct CSS class', async () => {
7
+ const message = 'Test error message';
8
+
9
+ const rendered = await renderAstroComponent(ErrorComponent, {
10
+ props: { message: message },
11
+ });
12
+
13
+ expect(
14
+ rendered.querySelector('.sc-content-sdk-placeholder-error')?.textContent?.trim()
15
+ ).to.equal(message);
16
+ });
17
+
18
+ test('should render children when provided without message', async () => {
19
+ const content = 'Child error content';
20
+
21
+ const rendered = await renderAstroComponent(ErrorComponent, {
22
+ slots: {
23
+ default: `<span>${content}</span>`,
24
+ },
25
+ });
26
+
27
+ expect(rendered.querySelector('.sc-content-sdk-placeholder-error')?.textContent).to.equal(
28
+ content
29
+ );
30
+ });
31
+ });
@@ -3,7 +3,7 @@
3
3
  * The component which renders field metadata markup
4
4
  */
5
5
 
6
- import { MetadataKind } from '@sitecore-content-sdk/core/editing';
6
+ import { MetadataKind } from '@sitecore-content-sdk/content/editing';
7
7
 
8
8
  interface FieldMetadataProps {
9
9
  metadata: { [key: string]: unknown };
@@ -0,0 +1,40 @@
1
+ import { describe, test, expect } from 'vitest';
2
+ import FieldMetadata from './FieldMetadata.astro';
3
+ import { renderAstroComponent } from '../tests/astro-helpers';
4
+
5
+ describe('<FieldMetadata />', () => {
6
+ test('should render field metadata', async () => {
7
+ const props = {
8
+ metadata: {
9
+ contextItem: {
10
+ id: '{09A07660-6834-476C-B93B-584248D3003B}',
11
+ language: 'en',
12
+ revision: 'a0b36ce0a7db49418edf90eb9621e145',
13
+ version: 1,
14
+ },
15
+ fieldId: '{414061F4-FBB1-4591-BC37-BFFA67F745EB}',
16
+ fieldType: 'date',
17
+ rawValue: 'Test1',
18
+ },
19
+ };
20
+
21
+ const Foo = '<h2>foo</h2>';
22
+
23
+ const rendered = await renderAstroComponent(FieldMetadata, {
24
+ props: { ...props },
25
+ slots: {
26
+ default: Foo,
27
+ },
28
+ });
29
+
30
+ expect(rendered.innerHTML).to.equal(
31
+ [
32
+ `<code type="text/sitecore" chrometype="field" class="scpm" kind="open">${JSON.stringify(
33
+ props.metadata
34
+ )}</code>`,
35
+ '<h2>foo</h2>',
36
+ '<code type="text/sitecore" chrometype="field" class="scpm" kind="close"></code>',
37
+ ].join('')
38
+ );
39
+ });
40
+ });
@@ -1,5 +1,5 @@
1
1
  ---
2
- import { isFieldValueEmpty } from '@sitecore-content-sdk/core/layout';
2
+ import { isFieldValueEmpty } from '@sitecore-content-sdk/content/layout';
3
3
 
4
4
  export interface FileFieldValue {
5
5
  [propName: string]: unknown;
@@ -8,6 +8,10 @@ export interface FileFieldValue {
8
8
  displayName?: string;
9
9
  }
10
10
 
11
+ /**
12
+ * The interface for the File field.
13
+ * @public
14
+ */
11
15
  export interface FileField {
12
16
  value: FileFieldValue;
13
17
  }
@@ -0,0 +1,68 @@
1
+ import { describe, test, expect } from 'vitest';
2
+ import { renderAstroComponent } from '../tests/astro-helpers';
3
+ import File, { FileField } from './File.astro';
4
+
5
+ describe('<File />', () => {
6
+ test('should render nothing with missing field', async () => {
7
+ const field: FileField = null!;
8
+ const rendered = await renderAstroComponent(File, {
9
+ props: { field: field },
10
+ });
11
+ expect(rendered.innerHTML).to.equal('');
12
+ });
13
+
14
+ test('should render nothing with missing value', async () => {
15
+ const field = {
16
+ editable: 'lorem',
17
+ };
18
+ const rendered = await renderAstroComponent(File, {
19
+ props: { field: field },
20
+ });
21
+ expect(rendered.innerHTML).to.equal('');
22
+ });
23
+
24
+ test('should render with src directly on provided field', async () => {
25
+ const field = {
26
+ src: '/lorem',
27
+ title: 'ipsum',
28
+ };
29
+ const rendered = (
30
+ await renderAstroComponent(File, {
31
+ props: { field: field },
32
+ })
33
+ ).querySelector('a');
34
+ expect(rendered?.outerHTML).to.contain(field.src);
35
+ expect(rendered?.outerHTML).to.contain(field.title);
36
+ });
37
+
38
+ test('should render display name if no title', async () => {
39
+ const field = {
40
+ value: {
41
+ src: '/lorem',
42
+ displayName: 'ipsum',
43
+ },
44
+ };
45
+ const rendered = (
46
+ await renderAstroComponent(File, {
47
+ props: { field: field },
48
+ })
49
+ ).querySelector('a');
50
+ expect(rendered?.outerHTML).to.contain(field.value.displayName);
51
+ });
52
+
53
+ test('should render other attributes with other props provided', async () => {
54
+ const field = {
55
+ value: {
56
+ src: '/lorem',
57
+ title: 'ipsum',
58
+ },
59
+ };
60
+ const rendered = (
61
+ await renderAstroComponent(File, {
62
+ props: { field: field, id: 'my-file', class: 'my-css' },
63
+ })
64
+ ).querySelector('a');
65
+ expect(rendered?.outerHTML).to.contain('id="my-file"');
66
+ expect(rendered?.outerHTML).to.contain('class="my-css"');
67
+ });
68
+ });
@@ -0,0 +1,36 @@
1
+ import { describe, test, expect } from 'vitest';
2
+ import { renderAstroComponent } from '../tests/astro-helpers';
3
+ import HiddenRendering from './HiddenRendering.astro';
4
+
5
+ describe('<HiddenRendering />', () => {
6
+ test('should render', async () => {
7
+ const rendered = await renderAstroComponent(HiddenRendering, {
8
+ props: { container: document.body },
9
+ });
10
+
11
+ expect(rendered.querySelectorAll('div > *')).to.have.length(1);
12
+
13
+ const style = rendered
14
+ .querySelector('div')
15
+ ?.getAttribute('style')
16
+ ?.trim()
17
+ ?.split(';')
18
+ .reduce<Record<string, string>>((acc, style) => {
19
+ if (style.split(':')[0]) acc[style.split(':')[0].trim()] = style.split(':')[1].trim();
20
+ return acc;
21
+ }, {});
22
+
23
+ // Instead of checking exact equality, we'll verify required styles are present
24
+ expect(style).to.include({
25
+ 'background-size': '3px 3px',
26
+ display: 'flex',
27
+ 'justify-content': 'center',
28
+ 'align-items': 'center',
29
+ padding: '30px',
30
+ color: '#aaa',
31
+ });
32
+
33
+ // Verify the div contains the expected text
34
+ expect(rendered.textContent).to.equal('The component is hidden');
35
+ });
36
+ });
@@ -1,24 +1,36 @@
1
1
  ---
2
- import { mediaApi } from '@sitecore-content-sdk/core/media';
2
+ import { mediaApi } from '@sitecore-content-sdk/content/media';
3
3
  import { EditableFieldProps } from './sharedTypes';
4
4
  import {
5
5
  FieldMetadata,
6
6
  isFieldValueEmpty,
7
- } from '@sitecore-content-sdk/core/layout';
7
+ } from '@sitecore-content-sdk/content/layout';
8
8
  import { addClassName } from '../utils';
9
9
  import WithFieldMetadata from '../enhancers/WithFieldMetadata.astro';
10
10
  import WithEmptyFieldEditingComponent from '../enhancers/WithEmptyFieldEditingComponent.astro';
11
11
  import DefaultEmptyFieldEditingComponentImage from './DefaultEmptyFieldEditingComponentImage.astro';
12
12
 
13
+ /**
14
+ * The interface for the Image field value.
15
+ * @public
16
+ */
13
17
  export interface ImageFieldValue {
14
18
  [attributeName: string]: unknown;
15
19
  src?: string;
16
20
  }
17
21
 
22
+ /**
23
+ * The interface for the Image field.
24
+ * @public
25
+ */
18
26
  export interface ImageField {
19
27
  value?: ImageFieldValue;
20
28
  }
21
29
 
30
+ /**
31
+ * The interface for the Image size parameters.
32
+ * @public
33
+ */
22
34
  export interface ImageSizeParameters {
23
35
  [attr: string]: string | number | undefined;
24
36
  /** Fixed width of the image */
@@ -57,6 +69,10 @@ export interface BaseImageProps {
57
69
  mediaUrlPrefix?: RegExp;
58
70
  }
59
71
 
72
+ /**
73
+ * The interface for the Image component props.
74
+ * @public
75
+ */
60
76
  export interface ImageProps extends BaseImageProps, EditableFieldProps {
61
77
  srcSet?: ImageSizeParameters[];
62
78
  }
@@ -132,8 +148,6 @@ const attrs = getImageAttrs(
132
148
  imageParams,
133
149
  mediaUrlPrefix
134
150
  );
135
-
136
- console.log("Attrs", attrs);
137
151
  ---
138
152
 
139
153
  {