Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
004831e
[EuiInlineEdit] Add the isReadOnly prop that locks the component in r…
breehall May 16, 2023
8c08bc3
[EuiInlineEdit] Update snapshots to account for new inline_edit_form …
breehall May 16, 2023
0cdc03b
[EuiInlineEdit] Forgot to add snapshot updates
breehall May 16, 2023
8a7b117
[REVERT] Add documentation example to InlineEdit Text to display isRe…
breehall May 16, 2023
da47079
Revert "[REVERT] Add documentation example to InlineEdit Text to disp…
breehall May 16, 2023
e41cd89
[PR Review]
breehall May 16, 2023
f7cad78
[PR Feedback]
breehall May 16, 2023
fd36545
Update and add test cases
breehall May 16, 2023
cf3a1c9
[PR Feedback] - Update conditional aria-describedby span to surround …
breehall May 16, 2023
5dd01b0
Update src-docs/src/views/inline_edit/inline_edit_read_only.tsx
breehall May 17, 2023
c5930d8
Update src/components/inline_edit/inline_edit_form.styles.ts
breehall May 17, 2023
c46e6ed
[PR Feedback] -Add note in inline_edit_form.style.ts that we should r…
breehall May 17, 2023
531be08
[PR Feedback] Move the isReadOnly prop example up in the documentation
breehall May 17, 2023
13a0a02
Snapshots
breehall May 17, 2023
4375522
Update src-docs/src/views/inline_edit/inline_edit_example.js
breehall May 17, 2023
1940f35
[PR Feedback] - Removed conditiona lo logic to force a toggle from re…
breehall May 17, 2023
070d008
Merge branch 'inline-edit/readOnly' of https://github.com/breehall/eu…
breehall May 17, 2023
30c2e11
Oops!
breehall May 17, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 29 additions & 1 deletion src-docs/src/views/inline_edit/inline_edit_example.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,14 @@ const inlineEditModeSaveSnippet = `<EuiInlineEditText
import InlineEditValidation from './inline_edit_validation';
const inlineEditValidationSource = require('!!raw-loader!././inline_edit_validation');

import InlineEditReadOnly from './inline_edit_read_only';
const InlineEditReadOnlySource = require('!!raw-loader!././inline_edit_read_only');
const inlineEditReadOnlySnippet = `<EuiInlineEditText
inputAriaLabel="Edit text inline"
defaultValue="This is read only text!"
isReadOnly={isReadOnly}
/>`;

export const InlineEditExample = {
title: 'Inline edit',
intro: (
Expand Down Expand Up @@ -176,6 +184,26 @@ export const InlineEditExample = {
],
demo: <InlineEditValidation />,
},
{
title: 'Read only',
text: (
<>
<p>
Use the <EuiCode>isReadOnly</EuiCode> prop to lock{' '}
<EuiCode>EuiInlineEdit</EuiCode> in read mode and display the text
value. This does not affect the input form control in edit mode.
</p>
</>
),
source: [
{
type: GuideSectionTypes.TSX,
code: InlineEditReadOnlySource,
},
],
demo: <InlineEditReadOnly />,
snippet: inlineEditReadOnlySnippet,
},
{
title: 'Customizing read and edit modes',
text: (
Expand Down Expand Up @@ -203,7 +231,7 @@ export const InlineEditExample = {
properties
</li>
<li>
<EuiCode>editMode.inputRowProps</EuiCode> accepts any{' '}
<EuiCode>editMode.inputProps</EuiCode> accepts any{' '}
<Link to="/forms/form-controls#text-field">
<strong>EuiFieldText</strong>
</Link>{' '}
Expand Down
39 changes: 39 additions & 0 deletions src-docs/src/views/inline_edit/inline_edit_read_only.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import React, { useState } from 'react';

import {
EuiInlineEditText,
EuiInlineEditTitle,
EuiSpacer,
EuiSwitch,
} from '../../../../src';

export default () => {
const [isReadOnly, setIsReadOnly] = useState(true);

return (
<>
<EuiSwitch
label="Toggle read only"
checked={isReadOnly}
onChange={(e) => setIsReadOnly(e.target.checked)}
/>

<EuiSpacer />

<EuiInlineEditText
inputAriaLabel="Edit text inline"
defaultValue="This is read only text!"
isReadOnly={isReadOnly}
/>

<EuiSpacer />

<EuiInlineEditTitle
inputAriaLabel="Edit title inline"
defaultValue="This is a read only title!"
heading="h3"
isReadOnly={isReadOnly}
/>
</>
);
};
Original file line number Diff line number Diff line change
Expand Up @@ -643,13 +643,43 @@ exports[`EuiInlineEditForm Edit Mode renders 1`] = `
</div>
`;

exports[`EuiInlineEditForm Read Mode isReadOnly 1`] = `
<div
class="euiInlineEdit testClass1 testClass2"
>
<button
aria-describedby="inlineEdit_generated-id"
class="euiButtonEmpty euiButtonEmpty--flushBoth css-19hs4ci-empty-disabled-euiInlineEditButton-isReadOnly"
data-test-subj="euiInlineReadModeButton"
disabled=""
type="button"
>
<span
class="euiButtonContent euiButtonContent--iconRight euiButtonEmpty__content"
>
<span
class="euiButtonEmpty__text"
>
Hello World!
</span>
</span>
</button>
<span
hidden=""
id="inlineEdit_generated-id"
>
Click this button to edit this text inline.
</span>
</div>
`;

exports[`EuiInlineEditForm Read Mode readModeProps 1`] = `
<div
class="euiInlineEdit testClass1 testClass2"
>
<button
aria-describedby="inlineEdit_generated-id"
class="euiButtonEmpty euiButtonEmpty--flushBoth css-9t7nyf-empty-primary"
class="euiButtonEmpty euiButtonEmpty--flushBoth css-ioyorl-empty-primary-euiInlineEditButton"
data-test-subj="euiInlineReadModeButton"
type="button"
>
Expand Down Expand Up @@ -683,7 +713,7 @@ exports[`EuiInlineEditForm Read Mode renders 1`] = `
>
<button
aria-describedby="inlineEdit_generated-id"
class="euiButtonEmpty euiButtonEmpty--flushBoth css-wvaqcf-empty-text"
class="euiButtonEmpty euiButtonEmpty--flushBoth css-gj4z04-empty-text-euiInlineEditButton"
data-test-subj="euiInlineReadModeButton"
type="button"
>
Expand Down Expand Up @@ -717,7 +747,7 @@ exports[`EuiInlineEditForm Read Mode sizes 1`] = `
>
<button
aria-describedby="inlineEdit_generated-id"
class="euiButtonEmpty euiButtonEmpty--small euiButtonEmpty--flushBoth css-wvaqcf-empty-text"
class="euiButtonEmpty euiButtonEmpty--small euiButtonEmpty--flushBoth css-gj4z04-empty-text-euiInlineEditButton"
data-test-subj="euiInlineReadModeButton"
type="button"
>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,47 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`EuiInlineEditText isReadOnly 1`] = `
<div
class="euiInlineEdit euiInlineEditText testClass1 testClass2 emotion-euiInlineEditText-m-m"
>
<button
aria-describedby="inlineEdit_generated-id"
class="euiButtonEmpty euiButtonEmpty--flushBoth css-19hs4ci-empty-disabled-euiInlineEditButton-isReadOnly"
data-test-subj="euiInlineReadModeButton"
disabled=""
role="paragraph"
type="button"
>
<span
class="euiButtonContent euiButtonContent--iconRight euiButtonEmpty__content"
>
<span
class="euiButtonEmpty__text"
>
<div
class="euiText eui-textTruncate emotion-euiText-m"
>
Hello World!
</div>
</span>
</span>
</button>
<span
hidden=""
id="inlineEdit_generated-id"
>
Click this button to edit this text inline.
</span>
</div>
`;

