@patternfly/elements 4.1.0 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +14909 -12588
- package/package.json +26 -17
- package/pf-accordion/pf-accordion-header.css +37 -0
- package/pf-accordion/pf-accordion-header.d.ts +0 -61
- package/pf-accordion/pf-accordion-header.js +180 -2
- package/pf-accordion/pf-accordion-header.js.map +1 -1
- package/pf-accordion/pf-accordion-panel.css +12 -0
- package/pf-accordion/pf-accordion-panel.d.ts +0 -34
- package/pf-accordion/pf-accordion-panel.js +87 -2
- package/pf-accordion/pf-accordion-panel.js.map +1 -1
- package/pf-accordion/pf-accordion.css +62 -0
- package/pf-accordion/pf-accordion.d.ts +1 -64
- package/pf-accordion/pf-accordion.js +156 -2
- package/pf-accordion/pf-accordion.js.map +1 -1
- package/pf-alert/pf-alert.css +193 -0
- package/pf-alert/pf-alert.d.ts +95 -0
- package/pf-alert/pf-alert.js +406 -0
- package/pf-alert/pf-alert.js.map +1 -0
- package/pf-alert/test/pf-alert.e2e.d.ts +1 -0
- package/pf-alert/test/pf-alert.e2e.js +45 -0
- package/pf-alert/test/pf-alert.e2e.js.map +1 -0
- package/pf-alert/test/pf-alert.spec.d.ts +1 -0
- package/pf-alert/test/pf-alert.spec.js +42 -0
- package/pf-alert/test/pf-alert.spec.js.map +1 -0
- package/pf-avatar/pf-avatar.css +14 -0
- package/pf-avatar/pf-avatar.d.ts +1 -14
- package/pf-avatar/pf-avatar.js +82 -2
- package/pf-avatar/pf-avatar.js.map +1 -1
- package/pf-back-to-top/pf-back-to-top.css +12 -0
- package/pf-back-to-top/pf-back-to-top.d.ts +1 -17
- package/pf-back-to-top/pf-back-to-top.js +87 -3
- package/pf-back-to-top/pf-back-to-top.js.map +1 -1
- package/pf-back-to-top/test/pf-back-to-top.spec.js +3 -2
- package/pf-back-to-top/test/pf-back-to-top.spec.js.map +1 -1
- package/pf-background-image/pf-background-image.css +7 -0
- package/pf-background-image/pf-background-image.d.ts +1 -8
- package/pf-background-image/pf-background-image.js +76 -2
- package/pf-background-image/pf-background-image.js.map +1 -1
- package/pf-badge/pf-badge.css +13 -0
- package/pf-badge/pf-badge.d.ts +1 -13
- package/pf-badge/pf-badge.js +53 -2
- package/pf-badge/pf-badge.js.map +1 -1
- package/pf-banner/pf-banner.css +21 -0
- package/pf-banner/pf-banner.d.ts +1 -19
- package/pf-banner/pf-banner.js +122 -2
- package/pf-banner/pf-banner.js.map +1 -1
- package/pf-button/pf-button-tokens.css +38 -0
- package/pf-button/pf-button.d.ts +1 -106
- package/pf-button/pf-button.js +837 -4
- package/pf-button/pf-button.js.map +1 -1
- package/pf-card/pf-card.css +24 -0
- package/pf-card/pf-card.d.ts +1 -38
- package/pf-card/pf-card.js +248 -2
- package/pf-card/pf-card.js.map +1 -1
- package/pf-chip/pf-chip-group.css +15 -0
- package/pf-chip/pf-chip-group.d.ts +0 -15
- package/pf-chip/pf-chip-group.js +111 -2
- package/pf-chip/pf-chip-group.js.map +1 -1
- package/pf-chip/pf-chip.css +30 -1
- package/pf-chip/pf-chip.d.ts +1 -20
- package/pf-chip/pf-chip.js +135 -2
- package/pf-chip/pf-chip.js.map +1 -1
- package/pf-clipboard-copy/pf-clipboard-copy.css +25 -0
- package/pf-clipboard-copy/pf-clipboard-copy.d.ts +1 -27
- package/pf-clipboard-copy/pf-clipboard-copy.js +318 -3
- package/pf-clipboard-copy/pf-clipboard-copy.js.map +1 -1
- package/pf-code-block/pf-code-block.css +11 -1
- package/pf-code-block/pf-code-block.js +70 -18
- package/pf-code-block/pf-code-block.js.map +1 -1
- package/pf-dropdown/pf-dropdown-group.js +40 -2
- package/pf-dropdown/pf-dropdown-group.js.map +1 -1
- package/pf-dropdown/pf-dropdown-item.css +10 -0
- package/pf-dropdown/pf-dropdown-item.d.ts +0 -27
- package/pf-dropdown/pf-dropdown-item.js +155 -2
- package/pf-dropdown/pf-dropdown-item.js.map +1 -1
- package/pf-dropdown/pf-dropdown-menu.js +39 -2
- package/pf-dropdown/pf-dropdown-menu.js.map +1 -1
- package/pf-dropdown/pf-dropdown.css +13 -1
- package/pf-dropdown/pf-dropdown.d.ts +1 -9
- package/pf-dropdown/pf-dropdown.js +357 -2
- package/pf-dropdown/pf-dropdown.js.map +1 -1
- package/pf-helper-text/pf-helper-text.css +35 -0
- package/pf-helper-text/pf-helper-text.d.ts +41 -0
- package/pf-helper-text/pf-helper-text.js +107 -0
- package/pf-helper-text/pf-helper-text.js.map +1 -0
- package/pf-helper-text/test/pf-helper-text.e2e.d.ts +1 -0
- package/pf-helper-text/test/pf-helper-text.e2e.js +23 -0
- package/pf-helper-text/test/pf-helper-text.e2e.js.map +1 -0
- package/pf-helper-text/test/pf-helper-text.spec.d.ts +1 -0
- package/pf-helper-text/test/pf-helper-text.spec.js +57 -0
- package/pf-helper-text/test/pf-helper-text.spec.js.map +1 -0
- package/pf-hint/pf-hint.css +120 -0
- package/pf-hint/pf-hint.d.ts +19 -0
- package/pf-hint/pf-hint.js +180 -0
- package/pf-hint/pf-hint.js.map +1 -0
- package/pf-hint/test/pf-hint.e2e.d.ts +1 -0
- package/pf-hint/test/pf-hint.e2e.js +23 -0
- package/pf-hint/test/pf-hint.e2e.js.map +1 -0
- package/pf-hint/test/pf-hint.spec.d.ts +1 -0
- package/pf-hint/test/pf-hint.spec.js +87 -0
- package/pf-hint/test/pf-hint.spec.js.map +1 -0
- package/pf-icon/pf-icon.css +1 -0
- package/pf-icon/pf-icon.d.ts +1 -3
- package/pf-icon/pf-icon.js +44 -4
- package/pf-icon/pf-icon.js.map +1 -1
- package/pf-jump-links/pf-jump-links-item.css +7 -1
- package/pf-jump-links/pf-jump-links-item.d.ts +0 -8
- package/pf-jump-links/pf-jump-links-item.js +77 -2
- package/pf-jump-links/pf-jump-links-item.js.map +1 -1
- package/pf-jump-links/pf-jump-links-list.css +3 -0
- package/pf-jump-links/pf-jump-links-list.d.ts +0 -5
- package/pf-jump-links/pf-jump-links-list.js +20 -2
- package/pf-jump-links/pf-jump-links-list.js.map +1 -1
- package/pf-jump-links/pf-jump-links.css +36 -0
- package/pf-jump-links/pf-jump-links.d.ts +1 -38
- package/pf-jump-links/pf-jump-links.js +179 -2
- package/pf-jump-links/pf-jump-links.js.map +1 -1
- package/pf-label/pf-label.css +51 -1
- package/pf-label/pf-label.d.ts +1 -58
- package/pf-label/pf-label.js +257 -2
- package/pf-label/pf-label.js.map +1 -1
- package/pf-modal/pf-modal.css +11 -0
- package/pf-modal/pf-modal.d.ts +2 -25
- package/pf-modal/pf-modal.js +215 -2
- package/pf-modal/pf-modal.js.map +1 -1
- package/pf-panel/pf-panel.css +29 -0
- package/pf-panel/pf-panel.d.ts +1 -32
- package/pf-panel/pf-panel.js +204 -2
- package/pf-panel/pf-panel.js.map +1 -1
- package/pf-popover/pf-popover.css +33 -0
- package/pf-popover/pf-popover.d.ts +1 -108
- package/pf-popover/pf-popover.js +251 -3
- package/pf-popover/pf-popover.js.map +1 -1
- package/pf-progress/pf-progress.css +19 -0
- package/pf-progress/pf-progress.d.ts +1 -57
- package/pf-progress/pf-progress.js +231 -2
- package/pf-progress/pf-progress.js.map +1 -1
- package/pf-progress-stepper/pf-progress-step.js +126 -2
- package/pf-progress-stepper/pf-progress-step.js.map +1 -1
- package/pf-progress-stepper/pf-progress-stepper.css +96 -0
- package/pf-progress-stepper/pf-progress-stepper.d.ts +1 -115
- package/pf-progress-stepper/pf-progress-stepper.js +326 -2
- package/pf-progress-stepper/pf-progress-stepper.js.map +1 -1
- package/pf-search-input/pf-search-input.css +308 -0
- package/pf-search-input/pf-search-input.d.ts +75 -0
- package/pf-search-input/pf-search-input.js +630 -0
- package/pf-search-input/pf-search-input.js.map +1 -0
- package/pf-search-input/test/pf-search-input.e2e.d.ts +1 -0
- package/pf-search-input/test/pf-search-input.e2e.js +23 -0
- package/pf-search-input/test/pf-search-input.e2e.js.map +1 -0
- package/pf-search-input/test/pf-search-input.spec.d.ts +1 -0
- package/pf-search-input/test/pf-search-input.spec.js +1021 -0
- package/pf-search-input/test/pf-search-input.spec.js.map +1 -0
- package/pf-select/pf-option-group.js +27 -2
- package/pf-select/pf-option-group.js.map +1 -1
- package/pf-select/pf-option.css +9 -1
- package/pf-select/pf-option.js +83 -2
- package/pf-select/pf-option.js.map +1 -1
- package/pf-select/pf-select.css +157 -0
- package/pf-select/pf-select.d.ts +1 -158
- package/pf-select/pf-select.js +542 -5
- package/pf-select/pf-select.js.map +1 -1
- package/pf-spinner/pf-spinner.css +13 -0
- package/pf-spinner/pf-spinner.d.ts +1 -14
- package/pf-spinner/pf-spinner.js +101 -2
- package/pf-spinner/pf-spinner.js.map +1 -1
- package/pf-switch/pf-switch.css +22 -0
- package/pf-switch/pf-switch.d.ts +1 -30
- package/pf-switch/pf-switch.js +156 -2
- package/pf-switch/pf-switch.js.map +1 -1
- package/pf-table/pf-caption.js +10 -2
- package/pf-table/pf-caption.js.map +1 -1
- package/pf-table/pf-table.css +211 -0
- package/pf-table/pf-table.d.ts +1 -635
- package/pf-table/pf-table.js +437 -2
- package/pf-table/pf-table.js.map +1 -1
- package/pf-table/pf-tbody.js +18 -2
- package/pf-table/pf-tbody.js.map +1 -1
- package/pf-table/pf-td.js +107 -2
- package/pf-table/pf-td.js.map +1 -1
- package/pf-table/pf-th.js +95 -2
- package/pf-table/pf-th.js.map +1 -1
- package/pf-table/pf-thead.js +20 -2
- package/pf-table/pf-thead.js.map +1 -1
- package/pf-table/pf-tr.js +89 -2
- package/pf-table/pf-tr.js.map +1 -1
- package/pf-tabs/pf-tab-panel.css +1 -0
- package/pf-tabs/pf-tab-panel.d.ts +0 -2
- package/pf-tabs/pf-tab-panel.js +19 -3
- package/pf-tabs/pf-tab-panel.js.map +1 -1
- package/pf-tabs/pf-tab.css +33 -0
- package/pf-tabs/pf-tab.d.ts +0 -40
- package/pf-tabs/pf-tab.js +231 -2
- package/pf-tabs/pf-tab.js.map +1 -1
- package/pf-tabs/pf-tabs.css +26 -0
- package/pf-tabs/pf-tabs.d.ts +1 -34
- package/pf-tabs/pf-tabs.js +307 -2
- package/pf-tabs/pf-tabs.js.map +1 -1
- package/pf-text-area/pf-text-area.css +125 -0
- package/pf-text-area/pf-text-area.d.ts +1 -125
- package/pf-text-area/pf-text-area.js +320 -2
- package/pf-text-area/pf-text-area.js.map +1 -1
- package/pf-text-input/pf-text-input.css +126 -0
- package/pf-text-input/pf-text-input.d.ts +1 -126
- package/pf-text-input/pf-text-input.js +395 -2
- package/pf-text-input/pf-text-input.js.map +1 -1
- package/pf-tile/pf-tile.css +28 -8
- package/pf-tile/pf-tile.d.ts +1 -24
- package/pf-tile/pf-tile.js +156 -2
- package/pf-tile/pf-tile.js.map +1 -1
- package/pf-timestamp/pf-timestamp.d.ts +1 -0
- package/pf-timestamp/pf-timestamp.js +10 -2
- package/pf-timestamp/pf-timestamp.js.map +1 -1
- package/pf-tooltip/pf-tooltip.css +10 -0
- package/pf-tooltip/pf-tooltip.d.ts +1 -79
- package/pf-tooltip/pf-tooltip.js +113 -3
- package/pf-tooltip/pf-tooltip.js.map +1 -1
- package/pfe.min.js +0 -7439
- package/pfe.min.js.LEGAL.txt +0 -57
- package/pfe.min.js.map +0 -7
- package/react/pf-accordion/pf-accordion-header.d.ts +0 -5
- package/react/pf-accordion/pf-accordion-header.js +0 -12
- package/react/pf-accordion/pf-accordion-panel.d.ts +0 -5
- package/react/pf-accordion/pf-accordion-panel.js +0 -10
- package/react/pf-accordion/pf-accordion.d.ts +0 -5
- package/react/pf-accordion/pf-accordion.js +0 -13
- package/react/pf-avatar/pf-avatar.d.ts +0 -5
- package/react/pf-avatar/pf-avatar.js +0 -12
- package/react/pf-back-to-top/pf-back-to-top.d.ts +0 -5
- package/react/pf-back-to-top/pf-back-to-top.js +0 -10
- package/react/pf-background-image/pf-background-image.d.ts +0 -5
- package/react/pf-background-image/pf-background-image.js +0 -10
- package/react/pf-badge/pf-badge.d.ts +0 -5
- package/react/pf-badge/pf-badge.js +0 -10
- package/react/pf-banner/pf-banner.d.ts +0 -5
- package/react/pf-banner/pf-banner.js +0 -10
- package/react/pf-button/pf-button.d.ts +0 -5
- package/react/pf-button/pf-button.js +0 -12
- package/react/pf-card/pf-card.d.ts +0 -5
- package/react/pf-card/pf-card.js +0 -10
- package/react/pf-chip/pf-chip-group.d.ts +0 -5
- package/react/pf-chip/pf-chip-group.js +0 -13
- package/react/pf-chip/pf-chip.d.ts +0 -5
- package/react/pf-chip/pf-chip.js +0 -13
- package/react/pf-clipboard-copy/pf-clipboard-copy.d.ts +0 -5
- package/react/pf-clipboard-copy/pf-clipboard-copy.js +0 -12
- package/react/pf-code-block/pf-code-block.d.ts +0 -5
- package/react/pf-code-block/pf-code-block.js +0 -10
- package/react/pf-dropdown/pf-dropdown-group.d.ts +0 -5
- package/react/pf-dropdown/pf-dropdown-group.js +0 -10
- package/react/pf-dropdown/pf-dropdown-item.d.ts +0 -5
- package/react/pf-dropdown/pf-dropdown-item.js +0 -10
- package/react/pf-dropdown/pf-dropdown-menu.d.ts +0 -5
- package/react/pf-dropdown/pf-dropdown-menu.js +0 -10
- package/react/pf-dropdown/pf-dropdown.d.ts +0 -5
- package/react/pf-dropdown/pf-dropdown.js +0 -14
- package/react/pf-icon/pf-icon.d.ts +0 -5
- package/react/pf-icon/pf-icon.js +0 -13
- package/react/pf-jump-links/pf-jump-links-item.d.ts +0 -5
- package/react/pf-jump-links/pf-jump-links-item.js +0 -13
- package/react/pf-jump-links/pf-jump-links-list.d.ts +0 -5
- package/react/pf-jump-links/pf-jump-links-list.js +0 -10
- package/react/pf-jump-links/pf-jump-links.d.ts +0 -5
- package/react/pf-jump-links/pf-jump-links.js +0 -12
- package/react/pf-label/pf-label.d.ts +0 -5
- package/react/pf-label/pf-label.js +0 -12
- package/react/pf-modal/pf-modal.d.ts +0 -5
- package/react/pf-modal/pf-modal.js +0 -13
- package/react/pf-panel/pf-panel.d.ts +0 -5
- package/react/pf-panel/pf-panel.js +0 -10
- package/react/pf-popover/pf-popover.d.ts +0 -5
- package/react/pf-popover/pf-popover.js +0 -10
- package/react/pf-progress/pf-progress.d.ts +0 -5
- package/react/pf-progress/pf-progress.js +0 -10
- package/react/pf-progress-stepper/pf-progress-step.d.ts +0 -5
- package/react/pf-progress-stepper/pf-progress-step.js +0 -10
- package/react/pf-progress-stepper/pf-progress-stepper.d.ts +0 -5
- package/react/pf-progress-stepper/pf-progress-stepper.js +0 -10
- package/react/pf-select/pf-option-group.d.ts +0 -5
- package/react/pf-select/pf-option-group.js +0 -10
- package/react/pf-select/pf-option.d.ts +0 -5
- package/react/pf-select/pf-option.js +0 -10
- package/react/pf-select/pf-select.d.ts +0 -5
- package/react/pf-select/pf-select.js +0 -13
- package/react/pf-spinner/pf-spinner.d.ts +0 -5
- package/react/pf-spinner/pf-spinner.js +0 -10
- package/react/pf-switch/pf-switch.d.ts +0 -5
- package/react/pf-switch/pf-switch.js +0 -12
- package/react/pf-table/pf-caption.d.ts +0 -5
- package/react/pf-table/pf-caption.js +0 -10
- package/react/pf-table/pf-table.d.ts +0 -5
- package/react/pf-table/pf-table.js +0 -10
- package/react/pf-table/pf-tbody.d.ts +0 -5
- package/react/pf-table/pf-tbody.js +0 -10
- package/react/pf-table/pf-td.d.ts +0 -5
- package/react/pf-table/pf-td.js +0 -10
- package/react/pf-table/pf-th.d.ts +0 -5
- package/react/pf-table/pf-th.js +0 -10
- package/react/pf-table/pf-thead.d.ts +0 -5
- package/react/pf-table/pf-thead.js +0 -10
- package/react/pf-table/pf-tr.d.ts +0 -5
- package/react/pf-table/pf-tr.js +0 -10
- package/react/pf-tabs/pf-tab-panel.d.ts +0 -5
- package/react/pf-tabs/pf-tab-panel.js +0 -10
- package/react/pf-tabs/pf-tab.d.ts +0 -5
- package/react/pf-tabs/pf-tab.js +0 -12
- package/react/pf-tabs/pf-tabs.d.ts +0 -5
- package/react/pf-tabs/pf-tabs.js +0 -10
- package/react/pf-text-area/pf-text-area.d.ts +0 -5
- package/react/pf-text-area/pf-text-area.js +0 -10
- package/react/pf-text-input/pf-text-input.d.ts +0 -5
- package/react/pf-text-input/pf-text-input.js +0 -10
- package/react/pf-tile/pf-tile.d.ts +0 -5
- package/react/pf-tile/pf-tile.js +0 -10
- package/react/pf-timestamp/pf-timestamp.d.ts +0 -5
- package/react/pf-timestamp/pf-timestamp.js +0 -10
- package/react/pf-tooltip/pf-tooltip.d.ts +0 -5
- package/react/pf-tooltip/pf-tooltip.js +0 -10
package/pf-avatar/pf-avatar.js
CHANGED
|
@@ -4,7 +4,87 @@ import { LitElement, html } from 'lit';
|
|
|
4
4
|
import { property } from 'lit/decorators/property.js';
|
|
5
5
|
import { customElement } from 'lit/decorators/custom-element.js';
|
|
6
6
|
import { css } from "lit";
|
|
7
|
-
const style = css `:host {
|
|
7
|
+
const style = css `:host {
|
|
8
|
+
display: inline-block;
|
|
9
|
+
\t/** Border color for avatar */
|
|
10
|
+
\t--pf-c-avatar--BorderColor: transparent;
|
|
11
|
+
\t/** Border width for avatar */
|
|
12
|
+
\t--pf-c-avatar--BorderWidth: 0;
|
|
13
|
+
\t/** Border radius for avatar */
|
|
14
|
+
\t--pf-c-avatar--BorderRadius: var(--pf-global--BorderRadius--lg, 30em);
|
|
15
|
+
\t/** Width for avatar */
|
|
16
|
+
\t--pf-c-avatar--Width: 2.25rem;
|
|
17
|
+
\t/** Height for avatar */
|
|
18
|
+
\t--pf-c-avatar--Height: 2.25rem;
|
|
19
|
+
\t/** Width for small avatar */
|
|
20
|
+
\t--pf-c-avatar--m-sm--Width: 1.5rem;
|
|
21
|
+
\t/** Height for small avatar */
|
|
22
|
+
\t--pf-c-avatar--m-sm--Height: 1.5rem;
|
|
23
|
+
\t/** Width for medium avatar */
|
|
24
|
+
\t--pf-c-avatar--m-md--Width: 2.25rem;
|
|
25
|
+
\t/** Height for medium avatar */
|
|
26
|
+
\t--pf-c-avatar--m-md--Height: 2.25rem;
|
|
27
|
+
\t/** Width for large avatar */
|
|
28
|
+
\t--pf-c-avatar--m-lg--Width: 4.5rem;
|
|
29
|
+
\t/** Height for large avatar */
|
|
30
|
+
\t--pf-c-avatar--m-lg--Height: 4.5rem;
|
|
31
|
+
\t/** Width for extra large avatar */
|
|
32
|
+
\t--pf-c-avatar--m-xl--Width: 8rem;
|
|
33
|
+
\t/** Height for extra large avatar */
|
|
34
|
+
\t--pf-c-avatar--m-xl--Height: 8rem;
|
|
35
|
+
\t--pf-c-avatar--m-light--BorderColor: var(--pf-global--BorderColor--dark-100, #d2d2d2);
|
|
36
|
+
\t--pf-c-avatar--m-light--BorderWidth: var(--pf-global--BorderWidth--sm, 1px);
|
|
37
|
+
\t/** Border color for dark avatar */
|
|
38
|
+
\t--pf-c-avatar--m-dark--BorderColor: var(--pf-global--palette--black-700, #4f5255);
|
|
39
|
+
\t--pf-c-avatar--m-dark--BorderWidth: var(--pf-global--BorderWidth--sm, 1px);
|
|
40
|
+
\twidth: var(--pf-c-avatar--Width);
|
|
41
|
+
\theight: var(--pf-c-avatar--Height);
|
|
42
|
+
\tborder-radius: var(--pf-c-avatar--BorderRadius);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
:host([hidden]),
|
|
46
|
+
[hidden] {
|
|
47
|
+
display: none !important;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
svg,
|
|
51
|
+
img {
|
|
52
|
+
display: inline;
|
|
53
|
+
object-fit: cover;
|
|
54
|
+
width: var(--pf-c-avatar--Width);
|
|
55
|
+
height: var(--pf-c-avatar--Height);
|
|
56
|
+
border-radius: var(--pf-c-avatar--BorderRadius);
|
|
57
|
+
border: var(--pf-c-avatar--BorderWidth) solid var(--pf-c-avatar--BorderColor);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
:host([border]) {
|
|
61
|
+
--pf-c-avatar--BorderWidth: var(--pf-global--BorderWidth--sm, 1px);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
:host([border="dark"]) {
|
|
65
|
+
--pf-c-avatar--BorderColor: var(--pf-c-avatar--m-dark--BorderColor);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
:host([size="sm"]) {
|
|
69
|
+
--pf-c-avatar--Width: var(--pf-c-avatar--m-sm--Width);
|
|
70
|
+
--pf-c-avatar--Height: var(--pf-c-avatar--m-sm--Height);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
:host([size="md"]) {
|
|
74
|
+
--pf-c-avatar--Width: var(--pf-c-avatar--m-md--Width);
|
|
75
|
+
--pf-c-avatar--Height: var(--pf-c-avatar--m-md--Height);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
:host([size="lg"]) {
|
|
79
|
+
--pf-c-avatar--Width: var(--pf-c-avatar--m-lg--Width);
|
|
80
|
+
--pf-c-avatar--Height: var(--pf-c-avatar--m-lg--Height);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
:host([size="xl"]) {
|
|
84
|
+
--pf-c-avatar--Width: var(--pf-c-avatar--m-xl--Width);
|
|
85
|
+
--pf-c-avatar--Height: var(--pf-c-avatar--m-xl--Height);
|
|
86
|
+
}
|
|
87
|
+
`;
|
|
8
88
|
export class PfAvatarLoadEvent extends Event {
|
|
9
89
|
constructor(originalEvent) {
|
|
10
90
|
super('load', { bubbles: true });
|
|
@@ -49,7 +129,7 @@ _PfAvatar_onLoad = function _PfAvatar_onLoad(event) {
|
|
|
49
129
|
this.dispatchEvent(new PfAvatarLoadEvent(event));
|
|
50
130
|
};
|
|
51
131
|
PfAvatar.styles = [style];
|
|
52
|
-
PfAvatar.version = "4.
|
|
132
|
+
PfAvatar.version = "4.3.0";
|
|
53
133
|
__decorate([
|
|
54
134
|
property()
|
|
55
135
|
], PfAvatar.prototype, "src", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pf-avatar.js","sourceRoot":"","sources":["pf-avatar.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAuB,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC
|
|
1
|
+
{"version":3,"file":"pf-avatar.js","sourceRoot":"","sources":["pf-avatar.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAuB,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIjE,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAmB,aAAoB;QACrC,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QADhB,kBAAa,GAAb,aAAa,CAAO;IAEvC,CAAC;CACF;AASM,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,UAAU;IAAjC;;;QAML,yCAAyC;QACZ,QAAG,GAAY,cAAc,CAAC;QAE3D,yBAAyB;QACI,SAAI,GAA8B,IAAI,CAAC;QAKpE,8CAA8C;QACF,SAAI,GAAG,KAAK,CAAC;;IAEzD,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;;kBAEhB,IAAI,CAAC,GAAG,IAAI,EAAE;iBACf,IAAI,CAAC,GAAG;oBACL,uBAAA,IAAI,6CAAQ;KAC3B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;;;;;;;KAOnB,CAAC,CAAC,CAAC,IAAI,CAAA;;;;;;OAML,CAAC;IACN,CAAC;;;6CAEO,KAAY;IAClB,IAAI,CAAC,aAAa,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,CAAC;AAzCe,eAAM,GAAoB,CAAC,KAAK,CAAC,AAA3B,CAA4B;;AAGtC;IAAX,QAAQ,EAAE;qCAAc;AAGI;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;qCAA+B;AAG9B;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;sCAAwC;AAGvC;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;wCAA2B;AAGX;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;sCAAc;AAhB9C,QAAQ;IADpB,aAAa,CAAC,WAAW,CAAC;GACd,QAAQ","sourcesContent":["import { LitElement, html, type TemplateResult } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport { customElement } from 'lit/decorators/custom-element.js';\n\nimport style from './pf-avatar.css';\n\nexport class PfAvatarLoadEvent extends Event {\n constructor(public originalEvent: Event) {\n super('load', { bubbles: true });\n }\n}\n\n/**\n * An **avatar** is a visual used to represent a user. It may contain an image or a placeholder graphic.\n * @summary For displaying a user's avatar image\n * @alias Avatar\n * @fires {PfAvatarLoadEvent} load - when the avatar loads\n */\n@customElement('pf-avatar')\nexport class PfAvatar extends LitElement {\n static readonly styles: CSSStyleSheet[] = [style];\n\n /** The URL to the user's custom avatar image. */\n @property() src?: string;\n\n /** The alt text for the avatar image. */\n @property({ reflect: true }) alt?: string = 'Avatar image';\n\n /** Size of the Avatar */\n @property({ reflect: true }) size: 'sm' | 'md' | 'lg' | 'xl' = 'sm';\n\n /** Whether to display a border around the avatar */\n @property({ reflect: true }) border?: 'light' | 'dark';\n\n /** Whether or not the Avatar image is dark */\n @property({ type: Boolean, reflect: true }) dark = false;\n\n render(): TemplateResult<1> {\n return this.src != null ? html`\n <img id=\"img\"\n alt=\"${this.alt ?? ''}\"\n src=${this.src}\n @load=\"${this.#onLoad}\">\n ` : this.dark ? html`\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n style=\"enable-background:new 0 0 36 36\"\n viewBox=\"0 0 36 36\">\n <style>.st1,.st2{fill-rule:evenodd;clip-rule:evenodd;fill:#6a6e73}.st2{fill:#4f5255}</style><path d=\"M0 0h36v36H0z\" style=\"fill:#212427\"/>\n <path d=\"M30.5 36c-.4-3.9-1.3-9-2.9-11-1.1-1.4-2.3-2.2-3.5-2.6s-1.8-.6-6.3-.6-6.1.7-6.1.7c-1.2.4-2.4 1.2-3.4 2.6C6.7 27 5.8 32.2 5.4 36h25.1zM17.7 20.1c-3.5 0-6.4-2.9-6.4-6.4s2.9-6.4 6.4-6.4 6.4 2.9 6.4 6.4-2.8 6.4-6.4 6.4z\" class=\"st1\"/><path d=\"M13.3 36v-6.7c-2 .4-2.9 1.4-3.1 3.5l-.1 3.2h3.2zM22.7 36v-6.7c2 .4 2.9 1.4 3.1 3.5l.1 3.2h-3.2z\" class=\"st2\"/>\n </svg>\n ` : html`\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"enable-background:new 0 0 36 36\" viewBox=\"0 0 36 36\">\n <style>.st2{fill:#b8bbbe}</style><path d=\"M0 0h36v36H0z\" style=\"fill-rule:evenodd;clip-rule:evenodd;fill:#f0f0f0\"/>\n <path d=\"M17.7 20.1c-3.5 0-6.4-2.9-6.4-6.4s2.9-6.4 6.4-6.4 6.4 2.9 6.4 6.4-2.8 6.4-6.4 6.4z\" style=\"fill-rule:evenodd;clip-rule:evenodd;fill:#d2d2d2\"/><path d=\"M13.3 36v-6.7c-2 .4-2.9 1.4-3.1 3.5l-.1 3.2h3.2z\" class=\"st2\"/>\n <path d=\"m10.1 36 .1-3.2c.2-2.1 1.1-3.1 3.1-3.5V36h9.4v-6.7c2 .4 2.9 1.4 3.1 3.5l.1 3.2h4.7c-.4-3.9-1.3-9-2.9-11-1.1-1.4-2.3-2.2-3.5-2.6s-1.8-.6-6.3-.6-6.1.7-6.1.7c-1.2.4-2.4 1.2-3.4 2.6-1.7 1.9-2.6 7.1-3 10.9h4.7z\" style=\"fill:#d2d2d2\"/><path d=\"m25.9 36-.1-3.2c-.2-2.1-1.1-3.1-3.1-3.5V36h3.2z\" class=\"st2\"/>\n </svg>\n `;\n }\n\n #onLoad(event: Event) {\n this.dispatchEvent(new PfAvatarLoadEvent(event));\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-avatar': PfAvatar;\n }\n}\n"]}
|
|
@@ -1,18 +1,27 @@
|
|
|
1
1
|
:host {
|
|
2
2
|
display: inline-block;
|
|
3
3
|
position: absolute;
|
|
4
|
+
/** Right position for back to top */
|
|
4
5
|
right: var(--pf-c-back-to-top--Right, var(--pf-global--spacer--2xl, 3rem));
|
|
6
|
+
/** Bottom position for back to top */
|
|
5
7
|
bottom: var(--pf-c-back-to-top--Bottom, var(--pf-global--spacer--lg, 1.5rem));
|
|
6
8
|
}
|
|
7
9
|
|
|
8
10
|
[part="trigger"] {
|
|
11
|
+
/** Box shadow for back to top button */
|
|
9
12
|
box-shadow: var(--pf-c-back-to-top--c-button--BoxShadow, var(--pf-global--BoxShadow--lg-bottom, 0 0.75rem 0.75rem -0.5rem rgba(3, 3, 3, 0.18)));
|
|
10
13
|
|
|
14
|
+
/** Font size for back to top button */
|
|
11
15
|
--pf-c-button--FontSize: var(--pf-c-back-to-top--c-button--FontSize, var(--pf-global--FontSize--xs, 0.75rem));
|
|
16
|
+
/** Border radius for back to top button */
|
|
12
17
|
--pf-c-button--BorderRadius: var(--pf-c-back-to-top--c-button--BorderRadius, var(--pf-global--BorderRadius--lg, 30em));
|
|
18
|
+
/** Top padding for back to top button */
|
|
13
19
|
--pf-c-button--PaddingTop: var(--pf-c-back-to-top--c-button--PaddingTop, var(--pf-global--spacer--xs, 0.25rem));
|
|
20
|
+
/** Right padding for back to top button */
|
|
14
21
|
--pf-c-button--PaddingRight: var(--pf-c-back-to-top--c-button--PaddingRight, var(--pf-global--spacer--sm, 0.5rem));
|
|
22
|
+
/** Bottom padding for back to top button */
|
|
15
23
|
--pf-c-button--PaddingBottom: var(--pf-c-back-to-top--c-button--PaddingBottom, var(--pf-global--spacer--xs, 0.25rem));
|
|
24
|
+
/** Left padding for back to top button */
|
|
16
25
|
--pf-c-button--PaddingLeft: var(--pf-c-back-to-top--c-button--PaddingLeft, var(--pf-global--spacer--sm, 0.5rem));
|
|
17
26
|
}
|
|
18
27
|
|
|
@@ -20,12 +29,15 @@ a {
|
|
|
20
29
|
display: inline-flex;
|
|
21
30
|
align-items: center;
|
|
22
31
|
justify-content: center;
|
|
32
|
+
/** Primary color for back to top button */
|
|
23
33
|
color: var(--pf-c-button--m-primary--Color, var(--pf-global--Color--light-100, #fff));
|
|
34
|
+
/** Primary background color for back to top button */
|
|
24
35
|
background-color: var(--pf-c-button--m-primary--BackgroundColor, var(--pf-global--primary-color--100, #06c));
|
|
25
36
|
text-decoration: none;
|
|
26
37
|
font-size: var(--pf-c-button--FontSize);
|
|
27
38
|
padding: var(--pf-c-button--PaddingTop) var(--pf-c-button--PaddingRight) var(--pf-c-button--PaddingBottom) var(--pf-c-button--PaddingLeft);
|
|
28
39
|
border-radius: var(--pf-c-button--BorderRadius);
|
|
40
|
+
/** End icon margin left for back to top button */
|
|
29
41
|
gap: var(--pf-c-button__icon--m-end--MarginLeft, var(--pf-global--spacer--xs, 0.25rem));
|
|
30
42
|
}
|
|
31
43
|
|
|
@@ -4,23 +4,7 @@ import '@patternfly/elements/pf-icon/pf-icon.js';
|
|
|
4
4
|
/**
|
|
5
5
|
* The **back to top** component is a shortcut that allows users to quickly navigate to the top of a lengthy content page.
|
|
6
6
|
* @summary A shortcut that allows users to quickly navigate to the top of a lengthy content page.
|
|
7
|
-
* @
|
|
8
|
-
* @slot icon
|
|
9
|
-
* Contains the prefix icon to display before the link or button.
|
|
10
|
-
* @slot
|
|
11
|
-
* Text to display inside the link or button.
|
|
12
|
-
* @cssprop {<length>} [--pf-c-back-to-top--Right=3rem`]
|
|
13
|
-
* @cssprop {<length>} [--pf-c-back-to-top--Bottom=1.5rem`]
|
|
14
|
-
* @cssprop [--pf-c-back-to-top--c-button--BoxShadow=0 0.75rem 0.75rem -0.5rem rgba(3, 3, 3, 0.18)]
|
|
15
|
-
* @cssprop {<length>} [--pf-c-button--FontSize=0.75rem]
|
|
16
|
-
* @cssprop {<length>|<percentage>} [--pf-c-button--BorderRadius=30em]
|
|
17
|
-
* @cssprop {<length>} [--pf-c-button--PaddingTop=0.25rem]
|
|
18
|
-
* @cssprop {<length>} [--pf-c-button--PaddingRight=0.5rem]
|
|
19
|
-
* @cssprop {<length>} [--pf-c-button--PaddingBottom=0.25rem]
|
|
20
|
-
* @cssprop {<length>} [--pf-c-button--PaddingLeft=0.5rem]
|
|
21
|
-
* @cssprop {<color>} [--pf-c-button--m-primary--Color=#fff]
|
|
22
|
-
* @cssprop {<color>} [--pf-c-button--m-primary--BackgroundColor=#06c]
|
|
23
|
-
* @cssprop {<length>} [--pf-c-button__icon--m-end--MarginLeft=0.25rem]
|
|
7
|
+
* @alias Back to Top
|
|
24
8
|
*/
|
|
25
9
|
export declare class PfBackToTop extends LitElement {
|
|
26
10
|
#private;
|
|
@@ -8,7 +8,82 @@ import { Logger } from '@patternfly/pfe-core/controllers/logger.js';
|
|
|
8
8
|
import '@patternfly/elements/pf-button/pf-button.js';
|
|
9
9
|
import '@patternfly/elements/pf-icon/pf-icon.js';
|
|
10
10
|
import { css } from "lit";
|
|
11
|
-
const styles = css `:host {
|
|
11
|
+
const styles = css `:host {
|
|
12
|
+
display: inline-block;
|
|
13
|
+
position: absolute;
|
|
14
|
+
/** Right position for back to top */
|
|
15
|
+
right: var(--pf-c-back-to-top--Right, var(--pf-global--spacer--2xl, 3rem));
|
|
16
|
+
/** Bottom position for back to top */
|
|
17
|
+
bottom: var(--pf-c-back-to-top--Bottom, var(--pf-global--spacer--lg, 1.5rem));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
[part="trigger"] {
|
|
21
|
+
/** Box shadow for back to top button */
|
|
22
|
+
box-shadow: var(--pf-c-back-to-top--c-button--BoxShadow, var(--pf-global--BoxShadow--lg-bottom, 0 0.75rem 0.75rem -0.5rem rgba(3, 3, 3, 0.18)));
|
|
23
|
+
|
|
24
|
+
/** Font size for back to top button */
|
|
25
|
+
--pf-c-button--FontSize: var(--pf-c-back-to-top--c-button--FontSize, var(--pf-global--FontSize--xs, 0.75rem));
|
|
26
|
+
/** Border radius for back to top button */
|
|
27
|
+
--pf-c-button--BorderRadius: var(--pf-c-back-to-top--c-button--BorderRadius, var(--pf-global--BorderRadius--lg, 30em));
|
|
28
|
+
/** Top padding for back to top button */
|
|
29
|
+
--pf-c-button--PaddingTop: var(--pf-c-back-to-top--c-button--PaddingTop, var(--pf-global--spacer--xs, 0.25rem));
|
|
30
|
+
/** Right padding for back to top button */
|
|
31
|
+
--pf-c-button--PaddingRight: var(--pf-c-back-to-top--c-button--PaddingRight, var(--pf-global--spacer--sm, 0.5rem));
|
|
32
|
+
/** Bottom padding for back to top button */
|
|
33
|
+
--pf-c-button--PaddingBottom: var(--pf-c-back-to-top--c-button--PaddingBottom, var(--pf-global--spacer--xs, 0.25rem));
|
|
34
|
+
/** Left padding for back to top button */
|
|
35
|
+
--pf-c-button--PaddingLeft: var(--pf-c-back-to-top--c-button--PaddingLeft, var(--pf-global--spacer--sm, 0.5rem));
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
a {
|
|
39
|
+
display: inline-flex;
|
|
40
|
+
align-items: center;
|
|
41
|
+
justify-content: center;
|
|
42
|
+
/** Primary color for back to top button */
|
|
43
|
+
color: var(--pf-c-button--m-primary--Color, var(--pf-global--Color--light-100, #fff));
|
|
44
|
+
/** Primary background color for back to top button */
|
|
45
|
+
background-color: var(--pf-c-button--m-primary--BackgroundColor, var(--pf-global--primary-color--100, #06c));
|
|
46
|
+
text-decoration: none;
|
|
47
|
+
font-size: var(--pf-c-button--FontSize);
|
|
48
|
+
padding: var(--pf-c-button--PaddingTop) var(--pf-c-button--PaddingRight) var(--pf-c-button--PaddingBottom) var(--pf-c-button--PaddingLeft);
|
|
49
|
+
border-radius: var(--pf-c-button--BorderRadius);
|
|
50
|
+
/** End icon margin left for back to top button */
|
|
51
|
+
gap: var(--pf-c-button__icon--m-end--MarginLeft, var(--pf-global--spacer--xs, 0.25rem));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
a:hover {
|
|
55
|
+
--pf-c-button--m-primary--Color: var(--pf-c-button--m-primary--hover--Color, var(--pf-global--Color--light-100, #fff));
|
|
56
|
+
--pf-c-button--m-primary--BackgroundColor: var(--pf-c-button--m-primary--hover--BackgroundColor, var(--pf-global--primary-color--200, #004080));
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
a:focus {
|
|
60
|
+
--pf-c-button--m-primary--Color: var(--pf-c-button--m-primary--hover--Color, var(--pf-global--Color--light-100,#fff));
|
|
61
|
+
--pf-c-button--m-primary--BackgroundColor: var(--pf-c-button--m-primary--hover--BackgroundColor, var(--pf-global--primary-color--200, #004080));
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
[part="trigger"][hidden] {
|
|
65
|
+
display: none;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
pf-icon {
|
|
69
|
+
/* override icon size as default sm variant is incorrect */
|
|
70
|
+
--pf-icon--size: var(--pf-c-button--FontSize);
|
|
71
|
+
vertical-align: -0.125rem;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
span {
|
|
75
|
+
display: inline-flex;
|
|
76
|
+
align-items: center;
|
|
77
|
+
justify-content: center;
|
|
78
|
+
gap: var(--pf-c-button__icon--m-end--MarginLeft, var(--pf-global--spacer--xs, 0.25rem));
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
@media (min-width: 768px) {
|
|
82
|
+
:host {
|
|
83
|
+
--pf-c-back-to-top--Bottom: var(--pf-c-back-to-top--md--Bottom, var(--pf-global--spacer--2xl, 3rem));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
`;
|
|
12
87
|
let PfBackToTop = class PfBackToTop extends LitElement {
|
|
13
88
|
constructor() {
|
|
14
89
|
super(...arguments);
|
|
@@ -64,8 +139,14 @@ let PfBackToTop = class PfBackToTop extends LitElement {
|
|
|
64
139
|
}
|
|
65
140
|
if (this.href) {
|
|
66
141
|
return html `
|
|
67
|
-
|
|
142
|
+
<!-- The \`<a>\` or \`<pf-button>\` element -->
|
|
143
|
+
<a href="${this.href}"
|
|
144
|
+
?hidden="${!__classPrivateFieldGet(this, _PfBackToTop_visible, "f")}"
|
|
145
|
+
part="trigger"
|
|
146
|
+
aria-label="${ifDefined(__classPrivateFieldGet(this, _PfBackToTop_instances, "a", _PfBackToTop_ariaLabel_get))}">
|
|
147
|
+
<!-- Contains the prefix icon to display before the link or button. -->
|
|
68
148
|
<slot name="icon"></slot>
|
|
149
|
+
<!-- Text to display inside the link or button. -->
|
|
69
150
|
<slot @slotchange="${__classPrivateFieldGet(this, _PfBackToTop_instances, "m", _PfBackToTop_onSlotchange)}"></slot>
|
|
70
151
|
<pf-icon icon="angle-up" set="fas"></pf-icon>
|
|
71
152
|
</a>
|
|
@@ -73,6 +154,7 @@ let PfBackToTop = class PfBackToTop extends LitElement {
|
|
|
73
154
|
}
|
|
74
155
|
else {
|
|
75
156
|
return html `
|
|
157
|
+
<!-- The \`<a>\` or \`<pf-button>\` element -->
|
|
76
158
|
<pf-button
|
|
77
159
|
icon="${ifDefined(this.icon)}"
|
|
78
160
|
icon-set="${ifDefined(this.iconSet)}"
|
|
@@ -81,8 +163,10 @@ let PfBackToTop = class PfBackToTop extends LitElement {
|
|
|
81
163
|
part="trigger"
|
|
82
164
|
label="${ifDefined(__classPrivateFieldGet(this, _PfBackToTop_instances, "a", _PfBackToTop_ariaLabel_get))}"
|
|
83
165
|
>
|
|
166
|
+
<!-- Contains the prefix icon to display before the link or button. -->
|
|
84
167
|
<slot name="icon" slot="icon"></slot>
|
|
85
168
|
<span>
|
|
169
|
+
<!-- Text to display inside the link or button. -->
|
|
86
170
|
<slot></slot>
|
|
87
171
|
<pf-icon icon="angle-up" set="fas"></pf-icon>
|
|
88
172
|
</span>
|
|
@@ -150,7 +234,7 @@ _PfBackToTop_addScrollListener = function _PfBackToTop_addScrollListener() {
|
|
|
150
234
|
__classPrivateFieldGet(this, _PfBackToTop_toggleVisibility, "f").call(this);
|
|
151
235
|
};
|
|
152
236
|
PfBackToTop.styles = [styles];
|
|
153
|
-
PfBackToTop.version = "4.
|
|
237
|
+
PfBackToTop.version = "4.3.0";
|
|
154
238
|
__decorate([
|
|
155
239
|
property({ reflect: true })
|
|
156
240
|
], PfBackToTop.prototype, "icon", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pf-back-to-top.js","sourceRoot":"","sources":["pf-back-to-top.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, isServer, type PropertyValues, type TemplateResult } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nimport { Logger } from '@patternfly/pfe-core/controllers/logger.js';\n\nimport '@patternfly/elements/pf-button/pf-button.js';\nimport '@patternfly/elements/pf-icon/pf-icon.js';\n\nimport styles from './pf-back-to-top.css';\n\n/**\n * The **back to top** component is a shortcut that allows users to quickly navigate to the top of a lengthy content page.\n * @summary A shortcut that allows users to quickly navigate to the top of a lengthy content page.\n * @csspart trigger - The `<a>` or `<pf-button>` element\n * @slot icon\n * Contains the prefix icon to display before the link or button.\n * @slot\n * Text to display inside the link or button.\n * @cssprop {<length>} [--pf-c-back-to-top--Right=3rem`]\n * @cssprop {<length>} [--pf-c-back-to-top--Bottom=1.5rem`]\n * @cssprop [--pf-c-back-to-top--c-button--BoxShadow=0 0.75rem 0.75rem -0.5rem rgba(3, 3, 3, 0.18)]\n * @cssprop {<length>} [--pf-c-button--FontSize=0.75rem]\n * @cssprop {<length>|<percentage>} [--pf-c-button--BorderRadius=30em]\n * @cssprop {<length>} [--pf-c-button--PaddingTop=0.25rem]\n * @cssprop {<length>} [--pf-c-button--PaddingRight=0.5rem]\n * @cssprop {<length>} [--pf-c-button--PaddingBottom=0.25rem]\n * @cssprop {<length>} [--pf-c-button--PaddingLeft=0.5rem]\n * @cssprop {<color>} [--pf-c-button--m-primary--Color=#fff]\n * @cssprop {<color>} [--pf-c-button--m-primary--BackgroundColor=#06c]\n * @cssprop {<length>} [--pf-c-button__icon--m-end--MarginLeft=0.25rem]\n */\n@customElement('pf-back-to-top')\nexport class PfBackToTop extends LitElement {\n static readonly styles: CSSStyleSheet[] = [styles];\n\n /** Shorthand for the `icon` slot, the value is icon name */\n @property({ reflect: true }) icon?: string;\n\n /** Icon set for the `icon` property */\n @property({ attribute: 'icon-set' }) iconSet?: string;\n\n /** Flag to always show back to top button, defaults to false. */\n @property({ reflect: true, type: Boolean, attribute: 'always-visible' }) alwaysVisible = false;\n\n /** Element selector to spy on for scrolling. Not passing a selector defaults to spying on window scroll events */\n @property({ reflect: true, attribute: 'scrollable-selector' }) scrollableSelector?: string;\n\n /** Distance from the top of the scrollable element to trigger the visibility of the back to top button */\n @property({ type: Number, attribute: 'scroll-distance' }) scrollDistance = 400;\n\n /** Accessible name for the back-to-top link, use when component does not have slotted text */\n @property() label?: string;\n\n /** Page fragment link to target element, must include hash ex: #top */\n @property({ reflect: true }) href?: string;\n\n #scrollSpy = false;\n\n #visible = false;\n\n #scrollElement?: Element | Window;\n\n #hasSlottedText = false;\n\n #logger = new Logger(this);\n\n get #rootNode(): Document | ShadowRoot | null {\n let root = null;\n if (isServer) {\n return null;\n } else if ((root = this.getRootNode()) instanceof Document || root instanceof ShadowRoot) {\n return root;\n } else {\n return document;\n }\n }\n\n get #ariaLabel(): string | undefined {\n if (this.#hasSlottedText) {\n return undefined;\n }\n return this.label ?? 'Back to top';\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.#addScrollListener();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#removeScrollListener();\n }\n\n override willUpdate(changed: PropertyValues<this>): void {\n if (changed.has('scrollableSelector')) {\n this.#addScrollListener();\n }\n if (changed.has('alwaysVisible')) {\n this.#toggleVisibility();\n }\n }\n\n render(): TemplateResult<1> {\n // ensure href has a hash\n if (this.href && this.href.charAt(0) !== '#') {\n this.href = `#${this.href}`;\n this.#logger.warn(`missing hash in href fragment link`);\n }\n\n if (this.href) {\n return html`\n <a href=\"${this.href}\" ?hidden=\"${!this.#visible}\" part=\"trigger\" aria-label=\"${ifDefined(this.#ariaLabel)}\">\n <slot name=\"icon\"></slot>\n <slot @slotchange=\"${this.#onSlotchange}\"></slot>\n <pf-icon icon=\"angle-up\" set=\"fas\"></pf-icon>\n </a>\n `;\n } else {\n return html`\n <pf-button\n icon=\"${ifDefined(this.icon)}\"\n icon-set=\"${ifDefined(this.iconSet)}\"\n ?hidden=\"${!this.#visible}\"\n tabindex=\"${this.#visible ? '0' : '-1'}\"\n part=\"trigger\"\n label=\"${ifDefined(this.#ariaLabel)}\"\n >\n <slot name=\"icon\" slot=\"icon\"></slot>\n <span>\n <slot></slot>\n <pf-icon icon=\"angle-up\" set=\"fas\"></pf-icon>\n </span>\n </pf-button>\n `;\n }\n }\n\n #onSlotchange(event: Event) {\n const slot = event.currentTarget as HTMLSlotElement;\n const nodes = slot.assignedNodes();\n this.#hasSlottedText = nodes.length > 0 ? true : false;\n this.requestUpdate();\n }\n\n #removeScrollListener() {\n this.#scrollElement?.removeEventListener('scroll', this.#toggleVisibility);\n }\n\n #addScrollListener() {\n this.#removeScrollListener();\n\n if (this.scrollableSelector?.trim() === '') {\n this.#logger.error(`scrollable-selector attribute cannot be empty`);\n return;\n }\n\n this.#scrollSpy = !!this.scrollableSelector;\n if (isServer) {\n return;\n } else if (this.#scrollSpy && this.scrollableSelector) {\n const scrollableElement = this.#rootNode?.querySelector?.(this.scrollableSelector);\n if (!scrollableElement) {\n this.#logger.error(`unable to find element with selector ${this.scrollableSelector}`);\n return;\n }\n this.#scrollElement = scrollableElement;\n } else {\n this.#scrollElement = window;\n }\n\n this.#scrollElement.addEventListener('scroll', this.#toggleVisibility, { passive: true });\n this.#toggleVisibility();\n }\n\n #toggleVisibility = () => {\n if (this.alwaysVisible) {\n this.#visible = true;\n this.requestUpdate();\n return;\n }\n const previousVisibility = this.#visible;\n if (this.#scrollElement) {\n const scrolled =\n (this.#scrollElement instanceof Window) ?\n this.#scrollElement.scrollY\n : this.#scrollElement.scrollTop;\n this.#visible = (scrolled > this.scrollDistance);\n if (previousVisibility !== this.#visible) {\n this.requestUpdate();\n }\n }\n };\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-back-to-top': PfBackToTop;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"pf-back-to-top.js","sourceRoot":"","sources":["pf-back-to-top.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, isServer, type PropertyValues, type TemplateResult } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nimport { Logger } from '@patternfly/pfe-core/controllers/logger.js';\n\nimport '@patternfly/elements/pf-button/pf-button.js';\nimport '@patternfly/elements/pf-icon/pf-icon.js';\n\nimport styles from './pf-back-to-top.css';\n\n/**\n * The **back to top** component is a shortcut that allows users to quickly navigate to the top of a lengthy content page.\n * @summary A shortcut that allows users to quickly navigate to the top of a lengthy content page.\n * @alias Back to Top\n */\n@customElement('pf-back-to-top')\nexport class PfBackToTop extends LitElement {\n static readonly styles: CSSStyleSheet[] = [styles];\n\n /** Shorthand for the `icon` slot, the value is icon name */\n @property({ reflect: true }) icon?: string;\n\n /** Icon set for the `icon` property */\n @property({ attribute: 'icon-set' }) iconSet?: string;\n\n /** Flag to always show back to top button, defaults to false. */\n @property({ reflect: true, type: Boolean, attribute: 'always-visible' }) alwaysVisible = false;\n\n /** Element selector to spy on for scrolling. Not passing a selector defaults to spying on window scroll events */\n @property({ reflect: true, attribute: 'scrollable-selector' }) scrollableSelector?: string;\n\n /** Distance from the top of the scrollable element to trigger the visibility of the back to top button */\n @property({ type: Number, attribute: 'scroll-distance' }) scrollDistance = 400;\n\n /** Accessible name for the back-to-top link, use when component does not have slotted text */\n @property() label?: string;\n\n /** Page fragment link to target element, must include hash ex: #top */\n @property({ reflect: true }) href?: string;\n\n #scrollSpy = false;\n\n #visible = false;\n\n #scrollElement?: Element | Window;\n\n #hasSlottedText = false;\n\n #logger = new Logger(this);\n\n get #rootNode(): Document | ShadowRoot | null {\n let root = null;\n if (isServer) {\n return null;\n } else if ((root = this.getRootNode()) instanceof Document || root instanceof ShadowRoot) {\n return root;\n } else {\n return document;\n }\n }\n\n get #ariaLabel(): string | undefined {\n if (this.#hasSlottedText) {\n return undefined;\n }\n return this.label ?? 'Back to top';\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.#addScrollListener();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#removeScrollListener();\n }\n\n override willUpdate(changed: PropertyValues<this>): void {\n if (changed.has('scrollableSelector')) {\n this.#addScrollListener();\n }\n if (changed.has('alwaysVisible')) {\n this.#toggleVisibility();\n }\n }\n\n render(): TemplateResult<1> {\n // ensure href has a hash\n if (this.href && this.href.charAt(0) !== '#') {\n this.href = `#${this.href}`;\n this.#logger.warn(`missing hash in href fragment link`);\n }\n\n if (this.href) {\n return html`\n <!-- The \\`<a>\\` or \\`<pf-button>\\` element -->\n <a href=\"${this.href}\"\n ?hidden=\"${!this.#visible}\"\n part=\"trigger\"\n aria-label=\"${ifDefined(this.#ariaLabel)}\">\n <!-- Contains the prefix icon to display before the link or button. -->\n <slot name=\"icon\"></slot>\n <!-- Text to display inside the link or button. -->\n <slot @slotchange=\"${this.#onSlotchange}\"></slot>\n <pf-icon icon=\"angle-up\" set=\"fas\"></pf-icon>\n </a>\n `;\n } else {\n return html`\n <!-- The \\`<a>\\` or \\`<pf-button>\\` element -->\n <pf-button\n icon=\"${ifDefined(this.icon)}\"\n icon-set=\"${ifDefined(this.iconSet)}\"\n ?hidden=\"${!this.#visible}\"\n tabindex=\"${this.#visible ? '0' : '-1'}\"\n part=\"trigger\"\n label=\"${ifDefined(this.#ariaLabel)}\"\n >\n <!-- Contains the prefix icon to display before the link or button. -->\n <slot name=\"icon\" slot=\"icon\"></slot>\n <span>\n <!-- Text to display inside the link or button. -->\n <slot></slot>\n <pf-icon icon=\"angle-up\" set=\"fas\"></pf-icon>\n </span>\n </pf-button>\n `;\n }\n }\n\n #onSlotchange(event: Event) {\n const slot = event.currentTarget as HTMLSlotElement;\n const nodes = slot.assignedNodes();\n this.#hasSlottedText = nodes.length > 0 ? true : false;\n this.requestUpdate();\n }\n\n #removeScrollListener() {\n this.#scrollElement?.removeEventListener('scroll', this.#toggleVisibility);\n }\n\n #addScrollListener() {\n this.#removeScrollListener();\n\n if (this.scrollableSelector?.trim() === '') {\n this.#logger.error(`scrollable-selector attribute cannot be empty`);\n return;\n }\n\n this.#scrollSpy = !!this.scrollableSelector;\n if (isServer) {\n return;\n } else if (this.#scrollSpy && this.scrollableSelector) {\n const scrollableElement = this.#rootNode?.querySelector?.(this.scrollableSelector);\n if (!scrollableElement) {\n this.#logger.error(`unable to find element with selector ${this.scrollableSelector}`);\n return;\n }\n this.#scrollElement = scrollableElement;\n } else {\n this.#scrollElement = window;\n }\n\n this.#scrollElement.addEventListener('scroll', this.#toggleVisibility, { passive: true });\n this.#toggleVisibility();\n }\n\n #toggleVisibility = () => {\n if (this.alwaysVisible) {\n this.#visible = true;\n this.requestUpdate();\n return;\n }\n const previousVisibility = this.#visible;\n if (this.#scrollElement) {\n const scrolled =\n (this.#scrollElement instanceof Window) ?\n this.#scrollElement.scrollY\n : this.#scrollElement.scrollTop;\n this.#visible = (scrolled > this.scrollDistance);\n if (previousVisibility !== this.#visible) {\n this.requestUpdate();\n }\n }\n };\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-back-to-top': PfBackToTop;\n }\n}\n"]}
|
|
@@ -131,8 +131,8 @@ describe('<pf-back-to-top>', function () {
|
|
|
131
131
|
</div>
|
|
132
132
|
`);
|
|
133
133
|
element = container.querySelector('pf-back-to-top');
|
|
134
|
-
snapshot = await a11ySnapshot();
|
|
135
134
|
await allUpdates(element);
|
|
135
|
+
snapshot = await a11ySnapshot({ selector: 'pf-back-to-top' });
|
|
136
136
|
});
|
|
137
137
|
it('should be hidden on init', function () {
|
|
138
138
|
const { children } = snapshot;
|
|
@@ -142,12 +142,13 @@ describe('<pf-back-to-top>', function () {
|
|
|
142
142
|
beforeEach(async function () {
|
|
143
143
|
const scrollableElement = document.querySelector('#top');
|
|
144
144
|
scrollableElement.scrollTo({ top: 401, behavior: 'instant' });
|
|
145
|
+
scrollableElement.dispatchEvent(new Event('scroll'));
|
|
145
146
|
await nextFrame();
|
|
146
147
|
await allUpdates(element);
|
|
147
148
|
snapshot = await a11ySnapshot();
|
|
148
149
|
});
|
|
149
150
|
it('should be visible', function () {
|
|
150
|
-
expect(snapshot.children?.map(takeProps(['name', 'role']))).to.deep.equal([{ role: 'link', name: 'Back to top' }]);
|
|
151
|
+
expect(snapshot.children?.at(0)?.children?.map(takeProps(['name', 'role']))).to.deep.equal([{ role: 'link', name: 'Back to top' }]);
|
|
151
152
|
});
|
|
152
153
|
});
|
|
153
154
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pf-back-to-top.spec.js","sourceRoot":"","sources":["pf-back-to-top.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, html, nextFrame } from '@open-wc/testing';\nimport { createFixture } from '@patternfly/pfe-tools/test/create-fixture.js';\nimport { setViewport, sendKeys } from '@web/test-runner-commands';\n\nimport { allUpdates } from '@patternfly/pfe-tools/test/utils.js';\n\nimport { PfBackToTop } from '../pf-back-to-top.js';\nimport { type A11yTreeSnapshot, a11ySnapshot } from '@patternfly/pfe-tools/test/a11y-snapshot.js';\n\nconst takeProps = (props: string[]) => (obj: object) =>\n Object.fromEntries(Object.entries(obj).filter(([k]) => props.includes(k)));\n\ndescribe('<pf-back-to-top>', function() {\n it('imperatively instantiates', function() {\n expect(document.createElement('pf-back-to-top')).to.be.an.instanceof(PfBackToTop);\n });\n\n describe('simply instantiating', function() {\n let element: PfBackToTop;\n\n beforeEach(async function() {\n element = await createFixture<PfBackToTop>(html`<pf-back-to-top></pf-back-to-top>`);\n });\n\n it('should upgrade', function() {\n const klass = customElements.get('pf-back-to-top');\n expect(element)\n .to.be.an.instanceOf(klass)\n .and\n .to.be.an.instanceOf(PfBackToTop);\n });\n });\n\n describe('when rendered in a viewport with a height smaller then content length', function() {\n let element: PfBackToTop;\n let snapshot: A11yTreeSnapshot;\n\n beforeEach(async function() {\n await setViewport({ width: 320, height: 640 });\n window.scrollTo({ top: 0, behavior: 'instant' });\n await nextFrame();\n const container = await createFixture<PfBackToTop>(html`\n <div id=\"top\">\n <div style=\"height: 2000px;\"></div>\n <pf-back-to-top href=\"#top\">Back to top</pf-back-to-top>\n </div>\n `);\n element = container.querySelector('pf-back-to-top')!;\n snapshot = await a11ySnapshot();\n\n await allUpdates(element);\n });\n\n it('should be hidden on init', function() {\n const { children } = snapshot;\n expect(children).to.be.undefined;\n });\n\n it('should not be accessible', function() {\n expect(snapshot.children).to.be.undefined;\n });\n\n describe('when scrolled 401px', function() {\n beforeEach(async function() {\n window.scrollTo({ top: 401, behavior: 'instant' });\n await nextFrame();\n await allUpdates(element);\n snapshot = await a11ySnapshot();\n });\n\n it('should be visible', function() {\n expect(snapshot.children?.map(takeProps(['name', 'role']))).to.deep.equal([{ role: 'link', name: 'Back to top' }]);\n });\n\n it('should be accessible', async function() {\n await expect(element).to.be.accessible();\n });\n\n describe('pressing the tab key', function() {\n beforeEach(async function() {\n await sendKeys({ press: 'Tab' });\n await allUpdates(element);\n await nextFrame();\n });\n\n it('should focus the component', function() {\n expect(document.activeElement).to.equal(element);\n });\n });\n });\n\n describe('when the always visible property is true', function() {\n beforeEach(async function() {\n window.scrollTo({ top: 0, behavior: 'instant' });\n await nextFrame();\n element.alwaysVisible = true;\n await allUpdates(element);\n snapshot = await a11ySnapshot();\n });\n\n it('should be visible', function() {\n expect(snapshot.children?.map(takeProps(['name', 'role']))).to.deep.equal([{ role: 'link', name: 'Back to top' }]);\n });\n\n it('should be accessible', async function() {\n await expect(element).to.be.accessible();\n });\n\n describe('pressing the tab key', function() {\n beforeEach(async function() {\n await sendKeys({ press: 'Tab' });\n await allUpdates(element);\n await nextFrame();\n });\n it('should focus the component', function() {\n expect(document.activeElement).to.equal(element);\n });\n });\n });\n\n describe('when the scroll distance is set to 1000', function() {\n beforeEach(async function() {\n element.scrollDistance = 1000;\n await allUpdates(element);\n snapshot = await a11ySnapshot();\n });\n\n it('should be hidden', function() {\n const { children } = snapshot;\n expect(children).to.be.undefined;\n });\n\n describe('when scrolled 1001px', function() {\n beforeEach(async function() {\n window.scrollTo({ top: 1001, behavior: 'instant' });\n await nextFrame();\n await allUpdates(element);\n snapshot = await a11ySnapshot();\n });\n\n it('should be visible', function() {\n expect(snapshot.children?.map(takeProps(['name', 'role']))).to.deep.equal([{ role: 'link', name: 'Back to top' }]);\n });\n });\n });\n });\n\n describe('when rendered in an element with an overflowed height', function() {\n let element: PfBackToTop;\n let snapshot: A11yTreeSnapshot;\n\n beforeEach(async function() {\n window.scrollTo({ top: 0, behavior: 'instant' });\n await nextFrame();\n const container = await createFixture<PfBackToTop>(html`\n <div id=\"top\" style=\"height: 500px; overflow-y: scroll;\">\n <div style=\"height: 2000px;\"></div>\n <pf-back-to-top href=\"#top\" scrollable-selector=\"#top\">Back to top</pf-back-to-top>\n </div>\n `);\n element = container.querySelector('pf-back-to-top')!;\n snapshot = await a11ySnapshot();\n\n await allUpdates(element);\n });\n\n it('should be hidden on init', function() {\n const { children } = snapshot;\n expect(children).to.be.undefined;\n });\n\n describe('when scrolled 401px', function() {\n beforeEach(async function() {\n const scrollableElement = document.querySelector('#top')!;\n scrollableElement.scrollTo({ top: 401, behavior: 'instant' });\n await nextFrame();\n await allUpdates(element);\n snapshot = await a11ySnapshot();\n });\n\n it('should be visible', function() {\n expect(snapshot.children?.map(takeProps(['name', 'role']))).to.deep.equal([{ role: 'link', name: 'Back to top' }]);\n });\n });\n });\n\n describe('when no text is provided', function() {\n let element: PfBackToTop;\n let snapshot: A11yTreeSnapshot;\n\n describe('as a link', function() {\n beforeEach(async function() {\n await setViewport({ width: 320, height: 640 });\n window.scrollTo({ top: 0, behavior: 'instant' });\n await nextFrame();\n const container = await createFixture<PfBackToTop>(html`\n <div id=\"top\">\n <div style=\"height: 2000px;\"></div>\n <pf-back-to-top href=\"#top\"></pf-back-to-top>\n </div>\n `);\n element = container.querySelector('pf-back-to-top')!;\n await allUpdates(element);\n });\n\n describe('when scrolled', function() {\n beforeEach(async function() {\n window.scrollTo({ top: 401, behavior: 'instant' });\n await nextFrame();\n await allUpdates(element);\n snapshot = await a11ySnapshot();\n });\n\n it('should have a label of \"Back to top\"', function() {\n expect(snapshot.children?.map(takeProps(['name', 'role']))).to.deep.equal([{ role: 'link', name: 'Back to top' }]);\n });\n });\n });\n\n describe('as a button', function() {\n beforeEach(async function() {\n await setViewport({ width: 320, height: 640 });\n window.scrollTo({ top: 0, behavior: 'instant' });\n await nextFrame();\n const container = await createFixture<PfBackToTop>(html`\n <div id=\"top\">\n <div style=\"height: 2000px;\"></div>\n <pf-back-to-top></pf-back-to-top>\n </div>\n `);\n element = container.querySelector('pf-back-to-top')!;\n await allUpdates(element);\n });\n\n describe('when scrolled', function() {\n beforeEach(async function() {\n window.scrollTo({ top: 401, behavior: 'instant' });\n await nextFrame();\n await allUpdates(element);\n snapshot = await a11ySnapshot();\n });\n\n it('should have a label of \"Back to top\"', function() {\n expect(snapshot.children?.map(takeProps(['name', 'role']))).to.deep.equal([{ role: 'button', name: 'Back to top' }]);\n });\n });\n });\n });\n\n describe('when a label is provided', function() {\n let element: PfBackToTop;\n let snapshot: A11yTreeSnapshot;\n\n describe('as a link', function() {\n beforeEach(async function() {\n await setViewport({ width: 320, height: 640 });\n window.scrollTo({ top: 0, behavior: 'instant' });\n await nextFrame();\n const container = await createFixture<PfBackToTop>(html`\n <div id=\"top\">\n <div style=\"height: 2000px;\"></div>\n <pf-back-to-top href=\"#top\" label=\"Return to top\"></pf-back-to-top>\n </div>\n `);\n element = container.querySelector('pf-back-to-top')!;\n await allUpdates(element);\n });\n\n describe('when scrolled', function() {\n beforeEach(async function() {\n window.scrollTo({ top: 401, behavior: 'instant' });\n await nextFrame();\n await allUpdates(element);\n snapshot = await a11ySnapshot();\n });\n\n it('should have a label of \"Return to top\"', function() {\n expect(snapshot.children?.map(takeProps(['name', 'role']))).to.deep.equal([{ role: 'link', name: 'Return to top' }]);\n });\n });\n });\n\n describe('as a button', function() {\n beforeEach(async function() {\n await setViewport({ width: 320, height: 640 });\n window.scrollTo({ top: 0, behavior: 'instant' });\n await nextFrame();\n const container = await createFixture<PfBackToTop>(html`\n <div id=\"top\">\n <div style=\"height: 2000px;\"></div>\n <pf-back-to-top label=\"Return to top\"></pf-back-to-top>\n </div>\n `);\n element = container.querySelector('pf-back-to-top')!;\n await allUpdates(element);\n });\n\n describe('when scrolled', function() {\n beforeEach(async function() {\n window.scrollTo({ top: 401, behavior: 'instant' });\n await nextFrame();\n await allUpdates(element);\n snapshot = await a11ySnapshot();\n });\n\n it('should have a label of \"Return to top\"', function() {\n expect(snapshot.children?.map(takeProps(['name', 'role']))).to.deep.equal([{ role: 'button', name: 'Return to top' }]);\n });\n });\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"pf-back-to-top.spec.js","sourceRoot":"","sources":["pf-back-to-top.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, html, nextFrame } from '@open-wc/testing';\nimport { createFixture } from '@patternfly/pfe-tools/test/create-fixture.js';\nimport { setViewport, sendKeys } from '@web/test-runner-commands';\n\nimport { allUpdates } from '@patternfly/pfe-tools/test/utils.js';\n\nimport { PfBackToTop } from '../pf-back-to-top.js';\nimport { type A11yTreeSnapshot, a11ySnapshot } from '@patternfly/pfe-tools/test/a11y-snapshot.js';\n\nconst takeProps = (props: string[]) => (obj: object) =>\n Object.fromEntries(Object.entries(obj).filter(([k]) => props.includes(k)));\n\ndescribe('<pf-back-to-top>', function() {\n it('imperatively instantiates', function() {\n expect(document.createElement('pf-back-to-top')).to.be.an.instanceof(PfBackToTop);\n });\n\n describe('simply instantiating', function() {\n let element: PfBackToTop;\n\n beforeEach(async function() {\n element = await createFixture<PfBackToTop>(html`<pf-back-to-top></pf-back-to-top>`);\n });\n\n it('should upgrade', function() {\n const klass = customElements.get('pf-back-to-top');\n expect(element)\n .to.be.an.instanceOf(klass)\n .and\n .to.be.an.instanceOf(PfBackToTop);\n });\n });\n\n describe('when rendered in a viewport with a height smaller then content length', function() {\n let element: PfBackToTop;\n let snapshot: A11yTreeSnapshot;\n\n beforeEach(async function() {\n await setViewport({ width: 320, height: 640 });\n window.scrollTo({ top: 0, behavior: 'instant' });\n await nextFrame();\n const container = await createFixture<PfBackToTop>(html`\n <div id=\"top\">\n <div style=\"height: 2000px;\"></div>\n <pf-back-to-top href=\"#top\">Back to top</pf-back-to-top>\n </div>\n `);\n element = container.querySelector('pf-back-to-top')!;\n snapshot = await a11ySnapshot();\n\n await allUpdates(element);\n });\n\n it('should be hidden on init', function() {\n const { children } = snapshot;\n expect(children).to.be.undefined;\n });\n\n it('should not be accessible', function() {\n expect(snapshot.children).to.be.undefined;\n });\n\n describe('when scrolled 401px', function() {\n beforeEach(async function() {\n window.scrollTo({ top: 401, behavior: 'instant' });\n await nextFrame();\n await allUpdates(element);\n snapshot = await a11ySnapshot();\n });\n\n it('should be visible', function() {\n expect(snapshot.children?.map(takeProps(['name', 'role']))).to.deep.equal([{ role: 'link', name: 'Back to top' }]);\n });\n\n it('should be accessible', async function() {\n await expect(element).to.be.accessible();\n });\n\n describe('pressing the tab key', function() {\n beforeEach(async function() {\n await sendKeys({ press: 'Tab' });\n await allUpdates(element);\n await nextFrame();\n });\n\n it('should focus the component', function() {\n expect(document.activeElement).to.equal(element);\n });\n });\n });\n\n describe('when the always visible property is true', function() {\n beforeEach(async function() {\n window.scrollTo({ top: 0, behavior: 'instant' });\n await nextFrame();\n element.alwaysVisible = true;\n await allUpdates(element);\n snapshot = await a11ySnapshot();\n });\n\n it('should be visible', function() {\n expect(snapshot.children?.map(takeProps(['name', 'role']))).to.deep.equal([{ role: 'link', name: 'Back to top' }]);\n });\n\n it('should be accessible', async function() {\n await expect(element).to.be.accessible();\n });\n\n describe('pressing the tab key', function() {\n beforeEach(async function() {\n await sendKeys({ press: 'Tab' });\n await allUpdates(element);\n await nextFrame();\n });\n it('should focus the component', function() {\n expect(document.activeElement).to.equal(element);\n });\n });\n });\n\n describe('when the scroll distance is set to 1000', function() {\n beforeEach(async function() {\n element.scrollDistance = 1000;\n await allUpdates(element);\n snapshot = await a11ySnapshot();\n });\n\n it('should be hidden', function() {\n const { children } = snapshot;\n expect(children).to.be.undefined;\n });\n\n describe('when scrolled 1001px', function() {\n beforeEach(async function() {\n window.scrollTo({ top: 1001, behavior: 'instant' });\n await nextFrame();\n await allUpdates(element);\n snapshot = await a11ySnapshot();\n });\n\n it('should be visible', function() {\n expect(snapshot.children?.map(takeProps(['name', 'role']))).to.deep.equal([{ role: 'link', name: 'Back to top' }]);\n });\n });\n });\n });\n\n describe('when rendered in an element with an overflowed height', function() {\n let element: PfBackToTop;\n let snapshot: A11yTreeSnapshot;\n\n beforeEach(async function() {\n window.scrollTo({ top: 0, behavior: 'instant' });\n await nextFrame();\n const container = await createFixture<PfBackToTop>(html`\n <div id=\"top\" style=\"height: 500px; overflow-y: scroll;\">\n <div style=\"height: 2000px;\"></div>\n <pf-back-to-top href=\"#top\" scrollable-selector=\"#top\">Back to top</pf-back-to-top>\n </div>\n `);\n element = container.querySelector('pf-back-to-top')!;\n await allUpdates(element);\n\n snapshot = await a11ySnapshot({ selector: 'pf-back-to-top' });\n });\n\n it('should be hidden on init', function() {\n const { children } = snapshot;\n expect(children).to.be.undefined;\n });\n\n describe('when scrolled 401px', function() {\n beforeEach(async function() {\n const scrollableElement = document.querySelector('#top')!;\n scrollableElement.scrollTo({ top: 401, behavior: 'instant' });\n scrollableElement.dispatchEvent(new Event('scroll'));\n await nextFrame();\n await allUpdates(element);\n snapshot = await a11ySnapshot();\n });\n\n it('should be visible', function() {\n expect(snapshot.children?.at(0)?.children?.map(takeProps(['name', 'role']))).to.deep.equal([{ role: 'link', name: 'Back to top' }]);\n });\n });\n });\n\n describe('when no text is provided', function() {\n let element: PfBackToTop;\n let snapshot: A11yTreeSnapshot;\n\n describe('as a link', function() {\n beforeEach(async function() {\n await setViewport({ width: 320, height: 640 });\n window.scrollTo({ top: 0, behavior: 'instant' });\n await nextFrame();\n const container = await createFixture<PfBackToTop>(html`\n <div id=\"top\">\n <div style=\"height: 2000px;\"></div>\n <pf-back-to-top href=\"#top\"></pf-back-to-top>\n </div>\n `);\n element = container.querySelector('pf-back-to-top')!;\n await allUpdates(element);\n });\n\n describe('when scrolled', function() {\n beforeEach(async function() {\n window.scrollTo({ top: 401, behavior: 'instant' });\n await nextFrame();\n await allUpdates(element);\n snapshot = await a11ySnapshot();\n });\n\n it('should have a label of \"Back to top\"', function() {\n expect(snapshot.children?.map(takeProps(['name', 'role']))).to.deep.equal([{ role: 'link', name: 'Back to top' }]);\n });\n });\n });\n\n describe('as a button', function() {\n beforeEach(async function() {\n await setViewport({ width: 320, height: 640 });\n window.scrollTo({ top: 0, behavior: 'instant' });\n await nextFrame();\n const container = await createFixture<PfBackToTop>(html`\n <div id=\"top\">\n <div style=\"height: 2000px;\"></div>\n <pf-back-to-top></pf-back-to-top>\n </div>\n `);\n element = container.querySelector('pf-back-to-top')!;\n await allUpdates(element);\n });\n\n describe('when scrolled', function() {\n beforeEach(async function() {\n window.scrollTo({ top: 401, behavior: 'instant' });\n await nextFrame();\n await allUpdates(element);\n snapshot = await a11ySnapshot();\n });\n\n it('should have a label of \"Back to top\"', function() {\n expect(snapshot.children?.map(takeProps(['name', 'role']))).to.deep.equal([{ role: 'button', name: 'Back to top' }]);\n });\n });\n });\n });\n\n describe('when a label is provided', function() {\n let element: PfBackToTop;\n let snapshot: A11yTreeSnapshot;\n\n describe('as a link', function() {\n beforeEach(async function() {\n await setViewport({ width: 320, height: 640 });\n window.scrollTo({ top: 0, behavior: 'instant' });\n await nextFrame();\n const container = await createFixture<PfBackToTop>(html`\n <div id=\"top\">\n <div style=\"height: 2000px;\"></div>\n <pf-back-to-top href=\"#top\" label=\"Return to top\"></pf-back-to-top>\n </div>\n `);\n element = container.querySelector('pf-back-to-top')!;\n await allUpdates(element);\n });\n\n describe('when scrolled', function() {\n beforeEach(async function() {\n window.scrollTo({ top: 401, behavior: 'instant' });\n await nextFrame();\n await allUpdates(element);\n snapshot = await a11ySnapshot();\n });\n\n it('should have a label of \"Return to top\"', function() {\n expect(snapshot.children?.map(takeProps(['name', 'role']))).to.deep.equal([{ role: 'link', name: 'Return to top' }]);\n });\n });\n });\n\n describe('as a button', function() {\n beforeEach(async function() {\n await setViewport({ width: 320, height: 640 });\n window.scrollTo({ top: 0, behavior: 'instant' });\n await nextFrame();\n const container = await createFixture<PfBackToTop>(html`\n <div id=\"top\">\n <div style=\"height: 2000px;\"></div>\n <pf-back-to-top label=\"Return to top\"></pf-back-to-top>\n </div>\n `);\n element = container.querySelector('pf-back-to-top')!;\n await allUpdates(element);\n });\n\n describe('when scrolled', function() {\n beforeEach(async function() {\n window.scrollTo({ top: 401, behavior: 'instant' });\n await nextFrame();\n await allUpdates(element);\n snapshot = await a11ySnapshot();\n });\n\n it('should have a label of \"Return to top\"', function() {\n expect(snapshot.children?.map(takeProps(['name', 'role']))).to.deep.equal([{ role: 'button', name: 'Return to top' }]);\n });\n });\n });\n });\n});\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
:host {
|
|
2
2
|
display: flex;
|
|
3
3
|
|
|
4
|
+
/** Background image for the element */
|
|
4
5
|
--_background-image: var(--pf-c-background-image--BackgroundImage);
|
|
5
6
|
}
|
|
6
7
|
|
|
@@ -23,8 +24,10 @@
|
|
|
23
24
|
width: 100%;
|
|
24
25
|
height: 100%;
|
|
25
26
|
content: "";
|
|
27
|
+
/** Background color for the background image */
|
|
26
28
|
background-color: var(--pf-c-background-image--BackgroundColor, var(--pf-global--BackgroundColor--dark-100, #151515));
|
|
27
29
|
background-image: var(--_background-image);
|
|
30
|
+
/** SVG filter applied to the background image */
|
|
28
31
|
filter: var(--pf-c-background-image--Filter, url("#image_overlay"));
|
|
29
32
|
background-repeat: no-repeat;
|
|
30
33
|
background-size: cover;
|
|
@@ -43,24 +46,28 @@ slot[part="content"] {
|
|
|
43
46
|
|
|
44
47
|
@media screen and (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
|
|
45
48
|
#container::after {
|
|
49
|
+
/** Background image for 2x DPI screens */
|
|
46
50
|
background-image: var(--pf-c-background-image--BackgroundImage-2x, var(--_background-image-2x, var(--_background-image)));
|
|
47
51
|
}
|
|
48
52
|
}
|
|
49
53
|
|
|
50
54
|
@media screen and (min-width: 576px) {
|
|
51
55
|
#container::after {
|
|
56
|
+
/** Background image for small screens */
|
|
52
57
|
background-image: var(--pf-c-background-image--BackgroundImage--sm, var(--_background-image-sm, var(--_background-image)));
|
|
53
58
|
}
|
|
54
59
|
}
|
|
55
60
|
|
|
56
61
|
@media screen and (min-width: 576px) and (-webkit-min-device-pixel-ratio: 2), (min-width: 576px) and (min-resolution: 192dpi) {
|
|
57
62
|
#container::after {
|
|
63
|
+
/** Background image for small screens with 2x DPI */
|
|
58
64
|
background-image: var(--pf-c-background-image--BackgroundImage--sm-2x, var(--_background-image-sm-2x, var(--_background-image)));
|
|
59
65
|
}
|
|
60
66
|
}
|
|
61
67
|
|
|
62
68
|
@media screen and (min-width: 992px) {
|
|
63
69
|
#container::after {
|
|
70
|
+
/** Background image for large screens */
|
|
64
71
|
background-image: var(--pf-c-background-image--BackgroundImage--lg, var(--_background-image-lg, var(--_background-image)));
|
|
65
72
|
}
|
|
66
73
|
}
|
|
@@ -2,14 +2,7 @@ import { LitElement, type TemplateResult } from 'lit';
|
|
|
2
2
|
/**
|
|
3
3
|
* A **background image** allows you to place an image in the background of your page or area of a page.
|
|
4
4
|
* @summary Allows users to place an image in the background of your page or area of a page.
|
|
5
|
-
* @
|
|
6
|
-
* @cssprop {<color>} [--pf-c-background-image--BackgroundColor=#151515]
|
|
7
|
-
* @cssprop [--pf-c-background-image--Filter=url("#image_overlay")]
|
|
8
|
-
* @cssprop --pf-c-background-image--BackgroundImage
|
|
9
|
-
* @cssprop --pf-c-background-image--BackgroundImage-2x
|
|
10
|
-
* @cssprop --pf-c-background-image--BackgroundImage--sm
|
|
11
|
-
* @cssprop --pf-c-background-image--BackgroundImage--sm-2x
|
|
12
|
-
* @cssprop --pf-c-background-image--BackgroundImage--lg
|
|
5
|
+
* @alias Background Image
|
|
13
6
|
*/
|
|
14
7
|
export declare class PfBackgroundImage extends LitElement {
|
|
15
8
|
#private;
|