## Description This PR adds the features of proper vertical alignment and themeing to Anvil. - A separate `Container` component is created for Anvil, that is used as the layer on top of which the themeing tokens are applied. - A default `min-height` is set using tokens for all widgets in Anvil. - Anvil now stops considering any `min-height` configurations provided by the widgets. It is the widgets responsibility to take care of their own heights, and Anvil will accommodate them -- no matter the height. - Table widget's default height is now set to the min height that was configured for it earlier. - `AnvilFlexComponent` now has `overflow:visible` to allow the shadows for zones and sections to not be cut-off. - All widgets are aligned center vertically by default. This will apply if they're smaller than the set `min-height` - Zones and Sections have elevation styles applied suing the `Container` component mentioned above. - Zones and Sections don't have any styling property other than `Background`, we'll add more as we understand more about the product. > Conditional vertical margin applied to widgets. > If in a row of widgets (.aligned-widget-row), one of the widgets has a label ([data-field-label-wrapper]), then > all widgets (.anvil-widget-wrapper) in the row other than the widget with the label, will shift down using the > margin-block-start property. This is to ensure that the widgets are aligned vertically. > The value of the margin-block-start property is calculated based on the spacing tokens used by the labels in input > like components > #### PR fixes following issue(s) Fixes #29073 Fixes #28591 Fixes #28592 Fixes #28593 #### Media  #### Type of change - New feature (non-breaking change which adds functionality) ## Testing #### How Has This Been Tested? - [x] Manual - [ ] JUnit - [ ] Jest - [ ] Cypress #### Test Plan #### Issues raised during DP testing ## Checklist: #### Dev activity - [ ] My code follows the style guidelines of this project - [ ] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Introduced conditional vertical margins for widgets to ensure alignment within rows. - Added a new `Container` component for thematic elevation styles in Anvil widgets. - Implemented elevation style options and semantic background settings for Section and Zone widgets. - **Enhancements** - Improved visual layout and alignment of AnvilFlexComponent with updated styling properties. - Added `className` properties to various layout components for enhanced CSS targeting. - **Style** - Updated widget styles to accommodate new background and elevation features. - **Refactor** - Simplified padding logic in WDSParagraphWidget. - Streamlined dimensions calculation in WDSTableWidget. - **Documentation** - Renamed sections in property panes to better reflect background styling options. - **Chores** - Added `Elevations` enum to manage elevation values consistently across components. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
263 lines
5.8 KiB
CSS
Executable File
263 lines
5.8 KiB
CSS
Executable File
@import "~normalize.css";
|
|
@import "~@blueprintjs/core/lib/css/blueprint.css";
|
|
@import "~@blueprintjs/icons/lib/css/blueprint-icons.css";
|
|
@import "~design-system-old/build/css/design-system-old.css";
|
|
@import "~design-system/build/css/design-system.css";
|
|
@import "theme/colors.css";
|
|
@import "theme/defaultTheme.css";
|
|
@import "theme/wds.css";
|
|
@import "assets/fonts/custom/index.css";
|
|
@import "assets/fonts/google/index.css";
|
|
|
|
:root {
|
|
/* TODO: This needs to be fixed! This override is to maintain branding changes. */
|
|
--ads-color-background-secondary: var(--ads-v2-color-bg-subtle);
|
|
}
|
|
|
|
body {
|
|
margin: 0;
|
|
padding: 0;
|
|
-webkit-font-smoothing: antialiased;
|
|
-moz-osx-font-smoothing: grayscale;
|
|
background-color: #fff !important;
|
|
color: var(--ads-v2-color-fg);
|
|
}
|
|
|
|
body.dragging * {
|
|
cursor: grabbing !important;
|
|
}
|
|
|
|
/**
|
|
Disable outline completely from all components
|
|
*/
|
|
:focus,
|
|
:focus-visible {
|
|
outline: none !important;
|
|
outline-offset: 0 !important;
|
|
}
|
|
|
|
/**
|
|
Disable outline for adsv2 select component
|
|
*/
|
|
.ads-v2-select.rc-select-focused {
|
|
outline: none !important;
|
|
outline-offset: 0 !important;
|
|
}
|
|
|
|
#root.overlay {
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
}
|
|
|
|
code {
|
|
font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
|
|
monospace;
|
|
}
|
|
|
|
div.bp3-select-popover .bp3-popover-content {
|
|
padding: 0;
|
|
}
|
|
|
|
span.bp3-popover-target {
|
|
display: flex;
|
|
width: 100%;
|
|
}
|
|
|
|
span.bp3-popover-target > * {
|
|
flex-grow: 1;
|
|
}
|
|
|
|
.bp3-popover,
|
|
.bp3-popover2 {
|
|
box-shadow: var(--ads-v2-shadow-popovers) !important;
|
|
}
|
|
|
|
.bp3-popover2-content {
|
|
border-radius: var(--ads-v2-border-radius) !important;
|
|
}
|
|
|
|
.action-selector-popup {
|
|
background-color: var(--ads-v2-color-bg);
|
|
border-radius: var(--ads-v2-border-radius) !important;
|
|
border: 1px solid var(--ads-v2-color-border-muted) !important;
|
|
}
|
|
|
|
.action-selector-popup span.bp3-popover-target > * {
|
|
max-width: 100%;
|
|
}
|
|
|
|
add-action.disabled span {
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
.action-selector-popup .bp3-button-text {
|
|
text-overflow: ellipsis;
|
|
overflow: hidden;
|
|
min-width: 0;
|
|
}
|
|
|
|
/**
|
|
action selector block styles
|
|
**/
|
|
.bp3-submenu.bp3-popover > .bp3-popover-content {
|
|
box-shadow: none;
|
|
}
|
|
|
|
.action-card-border {
|
|
border-color: var(--ads-v2-color-border);
|
|
}
|
|
|
|
.action-card-next-selected {
|
|
border-bottom: 1px solid var(--ads-v2-color-border-emphasis-plus);
|
|
}
|
|
|
|
.action-card-border-selected {
|
|
border-color: var(--ads-v2-color-border-emphasis-plus) !important;
|
|
}
|
|
|
|
.action-card-last-block {
|
|
border-radius: 0px 0px var(--ads-v2-border-radius) var(--ads-v2-border-radius);
|
|
}
|
|
|
|
.main-block-radius {
|
|
border-radius: var(--ads-v2-border-radius);
|
|
}
|
|
|
|
.main-block-radius-selected {
|
|
border-radius: var(--ads-v2-border-radius) var(--ads-v2-border-radius) 0px 0px;
|
|
}
|
|
|
|
.bp3-popover.bp3-minimal.bp3-submenu {
|
|
padding-right: 0px;
|
|
}
|
|
|
|
div.bp3-popover-arrow {
|
|
display: none;
|
|
}
|
|
|
|
.bp3-button.bp3-loading {
|
|
cursor: default !important;
|
|
}
|
|
|
|
.display-none {
|
|
display: none;
|
|
}
|
|
|
|
.t--editor-appname-menu-portal {
|
|
z-index: 9 !important;
|
|
}
|
|
|
|
.bp3-popover .bp3-input {
|
|
outline: 0;
|
|
box-shadow: none;
|
|
border: 1px solid var(--ads-v2-color-border);
|
|
border-radius: var(--ads-v2-border-radius) !important;
|
|
}
|
|
|
|
.bp3-popover .bp3-input:focus {
|
|
border-color: var(--ads-v2-color-border-emphasis);
|
|
outline: 0;
|
|
}
|
|
|
|
.bp3-popover.bp3-minimal {
|
|
margin-top: 8px !important;
|
|
}
|
|
|
|
.bp3-popover.bp3-minimal.action-selector-dropdown {
|
|
margin-top: 0px !important;
|
|
}
|
|
|
|
.layout-control.bp3-popover.bp3-minimal {
|
|
margin-top: 8px !important;
|
|
}
|
|
|
|
.bp3-popover.none-shadow-popover {
|
|
box-shadow: none;
|
|
border: 0px;
|
|
}
|
|
|
|
.bp3-datepicker {
|
|
border-radius: 0 !important;
|
|
}
|
|
|
|
/* making both the Modal layer and the Dropdown layer */
|
|
.bp3-modal-widget,
|
|
.appsmith_widget_0 > .bp3-portal {
|
|
z-index: 2 !important;
|
|
}
|
|
|
|
/* Portals on the Modal widget */
|
|
.bp3-modal-widget .bp3-portal {
|
|
z-index: 21 !important;
|
|
}
|
|
|
|
.bp3-popover2-content {
|
|
background-color: var(--ads-v2-color-bg) !important;
|
|
border-radius: var(--ads-v2-border-radius) !important;
|
|
}
|
|
.bp3-overlay-backdrop {
|
|
background-color: rgba(16, 22, 26, 0.7) !important;
|
|
}
|
|
|
|
.bp3-overlay-zindex {
|
|
z-index: 20 !important;
|
|
}
|
|
|
|
/** color picker input control */
|
|
.color-picker-input,
|
|
.color-picker-input > .bp3-popover-content {
|
|
border-radius: var(--ads-v2-border-radius) !important;
|
|
}
|
|
|
|
.color-picker-input {
|
|
box-shadow: var(--ads-v2-shadow-popovers) !important;
|
|
}
|
|
|
|
.icon-select-popover,
|
|
.icon-select-popover > .bp3-popover-content {
|
|
border-radius: var(--ads-v2-border-radius) !important;
|
|
}
|
|
|
|
.icon-select-popover {
|
|
box-shadow: var(--ads-v2-shadow-popovers) !important;
|
|
}
|
|
|
|
.error-menuitem {
|
|
color: var(--ads-v2-color-fg-error) !important;
|
|
}
|
|
.error-menuitem > .ads-v2-menu__menu-item-children {
|
|
color: var(--ads-v2-color-fg-error) !important;
|
|
}
|
|
|
|
.error-menuitem:hover:not([data-disabled]),
|
|
.error-menuitem:focus-visible {
|
|
background-color: var(--ads-v2-color-red-50) !important;
|
|
}
|
|
.error-menuitem:active:not([data-disabled]) {
|
|
background-color: var(--ads-v2-color-red-100) !important;
|
|
}
|
|
.menuitem-nohover:hover {
|
|
background-color: transparent !important;
|
|
cursor: default !important;
|
|
}
|
|
|
|
.react-datepicker__children-container {
|
|
margin-top: -10px !important;
|
|
}
|
|
|
|
.reconnect-datasource-modal {
|
|
z-index: 9 !important;
|
|
}
|
|
|
|
/** Conditional vertical margin applied to widgets.
|
|
If in a row of widgets (.aligned-widget-row), one of the widgets has a label ([data-field-label-wrapper]), then
|
|
all widgets (.anvil-widget-wrapper) in the row other than the widget with the label, will shift down using the
|
|
margin-block-start property. This is to ensure that the widgets are aligned vertically.
|
|
|
|
The value of the margin-block-start property is calculated based on the spacing tokens used by the labels in input like components
|
|
*/
|
|
.aligned-widget-row:has(.anvil-widget-wrapper [data-field-label-wrapper])
|
|
.anvil-widget-wrapper:not(:has([data-field-label-wrapper])) {
|
|
margin-block-start: calc(var(--inner-spacing-2) + var(--sizing-3));
|
|
}
|