exports[`EuiInlineEditText renders 1`] = `
<div
class="euiInlineEdit euiInlineEditText testClass1 testClass2 emotion-euiInlineEditText-m-m"
>
<button
aria-describedby="inlineEdit_generated-id"
class="euiButtonEmpty euiButtonEmpty--flushBoth css-wvaqcf-empty-text"
class="euiButtonEmpty euiButtonEmpty--flushBoth css-gj4z04-empty-text-euiInlineEditButton"
data-test-subj="euiInlineReadModeButton"
type="button"
>
Expand Down Expand Up @@ -44,7 +79,7 @@ exports[`EuiInlineEditText text sizes renders m 1`] = `
>
<button
aria-describedby="inlineEdit_generated-id"
class="euiButtonEmpty euiButtonEmpty--flushBoth css-wvaqcf-empty-text"
class="euiButtonEmpty euiButtonEmpty--flushBoth css-gj4z04-empty-text-euiInlineEditButton"
data-test-subj="euiInlineReadModeButton"
type="button"
>
Expand Down Expand Up @@ -82,7 +117,7 @@ exports[`EuiInlineEditText text sizes renders s 1`] = `
>
<button
aria-describedby="inlineEdit_generated-id"
class="euiButtonEmpty euiButtonEmpty--small euiButtonEmpty--flushBoth css-wvaqcf-empty-text"
class="euiButtonEmpty euiButtonEmpty--small euiButtonEmpty--flushBoth css-gj4z04-empty-text-euiInlineEditButton"
data-test-subj="euiInlineReadModeButton"
type="button"
>
Expand Down Expand Up @@ -120,7 +155,7 @@ exports[`EuiInlineEditText text sizes renders xs 1`] = `
>
<button
aria-describedby="inlineEdit_generated-id"
class="euiButtonEmpty euiButtonEmpty--small euiButtonEmpty--flushBoth css-wvaqcf-empty-text"
class="euiButtonEmpty euiButtonEmpty--small euiButtonEmpty--flushBoth css-gj4z04-empty-text-euiInlineEditButton"
data-test-subj="euiInlineReadModeButton"
type="button"
>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,48 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`EuiInlineEditTitle isReadOnly 1`] = `
<div
class="euiInlineEdit euiInlineEditTitle testClass1 testClass2 emotion-euiInlineEditTitle-m-m"
>
<button
aria-describedby="inlineEdit_generated-id"
aria-level="1"
class="euiButtonEmpty euiButtonEmpty--flushBoth css-19hs4ci-empty-disabled-euiInlineEditButton-isReadOnly"
data-test-subj="euiInlineReadModeButton"
disabled=""
role="heading"
type="button"
>
<span
class="euiButtonContent euiButtonContent--iconRight euiButtonEmpty__content"
>
<span
class="euiButtonEmpty__text"
>
<h1
class="euiTitle eui-textTruncate emotion-euiTitle-m"
>
Hello World!
</h1>
</span>
</span>
</button>
<span
hidden=""
id="inlineEdit_generated-id"
>
Click this button to edit this text inline.
</span>
</div>
`;

