q2-tecton-elements 1.52.2 → 1.54.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle-report.json +43422 -0
- package/dist/cjs/{action-sheet-d32c41ae.js → action-sheet-8254c0fd.js} +6 -3
- package/dist/cjs/action-sheet-8254c0fd.js.map +1 -0
- package/dist/cjs/click-elsewhere.cjs.entry.js +96 -0
- package/dist/cjs/click-elsewhere.cjs.entry.js.map +1 -0
- package/dist/cjs/{index-07285783.js → index-76f63767.js} +1 -21
- package/dist/cjs/index-76f63767.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-action-group.cjs.entry.js +38 -17
- package/dist/cjs/q2-action-group.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-action-sheet.cjs.entry.js +1 -1
- package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
- package/dist/cjs/q2-avatar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-badge_7.cjs.entry.js +52 -18
- package/dist/cjs/q2-badge_7.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-calendar.cjs.entry.js +1 -1
- package/dist/cjs/q2-card.cjs.entry.js +1 -1
- package/dist/cjs/q2-carousel-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-area.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-bar.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-donut.cjs.entry.js +1 -1
- package/dist/cjs/q2-checkbox-group.cjs.entry.js +1 -1
- package/dist/cjs/q2-checkbox.cjs.entry.js +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 +17 -16
- package/dist/cjs/q2-dropdown-item.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +48 -99
- package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
- package/dist/cjs/q2-file-picker.cjs.entry.js +236 -0
- package/dist/cjs/q2-file-picker.cjs.entry.js.map +1 -0
- package/dist/cjs/q2-item_3.cjs.entry.js +251 -0
- package/dist/cjs/q2-item_3.cjs.entry.js.map +1 -0
- package/dist/cjs/q2-loc.cjs.entry.js +1 -1
- package/dist/cjs/q2-message.cjs.entry.js +1 -1
- package/dist/cjs/q2-month-picker.cjs.entry.js +1 -1
- package/dist/cjs/q2-optgroup.cjs.entry.js +1 -1
- package/dist/cjs/{q2-option-list.cjs.entry.js → q2-option-list_2.cjs.entry.js} +355 -21
- package/dist/cjs/q2-option-list_2.cjs.entry.js.map +1 -0
- package/dist/cjs/q2-option.cjs.entry.js +18 -4
- package/dist/cjs/q2-option.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-pagination.cjs.entry.js +4 -4
- package/dist/cjs/q2-pill.cjs.entry.js +14 -9
- package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
- package/dist/cjs/q2-radio.cjs.entry.js +1 -1
- package/dist/cjs/q2-relative-time.cjs.entry.js +2 -2
- package/dist/cjs/q2-resize-observer.cjs.entry.js +1 -1
- package/dist/cjs/q2-section.cjs.entry.js +3 -3
- package/dist/cjs/q2-select.cjs.entry.js +8 -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-vertical.cjs.entry.js +2 -2
- package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
- package/dist/cjs/q2-tag.cjs.entry.js +9 -4
- package/dist/cjs/q2-tag.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js +1 -1
- package/dist/cjs/q2-tooltip.cjs.entry.js +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/q2-action-group/q2-action-group.css +25 -8
- package/dist/collection/components/q2-action-group/q2-action-group.js +55 -33
- package/dist/collection/components/q2-action-group/q2-action-group.js.map +1 -1
- package/dist/collection/components/q2-action-group/test/q2-action-group.e2e.js +142 -6
- package/dist/collection/components/q2-action-group/test/q2-action-group.e2e.js.map +1 -1
- package/dist/collection/components/q2-action-group/test/q2-action-group.spec.js +126 -62
- package/dist/collection/components/q2-action-group/test/q2-action-group.spec.js.map +1 -1
- package/dist/collection/components/q2-action-sheet/test/q2-action-sheet-test.e2e.js +1 -1
- package/dist/collection/components/q2-action-sheet/test/q2-action-sheet-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-avatar/q2-avatar.css +5 -0
- package/dist/collection/components/q2-btn/q2-btn.css +74 -0
- package/dist/collection/components/q2-btn/q2-btn.js +50 -16
- package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
- package/dist/collection/components/q2-btn/test/q2-btn-test.e2e.js +29 -0
- package/dist/collection/components/q2-btn/test/q2-btn-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.js +83 -103
- package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
- package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js +188 -24
- package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.css +1 -1
- package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js +54 -16
- package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
- package/dist/collection/components/q2-file-picker/q2-file-picker.css +307 -0
- package/dist/collection/components/q2-file-picker/q2-file-picker.js +426 -0
- package/dist/collection/components/q2-file-picker/q2-file-picker.js.map +1 -0
- package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.e2e.js +11 -0
- package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.spec.js +435 -0
- package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.spec.js.map +1 -0
- package/dist/collection/components/q2-item/q2-item.css +3 -0
- package/dist/collection/components/q2-link/q2-link.js +26 -7
- package/dist/collection/components/q2-link/q2-link.js.map +1 -1
- package/dist/collection/components/q2-link/test/q2-link-test.e2e.js +20 -118
- package/dist/collection/components/q2-link/test/q2-link-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-link/test/q2-link-test.spec.js +193 -0
- package/dist/collection/components/q2-link/test/q2-link-test.spec.js.map +1 -0
- package/dist/collection/components/q2-list/q2-list.css +6 -0
- package/dist/collection/components/q2-loading/q2-loading.js +1 -1
- package/dist/collection/components/q2-loading/q2-loading.js.map +1 -1
- package/dist/collection/components/q2-option/q2-option.css +9 -3
- package/dist/collection/components/q2-option/q2-option.js +37 -4
- package/dist/collection/components/q2-option/q2-option.js.map +1 -1
- package/dist/collection/components/q2-option/test/q2-option-test.spec.js +22 -0
- package/dist/collection/components/q2-option/test/q2-option-test.spec.js.map +1 -1
- package/dist/collection/components/q2-option-list/q2-option-list.js +56 -29
- package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
- package/dist/collection/components/q2-option-list/test/q2-option-list.spec.js +489 -0
- package/dist/collection/components/q2-option-list/test/q2-option-list.spec.js.map +1 -0
- package/dist/collection/components/q2-pagination/q2-pagination.js +3 -3
- package/dist/collection/components/q2-pill/q2-pill.js +12 -7
- package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
- package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js +109 -1
- package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-popover/q2-popover.js +1 -1
- package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
- package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
- package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
- package/dist/collection/components/q2-section/q2-section.js +2 -2
- package/dist/collection/components/q2-select/q2-select.js +7 -4
- package/dist/collection/components/q2-select/q2-select.js.map +1 -1
- package/dist/collection/components/q2-select/test/q2-select-test.e2e.js +1 -14
- package/dist/collection/components/q2-select/test/q2-select-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
- package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
- package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
- package/dist/collection/components/q2-tag/q2-tag.js +7 -2
- package/dist/collection/components/q2-tag/q2-tag.js.map +1 -1
- package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js +1 -1
- package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js.map +1 -1
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
- package/dist/collection/utils/action-sheet.js +5 -2
- package/dist/collection/utils/action-sheet.js.map +1 -1
- package/dist/collection/utils/helpers.js +29 -3
- package/dist/collection/utils/helpers.js.map +1 -1
- package/dist/collection/utils/test/action-sheet-test.e2e.js +34 -6
- package/dist/collection/utils/test/action-sheet-test.e2e.js.map +1 -1
- package/dist/components/action-sheet.js +6 -3
- package/dist/components/action-sheet.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 -20
- package/dist/components/index2.js.map +1 -1
- package/dist/components/q2-action-group.js +41 -19
- package/dist/components/q2-action-group.js.map +1 -1
- package/dist/components/q2-avatar2.js +1 -1
- package/dist/components/q2-avatar2.js.map +1 -1
- package/dist/components/q2-btn2.js +50 -16
- package/dist/components/q2-btn2.js.map +1 -1
- package/dist/components/q2-dropdown-item2.js +19 -17
- package/dist/components/q2-dropdown-item2.js.map +1 -1
- package/dist/components/q2-dropdown.js +67 -110
- package/dist/components/q2-dropdown.js.map +1 -1
- package/dist/components/q2-file-picker.d.ts +11 -0
- package/dist/components/q2-file-picker.js +301 -0
- package/dist/components/q2-file-picker.js.map +1 -0
- package/dist/components/q2-item.js +1 -130
- package/dist/components/q2-item.js.map +1 -1
- package/dist/{esm/q2-item.entry.js → components/q2-item2.js} +29 -11
- package/dist/components/q2-item2.js.map +1 -0
- package/dist/components/q2-link.js +1 -86
- package/dist/components/q2-link.js.map +1 -1
- package/dist/{esm/q2-link.entry.js → components/q2-link2.js} +42 -10
- package/dist/components/q2-link2.js.map +1 -0
- package/dist/components/q2-list.js +1 -94
- package/dist/components/q2-list.js.map +1 -1
- package/dist/{esm/q2-list.entry.js → components/q2-list2.js} +30 -11
- package/dist/components/q2-list2.js.map +1 -0
- package/dist/components/q2-loading2.js.map +1 -1
- package/dist/components/q2-option-list2.js +44 -19
- package/dist/components/q2-option-list2.js.map +1 -1
- package/dist/components/q2-option2.js +20 -4
- package/dist/components/q2-option2.js.map +1 -1
- package/dist/components/q2-pagination.js +3 -3
- package/dist/components/q2-pill.js +13 -8
- package/dist/components/q2-pill.js.map +1 -1
- package/dist/components/q2-popover2.js +1 -1
- package/dist/components/q2-popover2.js.map +1 -1
- package/dist/components/q2-relative-time.js +1 -1
- package/dist/components/q2-resize-observer2.js +1 -1
- package/dist/components/q2-section.js +2 -2
- package/dist/components/q2-select2.js +8 -5
- package/dist/components/q2-select2.js.map +1 -1
- package/dist/components/q2-stepper-vertical.js +1 -1
- package/dist/components/q2-stepper.js +1 -1
- package/dist/components/q2-tab-container.js +1 -1
- package/dist/components/q2-tab-pane.js +1 -1
- package/dist/components/q2-tag.js +8 -3
- package/dist/components/q2-tag.js.map +1 -1
- package/dist/components/tecton-tab-pane.js +2 -2
- package/dist/esm/{action-sheet-e64cb6f7.js → action-sheet-1e24cb38.js} +7 -4
- package/dist/esm/action-sheet-1e24cb38.js.map +1 -0
- package/dist/esm/click-elsewhere.entry.js +92 -0
- package/dist/esm/click-elsewhere.entry.js.map +1 -0
- package/dist/esm/{index-d18e2a20.js → index-504f1a9e.js} +2 -21
- package/dist/esm/index-504f1a9e.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-action-group.entry.js +39 -18
- package/dist/esm/q2-action-group.entry.js.map +1 -1
- package/dist/esm/q2-action-sheet.entry.js +1 -1
- package/dist/esm/q2-avatar.entry.js +1 -1
- package/dist/esm/q2-avatar.entry.js.map +1 -1
- package/dist/esm/q2-badge_7.entry.js +52 -18
- package/dist/esm/q2-badge_7.entry.js.map +1 -1
- package/dist/esm/q2-calendar.entry.js +1 -1
- package/dist/esm/q2-card.entry.js +1 -1
- package/dist/esm/q2-carousel-pane.entry.js +1 -1
- package/dist/esm/q2-carousel.entry.js +1 -1
- package/dist/esm/q2-chart-area.entry.js +1 -1
- package/dist/esm/q2-chart-bar.entry.js +1 -1
- package/dist/esm/q2-chart-donut.entry.js +1 -1
- package/dist/esm/q2-checkbox-group.entry.js +1 -1
- package/dist/esm/q2-checkbox.entry.js +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 +18 -17
- package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
- package/dist/esm/q2-dropdown.entry.js +48 -99
- package/dist/esm/q2-dropdown.entry.js.map +1 -1
- package/dist/esm/q2-editable-field.entry.js +1 -1
- package/dist/esm/q2-file-picker.entry.js +232 -0
- package/dist/esm/q2-file-picker.entry.js.map +1 -0
- package/dist/esm/q2-item_3.entry.js +245 -0
- package/dist/esm/q2-item_3.entry.js.map +1 -0
- package/dist/esm/q2-loc.entry.js +1 -1
- package/dist/esm/q2-message.entry.js +1 -1
- package/dist/esm/q2-month-picker.entry.js +1 -1
- package/dist/esm/q2-optgroup.entry.js +1 -1
- package/dist/esm/{q2-option-list.entry.js → q2-option-list_2.entry.js} +355 -22
- package/dist/esm/q2-option-list_2.entry.js.map +1 -0
- package/dist/esm/q2-option.entry.js +18 -4
- package/dist/esm/q2-option.entry.js.map +1 -1
- package/dist/esm/q2-pagination.entry.js +4 -4
- package/dist/esm/q2-pill.entry.js +14 -9
- package/dist/esm/q2-pill.entry.js.map +1 -1
- package/dist/esm/q2-radio-group.entry.js +1 -1
- package/dist/esm/q2-radio.entry.js +1 -1
- package/dist/esm/q2-relative-time.entry.js +2 -2
- package/dist/esm/q2-resize-observer.entry.js +1 -1
- package/dist/esm/q2-section.entry.js +3 -3
- package/dist/esm/q2-select.entry.js +8 -5
- package/dist/esm/q2-select.entry.js.map +1 -1
- package/dist/esm/q2-stepper-pane.entry.js +1 -1
- package/dist/esm/q2-stepper-vertical.entry.js +2 -2
- package/dist/esm/q2-stepper.entry.js +2 -2
- package/dist/esm/q2-tag.entry.js +9 -4
- package/dist/esm/q2-tag.entry.js.map +1 -1
- package/dist/esm/q2-tecton-elements.js +1 -1
- package/dist/esm/q2-textarea.entry.js +1 -1
- package/dist/esm/q2-tooltip.entry.js +1 -1
- package/dist/esm/tecton-tab-pane.entry.js +2 -2
- package/dist/q2-tecton-elements/action-sheet-1e24cb38.js +80 -0
- package/dist/q2-tecton-elements/action-sheet-1e24cb38.js.map +1 -0
- package/dist/q2-tecton-elements/click-elsewhere.entry.js +90 -0
- package/dist/q2-tecton-elements/click-elsewhere.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{index-d18e2a20.js → index-504f1a9e.js} +51 -69
- package/dist/q2-tecton-elements/index-504f1a9e.js.map +1 -0
- package/dist/q2-tecton-elements/q2-action-group.entry.js +57 -33
- package/dist/q2-tecton-elements/q2-action-group.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-action-sheet.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-avatar.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-avatar.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-badge_7.entry.js +222 -181
- package/dist/q2-tecton-elements/q2-badge_7.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-calendar.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-carousel.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-chart-area.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-chart-bar.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-chart-donut.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-checkbox.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-data-table.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-detail.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +34 -34
- package/dist/q2-tecton-elements/q2-dropdown-item.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-dropdown.entry.js +86 -137
- package/dist/q2-tecton-elements/q2-dropdown.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-editable-field.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-file-picker.entry.js +339 -0
- package/dist/q2-tecton-elements/q2-file-picker.entry.js.map +1 -0
- package/dist/q2-tecton-elements/q2-item_3.entry.js +332 -0
- package/dist/q2-tecton-elements/q2-item_3.entry.js.map +1 -0
- package/dist/q2-tecton-elements/q2-loc.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-message.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-month-picker.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-optgroup.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-option-list_2.entry.js +902 -0
- package/dist/q2-tecton-elements/q2-option-list_2.entry.js.map +1 -0
- package/dist/q2-tecton-elements/q2-option.entry.js +31 -21
- package/dist/q2-tecton-elements/q2-option.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-pagination.entry.js +34 -34
- package/dist/q2-tecton-elements/q2-pill.entry.js +24 -20
- package/dist/q2-tecton-elements/q2-pill.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-radio-group.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-radio.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-relative-time.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-resize-observer.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-section.entry.js +19 -19
- package/dist/q2-tecton-elements/q2-select.entry.js +21 -18
- package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +37 -37
- package/dist/q2-tecton-elements/q2-stepper.entry.js +29 -29
- package/dist/q2-tecton-elements/q2-tag.entry.js +15 -11
- package/dist/q2-tecton-elements/q2-tag.entry.js.map +1 -1
- 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/q2-tecton-elements/q2-textarea.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-tooltip.entry.js +1 -1
- package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +6 -6
- package/dist/types/components/q2-action-group/q2-action-group.d.ts +19 -11
- package/dist/types/components/q2-btn/q2-btn.d.ts +8 -3
- package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +18 -9
- package/dist/types/components/q2-dropdown-item/q2-dropdown-item.d.ts +14 -1
- package/dist/types/components/q2-file-picker/q2-file-picker.d.ts +98 -0
- package/dist/types/components/q2-link/q2-link.d.ts +8 -6
- package/dist/types/components/q2-loading/q2-loading.d.ts +2 -2
- package/dist/types/components/q2-option/q2-option.d.ts +10 -1
- package/dist/types/components/q2-option-list/q2-option-list.d.ts +9 -8
- package/dist/types/components/q2-pill/q2-pill.d.ts +2 -2
- package/dist/types/components.d.ts +192 -28
- package/dist/types/util.d.ts +1 -0
- package/dist/types/utils/helpers.d.ts +1 -1
- package/package.json +4 -3
- package/dist/cjs/action-sheet-d32c41ae.js.map +0 -1
- package/dist/cjs/click-elsewhere_2.cjs.entry.js +0 -406
- package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +0 -1
- package/dist/cjs/index-07285783.js.map +0 -1
- package/dist/cjs/q2-item.cjs.entry.js +0 -120
- package/dist/cjs/q2-item.cjs.entry.js.map +0 -1
- package/dist/cjs/q2-link.cjs.entry.js +0 -64
- package/dist/cjs/q2-link.cjs.entry.js.map +0 -1
- package/dist/cjs/q2-list.cjs.entry.js +0 -83
- package/dist/cjs/q2-list.cjs.entry.js.map +0 -1
- package/dist/cjs/q2-option-list.cjs.entry.js.map +0 -1
- package/dist/esm/action-sheet-e64cb6f7.js.map +0 -1
- package/dist/esm/click-elsewhere_2.entry.js +0 -401
- package/dist/esm/click-elsewhere_2.entry.js.map +0 -1
- package/dist/esm/index-d18e2a20.js.map +0 -1
- package/dist/esm/q2-item.entry.js.map +0 -1
- package/dist/esm/q2-link.entry.js.map +0 -1
- package/dist/esm/q2-list.entry.js.map +0 -1
- package/dist/esm/q2-option-list.entry.js.map +0 -1
- package/dist/q2-tecton-elements/action-sheet-e64cb6f7.js +0 -77
- package/dist/q2-tecton-elements/action-sheet-e64cb6f7.js.map +0 -1
- package/dist/q2-tecton-elements/click-elsewhere_2.entry.js +0 -398
- package/dist/q2-tecton-elements/click-elsewhere_2.entry.js.map +0 -1
- package/dist/q2-tecton-elements/index-d18e2a20.js.map +0 -1
- package/dist/q2-tecton-elements/q2-item.entry.js +0 -158
- package/dist/q2-tecton-elements/q2-item.entry.js.map +0 -1
- package/dist/q2-tecton-elements/q2-link.entry.js +0 -83
- package/dist/q2-tecton-elements/q2-link.entry.js.map +0 -1
- package/dist/q2-tecton-elements/q2-list.entry.js +0 -100
- package/dist/q2-tecton-elements/q2-list.entry.js.map +0 -1
- package/dist/q2-tecton-elements/q2-option-list.entry.js +0 -585
- package/dist/q2-tecton-elements/q2-option-list.entry.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-link.js","sourceRoot":"","sources":["../../../src/components/q2-link/q2-link.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAsB,OAAO,EAAE,KAAK,EAAgB,MAAM,EAAE,MAAM,eAAe,CAAC;AAE7G,MAAM,OAAO,MAAM;;wBAWK,KAAK;oBAIV,GAAG;;;;;
|
|
1
|
+
{"version":3,"file":"q2-link.js","sourceRoot":"","sources":["../../../src/components/q2-link/q2-link.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, h, ComponentInterface, Element, Event, EventEmitter, Method } from '@stencil/core';\n@Component({ tag: 'q2-link', shadow: true, styleUrl: 'q2-link.scss' })\nexport class Q2Link implements ComponentInterface {\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n /** Determines whether the component and `tctClick` event are disabled. */\n @Prop({ reflect: true })\n disabled: boolean = false;\n\n /** The link when clicked. */\n @Prop({ reflect: true })\n href: string = '#';\n\n /** The [q2-icon](https://tecton.q2developer.com/design-system/q2-icon/) to display when `variant` is set to \"standalone\". */\n @Prop({ reflect: true })\n iconType: string = 'chevron-right';\n\n /** The displayed label to represent your link. */\n @Prop({ reflect: true })\n label: string;\n\n /** How much of the referrer to send when following the link. [See MDN for more information on referrerpolicy](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#referrerpolicy). */\n @Prop({ reflect: true })\n referrerpolicy: ReferrerPolicy;\n\n /** Where to display the linked URL. [See MDN for more information on target](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#target). */\n @Prop({ reflect: true })\n target: string; // _self | _blank\n\n /** Applies a `title` attribute to the anchor tag in the shadowRoot of the component. */\n @Prop({ reflect: true })\n tctTitle: string;\n\n /** Determines the visual display style of the link. */\n @Prop({ reflect: true })\n variant: string = 'inline';\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the link is clicked.\n * @legacyEvent\n */\n @Event()\n tctClick: EventEmitter<{ target: string; referrerpolicy: string; href: string }>;\n\n // #endregion\n // #region Public Methods API\n\n /**\n * A method for click.\n *\n * @testOnly\n */\n @Method()\n async clickLink() {\n const anchor = this.hostElement.shadowRoot.querySelector(`[test-id=\"linkAnchor\"]`);\n (anchor as HTMLAnchorElement)?.click();\n }\n\n // #endregion\n // #region Local Methods\n\n get classes(): string {\n const list = ['link-container'];\n if (this.variant) list.push(this.variant);\n if (!!this.disabled) list.push('disabled');\n return list.join(' ');\n }\n\n handleClick(event: MouseEvent) {\n event.stopPropagation();\n if (this.disabled) return;\n this.tctClick.emit({\n target: this.target,\n referrerpolicy: this.referrerpolicy,\n href: this.href,\n });\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n return this.variant === 'standalone' ? (\n <div\n class={this.classes}\n aria-label={this.label}\n >\n <a\n class=\"link\"\n onClick={e => this.handleClick(e)}\n href={!!this.disabled ? undefined : this.href}\n target={this.target || '_self'}\n referrerPolicy={this.referrerpolicy || undefined}\n title={this.tctTitle || undefined}\n test-id=\"linkAnchor\"\n >\n <span class=\"label\">{this.label}</span>\n <q2-icon type={this.iconType}></q2-icon>\n </a>\n </div>\n ) : (\n <a\n class={this.classes}\n onClick={e => this.handleClick(e)}\n href={!!this.disabled ? undefined : this.href}\n target={this.target || '_self'}\n referrerPolicy={this.referrerpolicy || undefined}\n title={this.tctTitle || undefined}\n test-id=\"linkAnchor\"\n >\n {this.label}\n </a>\n );\n }\n\n // #endregion\n}\n"]}
|
|
@@ -1,127 +1,10 @@
|
|
|
1
|
-
import { newSpecPage } from "@stencil/core/testing";
|
|
2
1
|
import { setup, evaluateA11y, getListOfStyleCompilationIssues } from "../../../utils/helpers";
|
|
3
|
-
import { Q2Link } from "../q2-link";
|
|
4
|
-
function createNewSpecPage(props) {
|
|
5
|
-
let htmlProps = '';
|
|
6
|
-
if (!!props.label) {
|
|
7
|
-
htmlProps += ` label="${props.label}"`;
|
|
8
|
-
}
|
|
9
|
-
if (!!props.href) {
|
|
10
|
-
htmlProps += ` href="${props.href}"`;
|
|
11
|
-
}
|
|
12
|
-
if (!!props.target) {
|
|
13
|
-
htmlProps += ` target="${props.target}"`;
|
|
14
|
-
}
|
|
15
|
-
if (!!props.variant) {
|
|
16
|
-
htmlProps += ` variant="${props.variant || 'inline'}"`;
|
|
17
|
-
}
|
|
18
|
-
if (!!props.referrerpolicy) {
|
|
19
|
-
htmlProps += ` referrerpolicy="${props.referrerpolicy}"`;
|
|
20
|
-
}
|
|
21
|
-
if (!!props.disabled) {
|
|
22
|
-
htmlProps += ` disabled=""`;
|
|
23
|
-
}
|
|
24
|
-
return newSpecPage({
|
|
25
|
-
components: [Q2Link],
|
|
26
|
-
html: `<q2-link ${htmlProps}></q2-link>`,
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
2
|
describe('q2-link', () => {
|
|
30
3
|
it('properly compiles CSS vars and functions', async () => {
|
|
31
4
|
const page = await setup({ html: '<q2-link></q2-link>' });
|
|
32
5
|
expect(await getListOfStyleCompilationIssues(page, 'q2-link')).toHaveLength(0);
|
|
33
6
|
});
|
|
34
|
-
describe('
|
|
35
|
-
it('Does not have accessibility violations for inline variant(default)', async () => {
|
|
36
|
-
const page = await setup({ html: `<q2-link label="Click me" href="https://q2.com" />` });
|
|
37
|
-
const hasViolations = await evaluateA11y(page);
|
|
38
|
-
expect(hasViolations).toBe(false);
|
|
39
|
-
});
|
|
40
|
-
it('Does not have accessibility violations for standalone variant', async () => {
|
|
41
|
-
const page = await setup({
|
|
42
|
-
html: `<q2-link label="Click me" href="https://q2.com" variant="standalone" />`,
|
|
43
|
-
});
|
|
44
|
-
const hasViolations = await evaluateA11y(page);
|
|
45
|
-
expect(hasViolations).toBe(false);
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
let page;
|
|
49
|
-
it('renders', async () => {
|
|
50
|
-
page = await createNewSpecPage({
|
|
51
|
-
label: 'Click me',
|
|
52
|
-
href: 'https://q2.com',
|
|
53
|
-
variant: 'standalone',
|
|
54
|
-
});
|
|
55
|
-
expect(page.root).toEqualHtml(`
|
|
56
|
-
<q2-link label="Click me" href="https://q2.com" variant="standalone">
|
|
57
|
-
<mock:shadow-root>
|
|
58
|
-
<div aria-label="Click me" class="link-container standalone">
|
|
59
|
-
<a class="link" href="https://q2.com" target="_self" test-id="linkAnchor">
|
|
60
|
-
<span class="label">Click me</span>
|
|
61
|
-
<q2-icon type="chevron-right"></q2-icon>
|
|
62
|
-
</a>
|
|
63
|
-
</div>
|
|
64
|
-
</mock:shadow-root>
|
|
65
|
-
</q2-link>
|
|
66
|
-
`);
|
|
67
|
-
});
|
|
68
|
-
describe('Props', () => {
|
|
69
|
-
it('should render with properties', async () => {
|
|
70
|
-
page = await createNewSpecPage({
|
|
71
|
-
label: 'Click me',
|
|
72
|
-
href: 'https://q2.com',
|
|
73
|
-
target: '_blank',
|
|
74
|
-
referrerpolicy: 'no-referrer',
|
|
75
|
-
variant: 'standalone',
|
|
76
|
-
});
|
|
77
|
-
expect(page.root.label).toBe('Click me');
|
|
78
|
-
expect(page.root.href).toBe('https://q2.com');
|
|
79
|
-
expect(page.root.target).toBe('_blank');
|
|
80
|
-
expect(page.root.variant).toBe('standalone');
|
|
81
|
-
expect(page.root.referrerpolicy).toBe('no-referrer');
|
|
82
|
-
});
|
|
83
|
-
it('should render with standalone variant', async () => {
|
|
84
|
-
page = await createNewSpecPage({
|
|
85
|
-
label: 'Click me',
|
|
86
|
-
href: 'https://q2.com',
|
|
87
|
-
target: '_blank',
|
|
88
|
-
referrerpolicy: 'no-referrer',
|
|
89
|
-
variant: 'standalone',
|
|
90
|
-
});
|
|
91
|
-
expect(page.root.label).toBe('Click me');
|
|
92
|
-
expect(page.root).toEqualHtml(`
|
|
93
|
-
<q2-link label="Click me" href="https://q2.com" variant="standalone" target="_blank" referrerpolicy="no-referrer">
|
|
94
|
-
<mock:shadow-root>
|
|
95
|
-
<div aria-label="Click me" class="link-container standalone">
|
|
96
|
-
<a class="link" href="https://q2.com" target="_blank" referrerpolicy="no-referrer" test-id="linkAnchor">
|
|
97
|
-
<span class="label">Click me</span>
|
|
98
|
-
<q2-icon type="chevron-right"></q2-icon>
|
|
99
|
-
</a>
|
|
100
|
-
</div>
|
|
101
|
-
</mock:shadow-root>
|
|
102
|
-
</q2-link>
|
|
103
|
-
`);
|
|
104
|
-
});
|
|
105
|
-
it('should render with inline variant', async () => {
|
|
106
|
-
page = await createNewSpecPage({
|
|
107
|
-
label: 'Click me',
|
|
108
|
-
href: 'https://q2.com',
|
|
109
|
-
target: '_blank',
|
|
110
|
-
referrerpolicy: 'no-referrer',
|
|
111
|
-
});
|
|
112
|
-
expect(page.root.label).toBe('Click me');
|
|
113
|
-
expect(page.root).toEqualHtml(`
|
|
114
|
-
<q2-link label="Click me" href="https://q2.com" variant="inline" target="_blank" referrerpolicy="no-referrer">
|
|
115
|
-
<mock:shadow-root>
|
|
116
|
-
<a href="https://q2.com" target="_blank" class="link-container inline" referrerpolicy="no-referrer" test-id="linkAnchor">
|
|
117
|
-
Click me
|
|
118
|
-
</a>
|
|
119
|
-
</mock:shadow-root>
|
|
120
|
-
</q2-link>
|
|
121
|
-
`);
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
describe('Test methods', () => {
|
|
7
|
+
describe('Test Methods', () => {
|
|
125
8
|
it('clickLink()', async () => {
|
|
126
9
|
const page = await setup({
|
|
127
10
|
html: `
|
|
@@ -141,5 +24,24 @@ describe('q2-link', () => {
|
|
|
141
24
|
expect(sortSpy).toHaveReceivedEventTimes(1);
|
|
142
25
|
});
|
|
143
26
|
});
|
|
27
|
+
describe('Accessibility', () => {
|
|
28
|
+
describe('aXe DevTools', () => {
|
|
29
|
+
it('Does not have accessibility violations for inline variant(default)', async () => {
|
|
30
|
+
const page = await setup({ html: `<q2-link label="Click me" href="https://q2.com"></q2-link>` });
|
|
31
|
+
const hasViolations = await evaluateA11y(page);
|
|
32
|
+
expect(hasViolations).toBe(false);
|
|
33
|
+
});
|
|
34
|
+
it('Does not have accessibility violations for standalone variant', async () => {
|
|
35
|
+
const page = await setup({
|
|
36
|
+
html: `<q2-link label="Click me" href="https://q2.com" variant="standalone"></q2-link>`,
|
|
37
|
+
});
|
|
38
|
+
const hasViolations = await evaluateA11y(page);
|
|
39
|
+
expect(hasViolations).toBe(false);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
describe('Accessibility Tree', () => { });
|
|
43
|
+
describe('Keyboard Controls', () => { });
|
|
44
|
+
describe('Other', () => { });
|
|
45
|
+
});
|
|
144
46
|
});
|
|
145
47
|
//# sourceMappingURL=q2-link-test.e2e.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-link-test.e2e.js","sourceRoot":"","sources":["../../../../src/components/q2-link/test/q2-link-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { SpecPage, newSpecPage } from '@stencil/core/testing';\nimport { setup, evaluateA11y, getListOfStyleCompilationIssues } from '@/utils/helpers';\nimport { Q2Link } from '../q2-link';\n\nfunction createNewSpecPage(props: {\n label?: string;\n href?: string;\n target?: string;\n variant?: string;\n referrerpolicy?: string;\n disabled?: boolean;\n}) {\n let htmlProps: string = '';\n if (!!props.label) {\n htmlProps += ` label=\"${props.label}\"`;\n }\n if (!!props.href) {\n htmlProps += ` href=\"${props.href}\"`;\n }\n if (!!props.target) {\n htmlProps += ` target=\"${props.target}\"`;\n }\n if (!!props.variant) {\n htmlProps += ` variant=\"${props.variant || 'inline'}\"`;\n }\n if (!!props.referrerpolicy) {\n htmlProps += ` referrerpolicy=\"${props.referrerpolicy}\"`;\n }\n if (!!props.disabled) {\n htmlProps += ` disabled=\"\"`;\n }\n\n return newSpecPage({\n components: [Q2Link],\n html: `<q2-link ${htmlProps}></q2-link>`,\n });\n}\n\ndescribe('q2-link', () => {\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-link></q2-link>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-link')).toHaveLength(0);\n });\n\n describe('[A11y] guideline compliance', () => {\n it('Does not have accessibility violations for inline variant(default)', async () => {\n const page = await setup({ html: `<q2-link label=\"Click me\" href=\"https://q2.com\" />` });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n it('Does not have accessibility violations for standalone variant', async () => {\n const page = await setup({\n html: `<q2-link label=\"Click me\" href=\"https://q2.com\" variant=\"standalone\" />`,\n });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n });\n\n let page: SpecPage;\n\n it('renders', async () => {\n page = await createNewSpecPage({\n label: 'Click me',\n href: 'https://q2.com',\n variant: 'standalone',\n });\n\n expect(page.root).toEqualHtml(`\n <q2-link label=\"Click me\" href=\"https://q2.com\" variant=\"standalone\">\n <mock:shadow-root>\n <div aria-label=\"Click me\" class=\"link-container standalone\">\n <a class=\"link\" href=\"https://q2.com\" target=\"_self\" test-id=\"linkAnchor\">\n <span class=\"label\">Click me</span>\n <q2-icon type=\"chevron-right\"></q2-icon>\n </a>\n </div>\n </mock:shadow-root>\n </q2-link>\n `);\n });\n\n describe('Props', () => {\n it('should render with properties', async () => {\n page = await createNewSpecPage({\n label: 'Click me',\n href: 'https://q2.com',\n target: '_blank',\n referrerpolicy: 'no-referrer',\n variant: 'standalone',\n });\n expect(page.root.label).toBe('Click me');\n expect(page.root.href).toBe('https://q2.com');\n expect(page.root.target).toBe('_blank');\n expect(page.root.variant).toBe('standalone');\n expect(page.root.referrerpolicy).toBe('no-referrer');\n });\n it('should render with standalone variant', async () => {\n page = await createNewSpecPage({\n label: 'Click me',\n href: 'https://q2.com',\n target: '_blank',\n referrerpolicy: 'no-referrer',\n variant: 'standalone',\n });\n expect(page.root.label).toBe('Click me');\n expect(page.root).toEqualHtml(`\n <q2-link label=\"Click me\" href=\"https://q2.com\" variant=\"standalone\" target=\"_blank\" referrerpolicy=\"no-referrer\">\n <mock:shadow-root>\n <div aria-label=\"Click me\" class=\"link-container standalone\">\n <a class=\"link\" href=\"https://q2.com\" target=\"_blank\" referrerpolicy=\"no-referrer\" test-id=\"linkAnchor\">\n <span class=\"label\">Click me</span>\n <q2-icon type=\"chevron-right\"></q2-icon>\n </a>\n </div>\n </mock:shadow-root>\n </q2-link>\n `);\n });\n it('should render with inline variant', async () => {\n page = await createNewSpecPage({\n label: 'Click me',\n href: 'https://q2.com',\n target: '_blank',\n referrerpolicy: 'no-referrer',\n });\n expect(page.root.label).toBe('Click me');\n expect(page.root).toEqualHtml(`\n <q2-link label=\"Click me\" href=\"https://q2.com\" variant=\"inline\" target=\"_blank\" referrerpolicy=\"no-referrer\">\n <mock:shadow-root>\n <a href=\"https://q2.com\" target=\"_blank\" class=\"link-container inline\" referrerpolicy=\"no-referrer\" test-id=\"linkAnchor\">\n Click me\n </a>\n </mock:shadow-root>\n </q2-link>\n `);\n });\n });\n\n describe('Test methods', () => {\n it('clickLink()', async () => {\n const page = await setup({\n html: `\n <q2-link label=\"Click me\"\n href=\"https://q2.com\"\n variant=\"inline\"\n target=\"_blank\"\n referrerpolicy=\"no-referrer\">\n </q2-link>\n `,\n });\n await page.waitForChanges();\n const sortSpy = await page.spyOnEvent('tctClick');\n const link = await page.find('q2-link');\n await link.callMethod('clickLink');\n await page.waitForChanges();\n expect(sortSpy).toHaveReceivedEventTimes(1);\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"q2-link-test.e2e.js","sourceRoot":"","sources":["../../../../src/components/q2-link/test/q2-link-test.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,+BAA+B,EAAE,MAAM,iBAAiB,CAAC;AAEvF,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACrB,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,+BAA+B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;YACzB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;gBACrB,IAAI,EAAE;;;;;;;iBAOL;aACJ,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,CAAC,OAAO,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;YAC1B,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;gBAChF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,4DAA4D,EAAE,CAAC,CAAC;gBACjG,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC/C,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;gBAC3E,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;oBACrB,IAAI,EAAE,iFAAiF;iBAC1F,CAAC,CAAC;gBACH,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC/C,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACzC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACxC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { setup, evaluateA11y, getListOfStyleCompilationIssues } from '@/utils/helpers';\n\ndescribe('q2-link', () => {\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-link></q2-link>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-link')).toHaveLength(0);\n });\n\n describe('Test Methods', () => {\n it('clickLink()', async () => {\n const page = await setup({\n html: `\n <q2-link label=\"Click me\"\n href=\"https://q2.com\"\n variant=\"inline\"\n target=\"_blank\"\n referrerpolicy=\"no-referrer\">\n </q2-link>\n `,\n });\n await page.waitForChanges();\n const sortSpy = await page.spyOnEvent('tctClick');\n const link = await page.find('q2-link');\n await link.callMethod('clickLink');\n await page.waitForChanges();\n expect(sortSpy).toHaveReceivedEventTimes(1);\n });\n });\n\n describe('Accessibility', () => {\n describe('aXe DevTools', () => {\n it('Does not have accessibility violations for inline variant(default)', async () => {\n const page = await setup({ html: `<q2-link label=\"Click me\" href=\"https://q2.com\"></q2-link>` });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n\n it('Does not have accessibility violations for standalone variant', async () => {\n const page = await setup({\n html: `<q2-link label=\"Click me\" href=\"https://q2.com\" variant=\"standalone\"></q2-link>`,\n });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n });\n describe('Accessibility Tree', () => {});\n describe('Keyboard Controls', () => {});\n describe('Other', () => {});\n });\n});\n"]}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { newSpecPage } from "@stencil/core/testing";
|
|
2
|
+
import { Q2Link } from "../q2-link";
|
|
3
|
+
function createNewSpecPage(props) {
|
|
4
|
+
let htmlProps = '';
|
|
5
|
+
if (!!props.label) {
|
|
6
|
+
htmlProps += ` label="${props.label}"`;
|
|
7
|
+
}
|
|
8
|
+
if (!!props.iconType) {
|
|
9
|
+
htmlProps += ` icon-type="${props.iconType}"`;
|
|
10
|
+
}
|
|
11
|
+
if (!!props.href) {
|
|
12
|
+
htmlProps += ` href="${props.href}"`;
|
|
13
|
+
}
|
|
14
|
+
if (!!props.target) {
|
|
15
|
+
htmlProps += ` target="${props.target}"`;
|
|
16
|
+
}
|
|
17
|
+
if (!!props.variant) {
|
|
18
|
+
htmlProps += ` variant="${props.variant || 'inline'}"`;
|
|
19
|
+
}
|
|
20
|
+
if (!!props.referrerpolicy) {
|
|
21
|
+
htmlProps += ` referrerpolicy="${props.referrerpolicy}"`;
|
|
22
|
+
}
|
|
23
|
+
if (!!props.disabled) {
|
|
24
|
+
htmlProps += ` disabled=""`;
|
|
25
|
+
}
|
|
26
|
+
return newSpecPage({
|
|
27
|
+
components: [Q2Link],
|
|
28
|
+
html: `<q2-link ${htmlProps}></q2-link>`,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
describe('q2-link', () => {
|
|
32
|
+
let specPage;
|
|
33
|
+
let linkClass;
|
|
34
|
+
let linkElement;
|
|
35
|
+
it('renders', async () => {
|
|
36
|
+
specPage = await createNewSpecPage({
|
|
37
|
+
label: 'Click me',
|
|
38
|
+
href: 'https://q2.com',
|
|
39
|
+
variant: 'standalone',
|
|
40
|
+
});
|
|
41
|
+
expect(specPage.root).toEqualHtml(`
|
|
42
|
+
<q2-link label="Click me" icon-type="chevron-right" href="https://q2.com" variant="standalone" >
|
|
43
|
+
<mock:shadow-root>
|
|
44
|
+
<div aria-label="Click me" class="link-container standalone">
|
|
45
|
+
<a class="link" href="https://q2.com" target="_self" test-id="linkAnchor">
|
|
46
|
+
<span class="label">Click me</span>
|
|
47
|
+
<q2-icon type="chevron-right"></q2-icon>
|
|
48
|
+
</a>
|
|
49
|
+
</div>
|
|
50
|
+
</mock:shadow-root>
|
|
51
|
+
</q2-link>
|
|
52
|
+
`);
|
|
53
|
+
});
|
|
54
|
+
describe('Props', () => {
|
|
55
|
+
it('should render with properties', async () => {
|
|
56
|
+
specPage = await createNewSpecPage({
|
|
57
|
+
label: 'Click me',
|
|
58
|
+
iconType: 'external-link',
|
|
59
|
+
href: 'https://q2.com',
|
|
60
|
+
target: '_blank',
|
|
61
|
+
referrerpolicy: 'no-referrer',
|
|
62
|
+
variant: 'standalone',
|
|
63
|
+
});
|
|
64
|
+
linkElement = specPage.root;
|
|
65
|
+
expect(linkElement.getAttribute('label')).toBe('Click me');
|
|
66
|
+
expect(linkElement.getAttribute('icon-type')).toBe('external-link');
|
|
67
|
+
expect(linkElement.getAttribute('href')).toBe('https://q2.com');
|
|
68
|
+
expect(linkElement.getAttribute('target')).toBe('_blank');
|
|
69
|
+
expect(linkElement.getAttribute('variant')).toBe('standalone');
|
|
70
|
+
expect(linkElement.getAttribute('referrerpolicy')).toBe('no-referrer');
|
|
71
|
+
});
|
|
72
|
+
it('should render with standalone variant', async () => {
|
|
73
|
+
specPage = await createNewSpecPage({
|
|
74
|
+
label: 'Click me',
|
|
75
|
+
href: 'https://q2.com',
|
|
76
|
+
target: '_blank',
|
|
77
|
+
referrerpolicy: 'no-referrer',
|
|
78
|
+
variant: 'standalone',
|
|
79
|
+
});
|
|
80
|
+
linkElement = specPage.root;
|
|
81
|
+
const icon = linkElement.shadowRoot.querySelector('q2-icon');
|
|
82
|
+
expect(linkElement.getAttribute('variant')).toBe('standalone');
|
|
83
|
+
expect(icon).not.toBeNull();
|
|
84
|
+
});
|
|
85
|
+
it('should render with inline variant', async () => {
|
|
86
|
+
specPage = await createNewSpecPage({
|
|
87
|
+
label: 'Click me',
|
|
88
|
+
href: 'https://q2.com',
|
|
89
|
+
target: '_blank',
|
|
90
|
+
referrerpolicy: 'no-referrer',
|
|
91
|
+
});
|
|
92
|
+
linkElement = specPage.root;
|
|
93
|
+
const container = linkElement.shadowRoot.querySelector('.link-container');
|
|
94
|
+
expect(linkElement.getAttribute('variant')).toBe('inline');
|
|
95
|
+
expect(container.className).toContain('inline');
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
describe('Events', () => {
|
|
99
|
+
describe('tctClick', () => {
|
|
100
|
+
it('emits with proper data', async () => {
|
|
101
|
+
specPage = await createNewSpecPage({
|
|
102
|
+
label: 'Click me',
|
|
103
|
+
href: 'https://q2.com',
|
|
104
|
+
target: '_blank',
|
|
105
|
+
referrerpolicy: 'no-referrer',
|
|
106
|
+
});
|
|
107
|
+
linkClass = specPage.rootInstance;
|
|
108
|
+
const event = new CustomEvent('tctClick');
|
|
109
|
+
const tctClickSpy = jest.spyOn(linkClass.tctClick, 'emit');
|
|
110
|
+
linkClass.handleClick(event);
|
|
111
|
+
expect(tctClickSpy).toHaveBeenCalled();
|
|
112
|
+
expect(tctClickSpy).toHaveBeenCalledWith({
|
|
113
|
+
target: '_blank',
|
|
114
|
+
referrerpolicy: 'no-referrer',
|
|
115
|
+
href: 'https://q2.com',
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
describe('Local Methods', () => {
|
|
121
|
+
describe('Getters', () => {
|
|
122
|
+
describe('classes', () => {
|
|
123
|
+
it('returns the variant and "link-container"', async () => {
|
|
124
|
+
specPage = await createNewSpecPage({
|
|
125
|
+
label: 'Click me',
|
|
126
|
+
href: 'https://q2.com',
|
|
127
|
+
target: '_blank',
|
|
128
|
+
referrerpolicy: 'no-referrer',
|
|
129
|
+
});
|
|
130
|
+
linkClass = specPage.rootInstance;
|
|
131
|
+
expect(linkClass.classes).toContain('link-container');
|
|
132
|
+
expect(linkClass.classes).toContain('inline');
|
|
133
|
+
});
|
|
134
|
+
it('returns the variant when explicitly set to standalone', async () => {
|
|
135
|
+
specPage = await createNewSpecPage({
|
|
136
|
+
label: 'Click me',
|
|
137
|
+
href: 'https://q2.com',
|
|
138
|
+
target: '_blank',
|
|
139
|
+
referrerpolicy: 'no-referrer',
|
|
140
|
+
variant: 'standalone',
|
|
141
|
+
});
|
|
142
|
+
linkClass = specPage.rootInstance;
|
|
143
|
+
expect(linkClass.classes).toContain('standalone');
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
describe('Methods', () => {
|
|
148
|
+
describe('handleClick()', () => {
|
|
149
|
+
it('calls stopPropogation', async () => {
|
|
150
|
+
specPage = await createNewSpecPage({
|
|
151
|
+
label: 'Click me',
|
|
152
|
+
href: 'https://q2.com',
|
|
153
|
+
target: '_blank',
|
|
154
|
+
referrerpolicy: 'no-referrer',
|
|
155
|
+
});
|
|
156
|
+
linkClass = specPage.rootInstance;
|
|
157
|
+
const event = new CustomEvent('tctClick');
|
|
158
|
+
const stopPropagationSpy = jest.spyOn(event, 'stopPropagation');
|
|
159
|
+
linkClass.handleClick(event);
|
|
160
|
+
expect(stopPropagationSpy).toHaveBeenCalled();
|
|
161
|
+
});
|
|
162
|
+
it('does not emit tctClick event if disabled is true', async () => {
|
|
163
|
+
specPage = await createNewSpecPage({
|
|
164
|
+
label: 'Click me',
|
|
165
|
+
href: 'https://q2.com',
|
|
166
|
+
target: '_blank',
|
|
167
|
+
referrerpolicy: 'no-referrer',
|
|
168
|
+
});
|
|
169
|
+
linkClass = specPage.rootInstance;
|
|
170
|
+
linkClass.disabled = true;
|
|
171
|
+
const event = new CustomEvent('tctClick');
|
|
172
|
+
const tctClickSpy = jest.spyOn(linkClass.tctClick, 'emit');
|
|
173
|
+
linkClass.handleClick(event);
|
|
174
|
+
expect(tctClickSpy).not.toHaveBeenCalled();
|
|
175
|
+
});
|
|
176
|
+
it('emits the tctClick event when disabled is false', async () => {
|
|
177
|
+
specPage = await createNewSpecPage({
|
|
178
|
+
label: 'Click me',
|
|
179
|
+
href: 'https://q2.com',
|
|
180
|
+
target: '_blank',
|
|
181
|
+
referrerpolicy: 'no-referrer',
|
|
182
|
+
});
|
|
183
|
+
linkClass = specPage.rootInstance;
|
|
184
|
+
const event = new CustomEvent('tctClick');
|
|
185
|
+
const tctClickSpy = jest.spyOn(linkClass.tctClick, 'emit');
|
|
186
|
+
linkClass.handleClick(event);
|
|
187
|
+
expect(tctClickSpy).toHaveBeenCalled();
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
//# sourceMappingURL=q2-link-test.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"q2-link-test.spec.js","sourceRoot":"","sources":["../../../../src/components/q2-link/test/q2-link-test.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { newSpecPage } from '@stencil/core/testing';\nimport { Q2Link } from '../q2-link';\n\nfunction createNewSpecPage(props: {\n label?: string;\n iconType?: string;\n href?: string;\n target?: string;\n variant?: string;\n referrerpolicy?: string;\n disabled?: boolean;\n}) {\n let htmlProps: string = '';\n if (!!props.label) {\n htmlProps += ` label=\"${props.label}\"`;\n }\n if (!!props.iconType) {\n htmlProps += ` icon-type=\"${props.iconType}\"`;\n }\n if (!!props.href) {\n htmlProps += ` href=\"${props.href}\"`;\n }\n if (!!props.target) {\n htmlProps += ` target=\"${props.target}\"`;\n }\n if (!!props.variant) {\n htmlProps += ` variant=\"${props.variant || 'inline'}\"`;\n }\n if (!!props.referrerpolicy) {\n htmlProps += ` referrerpolicy=\"${props.referrerpolicy}\"`;\n }\n if (!!props.disabled) {\n htmlProps += ` disabled=\"\"`;\n }\n\n return newSpecPage({\n components: [Q2Link],\n html: `<q2-link ${htmlProps}></q2-link>`,\n });\n}\n\ndescribe('q2-link', () => {\n let specPage;\n let linkClass;\n let linkElement;\n\n it('renders', async () => {\n specPage = await createNewSpecPage({\n label: 'Click me',\n href: 'https://q2.com',\n variant: 'standalone',\n });\n\n expect(specPage.root).toEqualHtml(`\n <q2-link label=\"Click me\" icon-type=\"chevron-right\" href=\"https://q2.com\" variant=\"standalone\" >\n <mock:shadow-root>\n <div aria-label=\"Click me\" class=\"link-container standalone\">\n <a class=\"link\" href=\"https://q2.com\" target=\"_self\" test-id=\"linkAnchor\">\n <span class=\"label\">Click me</span>\n <q2-icon type=\"chevron-right\"></q2-icon>\n </a>\n </div>\n </mock:shadow-root>\n </q2-link>\n `);\n });\n\n describe('Props', () => {\n it('should render with properties', async () => {\n specPage = await createNewSpecPage({\n label: 'Click me',\n iconType: 'external-link',\n href: 'https://q2.com',\n target: '_blank',\n referrerpolicy: 'no-referrer',\n variant: 'standalone',\n });\n linkElement = specPage.root;\n expect(linkElement.getAttribute('label')).toBe('Click me');\n expect(linkElement.getAttribute('icon-type')).toBe('external-link');\n expect(linkElement.getAttribute('href')).toBe('https://q2.com');\n expect(linkElement.getAttribute('target')).toBe('_blank');\n expect(linkElement.getAttribute('variant')).toBe('standalone');\n expect(linkElement.getAttribute('referrerpolicy')).toBe('no-referrer');\n });\n\n it('should render with standalone variant', async () => {\n specPage = await createNewSpecPage({\n label: 'Click me',\n href: 'https://q2.com',\n target: '_blank',\n referrerpolicy: 'no-referrer',\n variant: 'standalone',\n });\n linkElement = specPage.root;\n const icon = linkElement.shadowRoot.querySelector('q2-icon');\n expect(linkElement.getAttribute('variant')).toBe('standalone');\n expect(icon).not.toBeNull();\n });\n\n it('should render with inline variant', async () => {\n specPage = await createNewSpecPage({\n label: 'Click me',\n href: 'https://q2.com',\n target: '_blank',\n referrerpolicy: 'no-referrer',\n });\n linkElement = specPage.root;\n const container = linkElement.shadowRoot.querySelector('.link-container');\n expect(linkElement.getAttribute('variant')).toBe('inline');\n expect(container.className).toContain('inline');\n });\n });\n\n describe('Events', () => {\n describe('tctClick', () => {\n it('emits with proper data', async () => {\n specPage = await createNewSpecPage({\n label: 'Click me',\n href: 'https://q2.com',\n target: '_blank',\n referrerpolicy: 'no-referrer',\n });\n linkClass = specPage.rootInstance;\n const event = new CustomEvent('tctClick');\n const tctClickSpy = jest.spyOn(linkClass.tctClick, 'emit');\n linkClass.handleClick(event);\n expect(tctClickSpy).toHaveBeenCalled();\n expect(tctClickSpy).toHaveBeenCalledWith({\n target: '_blank',\n referrerpolicy: 'no-referrer',\n href: 'https://q2.com',\n });\n });\n });\n });\n\n describe('Local Methods', () => {\n describe('Getters', () => {\n describe('classes', () => {\n it('returns the variant and \"link-container\"', async () => {\n specPage = await createNewSpecPage({\n label: 'Click me',\n href: 'https://q2.com',\n target: '_blank',\n referrerpolicy: 'no-referrer',\n });\n linkClass = specPage.rootInstance;\n expect(linkClass.classes).toContain('link-container');\n expect(linkClass.classes).toContain('inline');\n });\n\n it('returns the variant when explicitly set to standalone', async () => {\n specPage = await createNewSpecPage({\n label: 'Click me',\n href: 'https://q2.com',\n target: '_blank',\n referrerpolicy: 'no-referrer',\n variant: 'standalone',\n });\n linkClass = specPage.rootInstance;\n expect(linkClass.classes).toContain('standalone');\n });\n });\n });\n\n describe('Methods', () => {\n describe('handleClick()', () => {\n it('calls stopPropogation', async () => {\n specPage = await createNewSpecPage({\n label: 'Click me',\n href: 'https://q2.com',\n target: '_blank',\n referrerpolicy: 'no-referrer',\n });\n linkClass = specPage.rootInstance;\n const event = new CustomEvent('tctClick');\n const stopPropagationSpy = jest.spyOn(event, 'stopPropagation');\n linkClass.handleClick(event);\n expect(stopPropagationSpy).toHaveBeenCalled();\n });\n\n it('does not emit tctClick event if disabled is true', async () => {\n specPage = await createNewSpecPage({\n label: 'Click me',\n href: 'https://q2.com',\n target: '_blank',\n referrerpolicy: 'no-referrer',\n });\n linkClass = specPage.rootInstance;\n linkClass.disabled = true;\n const event = new CustomEvent('tctClick');\n const tctClickSpy = jest.spyOn(linkClass.tctClick, 'emit');\n linkClass.handleClick(event);\n expect(tctClickSpy).not.toHaveBeenCalled();\n });\n\n it('emits the tctClick event when disabled is false', async () => {\n specPage = await createNewSpecPage({\n label: 'Click me',\n href: 'https://q2.com',\n target: '_blank',\n referrerpolicy: 'no-referrer',\n });\n linkClass = specPage.rootInstance;\n const event = new CustomEvent('tctClick');\n const tctClickSpy = jest.spyOn(linkClass.tctClick, 'emit');\n linkClass.handleClick(event);\n expect(tctClickSpy).toHaveBeenCalled();\n });\n });\n });\n });\n});\n"]}
|
|
@@ -167,4 +167,10 @@ button {
|
|
|
167
167
|
font-size: var(--tct-list-label-font-size, var(--app-font-size, 14px));
|
|
168
168
|
font-weight: var(--tct-list-label-font-weight, 600);
|
|
169
169
|
color: var(--tct-list-label-font-color, var(--t-text, #4d4d4d));
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
slot:not([name]) {
|
|
173
|
+
display: flex;
|
|
174
|
+
flex-direction: column;
|
|
175
|
+
gap: var(--tct-list-item-gap, 0);
|
|
170
176
|
}
|
|
@@ -117,7 +117,7 @@ export class Q2Loading {
|
|
|
117
117
|
"optional": false,
|
|
118
118
|
"docs": {
|
|
119
119
|
"tags": [],
|
|
120
|
-
"text": "Numeric adjustments are available for specific `type` and `shape` combinations.\nThese may impact the number of items, columns, and/or rows that display.\n\nWhen `shape=\"text\"`, `shape=\"detailed-item\"`, or `shape=\"label-value\"`, the `counts` attribute determines the number of rows to display.\n\nWhen `shape=\"table\"`, the `counts` attribute can be used in two ways:\n\n1. `counts=\"CxR\"` = Provides a skeleton table of `C` columns and `R` rows. The default value is `\"5x5\"\n2. `counts=\"N\"` - Provides a skeleton table of `N` columns and 5 rows.\n\nWhen `shape=\"form\"`, the `counts` attribute can be used in two ways:\n\n1. `
|
|
120
|
+
"text": "Numeric adjustments are available for specific `type` and `shape` combinations.\nThese may impact the number of items, columns, and/or rows that display.\n\nWhen `shape=\"text\"`, `shape=\"detailed-item\"`, or `shape=\"label-value\"`, the `counts` attribute determines the number of rows to display.\n\nWhen `shape=\"table\"`, the `counts` attribute can be used in two ways:\n\n1. `counts=\"CxR\"` = Provides a skeleton table of `C` columns and `R` rows. The default value is `\"5x5\"\n2. `counts=\"N\"` - Provides a skeleton table of `N` columns and 5 rows.\n\nWhen `shape=\"form\"`, the `counts` attribute can be used in two ways:\n\n1. `counts=\"CxR\" - Provides a skeleton form of `C` columns and `R` rows of fields. The default value is `\"1x1\"`.\n2. `counts=\"N\"` - Provides a skeleton form of `N` fields stacked in single columns."
|
|
121
121
|
},
|
|
122
122
|
"attribute": "counts",
|
|
123
123
|
"reflect": true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-loading.js","sourceRoot":"","sources":["../../../src/components/q2-loading/q2-loading.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAsB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAG/C,MAAM,OAAO,SAAS;;QA+HlB,sBAAiB,GAAG,GAAG,EAAE;YACrB,OAAO,CACH,WACI,KAAK,EAAC,0CAA0C,gBACpC,IAAI,CAAC,cAAc,EAC/B,IAAI,EAAC,QAAQ,eACH,QAAQ;gBAElB,WAAK,KAAK,EAAC,iBAAiB,GAAO;gBACnC,WAAK,KAAK,EAAC,iBAAiB,GAAO,CACjC,CACT,CAAC;QACN,CAAC,CAAC;QAEF,mBAAc,GAAG,GAAG,EAAE;YAClB,OAAO,CACH,WACI,KAAK,EAAC,qBAAqB,gBACf,IAAI,CAAC,cAAc,EAC/B,IAAI,EAAC,QAAQ,eACH,QAAQ;gBAEjB,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa;gBACxD,WAAK,KAAK,EAAC,6BAA6B,GAAO,CAC7C,CACT,CAAC;QACN,CAAC,CAAC;QAEF,YAAO,GAAG,GAAG,EAAE;YACX,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACpC,CAAC,CAAC;;;;;;;;;IA3FF,aAAa;IACb,qCAAqC;IAErC,iBAAiB;QACb,eAAe,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,aAAa;IACb,mBAAmB;IAGnB,iBAAiB;QACb,eAAe,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,aAAa;IACb,wBAAwB;IAExB,IAAI,WAAW;QACX,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3C,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,MAAM;QACN,MAAM,SAAS,GAAG;YACd,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,cAAc;SAChC,CAAC;QAEF,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC;IACrD,CAAC;IAED,IAAI,cAAc;QACd,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,kCAAkC,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,YAAY;QACZ,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9C,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,aAAa;;QACb,OAAO,MAAA,MAAA,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,+DAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,mCAAI,EAAE,CAAC;IACnF,CAAC;IAED,IAAI,YAAY;QACZ,MAAM,UAAU,GAAG;YACf,OAAO,EAAE,IAAI,CAAC,iBAAiB;YAC/B,aAAa,EAAE,IAAI,CAAC,iBAAiB;SACxC,CAAC;QAEF,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC;IACvD,CAAC;IAkCD,aAAa;IACb,yBAAyB;IAEzB,MAAM;QACF,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGJ","sourcesContent":["import { Component, Prop, h, ComponentInterface, Element, Watch } from '@stencil/core';\nimport { handleAriaLabel, loc } from 'src/utils';\nimport skeletonShapes from './skeleton/shapes';\n\n@Component({ tag: 'q2-loading', shadow: true, styleUrl: 'q2-loading.scss' })\nexport class Q2Loading implements ComponentInterface {\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n ariaLabel: string;\n\n /**\n * Numeric adjustments are available for specific `type` and `shape` combinations.\n * These may impact the number of items, columns, and/or rows that display.\n *\n * When `shape=\"text\"`, `shape=\"detailed-item\"`, or `shape=\"label-value\"`, the `counts` attribute determines the number of rows to display.\n *\n * When `shape=\"table\"`, the `counts` attribute can be used in two ways:\n *\n * 1. `counts=\"CxR\"` = Provides a skeleton table of `C` columns and `R` rows. The default value is `\"5x5\"\n * 2. `counts=\"N\"` - Provides a skeleton table of `N` columns and 5 rows.\n *\n * When `shape=\"form\"`, the `counts` attribute can be used in two ways:\n *\n * 1. `
|
|
1
|
+
{"version":3,"file":"q2-loading.js","sourceRoot":"","sources":["../../../src/components/q2-loading/q2-loading.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, h, ComponentInterface, Element, Watch } from '@stencil/core';\nimport { handleAriaLabel, loc } from 'src/utils';\nimport skeletonShapes from './skeleton/shapes';\n\n@Component({ tag: 'q2-loading', shadow: true, styleUrl: 'q2-loading.scss' })\nexport class Q2Loading implements ComponentInterface {\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n ariaLabel: string;\n\n /**\n * Numeric adjustments are available for specific `type` and `shape` combinations.\n * These may impact the number of items, columns, and/or rows that display.\n *\n * When `shape=\"text\"`, `shape=\"detailed-item\"`, or `shape=\"label-value\"`, the `counts` attribute determines the number of rows to display.\n *\n * When `shape=\"table\"`, the `counts` attribute can be used in two ways:\n *\n * 1. `counts=\"CxR\"` = Provides a skeleton table of `C` columns and `R` rows. The default value is `\"5x5\"\n * 2. `counts=\"N\"` - Provides a skeleton table of `N` columns and 5 rows.\n *\n * When `shape=\"form\"`, the `counts` attribute can be used in two ways:\n *\n * 1. `counts=\"CxR\" - Provides a skeleton form of `C` columns and `R` rows of fields. The default value is `\"1x1\"`.\n * 2. `counts=\"N\"` - Provides a skeleton form of `N` fields stacked in single columns.\n */\n @Prop({ reflect: true })\n counts: string;\n\n /** Styles the component to have a `height` and `width` of `1em`, making it easy to place alongside text. */\n @Prop({ reflect: true })\n inline: boolean;\n\n /**\n * The label that is associated with the component. This is not displayed visually but is presented by screen readers.\n * @localizable\n */\n @Prop({ reflect: true, mutable: true })\n label: string;\n\n /**\n * Visual adjustments available to specific type and shape combinations, written as a hyphen (`-`) separated string.\n *\n * Supported values depend on the type and shape selected, and are listed in detail in the shape sections above.\n */\n @Prop({ reflect: true })\n modifiers: string;\n\n /**\n * The specific visual presentation of a loading element `type`.\n * @snippet\n * // when type=\"spinner\"\n * type ShapeValues = \"half-circle\";\n * // when type=\"skeleton\"\n * type ShapeValues = \"circle | \"rectangle\" | \"text\" | \"table\" | \"field\" | \"form\" | \"detailed-item\" | \"label-value\";\n */\n @Prop({ reflect: true })\n shape: string;\n\n /** The type of loading element to display. */\n @Prop({ reflect: true })\n type: 'spinner' | 'skeleton';\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n handleAriaLabel(this);\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n handleAriaLabel(this);\n }\n\n // #endregion\n // #region Local Methods\n\n get countsArray(): number[] {\n if (this.type !== 'skeleton' || !this.counts) {\n return undefined;\n }\n\n return this.counts.split('x').map(Number);\n }\n\n get loader() {\n const loaderMap = {\n default: this.spinner,\n spinner: this.spinner,\n skeleton: this.skeletonLoader,\n };\n\n return loaderMap[this.type] || loaderMap.default;\n }\n\n get localizedLabel() {\n return loc(this.label || 'tecton.element.loading.ariaLabel');\n }\n\n get modifiersSet(): Set<string> {\n if (this.type !== 'skeleton' || !this.modifiers) {\n return undefined;\n }\n\n return new Set(this.modifiers.split('-'));\n }\n\n get skeletonShape() {\n return skeletonShapes[this.shape]?.(this.countsArray, this.modifiersSet) ?? '';\n }\n\n get spinnerShape() {\n const spinnerMap = {\n default: this.halfCircleSpinner,\n 'half-circle': this.halfCircleSpinner,\n };\n\n return spinnerMap[this.type] || spinnerMap.default;\n }\n\n halfCircleSpinner = () => {\n return (\n <div\n class=\"q2-loading-animation half-circle-spinner\"\n aria-label={this.localizedLabel}\n role=\"status\"\n aria-live=\"polite\"\n >\n <div class=\"circle circle-1\"></div>\n <div class=\"circle circle-2\"></div>\n </div>\n );\n };\n\n skeletonLoader = () => {\n return (\n <div\n class=\"q2-loading-skeleton\"\n aria-label={this.localizedLabel}\n role=\"status\"\n aria-live=\"polite\"\n >\n {this.shape === 'custom' ? <slot /> : this.skeletonShape}\n <div class=\"q2-loading-skeleton-shimmer\"></div>\n </div>\n );\n };\n\n spinner = () => {\n return this.halfCircleSpinner();\n };\n\n // #endregion\n // #region Render Methods\n\n render() {\n return this.loader();\n }\n\n // #endregion\n}\n"]}
|
|
@@ -65,7 +65,7 @@ button {
|
|
|
65
65
|
visibility: hidden;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
:host {
|
|
68
|
+
:host(:not([separator]):not([separator=false])) {
|
|
69
69
|
--comp-padding: 0 var(--app-scale-2x, 10px);
|
|
70
70
|
--comp-selected-icon-size: var(--tct-option-selected-icon-size, var(--t-option-selected-icon-size, var(--tct-scale-3, var(--app-scale-3x, 15px))));
|
|
71
71
|
padding: var(--tct-option-padding, var(--t-option-padding, var(--comp-padding)));
|
|
@@ -79,7 +79,7 @@ button {
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
:host(:focus),
|
|
82
|
-
:host(:hover),
|
|
82
|
+
:host(:not([separator]):not([separator=false]):hover),
|
|
83
83
|
:host([active]) {
|
|
84
84
|
position: relative;
|
|
85
85
|
z-index: 1;
|
|
@@ -109,7 +109,7 @@ button {
|
|
|
109
109
|
display: grid;
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
-
:host(:not([aria-disabled]):hover),
|
|
112
|
+
:host(:not([aria-disabled]):not([separator]):not([separator=false]):hover),
|
|
113
113
|
:host([active]),
|
|
114
114
|
:host(:focus) {
|
|
115
115
|
background: var(--tct-option-active-background, var(--tct-option-active-bg, var(--tct-gray-14, var(--t-gray-14, var(--tct-gray-l3, var(--app-gray-l3, #f2f2f2))))));
|
|
@@ -133,4 +133,10 @@ q2-icon {
|
|
|
133
133
|
white-space: nowrap;
|
|
134
134
|
overflow: hidden;
|
|
135
135
|
text-overflow: ellipsis;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.separator {
|
|
139
|
+
--comp-default-separator-margin: 0 var(--tct-scale-1, var(--app-scale-3x, 15px));
|
|
140
|
+
margin: var(--tct-dropdown-separator-margin, var(--t-dropdown-separator-margin, var(--comp-default-separator-margin)));
|
|
141
|
+
border-bottom: 1px solid var(--tct-dropdown-item-separator-color, var(--t-gray-11, #cccccc));
|
|
136
142
|
}
|