@patternfly/elements 3.0.0 → 3.0.1
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 +490 -484
- package/package.json +1 -1
- package/pf-accordion/BaseAccordion.js +2 -1
- package/pf-accordion/BaseAccordion.js.map +1 -1
- package/pf-accordion/BaseAccordionHeader.js +4 -1
- package/pf-accordion/BaseAccordionHeader.js.map +1 -1
- package/pf-accordion/BaseAccordionPanel.d.ts +1 -1
- package/pf-accordion/pf-accordion-header.d.ts +1 -1
- package/pf-accordion/pf-accordion.d.ts +0 -5
- package/pf-accordion/pf-accordion.js +0 -5
- package/pf-accordion/pf-accordion.js.map +1 -1
- package/pf-accordion/test/pf-accordion.e2e.d.ts +1 -0
- package/pf-accordion/test/pf-accordion.e2e.js +11 -0
- package/pf-accordion/test/pf-accordion.e2e.js.map +1 -0
- package/pf-accordion/test/pf-accordion.spec.d.ts +1 -0
- package/pf-accordion/test/pf-accordion.spec.js +1222 -0
- package/pf-accordion/test/pf-accordion.spec.js.map +1 -0
- package/pf-avatar/BaseAvatar.d.ts +1 -1
- package/pf-avatar/test/pf-avatar.e2e.d.ts +1 -0
- package/pf-avatar/test/pf-avatar.e2e.js +11 -0
- package/pf-avatar/test/pf-avatar.e2e.js.map +1 -0
- package/pf-avatar/test/pf-avatar.spec.d.ts +1 -0
- package/pf-avatar/test/pf-avatar.spec.js +45 -0
- package/pf-avatar/test/pf-avatar.spec.js.map +1 -0
- package/pf-back-to-top/demo/demo.css +25 -0
- package/pf-back-to-top/pf-back-to-top.d.ts +1 -1
- package/pf-back-to-top/test/pf-back-to-top.e2e.d.ts +1 -0
- package/pf-back-to-top/test/pf-back-to-top.e2e.js +11 -0
- package/pf-back-to-top/test/pf-back-to-top.e2e.js.map +1 -0
- package/pf-back-to-top/test/pf-back-to-top.spec.d.ts +1 -0
- package/pf-back-to-top/test/pf-back-to-top.spec.js +267 -0
- package/pf-back-to-top/test/pf-back-to-top.spec.js.map +1 -0
- package/pf-background-image/pf-background-image.d.ts +1 -4
- package/pf-background-image/pf-background-image.js +1 -4
- package/pf-background-image/pf-background-image.js.map +1 -1
- package/pf-background-image/test/pf-background-image.e2e.d.ts +1 -0
- package/pf-background-image/test/pf-background-image.e2e.js +11 -0
- package/pf-background-image/test/pf-background-image.e2e.js.map +1 -0
- package/pf-background-image/test/pf-background-image.spec.d.ts +1 -0
- package/pf-background-image/test/pf-background-image.spec.js +89 -0
- package/pf-background-image/test/pf-background-image.spec.js.map +1 -0
- package/pf-badge/BaseBadge.d.ts +1 -1
- package/pf-badge/test/pf-badge.e2e.d.ts +1 -0
- package/pf-badge/test/pf-badge.e2e.js +11 -0
- package/pf-badge/test/pf-badge.e2e.js.map +1 -0
- package/pf-badge/test/pf-badge.spec.d.ts +1 -0
- package/pf-badge/test/pf-badge.spec.js +52 -0
- package/pf-badge/test/pf-badge.spec.js.map +1 -0
- package/pf-banner/pf-banner.d.ts +1 -10
- package/pf-banner/pf-banner.js +0 -9
- package/pf-banner/pf-banner.js.map +1 -1
- package/pf-banner/test/pf-banner.e2e.d.ts +1 -0
- package/pf-banner/test/pf-banner.e2e.js +11 -0
- package/pf-banner/test/pf-banner.e2e.js.map +1 -0
- package/pf-banner/test/pf-banner.spec.d.ts +1 -0
- package/pf-banner/test/pf-banner.spec.js +81 -0
- package/pf-banner/test/pf-banner.spec.js.map +1 -0
- package/pf-button/BaseButton.d.ts +7 -2
- package/pf-button/BaseButton.js +4 -1
- package/pf-button/BaseButton.js.map +1 -1
- package/pf-button/pf-button.d.ts +1 -17
- package/pf-button/pf-button.js +10 -18
- package/pf-button/pf-button.js.map +1 -1
- package/pf-button/test/pf-button.e2e.d.ts +1 -0
- package/pf-button/test/pf-button.e2e.js +11 -0
- package/pf-button/test/pf-button.e2e.js.map +1 -0
- package/pf-button/test/pf-button.spec.d.ts +1 -0
- package/pf-button/test/pf-button.spec.js +124 -0
- package/pf-button/test/pf-button.spec.js.map +1 -0
- package/pf-card/BaseCard.d.ts +1 -1
- package/pf-card/test/pf-card.e2e.d.ts +1 -0
- package/pf-card/test/pf-card.e2e.js +11 -0
- package/pf-card/test/pf-card.e2e.js.map +1 -0
- package/pf-card/test/pf-card.spec.d.ts +1 -0
- package/pf-card/test/pf-card.spec.js +160 -0
- package/pf-card/test/pf-card.spec.js.map +1 -0
- package/pf-chip/pf-chip-group.d.ts +8 -5
- package/pf-chip/pf-chip-group.js +10 -10
- package/pf-chip/pf-chip-group.js.map +1 -1
- package/pf-chip/pf-chip.d.ts +8 -5
- package/pf-chip/pf-chip.js +4 -4
- package/pf-chip/pf-chip.js.map +1 -1
- package/pf-chip/test/pf-chip-group.spec.d.ts +1 -0
- package/pf-chip/test/pf-chip-group.spec.js +189 -0
- package/pf-chip/test/pf-chip-group.spec.js.map +1 -0
- package/pf-chip/test/pf-chip.e2e.d.ts +1 -0
- package/pf-chip/test/pf-chip.e2e.js +11 -0
- package/pf-chip/test/pf-chip.e2e.js.map +1 -0
- package/pf-chip/test/pf-chip.spec.d.ts +1 -0
- package/pf-chip/test/pf-chip.spec.js +116 -0
- package/pf-chip/test/pf-chip.spec.js.map +1 -0
- package/pf-clipboard-copy/pf-clipboard-copy.d.ts +8 -3
- package/pf-clipboard-copy/pf-clipboard-copy.js +5 -3
- package/pf-clipboard-copy/pf-clipboard-copy.js.map +1 -1
- package/pf-clipboard-copy/test/pf-clipboard-copy.e2e.d.ts +1 -0
- package/pf-clipboard-copy/test/pf-clipboard-copy.e2e.js +11 -0
- package/pf-clipboard-copy/test/pf-clipboard-copy.e2e.js.map +1 -0
- package/pf-clipboard-copy/test/pf-clipboard-copy.spec.d.ts +1 -0
- package/pf-clipboard-copy/test/pf-clipboard-copy.spec.js +103 -0
- package/pf-clipboard-copy/test/pf-clipboard-copy.spec.js.map +1 -0
- package/pf-code-block/BaseCodeBlock.js +2 -2
- package/pf-code-block/BaseCodeBlock.js.map +1 -1
- package/pf-code-block/pf-code-block.d.ts +1 -1
- package/pf-code-block/test/pf-code-block.e2e.d.ts +1 -0
- package/pf-code-block/test/pf-code-block.e2e.js +11 -0
- package/pf-code-block/test/pf-code-block.e2e.js.map +1 -0
- package/pf-code-block/test/pf-code-block.spec.d.ts +1 -0
- package/pf-code-block/test/pf-code-block.spec.js +89 -0
- package/pf-code-block/test/pf-code-block.spec.js.map +1 -0
- package/pf-dropdown/pf-dropdown-group.d.ts +1 -1
- package/pf-dropdown/pf-dropdown-group.js +4 -1
- package/pf-dropdown/pf-dropdown-group.js.map +1 -1
- package/pf-dropdown/pf-dropdown-item.d.ts +1 -2
- package/pf-dropdown/pf-dropdown-item.js +4 -2
- package/pf-dropdown/pf-dropdown-item.js.map +1 -1
- package/pf-dropdown/pf-dropdown-menu.d.ts +1 -2
- package/pf-dropdown/pf-dropdown-menu.js +8 -6
- package/pf-dropdown/pf-dropdown-menu.js.map +1 -1
- package/pf-dropdown/pf-dropdown.d.ts +8 -6
- package/pf-dropdown/pf-dropdown.js +11 -11
- package/pf-dropdown/pf-dropdown.js.map +1 -1
- package/pf-dropdown/test/pf-dropdown.e2e.d.ts +1 -0
- package/pf-dropdown/test/pf-dropdown.e2e.js +11 -0
- package/pf-dropdown/test/pf-dropdown.e2e.js.map +1 -0
- package/pf-dropdown/test/pf-dropdown.spec.d.ts +1 -0
- package/pf-dropdown/test/pf-dropdown.spec.js +129 -0
- package/pf-dropdown/test/pf-dropdown.spec.js.map +1 -0
- package/pf-icon/BaseIcon.d.ts +1 -2
- package/pf-icon/BaseIcon.js +3 -4
- package/pf-icon/BaseIcon.js.map +1 -1
- package/pf-icon/demo/icons/rh/boba-tea.js +5 -0
- package/pf-icon/demo/icons/rh/lifecycle.js +3 -0
- package/pf-icon/test/pf-icon.e2e.d.ts +1 -0
- package/pf-icon/test/pf-icon.e2e.js +11 -0
- package/pf-icon/test/pf-icon.e2e.js.map +1 -0
- package/pf-icon/test/pf-icon.spec.d.ts +1 -0
- package/pf-icon/test/pf-icon.spec.js +130 -0
- package/pf-icon/test/pf-icon.spec.js.map +1 -0
- package/pf-icon/test/rh-icon-aed.js +2 -0
- package/pf-icon/test/rh-icon-api.js +2 -0
- package/pf-icon/test/rh-icon-atom.js +2 -0
- package/pf-icon/test/rh-icon-bike.js +2 -0
- package/pf-jump-links/pf-jump-links-item.d.ts +8 -2
- package/pf-jump-links/pf-jump-links-item.js +4 -1
- package/pf-jump-links/pf-jump-links-item.js.map +1 -1
- package/pf-jump-links/pf-jump-links-list.d.ts +1 -1
- package/pf-jump-links/pf-jump-links.d.ts +1 -7
- package/pf-jump-links/pf-jump-links.js +1 -7
- package/pf-jump-links/pf-jump-links.js.map +1 -1
- package/pf-jump-links/test/pf-jump-links.e2e.d.ts +1 -0
- package/pf-jump-links/test/pf-jump-links.e2e.js +11 -0
- package/pf-jump-links/test/pf-jump-links.e2e.js.map +1 -0
- package/pf-jump-links/test/pf-jump-links.spec.d.ts +1 -0
- package/pf-jump-links/test/pf-jump-links.spec.js +85 -0
- package/pf-jump-links/test/pf-jump-links.spec.js.map +1 -0
- package/pf-label/BaseLabel.d.ts +1 -1
- package/pf-label/pf-label.d.ts +10 -24
- package/pf-label/pf-label.js +4 -21
- package/pf-label/pf-label.js.map +1 -1
- package/pf-label/test/pf-label.e2e.d.ts +1 -0
- package/pf-label/test/pf-label.e2e.js +11 -0
- package/pf-label/test/pf-label.e2e.js.map +1 -0
- package/pf-label/test/pf-label.spec.d.ts +1 -0
- package/pf-label/test/pf-label.spec.js +111 -0
- package/pf-label/test/pf-label.spec.js.map +1 -0
- package/pf-modal/pf-modal.d.ts +1 -6
- package/pf-modal/pf-modal.js +6 -8
- package/pf-modal/pf-modal.js.map +1 -1
- package/pf-modal/test/pf-modal.e2e.d.ts +1 -0
- package/pf-modal/test/pf-modal.e2e.js +13 -0
- package/pf-modal/test/pf-modal.e2e.js.map +1 -0
- package/pf-modal/test/pf-modal.spec.d.ts +1 -0
- package/pf-modal/test/pf-modal.spec.js +197 -0
- package/pf-modal/test/pf-modal.spec.js.map +1 -0
- package/pf-panel/pf-panel.d.ts +1 -1
- package/pf-panel/test/pf-panel.e2e.d.ts +1 -0
- package/pf-panel/test/pf-panel.e2e.js +11 -0
- package/pf-panel/test/pf-panel.e2e.js.map +1 -0
- package/pf-panel/test/pf-panel.spec.d.ts +1 -0
- package/pf-panel/test/pf-panel.spec.js +22 -0
- package/pf-panel/test/pf-panel.spec.js.map +1 -0
- package/pf-popover/pf-popover.d.ts +1 -5
- package/pf-popover/pf-popover.js +12 -7
- package/pf-popover/pf-popover.js.map +1 -1
- package/pf-popover/test/pf-popover.e2e.d.ts +1 -0
- package/pf-popover/test/pf-popover.e2e.js +11 -0
- package/pf-popover/test/pf-popover.e2e.js.map +1 -0
- package/pf-popover/test/pf-popover.spec.d.ts +1 -0
- package/pf-popover/test/pf-popover.spec.js +233 -0
- package/pf-popover/test/pf-popover.spec.js.map +1 -0
- package/pf-progress/demo/kitchen-sink.css +4 -0
- package/pf-progress/pf-progress.d.ts +1 -22
- package/pf-progress/pf-progress.js +1 -22
- package/pf-progress/pf-progress.js.map +1 -1
- package/pf-progress/test/pf-progress.e2e.d.ts +1 -0
- package/pf-progress/test/pf-progress.e2e.js +11 -0
- package/pf-progress/test/pf-progress.e2e.js.map +1 -0
- package/pf-progress/test/pf-progress.spec.d.ts +1 -0
- package/pf-progress/test/pf-progress.spec.js +45 -0
- package/pf-progress/test/pf-progress.spec.js.map +1 -0
- package/pf-progress-stepper/pf-progress-step.d.ts +1 -1
- package/pf-progress-stepper/pf-progress-stepper.d.ts +1 -1
- package/pf-progress-stepper/test/pf-progress-stepper.e2e.d.ts +1 -0
- package/pf-progress-stepper/test/pf-progress-stepper.e2e.js +11 -0
- package/pf-progress-stepper/test/pf-progress-stepper.e2e.js.map +1 -0
- package/pf-progress-stepper/test/pf-progress-stepper.spec.d.ts +1 -0
- package/pf-progress-stepper/test/pf-progress-stepper.spec.js +18 -0
- package/pf-progress-stepper/test/pf-progress-stepper.spec.js.map +1 -0
- package/pf-select/pf-option-group.d.ts +1 -1
- package/pf-select/pf-option-group.js +2 -0
- package/pf-select/pf-option-group.js.map +1 -1
- package/pf-select/pf-option.d.ts +1 -2
- package/pf-select/pf-option.js +3 -4
- package/pf-select/pf-option.js.map +1 -1
- package/pf-select/pf-select.d.ts +8 -3
- package/pf-select/pf-select.js +51 -21
- package/pf-select/pf-select.js.map +1 -1
- package/pf-select/test/pf-select.e2e.d.ts +1 -0
- package/pf-select/test/pf-select.e2e.js +11 -0
- package/pf-select/test/pf-select.e2e.js.map +1 -0
- package/pf-select/test/pf-select.spec.d.ts +1 -0
- package/pf-select/test/pf-select.spec.js +866 -0
- package/pf-select/test/pf-select.spec.js.map +1 -0
- package/pf-spinner/BaseSpinner.d.ts +1 -2
- package/pf-spinner/BaseSpinner.js +2 -4
- package/pf-spinner/BaseSpinner.js.map +1 -1
- package/pf-spinner/pf-spinner.d.ts +2 -2
- package/pf-spinner/pf-spinner.js +8 -1
- package/pf-spinner/pf-spinner.js.map +1 -1
- package/pf-spinner/test/pf-spinner.e2e.d.ts +1 -0
- package/pf-spinner/test/pf-spinner.e2e.js +11 -0
- package/pf-spinner/test/pf-spinner.e2e.js.map +1 -0
- package/pf-spinner/test/pf-spinner.spec.d.ts +1 -0
- package/pf-spinner/test/pf-spinner.spec.js +64 -0
- package/pf-spinner/test/pf-spinner.spec.js.map +1 -0
- package/pf-switch/BaseSwitch.d.ts +1 -1
- package/pf-switch/BaseSwitch.js +3 -3
- package/pf-switch/BaseSwitch.js.map +1 -1
- package/pf-switch/test/pf-switch.e2e.d.ts +1 -0
- package/pf-switch/test/pf-switch.e2e.js +11 -0
- package/pf-switch/test/pf-switch.e2e.js.map +1 -0
- package/pf-switch/test/pf-switch.spec.d.ts +1 -0
- package/pf-switch/test/pf-switch.spec.js +191 -0
- package/pf-switch/test/pf-switch.spec.js.map +1 -0
- package/pf-table/pf-caption.d.ts +1 -1
- package/pf-table/pf-table.d.ts +1 -3
- package/pf-table/pf-table.js +2 -4
- package/pf-table/pf-table.js.map +1 -1
- package/pf-table/pf-tbody.d.ts +1 -1
- package/pf-table/pf-td.d.ts +1 -1
- package/pf-table/pf-th.d.ts +1 -1
- package/pf-table/pf-th.js +3 -3
- package/pf-table/pf-th.js.map +1 -1
- package/pf-table/pf-thead.d.ts +1 -1
- package/pf-table/pf-tr.d.ts +1 -1
- package/pf-table/pf-tr.js +4 -4
- package/pf-table/pf-tr.js.map +1 -1
- package/pf-table/test/pf-table.e2e.d.ts +1 -0
- package/pf-table/test/pf-table.e2e.js +11 -0
- package/pf-table/test/pf-table.e2e.js.map +1 -0
- package/pf-table/test/pf-table.spec.d.ts +1 -0
- package/pf-table/test/pf-table.spec.js +17 -0
- package/pf-table/test/pf-table.spec.js.map +1 -0
- package/pf-tabs/BaseTab.d.ts +2 -2
- package/pf-tabs/BaseTab.js +4 -1
- package/pf-tabs/BaseTab.js.map +1 -1
- package/pf-tabs/BaseTabPanel.d.ts +1 -1
- package/pf-tabs/BaseTabs.d.ts +1 -3
- package/pf-tabs/BaseTabs.js +11 -12
- package/pf-tabs/BaseTabs.js.map +1 -1
- package/pf-tabs/pf-tab-panel.d.ts +1 -1
- package/pf-tabs/pf-tab.d.ts +1 -17
- package/pf-tabs/pf-tab.js +0 -16
- package/pf-tabs/pf-tab.js.map +1 -1
- package/pf-tabs/pf-tabs.d.ts +1 -12
- package/pf-tabs/pf-tabs.js +2 -13
- package/pf-tabs/pf-tabs.js.map +1 -1
- package/pf-tabs/test/pf-tabs.e2e.d.ts +1 -0
- package/pf-tabs/test/pf-tabs.e2e.js +13 -0
- package/pf-tabs/test/pf-tabs.e2e.js.map +1 -0
- package/pf-tabs/test/pf-tabs.spec.d.ts +1 -0
- package/pf-tabs/test/pf-tabs.spec.js +285 -0
- package/pf-tabs/test/pf-tabs.spec.js.map +1 -0
- package/pf-text-area/pf-text-area.d.ts +1 -2
- package/pf-text-area/pf-text-area.js +5 -5
- package/pf-text-area/pf-text-area.js.map +1 -1
- package/pf-text-area/test/pf-text-area.e2e.d.ts +1 -0
- package/pf-text-area/test/pf-text-area.e2e.js +11 -0
- package/pf-text-area/test/pf-text-area.e2e.js.map +1 -0
- package/pf-text-area/test/pf-text-area.spec.d.ts +1 -0
- package/pf-text-area/test/pf-text-area.spec.js +89 -0
- package/pf-text-area/test/pf-text-area.spec.js.map +1 -0
- package/pf-text-input/demo/demo.css +6 -0
- package/pf-text-input/pf-text-input.d.ts +8 -3
- package/pf-text-input/pf-text-input.js +4 -2
- package/pf-text-input/pf-text-input.js.map +1 -1
- package/pf-text-input/test/pf-text-input.e2e.d.ts +1 -0
- package/pf-text-input/test/pf-text-input.e2e.js +11 -0
- package/pf-text-input/test/pf-text-input.e2e.js.map +1 -0
- package/pf-text-input/test/pf-text-input.spec.d.ts +1 -0
- package/pf-text-input/test/pf-text-input.spec.js +20 -0
- package/pf-text-input/test/pf-text-input.spec.js.map +1 -0
- package/pf-tile/BaseTile.d.ts +1 -1
- package/pf-tile/pf-tile.d.ts +0 -12
- package/pf-tile/pf-tile.js +0 -12
- package/pf-tile/pf-tile.js.map +1 -1
- package/pf-tile/test/pf-tile.e2e.d.ts +1 -0
- package/pf-tile/test/pf-tile.e2e.js +11 -0
- package/pf-tile/test/pf-tile.e2e.js.map +1 -0
- package/pf-tile/test/pf-tile.spec.d.ts +1 -0
- package/pf-tile/test/pf-tile.spec.js +54 -0
- package/pf-tile/test/pf-tile.spec.js.map +1 -0
- package/pf-timestamp/pf-timestamp.d.ts +1 -1
- package/pf-timestamp/pf-timestamp.js +5 -1
- package/pf-timestamp/pf-timestamp.js.map +1 -1
- package/pf-timestamp/test/pf-timestamp.e2e.d.ts +1 -0
- package/pf-timestamp/test/pf-timestamp.e2e.js +12 -0
- package/pf-timestamp/test/pf-timestamp.e2e.js.map +1 -0
- package/pf-timestamp/test/pf-timestamp.spec.d.ts +1 -0
- package/pf-timestamp/test/pf-timestamp.spec.js +156 -0
- package/pf-timestamp/test/pf-timestamp.spec.js.map +1 -0
- package/pf-tooltip/BaseTooltip.d.ts +1 -1
- package/pf-tooltip/pf-tooltip.d.ts +1 -4
- package/pf-tooltip/pf-tooltip.js +6 -7
- package/pf-tooltip/pf-tooltip.js.map +1 -1
- package/pf-tooltip/test/pf-tooltip.e2e.d.ts +1 -0
- package/pf-tooltip/test/pf-tooltip.e2e.js +11 -0
- package/pf-tooltip/test/pf-tooltip.e2e.js.map +1 -0
- package/pf-tooltip/test/pf-tooltip.spec.d.ts +1 -0
- package/pf-tooltip/test/pf-tooltip.spec.js +53 -0
- package/pf-tooltip/test/pf-tooltip.spec.js.map +1 -0
- package/pfe.min.js +269 -266
- package/pfe.min.js.map +3 -3
- package/pf-accordion/README.md +0 -44
- package/pf-avatar/README.md +0 -31
- package/pf-back-to-top/README.md +0 -32
- package/pf-background-image/README.md +0 -37
- package/pf-badge/README.md +0 -57
- package/pf-banner/README.md +0 -60
- package/pf-button/README.md +0 -61
- package/pf-card/README.md +0 -34
- package/pf-chip/README.md +0 -20
- package/pf-clipboard-copy/README.md +0 -8
- package/pf-code-block/README.md +0 -77
- package/pf-dropdown/README.md +0 -46
- package/pf-icon/README.md +0 -86
- package/pf-icon/icons/fab/readme.svg +0 -1
- package/pf-jump-links/README.md +0 -27
- package/pf-label/README.md +0 -61
- package/pf-modal/README.md +0 -63
- package/pf-panel/README.md +0 -10
- package/pf-popover/README.md +0 -48
- package/pf-progress/README.md +0 -33
- package/pf-progress-stepper/README.md +0 -41
- package/pf-select/README.md +0 -21
- package/pf-spinner/README.md +0 -46
- package/pf-switch/README.md +0 -91
- package/pf-table/README.md +0 -43
- package/pf-tabs/README.md +0 -40
- package/pf-text-area/README.md +0 -11
- package/pf-text-input/README.md +0 -9
- package/pf-tile/README.md +0 -12
- package/pf-timestamp/README.md +0 -64
- package/pf-tooltip/README.md +0 -64
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pf-select.spec.js","sourceRoot":"","sources":["pf-select.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 { PfSelect } from '../pf-select.js';\nimport { sendKeys } from '@web/test-runner-commands';\nimport { a11ySnapshot } from '@patternfly/pfe-tools/test/a11y-snapshot.js';\n\nasync function shiftHold() {\n await sendKeys({ down: 'Shift' });\n}\n\nasync function shiftRelease() {\n await sendKeys({ up: 'Shift' });\n}\n\nasync function ctrlA() {\n await sendKeys({ down: 'Control' });\n await sendKeys({ down: 'a' });\n await sendKeys({ up: 'a' });\n await sendKeys({ up: 'Control' });\n}\n\nfunction press(key: string) {\n return async function() {\n await sendKeys({ press: key });\n };\n}\n\nfunction getValues(element: PfSelect) {\n return [element.selected].flat().filter(x => !!x).map(x => x!.value);\n}\n\ndescribe('<pf-select>', function() {\n let element: PfSelect;\n\n const updateComplete = () => element.updateComplete;\n\n const focus = () => element.focus();\n\n describe('simply instantiating', function() {\n it('imperatively instantiates', function() {\n expect(document.createElement('pf-select')).to.be.an.instanceof(PfSelect);\n });\n\n it('should upgrade', async function() {\n element = await createFixture<PfSelect>(html`<pf-select></pf-select>`);\n const klass = customElements.get('pf-select');\n expect(element)\n .to.be.an.instanceOf(klass)\n .and\n .to.be.an.instanceOf(PfSelect);\n });\n });\n\n describe('variant=\"single\"', function() {\n beforeEach(async function() {\n element = await createFixture<PfSelect>(html`\n <pf-select variant=\"single\"\n accessible-label=\"Choose a number\"\n placeholder=\"Choose a number\">\n <pf-option value=\"1\">1</pf-option>\n <pf-option value=\"2\">2</pf-option>\n <pf-option value=\"3\">3</pf-option>\n <pf-option value=\"4\">4</pf-option>\n <pf-option value=\"5\">5</pf-option>\n <pf-option value=\"6\">6</pf-option>\n <pf-option value=\"7\">7</pf-option>\n <pf-option value=\"8\">8</pf-option>\n </pf-select>`);\n });\n\n it('is accessible', async function() {\n await expect(element).to.be.accessible();\n });\n\n describe('without accessible label', function() {\n beforeEach(function() {\n element.accessibleLabel = undefined;\n });\n beforeEach(updateComplete);\n it('fails accessibility audit', async function() {\n await expect(element).to.not.be.accessible();\n });\n });\n\n describe('calling focus())', function() {\n beforeEach(function() {\n element.focus();\n });\n\n beforeEach(updateComplete);\n\n describe('pressing Enter', function() {\n beforeEach(press('Enter'));\n beforeEach(updateComplete);\n\n it('expands', async function() {\n expect(element.expanded).to.be.true;\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n expect(listbox).to.be.ok;\n });\n\n it('focuses on the placeholder', async function() {\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n const focused = listbox?.children?.find(x => x.focused);\n expect(focused?.name).to.equal('Choose a number');\n });\n });\n\n describe('pressing Space', function() {\n beforeEach(press(' '));\n beforeEach(updateComplete);\n\n it('expands', async function() {\n expect(element.expanded).to.be.true;\n const snapshot = await a11ySnapshot();\n expect(snapshot.children?.at(1)).to.be.ok;\n expect(snapshot.children?.at(1)?.role).to.equal('listbox');\n });\n\n it('focuses on the placeholder', async function() {\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n const focused = listbox?.children?.find(x => x.focused);\n expect(focused?.name).to.equal('Choose a number');\n });\n });\n\n describe('pressing ArrowDown', function() {\n beforeEach(press('ArrowDown'));\n beforeEach(updateComplete);\n\n it('expands', async function() {\n expect(element.expanded).to.be.true;\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n expect(listbox).to.be.ok;\n });\n\n it('focuses on option 1', async function() {\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n const focused = listbox?.children?.find(x => x.focused);\n expect(focused?.name).to.equal('Choose a number');\n });\n\n describe('then pressing ArrowUp', function() {\n beforeEach(press('ArrowUp'));\n beforeEach(updateComplete);\n it('focuses on the last option', async function() {\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n const focused = listbox?.children?.find(x => x.focused);\n expect(focused?.name).to.equal('8');\n });\n describe('then pressing ArrowDown', function() {\n beforeEach(press('ArrowDown'));\n beforeEach(updateComplete);\n it('focuses on the placeholder', async function() {\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n const focused = listbox?.children?.find(x => x.focused);\n expect(focused?.name).to.equal('Choose a number');\n });\n });\n });\n\n describe('then pressing ArrowDown', function() {\n beforeEach(press('ArrowDown'));\n beforeEach(updateComplete);\n\n it('focuses on option 1', async function() {\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n const focused = listbox?.children?.find(x => x.focused);\n expect(focused?.name).to.equal('1');\n });\n\n describe('then pressing ArrowUp', function() {\n beforeEach(press('ArrowUp'));\n beforeEach(updateComplete);\n it('focuses on the placeholder', async function() {\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n const focused = listbox?.children?.find(x => x.focused);\n expect(focused?.name).to.equal('Choose a number');\n });\n });\n\n describe('then pressing Enter', function() {\n beforeEach(press('Enter'));\n beforeEach(updateComplete);\n\n it('selects option 1', function() {\n expect(getValues(element)).to.deep.equal(['1']);\n });\n });\n });\n\n describe('then pressing Space', function() {\n beforeEach(press(' '));\n beforeEach(updateComplete);\n\n it('closes', function() {\n expect(element.expanded).to.be.false;\n });\n\n it('hides the listbox', async function() {\n const snapshot = await a11ySnapshot();\n expect(snapshot.children?.find(x => x.role === 'listbox')).to.be.undefined;\n });\n\n it('focuses the button', async function() {\n const snapshot = await a11ySnapshot();\n const focused = snapshot.children?.find(x => x.focused);\n expect(focused?.role).to.equal('combobox');\n expect(focused?.haspopup).to.equal('listbox');\n });\n\n it('does not select anything', async function() {\n // because the placeholder was focused\n expect(getValues(element)).to.deep.equal([]);\n });\n });\n\n describe('then pressing Tab', function() {\n beforeEach(press('Tab'));\n beforeEach(nextFrame);\n beforeEach(updateComplete);\n it('closes', function() {\n expect(element.expanded).to.be.false;\n });\n it('hides the listbox', async function() {\n const snapshot = await a11ySnapshot();\n expect(snapshot.children?.at(1)).to.be.undefined;\n });\n it('focuses the button', async function() {\n const snapshot = await a11ySnapshot();\n const focused = snapshot.children?.find(x => x.focused);\n expect(focused?.role).to.equal('combobox');\n expect(focused?.haspopup).to.equal('listbox');\n });\n });\n\n describe('then pressing Shift+Tab', function() {\n beforeEach(shiftHold);\n beforeEach(press('Tab'));\n beforeEach(shiftRelease);\n beforeEach(updateComplete);\n it('closes', function() {\n expect(element.expanded).to.be.false;\n });\n it('hides the listbox', async function() {\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n expect(listbox).to.be.undefined;\n });\n it('focuses the button', async function() {\n const snapshot = await a11ySnapshot();\n const focused = snapshot.children?.find(x => x.focused);\n expect(focused?.role).to.equal('combobox');\n expect(focused?.haspopup).to.equal('listbox');\n });\n });\n\n describe('then pressing Escape', function() {\n beforeEach(press('Escape'));\n beforeEach(nextFrame);\n beforeEach(updateComplete);\n it('closes', function() {\n expect(element.expanded).to.be.false;\n });\n it('hides the listbox', async function() {\n const snapshot = await a11ySnapshot();\n expect(snapshot.children?.at(1)).to.be.undefined;\n });\n it('focuses the button', async function() {\n const snapshot = await a11ySnapshot();\n const focused = snapshot.children?.find(x => x.focused);\n expect(focused?.role).to.equal('combobox');\n expect(focused?.haspopup).to.equal('listbox');\n });\n });\n });\n });\n });\n\n describe('variant=\"checkbox\"', function() {\n beforeEach(async function() {\n element = await createFixture<PfSelect>(html`\n <pf-select variant=\"checkbox\"\n accessible-label=\"Check it out\">\n <pf-option value=\"1\">1</pf-option>\n <pf-option value=\"2\">2</pf-option>\n <pf-option value=\"3\">3</pf-option>\n <pf-option value=\"4\">4</pf-option>\n <pf-option value=\"5\">5</pf-option>\n <pf-option value=\"6\">6</pf-option>\n <pf-option value=\"7\">7</pf-option>\n <pf-option value=\"8\">8</pf-option>\n </pf-select>`);\n });\n\n it('is accessible', async function() {\n await expect(element).to.be.accessible();\n });\n\n describe('calling focus())', function() {\n beforeEach(function() {\n element.focus();\n });\n\n beforeEach(updateComplete);\n describe('pressing Enter', function() {\n beforeEach(press('Enter'));\n beforeEach(updateComplete);\n\n it('expands', async function() {\n expect(element.expanded).to.be.true;\n const snapshot = await a11ySnapshot();\n expect(snapshot.children?.at(1)).to.be.ok;\n expect(snapshot.children?.at(1)?.role).to.equal('listbox');\n });\n\n it('should NOT use checkbox role for options', async function() {\n const snapshot = await a11ySnapshot();\n expect(snapshot.children?.at(1)?.children?.filter(x => x.role === 'checkbox')?.length)\n .to.equal(0);\n });\n });\n\n describe('pressing Space', function() {\n beforeEach(press(' '));\n beforeEach(updateComplete);\n it('expands', async function() {\n expect(element.expanded).to.be.true;\n const snapshot = await a11ySnapshot();\n expect(snapshot.children?.at(1)).to.be.ok;\n expect(snapshot.children?.at(1)?.role).to.equal('listbox');\n });\n });\n\n describe('pressing ArrowDown', function() {\n beforeEach(press('ArrowDown'));\n beforeEach(updateComplete);\n it('expands', async function() {\n expect(element.expanded).to.be.true;\n const snapshot = await a11ySnapshot();\n expect(snapshot.children?.at(1)).to.be.ok;\n expect(snapshot.children?.at(1)?.role).to.equal('listbox');\n });\n\n describe('then pressing Shift+Tab', function() {\n beforeEach(shiftHold);\n beforeEach(press('Tab'));\n beforeEach(shiftRelease);\n beforeEach(updateComplete);\n\n it('closes', async function() {\n expect(element.expanded).to.be.false;\n });\n\n it('hides the listbox', async function() {\n const snapshot = await a11ySnapshot();\n expect(snapshot.children?.at(1)).to.be.undefined;\n });\n\n it('focuses the button', async function() {\n const snapshot = await a11ySnapshot();\n expect(snapshot.children?.at(0)?.role).to.equal('combobox');\n expect(snapshot.children?.at(0)?.focused).to.be.true;\n });\n });\n\n describe('then pressing Tab', function() {\n beforeEach(press('Tab'));\n beforeEach(nextFrame);\n beforeEach(updateComplete);\n // a little extra sleep to de-flake this test\n beforeEach(nextFrame);\n beforeEach(updateComplete);\n it('closes', function() {\n expect(element.expanded).to.be.false;\n });\n it('hides the listbox', async function() {\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n expect(listbox).to.be.undefined;\n });\n });\n\n describe('then pressing Escape', function() {\n beforeEach(press('Escape'));\n beforeEach(updateComplete);\n it('closes', function() {\n expect(element.expanded).to.be.false;\n });\n it('hides the listbox', async function() {\n const snapshot = await a11ySnapshot();\n expect(snapshot.children?.at(1)).to.be.undefined;\n });\n it('focuses the button', async function() {\n const snapshot = await a11ySnapshot();\n const focused = snapshot.children?.find(x => x.focused);\n expect(focused?.role).to.equal('combobox');\n });\n });\n\n describe('then pressing Space', function() {\n beforeEach(press(' '));\n beforeEach(updateComplete);\n\n it('selects option 1', function() {\n // because the placeholder was focused\n expect(getValues(element)).to.deep.equal(['1']);\n });\n\n it('remains expanded', async function() {\n expect(element.expanded).to.be.true;\n const snapshot = await a11ySnapshot();\n expect(snapshot.children?.at(1)?.role).to.equal('listbox');\n });\n\n describe('then pressing ArrowDown', function() {\n beforeEach(press('ArrowDown'));\n beforeEach(updateComplete);\n it('focuses option 1', async function() {\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n const focused = listbox?.children?.find(x => x.focused);\n expect(focused?.name).to.equal('2');\n });\n describe('then pressing Enter', function() {\n beforeEach(press('Enter'));\n beforeEach(updateComplete);\n it('adds option 2 to selection', function() {\n expect(getValues(element)).to.deep.equal([\n '1',\n '2',\n ]);\n });\n\n it('remains expanded', async function() {\n expect(element.expanded).to.be.true;\n const snapshot = await a11ySnapshot();\n expect(snapshot.children?.at(1)?.role).to.equal('listbox');\n });\n\n describe('then holding Shift and pressing down arrow / enter twice in a row', function() {\n beforeEach(shiftHold);\n beforeEach(press('ArrowDown'));\n beforeEach(press('Enter'));\n beforeEach(press('ArrowDown'));\n beforeEach(press('Enter'));\n beforeEach(shiftRelease);\n beforeEach(updateComplete);\n\n it('adds options 2 and 3 to the selected list', function() {\n expect(getValues(element)).to.deep.equal([\n '1',\n '2',\n '3',\n '4',\n ]);\n });\n\n describe('then pressing ArrowUp and Enter', function() {\n beforeEach(press('ArrowUp'));\n beforeEach(press('Enter'));\n beforeEach(updateComplete);\n\n it('deselects option 3', function() {\n expect(getValues(element)).to.deep.equal([\n '1',\n '2',\n '4',\n ]);\n });\n\n describe('then holding down Shift and pressing arrow up / enter twice in a row', function() {\n beforeEach(press('ArrowUp'));\n beforeEach(press('Enter'));\n beforeEach(updateComplete);\n beforeEach(press('ArrowUp'));\n beforeEach(press('Enter'));\n beforeEach(updateComplete);\n beforeEach(shiftRelease);\n beforeEach(updateComplete);\n\n it('deselects options 1 and 2', function() {\n expect(getValues(element)).to.deep.equal([\n '4',\n ]);\n });\n\n describe('then pressing Ctrl+A', function() {\n beforeEach(ctrlA);\n beforeEach(updateComplete);\n\n it('selects all options', function() {\n expect(getValues(element)).to.deep.equal([\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n ]);\n });\n\n describe('then pressing Ctrl+A again', function() {\n beforeEach(ctrlA);\n beforeEach(updateComplete);\n it('deselects all options', function() {\n expect(getValues(element)).to.deep.equal([]);\n });\n });\n });\n });\n });\n });\n });\n });\n });\n });\n });\n });\n\n // try again when we implement activedescendant\n describe.skip('variant=\"typeahead\"', function() {\n beforeEach(async function() {\n element = await createFixture<PfSelect>(html`\n <pf-select variant=\"${'typeahead' as 'single'}\">\n <pf-option value=\"Blue\">Blue</pf-option>\n <pf-option value=\"Green\">Green</pf-option>\n <pf-option value=\"Magenta\">Magenta</pf-option>\n <pf-option value=\"Orange\">Orange</pf-option>\n <pf-option value=\"Purple\">Purple</pf-option>\n <pf-option value=\"Pink\">Pink</pf-option>\n <pf-option value=\"Red\">Red</pf-option>\n <pf-option value=\"Yellow\">Yellow</pf-option>\n </pf-select>`);\n });\n\n describe('custom filtering', function() {\n beforeEach(function() {\n // @ts-expect-error: we intend to implement this in the next release\n element.customFilter = option =>\n // @ts-expect-error: TODO add filter feature\n new RegExp(element.filter).test(option.value);\n });\n\n beforeEach(focus);\n\n beforeEach(updateComplete);\n\n describe('typing \"r\"', function() {\n beforeEach(press('r'));\n beforeEach(updateComplete);\n it('shows options with \"r\" anywhere in them', async function() {\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n expect(listbox?.children?.length).to.equal(3);\n expect(listbox?.children?.at(0)?.name).to.equal('Green');\n expect(listbox?.children?.at(1)?.name).to.equal('Orange');\n expect(listbox?.children?.at(2)?.name).to.equal('Purple');\n });\n });\n\n describe('typing \"R\"', function() {\n beforeEach(press('R'));\n beforeEach(nextFrame);\n beforeEach(updateComplete);\n it('shows options that contain \"R\"', async function() {\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n expect(listbox?.children?.length).to.equal(1);\n expect(listbox?.children?.at(0)?.name).to.equal('Red');\n });\n });\n });\n\n describe('calling focus()', function() {\n beforeEach(focus);\n\n beforeEach(updateComplete);\n\n it('has a text input for typeahead', async function() {\n const snapshot = await a11ySnapshot();\n const [typeahead] = snapshot.children ?? [];\n expect(typeahead).to.deep.equal({\n role: 'combobox',\n name: 'Options',\n focused: true,\n autocomplete: 'both',\n haspopup: 'listbox',\n });\n });\n\n describe('typing \"r\"', function() {\n beforeEach(press('r'));\n beforeEach(updateComplete);\n\n it('only shows options that start with \"r\" or \"R\"', async function() {\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n expect(listbox?.children?.every(x => x.name.toLowerCase().startsWith('r'))).to.be.true;\n });\n });\n\n describe('setting filter to \"*\"', function() {\n beforeEach(function() {\n // @ts-expect-error: todo: add filter feature\n element.filter = '*';\n });\n beforeEach(updateComplete);\n it('does not error', async function() {\n const snapshot = await a11ySnapshot();\n const [, , listbox] = snapshot.children ?? [];\n expect(listbox?.children).to.not.be.ok;\n });\n });\n\n describe('changing input value to \"p\"', function() {\n beforeEach(press('p'));\n beforeEach(updateComplete);\n\n it('only shows listbox items starting with the letter p', async function() {\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n expect(listbox?.children?.length).to.equal(2);\n expect(listbox?.children?.at(0)?.name).to.equal('Purple');\n expect(listbox?.children?.at(1)?.name).to.equal('Pink');\n });\n\n it('maintains focus on the input', async function() {\n const snapshot = await a11ySnapshot();\n const focused = snapshot.children?.find(x => x.focused);\n expect(focused?.role).to.equal('combobox');\n });\n\n describe('pressing Backspace so input value is \"\"', function() {\n beforeEach(press('Backspace'));\n beforeEach(updateComplete);\n\n it('all options are visible', async function() {\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n expect(listbox?.children?.length).to.equal(8);\n expect(listbox?.children?.at(0)?.name).to.equal('Blue');\n expect(listbox?.children?.at(1)?.name).to.equal('Green');\n expect(listbox?.children?.at(2)?.name).to.equal('Magenta');\n expect(listbox?.children?.at(3)?.name).to.equal('Orange');\n expect(listbox?.children?.at(4)?.name).to.equal('Purple');\n expect(listbox?.children?.at(5)?.name).to.equal('Pink');\n expect(listbox?.children?.at(6)?.name).to.equal('Red');\n expect(listbox?.children?.at(7)?.name).to.equal('Yellow');\n });\n });\n });\n\n describe('pressing ArrowDown', function() {\n beforeEach(press('ArrowDown'));\n beforeEach(nextFrame);\n beforeEach(updateComplete);\n it('expands', async function() {\n expect(element.expanded).to.be.true;\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n expect(listbox).to.be.ok;\n });\n it('selects the first item', async function() {\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n const focused = listbox?.children?.find(x => x.focused);\n expect(focused).to.not.be.ok;\n const selected = listbox?.children?.find(x => x.selected);\n expect(selected).to.be.ok;\n expect(listbox?.children?.at(0)).to.equal(selected);\n });\n it('does not move keyboard focus', async function() {\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n const focused = listbox?.children?.find(x => x.focused);\n expect(focused).to.not.be.ok;\n });\n describe('then pressing ArrowDown', function() {\n beforeEach(press('ArrowDown'));\n beforeEach(updateComplete);\n it('focuses the first option', async function() {\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n const focused = listbox?.children?.find(x => x.focused);\n expect(focused).to.be.ok;\n expect(listbox?.children?.indexOf(focused!)).to.equal(0);\n });\n describe('then pressing Enter', function() {\n beforeEach(press('Enter'));\n beforeEach(updateComplete);\n it('selects the second option', function() {\n expect(getValues(element)).to.deep.equal(['Green']);\n });\n it('sets typeahead input to second option value', async function() {\n const snapshot = await a11ySnapshot();\n const [combobox] = snapshot.children ?? [];\n expect(combobox?.value).to.equal('Green');\n });\n it('focuses on toggle button', async function() {\n const snapshot = await a11ySnapshot();\n const focused = snapshot.children?.find(x => x.focused);\n expect(focused?.role).to.equal('button');\n expect(focused?.haspopup).to.equal('listbox');\n });\n it('closes', async function() {\n expect(element.expanded).to.be.false;\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n expect(listbox).to.be.undefined;\n });\n });\n });\n });\n });\n });\n\n // try again when we implement activedescendant\n describe.skip('variant=\"typeaheadmulti\"', function() {\n beforeEach(async function() {\n element = await createFixture<PfSelect>(html`\n <pf-select variant=\"typeaheadmulti\">\n <pf-option value=\"Amethyst\">Amethyst</pf-option>\n <pf-option value=\"Beryl\">Beryl</pf-option>\n <pf-option value=\"Chalcedony\">Chalcedony</pf-option>\n <pf-option value=\"Diamond\">Diamond</pf-option>\n <pf-option value=\"Emerald\">Emerald</pf-option>\n <pf-option value=\"Fool's Gold\">Fool's Gold</pf-option>\n <pf-option value=\"Garnet\">Garnet</pf-option>\n <pf-option value=\"Halite\">Halite</pf-option>\n <pf-option value=\"Iris\">Iris</pf-option>\n </pf-select>`);\n });\n\n describe('calling focus()', function() {\n beforeEach(function() {\n element.focus();\n });\n beforeEach(updateComplete);\n\n it('focuses the typeahead input', async function() {\n const snapshot = await a11ySnapshot();\n const [input] = snapshot.children ?? [];\n expect(input.focused).to.be.true;\n expect(input.role).to.equal('combobox');\n });\n\n describe('pressing ArrowDown', function() {\n beforeEach(press('ArrowDown'));\n beforeEach(updateComplete);\n\n it('expands', function() {\n expect(element.expanded).to.be.true;\n });\n\n it('shows the listbox', async function() {\n const snapshot = await a11ySnapshot();\n expect(snapshot.children?.find(x => x.role === 'listbox')).to.be.ok;\n });\n\n it('focuses the first option', async function() {\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n expect(listbox?.children?.find(x => x.focused)?.name).to.equal('Amethyst');\n });\n\n describe('then pressing Shift+Tab', function() {\n beforeEach(shiftHold);\n beforeEach(press('Tab'));\n beforeEach(shiftRelease);\n beforeEach(updateComplete);\n it('closes', function() {\n expect(element.expanded).to.be.false;\n });\n\n it('hides the listbox', async function() {\n const snapshot = await a11ySnapshot();\n expect(snapshot.children?.find(x => x.role === 'listbox')).to.be.undefined;\n });\n\n it('focuses the toggle button', async function() {\n const snapshot = await a11ySnapshot();\n const focused = snapshot?.children?.find(x => x.focused);\n expect(focused?.role).to.equal('button');\n expect(focused?.haspopup).to.equal('listbox');\n });\n\n describe('then pressing Shift+Tab', function() {\n beforeEach(shiftHold);\n beforeEach(press('Tab'));\n beforeEach(shiftRelease);\n beforeEach(updateComplete);\n it('focuses the combobox input', async function() {\n const snapshot = await a11ySnapshot();\n const focused = snapshot?.children?.find(x => x.focused);\n expect(focused?.role).to.equal('combobox');\n expect(focused?.haspopup).to.equal('listbox');\n });\n });\n });\n\n describe('then pressing ArrowDown', function() {\n beforeEach(press('ArrowDown'));\n beforeEach(updateComplete);\n describe('then pressing Enter', function() {\n beforeEach(press('Enter'));\n beforeEach(updateComplete);\n it('selects the second option', function() {\n expect(getValues(element)).to.deep.equal(['Beryl']);\n });\n it('focuses on second option', async function() {\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n expect(listbox?.children?.find(x => x.focused)?.name).to.equal('Beryl');\n });\n it('remains expanded', async function() {\n expect(element.expanded).to.be.true;\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n expect(listbox).to.be.ok;\n });\n it('shows 1 chip', async function() {\n const snapshot = await a11ySnapshot();\n const [, chip1close] = snapshot.children ?? [];\n expect(chip1close?.role).to.equal('button');\n expect(chip1close?.name).to.equal('Close');\n expect(chip1close?.description).to.equal('Beryl');\n });\n describe('then pressing ArrowUp', function() {\n beforeEach(press('ArrowUp'));\n beforeEach(updateComplete);\n it('focuses the first option', async function() {\n const snapshot = await a11ySnapshot();\n const listbox = snapshot.children?.find(x => x.role === 'listbox');\n const focused = listbox?.children?.find(x => x.focused);\n expect(focused?.name).to.equal('Amethyst');\n });\n describe('then pressing Enter', function() {\n beforeEach(press('Enter'));\n beforeEach(updateComplete);\n it('adds second option to selected values', function() {\n expect(getValues(element)).to.deep.equal(['Amethyst', 'Beryl']);\n });\n it('accessible combo button label should be \"2 items selected\"', async function() {\n const snapshot = await a11ySnapshot();\n const button = snapshot.children?.find(x => x.role === 'combobox');\n expect(button?.name).to.equal('2 items selected');\n });\n it('shows 2 chips', async function() {\n const snapshot = await a11ySnapshot();\n const [, chip1close, , chip2close] = snapshot.children ?? [];\n expect(chip1close?.role).to.equal('button');\n expect(chip1close?.name).to.equal('Close');\n expect(chip1close?.description).to.equal('Amethyst');\n expect(chip2close?.role).to.equal('button');\n expect(chip2close?.name).to.equal('Close');\n expect(chip2close?.description).to.equal('Beryl');\n });\n describe('then pressing Shift+Tab', function() {\n beforeEach(shiftHold);\n beforeEach(press('Tab'));\n beforeEach(shiftRelease);\n beforeEach(updateComplete);\n it('focuses the toggle button', async function() {\n const snapshot = await a11ySnapshot();\n const focused = snapshot.children?.find(x => x.focused);\n expect(focused?.role).to.equal('button');\n expect(focused?.haspopup).to.equal('listbox');\n });\n describe('then pressing Shift+Tab', function() {\n beforeEach(shiftHold);\n beforeEach(press('Tab'));\n beforeEach(shiftRelease);\n beforeEach(updateComplete);\n it('focuses the combobox input', async function() {\n const snapshot = await a11ySnapshot();\n const focused = snapshot.children?.find(x => x.focused);\n expect(focused?.role).to.equal('combobox');\n });\n describe('then pressing Shift+Tab', function() {\n beforeEach(shiftHold);\n beforeEach(press('Tab'));\n beforeEach(shiftRelease);\n beforeEach(updateComplete);\n it('focuses the last chip\\'s close button', async function() {\n const snapshot = await a11ySnapshot();\n const focused = snapshot.children?.find(x => x.focused);\n expect(focused?.role).to.equal('button');\n expect(focused?.name).to.equal('Close');\n expect(focused?.description).to.equal('Beryl');\n });\n describe('then pressing Space', function() {\n beforeEach(updateComplete);\n beforeEach(press(' '));\n beforeEach(updateComplete);\n beforeEach(updateComplete);\n it('removes the second chip', async function() {\n const snapshot = await a11ySnapshot();\n const [, chip1close, ...rest] = snapshot.children ?? [];\n expect(chip1close?.role).to.equal('button');\n expect(chip1close?.name).to.equal('Close');\n expect(chip1close?.description).to.equal('Amethyst');\n expect(rest.filter(x => 'description' in x)?.length).to.equal(0);\n });\n it('removes the second option from the selected values', function() {\n expect(getValues(element)).to.deep.equal(['Amethyst']);\n });\n it('focuses the combobox', async function() {\n const snapshot = await a11ySnapshot();\n const focused = snapshot.children?.find(x => x.focused);\n expect(focused?.role).to.equal('combobox');\n });\n describe('then pressing Shift+Tab', function() {\n beforeEach(shiftHold);\n beforeEach(press('Tab'));\n beforeEach(shiftRelease);\n beforeEach(updateComplete);\n it('focuses the first chip', async function() {\n const snapshot = await a11ySnapshot();\n const focused = snapshot.children?.find(x => x.focused);\n expect(focused?.role).to.equal('button');\n expect(focused?.description).to.equal('Amethyst');\n });\n describe('then pressing Space', function() {\n beforeEach(press(' '));\n beforeEach(updateComplete);\n it('removes all chips', async function() {\n const snapshot = await a11ySnapshot();\n expect(snapshot.children?.find(x => x.role === 'button' && x.name === 'Close'))\n .to.be.undefined;\n });\n it('focuses the typeahead input', async function() {\n const snapshot = await a11ySnapshot();\n const focused = snapshot.children?.find(x => x.focused);\n expect(focused?.role).to.equal('combobox');\n });\n });\n });\n });\n });\n });\n });\n });\n });\n });\n });\n });\n });\n });\n});\n"]}
|
|
@@ -2,7 +2,6 @@ import { LitElement } from 'lit';
|
|
|
2
2
|
export type SpinnerSize = ('sm' | 'md' | 'lg' | 'xl');
|
|
3
3
|
/**
|
|
4
4
|
* Base spinner class
|
|
5
|
-
*
|
|
6
5
|
* @cssprop {<length>} --pf-c-spinner--diameter {@default `3.375rem`}
|
|
7
6
|
* @cssprop {<length>} --pf-c-spinner--Width {@default `3.375rem`}
|
|
8
7
|
* @cssprop {<length>} --pf-c-spinner--Height {@default `3.375rem`}
|
|
@@ -24,5 +23,5 @@ export declare abstract class BaseSpinner extends LitElement {
|
|
|
24
23
|
size: SpinnerSize;
|
|
25
24
|
/** Custom diameter of spinner set as CSS variable */
|
|
26
25
|
diameter?: `${string}${'px' | '%' | 'rem' | 'em' | 'fr' | 'pt'}`;
|
|
27
|
-
render(): import("lit").TemplateResult<1>;
|
|
26
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
28
27
|
}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
1
|
// will remove file in 2627
|
|
3
|
-
|
|
2
|
+
import { __decorate } from "tslib";
|
|
4
3
|
import { LitElement, html } from 'lit';
|
|
5
4
|
import { property } from 'lit/decorators/property.js';
|
|
6
5
|
import { css } from "lit";
|
|
7
6
|
const styles = css `:host {\n display: inline-block;\n width: min-content;\n min-height: 0;\n aspect-ratio: 1 / 1;\n}\n\nsvg {\n overflow: hidden;\n}\n\ncircle {\n width: 100%;\n height: 100%;\n transform-origin: 50% 50%;\n stroke-linecap: round;\n stroke-dasharray: 283;\n stroke-dashoffset: 280;\n}\n\n`;
|
|
8
7
|
/**
|
|
9
8
|
* Base spinner class
|
|
10
|
-
*
|
|
11
9
|
* @cssprop {<length>} --pf-c-spinner--diameter {@default `3.375rem`}
|
|
12
10
|
* @cssprop {<length>} --pf-c-spinner--Width {@default `3.375rem`}
|
|
13
11
|
* @cssprop {<length>} --pf-c-spinner--Height {@default `3.375rem`}
|
|
@@ -31,7 +29,7 @@ export class BaseSpinner extends LitElement {
|
|
|
31
29
|
}
|
|
32
30
|
render() {
|
|
33
31
|
return html `
|
|
34
|
-
<svg
|
|
32
|
+
<svg viewBox="0 0 100 100">
|
|
35
33
|
<circle cx="50" cy="50" r="45" fill="none" />
|
|
36
34
|
</svg>
|
|
37
35
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseSpinner.js","sourceRoot":"","sources":["BaseSpinner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BaseSpinner.js","sourceRoot":"","sources":["BaseSpinner.ts"],"names":[],"mappings":"AAAA,2BAA2B;;AAE3B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;;;AAWtD;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,OAAgB,WAAY,SAAQ,UAAU;IAApD;;QAGE,mCAAmC;QACN,SAAI,GAAgB,IAAI,CAAC;IAYxD,CAAC;IAPU,MAAM;QACb,OAAO,IAAI,CAAA;;;;KAIV,CAAC;IACJ,CAAC;;AAde,kBAAM,GAAG,CAAC,MAAM,CAAC,AAAX,CAAY;AAGL;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;yCAA0B;AAGzB;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;6CAAkE","sourcesContent":["// will remove file in 2627\n\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators/property.js';\n\nimport styles from './BaseSpinner.css';\n\nexport type SpinnerSize = (\n | 'sm'\n | 'md'\n | 'lg'\n | 'xl'\n);\n\n/**\n * Base spinner class\n * @cssprop {<length>} --pf-c-spinner--diameter {@default `3.375rem`}\n * @cssprop {<length>} --pf-c-spinner--Width {@default `3.375rem`}\n * @cssprop {<length>} --pf-c-spinner--Height {@default `3.375rem`}\n * @cssprop {<color>} --pf-c-spinner--Color {@default `#06c`}\n * @cssprop {<length>} --pf-c-spinner--m-sm--diameter {@default `0.625rem`}\n * @cssprop {<length>} --pf-c-spinner--m-md--diameter {@default `1.125rem`}\n * @cssprop {<length>} --pf-c-spinner--m-lg--diameter {@default `1.5rem`}\n * @cssprop {<length>} --pf-c-spinner--m-xl--diameter {@default `3.375rem`}\n * @cssprop {<time>} --pf-c-spinner--AnimationDuration {@default `1.4s`}\n * @cssprop {<string>} --pf-c-spinner--AnimationTimingFunction {@default `linear`}\n * @cssprop {<number>} --pf-c-spinner--stroke-width {@default `10`}\n * @cssprop {<color>} --pf-c-spinner__path--Stroke {@default `#06c`}\n * @cssprop {<number>} --pf-c-spinner__path--StrokeWidth {@default `10`}\n * @cssprop {<string>} --pf-c-spinner__path--AnimationTimingFunction {@default `ease-in-out`}\n */\n\nexport abstract class BaseSpinner extends LitElement {\n static readonly styles = [styles];\n\n /** Preset sizes for the spinner */\n @property({ reflect: true }) size: SpinnerSize = 'xl';\n\n /** Custom diameter of spinner set as CSS variable */\n @property({ reflect: true }) diameter?: `${string}${'px' | '%' | 'rem' | 'em' | 'fr' | 'pt'}`;\n\n override render() {\n return html`\n <svg viewBox=\"0 0 100 100\">\n <circle cx=\"50\" cy=\"50\" r=\"45\" fill=\"none\" />\n </svg>\n `;\n }\n}\n"]}
|
|
@@ -2,7 +2,6 @@ import { BaseSpinner } from './BaseSpinner.js';
|
|
|
2
2
|
/**
|
|
3
3
|
* A **spinner** is used to indicate to users that an action is in progress. For actions
|
|
4
4
|
* that may take a long time, use a progress bar instead.
|
|
5
|
-
*
|
|
6
5
|
* @cssprop {<length>} --pf-c-spinner--diameter {@default `3.375rem`}
|
|
7
6
|
* @cssprop {<length>} --pf-c-spinner--Width {@default `3.375rem`}
|
|
8
7
|
* @cssprop {<length>} --pf-c-spinner--Height {@default `3.375rem`}
|
|
@@ -19,8 +18,9 @@ import { BaseSpinner } from './BaseSpinner.js';
|
|
|
19
18
|
* @cssprop {<string>} --pf-c-spinner__path--AnimationTimingFunction {@default `ease-in-out`}
|
|
20
19
|
*/
|
|
21
20
|
export declare class PfSpinner extends BaseSpinner {
|
|
21
|
+
#private;
|
|
22
22
|
static readonly styles: CSSStyleSheet[];
|
|
23
|
-
render(): import("lit").TemplateResult<1>;
|
|
23
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
24
24
|
}
|
|
25
25
|
declare global {
|
|
26
26
|
interface HTMLElementTagNameMap {
|
package/pf-spinner/pf-spinner.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
|
+
var _PfSpinner_internals;
|
|
1
2
|
import { __decorate } from "tslib";
|
|
2
3
|
import { html } from 'lit';
|
|
3
4
|
import { customElement } from 'lit/decorators/custom-element.js';
|
|
4
5
|
import { styleMap } from 'lit/directives/style-map.js';
|
|
6
|
+
import { InternalsController } from '@patternfly/pfe-core/controllers/internals-controller.js';
|
|
5
7
|
import { BaseSpinner } from './BaseSpinner.js';
|
|
6
8
|
import { css } from "lit";
|
|
7
9
|
const styles = css `[hidden] {\n display: none !important;\n}\n\ndiv {\n display: contents;\n}\n\nsvg {\n width: var(--pf-c-spinner--Width,\n var(--pf-c-spinner--diameter,\n var(--pf-global--icon--FontSize--xl, 3.375rem)));\n height: var(--pf-c-spinner--Height,\n var(--pf-c-spinner--diameter,\n var(--pf-global--icon--FontSize--xl, 3.375rem)));\n animation:\n pf-c-spinner-animation-rotate\n calc(var(--pf-c-spinner--AnimationDuration, 1.4s) * 2)\n var(--pf-c-spinner--AnimationTimingFunction, linear) infinite;\n}\n\n:host([size="sm"]) div {\n --pf-c-spinner--diameter: var(--pf-c-spinner--m-sm--diameter,\n var(--pf-global--icon--FontSize--sm, 0.625rem));\n}\n\n:host([size="md"]) div {\n --pf-c-spinner--diameter: var(--pf-c-spinner--m-md--diameter,\n var(--pf-global--icon--FontSize--md, 1.125rem));\n}\n\n:host([size="lg"]) div {\n --pf-c-spinner--diameter: var(--pf-c-spinner--m-lg--diameter,\n var(--pf-global--icon--FontSize--lg, 1.5rem));\n}\n\n:host([size="xl"]) div {\n --pf-c-spinner--diameter: var(--pf-c-spinner--m-xl--diameter,\n var(--pf-global--icon--FontSize--xl, 3.375rem));\n}\n\ncircle {\n stroke: var(--pf-c-spinner--Color, var(--pf-global--primary-color--100, #06c));\n stroke-width: var(--pf-c-spinner--stroke-width, 10);\n animation:\n pf-c-spinner-animation-dash\n var(--pf-c-spinner--AnimationDuration, 1.4s)\n var(--pf-c-spinner__path--AnimationTimingFunction, ease-in-out) infinite;\n}\n\n@keyframes pf-c-spinner-animation-rotate {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n@keyframes pf-c-spinner-animation-dash {\n 0% {\n stroke-dashoffset: 280;\n transform: rotate(0);\n }\n 15% {\n stroke-width: calc(var(--pf-c-spinner__path--StrokeWidth, 10) - 4);\n }\n 40% {\n stroke-dashoffset: 150;\n stroke-dasharray: 220;\n }\n 100% {\n stroke-dashoffset: 280;\n transform: rotate(720deg);\n }\n}\n`;
|
|
8
10
|
/**
|
|
9
11
|
* A **spinner** is used to indicate to users that an action is in progress. For actions
|
|
10
12
|
* that may take a long time, use a progress bar instead.
|
|
11
|
-
*
|
|
12
13
|
* @cssprop {<length>} --pf-c-spinner--diameter {@default `3.375rem`}
|
|
13
14
|
* @cssprop {<length>} --pf-c-spinner--Width {@default `3.375rem`}
|
|
14
15
|
* @cssprop {<length>} --pf-c-spinner--Height {@default `3.375rem`}
|
|
@@ -25,10 +26,16 @@ const styles = css `[hidden] {\n display: none !important;\n}\n\ndiv {\n displ
|
|
|
25
26
|
* @cssprop {<string>} --pf-c-spinner__path--AnimationTimingFunction {@default `ease-in-out`}
|
|
26
27
|
*/
|
|
27
28
|
let PfSpinner = class PfSpinner extends BaseSpinner {
|
|
29
|
+
constructor() {
|
|
30
|
+
super(...arguments);
|
|
31
|
+
// eslint-disable-next-line no-unused-private-class-members
|
|
32
|
+
_PfSpinner_internals.set(this, InternalsController.of(this, { role: 'progressbar' }));
|
|
33
|
+
}
|
|
28
34
|
render() {
|
|
29
35
|
return html `<div style=${styleMap({ '--pf-c-spinner--diameter': this.diameter })}>${super.render()}</div>`;
|
|
30
36
|
}
|
|
31
37
|
};
|
|
38
|
+
_PfSpinner_internals = new WeakMap();
|
|
32
39
|
PfSpinner.styles = [...BaseSpinner.styles, styles];
|
|
33
40
|
PfSpinner = __decorate([
|
|
34
41
|
customElement('pf-spinner')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pf-spinner.js","sourceRoot":"","sources":["pf-spinner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pf-spinner.js","sourceRoot":"","sources":["pf-spinner.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0DAA0D,CAAC;AAE/F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;;;AAI/C;;;;;;;;;;;;;;;;;GAiBG;AAGI,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,WAAW;IAAnC;;QAGL,2DAA2D;QAC3D,+BAAa,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAC;IAKrE,CAAC;IAHC,MAAM;QACJ,OAAO,IAAI,CAAA,cAAc,QAAQ,CAAC,EAAE,0BAA0B,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC7G,CAAC;;;AAPe,gBAAM,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,AAAlC,CAAmC;AAD9C,SAAS;IADrB,aAAa,CAAC,YAAY,CAAC;GACf,SAAS,CASrB","sourcesContent":["import { html } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport { InternalsController } from '@patternfly/pfe-core/controllers/internals-controller.js';\n\nimport { BaseSpinner } from './BaseSpinner.js';\n\nimport styles from './pf-spinner.css';\n\n/**\n * A **spinner** is used to indicate to users that an action is in progress. For actions\n * that may take a long time, use a progress bar instead.\n * @cssprop {<length>} --pf-c-spinner--diameter {@default `3.375rem`}\n * @cssprop {<length>} --pf-c-spinner--Width {@default `3.375rem`}\n * @cssprop {<length>} --pf-c-spinner--Height {@default `3.375rem`}\n * @cssprop {<color>} --pf-c-spinner--Color {@default `#06c`}\n * @cssprop {<length>} --pf-c-spinner--m-sm--diameter {@default `0.625rem`}\n * @cssprop {<length>} --pf-c-spinner--m-md--diameter {@default `1.125rem`}\n * @cssprop {<length>} --pf-c-spinner--m-lg--diameter {@default `1.5rem`}\n * @cssprop {<length>} --pf-c-spinner--m-xl--diameter {@default `3.375rem`}\n * @cssprop {<time>} --pf-c-spinner--AnimationDuration {@default `1.4s`}\n * @cssprop {<string>} --pf-c-spinner--AnimationTimingFunction {@default `linear`}\n * @cssprop {<number>} --pf-c-spinner--stroke-width {@default `10`}\n * @cssprop {<color>} --pf-c-spinner__path--Stroke {@default `#06c`}\n * @cssprop {<number>} --pf-c-spinner__path--StrokeWidth {@default `10`}\n * @cssprop {<string>} --pf-c-spinner__path--AnimationTimingFunction {@default `ease-in-out`}\n */\n\n@customElement('pf-spinner')\nexport class PfSpinner extends BaseSpinner {\n static readonly styles = [...BaseSpinner.styles, styles];\n\n // eslint-disable-next-line no-unused-private-class-members\n #internals = InternalsController.of(this, { role: 'progressbar' });\n\n render() {\n return html`<div style=${styleMap({ '--pf-c-spinner--diameter': this.diameter })}>${super.render()}</div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-spinner': PfSpinner;\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { test } from '@playwright/test';
|
|
2
|
+
import { PfeDemoPage } from '@patternfly/pfe-tools/test/playwright/PfeDemoPage.js';
|
|
3
|
+
const tagName = 'pf-spinner';
|
|
4
|
+
test.describe(tagName, () => {
|
|
5
|
+
test('snapshot', async ({ page }) => {
|
|
6
|
+
const componentPage = new PfeDemoPage(page, tagName);
|
|
7
|
+
await componentPage.navigate();
|
|
8
|
+
await componentPage.snapshot();
|
|
9
|
+
});
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=pf-spinner.e2e.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pf-spinner.e2e.js","sourceRoot":"","sources":["pf-spinner.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,sDAAsD,CAAC;AAEnF,MAAM,OAAO,GAAG,YAAY,CAAC;AAE7B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IAC1B,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QAClC,MAAM,aAAa,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { test } from '@playwright/test';\nimport { PfeDemoPage } from '@patternfly/pfe-tools/test/playwright/PfeDemoPage.js';\n\nconst tagName = 'pf-spinner';\n\ntest.describe(tagName, () => {\n test('snapshot', async ({ page }) => {\n const componentPage = new PfeDemoPage(page, tagName);\n await componentPage.navigate();\n await componentPage.snapshot();\n });\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { expect, html } from '@open-wc/testing';
|
|
2
|
+
import { createFixture } from '@patternfly/pfe-tools/test/create-fixture.js';
|
|
3
|
+
import { PfSpinner } from '@patternfly/elements/pf-spinner/pf-spinner.js';
|
|
4
|
+
describe('<pf-spinner>', function () {
|
|
5
|
+
it('imperatively instantiates', function () {
|
|
6
|
+
expect(document.createElement('pf-spinner')).to.be.an.instanceof(PfSpinner);
|
|
7
|
+
});
|
|
8
|
+
it('should upgrade', async function () {
|
|
9
|
+
const element = await createFixture(html `<pf-spinner>Loading...</pf-spinner>`);
|
|
10
|
+
expect(element, 'pf-spinner should be an instance of PfeSpinner')
|
|
11
|
+
.to.be.an.instanceOf(customElements.get('pf-spinner'))
|
|
12
|
+
.and
|
|
13
|
+
.to.be.an.instanceOf(PfSpinner);
|
|
14
|
+
});
|
|
15
|
+
it('should properly initialize the component', async function () {
|
|
16
|
+
const element = await createFixture(html `
|
|
17
|
+
<pf-spinner>Loading...</pf-spinner>
|
|
18
|
+
`);
|
|
19
|
+
expect(element.getAttribute('size')).to.equal('xl');
|
|
20
|
+
});
|
|
21
|
+
describe('basic usage', function () {
|
|
22
|
+
let element;
|
|
23
|
+
beforeEach(async function () {
|
|
24
|
+
element = await createFixture(html `<pf-spinner>Loading...</pf-spinner>`);
|
|
25
|
+
});
|
|
26
|
+
it('is accessible', async function () {
|
|
27
|
+
await expect(element).to.be.accessible();
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
describe('size attribute', function () {
|
|
31
|
+
let element;
|
|
32
|
+
function convertRemToPixels(rem) {
|
|
33
|
+
const { fontSize } = getComputedStyle(document.documentElement);
|
|
34
|
+
return parseFloat(rem) * parseFloat(fontSize);
|
|
35
|
+
}
|
|
36
|
+
beforeEach(async function () {
|
|
37
|
+
element = await createFixture(html `
|
|
38
|
+
<pf-spinner>Loading...</pf-spinner>
|
|
39
|
+
`);
|
|
40
|
+
});
|
|
41
|
+
for (const [size, expected] of [
|
|
42
|
+
['sm', '0.625rem'],
|
|
43
|
+
['md', '1.125rem'],
|
|
44
|
+
['lg', '1.5rem'],
|
|
45
|
+
['xl', '3.375rem'],
|
|
46
|
+
]) {
|
|
47
|
+
it(size, async function () {
|
|
48
|
+
element.size = size;
|
|
49
|
+
await element.updateComplete;
|
|
50
|
+
expect(element.offsetWidth).to.equal(convertRemToPixels(expected));
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
describe('diameter attribute', function () {
|
|
55
|
+
it('sets the element diameter', async function () {
|
|
56
|
+
const customDiameterValue = 80;
|
|
57
|
+
const element = await createFixture(html `
|
|
58
|
+
<pf-spinner diameter="${customDiameterValue}px">Loading...</pf-spinner>
|
|
59
|
+
`);
|
|
60
|
+
expect(element.offsetWidth).to.equal(customDiameterValue);
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
//# sourceMappingURL=pf-spinner.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pf-spinner.spec.js","sourceRoot":"","sources":["pf-spinner.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, html } from '@open-wc/testing';\nimport { createFixture } from '@patternfly/pfe-tools/test/create-fixture.js';\nimport { PfSpinner } from '@patternfly/elements/pf-spinner/pf-spinner.js';\n\ndescribe('<pf-spinner>', function() {\n it('imperatively instantiates', function() {\n expect(document.createElement('pf-spinner')).to.be.an.instanceof(PfSpinner);\n });\n\n it('should upgrade', async function() {\n const element = await createFixture<PfSpinner>(html`<pf-spinner>Loading...</pf-spinner>`);\n expect(element, 'pf-spinner should be an instance of PfeSpinner')\n .to.be.an.instanceOf(customElements.get('pf-spinner'))\n .and\n .to.be.an.instanceOf(PfSpinner);\n });\n\n it('should properly initialize the component', async function() {\n const element = await createFixture<PfSpinner>(html`\n <pf-spinner>Loading...</pf-spinner>\n `);\n expect(element.getAttribute('size')).to.equal('xl');\n });\n\n describe('basic usage', function() {\n let element: PfSpinner;\n beforeEach(async function() {\n element = await createFixture<PfSpinner>(html`<pf-spinner>Loading...</pf-spinner>`);\n });\n it('is accessible', async function() {\n await expect(element).to.be.accessible();\n });\n });\n\n describe('size attribute', function() {\n let element: PfSpinner;\n\n function convertRemToPixels(rem: `${number}rem`) {\n const { fontSize } = getComputedStyle(document.documentElement);\n return parseFloat(rem) * parseFloat(fontSize);\n }\n\n beforeEach(async function() {\n element = await createFixture<PfSpinner>(html`\n <pf-spinner>Loading...</pf-spinner>\n `);\n });\n\n for (const [size, expected] of [\n ['sm', '0.625rem'],\n ['md', '1.125rem'],\n ['lg', '1.5rem'],\n ['xl', '3.375rem'],\n ] as const) {\n it(size, async function() {\n element.size = size;\n await element.updateComplete;\n expect(element.offsetWidth).to.equal(convertRemToPixels(expected));\n });\n }\n });\n\n describe('diameter attribute', function() {\n it('sets the element diameter', async function() {\n const customDiameterValue = 80;\n const element = await createFixture<PfSpinner>(html`\n <pf-spinner diameter=\"${customDiameterValue}px\">Loading...</pf-spinner>\n `);\n\n expect(element.offsetWidth).to.equal(customDiameterValue);\n });\n });\n});\n"]}
|
|
@@ -14,6 +14,6 @@ export declare abstract class BaseSwitch extends LitElement {
|
|
|
14
14
|
get labels(): NodeListOf<HTMLLabelElement>;
|
|
15
15
|
connectedCallback(): void;
|
|
16
16
|
formDisabledCallback(disabled: boolean): void;
|
|
17
|
-
render(): import("lit").TemplateResult<1>;
|
|
17
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
18
18
|
willUpdate(): void;
|
|
19
19
|
}
|
package/pf-switch/BaseSwitch.js
CHANGED
|
@@ -56,9 +56,9 @@ _BaseSwitch_internals = new WeakMap(), _BaseSwitch_instances = new WeakSet(), _B
|
|
|
56
56
|
const { originalTarget, explicitOriginalTarget } = event;
|
|
57
57
|
if (explicitOriginalTarget) {
|
|
58
58
|
let labels;
|
|
59
|
-
if (originalTarget === event.target
|
|
60
|
-
!(labels = Array.from(this.labels)).includes(explicitOriginalTarget)
|
|
61
|
-
labels.includes(this.closest('label'))) {
|
|
59
|
+
if (originalTarget === event.target
|
|
60
|
+
&& !(labels = Array.from(this.labels)).includes(explicitOriginalTarget)
|
|
61
|
+
&& labels.includes(this.closest('label'))) {
|
|
62
62
|
return;
|
|
63
63
|
}
|
|
64
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseSwitch.js","sourceRoot":"","sources":["BaseSwitch.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0DAA0D,CAAC;;;AAG/F;;GAEG;AACH,MAAM,OAAgB,UAAW,SAAQ,UAAU;IAAnD;;;QAOE,gCAAa,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAC;QAIY,kBAAa,GAAG,KAAK,CAAC;QAEpD,YAAO,GAAG,KAAK,CAAC;QAEhB,aAAQ,GAAG,KAAK,CAAC;IA4F/D,CAAC;IA1FC,IAAI,MAAM;QACR,OAAO,uBAAA,IAAI,6BAAW,CAAC,MAAsC,CAAC;IAChE,CAAC;IAEQ,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,uBAAA,IAAI,kDAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,uBAAA,IAAI,kDAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,uBAAA,IAAI,oDAAW,CAAC,CAAC;QAClD,uBAAA,IAAI,uDAAc,MAAlB,IAAI,CAAgB,CAAC;IACvB,CAAC;IAED,oBAAoB,CAAC,QAAiB;QACpC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAEQ,MAAM;QACb,OAAO,IAAI,CAAA;;;;;;;;uBAQQ,CAAC,IAAI,CAAC,aAAa;;;;KAIrC,CAAC;IACJ,CAAC;IAEQ,UAAU;QACjB,uBAAA,IAAI,6BAAW,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,uBAAA,IAAI,6BAAW,CAAC,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;;iIAEQ,KAAY;IACnB,gGAAgG;IAChG,MAAM,EAAE,cAAc,EAAE,sBAAsB,EAAE,GAAG,KAAK,CAAC;IACzD,IAAI,sBAAsB,EAAE,CAAC;QAC3B,IAAI,MAA0B,CAAC;QAC/B,IACE,cAAc,KAAK,KAAK,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"BaseSwitch.js","sourceRoot":"","sources":["BaseSwitch.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators/property.js';\n\nimport { InternalsController } from '@patternfly/pfe-core/controllers/internals-controller.js';\n\nimport styles from './BaseSwitch.css';\n/**\n * Switch\n */\nexport abstract class BaseSwitch extends LitElement {\n static readonly styles = [styles];\n\n static readonly formAssociated = true;\n\n declare shadowRoot: ShadowRoot;\n\n #internals = InternalsController.of(this, { role: 'switch' });\n\n @property({ reflect: true }) label?: string;\n\n @property({ reflect: true, type: Boolean, attribute: 'show-check-icon' }) showCheckIcon = false;\n\n @property({ reflect: true, type: Boolean }) checked = false;\n\n @property({ reflect: true, type: Boolean }) disabled = false;\n\n get labels(): NodeListOf<HTMLLabelElement> {\n return this.#internals.labels as NodeListOf<HTMLLabelElement>;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.tabIndex = 0;\n this.addEventListener('click', this.#onClick);\n this.addEventListener('keyup', this.#onKeyup);\n this.addEventListener('keydown', this.#onKeyDown);\n this.#updateLabels();\n }\n\n formDisabledCallback(disabled: boolean) {\n this.disabled = disabled;\n }\n\n override render() {\n return html`\n <div id=\"container\">\n <svg id=\"toggle\"\n role=\"presentation\"\n fill=\"currentColor\"\n height=\"1em\"\n width=\"1em\"\n viewBox=\"0 0 512 512\"\n ?hidden=${!this.showCheckIcon}>\n <path d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\" />\n </svg>\n </div>\n `;\n }\n\n override willUpdate() {\n this.#internals.ariaChecked = String(!!this.checked);\n this.#internals.ariaDisabled = String(!!this.disabled);\n }\n\n #onClick(event: Event) {\n // @ts-expect-error: firefox workarounds for double-firing in the case of switch nested in label\n const { originalTarget, explicitOriginalTarget } = event;\n if (explicitOriginalTarget) {\n let labels: HTMLLabelElement[];\n if (\n originalTarget === event.target\n && !(labels = Array.from(this.labels)).includes(explicitOriginalTarget)\n && labels.includes(this.closest('label') as HTMLLabelElement)\n ) {\n return;\n }\n }\n this.#toggle();\n }\n\n #onKeyup(event: KeyboardEvent) {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n this.#toggle();\n }\n }\n\n #onKeyDown(event: KeyboardEvent) {\n if (event.key === ' ') {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n #toggle() {\n if (this.disabled) {\n return;\n }\n\n this.checked = !this.checked;\n this.#updateLabels();\n this.dispatchEvent(new Event('change', { bubbles: true }));\n }\n\n #updateLabels() {\n const labelState = this.checked ? 'on' : 'off';\n this.labels.forEach(label => {\n const states = label.querySelectorAll<HTMLElement>('[data-state]');\n states.forEach(state => {\n if (state) {\n state.hidden = state.dataset.state !== labelState;\n }\n });\n });\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { test } from '@playwright/test';
|
|
2
|
+
import { PfeDemoPage } from '@patternfly/pfe-tools/test/playwright/PfeDemoPage.js';
|
|
3
|
+
const tagName = 'pf-switch';
|
|
4
|
+
test.describe(tagName, () => {
|
|
5
|
+
test('snapshot', async ({ page }) => {
|
|
6
|
+
const componentPage = new PfeDemoPage(page, tagName);
|
|
7
|
+
await componentPage.navigate();
|
|
8
|
+
await componentPage.snapshot();
|
|
9
|
+
});
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=pf-switch.e2e.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pf-switch.e2e.js","sourceRoot":"","sources":["pf-switch.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,sDAAsD,CAAC;AAEnF,MAAM,OAAO,GAAG,WAAW,CAAC;AAE5B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IAC1B,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QAClC,MAAM,aAAa,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { test } from '@playwright/test';\nimport { PfeDemoPage } from '@patternfly/pfe-tools/test/playwright/PfeDemoPage.js';\n\nconst tagName = 'pf-switch';\n\ntest.describe(tagName, () => {\n test('snapshot', async ({ page }) => {\n const componentPage = new PfeDemoPage(page, tagName);\n await componentPage.navigate();\n await componentPage.snapshot();\n });\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|