exports[`EuiInlineEditTitle renders 1`] = `
<div
class="euiInlineEdit euiInlineEditTitle testClass1 testClass2 emotion-euiInlineEditTitle-m-m"
>
<button
aria-describedby="inlineEdit_generated-id"
class="euiButtonEmpty euiButtonEmpty--flushBoth css-wvaqcf-empty-text"
class="euiButtonEmpty euiButtonEmpty--flushBoth css-gj4z04-empty-text-euiInlineEditButton"
data-test-subj="euiInlineReadModeButton"
type="button"
>
Expand Down Expand Up @@ -44,7 +80,7 @@ exports[`EuiInlineEditTitle title sizes renders size l 1`] = `
>
<button
aria-describedby="inlineEdit_generated-id"
class="euiButtonEmpty euiButtonEmpty--flushBoth css-wvaqcf-empty-text"
class="euiButtonEmpty euiButtonEmpty--flushBoth css-gj4z04-empty-text-euiInlineEditButton"
data-test-subj="euiInlineReadModeButton"
type="button"
>
Expand Down Expand Up @@ -82,7 +118,7 @@ exports[`EuiInlineEditTitle title sizes renders size m 1`] = `
>
<button
aria-describedby="inlineEdit_generated-id"
class="euiButtonEmpty euiButtonEmpty--flushBoth css-wvaqcf-empty-text"
class="euiButtonEmpty euiButtonEmpty--flushBoth css-gj4z04-empty-text-euiInlineEditButton"
data-test-subj="euiInlineReadModeButton"
type="button"
>
Expand Down Expand Up @@ -120,7 +156,7 @@ exports[`EuiInlineEditTitle title sizes renders size s 1`] = `
>
<button
aria-describedby="inlineEdit_generated-id"
class="euiButtonEmpty euiButtonEmpty--small euiButtonEmpty--flushBoth css-wvaqcf-empty-text"
class="euiButtonEmpty euiButtonEmpty--small euiButtonEmpty--flushBoth css-gj4z04-empty-text-euiInlineEditButton"
data-test-subj="euiInlineReadModeButton"
type="button"
>
Expand Down Expand Up @@ -158,7 +194,7 @@ exports[`EuiInlineEditTitle title sizes renders size xs 1`] = `
>
<button
aria-describedby="inlineEdit_generated-id"
class="euiButtonEmpty euiButtonEmpty--small euiButtonEmpty--flushBoth css-wvaqcf-empty-text"
class="euiButtonEmpty euiButtonEmpty--small euiButtonEmpty--flushBoth css-gj4z04-empty-text-euiInlineEditButton"
data-test-subj="euiInlineReadModeButton"
type="button"
>
Expand Down Expand Up @@ -196,7 +232,7 @@ exports[`EuiInlineEditTitle title sizes renders size xxs 1`] = `
>
<button
aria-describedby="inlineEdit_generated-id"
class="euiButtonEmpty euiButtonEmpty--small euiButtonEmpty--flushBoth css-wvaqcf-empty-text"
class="euiButtonEmpty euiButtonEmpty--small euiButtonEmpty--flushBoth css-gj4z04-empty-text-euiInlineEditButton"
data-test-subj="euiInlineReadModeButton"
type="button"
>
Expand Down Expand Up @@ -234,7 +270,7 @@ exports[`EuiInlineEditTitle title sizes renders size xxxs 1`] = `
>
<button
aria-describedby="inlineEdit_generated-id"
class="euiButtonEmpty euiButtonEmpty--small euiButtonEmpty--flushBoth css-wvaqcf-empty-text"
class="euiButtonEmpty euiButtonEmpty--small euiButtonEmpty--flushBoth css-gj4z04-empty-text-euiInlineEditButton"
data-test-subj="euiInlineReadModeButton"
type="button"
>
Expand Down
26 changes: 26 additions & 0 deletions src/components/inline_edit/inline_edit_form.styles.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/

import { css } from '@emotion/react';
import { UseEuiTheme } from '../../services';

export const euiInlineEditFormStyles = ({ euiTheme }: UseEuiTheme) => {
return {
euiInlineEditButton: css``,

// Override the cursor and allow users to highlight text when read mode is in the read only state
// Once EuiEmptyButton has been converted to Emotion, remove this extra selector
isReadOnly: css`
&.euiButtonEmpty:disabled {
cursor: text;
color: ${euiTheme.colors.text};
user-select: text;
}
`,
};
};
14 changes: 14 additions & 0 deletions src/components/inline_edit/inline_edit_form.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,20 @@ describe('EuiInlineEditForm', () => {
expect(container.firstChild).toMatchSnapshot();
});

test('isReadOnly', () => {
const { container, getByTestSubject } = render(
<EuiInlineEditForm
isReadOnly={true}
startWithEditOpen={true}
{...commonInlineEditFormProps}
/>
);

expect(container.firstChild).toMatchSnapshot();

expect(getByTestSubject('euiInlineReadModeButton')).toBeDisabled();
});

test('readModeProps', () => {
const { container, getByTestSubject } = render(
<EuiInlineEditForm
Expand Down
Loading