kemet-ui 3.0.0 → 3.1.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 +1588 -871
- package/dist/components/kemet-accordion/docs/stories.d.ts +12 -0
- package/dist/components/kemet-accordion/docs/stories.js +99 -0
- package/dist/components/kemet-accordion/docs/stories.js.map +1 -0
- package/dist/components/kemet-accordion/kemet-accordion-panel.d.ts +2 -2
- package/dist/components/kemet-accordion/kemet-accordion-panel.js +1 -1
- package/dist/components/kemet-accordion/kemet-accordion-panel.js.map +1 -1
- package/dist/components/kemet-accordion/kemet-accordion.d.ts +3 -3
- package/dist/components/kemet-accordion/kemet-accordion.js +2 -1
- package/dist/components/kemet-accordion/kemet-accordion.js.map +1 -1
- package/dist/components/kemet-accordion/spec.d.ts +2 -0
- package/dist/components/kemet-accordion/spec.js +132 -0
- package/dist/components/kemet-accordion/spec.js.map +1 -0
- package/dist/components/kemet-alert/docs/stories.d.ts +1 -1
- package/dist/components/kemet-alert/docs/stories.js +20 -19
- package/dist/components/kemet-alert/docs/stories.js.map +1 -1
- package/dist/components/kemet-alert/kemet-alert.d.ts +2 -2
- package/dist/components/kemet-alert/kemet-alert.js.map +1 -1
- package/dist/components/kemet-alert/spec.d.ts +1 -0
- package/dist/components/kemet-alert/spec.js +35 -0
- package/dist/components/kemet-alert/spec.js.map +1 -0
- package/dist/components/kemet-alert/types.d.ts +1 -1
- package/dist/components/kemet-avatar/docs/stories.d.ts +1 -1
- package/dist/components/kemet-avatar/docs/stories.js.map +1 -1
- package/dist/components/kemet-avatar/kemet-avatar.js.map +1 -1
- package/dist/components/kemet-avatar/kemet-avatars.js.map +1 -1
- package/dist/components/kemet-avatar/spec.d.ts +1 -0
- package/dist/components/kemet-avatar/spec.js +26 -0
- package/dist/components/kemet-avatar/spec.js.map +1 -0
- package/dist/components/kemet-badge/docs/stories.d.ts +1 -1
- package/dist/components/kemet-badge/kemet-badge.js.map +1 -1
- package/dist/components/kemet-badge/spec.d.ts +1 -0
- package/dist/components/kemet-badge/spec.js +21 -0
- package/dist/components/kemet-badge/spec.js.map +1 -0
- package/dist/components/kemet-badge/types.d.ts +1 -1
- package/dist/components/kemet-button/docs/stories.d.ts +1 -1
- package/dist/components/kemet-button/kemet-button.d.ts +2 -2
- package/dist/components/kemet-button/kemet-button.js +10 -8
- package/dist/components/kemet-button/kemet-button.js.map +1 -1
- package/dist/components/kemet-button/spec.d.ts +1 -0
- package/dist/components/kemet-button/spec.js +49 -0
- package/dist/components/kemet-button/spec.js.map +1 -0
- package/dist/components/kemet-button/types.d.ts +1 -1
- package/dist/components/kemet-card/docs/stories.d.ts +1 -1
- package/dist/components/kemet-card/docs/stories.js.map +1 -1
- package/dist/components/kemet-card/kemet-card.d.ts +1 -1
- package/dist/components/kemet-card/kemet-card.js +1 -1
- package/dist/components/kemet-card/kemet-card.js.map +1 -1
- package/dist/components/kemet-card/spec.d.ts +1 -0
- package/dist/components/kemet-card/spec.js +31 -0
- package/dist/components/kemet-card/spec.js.map +1 -0
- package/dist/components/kemet-carousel/docs/stories.d.ts +1 -1
- package/dist/components/kemet-carousel/docs/stories.js.map +1 -1
- package/dist/components/kemet-carousel/kemet-carousel-current.d.ts +1 -1
- package/dist/components/kemet-carousel/kemet-carousel-current.js.map +1 -1
- package/dist/components/kemet-carousel/kemet-carousel-first.d.ts +1 -0
- package/dist/components/kemet-carousel/kemet-carousel-first.js +11 -4
- package/dist/components/kemet-carousel/kemet-carousel-first.js.map +1 -1
- package/dist/components/kemet-carousel/kemet-carousel-last.d.ts +2 -1
- package/dist/components/kemet-carousel/kemet-carousel-last.js +12 -5
- package/dist/components/kemet-carousel/kemet-carousel-last.js.map +1 -1
- package/dist/components/kemet-carousel/kemet-carousel-link.d.ts +1 -0
- package/dist/components/kemet-carousel/kemet-carousel-link.js +14 -4
- package/dist/components/kemet-carousel/kemet-carousel-link.js.map +1 -1
- package/dist/components/kemet-carousel/kemet-carousel-next.d.ts +1 -0
- package/dist/components/kemet-carousel/kemet-carousel-next.js +11 -4
- package/dist/components/kemet-carousel/kemet-carousel-next.js.map +1 -1
- package/dist/components/kemet-carousel/kemet-carousel-prev.d.ts +1 -0
- package/dist/components/kemet-carousel/kemet-carousel-prev.js +11 -4
- package/dist/components/kemet-carousel/kemet-carousel-prev.js.map +1 -1
- package/dist/components/kemet-carousel/kemet-carousel-slide.js +5 -5
- package/dist/components/kemet-carousel/kemet-carousel-slide.js.map +1 -1
- package/dist/components/kemet-carousel/kemet-carousel-total.js.map +1 -1
- package/dist/components/kemet-carousel/kemet-carousel.d.ts +18 -14
- package/dist/components/kemet-carousel/kemet-carousel.js +32 -13
- package/dist/components/kemet-carousel/kemet-carousel.js.map +1 -1
- package/dist/components/kemet-carousel/spec.d.ts +10 -0
- package/dist/components/kemet-carousel/spec.js +168 -0
- package/dist/components/kemet-carousel/spec.js.map +1 -0
- package/dist/components/kemet-checkbox/docs/stories.d.ts +1 -1
- package/dist/components/kemet-checkbox/kemet-checkbox.d.ts +4 -4
- package/dist/components/kemet-checkbox/kemet-checkbox.js +4 -4
- package/dist/components/kemet-checkbox/kemet-checkbox.js.map +1 -1
- package/dist/components/kemet-checkbox/spec.d.ts +1 -0
- package/dist/components/kemet-checkbox/spec.js +33 -0
- package/dist/components/kemet-checkbox/spec.js.map +1 -0
- package/dist/components/kemet-checkbox/types.d.ts +1 -1
- package/dist/components/kemet-combo/docs/stories.d.ts +1 -1
- package/dist/components/kemet-combo/kemet-combo.d.ts +9 -8
- package/dist/components/kemet-combo/kemet-combo.js +18 -17
- package/dist/components/kemet-combo/kemet-combo.js.map +1 -1
- package/dist/components/kemet-combo/spec.d.ts +3 -0
- package/dist/components/kemet-combo/spec.js +46 -0
- package/dist/components/kemet-combo/spec.js.map +1 -0
- package/dist/components/kemet-count/docs/stories.d.ts +1 -1
- package/dist/components/kemet-count/kemet-count.d.ts +1 -1
- package/dist/components/kemet-count/kemet-count.js +1 -1
- package/dist/components/kemet-count/kemet-count.js.map +1 -1
- package/dist/components/kemet-count/spec.d.ts +4 -0
- package/dist/components/kemet-count/spec.js +45 -0
- package/dist/components/kemet-count/spec.js.map +1 -0
- package/dist/components/kemet-draggable/docs/stories.d.ts +1 -1
- package/dist/components/kemet-draggable/kemet-draggable.d.ts +3 -3
- package/dist/components/kemet-draggable/kemet-draggable.js +6 -5
- package/dist/components/kemet-draggable/kemet-draggable.js.map +1 -1
- package/dist/components/kemet-draggable/spec.d.ts +1 -0
- package/dist/components/kemet-draggable/spec.js +30 -0
- package/dist/components/kemet-draggable/spec.js.map +1 -0
- package/dist/components/kemet-drawer/docs/stories.d.ts +1 -1
- package/dist/components/kemet-drawer/kemet-drawer.d.ts +2 -2
- package/dist/components/kemet-drawer/kemet-drawer.js +2 -2
- package/dist/components/kemet-drawer/kemet-drawer.js.map +1 -1
- package/dist/components/kemet-drawer/spec.d.ts +1 -0
- package/dist/components/kemet-drawer/spec.js +21 -0
- package/dist/components/kemet-drawer/spec.js.map +1 -0
- package/dist/components/kemet-drawer/styles.js +1 -0
- package/dist/components/kemet-drawer/styles.js.map +1 -1
- package/dist/components/kemet-drawer/types.d.ts +2 -2
- package/dist/components/kemet-fab/docs/stories.d.ts +1 -1
- package/dist/components/kemet-fab/kemet-fab.d.ts +1 -1
- package/dist/components/kemet-fab/kemet-fab.js +4 -10
- package/dist/components/kemet-fab/kemet-fab.js.map +1 -1
- package/dist/components/kemet-fab/spec.d.ts +2 -0
- package/dist/components/kemet-fab/spec.js +43 -0
- package/dist/components/kemet-fab/spec.js.map +1 -0
- package/dist/components/kemet-field/docs/stories.d.ts +1 -1
- package/dist/components/kemet-field/kemet-field.d.ts +7 -7
- package/dist/components/kemet-field/kemet-field.js +9 -14
- package/dist/components/kemet-field/kemet-field.js.map +1 -1
- package/dist/components/kemet-field/spec.d.ts +2 -0
- package/dist/components/kemet-field/spec.js +38 -0
- package/dist/components/kemet-field/spec.js.map +1 -0
- package/dist/components/kemet-field/types.d.ts +1 -1
- package/dist/components/kemet-flipcard/docs/stories.d.ts +1 -1
- package/dist/components/kemet-flipcard/kemet-flipcard-trigger.d.ts +1 -1
- package/dist/components/kemet-flipcard/kemet-flipcard-trigger.js +2 -3
- package/dist/components/kemet-flipcard/kemet-flipcard-trigger.js.map +1 -1
- package/dist/components/kemet-flipcard/kemet-flipcard.d.ts +2 -2
- package/dist/components/kemet-flipcard/kemet-flipcard.js +3 -5
- package/dist/components/kemet-flipcard/kemet-flipcard.js.map +1 -1
- package/dist/components/kemet-flipcard/spec.d.ts +3 -0
- package/dist/components/kemet-flipcard/spec.js +38 -0
- package/dist/components/kemet-flipcard/spec.js.map +1 -0
- package/dist/components/kemet-icon/docs/stories.d.ts +1 -1
- package/dist/components/kemet-icon/kemet-icon.js +1 -1
- package/dist/components/kemet-icon/kemet-icon.js.map +1 -1
- package/dist/components/kemet-icon/spec.d.ts +1 -0
- package/dist/components/kemet-icon/spec.js +69 -0
- package/dist/components/kemet-icon/spec.js.map +1 -0
- package/dist/components/kemet-input/docs/stories.d.ts +1 -1
- package/dist/components/kemet-input/kemet-input.d.ts +3 -22
- package/dist/components/kemet-input/kemet-input.js +3 -23
- package/dist/components/kemet-input/kemet-input.js.map +1 -1
- package/dist/components/kemet-input/spec.d.ts +1 -0
- package/dist/components/kemet-input/spec.js +83 -0
- package/dist/components/kemet-input/spec.js.map +1 -0
- package/dist/components/kemet-input/types.d.ts +3 -3
- package/dist/components/kemet-modal/docs/stories.d.ts +1 -1
- package/dist/components/kemet-modal/docs/stories.js.map +1 -1
- package/dist/components/kemet-modal/kemet-modal-close.js.map +1 -1
- package/dist/components/kemet-modal/kemet-modal.d.ts +4 -4
- package/dist/components/kemet-modal/kemet-modal.js +3 -3
- package/dist/components/kemet-modal/kemet-modal.js.map +1 -1
- package/dist/components/kemet-modal/types.d.ts +1 -1
- package/dist/components/kemet-multi-input/docs/stories.d.ts +8 -0
- package/dist/components/kemet-multi-input/docs/stories.js +33 -0
- package/dist/components/kemet-multi-input/docs/stories.js.map +1 -0
- package/dist/components/kemet-multi-input/kemet-multi-input.d.ts +116 -0
- package/dist/components/kemet-multi-input/kemet-multi-input.js +193 -0
- package/dist/components/kemet-multi-input/kemet-multi-input.js.map +1 -0
- package/dist/components/kemet-multi-input/styles.d.ts +1 -0
- package/dist/components/kemet-multi-input/styles.js +87 -0
- package/dist/components/kemet-multi-input/styles.js.map +1 -0
- package/dist/components/kemet-multi-input/types.d.ts +5 -0
- package/dist/components/kemet-multi-input/types.js +2 -0
- package/dist/components/kemet-multi-input/types.js.map +1 -0
- package/dist/components/kemet-password/docs/stories.d.ts +1 -1
- package/dist/components/kemet-password/kemet-password.d.ts +14 -8
- package/dist/components/kemet-password/kemet-password.js +4 -33
- package/dist/components/kemet-password/kemet-password.js.map +1 -1
- package/dist/components/kemet-password/types.d.ts +1 -1
- package/dist/components/kemet-popper/docs/stories.d.ts +1 -1
- package/dist/components/kemet-popper/kemet-popper-close.d.ts +1 -1
- package/dist/components/kemet-popper/kemet-popper-close.js +2 -3
- package/dist/components/kemet-popper/kemet-popper-close.js.map +1 -1
- package/dist/components/kemet-popper/kemet-popper.d.ts +18 -7
- package/dist/components/kemet-popper/kemet-popper.js +21 -25
- package/dist/components/kemet-popper/kemet-popper.js.map +1 -1
- package/dist/components/kemet-popper/types.d.ts +3 -3
- package/dist/components/kemet-radio/docs/stories.d.ts +1 -1
- package/dist/components/kemet-radio/kemet-radio.js.map +1 -1
- package/dist/components/kemet-radio/kemet-radios.d.ts +5 -4
- package/dist/components/kemet-radio/kemet-radios.js +10 -4
- package/dist/components/kemet-radio/kemet-radios.js.map +1 -1
- package/dist/components/kemet-radio/spec.d.ts +3 -0
- package/dist/components/kemet-radio/spec.js +67 -0
- package/dist/components/kemet-radio/spec.js.map +1 -0
- package/dist/components/kemet-radio/types.d.ts +2 -2
- package/dist/components/kemet-rotator/docs/stories.d.ts +1 -1
- package/dist/components/kemet-rotator/kemet-rotator.d.ts +1 -1
- package/dist/components/kemet-rotator/kemet-rotator.js +1 -2
- package/dist/components/kemet-rotator/kemet-rotator.js.map +1 -1
- package/dist/components/kemet-rotator/types.d.ts +1 -1
- package/dist/components/kemet-scroll-link/docs/stories.d.ts +1 -1
- package/dist/components/kemet-scroll-link/kemet-scroll-link.d.ts +2 -2
- package/dist/components/kemet-scroll-link/kemet-scroll-link.js +11 -10
- package/dist/components/kemet-scroll-link/kemet-scroll-link.js.map +1 -1
- package/dist/components/kemet-scroll-nav/docs/stories.d.ts +1 -1
- package/dist/components/kemet-scroll-nav/kemet-scroll-nav.d.ts +2 -2
- package/dist/components/kemet-scroll-nav/kemet-scroll-nav.js +2 -7
- package/dist/components/kemet-scroll-nav/kemet-scroll-nav.js.map +1 -1
- package/dist/components/kemet-scroll-nav/types.d.ts +1 -1
- package/dist/components/kemet-scroll-snap/docs/stories.d.ts +1 -1
- package/dist/components/kemet-scroll-snap/docs/stories.js.map +1 -1
- package/dist/components/kemet-scroll-snap/kemet-scroll-snap-paginator.d.ts +5 -4
- package/dist/components/kemet-scroll-snap/kemet-scroll-snap-paginator.js +1 -1
- package/dist/components/kemet-scroll-snap/kemet-scroll-snap-paginator.js.map +1 -1
- package/dist/components/kemet-scroll-snap/kemet-scroll-snap-slide.d.ts +1 -1
- package/dist/components/kemet-scroll-snap/kemet-scroll-snap-slide.js +1 -1
- package/dist/components/kemet-scroll-snap/kemet-scroll-snap-slide.js.map +1 -1
- package/dist/components/kemet-scroll-snap/kemet-scroll-snap.d.ts +3 -2
- package/dist/components/kemet-scroll-snap/kemet-scroll-snap.js +2 -7
- package/dist/components/kemet-scroll-snap/kemet-scroll-snap.js.map +1 -1
- package/dist/components/kemet-scroll-snap/types.d.ts +2 -2
- package/dist/components/kemet-select/docs/stories.d.ts +1 -1
- package/dist/components/kemet-select/kemet-option.d.ts +1 -1
- package/dist/components/kemet-select/kemet-option.js +1 -1
- package/dist/components/kemet-select/kemet-option.js.map +1 -1
- package/dist/components/kemet-select/kemet-select.d.ts +19 -10
- package/dist/components/kemet-select/kemet-select.js +3 -44
- package/dist/components/kemet-select/kemet-select.js.map +1 -1
- package/dist/components/kemet-select/spec.d.ts +3 -0
- package/dist/components/kemet-select/spec.js +53 -0
- package/dist/components/kemet-select/spec.js.map +1 -0
- package/dist/components/kemet-sortable/docs/stories.d.ts +1 -1
- package/dist/components/kemet-sortable/docs/stories.js.map +1 -1
- package/dist/components/kemet-sortable/kemet-sortable-item.js.map +1 -1
- package/dist/components/kemet-sortable/kemet-sortable.d.ts +5 -5
- package/dist/components/kemet-sortable/kemet-sortable.js +5 -5
- package/dist/components/kemet-sortable/kemet-sortable.js.map +1 -1
- package/dist/components/kemet-svgs/docs/stories.d.ts +1 -1
- package/dist/components/kemet-svgs/docs/stories.js.map +1 -1
- package/dist/components/kemet-svgs/kemet-svg.js.map +1 -1
- package/dist/components/kemet-svgs/kemet-svgs.d.ts +1 -1
- package/dist/components/kemet-svgs/kemet-svgs.js +1 -1
- package/dist/components/kemet-svgs/kemet-svgs.js.map +1 -1
- package/dist/components/kemet-tabs/docs/stories.d.ts +1 -1
- package/dist/components/kemet-tabs/docs/stories.js.map +1 -1
- package/dist/components/kemet-tabs/kemet-tab-panel.d.ts +1 -0
- package/dist/components/kemet-tabs/kemet-tab-panel.js +3 -0
- package/dist/components/kemet-tabs/kemet-tab-panel.js.map +1 -1
- package/dist/components/kemet-tabs/kemet-tab.d.ts +1 -0
- package/dist/components/kemet-tabs/kemet-tab.js +4 -1
- package/dist/components/kemet-tabs/kemet-tab.js.map +1 -1
- package/dist/components/kemet-tabs/kemet-tabs.d.ts +23 -14
- package/dist/components/kemet-tabs/kemet-tabs.js +3 -47
- package/dist/components/kemet-tabs/kemet-tabs.js.map +1 -1
- package/dist/components/kemet-tabs/types.d.ts +3 -3
- package/dist/components/kemet-textarea/docs/stories.d.ts +1 -1
- package/dist/components/kemet-textarea/kemet-textarea.js.map +1 -1
- package/dist/components/kemet-textarea/spec.d.ts +3 -0
- package/dist/components/kemet-textarea/spec.js +69 -0
- package/dist/components/kemet-textarea/spec.js.map +1 -0
- package/dist/components/kemet-textarea/types.d.ts +1 -1
- package/dist/components/kemet-timer/docs/stories.d.ts +10 -0
- package/dist/components/kemet-timer/docs/stories.js +40 -0
- package/dist/components/kemet-timer/docs/stories.js.map +1 -0
- package/dist/components/kemet-timer/kemet-timer-display.d.ts +25 -0
- package/dist/components/kemet-timer/kemet-timer-display.js +65 -0
- package/dist/components/kemet-timer/kemet-timer-display.js.map +1 -0
- package/dist/components/kemet-timer/kemet-timer.d.ts +36 -0
- package/dist/components/kemet-timer/kemet-timer.js +103 -0
- package/dist/components/kemet-timer/kemet-timer.js.map +1 -0
- package/dist/components/kemet-timer/styles.d.ts +2 -0
- package/dist/components/kemet-timer/styles.js +12 -0
- package/dist/components/kemet-timer/styles.js.map +1 -0
- package/dist/components/kemet-timer/types.d.ts +1 -0
- package/dist/components/kemet-timer/types.js +2 -0
- package/dist/components/kemet-timer/types.js.map +1 -0
- package/dist/components/kemet-toggle/docs/stories.d.ts +1 -1
- package/dist/components/kemet-toggle/kemet-toggle.d.ts +3 -3
- package/dist/components/kemet-toggle/kemet-toggle.js +3 -3
- package/dist/components/kemet-toggle/kemet-toggle.js.map +1 -1
- package/dist/components/kemet-toggle/spec.d.ts +1 -0
- package/dist/components/kemet-toggle/spec.js +46 -0
- package/dist/components/kemet-toggle/spec.js.map +1 -0
- package/dist/components/kemet-tooltip/docs/stories.d.ts +1 -1
- package/dist/components/kemet-tooltip/kemet-tooltip.d.ts +2 -2
- package/dist/components/kemet-tooltip/kemet-tooltip.js +13 -12
- package/dist/components/kemet-tooltip/kemet-tooltip.js.map +1 -1
- package/dist/components/kemet-tooltip/types.d.ts +3 -3
- package/dist/components/kemet-tracker/docs/stories.d.ts +1 -1
- package/dist/components/kemet-tracker/docs/stories.js.map +1 -1
- package/dist/components/kemet-tracker/kemet-tracker-step.d.ts +2 -2
- package/dist/components/kemet-tracker/kemet-tracker-step.js +2 -2
- package/dist/components/kemet-tracker/kemet-tracker-step.js.map +1 -1
- package/dist/components/kemet-tracker/kemet-tracker.d.ts +2 -1
- package/dist/components/kemet-tracker/kemet-tracker.js.map +1 -1
- package/dist/components/kemet-upload/docs/stories.d.ts +1 -1
- package/dist/components/kemet-upload/kemet-upload-file.js +1 -2
- package/dist/components/kemet-upload/kemet-upload-file.js.map +1 -1
- package/dist/components/kemet-upload/kemet-upload.d.ts +3 -3
- package/dist/components/kemet-upload/kemet-upload.js +3 -8
- package/dist/components/kemet-upload/kemet-upload.js.map +1 -1
- package/dist/kemet-components.bundle.js +82 -86
- package/dist/kemet-components.bundle.js.map +1 -1
- package/dist/kemet-components.cjs +3320 -2985
- package/dist/kemet-components.js +3320 -2985
- package/dist/styles/kemet.base.css +24 -2
- package/dist/styles/kemet.base.css.map +1 -1
- package/dist/styles/kemet.core.css +266 -562
- package/dist/styles/kemet.core.css.map +1 -1
- package/dist/styles/shared/_config.scss +25 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utilities/controllers/forms.js +16 -18
- package/dist/utilities/controllers/forms.js.map +1 -1
- package/dist/utilities/controllers/forms.spec.d.ts +2 -0
- package/dist/utilities/controllers/forms.spec.js +36 -0
- package/dist/utilities/controllers/forms.spec.js.map +1 -0
- package/dist/utilities/misc/drag.d.ts +6 -0
- package/dist/utilities/misc/drag.js +63 -0
- package/dist/utilities/misc/drag.js.map +1 -0
- package/package.json +50 -35
- package/dist/components/kemet-accordion/stories.d.ts +0 -12
- package/dist/components/kemet-accordion/stories.js +0 -47
- package/dist/components/kemet-accordion/stories.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/components/kemet-drawer/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAErC,MAAM,cAAc,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC,YAAY,IAAI,CAAC;AAEpE,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/components/kemet-drawer/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAErC,MAAM,cAAc,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC,YAAY,IAAI,CAAC;AAEpE,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwG5B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAqCA,SAAS,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAsDzB,SAAS,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA2DzB,SAAS,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAwDzB,SAAS,CAAC,cAAc,CAAC;;;;;;CAMxD,CAAC","sourcesContent":["import { css, unsafeCSS } from 'lit';\n\nconst documentHeight = `${document.documentElement.scrollHeight}px`;\n\nexport const stylesBase = css`\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host {\n --kemet-drawer-overlay-color: rgb(var(--kemet-color-black) / 20%);\n --kemet-drawer-width: 300px;\n --kemet-drawer-height: 100%;\n --kemet-drawer-color: rgb(var(--kemet-color-gray-50));\n --kemet-drawer-background-color: rgb(var(--kemet-color-gray-950));\n\n width: 100%;\n }\n\n .off-canvas {\n position: relative;\n overflow: hidden;\n }\n\n .off-canvas__nav {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 100;\n visibility: hidden;\n height: 100%;\n overflow: auto;\n transition: all 0.5s;\n }\n\n .off-canvas__nav::after {\n position: absolute;\n top: 0;\n right: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.2);\n content: '';\n opacity: 1;\n transition: opacity 0.5s;\n }\n\n :host([opened]) .off-canvas__nav::after {\n width: 0;\n height: 0;\n opacity: 0;\n transition: opacity 0.5s, width 0.1s 0.5s, height 0.1s 0.5s;\n }\n\n .off-canvas__pusher {\n position: relative;\n left: 0;\n z-index: 99;\n height: 100%;\n transition: transform 0.5s;\n }\n\n :host([overlay]) .off-canvas__pusher::after {\n position: absolute;\n top: 0;\n right: 0;\n width: 0;\n height: 0;\n background: var(--kemet-drawer-overlay-color);\n content: '';\n opacity: 0;\n transition: opacity 0.5s, width 0.1s 0.5s, height 0.1s 0.5s;\n }\n\n :host([opened]) .off-canvas__pusher::after {\n width: 100%;\n height: 100%;\n opacity: 1;\n transition: opacity 0.5s;\n transform: scale(2);\n }\n\n .off-canvas__content {\n position: relative;\n /* overflow-y: scroll; */\n min-height: 100vh;\n }\n\n .off-canvas__wrapper {\n position: relative;\n }\n\n ::slotted([slot=\"content\"]) {\n min-height: 100vh;\n }\n\n /* -------------------------------------- */\n /* custom properties */\n /* -------------------------------------- */\n\n .off-canvas__nav {\n width: var(--kemet-drawer-width);\n height: var(--kemet-drawer-height);\n color: var(--kemet-drawer-color);\n background: var(--kemet-drawer-background-color);\n }\n`;\n\nexport const stylesEffects = css`\n /* slide */\n :host([effect='slide']) .off-canvas__nav {\n visibility: visible;\n transform: translate3d(-100%, 0, 0);\n }\n\n :host([effect='slide'][opened]) .off-canvas__nav {\n visibility: visible;\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='slide']) .off-canvas__nav:after {\n display: none;\n }\n\n :host([effect='slide'][side='right']) .off-canvas__nav {\n transform: translate3d(100vw, 0, 0);\n }\n\n :host([effect='slide'][side='right'][opened]) .off-canvas__nav {\n transform: translate3d(calc(100vw - var(--kemet-drawer-width)), 0, 0);\n }\n\n :host([effect='slide'][side='top']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height, 100vh);\n transform: translate3d(0, calc(var(--kemet-drawer-height) * -1), 0);\n }\n\n :host([effect='slide'][side='top'][opened]) .off-canvas__nav {\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='slide'][side='bottom']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height, 100vh);\n transform: translate3d(0, ${unsafeCSS(documentHeight)}, 0);\n }\n\n :host([effect='slide'][side='bottom'][opened]) .off-canvas__nav {\n transform: translate3d(0, calc(100vh - var(--kemet-drawer-height)), 0);\n }\n\n /* reveal */\n :host([effect='reveal'][opened]) .off-canvas__pusher {\n transform: translate3d(var(--kemet-drawer-width), 0, 0);\n }\n\n :host([effect='reveal']) .off-canvas__nav {\n z-index: 1;\n }\n\n :host([effect='reveal'][opened]) .off-canvas__nav {\n visibility: visible;\n transition: transform 0.5s;\n }\n\n :host([effect='reveal']) .off-canvas__nav::after {\n display: none;\n }\n\n :host([effect='reveal'][side='right'][opened]) .off-canvas__pusher {\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='reveal'][side='right']) .off-canvas__nav {\n transform: translate3d(100vw, 0, 0);\n }\n\n :host([effect='reveal'][side='right'][opened]) .off-canvas__nav {\n transform: translate3d(calc(100vw - var(--kemet-drawer-width)), 0, 0);\n }\n\n :host([effect='reveal'][side='top']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height, 100vh);\n transform: translate3d(0, calc(var(--kemet-drawer-height) * -1), 0);\n }\n\n :host([effect='reveal'][side='top'][opened]) .off-canvas__nav {\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='reveal'][side='top'][opened]) .off-canvas__pusher {\n transform: translate3d(0, var(--kemet-drawer-height), 0);\n }\n\n :host([effect='reveal'][side='bottom']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height, 100vh);\n transform: translate3d(0, ${unsafeCSS(documentHeight)}, 0);\n }\n\n :host([effect='reveal'][side='bottom'][opened]) .off-canvas__nav {\n transform: translate3d(0, calc(100vh - var(--kemet-drawer-height)), 0);\n }\n\n :host([effect='reveal'][side='bottom'][opened]) .off-canvas__pusher {\n transform: translate3d(0, calc(var(--kemet-drawer-height) * -1), 0);\n }\n\n /* push */\n :host([effect='push'][opened]) .off-canvas__pusher {\n transform: translate3d(var(--kemet-drawer-width), 0, 0);\n }\n\n :host([effect='push']) .off-canvas__nav {\n transform: translate3d(-100%, 0, 0);\n }\n\n :host([effect='push'][opened]) .off-canvas__nav {\n visibility: visible;\n transition: transform 0.5s;\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='push']) .off-canvas__nav::after {\n display: none;\n }\n\n :host([effect='push'][side='right'][opened]) .off-canvas__pusher {\n transform: translate3d(calc(var(--kemet-drawer-width) * -1), 0, 0);\n }\n\n :host([effect='push'][side='right']) .off-canvas__nav {\n transform: translate3d(100vw, 0, 0);\n }\n\n :host([effect='push'][side='right'][opened]) .off-canvas__nav {\n transform: translate3d(calc(100vw - var(--kemet-drawer-width)), 0, 0);\n }\n\n :host([effect='push'][side='top']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height, 100vh);\n transform: translate3d(0, calc(var(--kemet-drawer-height) * -1), 0);\n }\n\n :host([effect='push'][side='top'][opened]) .off-canvas__nav {\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='push'][side='top'][opened]) .off-canvas__pusher {\n transform: translate3d(0, var(--kemet-drawer-height), 0);\n }\n\n :host([effect='push'][side='bottom']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height);\n transform: translate3d(0, ${unsafeCSS(documentHeight)}, 0);\n }\n\n :host([effect='push'][side='bottom'][opened]) .off-canvas__nav {\n transform: translate3d(0, calc(100vh - var(--kemet-drawer-height)), 0);\n }\n\n :host([effect='push'][side='bottom'][opened]) .off-canvas__pusher {\n transform: translate3d(0, calc(var(--kemet-drawer-height) * -1), 0);\n }\n\n /* scale */\n :host([effect='scale']) .off-canvas__pusher {\n transform-style: preserve-3d;\n }\n\n :host([effect='scale'][opened]) .off-canvas__pusher {\n transform: translate3d(0, 0, 0) scale(0.95);\n }\n\n :host([effect='scale']) .off-canvas__nav {\n opacity: 1;\n transform: translate3d(-100%, 0, 0);\n }\n\n :host([effect='scale'][opened]) .off-canvas__nav {\n visibility: visible;\n transition: transform 0.5s;\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='scale']) .off-canvas__nav::after {\n display: none;\n }\n\n :host([effect='scale'][side='right']) .off-canvas__nav {\n transform: translate3d(100vw, 0, 0);\n }\n\n :host([effect='scale'][side='right'][opened]) .off-canvas__nav {\n transform: translate3d(calc(100vw - var(--kemet-drawer-width)), 0, 0);\n }\n\n :host([effect='scale'][side='top']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height, 100vh);\n transform: translate3d(0, calc(var(--kemet-drawer-height) * -1), 0);\n }\n\n :host([effect='scale'][side='top'][opened]) .off-canvas__nav {\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='scale'][side='bottom']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height, 100vh);\n transform: translate3d(0, ${unsafeCSS(documentHeight)}, 0);\n }\n\n :host([effect='scale'][side='bottom'][opened]) .off-canvas__nav {\n transform: translate3d(0, calc(100vh - var(--kemet-drawer-height)), 0);\n }\n`;\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
1
|
+
export type TypeEffect = 'slide' | 'reveal' | 'push' | 'scale';
|
|
2
|
+
export type TypeSide = 'left' | 'right' | 'top' | 'bottom';
|
|
@@ -6,7 +6,7 @@ import '../../kemet-tabs/kemet-tab';
|
|
|
6
6
|
import '../../kemet-tabs/kemet-tab-panel';
|
|
7
7
|
declare const meta: Meta;
|
|
8
8
|
export default meta;
|
|
9
|
-
|
|
9
|
+
type Story = StoryObj;
|
|
10
10
|
export declare const Standard: Story;
|
|
11
11
|
export declare const Outlined: Story;
|
|
12
12
|
export declare const Disabled: Story;
|
|
@@ -24,7 +24,7 @@ import { LitElement } from 'lit';
|
|
|
24
24
|
* @cssproperty --kemet-fab-pill-radius - The border radius of a pill fab.
|
|
25
25
|
*
|
|
26
26
|
* @csspart button - The button's container.
|
|
27
|
-
* @csspart icon - The FAB
|
|
27
|
+
* @csspart icon - The FAB icon.
|
|
28
28
|
* @csspart text - The text in the FAB.
|
|
29
29
|
*
|
|
30
30
|
*/
|
|
@@ -27,7 +27,7 @@ import { stylesBase } from './styles';
|
|
|
27
27
|
* @cssproperty --kemet-fab-pill-radius - The border radius of a pill fab.
|
|
28
28
|
*
|
|
29
29
|
* @csspart button - The button's container.
|
|
30
|
-
* @csspart icon - The FAB
|
|
30
|
+
* @csspart icon - The FAB icon.
|
|
31
31
|
* @csspart text - The text in the FAB.
|
|
32
32
|
*
|
|
33
33
|
*/
|
|
@@ -46,7 +46,7 @@ let KemetFAB = class KemetFAB extends LitElement {
|
|
|
46
46
|
}
|
|
47
47
|
render() {
|
|
48
48
|
return html `
|
|
49
|
-
<button class="button" part="button" ?disabled=${this.disabled}
|
|
49
|
+
<button class="button" part="button" ?disabled=${this.disabled}>
|
|
50
50
|
<span class="icon" part="icon">
|
|
51
51
|
<slot name="icon"></slot>
|
|
52
52
|
</span>
|
|
@@ -67,18 +67,12 @@ let KemetFAB = class KemetFAB extends LitElement {
|
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
handleScroll() {
|
|
70
|
-
if (window.scrollY > this.expandPoint) {
|
|
70
|
+
if (window.scrollY > this.expandPoint && window.scrollY < this.collapsePoint) {
|
|
71
71
|
this.expanded = true;
|
|
72
72
|
}
|
|
73
|
-
|
|
73
|
+
else {
|
|
74
74
|
this.expanded = false;
|
|
75
75
|
}
|
|
76
|
-
if (window.scrollY > this.collapsePoint) {
|
|
77
|
-
this.expanded = false;
|
|
78
|
-
}
|
|
79
|
-
if (window.scrollY < this.collapsePoint) {
|
|
80
|
-
this.expanded = true;
|
|
81
|
-
}
|
|
82
76
|
}
|
|
83
77
|
};
|
|
84
78
|
KemetFAB.styles = [stylesBase];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kemet-fab.js","sourceRoot":"","sources":["../../../src/components/kemet-fab/kemet-fab.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;
|
|
1
|
+
{"version":3,"file":"kemet-fab.js","sourceRoot":"","sources":["../../../src/components/kemet-fab/kemet-fab.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGY,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,UAAU;IAAjC;;QAIb,aAAQ,GAAY,KAAK,CAAC;QAG1B,aAAQ,GAAY,KAAK,CAAC;QAG1B,aAAQ,GAAY,KAAK,CAAC;IAkD5B,CAAC;IAvCC,YAAY;QACV,SAAS;QACT,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;uDACwC,IAAI,CAAC,QAAQ;;;;;;;;KAQ/D,CAAC;IACJ,CAAC;IAED,eAAe;QACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC;IACH,CAAC;IAED,YAAY;QACV,IAAI,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAC7E,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC;IACH,CAAC;;AA1DM,eAAM,GAAG,CAAC,UAAU,CAAC,AAAf,CAAgB;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CACjB;AAG1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CACjB;AAG1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CACjB;AAG1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;sCAC7B;AAGd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;6CAClC;AAGpB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;+CAClC;AAnBH,QAAQ;IAD5B,aAAa,CAAC,WAAW,CAAC;GACN,QAAQ,CA4D5B;eA5DoB,QAAQ","sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { stylesBase } from './styles';\n\n/**\n * @since 1.2.0\n * @status stable\n *\n * @tagname kemet-fab\n * @summary The FAB, or Floating Action Button, performs a primary action on a page.\n *\n * @prop {boolean} expanded - The expanded state of the button.\n * @prop {boolean} outlined - Outline style for a button.\n * @prop {boolean} disabled - Determines whether not a button is disabled.\n * @prop {boolean} pill - Displays the fab with rounded corners.\n * @prop {number} expandPoint - The distance, in pixels, where the fab should automatically expand.\n * @prop {number} collapsePoint - The distance, in pixels, where the fab should automatically collapse.\n *\n * @slot Icon - A slot for an icon to display.\n * @slot default - The text for the FAB.\n *\n * @cssproperty --kemet-fab-size - The width and height of the fab.\n * @cssproperty --kemet-fab-color - The text color of the fab.\n * @cssproperty --kemet-fab-background-color - The bg color of the tab.\n * @cssproperty --kemet-fab-outlined-color - The text color of an outlined fab.\n * @cssproperty --kemet-fab-outlined-border - The border of an outlined fab.\n * @cssproperty --kemet-fab-pill-radius - The border radius of a pill fab.\n *\n * @csspart button - The button's container.\n * @csspart icon - The FAB icon.\n * @csspart text - The text in the FAB.\n *\n */\n\n@customElement('kemet-fab')\nexport default class KemetFAB extends LitElement {\n static styles = [stylesBase];\n\n @property({ type: Boolean, reflect: true })\n expanded: boolean = false;\n\n @property({ type: Boolean, reflect: true })\n outlined: boolean = false;\n\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n\n @property({ type: Boolean, reflect: true })\n pill: boolean;\n\n @property({ type: Number, attribute: 'expand-point' })\n expandPoint: number;\n\n @property({ type: Number, attribute: 'collapse-point' })\n collapsePoint: number;\n\n firstUpdated() {\n // events\n window.addEventListener('scroll', this.handleScroll.bind(this));\n this.addEventListener('mouseover', this.handleMouseOver.bind(this));\n this.addEventListener('mouseout', this.handleMouseOut.bind(this));\n }\n\n render() {\n return html`\n <button class=\"button\" part=\"button\" ?disabled=${this.disabled}>\n <span class=\"icon\" part=\"icon\">\n <slot name=\"icon\"></slot>\n </span>\n <span class=\"text\" part=\"text\">\n <slot></slot>\n </span>\n </button>\n `;\n }\n\n handleMouseOver() {\n if (!this.disabled) {\n this.expanded = true;\n }\n }\n\n handleMouseOut() {\n if (!this.disabled) {\n this.expanded = false;\n }\n }\n\n handleScroll() {\n if (window.scrollY > this.expandPoint && window.scrollY < this.collapsePoint) {\n this.expanded = true;\n } else {\n this.expanded = false;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-fab': KemetFAB\n }\n}\n"]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { html, render } from 'lit';
|
|
2
|
+
import { expect } from '@wdio/globals';
|
|
3
|
+
import './kemet-fab';
|
|
4
|
+
import '../kemet-icon/kemet-icon';
|
|
5
|
+
import userEvent from '@testing-library/user-event';
|
|
6
|
+
import { fireEvent } from '@testing-library/dom';
|
|
7
|
+
describe('FAB', () => {
|
|
8
|
+
const templates = {
|
|
9
|
+
default: html `
|
|
10
|
+
<kemet-fab expand-point="100" collapse-point="200">
|
|
11
|
+
<kemet-icon slot="icon" icon="gear"></kemet-icon>
|
|
12
|
+
Label Here
|
|
13
|
+
</kemet-fab>
|
|
14
|
+
`,
|
|
15
|
+
};
|
|
16
|
+
it('should expand and close on mouse over', async () => {
|
|
17
|
+
render(templates.default, document.body);
|
|
18
|
+
const kemetFab = document.querySelector('kemet-fab');
|
|
19
|
+
await userEvent.hover(kemetFab);
|
|
20
|
+
expect(kemetFab.expanded).toBe(true);
|
|
21
|
+
await userEvent.unhover(kemetFab);
|
|
22
|
+
expect(kemetFab.expanded).toBe(false);
|
|
23
|
+
});
|
|
24
|
+
it('should auto expand when document is scrolled', async () => {
|
|
25
|
+
render(templates.default, document.body);
|
|
26
|
+
const kemetFab = document.querySelector('kemet-fab');
|
|
27
|
+
await fireEvent.scroll(window, { target: { scrollY: 101 } });
|
|
28
|
+
expect(kemetFab.expanded).toBe(true);
|
|
29
|
+
});
|
|
30
|
+
it('should auto collapse past collapse point', async () => {
|
|
31
|
+
render(templates.default, document.body);
|
|
32
|
+
const kemetFab = document.querySelector('kemet-fab');
|
|
33
|
+
await fireEvent.scroll(window, { target: { scrollY: 300 } });
|
|
34
|
+
expect(kemetFab.expanded).toBe(false);
|
|
35
|
+
});
|
|
36
|
+
it('should not expand if expand point has not been reached', async () => {
|
|
37
|
+
render(templates.default, document.body);
|
|
38
|
+
const kemetFab = document.querySelector('kemet-fab');
|
|
39
|
+
await fireEvent.scroll(window, { target: { scrollY: 9 } });
|
|
40
|
+
expect(kemetFab.expanded).toBe(false);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
//# sourceMappingURL=spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../src/components/kemet-fab/spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,aAAa,CAAC;AACrB,OAAO,0BAA0B,CAAC;AAClC,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;IACnB,MAAM,SAAS,GAAG;QAChB,OAAO,EAAE,IAAI,CAAA;;;;;KAKZ;KACF,CAAC;IAEF,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAErD,MAAM,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAErD,MAAM,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, render } from 'lit';\nimport { expect } from '@wdio/globals';\n\nimport './kemet-fab';\nimport '../kemet-icon/kemet-icon';\nimport userEvent from '@testing-library/user-event';\nimport { fireEvent } from '@testing-library/dom';\n\ndescribe('FAB', () => {\n const templates = {\n default: html`\n <kemet-fab expand-point=\"100\" collapse-point=\"200\">\n <kemet-icon slot=\"icon\" icon=\"gear\"></kemet-icon>\n Label Here\n </kemet-fab>\n `,\n };\n\n it('should expand and close on mouse over', async () => {\n render(templates.default, document.body);\n const kemetFab = document.querySelector('kemet-fab');\n await userEvent.hover(kemetFab);\n expect(kemetFab.expanded).toBe(true);\n await userEvent.unhover(kemetFab);\n expect(kemetFab.expanded).toBe(false);\n });\n\n it('should auto expand when document is scrolled', async () => {\n render(templates.default, document.body);\n const kemetFab = document.querySelector('kemet-fab');\n\n await fireEvent.scroll(window, { target: { scrollY: 101 } });\n expect(kemetFab.expanded).toBe(true);\n });\n\n it('should auto collapse past collapse point', async () => {\n render(templates.default, document.body);\n const kemetFab = document.querySelector('kemet-fab');\n\n await fireEvent.scroll(window, { target: { scrollY: 300 } });\n expect(kemetFab.expanded).toBe(false);\n });\n\n it('should not expand if expand point has not been reached', async () => {\n render(templates.default, document.body);\n const kemetFab = document.querySelector('kemet-fab');\n await fireEvent.scroll(window, { target: { scrollY: 9 } });\n expect(kemetFab.expanded).toBe(false);\n });\n});\n"]}
|
|
@@ -9,7 +9,7 @@ import '../../kemet-tabs/kemet-tab';
|
|
|
9
9
|
import '../../kemet-tabs/kemet-tab-panel';
|
|
10
10
|
declare const meta: Meta;
|
|
11
11
|
export default meta;
|
|
12
|
-
|
|
12
|
+
type Story = StoryObj;
|
|
13
13
|
export declare const Input: Story;
|
|
14
14
|
export declare const Select: Story;
|
|
15
15
|
export declare const Textarea: Story;
|
|
@@ -10,7 +10,7 @@ import KemetTextarea from '../kemet-textarea/kemet-textarea';
|
|
|
10
10
|
* @tagname kemet-field
|
|
11
11
|
* @summary Used in combination with Input, Select, and Textarea, to make a Field.
|
|
12
12
|
*
|
|
13
|
-
* @prop {string} slug - Uniquely identifies the control. Use the same slug for slotted
|
|
13
|
+
* @prop {string} slug - Uniquely identifies the control. Use the same slug for slotted subcomponents.
|
|
14
14
|
* @prop {string} label - The label text
|
|
15
15
|
* @prop {string} message - The validation message for error or success
|
|
16
16
|
* @prop {boolean} focused - Determines if the containing input is focused
|
|
@@ -19,9 +19,9 @@ import KemetTextarea from '../kemet-textarea/kemet-textarea';
|
|
|
19
19
|
* @prop {number} length - The length of the containing input
|
|
20
20
|
* @prop {boolean} disabled - Determines the disabled state of the control
|
|
21
21
|
* @prop {string} errorIcon - The icon while in an error or warning state
|
|
22
|
-
* @prop {string} successIcon - The icon while in
|
|
22
|
+
* @prop {string} successIcon - The icon while in a success state
|
|
23
23
|
*
|
|
24
|
-
* @slot component - Allows
|
|
24
|
+
* @slot component - Allows subcomponents of the field to display.
|
|
25
25
|
*
|
|
26
26
|
* @csspart label - The label of the field.
|
|
27
27
|
* @csspart message - The validation message of the field.
|
|
@@ -49,10 +49,10 @@ export default class KemetField extends LitElement {
|
|
|
49
49
|
render(): import("lit-html").TemplateResult<1>;
|
|
50
50
|
makeStatusIcon(): import("lit-html").TemplateResult<1>;
|
|
51
51
|
makeStatusMessage(): import("lit-html").TemplateResult<1>;
|
|
52
|
-
handleFocused(event:
|
|
53
|
-
handleStatus(event:
|
|
54
|
-
handleInput(event:
|
|
55
|
-
handleSelection(event:
|
|
52
|
+
handleFocused(event: CustomEvent): void;
|
|
53
|
+
handleStatus(event: CustomEvent): void;
|
|
54
|
+
handleInput(event: CustomEvent): void;
|
|
55
|
+
handleSelection(event: CustomEvent): void;
|
|
56
56
|
}
|
|
57
57
|
declare global {
|
|
58
58
|
interface HTMLElementTagNameMap {
|
|
@@ -10,7 +10,7 @@ import { stylesBase } from './styles';
|
|
|
10
10
|
* @tagname kemet-field
|
|
11
11
|
* @summary Used in combination with Input, Select, and Textarea, to make a Field.
|
|
12
12
|
*
|
|
13
|
-
* @prop {string} slug - Uniquely identifies the control. Use the same slug for slotted
|
|
13
|
+
* @prop {string} slug - Uniquely identifies the control. Use the same slug for slotted subcomponents.
|
|
14
14
|
* @prop {string} label - The label text
|
|
15
15
|
* @prop {string} message - The validation message for error or success
|
|
16
16
|
* @prop {boolean} focused - Determines if the containing input is focused
|
|
@@ -19,9 +19,9 @@ import { stylesBase } from './styles';
|
|
|
19
19
|
* @prop {number} length - The length of the containing input
|
|
20
20
|
* @prop {boolean} disabled - Determines the disabled state of the control
|
|
21
21
|
* @prop {string} errorIcon - The icon while in an error or warning state
|
|
22
|
-
* @prop {string} successIcon - The icon while in
|
|
22
|
+
* @prop {string} successIcon - The icon while in a success state
|
|
23
23
|
*
|
|
24
|
-
* @slot component - Allows
|
|
24
|
+
* @slot component - Allows subcomponents of the field to display.
|
|
25
25
|
*
|
|
26
26
|
* @csspart label - The label of the field.
|
|
27
27
|
* @csspart message - The validation message of the field.
|
|
@@ -37,11 +37,11 @@ let KemetField = class KemetField extends LitElement {
|
|
|
37
37
|
this.errorIcon = 'exclamation-triangle-fill';
|
|
38
38
|
this.successIcon = 'check-lg';
|
|
39
39
|
// listeners
|
|
40
|
-
this.addEventListener('kemet-input-focused', event => this.handleFocused(event));
|
|
41
|
-
this.addEventListener('kemet-input-status', event => this.handleStatus(event));
|
|
42
|
-
this.addEventListener('kemet-input-input', event => this.handleInput(event));
|
|
43
|
-
this.addEventListener('kemet-count-status', event => this.handleStatus(event));
|
|
44
|
-
this.addEventListener('kemet-combo-selection', event => this.handleSelection(event));
|
|
40
|
+
this.addEventListener('kemet-input-focused', (event) => this.handleFocused(event));
|
|
41
|
+
this.addEventListener('kemet-input-status', (event) => this.handleStatus(event));
|
|
42
|
+
this.addEventListener('kemet-input-input', (event) => this.handleInput(event));
|
|
43
|
+
this.addEventListener('kemet-count-status', (event) => this.handleStatus(event));
|
|
44
|
+
this.addEventListener('kemet-combo-selection', (event) => this.handleSelection(event));
|
|
45
45
|
}
|
|
46
46
|
firstUpdated() {
|
|
47
47
|
this.slotInput = this.querySelector('[slot="input"]');
|
|
@@ -89,12 +89,7 @@ let KemetField = class KemetField extends LitElement {
|
|
|
89
89
|
}
|
|
90
90
|
handleInput(event) {
|
|
91
91
|
emitEvent(this, 'kemet-field-input', event.detail.length);
|
|
92
|
-
|
|
93
|
-
this.filled = false;
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
this.filled = true;
|
|
97
|
-
}
|
|
92
|
+
this.filled = event.detail !== '';
|
|
98
93
|
}
|
|
99
94
|
handleSelection(event) {
|
|
100
95
|
this.slotInput.setAttribute('aria-activedescendant', event.detail);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kemet-field.js","sourceRoot":"","sources":["../../../src/components/kemet-field/kemet-field.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAOtC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;
|
|
1
|
+
{"version":3,"file":"kemet-field.js","sourceRoot":"","sources":["../../../src/components/kemet-field/kemet-field.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAOtC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGY,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,UAAU;IAuChD;QACE,KAAK,EAAE,CAAC;QAxBV,WAAM,GAAe,UAAU,CAAC;QAYhC,cAAS,GAAW,2BAA2B,CAAC;QAGhD,gBAAW,GAAW,UAAU,CAAC;QAW/B,YAAY;QACZ,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,KAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QAChG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC,KAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9F,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,KAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5F,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC,KAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9F,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,EAAE,CAAC,KAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IACtG,CAAC;IAED,YAAY;QACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAEtD,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;oBACK,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,IAAI;4BACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE;;;QAGtD,IAAI,CAAC,iBAAiB,EAAE;;KAE3B,CAAC;IACJ,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACzD,OAAO,IAAI,CAAA,qBAAqB,IAAI,CAAC,SAAS,2BAA2B,CAAC;QAC5E,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAA,qBAAqB,IAAI,CAAC,WAAW,2BAA2B,CAAC;QAC9E,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iBAAiB;QACf,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAA,wCAAwC,IAAI,CAAC,OAAO,SAAS,CAAC;QAC3E,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,KAAkB;QAC9B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;QAE5B,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,YAAY,CAAC,KAAkB;QAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC,CAAC;IAED,WAAW,CAAC,KAAkB;QAC5B,SAAS,CAAC,IAAI,EAAE,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,EAAE,CAAC;IACpC,CAAC;IAED,eAAe,CAAC,KAAkB;QAChC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,uBAAuB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrE,CAAC;;AA9GM,iBAAM,GAAG,CAAC,UAAU,CAAC,AAAf,CAAgB;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wCACd;AAGb;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;yCACb;AAGd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;2CACX;AAGhB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;2CAC1B;AAGjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CACV;AAGhC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CAC3B;AAGhB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CACZ;AAGf;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;4CACzB;AAGlB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;6CACJ;AAGhD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;+CACrB;AAGjC;IADC,KAAK,EAAE;6CAC8B;AAGtC;IADC,KAAK,EAAE;6CACc;AArCH,UAAU;IAD9B,aAAa,CAAC,aAAa,CAAC;GACR,UAAU,CAgH9B;eAhHoB,UAAU","sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { emitEvent } from '../../utilities/misc/events';\nimport { stylesBase } from './styles';\nimport { TypeStatus } from './types';\n\nimport KemetCombo from '../kemet-combo/kemet-combo';\nimport KemetInput from '../kemet-input/kemet-input';\nimport KemetTextarea from '../kemet-textarea/kemet-textarea';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-field\n * @summary Used in combination with Input, Select, and Textarea, to make a Field.\n *\n * @prop {string} slug - Uniquely identifies the control. Use the same slug for slotted subcomponents.\n * @prop {string} label - The label text\n * @prop {string} message - The validation message for error or success\n * @prop {boolean} focused - Determines if the containing input is focused\n * @prop {string} status - The validation status of standard, error, or success\n * @prop {boolean} filled - Is true when the containing input has a value\n * @prop {number} length - The length of the containing input\n * @prop {boolean} disabled - Determines the disabled state of the control\n * @prop {string} errorIcon - The icon while in an error or warning state\n * @prop {string} successIcon - The icon while in a success state\n *\n * @slot component - Allows subcomponents of the field to display.\n *\n * @csspart label - The label of the field.\n * @csspart message - The validation message of the field.\n * @csspart text - The text in the label.\n *\n * @event kemet-field-input - Fires when input fires on the input slot\n *\n */\n\n@customElement('kemet-field')\nexport default class KemetField extends LitElement {\n static styles = [stylesBase];\n\n @property({ type: String })\n slug: string;\n\n @property({ type: String })\n label: string;\n\n @property({ type: String })\n message: string;\n\n @property({ type: Boolean, reflect: true })\n focused: boolean;\n\n @property({ type: String, reflect: true })\n status: TypeStatus = 'standard';\n\n @property({ type: Boolean, reflect: true })\n filled: boolean;\n\n @property({ type: Number })\n length: number;\n\n @property({ type: Boolean, reflect: true })\n disabled: boolean;\n\n @property({ type: String, attribute: 'error-icon' })\n errorIcon: string = 'exclamation-triangle-fill';\n\n @property({ type: String, attribute: 'success-icon' })\n successIcon: string = 'check-lg';\n\n @state()\n slotInput: KemetInput | KemetTextarea;\n\n @state()\n slotCombo: KemetCombo;\n\n constructor() {\n super();\n\n // listeners\n this.addEventListener('kemet-input-focused', (event: CustomEvent) => this.handleFocused(event));\n this.addEventListener('kemet-input-status', (event: CustomEvent) => this.handleStatus(event));\n this.addEventListener('kemet-input-input', (event: CustomEvent) => this.handleInput(event));\n this.addEventListener('kemet-count-status', (event: CustomEvent) => this.handleStatus(event));\n this.addEventListener('kemet-combo-selection', (event: CustomEvent) => this.handleSelection(event));\n }\n\n firstUpdated() {\n this.slotInput = this.querySelector('[slot=\"input\"]');\n this.slotCombo = this.querySelector('[slot=\"combo\"]');\n\n if (this.slotInput.value) {\n this.length = this.slotInput.value.length;\n } else {\n this.length = 0;\n }\n }\n\n render() {\n return html`\n <label for=\"${this.slug}\" id=\"${this.slug}-label\" part=\"label\">\n <span part=\"text\">${this.label}${this.makeStatusIcon()}</span>\n <slot name=\"input\"></slot>\n </label>\n ${this.makeStatusMessage()}\n <slot name=\"component\"></slot>\n `;\n }\n\n makeStatusIcon() {\n if (this.status === 'error' || this.status === 'warning') {\n return html`<kemet-icon icon=\"${this.errorIcon}\" size=\"16\"></kemet-icon>`;\n }\n\n if (this.status === 'success') {\n return html`<kemet-icon icon=\"${this.successIcon}\" size=\"16\"></kemet-icon>`;\n }\n\n return null;\n }\n\n makeStatusMessage() {\n if (this.status !== 'standard') {\n return html`<span class=\"message\" part=\"message\">${this.message}</span>`;\n }\n\n return null;\n }\n\n handleFocused(event: CustomEvent) {\n this.focused = event.detail;\n\n if (!this.focused && this.slotCombo && this.slotCombo.options.length < 1) {\n this.slotCombo.show = false;\n }\n }\n\n handleStatus(event: CustomEvent) {\n this.status = event.detail.status;\n }\n\n handleInput(event: CustomEvent) {\n emitEvent(this, 'kemet-field-input', event.detail.length);\n this.filled = event.detail !== '';\n }\n\n handleSelection(event: CustomEvent) {\n this.slotInput.setAttribute('aria-activedescendant', event.detail);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-field': KemetField\n }\n}\n"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { html, render } from 'lit';
|
|
2
|
+
import { expect } from '@wdio/globals';
|
|
3
|
+
import { fireEvent, waitFor } from '@testing-library/dom';
|
|
4
|
+
import '../kemet-input/kemet-input';
|
|
5
|
+
import './kemet-field';
|
|
6
|
+
describe('Field', () => {
|
|
7
|
+
const templates = {
|
|
8
|
+
default: html `
|
|
9
|
+
<kemet-field slug="unique-identifier" label="Label" message="Success" status="success">
|
|
10
|
+
<kemet-input slot="input" name="input-field" required validate-on-blur></kemet-input>
|
|
11
|
+
</kemet-field>
|
|
12
|
+
`,
|
|
13
|
+
populated: html `
|
|
14
|
+
<kemet-field slug="unique-identifier" label="Label" message="Success" status="success">
|
|
15
|
+
<kemet-input slot="input" name="input-field" value="test"></kemet-input>
|
|
16
|
+
</kemet-field>
|
|
17
|
+
`,
|
|
18
|
+
};
|
|
19
|
+
it('updates the field status when the input status changes', async () => {
|
|
20
|
+
render(templates.default, document.body);
|
|
21
|
+
const kemetField = document.querySelector('kemet-field');
|
|
22
|
+
const kemetInput = document.querySelector('kemet-input');
|
|
23
|
+
await waitFor(async () => {
|
|
24
|
+
const input = kemetInput.shadowRoot.querySelector('input');
|
|
25
|
+
fireEvent.change(input, { target: { value: '' } });
|
|
26
|
+
fireEvent.blur(input);
|
|
27
|
+
expect(kemetField.status).toBe('error');
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
it('fills the length when a value is supplied', async () => {
|
|
31
|
+
render(templates.populated, document.body);
|
|
32
|
+
const kemetField = document.querySelector('kemet-field');
|
|
33
|
+
await waitFor(() => {
|
|
34
|
+
expect(kemetField.length).toBeGreaterThan(0);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../src/components/kemet-field/spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,4BAA4B,CAAC;AACpC,OAAO,eAAe,CAAC;AAEvB,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,MAAM,SAAS,GAAG;QAChB,OAAO,EAAE,IAAI,CAAA;;;;KAIZ;QACD,SAAS,EAAE,IAAI,CAAA;;;;KAId;KACF,CAAC;IAEF,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAEzD,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;YACvB,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC3D,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACnD,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QACzD,MAAM,OAAO,CAAC,GAAG,EAAE;YACjB,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, render } from 'lit';\nimport { expect } from '@wdio/globals';\nimport { fireEvent, waitFor } from '@testing-library/dom';\n\nimport '../kemet-input/kemet-input';\nimport './kemet-field';\n\ndescribe('Field', () => {\n const templates = {\n default: html`\n <kemet-field slug=\"unique-identifier\" label=\"Label\" message=\"Success\" status=\"success\">\n <kemet-input slot=\"input\" name=\"input-field\" required validate-on-blur></kemet-input>\n </kemet-field>\n `,\n populated: html`\n <kemet-field slug=\"unique-identifier\" label=\"Label\" message=\"Success\" status=\"success\">\n <kemet-input slot=\"input\" name=\"input-field\" value=\"test\"></kemet-input>\n </kemet-field>\n `,\n };\n\n it('updates the field status when the input status changes', async () => {\n render(templates.default, document.body);\n const kemetField = document.querySelector('kemet-field');\n const kemetInput = document.querySelector('kemet-input');\n\n await waitFor(async () => {\n const input = kemetInput.shadowRoot.querySelector('input');\n fireEvent.change(input, { target: { value: '' } });\n fireEvent.blur(input);\n expect(kemetField.status).toBe('error');\n });\n });\n\n it('fills the length when a value is supplied', async () => {\n render(templates.populated, document.body);\n const kemetField = document.querySelector('kemet-field');\n await waitFor(() => {\n expect(kemetField.length).toBeGreaterThan(0);\n });\n });\n});\n"]}
|
|
@@ -7,7 +7,7 @@ import '../../kemet-tabs/kemet-tab';
|
|
|
7
7
|
import '../../kemet-tabs/kemet-tab-panel';
|
|
8
8
|
declare const meta: Meta;
|
|
9
9
|
export default meta;
|
|
10
|
-
|
|
10
|
+
type Story = StoryObj;
|
|
11
11
|
export declare const Standard: Story;
|
|
12
12
|
export declare const Vertical: Story;
|
|
13
13
|
export declare const Rounded: Story;
|
|
@@ -12,7 +12,7 @@ export default class KemetFlipcardTrigger extends LitElement {
|
|
|
12
12
|
static styles: import("lit").CSSResult[];
|
|
13
13
|
render(): import("lit-html").TemplateResult<1>;
|
|
14
14
|
trigger(): void;
|
|
15
|
-
handleKeyup(event:
|
|
15
|
+
handleKeyup(event: KeyboardEvent): void;
|
|
16
16
|
}
|
|
17
17
|
declare global {
|
|
18
18
|
interface HTMLElementTagNameMap {
|
|
@@ -2,7 +2,6 @@ import { __decorate } from "tslib";
|
|
|
2
2
|
import { LitElement, html, css } from 'lit';
|
|
3
3
|
import { customElement } from 'lit/decorators.js';
|
|
4
4
|
import { emitEvent } from '../../utilities/misc/events';
|
|
5
|
-
import { keyCodes } from '../../utilities/misc/constants';
|
|
6
5
|
/**
|
|
7
6
|
* @since 1.0.0
|
|
8
7
|
* @status stable
|
|
@@ -15,7 +14,7 @@ import { keyCodes } from '../../utilities/misc/constants';
|
|
|
15
14
|
let KemetFlipcardTrigger = class KemetFlipcardTrigger extends LitElement {
|
|
16
15
|
render() {
|
|
17
16
|
return html `
|
|
18
|
-
<slot tabindex="0" @click=${() => this.trigger()} @keypress=${event => this.handleKeyup(event)}></slot>
|
|
17
|
+
<slot tabindex="0" @click=${() => this.trigger()} @keypress=${(event) => this.handleKeyup(event)}></slot>
|
|
19
18
|
`;
|
|
20
19
|
}
|
|
21
20
|
trigger() {
|
|
@@ -23,7 +22,7 @@ let KemetFlipcardTrigger = class KemetFlipcardTrigger extends LitElement {
|
|
|
23
22
|
}
|
|
24
23
|
handleKeyup(event) {
|
|
25
24
|
event.preventDefault();
|
|
26
|
-
if (event.
|
|
25
|
+
if (event.key === 'Enter') {
|
|
27
26
|
this.trigger();
|
|
28
27
|
}
|
|
29
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kemet-flipcard-trigger.js","sourceRoot":"","sources":["../../../src/components/kemet-flipcard/kemet-flipcard-trigger.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"kemet-flipcard-trigger.js","sourceRoot":"","sources":["../../../src/components/kemet-flipcard/kemet-flipcard-trigger.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD;;;;;;;;GAQG;AAGY,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,UAAU;IAS1D,MAAM;QACJ,OAAO,IAAI,CAAA;kCACmB,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,KAAoB,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;KAChH,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,CAAC,IAAI,EAAE,wBAAwB,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,WAAW,CAAC,KAAoB;QAC9B,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;;AAxBM,2BAAM,GAAG;IACd,GAAG,CAAA;;;;KAIF;CACF,AANY,CAMX;AAPiB,oBAAoB;IADxC,aAAa,CAAC,wBAAwB,CAAC;GACnB,oBAAoB,CA0BxC;eA1BoB,oBAAoB","sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport { emitEvent } from '../../utilities/misc/events';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-flipcard-trigger\n * @summary Triggers a flipcard component to flip.\n *\n * @event kemet-flipcard-flipped - Fires when a flipcard is flipped\n */\n\n@customElement('kemet-flipcard-trigger')\nexport default class KemetFlipcardTrigger extends LitElement {\n static styles = [\n css`\n :host {\n cursor: pointer;\n }\n `,\n ];\n\n render() {\n return html`\n <slot tabindex=\"0\" @click=${() => this.trigger()} @keypress=${(event: KeyboardEvent) => this.handleKeyup(event)}></slot>\n `;\n }\n\n trigger() {\n emitEvent(this, 'kemet-flipcard-flipped', this);\n }\n\n handleKeyup(event: KeyboardEvent) {\n event.preventDefault();\n\n if (event.key === 'Enter') {\n this.trigger();\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-flipcard-trigger': KemetFlipcardTrigger\n }\n}\n"]}
|
|
@@ -37,8 +37,8 @@ export default class KemetFlipcard extends LitElement {
|
|
|
37
37
|
measure: boolean;
|
|
38
38
|
frontChildren: HTMLSlotElement;
|
|
39
39
|
backChildren: HTMLSlotElement;
|
|
40
|
-
frontElement:
|
|
41
|
-
backElement:
|
|
40
|
+
frontElement: HTMLElement;
|
|
41
|
+
backElement: HTMLElement;
|
|
42
42
|
constructor();
|
|
43
43
|
firstUpdated(): void;
|
|
44
44
|
updated(): void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { html, LitElement } from 'lit';
|
|
3
|
-
import { customElement, property, state, query } from 'lit/decorators.js';
|
|
3
|
+
import { customElement, property, state, query, } from 'lit/decorators.js';
|
|
4
4
|
import { stylesBase } from './styles';
|
|
5
5
|
/**
|
|
6
6
|
* @since 1.0.0
|
|
@@ -44,10 +44,8 @@ let KemetFlipcard = class KemetFlipcard extends LitElement {
|
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
46
|
firstUpdated() {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
if (this.backChildren)
|
|
50
|
-
[this.backElement] = this.backChildren.assignedNodes({ flatten: true });
|
|
47
|
+
this.frontElement = this.querySelector('[slot=front]');
|
|
48
|
+
this.backElement = this.querySelector('[slot=back]');
|
|
51
49
|
window.addEventListener('resize', this.determineHeight.bind(this));
|
|
52
50
|
}
|
|
53
51
|
updated() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kemet-flipcard.js","sourceRoot":"","sources":["../../../src/components/kemet-flipcard/kemet-flipcard.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"kemet-flipcard.js","sourceRoot":"","sources":["../../../src/components/kemet-flipcard/kemet-flipcard.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport {\n customElement, property, state, query,\n} from 'lit/decorators.js';\nimport { stylesBase } from './styles';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-flipcard\n * @summary A card that has a front and back side which can be flipped.\n *\n * @prop {string} axis\n * @prop {boolean} flipped\n * @prop {boolean} flipOnHover\n * @prop {string} height\n * @prop {boolean} measure\n *\n * @slot front - The front of the card.\n * @slot back - The back of the card.\n *\n * @csspart front - The front of the card.\n * @csspart back - The back of the card.\n * @csspart wrapper - A container for both front and back of the card.\n *\n * @cssproperty --kemet-flipcard-front-color - The text color for the front of the card.\n * @cssproperty --kemet-flipcard-back-color - The text color for the back of the card.\n * @cssproperty --kemet-flipcard-front-background-color - The background color for the front of the card.\n * @cssproperty --kemet-flipcard-back-background-color - The background color for the back of the card.\n * @cssproperty --kemet-flipcard-border - The border on the front and back of the card.\n * @cssproperty --kemet-flipcard-border-radius - The border radius on the front and back of the card.\n * @cssproperty --kemet-flipcard-ratio - The aspect ratio of the card.\n *\n */\n\n@customElement('kemet-flipcard')\nexport default class KemetFlipcard extends LitElement {\n static styles = [stylesBase];\n\n @property({ type: String, reflect: true })\n axis: string = 'horizontal';\n\n @property({ type: Boolean, reflect: true })\n flipped: boolean = false;\n\n @property({ type: Boolean, attribute: 'flip-on-hover' })\n flipOnHover: boolean = false;\n\n @property({ type: String })\n height: string = 'auto';\n\n @property({ type: Boolean })\n measure: boolean = false;\n\n @query('[name=\"front\"]')\n frontChildren: HTMLSlotElement;\n\n @query('[name=\"back\"]')\n backChildren: HTMLSlotElement;\n\n @state()\n frontElement: HTMLElement;\n\n @state()\n backElement: HTMLElement;\n\n constructor() {\n super();\n\n this.addEventListener('kemet-flipcard-flipped', () => {\n this.flipped = !this.flipped;\n });\n }\n\n firstUpdated() {\n this.frontElement = this.querySelector('[slot=front]');\n this.backElement = this.querySelector('[slot=back]');\n window.addEventListener('resize', this.determineHeight.bind(this));\n }\n\n updated() {\n this.determineHeight();\n }\n\n render() {\n return html`\n <section\n tabindex=\"0\"\n part=\"wrapper\"\n @blur=${() => { if (this.flipOnHover) this.flipped = false; }}\n @focus=${() => { if (this.flipOnHover) this.flipped = true; }}\n @mouseover=${() => { if (this.flipOnHover) this.flipped = true; }}\n @mouseout=${() => { if (this.flipOnHover) this.flipped = false; }}>\n <div id=\"front\" class=\"front\" part=\"front\">\n <slot name=\"front\" @slotchange=\"${() => this.determineHeight()}\"></slot>\n </div>\n <div id=\"back\" class=\"back\" part=\"back\">\n <slot name=\"back\" @slotchange=\"${() => this.determineHeight()}\"></slot>\n </div>\n </section>\n `;\n }\n\n determineHeight() {\n // setTimeout is need to simulate a DOM repaint\n // without the repaint, offsetHeight on Custom Elements = 0\n // so this is needed for 'measure' to work correctly\n\n setTimeout(() => {\n if (this.measure) {\n if (this.frontElement?.offsetHeight > this.backElement?.offsetHeight) {\n this.height = `${this.frontElement?.offsetHeight}px`;\n } else {\n this.height = `${this.backElement?.offsetHeight}px`;\n }\n\n this.style.height = this.height;\n } else {\n this.style.removeProperty('height');\n }\n }, 0);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-flipcard': KemetFlipcard\n }\n}\n"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { html, render } from 'lit';
|
|
2
|
+
import { expect } from '@wdio/globals';
|
|
3
|
+
import userEvent from '@testing-library/user-event';
|
|
4
|
+
import './kemet-flipcard';
|
|
5
|
+
import './kemet-flipcard-trigger';
|
|
6
|
+
import '../kemet-button/kemet-button';
|
|
7
|
+
import { fireEvent } from '@testing-library/dom';
|
|
8
|
+
describe('Flipcard', () => {
|
|
9
|
+
const templates = {
|
|
10
|
+
default: html `
|
|
11
|
+
<kemet-flipcard measure>
|
|
12
|
+
<div slot="front">
|
|
13
|
+
<p>This is the front of the card.</p>
|
|
14
|
+
<kemet-flipcard-trigger>
|
|
15
|
+
<kemet-button>Flip Me</kemet-button>
|
|
16
|
+
</kemet-flipcard-trigger>
|
|
17
|
+
</div>
|
|
18
|
+
<div slot="back">
|
|
19
|
+
<p>This is the back of the card.</p>
|
|
20
|
+
<kemet-flipcard-trigger>
|
|
21
|
+
<kemet-button>Flip Me</kemet-button>
|
|
22
|
+
</kemet-flipcard-trigger>
|
|
23
|
+
</div>
|
|
24
|
+
</kemet-flipcard>
|
|
25
|
+
`,
|
|
26
|
+
};
|
|
27
|
+
it('should flip the card when trigger is activated', async () => {
|
|
28
|
+
render(templates.default, document.body);
|
|
29
|
+
const kemetFlipcard = document.querySelector('kemet-flipcard');
|
|
30
|
+
const kemetFlipcardTrigger = kemetFlipcard.querySelector('kemet-flipcard-trigger');
|
|
31
|
+
const kemetButton = kemetFlipcardTrigger.querySelector('kemet-button');
|
|
32
|
+
await userEvent.click(kemetButton);
|
|
33
|
+
expect(kemetFlipcard.flipped).toBe(true);
|
|
34
|
+
fireEvent.keyPress(kemetButton, { key: 'Enter' });
|
|
35
|
+
expect(kemetFlipcard.flipped).toBe(false);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../src/components/kemet-flipcard/spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,SAAS,MAAM,6BAA6B,CAAC;AAEpD,OAAO,kBAAkB,CAAC;AAC1B,OAAO,0BAA0B,CAAC;AAClC,OAAO,8BAA8B,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,MAAM,SAAS,GAAG;QAChB,OAAO,EAAE,IAAI,CAAA;;;;;;;;;;;;;;;KAeZ;KACF,CAAC;IAEF,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAC/D,MAAM,oBAAoB,GAAG,aAAa,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;QACnF,MAAM,WAAW,GAAG,oBAAoB,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAEvE,MAAM,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACnC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QAClD,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, render } from 'lit';\nimport { expect } from '@wdio/globals';\nimport userEvent from '@testing-library/user-event';\n\nimport './kemet-flipcard';\nimport './kemet-flipcard-trigger';\nimport '../kemet-button/kemet-button';\nimport { fireEvent } from '@testing-library/dom';\n\ndescribe('Flipcard', () => {\n const templates = {\n default: html`\n <kemet-flipcard measure>\n <div slot=\"front\">\n <p>This is the front of the card.</p>\n <kemet-flipcard-trigger>\n <kemet-button>Flip Me</kemet-button>\n </kemet-flipcard-trigger>\n </div>\n <div slot=\"back\">\n <p>This is the back of the card.</p>\n <kemet-flipcard-trigger>\n <kemet-button>Flip Me</kemet-button>\n </kemet-flipcard-trigger>\n </div>\n </kemet-flipcard>\n `,\n };\n\n it('should flip the card when trigger is activated', async () => {\n render(templates.default, document.body);\n const kemetFlipcard = document.querySelector('kemet-flipcard');\n const kemetFlipcardTrigger = kemetFlipcard.querySelector('kemet-flipcard-trigger');\n const kemetButton = kemetFlipcardTrigger.querySelector('kemet-button');\n\n await userEvent.click(kemetButton);\n expect(kemetFlipcard.flipped).toBe(true);\n\n fireEvent.keyPress(kemetButton, { key: 'Enter' });\n expect(kemetFlipcard.flipped).toBe(false);\n });\n});\n"]}
|