Skip to content
80 changes: 79 additions & 1 deletion packages/clay-css/src/scss/cadmin/variables/_forms.scss
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,59 @@ $cadmin-input-palette: map-deep-merge(
white-space: nowrap,
width: min-content,
),
'.form-control-fit-content': (
max-width: 100%,
'.form-control': (
display: inline-flex,
width: auto,
),
'.form-control-inset': (
margin: 0,
min-height: 0,
min-width: 50px,
width: auto,
'&:empty:before': (
color: $cadmin-secondary,
content: unquote("'\\FEFF' attr(placeholder)"),
cursor: text,
pointer-events: none,
),
'&:focus:empty:before': (
content: none,
),
),
'.form-control-hidden': (
width: 0,
),
),
'.inline-text-input': (
'.form-control': (
background-color: transparent,
border-color: transparent,
font-size: 28px,
font-weight: $cadmin-font-weight-semi-bold,
line-height: 1,
padding: 5px 0 5px 16px,
'&:hover': (
border-color: $cadmin-secondary-l3,
),
),
'.form-control-inset': (
padding-right: 16px,
'&:focus ~ .form-control-indicator': (
display: none,
),
'&[contenteditable="false"] ~ .form-control-indicator': (
display: none,
),
),
'.form-control-item': (
padding-right: 16px,
),
'.lexicon-icon': (
font-size: 16px,
),
),
),
$cadmin-input-palette
);
Expand Down Expand Up @@ -421,9 +474,10 @@ $cadmin-form-control-inset: map-deep-merge(
margin-bottom: $cadmin-form-control-inset-margin-y,
margin-left: 8px,
margin-top: $cadmin-form-control-inset-margin-y,
max-width: 100%,
min-height: $cadmin-form-control-inset-min-height,
min-width: 50px,
padding: 0,
width: 50px,
focus: (
outline: 0,
),
Expand Down Expand Up @@ -840,6 +894,14 @@ $cadmin-has-error: map-deep-merge(
),
),
),
'.inline-text-input': (
'.form-control': (
border-color: $cadmin-input-danger-border-color,
),
'.form-control-indicator': (
display: none,
),
),
),
$cadmin-has-error
);
Expand Down Expand Up @@ -1010,6 +1072,14 @@ $cadmin-has-warning: map-deep-merge(
),
),
),
'.inline-text-input': (
'.form-control': (
border-color: $cadmin-input-warning-border-color,
),
'.form-control-indicator': (
display: none,
),
),
),
$cadmin-has-warning
);
Expand Down Expand Up @@ -1180,6 +1250,14 @@ $cadmin-has-success: map-deep-merge(
),
),
),
'.inline-text-input': (
'.form-control': (
border-color: $cadmin-input-success-border-color,
),
'.form-control-indicator': (
display: none,
),
),
),
$cadmin-has-success
);
Expand Down
47 changes: 45 additions & 2 deletions packages/clay-css/src/scss/mixins/_forms.scss
Original file line number Diff line number Diff line change
Expand Up @@ -607,8 +607,11 @@
$_focus-within: map-get($map, focus-within);

@if ($_focus-within) {
&:focus-within:has(input:focus) {
@include clay-form-control-variant($_focus-within);
&:focus-within {
&:has(input:focus),
&:has([contenteditable]:focus) {
@include clay-form-control-variant($_focus-within);
}
}
}

Expand Down Expand Up @@ -644,6 +647,14 @@
}
}

$_readonly: map-get($map, readonly);

@if ($_readonly) {
&[readonly] {
@include clay-form-control-variant($_readonly);
}
}

// Disabled
// HTML5 says that controls under a fieldset > legend:first-child won't be
// disabled if the fieldset is disabled. Due to implementation difficulty, we
Expand Down Expand Up @@ -700,6 +711,22 @@
}
}

@each $key, $value in $map {
@if not clay-is-map-unset($value) {
$selector: if(
starts-with($key, '.') or starts-with($key, '#'),
$key,
false
);

@if ($selector) {
#{$selector} {
@include clay-map-to-css($value);
}
}
}
}

@include clay-generate-media-breakpoints($map);
}
}
Expand Down Expand Up @@ -1605,6 +1632,22 @@
}
}
}

