q2-tecton-elements 1.53.1 → 1.53.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/click-elsewhere_2.cjs.entry.js +73 -69
- package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
- package/dist/cjs/{index-07285783.js → index-7aecfed8.js} +30 -18
- package/dist/cjs/index-7aecfed8.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-action-group.cjs.entry.js +2 -2
- package/dist/cjs/q2-action-sheet.cjs.entry.js +2 -2
- package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
- package/dist/cjs/q2-badge_7.cjs.entry.js +4 -4
- 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 +3 -3
- package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-area.cjs.entry.js +2 -2
- package/dist/cjs/q2-chart-bar.cjs.entry.js +2 -2
- package/dist/cjs/q2-chart-donut.cjs.entry.js +2 -2
- 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-currency.cjs.entry.js +1 -1
- package/dist/cjs/q2-data-table.cjs.entry.js +1 -1
- 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 -2
- 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-example.cjs.entry.js +1 -1
- package/dist/cjs/q2-file-picker.cjs.entry.js +1 -1
- package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
- package/dist/cjs/q2-item_3.cjs.entry.js +3 -3
- package/dist/cjs/q2-legend.cjs.entry.js +1 -1
- package/dist/cjs/q2-loc.cjs.entry.js +2 -2
- package/dist/cjs/q2-message.cjs.entry.js +2 -2
- package/dist/cjs/q2-month-picker.cjs.entry.js +3 -3
- package/dist/cjs/q2-optgroup.cjs.entry.js +2 -2
- package/dist/cjs/q2-option-list.cjs.entry.js +1 -1
- package/dist/cjs/q2-option.cjs.entry.js +2 -2
- package/dist/cjs/q2-pagination.cjs.entry.js +4 -4
- package/dist/cjs/q2-pill.cjs.entry.js +2 -2
- 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 +130 -14
- 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 +2 -2
- package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js +2 -2
- package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
- package/dist/collection/components/click-elsewhere/click-elsewhere.js.map +1 -1
- package/dist/collection/components/click-elsewhere/test/click-elsewhere-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-action-group/q2-action-group.js +1 -1
- 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.map +1 -1
- package/dist/collection/components/q2-action-group/test/q2-action-group.spec.js.map +1 -1
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +1 -1
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.js.map +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.js +1 -1
- package/dist/collection/components/q2-avatar/q2-avatar.js.map +1 -1
- package/dist/collection/components/q2-avatar/test/q2-avatar-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-badge/q2-badge.js.map +1 -1
- package/dist/collection/components/q2-badge/test/q2-badge-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
- package/dist/collection/components/q2-btn/test/q2-btn-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar-helpers.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar-types.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar-validation.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
- package/dist/collection/components/q2-calendar/q2-month-picker.js.map +1 -1
- package/dist/collection/components/q2-calendar/test/helpers-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-calendar/test/q2-calendar-month-picker-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js +2 -2
- package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-calendar/test/validation-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-card/q2-card.js.map +1 -1
- package/dist/collection/components/q2-card/test/q2-card-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
- package/dist/collection/components/q2-carousel/test/q2-carousel-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +2 -2
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js.map +1 -1
- package/dist/collection/components/q2-carousel-pane/test/q2-carousel-pane-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-carousel-pane/test/q2-carousel-pane-test.spec.js.map +1 -1
- package/dist/collection/components/q2-chart-area/q2-chart-area.js +1 -1
- package/dist/collection/components/q2-chart-area/q2-chart-area.js.map +1 -1
- package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +1 -1
- package/dist/collection/components/q2-chart-bar/q2-chart-bar.js.map +1 -1
- package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +1 -1
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
- package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-checkbox/q2-checkbox.js.map +1 -1
- package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js.map +1 -1
- package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-currency/q2-currency.js +1 -1
- package/dist/collection/components/q2-currency/q2-currency.js.map +1 -1
- package/dist/collection/components/q2-currency/test/q2-currency-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-data-table/q2-data-table.js.map +1 -1
- package/dist/collection/components/q2-data-table/test/q2-data-table-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-detail/q2-detail.js +1 -1
- package/dist/collection/components/q2-detail/q2-detail.js.map +1 -1
- package/dist/collection/components/q2-detail/test/q2-detail-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.js +3 -1
- package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
- package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js +5 -17
- 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.js.map +1 -1
- package/dist/collection/components/q2-dropdown-item/test/q2-dropdown-item-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-editable-field/q2-editable-field.js.map +1 -1
- package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-example/q2-example.js +1 -1
- package/dist/collection/components/q2-example/q2-example.js.map +1 -1
- package/dist/collection/components/q2-example/test/q2-example.e2e.js.map +1 -1
- package/dist/collection/components/q2-example/test/q2-example.spec.js.map +1 -1
- package/dist/collection/components/q2-file-picker/q2-file-picker.js.map +1 -1
- package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.spec.js.map +1 -1
- package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
- package/dist/collection/components/q2-formatted-text/q2-formatted-text.js.map +1 -1
- package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-icon/q2-icon-types.js.map +1 -1
- package/dist/collection/components/q2-icon/q2-icon.js.map +1 -1
- package/dist/collection/components/q2-icon/test/q2-icon-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/alpha.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/alpha.spec.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/alphanumeric.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/alphanumeric.spec.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/credit-card.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/credit-card.spec.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/currency.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/currency.spec.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/date.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/date.spec.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/generic.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/number.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/numeric.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/numeric.spec.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/phone.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/phone.spec.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/postal.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/postal.spec.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/ssn.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/ssn.spec.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/tin.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/tin.spec.js.map +1 -1
- package/dist/collection/components/q2-input/q2-input-types.js.map +1 -1
- package/dist/collection/components/q2-input/q2-input.js +1 -1
- package/dist/collection/components/q2-input/q2-input.js.map +1 -1
- package/dist/collection/components/q2-input/test/q2-input-credit-card-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-input/test/q2-input-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-input/test/q2-input-test.spec.js.map +1 -1
- package/dist/collection/components/q2-item/q2-item.js +1 -1
- package/dist/collection/components/q2-item/q2-item.js.map +1 -1
- package/dist/collection/components/q2-item/test/q2-item-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-item/test/q2-item-test.spec.js.map +1 -1
- package/dist/collection/components/q2-legend/q2-legend.js +1 -1
- package/dist/collection/components/q2-legend/q2-legend.js.map +1 -1
- package/dist/collection/components/q2-legend/test/q2-legend-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-legend/test/q2-legend-test.spec.js.map +1 -1
- package/dist/collection/components/q2-link/q2-link.js.map +1 -1
- package/dist/collection/components/q2-link/test/q2-link-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-list/q2-list.js +1 -1
- package/dist/collection/components/q2-list/q2-list.js.map +1 -1
- package/dist/collection/components/q2-list/test/q2-list-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-loading/q2-loading.js.map +1 -1
- package/dist/collection/components/q2-loading/skeleton/q2-loading-element/index.js.map +1 -1
- package/dist/collection/components/q2-loading/skeleton/shapes.js.map +1 -1
- package/dist/collection/components/q2-loading/test/q2-loading-element-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-loading/test/q2-loading-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-loc/q2-loc.js +1 -1
- package/dist/collection/components/q2-loc/q2-loc.js.map +1 -1
- package/dist/collection/components/q2-loc/test/q2-loc-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-loc/test/q2-loc-test.spec.js.map +1 -1
- package/dist/collection/components/q2-message/q2-message.js +1 -1
- package/dist/collection/components/q2-message/q2-message.js.map +1 -1
- package/dist/collection/components/q2-message/test/q2-message-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
- package/dist/collection/components/q2-optgroup/q2-optgroup.js.map +1 -1
- package/dist/collection/components/q2-optgroup/test/q2-optgroup-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-option/q2-option.js +1 -1
- package/dist/collection/components/q2-option/q2-option.js.map +1 -1
- package/dist/collection/components/q2-option/test/q2-option-test.e2e.js.map +1 -1
- 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.map +1 -1
- package/dist/collection/components/q2-option-list/test/q2-option-list-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-pagination/q2-pagination.js +3 -3
- package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
- package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js +1 -0
- package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-pill/q2-pill.js +1 -1
- package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
- package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js +2 -2
- package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-popover/q2-popover.css +18 -10
- package/dist/collection/components/q2-popover/q2-popover.js +74 -69
- package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
- package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js +1 -34
- package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js +902 -511
- package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js.map +1 -1
- package/dist/collection/components/q2-radio/q2-radio.js.map +1 -1
- package/dist/collection/components/q2-radio/test/q2-radio-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-radio-group/q2-radio-group.js.map +1 -1
- package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
- package/dist/collection/components/q2-relative-time/q2-relative-time.js.map +1 -1
- package/dist/collection/components/q2-relative-time/test/q2-relative-time-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
- package/dist/collection/components/q2-resize-observer/q2-resize-observer.js.map +1 -1
- package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.e2e.js.map +1 -1
- package/dist/collection/components/q2-resize-observer/test/q2-resize-observer.spec.js.map +1 -1
- package/dist/collection/components/q2-section/q2-section.js +2 -2
- package/dist/collection/components/q2-section/q2-section.js.map +1 -1
- package/dist/collection/components/q2-section/test/q2-section-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-select/q2-select.js +151 -16
- 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 -1
- package/dist/collection/components/q2-select/test/q2-select-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-select/test/q2-select-test.spec.js +552 -0
- package/dist/collection/components/q2-select/test/q2-select-test.spec.js.map +1 -0
- package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
- package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
- package/dist/collection/components/q2-stepper/test/q2-stepper-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js.map +1 -1
- package/dist/collection/components/q2-stepper-pane/test/q2-stepper-pane-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js.map +1 -1
- package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
- package/dist/collection/components/q2-tab-container/q2-tab-container.js.map +1 -1
- package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.spec.js.map +1 -1
- package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
- package/dist/collection/components/q2-tab-pane/q2-tab-pane.js.map +1 -1
- package/dist/collection/components/q2-tab-pane/test/q2-tab-pane-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-tag/q2-tag.js +1 -1
- package/dist/collection/components/q2-tag/q2-tag.js.map +1 -1
- package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js +6 -1
- package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-textarea/q2-textarea.js +1 -1
- package/dist/collection/components/q2-textarea/q2-textarea.js.map +1 -1
- package/dist/collection/components/q2-textarea/test/q2-textarea-test.e2e.js.map +1 -1
- package/dist/collection/components/q2-tooltip/q2-tooltip.js.map +1 -1
- package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.e2e.js.map +1 -1
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane-types.js.map +1 -1
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js.map +1 -1
- package/dist/collection/components/tecton-tab-pane/test/tecton-tab-pane-test.e2e.js.map +1 -1
- package/dist/collection/index.js.map +1 -1
- package/dist/collection/utils/action-sheet.js.map +1 -1
- package/dist/collection/utils/charting.js.map +1 -1
- package/dist/collection/utils/helpers.js.map +1 -1
- package/dist/collection/utils/index.js +37 -0
- package/dist/collection/utils/index.js.map +1 -1
- package/dist/collection/utils/sanitize-html-string.js.map +1 -1
- package/dist/collection/utils/sanitize-regex-string.js.map +1 -1
- package/dist/collection/utils/test/action-sheet-test.e2e.js.map +1 -1
- package/dist/collection/utils/test/index.spec.js.map +1 -1
- package/dist/components/index2.js +29 -17
- package/dist/components/index2.js.map +1 -1
- package/dist/components/q2-action-group.js +1 -1
- package/dist/components/q2-action-sheet.js +1 -1
- package/dist/components/q2-avatar2.js +1 -1
- package/dist/components/q2-carousel-pane.js +2 -2
- package/dist/components/q2-chart-area.js +1 -1
- package/dist/components/q2-chart-bar.js +1 -1
- package/dist/components/q2-chart-donut.js +1 -1
- package/dist/components/q2-currency.js +1 -1
- package/dist/components/q2-detail.js +1 -1
- package/dist/components/q2-dropdown.js +3 -1
- package/dist/components/q2-dropdown.js.map +1 -1
- package/dist/components/q2-example.js +1 -1
- package/dist/components/q2-formatted-text.js +1 -1
- package/dist/components/q2-input2.js +1 -1
- package/dist/components/q2-item2.js +1 -1
- package/dist/components/q2-legend2.js +1 -1
- package/dist/components/q2-list2.js +1 -1
- package/dist/components/q2-loc.js +1 -1
- package/dist/components/q2-message2.js +1 -1
- package/dist/components/q2-month-picker.js +2 -2
- package/dist/components/q2-optgroup2.js +1 -1
- package/dist/components/q2-option2.js +1 -1
- package/dist/components/q2-pagination.js +3 -3
- package/dist/components/q2-pill.js +1 -1
- package/dist/components/q2-popover2.js +73 -69
- 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 +133 -17
- 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 +1 -1
- package/dist/components/q2-textarea.js +1 -1
- package/dist/components/tecton-tab-pane.js +2 -2
- package/dist/esm/click-elsewhere_2.entry.js +73 -69
- package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
- package/dist/esm/{index-d18e2a20.js → index-99c46474.js} +30 -18
- package/dist/esm/index-99c46474.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-action-group.entry.js +2 -2
- package/dist/esm/q2-action-sheet.entry.js +2 -2
- package/dist/esm/q2-avatar.entry.js +1 -1
- package/dist/esm/q2-badge_7.entry.js +4 -4
- 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 +3 -3
- package/dist/esm/q2-carousel.entry.js +1 -1
- package/dist/esm/q2-chart-area.entry.js +2 -2
- package/dist/esm/q2-chart-bar.entry.js +2 -2
- package/dist/esm/q2-chart-donut.entry.js +2 -2
- package/dist/esm/q2-checkbox-group.entry.js +1 -1
- package/dist/esm/q2-checkbox.entry.js +1 -1
- package/dist/esm/q2-currency.entry.js +1 -1
- package/dist/esm/q2-data-table.entry.js +1 -1
- 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 -2
- package/dist/esm/q2-dropdown.entry.js.map +1 -1
- package/dist/esm/q2-editable-field.entry.js +1 -1
- package/dist/esm/q2-example.entry.js +1 -1
- package/dist/esm/q2-file-picker.entry.js +1 -1
- package/dist/esm/q2-formatted-text.entry.js +1 -1
- package/dist/esm/q2-item_3.entry.js +3 -3
- package/dist/esm/q2-legend.entry.js +1 -1
- package/dist/esm/q2-loc.entry.js +2 -2
- package/dist/esm/q2-message.entry.js +2 -2
- package/dist/esm/q2-month-picker.entry.js +3 -3
- package/dist/esm/q2-optgroup.entry.js +2 -2
- package/dist/esm/q2-option-list.entry.js +1 -1
- package/dist/esm/q2-option.entry.js +2 -2
- package/dist/esm/q2-pagination.entry.js +4 -4
- package/dist/esm/q2-pill.entry.js +2 -2
- 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 +131 -15
- 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 +2 -2
- package/dist/esm/q2-tecton-elements.js +1 -1
- package/dist/esm/q2-textarea.entry.js +2 -2
- package/dist/esm/q2-tooltip.entry.js +1 -1
- package/dist/esm/tecton-tab-pane.entry.js +2 -2
- package/dist/jest.setup.js +33 -0
- package/dist/jest.setup.js.map +1 -0
- package/dist/q2-tecton-elements/click-elsewhere_2.entry.js +103 -92
- package/dist/q2-tecton-elements/click-elsewhere_2.entry.js.map +1 -1
- package/dist/q2-tecton-elements/{index-d18e2a20.js → index-99c46474.js} +24 -17
- package/dist/q2-tecton-elements/index-99c46474.js.map +1 -0
- package/dist/q2-tecton-elements/q2-action-group.entry.js +4 -4
- package/dist/q2-tecton-elements/q2-action-sheet.entry.js +34 -34
- package/dist/q2-tecton-elements/q2-avatar.entry.js +6 -6
- package/dist/q2-tecton-elements/q2-badge_7.entry.js +17 -17
- 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 +21 -21
- package/dist/q2-tecton-elements/q2-carousel.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-chart-area.entry.js +3 -3
- package/dist/q2-tecton-elements/q2-chart-bar.entry.js +80 -80
- package/dist/q2-tecton-elements/q2-chart-donut.entry.js +101 -101
- 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-currency.entry.js +6 -6
- package/dist/q2-tecton-elements/q2-data-table.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-detail.entry.js +39 -39
- package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-dropdown.entry.js +13 -11
- package/dist/q2-tecton-elements/q2-dropdown.entry.js.map +1 -1
- package/dist/q2-tecton-elements/q2-editable-field.entry.js +8 -8
- package/dist/q2-tecton-elements/q2-example.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-file-picker.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-formatted-text.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-item_3.entry.js +19 -19
- package/dist/q2-tecton-elements/q2-legend.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-loc.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-message.entry.js +21 -21
- package/dist/q2-tecton-elements/q2-month-picker.entry.js +14 -14
- package/dist/q2-tecton-elements/q2-optgroup.entry.js +8 -8
- package/dist/q2-tecton-elements/q2-option-list.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-option.entry.js +14 -14
- package/dist/q2-tecton-elements/q2-pagination.entry.js +34 -34
- package/dist/q2-tecton-elements/q2-pill.entry.js +14 -14
- package/dist/q2-tecton-elements/q2-radio-group.entry.js +5 -5
- 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 +196 -93
- 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 +25 -25
- 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 +3 -3
- 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/builds/q2e/development/tecton/tecton/packages/q2-tecton-elements/.stencil/jest.setup.d.ts +10 -0
- package/dist/types/components/q2-popover/q2-popover.d.ts +4 -4
- package/dist/types/components/q2-select/q2-select.d.ts +23 -0
- package/dist/types/utils/index.d.ts +3 -0
- package/package.json +3 -3
- package/dist/cjs/index-07285783.js.map +0 -1
- package/dist/esm/index-d18e2a20.js.map +0 -1
- package/dist/q2-tecton-elements/index-d18e2a20.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-file-picker.js","sourceRoot":"","sources":["../../../src/components/q2-file-picker/q2-file-picker.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ComponentInterface,\n Element,\n Event,\n EventEmitter,\n Fragment,\n h,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { hasSlotContent, loc } from 'src/utils';\n\ntype FileStatus = 'invalid-type' | 'over-size-limit' | 'over-max-files-limit' | 'in-progress' | 'failed' | 'uploaded';\nexport type FilesObject = {\n invalidFiles: {\n file: File;\n status: 'invalid-type' | 'over-size-limit' | 'over-max-files-limit' | 'in-progress' | 'failed' | 'uploaded';\n }[];\n validFiles: File[];\n};\n\n@Component({\n tag: 'q2-file-picker',\n styleUrl: 'q2-file-picker.scss',\n shadow: true,\n})\nexport class Q2FilePicker implements ComponentInterface {\n // #region Own Properties\n\n browseButtonInput: HTMLElement;\n dropZone: HTMLElement;\n fileItemsToBeDeleted;\n queuedFiles: File[] = [];\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n el: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n areFilesUploading: boolean = false;\n\n @State()\n displayedFiles: {\n file: File;\n status: FileStatus;\n toBeRemoved?: boolean;\n }[] = [];\n\n @State()\n isDropZoneHighlighted: boolean = false;\n\n @State()\n refreshCounter = 0;\n\n // #endregion\n // #region Public Property API\n\n /**\n * A description of the field. This is announced by screen readers when the field is focused.\n * @localizable\n */\n @Prop({ reflect: true })\n description: string;\n\n /**\n * An array of strings representing the allowed file types based on file extension.\n * Example: ['jpg', 'png', 'pdf']\n */\n @Prop({ reflect: true })\n fileTypes: string[] | string = [];\n\n /**\n * The label for the field. This is announced by screen readers when the field is focused.\n * @localizable\n */\n @Prop({ reflect: true })\n label: string;\n\n /**\n * The maximum number of files that can be selected.\n */\n @Prop({ reflect: true })\n // maxFiles: number | string = Infinity;\n maxFiles: number = Infinity;\n\n /**\n * The maximum size (in bytes) of any file that can be selected.\n */\n @Prop({ reflect: true })\n maxFileSize: number = Infinity;\n\n /**\n * An array of objects representing the status of the files being uploaded.\n * Each object should have a `name` property (the file name) and a `status`\n * property (the status of the file) that equals either 'in-progress',\n * 'failed' or 'uploaded'.\n */\n @Prop({ reflect: true })\n status: { name: string; status: 'in-progress' | 'failed' | 'uploaded' }[] = [];\n\n /**\n * Returns an array of File objects representing the files selected by the\n * user. If no files are selected, the value is an empty array.\n * @readonly\n */\n @Prop({ mutable: true })\n value: FilesObject = { invalidFiles: [], validFiles: [] }; // Ensure FilesObject is exported or imported correctly\n\n /**\n * Determines if the file picker is a browse button or a drop zone with a\n * browse link.\n */\n @Prop({ reflect: true })\n variant: 'browse' | 'browse-drop' = 'browse';\n\n // #endregion\n // #region Events\n\n @Event()\n tctChange: EventEmitter<FilesObject>;\n\n // #endregion\n // #region Watchers\n\n @Watch('status')\n updateFileList(newValue: { name: string; status: FileStatus }[]) {\n newValue.forEach(statusItem => {\n const matchingQueuedFileIndex = this.queuedFiles.findIndex(file => file.name === statusItem.name);\n if (matchingQueuedFileIndex > -1) {\n const matchingFile = this.queuedFiles.splice(matchingQueuedFileIndex, 1)[0];\n this.displayedFiles = [{ file: matchingFile, status: statusItem.status }, ...this.displayedFiles];\n } else {\n const matchingDisplayedFileIndex = this.displayedFiles.findIndex(\n file => file.file.name === statusItem.name\n );\n if (matchingDisplayedFileIndex > -1) {\n this.displayedFiles[matchingDisplayedFileIndex].status = statusItem.status;\n this.disableLoaderIfAllFilesUploaded();\n }\n }\n });\n }\n\n // #endregion\n // #region Local Methods\n\n get dropZoneClasses() {\n const classes = ['drop-zone'];\n if (this.isDropZoneHighlighted) {\n classes.push('drop-zone-highlighted');\n }\n\n return classes.join(' ');\n }\n\n get fileTypesArray() {\n return Array.isArray(this.fileTypes) ? this.fileTypes : this.fileTypes.split(',');\n }\n\n get hasDescription() {\n return !!this.description || this.hasDescriptionSlotContent;\n }\n\n get hasDescriptionSlotContent() {\n return hasSlotContent(this.el, 'description');\n }\n\n get hasLabel() {\n return !!this.label || this.hasLabelSlotContent;\n }\n\n get hasLabelSlotContent() {\n return hasSlotContent(this.el, 'label');\n }\n\n buildFilesObject(filesToUpload: File[]): FilesObject {\n const invalidFiles = [];\n invalidFiles.push(...this.extractFilesOfInvalidTypes(filesToUpload));\n invalidFiles.push(...this.extractFilesOverSizeLimit(filesToUpload));\n invalidFiles.push(...this.extractFilesOverMaxFilesLimit(filesToUpload));\n this.displayedFiles = [...invalidFiles];\n\n if (filesToUpload.length === 0) {\n this.areFilesUploading = false;\n } else {\n this.queuedFiles = filesToUpload;\n }\n\n return { invalidFiles, validFiles: filesToUpload };\n }\n\n dimDropZone = (e: DragEvent) => {\n this.disableEvent(e);\n this.isDropZoneHighlighted = false;\n };\n\n disableEvent(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n disableLoaderIfAllFilesUploaded() {\n if (this.queuedFiles.length === 0 && !this.displayedFiles.some(file => file.status === 'in-progress')) {\n this.areFilesUploading = false;\n }\n }\n\n emitChange(filesObject: FilesObject) {\n this.areFilesUploading = filesObject.validFiles.length > 0;\n this.tctChange.emit(filesObject);\n }\n\n extractFilesOfInvalidTypes(files: File[]) {\n const invalidFiles = [];\n\n if (this.fileTypesArray.length === 0) return invalidFiles;\n\n files.forEach(file => {\n const fileExtension = file.name.split('.').pop().toLowerCase();\n if (!this.fileTypesArray.includes(fileExtension)) {\n invalidFiles.push({ file, status: 'invalid-type' });\n }\n });\n\n // Remove invalid files from the files array\n invalidFiles.forEach(invalidFile => {\n const index = files.indexOf(invalidFile.file);\n if (index > -1) {\n files.splice(index, 1);\n }\n });\n\n return invalidFiles;\n }\n\n extractFilesOverMaxFilesLimit(files: File[]) {\n const filesOverMaxFilesLimit = [];\n\n if (this.maxFiles === Infinity) return filesOverMaxFilesLimit;\n\n if (files.length > this.maxFiles) {\n const excessFiles = files.splice(this.maxFiles);\n excessFiles.forEach(file => {\n filesOverMaxFilesLimit.push({ file, status: 'over-max-files-limit' });\n });\n }\n\n return filesOverMaxFilesLimit;\n }\n\n extractFilesOverSizeLimit(files: File[]) {\n const filesOverSizeLimit = [];\n\n if (this.maxFileSize === Infinity) return filesOverSizeLimit;\n\n files.forEach(file => {\n if (file.size > this.maxFileSize) {\n filesOverSizeLimit.push({ file, status: 'over-size-limit' });\n }\n });\n\n // Remove files over size limit from the files array\n filesOverSizeLimit.forEach(overSizeFile => {\n const index = files.indexOf(overSizeFile.file);\n if (index > -1) {\n files.splice(index, 1);\n }\n });\n\n return filesOverSizeLimit;\n }\n\n forceRerender() {\n this.refreshCounter += 1; // Triggers re-render\n }\n\n getAnimationendHandlerToRemoveFileItem(fileName: string) {\n return (e: AnimationEvent) => {\n if (e.animationName === 'shrinkToCenterFadeOut') {\n this.displayedFiles = this.displayedFiles.filter(file => file.file.name !== fileName);\n }\n };\n }\n\n getClickHandlerToRemoveFileItem(fileName: string) {\n return () => {\n const fileToDelete = this.displayedFiles.find(file => file.file.name === fileName);\n if (fileToDelete) {\n fileToDelete.toBeRemoved = true;\n this.forceRerender();\n }\n };\n }\n\n getFileItemClasses(fileName: string) {\n const classes = ['file-item'];\n const matchingFile = this.displayedFiles.find(file => file.file.name === fileName);\n if (matchingFile?.toBeRemoved) {\n classes.push('fade-out');\n } else {\n classes.push('fade-in');\n }\n return classes.join(' ');\n }\n\n getFileItemStatusMessage(status: FileStatus, size: number) {\n switch (status) {\n case 'invalid-type':\n return loc('tecton.element.filePicker.unsupportedFileType');\n case 'over-size-limit':\n return loc('tecton.element.filePicker.sizeExceedsLimit');\n case 'over-max-files-limit':\n return loc('tecton.element.filePicker.overMaxFilesLimit');\n case 'in-progress':\n return loc('tecton.element.filePicker.uploadingEllipsis');\n case 'failed':\n return loc('tecton.element.filePicker.uploadFailed');\n case 'uploaded':\n default:\n return loc('tecton.element.filePicker.fileSize', [(size / (1000 * 1000)).toFixed(2)]);\n }\n }\n\n grabDroppedFiles = (e: DragEvent) => {\n this.disableEvent(e);\n this.isDropZoneHighlighted = false;\n const droppedFiles = Array.from(e.dataTransfer.files);\n const filesObject = this.buildFilesObject(droppedFiles);\n\n this.emitChange(filesObject);\n this.value = filesObject;\n };\n\n grabSelectedFiles = (e: Event) => {\n const selectedFiles = Array.from((e.target as HTMLInputElement).files);\n const filesObject = this.buildFilesObject(selectedFiles);\n\n this.emitChange(filesObject);\n this.value = filesObject;\n };\n\n highlightDropZone = (e: DragEvent) => {\n this.disableEvent(e);\n this.isDropZoneHighlighted = true;\n };\n\n launchFileBrowser() {\n this.browseButtonInput.dispatchEvent(new MouseEvent('click'));\n }\n\n // #endregion\n // #region Render Methods\n\n render = () => {\n return (\n <div class=\"file-picker\">\n {(this.hasLabel || this.hasDescription) && (\n <div class=\"heading\">\n {this.hasLabel && (\n <label\n class=\"label\"\n htmlFor=\"file-field\"\n test-id=\"label\"\n >\n {!!this.label ? loc(this.label) : this.hasLabelSlotContent ? <slot name=\"label\" /> : ''}\n </label>\n )}\n {this.hasDescription && (\n <div\n class=\"description\"\n id=\"description\"\n test-id=\"description\"\n >\n {!!this.description ? (\n loc(this.description)\n ) : this.hasDescriptionSlotContent ? (\n <slot name=\"description\" />\n ) : (\n ''\n )}\n </div>\n )}\n </div>\n )}\n\n {(this.variant === 'browse-drop' && (\n <div\n class={this.dropZoneClasses}\n onDragEnter={this.disableEvent}\n onDragLeave={this.dimDropZone}\n onDragOver={this.highlightDropZone}\n onDrop={this.grabDroppedFiles}\n ref={el => (this.dropZone = el ?? this.dropZone)}\n test-id=\"drop-zone\"\n >\n {(this.areFilesUploading && (\n <Fragment>\n <q2-loading class=\"loading\"></q2-loading>\n <p class=\"drop-zone-text\">{loc('tecton.element.filePicker.uploadingEllipsis')}</p>\n </Fragment>\n )) || (\n <Fragment>\n <q2-icon type=\"upload\"></q2-icon>\n <p class=\"drop-zone-text\">\n <q2-link\n label={loc('tecton.element.filePicker.browse')}\n onTctClick={() => this.launchFileBrowser()}\n variant=\"inline\"\n test-id=\"browse-link\"\n />\n {loc('tecton.element.filePicker.orDragFilesHere', [this.maxFiles])}\n </p>\n </Fragment>\n )}\n </div>\n )) || (\n <div\n class=\"browse\"\n test-id=\"browse\"\n >\n <q2-btn\n disabled={this.areFilesUploading}\n intent=\"workflow-primary\"\n loading={this.areFilesUploading}\n onClick={() => this.launchFileBrowser()}\n size=\"medium\"\n test-id=\"browse-button\"\n >\n <q2-icon type=\"paperclip\"></q2-icon>\n <span>{loc('tecton.element.filePicker.attachFiles', [this.maxFiles])}</span>\n </q2-btn>\n </div>\n )}\n <input\n aria-describedby={(!!this.description && 'description') || undefined}\n class=\"sr\"\n id=\"file-field\"\n onChange={this.grabSelectedFiles}\n ref={el => (this.browseButtonInput = el ?? this.browseButtonInput)}\n type=\"file\"\n test-id=\"file-input\"\n multiple\n />\n <div class=\"file-list-container\">\n <q2-list class=\"file-list\">\n {this.displayedFiles.map(file => (\n <q2-item\n class={this.getFileItemClasses(file.file.name)}\n key={file.file.name}\n onAnimationEnd={this.getAnimationendHandlerToRemoveFileItem(file.file.name)}\n >\n <div slot=\"bullet\">\n {file.status === 'invalid-type' ||\n file.status === 'over-size-limit' ||\n file.status === 'failed' ||\n file.status === 'over-max-files-limit' ? (\n <q2-icon\n class=\"icon-error\"\n type=\"error\"\n ></q2-icon>\n ) : file.status === 'in-progress' ? (\n <q2-loading class=\"file-item-loading\"></q2-loading>\n ) : (\n <q2-icon\n class=\"icon-success\"\n type=\"success\"\n ></q2-icon>\n )}\n </div>\n <div slot=\"header\">{file.file.name}</div>\n <div slot=\"body\">{this.getFileItemStatusMessage(file.status, file.file.size)}</div>\n <div slot=\"action\">\n <q2-btn\n intent=\"neutral-text\"\n onClick={this.getClickHandlerToRemoveFileItem(file.file.name)}\n >\n <q2-icon type=\"close\"></q2-icon>\n </q2-btn>\n </div>\n </q2-item>\n ))}\n </q2-list>\n </div>\n </div>\n );\n };\n\n // #endregion\n}\n"]}
|
|
1
|
+
{"version":3,"file":"q2-file-picker.js","sourceRoot":"","sources":["../../../../src/components/q2-file-picker/q2-file-picker.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ComponentInterface,\n Element,\n Event,\n EventEmitter,\n Fragment,\n h,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { hasSlotContent, loc } from 'src/utils';\n\ntype FileStatus = 'invalid-type' | 'over-size-limit' | 'over-max-files-limit' | 'in-progress' | 'failed' | 'uploaded';\nexport type FilesObject = {\n invalidFiles: {\n file: File;\n status: 'invalid-type' | 'over-size-limit' | 'over-max-files-limit' | 'in-progress' | 'failed' | 'uploaded';\n }[];\n validFiles: File[];\n};\n\n@Component({\n tag: 'q2-file-picker',\n styleUrl: 'q2-file-picker.scss',\n shadow: true,\n})\nexport class Q2FilePicker implements ComponentInterface {\n // #region Own Properties\n\n browseButtonInput: HTMLElement;\n dropZone: HTMLElement;\n fileItemsToBeDeleted;\n queuedFiles: File[] = [];\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n el: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n areFilesUploading: boolean = false;\n\n @State()\n displayedFiles: {\n file: File;\n status: FileStatus;\n toBeRemoved?: boolean;\n }[] = [];\n\n @State()\n isDropZoneHighlighted: boolean = false;\n\n @State()\n refreshCounter = 0;\n\n // #endregion\n // #region Public Property API\n\n /**\n * A description of the field. This is announced by screen readers when the field is focused.\n * @localizable\n */\n @Prop({ reflect: true })\n description: string;\n\n /**\n * An array of strings representing the allowed file types based on file extension.\n * Example: ['jpg', 'png', 'pdf']\n */\n @Prop({ reflect: true })\n fileTypes: string[] | string = [];\n\n /**\n * The label for the field. This is announced by screen readers when the field is focused.\n * @localizable\n */\n @Prop({ reflect: true })\n label: string;\n\n /**\n * The maximum number of files that can be selected.\n */\n @Prop({ reflect: true })\n // maxFiles: number | string = Infinity;\n maxFiles: number = Infinity;\n\n /**\n * The maximum size (in bytes) of any file that can be selected.\n */\n @Prop({ reflect: true })\n maxFileSize: number = Infinity;\n\n /**\n * An array of objects representing the status of the files being uploaded.\n * Each object should have a `name` property (the file name) and a `status`\n * property (the status of the file) that equals either 'in-progress',\n * 'failed' or 'uploaded'.\n */\n @Prop({ reflect: true })\n status: { name: string; status: 'in-progress' | 'failed' | 'uploaded' }[] = [];\n\n /**\n * Returns an array of File objects representing the files selected by the\n * user. If no files are selected, the value is an empty array.\n * @readonly\n */\n @Prop({ mutable: true })\n value: FilesObject = { invalidFiles: [], validFiles: [] }; // Ensure FilesObject is exported or imported correctly\n\n /**\n * Determines if the file picker is a browse button or a drop zone with a\n * browse link.\n */\n @Prop({ reflect: true })\n variant: 'browse' | 'browse-drop' = 'browse';\n\n // #endregion\n // #region Events\n\n @Event()\n tctChange: EventEmitter<FilesObject>;\n\n // #endregion\n // #region Watchers\n\n @Watch('status')\n updateFileList(newValue: { name: string; status: FileStatus }[]) {\n newValue.forEach(statusItem => {\n const matchingQueuedFileIndex = this.queuedFiles.findIndex(file => file.name === statusItem.name);\n if (matchingQueuedFileIndex > -1) {\n const matchingFile = this.queuedFiles.splice(matchingQueuedFileIndex, 1)[0];\n this.displayedFiles = [{ file: matchingFile, status: statusItem.status }, ...this.displayedFiles];\n } else {\n const matchingDisplayedFileIndex = this.displayedFiles.findIndex(\n file => file.file.name === statusItem.name\n );\n if (matchingDisplayedFileIndex > -1) {\n this.displayedFiles[matchingDisplayedFileIndex].status = statusItem.status;\n this.disableLoaderIfAllFilesUploaded();\n }\n }\n });\n }\n\n // #endregion\n // #region Local Methods\n\n get dropZoneClasses() {\n const classes = ['drop-zone'];\n if (this.isDropZoneHighlighted) {\n classes.push('drop-zone-highlighted');\n }\n\n return classes.join(' ');\n }\n\n get fileTypesArray() {\n return Array.isArray(this.fileTypes) ? this.fileTypes : this.fileTypes.split(',');\n }\n\n get hasDescription() {\n return !!this.description || this.hasDescriptionSlotContent;\n }\n\n get hasDescriptionSlotContent() {\n return hasSlotContent(this.el, 'description');\n }\n\n get hasLabel() {\n return !!this.label || this.hasLabelSlotContent;\n }\n\n get hasLabelSlotContent() {\n return hasSlotContent(this.el, 'label');\n }\n\n buildFilesObject(filesToUpload: File[]): FilesObject {\n const invalidFiles = [];\n invalidFiles.push(...this.extractFilesOfInvalidTypes(filesToUpload));\n invalidFiles.push(...this.extractFilesOverSizeLimit(filesToUpload));\n invalidFiles.push(...this.extractFilesOverMaxFilesLimit(filesToUpload));\n this.displayedFiles = [...invalidFiles];\n\n if (filesToUpload.length === 0) {\n this.areFilesUploading = false;\n } else {\n this.queuedFiles = filesToUpload;\n }\n\n return { invalidFiles, validFiles: filesToUpload };\n }\n\n dimDropZone = (e: DragEvent) => {\n this.disableEvent(e);\n this.isDropZoneHighlighted = false;\n };\n\n disableEvent(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n disableLoaderIfAllFilesUploaded() {\n if (this.queuedFiles.length === 0 && !this.displayedFiles.some(file => file.status === 'in-progress')) {\n this.areFilesUploading = false;\n }\n }\n\n emitChange(filesObject: FilesObject) {\n this.areFilesUploading = filesObject.validFiles.length > 0;\n this.tctChange.emit(filesObject);\n }\n\n extractFilesOfInvalidTypes(files: File[]) {\n const invalidFiles = [];\n\n if (this.fileTypesArray.length === 0) return invalidFiles;\n\n files.forEach(file => {\n const fileExtension = file.name.split('.').pop().toLowerCase();\n if (!this.fileTypesArray.includes(fileExtension)) {\n invalidFiles.push({ file, status: 'invalid-type' });\n }\n });\n\n // Remove invalid files from the files array\n invalidFiles.forEach(invalidFile => {\n const index = files.indexOf(invalidFile.file);\n if (index > -1) {\n files.splice(index, 1);\n }\n });\n\n return invalidFiles;\n }\n\n extractFilesOverMaxFilesLimit(files: File[]) {\n const filesOverMaxFilesLimit = [];\n\n if (this.maxFiles === Infinity) return filesOverMaxFilesLimit;\n\n if (files.length > this.maxFiles) {\n const excessFiles = files.splice(this.maxFiles);\n excessFiles.forEach(file => {\n filesOverMaxFilesLimit.push({ file, status: 'over-max-files-limit' });\n });\n }\n\n return filesOverMaxFilesLimit;\n }\n\n extractFilesOverSizeLimit(files: File[]) {\n const filesOverSizeLimit = [];\n\n if (this.maxFileSize === Infinity) return filesOverSizeLimit;\n\n files.forEach(file => {\n if (file.size > this.maxFileSize) {\n filesOverSizeLimit.push({ file, status: 'over-size-limit' });\n }\n });\n\n // Remove files over size limit from the files array\n filesOverSizeLimit.forEach(overSizeFile => {\n const index = files.indexOf(overSizeFile.file);\n if (index > -1) {\n files.splice(index, 1);\n }\n });\n\n return filesOverSizeLimit;\n }\n\n forceRerender() {\n this.refreshCounter += 1; // Triggers re-render\n }\n\n getAnimationendHandlerToRemoveFileItem(fileName: string) {\n return (e: AnimationEvent) => {\n if (e.animationName === 'shrinkToCenterFadeOut') {\n this.displayedFiles = this.displayedFiles.filter(file => file.file.name !== fileName);\n }\n };\n }\n\n getClickHandlerToRemoveFileItem(fileName: string) {\n return () => {\n const fileToDelete = this.displayedFiles.find(file => file.file.name === fileName);\n if (fileToDelete) {\n fileToDelete.toBeRemoved = true;\n this.forceRerender();\n }\n };\n }\n\n getFileItemClasses(fileName: string) {\n const classes = ['file-item'];\n const matchingFile = this.displayedFiles.find(file => file.file.name === fileName);\n if (matchingFile?.toBeRemoved) {\n classes.push('fade-out');\n } else {\n classes.push('fade-in');\n }\n return classes.join(' ');\n }\n\n getFileItemStatusMessage(status: FileStatus, size: number) {\n switch (status) {\n case 'invalid-type':\n return loc('tecton.element.filePicker.unsupportedFileType');\n case 'over-size-limit':\n return loc('tecton.element.filePicker.sizeExceedsLimit');\n case 'over-max-files-limit':\n return loc('tecton.element.filePicker.overMaxFilesLimit');\n case 'in-progress':\n return loc('tecton.element.filePicker.uploadingEllipsis');\n case 'failed':\n return loc('tecton.element.filePicker.uploadFailed');\n case 'uploaded':\n default:\n return loc('tecton.element.filePicker.fileSize', [(size / (1000 * 1000)).toFixed(2)]);\n }\n }\n\n grabDroppedFiles = (e: DragEvent) => {\n this.disableEvent(e);\n this.isDropZoneHighlighted = false;\n const droppedFiles = Array.from(e.dataTransfer.files);\n const filesObject = this.buildFilesObject(droppedFiles);\n\n this.emitChange(filesObject);\n this.value = filesObject;\n };\n\n grabSelectedFiles = (e: Event) => {\n const selectedFiles = Array.from((e.target as HTMLInputElement).files);\n const filesObject = this.buildFilesObject(selectedFiles);\n\n this.emitChange(filesObject);\n this.value = filesObject;\n };\n\n highlightDropZone = (e: DragEvent) => {\n this.disableEvent(e);\n this.isDropZoneHighlighted = true;\n };\n\n launchFileBrowser() {\n this.browseButtonInput.dispatchEvent(new MouseEvent('click'));\n }\n\n // #endregion\n // #region Render Methods\n\n render = () => {\n return (\n <div class=\"file-picker\">\n {(this.hasLabel || this.hasDescription) && (\n <div class=\"heading\">\n {this.hasLabel && (\n <label\n class=\"label\"\n htmlFor=\"file-field\"\n test-id=\"label\"\n >\n {!!this.label ? loc(this.label) : this.hasLabelSlotContent ? <slot name=\"label\" /> : ''}\n </label>\n )}\n {this.hasDescription && (\n <div\n class=\"description\"\n id=\"description\"\n test-id=\"description\"\n >\n {!!this.description ? (\n loc(this.description)\n ) : this.hasDescriptionSlotContent ? (\n <slot name=\"description\" />\n ) : (\n ''\n )}\n </div>\n )}\n </div>\n )}\n\n {(this.variant === 'browse-drop' && (\n <div\n class={this.dropZoneClasses}\n onDragEnter={this.disableEvent}\n onDragLeave={this.dimDropZone}\n onDragOver={this.highlightDropZone}\n onDrop={this.grabDroppedFiles}\n ref={el => (this.dropZone = el ?? this.dropZone)}\n test-id=\"drop-zone\"\n >\n {(this.areFilesUploading && (\n <Fragment>\n <q2-loading class=\"loading\"></q2-loading>\n <p class=\"drop-zone-text\">{loc('tecton.element.filePicker.uploadingEllipsis')}</p>\n </Fragment>\n )) || (\n <Fragment>\n <q2-icon type=\"upload\"></q2-icon>\n <p class=\"drop-zone-text\">\n <q2-link\n label={loc('tecton.element.filePicker.browse')}\n onTctClick={() => this.launchFileBrowser()}\n variant=\"inline\"\n test-id=\"browse-link\"\n />\n {loc('tecton.element.filePicker.orDragFilesHere', [this.maxFiles])}\n </p>\n </Fragment>\n )}\n </div>\n )) || (\n <div\n class=\"browse\"\n test-id=\"browse\"\n >\n <q2-btn\n disabled={this.areFilesUploading}\n intent=\"workflow-primary\"\n loading={this.areFilesUploading}\n onClick={() => this.launchFileBrowser()}\n size=\"medium\"\n test-id=\"browse-button\"\n >\n <q2-icon type=\"paperclip\"></q2-icon>\n <span>{loc('tecton.element.filePicker.attachFiles', [this.maxFiles])}</span>\n </q2-btn>\n </div>\n )}\n <input\n aria-describedby={(!!this.description && 'description') || undefined}\n class=\"sr\"\n id=\"file-field\"\n onChange={this.grabSelectedFiles}\n ref={el => (this.browseButtonInput = el ?? this.browseButtonInput)}\n type=\"file\"\n test-id=\"file-input\"\n multiple\n />\n <div class=\"file-list-container\">\n <q2-list class=\"file-list\">\n {this.displayedFiles.map(file => (\n <q2-item\n class={this.getFileItemClasses(file.file.name)}\n key={file.file.name}\n onAnimationEnd={this.getAnimationendHandlerToRemoveFileItem(file.file.name)}\n >\n <div slot=\"bullet\">\n {file.status === 'invalid-type' ||\n file.status === 'over-size-limit' ||\n file.status === 'failed' ||\n file.status === 'over-max-files-limit' ? (\n <q2-icon\n class=\"icon-error\"\n type=\"error\"\n ></q2-icon>\n ) : file.status === 'in-progress' ? (\n <q2-loading class=\"file-item-loading\"></q2-loading>\n ) : (\n <q2-icon\n class=\"icon-success\"\n type=\"success\"\n ></q2-icon>\n )}\n </div>\n <div slot=\"header\">{file.file.name}</div>\n <div slot=\"body\">{this.getFileItemStatusMessage(file.status, file.file.size)}</div>\n <div slot=\"action\">\n <q2-btn\n intent=\"neutral-text\"\n onClick={this.getClickHandlerToRemoveFileItem(file.file.name)}\n >\n <q2-icon type=\"close\"></q2-icon>\n </q2-btn>\n </div>\n </q2-item>\n ))}\n </q2-list>\n </div>\n </div>\n );\n };\n\n // #endregion\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-file-picker-test.e2e.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"q2-file-picker-test.e2e.js","sourceRoot":"","sources":["../../../../../src/components/q2-file-picker/test/q2-file-picker-test.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtD,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACvB,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACzC,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,4DAA4D,EAAE,CAAC,CAAC;YACjG,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;YAE/C,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { evaluateA11y, setup } from '@/utils/helpers';\n\ndescribe('q2-legend', () => {\n describe('[A11y] guideline compliance', () => {\n it('Does not have accessibility violations', async () => {\n const page = await setup({ html: `<q2-file-picker label=\"Label\" description=\"Description\" />` });\n const hasViolations = await evaluateA11y(page);\n\n expect(hasViolations).toBe(false);\n });\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-file-picker-test.spec.js","sourceRoot":"","sources":["../../../../src/components/q2-file-picker/test/q2-file-picker-test.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE/E,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IAcvB,MAAM,UAAU,GAAG,CAAC,KAA+B,EAAE,EAAE;QACnD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAC9B,OAAO,GAAG,GAAG,cAAc,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,QAAQ,CAAC;QAClE,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,EAAE,UAAU,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE;QACtE,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAEtC,MAAM,IAAI,GAAG,MAAM,oBAAoB,CACnC;YACI,UAAU,EAAE,CAAC,YAAY,CAAC;YAC1B,IAAI,EAAE,mBAAmB,gBAAgB,IAAI,WAAW,mBAAmB;SAC9E,EACD,WAAW,CACd,CAAC;QAEF,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,QAAuB,EAAE,EAAE,EAAE;QACjD,OAAO;YACH,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,WAAW;YAC/B,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,GAAG,EAAE;YAC9C,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,IAAI,EAAE;YAClD,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;YACxB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,YAAY,EAAE,oBAAoB;YACtD,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE,EAAE;YAC3C,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,EAAE;YAC/B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,EAAE;YACjC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE;YAC7B,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;SACzE,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAE,EAAE;QACzC,uCACO,KAAK,KACR,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,IAAI,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IACvC;IACN,CAAC,CAAC;IAEF,SAAS,uBAAuB,CAAC,IAAI,EAAE,YAAY;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,wBAAwB,CAAqB,CAAC;QAC/F,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACxD,KAAK,CAAC,KAAK,GAAG,YAAY,CAAC;QAC3B,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEzC,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACnB,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;YACzB,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;gBAC3C,MAAM,eAAe,GAAG,kBAAkB,CAAC;gBAC3C,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC;gBAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;gBAElF,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;gBAC5B,MAAM,eAAe,GAAG,kBAAkB,CAAC;gBAC3C,MAAM,IAAI,GAAG,MAAM,SAAS,CACxB,EAAE,WAAW,EAAE,kBAAkB,EAAE,EACnC,EAAE,kBAAkB,EAAE,eAAe,EAAE,CAC1C,CAAC;gBACF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;gBAElF,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACvB,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;gBAC5D,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBAC/B,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC9B,MAAM,WAAW,GAAG,cAAc,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;gBAC9D,MAAM,YAAY,GAAG,cAAc,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;gBAC/D,MAAM,YAAY,GAAG,kBAAkB,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;gBACrE,MAAM,cAAc,GAAG,uBAAuB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBACnE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC9B,MAAM,aAAa,GAAG;oBAClB,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;oBAC9D,UAAU,EAAE,CAAC,WAAW,CAAC;iBAC5B,CAAC;gBAEF,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CACvC,MAAM,CAAC,gBAAgB,CAAC;oBACpB,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC;iBACjD,CAAC,CACL,CAAC;gBACF,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;gBACjE,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBAC/B,MAAM,WAAW,GAAG,cAAc,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;gBAC9D,MAAM,YAAY,GAAG,cAAc,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;gBAC/D,MAAM,YAAY,GAAG,kBAAkB,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;gBACrE,MAAM,cAAc,GAAG,uBAAuB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBACnE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC9B,MAAM,aAAa,GAAG;oBAClB,YAAY,EAAE,EAAE;oBAChB,UAAU,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;iBAC1C,CAAC;gBAEF,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CACvC,MAAM,CAAC,gBAAgB,CAAC;oBACpB,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC;iBACjD,CAAC,CACL,CAAC;gBACF,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;gBACrC,MAAM,SAAS,GAAG,YAAY,CAAC;gBAC/B,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBACnD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;gBAEtE,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;gBAC5B,MAAM,SAAS,GAAG,YAAY,CAAC;gBAC/B,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;gBACnF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;gBAEtE,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;gBAC7D,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;gBACjD,MAAM,WAAW,GAAG,cAAc,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;gBACvF,MAAM,YAAY,GAAG,kBAAkB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;gBACvD,MAAM,cAAc,GAAG,uBAAuB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBACnE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC9B,MAAM,aAAa,GAAG;oBAClB,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;oBACrE,UAAU,EAAE,EAAE;iBACjB,CAAC;gBAEF,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CACvC,MAAM,CAAC,gBAAgB,CAAC;oBACpB,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC;iBACjD,CAAC,CACL,CAAC;gBACF,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;gBAC5E,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC9C,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;gBACvD,MAAM,SAAS,mCAAQ,QAAQ,KAAE,IAAI,EAAE,aAAa,GAAE,CAAC;gBACvD,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;gBACvE,MAAM,cAAc,GAAG,uBAAuB,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;gBAC3E,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC9B,MAAM,aAAa,GAAG;oBAClB,YAAY,EAAE,EAAE;oBAChB,UAAU,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;iBACpC,CAAC;gBAEF,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CACvC,MAAM,CAAC,gBAAgB,CAAC;oBACpB,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC;iBACjD,CAAC,CACL,CAAC;gBACF,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;gBAC1E,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;gBACvD,MAAM,SAAS,mCAAQ,QAAQ,KAAE,IAAI,EAAE,aAAa,GAAE,CAAC;gBACvD,MAAM,SAAS,mCAAQ,QAAQ,KAAE,IAAI,EAAE,aAAa,GAAE,CAAC;gBACvD,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;gBAClF,MAAM,cAAc,GAAG,uBAAuB,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;gBAC3E,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC9B,MAAM,aAAa,GAAG;oBAClB,YAAY,EAAE,EAAE;oBAChB,UAAU,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC;iBAC/C,CAAC;gBAEF,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CACvC,MAAM,CAAC,gBAAgB,CAAC;oBACpB,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC;iBACjD,CAAC,CACL,CAAC;gBACF,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;YACzB,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;gBAC3D,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxD,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnE,MAAM,gBAAgB,GAAG,cAAc,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7E,MAAM,YAAY,GAAG,kBAAkB,CAAC,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC;gBACtE,MAAM,cAAc,GAAG,uBAAuB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBACnE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC9B,MAAM,aAAa,GAAG;oBAClB,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;oBACrE,UAAU,EAAE,CAAC,QAAQ,CAAC;iBACzB,CAAC;gBAEF,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CACvC,MAAM,CAAC,gBAAgB,CAAC;oBACpB,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC;iBACjD,CAAC,CACL,CAAC;gBACF,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,EAAE,CAAC,sFAAsF,EAAE,KAAK,IAAI,EAAE;gBAClG,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC9B,MAAM,aAAa,GAAG;oBAClB,YAAY,EAAE,EAAE;oBAChB,UAAU,EAAE,EAAE;iBACjB,CAAC;gBAEF,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;gBACrF,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;gBACvD,MAAM,YAAY,GAAG,kBAAkB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACpD,uBAAuB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBAC5C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC9B,MAAM,aAAa,GAAG;oBAClB,YAAY,EAAE,EAAE;oBAChB,UAAU,EAAE,CAAC,QAAQ,CAAC;iBACzB,CAAC;gBAEF,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,kFAAkF,EAAE,KAAK,IAAI,EAAE;gBAC9F,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBAC/B,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC9B,MAAM,WAAW,GAAG,cAAc,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;gBACvF,MAAM,YAAY,GAAG,cAAc,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;gBAC/D,MAAM,YAAY,GAAG,kBAAkB,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;gBACrE,uBAAuB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBAC5C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC9B,MAAM,aAAa,GAAG;oBAClB,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;oBAC9D,UAAU,EAAE,CAAC,WAAW,CAAC;iBAC5B,CAAC;gBAEF,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;YACrB,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;gBAC1D,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;gBACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;gBAC7E,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,2BAA2B,CAAC,CAAC;gBAErF,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAChC,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YACpC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;gBAClE,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;gBAC7E,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;gBAE9E,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC5B,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACxC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACnB,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;gBAC5C,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;gBAC3C,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;gBACrF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;gBAEtE,gEAAgE;gBAChE,qDAAqD;gBACrD,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;gBACnE,MAAM,SAAS,GAAG,YAAY,CAAC;gBAC/B,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;gBAC3C,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;gBACvG,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;gBAEtE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;YACzB,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;gBAC5C,MAAM,sBAAsB,GAAG,uBAAuB,CAAC;gBACvD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;gBACjG,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;gBAElF,gEAAgE;gBAChE,qDAAqD;gBACrD,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,kCAAkC,CAAC,CAAC;YAClF,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;gBACnE,MAAM,eAAe,GAAG,kBAAkB,CAAC;gBAC3C,MAAM,sBAAsB,GAAG,uBAAuB,CAAC;gBACvD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,EAAE,EAAE;oBAC/D,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,sBAAsB,EAAE;iBAC3D,CAAC,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;gBAE5E,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACpB,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACvB,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;gBAC5D,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;gBACvD,MAAM,YAAY,GAAG,kBAAkB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACpD,MAAM,cAAc,GAAG,uBAAuB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBACnE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,aAAa,GAAG;oBAClB,YAAY,EAAE,EAAE;oBAChB,UAAU,EAAE,CAAC,QAAQ,CAAC;iBACzB,CAAC;gBAEF,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CACvC,MAAM,CAAC,gBAAgB,CAAC;oBACpB,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC;iBACjD,CAAC,CACL,CAAC;YACN,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACtB,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC5B,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;gBAC3E,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;gBACvD,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC3C,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;gBAC9E,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;YAC/F,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;gBAC9E,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;gBACvD,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,EAAE,CAAC;gBACnC,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC1E,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;gBAC9E,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;YAC/F,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;YAC7C,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;gBAClF,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;gBACvD,IAAI,CAAC,YAAY,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBAC3C,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC5E,IAAI,CAAC,YAAY,CAAC,+BAA+B,EAAE,CAAC;gBACpD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE,CAAC;YAC5D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,wCAAwC,EAAE,GAAG,EAAE;YACpD,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;gBAC9E,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG;oBACb,IAAI,EAAE,cAAc,EAAE;oBACtB,MAAM,EAAE,UAAU;iBACrB,CAAC;gBACF,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC9C,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,sCAAsC,CAChF,QAAQ,CAAC,IAAI,CAAC,IAAI,CACrB,CAAC;gBACF,MAAM,kBAAkB,GAAG;oBACvB,aAAa,EAAE,uBAAuB;iBACvB,CAAC;gBACpB,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;gBAExC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;YAC7C,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;gBACrE,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG;oBACb,IAAI,EAAE,cAAc,EAAE;oBACtB,MAAM,EAAE,UAAU;iBACrB,CAAC;gBACF,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,+BAA+B,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3F,YAAY,EAAE,CAAC;gBAEf,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAC;YACzE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;YACtC,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;gBAChD,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBAE/B,MAAM,kBAAkB,GAAG;oBACvB,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,+CAA+C,EAAE;oBACrF,EAAE,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,4CAA4C,EAAE;oBACrF,EAAE,MAAM,EAAE,sBAAsB,EAAE,QAAQ,EAAE,6CAA6C,EAAE;oBAC3F,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,6CAA6C,EAAE;oBAClF,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,wCAAwC,EAAE;oBACxE,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,oCAAoC,EAAE;iBACzE,CAAC;gBACF,MAAM,IAAI,GAAG,IAAI,CAAC;gBAElB,kBAAkB,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;oBAChD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBAExE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACrC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;YAC9B,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;gBACzD,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;gBACvD,MAAM,YAAY,GAAG,kBAAkB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACpD,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;gBAC/B,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;gBACtD,MAAM,aAAa,GAAG;oBAClB,YAAY,EAAE;wBACV,KAAK,EAAE,YAAY;qBACtB;oBACD,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;oBACzB,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;iBACL,CAAC;gBAC1B,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;gBAClD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,YAAY,CAAC,CAAC,oBAAoB,CACrC,MAAM,CAAC,gBAAgB,CAAC;oBACpB,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC;wBAC5B,YAAY,EAAE,EAAE;wBAChB,UAAU,EAAE,CAAC,QAAQ,CAAC;qBACzB,CAAC;iBACL,CAAC,CACL,CAAC;YACN,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAC/B,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;gBACzD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;gBACzD,MAAM,aAAa,GAAG;oBAClB,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;oBACzB,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;iBACL,CAAC;gBAC1B,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;gBACnD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,UAAU,EAAE,CAAC;YACjE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAC/B,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;gBAC5E,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;gBACrF,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;gBAC3E,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,2BAA2B,CAAC,CAAC;gBACrF,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;gBAChC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;gBAC/C,YAAY,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;gBAEpD,MAAM,CAAC,oBAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBAChD,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;gBAC1E,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;gBACrF,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;gBACzD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;gBAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;gBACjF,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;gBAChC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;gBAC/C,MAAM,UAAU,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;gBAE3D,MAAM,CAAC,oBAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBAChD,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAC7C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { Q2FilePicker } from '../q2-file-picker';\nimport { objectToHTMLAttributes, setupSpecPageWithLoc } from '@/utils/helpers';\n\ndescribe('q2-legend', () => {\n interface MockFileProps {\n name?: string;\n lastModified?: number;\n webkitRelativePath?: string;\n size?: number;\n type?: string;\n arrayBuffer?: () => Promise<ArrayBuffer>;\n slice?: () => Blob;\n stream?: () => ReadableStream;\n text?: () => Promise<string>;\n bytes?: () => Promise<Uint8Array>;\n }\n\n const buildSlots = (slots: Record<string, string>[]) => {\n return slots.reduce((acc, slot) => {\n return `${acc}<div slot=\"${slot.name}\">${slot.content}</div>`;\n }, '');\n };\n\n const setupPage = async (attributes = {}, testStrings = {}, slots = []) => {\n const attributesString = objectToHTMLAttributes(attributes);\n const slotsString = buildSlots(slots);\n\n const page = await setupSpecPageWithLoc(\n {\n components: [Q2FilePicker],\n html: `<q2-file-picker ${attributesString}>${slotsString}</q2-file-picker>`,\n },\n testStrings\n );\n\n return page;\n };\n\n const createMockFile = (props: MockFileProps = {}) => {\n return {\n name: props.name || 'test-file',\n lastModified: props.lastModified || Date.now(),\n webkitRelativePath: props.webkitRelativePath || '',\n size: props.size || 1234,\n type: props.type || 'text/plain', // 'application/pdf'\n arrayBuffer: props.arrayBuffer || jest.fn(),\n slice: props.slice || jest.fn(),\n stream: props.stream || jest.fn(),\n text: props.text || jest.fn(),\n bytes: props.bytes || jest.fn(() => Promise.resolve(new Uint8Array())),\n };\n };\n\n const createMockFileList = (files: File[]) => {\n return {\n ...files,\n length: files.length,\n item: (index: number) => files[index],\n };\n };\n\n function simulateFileInputChange(page, mockFileList) {\n const input = page.root.shadowRoot.querySelector('[test-id=\"file-input\"]') as HTMLInputElement;\n const changeCallback = jest.fn();\n page.root.addEventListener('tctChange', changeCallback);\n input.files = mockFileList;\n input.dispatchEvent(new Event('change'));\n\n return changeCallback;\n }\n\n describe('Props', () => {\n describe('description', () => {\n it('when set description rendered', async () => {\n const descriptionText = 'Test Description';\n const page = await setupPage({ description: descriptionText });\n const description = page.root.shadowRoot.querySelector('[test-id=\"description\"]');\n\n expect(description).toEqualText(descriptionText);\n });\n\n it('is localizable', async () => {\n const descriptionText = 'Test Description';\n const page = await setupPage(\n { description: 'test.description' },\n { 'test.description': descriptionText }\n );\n const description = page.root.shadowRoot.querySelector('[test-id=\"description\"]');\n\n expect(description).toEqualText(descriptionText);\n });\n });\n\n describe('fileTypes', () => {\n it('limits the types of files that can be selected', async () => {\n const page = await setupPage();\n page.root.fileTypes = ['pdf'];\n const mockPdfFile = createMockFile({ name: 'test-file.pdf' });\n const mockTextFile = createMockFile({ name: 'test-file.txt' });\n const mockFileList = createMockFileList([mockPdfFile, mockTextFile]);\n const changeCallback = simulateFileInputChange(page, mockFileList);\n await page.waitForChanges();\n const value = page.root.value;\n const expectedValue = {\n invalidFiles: [{ file: mockTextFile, status: 'invalid-type' }],\n validFiles: [mockPdfFile],\n };\n\n expect(changeCallback).toHaveBeenCalledWith(\n expect.objectContaining({\n detail: expect.objectContaining(expectedValue),\n })\n );\n expect(value).toEqual(expectedValue);\n });\n\n it('allows all file types when fileTypes is not defined', async () => {\n const page = await setupPage();\n const mockPdfFile = createMockFile({ name: 'test-file.pdf' });\n const mockTextFile = createMockFile({ name: 'test-file.txt' });\n const mockFileList = createMockFileList([mockPdfFile, mockTextFile]);\n const changeCallback = simulateFileInputChange(page, mockFileList);\n await page.waitForChanges();\n const value = page.root.value;\n const expectedValue = {\n invalidFiles: [],\n validFiles: [mockPdfFile, mockTextFile],\n };\n\n expect(changeCallback).toHaveBeenCalledWith(\n expect.objectContaining({\n detail: expect.objectContaining(expectedValue),\n })\n );\n expect(value).toEqual(expectedValue);\n });\n });\n\n describe('label', () => {\n it('when set label rendered', async () => {\n const labelText = 'Test Label';\n const page = await setupPage({ label: labelText });\n const label = page.root.shadowRoot.querySelector('[test-id=\"label\"]');\n\n expect(label).toEqualText(labelText);\n });\n\n it('is localizable', async () => {\n const labelText = 'Test Label';\n const page = await setupPage({ label: 'test.label' }, { 'test.label': labelText });\n const label = page.root.shadowRoot.querySelector('[test-id=\"label\"]');\n\n expect(label).toEqualText(labelText);\n });\n });\n\n describe('maxFiles', () => {\n it('limits the number of files that can be selected', async () => {\n const page = await setupPage({ 'max-files': 0 });\n const mockPdfFile = createMockFile({ name: 'test-file.pdf', type: 'application/pdf' });\n const mockFileList = createMockFileList([mockPdfFile]);\n const changeCallback = simulateFileInputChange(page, mockFileList);\n await page.waitForChanges();\n const value = page.root.value;\n const expectedValue = {\n invalidFiles: [{ file: mockPdfFile, status: 'over-max-files-limit' }],\n validFiles: [],\n };\n\n expect(changeCallback).toHaveBeenCalledWith(\n expect.objectContaining({\n detail: expect.objectContaining(expectedValue),\n })\n );\n expect(value).toEqual(expectedValue);\n });\n\n it('allows multiple files to be selected when it is greater than 1', async () => {\n const page = await setupPage({ maxFiles: 2 });\n const mockFile = createMockFile({ name: 'test-file' });\n const mockFile2 = { ...mockFile, name: 'test-file-2' };\n const mockFileListMultiple = createMockFileList([mockFile, mockFile2]);\n const changeCallback = simulateFileInputChange(page, mockFileListMultiple);\n await page.waitForChanges();\n const value = page.root.value;\n const expectedValue = {\n invalidFiles: [],\n validFiles: [mockFile, mockFile2],\n };\n\n expect(changeCallback).toHaveBeenCalledWith(\n expect.objectContaining({\n detail: expect.objectContaining(expectedValue),\n })\n );\n expect(value).toEqual(expectedValue);\n });\n\n it('allows any number of files to be selected when it is not set', async () => {\n const page = await setupPage();\n const mockFile = createMockFile({ name: 'test-file' });\n const mockFile2 = { ...mockFile, name: 'test-file-2' };\n const mockFile3 = { ...mockFile, name: 'test-file-3' };\n const mockFileListMultiple = createMockFileList([mockFile, mockFile2, mockFile3]);\n const changeCallback = simulateFileInputChange(page, mockFileListMultiple);\n await page.waitForChanges();\n const value = page.root.value;\n const expectedValue = {\n invalidFiles: [],\n validFiles: [mockFile, mockFile2, mockFile3],\n };\n\n expect(changeCallback).toHaveBeenCalledWith(\n expect.objectContaining({\n detail: expect.objectContaining(expectedValue),\n })\n );\n expect(value).toEqual(expectedValue);\n });\n });\n\n describe('maxFileSize', () => {\n it('limits the size of files that can be selected', async () => {\n const page = await setupPage({ 'max-file-size': 2000 });\n const mockFile = createMockFile({ name: 'test-file', size: 1000 });\n const mockFileTooLarge = createMockFile({ name: 'test-file-2', size: 3000 });\n const mockFileList = createMockFileList([mockFile, mockFileTooLarge]);\n const changeCallback = simulateFileInputChange(page, mockFileList);\n await page.waitForChanges();\n const value = page.root.value;\n const expectedValue = {\n invalidFiles: [{ file: mockFileTooLarge, status: 'over-size-limit' }],\n validFiles: [mockFile],\n };\n\n expect(changeCallback).toHaveBeenCalledWith(\n expect.objectContaining({\n detail: expect.objectContaining(expectedValue),\n })\n );\n expect(value).toEqual(expectedValue);\n });\n });\n\n describe('value', () => {\n it('returns an object with empty arrays for prop values when no files have been selected', async () => {\n const page = await setupPage();\n const value = page.root.value;\n const expectedValue = {\n invalidFiles: [],\n validFiles: [],\n };\n\n expect(value).toEqual(expectedValue);\n });\n\n it('returns an object with the selected files when files have been selected', async () => {\n const page = await setupPage();\n const mockFile = createMockFile({ name: 'test-file' });\n const mockFileList = createMockFileList([mockFile]);\n simulateFileInputChange(page, mockFileList);\n await page.waitForChanges();\n const value = page.root.value;\n const expectedValue = {\n invalidFiles: [],\n validFiles: [mockFile],\n };\n\n expect(value).toEqual(expectedValue);\n });\n\n it('returns an object with the valid and invalid files when files have been selected', async () => {\n const page = await setupPage();\n page.root.fileTypes = ['pdf'];\n const mockPdfFile = createMockFile({ name: 'test-file.pdf', type: 'application/pdf' });\n const mockTextFile = createMockFile({ name: 'test-file.txt' });\n const mockFileList = createMockFileList([mockPdfFile, mockTextFile]);\n simulateFileInputChange(page, mockFileList);\n await page.waitForChanges();\n const value = page.root.value;\n const expectedValue = {\n invalidFiles: [{ file: mockTextFile, status: 'invalid-type' }],\n validFiles: [mockPdfFile],\n };\n\n expect(value).toEqual(expectedValue);\n });\n });\n\n describe('variant', () => {\n it('when set to \"browse-drop\" displays drop zone', async () => {\n const page = await setupPage({ variant: 'browse-drop' });\n const dropZone = page.root.shadowRoot.querySelector('[test-id=\"drop-zone\"]');\n const browseButton = page.root.shadowRoot.querySelector('[test-id=\"browse-button\"]');\n\n expect(dropZone).not.toBeNull();\n expect(browseButton).toBeNull();\n });\n\n it('when set to \"browse\" displays only the browse button', async () => {\n const page = await setupPage({ variant: 'browse' });\n const dropZone = page.root.shadowRoot.querySelector('[test-id=\"drop-zone\"]');\n const browseButton = page.root.shadowRoot.querySelector('[test-id=\"browse\"]');\n\n expect(dropZone).toBeNull();\n expect(browseButton).not.toBeNull();\n });\n });\n });\n\n describe('Slots', () => {\n describe('label', () => {\n it('rendered when slot is provided', async () => {\n const labelSlotContent = 'Test Label Slot';\n const page = await setupPage({}, {}, [{ name: 'label', content: labelSlotContent }]);\n const label = page.root.shadowRoot.querySelector('[test-id=\"label\"]');\n\n // check for the slot container without the slot content because\n // newSpecPage appears to not render the slot content\n expect(label.innerHTML).toEqualHtml('<slot name=\"label\"></slot>');\n });\n\n it('not rendered when slot is provided and label prop set', async () => {\n const labelText = 'Test Label';\n const labelSlotContent = 'Test Label Slot';\n const page = await setupPage({ label: labelText }, {}, [{ name: 'label', content: labelSlotContent }]);\n const label = page.root.shadowRoot.querySelector('[test-id=\"label\"]');\n\n expect(label.innerHTML).toEqualHtml(labelText);\n });\n });\n\n describe('description', () => {\n it('rendered when slot is provided', async () => {\n const descriptionSlotContent = 'Test Description Slot';\n const page = await setupPage({}, {}, [{ name: 'description', content: descriptionSlotContent }]);\n const description = page.root.shadowRoot.querySelector('[test-id=\"description\"]');\n\n // check for the slot container without the slot content because\n // newSpecPage appears to not render the slot content\n expect(description.innerHTML).toEqualHtml('<slot name=\"description\"></slot>');\n });\n\n it('not rendered when slot is provided and label prop set', async () => {\n const descriptionText = 'Test Description';\n const descriptionSlotContent = 'Test Description Slot';\n const page = await setupPage({ description: descriptionText }, {}, [\n { name: 'description', content: descriptionSlotContent },\n ]);\n const label = page.root.shadowRoot.querySelector('[test-id=\"description\"]');\n\n expect(label.innerHTML).toEqualHtml(descriptionText);\n });\n });\n });\n\n describe('Events', () => {\n describe('tctChange', () => {\n it('emitted when a file input emits a change event', async () => {\n const page = await setupPage();\n const mockFile = createMockFile({ name: 'test-file' });\n const mockFileList = createMockFileList([mockFile]);\n const changeCallback = simulateFileInputChange(page, mockFileList);\n await page.waitForChanges();\n const expectedValue = {\n invalidFiles: [],\n validFiles: [mockFile],\n };\n\n expect(changeCallback).toHaveBeenCalledWith(\n expect.objectContaining({\n detail: expect.objectContaining(expectedValue),\n })\n );\n });\n });\n });\n\n describe('Watchers', () => {\n describe('updateFileList', () => {\n it('sets the status of a queued file when the status prop changes', async () => {\n const page = await setupPage();\n const mockFile = createMockFile({ name: 'test-file' });\n page.rootInstance.queuedFiles = [mockFile];\n page.rootInstance.updateFileList([{ name: 'test-file', status: 'uploaded' }]);\n await page.waitForChanges();\n\n expect(page.rootInstance.displayedFiles).toEqual([{ file: mockFile, status: 'uploaded' }]);\n });\n\n it('sets the status of a displayed file when the status prop changes', async () => {\n const page = await setupPage();\n const mockFile = createMockFile({ name: 'test-file' });\n page.rootInstance.queuedFiles = [];\n page.rootInstance.displayedFiles = [{ file: mockFile, status: 'queued' }];\n page.rootInstance.updateFileList([{ name: 'test-file', status: 'uploaded' }]);\n await page.waitForChanges();\n\n expect(page.rootInstance.displayedFiles).toEqual([{ file: mockFile, status: 'uploaded' }]);\n });\n });\n });\n\n describe('Local methods', () => {\n describe('disableLoaderIfAllFilesUploaded', () => {\n it('sets the areFilesUploading flag to false when all files are uploaded', async () => {\n const page = await setupPage();\n const mockFile = createMockFile({ name: 'test-file' });\n page.rootInstance.areFilesUploading = true;\n page.rootInstance.displayedFiles = [{ file: mockFile, status: 'uploaded' }];\n page.rootInstance.disableLoaderIfAllFilesUploaded();\n await page.waitForChanges();\n\n expect(page.rootInstance.areFilesUploading).toBeFalsy();\n });\n });\n\n describe('getAnimationendHandlerToRemoveFileItem', () => {\n it('returns a function that removes a file after animation has ended', async () => {\n const page = await setupPage();\n const fileItem = {\n file: createMockFile(),\n status: 'uploaded',\n };\n page.rootInstance.displayedFiles = [fileItem];\n const animationEndHandler = page.rootInstance.getAnimationendHandlerToRemoveFileItem(\n fileItem.file.name\n );\n const mockAnimationEvent = {\n animationName: 'shrinkToCenterFadeOut',\n } as AnimationEvent;\n animationEndHandler(mockAnimationEvent);\n\n expect(page.rootInstance.displayedFiles.length).toEqual(0);\n });\n });\n\n describe('getClickHandlerToRemoveFileItem', () => {\n it('returns a function that flags the file as to be removed', async () => {\n const page = await setupPage();\n const fileItem = {\n file: createMockFile(),\n status: 'uploaded',\n };\n page.rootInstance.displayedFiles = [fileItem];\n const clickHandler = page.rootInstance.getClickHandlerToRemoveFileItem(fileItem.file.name);\n clickHandler();\n\n expect(page.rootInstance.displayedFiles[0].toBeRemoved).toBeTruthy();\n });\n });\n\n describe('getFileItemStatusMessage', () => {\n it('returns the correct status message', async () => {\n const page = await setupPage();\n\n const statusAndResponses = [\n { status: 'invalid-type', response: 'tecton.element.filePicker.unsupportedFileType' },\n { status: 'over-size-limit', response: 'tecton.element.filePicker.sizeExceedsLimit' },\n { status: 'over-max-files-limit', response: 'tecton.element.filePicker.overMaxFilesLimit' },\n { status: 'in-progress', response: 'tecton.element.filePicker.uploadingEllipsis' },\n { status: 'failed', response: 'tecton.element.filePicker.uploadFailed' },\n { status: 'uploaded', response: 'tecton.element.filePicker.fileSize' },\n ];\n const size = 1234;\n\n statusAndResponses.forEach(({ status, response }) => {\n const result = page.rootInstance.getFileItemStatusMessage(status, size);\n\n expect(result).toEqual(response);\n });\n });\n });\n\n describe('grabDroppedFiles', () => {\n it('emits an event that contains a files object', async () => {\n const page = await setupPage();\n const mockFile = createMockFile({ name: 'test-file' });\n const mockFileList = createMockFileList([mockFile]);\n const dropCallback = jest.fn();\n page.root.addEventListener('tctChange', dropCallback);\n const mockDragEvent = {\n dataTransfer: {\n files: mockFileList,\n },\n preventDefault: jest.fn(),\n stopPropagation: jest.fn(),\n } as unknown as DragEvent;\n page.rootInstance.grabDroppedFiles(mockDragEvent);\n await page.waitForChanges();\n\n expect(dropCallback).toHaveBeenCalledWith(\n expect.objectContaining({\n detail: expect.objectContaining({\n invalidFiles: [],\n validFiles: [mockFile],\n }),\n })\n );\n });\n });\n\n describe('highlightDropZone', () => {\n it('sets the isDropZoneHighlighted flag to true', async () => {\n const page = await setupPage({ variant: 'browse-drop' });\n const mockDragEvent = {\n preventDefault: jest.fn(),\n stopPropagation: jest.fn(),\n } as unknown as DragEvent;\n page.rootInstance.highlightDropZone(mockDragEvent);\n await page.waitForChanges();\n\n expect(page.rootInstance.isDropZoneHighlighted).toBeTruthy();\n });\n });\n\n describe('launchFileBrowser', () => {\n it('called and clicks hidden file input when browse button clicked', async () => {\n const launchFileBrowserSpy = jest.spyOn(Q2FilePicker.prototype, 'launchFileBrowser');\n const page = await setupPage();\n const input = page.root.shadowRoot.querySelector('[test-id=\"file-input\"]');\n const browseButton = page.root.shadowRoot.querySelector('[test-id=\"browse-button\"]');\n const clickCallback = jest.fn();\n input.addEventListener('click', clickCallback);\n browseButton.dispatchEvent(new MouseEvent('click'));\n\n expect(launchFileBrowserSpy).toHaveBeenCalled();\n expect(clickCallback).toHaveBeenCalled();\n });\n\n it('called and clicks hidden file input when browse link clicked', async () => {\n const launchFileBrowserSpy = jest.spyOn(Q2FilePicker.prototype, 'launchFileBrowser');\n const page = await setupPage({ variant: 'browse-drop' });\n const input = page.root.shadowRoot.querySelector('[test-id=\"file-input\"]');\n const browseLink = page.root.shadowRoot.querySelector('[test-id=\"browse-link\"]');\n const clickCallback = jest.fn();\n input.addEventListener('click', clickCallback);\n await browseLink.dispatchEvent(new MouseEvent('tctClick'));\n\n expect(launchFileBrowserSpy).toHaveBeenCalled();\n expect(clickCallback).toHaveBeenCalled();\n });\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"q2-file-picker-test.spec.js","sourceRoot":"","sources":["../../../../../src/components/q2-file-picker/test/q2-file-picker-test.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Q2FilePicker } from '../q2-file-picker';\nimport { objectToHTMLAttributes, setupSpecPageWithLoc } from '@/utils/helpers';\n\ndescribe('q2-legend', () => {\n interface MockFileProps {\n name?: string;\n lastModified?: number;\n webkitRelativePath?: string;\n size?: number;\n type?: string;\n arrayBuffer?: () => Promise<ArrayBuffer>;\n slice?: () => Blob;\n stream?: () => ReadableStream;\n text?: () => Promise<string>;\n bytes?: () => Promise<Uint8Array>;\n }\n\n const buildSlots = (slots: Record<string, string>[]) => {\n return slots.reduce((acc, slot) => {\n return `${acc}<div slot=\"${slot.name}\">${slot.content}</div>`;\n }, '');\n };\n\n const setupPage = async (attributes = {}, testStrings = {}, slots = []) => {\n const attributesString = objectToHTMLAttributes(attributes);\n const slotsString = buildSlots(slots);\n\n const page = await setupSpecPageWithLoc(\n {\n components: [Q2FilePicker],\n html: `<q2-file-picker ${attributesString}>${slotsString}</q2-file-picker>`,\n },\n testStrings\n );\n\n return page;\n };\n\n const createMockFile = (props: MockFileProps = {}) => {\n return {\n name: props.name || 'test-file',\n lastModified: props.lastModified || Date.now(),\n webkitRelativePath: props.webkitRelativePath || '',\n size: props.size || 1234,\n type: props.type || 'text/plain', // 'application/pdf'\n arrayBuffer: props.arrayBuffer || jest.fn(),\n slice: props.slice || jest.fn(),\n stream: props.stream || jest.fn(),\n text: props.text || jest.fn(),\n bytes: props.bytes || jest.fn(() => Promise.resolve(new Uint8Array())),\n };\n };\n\n const createMockFileList = (files: File[]) => {\n return {\n ...files,\n length: files.length,\n item: (index: number) => files[index],\n };\n };\n\n function simulateFileInputChange(page, mockFileList) {\n const input = page.root.shadowRoot.querySelector('[test-id=\"file-input\"]') as HTMLInputElement;\n const changeCallback = jest.fn();\n page.root.addEventListener('tctChange', changeCallback);\n input.files = mockFileList;\n input.dispatchEvent(new Event('change'));\n\n return changeCallback;\n }\n\n describe('Props', () => {\n describe('description', () => {\n it('when set description rendered', async () => {\n const descriptionText = 'Test Description';\n const page = await setupPage({ description: descriptionText });\n const description = page.root.shadowRoot.querySelector('[test-id=\"description\"]');\n\n expect(description).toEqualText(descriptionText);\n });\n\n it('is localizable', async () => {\n const descriptionText = 'Test Description';\n const page = await setupPage(\n { description: 'test.description' },\n { 'test.description': descriptionText }\n );\n const description = page.root.shadowRoot.querySelector('[test-id=\"description\"]');\n\n expect(description).toEqualText(descriptionText);\n });\n });\n\n describe('fileTypes', () => {\n it('limits the types of files that can be selected', async () => {\n const page = await setupPage();\n page.root.fileTypes = ['pdf'];\n const mockPdfFile = createMockFile({ name: 'test-file.pdf' });\n const mockTextFile = createMockFile({ name: 'test-file.txt' });\n const mockFileList = createMockFileList([mockPdfFile, mockTextFile]);\n const changeCallback = simulateFileInputChange(page, mockFileList);\n await page.waitForChanges();\n const value = page.root.value;\n const expectedValue = {\n invalidFiles: [{ file: mockTextFile, status: 'invalid-type' }],\n validFiles: [mockPdfFile],\n };\n\n expect(changeCallback).toHaveBeenCalledWith(\n expect.objectContaining({\n detail: expect.objectContaining(expectedValue),\n })\n );\n expect(value).toEqual(expectedValue);\n });\n\n it('allows all file types when fileTypes is not defined', async () => {\n const page = await setupPage();\n const mockPdfFile = createMockFile({ name: 'test-file.pdf' });\n const mockTextFile = createMockFile({ name: 'test-file.txt' });\n const mockFileList = createMockFileList([mockPdfFile, mockTextFile]);\n const changeCallback = simulateFileInputChange(page, mockFileList);\n await page.waitForChanges();\n const value = page.root.value;\n const expectedValue = {\n invalidFiles: [],\n validFiles: [mockPdfFile, mockTextFile],\n };\n\n expect(changeCallback).toHaveBeenCalledWith(\n expect.objectContaining({\n detail: expect.objectContaining(expectedValue),\n })\n );\n expect(value).toEqual(expectedValue);\n });\n });\n\n describe('label', () => {\n it('when set label rendered', async () => {\n const labelText = 'Test Label';\n const page = await setupPage({ label: labelText });\n const label = page.root.shadowRoot.querySelector('[test-id=\"label\"]');\n\n expect(label).toEqualText(labelText);\n });\n\n it('is localizable', async () => {\n const labelText = 'Test Label';\n const page = await setupPage({ label: 'test.label' }, { 'test.label': labelText });\n const label = page.root.shadowRoot.querySelector('[test-id=\"label\"]');\n\n expect(label).toEqualText(labelText);\n });\n });\n\n describe('maxFiles', () => {\n it('limits the number of files that can be selected', async () => {\n const page = await setupPage({ 'max-files': 0 });\n const mockPdfFile = createMockFile({ name: 'test-file.pdf', type: 'application/pdf' });\n const mockFileList = createMockFileList([mockPdfFile]);\n const changeCallback = simulateFileInputChange(page, mockFileList);\n await page.waitForChanges();\n const value = page.root.value;\n const expectedValue = {\n invalidFiles: [{ file: mockPdfFile, status: 'over-max-files-limit' }],\n validFiles: [],\n };\n\n expect(changeCallback).toHaveBeenCalledWith(\n expect.objectContaining({\n detail: expect.objectContaining(expectedValue),\n })\n );\n expect(value).toEqual(expectedValue);\n });\n\n it('allows multiple files to be selected when it is greater than 1', async () => {\n const page = await setupPage({ maxFiles: 2 });\n const mockFile = createMockFile({ name: 'test-file' });\n const mockFile2 = { ...mockFile, name: 'test-file-2' };\n const mockFileListMultiple = createMockFileList([mockFile, mockFile2]);\n const changeCallback = simulateFileInputChange(page, mockFileListMultiple);\n await page.waitForChanges();\n const value = page.root.value;\n const expectedValue = {\n invalidFiles: [],\n validFiles: [mockFile, mockFile2],\n };\n\n expect(changeCallback).toHaveBeenCalledWith(\n expect.objectContaining({\n detail: expect.objectContaining(expectedValue),\n })\n );\n expect(value).toEqual(expectedValue);\n });\n\n it('allows any number of files to be selected when it is not set', async () => {\n const page = await setupPage();\n const mockFile = createMockFile({ name: 'test-file' });\n const mockFile2 = { ...mockFile, name: 'test-file-2' };\n const mockFile3 = { ...mockFile, name: 'test-file-3' };\n const mockFileListMultiple = createMockFileList([mockFile, mockFile2, mockFile3]);\n const changeCallback = simulateFileInputChange(page, mockFileListMultiple);\n await page.waitForChanges();\n const value = page.root.value;\n const expectedValue = {\n invalidFiles: [],\n validFiles: [mockFile, mockFile2, mockFile3],\n };\n\n expect(changeCallback).toHaveBeenCalledWith(\n expect.objectContaining({\n detail: expect.objectContaining(expectedValue),\n })\n );\n expect(value).toEqual(expectedValue);\n });\n });\n\n describe('maxFileSize', () => {\n it('limits the size of files that can be selected', async () => {\n const page = await setupPage({ 'max-file-size': 2000 });\n const mockFile = createMockFile({ name: 'test-file', size: 1000 });\n const mockFileTooLarge = createMockFile({ name: 'test-file-2', size: 3000 });\n const mockFileList = createMockFileList([mockFile, mockFileTooLarge]);\n const changeCallback = simulateFileInputChange(page, mockFileList);\n await page.waitForChanges();\n const value = page.root.value;\n const expectedValue = {\n invalidFiles: [{ file: mockFileTooLarge, status: 'over-size-limit' }],\n validFiles: [mockFile],\n };\n\n expect(changeCallback).toHaveBeenCalledWith(\n expect.objectContaining({\n detail: expect.objectContaining(expectedValue),\n })\n );\n expect(value).toEqual(expectedValue);\n });\n });\n\n describe('value', () => {\n it('returns an object with empty arrays for prop values when no files have been selected', async () => {\n const page = await setupPage();\n const value = page.root.value;\n const expectedValue = {\n invalidFiles: [],\n validFiles: [],\n };\n\n expect(value).toEqual(expectedValue);\n });\n\n it('returns an object with the selected files when files have been selected', async () => {\n const page = await setupPage();\n const mockFile = createMockFile({ name: 'test-file' });\n const mockFileList = createMockFileList([mockFile]);\n simulateFileInputChange(page, mockFileList);\n await page.waitForChanges();\n const value = page.root.value;\n const expectedValue = {\n invalidFiles: [],\n validFiles: [mockFile],\n };\n\n expect(value).toEqual(expectedValue);\n });\n\n it('returns an object with the valid and invalid files when files have been selected', async () => {\n const page = await setupPage();\n page.root.fileTypes = ['pdf'];\n const mockPdfFile = createMockFile({ name: 'test-file.pdf', type: 'application/pdf' });\n const mockTextFile = createMockFile({ name: 'test-file.txt' });\n const mockFileList = createMockFileList([mockPdfFile, mockTextFile]);\n simulateFileInputChange(page, mockFileList);\n await page.waitForChanges();\n const value = page.root.value;\n const expectedValue = {\n invalidFiles: [{ file: mockTextFile, status: 'invalid-type' }],\n validFiles: [mockPdfFile],\n };\n\n expect(value).toEqual(expectedValue);\n });\n });\n\n describe('variant', () => {\n it('when set to \"browse-drop\" displays drop zone', async () => {\n const page = await setupPage({ variant: 'browse-drop' });\n const dropZone = page.root.shadowRoot.querySelector('[test-id=\"drop-zone\"]');\n const browseButton = page.root.shadowRoot.querySelector('[test-id=\"browse-button\"]');\n\n expect(dropZone).not.toBeNull();\n expect(browseButton).toBeNull();\n });\n\n it('when set to \"browse\" displays only the browse button', async () => {\n const page = await setupPage({ variant: 'browse' });\n const dropZone = page.root.shadowRoot.querySelector('[test-id=\"drop-zone\"]');\n const browseButton = page.root.shadowRoot.querySelector('[test-id=\"browse\"]');\n\n expect(dropZone).toBeNull();\n expect(browseButton).not.toBeNull();\n });\n });\n });\n\n describe('Slots', () => {\n describe('label', () => {\n it('rendered when slot is provided', async () => {\n const labelSlotContent = 'Test Label Slot';\n const page = await setupPage({}, {}, [{ name: 'label', content: labelSlotContent }]);\n const label = page.root.shadowRoot.querySelector('[test-id=\"label\"]');\n\n // check for the slot container without the slot content because\n // newSpecPage appears to not render the slot content\n expect(label.innerHTML).toEqualHtml('<slot name=\"label\"></slot>');\n });\n\n it('not rendered when slot is provided and label prop set', async () => {\n const labelText = 'Test Label';\n const labelSlotContent = 'Test Label Slot';\n const page = await setupPage({ label: labelText }, {}, [{ name: 'label', content: labelSlotContent }]);\n const label = page.root.shadowRoot.querySelector('[test-id=\"label\"]');\n\n expect(label.innerHTML).toEqualHtml(labelText);\n });\n });\n\n describe('description', () => {\n it('rendered when slot is provided', async () => {\n const descriptionSlotContent = 'Test Description Slot';\n const page = await setupPage({}, {}, [{ name: 'description', content: descriptionSlotContent }]);\n const description = page.root.shadowRoot.querySelector('[test-id=\"description\"]');\n\n // check for the slot container without the slot content because\n // newSpecPage appears to not render the slot content\n expect(description.innerHTML).toEqualHtml('<slot name=\"description\"></slot>');\n });\n\n it('not rendered when slot is provided and label prop set', async () => {\n const descriptionText = 'Test Description';\n const descriptionSlotContent = 'Test Description Slot';\n const page = await setupPage({ description: descriptionText }, {}, [\n { name: 'description', content: descriptionSlotContent },\n ]);\n const label = page.root.shadowRoot.querySelector('[test-id=\"description\"]');\n\n expect(label.innerHTML).toEqualHtml(descriptionText);\n });\n });\n });\n\n describe('Events', () => {\n describe('tctChange', () => {\n it('emitted when a file input emits a change event', async () => {\n const page = await setupPage();\n const mockFile = createMockFile({ name: 'test-file' });\n const mockFileList = createMockFileList([mockFile]);\n const changeCallback = simulateFileInputChange(page, mockFileList);\n await page.waitForChanges();\n const expectedValue = {\n invalidFiles: [],\n validFiles: [mockFile],\n };\n\n expect(changeCallback).toHaveBeenCalledWith(\n expect.objectContaining({\n detail: expect.objectContaining(expectedValue),\n })\n );\n });\n });\n });\n\n describe('Watchers', () => {\n describe('updateFileList', () => {\n it('sets the status of a queued file when the status prop changes', async () => {\n const page = await setupPage();\n const mockFile = createMockFile({ name: 'test-file' });\n page.rootInstance.queuedFiles = [mockFile];\n page.rootInstance.updateFileList([{ name: 'test-file', status: 'uploaded' }]);\n await page.waitForChanges();\n\n expect(page.rootInstance.displayedFiles).toEqual([{ file: mockFile, status: 'uploaded' }]);\n });\n\n it('sets the status of a displayed file when the status prop changes', async () => {\n const page = await setupPage();\n const mockFile = createMockFile({ name: 'test-file' });\n page.rootInstance.queuedFiles = [];\n page.rootInstance.displayedFiles = [{ file: mockFile, status: 'queued' }];\n page.rootInstance.updateFileList([{ name: 'test-file', status: 'uploaded' }]);\n await page.waitForChanges();\n\n expect(page.rootInstance.displayedFiles).toEqual([{ file: mockFile, status: 'uploaded' }]);\n });\n });\n });\n\n describe('Local methods', () => {\n describe('disableLoaderIfAllFilesUploaded', () => {\n it('sets the areFilesUploading flag to false when all files are uploaded', async () => {\n const page = await setupPage();\n const mockFile = createMockFile({ name: 'test-file' });\n page.rootInstance.areFilesUploading = true;\n page.rootInstance.displayedFiles = [{ file: mockFile, status: 'uploaded' }];\n page.rootInstance.disableLoaderIfAllFilesUploaded();\n await page.waitForChanges();\n\n expect(page.rootInstance.areFilesUploading).toBeFalsy();\n });\n });\n\n describe('getAnimationendHandlerToRemoveFileItem', () => {\n it('returns a function that removes a file after animation has ended', async () => {\n const page = await setupPage();\n const fileItem = {\n file: createMockFile(),\n status: 'uploaded',\n };\n page.rootInstance.displayedFiles = [fileItem];\n const animationEndHandler = page.rootInstance.getAnimationendHandlerToRemoveFileItem(\n fileItem.file.name\n );\n const mockAnimationEvent = {\n animationName: 'shrinkToCenterFadeOut',\n } as AnimationEvent;\n animationEndHandler(mockAnimationEvent);\n\n expect(page.rootInstance.displayedFiles.length).toEqual(0);\n });\n });\n\n describe('getClickHandlerToRemoveFileItem', () => {\n it('returns a function that flags the file as to be removed', async () => {\n const page = await setupPage();\n const fileItem = {\n file: createMockFile(),\n status: 'uploaded',\n };\n page.rootInstance.displayedFiles = [fileItem];\n const clickHandler = page.rootInstance.getClickHandlerToRemoveFileItem(fileItem.file.name);\n clickHandler();\n\n expect(page.rootInstance.displayedFiles[0].toBeRemoved).toBeTruthy();\n });\n });\n\n describe('getFileItemStatusMessage', () => {\n it('returns the correct status message', async () => {\n const page = await setupPage();\n\n const statusAndResponses = [\n { status: 'invalid-type', response: 'tecton.element.filePicker.unsupportedFileType' },\n { status: 'over-size-limit', response: 'tecton.element.filePicker.sizeExceedsLimit' },\n { status: 'over-max-files-limit', response: 'tecton.element.filePicker.overMaxFilesLimit' },\n { status: 'in-progress', response: 'tecton.element.filePicker.uploadingEllipsis' },\n { status: 'failed', response: 'tecton.element.filePicker.uploadFailed' },\n { status: 'uploaded', response: 'tecton.element.filePicker.fileSize' },\n ];\n const size = 1234;\n\n statusAndResponses.forEach(({ status, response }) => {\n const result = page.rootInstance.getFileItemStatusMessage(status, size);\n\n expect(result).toEqual(response);\n });\n });\n });\n\n describe('grabDroppedFiles', () => {\n it('emits an event that contains a files object', async () => {\n const page = await setupPage();\n const mockFile = createMockFile({ name: 'test-file' });\n const mockFileList = createMockFileList([mockFile]);\n const dropCallback = jest.fn();\n page.root.addEventListener('tctChange', dropCallback);\n const mockDragEvent = {\n dataTransfer: {\n files: mockFileList,\n },\n preventDefault: jest.fn(),\n stopPropagation: jest.fn(),\n } as unknown as DragEvent;\n page.rootInstance.grabDroppedFiles(mockDragEvent);\n await page.waitForChanges();\n\n expect(dropCallback).toHaveBeenCalledWith(\n expect.objectContaining({\n detail: expect.objectContaining({\n invalidFiles: [],\n validFiles: [mockFile],\n }),\n })\n );\n });\n });\n\n describe('highlightDropZone', () => {\n it('sets the isDropZoneHighlighted flag to true', async () => {\n const page = await setupPage({ variant: 'browse-drop' });\n const mockDragEvent = {\n preventDefault: jest.fn(),\n stopPropagation: jest.fn(),\n } as unknown as DragEvent;\n page.rootInstance.highlightDropZone(mockDragEvent);\n await page.waitForChanges();\n\n expect(page.rootInstance.isDropZoneHighlighted).toBeTruthy();\n });\n });\n\n describe('launchFileBrowser', () => {\n it('called and clicks hidden file input when browse button clicked', async () => {\n const launchFileBrowserSpy = jest.spyOn(Q2FilePicker.prototype, 'launchFileBrowser');\n const page = await setupPage();\n const input = page.root.shadowRoot.querySelector('[test-id=\"file-input\"]');\n const browseButton = page.root.shadowRoot.querySelector('[test-id=\"browse-button\"]');\n const clickCallback = jest.fn();\n input.addEventListener('click', clickCallback);\n browseButton.dispatchEvent(new MouseEvent('click'));\n\n expect(launchFileBrowserSpy).toHaveBeenCalled();\n expect(clickCallback).toHaveBeenCalled();\n });\n\n it('called and clicks hidden file input when browse link clicked', async () => {\n const launchFileBrowserSpy = jest.spyOn(Q2FilePicker.prototype, 'launchFileBrowser');\n const page = await setupPage({ variant: 'browse-drop' });\n const input = page.root.shadowRoot.querySelector('[test-id=\"file-input\"]');\n const browseLink = page.root.shadowRoot.querySelector('[test-id=\"browse-link\"]');\n const clickCallback = jest.fn();\n input.addEventListener('click', clickCallback);\n await browseLink.dispatchEvent(new MouseEvent('tctClick'));\n\n expect(launchFileBrowserSpy).toHaveBeenCalled();\n expect(clickCallback).toHaveBeenCalled();\n });\n });\n });\n});\n"]}
|
|
@@ -46,7 +46,7 @@ export class Q2FormattedText {
|
|
|
46
46
|
// #region Render Methods
|
|
47
47
|
render() {
|
|
48
48
|
const { formattedTextClasses } = this;
|
|
49
|
-
return (h("div", { key: '
|
|
49
|
+
return (h("div", { key: '0deb2247f66e39d44ab56bc889520cd67caf20dc', class: formattedTextClasses, "aria-label": this.formattedValue }, h("span", { key: '7b8bba7f894f439d4628329082dd41a3629b3f79' }, this.formattedValue)));
|
|
50
50
|
}
|
|
51
51
|
static get is() { return "q2-formatted-text"; }
|
|
52
52
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-formatted-text.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"q2-formatted-text.js","sourceRoot":"","sources":["../../../../src/components/q2-formatted-text/q2-formatted-text.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAsB,MAAM,eAAe,CAAC;AAE9E,MAAM,OAAO,eAAe;;;sBAeI,QAAQ,CAAC,eAAe,CAAC,IAAI,IAAI,OAAO;oCAIrC,CAAC;qCAIA,CAAC;qCAID,CAAC;2BAYyB,MAAM;;;;IAUhE,aAAa;IACb,qCAAqC;IAErC,iBAAiB;QACb,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAED,aAAa;IACb,mBAAmB;IAOnB,YAAY;QACR,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAED,aAAa;IACb,wBAAwB;IAExB,IAAI,oBAAoB;QACpB,MAAM,OAAO,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QACxD,IAAI,CAAC,CAAC,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,SAAS,EAAE,CAAC,CAAC;QAC7D,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,WAAW;QACP,MAAM,OAAO,GAAe;YACxB,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,IAAI,CAAC,WAAW;SAChC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC;YAAE,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAChG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC;YAAE,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACnG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC;YAAE,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAEnG,IAAI,CAAC,cAAc,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAChG,CAAC;IAED,aAAa;IACb,yBAAyB;IAEzB,MAAM;QACF,MAAM,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC;QAEtC,OAAO,CACH,4DACI,KAAK,EAAE,oBAAoB,gBACf,IAAI,CAAC,cAAc;YAE/B,+DAAO,IAAI,CAAC,cAAc,CAAQ,CAChC,CACT,CAAC;IACN,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGJ","sourcesContent":["import { IDict } from '@/util';\nimport { Component, Prop, Watch, h, ComponentInterface } from '@stencil/core';\n@Component({ tag: 'q2-formatted-text', shadow: true, styleUrl: 'q2-formatted-text.scss' })\nexport class Q2FormattedText implements ComponentInterface {\n // #region Own Properties\n\n /** @private The formatted text to display */\n formattedValue: string;\n\n // #endregion\n // #region Public Property API\n\n /** The value you want formatted. */\n @Prop({ reflect: true })\n value: number;\n\n /** Formats to the language provided. Accepts multiple locales in an array as sequential fallbacks. */\n @Prop({ reflect: true })\n locale: string | string[] = document.documentElement.lang || 'en-US';\n\n /** The minimum number of integer digits to use. */\n @Prop({ reflect: false })\n minimumIntegerDigits: number = 1;\n\n /** The minimum number of fraction digits to use. */\n @Prop({ reflect: false })\n minimumFractionDigits: number = 2;\n\n /** The maximum number of fraction digits to use. */\n @Prop({ reflect: false })\n maximumFractionDigits: number = 2;\n\n /**\n * Determine how the positive or negative sign should display.\n *\n * Behavior:\n * - `always`: Always display the sign.\n * - `auto`: Sign displays for negative numbers only, including negative zero.\n * - `exceptZero`: Sign displays for positive and negative numbers, but not zero.\n * - `never`: Never display the sign.\n */\n @Prop({ reflect: true })\n signDisplay: 'never' | 'auto' | 'always' | 'exceptZero' = 'auto';\n\n /** Applies styling based on the size provided. If no size is provided, it will display as inline text. */\n @Prop({ reflect: true })\n size: 'small' | 'medium' | 'large' | undefined;\n\n /** @private Inherited from q2-detail when slotted to match styling of q2-detail and q2-formatted-text texts. */\n @Prop({ reflect: true })\n slotSize: string;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad(): void | Promise<void> {\n this.formatValue();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('value')\n @Watch('locale')\n @Watch('size')\n @Watch('slotSize')\n @Watch('signDisplay')\n propsUpdated() {\n this.formatValue();\n }\n\n // #endregion\n // #region Local Methods\n\n get formattedTextClasses(): string {\n const classes = ['formatted-text'];\n const sizeClass = this.size ? this.size : this.slotSize;\n if (!!sizeClass) classes.push(`formatted-text-${sizeClass}`);\n return classes.join(' ');\n }\n\n formatValue() {\n const options: IDict<any> = {\n style: 'decimal',\n signDisplay: this.signDisplay,\n };\n if (!isNaN(this.minimumIntegerDigits)) options.minimumIntegerDigits = this.minimumIntegerDigits;\n if (!isNaN(this.minimumFractionDigits)) options.minimumFractionDigits = this.minimumFractionDigits;\n if (!isNaN(this.maximumFractionDigits)) options.maximumFractionDigits = this.maximumFractionDigits;\n\n this.formattedValue = new Intl.NumberFormat(this.locale, options).format(this.value).trim();\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n const { formattedTextClasses } = this;\n\n return (\n <div\n class={formattedTextClasses}\n aria-label={this.formattedValue}\n >\n <span>{this.formattedValue}</span>\n </div>\n );\n }\n\n // #endregion\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-formatted-text-test.e2e.js","sourceRoot":"","sources":["../../../../src/components/q2-formatted-text/test/q2-formatted-text-test.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,+BAA+B,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,SAAS,iBAAiB,CAAC,KAS1B;IACG,IAAI,SAAS,GAAW,EAAE,CAAC;IAC3B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,SAAS,IAAI,UAAU,KAAK,CAAC,KAAK,EAAE,CAAC;IACzC,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,SAAS,IAAI,YAAY,KAAK,CAAC,MAAM,GAAG,CAAC;IAC7C,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,SAAS,IAAI,UAAU,KAAK,CAAC,IAAI,GAAG,CAAC;IACzC,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,SAAS,IAAI,kBAAkB,KAAK,CAAC,WAAW,GAAG,CAAC;IACxD,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,SAAS,IAAI,eAAe,KAAK,CAAC,QAAQ,GAAG,CAAC;IAClD,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,SAAS,IAAI,eAAe,KAAK,CAAC,QAAQ,GAAG,CAAC;IAClD,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;QAChC,SAAS,IAAI,6BAA6B,KAAK,CAAC,qBAAqB,GAAG,CAAC;IAC7E,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;QAChC,SAAS,IAAI,6BAA6B,KAAK,CAAC,qBAAqB,GAAG,CAAC;IAC7E,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC/B,SAAS,IAAI,4BAA4B,KAAK,CAAC,oBAAoB,GAAG,CAAC;IAC3E,CAAC;IACD,OAAO,WAAW,CAAC;QACf,UAAU,EAAE,CAAC,eAAe,CAAC;QAC7B,IAAI,EAAE,sBAAsB,SAAS,uBAAuB;KAC/D,CAAC,CAAC;AACP,CAAC;AAED,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,yCAAyC,EAAE,CAAC,CAAC;QAC9E,MAAM,CAAC,MAAM,+BAA+B,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACzC,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,uCAAuC,EAAE,CAAC,CAAC;YAC5E,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,IAAI,IAAc,CAAC;IAEnB,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QACrB,IAAI,GAAG,MAAM,iBAAiB,CAAC;YAC3B,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,OAAO;SAClB,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;SAO7B,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACnB,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;gBACrC,IAAI,GAAG,MAAM,iBAAiB,CAAC;oBAC3B,KAAK,EAAE,OAAO;oBACd,MAAM,EAAE,OAAO;iBAClB,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;gBAC5C,IAAI,GAAG,MAAM,iBAAiB,CAAC;oBAC3B,KAAK,EAAE,CAAC,OAAO;oBACf,MAAM,EAAE,OAAO;iBAClB,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;iBAO7B,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACpB,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;gBAC7C,IAAI,GAAG,MAAM,iBAAiB,CAAC;oBAC3B,KAAK,EAAE,OAAO;oBACd,MAAM,EAAE,OAAO;iBAClB,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;iBAO7B,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;gBAC7C,IAAI,GAAG,MAAM,iBAAiB,CAAC;oBAC3B,KAAK,EAAE,OAAO;oBACd,MAAM,EAAE,OAAO;iBAClB,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;iBAO7B,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAClC,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;gBAChD,IAAI,GAAG,MAAM,iBAAiB,CAAC;oBAC3B,KAAK,EAAE,UAAU;oBACjB,qBAAqB,EAAE,CAAC;iBAC3B,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;iBAO7B,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;gBAChD,IAAI,GAAG,MAAM,iBAAiB,CAAC;oBAC3B,KAAK,EAAE,IAAI;oBACX,qBAAqB,EAAE,CAAC;iBAC3B,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;iBAO7B,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;gBAC/C,IAAI,GAAG,MAAM,iBAAiB,CAAC;oBAC3B,KAAK,EAAE,SAAS;oBAChB,oBAAoB,EAAE,CAAC;oBACvB,qBAAqB,EAAE,CAAC;iBAC3B,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;iBAO7B,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;YAClB,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;gBAC3B,IAAI,GAAG,MAAM,iBAAiB,CAAC;oBAC3B,KAAK,EAAE,OAAO;oBACd,MAAM,EAAE,OAAO;oBACf,IAAI,EAAE,OAAO;iBAChB,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;iBAO7B,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;gBAC5B,IAAI,GAAG,MAAM,iBAAiB,CAAC;oBAC3B,KAAK,EAAE,OAAO;oBACd,MAAM,EAAE,OAAO;oBACf,IAAI,EAAE,QAAQ;iBACjB,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;iBAO7B,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;gBAC3B,IAAI,GAAG,MAAM,iBAAiB,CAAC;oBAC3B,KAAK,EAAE,OAAO;oBACd,MAAM,EAAE,OAAO;oBACf,IAAI,EAAE,OAAO;iBAChB,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;iBAO7B,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;YACzB,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;gBAC7C,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;oBAC7C,IAAI,GAAG,MAAM,iBAAiB,CAAC;wBAC3B,KAAK,EAAE,CAAC,OAAO;wBACf,MAAM,EAAE,OAAO;qBAClB,CAAC,CAAC;oBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC3C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;qBAO7B,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;oBAC/C,IAAI,GAAG,MAAM,iBAAiB,CAAC;wBAC3B,KAAK,EAAE,CAAC,OAAO;wBACf,MAAM,EAAE,OAAO;wBACf,WAAW,EAAE,QAAQ;qBACxB,CAAC,CAAC;oBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC7C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;qBAO7B,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;oBAC/D,IAAI,GAAG,MAAM,iBAAiB,CAAC;wBAC3B,KAAK,EAAE,CAAC,GAAG;wBACX,MAAM,EAAE,OAAO;wBACf,WAAW,EAAE,YAAY;qBAC5B,CAAC,CAAC;oBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACjD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;qBAO7B,CAAC,CAAC;oBAEH,IAAI,GAAG,MAAM,iBAAiB,CAAC;wBAC3B,KAAK,EAAE,CAAC,OAAO;wBACf,MAAM,EAAE,OAAO;wBACf,WAAW,EAAE,YAAY;qBAC5B,CAAC,CAAC;oBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACjD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;qBAO7B,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;oBAC/C,IAAI,GAAG,MAAM,iBAAiB,CAAC;wBAC3B,KAAK,EAAE,CAAC,OAAO;wBACf,MAAM,EAAE,OAAO;wBACf,WAAW,EAAE,OAAO;qBACvB,CAAC,CAAC;oBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC5C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;qBAO7B,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;gBAC7C,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;oBACpD,IAAI,GAAG,MAAM,iBAAiB,CAAC;wBAC3B,KAAK,EAAE,OAAO;wBACd,MAAM,EAAE,OAAO;qBAClB,CAAC,CAAC;oBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC3C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;qBAO7B,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;oBAClD,IAAI,GAAG,MAAM,iBAAiB,CAAC;wBAC3B,KAAK,EAAE,OAAO;wBACd,MAAM,EAAE,OAAO;wBACf,WAAW,EAAE,QAAQ;qBACxB,CAAC,CAAC;oBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC7C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;qBAO7B,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;oBACpE,IAAI,GAAG,MAAM,iBAAiB,CAAC;wBAC3B,KAAK,EAAE,CAAC;wBACR,MAAM,EAAE,OAAO;wBACf,WAAW,EAAE,YAAY;qBAC5B,CAAC,CAAC;oBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACjD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;yBAOzB,CAAC,CAAC;oBAEP,IAAI,GAAG,MAAM,iBAAiB,CAAC;wBAC3B,KAAK,EAAE,OAAO;wBACd,MAAM,EAAE,OAAO;wBACf,WAAW,EAAE,YAAY;qBAC5B,CAAC,CAAC;oBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACjD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;yBAOzB,CAAC,CAAC;gBACX,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;oBAC/C,IAAI,GAAG,MAAM,iBAAiB,CAAC;wBAC3B,KAAK,EAAE,OAAO;wBACd,MAAM,EAAE,OAAO;wBACf,WAAW,EAAE,OAAO;qBACvB,CAAC,CAAC;oBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC5C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;qBAO7B,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YACtB,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;oBAC5C,IAAI,GAAG,MAAM,iBAAiB,CAAC;wBAC3B,KAAK,EAAE,OAAO;wBACd,MAAM,EAAE,OAAO;wBACf,QAAQ,EAAE,QAAQ;qBACrB,CAAC,CAAC;oBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;qBAO7B,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;oBACrE,IAAI,GAAG,MAAM,iBAAiB,CAAC;wBAC3B,KAAK,EAAE,OAAO;wBACd,MAAM,EAAE,OAAO;wBACf,IAAI,EAAE,OAAO;wBACb,QAAQ,EAAE,OAAO;qBACpB,CAAC,CAAC;oBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;qBAO7B,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC/B,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;oBACvC,IAAI,GAAG,MAAM,iBAAiB,CAAC;wBAC3B,KAAK,EAAE,OAAO;wBACd,MAAM,EAAE,OAAO;qBAClB,CAAC,CAAC;oBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;qBAO7B,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { SpecPage, newSpecPage } from '@stencil/core/testing';\nimport { setup, evaluateA11y, getListOfStyleCompilationIssues } from '@/utils/helpers';\nimport { Q2FormattedText } from '../q2-formatted-text';\n\nfunction createNewSpecPage(props: {\n value?: number;\n locale?: string;\n size?: string;\n slotSize?: string;\n signDisplay?: string;\n maximumFractionDigits?: number;\n minimumFractionDigits?: number;\n minimumIntegerDigits?: number;\n}) {\n let htmlProps: string = '';\n if (!isNaN(props.value)) {\n htmlProps += ` value=${props.value}`;\n }\n if (!!props.locale) {\n htmlProps += ` locale=\"${props.locale}\"`;\n }\n if (!!props.size) {\n htmlProps += ` size=\"${props.size}\"`;\n }\n if (!!props.signDisplay) {\n htmlProps += ` sign-display=\"${props.signDisplay}\"`;\n }\n if (!!props.slotSize) {\n htmlProps += ` slot-size=\"${props.slotSize}\"`;\n }\n if (!!props.slotSize) {\n htmlProps += ` slot-size=\"${props.slotSize}\"`;\n }\n if (!!props.maximumFractionDigits) {\n htmlProps += ` maximum-fraction-digits=\"${props.maximumFractionDigits}\"`;\n }\n if (!!props.minimumFractionDigits) {\n htmlProps += ` minimum-fraction-digits=\"${props.minimumFractionDigits}\"`;\n }\n if (!!props.minimumIntegerDigits) {\n htmlProps += ` minimum-integer-digits=\"${props.minimumIntegerDigits}\"`;\n }\n return newSpecPage({\n components: [Q2FormattedText],\n html: `<q2-formatted-text ${htmlProps}></q2-formatted-text>`,\n });\n}\n\ndescribe('q2-formatted-text', () => {\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-formatted-text></q2-formatted-text>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-formatted-text')).toHaveLength(0);\n });\n\n describe('[A11y] guideline compliance', () => {\n it('Does not have accessibility violations', async () => {\n const page = await setup({ html: `<q2-formatted-text value=\"1234.56\" />` });\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 value: 1234.56,\n locale: 'en-US',\n });\n\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"en-US\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1,234.56\" class=\"formatted-text\">\n <span>1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n\n describe('Props', () => {\n describe('value', () => {\n it('should render the value', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'en-US',\n });\n expect(page.root.value).toBe(1234.56);\n });\n it('should accept negative numbers', async () => {\n page = await createNewSpecPage({\n value: -1234.56,\n locale: 'en-US',\n });\n expect(page.root.value).toBe(-1234.56);\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"-1234.56\" locale=\"en-US\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"-1,234.56\" class=\"formatted-text\">\n <span>-1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n });\n describe('locale', () => {\n it('renders according to the locale', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'es-MX',\n });\n expect(page.root.locale).toBe('es-MX');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"es-MX\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1,234.56\" class=\"formatted-text\">\n <span>1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n it('renders according to the locale', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'pt-BR',\n });\n expect(page.root.locale).toBe('pt-BR');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"pt-BR\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1.234,56\" class=\"formatted-text\">\n <span>1.234,56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n });\n\n describe('digits and fractions', () => {\n it('renders with maximumFractionDigits', async () => {\n page = await createNewSpecPage({\n value: 1234.56789,\n maximumFractionDigits: 3,\n });\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56789\" locale=\"en-US\" maximum-fraction-digits=\"3\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1,234.568\" class=\"formatted-text\">\n <span>1,234.568</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n\n it('renders with minimumFractionDigits', async () => {\n page = await createNewSpecPage({\n value: 1234,\n minimumFractionDigits: 1,\n });\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234\" locale=\"en-US\" minimum-fraction-digits=\"1\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1,234.0\" class=\"formatted-text\">\n <span>1,234.0</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n\n it('renders with minimumIntegerDigits', async () => {\n page = await createNewSpecPage({\n value: 1234.5678,\n minimumIntegerDigits: 6,\n maximumFractionDigits: 3,\n });\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.5678\" locale=\"en-US\" minimum-integer-digits=\"6\" maximum-fraction-digits=\"3\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"001,234.568\" class=\"formatted-text\">\n <span>001,234.568</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n });\n\n describe('size', () => {\n it('renders small', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'en-US',\n size: 'small',\n });\n expect(page.root.size).toBe('small');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"en-US\" size=\"small\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1,234.56\" class=\"formatted-text formatted-text-small\">\n <span>1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n\n it('renders medium', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'en-US',\n size: 'medium',\n });\n expect(page.root.size).toBe('medium');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"en-US\" size=\"medium\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1,234.56\" class=\"formatted-text formatted-text-medium\">\n <span>1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n\n it('renders large', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'en-US',\n size: 'large',\n });\n expect(page.root.size).toBe('large');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"en-US\" size=\"large\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1,234.56\" class=\"formatted-text formatted-text-large\">\n <span>1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n });\n\n describe('signDisplay', () => {\n describe('when currency value is negative', () => {\n it('renders a negative sign on auto', async () => {\n page = await createNewSpecPage({\n value: -1234.56,\n locale: 'en-US',\n });\n expect(page.root.signDisplay).toBe('auto');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"-1234.56\" locale=\"en-US\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"-1,234.56\" class=\"formatted-text\">\n <span>-1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n it('renders a negative sign on always', async () => {\n page = await createNewSpecPage({\n value: -1234.56,\n locale: 'en-US',\n signDisplay: 'always',\n });\n expect(page.root.signDisplay).toBe('always');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"-1234.56\" locale=\"en-US\" sign-display=\"always\">\n <mock:shadow-root>\n <div aria-label=\"-1,234.56\" class=\"formatted-text\">\n <span>-1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n it('renders only when value is not zero on exceptZero', async () => {\n page = await createNewSpecPage({\n value: -0.0,\n locale: 'en-US',\n signDisplay: 'exceptZero',\n });\n expect(page.root.signDisplay).toBe('exceptZero');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"0\" locale=\"en-US\" sign-display=\"exceptZero\">\n <mock:shadow-root>\n <div aria-label=\"0.00\" class=\"formatted-text\">\n <span>0.00</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n\n page = await createNewSpecPage({\n value: -1234.56,\n locale: 'en-US',\n signDisplay: 'exceptZero',\n });\n expect(page.root.signDisplay).toBe('exceptZero');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"-1234.56\" locale=\"en-US\" sign-display=\"exceptZero\">\n <mock:shadow-root>\n <div aria-label=\"-1,234.56\" class=\"formatted-text\">\n <span>-1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n it('does not render when set to never', async () => {\n page = await createNewSpecPage({\n value: -1234.56,\n locale: 'en-US',\n signDisplay: 'never',\n });\n expect(page.root.signDisplay).toBe('never');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"-1234.56\" locale=\"en-US\" sign-display=\"never\">\n <mock:shadow-root>\n <div aria-label=\"1,234.56\" class=\"formatted-text\">\n <span>1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n });\n describe('when currency value is positive', () => {\n it('does not display positive sign on auto', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'en-US',\n });\n expect(page.root.signDisplay).toBe('auto');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"en-US\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1,234.56\" class=\"formatted-text\">\n <span>1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n it('displays the positive sign on always', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'en-US',\n signDisplay: 'always',\n });\n expect(page.root.signDisplay).toBe('always');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"en-US\" sign-display=\"always\">\n <mock:shadow-root>\n <div aria-label=\"+1,234.56\" class=\"formatted-text\">\n <span>+1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n it('renders sign only when value is not zero on exceptZero', async () => {\n page = await createNewSpecPage({\n value: 0,\n locale: 'en-US',\n signDisplay: 'exceptZero',\n });\n expect(page.root.signDisplay).toBe('exceptZero');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"0\" locale=\"en-US\" sign-display=\"exceptZero\">\n <mock:shadow-root>\n <div aria-label=\"0.00\" class=\"formatted-text\">\n <span>0.00</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'en-US',\n signDisplay: 'exceptZero',\n });\n expect(page.root.signDisplay).toBe('exceptZero');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"en-US\" sign-display=\"exceptZero\">\n <mock:shadow-root>\n <div aria-label=\"+1,234.56\" class=\"formatted-text\">\n <span>+1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n it('does not render when set to never', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'en-US',\n signDisplay: 'never',\n });\n expect(page.root.signDisplay).toBe('never');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"en-US\" sign-display=\"never\">\n <mock:shadow-root>\n <div aria-label=\"1,234.56\" class=\"formatted-text\">\n <span>1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n });\n });\n\n describe('slotSize', () => {\n describe('when provided', () => {\n it('applies size class to currency', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'en-US',\n slotSize: 'medium',\n });\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"en-US\" slot-size=\"medium\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1,234.56\" class=\"formatted-text formatted-text-medium\">\n <span>1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n it('does NOT apply if the size property is already provided', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'en-US',\n size: 'large',\n slotSize: 'small',\n });\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"en-US\" size=\"large\" slot-size=\"small\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1,234.56\" class=\"formatted-text formatted-text-large\">\n <span>1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n });\n describe('when not provided', () => {\n it('does NOT apply size class', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'en-US',\n });\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"en-US\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1,234.56\" class=\"formatted-text\">\n <span>1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n });\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"q2-formatted-text-test.e2e.js","sourceRoot":"","sources":["../../../../../src/components/q2-formatted-text/test/q2-formatted-text-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 { Q2FormattedText } from '../q2-formatted-text';\n\nfunction createNewSpecPage(props: {\n value?: number;\n locale?: string;\n size?: string;\n slotSize?: string;\n signDisplay?: string;\n maximumFractionDigits?: number;\n minimumFractionDigits?: number;\n minimumIntegerDigits?: number;\n}) {\n let htmlProps: string = '';\n if (!isNaN(props.value)) {\n htmlProps += ` value=${props.value}`;\n }\n if (!!props.locale) {\n htmlProps += ` locale=\"${props.locale}\"`;\n }\n if (!!props.size) {\n htmlProps += ` size=\"${props.size}\"`;\n }\n if (!!props.signDisplay) {\n htmlProps += ` sign-display=\"${props.signDisplay}\"`;\n }\n if (!!props.slotSize) {\n htmlProps += ` slot-size=\"${props.slotSize}\"`;\n }\n if (!!props.slotSize) {\n htmlProps += ` slot-size=\"${props.slotSize}\"`;\n }\n if (!!props.maximumFractionDigits) {\n htmlProps += ` maximum-fraction-digits=\"${props.maximumFractionDigits}\"`;\n }\n if (!!props.minimumFractionDigits) {\n htmlProps += ` minimum-fraction-digits=\"${props.minimumFractionDigits}\"`;\n }\n if (!!props.minimumIntegerDigits) {\n htmlProps += ` minimum-integer-digits=\"${props.minimumIntegerDigits}\"`;\n }\n return newSpecPage({\n components: [Q2FormattedText],\n html: `<q2-formatted-text ${htmlProps}></q2-formatted-text>`,\n });\n}\n\ndescribe('q2-formatted-text', () => {\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-formatted-text></q2-formatted-text>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-formatted-text')).toHaveLength(0);\n });\n\n describe('[A11y] guideline compliance', () => {\n it('Does not have accessibility violations', async () => {\n const page = await setup({ html: `<q2-formatted-text value=\"1234.56\" />` });\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 value: 1234.56,\n locale: 'en-US',\n });\n\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"en-US\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1,234.56\" class=\"formatted-text\">\n <span>1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n\n describe('Props', () => {\n describe('value', () => {\n it('should render the value', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'en-US',\n });\n expect(page.root.value).toBe(1234.56);\n });\n it('should accept negative numbers', async () => {\n page = await createNewSpecPage({\n value: -1234.56,\n locale: 'en-US',\n });\n expect(page.root.value).toBe(-1234.56);\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"-1234.56\" locale=\"en-US\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"-1,234.56\" class=\"formatted-text\">\n <span>-1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n });\n describe('locale', () => {\n it('renders according to the locale', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'es-MX',\n });\n expect(page.root.locale).toBe('es-MX');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"es-MX\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1,234.56\" class=\"formatted-text\">\n <span>1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n it('renders according to the locale', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'pt-BR',\n });\n expect(page.root.locale).toBe('pt-BR');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"pt-BR\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1.234,56\" class=\"formatted-text\">\n <span>1.234,56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n });\n\n describe('digits and fractions', () => {\n it('renders with maximumFractionDigits', async () => {\n page = await createNewSpecPage({\n value: 1234.56789,\n maximumFractionDigits: 3,\n });\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56789\" locale=\"en-US\" maximum-fraction-digits=\"3\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1,234.568\" class=\"formatted-text\">\n <span>1,234.568</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n\n it('renders with minimumFractionDigits', async () => {\n page = await createNewSpecPage({\n value: 1234,\n minimumFractionDigits: 1,\n });\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234\" locale=\"en-US\" minimum-fraction-digits=\"1\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1,234.0\" class=\"formatted-text\">\n <span>1,234.0</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n\n it('renders with minimumIntegerDigits', async () => {\n page = await createNewSpecPage({\n value: 1234.5678,\n minimumIntegerDigits: 6,\n maximumFractionDigits: 3,\n });\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.5678\" locale=\"en-US\" minimum-integer-digits=\"6\" maximum-fraction-digits=\"3\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"001,234.568\" class=\"formatted-text\">\n <span>001,234.568</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n });\n\n describe('size', () => {\n it('renders small', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'en-US',\n size: 'small',\n });\n expect(page.root.size).toBe('small');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"en-US\" size=\"small\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1,234.56\" class=\"formatted-text formatted-text-small\">\n <span>1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n\n it('renders medium', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'en-US',\n size: 'medium',\n });\n expect(page.root.size).toBe('medium');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"en-US\" size=\"medium\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1,234.56\" class=\"formatted-text formatted-text-medium\">\n <span>1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n\n it('renders large', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'en-US',\n size: 'large',\n });\n expect(page.root.size).toBe('large');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"en-US\" size=\"large\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1,234.56\" class=\"formatted-text formatted-text-large\">\n <span>1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n });\n\n describe('signDisplay', () => {\n describe('when currency value is negative', () => {\n it('renders a negative sign on auto', async () => {\n page = await createNewSpecPage({\n value: -1234.56,\n locale: 'en-US',\n });\n expect(page.root.signDisplay).toBe('auto');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"-1234.56\" locale=\"en-US\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"-1,234.56\" class=\"formatted-text\">\n <span>-1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n it('renders a negative sign on always', async () => {\n page = await createNewSpecPage({\n value: -1234.56,\n locale: 'en-US',\n signDisplay: 'always',\n });\n expect(page.root.signDisplay).toBe('always');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"-1234.56\" locale=\"en-US\" sign-display=\"always\">\n <mock:shadow-root>\n <div aria-label=\"-1,234.56\" class=\"formatted-text\">\n <span>-1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n it('renders only when value is not zero on exceptZero', async () => {\n page = await createNewSpecPage({\n value: -0.0,\n locale: 'en-US',\n signDisplay: 'exceptZero',\n });\n expect(page.root.signDisplay).toBe('exceptZero');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"0\" locale=\"en-US\" sign-display=\"exceptZero\">\n <mock:shadow-root>\n <div aria-label=\"0.00\" class=\"formatted-text\">\n <span>0.00</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n\n page = await createNewSpecPage({\n value: -1234.56,\n locale: 'en-US',\n signDisplay: 'exceptZero',\n });\n expect(page.root.signDisplay).toBe('exceptZero');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"-1234.56\" locale=\"en-US\" sign-display=\"exceptZero\">\n <mock:shadow-root>\n <div aria-label=\"-1,234.56\" class=\"formatted-text\">\n <span>-1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n it('does not render when set to never', async () => {\n page = await createNewSpecPage({\n value: -1234.56,\n locale: 'en-US',\n signDisplay: 'never',\n });\n expect(page.root.signDisplay).toBe('never');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"-1234.56\" locale=\"en-US\" sign-display=\"never\">\n <mock:shadow-root>\n <div aria-label=\"1,234.56\" class=\"formatted-text\">\n <span>1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n });\n describe('when currency value is positive', () => {\n it('does not display positive sign on auto', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'en-US',\n });\n expect(page.root.signDisplay).toBe('auto');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"en-US\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1,234.56\" class=\"formatted-text\">\n <span>1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n it('displays the positive sign on always', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'en-US',\n signDisplay: 'always',\n });\n expect(page.root.signDisplay).toBe('always');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"en-US\" sign-display=\"always\">\n <mock:shadow-root>\n <div aria-label=\"+1,234.56\" class=\"formatted-text\">\n <span>+1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n it('renders sign only when value is not zero on exceptZero', async () => {\n page = await createNewSpecPage({\n value: 0,\n locale: 'en-US',\n signDisplay: 'exceptZero',\n });\n expect(page.root.signDisplay).toBe('exceptZero');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"0\" locale=\"en-US\" sign-display=\"exceptZero\">\n <mock:shadow-root>\n <div aria-label=\"0.00\" class=\"formatted-text\">\n <span>0.00</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'en-US',\n signDisplay: 'exceptZero',\n });\n expect(page.root.signDisplay).toBe('exceptZero');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"en-US\" sign-display=\"exceptZero\">\n <mock:shadow-root>\n <div aria-label=\"+1,234.56\" class=\"formatted-text\">\n <span>+1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n it('does not render when set to never', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'en-US',\n signDisplay: 'never',\n });\n expect(page.root.signDisplay).toBe('never');\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"en-US\" sign-display=\"never\">\n <mock:shadow-root>\n <div aria-label=\"1,234.56\" class=\"formatted-text\">\n <span>1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n });\n });\n\n describe('slotSize', () => {\n describe('when provided', () => {\n it('applies size class to currency', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'en-US',\n slotSize: 'medium',\n });\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"en-US\" slot-size=\"medium\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1,234.56\" class=\"formatted-text formatted-text-medium\">\n <span>1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n it('does NOT apply if the size property is already provided', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'en-US',\n size: 'large',\n slotSize: 'small',\n });\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"en-US\" size=\"large\" slot-size=\"small\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1,234.56\" class=\"formatted-text formatted-text-large\">\n <span>1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n });\n describe('when not provided', () => {\n it('does NOT apply size class', async () => {\n page = await createNewSpecPage({\n value: 1234.56,\n locale: 'en-US',\n });\n expect(page.root).toEqualHtml(`\n <q2-formatted-text value=\"1234.56\" locale=\"en-US\" sign-display=\"auto\">\n <mock:shadow-root>\n <div aria-label=\"1,234.56\" class=\"formatted-text\">\n <span>1,234.56</span>\n </mock:shadow-root>\n </q2-formatted-text>\n `);\n });\n });\n });\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-icon-types.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"q2-icon-types.js","sourceRoot":"","sources":["../../../../src/components/q2-icon/q2-icon-types.ts"],"names":[],"mappings":"","sourcesContent":["import { IDict } from '../../util';\nimport { JSX } from '../../components';\n\nexport interface Q2Icon {\n markup: () => JSX.IntrinsicElements;\n}\n\nexport type Q2Icons = IDict<Q2Icon>;\n"]}
|