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":"kemet-carousel.js","sourceRoot":"","sources":["../../../src/components/kemet-carousel/kemet-carousel.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { emitEvent } from '../../utilities/misc/events';\nimport { stylesCarousel } from './styles';\n\nimport KemetCarouselCurrent from './kemet-carousel-current';\nimport KemetCarouselLink from './kemet-carousel-link';\nimport KemetCarouselSlide from './kemet-carousel-slide';\n\n/**\n *\n * @since 1.1.0\n * @status stable\n *\n * @tagname kemet-carousel\n * @summary The Carousel allows you to click or swipe through content.\n *\n * @prop {number} index - The current slide index.\n * @prop {number} total - The total amount of slides.\n * @prop {string} sliderWidth - The width of the slider.\n * @prop {string} sliderTranslateX - The X position of the slider.\n * @prop {boolean} inner - Displays the toolbar inside the carousel container.\n * @prop {boolean} arrows - Determines whether or not to display arrows.\n * @prop {object} options - Default options for the carousel.\n * @prop {object} breakpoints - Options at different breakpoints for the carousel. Is mobile first.\n *\n * @event kemet-carousel-change-start - Fires with the a slide has begun to change.\n * @event kemet-carousel-change-finished - Fires when a slide has changed and finished animating\n *\n * @slot slides - Place the slide elements here.\n * @slot toolbar - Allows you to construct a toolbar within the carousel. Place things like pagination here.\n * @slot prev - A slot for the previous arrow.\n * @slot next - A slot for the next arrow.\n * @slot information - Allows you to enter custom HTML such as a slide description to be used in the toolbar.\n *\n * @cssproperty --kemet-carousel-width - The width of the carousel.\n * @cssproperty --kemet-carousel-height - The height of the carousel.\n * @cssproperty --kemet-carousel-toolbar-gap - The space between items in the toolbar.\n * @cssproperty --kemet-carousel-toolbar-justify-content - The cross axis alignment of the toolbar.\n * @cssproperty --kemet-carousel-toolbar-padding - The padding of the toolbar.\n * @cssproperty --kemet-carousel-toolbar-inner-width - The inner toolbar width.\n * @cssproperty --kemet-carousel-toolbar-inner-bottom - The bottom position of the inner toolbar.\n * @cssproperty --kemet-carousel-toolbar-inner-top - The top position of the inner toolbar.\n * @cssproperty --kemet-carousel-toolbar-inner-color - The inner toolbar text color.\n * @cssproperty --kemet-carousel-toolbar-inner-background-color - The inner toolbar background color.\n * @cssproperty --kemet-carousel-slides-border - The border around the slides.\n * @cssproperty --kemet-carousel-transition-speed - The transition speed of the slides.\n * @cssproperty --kemet-carousel-arrows-opacity - The arrows start opacity.\n * @cssproperty --kemet-carousel-arrows-opacity-hover - The arrows however opacity.\n * @cssproperty --kemet-carousel-arrows-transition-speed - The arrows transition speed.\n *\n * @csspart container - Contains the slides and toolbar.\n * @csspart slides - Wrapper for the slider.\n * @csspart slider - Contains the slides.\n * @csspart toolbar - Contains the toolbar.\n *\n */\n\n@customElement('kemet-carousel')\nexport default class KemetCarousel extends LitElement {\n static styles = [stylesCarousel];\n\n @property({ type: Number, reflect: true })\n index: number = 0;\n\n @property({ type: Number })\n total: number = 0;\n\n @property({ type: String })\n sliderWidth: string = 'auto';\n\n @property({ type: String })\n sliderTranslateX: string = '0';\n\n @property({ type: Boolean, reflect: true })\n inner: boolean = false;\n\n @property({ type: Boolean, reflect: true })\n arrows: boolean = false;\n\n @property({ type: Object })\n options: object = {\n perView: 1,\n perMove: 1,\n gap: 12,\n slideshow: 0,\n rewind: true,\n center: false,\n };\n\n @property({ type: Object })\n breakpoints: object = {\n 768: {\n perView: 2,\n gap: 24,\n rewind: false,\n },\n 1280: {\n perView: 2.5,\n center: true,\n },\n };\n\n /** @internal */\n @state()\n slides: any[] = [];\n\n /** @internal */\n @state()\n links: any[] = [];\n\n /** @internal */\n @state()\n toolbarSlotElement: HTMLElement | null;\n\n /** @internal */\n @state()\n informationElement: HTMLElement | null;\n\n /** @internal */\n @state()\n swipeMove: (event) => void;\n\n /** @internal */\n @state()\n handleSlideShow: any;\n\n /** @internal */\n @state()\n startX: number;\n\n /** @internal */\n @state()\n slideWidth: number;\n\n /** @internal */\n @state()\n informationSlot: HTMLElement;\n\n /** @internal */\n @query('#container')\n containerElement: HTMLElement;\n\n /** @internal */\n @query('#slides')\n slidesElement: HTMLElement;\n\n /** @internal */\n @query('#slider')\n sliderElement: HTMLElement;\n\n /** @internal */\n @query('#toolbar')\n toolbarElement: HTMLElement;\n\n\n constructor() {\n super();\n\n // bindings\n this.addEventListener('kemet-carousel-first', this.handleFirst.bind(this));\n this.addEventListener('kemet-carousel-last', this.handleLast.bind(this));\n this.addEventListener('kemet-carousel-next', this.handleNext.bind(this));\n this.addEventListener('kemet-carousel-prev', this.handlePrev.bind(this));\n this.addEventListener('kemet-carousel-link', this.handleLink.bind(this));\n }\n\n firstUpdated() {\n // elements\n this.toolbarSlotElement = this.querySelector('[slot=\"toolbar\"]');\n this.informationElement = this.querySelector('kemet-carousel-information');\n\n // events\n window.addEventListener('resize', () => {\n this.setSlideSize();\n this.setToolbarSize();\n this.updateIndex(this.index);\n });\n\n this.sliderElement?.addEventListener('transitionend', this.handleTransitionEnd.bind(this));\n\n // methods\n this.swipeMove = (event) => {\n event.preventDefault();\n\n const pageX = event.touches ? event.touches[0].pageX : event.pageX;\n const currentSlide = this.slides[this.index];\n\n this.sliderTranslateX = `${pageX - this.startX - currentSlide.offsetLeft}px`;\n };\n\n this.handleSlideShow = () => {\n if (this.getOption('slideshow') > 0) {\n this.updateIndex(this.index + 1);\n clearTimeout(this.handleSlideShow);\n }\n };\n\n // setup\n this.setSlideSize();\n this.goToSlide(this.index);\n }\n\n updated(prevProps) {\n this.setSlideSize();\n this.setToolbarSize();\n\n if (prevProps.has('index')) {\n this.updateIndex(this.index);\n setTimeout(this.handleSlideShow, this.getOption('slideshow') * 1000);\n }\n }\n\n render() {\n return html`\n <slot name=\"prev\" @slotchange=${this.handleArrows}></slot>\n <div id=\"container\" class=\"container\" part=\"container\">\n <section\n id=\"slides\"\n class=\"slides\"\n part=\"slides\"\n @mousedown=${this.swipeStart}\n @mouseup=${this.swipeEnd}\n @touchstart=${this.swipeStart}\n @touchend=${this.swipeEnd}\n @mouseleave=${this.swipeLeave}\n >\n <div id=\"slider\" class=\"slider\" part=\"slider\" style=\"width:${this.sliderWidth}; transform:translateX(${this.sliderTranslateX});\">\n <slot name=\"slides\" @slotchange=\"${this.handleSlotChange}\"></slot>\n </div>\n </section>\n ${this.makeToolbar()}\n </div>\n <slot name=\"next\" @slotchange=${this.handleArrows}></slot>\n `;\n }\n\n swipeStart(event) {\n this.startX = event.touches ? event.touches[0].pageX : event.pageX;\n\n this.addEventListener('mousemove', this.swipeMove);\n this.addEventListener('touchmove', this.swipeMove);\n }\n\n swipeEnd(event) {\n this.updateIndex(this.swipeUpdate(event));\n this.removeEventListener('mousemove', this.swipeMove, false);\n this.removeEventListener('touchmove', this.swipeMove, false);\n }\n\n swipeUpdate(event) {\n const pageX = event.changedTouches ? event.changedTouches[0].pageX : event.pageX;\n const direction = this.startX > pageX ? 'right' : 'left';\n const threshold = this.slidesElement.offsetWidth / 3;\n const diff = this.startX - pageX;\n const shouldUpdate = Math.abs(diff) > threshold;\n\n let { index } = this;\n\n if (shouldUpdate && direction === 'right') {\n index = this.index >= this.slides.length - 1 ? this.index : this.index + 1;\n }\n\n if (shouldUpdate && direction === 'left') {\n index = this.index < 1 ? 0 : this.index - 1;\n }\n\n return index;\n }\n\n swipeLeave() {\n this.updateIndex(this.index);\n this.removeEventListener('mousemove', this.swipeMove, false);\n this.removeEventListener('touchmove', this.swipeMove, false);\n }\n\n setSlideSize() {\n this.slideWidth = this.containerElement?.offsetWidth as number / this.getOption('perView');\n\n this.slides.forEach((slide) => {\n slide.style.marginLeft = `${this.getOption('gap') / 2}px`;\n slide.style.marginRight = `${this.getOption('gap') / 2}px`;\n slide.style.width = `${this.slideWidth - this.getOption('gap')}px`;\n });\n\n this.sliderWidth = `${this.slideWidth * this.slides.length}px`;\n }\n\n setToolbarSize() {\n if (this.inner && this.toolbarElement) {\n const width = this.slidesElement.offsetWidth;\n this.toolbarElement.style.width = `${width}px`;\n }\n }\n\n makeToolbar() {\n if (this.toolbarSlotElement) {\n return html`\n <section id=\"toolbar\" class=\"toolbar\" part=\"toolbar\">\n <slot name=\"toolbar\"></slot>\n </section>\n `;\n }\n\n return null;\n }\n\n handleSlotChange() {\n const slides = this.querySelectorAll('kemet-carousel-slide') as NodeListOf<KemetCarouselSlide>;\n const links = this.querySelectorAll('kemet-carousel-link') as NodeListOf<KemetCarouselLink>;\n\n // handle slides\n slides.forEach((slide) => {\n this.slides.push(slide);\n });\n\n this.updateInformation();\n this.total = slides.length;\n slides[this.index].selected = true;\n\n // handle links\n links.forEach((link) => {\n this.links.push(link);\n });\n }\n\n handleArrows() {\n this.arrows = true;\n }\n\n handleFirst() {\n this.updateIndex(0);\n }\n\n handleLast() {\n this.updateIndex(this.slides.length - 1);\n }\n\n handleNext() {\n let newIndex = this.index + this.getOption('perMove');\n\n if (newIndex >= this.slides.length) {\n if (this.getOption('rewind')) {\n newIndex = 0;\n } else {\n newIndex = this.index;\n }\n }\n\n this.updateIndex(newIndex);\n }\n\n handlePrev() {\n let newIndex = this.index - this.getOption('perMove');\n\n // send them to the last slide\n if (newIndex < 0) {\n if (this.getOption('rewind')) {\n newIndex = this.slides.length - 1;\n } else {\n newIndex = this.index;\n }\n }\n\n this.updateIndex(newIndex);\n }\n\n updateIndex(newIndex) {\n let currentSlide = this.slides[this.index];\n let currentLink = this.links[newIndex];\n\n // remove selected from all links\n this.links.forEach((link) => {\n link.selected = false;\n });\n\n // if current link is invalid assume it's the first link\n if (!currentLink) {\n [currentLink] = this.links;\n }\n\n // add selected to current link\n if (currentLink) {\n currentLink.selected = true;\n }\n\n if (currentSlide) {\n currentSlide.setAttribute('aria-hidden', 'true');\n\n // correct for invalid indexes\n if (newIndex > -1 && newIndex < this.slides.length) {\n this.index = newIndex;\n } else {\n // eslint-disable-next-line no-console\n console.warn('An invalid index number was entered. The kemet-carousel has been reset to the first slide.');\n this.index = 0;\n }\n\n // move\n this.goToSlide(this.index);\n\n // update new slide\n currentSlide = this.slides[this.index];\n currentSlide.setAttribute('aria-hidden', 'false');\n\n this.slides.forEach((slide) => {\n slide.selected = false;\n });\n\n currentSlide.selected = true;\n\n // notify consumers of slide change\n emitEvent(this, 'kemet-carousel-change-start', this);\n\n // update information element\n this.updateInformation();\n }\n }\n\n updateInformation() {\n this.informationSlot = this.slides[this.index].querySelector('[slot=\"information\"]');\n\n if (this.informationElement) {\n if (this.informationSlot) {\n this.informationElement.innerHTML = this.informationSlot.outerHTML;\n } else {\n this.informationElement.innerHTML = '';\n }\n }\n }\n\n goToSlide(index) {\n if (this.getOption('center') === true) {\n const slidesCenter = this.slidesElement.offsetWidth / 2;\n const slideX = this.slideWidth * index;\n this.sliderTranslateX = `${slideX - (slideX - slidesCenter) - this.slideWidth / 2 - slideX}px`;\n } else {\n this.sliderTranslateX = `${(this.slideWidth * index) * -1}px`;\n }\n }\n\n handleTransitionEnd() {\n const currentElement = this.querySelector('kemet-carousel-current') as KemetCarouselCurrent;\n\n if (currentElement) {\n currentElement.current = this.index + 1;\n }\n\n emitEvent(this, 'kemet-carousel-change-finished', this);\n }\n\n handleLink(event) {\n this.updateIndex(event.detail.slide);\n }\n\n getOption(option) {\n const breakpoints = Object.keys(this.breakpoints);\n let value = this.options[option];\n\n breakpoints.forEach((breakpoint) => {\n if (window.matchMedia(`(min-width: ${breakpoint}px)`).matches && this.breakpoints[breakpoint][option] !== undefined) {\n value = this.breakpoints[breakpoint][option];\n }\n\n return value;\n });\n\n return value;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-carousel': KemetCarousel\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"kemet-carousel.js","sourceRoot":"","sources":["../../../src/components/kemet-carousel/kemet-carousel.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport {\n customElement,\n property,\n state,\n query,\n} from 'lit/decorators.js';\nimport { emitEvent } from '../../utilities/misc/events';\nimport { stylesCarousel } from './styles';\n\nimport type KemetCarouselCurrent from './kemet-carousel-current';\nimport type KemetCarouselLink from './kemet-carousel-link';\nimport type KemetCarouselSlide from './kemet-carousel-slide';\n\n/**\n *\n * @since 1.1.0\n * @status stable\n *\n * @tagname kemet-carousel\n * @summary The Carousel allows you to click or swipe through content.\n *\n * @prop {number} index - The current slide index.\n * @prop {number} total - The total amount of slides.\n * @prop {string} sliderWidth - The width of the slider.\n * @prop {string} sliderTranslateX - The X position of the slider.\n * @prop {boolean} inner - Displays the toolbar inside the carousel container.\n * @prop {boolean} arrows - Determines whether to display arrows.\n * @prop {object} options - Default options for the carousel.\n * @prop {object} breakpoints - Options at different breakpoints for the carousel. Is mobile first.\n *\n * @event kemet-carousel-change-start - Fires when the slide has begun to change.\n * @event kemet-carousel-change-finished - Fires when a slide has changed and finished animating\n *\n * @slot slides - Place the slide elements here.\n * @slot toolbar - Allows you to construct a toolbar within the carousel. Place things like pagination here.\n * @slot prev - A slot for the previous arrow.\n * @slot next - A slot for the next arrow.\n * @slot information - Allows you to enter custom HTML such as a slide description to be used in the toolbar.\n *\n * @cssproperty --kemet-carousel-width - The width of the carousel.\n * @cssproperty --kemet-carousel-height - The height of the carousel.\n * @cssproperty --kemet-carousel-toolbar-gap - The space between items in the toolbar.\n * @cssproperty --kemet-carousel-toolbar-justify-content - The cross axis alignment of the toolbar.\n * @cssproperty --kemet-carousel-toolbar-padding - The padding of the toolbar.\n * @cssproperty --kemet-carousel-toolbar-inner-width - The inner toolbar width.\n * @cssproperty --kemet-carousel-toolbar-inner-bottom - The bottom position of the inner toolbar.\n * @cssproperty --kemet-carousel-toolbar-inner-top - The top position of the inner toolbar.\n * @cssproperty --kemet-carousel-toolbar-inner-color - The inner toolbar text color.\n * @cssproperty --kemet-carousel-toolbar-inner-background-color - The inner toolbar background color.\n * @cssproperty --kemet-carousel-slides-border - The border around the slides.\n * @cssproperty --kemet-carousel-transition-speed - The transition speed of the slides.\n * @cssproperty --kemet-carousel-arrows-opacity - The arrows start opacity.\n * @cssproperty --kemet-carousel-arrows-opacity-hover - The arrows however opacity.\n * @cssproperty --kemet-carousel-arrows-transition-speed - The arrows transition speed.\n *\n * @csspart container - Contains the slides and toolbar.\n * @csspart slides - Wrapper for the slider.\n * @csspart slider - Contains the slides.\n * @csspart toolbar - Contains the toolbar.\n *\n */\n\n@customElement('kemet-carousel')\nexport default class KemetCarousel extends LitElement {\n static styles = [stylesCarousel];\n\n @property({ type: Number, reflect: true })\n index: number = 0;\n\n @property({ type: Number })\n total: number = 0;\n\n @property({ type: String })\n sliderWidth: string = 'auto';\n\n @property({ type: String })\n sliderTranslateX: string = '0';\n\n @property({ type: Boolean, reflect: true })\n inner: boolean = false;\n\n @property({ type: Boolean, reflect: true })\n arrows: boolean = false;\n\n @property({ type: Object })\n options: object = {\n perView: 1,\n perMove: 1,\n gap: 12,\n slideshow: 0,\n rewind: true,\n center: false,\n };\n\n @property({ type: Object })\n breakpoints: object = {\n 768: {\n perView: 2,\n gap: 24,\n rewind: false,\n },\n 1280: {\n perView: 2.5,\n center: true,\n },\n };\n\n /** @internal */\n @state()\n slides: KemetCarouselSlide[] = [];\n\n /** @internal */\n @state()\n links: KemetCarouselLink[] = [];\n\n /** @internal */\n @state()\n toolbarSlotElement: HTMLElement | null;\n\n /** @internal */\n @state()\n informationElement: HTMLElement | null;\n\n /** @internal */\n @state()\n swipeMove: (event: TouchEvent | MouseEvent) => void;\n\n /** @internal */\n @state()\n handleSlideShow: () => void;\n\n /** @internal */\n @state()\n slideShowID: number;\n\n /** @internal */\n @state()\n startX: number;\n\n /** @internal */\n @state()\n slideWidth: number;\n\n /** @internal */\n @state()\n informationSlot: HTMLElement;\n\n /** @internal */\n @query('#container')\n containerElement: HTMLElement;\n\n /** @internal */\n @query('#slides')\n slidesElement: HTMLElement;\n\n /** @internal */\n @query('#slider')\n sliderElement: HTMLElement;\n\n /** @internal */\n @query('#toolbar')\n toolbarElement: HTMLElement;\n\n constructor() {\n super();\n\n // bindings\n this.addEventListener('kemet-carousel-first', this.handleFirst.bind(this));\n this.addEventListener('kemet-carousel-last', this.handleLast.bind(this));\n this.addEventListener('kemet-carousel-next', this.handleNext.bind(this));\n this.addEventListener('kemet-carousel-prev', this.handlePrev.bind(this));\n this.addEventListener('kemet-carousel-link', this.handleLink.bind(this));\n }\n\n firstUpdated() {\n // elements\n this.toolbarSlotElement = this.querySelector('[slot=\"toolbar\"]');\n this.informationElement = this.querySelector('kemet-carousel-information');\n\n // events\n window.addEventListener('resize', () => {\n this.setSlideSize();\n this.setToolbarSize();\n this.updateIndex(this.index);\n });\n\n this.sliderElement?.addEventListener('transitionend', this.handleTransitionEnd.bind(this));\n\n // methods\n this.swipeMove = (event) => {\n event.preventDefault();\n let pageX: number;\n\n if ('touches' in event) {\n pageX = event.touches[0].pageX;\n } else {\n pageX = event.pageX;\n }\n const currentSlide = this.slides[this.index];\n\n this.sliderTranslateX = `${pageX - this.startX - currentSlide.offsetLeft}px`;\n };\n\n // setup\n this.setSlideSize();\n this.goToSlide(this.index);\n }\n\n updated(prevProps: Map<string, never>) {\n this.setSlideSize();\n this.setToolbarSize();\n\n if (prevProps.has('index')) {\n this.updateIndex(this.index);\n this.slideShowID = window.setTimeout(() => {\n if (this.getOption('slideshow') > 0) {\n this.updateIndex(this.index + 1);\n clearTimeout(this.slideShowID);\n }\n }, this.getOption('slideshow') * 1000);\n }\n }\n\n render() {\n return html`\n <slot name=\"prev\" @slotchange=${this.handleArrows}></slot>\n <div id=\"container\" class=\"container\" part=\"container\">\n <section\n id=\"slides\"\n class=\"slides\"\n part=\"slides\"\n @mousedown=${this.swipeStart}\n @mouseup=${this.swipeEnd}\n @touchstart=${this.swipeStart}\n @touchend=${this.swipeEnd}\n @mouseleave=${this.swipeLeave}\n >\n <div id=\"slider\" class=\"slider\" part=\"slider\" style=\"width:${this.sliderWidth}; transform:translateX(${this.sliderTranslateX});\">\n <slot name=\"slides\" @slotchange=\"${this.handleSlotChange}\"></slot>\n </div>\n </section>\n ${this.makeToolbar()}\n </div>\n <slot name=\"next\" @slotchange=${this.handleArrows}></slot>\n `;\n }\n\n swipeStart(event: TouchEvent | MouseEvent) {\n if ('touches' in event) {\n this.startX = event.touches[0].pageX;\n } else {\n this.startX = event.pageX;\n }\n\n this.addEventListener('mousemove', this.swipeMove);\n this.addEventListener('touchmove', this.swipeMove);\n }\n\n swipeEnd(event: TouchEvent | MouseEvent) {\n this.updateIndex(this.swipeUpdate(event));\n this.removeEventListener('mousemove', this.swipeMove, false);\n this.removeEventListener('touchmove', this.swipeMove, false);\n }\n\n swipeUpdate(event: TouchEvent | MouseEvent) {\n let pageX: number;\n\n if ('changedTouches' in event) {\n pageX = event.changedTouches[0].pageX;\n } else {\n pageX = event.pageX;\n }\n\n const direction = this.startX > pageX ? 'right' : 'left';\n const threshold = this.slidesElement.offsetWidth / 3;\n const diff = this.startX - pageX;\n const shouldUpdate = Math.abs(diff) > threshold;\n\n let { index } = this;\n\n if (shouldUpdate && direction === 'right') {\n index = this.index >= this.slides.length - 1 ? this.index : this.index + 1;\n }\n\n if (shouldUpdate && direction === 'left') {\n index = this.index < 1 ? 0 : this.index - 1;\n }\n\n return index;\n }\n\n swipeLeave() {\n this.updateIndex(this.index);\n this.removeEventListener('mousemove', this.swipeMove, false);\n this.removeEventListener('touchmove', this.swipeMove, false);\n }\n\n setSlideSize() {\n this.slideWidth = this.containerElement?.offsetWidth as number / this.getOption('perView');\n\n this.slides.forEach((slide) => {\n slide.style.marginLeft = `${this.getOption('gap') / 2}px`;\n slide.style.marginRight = `${this.getOption('gap') / 2}px`;\n slide.style.width = `${this.slideWidth - this.getOption('gap')}px`;\n });\n\n this.sliderWidth = `${this.slideWidth * this.slides.length}px`;\n }\n\n setToolbarSize() {\n if (this.inner && this.toolbarElement) {\n const width = this.slidesElement.offsetWidth;\n this.toolbarElement.style.width = `${width}px`;\n }\n }\n\n makeToolbar() {\n if (this.toolbarSlotElement) {\n return html`\n <section id=\"toolbar\" class=\"toolbar\" part=\"toolbar\">\n <slot name=\"toolbar\"></slot>\n </section>\n `;\n }\n\n return null;\n }\n\n handleSlotChange() {\n const slides = this.querySelectorAll('kemet-carousel-slide') as NodeListOf<KemetCarouselSlide>;\n const links = this.querySelectorAll('kemet-carousel-link') as NodeListOf<KemetCarouselLink>;\n\n // handle slides\n slides.forEach((slide) => {\n this.slides.push(slide);\n });\n\n this.updateInformation();\n this.total = slides.length;\n slides[this.index].selected = true;\n\n // handle links\n links.forEach((link) => {\n this.links.push(link);\n });\n }\n\n handleArrows() {\n this.arrows = true;\n }\n\n handleFirst() {\n this.updateIndex(0);\n }\n\n handleLast() {\n this.updateIndex(this.slides.length - 1);\n }\n\n handleNext() {\n let newIndex = this.index + this.getOption('perMove');\n\n if (newIndex >= this.slides.length) {\n if (this.getOption('rewind')) {\n newIndex = 0;\n } else {\n newIndex = this.index;\n }\n }\n\n this.updateIndex(newIndex);\n }\n\n handlePrev() {\n let newIndex = this.index - this.getOption('perMove');\n\n // send them to the last slide\n if (newIndex < 0) {\n if (this.getOption('rewind')) {\n newIndex = this.slides.length - 1;\n } else {\n newIndex = this.index;\n }\n }\n\n this.updateIndex(newIndex);\n }\n\n updateIndex(newIndex: number) {\n let currentSlide = this.slides[this.index];\n let currentLink = this.links[newIndex];\n\n // remove selected from all links\n this.links.forEach((link) => {\n link.selected = false;\n });\n\n // if current link is invalid assume it's the first link\n if (!currentLink) {\n [currentLink] = this.links;\n }\n\n // add selected to current link\n if (currentLink) {\n currentLink.selected = true;\n }\n\n if (currentSlide) {\n currentSlide.setAttribute('aria-hidden', 'true');\n\n // correct for invalid indexes\n if (newIndex > -1 && newIndex < this.slides.length) {\n this.index = newIndex;\n } else {\n // eslint-disable-next-line no-console\n console.warn('An invalid index number was entered. The kemet-carousel has been reset to the first slide.');\n this.index = 0;\n }\n\n // move\n this.goToSlide(this.index);\n\n // update new slide\n currentSlide = this.slides[this.index];\n currentSlide.setAttribute('aria-hidden', 'false');\n\n this.slides.forEach((slide) => {\n slide.selected = false;\n });\n\n currentSlide.selected = true;\n\n // notify consumers of slide change\n emitEvent(this, 'kemet-carousel-change-start', this);\n\n // update information element\n this.updateInformation();\n }\n }\n\n updateInformation() {\n this.informationSlot = this.slides[this.index].querySelector('[slot=\"information\"]');\n\n if (this.informationElement) {\n if (this.informationSlot) {\n this.informationElement.innerHTML = this.informationSlot.outerHTML;\n } else {\n this.informationElement.innerHTML = '';\n }\n }\n }\n\n goToSlide(index: number) {\n if (this.getOption('center') === true) {\n const slidesCenter = this.slidesElement.offsetWidth / 2;\n const slideX = this.slideWidth * index;\n this.sliderTranslateX = `${slideX - (slideX - slidesCenter) - this.slideWidth / 2 - slideX}px`;\n } else {\n this.sliderTranslateX = `${(this.slideWidth * index) * -1}px`;\n }\n }\n\n handleTransitionEnd() {\n const currentElement = this.querySelector('kemet-carousel-current') as KemetCarouselCurrent;\n\n if (currentElement) {\n currentElement.current = this.index + 1;\n }\n\n emitEvent(this, 'kemet-carousel-change-finished', this);\n }\n\n handleLink(event: CustomEvent) {\n this.updateIndex(event.detail.slide);\n }\n\n getOption(option: string) {\n const breakpoints = Object.keys(this.breakpoints);\n let value = this.options[option];\n\n breakpoints.forEach((breakpoint) => {\n if (window.matchMedia(`(min-width: ${breakpoint}px)`).matches && this.breakpoints[breakpoint][option] !== undefined) {\n value = this.breakpoints[breakpoint][option];\n }\n\n return value;\n });\n\n return value;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-carousel': KemetCarousel\n }\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import './kemet-carousel';
|
|
2
|
+
import './kemet-carousel-slide';
|
|
3
|
+
import './kemet-carousel-current';
|
|
4
|
+
import './kemet-carousel-total';
|
|
5
|
+
import './kemet-carousel-next';
|
|
6
|
+
import './kemet-carousel-prev';
|
|
7
|
+
import './kemet-carousel-first';
|
|
8
|
+
import './kemet-carousel-last';
|
|
9
|
+
import './kemet-carousel-link';
|
|
10
|
+
import '../kemet-icon/kemet-icon';
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { html, render } from 'lit';
|
|
2
|
+
import { expect } from '@wdio/globals';
|
|
3
|
+
import { getByText, waitFor } from '@testing-library/dom';
|
|
4
|
+
import userEvent from '@testing-library/user-event';
|
|
5
|
+
import './kemet-carousel';
|
|
6
|
+
import './kemet-carousel-slide';
|
|
7
|
+
import './kemet-carousel-current';
|
|
8
|
+
import './kemet-carousel-total';
|
|
9
|
+
import './kemet-carousel-next';
|
|
10
|
+
import './kemet-carousel-prev';
|
|
11
|
+
import './kemet-carousel-first';
|
|
12
|
+
import './kemet-carousel-last';
|
|
13
|
+
import './kemet-carousel-link';
|
|
14
|
+
import '../kemet-icon/kemet-icon';
|
|
15
|
+
describe('Carousel', () => {
|
|
16
|
+
const templates = {
|
|
17
|
+
default: html `
|
|
18
|
+
<kemet-carousel>
|
|
19
|
+
<kemet-carousel-slide slot="slides">Slide 1</kemet-carousel-slide>
|
|
20
|
+
<kemet-carousel-slide slot="slides">Slide 2</kemet-carousel-slide>
|
|
21
|
+
<kemet-carousel-slide slot="slides">Slide 3</kemet-carousel-slide>
|
|
22
|
+
</kemet-carousel>
|
|
23
|
+
`,
|
|
24
|
+
descriptionBar: html `
|
|
25
|
+
<kemet-carousel>
|
|
26
|
+
<kemet-carousel-slide slot="slides">Slide 1</kemet-carousel-slide>
|
|
27
|
+
<kemet-carousel-slide slot="slides">Slide 2</kemet-carousel-slide>
|
|
28
|
+
<kemet-carousel-slide slot="slides">Slide 3</kemet-carousel-slide>
|
|
29
|
+
<div slot="toolbar">
|
|
30
|
+
<div>
|
|
31
|
+
<kemet-carousel-current></kemet-carousel-current>
|
|
32
|
+
of
|
|
33
|
+
<kemet-carousel-total></kemet-carousel-total>
|
|
34
|
+
:
|
|
35
|
+
<kemet-carousel-information>
|
|
36
|
+
<span slot="information"><a href="https://google.com" target="_blank">Title</a>. An image of slide 1.</span>
|
|
37
|
+
</kemet-carousel-information>
|
|
38
|
+
</div>
|
|
39
|
+
<kemet-carousel-prev>
|
|
40
|
+
<kemet-badge circle>
|
|
41
|
+
<kemet-icon icon="chevron-left"></kemet-icon>
|
|
42
|
+
</kemet-badge>
|
|
43
|
+
</kemet-carousel-prev>
|
|
44
|
+
<kemet-carousel-next>
|
|
45
|
+
<kemet-badge circle>
|
|
46
|
+
<kemet-icon icon="chevron-right"></kemet-icon>
|
|
47
|
+
</kemet-badge>
|
|
48
|
+
</kemet-carousel-next>
|
|
49
|
+
</div>
|
|
50
|
+
</kemet-carousel>
|
|
51
|
+
`,
|
|
52
|
+
paginationBar: html `
|
|
53
|
+
<kemet-carousel>
|
|
54
|
+
<kemet-carousel-slide slot="slides" selected>
|
|
55
|
+
<figure>
|
|
56
|
+
<h3>Slide 1</h3>
|
|
57
|
+
<img src="https://via.placeholder.com/1920x1080" alt="a placeholder" />
|
|
58
|
+
<figcaption>An image in a carousel.</figcaption>
|
|
59
|
+
</figure>
|
|
60
|
+
<span slot="information"><a href="https://google.com" target="_blank">Title</a>. An image of slide 1. </span>
|
|
61
|
+
</kemet-carousel-slide>
|
|
62
|
+
|
|
63
|
+
<kemet-carousel-slide slot="slides" selected>
|
|
64
|
+
<figure>
|
|
65
|
+
<h3>Slide 2</h3>
|
|
66
|
+
<img src="https://via.placeholder.com/1920x1080" alt="a placeholder" />
|
|
67
|
+
<figcaption>An image in a carousel.</figcaption>
|
|
68
|
+
</figure>
|
|
69
|
+
<span slot="information"><a href="https://google.com" target="_blank">Title</a>. An image of slide 2. </span>
|
|
70
|
+
</kemet-carousel-slide>
|
|
71
|
+
|
|
72
|
+
<kemet-carousel-slide slot="slides" selected>
|
|
73
|
+
<figure>
|
|
74
|
+
<h3>Slide 3</h3>
|
|
75
|
+
<img src="https://via.placeholder.com/1920x1080" alt="a placeholder" />
|
|
76
|
+
<figcaption>An image in a carousel.</figcaption>
|
|
77
|
+
</figure>
|
|
78
|
+
<span slot="information"><a href="https://google.com" target="_blank">Title</a>. An image of slide 3.</span>
|
|
79
|
+
</kemet-carousel-slide>
|
|
80
|
+
|
|
81
|
+
<kemet-carousel-first slot="toolbar">
|
|
82
|
+
<kemet-icon icon="chevron-double-left"></kemet-icon>
|
|
83
|
+
</kemet-carousel-first>
|
|
84
|
+
<kemet-carousel-prev slot="toolbar">
|
|
85
|
+
<kemet-icon icon="chevron-left"></kemet-icon>
|
|
86
|
+
</kemet-carousel-prev>
|
|
87
|
+
|
|
88
|
+
<kemet-carousel-link slot="toolbar" slide="0">1</kemet-carousel-link>
|
|
89
|
+
<kemet-carousel-link slot="toolbar" slide="1">2</kemet-carousel-link>
|
|
90
|
+
<kemet-carousel-link slot="toolbar" slide="2">3</kemet-carousel-link>
|
|
91
|
+
|
|
92
|
+
<kemet-carousel-next slot="toolbar">
|
|
93
|
+
<kemet-icon icon="chevron-right"></kemet-icon>
|
|
94
|
+
</kemet-carousel-next>
|
|
95
|
+
<kemet-carousel-last slot="toolbar">
|
|
96
|
+
<kemet-icon icon="chevron-double-right"></kemet-icon>
|
|
97
|
+
</kemet-carousel-last>
|
|
98
|
+
</kemet-carousel>
|
|
99
|
+
`,
|
|
100
|
+
};
|
|
101
|
+
it('displays a carousel', async () => {
|
|
102
|
+
render(templates.descriptionBar, document.body);
|
|
103
|
+
const carousel = getByText(document.body, 'Slide 1').closest('kemet-carousel');
|
|
104
|
+
expect(carousel).toBeTruthy();
|
|
105
|
+
});
|
|
106
|
+
describe('Navigation', () => {
|
|
107
|
+
it('handles navigation to the next slide', async () => {
|
|
108
|
+
render(templates.paginationBar, document.body);
|
|
109
|
+
const carousel = getByText(document.body, 'Slide 1').closest('kemet-carousel');
|
|
110
|
+
await waitFor(async () => {
|
|
111
|
+
const next = carousel.querySelector('kemet-carousel-next').shadowRoot.querySelector('button');
|
|
112
|
+
await userEvent.click(next);
|
|
113
|
+
next.focus();
|
|
114
|
+
await userEvent.keyboard('[Enter]');
|
|
115
|
+
expect(carousel.index).toBe(2);
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
it('handles navigation to the previous slide', async () => {
|
|
119
|
+
render(templates.paginationBar, document.body);
|
|
120
|
+
const carousel = getByText(document.body, 'Slide 1').closest('kemet-carousel');
|
|
121
|
+
carousel.index = 2;
|
|
122
|
+
await waitFor(async () => {
|
|
123
|
+
const prev = carousel.querySelector('kemet-carousel-prev').shadowRoot.querySelector('button');
|
|
124
|
+
await userEvent.click(prev);
|
|
125
|
+
prev.focus();
|
|
126
|
+
await userEvent.keyboard('[Enter]');
|
|
127
|
+
expect(carousel.index).toBe(0);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
it('handles navigation to the last slide', async () => {
|
|
131
|
+
render(templates.paginationBar, document.body);
|
|
132
|
+
const carousel = getByText(document.body, 'Slide 1').closest('kemet-carousel');
|
|
133
|
+
await waitFor(async () => {
|
|
134
|
+
const last = carousel.querySelector('kemet-carousel-last').shadowRoot.querySelector('button');
|
|
135
|
+
await userEvent.click(last);
|
|
136
|
+
last.focus();
|
|
137
|
+
await userEvent.keyboard('[Enter]');
|
|
138
|
+
expect(carousel.index).toBe(2);
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
it('handles navigation to the first slide', async () => {
|
|
142
|
+
render(templates.paginationBar, document.body);
|
|
143
|
+
const carousel = getByText(document.body, 'Slide 1').closest('kemet-carousel');
|
|
144
|
+
carousel.index = 2;
|
|
145
|
+
await waitFor(async () => {
|
|
146
|
+
const first = carousel.querySelector('kemet-carousel-first').shadowRoot.querySelector('button');
|
|
147
|
+
await userEvent.click(first);
|
|
148
|
+
first.focus();
|
|
149
|
+
await userEvent.keyboard('[Enter]');
|
|
150
|
+
expect(carousel.index).toBe(0);
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
it('handles navigation a specific slide', async () => {
|
|
154
|
+
render(templates.paginationBar, document.body);
|
|
155
|
+
const carousel = getByText(document.body, 'Slide 1').closest('kemet-carousel');
|
|
156
|
+
carousel.index = 2;
|
|
157
|
+
await waitFor(async () => {
|
|
158
|
+
const links = carousel.querySelectorAll('kemet-carousel-link');
|
|
159
|
+
const second = links[1].shadowRoot.querySelector('button');
|
|
160
|
+
await userEvent.click(second);
|
|
161
|
+
second.focus();
|
|
162
|
+
await userEvent.keyboard('[Enter]');
|
|
163
|
+
expect(carousel.index).toBe(1);
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
//# sourceMappingURL=spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../src/components/kemet-carousel/spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, render } from 'lit';\nimport { expect } from '@wdio/globals';\nimport { getByText, waitFor } from '@testing-library/dom';\nimport userEvent from '@testing-library/user-event';\n\nimport './kemet-carousel';\nimport './kemet-carousel-slide';\nimport './kemet-carousel-current';\nimport './kemet-carousel-total';\nimport './kemet-carousel-next';\nimport './kemet-carousel-prev';\nimport './kemet-carousel-first';\nimport './kemet-carousel-last';\nimport './kemet-carousel-link';\nimport '../kemet-icon/kemet-icon';\n\ndescribe('Carousel', () => {\n const templates = {\n default: html`\n <kemet-carousel>\n <kemet-carousel-slide slot=\"slides\">Slide 1</kemet-carousel-slide>\n <kemet-carousel-slide slot=\"slides\">Slide 2</kemet-carousel-slide>\n <kemet-carousel-slide slot=\"slides\">Slide 3</kemet-carousel-slide>\n </kemet-carousel>\n `,\n descriptionBar: html`\n <kemet-carousel>\n <kemet-carousel-slide slot=\"slides\">Slide 1</kemet-carousel-slide>\n <kemet-carousel-slide slot=\"slides\">Slide 2</kemet-carousel-slide>\n <kemet-carousel-slide slot=\"slides\">Slide 3</kemet-carousel-slide>\n <div slot=\"toolbar\">\n <div>\n <kemet-carousel-current></kemet-carousel-current>\n of \n <kemet-carousel-total></kemet-carousel-total>\n : \n <kemet-carousel-information>\n <span slot=\"information\"><a href=\"https://google.com\" target=\"_blank\">Title</a>. An image of slide 1.</span>\n </kemet-carousel-information>\n </div>\n <kemet-carousel-prev>\n <kemet-badge circle>\n <kemet-icon icon=\"chevron-left\"></kemet-icon>\n </kemet-badge>\n </kemet-carousel-prev>\n <kemet-carousel-next>\n <kemet-badge circle>\n <kemet-icon icon=\"chevron-right\"></kemet-icon>\n </kemet-badge>\n </kemet-carousel-next>\n </div>\n </kemet-carousel>\n `,\n paginationBar: html`\n <kemet-carousel>\n <kemet-carousel-slide slot=\"slides\" selected>\n <figure>\n <h3>Slide 1</h3>\n <img src=\"https://via.placeholder.com/1920x1080\" alt=\"a placeholder\" />\n <figcaption>An image in a carousel.</figcaption>\n </figure>\n <span slot=\"information\"><a href=\"https://google.com\" target=\"_blank\">Title</a>. An image of slide 1. </span>\n </kemet-carousel-slide>\n\n <kemet-carousel-slide slot=\"slides\" selected>\n <figure>\n <h3>Slide 2</h3>\n <img src=\"https://via.placeholder.com/1920x1080\" alt=\"a placeholder\" />\n <figcaption>An image in a carousel.</figcaption>\n </figure>\n <span slot=\"information\"><a href=\"https://google.com\" target=\"_blank\">Title</a>. An image of slide 2. </span>\n </kemet-carousel-slide>\n\n <kemet-carousel-slide slot=\"slides\" selected>\n <figure>\n <h3>Slide 3</h3>\n <img src=\"https://via.placeholder.com/1920x1080\" alt=\"a placeholder\" />\n <figcaption>An image in a carousel.</figcaption>\n </figure>\n <span slot=\"information\"><a href=\"https://google.com\" target=\"_blank\">Title</a>. An image of slide 3.</span>\n </kemet-carousel-slide>\n\n <kemet-carousel-first slot=\"toolbar\">\n <kemet-icon icon=\"chevron-double-left\"></kemet-icon>\n </kemet-carousel-first>\n <kemet-carousel-prev slot=\"toolbar\">\n <kemet-icon icon=\"chevron-left\"></kemet-icon>\n </kemet-carousel-prev>\n\n <kemet-carousel-link slot=\"toolbar\" slide=\"0\">1</kemet-carousel-link>\n <kemet-carousel-link slot=\"toolbar\" slide=\"1\">2</kemet-carousel-link>\n <kemet-carousel-link slot=\"toolbar\" slide=\"2\">3</kemet-carousel-link>\n\n <kemet-carousel-next slot=\"toolbar\">\n <kemet-icon icon=\"chevron-right\"></kemet-icon>\n </kemet-carousel-next>\n <kemet-carousel-last slot=\"toolbar\">\n <kemet-icon icon=\"chevron-double-right\"></kemet-icon>\n </kemet-carousel-last>\n </kemet-carousel>\n `,\n };\n\n it('displays a carousel', async () => {\n render(templates.descriptionBar, document.body);\n const carousel = getByText(document.body, 'Slide 1').closest('kemet-carousel');\n expect(carousel).toBeTruthy();\n });\n\n describe('Navigation', () => {\n it('handles navigation to the next slide', async () => {\n render(templates.paginationBar, document.body);\n const carousel = getByText(document.body, 'Slide 1').closest('kemet-carousel');\n\n await waitFor(async () => {\n const next = carousel.querySelector('kemet-carousel-next').shadowRoot.querySelector('button');\n await userEvent.click(next);\n next.focus();\n await userEvent.keyboard('[Enter]');\n expect(carousel.index).toBe(2);\n });\n });\n\n it('handles navigation to the previous slide', async () => {\n render(templates.paginationBar, document.body);\n const carousel = getByText(document.body, 'Slide 1').closest('kemet-carousel');\n carousel.index = 2;\n\n await waitFor(async () => {\n const prev = carousel.querySelector('kemet-carousel-prev').shadowRoot.querySelector('button');\n await userEvent.click(prev);\n prev.focus();\n await userEvent.keyboard('[Enter]');\n expect(carousel.index).toBe(0);\n });\n });\n\n it('handles navigation to the last slide', async () => {\n render(templates.paginationBar, document.body);\n const carousel = getByText(document.body, 'Slide 1').closest('kemet-carousel');\n\n await waitFor(async () => {\n const last = carousel.querySelector('kemet-carousel-last').shadowRoot.querySelector('button');\n await userEvent.click(last);\n last.focus();\n await userEvent.keyboard('[Enter]');\n expect(carousel.index).toBe(2);\n });\n });\n\n it('handles navigation to the first slide', async () => {\n render(templates.paginationBar, document.body);\n const carousel = getByText(document.body, 'Slide 1').closest('kemet-carousel');\n carousel.index = 2;\n\n await waitFor(async () => {\n const first = carousel.querySelector('kemet-carousel-first').shadowRoot.querySelector('button');\n await userEvent.click(first);\n first.focus();\n await userEvent.keyboard('[Enter]');\n expect(carousel.index).toBe(0);\n });\n });\n\n it('handles navigation a specific slide', async () => {\n render(templates.paginationBar, document.body);\n const carousel = getByText(document.body, 'Slide 1').closest('kemet-carousel');\n carousel.index = 2;\n\n await waitFor(async () => {\n const links = carousel.querySelectorAll('kemet-carousel-link');\n const second = links[1].shadowRoot.querySelector('button');\n await userEvent.click(second);\n second.focus();\n await userEvent.keyboard('[Enter]');\n expect(carousel.index).toBe(1);\n });\n });\n });\n});\n"]}
|
|
@@ -5,7 +5,7 @@ import '../../kemet-tabs/kemet-tab';
|
|
|
5
5
|
import '../../kemet-tabs/kemet-tab-panel';
|
|
6
6
|
declare const meta: Meta;
|
|
7
7
|
export default meta;
|
|
8
|
-
|
|
8
|
+
type Story = StoryObj;
|
|
9
9
|
export declare const Standard: Story;
|
|
10
10
|
export declare const Indeterminate: Story;
|
|
11
11
|
export declare const Disabled: Story;
|
|
@@ -22,14 +22,14 @@ import { TypeStatus } from './types';
|
|
|
22
22
|
* @prop {string} message - Message associated with checkbox status
|
|
23
23
|
*
|
|
24
24
|
* @csspart label - The label element.
|
|
25
|
-
* @csspart text - The
|
|
25
|
+
* @csspart text - The label's text.
|
|
26
26
|
* @csspart mark - The icon of the check mark.
|
|
27
27
|
*
|
|
28
28
|
* @cssproperty --kemet-checkbox-size - The width and height of the checkbox.
|
|
29
|
-
* @cssproperty --kemet-checkbox-color - The color of the checkbox
|
|
29
|
+
* @cssproperty --kemet-checkbox-color - The color of the checkbox mark.
|
|
30
30
|
* @cssproperty --kemet-checkbox-border - The border of the checkbox.
|
|
31
31
|
* @cssproperty --kemet-checkbox-border-radius - The border radius of the checkbox.
|
|
32
|
-
* @cssproperty --kemet-checkbox-filled-color - The filled color of the checkbox
|
|
32
|
+
* @cssproperty --kemet-checkbox-filled-color - The filled color of the checkbox mark.
|
|
33
33
|
* @cssproperty --kemet-checkbox-filled-background-color - The filled background color.
|
|
34
34
|
*
|
|
35
35
|
* @event kemet-checkbox-change - Fires when the state of the checkbox changes
|
|
@@ -44,7 +44,7 @@ export default class KemetCheckbox extends LitElement {
|
|
|
44
44
|
checked: boolean;
|
|
45
45
|
indeterminate: boolean;
|
|
46
46
|
name: string;
|
|
47
|
-
value:
|
|
47
|
+
value: boolean;
|
|
48
48
|
disabled: boolean;
|
|
49
49
|
required: boolean;
|
|
50
50
|
focused: boolean;
|
|
@@ -27,14 +27,14 @@ import { stylesBase } from './styles';
|
|
|
27
27
|
* @prop {string} message - Message associated with checkbox status
|
|
28
28
|
*
|
|
29
29
|
* @csspart label - The label element.
|
|
30
|
-
* @csspart text - The
|
|
30
|
+
* @csspart text - The label's text.
|
|
31
31
|
* @csspart mark - The icon of the check mark.
|
|
32
32
|
*
|
|
33
33
|
* @cssproperty --kemet-checkbox-size - The width and height of the checkbox.
|
|
34
|
-
* @cssproperty --kemet-checkbox-color - The color of the checkbox
|
|
34
|
+
* @cssproperty --kemet-checkbox-color - The color of the checkbox mark.
|
|
35
35
|
* @cssproperty --kemet-checkbox-border - The border of the checkbox.
|
|
36
36
|
* @cssproperty --kemet-checkbox-border-radius - The border radius of the checkbox.
|
|
37
|
-
* @cssproperty --kemet-checkbox-filled-color - The filled color of the checkbox
|
|
37
|
+
* @cssproperty --kemet-checkbox-filled-color - The filled color of the checkbox mark.
|
|
38
38
|
* @cssproperty --kemet-checkbox-filled-background-color - The filled background color.
|
|
39
39
|
*
|
|
40
40
|
* @event kemet-checkbox-change - Fires when the state of the checkbox changes
|
|
@@ -159,7 +159,7 @@ __decorate([
|
|
|
159
159
|
property({ type: String })
|
|
160
160
|
], KemetCheckbox.prototype, "name", void 0);
|
|
161
161
|
__decorate([
|
|
162
|
-
property({ type:
|
|
162
|
+
property({ type: Boolean })
|
|
163
163
|
], KemetCheckbox.prototype, "value", void 0);
|
|
164
164
|
__decorate([
|
|
165
165
|
property({ type: Boolean, reflect: true })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kemet-checkbox.js","sourceRoot":"","sources":["../../../src/components/kemet-checkbox/kemet-checkbox.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,8BAA8B,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;
|
|
1
|
+
{"version":3,"file":"kemet-checkbox.js","sourceRoot":"","sources":["../../../src/components/kemet-checkbox/kemet-checkbox.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { FormSubmitController } from '../../utilities/controllers/forms';\nimport { emitEvent } from '../../utilities/misc/events';\nimport { stylesBase } from './styles';\nimport { TypeStatus } from './types';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-checkbox\n * @summary An enhanced checkbox.\n *\n * @prop {string} label - Label text for the checkbox\n * @prop {boolean} checked - Determines if the checkbox is selected\n * @prop {boolean} indeterminate - An indeterminate selection status\n * @prop {string} name - Name of the checkbox\n * @prop {string} value - Value of the checkbox\n * @prop {boolean} disabled - Determines if a checkbox is disabled\n * @prop {boolean} required - Determines if a checkbox is required\n * @prop {boolean} focused - Is true when the checkbox is focused\n * @prop {boolean} rounded - Gives the checkbox rounded edges\n * @prop {boolean} filled - Fills the checkbox with color\n * @prop {string} status - The status of the checkbox\n * @prop {string} message - Message associated with checkbox status\n *\n * @csspart label - The label element.\n * @csspart text - The label's text.\n * @csspart mark - The icon of the check mark.\n *\n * @cssproperty --kemet-checkbox-size - The width and height of the checkbox.\n * @cssproperty --kemet-checkbox-color - The color of the checkbox mark.\n * @cssproperty --kemet-checkbox-border - The border of the checkbox.\n * @cssproperty --kemet-checkbox-border-radius - The border radius of the checkbox.\n * @cssproperty --kemet-checkbox-filled-color - The filled color of the checkbox mark.\n * @cssproperty --kemet-checkbox-filled-background-color - The filled background color.\n *\n * @event kemet-checkbox-change - Fires when the state of the checkbox changes\n * @event kemet-checkbox-focused - Fires when the checkbox loses or receives focus\n *\n */\n\n@customElement('kemet-checkbox')\nexport default class KemetCheckbox extends LitElement {\n /** @internal */\n formSubmitController: FormSubmitController;\n\n static styles = [stylesBase];\n\n @property({ type: String })\n label: string = '';\n\n @property({ type: Boolean, reflect: true })\n checked: boolean;\n\n @property({ type: Boolean, reflect: true })\n indeterminate: boolean;\n\n @property({ type: String })\n name: string = 'checkbox';\n\n @property({ type: Boolean })\n value: boolean;\n\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n\n @property({ type: Boolean, reflect: true })\n required: boolean = false;\n\n @property({ type: Boolean, reflect: true })\n focused: boolean;\n\n @property({ type: Boolean, reflect: true })\n rounded: boolean = false;\n\n @property({ type: Boolean, reflect: true })\n filled: boolean = false;\n\n @property({ type: String, reflect: true })\n status: TypeStatus = 'standard';\n\n @property({ type: String })\n message: string;\n\n @query('input')\n input: HTMLInputElement;\n\n constructor() {\n super();\n\n /** @internal */\n this.formSubmitController = new FormSubmitController(this);\n }\n\n render() {\n return html`\n <label part=\"label\">\n <input\n type=\"checkbox\"\n name=${ifDefined(this.name)}\n .value=${this.value}\n .indeterminate=${live(this.indeterminate)}\n .checked=${live(this.checked)}\n .disabled=${this.disabled}\n .required=${this.required}\n aria-checked=${this.checked ? 'true' : 'false'}\n @click=${() => this.handleClick()}\n @blur=${() => this.handleBlur()}\n @focus=${() => this.handleFocus()}\n @change=${() => this.handleChange()}\n />\n <button part=\"checkbox\" aria-label=${this.label}>\n ${this.makeCheckMark()}\n </button>\n <span part=\"text\">${this.label}</span>\n </label>\n ${this.makeMessage()}\n `;\n }\n\n click() {\n this.input.click();\n }\n\n handleClick() {\n this.checked = !this.checked;\n this.indeterminate = false;\n emitEvent(this, 'kemet-checkbox-change', this);\n }\n\n handleBlur() {\n this.focused = false;\n emitEvent(this, 'kemet-checkbox-focused', false);\n }\n\n handleFocus() {\n this.focused = true;\n emitEvent(this, 'kemet-checkbox-focused', true);\n }\n\n handleChange() {\n this.value = this.checked;\n\n if (this.input.checkValidity()) {\n this.status = 'standard';\n }\n }\n\n makeMessage() {\n if (this.status === 'error' || this.status === 'warning') {\n return html`<span part=\"message\">${this.message}</span>`;\n }\n\n return null;\n }\n\n makeCheckMark() {\n if (this.checked) {\n return html`\n <span part=\"mark\">\n <svg viewBox=\"0 0 16 16\">\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" stroke-linecap=\"round\">\n <g stroke=\"currentColor\" stroke-width=\"2\">\n <g transform=\"translate(3.428571, 3.428571)\">\n <path d=\"M0,5.71428571 L3.42857143,9.14285714\"></path>\n <path d=\"M9.14285714,0 L3.42857143,9.14285714\"></path>\n </g>\n </g>\n </g>\n </svg>\n </span>\n `;\n }\n\n if (!this.checked && this.indeterminate) {\n return html`\n <span part=\"mark\">\n <svg viewBox=\"0 0 16 16\">\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" stroke-linecap=\"round\">\n <g stroke=\"currentColor\" stroke-width=\"2\">\n <g transform=\"translate(2.285714, 6.857143)\">\n <path d=\"M10.2857143,1.14285714 L1.14285714,1.14285714\"></path>\n </g>\n </g>\n </g>\n </svg>\n </span>\n `;\n }\n\n return null;\n }\n\n checkValidity() {\n return this.input.checkValidity();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-checkbox': KemetCheckbox\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './kemet-checkbox';
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { html, render } from 'lit';
|
|
2
|
+
import { expect } from '@wdio/globals';
|
|
3
|
+
import userEvent from '@testing-library/user-event';
|
|
4
|
+
import { fireEvent, waitFor } from '@testing-library/dom';
|
|
5
|
+
import './kemet-checkbox';
|
|
6
|
+
describe('Checkbox', () => {
|
|
7
|
+
const templates = {
|
|
8
|
+
default: html `<kemet-checkbox label="Label"></kemet-checkbox>`,
|
|
9
|
+
error: html `<kemet-checkbox label="Label" status="error" indeterminate message="Message"></kemet-checkbox>`,
|
|
10
|
+
};
|
|
11
|
+
it('should check the box when clicked', async () => {
|
|
12
|
+
render(templates.default, document.body);
|
|
13
|
+
const checkbox = document.querySelector('kemet-checkbox');
|
|
14
|
+
await waitFor(async () => {
|
|
15
|
+
const label = checkbox.shadowRoot.querySelector('label');
|
|
16
|
+
const input = checkbox.shadowRoot.querySelector('input');
|
|
17
|
+
await userEvent.click(label);
|
|
18
|
+
expect(checkbox.checked).toBe(true);
|
|
19
|
+
fireEvent.blur(input);
|
|
20
|
+
checkbox.checkValidity();
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
it('should check the box when click method is called', async () => {
|
|
24
|
+
render(templates.default, document.body);
|
|
25
|
+
const checkbox = document.querySelector('kemet-checkbox');
|
|
26
|
+
checkbox.click();
|
|
27
|
+
expect(checkbox.checked).toBe(false);
|
|
28
|
+
});
|
|
29
|
+
it('should check the box when click method is called', async () => {
|
|
30
|
+
render(templates.error, document.body);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../src/components/kemet-checkbox/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;AACpD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,kBAAkB,CAAC;AAE1B,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,MAAM,SAAS,GAAG;QAChB,OAAO,EAAE,IAAI,CAAA,iDAAiD;QAC9D,KAAK,EAAE,IAAI,CAAA,gGAAgG;KAC5G,CAAC;IAEF,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAE1D,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;YACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACzD,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACzD,MAAM,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAC1D,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzC,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';\nimport { fireEvent, waitFor } from '@testing-library/dom';\n\nimport './kemet-checkbox';\n\ndescribe('Checkbox', () => {\n const templates = {\n default: html`<kemet-checkbox label=\"Label\"></kemet-checkbox>`,\n error: html`<kemet-checkbox label=\"Label\" status=\"error\" indeterminate message=\"Message\"></kemet-checkbox>`,\n };\n\n it('should check the box when clicked', async () => {\n render(templates.default, document.body);\n const checkbox = document.querySelector('kemet-checkbox');\n\n await waitFor(async () => {\n const label = checkbox.shadowRoot.querySelector('label');\n const input = checkbox.shadowRoot.querySelector('input');\n await userEvent.click(label);\n expect(checkbox.checked).toBe(true);\n fireEvent.blur(input);\n checkbox.checkValidity();\n });\n });\n\n it('should check the box when click method is called', async () => {\n render(templates.default, document.body);\n const checkbox = document.querySelector('kemet-checkbox');\n checkbox.click();\n expect(checkbox.checked).toBe(false);\n });\n\n it('should check the box when click method is called', async () => {\n render(templates.error, document.body);\n });\n});\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LitElement } from 'lit';
|
|
2
|
-
import
|
|
2
|
+
import type KemetField from '../kemet-field/kemet-field';
|
|
3
3
|
/**
|
|
4
4
|
* @since 1.0.0
|
|
5
5
|
* @status stable
|
|
@@ -30,18 +30,19 @@ import { KemetFieldInterface } from '../kemet-field/types';
|
|
|
30
30
|
export default class KemetCombo extends LitElement {
|
|
31
31
|
static styles: import("lit").CSSResult[];
|
|
32
32
|
slug: string;
|
|
33
|
-
options:
|
|
33
|
+
options: string[];
|
|
34
34
|
show: boolean;
|
|
35
|
-
filteredOptions:
|
|
36
|
-
field:
|
|
35
|
+
filteredOptions: string[];
|
|
36
|
+
field: KemetField;
|
|
37
37
|
input: HTMLInputElement;
|
|
38
38
|
firstUpdated(): void;
|
|
39
39
|
render(): import("lit-html").TemplateResult<1>;
|
|
40
40
|
makeOptions(): import("lit-html").TemplateResult<1>[];
|
|
41
|
-
handleInput(event:
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
handleInput(event: CustomEvent): void;
|
|
42
|
+
handleFocus(): void;
|
|
43
|
+
handleSelection(event: KeyboardEvent): void;
|
|
44
|
+
handleOptionKeyDown(event: KeyboardEvent): void;
|
|
45
|
+
handleInputKeyDown(event: KeyboardEvent): void;
|
|
45
46
|
}
|
|
46
47
|
declare global {
|
|
47
48
|
interface HTMLElementTagNameMap {
|