diff --git a/.betterer.results b/.betterer.results index 0f1715e5605..6e962654114 100644 --- a/.betterer.results +++ b/.betterer.results @@ -7574,6 +7574,34 @@ exports[`no gf-form usage`] = { [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"] ], + "packages/grafana-ui/src/themes/GlobalStyles/forms.ts:5381": [ + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], + [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"] + ], "packages/grafana-ui/src/themes/GlobalStyles/legacySelect.ts:5381": [ [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], diff --git a/packages/grafana-ui/src/themes/GlobalStyles/forms.ts b/packages/grafana-ui/src/themes/GlobalStyles/forms.ts index c3a87d89adf..2cc1b03e94a 100644 --- a/packages/grafana-ui/src/themes/GlobalStyles/forms.ts +++ b/packages/grafana-ui/src/themes/GlobalStyles/forms.ts @@ -27,5 +27,345 @@ export function getFormElementStyles(theme: GrafanaTheme2) { { width: 'auto', // Override of generic input selector }, + '.gf-form': { + display: 'flex', + flexDirection: 'row', + alignItems: 'flex-start', + textAlign: 'left', + position: 'relative', + marginBottom: theme.spacing(0.5), + + '&--offset-1': { + marginLeft: theme.spacing(2), + }, + + '&--grow': { + flexGrow: 1, + }, + + '&--flex-end': { + justifyContent: 'flex-end', + }, + + '&--align-center': { + alignContent: 'center', + }, + + '&--alt': { + flexDirection: 'column', + alignItems: 'flex-start', + + '.gf-form-label': { + padding: '4px 0', + }, + }, + }, + '.gf-form--has-input-icon': { + position: 'relative', + marginRight: theme.spacing(0.5), + + '.gf-form-input-icon': { + position: 'absolute', + top: '8px', + fontSize: theme.typography.size.lg, + left: '10px', + color: theme.colors.text.disabled, + }, + + '> input': { + paddingLeft: '35px', + + '&:focus + .gf-form-input-icon': { + color: theme.colors.text.secondary, + }, + }, + + '.Select--multi .Select-multi-value-wrapper, .Select-placeholder': { + paddingLeft: '30px', + }, + }, + + '.gf-form-disabled': { + color: theme.colors.text.secondary, + + '.gf-form-select-wrapper::after': { + color: theme.colors.text.secondary, + }, + + 'a, .gf-form-input': { + color: theme.colors.text.secondary, + }, + }, + + '.gf-form-group': { + marginBottom: theme.spacing(5), + }, + '.gf-form-inline': { + display: 'flex', + flexDirection: 'row', + flexWrap: 'wrap', + alignContent: 'flex-start', + + '&--nowrap': { + flexWrap: 'nowrap', + }, + + '&--xs-view-flex-column': { + flexDirection: 'row', + flexWrap: 'nowrap', + [theme.breakpoints.down('sm')]: { + flexDirection: 'column', + }, + }, + + '.select-container': { + marginRight: theme.spacing(0.5), + }, + + '.gf-form-spacing': { + marginRight: theme.spacing(0.5), + }, + }, + + '.gf-form-button-row': { + paddingTop: theme.spacing(3), + 'a, button': { + marginRight: theme.spacing(2), + }, + }, + '.gf-form-label': { + display: 'flex', + alignItems: 'center', + padding: theme.spacing(0, 1), + flexShrink: 0, + fontWeight: theme.typography.fontWeightMedium, + fontSize: theme.typography.size.sm, + backgroundColor: theme.colors.background.secondary, + height: '32px', + lineHeight: '32px', + marginRight: theme.spacing(0.5), + borderRadius: theme.shape.radius.default, + justifyContent: 'space-between', + border: 'none', + + '&--grow': { + flexGrow: 1, + }, + + '&--transparent': { + backgroundColor: 'transparent', + border: 0, + textAlign: 'right', + paddingLeft: 0, + }, + + '&--variable': { + color: theme.colors.primary.text, + background: theme.components.panel.background, + border: `1px solid ${theme.components.panel.borderColor}`, + }, + + '&--btn': { + border: 'none', + borderRadius: theme.shape.radius.default, + '&:hover': { + background: theme.colors.background.secondary, + color: theme.colors.text.primary, + }, + }, + + '&:disabled': { + color: theme.colors.text.secondary, + }, + }, + '.gf-form-label + .gf-form-label': { + marginRight: theme.spacing(0.5), + }, + '.gf-form-pre': { + display: 'block !important', + flexGrow: 1, + margin: 0, + marginRight: theme.spacing(0.5), + border: `1px solid transparent`, + borderLeft: 'none', + borderRadius: theme.shape.radius.default, + }, + '.gf-form-textarea': { + maxWidth: '650px', + }, + '.gf-form-input': { + display: 'block', + width: '100%', + height: '32px', + padding: theme.spacing(0, 1), + fontSize: theme.typography.size.md, + lineHeight: '18px', + color: theme.components.input.text, + backgroundColor: theme.components.input.background, + backgroundImage: 'none', + backgroundClip: 'padding-box', + border: `1px solid ${theme.components.input.borderColor}`, + borderRadius: theme.shape.radius.default, + marginRight: theme.spacing(0.5), + whiteSpace: 'nowrap', + overflow: 'hidden', + textOverflow: 'ellipsis', + + // text areas should be scrollable + '&textarea': { + overflow: 'auto', + whiteSpace: 'pre-wrap', + padding: `6px ${theme.spacing(1)}`, + minHeight: '32px', + height: 'auto', + }, + + // Unstyle the caret on ``s in IE10+. - &::-ms-expand { - background-color: transparent; - border: 0; - display: none; - } - - // Customize the `:focus` state to imitate native WebKit styles. - @include form-control-focus(); - - // Placeholder - &::placeholder { - color: $input-color-placeholder; - opacity: 1; - } - - &:disabled, - &[readonly] { - background-color: $input-bg-disabled; - // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655. - opacity: 1; - } - - &:disabled { - cursor: $cursor-disabled; - } - - &.gf-size-auto { - width: auto; - } - - &--dropdown { - padding-right: $space-lg; - position: relative; - display: flex; - align-items: center; - - &::after { - position: absolute; - top: 36%; - right: 11px; - font-size: 11px; - background-color: transparent; - color: $text-color; - font: normal normal normal list.slash($font-size-sm, 1) FontAwesome; - content: '\f0d7'; - pointer-events: none; - } - } - - &--small { - padding-top: 4px; - padding-bottom: 4px; - font-size: $font-size-sm; - } - - &--plaintext { - white-space: unset; - } - - &--has-help-icon { - padding-right: $space-xl; - } -} - -.gf-form-hint { - width: 100%; -} - -.gf-form-hint-text { - display: block; - text-align: right; - padding-top: 0.5em; -} - -.gf-form-select-wrapper { - position: relative; - background-color: $input-bg; - margin-right: $space-xs; - - .gf-form-select-icon { - position: absolute; - z-index: 1; - left: $input-padding; - top: 50%; - margin-top: -7px; - - + .gf-form-input { - position: relative; - z-index: 2; - padding-left: $space-xl; - background-color: transparent; - - option { - // Firefox - color: $black; - } - } - } - - .gf-form-input { - margin-right: 0; - line-height: $input-height; - } - - select.gf-form-input { - text-indent: 0.01px; - text-overflow: ''; - padding-right: $space-xl; - appearance: none; - - &:-moz-focusring { - outline: none; - color: transparent; - text-shadow: 0 0 0 $text-color; - } - - &.ng-empty { - color: $text-color-weak; - } - } - - &::after { - position: absolute; - top: 36%; - right: 11px; - background-color: transparent; - color: $text-color; - font: normal normal normal list.slash($font-size-sm, 1) FontAwesome; - content: '\f0d7'; - pointer-events: none; - font-size: 11px; - } - - &--has-help-icon { - &::after { - right: $space-xl; - } - } -} - -.gf-form--v-stretch { - align-items: stretch; -} - -.gf-form-btn { - padding: $input-padding; - margin-right: $space-xs; - line-height: $input-line-height; - font-size: $font-size-sm; - - flex-shrink: 0; - flex-grow: 0; -} - -.natural-language-input { - &input[type='number'] { - font-size: $font-size-base; - line-height: $input-line-height; - margin: -6px -5px 0 5px; - padding: $space-xs; - } -} - -.gf-form-dropdown-typeahead { - //margin-right: $space-xs; ? - position: relative; - - &::after { - position: absolute; - top: 35%; - right: $space-sm; - background-color: transparent; - color: $input-color; - font: normal normal normal list.slash($font-size-sm, 1) FontAwesome; - content: '\f0d7'; - pointer-events: none; - font-size: 11px; - } -} - -.gf-form-help-icon { - flex-grow: 0; - color: $text-color-weak; - - &--bold { - color: $text-color-emphasis; - padding-left: 0; - } - - &--right-absolute { - position: absolute; - right: $spacer; - top: 6px; - } - - &--right-normal { - float: right; - } - - &--header { - margin-bottom: $space-xxs; - } - - &--small-padding { - padding-left: 4px; - } - - &:hover { - color: $text-color; - } -} - -select.gf-form-input ~ .gf-form-help-icon { - right: 10px; -} - -.gf-form-icon--right-absolute { - position: absolute; - right: $spacer; - top: 10px; - color: $text-muted; -} - -.cta-form { - position: relative; - padding: $space-lg; - background-color: $empty-list-cta-bg; - margin-bottom: $space-lg; - border-top: 3px solid $green-base; -} - -.cta-form__close { - background: transparent; - padding: 4px 8px 4px 9px; - border: none; - position: absolute; - right: 0; - top: -2px; - font-size: $font-size-md; - - &:hover { - color: $text-color-strong; - } -} - -.cta-form__bar { - display: flex; - align-items: center; - align-content: center; - margin-bottom: 20px; -} - -.cta-form__bar-header { - font-size: $font-size-h4; - padding-right: 20px; -}