diff --git a/packages/calcite-components/src/components/text-area/resources.ts b/packages/calcite-components/src/components/text-area/resources.ts
index 4a1d7ec5564..144d4c7db54 100644
--- a/packages/calcite-components/src/components/text-area/resources.ts
+++ b/packages/calcite-components/src/components/text-area/resources.ts
@@ -15,6 +15,7 @@ export const CSS = {
footerEndSlotOnly: "footer--end-only",
textArea: "text-area",
textAreaOnly: "text-area--only",
+ wrapper: "wrapper",
};
export const IDS = {
diff --git a/packages/calcite-components/src/components/text-area/text-area.e2e.ts b/packages/calcite-components/src/components/text-area/text-area.e2e.ts
index e7197e58836..97d3cb1862f 100644
--- a/packages/calcite-components/src/components/text-area/text-area.e2e.ts
+++ b/packages/calcite-components/src/components/text-area/text-area.e2e.ts
@@ -290,6 +290,18 @@ describe("calcite-text-area", () => {
shadowSelector: `.${CSS.textArea}::placeholder`,
targetProp: "color",
},
+ "--calcite-text-area-corner-radius": {
+ shadowSelector: `.${CSS.wrapper}`,
+ targetProp: "borderRadius",
+ },
+ "--calcite-text-area-shadow": {
+ shadowSelector: `.${CSS.wrapper}`,
+ targetProp: "boxShadow",
+ },
+ "--calcite-text-area-footer-background-color": {
+ shadowSelector: `.${CSS.footer}`,
+ targetProp: "backgroundColor",
+ },
});
});
diff --git a/packages/calcite-components/src/components/text-area/text-area.scss b/packages/calcite-components/src/components/text-area/text-area.scss
index 16093ebde8c..9c76d25322d 100644
--- a/packages/calcite-components/src/components/text-area/text-area.scss
+++ b/packages/calcite-components/src/components/text-area/text-area.scss
@@ -14,16 +14,28 @@
* @prop --calcite-text-area-min-width: Specifies the component's text area minimum width.
* @prop --calcite-text-area-text-color: Specifies the component's text color.
* @prop --calcite-text-area-footer-border-color: Specifies the footer's border color.
+ * @prop --calcite-text-area-corner-radius: Specifies component's corner radius.
+ * @prop --calcite-text-area-shadow: Specifies the component's shadow.
+ * @prop --calcite-text-area-footer-background-color: Specifies the footer's background color.
+
*/
:host {
@apply inline-block relative w-full h-full box-border;
-
--calcite-internal-text-area-border-color: var(--calcite-text-area-border-color, var(--calcite-color-border-input));
--calcite-internal-text-area-footer-border-color: var(
--calcite-text-area-footer-border-color,
var(--calcite-internal-text-area-border-color)
);
+ --calcite-internal-text-area-corner-radius: var(
+ --calcite-text-area-corner-radius,
+ var(--calcite-corner-radius-default)
+ );
+ --calcite-internal-text-area-shadow: var(--calcite-text-area-shadow, var(--calcite-shadow-none));
+ --calcite-internal-text-area-footer-background-color: var(
+ --calcite-text-area-footer-background-color,
+ var(--calcite-text-area-background-color, var(--calcite-color-foreground-1))
+ );
// avoids host to shrink beyond the textarea
min-block-size: var(
@@ -33,19 +45,27 @@
min-inline-size: var(--calcite-text-area-min-width, theme("spacing.48"));
}
+.wrapper {
+ @apply h-full w-full box-border;
+ box-shadow: var(--calcite-internal-text-area-shadow);
+ border-radius: var(--calcite-internal-text-area-corner-radius);
+}
+
.text-area,
.footer {
font-size: var(--calcite-text-area-font-size, var(--calcite-font-size--1));
- background-color: var(--calcite-text-area-background-color, var(--calcite-color-foreground-1));
padding-block: var(--calcite-internal-text-area-padding-block);
padding-inline: var(--calcite-internal-text-area-padding-inline);
}
+.footer {
+ background-color: var(--calcite-internal-text-area-footer-background-color);
+ border-radius: 0 0 var(--calcite-internal-text-area-corner-radius) var(--calcite-internal-text-area-corner-radius);
+}
+
.text-area {
@apply relative font-sans block box-border w-full m-0;
-
--calcite-internal-text-area-border-block-end-color: var(--calcite-internal-text-area-border-color);
-
border: var(--calcite-border-width-sm) solid var(--calcite-internal-text-area-border-color);
border-block-end-color: var(--calcite-internal-text-area-border-block-end-color);
color: var(--calcite-text-area-text-color, var(--calcite-color-text-1));
@@ -57,7 +77,8 @@
);
max-inline-size: var(--calcite-text-area-max-width);
min-inline-size: var(--calcite-text-area-min-width, theme("spacing.48"));
-
+ background-color: var(--calcite-text-area-background-color, var(--calcite-color-foreground-1));
+ border-radius: var(--calcite-internal-text-area-corner-radius) var(--calcite-internal-text-area-corner-radius) 0 0;
&::placeholder {
@apply font-normal;
}
@@ -82,6 +103,10 @@
min-inline-size: theme("spacing.72");
}
+ &.text-area--only {
+ border-radius: var(--calcite-internal-text-area-corner-radius);
+ }
+
&:not(.text-area--only, .text-area--invalid) {
--calcite-internal-text-area-border-block-end-color: var(
--calcite-text-area-divider-color,
@@ -112,10 +137,14 @@
}
.readonly {
- background-color: var(--calcite-color-background);
+ background-color: var(--calcite-text-area-background-color, var(--calcite-color-background));
font-weight: var(--calcite-font-weight-medium);
}
+.footer.readonly {
+ background-color: var(--calcite-internal-text-area-footer-background-color, var(--calcite-color-background));
+}
+
.content,
.hide {
@apply hidden;
diff --git a/packages/calcite-components/src/components/text-area/text-area.tsx b/packages/calcite-components/src/components/text-area/text-area.tsx
index 49e8ae7e738..8f31d5f4fe4 100644
--- a/packages/calcite-components/src/components/text-area/text-area.tsx
+++ b/packages/calcite-components/src/components/text-area/text-area.tsx
@@ -468,82 +468,84 @@ export class TextArea
const hasFooter = this.startSlotHasElements || this.endSlotHasElements || !!this.maxLength;
return (