From 992151fb8f90a27324cb7d3181de83e78bfa0e79 Mon Sep 17 00:00:00 2001 From: Zachary Wasserman Date: Sun, 10 Mar 2019 13:51:25 -0700 Subject: [PATCH] Clarify labels UI (#2012) - Clarify language - Add note about label queries being immutable Closes #1384 --- frontend/components/KolideAce/KolideAce.jsx | 14 +++++++++++++- frontend/components/KolideAce/_styles.scss | 15 +++++++++++++++ frontend/components/forms/LabelForm/LabelForm.jsx | 11 ++++++++--- .../ManageHostsPage/ManageHostsPage.tests.jsx | 4 ++-- 4 files changed, 38 insertions(+), 6 deletions(-) diff --git a/frontend/components/KolideAce/KolideAce.jsx b/frontend/components/KolideAce/KolideAce.jsx index 23f74686d0..0f093a4822 100644 --- a/frontend/components/KolideAce/KolideAce.jsx +++ b/frontend/components/KolideAce/KolideAce.jsx @@ -25,6 +25,7 @@ class KolideAce extends Component { showGutter: PropTypes.bool, wrapEnabled: PropTypes.bool, wrapperClassName: PropTypes.string, + hint: PropTypes.string, }; static defaultProps = { @@ -46,6 +47,16 @@ class KolideAce extends Component { ); } + renderHint = () => { + const { hint } = this.props; + + if (hint) { + return {hint}; + } + + return false; + } + render () { const { error, @@ -60,7 +71,7 @@ class KolideAce extends Component { wrapEnabled, wrapperClassName, } = this.props; - const { renderLabel } = this; + const { renderLabel, renderHint } = this; const wrapperClass = classnames(wrapperClassName, { [`${baseClass}__wrapper--error`]: error, @@ -94,6 +105,7 @@ class KolideAce extends Component { exec: handleSubmit, }]} /> + {renderHint()} ); } diff --git a/frontend/components/KolideAce/_styles.scss b/frontend/components/KolideAce/_styles.scss index 33bbd2c5c5..d5b2baec36 100644 --- a/frontend/components/KolideAce/_styles.scss +++ b/frontend/components/KolideAce/_styles.scss @@ -22,4 +22,19 @@ } } } + + &__hint { + font-size: 14px; + font-weight: $normal; + line-height: 1.57; + letter-spacing: 1px; + color: $accent-text; + + code { + color: $brand; + background-color: $accent-light; + padding: 2px; + font-family: 'SourceCodePro', $monospace; + } + } } diff --git a/frontend/components/forms/LabelForm/LabelForm.jsx b/frontend/components/forms/LabelForm/LabelForm.jsx index a38dc1e305..647a34991c 100644 --- a/frontend/components/forms/LabelForm/LabelForm.jsx +++ b/frontend/components/forms/LabelForm/LabelForm.jsx @@ -1,5 +1,6 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; +import { noop } from 'lodash'; import Button from 'components/buttons/Button'; import Dropdown from 'components/forms/fields/Dropdown'; @@ -51,23 +52,28 @@ class LabelForm extends Component { render () { const { baseError, fields, handleSubmit, isEdit, onCancel } = this.props; const { onLoad } = this; - const headerText = isEdit ? 'Edit Label' : 'New Label Query'; + const headerText = isEdit ? 'Edit Label' : 'New Label'; const saveBtnText = isEdit ? 'Update Label' : 'Save Label'; + const aceHintText = isEdit ? 'Label queries are immutable. To change the query, delete this label and create a new one.' : ''; return (

{headerText}

{aceHintText}} + handleSubmit={noop} /> + {baseError &&
{baseError}
} { expect(page.find('LabelForm').length).toEqual(1); }); - it('displays "New Label Query" as the query form header', () => { + it('displays "New Label" as the query form header', () => { const page = mount(component); - expect(page.find('LabelForm').text()).toInclude('New Label Query'); + expect(page.find('LabelForm').text()).toInclude('New Label'); }); });