UNPKG

@patternfly/patternfly

Version:

Assets, source, tooling, and content for PatternFly 4

490 lines (464 loc) • 19 kB
--- id: Clipboard copy section: components cssPrefix: pf-v5-c-clipboard-copy ---## Examples ### Basic ```html <div class="pf-v5-c-clipboard-copy"> <div class="pf-v5-c-clipboard-copy__group"> <span class="pf-v5-c-form-control"> <input type="text" value="This is editable" id="basic-editable-text-input" aria-label="Copyable input" /> </span> <button class="pf-v5-c-button pf-m-control" type="button" aria-label="Copy to clipboard" id="basic-editable-copy-button" aria-labelledby="basic-editable-copy-button basic-editable-text-input" > <i class="fas fa-copy" aria-hidden="true"></i> </button> </div> </div> <br /> <div class="pf-v5-c-clipboard-copy"> <div class="pf-v5-c-clipboard-copy__group"> <span class="pf-v5-c-form-control pf-m-readonly"> <input readonly type="text" value="This is read-only" id="basic-readonly-text-input" aria-label="Copyable input" /> </span> <button class="pf-v5-c-button pf-m-control" type="button" aria-label="Copy to clipboard" id="basic-readonly-copy-button" aria-labelledby="basic-readonly-copy-button basic-readonly-text-input" > <i class="fas fa-copy" aria-hidden="true"></i> </button> </div> </div> ``` ### Expandable ```html <h4>Editable</h4> <div class="pf-v5-c-clipboard-copy"> <div class="pf-v5-c-clipboard-copy__group"> <button class="pf-v5-c-button pf-m-control" type="button" id="expandable-not-expanded-editable-toggle" aria-labelledby="expandable-not-expanded-editable-toggle expandable-not-expanded-editable-text-input" aria-controls="expandable-not-expanded-editable-content" > <div class="pf-v5-c-clipboard-copy__toggle-icon"> <i class="fas fa-angle-right" aria-hidden="true"></i> </div> </button> <span class="pf-v5-c-form-control"> <input type="text" value="This is an editable version of the copy to clipboard component that has an expandable section. Got a lot of text here, need to see all of it? Click that arrow on the left side and check out the resulting expansion." id="expandable-not-expanded-editable-text-input" aria-label="Copyable input" /> </span> <button class="pf-v5-c-button pf-m-control" type="button" aria-label="Copy to clipboard" id="expandable-not-expanded-editable-copy-button" aria-labelledby="expandable-not-expanded-editable-copy-button expandable-not-expanded-editable-text-input" > <i class="fas fa-copy" aria-hidden="true"></i> </button> </div> <div class="pf-v5-c-clipboard-copy__expandable-content" hidden id="expandable-not-expanded-editable-content" >This is an editable version of the copy to clipboard component that has an expandable section. Got a lot of text here, need to see all of it? Click that arrow on the left side and check out the resulting expansion.</div> </div> <br /> <div class="pf-v5-c-clipboard-copy pf-m-expanded"> <div class="pf-v5-c-clipboard-copy__group"> <button class="pf-v5-c-button pf-m-control pf-m-expanded" type="button" id="expandable-expanded-editable-toggle" aria-labelledby="expandable-expanded-editable-toggle expandable-expanded-editable-text-input" aria-controls="expandable-expanded-editable-content" > <div class="pf-v5-c-clipboard-copy__toggle-icon"> <i class="fas fa-angle-right" aria-hidden="true"></i> </div> </button> <span class="pf-v5-c-form-control pf-m-readonly"> <input readonly type="text" value="This is an editable version of the copy to clipboard component that has an expandable section. Got a lot of text here, need to see all of it? Click that arrow on the left side and check out the resulting expansion." id="expandable-expanded-editable-text-input" aria-label="Copyable input" /> </span> <button class="pf-v5-c-button pf-m-control" type="button" aria-label="Copy to clipboard" id="expandable-expanded-editable-copy-button" aria-labelledby="expandable-expanded-editable-copy-button expandable-expanded-editable-text-input" > <i class="fas fa-copy" aria-hidden="true"></i> </button> </div> <div class="pf-v5-c-clipboard-copy__expandable-content" contenteditable="true" id="expandable-expanded-editable-content" >This is an editable version of the copy to clipboard component that has an expandable section. Got a lot of text here, need to see all of it? Click that arrow on the left side and check out the resulting expansion.</div> </div> <br /> <h4>Read-only</h4> <div class="pf-v5-c-clipboard-copy"> <div class="pf-v5-c-clipboard-copy__group"> <button class="pf-v5-c-button pf-m-control" type="button" id="expandable-not-expanded-readonly-toggle" aria-labelledby="expandable-not-expanded-readonly-toggle expandable-not-expanded-readonly-text-input" aria-controls="expandable-not-expanded-readonly-content" > <div class="pf-v5-c-clipboard-copy__toggle-icon"> <i class="fas fa-angle-right" aria-hidden="true"></i> </div> </button> <span class="pf-v5-c-form-control pf-m-readonly"> <input readonly type="text" value="This is an editable version of the copy to clipboard component that has an expandable section. Got a lot of text here, need to see all of it? Click that arrow on the left side and check out the resulting expansion." id="expandable-not-expanded-readonly-text-input" aria-label="Copyable input" /> </span> <button class="pf-v5-c-button pf-m-control" type="button" aria-label="Copy to clipboard" id="expandable-not-expanded-readonly-copy-button" aria-labelledby="expandable-not-expanded-readonly-copy-button expandable-not-expanded-readonly-text-input" > <i class="fas fa-copy" aria-hidden="true"></i> </button> </div> <div class="pf-v5-c-clipboard-copy__expandable-content" hidden id="expandable-not-expanded-readonly-content" >This is an editable version of the copy to clipboard component that has an expandable section. Got a lot of text here, need to see all of it? Click that arrow on the left side and check out the resulting expansion.</div> </div> <br /> <div class="pf-v5-c-clipboard-copy pf-m-expanded"> <div class="pf-v5-c-clipboard-copy__group"> <button class="pf-v5-c-button pf-m-control pf-m-expanded" type="button" id="expandable-expanded-readonly-toggle" aria-labelledby="expandable-expanded-readonly-toggle expandable-expanded-readonly-text-input" aria-controls="expandable-expanded-readonly-content" > <div class="pf-v5-c-clipboard-copy__toggle-icon"> <i class="fas fa-angle-right" aria-hidden="true"></i> </div> </button> <span class="pf-v5-c-form-control pf-m-readonly"> <input readonly type="text" value="This is an editable version of the copy to clipboard component that has an expandable section. Got a lot of text here, need to see all of it? Click that arrow on the left side and check out the resulting expansion." id="expandable-expanded-readonly-text-input" aria-label="Copyable input" /> </span> <button class="pf-v5-c-button pf-m-control" type="button" aria-label="Copy to clipboard" id="expandable-expanded-readonly-copy-button" aria-labelledby="expandable-expanded-readonly-copy-button expandable-expanded-readonly-text-input" > <i class="fas fa-copy" aria-hidden="true"></i> </button> </div> <div class="pf-v5-c-clipboard-copy__expandable-content" id="expandable-expanded-readonly-content" >This is an editable version of the copy to clipboard component that has an expandable section. Got a lot of text here, need to see all of it? Click that arrow on the left side and check out the resulting expansion.</div> </div> <br /> <h4>Code</h4> <div class="pf-v5-c-clipboard-copy"> <div class="pf-v5-c-clipboard-copy__group"> <button class="pf-v5-c-button pf-m-control" type="button" id="expandable-not-expanded-code-toggle" aria-labelledby="expandable-not-expanded-code-toggle expandable-not-expanded-code-text-input" aria-controls="expandable-not-expanded-code-content" > <div class="pf-v5-c-clipboard-copy__toggle-icon"> <i class="fas fa-angle-right" aria-hidden="true"></i> </div> </button> <span class="pf-v5-c-form-control"> <input dir="ltr" type="text" value="{ &quot;menu&quot;: { &quot;id&quot;: &quot;file&quot;, &quot;value&quot;: &quot;File&quot;, &quot;popup&quot;: { &quot;menuitem&quot;: [ {&quot;value&quot;: &quot;New&quot;, &quot;onclick&quot;: &quot;CreateNewDoc()&quot;}, {&quot;value&quot;: &quot;Open&quot;, &quot;onclick&quot;: &quot;OpenDoc()&quot;}, {&quot;value&quot;: &quot;Close&quot;, &quot;onclick&quot;: &quot;CloseDoc()&quot;} ] } }} " id="expandable-not-expanded-code-text-input" aria-label="Copyable input" /> </span> <button class="pf-v5-c-button pf-m-control" type="button" aria-label="Copy to clipboard" id="expandable-not-expanded-code-copy-button" aria-labelledby="expandable-not-expanded-code-copy-button expandable-not-expanded-code-text-input" > <i class="fas fa-copy" aria-hidden="true"></i> </button> </div> <div class="pf-v5-c-clipboard-copy__expandable-content" hidden id="expandable-not-expanded-code-content" > <pre dir="ltr">{ "menu": { "id": "file", "value": "File", "popup": { "menuitem": [ {"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"} ] } }} </pre> </div> </div> <br /> <div class="pf-v5-c-clipboard-copy pf-m-expanded"> <div class="pf-v5-c-clipboard-copy__group"> <button class="pf-v5-c-button pf-m-control pf-m-expanded" type="button" id="expandable-expanded-code-toggle" aria-labelledby="expandable-expanded-code-toggle expandable-expanded-code-text-input" aria-controls="expandable-expanded-code-content" > <div class="pf-v5-c-clipboard-copy__toggle-icon"> <i class="fas fa-angle-right" aria-hidden="true"></i> </div> </button> <span class="pf-v5-c-form-control pf-m-readonly"> <input readonly dir="ltr" type="text" value="{ &quot;menu&quot;: { &quot;id&quot;: &quot;file&quot;, &quot;value&quot;: &quot;File&quot;, &quot;popup&quot;: { &quot;menuitem&quot;: [ {&quot;value&quot;: &quot;New&quot;, &quot;onclick&quot;: &quot;CreateNewDoc()&quot;}, {&quot;value&quot;: &quot;Open&quot;, &quot;onclick&quot;: &quot;OpenDoc()&quot;}, {&quot;value&quot;: &quot;Close&quot;, &quot;onclick&quot;: &quot;CloseDoc()&quot;} ] } }} " id="expandable-expanded-code-text-input" aria-label="Copyable input" /> </span> <button class="pf-v5-c-button pf-m-control" type="button" aria-label="Copy to clipboard" id="expandable-expanded-code-copy-button" aria-labelledby="expandable-expanded-code-copy-button expandable-expanded-code-text-input" > <i class="fas fa-copy" aria-hidden="true"></i> </button> </div> <div class="pf-v5-c-clipboard-copy__expandable-content" contenteditable="true" id="expandable-expanded-code-content" > <pre dir="ltr">{ "menu": { "id": "file", "value": "File", "popup": { "menuitem": [ {"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"} ] } }} </pre> </div> </div> ``` ### Inline compact ```html <div class="pf-v5-c-clipboard-copy pf-m-inline"> <span class="pf-v5-c-clipboard-copy__text">2.3.4-2-redhat</span> <span class="pf-v5-c-clipboard-copy__actions"> <span class="pf-v5-c-clipboard-copy__actions-item"> <button class="pf-v5-c-button pf-m-plain" type="button" aria-label="Copy to clipboard" > <i class="fas fa-copy" aria-hidden="true"></i> </button> </span> </span> </div> ``` ### Inline compact code ```html <div class="pf-v5-c-clipboard-copy pf-m-inline"> <code class="pf-v5-c-clipboard-copy__text pf-m-code">2.3.4-2-redhat</code> <span class="pf-v5-c-clipboard-copy__actions"> <span class="pf-v5-c-clipboard-copy__actions-item"> <button class="pf-v5-c-button pf-m-plain" type="button" aria-label="Copy to clipboard" > <i class="fas fa-copy" aria-hidden="true"></i> </button> </span> </span> </div> ``` ### Inline compact with additional action ```html <div class="pf-v5-c-clipboard-copy pf-m-inline"> <span class="pf-v5-c-clipboard-copy__text">2.3.4-2-redhat</span> <span class="pf-v5-c-clipboard-copy__actions"> <span class="pf-v5-c-clipboard-copy__actions-item"> <button class="pf-v5-c-button pf-m-plain" type="button" aria-label="Copy to clipboard" > <i class="fas fa-copy" aria-hidden="true"></i> </button> </span> <span class="pf-v5-c-clipboard-copy__actions-item"> <button class="pf-v5-c-button pf-m-plain" type="button" aria-label="Run in web terminal" > <i class="fas fa-play" aria-hidden="true"></i> </button> </span> </span> </div> ``` ### Inline compact in sentence ```html <h4> <strong>Basic</strong> </h4>Lorem ipsum&nbsp; <div class="pf-v5-c-clipboard-copy pf-m-inline"> <span class="pf-v5-c-clipboard-copy__text">2.3.4-2-redhat</span> <span class="pf-v5-c-clipboard-copy__actions"> <span class="pf-v5-c-clipboard-copy__actions-item"> <button class="pf-v5-c-button pf-m-plain" type="button" aria-label="Copy to clipboard" > <i class="fas fa-copy" aria-hidden="true"></i> </button> </span> </span> </div> &nbsp;dolor sit amet. <br /> <br /> <h4> <strong>Long copy string</strong> </h4>Lorem ipsum dolor sit amet, consectetur adipiscing elit.&nbsp; <div class="pf-v5-c-clipboard-copy pf-m-inline"> <span class="pf-v5-c-clipboard-copy__text" >https://app.openshift.io/path/sub-path/sub-sub-path/?runtime=quarkus/12345678901234567890/abcdefghijklmnopqrstuvwxyz1234567890</span> <span class="pf-v5-c-clipboard-copy__actions"> <span class="pf-v5-c-clipboard-copy__actions-item"> <button class="pf-v5-c-button pf-m-plain" type="button" aria-label="Copy to clipboard" > <i class="fas fa-copy" aria-hidden="true"></i> </button> </span> </span> </div>&nbsp;Mauris luctus, libero nec dapibus ultricies, urna purus pretium mauris, ullamcorper pharetra lacus nibh vitae enim. <br /> <br /> <h4> <strong>Long copy string in block</strong> </h4>Lorem ipsum dolor sit amet, consectetur adipiscing elit.&nbsp; <div class="pf-v5-c-clipboard-copy pf-m-inline pf-m-block"> <span class="pf-v5-c-clipboard-copy__text" >https://app.openshift.io/path/sub-path/sub-sub-path/?runtime=quarkus/12345678901234567890/abcdefghijklmnopqrstuvwxyz1234567890</span> <span class="pf-v5-c-clipboard-copy__actions"> <span class="pf-v5-c-clipboard-copy__actions-item"> <button class="pf-v5-c-button pf-m-plain" type="button" aria-label="Copy to clipboard" > <i class="fas fa-copy" aria-hidden="true"></i> </button> </span> </span> </div>&nbsp;Mauris luctus, libero nec dapibus ultricies, urna purus pretium mauris, ullamcorper pharetra lacus nibh vitae enim. ``` ## Documentation ### Accessibility | Attribute | Applied to | Outcome | | -- | -- | -- | | `aria-label="Copy to clipboard"`, `aria-label="Show content"` | `.pf-v5-c-button.pf-m-control` | Provides an accessible name for the button when an icon is used instead of text. **Required when an icon is used with no supporting text.** | | `aria-label="[input label text]"` | `.pf-v5-c-form-control` | Provides an accessible label for the input. Provide a label that describes the contents in the input. **Required** | | `aria-hidden="true"` | `<i>` | Hides the icon from assistive technologies. | | `aria-controls="[id of expandable element]"` | `.pf-v5-c-button.pf-m-control` | Identifies the element controlled by the toggle button. **Required** | | `hidden` | `.pf-v5-c-clipboard-copy__expandable-content` | Indicates that the expandable content is hidden so that it isn't visible in the UI and isn't accessed by assistive technologies. | | `aria-labelledby="[id of button] [id of input label]"` | `.pf-v5-c-button.pf-m-control` | Provides an accessible name that is unique and communicates context of the button. Required when more than one ClipboardCopy component exists on the page. **Important:** If the label is defined on the `<input>` using `aria-label`, then use the `id` of the `<input>`. If the label is defined in a `<label>`, then use the `id` of the `<label>`. **Alternatively** this attribute can be ignored if the text input label is defined as part of the value in `aria-label`. | ### Usage | Class | Applied to | Outcome | | -- | -- | -- | | `.pf-v5-c-clipboard-copy` | `<div>` | Initiates a clipboard copy component. **Required** | | `.pf-v5-c-clipboard-copy__group` | `<div>` | Initiates a wrapper for the clipboard copy group. **Required** | | `.pf-v5-c-clipboard-copy__toggle-icon` | `<div>` | Initiates a toggle button icon. | | `.pf-v5-c-clipboard-copy__expandable-content` | `<div>` | Initiates an expandable element. | | `.pf-v5-c-clipboard-copy__text` | `<span>` | Initiates the inline copy clipboard text element. **Required** | | `.pf-v5-c-clipboard-copy__actions` | `<span>` | Initiates the inline copy clipboard actions element. **Required** | | `.pf-v5-c-clipboard-copy__actions-item` | `<span>` | Initiates the inline copy clipboard actions item element. **Required** | | `.pf-m-inline` | `.pf-v5-c-clipboard-copy` | Modifies the clipboard copy component for inline styles. | | `.pf-m-block` | `.pf-v5-c-clipboard-copy.pf-m-inline` | Modifies the inline copy clipboard component to have block formatting. | | `.pf-m-expanded` | `.pf-v5-c-clipboard-copy` | Modifies the clipboard copy component for the expanded state. | | `.pf-m-expanded` | `.pf-v5-c-button.pf-m-control` | Modifies the control toggle button for the expanded state. | | `.pf-m-code` | `code.pf-v5-c-clipboard-copy__text` | Modifies the inline copy clipboard text styles for use with the `<code>` element. |