q2-tecton-elements 1.38.2 → 1.39.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/dist/cjs/click-elsewhere_2.cjs.entry.js +1 -1
- package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
- package/dist/cjs/{index-09c712ea.js → index-9113a9da.js} +2 -2
- package/dist/cjs/{index-09c712ea.js.map → index-9113a9da.js.map} +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-action-sheet.cjs.entry.js +1 -1
- package/dist/cjs/q2-action-sheet.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-btn_2.cjs.entry.js +2 -2
- package/dist/cjs/q2-btn_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-calendar.cjs.entry.js +11 -2
- package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-card.cjs.entry.js +20 -23
- package/dist/cjs/q2-card.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-carousel-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-carousel-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-carousel.cjs.entry.js +30 -4
- package/dist/cjs/q2-carousel.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-area.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-area.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-bar.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-donut.cjs.entry.js +14 -14
- package/dist/cjs/q2-chart-donut.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-checkbox-group.cjs.entry.js +1 -1
- package/dist/cjs/q2-checkbox-group.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-checkbox.cjs.entry.js +1 -1
- package/dist/cjs/q2-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-data-table.cjs.entry.js +43 -21
- package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +1 -1
- package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
- package/dist/cjs/q2-editable-field.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js +1 -1
- package/dist/cjs/q2-input.cjs.entry.js +6 -3
- package/dist/cjs/q2-input.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-loc.cjs.entry.js +1 -1
- package/dist/cjs/q2-message.cjs.entry.js +1 -1
- package/dist/cjs/q2-month-picker.cjs.entry.js +1 -1
- package/dist/cjs/q2-optgroup_2.cjs.entry.js +1 -1
- package/dist/cjs/q2-optgroup_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-option-list.cjs.entry.js +1 -1
- package/dist/cjs/q2-option-list.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-pagination.cjs.entry.js +1 -1
- package/dist/cjs/q2-pagination.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-pill.cjs.entry.js +1 -1
- package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
- package/dist/cjs/q2-radio-group.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-radio.cjs.entry.js +1 -1
- package/dist/cjs/q2-radio.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-section.cjs.entry.js +2 -2
- package/dist/cjs/q2-section.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-select.cjs.entry.js +1 -1
- package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-stepper-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js +4 -4
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper.cjs.entry.js +1 -1
- package/dist/cjs/q2-stepper.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tab-container.cjs.entry.js +1 -1
- package/dist/cjs/q2-tab-container.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tab-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tag.cjs.entry.js +1 -1
- package/dist/cjs/q2-tag.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/tecton-tab-pane.cjs.entry.js.map +1 -1
- package/dist/collection/components/click-elsewhere/index.js +1 -1
- package/dist/collection/components/click-elsewhere/index.js.map +1 -1
- package/dist/collection/components/q2-action-sheet/index.js +6 -3
- package/dist/collection/components/q2-action-sheet/index.js.map +1 -1
- package/dist/collection/components/q2-btn/styles.css +11 -11
- package/dist/collection/components/q2-calendar/index.js +23 -11
- package/dist/collection/components/q2-calendar/index.js.map +1 -1
- package/dist/collection/components/q2-card/index.js +21 -27
- package/dist/collection/components/q2-card/index.js.map +1 -1
- package/dist/collection/components/q2-card/styles.css +57 -0
- package/dist/collection/components/q2-carousel/index.js +33 -5
- package/dist/collection/components/q2-carousel/index.js.map +1 -1
- package/dist/collection/components/q2-carousel-pane/index.js +8 -4
- package/dist/collection/components/q2-carousel-pane/index.js.map +1 -1
- package/dist/collection/components/q2-chart-area/index.js +9 -4
- package/dist/collection/components/q2-chart-area/index.js.map +1 -1
- package/dist/collection/components/q2-chart-donut/index.js +58 -22
- package/dist/collection/components/q2-chart-donut/index.js.map +1 -1
- package/dist/collection/components/q2-checkbox/index.js +5 -2
- package/dist/collection/components/q2-checkbox/index.js.map +1 -1
- package/dist/collection/components/q2-checkbox-group/index.js +12 -5
- package/dist/collection/components/q2-checkbox-group/index.js.map +1 -1
- package/dist/collection/components/q2-data-table/index.js +73 -29
- package/dist/collection/components/q2-data-table/index.js.map +1 -1
- package/dist/collection/components/q2-editable-field/index.js +6 -6
- package/dist/collection/components/q2-editable-field/index.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/phone.js +1 -1
- package/dist/collection/components/q2-input/formatting/phone.js.map +1 -1
- package/dist/collection/components/q2-input/index.js +23 -19
- package/dist/collection/components/q2-input/index.js.map +1 -1
- package/dist/collection/components/q2-input/types.js.map +1 -1
- package/dist/collection/components/q2-option/index.js +5 -2
- package/dist/collection/components/q2-option/index.js.map +1 -1
- package/dist/collection/components/q2-option-list/index.js +15 -9
- package/dist/collection/components/q2-option-list/index.js.map +1 -1
- package/dist/collection/components/q2-pagination/index.js +8 -5
- package/dist/collection/components/q2-pagination/index.js.map +1 -1
- package/dist/collection/components/q2-pill/index.js +5 -2
- package/dist/collection/components/q2-pill/index.js.map +1 -1
- package/dist/collection/components/q2-popover/index.js +1 -1
- package/dist/collection/components/q2-popover/index.js.map +1 -1
- package/dist/collection/components/q2-radio/index.js +3 -3
- package/dist/collection/components/q2-radio/index.js.map +1 -1
- package/dist/collection/components/q2-radio-group/index.js +7 -4
- package/dist/collection/components/q2-radio-group/index.js.map +1 -1
- package/dist/collection/components/q2-section/index.js +7 -4
- package/dist/collection/components/q2-section/index.js.map +1 -1
- package/dist/collection/components/q2-section/styles.css +8 -6
- package/dist/collection/components/q2-select/index.js +8 -5
- package/dist/collection/components/q2-select/index.js.map +1 -1
- package/dist/collection/components/q2-stepper/index.js +5 -2
- package/dist/collection/components/q2-stepper/index.js.map +1 -1
- package/dist/collection/components/q2-stepper-pane/index.js +11 -8
- package/dist/collection/components/q2-stepper-pane/index.js.map +1 -1
- package/dist/collection/components/q2-stepper-vertical/index.js +13 -6
- package/dist/collection/components/q2-stepper-vertical/index.js.map +1 -1
- package/dist/collection/components/q2-tab-container/index.js +14 -8
- package/dist/collection/components/q2-tab-container/index.js.map +1 -1
- package/dist/collection/components/q2-tab-pane/index.js +5 -2
- package/dist/collection/components/q2-tab-pane/index.js.map +1 -1
- package/dist/collection/components/q2-tag/index.js +1 -1
- package/dist/collection/components/q2-tag/index.js.map +1 -1
- package/dist/collection/components/q2-textarea/index.js +14 -8
- package/dist/collection/components/q2-textarea/index.js.map +1 -1
- package/dist/collection/components/tecton-tab-pane/index.js +5 -2
- package/dist/collection/components/tecton-tab-pane/index.js.map +1 -1
- package/dist/collection/utils/index.js +1 -1
- package/dist/collection/utils/index.js.map +1 -1
- package/dist/components/index13.js.map +1 -1
- package/dist/components/index14.js.map +1 -1
- package/dist/components/index15.js.map +1 -1
- package/dist/components/index16.js +1 -1
- package/dist/components/index16.js.map +1 -1
- package/dist/components/index2.js.map +1 -1
- package/dist/components/index5.js +1 -1
- package/dist/components/index5.js.map +1 -1
- package/dist/components/index6.js.map +1 -1
- package/dist/components/index9.js +5 -2
- package/dist/components/index9.js.map +1 -1
- package/dist/components/q2-action-sheet.js.map +1 -1
- package/dist/components/q2-calendar.js +10 -1
- package/dist/components/q2-calendar.js.map +1 -1
- package/dist/components/q2-card.js +19 -22
- package/dist/components/q2-card.js.map +1 -1
- package/dist/components/q2-carousel-pane.js.map +1 -1
- package/dist/components/q2-carousel.js +32 -4
- package/dist/components/q2-carousel.js.map +1 -1
- package/dist/components/q2-chart-area.js.map +1 -1
- package/dist/components/q2-chart-donut.js +16 -15
- package/dist/components/q2-chart-donut.js.map +1 -1
- package/dist/components/q2-checkbox-group.js.map +1 -1
- package/dist/components/q2-data-table.js +43 -21
- package/dist/components/q2-data-table.js.map +1 -1
- package/dist/components/q2-editable-field.js.map +1 -1
- package/dist/components/q2-pagination.js.map +1 -1
- package/dist/components/q2-pill.js.map +1 -1
- package/dist/components/q2-radio-group.js.map +1 -1
- package/dist/components/q2-radio.js.map +1 -1
- package/dist/components/q2-section.js +1 -1
- package/dist/components/q2-section.js.map +1 -1
- package/dist/components/q2-select.js.map +1 -1
- package/dist/components/q2-stepper-pane.js.map +1 -1
- package/dist/components/q2-stepper-vertical.js +3 -3
- package/dist/components/q2-stepper-vertical.js.map +1 -1
- package/dist/components/q2-stepper.js.map +1 -1
- package/dist/components/q2-tab-container.js.map +1 -1
- package/dist/components/q2-tab-pane.js.map +1 -1
- package/dist/components/q2-tag.js.map +1 -1
- package/dist/components/q2-textarea.js.map +1 -1
- package/dist/components/tecton-tab-pane.js.map +1 -1
- package/dist/esm/click-elsewhere_2.entry.js +1 -1
- package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
- package/dist/esm/{index-84f1034e.js → index-fbe28822.js} +2 -2
- package/dist/esm/{index-84f1034e.js.map → index-fbe28822.js.map} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-action-sheet.entry.js +1 -1
- package/dist/esm/q2-action-sheet.entry.js.map +1 -1
- package/dist/esm/q2-btn_2.entry.js +2 -2
- package/dist/esm/q2-btn_2.entry.js.map +1 -1
- package/dist/esm/q2-calendar.entry.js +11 -2
- package/dist/esm/q2-calendar.entry.js.map +1 -1
- package/dist/esm/q2-card.entry.js +20 -23
- package/dist/esm/q2-card.entry.js.map +1 -1
- package/dist/esm/q2-carousel-pane.entry.js +1 -1
- package/dist/esm/q2-carousel-pane.entry.js.map +1 -1
- package/dist/esm/q2-carousel.entry.js +30 -4
- package/dist/esm/q2-carousel.entry.js.map +1 -1
- package/dist/esm/q2-chart-area.entry.js +1 -1
- package/dist/esm/q2-chart-area.entry.js.map +1 -1
- package/dist/esm/q2-chart-bar.entry.js +1 -1
- package/dist/esm/q2-chart-donut.entry.js +14 -14
- package/dist/esm/q2-chart-donut.entry.js.map +1 -1
- package/dist/esm/q2-checkbox-group.entry.js +1 -1
- package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
- package/dist/esm/q2-checkbox.entry.js +1 -1
- package/dist/esm/q2-checkbox.entry.js.map +1 -1
- package/dist/esm/q2-data-table.entry.js +43 -21
- package/dist/esm/q2-data-table.entry.js.map +1 -1
- package/dist/esm/q2-dropdown-item.entry.js +1 -1
- package/dist/esm/q2-dropdown.entry.js +1 -1
- package/dist/esm/q2-editable-field.entry.js +1 -1
- package/dist/esm/q2-editable-field.entry.js.map +1 -1
- package/dist/esm/q2-icon.entry.js +1 -1
- package/dist/esm/q2-input.entry.js +6 -3
- package/dist/esm/q2-input.entry.js.map +1 -1
- package/dist/esm/q2-loc.entry.js +1 -1
- package/dist/esm/q2-message.entry.js +1 -1
- package/dist/esm/q2-month-picker.entry.js +1 -1
- package/dist/esm/q2-optgroup_2.entry.js +1 -1
- package/dist/esm/q2-optgroup_2.entry.js.map +1 -1
- package/dist/esm/q2-option-list.entry.js +1 -1
- package/dist/esm/q2-option-list.entry.js.map +1 -1
- package/dist/esm/q2-pagination.entry.js +1 -1
- package/dist/esm/q2-pagination.entry.js.map +1 -1
- package/dist/esm/q2-pill.entry.js +1 -1
- package/dist/esm/q2-pill.entry.js.map +1 -1
- package/dist/esm/q2-radio-group.entry.js +1 -1
- package/dist/esm/q2-radio-group.entry.js.map +1 -1
- package/dist/esm/q2-radio.entry.js +1 -1
- package/dist/esm/q2-radio.entry.js.map +1 -1
- package/dist/esm/q2-section.entry.js +2 -2
- package/dist/esm/q2-section.entry.js.map +1 -1
- package/dist/esm/q2-select.entry.js +1 -1
- package/dist/esm/q2-select.entry.js.map +1 -1
- package/dist/esm/q2-stepper-pane.entry.js +1 -1
- package/dist/esm/q2-stepper-pane.entry.js.map +1 -1
- package/dist/esm/q2-stepper-vertical.entry.js +4 -4
- package/dist/esm/q2-stepper-vertical.entry.js.map +1 -1
- package/dist/esm/q2-stepper.entry.js +1 -1
- package/dist/esm/q2-stepper.entry.js.map +1 -1
- package/dist/esm/q2-tab-container.entry.js +1 -1
- package/dist/esm/q2-tab-container.entry.js.map +1 -1
- package/dist/esm/q2-tab-pane.entry.js.map +1 -1
- package/dist/esm/q2-tag.entry.js +1 -1
- package/dist/esm/q2-tag.entry.js.map +1 -1
- package/dist/esm/q2-tecton-elements.js +1 -1
- package/dist/esm/q2-textarea.entry.js +1 -1
- package/dist/esm/q2-textarea.entry.js.map +1 -1
- package/dist/esm/q2-tooltip.entry.js +1 -1
- package/dist/esm/tecton-tab-pane.entry.js.map +1 -1
- package/dist/q2-tecton-elements/p-0253a00b.entry.js +2 -0
- package/dist/q2-tecton-elements/p-0253a00b.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-72b4ecc6.entry.js → p-07229496.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-07229496.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-a6b03db1.entry.js → p-0ecff52c.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-a6b03db1.entry.js.map → p-0ecff52c.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-f198f77b.entry.js → p-1179b32c.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-1179b32c.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-311f37e2.entry.js → p-15c69543.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-9220365b.entry.js → p-212c6301.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-212c6301.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-3090b655.entry.js +2 -0
- package/dist/q2-tecton-elements/p-3090b655.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-8f8d5362.entry.js → p-3569e648.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-3569e648.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-0cade28b.entry.js → p-36bff57a.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-57e81863.entry.js → p-39e94e12.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-57e81863.entry.js.map → p-39e94e12.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-3f20d610.entry.js +2 -0
- package/dist/q2-tecton-elements/p-3f20d610.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-29a7ca63.entry.js → p-44c2d7a2.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-29a7ca63.entry.js.map → p-44c2d7a2.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-deb773a5.entry.js → p-461dca3d.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-deb773a5.entry.js.map → p-461dca3d.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-3d82d94f.entry.js → p-5964fd50.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-3d82d94f.entry.js.map → p-5964fd50.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-e98d9cf2.entry.js → p-5b4c30b8.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-5b4c30b8.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-69dcf12e.entry.js → p-5d6c2534.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-5d6c2534.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-a09c90c1.entry.js → p-66bc9475.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-a09c90c1.entry.js.map → p-66bc9475.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-e4dadcd7.entry.js → p-6ba6d83e.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-6ba6d83e.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-5843f6c8.entry.js → p-78d5707b.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-78d5707b.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-85dc889e.entry.js → p-7e276297.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-7e276297.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-059ea7c9.entry.js → p-81e36fcd.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-8f273db2.entry.js → p-88b303a7.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-8f273db2.entry.js.map → p-88b303a7.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-9889692d.entry.js +2 -0
- package/dist/q2-tecton-elements/p-9889692d.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-9da0db14.entry.js.map +1 -1
- package/dist/q2-tecton-elements/{p-c057134f.entry.js → p-9dff6592.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-9dff6592.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-145849d0.entry.js → p-a5a23edc.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-a5a23edc.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-db3bbfb8.entry.js → p-a9c40d3b.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-a9c40d3b.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-15179d55.entry.js → p-aa96f160.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-5c033ed9.entry.js → p-b3a32a46.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-5c033ed9.entry.js.map → p-b3a32a46.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-f3868a77.entry.js → p-b6ed1342.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-f3868a77.entry.js.map → p-b6ed1342.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-52132d80.entry.js → p-ba19d09f.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-ba19d09f.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-81b917a5.entry.js → p-cc7ba0cb.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-107f07f2.entry.js → p-ce009987.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-d7fb3534.entry.js.map +1 -1
- package/dist/q2-tecton-elements/{p-959f47ef.entry.js → p-de7352f5.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-6ae87415.entry.js → p-ef2e2991.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-b83568e7.entry.js → p-f1479052.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-f1479052.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-f34521a4.js → p-fb903495.js} +2 -2
- package/dist/q2-tecton-elements/{p-f34521a4.js.map → p-fb903495.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-2812f9d2.entry.js → p-ff137358.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-ff137358.entry.js.map +1 -0
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
- package/dist/test/elements/q2-btn-test.e2e.js +31 -0
- package/dist/test/elements/q2-btn-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-card-test.e2e.js +69 -11
- package/dist/test/elements/q2-card-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-carousel-test.e2e.js +41 -3
- package/dist/test/elements/q2-carousel-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-chart-donut-test.e2e.js +64 -9
- package/dist/test/elements/q2-chart-donut-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-data-table-test.e2e.js +91 -2
- package/dist/test/elements/q2-data-table-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-input-test.e2e.js +151 -67
- package/dist/test/elements/q2-input-test.e2e.js.map +1 -1
- package/dist/test/helpers.js +48 -0
- package/dist/test/helpers.js.map +1 -1
- package/dist/types/components/click-elsewhere/index.d.ts +3 -0
- package/dist/types/components/q2-action-sheet/index.d.ts +7 -0
- package/dist/types/components/q2-calendar/index.d.ts +23 -3
- package/dist/types/components/q2-card/index.d.ts +14 -4
- package/dist/types/components/q2-carousel/index.d.ts +8 -0
- package/dist/types/components/q2-carousel-pane/index.d.ts +7 -1
- package/dist/types/components/q2-chart-area/index.d.ts +7 -1
- package/dist/types/components/q2-chart-donut/index.d.ts +18 -3
- package/dist/types/components/q2-checkbox/index.d.ts +4 -0
- package/dist/types/components/q2-checkbox-group/index.d.ts +8 -1
- package/dist/types/components/q2-data-table/index.d.ts +43 -3
- package/dist/types/components/q2-editable-field/index.d.ts +18 -2
- package/dist/types/components/q2-input/index.d.ts +19 -2
- package/dist/types/components/q2-input/types.d.ts +1 -0
- package/dist/types/components/q2-option/index.d.ts +4 -0
- package/dist/types/components/q2-option-list/index.d.ts +15 -1
- package/dist/types/components/q2-pagination/index.d.ts +8 -2
- package/dist/types/components/q2-pill/index.d.ts +4 -0
- package/dist/types/components/q2-popover/index.d.ts +3 -0
- package/dist/types/components/q2-radio/index.d.ts +6 -1
- package/dist/types/components/q2-radio-group/index.d.ts +7 -1
- package/dist/types/components/q2-section/index.d.ts +7 -1
- package/dist/types/components/q2-select/index.d.ts +16 -1
- package/dist/types/components/q2-stepper/index.d.ts +4 -0
- package/dist/types/components/q2-stepper-pane/index.d.ts +11 -1
- package/dist/types/components/q2-stepper-vertical/index.d.ts +10 -2
- package/dist/types/components/q2-tab-container/index.d.ts +12 -2
- package/dist/types/components/q2-tab-pane/index.d.ts +4 -0
- package/dist/types/components/q2-tag/index.d.ts +5 -0
- package/dist/types/components/q2-textarea/index.d.ts +14 -2
- package/dist/types/components/tecton-tab-pane/index.d.ts +4 -0
- package/dist/types/components.d.ts +223 -27
- package/dist/types/workspace/workspace/{tecton-production_release_1.38.x → _Gitlab_tecton-production_master}/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +1 -0
- package/package.json +4 -3
- package/dist/q2-tecton-elements/p-072bda73.entry.js +0 -2
- package/dist/q2-tecton-elements/p-072bda73.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-145849d0.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-2812f9d2.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-52132d80.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-5843f6c8.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-69dcf12e.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-72b4ecc6.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-85dc889e.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-8f8d5362.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-9220365b.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-a4017e55.entry.js +0 -2
- package/dist/q2-tecton-elements/p-a4017e55.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-af98db79.entry.js +0 -2
- package/dist/q2-tecton-elements/p-af98db79.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-b83568e7.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-c0334e63.entry.js +0 -2
- package/dist/q2-tecton-elements/p-c0334e63.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-c057134f.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-db3bbfb8.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-e4dadcd7.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-e98d9cf2.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-f198f77b.entry.js.map +0 -1
- /package/dist/q2-tecton-elements/{p-311f37e2.entry.js.map → p-15c69543.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-0cade28b.entry.js.map → p-36bff57a.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-059ea7c9.entry.js.map → p-81e36fcd.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-15179d55.entry.js.map → p-aa96f160.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-81b917a5.entry.js.map → p-cc7ba0cb.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-107f07f2.entry.js.map → p-ce009987.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-959f47ef.entry.js.map → p-de7352f5.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-6ae87415.entry.js.map → p-ef2e2991.entry.js.map} +0 -0
|
@@ -207,6 +207,27 @@ describe('q2-carousel', () => {
|
|
|
207
207
|
expect(await userMessageBody.innerText).toEqual('tecton.element.carousel.insufficientPanesMessageBody');
|
|
208
208
|
});
|
|
209
209
|
});
|
|
210
|
+
describe('when mutation observer is triggered', () => {
|
|
211
|
+
it('it re-organizes the carousel panes and updates state', async () => {
|
|
212
|
+
const page = await setup({
|
|
213
|
+
html: renderCarousel(3),
|
|
214
|
+
});
|
|
215
|
+
let carouselPanes = await page.findAll('q2-carousel-pane');
|
|
216
|
+
let pageIndicators = await page.findAll('q2-carousel .q2-carousel-page-indicator');
|
|
217
|
+
expect(carouselPanes).toHaveLength(3);
|
|
218
|
+
expect(pageIndicators).toHaveLength(3);
|
|
219
|
+
await page.$eval('q2-carousel', (el) => {
|
|
220
|
+
const newPane = document.createElement(`q2-carousel-pane`);
|
|
221
|
+
newPane.setAttribute('label', 'New Pane');
|
|
222
|
+
el.appendChild(newPane);
|
|
223
|
+
});
|
|
224
|
+
await page.waitForChanges();
|
|
225
|
+
carouselPanes = await page.findAll('q2-carousel-pane');
|
|
226
|
+
pageIndicators = await page.findAll('q2-carousel .q2-carousel-page-indicator');
|
|
227
|
+
expect(carouselPanes).toHaveLength(4);
|
|
228
|
+
expect(pageIndicators).toHaveLength(4);
|
|
229
|
+
});
|
|
230
|
+
});
|
|
210
231
|
describe('focus transferring', () => {
|
|
211
232
|
const html = `<q2-carousel>
|
|
212
233
|
<q2-carousel-pane>
|
|
@@ -381,11 +402,28 @@ describe('q2-carousel', () => {
|
|
|
381
402
|
expect(autoPlayBtn).not.toBeNull();
|
|
382
403
|
const autoPlayIcon = await page.find('.q2-carousel-autoplay-control q2-icon');
|
|
383
404
|
expect(autoPlayIcon).toEqualAttribute('type', 'pause');
|
|
384
|
-
const carouselWrapper = await page.find('.q2-carousel-swiper-wrapper');
|
|
385
|
-
expect(carouselWrapper).toEqualAttribute('aria-live', 'off');
|
|
386
405
|
await autoPlayBtn.click();
|
|
387
406
|
expect(autoPlayIcon).toEqualAttribute('type', 'play');
|
|
388
|
-
|
|
407
|
+
});
|
|
408
|
+
it('sets aria-live value to off when auto-playing and not focused', async () => {
|
|
409
|
+
const isFocused = async (page, selector) => page.evaluate(selector => {
|
|
410
|
+
const element = document.querySelector(selector);
|
|
411
|
+
return element === document.activeElement;
|
|
412
|
+
}, selector);
|
|
413
|
+
const page = await setup({
|
|
414
|
+
html: `${renderCarousel(3, { autoPlay: true })} <q2-input></q2-input>`,
|
|
415
|
+
});
|
|
416
|
+
const autoPlayBtn = await page.find('.q2-carousel-autoplay-control');
|
|
417
|
+
const inputField = await page.find('q2-input');
|
|
418
|
+
const carouselWrapper = await page.find('.q2-carousel-swiper-wrapper');
|
|
419
|
+
expect(autoPlayBtn).not.toBeNull();
|
|
420
|
+
expect(inputField).not.toBeNull();
|
|
421
|
+
await inputField.click();
|
|
422
|
+
await new Promise(r => setTimeout(r, 10000));
|
|
423
|
+
await page.waitForChanges();
|
|
424
|
+
const inputFocused = await isFocused(page, 'q2-input');
|
|
425
|
+
expect(inputFocused).toBeTruthy();
|
|
426
|
+
expect(carouselWrapper).toEqualAttribute('aria-live', 'off');
|
|
389
427
|
});
|
|
390
428
|
});
|
|
391
429
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-carousel-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-carousel-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EPage } from '@stencil/core/testing';\nimport { setup, dispatchEvent, testDeprecatedAriaLabel } from '../helpers';\n\ndescribe('q2-carousel', () => {\n const renderCarousel = (\n numberOfPanes: number,\n config?: {\n showNavigation?: boolean;\n hidePagination?: boolean;\n fullWidthPanes?: boolean;\n autoPlay?: boolean;\n index?: number;\n }\n ) => {\n const { showNavigation, hidePagination, fullWidthPanes, autoPlay, index } = {\n ...{\n showNavigation: false,\n hidePagination: false,\n fullWidthPanes: false,\n autoPlay: false,\n },\n ...config,\n };\n return `<q2-carousel\n ${showNavigation ? `show-navigation-arrows` : ''}\n ${hidePagination ? `hide-pagination` : ''}\n ${fullWidthPanes ? `full-width-panes` : ''}\n ${autoPlay ? `auto-play` : ''}\n ${index ? `index=\"${index}\"` : ''}\n >\n ${[...Array(numberOfPanes).keys()].map(\n index => `<q2-carousel-pane>Pane ${index + 1}</q2-carousel-pane>`\n )}\n </q2-carousel>`;\n };\n\n it('renders with default properties', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const carousel = await page.find('q2-carousel');\n const carouselContainer = await page.find('q2-carousel .q2-carousel-swiper-container');\n const carouselPanes = await page.findAll('q2-carousel q2-carousel-pane');\n const firstCarouselPane = carouselPanes[0];\n const navPaginationContainer = await page.find('q2-carousel .q2-carousel-pagination-navigation-wrapper');\n const carouselPagination = await page.find('q2-carousel .q2-carousel-pagination');\n const carouselPaginationButtons = await page.findAll('q2-carousel .q2-carousel-page-indicator');\n const firstPaginationButton = carouselPaginationButtons[0];\n const navigationButtons = await page.findAll('q2-carousel .q2-carousel-navigation-button');\n\n expect(carousel).not.toBeNull();\n expect(carousel.getAttribute('id').includes('q2-carousel-')).toEqual(true);\n expect(carousel.classList.contains('q2-carousel-instance')).toEqual(true);\n expect(carouselContainer.classList.contains('content-peek-display')).toEqual(true);\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n expect(carouselContainer.classList.contains('insufficient-panes')).toEqual(false);\n expect(carouselPagination).not.toBeNull();\n expect(carouselPaginationButtons).toHaveLength(3);\n expect(firstPaginationButton.classList.contains('active-page')).toEqual(true);\n expect(navPaginationContainer.classList.contains('evenly-space')).toEqual(false);\n expect(navigationButtons).toEqual([]);\n expect(await carousel.getProperty('swiper')).not.toBeNull();\n expect(await carousel.getProperty('autoPlay')).toEqual(false);\n expect(await carousel.getProperty('fullWidthPanes')).toEqual(false);\n expect(await carousel.getProperty('hidePagination')).toEqual(false);\n expect(await carousel.getProperty('showNavigationArrows')).toEqual(false);\n });\n\n describe('keyboard', () => {\n const isPaneFocused = async (page: E2EPage, paneIndex: number) =>\n page.evaluate(\n paneIndex => document.activeElement === document.querySelectorAll('q2-carousel-pane')[paneIndex],\n paneIndex\n );\n\n it('can advance the carousel using keys', async () => {\n const page = await setup({\n html: renderCarousel(6),\n });\n\n const carouselPanes = await page.findAll('q2-carousel q2-carousel-pane');\n\n await carouselPanes[0].focus();\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[0]).toHaveClass('swiper-slide-active');\n\n await page.keyboard.press('ArrowRight');\n await page.waitForChanges();\n\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[1]).toHaveClass('swiper-slide-active');\n expect(await isPaneFocused(page, 1)).toEqual(true);\n\n await page.keyboard.press('ArrowRight');\n await page.waitForChanges();\n\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[2]).toHaveClass('swiper-slide-active');\n expect(await isPaneFocused(page, 2)).toEqual(true);\n\n await page.keyboard.press('ArrowLeft');\n await page.waitForChanges();\n\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[1]).toHaveClass('swiper-slide-active');\n expect(await isPaneFocused(page, 1)).toEqual(true);\n\n await page.keyboard.press('End');\n await page.waitForChanges();\n\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[5]).toHaveClass('swiper-slide-active');\n expect(await isPaneFocused(page, 5)).toEqual(true);\n\n await page.keyboard.press('Home');\n await page.waitForChanges();\n\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[0]).toHaveClass('swiper-slide-active');\n expect(await isPaneFocused(page, 0)).toEqual(true);\n });\n });\n\n it('pagination dots and navigation arrows can make the carousel advance or go back in order', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { showNavigation: true }),\n });\n\n const carousel = await page.find('q2-carousel');\n const carouselPanes = await page.findAll('q2-carousel q2-carousel-pane');\n const firstCarouselPane = carouselPanes[0];\n const secondCarouselPane = carouselPanes[1];\n const thirdCarouselPane = carouselPanes[2];\n const navPaginationContainer = await page.find('q2-carousel .q2-carousel-pagination-navigation-wrapper');\n\n expect(await carousel.getProperty('showNavigationArrows')).toEqual(true);\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n expect(secondCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(thirdCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(navPaginationContainer.classList.contains('evenly-space')).toEqual(true);\n\n // go to second pane\n await dispatchEvent(page, '.q2-carousel-page-indicator-1', 'click');\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(secondCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n expect(thirdCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n\n // back to third pane\n await dispatchEvent(page, '.q2-carousel-page-indicator-2', 'click');\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(secondCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(thirdCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n\n // back to second pane\n await dispatchEvent(page, '.q2-carousel-navigation-button-prev', 'click');\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(secondCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n expect(thirdCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n\n // back to third pane\n await dispatchEvent(page, '.q2-carousel-navigation-button-next', 'click');\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(secondCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(thirdCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n });\n\n describe('when hide-pagination and show-navigation are provided', () => {\n it('still renders accordingly', async () => {\n const page = await setup({\n html: renderCarousel(3, { hidePagination: true, showNavigation: true }),\n });\n\n const carousel = await page.find('q2-carousel');\n const navPaginationContainer = await page.find('q2-carousel .q2-carousel-pagination-navigation-wrapper');\n const navigationButtons = await page.findAll('q2-carousel .q2-carousel-navigation-button');\n\n expect(await carousel.getProperty('showNavigationArrows')).toEqual(true);\n expect(await carousel.getProperty('showNavigationArrows')).toEqual(true);\n expect(navPaginationContainer).toHaveClass('evenly-space');\n expect(navigationButtons).toHaveLength(2);\n });\n });\n\n it('localizes necessary text', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { showNavigation: true }),\n });\n const carouselContainer = await page.find('q2-carousel .q2-carousel-swiper-container');\n const firstCarouselPane = await page.find('q2-carousel .q2-carousel-pane-0');\n const firstPaginationButton = await page.find(\n 'q2-carousel .q2-carousel-pagination .q2-carousel-page-indicator-0'\n );\n const nextNavBtn = await page.find('.q2-carousel-navigation-button-next');\n\n expect(carouselContainer).toEqualAttribute('aria-label', 'tecton.element.carousel.ariaLabel');\n expect(firstCarouselPane).toEqualAttribute('aria-label', 'tecton.element.carousel.itemDescription');\n expect(firstPaginationButton).toEqualAttribute('aria-label', 'tecton.element.carousel.itemDescription');\n expect(firstPaginationButton).toEqualAttribute('aria-selected', 'true');\n expect(nextNavBtn).toEqualAttribute('label', 'tecton.element.carousel.nextItemLabel');\n\n const prevNavBtn = await page.find('.q2-carousel-navigation-button-prev');\n expect(prevNavBtn).toEqualAttribute('label', 'tecton.element.carousel.previousItemLabel');\n });\n\n it('displays dynamic pagination indicators if more than five q2-carousel-panes present', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(6),\n });\n\n const carouselPagination = await page.find('.q2-carousel-pagination');\n const carouselPaginationButtons = await page.findAll('q2-carousel .q2-carousel-page-indicator');\n const carouselPaginationNonVisibleButtons = await page.findAll(\n '.q2-carousel-page-indicator:not(.active-page):not(.active-adjacent):not(.active-adjacent-adjacent)'\n );\n expect(carouselPagination.classList.contains('dynamic')).toEqual(true);\n expect(carouselPaginationButtons).toHaveLength(6);\n expect(carouselPaginationNonVisibleButtons).toHaveLength(3);\n });\n\n it('puts itself in compact mode if dimensions are right for it', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const carouselContainer = await page.find('.q2-carousel-swiper-container');\n\n expect(await carouselContainer.classList.contains('compact')).toEqual(false);\n\n await page.setViewport({ width: 500, height: 800 });\n await page.waitForChanges();\n\n expect(await carouselContainer.classList.contains('compact')).toEqual(true);\n });\n\n it('hides pagination/navigation if only one content pane is provided in content peek mode', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(1),\n });\n\n const navPaginationContainer = await page.find('q2-carousel .q2-carousel-pagination-navigation-wrapper');\n expect(navPaginationContainer).toBeNull();\n });\n\n it('hides pagination/navigation if only one content pane is provided in full-width mode', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(1, { fullWidthPanes: true }),\n });\n\n const navPaginationContainer = await page.find('q2-carousel .q2-carousel-pagination-navigation-wrapper');\n expect(navPaginationContainer).toBeNull();\n });\n\n describe('when only one pane is provided', () => {\n it('does not render pagination', async () => {\n const page = await setup({\n html: renderCarousel(1),\n });\n\n const pagination = await page.find('q2-carousel .q2-carousel-pagination');\n expect(pagination).toBeNull();\n });\n });\n\n describe('when no panes are provided', () => {\n it('informs the user that more panes are needed', async () => {\n const page = await setup({\n html: renderCarousel(0),\n });\n\n const userMessage = await page.find('.insufficient-pane-feedback');\n const userMessageHeader = await page.find('.insufficient-pane-feedback .insufficient-panes-header');\n const userMessageBody = await page.find('.insufficient-pane-feedback .insufficient-panes-body');\n\n expect(userMessage).not.toBeNull();\n expect(await userMessageHeader.innerText).toEqual('tecton.element.carousel.insufficientPanesMessageHeader');\n expect(await userMessageBody.innerText).toEqual('tecton.element.carousel.insufficientPanesMessageBody');\n });\n });\n\n describe('focus transferring', () => {\n const html = `<q2-carousel>\n <q2-carousel-pane>\n <h2>Hello</h2>\n <p>World</p>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Foo</h2>\n <p>Bar</p>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Fizz</h2>\n <p>Buzz</p>\n <button>Action</button>\n </q2-carousel-pane>\n </q2-carousel>`;\n it('focuses selected pane when focus event dispatched ', async function (): Promise<void> {\n const page = await setup({ html });\n await dispatchEvent(page, ['q2-carousel'], 'focus');\n const innerActiveTestId = async (page: E2EPage) => {\n return page.$eval('q2-carousel', el => {\n return el.querySelector('q2-carousel-pane').isActivePane;\n });\n };\n expect(await innerActiveTestId(page)).toEqual(true);\n });\n\n it('focuses selected pane when focus method called ', async function (): Promise<void> {\n const page = await setup({ html });\n const carousel = await page.find('q2-carousel');\n await carousel.triggerEvent('focus');\n await page.waitForChanges();\n const innerActiveTestId = async (page: E2EPage) => {\n return page.$eval('q2-carousel', el => {\n return el.querySelector('q2-carousel-pane').isActivePane;\n });\n };\n expect(await innerActiveTestId(page)).toEqual(true);\n });\n });\n\n it.skip('manages focus from pagination to carousel panes', async function (): Promise<void> {\n const page = await setup({\n html: `\n <q2-carousel>\n <q2-carousel-pane>\n <h2>Hello</h2>\n <p>World</p>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Foo</h2>\n <p>Bar</p>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Fizz</h2>\n <p>Buzz</p>\n <button>Action</button>\n </q2-carousel-pane>\n </q2-carousel>\n `,\n });\n\n let activeElementClasses;\n\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('q2-carousel-page-indicator-0')).toEqual(true);\n\n await page.keyboard.down('Shift');\n await page.keyboard.press('Tab');\n await page.keyboard.up('Shift');\n await page.waitForChanges();\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('q2-carousel-pane-0')).toEqual(true);\n\n await page.keyboard.down('Shift');\n await page.keyboard.press('Tab');\n await page.keyboard.up('Shift');\n await page.waitForChanges();\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.length).toEqual(0); // shift+tab from a pane should land focus outside of the carousel element\n });\n\n it.skip('manages focus from panes to inner focusable content', async function (): Promise<void> {\n const page = await setup({\n html: `\n <q2-carousel>\n <q2-carousel-pane>\n <h2>Hello</h2>\n <p>World</p>\n <q2-btn color=\"primary\" class=\"button 1\">Nested Focusable Content</q2-btn>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Foo</h2>\n <p>Bar</p>\n <q2-btn color=\"primary\" class=\"button 2\">Nested Focusable Content</q2-btn>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Fizz</h2>\n <p>Buzz</p>\n <button>Action</button>\n </q2-carousel-pane>\n </q2-carousel>\n `,\n });\n\n let activeElementClasses;\n\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('button 1')).toEqual(true);\n\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('page-indicator-0')).toEqual(true);\n\n await dispatchEvent(page, '.q2-carousel-page-indicator-1', 'click');\n await page.waitForChanges();\n await page.waitForEvent('transitionend');\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('q2-carousel-pane-1')).toEqual(true);\n\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('button 2')).toEqual(true);\n\n await page.keyboard.down('Shift');\n await page.keyboard.press('Tab');\n await page.keyboard.up('Shift');\n await page.waitForChanges();\n\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('q2-carousel-pane-1')).toEqual(true);\n\n await page.keyboard.down('Shift');\n await page.keyboard.press('Tab');\n await page.keyboard.up('Shift');\n await page.waitForChanges();\n\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.length).toEqual(0); // shift+tab from a pane should land focus outside of the carousel element\n });\n\n describe('@Props', () => {\n describe('autoPlay', () => {\n describe('when not provided', () => {\n it('does not render autoplay button', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const autoPlayBtn = await page.find('.q2-carousel-autoplay-control');\n expect(autoPlayBtn).toBeNull();\n\n const carouselWrapper = await page.find('.q2-carousel-swiper-wrapper');\n expect(carouselWrapper).toEqualAttribute('aria-live', 'polite');\n });\n });\n\n describe('when provided', () => {\n it('renders the autoplay button', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { autoPlay: true }),\n });\n\n const autoPlayBtn = await page.find('.q2-carousel-autoplay-control');\n expect(autoPlayBtn).not.toBeNull();\n const autoPlayIcon = await page.find('.q2-carousel-autoplay-control q2-icon');\n expect(autoPlayIcon).toEqualAttribute('type', 'pause');\n const carouselWrapper = await page.find('.q2-carousel-swiper-wrapper');\n expect(carouselWrapper).toEqualAttribute('aria-live', 'off');\n\n await autoPlayBtn.click();\n expect(autoPlayIcon).toEqualAttribute('type', 'play');\n expect(carouselWrapper).toEqualAttribute('aria-live', 'polite');\n });\n });\n });\n\n describe('fullWidthPanes', () => {\n describe('when not provided', () => {\n it('adds content-peek-display', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const carouselContainer = await page.find('q2-carousel .q2-carousel-swiper-container');\n\n expect(carouselContainer).toHaveClass('content-peek-display');\n expect(carouselContainer).not.toHaveClass('full-width-display');\n\n const carousel = await page.find('q2-carousel');\n await carousel.setProperty('fullWidthPanes', true);\n await page.waitForChanges();\n\n expect(carouselContainer).not.toHaveClass('content-peek-display');\n expect(carouselContainer).toHaveClass('full-width-display');\n });\n });\n\n describe('when provided', () => {\n it('adds full-width-display class', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { fullWidthPanes: true }),\n });\n\n const carouselContainer = await page.find('q2-carousel .q2-carousel-swiper-container');\n\n expect(carouselContainer).not.toHaveClass('content-peek-display');\n expect(carouselContainer).toHaveClass('full-width-display');\n });\n });\n });\n\n describe('hidePagination', () => {\n describe('when not provided', () => {\n it('renders pagination', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const pagination = await page.find('q2-carousel .q2-carousel-pagination');\n const pageIndicators = await page.findAll('q2-carousel .q2-carousel-page-indicator');\n expect(pagination).toBeTruthy();\n expect(pageIndicators).toHaveLength(3);\n });\n });\n\n describe('when provided', () => {\n it('does not render pagination', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { hidePagination: true }),\n });\n\n const pagination = await page.find('q2-carousel .q2-carousel-pagination');\n expect(pagination).toBeNull();\n });\n });\n });\n\n describe('showNavigationArrows', () => {\n describe('when not provided', () => {\n it('does not render navigation buttons', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const prevBtn = await page.find('.q2-carousel-navigation-button-prev');\n const nextBtn = await page.find('.q2-carousel-navigation-button-next');\n expect(prevBtn).toBeNull();\n expect(nextBtn).toBeNull();\n });\n });\n\n describe('when provided', () => {\n it('renders navigation buttons', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { showNavigation: true }),\n });\n\n const prevBtn = await page.find('.q2-carousel-navigation-button-prev');\n const nextBtn = await page.find('.q2-carousel-navigation-button-next');\n expect(prevBtn).toBeTruthy();\n expect(nextBtn).toBeTruthy();\n });\n });\n });\n\n describe('index', () => {\n describe('when not provided', () => {\n it('starts on the first pane', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const carouselPanes = await page.findAll('q2-carousel q2-carousel-pane');\n\n expect(carouselPanes[0]).toHaveAttribute('is-active-pane');\n expect(carouselPanes[0]).toHaveClass('swiper-slide-active');\n expect(carouselPanes[1]).not.toHaveAttribute('is-active-pane');\n expect(carouselPanes[1]).not.toHaveClass('swiper-slide-active');\n expect(carouselPanes[2]).not.toHaveAttribute('is-active-pane');\n expect(carouselPanes[2]).not.toHaveClass('swiper-slide-active');\n });\n });\n\n describe('when provided', () => {\n it('starts on the specified pane', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { index: 2 }),\n });\n\n const carouselPanes = await page.findAll('q2-carousel q2-carousel-pane');\n\n expect(carouselPanes[0]).not.toHaveAttribute('is-active-pane');\n expect(carouselPanes[0]).not.toHaveClass('swiper-slide-active');\n expect(carouselPanes[1]).toHaveAttribute('is-active-pane');\n expect(carouselPanes[1]).toHaveClass('swiper-slide-active');\n expect(carouselPanes[2]).not.toHaveAttribute('is-active-pane');\n expect(carouselPanes[2]).not.toHaveClass('swiper-slide-active');\n });\n });\n });\n });\n\n describe('Deprecations', () => {\n it('handles deprecated `ariaLabel` prop', async () => {\n const label = 'My Label';\n const page = await setup({\n html: `\n <q2-carousel aria-label=\"${label}\">\n <q2-carousel-pane>\n <h2>Foo</h2>\n </q2-carousel-pane>\n </q2-carousel>\n `,\n });\n await page.waitForChanges();\n await testDeprecatedAriaLabel(await page.find('q2-carousel'), label);\n const container = await page.find('q2-carousel .q2-carousel-swiper-container');\n expect(container).toEqualAttribute('aria-label', label);\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"q2-carousel-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-carousel-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EPage } from '@stencil/core/testing';\nimport { setup, dispatchEvent, testDeprecatedAriaLabel } from '../helpers';\n\ndescribe('q2-carousel', () => {\n const renderCarousel = (\n numberOfPanes: number,\n config?: {\n showNavigation?: boolean;\n hidePagination?: boolean;\n fullWidthPanes?: boolean;\n autoPlay?: boolean;\n index?: number;\n }\n ) => {\n const { showNavigation, hidePagination, fullWidthPanes, autoPlay, index } = {\n ...{\n showNavigation: false,\n hidePagination: false,\n fullWidthPanes: false,\n autoPlay: false,\n },\n ...config,\n };\n return `<q2-carousel\n ${showNavigation ? `show-navigation-arrows` : ''}\n ${hidePagination ? `hide-pagination` : ''}\n ${fullWidthPanes ? `full-width-panes` : ''}\n ${autoPlay ? `auto-play` : ''}\n ${index ? `index=\"${index}\"` : ''}\n >\n ${[...Array(numberOfPanes).keys()].map(\n index => `<q2-carousel-pane>Pane ${index + 1}</q2-carousel-pane>`\n )}\n </q2-carousel>`;\n };\n\n it('renders with default properties', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const carousel = await page.find('q2-carousel');\n const carouselContainer = await page.find('q2-carousel .q2-carousel-swiper-container');\n const carouselPanes = await page.findAll('q2-carousel q2-carousel-pane');\n const firstCarouselPane = carouselPanes[0];\n const navPaginationContainer = await page.find('q2-carousel .q2-carousel-pagination-navigation-wrapper');\n const carouselPagination = await page.find('q2-carousel .q2-carousel-pagination');\n const carouselPaginationButtons = await page.findAll('q2-carousel .q2-carousel-page-indicator');\n const firstPaginationButton = carouselPaginationButtons[0];\n const navigationButtons = await page.findAll('q2-carousel .q2-carousel-navigation-button');\n\n expect(carousel).not.toBeNull();\n expect(carousel.getAttribute('id').includes('q2-carousel-')).toEqual(true);\n expect(carousel.classList.contains('q2-carousel-instance')).toEqual(true);\n expect(carouselContainer.classList.contains('content-peek-display')).toEqual(true);\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n expect(carouselContainer.classList.contains('insufficient-panes')).toEqual(false);\n expect(carouselPagination).not.toBeNull();\n expect(carouselPaginationButtons).toHaveLength(3);\n expect(firstPaginationButton.classList.contains('active-page')).toEqual(true);\n expect(navPaginationContainer.classList.contains('evenly-space')).toEqual(false);\n expect(navigationButtons).toEqual([]);\n expect(await carousel.getProperty('swiper')).not.toBeNull();\n expect(await carousel.getProperty('autoPlay')).toEqual(false);\n expect(await carousel.getProperty('fullWidthPanes')).toEqual(false);\n expect(await carousel.getProperty('hidePagination')).toEqual(false);\n expect(await carousel.getProperty('showNavigationArrows')).toEqual(false);\n });\n\n describe('keyboard', () => {\n const isPaneFocused = async (page: E2EPage, paneIndex: number) =>\n page.evaluate(\n paneIndex => document.activeElement === document.querySelectorAll('q2-carousel-pane')[paneIndex],\n paneIndex\n );\n\n it('can advance the carousel using keys', async () => {\n const page = await setup({\n html: renderCarousel(6),\n });\n\n const carouselPanes = await page.findAll('q2-carousel q2-carousel-pane');\n\n await carouselPanes[0].focus();\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[0]).toHaveClass('swiper-slide-active');\n\n await page.keyboard.press('ArrowRight');\n await page.waitForChanges();\n\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[1]).toHaveClass('swiper-slide-active');\n expect(await isPaneFocused(page, 1)).toEqual(true);\n\n await page.keyboard.press('ArrowRight');\n await page.waitForChanges();\n\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[2]).toHaveClass('swiper-slide-active');\n expect(await isPaneFocused(page, 2)).toEqual(true);\n\n await page.keyboard.press('ArrowLeft');\n await page.waitForChanges();\n\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[1]).toHaveClass('swiper-slide-active');\n expect(await isPaneFocused(page, 1)).toEqual(true);\n\n await page.keyboard.press('End');\n await page.waitForChanges();\n\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[5]).toHaveClass('swiper-slide-active');\n expect(await isPaneFocused(page, 5)).toEqual(true);\n\n await page.keyboard.press('Home');\n await page.waitForChanges();\n\n expect(carouselPanes.filter(pane => !pane.classList.contains('swiper-slide-active'))).toHaveLength(5);\n expect(carouselPanes[0]).toHaveClass('swiper-slide-active');\n expect(await isPaneFocused(page, 0)).toEqual(true);\n });\n });\n\n it('pagination dots and navigation arrows can make the carousel advance or go back in order', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { showNavigation: true }),\n });\n\n const carousel = await page.find('q2-carousel');\n const carouselPanes = await page.findAll('q2-carousel q2-carousel-pane');\n const firstCarouselPane = carouselPanes[0];\n const secondCarouselPane = carouselPanes[1];\n const thirdCarouselPane = carouselPanes[2];\n const navPaginationContainer = await page.find('q2-carousel .q2-carousel-pagination-navigation-wrapper');\n\n expect(await carousel.getProperty('showNavigationArrows')).toEqual(true);\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n expect(secondCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(thirdCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(navPaginationContainer.classList.contains('evenly-space')).toEqual(true);\n\n // go to second pane\n await dispatchEvent(page, '.q2-carousel-page-indicator-1', 'click');\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(secondCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n expect(thirdCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n\n // back to third pane\n await dispatchEvent(page, '.q2-carousel-page-indicator-2', 'click');\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(secondCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(thirdCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n\n // back to second pane\n await dispatchEvent(page, '.q2-carousel-navigation-button-prev', 'click');\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(secondCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n expect(thirdCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n\n // back to third pane\n await dispatchEvent(page, '.q2-carousel-navigation-button-next', 'click');\n expect(firstCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(secondCarouselPane.classList.contains('swiper-slide-active')).toEqual(false);\n expect(thirdCarouselPane.classList.contains('swiper-slide-active')).toEqual(true);\n });\n\n describe('when hide-pagination and show-navigation are provided', () => {\n it('still renders accordingly', async () => {\n const page = await setup({\n html: renderCarousel(3, { hidePagination: true, showNavigation: true }),\n });\n\n const carousel = await page.find('q2-carousel');\n const navPaginationContainer = await page.find('q2-carousel .q2-carousel-pagination-navigation-wrapper');\n const navigationButtons = await page.findAll('q2-carousel .q2-carousel-navigation-button');\n\n expect(await carousel.getProperty('showNavigationArrows')).toEqual(true);\n expect(await carousel.getProperty('showNavigationArrows')).toEqual(true);\n expect(navPaginationContainer).toHaveClass('evenly-space');\n expect(navigationButtons).toHaveLength(2);\n });\n });\n\n it('localizes necessary text', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { showNavigation: true }),\n });\n const carouselContainer = await page.find('q2-carousel .q2-carousel-swiper-container');\n const firstCarouselPane = await page.find('q2-carousel .q2-carousel-pane-0');\n const firstPaginationButton = await page.find(\n 'q2-carousel .q2-carousel-pagination .q2-carousel-page-indicator-0'\n );\n const nextNavBtn = await page.find('.q2-carousel-navigation-button-next');\n\n expect(carouselContainer).toEqualAttribute('aria-label', 'tecton.element.carousel.ariaLabel');\n expect(firstCarouselPane).toEqualAttribute('aria-label', 'tecton.element.carousel.itemDescription');\n expect(firstPaginationButton).toEqualAttribute('aria-label', 'tecton.element.carousel.itemDescription');\n expect(firstPaginationButton).toEqualAttribute('aria-selected', 'true');\n expect(nextNavBtn).toEqualAttribute('label', 'tecton.element.carousel.nextItemLabel');\n\n const prevNavBtn = await page.find('.q2-carousel-navigation-button-prev');\n expect(prevNavBtn).toEqualAttribute('label', 'tecton.element.carousel.previousItemLabel');\n });\n\n it('displays dynamic pagination indicators if more than five q2-carousel-panes present', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(6),\n });\n\n const carouselPagination = await page.find('.q2-carousel-pagination');\n const carouselPaginationButtons = await page.findAll('q2-carousel .q2-carousel-page-indicator');\n const carouselPaginationNonVisibleButtons = await page.findAll(\n '.q2-carousel-page-indicator:not(.active-page):not(.active-adjacent):not(.active-adjacent-adjacent)'\n );\n expect(carouselPagination.classList.contains('dynamic')).toEqual(true);\n expect(carouselPaginationButtons).toHaveLength(6);\n expect(carouselPaginationNonVisibleButtons).toHaveLength(3);\n });\n\n it('puts itself in compact mode if dimensions are right for it', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const carouselContainer = await page.find('.q2-carousel-swiper-container');\n\n expect(await carouselContainer.classList.contains('compact')).toEqual(false);\n\n await page.setViewport({ width: 500, height: 800 });\n await page.waitForChanges();\n\n expect(await carouselContainer.classList.contains('compact')).toEqual(true);\n });\n\n it('hides pagination/navigation if only one content pane is provided in content peek mode', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(1),\n });\n\n const navPaginationContainer = await page.find('q2-carousel .q2-carousel-pagination-navigation-wrapper');\n expect(navPaginationContainer).toBeNull();\n });\n\n it('hides pagination/navigation if only one content pane is provided in full-width mode', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(1, { fullWidthPanes: true }),\n });\n\n const navPaginationContainer = await page.find('q2-carousel .q2-carousel-pagination-navigation-wrapper');\n expect(navPaginationContainer).toBeNull();\n });\n\n describe('when only one pane is provided', () => {\n it('does not render pagination', async () => {\n const page = await setup({\n html: renderCarousel(1),\n });\n\n const pagination = await page.find('q2-carousel .q2-carousel-pagination');\n expect(pagination).toBeNull();\n });\n });\n\n describe('when no panes are provided', () => {\n it('informs the user that more panes are needed', async () => {\n const page = await setup({\n html: renderCarousel(0),\n });\n\n const userMessage = await page.find('.insufficient-pane-feedback');\n const userMessageHeader = await page.find('.insufficient-pane-feedback .insufficient-panes-header');\n const userMessageBody = await page.find('.insufficient-pane-feedback .insufficient-panes-body');\n\n expect(userMessage).not.toBeNull();\n expect(await userMessageHeader.innerText).toEqual('tecton.element.carousel.insufficientPanesMessageHeader');\n expect(await userMessageBody.innerText).toEqual('tecton.element.carousel.insufficientPanesMessageBody');\n });\n });\n\n describe('when mutation observer is triggered', () => {\n it('it re-organizes the carousel panes and updates state', async () => {\n const page = await setup({\n html: renderCarousel(3),\n });\n let carouselPanes = await page.findAll('q2-carousel-pane');\n let pageIndicators = await page.findAll('q2-carousel .q2-carousel-page-indicator');\n\n expect(carouselPanes).toHaveLength(3);\n expect(pageIndicators).toHaveLength(3);\n\n await page.$eval('q2-carousel', (el: HTMLElement) => {\n const newPane = document.createElement(`q2-carousel-pane`);\n newPane.setAttribute('label', 'New Pane');\n el.appendChild(newPane);\n });\n await page.waitForChanges();\n\n carouselPanes = await page.findAll('q2-carousel-pane');\n pageIndicators = await page.findAll('q2-carousel .q2-carousel-page-indicator');\n\n expect(carouselPanes).toHaveLength(4);\n expect(pageIndicators).toHaveLength(4);\n });\n });\n\n describe('focus transferring', () => {\n const html = `<q2-carousel>\n <q2-carousel-pane>\n <h2>Hello</h2>\n <p>World</p>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Foo</h2>\n <p>Bar</p>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Fizz</h2>\n <p>Buzz</p>\n <button>Action</button>\n </q2-carousel-pane>\n </q2-carousel>`;\n it('focuses selected pane when focus event dispatched ', async function (): Promise<void> {\n const page = await setup({ html });\n await dispatchEvent(page, ['q2-carousel'], 'focus');\n const innerActiveTestId = async (page: E2EPage) => {\n return page.$eval('q2-carousel', el => {\n return el.querySelector('q2-carousel-pane').isActivePane;\n });\n };\n expect(await innerActiveTestId(page)).toEqual(true);\n });\n\n it('focuses selected pane when focus method called ', async function (): Promise<void> {\n const page = await setup({ html });\n const carousel = await page.find('q2-carousel');\n await carousel.triggerEvent('focus');\n await page.waitForChanges();\n const innerActiveTestId = async (page: E2EPage) => {\n return page.$eval('q2-carousel', el => {\n return el.querySelector('q2-carousel-pane').isActivePane;\n });\n };\n expect(await innerActiveTestId(page)).toEqual(true);\n });\n });\n\n it.skip('manages focus from pagination to carousel panes', async function (): Promise<void> {\n const page = await setup({\n html: `\n <q2-carousel>\n <q2-carousel-pane>\n <h2>Hello</h2>\n <p>World</p>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Foo</h2>\n <p>Bar</p>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Fizz</h2>\n <p>Buzz</p>\n <button>Action</button>\n </q2-carousel-pane>\n </q2-carousel>\n `,\n });\n\n let activeElementClasses;\n\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('q2-carousel-page-indicator-0')).toEqual(true);\n\n await page.keyboard.down('Shift');\n await page.keyboard.press('Tab');\n await page.keyboard.up('Shift');\n await page.waitForChanges();\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('q2-carousel-pane-0')).toEqual(true);\n\n await page.keyboard.down('Shift');\n await page.keyboard.press('Tab');\n await page.keyboard.up('Shift');\n await page.waitForChanges();\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.length).toEqual(0); // shift+tab from a pane should land focus outside of the carousel element\n });\n\n it.skip('manages focus from panes to inner focusable content', async function (): Promise<void> {\n const page = await setup({\n html: `\n <q2-carousel>\n <q2-carousel-pane>\n <h2>Hello</h2>\n <p>World</p>\n <q2-btn color=\"primary\" class=\"button 1\">Nested Focusable Content</q2-btn>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Foo</h2>\n <p>Bar</p>\n <q2-btn color=\"primary\" class=\"button 2\">Nested Focusable Content</q2-btn>\n </q2-carousel-pane>\n <q2-carousel-pane>\n <h2>Fizz</h2>\n <p>Buzz</p>\n <button>Action</button>\n </q2-carousel-pane>\n </q2-carousel>\n `,\n });\n\n let activeElementClasses;\n\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('button 1')).toEqual(true);\n\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('page-indicator-0')).toEqual(true);\n\n await dispatchEvent(page, '.q2-carousel-page-indicator-1', 'click');\n await page.waitForChanges();\n await page.waitForEvent('transitionend');\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('q2-carousel-pane-1')).toEqual(true);\n\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('button 2')).toEqual(true);\n\n await page.keyboard.down('Shift');\n await page.keyboard.press('Tab');\n await page.keyboard.up('Shift');\n await page.waitForChanges();\n\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.includes('q2-carousel-pane-1')).toEqual(true);\n\n await page.keyboard.down('Shift');\n await page.keyboard.press('Tab');\n await page.keyboard.up('Shift');\n await page.waitForChanges();\n\n activeElementClasses = await page.$eval('q2-carousel', () => {\n return document.activeElement.className;\n });\n expect(activeElementClasses.length).toEqual(0); // shift+tab from a pane should land focus outside of the carousel element\n });\n\n describe('@Props', () => {\n describe('autoPlay', () => {\n describe('when not provided', () => {\n it('does not render autoplay button', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const autoPlayBtn = await page.find('.q2-carousel-autoplay-control');\n expect(autoPlayBtn).toBeNull();\n\n const carouselWrapper = await page.find('.q2-carousel-swiper-wrapper');\n expect(carouselWrapper).toEqualAttribute('aria-live', 'polite');\n });\n });\n\n describe('when provided', () => {\n it('renders the autoplay button', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { autoPlay: true }),\n });\n\n const autoPlayBtn = await page.find('.q2-carousel-autoplay-control');\n expect(autoPlayBtn).not.toBeNull();\n const autoPlayIcon = await page.find('.q2-carousel-autoplay-control q2-icon');\n expect(autoPlayIcon).toEqualAttribute('type', 'pause');\n\n await autoPlayBtn.click();\n expect(autoPlayIcon).toEqualAttribute('type', 'play');\n });\n\n it('sets aria-live value to off when auto-playing and not focused', async () => {\n const isFocused = async (page: E2EPage, selector: string) =>\n page.evaluate(selector => {\n const element = document.querySelector(selector);\n return element === document.activeElement;\n }, selector);\n\n const page = await setup({\n html: `${renderCarousel(3, { autoPlay: true })} <q2-input></q2-input>`,\n });\n const autoPlayBtn = await page.find('.q2-carousel-autoplay-control');\n const inputField = await page.find('q2-input');\n const carouselWrapper = await page.find('.q2-carousel-swiper-wrapper');\n\n expect(autoPlayBtn).not.toBeNull();\n expect(inputField).not.toBeNull();\n\n await inputField.click();\n await new Promise(r => setTimeout(r, 10000));\n await page.waitForChanges();\n const inputFocused = await isFocused(page, 'q2-input');\n\n expect(inputFocused).toBeTruthy();\n expect(carouselWrapper).toEqualAttribute('aria-live', 'off');\n });\n });\n });\n\n describe('fullWidthPanes', () => {\n describe('when not provided', () => {\n it('adds content-peek-display', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const carouselContainer = await page.find('q2-carousel .q2-carousel-swiper-container');\n\n expect(carouselContainer).toHaveClass('content-peek-display');\n expect(carouselContainer).not.toHaveClass('full-width-display');\n\n const carousel = await page.find('q2-carousel');\n await carousel.setProperty('fullWidthPanes', true);\n await page.waitForChanges();\n\n expect(carouselContainer).not.toHaveClass('content-peek-display');\n expect(carouselContainer).toHaveClass('full-width-display');\n });\n });\n\n describe('when provided', () => {\n it('adds full-width-display class', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { fullWidthPanes: true }),\n });\n\n const carouselContainer = await page.find('q2-carousel .q2-carousel-swiper-container');\n\n expect(carouselContainer).not.toHaveClass('content-peek-display');\n expect(carouselContainer).toHaveClass('full-width-display');\n });\n });\n });\n\n describe('hidePagination', () => {\n describe('when not provided', () => {\n it('renders pagination', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const pagination = await page.find('q2-carousel .q2-carousel-pagination');\n const pageIndicators = await page.findAll('q2-carousel .q2-carousel-page-indicator');\n expect(pagination).toBeTruthy();\n expect(pageIndicators).toHaveLength(3);\n });\n });\n\n describe('when provided', () => {\n it('does not render pagination', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { hidePagination: true }),\n });\n\n const pagination = await page.find('q2-carousel .q2-carousel-pagination');\n expect(pagination).toBeNull();\n });\n });\n });\n\n describe('showNavigationArrows', () => {\n describe('when not provided', () => {\n it('does not render navigation buttons', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const prevBtn = await page.find('.q2-carousel-navigation-button-prev');\n const nextBtn = await page.find('.q2-carousel-navigation-button-next');\n expect(prevBtn).toBeNull();\n expect(nextBtn).toBeNull();\n });\n });\n\n describe('when provided', () => {\n it('renders navigation buttons', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { showNavigation: true }),\n });\n\n const prevBtn = await page.find('.q2-carousel-navigation-button-prev');\n const nextBtn = await page.find('.q2-carousel-navigation-button-next');\n expect(prevBtn).toBeTruthy();\n expect(nextBtn).toBeTruthy();\n });\n });\n });\n\n describe('index', () => {\n describe('when not provided', () => {\n it('starts on the first pane', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3),\n });\n\n const carouselPanes = await page.findAll('q2-carousel q2-carousel-pane');\n\n expect(carouselPanes[0]).toHaveAttribute('is-active-pane');\n expect(carouselPanes[0]).toHaveClass('swiper-slide-active');\n expect(carouselPanes[1]).not.toHaveAttribute('is-active-pane');\n expect(carouselPanes[1]).not.toHaveClass('swiper-slide-active');\n expect(carouselPanes[2]).not.toHaveAttribute('is-active-pane');\n expect(carouselPanes[2]).not.toHaveClass('swiper-slide-active');\n });\n });\n\n describe('when provided', () => {\n it('starts on the specified pane', async function (): Promise<void> {\n const page = await setup({\n html: renderCarousel(3, { index: 2 }),\n });\n\n const carouselPanes = await page.findAll('q2-carousel q2-carousel-pane');\n\n expect(carouselPanes[0]).not.toHaveAttribute('is-active-pane');\n expect(carouselPanes[0]).not.toHaveClass('swiper-slide-active');\n expect(carouselPanes[1]).toHaveAttribute('is-active-pane');\n expect(carouselPanes[1]).toHaveClass('swiper-slide-active');\n expect(carouselPanes[2]).not.toHaveAttribute('is-active-pane');\n expect(carouselPanes[2]).not.toHaveClass('swiper-slide-active');\n });\n });\n });\n });\n\n describe('Deprecations', () => {\n it('handles deprecated `ariaLabel` prop', async () => {\n const label = 'My Label';\n const page = await setup({\n html: `\n <q2-carousel aria-label=\"${label}\">\n <q2-carousel-pane>\n <h2>Foo</h2>\n </q2-carousel-pane>\n </q2-carousel>\n `,\n });\n await page.waitForChanges();\n await testDeprecatedAriaLabel(await page.find('q2-carousel'), label);\n const container = await page.find('q2-carousel .q2-carousel-swiper-container');\n expect(container).toEqualAttribute('aria-label', label);\n });\n });\n});\n"]}
|
|
@@ -17,16 +17,10 @@ describe('q2-chart-donut', () => {
|
|
|
17
17
|
const clearSelection = async (page) => {
|
|
18
18
|
return page.$eval('q2-chart-donut', (element) => element.clearSelection());
|
|
19
19
|
};
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
await setTestStrings(page, {
|
|
23
|
-
'tecton.element.chartDonut.button.summaryName': 'Total',
|
|
24
|
-
'tecton.element.chartDonut.button.description': 'Use the left and right arrow keys to navigate between slices of the chart. The escape key will reset the chart to its original state.',
|
|
25
|
-
'tecton.element.chartDonut.button.roleDescription': 'Chart button',
|
|
26
|
-
});
|
|
27
|
-
await page.setContent('<q2-chart-donut></q2-chart-donut>');
|
|
20
|
+
const setupChart = async (page, props = '') => {
|
|
21
|
+
await page.setContent(`<q2-chart-donut ${props}></q2-chart-donut>`);
|
|
28
22
|
chart = await page.find('q2-chart-donut');
|
|
29
|
-
chart.setProperty('data', [
|
|
23
|
+
await chart.setProperty('data', [
|
|
30
24
|
{ value: 1048, name: 'Groceries', id: 'groceries', icon: 'cart' },
|
|
31
25
|
{ value: 735, name: 'Pets', id: 'pets', icon: 'paw' },
|
|
32
26
|
{ value: 580, name: 'Rent', id: 'rent', icon: 'home', color: 'var(--const-stoplight-info)' },
|
|
@@ -34,12 +28,22 @@ describe('q2-chart-donut', () => {
|
|
|
34
28
|
{ value: 300, name: 'Gifts', id: 'gifts', icon: 'gift', color: 'rebeccapurple' },
|
|
35
29
|
]);
|
|
36
30
|
await page.waitForChanges();
|
|
31
|
+
};
|
|
32
|
+
beforeEach(async () => {
|
|
33
|
+
page = await setup({ html: '' });
|
|
34
|
+
await setTestStrings(page, {
|
|
35
|
+
'tecton.element.chartDonut.button.summaryName': 'Total',
|
|
36
|
+
'tecton.element.chartDonut.button.description': 'Use the left and right arrow keys to navigate between slices of the chart. The escape key will reset the chart to its original state.',
|
|
37
|
+
'tecton.element.chartDonut.button.roleDescription': 'Chart button',
|
|
38
|
+
});
|
|
37
39
|
});
|
|
38
40
|
it('renders a canvas element', async () => {
|
|
41
|
+
await setupChart(page);
|
|
39
42
|
const canvas = await page.find('q2-chart-donut >>> canvas');
|
|
40
43
|
expect(canvas).toBeTruthy();
|
|
41
44
|
});
|
|
42
45
|
it('adds color properties to q2-icon', async () => {
|
|
46
|
+
await setupChart(page);
|
|
43
47
|
const getIconStyleProp = async (page, prop) => page.$eval('q2-chart-donut', (element, [prop]) => {
|
|
44
48
|
return element.shadowRoot.querySelector('q2-icon').style.getPropertyValue(prop);
|
|
45
49
|
}, [prop]);
|
|
@@ -53,12 +57,14 @@ describe('q2-chart-donut', () => {
|
|
|
53
57
|
describe('summaryName', () => {
|
|
54
58
|
describe('when not provided', () => {
|
|
55
59
|
it('renders with default value', async () => {
|
|
60
|
+
await setupChart(page);
|
|
56
61
|
name = await page.find('q2-chart-donut >>> .name');
|
|
57
62
|
expect(name).toEqualText('Total');
|
|
58
63
|
});
|
|
59
64
|
});
|
|
60
65
|
describe('when provided', () => {
|
|
61
66
|
it('renders with provided value', async () => {
|
|
67
|
+
await setupChart(page);
|
|
62
68
|
chart.setProperty('summaryName', 'All The Things');
|
|
63
69
|
await page.waitForChanges();
|
|
64
70
|
name = await page.find('q2-chart-donut >>> .name');
|
|
@@ -69,12 +75,14 @@ describe('q2-chart-donut', () => {
|
|
|
69
75
|
describe('summaryIcon', () => {
|
|
70
76
|
describe('when not provided', () => {
|
|
71
77
|
it('does not render', async () => {
|
|
78
|
+
await setupChart(page);
|
|
72
79
|
icon = await page.find('q2-chart-donut >>> .icon');
|
|
73
80
|
expect(icon).toBeNull();
|
|
74
81
|
});
|
|
75
82
|
});
|
|
76
83
|
describe('when provided', () => {
|
|
77
84
|
it('renders with provided value', async () => {
|
|
85
|
+
await setupChart(page);
|
|
78
86
|
chart.setProperty('summaryIcon', 'coins');
|
|
79
87
|
await page.waitForChanges();
|
|
80
88
|
icon = await page.find('q2-chart-donut >>> q2-icon');
|
|
@@ -85,12 +93,14 @@ describe('q2-chart-donut', () => {
|
|
|
85
93
|
describe('format', () => {
|
|
86
94
|
describe('when not provided', () => {
|
|
87
95
|
it('renders default format', async () => {
|
|
96
|
+
await setupChart(page);
|
|
88
97
|
value = await page.find('q2-chart-donut >>> .value');
|
|
89
98
|
expect(value).toEqualText('3,147');
|
|
90
99
|
});
|
|
91
100
|
});
|
|
92
101
|
describe('when provided', () => {
|
|
93
102
|
it('renders as currency', async () => {
|
|
103
|
+
await setupChart(page);
|
|
94
104
|
chart.setProperty('format', 'currency');
|
|
95
105
|
await page.waitForChanges();
|
|
96
106
|
value = await page.find('q2-chart-donut >>> .value');
|
|
@@ -101,6 +111,7 @@ describe('q2-chart-donut', () => {
|
|
|
101
111
|
describe('isClickable', () => {
|
|
102
112
|
describe('when not provided', () => {
|
|
103
113
|
it('renders center content in a div', async () => {
|
|
114
|
+
await setupChart(page);
|
|
104
115
|
centerCard = await page.find('q2-chart-donut >>> .center-card');
|
|
105
116
|
expect(centerCard.tagName).toEqualText('DIV');
|
|
106
117
|
expect(centerCard).not.toHaveAttribute('aria-description');
|
|
@@ -109,6 +120,7 @@ describe('q2-chart-donut', () => {
|
|
|
109
120
|
});
|
|
110
121
|
describe('when provided', () => {
|
|
111
122
|
it('renders center content in a button', async () => {
|
|
123
|
+
await setupChart(page);
|
|
112
124
|
chart.setProperty('isClickable', true);
|
|
113
125
|
await page.waitForChanges();
|
|
114
126
|
centerCard = await page.find('q2-chart-donut >>> .center-card');
|
|
@@ -118,11 +130,46 @@ describe('q2-chart-donut', () => {
|
|
|
118
130
|
});
|
|
119
131
|
});
|
|
120
132
|
});
|
|
133
|
+
describe('minSliceSize', () => {
|
|
134
|
+
const convertSliceSizeToAngle = (sliceSize) => {
|
|
135
|
+
return (parseFloat(sliceSize) / 100) * 360;
|
|
136
|
+
};
|
|
137
|
+
const getMinAngel = async (page) => {
|
|
138
|
+
return page.evaluate(async () => {
|
|
139
|
+
const chartElement = document.querySelector('q2-chart-donut');
|
|
140
|
+
const chartInstance = await chartElement.getChartOptions();
|
|
141
|
+
return chartInstance.series[0].minAngle;
|
|
142
|
+
});
|
|
143
|
+
};
|
|
144
|
+
const sliceSize = '9.5%';
|
|
145
|
+
describe('when not provided', () => {
|
|
146
|
+
it('renders with default value', async () => {
|
|
147
|
+
await setupChart(page);
|
|
148
|
+
const minAngle = await getMinAngel(page);
|
|
149
|
+
expect(minAngle).toEqual(convertSliceSizeToAngle('2.5%'));
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
describe('when provided', () => {
|
|
153
|
+
it('on load renders with provided value', async () => {
|
|
154
|
+
await setupChart(page, `min-slice-size="${sliceSize}"`);
|
|
155
|
+
const minAngle = await getMinAngel(page);
|
|
156
|
+
expect(minAngle).toEqual(convertSliceSizeToAngle(sliceSize));
|
|
157
|
+
});
|
|
158
|
+
it('after load renders with provided value', async () => {
|
|
159
|
+
await setupChart(page);
|
|
160
|
+
chart.setProperty('minSliceSize', sliceSize);
|
|
161
|
+
await page.waitForChanges();
|
|
162
|
+
const minAngle = await getMinAngel(page);
|
|
163
|
+
expect(minAngle).toEqual(convertSliceSizeToAngle(sliceSize));
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
});
|
|
121
167
|
});
|
|
122
168
|
describe('Watchers', () => {
|
|
123
169
|
describe('innerRadius', () => {
|
|
124
170
|
describe('when changed to a value greater than outerRadius', () => {
|
|
125
171
|
it('reverts the value to be 15% less than the outerRadius', async () => {
|
|
172
|
+
await setupChart(page);
|
|
126
173
|
expect(await chart.getProperty('innerRadius')).toEqual('70%');
|
|
127
174
|
expect(await chart.getProperty('outerRadius')).toEqual('85%');
|
|
128
175
|
chart.setProperty('innerRadius', '90%');
|
|
@@ -134,6 +181,7 @@ describe('q2-chart-donut', () => {
|
|
|
134
181
|
describe('outerRadius', () => {
|
|
135
182
|
describe('when changed to a value less than innerRadius', () => {
|
|
136
183
|
it('reverts the value to be 15% more than the innerRadius', async () => {
|
|
184
|
+
await setupChart(page);
|
|
137
185
|
expect(await chart.getProperty('innerRadius')).toEqual('70%');
|
|
138
186
|
expect(await chart.getProperty('outerRadius')).toEqual('85%');
|
|
139
187
|
chart.setProperty('outerRadius', '65%');
|
|
@@ -145,6 +193,7 @@ describe('q2-chart-donut', () => {
|
|
|
145
193
|
});
|
|
146
194
|
describe('Methods', () => {
|
|
147
195
|
beforeEach(async () => {
|
|
196
|
+
await setupChart(page);
|
|
148
197
|
centerCard = await page.find('q2-chart-donut >>> .center-card');
|
|
149
198
|
changeSpy = await chart.spyOnEvent('change');
|
|
150
199
|
});
|
|
@@ -231,6 +280,7 @@ describe('q2-chart-donut', () => {
|
|
|
231
280
|
});
|
|
232
281
|
describe('when element is clickable', () => {
|
|
233
282
|
beforeEach(async () => {
|
|
283
|
+
await setupChart(page);
|
|
234
284
|
chart.setProperty('isClickable', true);
|
|
235
285
|
await page.waitForChanges();
|
|
236
286
|
centerCard = await page.find('q2-chart-donut >>> .center-card');
|
|
@@ -293,6 +343,7 @@ describe('q2-chart-donut', () => {
|
|
|
293
343
|
});
|
|
294
344
|
describe('Accessibility', () => {
|
|
295
345
|
it('renders a descriptive aria-label for the chart', async () => {
|
|
346
|
+
await setupChart(page);
|
|
296
347
|
chart.setProperty('chartName', 'Recent Spending');
|
|
297
348
|
await page.waitForChanges();
|
|
298
349
|
const chartContainer = await page.find('q2-chart-donut >>> .chart-container');
|
|
@@ -301,6 +352,7 @@ describe('q2-chart-donut', () => {
|
|
|
301
352
|
expect(ariaLabelText).toContain('This is a chart with type Pie chart named Recent Spending.The data is as follows: the data for Groceries is 1048, the data for Pets is 735, the data for Rent is 580, the data for Automobile is 484, the data for Gifts is 300.');
|
|
302
353
|
});
|
|
303
354
|
it('renders a descriptive aria-describedby element for the chart', async () => {
|
|
355
|
+
await setupChart(page);
|
|
304
356
|
chart.setProperty('chartName', 'Recent Spending');
|
|
305
357
|
chart.setProperty('isClickable', true);
|
|
306
358
|
await page.waitForChanges();
|
|
@@ -310,17 +362,20 @@ describe('q2-chart-donut', () => {
|
|
|
310
362
|
});
|
|
311
363
|
describe('focus', () => {
|
|
312
364
|
it('does not focus anything when focus event is dispatched', async function () {
|
|
365
|
+
await setupChart(page);
|
|
313
366
|
chart.triggerEvent('focus');
|
|
314
367
|
await page.waitForChanges();
|
|
315
368
|
expect(await getFocusedAttribute(page, 'test-id')).toBeNull();
|
|
316
369
|
});
|
|
317
370
|
it('does not focus anything when element.focus() is called', async function () {
|
|
371
|
+
await setupChart(page);
|
|
318
372
|
await chart.focus();
|
|
319
373
|
await page.waitForChanges();
|
|
320
374
|
expect(await getFocusedAttribute(page, 'test-id')).toBeNull();
|
|
321
375
|
});
|
|
322
376
|
describe('when element is clickable', () => {
|
|
323
377
|
beforeEach(async () => {
|
|
378
|
+
await setupChart(page);
|
|
324
379
|
chart.setProperty('isClickable', true);
|
|
325
380
|
await page.waitForChanges();
|
|
326
381
|
});
|