q2-tecton-elements 1.71.4 → 1.73.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 +32564 -26687
- package/dist/cjs/{charting-ClN1ldqv.js → charting-CdNTrVBe.js} +80 -0
- package/dist/cjs/click-elsewhere_3.cjs.entry.js +85 -20
- package/dist/cjs/{dataSample-BYR-wrOn.js → dataSample-B4blhlH4.js} +1 -1
- package/dist/cjs/date-picker-helpers-UYvPn98R.js +257 -0
- package/dist/cjs/{index-SpDCZABA.js → index-BqyWHpNu.js} +2 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{q2-action-group_2.cjs.entry.js → q2-action-group.cjs.entry.js} +1 -89
- package/dist/cjs/q2-action-sheet.cjs.entry.js +98 -18
- package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
- package/dist/cjs/q2-badge_2.cjs.entry.js +113 -12
- package/dist/cjs/q2-btn_2.cjs.entry.js +2 -2
- package/dist/cjs/q2-calendar.cjs.entry.js +14 -7
- package/dist/cjs/q2-card-image.cjs.entry.js +4 -4
- package/dist/cjs/q2-card.cjs.entry.js +1 -1
- package/dist/cjs/q2-carousel-pane.cjs.entry.js +3 -3
- package/dist/cjs/q2-carousel.cjs.entry.js +20 -6
- package/dist/cjs/q2-chart-area.cjs.entry.js +38 -7
- package/dist/cjs/q2-chart-bar.cjs.entry.js +39 -8
- package/dist/cjs/q2-chart-donut.cjs.entry.js +31 -13
- package/dist/cjs/q2-checkbox-group.cjs.entry.js +3 -3
- package/dist/cjs/q2-checkbox_2.cjs.entry.js +9 -6
- package/dist/cjs/q2-context.cjs.entry.js +6 -5
- package/dist/cjs/q2-currency.cjs.entry.js +1 -1
- package/dist/cjs/q2-data-table.cjs.entry.js +7 -7
- package/dist/cjs/q2-date-calendar.cjs.entry.js +452 -0
- package/dist/cjs/q2-date-picker_2.cjs.entry.js +968 -0
- package/dist/cjs/q2-detail.cjs.entry.js +2 -2
- package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +4 -4
- package/dist/cjs/q2-editable-field.cjs.entry.js +51 -37
- package/dist/cjs/q2-example.cjs.entry.js +1 -1
- package/dist/cjs/q2-file-picker.cjs.entry.js +60 -4
- package/dist/cjs/q2-form.cjs.entry.js +1 -1
- package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js +1 -1
- package/dist/cjs/q2-item.cjs.entry.js +21 -3
- package/dist/cjs/q2-legend.cjs.entry.js +1 -1
- package/dist/cjs/q2-link_2.cjs.entry.js +2 -2
- package/dist/cjs/q2-loc.cjs.entry.js +1 -1
- package/dist/cjs/q2-message.cjs.entry.js +3 -3
- package/dist/cjs/q2-meter.cjs.entry.js +2 -2
- package/dist/cjs/q2-modal.cjs.entry.js +59 -17
- package/dist/cjs/q2-month-picker.cjs.entry.js +3 -3
- package/dist/cjs/q2-mutation-observer.cjs.entry.js +1 -1
- package/dist/cjs/q2-option.cjs.entry.js +1 -1
- package/dist/cjs/q2-otp.cjs.entry.js +5 -5
- package/dist/cjs/q2-pagination.cjs.entry.js +4 -4
- package/dist/cjs/q2-pill.cjs.entry.js +8 -5
- package/dist/cjs/q2-radio-group.cjs.entry.js +22 -4
- package/dist/cjs/q2-radio.cjs.entry.js +3 -3
- package/dist/cjs/q2-relative-time.cjs.entry.js +3 -3
- package/dist/cjs/q2-resize-observer.cjs.entry.js +92 -0
- package/dist/cjs/q2-search.cjs.entry.js +4 -4
- package/dist/cjs/q2-section.cjs.entry.js +7 -7
- package/dist/cjs/q2-select.cjs.entry.js +41 -21
- package/dist/cjs/q2-stepper-pane.cjs.entry.js +2 -2
- 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-surface.cjs.entry.js +1 -1
- package/dist/cjs/q2-tab-container.cjs.entry.js +2 -2
- package/dist/cjs/q2-tab-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js +2 -2
- package/dist/cjs/q2-toast.cjs.entry.js +1 -1
- package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/{sectorHelper-9TWL-3dw.js → sectorHelper-CxhDl5ql.js} +1 -1
- package/dist/cjs/tecton-tab-pane.cjs.entry.js +5 -3
- package/dist/collection/collection-manifest.json +2 -0
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.css +52 -0
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +98 -18
- package/dist/collection/components/q2-action-sheet/test/q2-action-sheet-test.vr.js +124 -0
- package/dist/collection/components/q2-avatar/q2-avatar.js +1 -1
- package/dist/collection/components/q2-btn/q2-btn.css +152 -146
- package/dist/collection/components/q2-btn/q2-btn.js +10 -4
- package/dist/collection/components/q2-btn/test/q2-btn-test.vr.js +229 -20
- package/dist/collection/components/q2-calendar/q2-calendar.css +3 -0
- package/dist/collection/components/q2-calendar/q2-calendar.js +20 -7
- package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
- package/dist/collection/components/q2-calendar/test/q2-calendar-test.vr.js +26 -15
- package/dist/collection/components/q2-card/test/q2-card-test.vr.js +4 -0
- package/dist/collection/components/q2-card-image/q2-card-image.css +89 -134
- package/dist/collection/components/q2-card-image/q2-card-image.js +4 -4
- package/dist/collection/components/q2-card-image/test/q2-card-image-test.vr.js +4 -0
- package/dist/collection/components/q2-carousel/q2-carousel.js +19 -5
- package/dist/collection/components/q2-carousel/test/q2-carousel-test.vr.js +45 -0
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +2 -2
- package/dist/collection/components/q2-chart-area/q2-chart-area.css +11 -0
- package/dist/collection/components/q2-chart-area/q2-chart-area.js +53 -7
- package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.vr.js +14 -0
- package/dist/collection/components/q2-chart-bar/q2-chart-bar.css +11 -0
- package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +50 -4
- package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.vr.js +14 -0
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +30 -10
- package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.vr.js +25 -0
- package/dist/collection/components/q2-checkbox/q2-checkbox.css +2 -2
- package/dist/collection/components/q2-checkbox/q2-checkbox.js +6 -3
- package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.css +2 -0
- package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js +6 -3
- package/dist/collection/components/q2-context/q2-context.css +5 -0
- package/dist/collection/components/q2-context/q2-context.js +4 -3
- package/dist/collection/components/q2-context/test/q2-context-test.vr.js +14 -4
- package/dist/collection/components/q2-currency/q2-currency.js +1 -1
- package/dist/collection/components/q2-data-table/q2-data-table.css +6 -0
- package/dist/collection/components/q2-data-table/q2-data-table.js +5 -5
- package/dist/collection/components/q2-data-table/test/q2-data-table-test.vr.js +52 -0
- package/dist/collection/components/q2-date-calendar/q2-date-calendar.css +393 -0
- package/dist/collection/components/q2-date-calendar/q2-date-calendar.js +1022 -0
- package/dist/collection/components/q2-date-calendar/test/q2-date-calendar-test.vr.js +111 -0
- package/dist/collection/components/q2-date-picker/q2-date-picker.css +138 -0
- package/dist/collection/components/q2-date-picker/q2-date-picker.js +2010 -0
- package/dist/collection/components/q2-date-picker/test/q2-date-picker-test.vr.js +179 -0
- package/dist/collection/components/q2-detail/q2-detail.js +1 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.css +2 -0
- package/dist/collection/components/q2-dropdown/q2-dropdown.js +5 -5
- package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.vr.js +30 -0
- package/dist/collection/components/q2-editable-field/q2-editable-field.css +2 -0
- package/dist/collection/components/q2-editable-field/q2-editable-field.js +59 -45
- package/dist/collection/components/q2-example/q2-example.js +1 -1
- package/dist/collection/components/q2-file-picker/q2-file-picker.css +27 -0
- package/dist/collection/components/q2-file-picker/q2-file-picker.js +98 -2
- package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.vr.js +22 -0
- package/dist/collection/components/q2-form/q2-form.js +1 -1
- package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
- package/dist/collection/components/q2-input/q2-input.css +67 -1
- package/dist/collection/components/q2-input/q2-input.js +160 -15
- package/dist/collection/components/q2-input/test/q2-input-test.vr.js +35 -0
- package/dist/collection/components/q2-item/q2-item.css +3 -1
- package/dist/collection/components/q2-item/q2-item.js +19 -1
- package/dist/collection/components/q2-item/test/q2-item-test.vr.js +8 -2
- package/dist/collection/components/q2-legend/q2-legend.js +1 -1
- package/dist/collection/components/q2-list/q2-list.js +1 -1
- package/dist/collection/components/q2-message/q2-message.css +5 -5
- package/dist/collection/components/q2-message/q2-message.js +1 -1
- package/dist/collection/components/q2-meter/q2-meter.js +1 -1
- package/dist/collection/components/q2-modal/q2-modal.css +40 -3
- package/dist/collection/components/q2-modal/q2-modal.js +100 -16
- package/dist/collection/components/q2-modal/test/q2-modal-test.vr.js +32 -7
- package/dist/collection/components/q2-mutation-observer/q2-mutation-observer.js +1 -1
- package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
- package/dist/collection/components/q2-option-list/q2-option-list.js +33 -4
- package/dist/collection/components/q2-otp/q2-otp.js +4 -4
- package/dist/collection/components/q2-pagination/q2-pagination.js +3 -3
- package/dist/collection/components/q2-pill/q2-pill.css +2 -2
- package/dist/collection/components/q2-pill/q2-pill.js +6 -3
- package/dist/collection/components/q2-popover/q2-popover.css +4 -2
- package/dist/collection/components/q2-popover/q2-popover.js +50 -14
- package/dist/collection/components/q2-radio/q2-radio.css +158 -104
- package/dist/collection/components/q2-radio/q2-radio.js +5 -2
- package/dist/collection/components/q2-radio/test/q2-radio-test.vr.js +25 -2
- package/dist/collection/components/q2-radio-group/q2-radio-group.css +39 -2
- package/dist/collection/components/q2-radio-group/q2-radio-group.js +73 -4
- package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.vr.js +43 -1
- package/dist/collection/components/q2-relative-time/q2-relative-time.js +2 -2
- package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
- package/dist/collection/components/q2-search/q2-search.css +2 -0
- package/dist/collection/components/q2-search/q2-search.js +6 -3
- package/dist/collection/components/q2-section/q2-section.css +2 -0
- package/dist/collection/components/q2-section/q2-section.js +6 -6
- package/dist/collection/components/q2-select/q2-select.css +3 -0
- package/dist/collection/components/q2-select/q2-select.js +48 -22
- package/dist/collection/components/q2-select/test/q2-select-test.vr.js +13 -0
- package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
- package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +1 -1
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
- package/dist/collection/components/q2-surface/q2-surface.js +1 -1
- package/dist/collection/components/q2-surface/test/q2-surface-test.vr.js +2 -2
- 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 +6 -3
- package/dist/collection/components/q2-textarea/q2-textarea.js +6 -3
- package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.vr.js +1 -1
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +5 -3
- package/dist/collection/utils/chart-keyboard.js +76 -0
- package/dist/collection/utils/date-picker/date-picker-helpers.js +239 -0
- package/dist/collection/utils/date-picker/date-picker-types.js +1 -0
- package/dist/collection/utils/index.js +2 -2
- package/dist/collection/utils/test/vr-helpers.js +16 -2
- package/dist/components/charting.js +1603 -1532
- package/dist/components/dataSample.js +7 -7
- package/dist/components/index.js +57 -53
- package/dist/components/index2.js +3 -3
- package/dist/components/q2-action-sheet.js +224 -103
- package/dist/components/q2-avatar2.js +8 -8
- package/dist/components/q2-btn2.js +2 -2
- package/dist/components/q2-calendar.js +15 -10
- package/dist/components/q2-card-image.js +24 -24
- package/dist/components/q2-carousel-pane2.js +3 -3
- package/dist/components/q2-carousel.js +37 -24
- package/dist/components/q2-chart-area.js +415 -369
- package/dist/components/q2-chart-bar.js +193 -148
- package/dist/components/q2-chart-donut.js +185 -158
- package/dist/components/q2-checkbox-group.js +12 -12
- package/dist/components/q2-checkbox2.js +12 -12
- package/dist/components/q2-context.js +30 -29
- package/dist/components/q2-currency.js +9 -9
- package/dist/components/q2-data-table.js +111 -111
- package/dist/components/q2-date-calendar.d.ts +11 -0
- package/dist/components/q2-date-calendar.js +5 -0
- package/dist/components/q2-date-calendar2.js +678 -0
- package/dist/components/q2-date-picker.d.ts +11 -0
- package/dist/components/q2-date-picker.js +5 -0
- package/dist/components/q2-date-picker2.js +875 -0
- package/dist/components/q2-detail.js +3 -3
- package/dist/components/q2-dropdown.js +13 -13
- package/dist/components/q2-editable-field.js +45 -36
- package/dist/components/q2-example.js +11 -11
- package/dist/components/q2-file-picker.js +71 -11
- package/dist/components/q2-form.js +6 -6
- package/dist/components/q2-formatted-text.js +2 -2
- package/dist/components/q2-input2.js +268 -163
- package/dist/components/q2-item2.js +33 -23
- package/dist/components/q2-legend2.js +7 -7
- package/dist/components/q2-list2.js +6 -6
- package/dist/components/q2-message2.js +29 -29
- package/dist/components/q2-meter.js +7 -7
- package/dist/components/q2-modal.js +94 -76
- package/dist/components/q2-month-picker.js +17 -17
- package/dist/components/q2-mutation-observer.js +1 -1
- package/dist/components/q2-optgroup2.js +7 -7
- package/dist/components/q2-option-list2.js +52 -32
- package/dist/components/q2-otp.js +8 -8
- package/dist/components/q2-pagination.js +67 -67
- package/dist/components/q2-pill.js +17 -15
- package/dist/components/q2-popover2.js +77 -53
- package/dist/components/q2-radio-group.js +70 -40
- package/dist/components/q2-radio.js +40 -55
- package/dist/components/q2-relative-time.js +5 -5
- package/dist/components/q2-resize-observer2.js +23 -23
- package/dist/components/q2-search.js +6 -6
- package/dist/components/q2-section.js +33 -33
- package/dist/components/q2-select2.js +47 -40
- package/dist/components/q2-stepper-pane.js +17 -13
- package/dist/components/q2-stepper-vertical.js +4 -4
- package/dist/components/q2-stepper.js +57 -57
- package/dist/components/q2-surface.js +3 -3
- package/dist/components/q2-tab-container.js +18 -18
- package/dist/components/q2-tab-pane.js +2 -2
- package/dist/components/q2-tag2.js +8 -6
- package/dist/components/q2-textarea.js +3 -3
- package/dist/components/sectorHelper.js +78 -78
- package/dist/components/tecton-tab-pane.js +12 -11
- package/dist/esm/{charting-DOZct-UB.js → charting-DFXJklqs.js} +79 -1
- package/dist/esm/click-elsewhere_3.entry.js +85 -20
- package/dist/esm/{dataSample-Dm1zpQNi.js → dataSample-CP_VKNqt.js} +1 -1
- package/dist/esm/date-picker-helpers-D8QnN_AS.js +242 -0
- package/dist/esm/{index-Cps4jSQM.js → index-CP8pXJ-l.js} +2 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{q2-action-group_2.entry.js → q2-action-group.entry.js} +3 -90
- package/dist/esm/q2-action-sheet.entry.js +99 -19
- package/dist/esm/q2-avatar.entry.js +1 -1
- package/dist/esm/q2-badge_2.entry.js +113 -12
- package/dist/esm/q2-btn_2.entry.js +2 -2
- package/dist/esm/q2-calendar.entry.js +14 -7
- package/dist/esm/q2-card-image.entry.js +4 -4
- package/dist/esm/q2-card.entry.js +1 -1
- package/dist/esm/q2-carousel-pane.entry.js +3 -3
- package/dist/esm/q2-carousel.entry.js +20 -6
- package/dist/esm/q2-chart-area.entry.js +38 -7
- package/dist/esm/q2-chart-bar.entry.js +39 -8
- package/dist/esm/q2-chart-donut.entry.js +31 -13
- package/dist/esm/q2-checkbox-group.entry.js +3 -3
- package/dist/esm/q2-checkbox_2.entry.js +9 -6
- package/dist/esm/q2-context.entry.js +6 -5
- package/dist/esm/q2-currency.entry.js +1 -1
- package/dist/esm/q2-data-table.entry.js +7 -7
- package/dist/esm/q2-date-calendar.entry.js +450 -0
- package/dist/esm/q2-date-picker_2.entry.js +965 -0
- package/dist/esm/q2-detail.entry.js +2 -2
- package/dist/esm/q2-dropdown-item.entry.js +1 -1
- package/dist/esm/q2-dropdown.entry.js +4 -4
- package/dist/esm/q2-editable-field.entry.js +51 -37
- package/dist/esm/q2-example.entry.js +1 -1
- package/dist/esm/q2-file-picker.entry.js +60 -4
- package/dist/esm/q2-form.entry.js +1 -1
- package/dist/esm/q2-formatted-text.entry.js +1 -1
- package/dist/esm/q2-icon.entry.js +1 -1
- package/dist/esm/q2-item.entry.js +21 -3
- package/dist/esm/q2-legend.entry.js +1 -1
- package/dist/esm/q2-link_2.entry.js +2 -2
- package/dist/esm/q2-loc.entry.js +1 -1
- package/dist/esm/q2-message.entry.js +3 -3
- package/dist/esm/q2-meter.entry.js +2 -2
- package/dist/esm/q2-modal.entry.js +59 -17
- package/dist/esm/q2-month-picker.entry.js +3 -3
- package/dist/esm/q2-mutation-observer.entry.js +1 -1
- package/dist/esm/q2-option.entry.js +1 -1
- package/dist/esm/q2-otp.entry.js +5 -5
- package/dist/esm/q2-pagination.entry.js +4 -4
- package/dist/esm/q2-pill.entry.js +8 -5
- package/dist/esm/q2-radio-group.entry.js +22 -4
- package/dist/esm/q2-radio.entry.js +3 -3
- package/dist/esm/q2-relative-time.entry.js +3 -3
- package/dist/esm/q2-resize-observer.entry.js +90 -0
- package/dist/esm/q2-search.entry.js +4 -4
- package/dist/esm/q2-section.entry.js +7 -7
- package/dist/esm/q2-select.entry.js +41 -21
- package/dist/esm/q2-stepper-pane.entry.js +2 -2
- package/dist/esm/q2-stepper-vertical.entry.js +2 -2
- package/dist/esm/q2-stepper.entry.js +2 -2
- package/dist/esm/q2-surface.entry.js +1 -1
- package/dist/esm/q2-tab-container.entry.js +2 -2
- package/dist/esm/q2-tab-pane.entry.js +1 -1
- package/dist/esm/q2-tecton-elements.js +1 -1
- package/dist/esm/q2-textarea.entry.js +2 -2
- package/dist/esm/q2-toast.entry.js +1 -1
- package/dist/esm/q2-tooltip.entry.js +1 -1
- package/dist/esm/{sectorHelper--RMGWGAy.js → sectorHelper-DBtkWtpl.js} +1 -1
- package/dist/esm/tecton-tab-pane.entry.js +5 -3
- package/dist/q2-tecton-elements/{charting-DOZct-UB.js → charting-DFXJklqs.js} +1625 -1554
- package/dist/q2-tecton-elements/click-elsewhere_3.entry.js +98 -54
- package/dist/q2-tecton-elements/{dataSample-Dm1zpQNi.js → dataSample-CP_VKNqt.js} +33 -33
- package/dist/q2-tecton-elements/date-picker-helpers-D8QnN_AS.js +153 -0
- package/dist/q2-tecton-elements/{index-Cps4jSQM.js → index-CP8pXJ-l.js} +2 -2
- package/dist/q2-tecton-elements/{q2-action-group_2.entry.js → q2-action-group.entry.js} +35 -113
- package/dist/q2-tecton-elements/q2-action-sheet.entry.js +169 -84
- package/dist/q2-tecton-elements/q2-avatar.entry.js +8 -8
- package/dist/q2-tecton-elements/q2-badge_2.entry.js +240 -140
- package/dist/q2-tecton-elements/q2-btn_2.entry.js +23 -23
- package/dist/q2-tecton-elements/q2-calendar.entry.js +18 -13
- package/dist/q2-tecton-elements/q2-card-image.entry.js +9 -9
- package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +4 -4
- package/dist/q2-tecton-elements/q2-carousel.entry.js +24 -11
- package/dist/q2-tecton-elements/q2-chart-area.entry.js +190 -144
- package/dist/q2-tecton-elements/q2-chart-bar.entry.js +382 -338
- package/dist/q2-tecton-elements/q2-chart-donut.entry.js +186 -160
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +8 -8
- package/dist/q2-tecton-elements/q2-checkbox_2.entry.js +21 -19
- package/dist/q2-tecton-elements/q2-context.entry.js +18 -17
- package/dist/q2-tecton-elements/q2-currency.entry.js +9 -9
- package/dist/q2-tecton-elements/q2-data-table.entry.js +38 -38
- package/dist/q2-tecton-elements/q2-date-calendar.entry.js +438 -0
- package/dist/q2-tecton-elements/q2-date-picker_2.entry.js +792 -0
- package/dist/q2-tecton-elements/q2-detail.entry.js +4 -4
- package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-dropdown.entry.js +10 -10
- package/dist/q2-tecton-elements/q2-editable-field.entry.js +50 -41
- package/dist/q2-tecton-elements/q2-example.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-file-picker.entry.js +62 -7
- package/dist/q2-tecton-elements/q2-form.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-formatted-text.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-icon.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-item.entry.js +27 -17
- package/dist/q2-tecton-elements/q2-legend.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-link_2.entry.js +7 -7
- package/dist/q2-tecton-elements/q2-loc.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-message.entry.js +30 -30
- package/dist/q2-tecton-elements/q2-meter.entry.js +8 -8
- package/dist/q2-tecton-elements/q2-modal.entry.js +61 -45
- package/dist/q2-tecton-elements/q2-month-picker.entry.js +14 -14
- package/dist/q2-tecton-elements/q2-mutation-observer.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-option.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-otp.entry.js +9 -9
- package/dist/q2-tecton-elements/q2-pagination.entry.js +20 -20
- package/dist/q2-tecton-elements/q2-pill.entry.js +43 -41
- package/dist/q2-tecton-elements/q2-radio-group.entry.js +55 -34
- package/dist/q2-tecton-elements/q2-radio.entry.js +38 -53
- package/dist/q2-tecton-elements/q2-relative-time.entry.js +11 -11
- package/dist/q2-tecton-elements/q2-resize-observer.entry.js +81 -0
- package/dist/q2-tecton-elements/q2-search.entry.js +7 -7
- package/dist/q2-tecton-elements/q2-section.entry.js +25 -25
- package/dist/q2-tecton-elements/q2-select.entry.js +28 -21
- package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +19 -15
- package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +9 -9
- package/dist/q2-tecton-elements/q2-stepper.entry.js +45 -45
- package/dist/q2-tecton-elements/q2-surface.entry.js +3 -3
- package/dist/q2-tecton-elements/q2-tab-container.entry.js +15 -15
- package/dist/q2-tecton-elements/q2-tab-pane.entry.js +9 -9
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
- package/dist/q2-tecton-elements/q2-textarea.entry.js +3 -3
- package/dist/q2-tecton-elements/q2-toast.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-tooltip.entry.js +1 -1
- package/dist/q2-tecton-elements/{sectorHelper--RMGWGAy.js → sectorHelper-DBtkWtpl.js} +56 -56
- package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +8 -7
- package/dist/types/components/q2-action-sheet/q2-action-sheet.d.ts +21 -1
- package/dist/types/components/q2-action-sheet/test/q2-action-sheet-test.vr.d.ts +1 -0
- package/dist/types/components/q2-btn/q2-btn.d.ts +7 -3
- package/dist/types/components/q2-calendar/q2-calendar.d.ts +10 -2
- package/dist/types/components/q2-card-image/q2-card-image.d.ts +1 -1
- package/dist/types/components/q2-carousel/q2-carousel.d.ts +5 -0
- package/dist/types/components/q2-chart-area/q2-chart-area.d.ts +11 -2
- package/dist/types/components/q2-chart-bar/q2-chart-bar.d.ts +9 -0
- package/dist/types/components/q2-chart-donut/q2-chart-donut.d.ts +1 -0
- package/dist/types/components/q2-checkbox/q2-checkbox.d.ts +4 -3
- package/dist/types/components/q2-checkbox-group/q2-checkbox-group.d.ts +4 -2
- package/dist/types/components/q2-date-calendar/q2-date-calendar.d.ts +122 -0
- package/dist/types/components/q2-date-calendar/test/q2-date-calendar-test.vr.d.ts +1 -0
- package/dist/types/components/q2-date-picker/q2-date-picker.d.ts +304 -0
- package/dist/types/components/q2-date-picker/test/q2-date-picker-test.vr.d.ts +1 -0
- package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +3 -3
- package/dist/types/components/q2-dropdown/test/q2-dropdown-test.vr.d.ts +1 -0
- package/dist/types/components/q2-editable-field/q2-editable-field.d.ts +20 -2
- package/dist/types/components/q2-file-picker/q2-file-picker.d.ts +20 -0
- package/dist/types/components/q2-input/q2-input.d.ts +32 -4
- package/dist/types/components/q2-item/q2-item.d.ts +3 -0
- package/dist/types/components/q2-modal/q2-modal.d.ts +10 -1
- package/dist/types/components/q2-option-list/q2-option-list.d.ts +1 -0
- package/dist/types/components/q2-popover/q2-popover.d.ts +4 -0
- package/dist/types/components/q2-radio/q2-radio.d.ts +3 -2
- package/dist/types/components/q2-radio-group/q2-radio-group.d.ts +18 -2
- package/dist/types/components/q2-search/q2-search.d.ts +3 -1
- package/dist/types/components/q2-select/q2-select.d.ts +12 -4
- package/dist/types/components/q2-textarea/q2-textarea.d.ts +4 -2
- package/dist/types/components.d.ts +1112 -195
- package/dist/types/global.d.ts +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/utils/chart-keyboard.d.ts +16 -0
- package/dist/types/utils/date-picker/date-picker-helpers.d.ts +47 -0
- package/dist/types/utils/date-picker/date-picker-types.d.ts +42 -0
- package/dist/types/utils/test/vr-helpers.d.ts +2 -0
- package/package.json +3 -3
- package/dist/cjs/q2-optgroup.cjs.entry.js +0 -70
- package/dist/esm/q2-optgroup.entry.js +0 -68
- package/dist/q2-tecton-elements/q2-optgroup.entry.js +0 -88
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { expect } from "@playwright/test";
|
|
2
|
+
import { test } from "@stencil/playwright";
|
|
3
|
+
import { setupPage, THEMES } from "../../../utils/test/vr-helpers";
|
|
4
|
+
const MOBILE_VIEWPORT = { width: 360, height: 800 };
|
|
5
|
+
// Fixed dates keep the variants deterministic.
|
|
6
|
+
const SINGLE_VALUE = '2026-06-15';
|
|
7
|
+
const RANGE_START = '2026-06-10';
|
|
8
|
+
const RANGE_END = '2026-06-20';
|
|
9
|
+
const INVALID_RANGE_DATE = '2026-06-15';
|
|
10
|
+
const RESTING_VARIANTS = [
|
|
11
|
+
{ name: 'default', html: `<q2-date-picker></q2-date-picker>` },
|
|
12
|
+
{
|
|
13
|
+
name: 'single-value',
|
|
14
|
+
html: `<q2-date-picker label="Date" placeholder="Select a date" value="${SINGLE_VALUE}"></q2-date-picker>`,
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: 'custom-display-format',
|
|
18
|
+
html: `<q2-date-picker label="Date" placeholder="Select a date" value="${SINGLE_VALUE}" display-format="dddd, MMMM D, YYYY"></q2-date-picker>`,
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: 'range-value',
|
|
22
|
+
html: `<q2-date-picker mode="range" label="Date Range" placeholder="Select date range" range-start="${RANGE_START}" range-end="${RANGE_END}"></q2-date-picker>`,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: 'single-typeable',
|
|
26
|
+
html: `<q2-date-picker mode="single-typeable" label="Date" placeholder="MM/DD/YYYY"></q2-date-picker>`,
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'range-typeable',
|
|
30
|
+
html: `<q2-date-picker mode="range-typeable" label="Date Range" placeholder="MM/DD/YYYY - MM/DD/YYYY"></q2-date-picker>`,
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: 'disabled',
|
|
34
|
+
html: `<q2-date-picker label="Date" placeholder="Select a date" disabled disabled-msg="Dates unavailable"></q2-date-picker>`,
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'readonly',
|
|
38
|
+
html: `<q2-date-picker label="Date" placeholder="Select a date" readonly value="${SINGLE_VALUE}"></q2-date-picker>`,
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'invalid',
|
|
42
|
+
html: `<q2-date-picker label="Date" placeholder="Select a date" invalid></q2-date-picker>`,
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'valid',
|
|
46
|
+
html: `<q2-date-picker label="Date" placeholder="Select a date" valid value="${SINGLE_VALUE}"></q2-date-picker>`,
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'optional',
|
|
50
|
+
html: `<q2-date-picker label="Date" placeholder="Select a date" optional></q2-date-picker>`,
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'clearable-value',
|
|
54
|
+
html: `<q2-date-picker label="Date" placeholder="Select a date" clearable value="${SINGLE_VALUE}"></q2-date-picker>`,
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'hide-label',
|
|
58
|
+
html: `<q2-date-picker label="Date" placeholder="Select a date" hide-label value="${SINGLE_VALUE}"></q2-date-picker>`,
|
|
59
|
+
},
|
|
60
|
+
];
|
|
61
|
+
const DEFAULT_HOVER_VARIANT = {
|
|
62
|
+
name: 'default',
|
|
63
|
+
html: `<q2-date-picker></q2-date-picker>`,
|
|
64
|
+
};
|
|
65
|
+
const DEFAULT_FOCUS_VARIANT = {
|
|
66
|
+
name: 'default',
|
|
67
|
+
html: `<q2-date-picker></q2-date-picker>`,
|
|
68
|
+
};
|
|
69
|
+
const EXPANDED_VARIANTS = [
|
|
70
|
+
{
|
|
71
|
+
name: 'expanded-single',
|
|
72
|
+
html: `<q2-date-picker label="Date" placeholder="Select a date" value="${SINGLE_VALUE}" popover-alignment="left"></q2-date-picker>`,
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: 'expanded-range',
|
|
76
|
+
html: `<q2-date-picker mode="range" label="Date Range" placeholder="Select date range" range-start="${RANGE_START}" range-end="${RANGE_END}" popover-alignment="left"></q2-date-picker>`,
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: 'expanded-up',
|
|
80
|
+
html: `<q2-date-picker style="margin-top: 450px" label="Date" placeholder="Select a date" value="${SINGLE_VALUE}" popover-alignment="left" popover-direction="up"></q2-date-picker>`,
|
|
81
|
+
},
|
|
82
|
+
];
|
|
83
|
+
const INVALID_RANGE_VARIANT = {
|
|
84
|
+
name: 'range-invalid-confirm',
|
|
85
|
+
html: `<q2-date-picker mode="range" label="Date Range" placeholder="Select date range" range-start="${RANGE_START}" range-end="${RANGE_END}" open></q2-date-picker>`,
|
|
86
|
+
};
|
|
87
|
+
const MOBILE_ACTION_SHEET_RANGE_VARIANT = {
|
|
88
|
+
name: 'action-sheet-range-mobile',
|
|
89
|
+
html: `<q2-date-picker _action-sheet mode="range" range-start="${RANGE_START}" range-end="${RANGE_END}"></q2-date-picker>`,
|
|
90
|
+
};
|
|
91
|
+
const restingCase = (variant, theme) => {
|
|
92
|
+
test(`q2-date-picker--${variant.name}--resting — ${theme}`, async ({ page }) => {
|
|
93
|
+
await setupPage(page, variant.html, { theme, setupLoc: true });
|
|
94
|
+
await expect(page).toHaveScreenshot(`q2-date-picker--${variant.name}--resting--${theme}.png`);
|
|
95
|
+
});
|
|
96
|
+
};
|
|
97
|
+
const hoverCase = (variant, theme) => {
|
|
98
|
+
test(`q2-date-picker--${variant.name}--hover — ${theme}`, async ({ page }) => {
|
|
99
|
+
await setupPage(page, variant.html, { theme, setupLoc: true });
|
|
100
|
+
await page.locator('q2-date-picker').hover();
|
|
101
|
+
await expect(page).toHaveScreenshot(`q2-date-picker--${variant.name}--hover--${theme}.png`);
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
const focusCase = (variant, theme) => {
|
|
105
|
+
test(`q2-date-picker--${variant.name}--focus — ${theme}`, async ({ page }) => {
|
|
106
|
+
await setupPage(page, variant.html, { theme, setupLoc: true });
|
|
107
|
+
await page.keyboard.press('Tab');
|
|
108
|
+
await expect(page).toHaveScreenshot(`q2-date-picker--${variant.name}--focus--${theme}.png`);
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
// q2-popover renders its calendar before its opening animation completes. Wait
|
|
112
|
+
// for the animation instead of relying on a visibility check alone.
|
|
113
|
+
const waitForPopoverAnimation = async (page) => {
|
|
114
|
+
await page.locator('q2-popover .container').evaluate(async (element) => {
|
|
115
|
+
// A popover animation can be replaced while it is positioning itself. Its
|
|
116
|
+
// `finished` promise rejects when canceled, but that is still a settled
|
|
117
|
+
// visual state for this screenshot.
|
|
118
|
+
await Promise.allSettled(element.getAnimations({ subtree: true }).map(animation => animation.finished));
|
|
119
|
+
await new Promise(resolve => requestAnimationFrame(() => resolve()));
|
|
120
|
+
});
|
|
121
|
+
};
|
|
122
|
+
const expandedCase = (variant, theme) => {
|
|
123
|
+
test(`q2-date-picker--${variant.name}--expanded — ${theme}`, async ({ page }) => {
|
|
124
|
+
await setupPage(page, variant.html, { theme, setupLoc: true });
|
|
125
|
+
await page.locator('q2-date-picker').evaluate((el) => (el.open = true));
|
|
126
|
+
// Wait for the calendar panel inside the popover to render.
|
|
127
|
+
await page.locator('q2-date-calendar .cal-panel').waitFor({ state: 'visible' });
|
|
128
|
+
await waitForPopoverAnimation(page);
|
|
129
|
+
await expect(page).toHaveScreenshot(`q2-date-picker--${variant.name}--expanded--${theme}.png`);
|
|
130
|
+
});
|
|
131
|
+
};
|
|
132
|
+
const mobileActionSheetRangeCase = (theme) => {
|
|
133
|
+
test(`q2-date-picker--${MOBILE_ACTION_SHEET_RANGE_VARIANT.name}--resting — ${theme}`, async ({ page }) => {
|
|
134
|
+
await page.setViewportSize(MOBILE_VIEWPORT);
|
|
135
|
+
await setupPage(page, MOBILE_ACTION_SHEET_RANGE_VARIANT.html, { theme, setupLoc: true });
|
|
136
|
+
await expect(page).toHaveScreenshot(`q2-date-picker--${MOBILE_ACTION_SHEET_RANGE_VARIANT.name}--resting--${theme}.png`);
|
|
137
|
+
});
|
|
138
|
+
};
|
|
139
|
+
const invalidRangeCase = (variant, theme) => {
|
|
140
|
+
test(`q2-date-picker--${variant.name}--error — ${theme}`, async ({ page }) => {
|
|
141
|
+
await setupPage(page, variant.html, { theme, setupLoc: true });
|
|
142
|
+
await page.locator('q2-date-calendar .cal-panel').waitFor({ state: 'visible' });
|
|
143
|
+
await waitForPopoverAnimation(page);
|
|
144
|
+
await page.locator('q2-date-picker').evaluate((element, invalidDate) => {
|
|
145
|
+
element.invalidDates = [invalidDate];
|
|
146
|
+
}, INVALID_RANGE_DATE);
|
|
147
|
+
await expect(page.locator(`q2-date-calendar button[data-date="${INVALID_RANGE_DATE}"]`)).toHaveClass(/is-disabled/);
|
|
148
|
+
await page.locator('q2-date-calendar .cal-footer-actions q2-btn[intent="workflow-primary"] button').click();
|
|
149
|
+
const input = page.locator('q2-date-picker q2-input');
|
|
150
|
+
await expect(input).toHaveJSProperty('errors', ['Range includes unavailable dates.']);
|
|
151
|
+
await page.locator('q2-date-picker q2-popover .cal-panel').waitFor({ state: 'hidden' });
|
|
152
|
+
await input.locator('[test-id="iconError"]').waitFor({ state: 'visible' });
|
|
153
|
+
await expect(page).toHaveScreenshot(`q2-date-picker--${variant.name}--error--${theme}.png`);
|
|
154
|
+
});
|
|
155
|
+
};
|
|
156
|
+
test.describe('q2-date-picker — variants × themes', () => {
|
|
157
|
+
for (const variant of RESTING_VARIANTS) {
|
|
158
|
+
for (const theme of THEMES) {
|
|
159
|
+
restingCase(variant, theme);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
for (const theme of THEMES) {
|
|
163
|
+
hoverCase(DEFAULT_HOVER_VARIANT, theme);
|
|
164
|
+
}
|
|
165
|
+
for (const theme of THEMES) {
|
|
166
|
+
focusCase(DEFAULT_FOCUS_VARIANT, theme);
|
|
167
|
+
}
|
|
168
|
+
for (const variant of EXPANDED_VARIANTS) {
|
|
169
|
+
for (const theme of THEMES) {
|
|
170
|
+
expandedCase(variant, theme);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
for (const theme of THEMES) {
|
|
174
|
+
invalidRangeCase(INVALID_RANGE_VARIANT, theme);
|
|
175
|
+
}
|
|
176
|
+
for (const theme of THEMES) {
|
|
177
|
+
mobileActionSheetRangeCase(theme);
|
|
178
|
+
}
|
|
179
|
+
});
|
|
@@ -113,7 +113,7 @@ export class Q2Detail {
|
|
|
113
113
|
// #endregion
|
|
114
114
|
// #region Render Methods
|
|
115
115
|
render() {
|
|
116
|
-
return (h("div", { key: '
|
|
116
|
+
return (h("div", { key: '18da4ca97fe076c40a3d6ef95b73b570cee07649', class: this.detailClasses }, this.hasLabel && (h("div", { key: '7b88ffdd3e42abb1313d729874d198642a83e66d', class: this.labelClasses, "aria-describedby": !!this.description ? 'label-description' : undefined }, !!this.label ? loc(this.label) : this.hasLabelSlotContent ? h("slot", { name: "label" }) : '')), this.hasDescripiton && (h("div", { key: '9eecdbf3aa2519da9508f1c210d3b3a9129824ce', id: "label-description", class: this.descriptionClasses }, !!this.description ? loc(this.description) : this.hasDefaultSlotContent ? h("slot", null) : ''))));
|
|
117
117
|
}
|
|
118
118
|
static get is() { return "q2-detail"; }
|
|
119
119
|
static get encapsulation() { return "shadow"; }
|
|
@@ -88,6 +88,7 @@ button {
|
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
/**
|
|
91
|
+
* @prop --tct-dropdown-icon-size: (<length>) Controls the size of the dropdown icon.
|
|
91
92
|
* @prop --tct-dropdown-content-padding?: (<length-percentage>+) Controls the optional padding around the dropdown popover content.
|
|
92
93
|
* @prop --tct-dropdown-popover-top-slot-padding: (<length-percentage>+) Controls the inner padding of the dropdown's popover-top slot.
|
|
93
94
|
* @prop --tct-dropdown-popover-bottom-slot-padding: (<length-percentage>+) Controls the inner padding of the dropdown's popover-bottom slot.
|
|
@@ -122,6 +123,7 @@ button {
|
|
|
122
123
|
q2-icon {
|
|
123
124
|
pointer-events: none;
|
|
124
125
|
margin-block: -100px;
|
|
126
|
+
--tct-icon-size: var(--tct-dropdown-icon-size, var(--const-px-18, 18px));
|
|
125
127
|
}
|
|
126
128
|
|
|
127
129
|
click-elsewhere {
|
|
@@ -252,7 +252,7 @@ export class Q2Dropdown {
|
|
|
252
252
|
const custom = type === 'custom';
|
|
253
253
|
let intent;
|
|
254
254
|
if (allowedIntents.includes(type)) {
|
|
255
|
-
intent = type
|
|
255
|
+
intent = type;
|
|
256
256
|
}
|
|
257
257
|
const active = this.open;
|
|
258
258
|
const disabled = !!this.disabled;
|
|
@@ -364,7 +364,7 @@ export class Q2Dropdown {
|
|
|
364
364
|
// #region Render Methods
|
|
365
365
|
render() {
|
|
366
366
|
const btnProps = this.toggleButtonProps;
|
|
367
|
-
return (h("click-elsewhere", { key: '
|
|
367
|
+
return (h("click-elsewhere", { key: '45129d88765c097736a818c203418921bc669d2f', class: this.open ? 'dropdown-open' : '', onChange: this.onClickElsewhere, "test-id": "dropdownContainer" }, h("q2-btn", { key: 'cb76fe56a37af0909e06f267969c0f6605be318d', tabIndex: 0, ref: el => (this.controlElement = el), class: btnProps.className, onClick: this.onToggleClick, onKeyDown: this.onToggleKeydown, fab: btnProps.fab, intent: btnProps.intent, onFocusout: this.handleFocusOut, active: btnProps.active, disabled: btnProps.disabled, ariaExpanded: `${!!btnProps.ariaExpanded}`, label: this.hideLabel && this.label ? loc(this.label) : undefined, hideLabel: this.hideLabel, ariaHasPopup: "menu", "test-id": "dropdownButton", block: this.block, description: loc('tecton.element.dropdown.itemCount', [this.determineDropdownItemCount]) }, this.hasCustomControl ? (h("div", { "test-id": "dropdownControl", class: btnProps.custom ? '' : 'hidden' }, h("slot", { name: "control" }))) : (h(Fragment, null, this.label && !this.hideLabel && (h("span", { class: "dropdown-button-text" }, loc(this.label))), this.icon ? h("q2-icon", { type: this.icon }) : ' '))), h("q2-popover", { key: '73bb8792c03313ae6074299d431d913435e95707', ref: el => (this.popoverElement = el), controlElement: this.controlElement, open: this.open, "max-height": this.popoverMaxHeight, onFocusout: this.handleFocusOut, minHeight: this.popoverMinHeight, direction: this.popoverDirection, align: this.popoverAlignment, mode: this.popoverMode || undefined, block: this.block }, h("slot", { key: '05fa5e37195ce747ac4e801e1decf55838d9c752', name: "popover-top" }), h("q2-option-list", { key: '534b2dfaf2616937933aa2377d1a647688c679c9', onPopoverState: this.onPopoverState, id: "option-list", ref: el => (this.optionList = el), type: "menu", label: loc('tecton.element.optionList.label', [this.optionListLabel]), "no-select": true }, h("slot", { key: '686b6b14ebc67aad7707e6dc0c0170b117afde4e' })), h("slot", { key: '43b916294d33ac547efc6eeed2b2fc1c87085ad3', name: "popover-bottom" }))));
|
|
368
368
|
}
|
|
369
369
|
static get is() { return "q2-dropdown"; }
|
|
370
370
|
static get encapsulation() { return "shadow"; }
|
|
@@ -557,9 +557,9 @@ export class Q2Dropdown {
|
|
|
557
557
|
"docs": {
|
|
558
558
|
"tags": [{
|
|
559
559
|
"name": "warning",
|
|
560
|
-
"text": "
|
|
560
|
+
"text": "Hides the label visually. `label` text is still required for screenreader compliance."
|
|
561
561
|
}],
|
|
562
|
-
"text": "
|
|
562
|
+
"text": "Hides the dropdown's label text from view."
|
|
563
563
|
},
|
|
564
564
|
"getter": false,
|
|
565
565
|
"setter": false,
|
|
@@ -618,7 +618,7 @@ export class Q2Dropdown {
|
|
|
618
618
|
"docs": {
|
|
619
619
|
"tags": [{
|
|
620
620
|
"name": "warning",
|
|
621
|
-
"text": "
|
|
621
|
+
"text": "Required for screen reader compliance even when `hideLabel` is `true`."
|
|
622
622
|
}, {
|
|
623
623
|
"name": "localizable",
|
|
624
624
|
"text": undefined
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { expect } from "@playwright/test";
|
|
2
|
+
import { test } from "@stencil/playwright";
|
|
3
|
+
import { setupPage, THEMES } from "../../../utils/test/vr-helpers";
|
|
4
|
+
const VARIANTS = [
|
|
5
|
+
{
|
|
6
|
+
name: 'chevron',
|
|
7
|
+
html: `<q2-dropdown type="neutral" icon="chevron-down" label="Actions">
|
|
8
|
+
<q2-option value="view">View details</q2-option>
|
|
9
|
+
</q2-dropdown>`,
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
name: 'icon',
|
|
13
|
+
html: `<q2-dropdown type="icon" icon="options" label="More actions" hide-label>
|
|
14
|
+
<q2-option value="view">View details</q2-option>
|
|
15
|
+
</q2-dropdown>`,
|
|
16
|
+
},
|
|
17
|
+
];
|
|
18
|
+
const restingCase = (variant, theme) => {
|
|
19
|
+
test(`q2-dropdown--${variant.name}--resting - ${theme}`, async ({ page }) => {
|
|
20
|
+
await setupPage(page, variant.html, { theme, setupLoc: true });
|
|
21
|
+
await expect(page).toHaveScreenshot(`q2-dropdown--${variant.name}--resting--${theme}.png`);
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
test.describe('q2-dropdown - variants x themes', () => {
|
|
25
|
+
for (const variant of VARIANTS) {
|
|
26
|
+
for (const theme of THEMES) {
|
|
27
|
+
restingCase(variant, theme);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
});
|
|
@@ -88,6 +88,7 @@ button {
|
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
/**
|
|
91
|
+
* @prop --tct-editable-field-icon-size: (<length>) Controls the size of edit, confirm, and cancel icons.
|
|
91
92
|
* @prop --tct-editable-field-btn-hover-background: (<color>) Controls the background color of the editable field action buttons (begin, save, cancel) on hover.
|
|
92
93
|
* @prop --tct-editable-field-btn-icon-stroke-primary: (<color>) Controls the primary stroke color of the editable field action button icons.
|
|
93
94
|
* @prop --tct-editable-field-btn-icon-stroke-secondary: (<color>) Controls the secondary stroke color of the editable field action button icons.
|
|
@@ -101,6 +102,7 @@ button {
|
|
|
101
102
|
.q2-editable-field-wrapper .save-edit,
|
|
102
103
|
.q2-editable-field-wrapper .cancel-edit {
|
|
103
104
|
flex: 0 0 44px;
|
|
105
|
+
--tct-icon-size: var(--tct-editable-field-icon-size, var(--const-px-18, 18px));
|
|
104
106
|
--tct-btn-icon-hover-background: var(--tct-editable-field-btn-hover-background, var(--app-gray-l3, #f2f2f2));
|
|
105
107
|
--tct-icon-stroke-primary: var(--tct-editable-field-btn-icon-stroke-primary, var(--app-gray, #747474));
|
|
106
108
|
--tct-icon-stroke-secondary: var(--tct-editable-field-btn-icon-stroke-secondary, var(--app-gray, #747474));
|
|
@@ -14,6 +14,8 @@ export class Q2EditableField {
|
|
|
14
14
|
/**
|
|
15
15
|
* The visible descriptor for the element.
|
|
16
16
|
* Serves as the input label while in the edit state and as a decorative label for the read state when `persistentLabel` is `true`.
|
|
17
|
+
* @warning
|
|
18
|
+
* Required for screen reader compliance even when `hideLabel` is `true`.
|
|
17
19
|
* @localizable
|
|
18
20
|
*/
|
|
19
21
|
this.label = '';
|
|
@@ -21,15 +23,21 @@ export class Q2EditableField {
|
|
|
21
23
|
this.value = '';
|
|
22
24
|
this.cancelClick = (event) => {
|
|
23
25
|
event === null || event === void 0 ? void 0 : event.stopPropagation();
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
const emittedEvents = this.emitChangeEvents({ editing: false, name: 'cancel' });
|
|
27
|
+
queueMicrotask(() => {
|
|
28
|
+
if (this.isDefaultPrevented(emittedEvents))
|
|
29
|
+
return;
|
|
30
|
+
this.editing = false;
|
|
31
|
+
});
|
|
29
32
|
};
|
|
30
33
|
this.editClick = (event) => {
|
|
31
34
|
event === null || event === void 0 ? void 0 : event.stopPropagation();
|
|
32
|
-
|
|
35
|
+
const emittedEvents = this.emitChangeEvents({ editing: true, name: 'edit' });
|
|
36
|
+
queueMicrotask(() => {
|
|
37
|
+
if (this.isDefaultPrevented(emittedEvents))
|
|
38
|
+
return;
|
|
39
|
+
this.editing = true;
|
|
40
|
+
});
|
|
33
41
|
};
|
|
34
42
|
this.inputChange = (e) => {
|
|
35
43
|
e.stopPropagation();
|
|
@@ -58,11 +66,18 @@ export class Q2EditableField {
|
|
|
58
66
|
this.saveClick = (event) => {
|
|
59
67
|
event && event.stopPropagation();
|
|
60
68
|
const valueFromInputProp = this.hostElement.shadowRoot.querySelector('q2-input').value;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
69
|
+
const value = this.innerValue || valueFromInputProp;
|
|
70
|
+
const formattedValue = this.formattedValue || valueFromInputProp;
|
|
71
|
+
const emittedEvents = this.emitChangeEvents({ editing: false, name: 'save', value, formattedValue });
|
|
72
|
+
queueMicrotask(() => {
|
|
73
|
+
if (this.isDefaultPrevented(emittedEvents))
|
|
74
|
+
return;
|
|
75
|
+
if (this.hasErrors) {
|
|
76
|
+
this.inputElement.focus();
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
this.value = value;
|
|
80
|
+
this.editing = false;
|
|
66
81
|
});
|
|
67
82
|
};
|
|
68
83
|
}
|
|
@@ -81,29 +96,6 @@ export class Q2EditableField {
|
|
|
81
96
|
}
|
|
82
97
|
// #endregion
|
|
83
98
|
// #region Listeners
|
|
84
|
-
onHostElementChange(event) {
|
|
85
|
-
if (!isEventFromElement(event, this.hostElement) || this.hostElement.onchange)
|
|
86
|
-
return;
|
|
87
|
-
queueMicrotask(() => {
|
|
88
|
-
switch (event.detail.name) {
|
|
89
|
-
case 'save':
|
|
90
|
-
if (this.hasErrors) {
|
|
91
|
-
this.inputElement.focus();
|
|
92
|
-
break;
|
|
93
|
-
}
|
|
94
|
-
this.value = event.detail.value;
|
|
95
|
-
this.editing = event.detail.editing;
|
|
96
|
-
break;
|
|
97
|
-
case 'cancel':
|
|
98
|
-
this.inputElement.value = this.value;
|
|
99
|
-
this.editing = event.detail.editing;
|
|
100
|
-
break;
|
|
101
|
-
case 'edit':
|
|
102
|
-
this.editing = event.detail.editing;
|
|
103
|
-
break;
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
99
|
delegateFocus(event) {
|
|
108
100
|
if (!isEventFromElement(event, this.hostElement))
|
|
109
101
|
return;
|
|
@@ -172,6 +164,8 @@ export class Q2EditableField {
|
|
|
172
164
|
observesEditing(newValue, oldValue) {
|
|
173
165
|
if (newValue === oldValue)
|
|
174
166
|
return;
|
|
167
|
+
if (!newValue)
|
|
168
|
+
this.discardDraft();
|
|
175
169
|
this.scheduledAfterRender.push(this.hostElement.focus);
|
|
176
170
|
}
|
|
177
171
|
errorsObserver() {
|
|
@@ -199,6 +193,23 @@ export class Q2EditableField {
|
|
|
199
193
|
get wrapperClass() {
|
|
200
194
|
return `q2-editable-field-wrapper ${this.editing ? 'editing' : ''}`;
|
|
201
195
|
}
|
|
196
|
+
/**
|
|
197
|
+
* Drops the in-progress draft and re-syncs the input and the read state display from `value`.
|
|
198
|
+
*
|
|
199
|
+
* Runs whenever the field leaves the edit state, including when a consumer drives `editing` itself, so the
|
|
200
|
+
* read state never renders a discarded draft.
|
|
201
|
+
*/
|
|
202
|
+
discardDraft() {
|
|
203
|
+
this.innerValue = undefined;
|
|
204
|
+
this.formattedValue = undefined;
|
|
205
|
+
// `q2-input` only drops its own draft when its `value` prop actually changes, so bounce through a
|
|
206
|
+
// throwaway value that is guaranteed to differ from `value` before restoring it.
|
|
207
|
+
this.inputElement.value = this.value === '' ? ' ' : '';
|
|
208
|
+
this.inputElement.value = this.value;
|
|
209
|
+
}
|
|
210
|
+
emitChangeEvents(detail) {
|
|
211
|
+
return [this.change.emit(detail), this.tctChange.emit(detail)];
|
|
212
|
+
}
|
|
202
213
|
generateEditStateDOM() {
|
|
203
214
|
return (h("div", { class: this.wrapperClass, hidden: !this.editing }, h("q2-input", { ref: el => (this.inputElement = el), label: this.locLabel, hideLabel: this.hideLabel, value: this.value, hints: this.hasHints ? this.hints : undefined, errors: this.hasErrors ? this.errors : undefined, type: this.type, disabled: this.disabled, _updateValueOnInput: false, formatModifier: this.formatModifier, maxlength: this.maxlength, "test-id": "editableInput", onChange: e => e.stopImmediatePropagation(), onInput: e => e.stopImmediatePropagation(), onTctInput: this.inputInput, onTctChange: this.inputChange, onKeyDown: this.inputKeyDown, onClick: this.inputClick }), h("q2-btn", { ref: el => (this.cancelBtnElement = el), class: "cancel-edit", label: `${loc('tecton.element.editableField.cancel')} ${this.locLabel}`, "hide-label": true, "test-id": "cancelButton", onClick: e => e.stopImmediatePropagation(), onTctClick: this.cancelClick }, h("q2-icon", { type: "close" })), h("q2-btn", { ref: el => (this.saveBtnElement = el), class: "save-edit", label: `${loc('tecton.element.editableField.save')} ${this.locLabel}`, "hide-label": true, "test-id": "saveButton", onClick: e => e.stopImmediatePropagation(), onTctClick: this.saveClick }, h("q2-icon", { type: "checkmark" }))));
|
|
204
215
|
}
|
|
@@ -208,10 +219,13 @@ export class Q2EditableField {
|
|
|
208
219
|
}
|
|
209
220
|
return (h("div", { class: this.wrapperClass, hidden: this.editing }, h("div", { class: "text-wrapper" }, this.formattedValue || this.value), h("q2-btn", { ref: el => (this.editBtnElement = el), class: "begin-edit", label: `${loc('tecton.element.editableField.edit')} ${this.locLabel}`, "hide-label": true, disabled: this.disabled, "test-id": "editButton", onClick: e => e.stopImmediatePropagation(), onTctClick: this.editClick }, h("q2-icon", { type: "edit" }))));
|
|
210
221
|
}
|
|
222
|
+
isDefaultPrevented(events) {
|
|
223
|
+
return this.hostElement.onchange != null || events.some(event => event.defaultPrevented);
|
|
224
|
+
}
|
|
211
225
|
// #endregion
|
|
212
226
|
// #region Render Methods
|
|
213
227
|
render() {
|
|
214
|
-
return (h("div", { key: '
|
|
228
|
+
return (h("div", { key: '38f7c5b55e8b6f0590c72ab81a4bb26c93506249' }, this.generateEditStateDOM(), this.generateReadStateDOM()));
|
|
215
229
|
}
|
|
216
230
|
static get is() { return "q2-editable-field"; }
|
|
217
231
|
static get encapsulation() { return "shadow"; }
|
|
@@ -357,8 +371,11 @@ export class Q2EditableField {
|
|
|
357
371
|
"required": false,
|
|
358
372
|
"optional": false,
|
|
359
373
|
"docs": {
|
|
360
|
-
"tags": [
|
|
361
|
-
|
|
374
|
+
"tags": [{
|
|
375
|
+
"name": "warning",
|
|
376
|
+
"text": "Hides the label visually. `label` text is still required for screenreader compliance."
|
|
377
|
+
}],
|
|
378
|
+
"text": "Hides the field's `<label>` element from view."
|
|
362
379
|
},
|
|
363
380
|
"getter": false,
|
|
364
381
|
"setter": false,
|
|
@@ -394,6 +411,9 @@ export class Q2EditableField {
|
|
|
394
411
|
"optional": false,
|
|
395
412
|
"docs": {
|
|
396
413
|
"tags": [{
|
|
414
|
+
"name": "warning",
|
|
415
|
+
"text": "Required for screen reader compliance even when `hideLabel` is `true`."
|
|
416
|
+
}, {
|
|
397
417
|
"name": "localizable",
|
|
398
418
|
"text": undefined
|
|
399
419
|
}],
|
|
@@ -530,7 +550,7 @@ export class Q2EditableField {
|
|
|
530
550
|
"name": "deprecated",
|
|
531
551
|
"text": "Use 'tctChange' instead"
|
|
532
552
|
}],
|
|
533
|
-
"text": "Emitted when the 'Edit', 'Cancel', or 'Save' buttons are clicked.\n\nThe event detail will not include a `value` or `formattedValue` if the event name is 'edit' or 'cancel'."
|
|
553
|
+
"text": "Emitted when the 'Edit', 'Cancel', or 'Save' buttons are clicked.\n\nThe event detail will not include a `value` or `formattedValue` if the event name is 'edit' or 'cancel'.\n\nCall `event.preventDefault()` to prevent the default behavior (the component's internal `editing` and `value` updates)."
|
|
534
554
|
},
|
|
535
555
|
"complexType": {
|
|
536
556
|
"original": "{\n editing: boolean;\n name: 'edit' | 'cancel' | 'save';\n value?: string;\n formattedValue?: string;\n }",
|
|
@@ -566,7 +586,7 @@ export class Q2EditableField {
|
|
|
566
586
|
"name": "info",
|
|
567
587
|
"text": "If you are utilizing events to provide input validation, it is recommended you use the `input` event, not the `change` event."
|
|
568
588
|
}],
|
|
569
|
-
"text": "Emitted when the 'Edit', 'Cancel', or 'Save' buttons are clicked.\n\nThe event detail will not include a `value` or `formattedValue` if the event name is 'edit' or 'cancel'."
|
|
589
|
+
"text": "Emitted when the 'Edit', 'Cancel', or 'Save' buttons are clicked.\n\nThe event detail will not include a `value` or `formattedValue` if the event name is 'edit' or 'cancel'.\n\nCall `event.preventDefault()` to prevent the default behavior (the component's internal `editing` and `value` updates)."
|
|
570
590
|
},
|
|
571
591
|
"complexType": {
|
|
572
592
|
"original": "{\n editing: boolean;\n name: 'edit' | 'cancel' | 'save';\n value?: string;\n formattedValue?: string;\n }",
|
|
@@ -685,12 +705,6 @@ export class Q2EditableField {
|
|
|
685
705
|
}
|
|
686
706
|
static get listeners() {
|
|
687
707
|
return [{
|
|
688
|
-
"name": "change",
|
|
689
|
-
"method": "onHostElementChange",
|
|
690
|
-
"target": undefined,
|
|
691
|
-
"capture": false,
|
|
692
|
-
"passive": false
|
|
693
|
-
}, {
|
|
694
708
|
"name": "focus",
|
|
695
709
|
"method": "delegateFocus",
|
|
696
710
|
"target": undefined,
|
|
@@ -118,7 +118,7 @@ export class Q2Example {
|
|
|
118
118
|
}, onClick: () => this.tctClick.emit(), role: "menu" }, h("slot", null))));
|
|
119
119
|
}
|
|
120
120
|
render() {
|
|
121
|
-
return h(Host, { key: '
|
|
121
|
+
return h(Host, { key: 'e7adf64d703f0226f4ee5f5038ddbcda28b27ed2', attribute: "navigation" }, this.renderMenuInner());
|
|
122
122
|
}
|
|
123
123
|
static get is() { return "q2-example"; }
|
|
124
124
|
static get encapsulation() { return "shadow"; }
|
|
@@ -230,6 +230,7 @@ button {
|
|
|
230
230
|
* @prop --tct-file-picker-item-close-btn-border-radius: (<length-percentage>) Controls the corner radius of the file item close button.
|
|
231
231
|
* @prop --tct-file-picker-item-close-btn-size: (<length>) Controls the width and height of the file item close button.
|
|
232
232
|
* @prop --tct-file-picker-list-max-height: (<length-percentage>) Controls the maximum height of the file list container before scrolling.
|
|
233
|
+
* @prop --tct-file-picker-list-gradient-height: (<length-percentage>) Controls the height of the fade indicating more files are available below the visible list.
|
|
233
234
|
* @prop --tct-file-picker-scrollbar-color: (<color>) Controls the scrollbar thumb color of the file list container.
|
|
234
235
|
* @prop --tct-file-picker-loading-size: (<length>) Controls the font size driving the picker-level loading spinner.
|
|
235
236
|
* @prop --tct-file-picker-loading-file-color: (<color>) Controls the text color of the loading-file message.
|
|
@@ -357,6 +358,28 @@ button {
|
|
|
357
358
|
white-space: nowrap;
|
|
358
359
|
}
|
|
359
360
|
|
|
361
|
+
.file-name-header {
|
|
362
|
+
display: flex;
|
|
363
|
+
align-items: center;
|
|
364
|
+
min-width: 0;
|
|
365
|
+
white-space: nowrap;
|
|
366
|
+
width: 100%;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
.file-name-leading {
|
|
370
|
+
flex: 0 1 auto;
|
|
371
|
+
min-width: 0;
|
|
372
|
+
overflow: hidden;
|
|
373
|
+
text-overflow: ellipsis;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
.file-name-trailing {
|
|
377
|
+
direction: rtl;
|
|
378
|
+
flex: 0 0 auto;
|
|
379
|
+
max-width: 50%;
|
|
380
|
+
overflow: hidden;
|
|
381
|
+
}
|
|
382
|
+
|
|
360
383
|
.file-item-loading {
|
|
361
384
|
/* stylelint-disable-next-line tecton/require-t-px-fallback */
|
|
362
385
|
font-size: var(--tct-file-picker-file-item-loading-size, var(--app-scale-6x, 30px));
|
|
@@ -375,6 +398,10 @@ button {
|
|
|
375
398
|
scrollbar-width: thin;
|
|
376
399
|
scrollbar-color: var(--tct-file-picker-scrollbar-color, var(--t-a11y-gray-color, #949494)) transparent;
|
|
377
400
|
}
|
|
401
|
+
.file-list-container.more-files {
|
|
402
|
+
-webkit-mask-image: linear-gradient(to bottom, currentColor calc(100% - var(--tct-file-picker-list-gradient-height, var(--app-scale-12x, 60px))), transparent 100%);
|
|
403
|
+
mask-image: linear-gradient(to bottom, currentColor calc(100% - var(--tct-file-picker-list-gradient-height, var(--app-scale-12x, 60px))), transparent 100%);
|
|
404
|
+
}
|
|
378
405
|
|
|
379
406
|
.file-picker {
|
|
380
407
|
display: flex;
|