feat: add grid block with two-column layout to block editor#34789
feat: add grid block with two-column layout to block editor#34789
Conversation
…esting setup in unit tests
…nent with improved prop binding and lazy loading validation
…ontrol for enhanced form handling in unit tests
…nd structure for better readability
…e test cases for clarity and efficiency
…izing indentation and formatting for better readability
…omponent properties and methods to improve code clarity and maintainability
…oading and filtering capabilities
…d virtual scroller initialization for improved user experience
…ze and minHeight properties for better layout control
…ture for content type management
…nce content type selection experience
…d user experience and enhance dropdown options management
…nsive scenarios including lazy loading, filtering, and pinned option functionality
… for improved consistency and functionality across the application
…nput bindings and adding output emission tests for improved coverage
…unnecessary disabled input binding and focusing on FormControl state
…g unused provideNoopAnimations and maintaining essential testing utilities
…t by refining input handling, enhancing output emissions, and ensuring proper state management during filtering and lazy loading
…elect options and improving event handling for better user interaction
…clarify synchronization with ControlValueAccessor and state fetching for content and site objects
…to clear debounce timeout for improved resource management
…t and site fetching logic, ensuring no duplicate API calls for already loaded items
…d improve state management by removing unnecessary logic and enhancing readability
…th improved API integration and unit tests
…lity, including lazy loading, filtering, and improved state management
…otThemeComponent for improved theme selection integration
…nt and its associated files to streamline theme selection process
Remove all 25 SCSS files from the block editor and replace with plain CSS using CSS custom properties and literal values. All selectors are fully flattened (no CSS nesting) for compatibility with Angular view encapsulation. ProseMirror DOM styles are inlined in the main component CSS with ::ng-deep selectors. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Align all vertical spacing to a 1.5rem (24px) baseline grid derived from 1rem font-size and 1.5 line-height. All margins and paddings now use multiples of the base unit: 0.75rem, 1.5rem, or 3rem. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When both columns are empty and the user presses Backspace, the entire grid block is replaced with an empty paragraph. If either column has content, normal backspace behavior is preserved. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add a ProseMirror plugin that creates resize handles between grid columns, allowing users to drag and snap to quarter-based layouts (25/75, 50/50, 75/25). - Switch grid block from CSS Grid to flexbox for resize support - Store column layout as columns attribute (data-columns) with CSS custom properties driving flex-basis on each column - Add overlay-based drag preview that bypasses ProseMirror DOM management - Add setGridColumns command for programmatic layout changes - Undo/redo works automatically via ProseMirror history Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace the 3-snap quarter-based layout (25/50/75) with a 12-column grid that supports 11 valid splits from [1,11] to [11,1]. The columns attribute changes from a space-separated string to a number array. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add GridBlock and GridColumn to BlockEditorDefaultBlocks enum and implement GridBlock renderer component that converts 12-column values to CSS grid percentages. Also fix type safety issues in grid-block.node.ts (null guard for JSON.parse, Array.isArray guard). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Create DotGridBlock component that renders a CSS grid container with columns based on the 12-column system. Register it in the block editor item component template and imports. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add gridBlock handler that computes column percentages from the 12-column system and renders a CSS grid container. Each gridColumn child recursively renders its nested content. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move inline grid block rendering from render.vtl into a separate gridBlock.vtl file, following the same #set/$item + #parse pattern used by dotImage, dotContent, dotVideo, and table blocks. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace percentage calculation via $math tool with a 12-column CSS grid using repeat(12, 1fr) and grid-column: span N. This eliminates potential issues with $math tool availability in the rendering context and avoids type coercion problems with JSONArray values. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR introduces a new two-column grid block for the block editor and concurrently migrates significant portions of the UI from PrimeFlex/legacy PrimeNG APIs to Tailwind CSS and newer PrimeNG components, including moving the app bootstrap to ApplicationConfig.
Changes:
- Adds new Dot Apps resolvers/components structure and updates related templates/styles for Tailwind + PrimeNG changes.
- Migrates multiple portlets from
TabViewModule/Dropdown/InputTextarea/CalendartoTabsModule/Select/Textarea/DatePickerand replaces PrimeFlex utilities with Tailwind classes. - Moves
dotcms-uito standalone-style bootstrapping viaapp.config.tsand updates global styles/postcss for Tailwind.
Reviewed changes
Copilot reviewed 197 out of 2028 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/content/dot-edit-content.component.scss | Removes legacy edit content styles (likely part of broader styling migration). |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/content/dot-edit-content.component.html | Removes legacy edit content template (refactor/migration). |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/content/components/dot-whats-changed/dot-whats-changed.component.ts | Removes legacy “what’s changed” component implementation. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/content/components/dot-whats-changed/dot-whats-changed.component.scss | Removes styles for removed “what’s changed” component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/content/components/dot-whats-changed/dot-whats-changed.component.html | Removes template for removed “what’s changed” component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/content/components/dot-form-selector/dot-form-selector.component.ts | Removes legacy form selector component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/content/components/dot-form-selector/dot-form-selector.component.scss | Removes styles for removed form selector component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/content/components/dot-form-selector/dot-form-selector.component.html | Removes template for removed form selector component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/content/components/dot-edit-page-workflows-actions/dot-edit-page-workflows-actions.component.html | Removes workflows actions template (refactor/migration). |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/content/components/dot-edit-page-view-as-controller/dot-edit-page-view-as-controller.component.ts | Removes view-as controller component (refactor/migration). |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/content/components/dot-edit-page-view-as-controller/dot-edit-page-view-as-controller.component.scss | Removes styles for removed view-as controller component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/content/components/dot-edit-page-view-as-controller/dot-edit-page-view-as-controller.component.html | Removes template for removed view-as controller component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/content/components/dot-edit-page-toolbar/dot-edit-page-toolbar.component.ts | Removes legacy edit page toolbar component (refactor/migration). |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/content/components/dot-edit-page-toolbar/dot-edit-page-toolbar.component.scss | Removes styles for removed edit page toolbar component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/content/components/dot-edit-page-toolbar/dot-edit-page-toolbar.component.html | Removes template for removed edit page toolbar component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/content/components/dot-edit-page-state-controller/dot-edit-page-state-controller.component.scss | Removes styles for removed state controller component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/content/components/dot-edit-page-state-controller/dot-edit-page-state-controller.component.html | Removes template for removed state controller component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/content/components/dot-edit-page-state-controller/components/dot-edit-page-lock-info/dot-edit-page-lock-info.component.ts | Removes lock info component implementation. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/content/components/dot-edit-page-state-controller/components/dot-edit-page-lock-info/dot-edit-page-lock-info.component.spec.ts | Removes lock info unit tests. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/content/components/dot-edit-page-state-controller/components/dot-edit-page-lock-info/dot-edit-page-lock-info.component.scss | Removes lock info styles. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/content/components/dot-edit-page-state-controller/components/dot-edit-page-lock-info/dot-edit-page-lock-info.component.html | Removes lock info template. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/components/dot-palette/dot-palette.component.ts | Removes legacy palette component (refactor/migration). |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/components/dot-palette/dot-palette.component.scss | Removes styles for removed palette component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/components/dot-palette/dot-palette.component.html | Removes template for removed palette component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/components/dot-palette/dot-palette-input-filter/dot-palette-input-filter.component.ts | Removes legacy palette input filter component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/components/dot-palette/dot-palette-input-filter/dot-palette-input-filter.component.spec.ts | Removes palette input filter tests. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/components/dot-palette/dot-palette-input-filter/dot-palette-input-filter.component.scss | Removes palette input filter styles. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/components/dot-palette/dot-palette-input-filter/dot-palette-input-filter.component.html | Removes palette input filter template. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/components/dot-palette/dot-palette-contentlets/dot-palette-contentlets.component.ts | Removes legacy palette contentlets component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/components/dot-palette/dot-palette-contentlets/dot-palette-contentlets.component.scss | Removes styles for removed palette contentlets component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/components/dot-palette/dot-palette-contentlets/dot-palette-contentlets.component.html | Removes template for removed palette contentlets component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/components/dot-palette/dot-palette-content-type/dot-palette-content-type.component.ts | Removes legacy palette content type component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/components/dot-palette/dot-palette-content-type/dot-palette-content-type.component.scss | Removes styles for removed content type component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/components/dot-palette/dot-palette-content-type/dot-palette-content-type.component.html | Removes template for removed content type component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/components/dot-edit-page-info/dot-edit-page-info.component.ts | Removes legacy edit page info component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/components/dot-edit-page-info/dot-edit-page-info.component.spec.ts | Removes edit page info tests. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/components/dot-edit-page-info/dot-edit-page-info.component.scss | Removes edit page info styles. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/components/dot-edit-page-info/dot-edit-page-info.component.html | Removes edit page info template. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/components/dot-block-editor-sidebar/dot-block-editor-sidebar.component.ts | Removes legacy block editor sidebar component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/components/dot-block-editor-sidebar/dot-block-editor-sidebar.component.scss | Removes styles for removed sidebar. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-edit-page/components/dot-block-editor-sidebar/dot-block-editor-sidebar.component.html | Removes template for removed sidebar. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-loop-editor/dot-loop-editor.component.ts | Drops component SCSS usage (Tailwind migration). |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-loop-editor/dot-loop-editor.component.spec.ts | Updates event triggering to match PrimeNG button changes. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-loop-editor/dot-loop-editor.component.scss | Removes loop editor SCSS in favor of utility classes. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-loop-editor/dot-loop-editor.component.html | Replaces PrimeFlex/custom SCSS layout with Tailwind + <p-button>. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-container-properties/store/dot-container-properties.store.ts | Updates content type pagination param + adjusts store flags. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-container-properties/dot-container-properties.component.ts | Migrates TabView→Tabs and debounces form status updates. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-container-properties/dot-container-properties.component.scss | Removes component SCSS (utility-first migration). |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-container-history/dot-container-history.component.scss | Switches spacing to shared SCSS module token. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-container-create.component.ts | Migrates TabView→Tabs; introduces active tab state. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-container-create.component.spec.ts | Expands providers to satisfy new dependency graph. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-container-create.component.scss | Removes SCSS styling (utility-first migration). |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-container-create.component.html | Replaces <p-tabView> with <p-tabs> structure. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-container-code/dot-container-code.component.ts | Migrates tabs; hardens contentTypes handling; adjusts tab click logic. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-container-code/dot-container-code.component.scss | Removes SCSS styling (utility-first migration). |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-container-code/dot-add-variable/dot-add-variable.component.ts | Drops component SCSS reference. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-container-code/dot-add-variable/dot-add-variable.component.scss | Removes SCSS styling. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/dot-container-create/dot-container-code/dot-add-variable/dot-add-variable.component.html | Replaces DataView markup with Tailwind utility layout. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/container-list/container-list.component.ts | Adds selection-change handler; updates dialog options; includes status chip. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/container-list/container-list.component.spec.ts | Updates tests for menu querying and action trigger changes. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-containers/container-list/container-list.component.scss | Removes SCSS styling (utility-first migration). |
| core-web/apps/dotcms-ui/src/app/portlets/dot-categories/dot-categories-permissions/dot-categories-permissions.component.spec.ts | Refactors tests to Spectator and adds route/service providers. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-categories/dot-categories-list/dot-categories-list.component.scss | Moves to shared tokens; replaces PrimeFlex patterns with Tailwind equivalents. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-categories/dot-categories-list/dot-categories-list.component.html | Updates spacing and PrimeFlex class equivalents. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-categories/dot-categories-create-edit/dot-categories-create-edit.component.ts | Migrates TabView→Tabs. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-categories/dot-categories-create-edit/dot-categories-create-edit.component.scss | Uses shared SCSS modules for colors/spacing. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-categories/dot-categories-create-edit/dot-categories-create-edit.component.html | Replaces <p-tabView> with <p-tabs> layout. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/shared/mocks.ts | Adds typed mock data for apps. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/services/dot-apps-list-resolver/dot-apps-list-resolver.service.ts | Adds new apps list resolver (service-layer refactor). |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/services/dot-apps-list-resolver/dot-apps-list-resolver.service.spec.ts | Adds unit test for the new apps list resolver. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/services/dot-apps-configuration-resolver/dot-apps-configuration-resolver.service.ts | Switches apps service import to data-access. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/services/dot-apps-configuration-resolver/dot-apps-configuration-resolver.service.spec.ts | Updates resolver spec mocks/ParamMap typing and expectations. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/services/dot-apps-configuration-detail-resolver/dot-apps-configuration-detail-resolver.service.ts | Switches apps service import to data-access. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/services/dot-apps-configuration-detail-resolver/dot-apps-configuration-detail-resolver.service.spec.ts | Updates ParamMap typing and removes any usage where possible. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/dot-apps.routes.ts | Rewires routes to new components/services paths; uses data-access DotAppsService. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/dot-apps-list/dot-apps-list.component.scss | Updates styling tokens and replaces legacy icon/layout patterns. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/dot-apps-list/dot-apps-list.component.html | Removes license gating markup; uses state-driven displayed apps and store-managed dialog. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/dot-apps-list/dot-apps-list-resolver.service.ts | Removes legacy enterprise-aware resolver. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/dot-apps-list/dot-apps-list-resolver.service.spec.ts | Removes legacy resolver spec. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/dot-apps-list/dot-apps-card/dot-apps-card.component.ts | Migrates to signal-based input()/output() API; removes DotIcon usage. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/dot-apps-list/dot-apps-card/dot-apps-card.component.spec.ts | Updates tests for signal inputs and new warning icon markup. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/dot-apps-list/dot-apps-card/dot-apps-card.component.scss | Switches to shared tokens; refactors header styling. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/dot-apps-list/dot-apps-card/dot-apps-card.component.html | Refactors card header markup and warning icon; introduces signal input usage. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/dot-apps-import-export-dialog/dot-apps-import-export-dialog.component.scss | Removes SCSS spacing rule (likely replaced by utility/classes). |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/dot-apps-import-export-dialog/dot-apps-import-export-dialog.component.html | Migrates from dot-dialog to PrimeNG p-dialog with password/fileupload controls. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/dot-apps-configuration/dot-apps-configuration.component.scss | Removes legacy SCSS (migrated to new component location). |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/dot-apps-configuration/dot-apps-configuration-list/dot-apps-configuration-list.component.ts | Removes legacy configuration list component (migrated). |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/dot-apps-configuration/dot-apps-configuration-list/dot-apps-configuration-list.component.scss | Removes legacy configuration list styles. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/dot-apps-configuration/dot-apps-configuration/dot-apps-configuration-item/dot-apps-configuration-item.component.scss | Removes legacy item styles (migrated). |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/dot-apps-configuration/dot-apps-configuration-list/dot-apps-configuration-item/dot-apps-configuration-item.component.html | Removes legacy item template (migrated). |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/dot-apps-configuration-header/dot-apps-configuration-header.component.html | Removes legacy header template (migrated). |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/dot-apps-configuration-detail/dot-apps-configuration-detail.component.scss | Removes legacy detail styles (migrated). |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration/dot-apps-configuration.component.scss | Adds new Tailwind/token-based configuration styles. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration/dot-apps-configuration.component.html | Updates configuration template to use store-driven state and store-managed dialog. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration/dot-apps-configuration-list/dot-apps-configuration-list.component.ts | Adds new signal-input based configuration list component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration/dot-apps-configuration-list/dot-apps-configuration-list.component.spec.ts | Updates tests for signal inputs. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration/dot-apps-configuration-list/dot-apps-configuration-list.component.scss | Adds tokenized styles for new configuration list component. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration/dot-apps-configuration-list/dot-apps-configuration-list.component.html | Refactors template to use function-form signal inputs. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration/dot-apps-configuration-list/dot-apps-configuration-item/dot-apps-configuration-item.component.ts | Migrates to signal inputs/outputs; updates confirm delete etc. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration/dot-apps-configuration-list/dot-apps-configuration-item/dot-apps-configuration-item.component.spec.ts | Updates tests for new path + signal input patterns. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration/dot-apps-configuration-list/dot-apps-configuration-item/dot-apps-configuration-item.component.scss | Adds tokenized item styles for new location. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration/dot-apps-configuration-list/dot-apps-configuration-item/dot-apps-configuration-item.component.html | Adds template using new PrimeNG button APIs and signal site input. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration-detail/dot-apps-configuration-detail.component.ts | Updates imports/paths; uses data-access DotAppsService; relocates components. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration-detail/dot-apps-configuration-detail.component.scss | Adds tokenized configuration detail styles. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration-detail/dot-apps-configuration-detail.component.html | Simplifies header rendering condition. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration-detail/components/dot-apps-configuration-header/dot-apps-configuration-header.component.ts | Migrates to signal input + state signal; introduces toggleShowMore. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration-detail/components/dot-apps-configuration-header/dot-apps-configuration-header.component.spec.ts | Updates import path and addresses change detection issues in spec. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration-detail/components/dot-apps-configuration-header/dot-apps-configuration-header.component.scss | Tokenizes colors/spacing; refactors avatar spacing. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration-detail/components/dot-apps-configuration-header/dot-apps-configuration-header.component.html | Adds new header template using signal input and show-more signal state. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration-detail/components/dot-apps-configuration-detail-generated-string-field/dot-apps-configuration-detail-generated-string-field.component.spec.ts | Disables flaky confirm-popup tests via xit. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration-detail/components/dot-apps-configuration-detail-generated-string-field/dot-apps-configuration-detail-generated-string-field.component.html | Replaces PrimeFlex classes with Tailwind; removes confirmPopup host. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration-detail/components/dot-apps-configuration-detail-form/dot-apps-configuration-detail-form.component.ts | Migrates Dropdown/Textarea modules to Select/Textarea; initializes form group. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration-detail/components/dot-apps-configuration-detail-form/dot-apps-configuration-detail-form.component.spec.ts | Updates tests to use Select and adjusts checkbox/textarea expectations. |
| core-web/apps/dotcms-ui/src/app/portlets/dot-apps/components/dot-apps-configuration-detail/components/dot-apps-configuration-detail-form/dot-apps-configuration-detail-form.component.scss | Tokenizes styling; removes some nested code styling/spacing. |
| core-web/apps/dotcms-ui/src/app/modules.ts | Replaces legacy PrimeNG modules with new ones (Tabs/Select/Textarea/DatePicker). |
| core-web/apps/dotcms-ui/src/app/components.ts | Removes DotDialog/ThemeSelector from lists; reshuffles MainCoreLegacy into standalone list. |
| core-web/apps/dotcms-ui/src/app/app.module.ts | Removes NgModule bootstrap in favor of standalone ApplicationConfig. |
| core-web/apps/dotcms-ui/src/app/app.config.ts | Adds standalone ApplicationConfig bootstrap providers and module provider imports. |
| core-web/apps/dotcms-ui/src/app/app.component.ts | Adds graceful config load fallback and default color initialization. |
| core-web/apps/dotcms-ui/src/app/api/services/guards/pages-guard.service.spec.ts | Replaces removed mock import with local mock class. |
| core-web/apps/dotcms-ui/src/app/api/services/guards/ema-app/edit-page.guard.ts | Removes guard implementation. |
| core-web/apps/dotcms-ui/src/app/api/services/guards/ema-app/edit-page.guard.spec.ts | Removes guard tests. |
| core-web/apps/dotcms-ui/src/app/api/services/dot-templates/dot-templates.service.spec.ts | Updates API expectations for new filtered response/pagination shape. |
| core-web/apps/dotcms-ui/project.json | Updates global styles list; removes PrimeFlex/PrimeNG CSS; adds Prism theme + new style.css. |
| core-web/apps/dotcms-ui/.postcssrc.json | Adds Tailwind PostCSS plugin config. |
| core-web/apps/dotcms-block-editor/src/styles.css | Adds Tailwind imports for block editor app stylesheet. |
| core-web/apps/dotcms-block-editor/src/app/app.module.ts | Adds theme provider + DotMessageService; updates providers. |
| core-web/apps/dotcms-block-editor/project.json | Switches to consolidated styles and adjusts bundle budgets. |
| core-web/apps/dotcms-block-editor/.postcssrc.json | Adds Tailwind PostCSS plugin config. |
| core-web/apps/dotcms-binary-field-builder/project.json | Removes primeng.min.css and some theme SCSS includes. |
| core-web/apps/dotcms-binary-field-builder/jest.config.ts | Enables isolatedModules for jest-preset-angular. |
| core-web/apps/dotcdn/src/app/app.module.ts | Migrates Dropdown/Textarea/TabView to Select/Textarea/Tabs. |
| core-web/apps/dotcdn/src/app/app.component.html | Updates tabs/select markup to new PrimeNG components. |
| core-web/apps/dotcdn/project.json | Removes primeng.min.css from styles. |
| core-web/apps/dotcdn/jest.config.ts | Enables isolatedModules for jest-preset-angular. |
| core-web/README.MD | Removes deprecated dotcms-field-elements entry from repo overview. |
| core-web/AGENTS.md | Updates Nx agent usage guidance and command conventions. |
| core-web/.vscode/extensions.json | Cleans up comments/formatting in extension recommendations. |
| core-web/.cursor/rules/nx-rules.mdc | Removes Cursor-specific Nx rules file. |
| core-web/.cursor/mcp.json | Switches Cursor MCP server config to PrimeNG MCP. |
| core-web/.claude/settings.json | Adds Claude plugins config for Nx agent integration. |
| COMMIT_MESSAGE.txt | Adds commit message template describing PrimeFlex→Tailwind refactor. |
| .mcp.json | Adds MCP server definitions (chrome-devtools/primeng/angular-cli). |
| .cursor/rules/frontend-context.mdc | Updates frontend stack docs to reflect Tailwind + PrimeNG and PrimeFlex deprecation. |
| .cursor/mcp.json | Adds PrimeNG and Angular CLI MCP servers while keeping Nx MCP. |
| .claude/agents/dotcms-typescript-reviewer.md | Renames agent and references updated agent naming in docs. |
| .claude/agents/dotcms-test-reviewer.md | Renames agent and references updated agent naming in docs. |
| .claude/agents/dotcms-team-router.md | Renames agent and updates description references. |
| .claude/agents/dotcms-issue-validator.md | Renames agent metadata. |
| .claude/agents/dotcms-file-classifier.md | Renames agent metadata and updates agent name references. |
| .claude/agents/dotcms-duplicate-detector.md | Renames agent metadata. |
| .claude/agents/dotcms-code-researcher.md | Renames agent metadata. |
| .claude/agents/dotcms-angular-reviewer.md | Renames agent metadata and references updated agent naming. |
...ainers/dot-container-create/dot-container-properties/store/dot-container-properties.store.ts
Show resolved
Hide resolved
...dotcms-ui/src/app/portlets/dot-apps/dot-apps-list/dot-apps-card/dot-apps-card.component.html
Show resolved
Hide resolved
...portlets/dot-apps/dot-apps-import-export-dialog/dot-apps-import-export-dialog.component.html
Show resolved
Hide resolved
.../src/app/portlets/dot-apps/services/dot-apps-list-resolver/dot-apps-list-resolver.service.ts
Show resolved
Hide resolved
...ms-ui/src/app/portlets/dot-categories/dot-categories-list/dot-categories-list.component.scss
Show resolved
Hide resolved
...enerated-string-field/dot-apps-configuration-detail-generated-string-field.component.spec.ts
Show resolved
Hide resolved
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 94 out of 95 changed files in this pull request and generated 10 comments.
Comments suppressed due to low confidence (1)
core-web/libs/portlets/dot-content-drive/portlet/src/lib/components/dot-content-drive-toolbar/dot-content-drive-toolbar.component.html:14
- Same issue here:
[class]overwrites the element’s entire class list, so the static classes (grid items-center w-full ...) can be lost. Use[ngClass]to add these grid-cols values without overriding other classes.
.../sdk/react/src/lib/next/components/DotCMSBlockEditorRenderer/components/blocks/GridBlock.tsx
Show resolved
Hide resolved
...ortlet/src/lib/components/dot-content-drive-toolbar/dot-content-drive-toolbar.component.html
Outdated
Show resolved
Hide resolved
...-types-edit/components/dot-convert-to-block-info/dot-convert-to-block-info.component.spec.ts
Outdated
Show resolved
Hide resolved
core-web/libs/block-editor/src/lib/components/dot-block-editor/styles/_grid.css
Outdated
Show resolved
Hide resolved
.../sdk/react/src/lib/next/components/DotCMSBlockEditorRenderer/components/blocks/GridBlock.tsx
Show resolved
Hide resolved
.../sdk/react/src/lib/next/components/DotCMSBlockEditorRenderer/components/BlockEditorBlock.tsx
Show resolved
Hide resolved
...s/sdk/angular/src/lib/components/dotcms-block-editor-renderer/blocks/grid-block.component.ts
Show resolved
Hide resolved
...rtlets/dot-content-drive/ui/src/lib/dot-folder-list-view/dot-folder-list-view.component.html
Show resolved
Hide resolved
...rtlets/dot-content-drive/ui/src/lib/dot-folder-list-view/dot-folder-list-view.component.html
Outdated
Show resolved
Hide resolved
dotCMS/src/main/webapp/WEB-INF/velocity/static/storyblock/gridBlock.vtl
Outdated
Show resolved
Hide resolved
Reverts changes to dot-analytics and dot-content-drive portlets that were not part of the grid block feature work. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Claude finished @fmontes's task —— View job Grid Block PR Security & Design Review🔴 Critical Security IssueXSS Vulnerability in Velocity Template ( The Velocity template properly validates and escapes the ## Validate span is a number between 1 and 12 to prevent XSS injection
#if($rawSpan && $rawSpan.toString().matches("^[0-9]+$") && $rawSpan >= 1 && $rawSpan <= 12)
#set($span = $rawSpan)
#else
#set($span = 6)
#end✅ This XSS concern has been properly addressed. The template validates that span values are numeric (1-12) and falls back to safe defaults, preventing injection attacks. Frontend Validation AnalysisThe frontend implementations also properly validate column arrays: React SDK ( const cols = rawCols.length === 2 &&
rawCols.every((v: unknown) => typeof v === 'number' && Number.isFinite(v))
? rawCols : [6, 6];Angular SDK ( const cols = rawCols.length === 2 &&
rawCols.every((v: unknown) => typeof v === 'number' && Number.isFinite(v))
? rawCols : [6, 6];Both implementations validate that columns are exactly 2 finite numbers and fall back to Design & Implementation Issues
Minor Issues
SummaryThe implementation is secure and well-designed. The critical XSS vulnerability flagged by Copilot has been properly addressed with input validation and sanitization. The grid resizing, navigation, and rendering logic is robust with good error handling and fallbacks. |
| margin-top: 1rem; | ||
| gap: 0.65rem; | ||
| font-size: 0.875rem; |
There was a problem hiding this comment.
Is it possible to reuse our vars on the spacing and rem values?
There was a problem hiding this comment.
Check if we can reuse our vars for the spacing and rem values
There was a problem hiding this comment.
Check if we can reuse our vars for the spacing and rem values
There was a problem hiding this comment.
The ng-deep pseudoselector is potentially leaking the styles to the global scope, consider wrapping them around the host
There was a problem hiding this comment.
Check if we can reuse our vars for the spacing and rem values
| padding: 16px; | ||
| height: 240px; |
There was a problem hiding this comment.
Consider using rem values and Check if we can reuse our vars for the spacing and rem values
There was a problem hiding this comment.
Consider using rem values and Check if we can reuse our vars for the spacing and rem values
There was a problem hiding this comment.
Consider using rem values and Check if we can reuse our vars for the spacing and rem values
There was a problem hiding this comment.
Consider using rem values and Check if we can reuse our vars for the spacing and rem values
| const BlockEditorBlockComponent = blockEditorBlock; | ||
| const rawCols = Array.isArray(node.attrs?.columns) ? node.attrs.columns : [6, 6]; | ||
| const cols = | ||
| rawCols.length === 2 && | ||
| rawCols.every((v: unknown) => typeof v === 'number' && Number.isFinite(v)) | ||
| ? rawCols | ||
| : [6, 6]; | ||
| const pct1 = (cols[0] / 12) * 100; | ||
| const pct2 = (cols[1] / 12) * 100; |
There was a problem hiding this comment.
we need to centralize this whole calculation and reuse it, we can use UVE library for that
Summary
gridBlockTipTap node with two-column layout, following the same pure-node pattern as tables (no Angular components needed)gridColumn) supports independent nested blocks (paragraphs, headings, images, lists, etc.)Test plan
/and search for "Grid" — should see "Grid (2 columns)"🤖 Generated with Claude Code