@patternfly/elements 3.0.1 → 4.0.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 +8857 -8783
- package/form-control.css +127 -0
- package/package.json +12 -25
- package/pf-accordion/pf-accordion-header.css +23 -0
- package/pf-accordion/pf-accordion-header.d.ts +52 -43
- package/pf-accordion/pf-accordion-header.js +130 -87
- package/pf-accordion/pf-accordion-header.js.map +1 -1
- package/pf-accordion/pf-accordion-panel.css +15 -0
- package/pf-accordion/pf-accordion-panel.d.ts +27 -25
- package/pf-accordion/pf-accordion-panel.js +29 -43
- package/pf-accordion/pf-accordion-panel.js.map +1 -1
- package/pf-accordion/pf-accordion.d.ts +122 -65
- package/pf-accordion/pf-accordion.js +283 -94
- package/pf-accordion/pf-accordion.js.map +1 -1
- package/pf-accordion/test/pf-accordion.e2e.js +12 -0
- package/pf-accordion/test/pf-accordion.e2e.js.map +1 -1
- package/pf-accordion/test/pf-accordion.spec.js +366 -350
- package/pf-accordion/test/pf-accordion.spec.js.map +1 -1
- package/pf-avatar/pf-avatar.css +50 -24
- package/pf-avatar/pf-avatar.d.ts +29 -3
- package/pf-avatar/pf-avatar.js +51 -9
- package/pf-avatar/pf-avatar.js.map +1 -1
- package/pf-avatar/test/pf-avatar.e2e.js +12 -0
- package/pf-avatar/test/pf-avatar.e2e.js.map +1 -1
- package/pf-avatar/test/pf-avatar.spec.js +2 -3
- package/pf-avatar/test/pf-avatar.spec.js.map +1 -1
- package/pf-back-to-top/pf-back-to-top.css +10 -0
- package/pf-back-to-top/pf-back-to-top.d.ts +14 -18
- package/pf-back-to-top/pf-back-to-top.js +9 -30
- package/pf-back-to-top/pf-back-to-top.js.map +1 -1
- package/pf-back-to-top/test/pf-back-to-top.e2e.js +12 -0
- package/pf-back-to-top/test/pf-back-to-top.e2e.js.map +1 -1
- package/pf-background-image/pf-background-image.d.ts +4 -4
- package/pf-background-image/pf-background-image.js +1 -12
- package/pf-background-image/pf-background-image.js.map +1 -1
- package/pf-background-image/test/pf-background-image.e2e.js +12 -0
- package/pf-background-image/test/pf-background-image.e2e.js.map +1 -1
- package/pf-badge/pf-badge.css +4 -0
- package/pf-badge/pf-badge.d.ts +26 -22
- package/pf-badge/pf-badge.js +14 -27
- package/pf-badge/pf-badge.js.map +1 -1
- package/pf-badge/test/pf-badge.e2e.js +12 -0
- package/pf-badge/test/pf-badge.e2e.js.map +1 -1
- package/pf-banner/pf-banner.d.ts +16 -16
- package/pf-banner/pf-banner.js +1 -24
- package/pf-banner/pf-banner.js.map +1 -1
- package/pf-banner/test/pf-banner.e2e.js +12 -0
- package/pf-banner/test/pf-banner.e2e.js.map +1 -1
- package/pf-button/pf-button.css +22 -12
- package/pf-button/pf-button.d.ts +128 -122
- package/pf-button/pf-button.js +95 -172
- package/pf-button/pf-button.js.map +1 -1
- package/pf-button/test/pf-button.e2e.js +12 -0
- package/pf-button/test/pf-button.e2e.js.map +1 -1
- package/pf-card/pf-card.css +172 -43
- package/pf-card/pf-card.d.ts +41 -38
- package/pf-card/pf-card.js +37 -54
- package/pf-card/pf-card.js.map +1 -1
- package/pf-card/test/pf-card.e2e.js +12 -0
- package/pf-card/test/pf-card.e2e.js.map +1 -1
- package/pf-chip/pf-chip-group.css +9 -6
- package/pf-chip/pf-chip-group.d.ts +27 -14
- package/pf-chip/pf-chip-group.js +65 -94
- package/pf-chip/pf-chip-group.js.map +1 -1
- package/pf-chip/pf-chip.d.ts +20 -9
- package/pf-chip/pf-chip.js +1 -8
- package/pf-chip/pf-chip.js.map +1 -1
- package/pf-chip/test/pf-chip-group.spec.js +42 -22
- package/pf-chip/test/pf-chip-group.spec.js.map +1 -1
- package/pf-chip/test/pf-chip.e2e.js +12 -0
- package/pf-chip/test/pf-chip.e2e.js.map +1 -1
- package/pf-clipboard-copy/pf-clipboard-copy.css +83 -85
- package/pf-clipboard-copy/pf-clipboard-copy.d.ts +53 -18
- package/pf-clipboard-copy/pf-clipboard-copy.js +55 -44
- package/pf-clipboard-copy/pf-clipboard-copy.js.map +1 -1
- package/pf-clipboard-copy/test/pf-clipboard-copy.e2e.js +12 -0
- package/pf-clipboard-copy/test/pf-clipboard-copy.e2e.js.map +1 -1
- package/pf-code-block/pf-code-block.css +7 -4
- package/pf-code-block/pf-code-block.d.ts +4 -25
- package/pf-code-block/pf-code-block.js +44 -23
- package/pf-code-block/pf-code-block.js.map +1 -1
- package/pf-code-block/test/pf-code-block.e2e.js +12 -0
- package/pf-code-block/test/pf-code-block.e2e.js.map +1 -1
- package/pf-dropdown/context.d.ts +2 -3
- package/pf-dropdown/context.js.map +1 -1
- package/pf-dropdown/pf-dropdown-group.d.ts +3 -9
- package/pf-dropdown/pf-dropdown-group.js +1 -5
- package/pf-dropdown/pf-dropdown-group.js.map +1 -1
- package/pf-dropdown/pf-dropdown-item.d.ts +21 -27
- package/pf-dropdown/pf-dropdown-item.js +1 -37
- package/pf-dropdown/pf-dropdown-item.js.map +1 -1
- package/pf-dropdown/pf-dropdown-menu.d.ts +4 -10
- package/pf-dropdown/pf-dropdown-menu.js +23 -23
- package/pf-dropdown/pf-dropdown-menu.js.map +1 -1
- package/pf-dropdown/pf-dropdown.d.ts +8 -24
- package/pf-dropdown/pf-dropdown.js +1 -26
- package/pf-dropdown/pf-dropdown.js.map +1 -1
- package/pf-dropdown/test/pf-dropdown.e2e.js +12 -0
- package/pf-dropdown/test/pf-dropdown.e2e.js.map +1 -1
- package/pf-icon/pf-icon.css +22 -0
- package/pf-icon/pf-icon.d.ts +93 -4
- package/pf-icon/pf-icon.js +191 -13
- package/pf-icon/pf-icon.js.map +1 -1
- package/pf-icon/test/pf-icon.e2e.js +12 -0
- package/pf-icon/test/pf-icon.e2e.js.map +1 -1
- package/pf-icon/test/pf-icon.spec.js +102 -88
- package/pf-icon/test/pf-icon.spec.js.map +1 -1
- package/pf-jump-links/pf-jump-links-item.d.ts +4 -11
- package/pf-jump-links/pf-jump-links-item.js +8 -15
- package/pf-jump-links/pf-jump-links-item.js.map +1 -1
- package/pf-jump-links/pf-jump-links-list.d.ts +2 -2
- package/pf-jump-links/pf-jump-links-list.js +1 -5
- package/pf-jump-links/pf-jump-links-list.js.map +1 -1
- package/pf-jump-links/pf-jump-links.d.ts +2 -2
- package/pf-jump-links/pf-jump-links.js +23 -62
- package/pf-jump-links/pf-jump-links.js.map +1 -1
- package/pf-jump-links/test/pf-jump-links.e2e.js +12 -0
- package/pf-jump-links/test/pf-jump-links.e2e.js.map +1 -1
- package/pf-label/pf-label.css +38 -5
- package/pf-label/pf-label.d.ts +65 -69
- package/pf-label/pf-label.js +49 -90
- package/pf-label/pf-label.js.map +1 -1
- package/pf-label/test/pf-label.e2e.js +12 -0
- package/pf-label/test/pf-label.e2e.js.map +1 -1
- package/pf-label/test/pf-label.spec.js +26 -16
- package/pf-label/test/pf-label.spec.js.map +1 -1
- package/pf-modal/pf-modal.d.ts +17 -22
- package/pf-modal/pf-modal.js +13 -39
- package/pf-modal/pf-modal.js.map +1 -1
- package/pf-modal/test/pf-modal.e2e.js +12 -0
- package/pf-modal/test/pf-modal.e2e.js.map +1 -1
- package/pf-panel/pf-panel.d.ts +31 -3
- package/pf-panel/pf-panel.js +1 -10
- package/pf-panel/pf-panel.js.map +1 -1
- package/pf-panel/test/pf-panel.e2e.js +12 -0
- package/pf-panel/test/pf-panel.e2e.js.map +1 -1
- package/pf-popover/pf-popover.d.ts +66 -84
- package/pf-popover/pf-popover.js +33 -150
- package/pf-popover/pf-popover.js.map +1 -1
- package/pf-popover/test/pf-popover.e2e.js +12 -0
- package/pf-popover/test/pf-popover.e2e.js.map +1 -1
- package/pf-popover/test/pf-popover.spec.js +0 -11
- package/pf-popover/test/pf-popover.spec.js.map +1 -1
- package/pf-progress/pf-progress.d.ts +40 -40
- package/pf-progress/pf-progress.js +1 -61
- package/pf-progress/pf-progress.js.map +1 -1
- package/pf-progress/test/pf-progress.e2e.js +12 -0
- package/pf-progress/test/pf-progress.e2e.js.map +1 -1
- package/pf-progress-stepper/pf-progress-step.d.ts +2 -3
- package/pf-progress-stepper/pf-progress-step.js +4 -14
- package/pf-progress-stepper/pf-progress-step.js.map +1 -1
- package/pf-progress-stepper/pf-progress-stepper.d.ts +118 -2
- package/pf-progress-stepper/pf-progress-stepper.js +10 -12
- package/pf-progress-stepper/pf-progress-stepper.js.map +1 -1
- package/pf-progress-stepper/test/pf-progress-stepper.e2e.js +12 -0
- package/pf-progress-stepper/test/pf-progress-stepper.e2e.js.map +1 -1
- package/pf-select/pf-option-group.d.ts +2 -2
- package/pf-select/pf-option-group.js +1 -5
- package/pf-select/pf-option-group.js.map +1 -1
- package/pf-select/pf-option.css +1 -1
- package/pf-select/pf-option.d.ts +4 -4
- package/pf-select/pf-option.js +20 -30
- package/pf-select/pf-option.js.map +1 -1
- package/pf-select/pf-select.css +14 -6
- package/pf-select/pf-select.d.ts +183 -40
- package/pf-select/pf-select.js +185 -260
- package/pf-select/pf-select.js.map +1 -1
- package/pf-select/test/pf-select.e2e.js +12 -0
- package/pf-select/test/pf-select.e2e.js.map +1 -1
- package/pf-select/test/pf-select.spec.js +1292 -613
- package/pf-select/test/pf-select.spec.js.map +1 -1
- package/pf-spinner/pf-spinner.css +27 -17
- package/pf-spinner/pf-spinner.d.ts +21 -17
- package/pf-spinner/pf-spinner.js +20 -24
- package/pf-spinner/pf-spinner.js.map +1 -1
- package/pf-spinner/test/pf-spinner.e2e.js +12 -0
- package/pf-spinner/test/pf-spinner.e2e.js.map +1 -1
- package/pf-switch/pf-switch.css +39 -13
- package/pf-switch/pf-switch.d.ts +48 -34
- package/pf-switch/pf-switch.js +114 -43
- package/pf-switch/pf-switch.js.map +1 -1
- package/pf-switch/test/pf-switch.e2e.js +12 -0
- package/pf-switch/test/pf-switch.e2e.js.map +1 -1
- package/pf-table/pf-caption.d.ts +2 -2
- package/pf-table/pf-caption.js +1 -4
- package/pf-table/pf-caption.js.map +1 -1
- package/pf-table/pf-table.d.ts +424 -424
- package/pf-table/pf-table.js +7 -645
- package/pf-table/pf-table.js.map +1 -1
- package/pf-table/pf-tbody.d.ts +2 -2
- package/pf-table/pf-tbody.js +1 -4
- package/pf-table/pf-tbody.js.map +1 -1
- package/pf-table/pf-td.d.ts +2 -2
- package/pf-table/pf-td.js +1 -4
- package/pf-table/pf-td.js.map +1 -1
- package/pf-table/pf-th.d.ts +2 -2
- package/pf-table/pf-th.js +1 -4
- package/pf-table/pf-th.js.map +1 -1
- package/pf-table/pf-thead.d.ts +2 -2
- package/pf-table/pf-thead.js +1 -4
- package/pf-table/pf-thead.js.map +1 -1
- package/pf-table/pf-tr.d.ts +1 -1
- package/pf-table/pf-tr.js +1 -4
- package/pf-table/pf-tr.js.map +1 -1
- package/pf-table/test/pf-table.e2e.js +12 -0
- package/pf-table/test/pf-table.e2e.js.map +1 -1
- package/pf-tabs/context.d.ts +2 -3
- package/pf-tabs/context.js.map +1 -1
- package/pf-tabs/pf-tab-panel.d.ts +3 -5
- package/pf-tabs/pf-tab-panel.js +1 -7
- package/pf-tabs/pf-tab-panel.js.map +1 -1
- package/pf-tabs/pf-tab.d.ts +37 -37
- package/pf-tabs/pf-tab.js +16 -54
- package/pf-tabs/pf-tab.js.map +1 -1
- package/pf-tabs/pf-tabs.d.ts +36 -37
- package/pf-tabs/pf-tabs.js +40 -78
- package/pf-tabs/pf-tabs.js.map +1 -1
- package/pf-tabs/test/pf-tabs.e2e.js +12 -0
- package/pf-tabs/test/pf-tabs.e2e.js.map +1 -1
- package/pf-tabs/test/pf-tabs.spec.js +11 -12
- package/pf-tabs/test/pf-tabs.spec.js.map +1 -1
- package/pf-text-area/pf-text-area.d.ts +128 -134
- package/pf-text-area/pf-text-area.js +7 -131
- package/pf-text-area/pf-text-area.js.map +1 -1
- package/pf-text-area/test/pf-text-area.e2e.js +12 -0
- package/pf-text-area/test/pf-text-area.e2e.js.map +1 -1
- package/pf-text-input/pf-text-input.d.ts +129 -135
- package/pf-text-input/pf-text-input.js +7 -132
- package/pf-text-input/pf-text-input.js.map +1 -1
- package/pf-text-input/test/pf-text-input.e2e.js +12 -0
- package/pf-text-input/test/pf-text-input.e2e.js.map +1 -1
- package/pf-tile/pf-tile.d.ts +21 -20
- package/pf-tile/pf-tile.js +18 -35
- package/pf-tile/pf-tile.js.map +1 -1
- package/pf-tile/test/pf-tile.e2e.js +12 -0
- package/pf-tile/test/pf-tile.e2e.js.map +1 -1
- package/pf-timestamp/pf-timestamp.d.ts +2 -2
- package/pf-timestamp/pf-timestamp.js +1 -3
- package/pf-timestamp/pf-timestamp.js.map +1 -1
- package/pf-timestamp/test/pf-timestamp.e2e.js +12 -0
- package/pf-timestamp/test/pf-timestamp.e2e.js.map +1 -1
- package/pf-tooltip/pf-tooltip.d.ts +51 -50
- package/pf-tooltip/pf-tooltip.js +26 -106
- package/pf-tooltip/pf-tooltip.js.map +1 -1
- package/pf-tooltip/test/pf-tooltip.e2e.js +12 -0
- package/pf-tooltip/test/pf-tooltip.e2e.js.map +1 -1
- package/pfe.min.js +1194 -1002
- package/pfe.min.js.map +4 -4
- package/react/pf-accordion/pf-accordion-header.js +2 -2
- package/react/pf-accordion/pf-accordion-panel.js +2 -2
- package/react/pf-accordion/pf-accordion.js +2 -2
- package/react/pf-avatar/pf-avatar.d.ts +1 -1
- package/react/pf-avatar/pf-avatar.js +5 -3
- package/react/pf-back-to-top/pf-back-to-top.js +2 -2
- package/react/pf-background-image/pf-background-image.js +2 -2
- package/react/pf-badge/pf-badge.js +2 -2
- package/react/pf-banner/pf-banner.js +2 -2
- package/react/pf-button/pf-button.js +2 -2
- package/react/pf-card/pf-card.js +2 -2
- package/react/pf-chip/pf-chip-group.js +2 -2
- package/react/pf-chip/pf-chip.js +2 -2
- package/react/pf-clipboard-copy/pf-clipboard-copy.d.ts +1 -1
- package/react/pf-clipboard-copy/pf-clipboard-copy.js +5 -3
- package/react/pf-code-block/pf-code-block.js +2 -2
- package/react/pf-dropdown/pf-dropdown-group.js +2 -2
- package/react/pf-dropdown/pf-dropdown-item.js +2 -2
- package/react/pf-dropdown/pf-dropdown-menu.js +2 -2
- package/react/pf-dropdown/pf-dropdown.js +2 -2
- package/react/pf-icon/pf-icon.js +2 -2
- package/react/pf-jump-links/pf-jump-links-item.js +2 -2
- package/react/pf-jump-links/pf-jump-links-list.js +2 -2
- package/react/pf-jump-links/pf-jump-links.js +2 -2
- package/react/pf-label/pf-label.js +2 -2
- package/react/pf-modal/pf-modal.js +2 -2
- package/react/pf-panel/pf-panel.js +2 -2
- package/react/pf-popover/pf-popover.js +2 -2
- package/react/pf-progress/pf-progress.js +2 -2
- package/react/pf-progress-stepper/pf-progress-step.js +2 -2
- package/react/pf-progress-stepper/pf-progress-stepper.js +2 -2
- package/react/pf-select/pf-option-group.js +2 -2
- package/react/pf-select/pf-option.js +2 -2
- package/react/pf-select/pf-select.d.ts +1 -1
- package/react/pf-select/pf-select.js +2 -3
- package/react/pf-spinner/pf-spinner.js +2 -2
- package/react/pf-switch/pf-switch.js +2 -2
- package/react/pf-table/pf-caption.js +2 -2
- package/react/pf-table/pf-table.js +2 -2
- package/react/pf-table/pf-tbody.js +2 -2
- package/react/pf-table/pf-td.js +2 -2
- package/react/pf-table/pf-th.js +2 -2
- package/react/pf-table/pf-thead.js +2 -2
- package/react/pf-table/pf-tr.js +2 -2
- package/react/pf-tabs/pf-tab-panel.js +2 -2
- package/react/pf-tabs/pf-tab.js +2 -2
- package/react/pf-tabs/pf-tabs.js +2 -2
- package/react/pf-text-area/pf-text-area.js +2 -2
- package/react/pf-text-input/pf-text-input.js +2 -2
- package/react/pf-tile/pf-tile.js +2 -2
- package/react/pf-timestamp/pf-timestamp.js +2 -2
- package/react/pf-tooltip/pf-tooltip.js +2 -2
- package/pf-accordion/BaseAccordion.d.ts +0 -61
- package/pf-accordion/BaseAccordion.js +0 -269
- package/pf-accordion/BaseAccordion.js.map +0 -1
- package/pf-accordion/BaseAccordionHeader.css +0 -39
- package/pf-accordion/BaseAccordionHeader.d.ts +0 -29
- package/pf-accordion/BaseAccordionHeader.js +0 -128
- package/pf-accordion/BaseAccordionHeader.js.map +0 -1
- package/pf-accordion/BaseAccordionPanel.css +0 -27
- package/pf-accordion/BaseAccordionPanel.d.ts +0 -7
- package/pf-accordion/BaseAccordionPanel.js +0 -33
- package/pf-accordion/BaseAccordionPanel.js.map +0 -1
- package/pf-avatar/BaseAvatar.css +0 -13
- package/pf-avatar/BaseAvatar.d.ts +0 -23
- package/pf-avatar/BaseAvatar.js +0 -62
- package/pf-avatar/BaseAvatar.js.map +0 -1
- package/pf-back-to-top/demo/demo.css +0 -25
- package/pf-badge/BaseBadge.css +0 -6
- package/pf-badge/BaseBadge.d.ts +0 -18
- package/pf-badge/BaseBadge.js +0 -16
- package/pf-badge/BaseBadge.js.map +0 -1
- package/pf-button/BaseButton.css +0 -68
- package/pf-button/BaseButton.d.ts +0 -51
- package/pf-button/BaseButton.js +0 -84
- package/pf-button/BaseButton.js.map +0 -1
- package/pf-card/BaseCard.css +0 -36
- package/pf-card/BaseCard.d.ts +0 -24
- package/pf-card/BaseCard.js +0 -51
- package/pf-card/BaseCard.js.map +0 -1
- package/pf-clipboard-copy/BaseClipboardCopy.css +0 -6
- package/pf-clipboard-copy/BaseClipboardCopy.d.ts +0 -18
- package/pf-clipboard-copy/BaseClipboardCopy.js +0 -25
- package/pf-clipboard-copy/BaseClipboardCopy.js.map +0 -1
- package/pf-code-block/BaseCodeBlock.css +0 -7
- package/pf-code-block/BaseCodeBlock.d.ts +0 -8
- package/pf-code-block/BaseCodeBlock.js +0 -22
- package/pf-code-block/BaseCodeBlock.js.map +0 -1
- package/pf-icon/BaseIcon.css +0 -22
- package/pf-icon/BaseIcon.d.ts +0 -41
- package/pf-icon/BaseIcon.js +0 -144
- package/pf-icon/BaseIcon.js.map +0 -1
- package/pf-label/BaseLabel.css +0 -44
- package/pf-label/BaseLabel.d.ts +0 -30
- package/pf-label/BaseLabel.js +0 -29
- package/pf-label/BaseLabel.js.map +0 -1
- package/pf-spinner/BaseSpinner.css +0 -20
- package/pf-spinner/BaseSpinner.d.ts +0 -27
- package/pf-spinner/BaseSpinner.js +0 -45
- package/pf-spinner/BaseSpinner.js.map +0 -1
- package/pf-switch/BaseSwitch.css +0 -36
- package/pf-switch/BaseSwitch.d.ts +0 -19
- package/pf-switch/BaseSwitch.js +0 -109
- package/pf-switch/BaseSwitch.js.map +0 -1
- package/pf-tabs/BaseTab.css +0 -60
- package/pf-tabs/BaseTab.d.ts +0 -32
- package/pf-tabs/BaseTab.js +0 -83
- package/pf-tabs/BaseTab.js.map +0 -1
- package/pf-tabs/BaseTabPanel.css +0 -7
- package/pf-tabs/BaseTabPanel.d.ts +0 -7
- package/pf-tabs/BaseTabPanel.js +0 -36
- package/pf-tabs/BaseTabPanel.js.map +0 -1
- package/pf-tabs/BaseTabs.css +0 -86
- package/pf-tabs/BaseTabs.d.ts +0 -38
- package/pf-tabs/BaseTabs.js +0 -221
- package/pf-tabs/BaseTabs.js.map +0 -1
- package/pf-tile/BaseTile.d.ts +0 -13
- package/pf-tile/BaseTile.js +0 -28
- package/pf-tile/BaseTile.js.map +0 -1
- package/pf-tooltip/BaseTooltip.css +0 -70
- package/pf-tooltip/BaseTooltip.d.ts +0 -16
- package/pf-tooltip/BaseTooltip.js +0 -54
- package/pf-tooltip/BaseTooltip.js.map +0 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { test } from '@playwright/test';
|
|
2
2
|
import { PfeDemoPage } from '@patternfly/pfe-tools/test/playwright/PfeDemoPage.js';
|
|
3
|
+
import { SSRPage } from '@patternfly/pfe-tools/test/playwright/SSRPage.js';
|
|
3
4
|
const tagName = 'pf-dropdown';
|
|
4
5
|
test.describe(tagName, () => {
|
|
5
6
|
test('snapshot', async ({ page }) => {
|
|
@@ -7,5 +8,16 @@ test.describe(tagName, () => {
|
|
|
7
8
|
await componentPage.navigate();
|
|
8
9
|
await componentPage.snapshot();
|
|
9
10
|
});
|
|
11
|
+
test('ssr', async ({ browser }) => {
|
|
12
|
+
const fixture = new SSRPage({
|
|
13
|
+
tagName,
|
|
14
|
+
browser,
|
|
15
|
+
demoDir: new URL('../demo/', import.meta.url),
|
|
16
|
+
importSpecifiers: [
|
|
17
|
+
`@patternfly/elements/${tagName}/${tagName}.js`,
|
|
18
|
+
],
|
|
19
|
+
});
|
|
20
|
+
await fixture.snapshots();
|
|
21
|
+
});
|
|
10
22
|
});
|
|
11
23
|
//# sourceMappingURL=pf-dropdown.e2e.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pf-dropdown.e2e.js","sourceRoot":"","sources":["pf-dropdown.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,sDAAsD,CAAC;
|
|
1
|
+
{"version":3,"file":"pf-dropdown.e2e.js","sourceRoot":"","sources":["pf-dropdown.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,sDAAsD,CAAC;AACnF,OAAO,EAAE,OAAO,EAAE,MAAM,kDAAkD,CAAC;AAE3E,MAAM,OAAO,GAAG,aAAa,CAAC;AAE9B,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;IAEH,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAChC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;YAC1B,OAAO;YACP,OAAO;YACP,OAAO,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YAC7C,gBAAgB,EAAE;gBAChB,wBAAwB,OAAO,IAAI,OAAO,KAAK;aAChD;SACF,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { test } from '@playwright/test';\nimport { PfeDemoPage } from '@patternfly/pfe-tools/test/playwright/PfeDemoPage.js';\nimport { SSRPage } from '@patternfly/pfe-tools/test/playwright/SSRPage.js';\n\nconst tagName = 'pf-dropdown';\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 test('ssr', async ({ browser }) => {\n const fixture = new SSRPage({\n tagName,\n browser,\n demoDir: new URL('../demo/', import.meta.url),\n importSpecifiers: [\n `@patternfly/elements/${tagName}/${tagName}.js`,\n ],\n });\n await fixture.snapshots();\n });\n});\n"]}
|
package/pf-icon/pf-icon.css
CHANGED
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
position: relative;
|
|
3
|
+
display: inline-block;
|
|
4
|
+
line-height: 0;
|
|
5
|
+
height: fit-content !important;
|
|
6
|
+
width: fit-content !important;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
#container {
|
|
10
|
+
display: grid;
|
|
11
|
+
grid-template: 1fr / 1fr;
|
|
12
|
+
place-content: center;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
#container.content ::slotted(*) {
|
|
16
|
+
display: none;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
svg {
|
|
20
|
+
fill: currentcolor;
|
|
21
|
+
}
|
|
22
|
+
|
|
1
23
|
:host([size=sm]) #container { --_size: var(--pf-global--icon--FontSize--sm, 10px); }
|
|
2
24
|
:host([size=md]) #container { --_size: var(--pf-global--icon--FontSize--md, 18px); }
|
|
3
25
|
:host([size=lg]) #container { --_size: var(--pf-global--icon--FontSize--lg, 24px); }
|
package/pf-icon/pf-icon.d.ts
CHANGED
|
@@ -1,21 +1,110 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LitElement, type PropertyValues, type TemplateResult } from 'lit';
|
|
2
|
+
type Renderable = unknown;
|
|
3
|
+
export type IconResolverFunction = (set: string, icon: string) => Renderable | Promise<Renderable>;
|
|
4
|
+
/** Fired when an icon fails to load */
|
|
5
|
+
export declare class IconResolveError extends ErrorEvent {
|
|
6
|
+
/** The original error when importing the icon module */
|
|
7
|
+
originalError: Error;
|
|
8
|
+
constructor(set: string, icon: string,
|
|
9
|
+
/** The original error when importing the icon module */
|
|
10
|
+
originalError: Error);
|
|
11
|
+
}
|
|
2
12
|
/**
|
|
3
13
|
* An **icon** component is a container that allows for icons of varying dimensions to
|
|
4
14
|
* seamlessly replace each other without shifting surrounding content.
|
|
5
|
-
*
|
|
6
15
|
* @slot - Slotted content is used as a fallback in case the icon doesn't load
|
|
7
16
|
* @fires load - Fired when an icon is loaded and rendered
|
|
8
17
|
* @fires error - Fired when an icon fails to load
|
|
9
18
|
* @csspart fallback - Container for the fallback (i.e. slotted) content
|
|
19
|
+
* @cssprop {<length>} --pf-icon--size - size of the icon
|
|
10
20
|
*/
|
|
11
|
-
export declare class PfIcon extends
|
|
21
|
+
export declare class PfIcon extends LitElement {
|
|
22
|
+
#private;
|
|
12
23
|
static readonly styles: CSSStyleSheet[];
|
|
13
|
-
static
|
|
24
|
+
private static onIntersect;
|
|
25
|
+
private static defaultResolve;
|
|
26
|
+
private static io;
|
|
27
|
+
private static resolvers;
|
|
28
|
+
private static instances;
|
|
29
|
+
/**
|
|
30
|
+
* Register a new icon set
|
|
31
|
+
* @param setName - The name of the icon set
|
|
32
|
+
* @param resolver - A function that returns the URL of an icon
|
|
33
|
+
* @example returning a URL object
|
|
34
|
+
* ```js
|
|
35
|
+
* PfIcon.addIconSet('rh', (set, icon) =>
|
|
36
|
+
* new URL(`./icons/${set}/${icon}.js`, import.meta.url));
|
|
37
|
+
* ```
|
|
38
|
+
* @example returning a string
|
|
39
|
+
* ```js
|
|
40
|
+
* PfIcon.addIconSet('rh', (set, icon) =>
|
|
41
|
+
* `/assets/icons/${set}/${icon}.js`);
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
static addIconSet(setName: string, resolver: IconResolverFunction): void;
|
|
45
|
+
/** Removes all added icon sets and resets resolve function */
|
|
46
|
+
static reset(): void;
|
|
47
|
+
/**
|
|
48
|
+
* Gets a renderable icon. Override this to customize how icons are resolved.
|
|
49
|
+
* @param set - The name of the icon set
|
|
50
|
+
* @param icon - The name of the icon
|
|
51
|
+
* @returns The icon content, a node or anything else which lit-html can render
|
|
52
|
+
* @example resolving an icon node from an icon module
|
|
53
|
+
* ```js
|
|
54
|
+
* PfIcon.resolve = (set, icon) =>
|
|
55
|
+
* import(`/assets/icons/${set}/${icon}.js`)
|
|
56
|
+
* .then(mod => mod.default.cloneNode(true));
|
|
57
|
+
* ```
|
|
58
|
+
* @example resolving a named export from an icon collection module
|
|
59
|
+
* ```js
|
|
60
|
+
* PfIcon.resolve = (set, icon) =>
|
|
61
|
+
* import(`/assets/icons.js`)
|
|
62
|
+
* .then(module => module[icon]?.cloneNode(true));
|
|
63
|
+
* ```
|
|
64
|
+
* @example resolving a new node from an svg file
|
|
65
|
+
* ```js
|
|
66
|
+
* const iconCacne = new Map();
|
|
67
|
+
* function getCachedIconOrNewNode(set, icon, svg) {
|
|
68
|
+
* const key = `${set}_${icon}`;
|
|
69
|
+
* if (!iconCache.has(key)) {
|
|
70
|
+
* const template = document.createElement('template');
|
|
71
|
+
* template.innerHTML = svg;
|
|
72
|
+
* iconCache.set(key, template);
|
|
73
|
+
* }
|
|
74
|
+
* return iconCache.get(key);
|
|
75
|
+
* }
|
|
76
|
+
* PfIcon.resolve = (set, icon) =>
|
|
77
|
+
* fetch(`/assets/icons/${set}/${icon}.svg`)
|
|
78
|
+
* .then(response => response.text())
|
|
79
|
+
* .then(svg => getCachedIconOrNewNode(set, icon, svg))
|
|
80
|
+
* .then(node => node.content.cloneNode(true));
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
static resolve: IconResolverFunction;
|
|
84
|
+
/** Icon set */
|
|
85
|
+
set: string;
|
|
86
|
+
/** Icon name */
|
|
87
|
+
icon: string;
|
|
14
88
|
/** Size of the icon */
|
|
15
89
|
size: 'sm' | 'md' | 'lg' | 'xl';
|
|
90
|
+
/**
|
|
91
|
+
* Controls how eager the element will be to load the icon data
|
|
92
|
+
* - `eager`: eagerly load the icon, blocking the main thread
|
|
93
|
+
* - `idle`: wait for the browser to attain an idle state before loading
|
|
94
|
+
* - `lazy` (default): wait for the element to enter the viewport before loading
|
|
95
|
+
*/
|
|
96
|
+
loading?: 'idle' | 'lazy' | 'eager';
|
|
97
|
+
/** Icon content. Any value that lit can render */
|
|
98
|
+
private content?;
|
|
99
|
+
connectedCallback(): void;
|
|
100
|
+
willUpdate(changed: PropertyValues<this>): void;
|
|
101
|
+
disconnectedCallback(): void;
|
|
102
|
+
render(): TemplateResult<1>;
|
|
103
|
+
protected load(): Promise<void>;
|
|
16
104
|
}
|
|
17
105
|
declare global {
|
|
18
106
|
interface HTMLElementTagNameMap {
|
|
19
107
|
'pf-icon': PfIcon;
|
|
20
108
|
}
|
|
21
109
|
}
|
|
110
|
+
export {};
|
package/pf-icon/pf-icon.js
CHANGED
|
@@ -1,30 +1,208 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
1
|
+
var _PfIcon_instances, _a, _PfIcon_intersecting, _PfIcon_logger, _PfIcon_lazyLoad, _PfIcon_load, _PfIcon_contentChanged;
|
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet, __decorate } from "tslib";
|
|
3
|
+
import { LitElement, html } from 'lit';
|
|
3
4
|
import { customElement } from 'lit/decorators/custom-element.js';
|
|
4
5
|
import { property } from 'lit/decorators/property.js';
|
|
6
|
+
import { state } from 'lit/decorators/state.js';
|
|
7
|
+
import { Logger } from '@patternfly/pfe-core/controllers/logger.js';
|
|
5
8
|
import { css } from "lit";
|
|
6
|
-
const style = css `:host([size=sm]) #container { --_size: var(--pf-global--icon--FontSize--sm, 10px); }\n:host([size=md]) #container { --_size: var(--pf-global--icon--FontSize--md, 18px); }\n:host([size=lg]) #container { --_size: var(--pf-global--icon--FontSize--lg, 24px); }\n:host([size=xl]) #container { --_size: var(--pf-global--icon--FontSize--xl, 54px); }\n\n#container, svg {\n width: var(--pf-icon--size, var(--_size));\n height: var(--pf-icon--size, var(--_size));\n min-width: var(--pf-icon--size, var(--_size));\n min-height: var(--pf-icon--size, var(--_size));\n}\n\n`;
|
|
9
|
+
const style = css `:host {\n position: relative;\n display: inline-block;\n line-height: 0;\n height: fit-content !important;\n width: fit-content !important;\n}\n\n#container {\n display: grid;\n grid-template: 1fr / 1fr;\n place-content: center;\n}\n\n#container.content ::slotted(*) {\n display: none;\n}\n\nsvg {\n fill: currentcolor;\n}\n\n:host([size=sm]) #container { --_size: var(--pf-global--icon--FontSize--sm, 10px); }\n:host([size=md]) #container { --_size: var(--pf-global--icon--FontSize--md, 18px); }\n:host([size=lg]) #container { --_size: var(--pf-global--icon--FontSize--lg, 24px); }\n:host([size=xl]) #container { --_size: var(--pf-global--icon--FontSize--xl, 54px); }\n\n#container, svg {\n width: var(--pf-icon--size, var(--_size));\n height: var(--pf-icon--size, var(--_size));\n min-width: var(--pf-icon--size, var(--_size));\n min-height: var(--pf-icon--size, var(--_size));\n}\n\n`;
|
|
7
10
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* @slot - Slotted content is used as a fallback in case the icon doesn't load
|
|
12
|
-
* @fires load - Fired when an icon is loaded and rendered
|
|
13
|
-
* @fires error - Fired when an icon fails to load
|
|
14
|
-
* @csspart fallback - Container for the fallback (i.e. slotted) content
|
|
11
|
+
* requestIdleCallback when available, requestAnimationFrame when not
|
|
12
|
+
* @param f callback
|
|
15
13
|
*/
|
|
16
|
-
|
|
14
|
+
const ric = globalThis.requestIdleCallback
|
|
15
|
+
?? globalThis.requestAnimationFrame
|
|
16
|
+
?? (async (f) => Promise.resolve().then(f));
|
|
17
|
+
/** Fired when an icon fails to load */
|
|
18
|
+
export class IconResolveError extends ErrorEvent {
|
|
19
|
+
constructor(set, icon,
|
|
20
|
+
/** The original error when importing the icon module */
|
|
21
|
+
originalError) {
|
|
22
|
+
super('error', { message: `Could not load icon "${icon}" from set "${set}".` });
|
|
23
|
+
this.originalError = originalError;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
let PfIcon = _a = class PfIcon extends LitElement {
|
|
17
27
|
constructor() {
|
|
18
28
|
super(...arguments);
|
|
29
|
+
_PfIcon_instances.add(this);
|
|
30
|
+
/** Icon set */
|
|
31
|
+
this.set = 'fas';
|
|
32
|
+
/** Icon name */
|
|
33
|
+
this.icon = '';
|
|
19
34
|
/** Size of the icon */
|
|
20
35
|
this.size = 'sm';
|
|
36
|
+
/**
|
|
37
|
+
* Controls how eager the element will be to load the icon data
|
|
38
|
+
* - `eager`: eagerly load the icon, blocking the main thread
|
|
39
|
+
* - `idle`: wait for the browser to attain an idle state before loading
|
|
40
|
+
* - `lazy` (default): wait for the element to enter the viewport before loading
|
|
41
|
+
*/
|
|
42
|
+
this.loading = 'lazy';
|
|
43
|
+
_PfIcon_intersecting.set(this, false);
|
|
44
|
+
_PfIcon_logger.set(this, new Logger(this));
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Register a new icon set
|
|
48
|
+
* @param setName - The name of the icon set
|
|
49
|
+
* @param resolver - A function that returns the URL of an icon
|
|
50
|
+
* @example returning a URL object
|
|
51
|
+
* ```js
|
|
52
|
+
* PfIcon.addIconSet('rh', (set, icon) =>
|
|
53
|
+
* new URL(`./icons/${set}/${icon}.js`, import.meta.url));
|
|
54
|
+
* ```
|
|
55
|
+
* @example returning a string
|
|
56
|
+
* ```js
|
|
57
|
+
* PfIcon.addIconSet('rh', (set, icon) =>
|
|
58
|
+
* `/assets/icons/${set}/${icon}.js`);
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
static addIconSet(setName, resolver) {
|
|
62
|
+
if (typeof setName !== 'string') {
|
|
63
|
+
Logger.warn(`[${this.name}]: the first argument to addIconSet must be a string.`);
|
|
64
|
+
}
|
|
65
|
+
else if (typeof resolver !== 'function') {
|
|
66
|
+
Logger.warn(`[${this.name}]: the second argument to addIconSet must be a function.`);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
this.resolvers.set(setName, resolver);
|
|
70
|
+
for (const instance of this.instances) {
|
|
71
|
+
__classPrivateFieldGet(instance, _PfIcon_instances, "m", _PfIcon_load).call(instance);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/** Removes all added icon sets and resets resolve function */
|
|
76
|
+
static reset() {
|
|
77
|
+
this.resolvers.clear();
|
|
78
|
+
this.resolve = this.defaultResolve;
|
|
79
|
+
}
|
|
80
|
+
connectedCallback() {
|
|
81
|
+
super.connectedCallback();
|
|
82
|
+
PfIcon.instances.add(this);
|
|
83
|
+
}
|
|
84
|
+
willUpdate(changed) {
|
|
85
|
+
if (changed.has('icon')) {
|
|
86
|
+
__classPrivateFieldGet(this, _PfIcon_instances, "m", _PfIcon_load).call(this);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
disconnectedCallback() {
|
|
90
|
+
super.disconnectedCallback();
|
|
91
|
+
PfIcon.io.unobserve(this);
|
|
92
|
+
PfIcon.instances.delete(this);
|
|
93
|
+
}
|
|
94
|
+
render() {
|
|
95
|
+
const content = this.content ?? '';
|
|
96
|
+
return html `
|
|
97
|
+
<div id="container" aria-hidden="true">${content}<span part="fallback"
|
|
98
|
+
?hidden=${!!content}><slot></slot>
|
|
99
|
+
</span>
|
|
100
|
+
</div>
|
|
101
|
+
`;
|
|
102
|
+
}
|
|
103
|
+
async load() {
|
|
104
|
+
const { set, icon } = this;
|
|
105
|
+
const resolver = PfIcon.resolvers.get(set) ?? PfIcon.resolve;
|
|
106
|
+
if (set && icon && typeof resolver === 'function') {
|
|
107
|
+
try {
|
|
108
|
+
this.content = await resolver(set, icon);
|
|
109
|
+
__classPrivateFieldGet(this, _PfIcon_instances, "m", _PfIcon_contentChanged).call(this);
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
__classPrivateFieldGet(this, _PfIcon_logger, "f").error(error.message);
|
|
113
|
+
this.dispatchEvent?.(new IconResolveError(set, icon, error));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
_PfIcon_intersecting = new WeakMap();
|
|
119
|
+
_PfIcon_logger = new WeakMap();
|
|
120
|
+
_PfIcon_instances = new WeakSet();
|
|
121
|
+
_PfIcon_lazyLoad = function _PfIcon_lazyLoad() {
|
|
122
|
+
PfIcon.io.observe(this);
|
|
123
|
+
if (__classPrivateFieldGet(this, _PfIcon_intersecting, "f")) {
|
|
124
|
+
this.load();
|
|
21
125
|
}
|
|
22
126
|
};
|
|
23
|
-
|
|
24
|
-
|
|
127
|
+
_PfIcon_load = function _PfIcon_load() {
|
|
128
|
+
switch (this.loading) {
|
|
129
|
+
case 'idle': return void ric(() => this.load());
|
|
130
|
+
case 'lazy': return void __classPrivateFieldGet(this, _PfIcon_instances, "m", _PfIcon_lazyLoad).call(this);
|
|
131
|
+
case 'eager': return void this.load();
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
_PfIcon_contentChanged = async function _PfIcon_contentChanged() {
|
|
135
|
+
await this.updateComplete;
|
|
136
|
+
this.dispatchEvent?.(new Event('load', { bubbles: true }));
|
|
137
|
+
};
|
|
138
|
+
PfIcon.styles = [style];
|
|
139
|
+
PfIcon.onIntersect = records => records.forEach(({ isIntersecting, target }) => {
|
|
140
|
+
const icon = target;
|
|
141
|
+
__classPrivateFieldSet(icon, _PfIcon_intersecting, isIntersecting, "f");
|
|
142
|
+
ric(() => {
|
|
143
|
+
if (__classPrivateFieldGet(icon, _PfIcon_intersecting, "f")) {
|
|
144
|
+
icon.load();
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
PfIcon.defaultResolve = (set, icon) => import(`@patternfly/icons/${set}/${icon}.js`)
|
|
149
|
+
.then(mod => mod.default.cloneNode(true));
|
|
150
|
+
PfIcon.io = new IntersectionObserver(PfIcon.onIntersect);
|
|
151
|
+
PfIcon.resolvers = new Map();
|
|
152
|
+
PfIcon.instances = new Set();
|
|
153
|
+
/**
|
|
154
|
+
* Gets a renderable icon. Override this to customize how icons are resolved.
|
|
155
|
+
* @param set - The name of the icon set
|
|
156
|
+
* @param icon - The name of the icon
|
|
157
|
+
* @returns The icon content, a node or anything else which lit-html can render
|
|
158
|
+
* @example resolving an icon node from an icon module
|
|
159
|
+
* ```js
|
|
160
|
+
* PfIcon.resolve = (set, icon) =>
|
|
161
|
+
* import(`/assets/icons/${set}/${icon}.js`)
|
|
162
|
+
* .then(mod => mod.default.cloneNode(true));
|
|
163
|
+
* ```
|
|
164
|
+
* @example resolving a named export from an icon collection module
|
|
165
|
+
* ```js
|
|
166
|
+
* PfIcon.resolve = (set, icon) =>
|
|
167
|
+
* import(`/assets/icons.js`)
|
|
168
|
+
* .then(module => module[icon]?.cloneNode(true));
|
|
169
|
+
* ```
|
|
170
|
+
* @example resolving a new node from an svg file
|
|
171
|
+
* ```js
|
|
172
|
+
* const iconCacne = new Map();
|
|
173
|
+
* function getCachedIconOrNewNode(set, icon, svg) {
|
|
174
|
+
* const key = `${set}_${icon}`;
|
|
175
|
+
* if (!iconCache.has(key)) {
|
|
176
|
+
* const template = document.createElement('template');
|
|
177
|
+
* template.innerHTML = svg;
|
|
178
|
+
* iconCache.set(key, template);
|
|
179
|
+
* }
|
|
180
|
+
* return iconCache.get(key);
|
|
181
|
+
* }
|
|
182
|
+
* PfIcon.resolve = (set, icon) =>
|
|
183
|
+
* fetch(`/assets/icons/${set}/${icon}.svg`)
|
|
184
|
+
* .then(response => response.text())
|
|
185
|
+
* .then(svg => getCachedIconOrNewNode(set, icon, svg))
|
|
186
|
+
* .then(node => node.content.cloneNode(true));
|
|
187
|
+
* ```
|
|
188
|
+
*/
|
|
189
|
+
PfIcon.resolve = PfIcon.defaultResolve;
|
|
190
|
+
PfIcon.version = "4.0.0";
|
|
191
|
+
__decorate([
|
|
192
|
+
property()
|
|
193
|
+
], PfIcon.prototype, "set", void 0);
|
|
194
|
+
__decorate([
|
|
195
|
+
property({ reflect: true })
|
|
196
|
+
], PfIcon.prototype, "icon", void 0);
|
|
25
197
|
__decorate([
|
|
26
198
|
property({ reflect: true })
|
|
27
199
|
], PfIcon.prototype, "size", void 0);
|
|
200
|
+
__decorate([
|
|
201
|
+
property()
|
|
202
|
+
], PfIcon.prototype, "loading", void 0);
|
|
203
|
+
__decorate([
|
|
204
|
+
state()
|
|
205
|
+
], PfIcon.prototype, "content", void 0);
|
|
28
206
|
PfIcon = __decorate([
|
|
29
207
|
customElement('pf-icon')
|
|
30
208
|
], PfIcon);
|
package/pf-icon/pf-icon.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pf-icon.js","sourceRoot":"","sources":["pf-icon.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;;;AAItD;;;;;;;;GAQG;AAEI,IAAM,MAAM,GAAZ,MAAM,MAAO,SAAQ,QAAQ;IAA7B;;QAKL,uBAAuB;QACM,SAAI,GAA8B,IAAI,CAAC;IACtE,CAAC;;AANwB,aAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,AAA9B,CAA+B;AAE9C,qBAAc,GAAG,KAAK,AAAR,CAAS;AAGR;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;oCAAwC;AANzD,MAAM;IADlB,aAAa,CAAC,SAAS,CAAC;GACZ,MAAM,CAOlB","sourcesContent":["import { BaseIcon } from './BaseIcon.js';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\n\nimport style from './pf-icon.css';\n\n/**\n * An **icon** component is a container that allows for icons of varying dimensions to\n * seamlessly replace each other without shifting surrounding content.\n *\n * @slot - Slotted content is used as a fallback in case the icon doesn't load\n * @fires load - Fired when an icon is loaded and rendered\n * @fires error - Fired when an icon fails to load\n * @csspart fallback - Container for the fallback (i.e. slotted) content\n */\n@customElement('pf-icon')\nexport class PfIcon extends BaseIcon {\n public static readonly styles = [...BaseIcon.styles, style];\n\n public static defaultIconSet = 'fas';\n\n /** Size of the icon */\n @property({ reflect: true }) size: 'sm' | 'md' | 'lg' | 'xl' = 'sm';\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-icon': PfIcon;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"pf-icon.js","sourceRoot":"","sources":["pf-icon.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, type PropertyValues, type TemplateResult } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\nimport { state } from 'lit/decorators/state.js';\n\nimport { Logger } from '@patternfly/pfe-core/controllers/logger.js';\n\nimport style from './pf-icon.css';\n\ntype Renderable = unknown;\n\nexport type IconResolverFunction = (set: string, icon: string) =>\n Renderable | Promise<Renderable>;\n\n/**\n * requestIdleCallback when available, requestAnimationFrame when not\n * @param f callback\n */\nconst ric: typeof globalThis.requestIdleCallback =\n globalThis.requestIdleCallback\n ?? globalThis.requestAnimationFrame\n ?? (async (f: () => void) => Promise.resolve().then(f));\n\n/** Fired when an icon fails to load */\nexport class IconResolveError extends ErrorEvent {\n constructor(\n set: string,\n icon: string,\n /** The original error when importing the icon module */\n public originalError: Error\n ) {\n super('error', { message: `Could not load icon \"${icon}\" from set \"${set}\".` });\n }\n}\n\n/**\n * An **icon** component is a container that allows for icons of varying dimensions to\n * seamlessly replace each other without shifting surrounding content.\n * @slot - Slotted content is used as a fallback in case the icon doesn't load\n * @fires load - Fired when an icon is loaded and rendered\n * @fires error - Fired when an icon fails to load\n * @csspart fallback - Container for the fallback (i.e. slotted) content\n * @cssprop {<length>} --pf-icon--size - size of the icon\n */\n@customElement('pf-icon')\nexport class PfIcon extends LitElement {\n public static readonly styles: CSSStyleSheet[] = [style];\n\n private static onIntersect: IntersectionObserverCallback = records =>\n records.forEach(({ isIntersecting, target }) => {\n const icon = target as PfIcon;\n icon.#intersecting = isIntersecting;\n ric(() => {\n if (icon.#intersecting) {\n icon.load();\n }\n });\n });\n\n private static defaultResolve: IconResolverFunction = (set: string, icon: string): Renderable =>\n import(`@patternfly/icons/${set}/${icon}.js`)\n .then(mod => mod.default.cloneNode(true));\n\n private static io = new IntersectionObserver(PfIcon.onIntersect);\n\n private static resolvers = new Map<string, IconResolverFunction>();\n\n private static instances = new Set<PfIcon>();\n\n /**\n * Register a new icon set\n * @param setName - The name of the icon set\n * @param resolver - A function that returns the URL of an icon\n * @example returning a URL object\n * ```js\n * PfIcon.addIconSet('rh', (set, icon) =>\n * new URL(`./icons/${set}/${icon}.js`, import.meta.url));\n * ```\n * @example returning a string\n * ```js\n * PfIcon.addIconSet('rh', (set, icon) =>\n * `/assets/icons/${set}/${icon}.js`);\n * ```\n */\n public static addIconSet(setName: string, resolver: IconResolverFunction): void {\n if (typeof setName !== 'string') {\n Logger.warn(`[${this.name}]: the first argument to addIconSet must be a string.`);\n } else if (typeof resolver !== 'function') {\n Logger.warn(`[${this.name}]: the second argument to addIconSet must be a function.`);\n } else {\n this.resolvers.set(setName, resolver);\n for (const instance of this.instances) {\n instance.#load();\n }\n }\n }\n\n /** Removes all added icon sets and resets resolve function */\n public static reset(): void {\n this.resolvers.clear();\n this.resolve = this.defaultResolve;\n }\n\n /**\n * Gets a renderable icon. Override this to customize how icons are resolved.\n * @param set - The name of the icon set\n * @param icon - The name of the icon\n * @returns The icon content, a node or anything else which lit-html can render\n * @example resolving an icon node from an icon module\n * ```js\n * PfIcon.resolve = (set, icon) =>\n * import(`/assets/icons/${set}/${icon}.js`)\n * .then(mod => mod.default.cloneNode(true));\n * ```\n * @example resolving a named export from an icon collection module\n * ```js\n * PfIcon.resolve = (set, icon) =>\n * import(`/assets/icons.js`)\n * .then(module => module[icon]?.cloneNode(true));\n * ```\n * @example resolving a new node from an svg file\n * ```js\n * const iconCacne = new Map();\n * function getCachedIconOrNewNode(set, icon, svg) {\n * const key = `${set}_${icon}`;\n * if (!iconCache.has(key)) {\n * const template = document.createElement('template');\n * template.innerHTML = svg;\n * iconCache.set(key, template);\n * }\n * return iconCache.get(key);\n * }\n * PfIcon.resolve = (set, icon) =>\n * fetch(`/assets/icons/${set}/${icon}.svg`)\n * .then(response => response.text())\n * .then(svg => getCachedIconOrNewNode(set, icon, svg))\n * .then(node => node.content.cloneNode(true));\n * ```\n */\n public static resolve: IconResolverFunction = PfIcon.defaultResolve;\n\n /** Icon set */\n @property() set = 'fas';\n\n /** Icon name */\n @property({ reflect: true }) icon = '';\n\n /** Size of the icon */\n @property({ reflect: true }) size: 'sm' | 'md' | 'lg' | 'xl' = 'sm';\n\n /**\n * Controls how eager the element will be to load the icon data\n * - `eager`: eagerly load the icon, blocking the main thread\n * - `idle`: wait for the browser to attain an idle state before loading\n * - `lazy` (default): wait for the element to enter the viewport before loading\n */\n @property() loading?: 'idle' | 'lazy' | 'eager' = 'lazy';\n\n /** Icon content. Any value that lit can render */\n @state() private content?: unknown;\n\n #intersecting = false;\n\n #logger = new Logger(this);\n\n #lazyLoad() {\n PfIcon.io.observe(this);\n if (this.#intersecting) {\n this.load();\n }\n }\n\n #load() {\n switch (this.loading) {\n case 'idle': return void ric(() => this.load());\n case 'lazy': return void this.#lazyLoad();\n case 'eager': return void this.load();\n }\n }\n\n async #contentChanged() {\n await this.updateComplete;\n this.dispatchEvent?.(new Event('load', { bubbles: true }));\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n PfIcon.instances.add(this);\n }\n\n willUpdate(changed: PropertyValues<this>): void {\n if (changed.has('icon')) {\n this.#load();\n }\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n PfIcon.io.unobserve(this);\n PfIcon.instances.delete(this);\n }\n\n render(): TemplateResult<1> {\n const content = this.content ?? '';\n return html`\n <div id=\"container\" aria-hidden=\"true\">${content}<span part=\"fallback\"\n ?hidden=${!!content}><slot></slot>\n </span>\n </div>\n `;\n }\n\n protected async load(): Promise<void> {\n const { set, icon } = this;\n const resolver = PfIcon.resolvers.get(set) ?? PfIcon.resolve;\n if (set && icon && typeof resolver === 'function') {\n try {\n this.content = await resolver(set, icon);\n this.#contentChanged();\n } catch (error: unknown) {\n this.#logger.error((error as IconResolveError).message);\n this.dispatchEvent?.(new IconResolveError(set, icon, error as Error));\n }\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-icon': PfIcon;\n }\n}\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { test } from '@playwright/test';
|
|
2
2
|
import { PfeDemoPage } from '@patternfly/pfe-tools/test/playwright/PfeDemoPage.js';
|
|
3
|
+
import { SSRPage } from '@patternfly/pfe-tools/test/playwright/SSRPage.js';
|
|
3
4
|
const tagName = 'pf-icon';
|
|
4
5
|
test.describe(tagName, () => {
|
|
5
6
|
test('snapshot', async ({ page }) => {
|
|
@@ -7,5 +8,16 @@ test.describe(tagName, () => {
|
|
|
7
8
|
await componentPage.navigate();
|
|
8
9
|
await componentPage.snapshot();
|
|
9
10
|
});
|
|
11
|
+
test('ssr', async ({ browser }) => {
|
|
12
|
+
const fixture = new SSRPage({
|
|
13
|
+
tagName,
|
|
14
|
+
browser,
|
|
15
|
+
demoDir: new URL('../demo/', import.meta.url),
|
|
16
|
+
importSpecifiers: [
|
|
17
|
+
`@patternfly/elements/${tagName}/${tagName}.js`,
|
|
18
|
+
],
|
|
19
|
+
});
|
|
20
|
+
await fixture.snapshots();
|
|
21
|
+
});
|
|
10
22
|
});
|
|
11
23
|
//# sourceMappingURL=pf-icon.e2e.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pf-icon.e2e.js","sourceRoot":"","sources":["pf-icon.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,sDAAsD,CAAC;
|
|
1
|
+
{"version":3,"file":"pf-icon.e2e.js","sourceRoot":"","sources":["pf-icon.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,sDAAsD,CAAC;AACnF,OAAO,EAAE,OAAO,EAAE,MAAM,kDAAkD,CAAC;AAE3E,MAAM,OAAO,GAAG,SAAS,CAAC;AAE1B,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;IAEH,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAChC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;YAC1B,OAAO;YACP,OAAO;YACP,OAAO,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YAC7C,gBAAgB,EAAE;gBAChB,wBAAwB,OAAO,IAAI,OAAO,KAAK;aAChD;SACF,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { test } from '@playwright/test';\nimport { PfeDemoPage } from '@patternfly/pfe-tools/test/playwright/PfeDemoPage.js';\nimport { SSRPage } from '@patternfly/pfe-tools/test/playwright/SSRPage.js';\n\nconst tagName = 'pf-icon';\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 test('ssr', async ({ browser }) => {\n const fixture = new SSRPage({\n tagName,\n browser,\n demoDir: new URL('../demo/', import.meta.url),\n importSpecifiers: [\n `@patternfly/elements/${tagName}/${tagName}.js`,\n ],\n });\n await fixture.snapshots();\n });\n});\n"]}
|