q2-tecton-elements 1.45.3 → 1.46.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/click-elsewhere_2.cjs.entry.js +3 -9
- package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
- package/dist/cjs/{index-0430339e.js → index-59fb7c74.js} +1 -1
- package/dist/cjs/{index-0430339e.js.map → index-59fb7c74.js.map} +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-btn_2.cjs.entry.js +2 -1
- package/dist/cjs/q2-btn_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-calendar.cjs.entry.js +3 -3
- package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-carousel-pane.cjs.entry.js +36 -6
- package/dist/cjs/q2-carousel-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-carousel.cjs.entry.js +34 -3
- package/dist/cjs/q2-carousel.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-donut.cjs.entry.js +69 -3
- package/dist/cjs/q2-chart-donut.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-checkbox-group.cjs.entry.js +3 -2
- package/dist/cjs/q2-checkbox-group.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-checkbox.cjs.entry.js +3 -2
- package/dist/cjs/q2-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-currency.cjs.entry.js +2 -2
- package/dist/cjs/q2-currency.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-data-table.cjs.entry.js +1 -1
- package/dist/cjs/q2-detail.cjs.entry.js +1 -1
- package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
- package/dist/cjs/q2-dropdown-item.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-input.cjs.entry.js +17 -10
- package/dist/cjs/q2-input.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-item.cjs.entry.js +13 -15
- package/dist/cjs/q2-item.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-legend.cjs.entry.js +118 -0
- package/dist/cjs/q2-legend.cjs.entry.js.map +1 -0
- package/dist/cjs/q2-list.cjs.entry.js +8 -8
- package/dist/cjs/q2-list.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-optgroup.cjs.entry.js +59 -0
- package/dist/cjs/q2-optgroup.cjs.entry.js.map +1 -0
- package/dist/cjs/{q2-optgroup_2.cjs.entry.js → q2-option.cjs.entry.js} +2 -53
- package/dist/cjs/q2-option.cjs.entry.js.map +1 -0
- package/dist/cjs/q2-pagination.cjs.entry.js +22 -3
- package/dist/cjs/q2-pagination.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-pill.cjs.entry.js +2 -2
- package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-relative-time.cjs.entry.js +2 -2
- package/dist/cjs/q2-section.cjs.entry.js +2 -2
- package/dist/cjs/q2-select.cjs.entry.js +4 -5
- 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 +6 -6
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
- package/dist/cjs/q2-stepper.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tab-container.cjs.entry.js +2 -2
- package/dist/cjs/q2-tab-container.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tab-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-tag.cjs.entry.js +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/tecton-tab-pane.cjs.entry.js +2 -2
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/click-elsewhere/click-elsewhere.js +2 -8
- package/dist/collection/components/click-elsewhere/click-elsewhere.js.map +1 -1
- package/dist/collection/components/q2-btn/q2-btn.js +29 -5
- package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar.css +3 -0
- package/dist/collection/components/q2-calendar/q2-calendar.js +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
- package/dist/collection/components/q2-carousel/q2-carousel.js +34 -3
- package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +36 -6
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js.map +1 -1
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.css +9 -0
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +91 -3
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
- package/dist/collection/components/q2-checkbox/q2-checkbox.js +20 -2
- package/dist/collection/components/q2-checkbox/q2-checkbox.js.map +1 -1
- package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js +3 -2
- package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js.map +1 -1
- package/dist/collection/components/q2-currency/q2-currency.css +4 -0
- package/dist/collection/components/q2-currency/q2-currency.js +1 -1
- package/dist/collection/components/q2-data-table/q2-data-table.js +7 -7
- package/dist/collection/components/q2-detail/q2-detail.js +1 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.js +1 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
- package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js +1 -1
- package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
- package/dist/collection/components/q2-icon/q2-icon.js +1 -1
- package/dist/collection/components/q2-icon/q2-icon.js.map +1 -1
- package/dist/collection/components/q2-input/q2-input.js +43 -15
- package/dist/collection/components/q2-input/q2-input.js.map +1 -1
- package/dist/collection/components/q2-item/q2-item.css +11 -11
- package/dist/collection/components/q2-item/q2-item.js +23 -16
- package/dist/collection/components/q2-item/q2-item.js.map +1 -1
- package/dist/collection/components/q2-legend/q2-legend.css +126 -0
- package/dist/collection/components/q2-legend/q2-legend.js +271 -0
- package/dist/collection/components/q2-legend/q2-legend.js.map +1 -0
- package/dist/collection/components/q2-list/q2-list.css +8 -5
- package/dist/collection/components/q2-list/q2-list.js +7 -7
- package/dist/collection/components/q2-list/q2-list.js.map +1 -1
- package/dist/collection/components/q2-loc/q2-loc.js +1 -1
- package/dist/collection/components/q2-message/q2-message.js +1 -1
- package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
- package/dist/collection/components/q2-option/q2-option.js +1 -1
- package/dist/collection/components/q2-option-list/q2-option-list.js +2 -2
- package/dist/collection/components/q2-pagination/q2-pagination.css +17 -2
- package/dist/collection/components/q2-pagination/q2-pagination.js +53 -2
- package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
- package/dist/collection/components/q2-pill/q2-pill.js +2 -2
- package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
- package/dist/collection/components/q2-popover/q2-popover.js +1 -1
- package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
- package/dist/collection/components/q2-section/q2-section.js +2 -2
- package/dist/collection/components/q2-select/q2-select.js +21 -5
- package/dist/collection/components/q2-select/q2-select.js.map +1 -1
- package/dist/collection/components/q2-stepper/q2-stepper.js +2 -2
- package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
- package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +4 -4
- package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js.map +1 -1
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +6 -6
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js.map +1 -1
- package/dist/collection/components/q2-tab-container/q2-tab-container.js +2 -2
- package/dist/collection/components/q2-tab-container/q2-tab-container.js.map +1 -1
- package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
- package/dist/collection/components/q2-tag/q2-tag.js +1 -1
- package/dist/collection/components/q2-textarea/q2-textarea.css +2 -2
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
- package/dist/components/click-elsewhere2.js +2 -8
- package/dist/components/click-elsewhere2.js.map +1 -1
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/index2.js +1 -1
- package/dist/components/q2-btn2.js +4 -2
- package/dist/components/q2-btn2.js.map +1 -1
- package/dist/components/q2-calendar.js +2 -2
- package/dist/components/q2-calendar.js.map +1 -1
- package/dist/components/q2-carousel-pane.js +36 -6
- package/dist/components/q2-carousel-pane.js.map +1 -1
- package/dist/components/q2-carousel.js +34 -3
- package/dist/components/q2-carousel.js.map +1 -1
- package/dist/components/q2-chart-donut.js +81 -7
- package/dist/components/q2-chart-donut.js.map +1 -1
- package/dist/components/q2-checkbox-group.js +3 -2
- package/dist/components/q2-checkbox-group.js.map +1 -1
- package/dist/components/q2-checkbox2.js +4 -2
- package/dist/components/q2-checkbox2.js.map +1 -1
- package/dist/components/q2-currency.js +2 -2
- package/dist/components/q2-currency.js.map +1 -1
- package/dist/components/q2-data-table.js +1 -1
- package/dist/components/q2-detail.js +1 -1
- package/dist/components/q2-dropdown-item2.js +1 -1
- package/dist/components/q2-dropdown-item2.js.map +1 -1
- package/dist/components/q2-dropdown.js +1 -1
- package/dist/components/q2-dropdown.js.map +1 -1
- package/dist/components/q2-icon2.js +1 -1
- package/dist/components/q2-icon2.js.map +1 -1
- package/dist/components/q2-input2.js +20 -12
- package/dist/components/q2-input2.js.map +1 -1
- package/dist/components/q2-item.js +16 -18
- package/dist/components/q2-item.js.map +1 -1
- package/dist/components/q2-legend.d.ts +11 -0
- package/dist/components/q2-legend.js +8 -0
- package/dist/components/q2-legend.js.map +1 -0
- package/dist/components/q2-legend2.js +145 -0
- package/dist/components/q2-legend2.js.map +1 -0
- package/dist/components/q2-list.js +8 -8
- package/dist/components/q2-list.js.map +1 -1
- package/dist/components/q2-loc.js +1 -1
- package/dist/components/q2-message2.js +2 -2
- package/dist/components/q2-optgroup2.js +1 -1
- package/dist/components/q2-option-list2.js +1 -1
- package/dist/components/q2-option2.js +1 -1
- package/dist/components/q2-pagination.js +64 -13
- package/dist/components/q2-pagination.js.map +1 -1
- package/dist/components/q2-pill.js +2 -2
- package/dist/components/q2-pill.js.map +1 -1
- package/dist/components/q2-popover2.js +2 -2
- package/dist/components/q2-relative-time.js +1 -1
- package/dist/components/q2-section.js +2 -2
- package/dist/components/q2-select.js +1 -711
- package/dist/components/q2-select.js.map +1 -1
- package/dist/components/q2-select2.js +715 -0
- package/dist/components/q2-select2.js.map +1 -0
- package/dist/components/q2-stepper-pane.js +2 -2
- package/dist/components/q2-stepper-pane.js.map +1 -1
- package/dist/components/q2-stepper-vertical.js +6 -6
- package/dist/components/q2-stepper-vertical.js.map +1 -1
- package/dist/components/q2-stepper.js +2 -2
- package/dist/components/q2-stepper.js.map +1 -1
- package/dist/components/q2-tab-container.js +2 -2
- package/dist/components/q2-tab-container.js.map +1 -1
- package/dist/components/q2-tab-pane.js +1 -1
- package/dist/components/q2-tag.js +1 -1
- package/dist/components/q2-textarea.js +1 -1
- package/dist/components/q2-textarea.js.map +1 -1
- package/dist/components/tecton-tab-pane.js +2 -2
- package/dist/esm/click-elsewhere_2.entry.js +3 -9
- package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
- package/dist/esm/{index-e940b40e.js → index-c99c4cc6.js} +1 -1
- package/dist/esm/{index-e940b40e.js.map → index-c99c4cc6.js.map} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-btn_2.entry.js +2 -1
- package/dist/esm/q2-btn_2.entry.js.map +1 -1
- package/dist/esm/q2-calendar.entry.js +3 -3
- package/dist/esm/q2-calendar.entry.js.map +1 -1
- package/dist/esm/q2-carousel-pane.entry.js +36 -6
- package/dist/esm/q2-carousel-pane.entry.js.map +1 -1
- package/dist/esm/q2-carousel.entry.js +34 -3
- package/dist/esm/q2-carousel.entry.js.map +1 -1
- package/dist/esm/q2-chart-donut.entry.js +69 -3
- package/dist/esm/q2-chart-donut.entry.js.map +1 -1
- package/dist/esm/q2-checkbox-group.entry.js +3 -2
- package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
- package/dist/esm/q2-checkbox.entry.js +3 -2
- package/dist/esm/q2-checkbox.entry.js.map +1 -1
- package/dist/esm/q2-currency.entry.js +2 -2
- package/dist/esm/q2-currency.entry.js.map +1 -1
- package/dist/esm/q2-data-table.entry.js +1 -1
- package/dist/esm/q2-detail.entry.js +1 -1
- package/dist/esm/q2-dropdown-item.entry.js +1 -1
- package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
- package/dist/esm/q2-dropdown.entry.js +1 -1
- package/dist/esm/q2-dropdown.entry.js.map +1 -1
- package/dist/esm/q2-icon.entry.js +1 -1
- package/dist/esm/q2-icon.entry.js.map +1 -1
- package/dist/esm/q2-input.entry.js +17 -10
- package/dist/esm/q2-input.entry.js.map +1 -1
- package/dist/esm/q2-item.entry.js +15 -17
- package/dist/esm/q2-item.entry.js.map +1 -1
- package/dist/esm/q2-legend.entry.js +114 -0
- package/dist/esm/q2-legend.entry.js.map +1 -0
- package/dist/esm/q2-list.entry.js +8 -8
- package/dist/esm/q2-list.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-optgroup.entry.js +55 -0
- package/dist/esm/q2-optgroup.entry.js.map +1 -0
- package/dist/esm/{q2-optgroup_2.entry.js → q2-option.entry.js} +4 -54
- package/dist/esm/q2-option.entry.js.map +1 -0
- package/dist/esm/q2-pagination.entry.js +22 -3
- package/dist/esm/q2-pagination.entry.js.map +1 -1
- package/dist/esm/q2-pill.entry.js +2 -2
- package/dist/esm/q2-pill.entry.js.map +1 -1
- package/dist/esm/q2-relative-time.entry.js +2 -2
- package/dist/esm/q2-section.entry.js +2 -2
- package/dist/esm/q2-select.entry.js +4 -5
- package/dist/esm/q2-select.entry.js.map +1 -1
- package/dist/esm/q2-stepper-pane.entry.js +2 -2
- package/dist/esm/q2-stepper-pane.entry.js.map +1 -1
- package/dist/esm/q2-stepper-vertical.entry.js +6 -6
- package/dist/esm/q2-stepper-vertical.entry.js.map +1 -1
- package/dist/esm/q2-stepper.entry.js +2 -2
- package/dist/esm/q2-stepper.entry.js.map +1 -1
- package/dist/esm/q2-tab-container.entry.js +2 -2
- package/dist/esm/q2-tab-container.entry.js.map +1 -1
- package/dist/esm/q2-tab-pane.entry.js +1 -1
- package/dist/esm/q2-tag.entry.js +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/tecton-tab-pane.entry.js +2 -2
- package/dist/q2-tecton-elements/p-0bc47914.entry.js +2 -0
- package/dist/q2-tecton-elements/p-0bc47914.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-0e482a7c.entry.js +2 -0
- package/dist/q2-tecton-elements/p-0e482a7c.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-fcc84527.entry.js → p-12326313.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-12326313.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-df297a77.entry.js → p-16891e51.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-a214077c.entry.js → p-18ec54c0.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-245ad08f.entry.js +2 -0
- package/dist/q2-tecton-elements/p-245ad08f.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-2a248a3f.entry.js +2 -0
- package/dist/q2-tecton-elements/p-2a248a3f.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-2c57a367.entry.js +2 -0
- package/dist/q2-tecton-elements/p-2c57a367.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-32e57e9f.entry.js +2 -0
- package/dist/q2-tecton-elements/p-32e57e9f.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-36398b59.entry.js +2 -0
- package/dist/q2-tecton-elements/p-36398b59.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-5dc5c4e2.entry.js → p-4194d6ed.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-4194d6ed.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-f0813fb4.entry.js → p-4f2dfb4d.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-4f2dfb4d.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-7ce6e587.js → p-6559c942.js} +1 -1
- package/dist/q2-tecton-elements/{p-391acc00.entry.js → p-65ed80a5.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-65ed80a5.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-79df783e.entry.js +2 -0
- package/dist/q2-tecton-elements/p-79df783e.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-81b76d40.entry.js +2 -0
- package/dist/q2-tecton-elements/p-81b76d40.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-2436c843.entry.js → p-85003c5b.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-85003c5b.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-d9e19f70.entry.js → p-97a98211.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-71180fcd.entry.js → p-ac9414a6.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-ac9414a6.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-7523305d.entry.js → p-bc141c5b.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-be101dcf.entry.js +2 -0
- package/dist/q2-tecton-elements/p-be101dcf.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-4bbe563f.entry.js → p-bf32fd9c.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-bf32fd9c.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-b376c111.entry.js → p-ca0d7eb3.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-c016bd18.entry.js → p-ca7ad3c3.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-ca7dad64.entry.js +2 -0
- package/dist/q2-tecton-elements/p-ca7dad64.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-ced89010.entry.js +2 -0
- package/dist/q2-tecton-elements/p-ced89010.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-f4d77672.entry.js → p-d5776227.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-d60ccf2f.entry.js +2 -0
- package/dist/q2-tecton-elements/p-d60ccf2f.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-d8fba914.entry.js +2 -0
- package/dist/q2-tecton-elements/p-d8fba914.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-63192fac.entry.js → p-dd670d63.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-05b015a8.entry.js → p-e27a23fc.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-05b015a8.entry.js.map → p-e27a23fc.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-bfe9d688.entry.js → p-ef441885.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-ef441885.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-f2251261.entry.js +2 -0
- package/dist/q2-tecton-elements/p-f2251261.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-debd5249.entry.js → p-f45b3488.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-debd5249.entry.js.map → p-f45b3488.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-22661533.entry.js → p-fe3c62e0.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-fe3c62e0.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-685b821c.entry.js → p-ff39ba49.entry.js} +2 -2
- 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/click-elsewhere-test.e2e.js +0 -18
- package/dist/test/elements/click-elsewhere-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-btn-test.e2e.js +16 -0
- package/dist/test/elements/q2-btn-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-calendar-test.e2e.js +1 -1
- package/dist/test/elements/q2-calendar-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-carousel-pane-test.e2e.js +49 -1
- package/dist/test/elements/q2-carousel-pane-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-carousel-pane-test.spec.js +4 -1
- package/dist/test/elements/q2-carousel-pane-test.spec.js.map +1 -1
- package/dist/test/elements/q2-carousel-test.e2e.js +67 -1
- package/dist/test/elements/q2-carousel-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-chart-donut-test.e2e.js +56 -0
- package/dist/test/elements/q2-chart-donut-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-checkbox-group-test.e2e.js +13 -10
- package/dist/test/elements/q2-checkbox-group-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-detail/q2-list-test.e2e.js +1 -1
- package/dist/test/elements/q2-detail/q2-list-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-dropdown-item-test.e2e.js +16 -3
- package/dist/test/elements/q2-dropdown-item-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-icon-test.e2e.js +3 -3
- package/dist/test/elements/q2-icon-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-input-test.e2e.js +93 -56
- package/dist/test/elements/q2-input-test.e2e.js.map +1 -1
- package/dist/test/elements/{q2-detail/q2-item-test.e2e.js → q2-item-test.e2e.js} +29 -1
- package/dist/test/elements/q2-item-test.e2e.js.map +1 -0
- package/dist/test/elements/q2-item-test.spec.js +32 -0
- package/dist/test/elements/q2-item-test.spec.js.map +1 -0
- package/dist/test/elements/q2-legend-test.e2e.js +19 -0
- package/dist/test/elements/q2-legend-test.e2e.js.map +1 -0
- package/dist/test/elements/q2-legend-test.spec.js +271 -0
- package/dist/test/elements/q2-legend-test.spec.js.map +1 -0
- package/dist/test/elements/q2-pagination-test.e2e.js +22 -0
- package/dist/test/elements/q2-pagination-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-pill-test.e2e.js +21 -2
- package/dist/test/elements/q2-pill-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-select-test.e2e.js +26 -8
- package/dist/test/elements/q2-select-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-stepper-test.e2e.js +10 -17
- package/dist/test/elements/q2-stepper-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-stepper-vertical-test.e2e.js +20 -4
- package/dist/test/elements/q2-stepper-vertical-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-tab-container-test.e2e.js +10 -4
- package/dist/test/elements/q2-tab-container-test.e2e.js.map +1 -1
- package/dist/types/components/q2-btn/q2-btn.d.ts +14 -3
- package/dist/types/components/q2-carousel/q2-carousel.d.ts +2 -0
- package/dist/types/components/q2-carousel-pane/q2-carousel-pane.d.ts +7 -0
- package/dist/types/components/q2-chart-donut/q2-chart-donut.d.ts +14 -0
- package/dist/types/components/q2-checkbox/q2-checkbox.d.ts +2 -0
- package/dist/types/components/q2-input/q2-input.d.ts +10 -3
- package/dist/types/components/q2-item/q2-item.d.ts +1 -1
- package/dist/types/components/q2-legend/q2-legend.d.ts +41 -0
- package/dist/types/components.d.ts +133 -4
- package/package.json +3 -3
- package/dist/cjs/q2-optgroup_2.cjs.entry.js.map +0 -1
- package/dist/esm/q2-optgroup_2.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-1c17d118.entry.js +0 -2
- package/dist/q2-tecton-elements/p-1c17d118.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-22661533.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-2436c843.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-391acc00.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-3b1ea100.entry.js +0 -2
- package/dist/q2-tecton-elements/p-3b1ea100.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-445990a8.entry.js +0 -2
- package/dist/q2-tecton-elements/p-445990a8.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-4b81a121.entry.js +0 -2
- package/dist/q2-tecton-elements/p-4b81a121.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-4bbe563f.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-50bd4437.entry.js +0 -2
- package/dist/q2-tecton-elements/p-50bd4437.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-5dc5c4e2.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-68556733.entry.js +0 -2
- package/dist/q2-tecton-elements/p-68556733.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-71180fcd.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-7c12ba02.entry.js +0 -2
- package/dist/q2-tecton-elements/p-7c12ba02.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-a977e723.entry.js +0 -2
- package/dist/q2-tecton-elements/p-a977e723.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-b3d10d52.entry.js +0 -2
- package/dist/q2-tecton-elements/p-b3d10d52.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-b7d5fd12.entry.js +0 -2
- package/dist/q2-tecton-elements/p-b7d5fd12.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-bfe9d688.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-bffda54d.entry.js +0 -2
- package/dist/q2-tecton-elements/p-bffda54d.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-cadceb00.entry.js +0 -2
- package/dist/q2-tecton-elements/p-cadceb00.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-d1a9ed3d.entry.js +0 -2
- package/dist/q2-tecton-elements/p-d1a9ed3d.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-f0813fb4.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-fcc84527.entry.js.map +0 -1
- package/dist/test/elements/q2-detail/q2-item-test.e2e.js.map +0 -1
- /package/dist/q2-tecton-elements/{p-df297a77.entry.js.map → p-16891e51.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-a214077c.entry.js.map → p-18ec54c0.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-7ce6e587.js.map → p-6559c942.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-d9e19f70.entry.js.map → p-97a98211.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-7523305d.entry.js.map → p-bc141c5b.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-b376c111.entry.js.map → p-ca0d7eb3.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-c016bd18.entry.js.map → p-ca7ad3c3.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-f4d77672.entry.js.map → p-d5776227.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-63192fac.entry.js.map → p-dd670d63.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-685b821c.entry.js.map → p-ff39ba49.entry.js.map} +0 -0
- /package/dist/types/workspace/workspace/{tecton-production_release_1.45.x → tecton-production_release_1.46.x}/packages/q2-tecton-elements/.stencil/test/elements/q2-detail/slot-component.d.ts +0 -0
- /package/dist/types/workspace/workspace/{tecton-production_release_1.45.x → tecton-production_release_1.46.x}/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { setup } from "../helpers";
|
|
1
|
+
import { setup, dispatchEvent } from "../helpers";
|
|
2
2
|
describe('q2-carousel-pane', () => {
|
|
3
3
|
describe('Props', () => {
|
|
4
4
|
describe('slotFrameless', () => {
|
|
@@ -20,5 +20,53 @@ describe('q2-carousel-pane', () => {
|
|
|
20
20
|
});
|
|
21
21
|
});
|
|
22
22
|
});
|
|
23
|
+
describe('disablePointerMove', () => {
|
|
24
|
+
it('disables pointer events when true', async () => {
|
|
25
|
+
const page = await setup({
|
|
26
|
+
html: `
|
|
27
|
+
<q2-carousel-pane>
|
|
28
|
+
<div id="wrapper">
|
|
29
|
+
<q2-dropdown type="icon" icon="options">
|
|
30
|
+
<q2-dropdown-item>Item 1</q2-dropdown-item>
|
|
31
|
+
</q2-dropdown>
|
|
32
|
+
</div>
|
|
33
|
+
</q2-carousel-pane>
|
|
34
|
+
`,
|
|
35
|
+
});
|
|
36
|
+
const wrapper = await page.find('#wrapper');
|
|
37
|
+
const wrapperPointerMoveSpy = await wrapper.spyOnEvent('pointermove');
|
|
38
|
+
await dispatchEvent(page, ['q2-dropdown'], 'pointermove', { bubbles: true });
|
|
39
|
+
await page.waitForChanges();
|
|
40
|
+
expect(wrapperPointerMoveSpy).not.toHaveReceivedEvent();
|
|
41
|
+
await dispatchEvent(page, 'q2-dropdown-item', 'pointermove', { bubbles: true });
|
|
42
|
+
await page.waitForChanges();
|
|
43
|
+
expect(wrapperPointerMoveSpy).not.toHaveReceivedEvent();
|
|
44
|
+
});
|
|
45
|
+
it('updates the pointermove listeners when the DOM is updated', async () => {
|
|
46
|
+
const page = await setup({
|
|
47
|
+
html: `
|
|
48
|
+
<q2-carousel-pane disable-pointer-move>
|
|
49
|
+
<div id="wrapper">
|
|
50
|
+
</div>
|
|
51
|
+
</q2-carousel-pane>
|
|
52
|
+
`,
|
|
53
|
+
});
|
|
54
|
+
const wrapper = await page.find('#wrapper');
|
|
55
|
+
const wrapperPointerMoveSpy = await wrapper.spyOnEvent('pointermove');
|
|
56
|
+
await page.$eval('#wrapper', (element) => {
|
|
57
|
+
element.innerHTML = `
|
|
58
|
+
<q2-dropdown type="icon" icon="options">
|
|
59
|
+
<q2-dropdown-item>Item 1</q2-dropdown-item>
|
|
60
|
+
</q2-dropdown>
|
|
61
|
+
`;
|
|
62
|
+
});
|
|
63
|
+
await page.waitForChanges();
|
|
64
|
+
const dropdown = await page.find('q2-dropdown');
|
|
65
|
+
expect(dropdown).toBeTruthy();
|
|
66
|
+
await dispatchEvent(page, ['q2-dropdown'], 'pointermove', { bubbles: true });
|
|
67
|
+
await page.waitForChanges();
|
|
68
|
+
expect(wrapperPointerMoveSpy).not.toHaveReceivedEvent();
|
|
69
|
+
});
|
|
70
|
+
});
|
|
23
71
|
});
|
|
24
72
|
//# sourceMappingURL=q2-carousel-pane-test.e2e.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-carousel-pane-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-carousel-pane-test.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"q2-carousel-pane-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-carousel-pane-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { setup, dispatchEvent } from '../helpers';\n\ndescribe('q2-carousel-pane', () => {\n describe('Props', () => {\n describe('slotFrameless', () => {\n it('applies the necessary styles when true', async () => {\n const page = await setup({\n html: `\n <q2-carousel-pane slot-frameless>\n <h2>Hello</h2>\n <p>World</p>\n </q2-carousel-pane>\n `,\n });\n\n const content = await page.find('.q2-carousel-pane-main-content');\n const contentComputedStyle = content.getComputedStyle();\n expect((await contentComputedStyle).boxShadow).toBe('none');\n expect((await contentComputedStyle).border).toBe('0px none rgb(0, 0, 0)');\n expect((await contentComputedStyle).borderRadius).toBe('0px');\n expect((await contentComputedStyle).padding).toBe('0px');\n });\n });\n });\n\n describe('disablePointerMove', () => {\n it('disables pointer events when true', async () => {\n const page = await setup({\n html: `\n <q2-carousel-pane>\n <div id=\"wrapper\">\n <q2-dropdown type=\"icon\" icon=\"options\">\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n </q2-dropdown>\n </div>\n </q2-carousel-pane>\n `,\n });\n\n const wrapper = await page.find('#wrapper');\n const wrapperPointerMoveSpy = await wrapper.spyOnEvent('pointermove');\n\n await dispatchEvent(page, ['q2-dropdown'], 'pointermove', { bubbles: true });\n await page.waitForChanges();\n\n expect(wrapperPointerMoveSpy).not.toHaveReceivedEvent();\n\n await dispatchEvent(page, 'q2-dropdown-item', 'pointermove', { bubbles: true });\n await page.waitForChanges();\n\n expect(wrapperPointerMoveSpy).not.toHaveReceivedEvent();\n });\n\n it('updates the pointermove listeners when the DOM is updated', async () => {\n const page = await setup({\n html: `\n <q2-carousel-pane disable-pointer-move>\n <div id=\"wrapper\">\n </div>\n </q2-carousel-pane>\n `,\n });\n\n const wrapper = await page.find('#wrapper');\n const wrapperPointerMoveSpy = await wrapper.spyOnEvent('pointermove');\n\n await page.$eval('#wrapper', (element: HTMLElement) => {\n element.innerHTML = `\n <q2-dropdown type=\"icon\" icon=\"options\">\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n </q2-dropdown>\n `;\n });\n await page.waitForChanges();\n\n const dropdown = await page.find('q2-dropdown');\n expect(dropdown).toBeTruthy();\n\n await dispatchEvent(page, ['q2-dropdown'], 'pointermove', { bubbles: true });\n await page.waitForChanges();\n\n expect(wrapperPointerMoveSpy).not.toHaveReceivedEvent();\n });\n });\n});\n"]}
|
|
@@ -57,6 +57,7 @@ describe('q2-carousel-pane', () => {
|
|
|
57
57
|
it('sets tabindex of focusable elements to -1', async () => {
|
|
58
58
|
expect(link).toEqualAttribute('tabindex', '-1');
|
|
59
59
|
expect(button).toEqualAttribute('tabindex', '-1');
|
|
60
|
+
expect(button).not.toHaveAttribute('data-q2-tabindex');
|
|
60
61
|
expect(buttonWithTabIndex).toEqualAttribute('tabindex', '-1');
|
|
61
62
|
expect(buttonWithTabIndex).toEqualAttribute('data-q2-tabindex', '2');
|
|
62
63
|
});
|
|
@@ -64,6 +65,7 @@ describe('q2-carousel-pane', () => {
|
|
|
64
65
|
await specPage.root.setAttribute('is-active-pane', 'true');
|
|
65
66
|
expect(link).not.toHaveAttribute('tabindex');
|
|
66
67
|
expect(button).not.toHaveAttribute('tabindex');
|
|
68
|
+
expect(button).not.toHaveAttribute('data-q2-tabindex');
|
|
67
69
|
expect(buttonWithTabIndex).not.toHaveAttribute('data-q2-tabindex');
|
|
68
70
|
expect(buttonWithTabIndex).toEqualAttribute('tabindex', '2');
|
|
69
71
|
});
|
|
@@ -89,14 +91,15 @@ describe('q2-carousel-pane', () => {
|
|
|
89
91
|
it('sets tabindex of focusable elements', async () => {
|
|
90
92
|
expect(link).not.toHaveAttribute('tabindex');
|
|
91
93
|
expect(button).not.toHaveAttribute('tabindex');
|
|
94
|
+
expect(button).not.toHaveAttribute('data-q2-tabindex');
|
|
92
95
|
expect(buttonWithTabIndex).not.toHaveAttribute('data-q2-tabindex');
|
|
93
96
|
expect(buttonWithTabIndex).toEqualAttribute('tabindex', '2');
|
|
94
|
-
expect(buttonWithTabIndex).not.toHaveAttribute('data-q2-tabindex');
|
|
95
97
|
});
|
|
96
98
|
it('updates tabindex when isActivePane changes', async () => {
|
|
97
99
|
await specPage.root.setAttribute('is-active-pane', 'false');
|
|
98
100
|
expect(link).toEqualAttribute('tabindex', '-1');
|
|
99
101
|
expect(button).toEqualAttribute('tabindex', '-1');
|
|
102
|
+
expect(button).not.toHaveAttribute('data-q2-tabindex');
|
|
100
103
|
expect(buttonWithTabIndex).toEqualAttribute('tabindex', '-1');
|
|
101
104
|
expect(buttonWithTabIndex).toEqualAttribute('data-q2-tabindex', '2');
|
|
102
105
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-carousel-pane-test.spec.js","sourceRoot":"","sources":["../../../test/elements/q2-carousel-pane-test.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { SpecPage, newSpecPage } from '@stencil/core/testing';\nimport { Q2CarouselPane } from 'src/components/q2-carousel-pane/q2-carousel-pane';\n\ndescribe('q2-carousel-pane', () => {\n let carouselPane: Q2CarouselPane;\n let specPage: SpecPage;\n\n describe('Props', () => {\n describe('label', () => {\n describe('when not provided', () => {\n it('provides a default aria-label', async () => {\n specPage = await newSpecPage({\n components: [Q2CarouselPane],\n html: `\n <q2-carousel-pane>\n <h1>Tony Stark</h1>\n </q2-carousel-pane>\n `,\n });\n expect(specPage.root).toEqualAttribute('aria-label', 'tecton.element.carousel.itemDescription');\n });\n });\n\n describe('when provided', () => {\n it('set the label as the aria-label', async () => {\n specPage = await newSpecPage({\n components: [Q2CarouselPane],\n html: `\n <q2-carousel-pane label=\"My Pane\">\n <h1>Tony Stark</h1>\n </q2-carousel-pane>\n `,\n });\n expect(specPage.root).toEqualAttribute('aria-label', 'My Pane');\n });\n });\n });\n\n describe('isActivePane', () => {\n let link: HTMLElement;\n let button: HTMLElement;\n let buttonWithTabIndex: HTMLElement;\n\n describe('when not provided', () => {\n beforeEach(async () => {\n specPage = await newSpecPage({\n components: [Q2CarouselPane],\n html: `\n <q2-carousel-pane>\n <h2>Hello</h2>\n <p>World</p>\n <a href=\"#\">Link</a>\n <button id=\"simple\">Button 1</button>\n <button id=\"with-tabindex\" tabindex=\"2\">Button 2</button>\n </q2-carousel-pane>\n `,\n });\n\n link = specPage.root.querySelector('a[href]');\n button = specPage.root.querySelector('button#simple');\n buttonWithTabIndex = specPage.root.querySelector('button#with-tabindex');\n });\n\n it('sets tabindex of focusable elements to -1', async () => {\n expect(link).toEqualAttribute('tabindex', '-1');\n expect(button).toEqualAttribute('tabindex', '-1');\n expect(buttonWithTabIndex).toEqualAttribute('tabindex', '-1');\n expect(buttonWithTabIndex).toEqualAttribute('data-q2-tabindex', '2');\n });\n\n it('updates tabindex when isActivePane changes', async () => {\n await specPage.root.setAttribute('is-active-pane', 'true');\n\n expect(link).not.toHaveAttribute('tabindex');\n expect(button).not.toHaveAttribute('tabindex');\n expect(buttonWithTabIndex).not.toHaveAttribute('data-q2-tabindex');\n expect(buttonWithTabIndex).toEqualAttribute('tabindex', '2');\n });\n });\n\n describe('when provided', () => {\n beforeEach(async () => {\n specPage = await newSpecPage({\n components: [Q2CarouselPane],\n html: `\n <q2-carousel-pane is-active-pane>\n <h2>Hello</h2>\n <p>World</p>\n <a href=\"#\">Link</a>\n <button id=\"simple\">Button 1</button>\n <button id=\"with-tabindex\" tabindex=\"2\">Button 2</button>\n </q2-carousel-pane>\n `,\n });\n\n link = specPage.root.querySelector('a[href]');\n button = specPage.root.querySelector('button#simple');\n buttonWithTabIndex = specPage.root.querySelector('button#with-tabindex');\n });\n\n it('sets tabindex of focusable elements', async () => {\n expect(link).not.toHaveAttribute('tabindex');\n expect(button).not.toHaveAttribute('tabindex');\n expect(buttonWithTabIndex).not.toHaveAttribute('data-q2-tabindex');\n expect(buttonWithTabIndex).toEqualAttribute('tabindex', '2');\n expect(buttonWithTabIndex).not.toHaveAttribute('data-q2-tabindex');\n });\n\n it('updates tabindex when isActivePane changes', async () => {\n await specPage.root.setAttribute('is-active-pane', 'false');\n expect(link).toEqualAttribute('tabindex', '-1');\n expect(button).toEqualAttribute('tabindex', '-1');\n expect(buttonWithTabIndex).toEqualAttribute('tabindex', '-1');\n expect(buttonWithTabIndex).toEqualAttribute('data-q2-tabindex', '2');\n });\n });\n });\n });\n\n describe('generatePaneClass', () => {\n it('returns the correct class', async () => {\n carouselPane = new Q2CarouselPane();\n expect(carouselPane.generatePaneClass(5)).toBe('q2-carousel-pane swiper-slide q2-carousel-pane-5');\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"q2-carousel-pane-test.spec.js","sourceRoot":"","sources":["../../../test/elements/q2-carousel-pane-test.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { SpecPage, newSpecPage } from '@stencil/core/testing';\nimport { Q2CarouselPane } from 'src/components/q2-carousel-pane/q2-carousel-pane';\n\ndescribe('q2-carousel-pane', () => {\n let carouselPane: Q2CarouselPane;\n let specPage: SpecPage;\n\n describe('Props', () => {\n describe('label', () => {\n describe('when not provided', () => {\n it('provides a default aria-label', async () => {\n specPage = await newSpecPage({\n components: [Q2CarouselPane],\n html: `\n <q2-carousel-pane>\n <h1>Tony Stark</h1>\n </q2-carousel-pane>\n `,\n });\n expect(specPage.root).toEqualAttribute('aria-label', 'tecton.element.carousel.itemDescription');\n });\n });\n\n describe('when provided', () => {\n it('set the label as the aria-label', async () => {\n specPage = await newSpecPage({\n components: [Q2CarouselPane],\n html: `\n <q2-carousel-pane label=\"My Pane\">\n <h1>Tony Stark</h1>\n </q2-carousel-pane>\n `,\n });\n expect(specPage.root).toEqualAttribute('aria-label', 'My Pane');\n });\n });\n });\n\n describe('isActivePane', () => {\n let link: HTMLElement;\n let button: HTMLElement;\n let buttonWithTabIndex: HTMLElement;\n\n describe('when not provided', () => {\n beforeEach(async () => {\n specPage = await newSpecPage({\n components: [Q2CarouselPane],\n html: `\n <q2-carousel-pane>\n <h2>Hello</h2>\n <p>World</p>\n <a href=\"#\">Link</a>\n <button id=\"simple\">Button 1</button>\n <button id=\"with-tabindex\" tabindex=\"2\">Button 2</button>\n </q2-carousel-pane>\n `,\n });\n\n link = specPage.root.querySelector('a[href]');\n button = specPage.root.querySelector('button#simple');\n buttonWithTabIndex = specPage.root.querySelector('button#with-tabindex');\n });\n\n it('sets tabindex of focusable elements to -1', async () => {\n expect(link).toEqualAttribute('tabindex', '-1');\n expect(button).toEqualAttribute('tabindex', '-1');\n expect(button).not.toHaveAttribute('data-q2-tabindex');\n expect(buttonWithTabIndex).toEqualAttribute('tabindex', '-1');\n expect(buttonWithTabIndex).toEqualAttribute('data-q2-tabindex', '2');\n });\n\n it('updates tabindex when isActivePane changes', async () => {\n await specPage.root.setAttribute('is-active-pane', 'true');\n\n expect(link).not.toHaveAttribute('tabindex');\n expect(button).not.toHaveAttribute('tabindex');\n expect(button).not.toHaveAttribute('data-q2-tabindex');\n expect(buttonWithTabIndex).not.toHaveAttribute('data-q2-tabindex');\n expect(buttonWithTabIndex).toEqualAttribute('tabindex', '2');\n });\n });\n\n describe('when provided', () => {\n beforeEach(async () => {\n specPage = await newSpecPage({\n components: [Q2CarouselPane],\n html: `\n <q2-carousel-pane is-active-pane>\n <h2>Hello</h2>\n <p>World</p>\n <a href=\"#\">Link</a>\n <button id=\"simple\">Button 1</button>\n <button id=\"with-tabindex\" tabindex=\"2\">Button 2</button>\n </q2-carousel-pane>\n `,\n });\n\n link = specPage.root.querySelector('a[href]');\n button = specPage.root.querySelector('button#simple');\n buttonWithTabIndex = specPage.root.querySelector('button#with-tabindex');\n });\n\n it('sets tabindex of focusable elements', async () => {\n expect(link).not.toHaveAttribute('tabindex');\n expect(button).not.toHaveAttribute('tabindex');\n expect(button).not.toHaveAttribute('data-q2-tabindex');\n expect(buttonWithTabIndex).not.toHaveAttribute('data-q2-tabindex');\n expect(buttonWithTabIndex).toEqualAttribute('tabindex', '2');\n });\n\n it('updates tabindex when isActivePane changes', async () => {\n await specPage.root.setAttribute('is-active-pane', 'false');\n expect(link).toEqualAttribute('tabindex', '-1');\n expect(button).toEqualAttribute('tabindex', '-1');\n expect(button).not.toHaveAttribute('data-q2-tabindex');\n expect(buttonWithTabIndex).toEqualAttribute('tabindex', '-1');\n expect(buttonWithTabIndex).toEqualAttribute('data-q2-tabindex', '2');\n });\n });\n });\n });\n\n describe('generatePaneClass', () => {\n it('returns the correct class', async () => {\n carouselPane = new Q2CarouselPane();\n expect(carouselPane.generatePaneClass(5)).toBe('q2-carousel-pane swiper-slide q2-carousel-pane-5');\n });\n });\n});\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { setup, dispatchEvent, testDeprecatedAriaLabel } from "../helpers";
|
|
1
|
+
import { setup, dispatchEvent, testDeprecatedAriaLabel, getNestedElementStyle, getNestedElementProperty, } from "../helpers";
|
|
2
2
|
describe('q2-carousel', () => {
|
|
3
3
|
const renderCarousel = (numberOfPanes, config) => {
|
|
4
4
|
const { showNavigation, hidePagination, fullWidthPanes, framelessPanes, autoPlay, index } = Object.assign({
|
|
@@ -415,6 +415,72 @@ describe('q2-carousel', () => {
|
|
|
415
415
|
});
|
|
416
416
|
expect(activeElementClasses.length).toEqual(0); // shift+tab from a pane should land focus outside of the carousel element
|
|
417
417
|
});
|
|
418
|
+
describe('when q2-dropdown elements are added to panes', () => {
|
|
419
|
+
let page;
|
|
420
|
+
beforeEach(async () => {
|
|
421
|
+
page = await setup({
|
|
422
|
+
html: `
|
|
423
|
+
<q2-carousel>
|
|
424
|
+
${[...Array(3).keys()].map(index => `
|
|
425
|
+
<q2-carousel-pane id="pane-${index + 1}">
|
|
426
|
+
<p>Pane ${index + 1}</p>
|
|
427
|
+
<button>Button</button>
|
|
428
|
+
<q2-dropdown
|
|
429
|
+
type="icon"
|
|
430
|
+
label="My dropdown"
|
|
431
|
+
icon="options"
|
|
432
|
+
hide-label
|
|
433
|
+
>
|
|
434
|
+
<q2-dropdown-item value="first">First</q2-dropdown-item>
|
|
435
|
+
<q2-dropdown-item value="second">Second</q2-dropdown-item>
|
|
436
|
+
<q2-dropdown-item value="third">Third</q2-dropdown-item>
|
|
437
|
+
</q2-dropdown>
|
|
438
|
+
</q2-carousel-pane>
|
|
439
|
+
`)}
|
|
440
|
+
</q2-carousel>
|
|
441
|
+
`,
|
|
442
|
+
});
|
|
443
|
+
await page.waitForChanges();
|
|
444
|
+
});
|
|
445
|
+
it('disables carousel, removes transform, and uses "left" coordinates when opened', async () => {
|
|
446
|
+
const popoverSelector = ['#pane-1 q2-dropdown', 'q2-popover'];
|
|
447
|
+
const swiperSelector = '.swiper-wrapper';
|
|
448
|
+
const transformMatrix = 'matrix(1, 0, 0, 1, 193.5, 0)';
|
|
449
|
+
expect(await getNestedElementProperty(page, popoverSelector, 'open')).toBeUndefined();
|
|
450
|
+
expect(await getNestedElementStyle(page, swiperSelector, 'left')).toEqual('0px');
|
|
451
|
+
expect(await getNestedElementStyle(page, swiperSelector, 'transform')).toEqual(transformMatrix);
|
|
452
|
+
await dispatchEvent(page, ['#pane-1 q2-dropdown', 'q2-btn'], 'click');
|
|
453
|
+
await page.waitForChanges();
|
|
454
|
+
expect(await getNestedElementProperty(page, popoverSelector, 'open')).toEqual(true);
|
|
455
|
+
expect(await getNestedElementStyle(page, swiperSelector, 'left')).toEqual('193.5px');
|
|
456
|
+
expect(await getNestedElementStyle(page, swiperSelector, 'transform')).toEqual('none');
|
|
457
|
+
await dispatchEvent(page, ['#pane-1 q2-dropdown', 'q2-btn'], 'click');
|
|
458
|
+
await page.waitForChanges();
|
|
459
|
+
expect(await getNestedElementProperty(page, popoverSelector, 'open')).toEqual(false);
|
|
460
|
+
expect(await getNestedElementStyle(page, swiperSelector, 'left')).toEqual('0px');
|
|
461
|
+
expect(await getNestedElementStyle(page, swiperSelector, 'transform')).toEqual(transformMatrix);
|
|
462
|
+
});
|
|
463
|
+
it('closes the dropdown when a static element is clicked', async () => {
|
|
464
|
+
const popoverSelector = ['#pane-1 q2-dropdown', 'q2-popover'];
|
|
465
|
+
expect(await getNestedElementProperty(page, popoverSelector, 'open')).toBeUndefined();
|
|
466
|
+
await dispatchEvent(page, ['#pane-1 q2-dropdown', 'q2-btn'], 'click');
|
|
467
|
+
await page.waitForChanges();
|
|
468
|
+
expect(await getNestedElementProperty(page, popoverSelector, 'open')).toEqual(true);
|
|
469
|
+
await page.click('#pane-1 p');
|
|
470
|
+
await page.waitForChanges();
|
|
471
|
+
expect(await getNestedElementProperty(page, popoverSelector, 'open')).toEqual(false);
|
|
472
|
+
});
|
|
473
|
+
it('closes the dropdown when another focusable element is clicked', async () => {
|
|
474
|
+
const popoverSelector = ['#pane-1 q2-dropdown', 'q2-popover'];
|
|
475
|
+
expect(await getNestedElementProperty(page, popoverSelector, 'open')).toBeUndefined();
|
|
476
|
+
await dispatchEvent(page, ['#pane-1 q2-dropdown', 'q2-btn'], 'click');
|
|
477
|
+
await page.waitForChanges();
|
|
478
|
+
expect(await getNestedElementProperty(page, popoverSelector, 'open')).toEqual(true);
|
|
479
|
+
await page.click('#pane-1 button');
|
|
480
|
+
await page.waitForChanges();
|
|
481
|
+
expect(await getNestedElementProperty(page, popoverSelector, 'open')).toEqual(false);
|
|
482
|
+
});
|
|
483
|
+
});
|
|
418
484
|
describe('@Props', () => {
|
|
419
485
|
describe('framelessPanes', () => {
|
|
420
486
|
describe('when not provided', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-carousel-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-carousel-test.e2e.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE3E,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IACzB,MAAM,cAAc,GAAG,CACnB,aAAqB,EACrB,MAOC,EACH,EAAE;QACA,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAClF;YACC,cAAc,EAAE,KAAK;YACrB,cAAc,EAAE,KAAK;YACrB,cAAc,EAAE,KAAK;YACrB,cAAc,EAAE,KAAK;YACrB,QAAQ,EAAE,KAAK;SAClB,EACE,MAAM,CACZ,CAAC;QACF,OAAO;sBACO,cAAc,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE;sBAC9C,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;sBACvC,cAAc,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE;sBACxC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;sBACvC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;sBAC3B,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;;sBAE/B,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAClC,KAAK,CAAC,EAAE,CAAC,0BAA0B,KAAK,GAAG,CAAC,qBAAqB,CACpE;+BACU,CAAC;IAC5B,CAAC,CAAC;IAEF,EAAE,CAAC,iCAAiC,EAAE,KAAK;QACvC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;YACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;SAC1B,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChD,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QACvF,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;QACzE,MAAM,iBAAiB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QACzG,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QAClF,MAAM,yBAAyB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;QAChG,MAAM,qBAAqB,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC;QAE3F,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3E,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1E,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnF,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClF,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClF,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC1C,MAAM,CAAC,yBAAyB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,qBAAqB,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9E,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjF,MAAM,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC5D,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpE,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpE,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACtB,MAAM,aAAa,GAAG,KAAK,EAAE,IAAa,EAAE,SAAiB,EAAE,EAAE,CAC7D,IAAI,CAAC,QAAQ,CACT,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,aAAa,KAAK,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,EAChG,SAAS,CACZ,CAAC;QAEN,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;gBACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;aAC1B,CAAC,CAAC;YAEH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;YAEzE,MAAM,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YAC/B,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACtG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;YAE5D,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACxC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACtG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;YAC5D,MAAM,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEnD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACxC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACtG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;YAC5D,MAAM,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEnD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACtG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;YAC5D,MAAM,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEnD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACtG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;YAC5D,MAAM,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEnD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACtG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;YAC5D,MAAM,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yFAAyF,EAAE,KAAK;QAC/F,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;YACrB,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;SACpD,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;QACzE,MAAM,iBAAiB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,kBAAkB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,iBAAiB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QAEzG,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzE,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClF,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpF,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnF,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEhF,oBAAoB;QACpB,MAAM,aAAa,CAAC,IAAI,EAAE,+BAA+B,EAAE,OAAO,CAAC,CAAC;QACpE,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnF,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnF,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnF,qBAAqB;QACrB,MAAM,aAAa,CAAC,IAAI,EAAE,+BAA+B,EAAE,OAAO,CAAC,CAAC;QACpE,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnF,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpF,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAElF,sBAAsB;QACtB,MAAM,aAAa,CAAC,IAAI,EAAE,qCAAqC,EAAE,OAAO,CAAC,CAAC;QAC1E,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnF,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnF,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnF,qBAAqB;QACrB,MAAM,aAAa,CAAC,IAAI,EAAE,qCAAqC,EAAE,OAAO,CAAC,CAAC;QAC1E,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnF,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpF,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uDAAuD,EAAE,GAAG,EAAE;QACnE,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;YACvC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;gBACrB,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;aAC1E,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAChD,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;YACzG,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC;YAE3F,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzE,MAAM,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzE,MAAM,CAAC,sBAAsB,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YAC3D,MAAM,CAAC,iBAAiB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK;QAChC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;YACrB,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;SACpD,CAAC,CAAC;QACH,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QACvF,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC7E,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,IAAI,CACzC,mEAAmE,CACtE,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QAE1E,MAAM,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,CAAC,YAAY,EAAE,mCAAmC,CAAC,CAAC;QAC9F,MAAM,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,CAAC,YAAY,EAAE,yCAAyC,CAAC,CAAC;QACpG,MAAM,CAAC,qBAAqB,CAAC,CAAC,gBAAgB,CAAC,YAAY,EAAE,yCAAyC,CAAC,CAAC;QACxG,MAAM,CAAC,qBAAqB,CAAC,CAAC,gBAAgB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACxE,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,uCAAuC,CAAC,CAAC;QAEtF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QAC1E,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,2CAA2C,CAAC,CAAC;IAC9F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oFAAoF,EAAE,KAAK;QAC1F,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;YACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;SAC1B,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACtE,MAAM,yBAAyB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;QAChG,MAAM,mCAAmC,GAAG,MAAM,IAAI,CAAC,OAAO,CAC1D,oGAAoG,CACvG,CAAC;QACF,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvE,MAAM,CAAC,yBAAyB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,mCAAmC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK;QAClE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;YACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;SAC1B,CAAC,CAAC;QAEH,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAE3E,MAAM,CAAC,MAAM,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE7E,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACpD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,MAAM,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uFAAuF,EAAE,KAAK;QAC7F,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;YACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;SAC1B,CAAC,CAAC;QAEH,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QACzG,MAAM,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qFAAqF,EAAE,KAAK;QAC3F,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;YACrB,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;SACpD,CAAC,CAAC;QAEH,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QACzG,MAAM,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC5C,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YACxC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;gBACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;aAC1B,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;YAC1E,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACxC,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;gBACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;aAC1B,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YACnE,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;YACpG,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;YAEhG,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,CAAC,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,wDAAwD,CAAC,CAAC;YAC5G,MAAM,CAAC,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC;QAC5G,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC/B,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAChC,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;gBACpE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;oBACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;iBAC1B,CAAC,CAAC;gBACH,IAAI,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;gBAC3D,IAAI,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;gBACnF,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC9C,IAAI,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAEjD,MAAM,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACvC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAE9B,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,EAAe,EAAE,EAAE;oBAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;oBAC3D,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;oBAC1C,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC5B,CAAC,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;gBACvD,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;gBAC/E,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC1C,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAE7C,MAAM,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACvC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAClC,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;gBACpE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;oBACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;iBAC1B,CAAC,CAAC;gBACH,IAAI,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;gBAC3D,IAAI,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;gBACnF,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC9C,IAAI,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAEjD,MAAM,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACvC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAE9B,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,EAAe,EAAE,EAAE;oBACrD,EAAE,CAAC,MAAM,EAAE,CAAC;gBAChB,CAAC,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;gBACvD,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;gBAC/E,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC1C,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAE7C,MAAM,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACvC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAChC,MAAM,IAAI,GAAG;;;;;;;;;;;;;;2BAcM,CAAC;QACpB,EAAE,CAAC,oDAAoD,EAAE,KAAK;YAC1D,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACnC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,iBAAiB,GAAG,KAAK,EAAE,IAAa,EAAE,EAAE;gBAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE;oBAClC,OAAO,EAAE,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,YAAY,CAAC;gBAC7D,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;YACF,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK;YACvD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACnC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAChD,MAAM,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,iBAAiB,GAAG,KAAK,EAAE,IAAa,EAAE,EAAE;gBAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE;oBAClC,OAAO,EAAE,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,YAAY,CAAC;gBAC7D,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;YACF,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC,iDAAiD,EAAE,KAAK;QAC5D,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;YACrB,IAAI,EAAE;;;;;;;;;;;;;;;;aAgBL;SACJ,CAAC,CAAC;QAEH,IAAI,oBAAoB,CAAC;QAEzB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,oBAAoB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE;YACxD,OAAO,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEpF,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,oBAAoB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE;YACxD,OAAO,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE1E,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,oBAAoB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE;YACxD,OAAO,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,0EAA0E;IAC9H,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC,qDAAqD,EAAE,KAAK;QAChE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;YACrB,IAAI,EAAE;;;;;;;;;;;;;;;;;;aAkBL;SACJ,CAAC,CAAC;QAEH,IAAI,oBAAoB,CAAC;QAEzB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,oBAAoB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE;YACxD,OAAO,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEhE,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,oBAAoB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE;YACxD,OAAO,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAExE,MAAM,aAAa,CAAC,IAAI,EAAE,+BAA+B,EAAE,OAAO,CAAC,CAAC;QACpE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QACzC,oBAAoB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE;YACxD,OAAO,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE1E,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,oBAAoB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE;YACxD,OAAO,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEhE,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,oBAAoB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE;YACxD,OAAO,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE1E,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,oBAAoB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE;YACxD,OAAO,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,0EAA0E;IAC9H,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACpB,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC5B,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC/B,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;oBAClD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;wBACrB,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;qBACrD,CAAC,CAAC;oBAEH,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;oBACzE,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;oBAE7D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;oBACrD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;gBACxG,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;oBAC1C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;wBACrB,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;qBACpD,CAAC,CAAC;oBAEH,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;oBACzE,MAAM,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;oBAEzD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;oBACrD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;gBACvG,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YACtB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC/B,EAAE,CAAC,iCAAiC,EAAE,KAAK;oBACvC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;wBACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;qBAC1B,CAAC,CAAC;oBAEH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;oBACrE,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAE/B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;oBACvE,MAAM,CAAC,eAAe,CAAC,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;gBACpE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,6BAA6B,EAAE,KAAK;oBACnC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;wBACrB,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;qBAC9C,CAAC,CAAC;oBAEH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;oBACrE,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;oBACnC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;oBAC9E,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBAEvD,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;oBAC1B,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC1D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;oBAC3E,MAAM,SAAS,GAAG,KAAK,EAAE,IAAa,EAAE,QAAgB,EAAE,EAAE,CACxD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;wBACrB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;wBACjD,OAAO,OAAO,KAAK,QAAQ,CAAC,aAAa,CAAC;oBAC9C,CAAC,EAAE,QAAQ,CAAC,CAAC;oBAEjB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;wBACrB,IAAI,EAAE,GAAG,cAAc,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,wBAAwB;qBACzE,CAAC,CAAC;oBACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;oBACrE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAC/C,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;oBAEvE,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;oBACnC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;oBAElC,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;oBACzB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;oBAC7C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;oBAEvD,MAAM,CAAC,YAAY,CAAC,CAAC,UAAU,EAAE,CAAC;oBAClC,MAAM,CAAC,eAAe,CAAC,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;gBACjE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC5B,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC/B,EAAE,CAAC,2BAA2B,EAAE,KAAK;oBACjC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;wBACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;qBAC1B,CAAC,CAAC;oBAEH,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;oBAEvF,MAAM,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;oBAC9D,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;oBAEhE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAChD,MAAM,QAAQ,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;oBACnD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;oBAClE,MAAM,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;gBAChE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,+BAA+B,EAAE,KAAK;oBACrC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;wBACrB,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;qBACpD,CAAC,CAAC;oBAEH,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;oBAEvF,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;oBAClE,MAAM,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;gBAChE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC5B,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC/B,EAAE,CAAC,oBAAoB,EAAE,KAAK;oBAC1B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;wBACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;qBAC1B,CAAC,CAAC;oBAEH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;oBAC1E,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;oBACrF,MAAM,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAC;oBAChC,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAC3C,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,4BAA4B,EAAE,KAAK;oBAClC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;wBACrB,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;qBACpD,CAAC,CAAC;oBAEH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;oBAC1E,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAClC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAClC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC/B,EAAE,CAAC,oCAAoC,EAAE,KAAK;oBAC1C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;wBACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;qBAC1B,CAAC,CAAC;oBAEH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;oBACvE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;oBACvE,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAC3B,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC/B,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,4BAA4B,EAAE,KAAK;oBAClC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;wBACrB,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;qBACpD,CAAC,CAAC;oBAEH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;oBACvE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;oBACvE,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC;oBAC7B,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC;gBACjC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC/B,EAAE,CAAC,0BAA0B,EAAE,KAAK;oBAChC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;wBACrB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;qBAC1B,CAAC,CAAC;oBAEH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;oBAEzE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;oBAC3D,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;oBAC5D,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;oBAC/D,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;oBAChE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;oBAC/D,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;gBACpE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,8BAA8B,EAAE,KAAK;oBACpC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;wBACrB,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;qBACxC,CAAC,CAAC;oBAEH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;oBAEzE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;oBAC/D,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;oBAChE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;oBAC3D,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;oBAC5D,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;oBAC/D,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;gBACpE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,KAAK,GAAG,UAAU,CAAC;YACzB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;gBACrB,IAAI,EAAE;+CACyB,KAAK;;;;;iBAKnC;aACJ,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,uBAAuB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,CAAC;YACrE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;YAC/E,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","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 framelessPanes?: boolean;\n autoPlay?: boolean;\n index?: number;\n }\n ) => {\n const { showNavigation, hidePagination, fullWidthPanes, framelessPanes, autoPlay, index } = {\n ...{\n showNavigation: false,\n hidePagination: false,\n fullWidthPanes: false,\n framelessPanes: 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 ${framelessPanes ? `frameless-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('Mutation Observer', () => {\n describe('when adding a pane', () => {\n it('it triggers mutation observer and updates the carousel', 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 let carousel = await page.find('q2-carousel');\n let activeIndex = carousel.getAttribute('index');\n\n expect(carouselPanes).toHaveLength(3);\n expect(pageIndicators).toHaveLength(3);\n expect(activeIndex).toBe('1');\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 carousel = await page.find('q2-carousel');\n activeIndex = carousel.getAttribute('index');\n\n expect(carouselPanes).toHaveLength(4);\n expect(pageIndicators).toHaveLength(4);\n expect(activeIndex).toBe('1');\n });\n });\n describe('when removing a pane', () => {\n it('it triggers mutation observer and updates the carousel', 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 let carousel = await page.find('q2-carousel');\n let activeIndex = carousel.getAttribute('index');\n\n expect(carouselPanes).toHaveLength(3);\n expect(pageIndicators).toHaveLength(3);\n expect(activeIndex).toBe('1');\n\n await page.$eval('q2-carousel-pane', (el: HTMLElement) => {\n el.remove();\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 carousel = await page.find('q2-carousel');\n activeIndex = carousel.getAttribute('index');\n\n expect(carouselPanes).toHaveLength(2);\n expect(pageIndicators).toHaveLength(2);\n expect(activeIndex).toBe('1');\n });\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('framelessPanes', () => {\n describe('when not provided', () => {\n it('does not set slot-frameless on panes', async () => {\n const page = await setup({\n html: renderCarousel(3, { framelessPanes: false }),\n });\n\n const swiperContainer = await page.find('.q2-carousel-swiper-container');\n expect(swiperContainer).not.toHaveClass('frameless-display');\n\n const panes = await page.findAll('q2-carousel-pane');\n expect(panes.every(async pane => (await pane.getProperty('slotFrameless')) === false)).toBeTruthy();\n });\n });\n\n describe('when provided', () => {\n it('sets slot-frameless on panes', async () => {\n const page = await setup({\n html: renderCarousel(3, { framelessPanes: true }),\n });\n\n const swiperContainer = await page.find('.q2-carousel-swiper-container');\n expect(swiperContainer).toHaveClass('frameless-display');\n\n const panes = await page.findAll('q2-carousel-pane');\n expect(panes.every(async pane => (await pane.getProperty('slotFrameless')) === true)).toBeTruthy();\n });\n });\n });\n\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"]}
|
|
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 {\n setup,\n dispatchEvent,\n testDeprecatedAriaLabel,\n getNestedElementStyle,\n getNestedElementProperty,\n} from '../helpers';\n\ndescribe('q2-carousel', () => {\n const renderCarousel = (\n numberOfPanes: number,\n config?: {\n showNavigation?: boolean;\n hidePagination?: boolean;\n fullWidthPanes?: boolean;\n framelessPanes?: boolean;\n autoPlay?: boolean;\n index?: number;\n }\n ) => {\n const { showNavigation, hidePagination, fullWidthPanes, framelessPanes, autoPlay, index } = {\n ...{\n showNavigation: false,\n hidePagination: false,\n fullWidthPanes: false,\n framelessPanes: 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 ${framelessPanes ? `frameless-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('Mutation Observer', () => {\n describe('when adding a pane', () => {\n it('it triggers mutation observer and updates the carousel', 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 let carousel = await page.find('q2-carousel');\n let activeIndex = carousel.getAttribute('index');\n\n expect(carouselPanes).toHaveLength(3);\n expect(pageIndicators).toHaveLength(3);\n expect(activeIndex).toBe('1');\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 carousel = await page.find('q2-carousel');\n activeIndex = carousel.getAttribute('index');\n\n expect(carouselPanes).toHaveLength(4);\n expect(pageIndicators).toHaveLength(4);\n expect(activeIndex).toBe('1');\n });\n });\n describe('when removing a pane', () => {\n it('it triggers mutation observer and updates the carousel', 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 let carousel = await page.find('q2-carousel');\n let activeIndex = carousel.getAttribute('index');\n\n expect(carouselPanes).toHaveLength(3);\n expect(pageIndicators).toHaveLength(3);\n expect(activeIndex).toBe('1');\n\n await page.$eval('q2-carousel-pane', (el: HTMLElement) => {\n el.remove();\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 carousel = await page.find('q2-carousel');\n activeIndex = carousel.getAttribute('index');\n\n expect(carouselPanes).toHaveLength(2);\n expect(pageIndicators).toHaveLength(2);\n expect(activeIndex).toBe('1');\n });\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('when q2-dropdown elements are added to panes', () => {\n let page: E2EPage;\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-carousel>\n ${[...Array(3).keys()].map(\n index => `\n <q2-carousel-pane id=\"pane-${index + 1}\">\n <p>Pane ${index + 1}</p>\n <button>Button</button>\n <q2-dropdown\n type=\"icon\"\n label=\"My dropdown\"\n icon=\"options\"\n hide-label\n >\n <q2-dropdown-item value=\"first\">First</q2-dropdown-item>\n <q2-dropdown-item value=\"second\">Second</q2-dropdown-item>\n <q2-dropdown-item value=\"third\">Third</q2-dropdown-item>\n </q2-dropdown>\n </q2-carousel-pane>\n `\n )}\n </q2-carousel>\n `,\n });\n\n await page.waitForChanges();\n });\n\n it('disables carousel, removes transform, and uses \"left\" coordinates when opened', async () => {\n const popoverSelector = ['#pane-1 q2-dropdown', 'q2-popover'];\n const swiperSelector = '.swiper-wrapper';\n const transformMatrix = 'matrix(1, 0, 0, 1, 193.5, 0)';\n\n expect(await getNestedElementProperty(page, popoverSelector, 'open')).toBeUndefined();\n expect(await getNestedElementStyle(page, swiperSelector, 'left')).toEqual('0px');\n expect(await getNestedElementStyle(page, swiperSelector, 'transform')).toEqual(transformMatrix);\n\n await dispatchEvent(page, ['#pane-1 q2-dropdown', 'q2-btn'], 'click');\n await page.waitForChanges();\n\n expect(await getNestedElementProperty(page, popoverSelector, 'open')).toEqual(true);\n expect(await getNestedElementStyle(page, swiperSelector, 'left')).toEqual('193.5px');\n expect(await getNestedElementStyle(page, swiperSelector, 'transform')).toEqual('none');\n\n await dispatchEvent(page, ['#pane-1 q2-dropdown', 'q2-btn'], 'click');\n await page.waitForChanges();\n\n expect(await getNestedElementProperty(page, popoverSelector, 'open')).toEqual(false);\n expect(await getNestedElementStyle(page, swiperSelector, 'left')).toEqual('0px');\n expect(await getNestedElementStyle(page, swiperSelector, 'transform')).toEqual(transformMatrix);\n });\n\n it('closes the dropdown when a static element is clicked', async () => {\n const popoverSelector = ['#pane-1 q2-dropdown', 'q2-popover'];\n\n expect(await getNestedElementProperty(page, popoverSelector, 'open')).toBeUndefined();\n\n await dispatchEvent(page, ['#pane-1 q2-dropdown', 'q2-btn'], 'click');\n await page.waitForChanges();\n\n expect(await getNestedElementProperty(page, popoverSelector, 'open')).toEqual(true);\n\n await page.click('#pane-1 p');\n await page.waitForChanges();\n\n expect(await getNestedElementProperty(page, popoverSelector, 'open')).toEqual(false);\n });\n\n it('closes the dropdown when another focusable element is clicked', async () => {\n const popoverSelector = ['#pane-1 q2-dropdown', 'q2-popover'];\n\n expect(await getNestedElementProperty(page, popoverSelector, 'open')).toBeUndefined();\n\n await dispatchEvent(page, ['#pane-1 q2-dropdown', 'q2-btn'], 'click');\n await page.waitForChanges();\n\n expect(await getNestedElementProperty(page, popoverSelector, 'open')).toEqual(true);\n\n await page.click('#pane-1 button');\n await page.waitForChanges();\n\n expect(await getNestedElementProperty(page, popoverSelector, 'open')).toEqual(false);\n });\n });\n\n describe('@Props', () => {\n describe('framelessPanes', () => {\n describe('when not provided', () => {\n it('does not set slot-frameless on panes', async () => {\n const page = await setup({\n html: renderCarousel(3, { framelessPanes: false }),\n });\n\n const swiperContainer = await page.find('.q2-carousel-swiper-container');\n expect(swiperContainer).not.toHaveClass('frameless-display');\n\n const panes = await page.findAll('q2-carousel-pane');\n expect(panes.every(async pane => (await pane.getProperty('slotFrameless')) === false)).toBeTruthy();\n });\n });\n\n describe('when provided', () => {\n it('sets slot-frameless on panes', async () => {\n const page = await setup({\n html: renderCarousel(3, { framelessPanes: true }),\n });\n\n const swiperContainer = await page.find('.q2-carousel-swiper-container');\n expect(swiperContainer).toHaveClass('frameless-display');\n\n const panes = await page.findAll('q2-carousel-pane');\n expect(panes.every(async pane => (await pane.getProperty('slotFrameless')) === true)).toBeTruthy();\n });\n });\n });\n\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"]}
|