@each $key, $value in $map {
@if not clay-is-map-unset($value) {
$selector: if(
starts-with($key, '.') or starts-with($key, '#'),
$key,
false
);

@if ($selector) {
#{$selector} {
@include clay-map-to-css($value);
}
}
}
}
}
}
}
Expand Down
80 changes: 79 additions & 1 deletion packages/clay-css/src/scss/variables/_forms.scss
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,59 @@ $input-palette: map-deep-merge(
white-space: nowrap,
width: min-content,
),
'.form-control-fit-content': (
max-width: 100%,
'.form-control': (
display: inline-flex,
width: auto,
),
'.form-control-inset': (
margin: 0,
min-height: 0,
min-width: 50px,
width: auto,
'&:empty:before': (
color: $secondary,
content: unquote("'\\FEFF' attr(placeholder)"),
cursor: text,
pointer-events: none,
),
'&:focus:empty:before': (
content: none,
),
),
'.form-control-hidden': (
width: 0,
),
),
'.inline-text-input': (
'.form-control': (
background-color: transparent,
border-color: transparent,
font-size: 1.75rem,
font-weight: $font-weight-semi-bold,
line-height: 1,
padding: 0.3125rem 0 0.3125rem 1rem,
'&:hover': (
border-color: $secondary-l3,
),
),
'.form-control-inset': (
padding-right: 1rem,
'&:focus ~ .form-control-indicator': (
display: none,
),
'&[contenteditable="false"] ~ .form-control-indicator': (
display: none,
),
),
'.form-control-item': (
padding-right: 1rem,
),
'.lexicon-icon': (
font-size: 1rem,
),
),
),
$input-palette
);
Expand Down Expand Up @@ -468,9 +521,10 @@ $form-control-inset: map-deep-merge(
margin-bottom: $form-control-inset-margin-y,
margin-left: 0.25rem,
margin-top: $form-control-inset-margin-y,
max-width: 100%,
min-height: $form-control-inset-min-height,
min-width: 50px,
padding: 0,
width: 50px,
focus: (
outline: 0,
),
Expand Down Expand Up @@ -922,6 +976,14 @@ $has-error: map-deep-merge(
),
),
),
'.inline-text-input': (
'.form-control': (
border-color: $input-danger-border-color,
),
'.form-control-indicator': (
display: none,
),
),
),
$has-error
);
Expand Down Expand Up @@ -1075,6 +1137,14 @@ $has-warning: map-deep-merge(
),
),
),
'.inline-text-input': (
'.form-control': (
border-color: $input-warning-border-color,
),
'.form-control-indicator': (
display: none,
),
),
),
$has-warning
);
Expand Down Expand Up @@ -1228,6 +1298,14 @@ $has-success: map-deep-merge(
),
),
),
'.inline-text-input': (
'.form-control': (
border-color: $input-success-border-color,
),
'.form-control-indicator': (
display: none,
),
),
),
$has-success
);
Expand Down
47 changes: 47 additions & 0 deletions packages/clay-form/docs/form.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,53 @@ export default function App() {
}
```

## Inline Text Input

A text input that grows along with its content.

```jsx preview
import {Provider} from '@clayui/core';
import Form, {ClayInput} from '@clayui/form';
import React, {useState} from 'react';

import '@clayui/css/lib/css/atlas.css';

export default function App() {
return (
<Provider spritemap="/public/icons.svg">
<div className="p-4">
<Form>
<Form.Group>
<label htmlFor="inlineTextInput1">
Inline Text Input with Label
</label>
<ClayInput.InlineText
id="inlineTextInput1"
placeholder="Placeholder"
/>
</Form.Group>
<Form.Group>
<label htmlFor="inlineTextInput1">Readonly</label>
<ClayInput.InlineText
id="inlineTextInput2"
placeholder="Placeholder"
readonly={true}
value="This is readonly text in the input."
/>
</Form.Group>
<Form.Group>
<ClayInput.InlineText
id="inlineTextInput3"
placeholder="Untitled Case Study"
/>
</Form.Group>
</Form>
</div>
</Provider>
);
}
```

## Validation

`.has-error`, `.has-success` and `.has-warning` classes are used in `ClayForm.Group` to identifier validation state of the form group items.
Expand Down
Loading
Loading