q2-tecton-elements 1.49.2 → 1.50.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/click-elsewhere_2.cjs.entry.js +2 -2
- package/dist/cjs/{index-42fcd170.js → index-43010ce4.js} +1 -1
- package/dist/cjs/{index-42fcd170.js.map → index-43010ce4.js.map} +1 -1
- package/dist/cjs/index-64d8b839.js +1580 -0
- package/dist/cjs/index-64d8b839.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-action-sheet.cjs.entry.js +5 -5
- package/dist/cjs/q2-action-sheet.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
- package/dist/cjs/{q2-input.cjs.entry.js → q2-badge_7.cjs.entry.js} +1284 -3
- package/dist/cjs/q2-badge_7.cjs.entry.js.map +1 -0
- package/dist/cjs/q2-calendar.cjs.entry.js +3 -3
- package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-card.cjs.entry.js +1 -1
- package/dist/cjs/q2-carousel-pane.cjs.entry.js +3 -3
- package/dist/cjs/q2-carousel-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-carousel.cjs.entry.js +131 -149
- package/dist/cjs/q2-carousel.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-area.cjs.entry.js +3 -3
- package/dist/cjs/q2-chart-area.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-bar.cjs.entry.js +3 -3
- package/dist/cjs/q2-chart-bar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-donut.cjs.entry.js +2 -2
- package/dist/cjs/q2-checkbox-group.cjs.entry.js +2 -2
- package/dist/cjs/q2-checkbox.cjs.entry.js +2 -2
- package/dist/cjs/q2-currency.cjs.entry.js +1 -1
- package/dist/cjs/q2-data-table.cjs.entry.js +62 -2
- package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-detail.cjs.entry.js +2 -2
- package/dist/cjs/q2-dropdown-item.cjs.entry.js +11 -13
- package/dist/cjs/q2-dropdown-item.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +62 -58
- package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-editable-field.cjs.entry.js +4 -4
- package/dist/cjs/q2-editable-field.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-item.cjs.entry.js +3 -3
- package/dist/cjs/q2-item.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-legend.cjs.entry.js +2 -2
- package/dist/cjs/q2-legend.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-list.cjs.entry.js +2 -2
- 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 +13 -11
- package/dist/cjs/q2-option-list.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-option.cjs.entry.js +1 -1
- package/dist/cjs/q2-pagination.cjs.entry.js +3 -3
- package/dist/cjs/q2-pill.cjs.entry.js +95 -36
- package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-radio-group.cjs.entry.js +2 -2
- package/dist/cjs/q2-radio.cjs.entry.js +2 -2
- package/dist/cjs/q2-relative-time.cjs.entry.js +3 -3
- package/dist/cjs/q2-section.cjs.entry.js +4 -4
- package/dist/cjs/q2-section.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-select.cjs.entry.js +19 -18
- package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper-pane.cjs.entry.js +2 -2
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
- package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
- package/dist/cjs/q2-tag.cjs.entry.js +33 -6
- package/dist/cjs/q2-tag.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js +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/collection-manifest.json +7 -8
- package/dist/collection/components/click-elsewhere/click-elsewhere.js.map +1 -1
- package/dist/{test/elements → collection/components/click-elsewhere/test}/click-elsewhere-test.e2e.js +1 -1
- package/dist/collection/components/click-elsewhere/test/click-elsewhere-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +5 -5
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-action-sheet/test}/q2-action-sheet-test.e2e.js +29 -1
- package/dist/collection/components/q2-action-sheet/test/q2-action-sheet-test.e2e.js.map +1 -0
- 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/{test/elements → collection/components/q2-avatar/test}/q2-avatar-test.e2e.js +1 -1
- package/dist/collection/components/q2-avatar/test/q2-avatar-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-badge/q2-badge.js +0 -1
- package/dist/collection/components/q2-badge/q2-badge.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-badge/test}/q2-badge-test.e2e.js +1 -1
- package/dist/collection/components/q2-badge/test/q2-badge-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-btn/q2-btn.css +1 -0
- package/dist/collection/components/q2-btn/q2-btn.js +3 -15
- package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-btn/test}/q2-btn-test.e2e.js +36 -1
- package/dist/collection/components/q2-btn/test/q2-btn-test.e2e.js.map +1 -0
- 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 +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/{test/elements/q2-calendar → collection/components/q2-calendar/test}/helpers-test.e2e.js +2 -2
- package/dist/collection/components/q2-calendar/test/helpers-test.e2e.js.map +1 -0
- package/dist/{test/elements → collection/components/q2-calendar/test}/q2-calendar-month-picker-test.e2e.js +1 -1
- package/dist/collection/components/q2-calendar/test/q2-calendar-month-picker-test.e2e.js.map +1 -0
- package/dist/{test/elements → collection/components/q2-calendar/test}/q2-calendar-test.e2e.js +3 -3
- package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js.map +1 -0
- package/dist/{test/elements/q2-calendar → collection/components/q2-calendar/test}/validation-test.e2e.js +2 -2
- package/dist/collection/components/q2-calendar/test/validation-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-card/q2-card.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-card/test}/q2-card-test.e2e.js +1 -1
- package/dist/collection/components/q2-card/test/q2-card-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-carousel/q2-carousel.js +190 -164
- package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-carousel/test}/q2-carousel-test.e2e.js +175 -188
- package/dist/collection/components/q2-carousel/test/q2-carousel-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +5 -5
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-carousel-pane/test}/q2-carousel-pane-test.e2e.js +1 -1
- package/dist/collection/components/q2-carousel-pane/test/q2-carousel-pane-test.e2e.js.map +1 -0
- package/dist/{test/elements → collection/components/q2-carousel-pane/test}/q2-carousel-pane-test.spec.js +1 -1
- package/dist/collection/components/q2-carousel-pane/test/q2-carousel-pane-test.spec.js.map +1 -0
- package/dist/collection/components/q2-chart-area/q2-chart-area.js +20 -20
- package/dist/collection/components/q2-chart-area/q2-chart-area.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-chart-area/test}/q2-chart-area-test.e2e.js +1 -1
- package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +20 -20
- package/dist/collection/components/q2-chart-bar/q2-chart-bar.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-chart-bar/test}/q2-chart-bar-test.e2e.js +1 -1
- package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.e2e.js.map +1 -0
- 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/{test/elements → collection/components/q2-chart-donut/test}/q2-chart-donut-test.e2e.js +1 -1
- package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-checkbox/q2-checkbox.js +1 -1
- package/dist/collection/components/q2-checkbox/q2-checkbox.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-checkbox/test}/q2-checkbox-test.e2e.js +1 -1
- package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js +1 -1
- package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-checkbox-group/test}/q2-checkbox-group-test.e2e.js +1 -1
- package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.e2e.js.map +1 -0
- 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/{test/elements → collection/components/q2-currency/test}/q2-currency-test.e2e.js +2 -2
- package/dist/collection/components/q2-currency/test/q2-currency-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-data-table/q2-data-table.js +240 -7
- package/dist/collection/components/q2-data-table/q2-data-table.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-data-table/test}/q2-data-table-test.e2e.js +64 -2
- package/dist/collection/components/q2-data-table/test/q2-data-table-test.e2e.js.map +1 -0
- 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/{test/elements/q2-detail → collection/components/q2-detail/test}/q2-detail-test.e2e.js +3 -3
- package/dist/collection/components/q2-detail/test/q2-detail-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-dropdown/q2-dropdown.js +65 -57
- package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-dropdown/test}/q2-dropdown-test.e2e.js +165 -120
- package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js +10 -12
- package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-dropdown-item/test}/q2-dropdown-item-test.e2e.js +5 -13
- package/dist/collection/components/q2-dropdown-item/test/q2-dropdown-item-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-editable-field/q2-editable-field.js +3 -3
- package/dist/collection/components/q2-editable-field/q2-editable-field.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-editable-field/test}/q2-editable-field-test.e2e.js +1 -4
- package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.e2e.js.map +1 -0
- 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/{test/elements → collection/components/q2-icon/test}/q2-icon-test.e2e.js +2 -2
- package/dist/collection/components/q2-icon/test/q2-icon-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-input/formatting/alpha.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/alphanumeric.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/date.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/phone.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/postal.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/ssn.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/tin.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 +2 -2
- package/dist/collection/components/q2-input/q2-input.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-input/test}/q2-input-credit-card-test.e2e.js +1 -1
- package/dist/collection/components/q2-input/test/q2-input-credit-card-test.e2e.js.map +1 -0
- package/dist/{test/elements → collection/components/q2-input/test}/q2-input-test.e2e.js +1 -1
- package/dist/collection/components/q2-input/test/q2-input-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-item/q2-item.css +3 -3
- 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/{test/elements → collection/components/q2-item/test}/q2-item-test.e2e.js +1 -1
- package/dist/collection/components/q2-item/test/q2-item-test.e2e.js.map +1 -0
- package/dist/{test/elements → collection/components/q2-item/test}/q2-item-test.spec.js +1 -1
- package/dist/collection/components/q2-item/test/q2-item-test.spec.js.map +1 -0
- package/dist/collection/components/q2-legend/q2-legend.css +6 -6
- 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/{test/elements → collection/components/q2-legend/test}/q2-legend-test.e2e.js +1 -1
- package/dist/collection/components/q2-legend/test/q2-legend-test.e2e.js.map +1 -0
- package/dist/{test/elements → collection/components/q2-legend/test}/q2-legend-test.spec.js +1 -1
- package/dist/collection/components/q2-legend/test/q2-legend-test.spec.js.map +1 -0
- 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/{test/elements/q2-detail → collection/components/q2-list/test}/q2-list-test.e2e.js +1 -1
- package/dist/collection/components/q2-list/test/q2-list-test.e2e.js.map +1 -0
- 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/{test/elements → collection/components/q2-loading/test}/q2-loading-element-test.e2e.js +1 -1
- package/dist/collection/components/q2-loading/test/q2-loading-element-test.e2e.js.map +1 -0
- package/dist/{test/elements → collection/components/q2-loading/test}/q2-loading-test.e2e.js +1 -1
- package/dist/collection/components/q2-loading/test/q2-loading-test.e2e.js.map +1 -0
- 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/{test/elements → collection/components/q2-loc/test}/q2-loc-test.e2e.js +1 -1
- package/dist/collection/components/q2-loc/test/q2-loc-test.e2e.js.map +1 -0
- 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/{test/elements → collection/components/q2-message/test}/q2-message-test.e2e.js +1 -1
- package/dist/collection/components/q2-message/test/q2-message-test.e2e.js.map +1 -0
- 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/{test/elements → collection/components/q2-optgroup/test}/q2-optgroup-test.e2e.js +1 -1
- package/dist/collection/components/q2-optgroup/test/q2-optgroup-test.e2e.js.map +1 -0
- 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/{test/elements → collection/components/q2-option/test}/q2-option-test.e2e.js +1 -1
- package/dist/collection/components/q2-option/test/q2-option-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-option-list/q2-option-list.js +15 -13
- package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-option-list/test}/q2-option-list-test.e2e.js +1 -1
- package/dist/collection/components/q2-option-list/test/q2-option-list-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-pagination/q2-pagination.js +2 -2
- package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-pagination/test}/q2-pagination-test.e2e.js +1 -1
- package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-pill/q2-pill.js +172 -37
- package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-pill/test}/q2-pill-test.e2e.js +484 -392
- package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-popover/q2-popover.js +1 -1
- package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-popover/test}/q2-popover-test.e2e.js +2 -2
- package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js.map +1 -0
- package/dist/{test/elements → collection/components/q2-popover/test}/q2-popover-test.spec.js +1 -1
- package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js.map +1 -0
- package/dist/collection/components/q2-radio/q2-radio.js +1 -1
- package/dist/collection/components/q2-radio/q2-radio.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-radio/test}/q2-radio-test.e2e.js +1 -1
- package/dist/collection/components/q2-radio/test/q2-radio-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-radio-group/q2-radio-group.js +1 -1
- package/dist/collection/components/q2-radio-group/q2-radio-group.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-radio-group/test}/q2-radio-group-test.e2e.js +1 -1
- package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.e2e.js.map +1 -0
- 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/{test/elements → collection/components/q2-relative-time/test}/q2-relative-time-test.e2e.js +2 -2
- package/dist/collection/components/q2-relative-time/test/q2-relative-time-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-section/q2-section.css +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/{test/elements → collection/components/q2-section/test}/q2-section-test.e2e.js +12 -7
- package/dist/collection/components/q2-section/test/q2-section-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-select/q2-select.js +18 -17
- package/dist/collection/components/q2-select/q2-select.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-select/test}/q2-select-test.e2e.js +20 -2
- package/dist/collection/components/q2-select/test/q2-select-test.e2e.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/{test/elements → collection/components/q2-stepper/test}/q2-stepper-test.e2e.js +1 -1
- package/dist/collection/components/q2-stepper/test/q2-stepper-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +3 -3
- package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-stepper-pane/test}/q2-stepper-pane-test.e2e.js +1 -1
- package/dist/collection/components/q2-stepper-pane/test/q2-stepper-pane-test.e2e.js.map +1 -0
- 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/{test/elements → collection/components/q2-stepper-vertical/test}/q2-stepper-vertical-test.e2e.js +1 -1
- package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-tab-container/q2-tab-container.js +21 -20
- package/dist/collection/components/q2-tab-container/q2-tab-container.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-tab-container/test}/q2-tab-container-test.e2e.js +1 -1
- package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.spec.js +54 -0
- package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.spec.js.map +1 -0
- 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/{test/elements → collection/components/q2-tab-pane/test}/q2-tab-pane-test.e2e.js +1 -1
- package/dist/collection/components/q2-tab-pane/test/q2-tab-pane-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-tag/q2-tag.js +92 -6
- package/dist/collection/components/q2-tag/q2-tag.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-tag/test}/q2-tag-test.e2e.js +40 -8
- package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js.map +1 -0
- 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/{test/elements → collection/components/q2-textarea/test}/q2-textarea-test.e2e.js +1 -1
- package/dist/collection/components/q2-textarea/test/q2-textarea-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-tooltip/q2-tooltip.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-tooltip/test}/q2-tooltip-test.e2e.js +1 -1
- package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.e2e.js.map +1 -0
- 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/{test/elements → collection/components/tecton-tab-pane/test}/tecton-tab-pane-test.e2e.js +1 -1
- package/dist/collection/components/tecton-tab-pane/test/tecton-tab-pane-test.e2e.js.map +1 -0
- 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/{test → collection/utils}/helpers.js +1 -1
- package/dist/collection/utils/helpers.js.map +1 -0
- package/dist/collection/utils/index.js +9 -0
- package/dist/collection/utils/index.js.map +1 -1
- package/dist/{test/utils → collection/utils/test}/action-sheet-test.e2e.js +1 -1
- package/dist/collection/utils/test/action-sheet-test.e2e.js.map +1 -0
- package/dist/{test/utils → collection/utils/test}/index.spec.js +1 -1
- package/dist/collection/utils/test/index.spec.js.map +1 -0
- package/dist/components/action-sheet.js +1 -1
- package/dist/components/index.js +0 -2
- package/dist/components/index.js.map +1 -1
- package/dist/components/index2.js +1355 -1
- package/dist/components/index2.js.map +1 -1
- package/dist/components/q2-action-sheet.js +5 -5
- package/dist/components/q2-action-sheet.js.map +1 -1
- package/dist/components/q2-avatar2.js +1 -1
- package/dist/components/q2-badge2.js.map +1 -1
- package/dist/components/q2-btn2.js +6 -12
- package/dist/components/q2-btn2.js.map +1 -1
- package/dist/components/q2-calendar.js +1 -1
- package/dist/components/q2-calendar.js.map +1 -1
- package/dist/components/q2-carousel-pane.js +2 -2
- package/dist/components/q2-carousel-pane.js.map +1 -1
- package/dist/components/q2-carousel.js +133 -154
- package/dist/components/q2-carousel.js.map +1 -1
- package/dist/components/q2-chart-area.js +3 -3
- package/dist/components/q2-chart-area.js.map +1 -1
- package/dist/components/q2-chart-bar.js +4 -4
- package/dist/components/q2-chart-bar.js.map +1 -1
- package/dist/components/q2-chart-donut.js +1 -1
- package/dist/components/q2-checkbox-group.js +1 -1
- package/dist/components/q2-checkbox2.js +1 -1
- package/dist/components/q2-currency.js +1 -1
- package/dist/components/q2-data-table.js +68 -2
- package/dist/components/q2-data-table.js.map +1 -1
- package/dist/components/q2-detail.js +1 -1
- package/dist/components/q2-dropdown-item2.js +10 -12
- package/dist/components/q2-dropdown-item2.js.map +1 -1
- package/dist/components/q2-dropdown.js +61 -57
- package/dist/components/q2-dropdown.js.map +1 -1
- package/dist/components/q2-editable-field.js +3 -3
- package/dist/components/q2-editable-field.js.map +1 -1
- package/dist/components/q2-input2.js +2 -2
- package/dist/components/q2-item.js +2 -2
- package/dist/components/q2-item.js.map +1 -1
- package/dist/components/q2-legend2.js +2 -2
- package/dist/components/q2-legend2.js.map +1 -1
- package/dist/components/q2-list.js +1 -1
- package/dist/components/q2-loc.js +1 -1
- package/dist/components/q2-message2.js +2 -2
- package/dist/components/q2-month-picker.js +2 -2
- package/dist/components/q2-optgroup2.js +1 -1
- package/dist/components/q2-option-list2.js +13 -11
- package/dist/components/q2-option-list2.js.map +1 -1
- package/dist/components/q2-option2.js +1 -1
- package/dist/components/q2-pagination.js +2 -2
- package/dist/components/q2-pill.js +100 -38
- package/dist/components/q2-pill.js.map +1 -1
- package/dist/components/q2-popover2.js +2 -2
- package/dist/components/q2-radio-group.js +1 -1
- package/dist/components/q2-radio.js +1 -1
- package/dist/components/q2-relative-time.js +1 -1
- package/dist/components/q2-section.js +3 -3
- package/dist/components/q2-section.js.map +1 -1
- package/dist/components/q2-select2.js +20 -19
- package/dist/components/q2-select2.js.map +1 -1
- package/dist/components/q2-stepper-pane.js +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 +21 -20
- package/dist/components/q2-tab-container.js.map +1 -1
- package/dist/components/q2-tab-pane.js +1 -1
- package/dist/components/q2-tag.js +38 -8
- package/dist/components/q2-tag.js.map +1 -1
- package/dist/components/q2-textarea.js +2 -2
- package/dist/components/tecton-tab-pane.js +2 -2
- package/dist/esm/{action-sheet-dd527168.js → action-sheet-e64cb6f7.js} +2 -2
- package/dist/esm/{action-sheet-dd527168.js.map → action-sheet-e64cb6f7.js.map} +1 -1
- package/dist/esm/click-elsewhere_2.entry.js +2 -2
- package/dist/esm/index-4a80972c.js +1556 -0
- package/dist/esm/index-4a80972c.js.map +1 -0
- package/dist/esm/{index-1c019b24.js → index-c6d74f10.js} +1 -1
- package/dist/esm/{index-1c019b24.js.map → index-c6d74f10.js.map} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-action-sheet.entry.js +5 -5
- package/dist/esm/q2-action-sheet.entry.js.map +1 -1
- package/dist/esm/q2-avatar.entry.js +1 -1
- package/dist/esm/{q2-input.entry.js → q2-badge_7.entry.js} +1280 -5
- package/dist/esm/q2-badge_7.entry.js.map +1 -0
- package/dist/esm/q2-calendar.entry.js +3 -3
- package/dist/esm/q2-calendar.entry.js.map +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-pane.entry.js.map +1 -1
- package/dist/esm/q2-carousel.entry.js +131 -149
- package/dist/esm/q2-carousel.entry.js.map +1 -1
- package/dist/esm/q2-chart-area.entry.js +3 -3
- package/dist/esm/q2-chart-area.entry.js.map +1 -1
- package/dist/esm/q2-chart-bar.entry.js +3 -3
- package/dist/esm/q2-chart-bar.entry.js.map +1 -1
- package/dist/esm/q2-chart-donut.entry.js +2 -2
- package/dist/esm/q2-checkbox-group.entry.js +2 -2
- package/dist/esm/q2-checkbox.entry.js +2 -2
- package/dist/esm/q2-currency.entry.js +1 -1
- package/dist/esm/q2-data-table.entry.js +62 -2
- package/dist/esm/q2-data-table.entry.js.map +1 -1
- package/dist/esm/q2-detail.entry.js +2 -2
- package/dist/esm/q2-dropdown-item.entry.js +11 -13
- package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
- package/dist/esm/q2-dropdown.entry.js +62 -58
- package/dist/esm/q2-dropdown.entry.js.map +1 -1
- package/dist/esm/q2-editable-field.entry.js +4 -4
- package/dist/esm/q2-editable-field.entry.js.map +1 -1
- package/dist/esm/q2-item.entry.js +3 -3
- package/dist/esm/q2-item.entry.js.map +1 -1
- package/dist/esm/q2-legend.entry.js +2 -2
- package/dist/esm/q2-legend.entry.js.map +1 -1
- package/dist/esm/q2-list.entry.js +2 -2
- 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 +13 -11
- package/dist/esm/q2-option-list.entry.js.map +1 -1
- package/dist/esm/q2-option.entry.js +1 -1
- package/dist/esm/q2-pagination.entry.js +3 -3
- package/dist/esm/q2-pill.entry.js +96 -37
- package/dist/esm/q2-pill.entry.js.map +1 -1
- package/dist/esm/q2-radio-group.entry.js +2 -2
- package/dist/esm/q2-radio.entry.js +2 -2
- package/dist/esm/q2-relative-time.entry.js +3 -3
- package/dist/esm/q2-section.entry.js +4 -4
- package/dist/esm/q2-section.entry.js.map +1 -1
- package/dist/esm/q2-select.entry.js +20 -19
- package/dist/esm/q2-select.entry.js.map +1 -1
- package/dist/esm/q2-stepper-pane.entry.js +2 -2
- package/dist/esm/q2-stepper-vertical.entry.js +2 -2
- package/dist/esm/q2-stepper.entry.js +2 -2
- package/dist/esm/q2-tag.entry.js +34 -7
- package/dist/esm/q2-tag.entry.js.map +1 -1
- package/dist/esm/q2-tecton-elements.js +1 -1
- package/dist/esm/q2-textarea.entry.js +2 -2
- package/dist/esm/q2-tooltip.entry.js +1 -1
- package/dist/esm/tecton-tab-pane.entry.js +2 -2
- package/dist/q2-tecton-elements/{p-da711c59.entry.js → p-072c5877.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-f6358905.entry.js → p-074ae80c.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-0a1dff75.entry.js +2 -0
- package/dist/q2-tecton-elements/p-0a1dff75.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-93680d12.entry.js → p-0a3a804a.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-93680d12.entry.js.map → p-0a3a804a.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-259b728a.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-77a763eb.entry.js.map → p-259b728a.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-7b9a6bb7.entry.js → p-2c26295e.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-bbf9d36d.entry.js → p-2ca6d44f.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-2bcb7e89.entry.js → p-2fcaf2d6.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-2fcaf2d6.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-0852e6fe.entry.js → p-34696e3f.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-1e7fa870.entry.js → p-34856c71.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-34856c71.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-376a0589.entry.js +2 -0
- package/dist/q2-tecton-elements/p-376a0589.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-630613c7.entry.js → p-395904b4.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-3b0d3cd4.entry.js +2 -0
- package/dist/q2-tecton-elements/p-3b0d3cd4.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-d8d9ba1f.entry.js → p-3c7be0bb.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-3c7be0bb.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-403bf3d4.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-5037fa67.entry.js.map → p-403bf3d4.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-db79c056.entry.js → p-4116579f.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-e0a6baea.entry.js → p-45407ecc.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-ec8a0b64.entry.js → p-58cafc0d.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-4388e521.entry.js → p-5d936af5.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-6237c775.entry.js +2 -0
- package/dist/q2-tecton-elements/p-6237c775.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-a177d812.entry.js → p-661ed976.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-da0cacef.entry.js → p-6b7c53a8.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-6c933b14.entry.js → p-6e6d9793.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-be518818.js → p-721365be.js} +1 -1
- package/dist/q2-tecton-elements/{p-a8e7e591.entry.js → p-77272c4c.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-793a453e.entry.js → p-77a0cc0c.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-9c589ab3.entry.js → p-8111547c.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-05b30f98.entry.js → p-8a4b106d.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-8a4b106d.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-9a1a4bc0.js +3 -0
- package/dist/q2-tecton-elements/p-9a1a4bc0.js.map +1 -0
- package/dist/q2-tecton-elements/p-a7a0b8aa.entry.js +2 -0
- package/dist/q2-tecton-elements/p-a7a0b8aa.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-aa57b657.entry.js +2 -0
- package/dist/q2-tecton-elements/p-aa57b657.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-ad998f71.entry.js +2 -0
- package/dist/q2-tecton-elements/p-ad998f71.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-e3ad770b.entry.js → p-adec9275.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-adf0a7c9.entry.js +2 -0
- package/dist/q2-tecton-elements/p-adf0a7c9.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-b72fd065.entry.js +2 -0
- package/dist/q2-tecton-elements/p-b72fd065.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-780a1d0e.js → p-b7554a79.js} +2 -2
- package/dist/q2-tecton-elements/{p-40df4468.entry.js → p-c0c658d1.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-baa2eaa9.entry.js → p-c81d299a.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-c81d299a.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-08176bd0.entry.js → p-cb3f48de.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-2810ba28.entry.js → p-ce4e6b41.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-76b98623.entry.js → p-cf32b5db.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-cf966a0f.entry.js +2 -0
- package/dist/q2-tecton-elements/p-cf966a0f.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-c5aac064.entry.js → p-d2e1631a.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-c5aac064.entry.js.map → p-d2e1631a.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-2e6669a7.entry.js → p-dc77bf66.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-e4b8f4b3.entry.js → p-fffb54e9.entry.js} +2 -2
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
- package/dist/types/components/q2-action-sheet/q2-action-sheet.d.ts +60 -0
- package/dist/types/components/q2-btn/q2-btn.d.ts +1 -2
- package/dist/types/components/q2-calendar/q2-calendar.d.ts +323 -0
- package/dist/types/components/q2-carousel/q2-carousel.d.ts +36 -25
- package/dist/types/components/q2-carousel-pane/q2-carousel-pane.d.ts +3 -3
- package/dist/types/components/q2-chart-area/q2-chart-area.d.ts +6 -6
- package/dist/types/components/q2-chart-bar/q2-chart-bar.d.ts +14 -14
- package/dist/types/components/q2-data-table/q2-data-table.d.ts +259 -0
- package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +129 -0
- package/dist/types/components/q2-dropdown-item/q2-dropdown-item.d.ts +50 -0
- package/dist/types/components/q2-editable-field/q2-editable-field.d.ts +140 -0
- package/dist/types/components/q2-loading/skeleton/shapes.d.ts +1 -0
- package/dist/types/components/q2-optgroup/q2-optgroup.d.ts +1 -1
- package/dist/types/components/q2-option-list/q2-option-list.d.ts +99 -0
- package/dist/types/components/q2-pagination/q2-pagination.d.ts +60 -0
- package/dist/types/components/q2-pill/q2-pill.d.ts +128 -0
- package/dist/types/components/q2-select/q2-select.d.ts +232 -0
- package/dist/types/components/q2-stepper/q2-stepper.d.ts +52 -0
- package/dist/types/components/q2-stepper-vertical/q2-stepper-vertical.d.ts +62 -0
- package/dist/types/components/q2-tab-container/q2-tab-container.d.ts +5 -5
- package/dist/types/components/q2-tag/q2-tag.d.ts +63 -0
- package/dist/types/components.d.ts +77 -33
- package/dist/types/utils/action-sheet.d.ts +12 -0
- package/dist/types/{workspace/workspace/tecton-production_release_1.49.x/packages/q2-tecton-elements/.stencil/test → utils}/helpers.d.ts +1 -1
- package/dist/types/utils/index.d.ts +1 -0
- package/package.json +8 -6
- package/dist/cjs/index-a93362ed.js +0 -225
- package/dist/cjs/index-a93362ed.js.map +0 -1
- package/dist/cjs/q2-badge.cjs.entry.js +0 -52
- package/dist/cjs/q2-badge.cjs.entry.js.map +0 -1
- package/dist/cjs/q2-btn_2.cjs.entry.js +0 -237
- package/dist/cjs/q2-btn_2.cjs.entry.js.map +0 -1
- package/dist/cjs/q2-icon.cjs.entry.js +0 -731
- package/dist/cjs/q2-icon.cjs.entry.js.map +0 -1
- package/dist/cjs/q2-input.cjs.entry.js.map +0 -1
- package/dist/cjs/q2-tab-container.cjs.entry.js +0 -263
- package/dist/cjs/q2-tab-container.cjs.entry.js.map +0 -1
- package/dist/cjs/q2-tab-pane.cjs.entry.js +0 -46
- package/dist/cjs/q2-tab-pane.cjs.entry.js.map +0 -1
- package/dist/cjs/slot-component.cjs.entry.js +0 -19
- package/dist/cjs/slot-component.cjs.entry.js.map +0 -1
- package/dist/components/slot-component.d.ts +0 -11
- package/dist/components/slot-component.js +0 -34
- package/dist/components/slot-component.js.map +0 -1
- package/dist/esm/index-3c5cd75e.js +0 -202
- package/dist/esm/index-3c5cd75e.js.map +0 -1
- package/dist/esm/q2-badge.entry.js +0 -48
- package/dist/esm/q2-badge.entry.js.map +0 -1
- package/dist/esm/q2-btn_2.entry.js +0 -232
- package/dist/esm/q2-btn_2.entry.js.map +0 -1
- package/dist/esm/q2-icon.entry.js +0 -727
- package/dist/esm/q2-icon.entry.js.map +0 -1
- package/dist/esm/q2-input.entry.js.map +0 -1
- package/dist/esm/q2-tab-container.entry.js +0 -259
- package/dist/esm/q2-tab-container.entry.js.map +0 -1
- package/dist/esm/q2-tab-pane.entry.js +0 -42
- package/dist/esm/q2-tab-pane.entry.js.map +0 -1
- package/dist/esm/slot-component.entry.js +0 -15
- package/dist/esm/slot-component.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-05b30f98.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-089a7a1e.entry.js +0 -2
- package/dist/q2-tecton-elements/p-089a7a1e.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-1e7fa870.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-25bfe0b2.entry.js +0 -2
- package/dist/q2-tecton-elements/p-25bfe0b2.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-2bcb7e89.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-333a41ca.entry.js +0 -2
- package/dist/q2-tecton-elements/p-333a41ca.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-4da4cb5d.entry.js +0 -2
- package/dist/q2-tecton-elements/p-4da4cb5d.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-5037fa67.entry.js +0 -2
- package/dist/q2-tecton-elements/p-550881db.entry.js +0 -2
- package/dist/q2-tecton-elements/p-550881db.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-5775b02b.entry.js +0 -2
- package/dist/q2-tecton-elements/p-5775b02b.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-77a763eb.entry.js +0 -2
- package/dist/q2-tecton-elements/p-84190698.js +0 -2
- package/dist/q2-tecton-elements/p-84190698.js.map +0 -1
- package/dist/q2-tecton-elements/p-9e90a38a.entry.js +0 -2
- package/dist/q2-tecton-elements/p-9e90a38a.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-9ecabc7a.entry.js +0 -2
- package/dist/q2-tecton-elements/p-9ecabc7a.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-a657277b.entry.js +0 -2
- package/dist/q2-tecton-elements/p-a657277b.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-b3322f94.entry.js +0 -2
- package/dist/q2-tecton-elements/p-b3322f94.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-baa2eaa9.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-c8b4f5f7.entry.js +0 -2
- package/dist/q2-tecton-elements/p-c8b4f5f7.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-d2d3d95b.entry.js +0 -2
- package/dist/q2-tecton-elements/p-d2d3d95b.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-d78669df.entry.js +0 -2
- package/dist/q2-tecton-elements/p-d78669df.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-d8d9ba1f.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-dbfab45b.entry.js +0 -2
- package/dist/q2-tecton-elements/p-dbfab45b.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-e44560d9.entry.js +0 -2
- package/dist/q2-tecton-elements/p-e44560d9.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-ea7876eb.entry.js +0 -2
- package/dist/q2-tecton-elements/p-ea7876eb.entry.js.map +0 -1
- package/dist/test/elements/click-elsewhere-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-action-sheet-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-avatar-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-badge-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-btn-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-calendar/helpers-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-calendar/validation-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-calendar-month-picker-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-calendar-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-card-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-carousel-pane-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-carousel-pane-test.spec.js.map +0 -1
- package/dist/test/elements/q2-carousel-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-chart-area-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-chart-bar-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-chart-donut-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-checkbox-group-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-checkbox-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-currency-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-data-table-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-detail/q2-detail-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-detail/q2-list-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-detail/slot-component.js +0 -32
- package/dist/test/elements/q2-detail/slot-component.js.map +0 -1
- package/dist/test/elements/q2-dropdown-item-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-dropdown-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-editable-field-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-icon-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-input-credit-card-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-input-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-item-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-item-test.spec.js.map +0 -1
- package/dist/test/elements/q2-legend-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-legend-test.spec.js.map +0 -1
- package/dist/test/elements/q2-loading-element-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-loading-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-loc-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-message-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-optgroup-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-option-list-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-option-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-pagination-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-pill-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-popover-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-popover-test.spec.js.map +0 -1
- package/dist/test/elements/q2-radio-group-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-radio-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-relative-time-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-section-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-select-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-stepper-pane-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-stepper-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-stepper-vertical-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-tab-container-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-tab-pane-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-tag-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-textarea-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-tooltip-test.e2e.js.map +0 -1
- package/dist/test/elements/tecton-tab-pane-test.e2e.js.map +0 -1
- package/dist/test/helpers.js.map +0 -1
- package/dist/test/utils/action-sheet-test.e2e.js.map +0 -1
- package/dist/test/utils/index.spec.js.map +0 -1
- package/dist/types/workspace/workspace/tecton-production_release_1.49.x/packages/q2-tecton-elements/.stencil/test/elements/q2-detail/slot-component.d.ts +0 -4
- /package/dist/q2-tecton-elements/{p-da711c59.entry.js.map → p-072c5877.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-f6358905.entry.js.map → p-074ae80c.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-7b9a6bb7.entry.js.map → p-2c26295e.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-bbf9d36d.entry.js.map → p-2ca6d44f.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-0852e6fe.entry.js.map → p-34696e3f.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-630613c7.entry.js.map → p-395904b4.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-db79c056.entry.js.map → p-4116579f.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-e0a6baea.entry.js.map → p-45407ecc.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-ec8a0b64.entry.js.map → p-58cafc0d.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-4388e521.entry.js.map → p-5d936af5.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-a177d812.entry.js.map → p-661ed976.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-da0cacef.entry.js.map → p-6b7c53a8.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-6c933b14.entry.js.map → p-6e6d9793.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-be518818.js.map → p-721365be.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-a8e7e591.entry.js.map → p-77272c4c.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-793a453e.entry.js.map → p-77a0cc0c.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-9c589ab3.entry.js.map → p-8111547c.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-e3ad770b.entry.js.map → p-adec9275.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-780a1d0e.js.map → p-b7554a79.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-40df4468.entry.js.map → p-c0c658d1.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-08176bd0.entry.js.map → p-cb3f48de.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-2810ba28.entry.js.map → p-ce4e6b41.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-76b98623.entry.js.map → p-cf32b5db.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-2e6669a7.entry.js.map → p-dc77bf66.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-e4b8f4b3.entry.js.map → p-fffb54e9.entry.js.map} +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as t,a,h as r,g as s}from"./p-a5f18e27.js";import{c as n}from"./p-84190698.js";const e="standard";const d="standard";const o="standard";const c="standard";const i="legacy";const l="standard";const p="standard";const h="standard";const u="standard";const g="standard";const b="standard";const f="standard";const m="standard";const y="standard";const v="standard";const w="standard";const k="standard";const x="standard";const z="standard";const $="standard";const N="standard";const j="standard";const E="standard";const C="cards";const I="standard";const S="standard";const F="standard";const q="communication";const B="standard";const V="standard";const D="standard";const G="standard";const A="standard";const L="standard";const O="standard";const R="standard";const W="standard";const _="standard";const H="system";const J="standard";const K="standard";const M="standard";const P="standard";const Q="standard";const T="standard";const U="status";const X="standard";const Y="standard";const Z="standard";const tt="standard";const at="standard";const rt="standard";const st="standard";const nt="standard";const et="standard";const dt="standard";const ot="standard";const ct="standard";const it="standard";const lt="standard";const pt="standard";const ht="standard";const ut="standard";const gt="status";const bt="legacy";const ft="standard";const mt="system";const yt="standard";const vt="standard";const wt="standard";const kt="standard";const xt="standard";const zt="standard";const $t="standard";const Nt="standard";const jt="standard";const Et="standard";const Ct="standard";const It="standard";const St="standard";const Ft="standard";const qt="standard";const Bt="standard";const Vt="standard";const Dt="standard";const Gt="standard";const At="standard";const Lt="standard";const Ot="standard";const Rt="standard";const Wt="standard";const _t="standard";const Ht="standard";const Jt="standard";const Kt="standard";const Mt="standard";const Pt="standard";const Qt="mobile";const Tt="standard";const Ut="standard";const Xt="standard";const Yt="standard";const Zt="standard";const ta="standard";const aa="standard";const ra="standard";const sa="standard";const na="standard";const ea="legacy";const da="standard";const oa="standard";const ca="standard";const ia="standard";const la="standard";const pa="standard";const ha="standard";const ua="standard";const ga="standard";const ba="standard";const fa="standard";const ma="standard";const ya="standard";const va="standard";const wa="standard";const ka="standard";const xa="standard";const za="standard";const $a="status";const Na="mobile";const ja="standard";const Ea="standard";const Ca="standard";const Ia="standard";const Sa="standard";const Fa="standard";const qa="standard";const Ba="standard";const Va="standard";const Da="standard";const Ga="standard";const Aa="standard";const La="standard";const Oa="standard";const Ra="status";const Wa="standard";const _a="standard";const Ha={a11y:e,add:d,airplane:o,"alarm-clock":"standard",ambulance:c,android:i,apple:l,"arrow-down":"standard","arrow-left":"standard","arrow-right":"standard","arrow-up":"standard",arts:p,atv:h,backpack:u,bank:g,barchart:b,"barchart-trend":"standard",bed:f,bell:m,bicycle:y,boat:v,box:w,"brand-autobooks-color":"brand","brand-autobooks-filled":"brand","brand-facebook-color":"brand","brand-facebook-filled":"brand","brand-instagram-color":"brand","brand-instagram-filled":"brand","brand-linkedin-color":"brand","brand-linkedin-filled":"brand","brand-messenger-color":"brand","brand-messenger-filled":"brand","brand-payrecs-color":"brand","brand-payrecs-filled":"brand","brand-snapchat-color":"brand","brand-snapchat-filled":"brand","brand-twitter-color":"brand","brand-twitter-filled":"brand","brand-vimeo-color":"brand","brand-vimeo-filled":"brand","brand-x-color":"brand","brand-x-filled":"brand","brand-youtube-color":"brand","brand-youtube-filled":"brand","brand-zelle-color":"brand","brand-zelle-filled":"brand","brand-zelle-name-color":"brand","brand-zelle-name-filled":"brand",briefcase:k,"browser-chrome":"legacy","browser-chrome-color":"legacy","browser-chrome-filled":"legacy","browser-edge":"legacy","browser-edge-color":"legacy","browser-edge-filled":"legacy","browser-firefox":"legacy","browser-firefox-color":"legacy","browser-firefox-filled":"legacy","browser-ie":"legacy","browser-ie-color":"legacy","browser-ie-filled":"legacy","browser-opera":"legacy","browser-opera-color":"legacy","browser-opera-filled":"legacy","browser-safari":"legacy","browser-safari-color":"legacy","browser-safari-filled":"legacy","bubble-graph":"standard",bug:x,buildings:z,"buildings-2":"standard",calculator:$,calendar:N,"calendar-confirm":"legacy","calendar-create":"standard","calendar-pay":"standard","calendar-remove":"standard","calendar-repeat":"standard","calendar-skip":"standard","calendar-time":"standard","call-color":"legacy","call-filled":"legacy",camera:j,car:E,"car-front":"standard",card:C,"card-add":"cards","card-amazon":"cards","card-amazon-color":"legacy","card-amex":"cards","card-amex-color":"legacy","card-applepay":"cards","card-applepay-color":"legacy","card-bitcoin":"cards","card-bitcoin-color":"legacy","card-dinersclub":"cards","card-dinersclub-color":"legacy","card-discover":"cards","card-discover-color":"legacy","card-edit":"cards","card-gift":"cards","card-googlepay":"cards","card-googlepay-color":"legacy","card-heart":"cards","card-in-hand":"cards","card-insert":"cards","card-jcb":"cards","card-jcb-color":"legacy","card-join":"cards","card-locked":"cards","card-maestro":"cards","card-maestro-color":"legacy","card-mastercard":"cards","card-mastercard-color":"legacy","card-more":"cards","card-paypal":"cards","card-paypal-color":"legacy","card-prohibited":"cards","card-remove":"cards","card-scissors":"cards","card-star":"cards","card-stripe":"cards","card-stripe-color":"legacy","card-success":"cards","card-unknown":"cards","card-update":"cards","card-visa":"cards","card-visa-color":"legacy",cart:I,"cart-moving":"standard",cash:S,"cash-bills":"standard","cash-coins":"standard","cash-in-hand":"standard","cash-register":"standard",certificate:F,chat:q,"chat-bubbles":"communication","chat-question":"communication","chat-round":"communication",check:B,"check-add":"standard","check-dollar":"standard","check-edit":"standard","check-remove":"standard","check-shield":"standard",checkmark:V,"checkmark-outline":"standard","chevron-double-left":"standard","chevron-double-right":"standard","chevron-down":"standard","chevron-left":"standard","chevron-right":"standard","chevron-up":"standard",clipboard:D,close:G,coins:A,compass:L,conversation:O,copy:R,coupon:W,"credit-score":"standard","currency-dollar":"currencies","currency-dollar-circle":"currencies","currency-euro":"currencies","currency-pound":"currencies","currency-yen":"currencies",dashboard:_,"delivery-truck":"standard",desktop:H,diploma:J,divider:K,document:M,"document-add":"standard","document-checklist":"standard","document-remove":"standard",download:P,"drag-handle":"standard",edit:Q,ellipsis:T,error:U,"error-filled":"status","external-link":"standard","eye-hide":"standard","eye-show":"standard","face-id":"standard",factory:X,failed:Y,filebox:Z,"filetype-csv":"filetypes","filetype-doc":"filetypes","filetype-docx":"filetypes","filetype-generic":"filetypes","filetype-gif":"filetypes","filetype-iso":"filetypes","filetype-jpg":"filetypes","filetype-otf":"filetypes","filetype-pdf":"filetypes","filetype-png":"filetypes","filetype-ppt":"filetypes","filetype-svg":"filetypes","filetype-txt":"filetypes","filetype-xls":"filetypes","filetype-xlsx":"filetypes","filetype-xml":"filetypes",filter:tt,fingerprint:at,flag:rt,gear:st,"gesture-hand":"gestures","gesture-scroll-horizontal":"gestures","gesture-scroll-vertical":"gestures","gesture-stretch":"gestures","gesture-swipe-down":"gestures","gesture-swipe-left":"gestures","gesture-swipe-right":"gestures","gesture-swipe-up":"gestures","gesture-tap":"gestures",gift:nt,"gold-bars":"standard",government:et,gps:dt,"graduation-cap":"standard","grid-x2":"standard","grid-x3":"standard","hamburger-menu":"standard",hand:ot,"hand-with-coins":"standard","hand-with-key":"standard",handshake:ct,headset:it,health:lt,heart:pt,"heart-add":"standard","heart-remove":"standard",home:ht,"home-chimney":"standard","home-gear":"standard","id-badge":"standard",inbox:ut,"inbox-checked":"standard","inbox-full":"standard",info:gt,"info-filled":"status",ios:bt,key:ft,laptop:mt,law:yt,leaf:vt,lightbulb:wt,linechart:kt,"linechart-trend":"standard",link:xt,list:zt,location:$t,"location-base":"standard","location-prohibited":"standard",lock:Nt,logout:jt,loop:Et,mail:Ct,math:It,medal:St,megaphone:Ft,"message-forward":"standard","message-reply":"standard","message-response":"standard",microscope:qt,"mobile-button":"mobile","mobile-edit":"mobile","mobile-fast-dollar":"standard","mobile-heart":"mobile","mobile-location":"mobile","mobile-lock":"mobile","mobile-remove":"mobile","mobile-rotate":"mobile","mobile-search":"mobile","mobile-settings":"mobile","mobile-time":"mobile","money-time":"standard",mortgage:Bt,motorcycle:Vt,motorhome:Dt,mountains:Gt,movie:At,music:Lt,"nest-egg":"standard",newspaper:Ot,options:Rt,"os-android":"legacy","os-android-color":"legacy","os-android-filled":"legacy","os-apple":"legacy","os-apple-color":"legacy","os-apple-filled":"legacy","os-windows":"legacy","os-windows-color":"legacy","os-windows-filled":"legacy",palette:Wt,"paper-plane":"standard",paperclip:_t,pause:Ht,paw:Jt,people:Kt,"people-group":"standard",percent:Mt,person:Pt,"person-add":"standard","person-lock":"standard","person-remove":"standard","person-settings":"standard","person-to-person":"standard","personal-care":"standard",phone:Qt,piechart:Tt,"piechart-expanded":"standard","piggy-bank":"standard",play:Ut,pricetag:Xt,"pricetag-blank":"standard","pricetag-time":"standard",print:Yt,prohibited:Zt,question:ta,receipt:aa,"receipt-list":"standard","receipt-list-top":"standard","receipt-top":"standard",refresh:ra,remove:sa,repeat:na,"repeat-time":"standard",revert:ea,ribbon:da,ring:oa,roadblock:ca,"rss-color":"legacy","rss-filled":"legacy",save:ia,school:la,search:pa,section:ha,service:ua,shield:ga,sign:ba,"sign-closed":"standard","sign-open":"standard","sign-sale":"standard","sign-sold":"standard",silverware:fa,skip:ma,"sms-color":"legacy","sms-filled":"legacy",sort:ya,speedometer:va,split:wa,star:ka,"star-add":"standard","star-remove":"standard",statements:xa,"steering-wheel":"standard","stop-payment":"standard",storefront:za,"storefront-add":"standard","storefront-prohibited":"standard","storefront-remove":"standard","storefront-settings":"standard",success:$a,"success-filled":"status",tablet:Na,target:ja,taxi:Ea,time:Ca,todo:Ia,tools:Sa,tractor:Fa,transfer:qa,"transfer-receive":"standard","transfer-send":"standard",trash:Ba,tree:Va,"truck-with-lock":"standard",umbrella:Da,unlink:Ga,upload:Aa,"venmo-colored":"legacy","venmo-filled":"legacy",virus:La,wallet:Oa,warning:Ra,"warning-filled":"status",watch:Wa,world:_a,"zoom-in":"standard","zoom-out":"standard"};const Ja="*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}:host{display:inline-block;height:var(--tct-icon-size, 24px);width:var(--tct-icon-size, 24px);position:relative;fill:none}:host([inline]){height:1em;width:1em}svg{display:block;position:absolute;top:0;left:0;stroke-width:var(--tct-icon-stroke-width, var(--t-icon-stroke-width, 1.5));stroke-linecap:var(--tct-icon-cap, var(--t-icon-cap, round));stroke-linejoin:var(--tct-icon-cap, var(--t-icon-cap, round));transition:var(--tct-icon-transition, none)}.stroke-primary{stroke:var(--tct-icon-stroke-primary, var(--t-icon-stroke-primary, var(--t-text, currentcolor)));transition:var(--tct-icon-stroke-primary-transition, none)}.stroke-secondary{stroke:var(--tct-icon-stroke-secondary, var(--t-icon-stroke-secondary, var(--t-text, currentcolor)));transition:var(--tct-icon-stroke-secondary-transition, none)}.fill-primary{fill:var(--tct-icon-stroke-primary, var(--t-icon-stroke-primary, var(--t-text, currentcolor)));transition:var(--tct-icon-stroke-primary-transition, none)}.fill-secondary{fill:var(--tct-icon-stroke-secondary, var(--t-icon-stroke-secondary, var(--t-text, currentcolor)));transition:var(--tct-icon-stroke-secondary-transition, none)}.filled{fill:var(--tct-icon-fill, var(--comp-icon-fill, var(--t-icon-fill, none)));transition:var(--tct-icon-fill-transition, none)}.uniform{fill:var(--tct-icon-stroke-primary, var(--t-icon-stroke-primary, currentcolor));transition:var(--tct-icon-stroke-primary-transition, none)}:host([type=info]),:host([type=info-filled]){--tct-icon-stroke-primary:transparent;--comp-status-color:var(--tct-stoplight-info, var(--const-stoplight-info, #0079c1))}:host([type=success]),:host([type=success-filled]){--tct-icon-stroke-primary:transparent;--comp-status-color:var(--tct-stoplight-success, var(--const-stoplight-success, #0e8a00))}:host([type=warning]),:host([type=warning-filled]){--tct-icon-stroke-primary:transparent;--comp-status-color:var(--tct-stoplight-warning, var(--const-stoplight-warning, #c35500))}:host([type=error]),:host([type=error-filled]){--tct-icon-stroke-primary:transparent;--comp-status-color:var(--tct-stoplight-alert, var(--const-stoplight-alert, #d20a0a))}";const Ka=Ja;const Ma=class{constructor(a){t(this,a);this.iconClone=undefined;this.inline=undefined;this.label=undefined;this.type=undefined}componentWillLoad(){this.handleIcon()}componentDidRender(){var t,a,r,s;if(!this.iconClone)return;(a=(t=this.spriteGroup)===null||t===void 0?void 0:t.firstElementChild)===null||a===void 0?void 0:a.remove();const n=(r=this.spriteGroup)===null||r===void 0?void 0:r.appendChild(this.iconClone);(s=this.spriteUse)===null||s===void 0?void 0:s.setAttribute("href",`#${n.id}`)}handleIcon(){var t,a;if(this.isCustom){this.setCustomSVGAttrs()}else if(this.type){this.fetchSprite()}else{this.iconClone=null;(a=(t=this.spriteGroup)===null||t===void 0?void 0:t.firstElementChild)===null||a===void 0?void 0:a.remove()}}get iconCloneViewBox(){var t,a;return(a=(t=this.iconClone)===null||t===void 0?void 0:t.getAttribute("viewBox"))!==null&&a!==void 0?a:"0 0 24 24"}get isCustom(){return this.type==="custom"}get spriteElement(){const{spriteId:t}=this;if(!t)return;return document.querySelector(`#${t}`)}get spriteEventName(){const{spriteFileName:t}=this;if(!t)return;return`tct-loaded-${t}`}get spriteFileName(){if(this.isCustom)return;return Ha[this.type]}get spriteId(){const{spriteFileName:t}=this;if(!t)return;return`tecton-sprite-${t}`}checkForSprite(){var t;const{spriteId:a,spriteEventName:r}=this;const s=this.getOrCreateSpriteContainer();let n=document.querySelector(`#${a}`);if((t=n===null||n===void 0?void 0:n.hasAttribute("data-loaded"))!==null&&t!==void 0?t:false){this.cloneSpriteNode();return true}s.addEventListener(r,(()=>{this.cloneSpriteNode()}),{once:true});if(n)return true;n=document.createElement("div");n.id=a;s.appendChild(n);return false}cloneSpriteNode(){const t=this.getOrCreateSpriteContainer();const a=t.querySelector(`#tct-${this.type}`);this.iconClone=a?a.cloneNode(true):undefined}async fetchSprite(){const{spriteFileName:t,spriteId:r,spriteEventName:s}=this;const n=this.checkForSprite();if(n)return;if(!t)return;const e=a(`assets/${t}.symbol.svg`);const d=await fetch(e);const o=await d.text();const c=document.createElement("div");c.innerHTML=o;const i=c.querySelector("svg");i.id=r;i.setAttribute("data-loaded","");let{spriteElement:l}=this;if((l===null||l===void 0?void 0:l.tagName)==="SVG")return;if(typeof l.replaceWith==="function"){l.replaceWith(i)}else{l.parentNode.replaceChild(i,l)}l=document.querySelector(`#${r}`);l.dispatchEvent(new CustomEvent(s,{bubbles:true}))}getOrCreateSpriteContainer(){const t="tecton-sprites";let a=document.querySelector(`#${t}`);if(a)return a;a=document.createElement("div");a.id=t;a.style.display="none";document.body.appendChild(a);return a}setCustomSVGAttrs(){const t=this.hostElement.querySelector("svg");if(!t)return;t.setAttribute("role","img");t.setAttribute("xmlns","http://www.w3.org/2000/svg");const{label:a}=this;if(a){const r=document.createElement("title");const s=`label-${n()}`;r.id=s;r.textContent=a;t.appendChild(r);t.setAttribute("aria-labelledby",s)}else{t.setAttribute("aria-hidden","true")}}render(){const{label:t,type:a}=this;return this.isCustom?r("slot",null):r("svg",{"aria-hidden":!!t?undefined:"true",role:!!t?"img":undefined,"aria-labelledby":!!t?"label":undefined,viewBox:this.iconCloneViewBox,xmlns:"http://www.w3.org/2000/svg"},!!t&&r("title",{id:"label"},t),!!a&&r("use",{ref:t=>this.spriteUse=t}),r("g",{ref:t=>this.spriteGroup=t}))}static get assetsDirs(){return["assets"]}get hostElement(){return s(this)}static get watchers(){return{type:["handleIcon"]}}};Ma.style=Ka;export{Ma as q2_icon};
|
|
2
|
-
//# sourceMappingURL=p-25bfe0b2.entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["q2IconCss","Q2IconStyle0","Q2Icon","componentWillLoad","this","handleIcon","componentDidRender","iconClone","_b","_a","spriteGroup","firstElementChild","remove","appendedClone","_c","appendChild","_d","spriteUse","setAttribute","id","isCustom","setCustomSVGAttrs","type","fetchSprite","iconCloneViewBox","getAttribute","spriteElement","spriteId","document","querySelector","spriteEventName","spriteFileName","iconMap","checkForSprite","spriteContainer","getOrCreateSpriteContainer","hasAttribute","cloneSpriteNode","addEventListener","once","createElement","spriteNode","cloneNode","undefined","spriteExists","spritePath","getAssetPath","response","fetch","data","text","wrappingDiv","innerHTML","svg","tagName","replaceWith","parentNode","replaceChild","dispatchEvent","CustomEvent","bubbles","spriteContainerId","style","display","body","innerSVG","hostElement","label","title","labelId","createGuid","textContent","render","h","role","viewBox","xmlns","ref","el"],"sources":["src/components/q2-icon/q2-icon.scss?tag=q2-icon&encapsulation=shadow","src/components/q2-icon/q2-icon.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: inline-block;\n height: var(--tct-icon-size, 24px);\n width: var(--tct-icon-size, 24px);\n position: relative;\n fill: none;\n}\n\n:host([inline]) {\n height: 1em;\n width: 1em;\n}\n\nsvg {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n stroke-width: var-list(--tct-icon-stroke-width, --t-icon-stroke-width, 1.5);\n stroke-linecap: var-list(--tct-icon-cap, --t-icon-cap, round);\n stroke-linejoin: var-list(--tct-icon-cap, --t-icon-cap, round);\n transition: var(--tct-icon-transition, none);\n}\n\n.stroke-primary {\n stroke: var-list(--tct-icon-stroke-primary, --t-icon-stroke-primary, --t-text, currentcolor);\n transition: var(--tct-icon-stroke-primary-transition, none);\n}\n\n.stroke-secondary {\n stroke: var-list(--tct-icon-stroke-secondary, --t-icon-stroke-secondary, --t-text, currentcolor);\n transition: var(--tct-icon-stroke-secondary-transition, none);\n}\n\n.fill-primary {\n fill: var-list(--tct-icon-stroke-primary, --t-icon-stroke-primary, --t-text, currentcolor);\n transition: var(--tct-icon-stroke-primary-transition, none);\n}\n\n.fill-secondary {\n fill: var-list(--tct-icon-stroke-secondary, --t-icon-stroke-secondary, --t-text, currentcolor);\n transition: var(--tct-icon-stroke-secondary-transition, none);\n}\n\n.filled {\n fill: var-list(--tct-icon-fill, --comp-icon-fill, --t-icon-fill, none);\n transition: var(--tct-icon-fill-transition, none);\n}\n\n.uniform {\n fill: var-list(--tct-icon-stroke-primary, --t-icon-stroke-primary, currentcolor);\n transition: var(--tct-icon-stroke-primary-transition, none);\n}\n\n:host([type='info']),\n:host([type='info-filled']) {\n --tct-icon-stroke-primary: transparent;\n --comp-status-color: #{var-list(--tct-stoplight-info, --const-stoplight-info, #0079c1)};\n}\n\n:host([type='success']),\n:host([type='success-filled']) {\n --tct-icon-stroke-primary: transparent;\n --comp-status-color: #{var-list(--tct-stoplight-success, --const-stoplight-success, #0e8a00)};\n}\n\n:host([type='warning']),\n:host([type='warning-filled']) {\n --tct-icon-stroke-primary: transparent;\n --comp-status-color: #{var-list(--tct-stoplight-warning, --const-stoplight-warning, #c35500)};\n}\n\n:host([type='error']),\n:host([type='error-filled']) {\n --tct-icon-stroke-primary: transparent;\n --comp-status-color: #{var-list(--tct-stoplight-alert, --const-stoplight-alert, #d20a0a)};\n}\n","import { Component, ComponentInterface, Prop, h, Element, Watch, getAssetPath, State } from '@stencil/core';\nimport { createGuid } from 'src/utils';\nimport iconMap from './assets/icon-map.json';\n\n@Component({ tag: 'q2-icon', shadow: true, styleUrl: 'q2-icon.scss', assetsDirs: ['assets'] })\nexport class Q2Icon implements ComponentInterface {\n // #region Own Properties\n\n spriteGroup: SVGElement;\n spriteUse: SVGElement;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n iconClone: SVGSymbolElement;\n\n // #endregion\n // #region Public Property API\n\n /** Styles the component to have a `height` and `width` of `1em`, making it easy to place alongside text. */\n @Prop({ reflect: true })\n inline: boolean;\n\n /** The text that is presented by screen-readers when they encounter the icon. */\n @Prop({ reflect: true })\n label: string;\n\n /** The name of the icon to be displayed. */\n @Prop({ reflect: true })\n type: string;\n\n // #endregion\n // #region Component Lifecycle Events\n\n componentWillLoad() {\n this.handleIcon();\n }\n\n componentDidRender(): void {\n if (!this.iconClone) return;\n this.spriteGroup?.firstElementChild?.remove();\n const appendedClone = this.spriteGroup?.appendChild(this.iconClone);\n\n // We have to set the `href` attribute after the symbol is appended to the DOM to avoid a bug in Safari\n this.spriteUse?.setAttribute('href', `#${appendedClone.id}`);\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('type')\n handleIcon() {\n if (this.isCustom) {\n this.setCustomSVGAttrs();\n } else if (this.type) {\n this.fetchSprite();\n } else {\n this.iconClone = null;\n this.spriteGroup?.firstElementChild?.remove();\n }\n }\n\n // #endregion\n // #region Local Methods\n\n get iconCloneViewBox() {\n return this.iconClone?.getAttribute('viewBox') ?? '0 0 24 24';\n }\n\n get isCustom() {\n return this.type === 'custom';\n }\n\n get spriteElement() {\n const { spriteId } = this;\n if (!spriteId) return;\n return document.querySelector<HTMLElement>(`#${spriteId}`);\n }\n\n get spriteEventName() {\n const { spriteFileName } = this;\n if (!spriteFileName) return;\n return `tct-loaded-${spriteFileName}`;\n }\n\n get spriteFileName() {\n if (this.isCustom) return;\n return iconMap[this.type];\n }\n\n get spriteId() {\n const { spriteFileName } = this;\n if (!spriteFileName) return;\n return `tecton-sprite-${spriteFileName}`;\n }\n\n checkForSprite() {\n const { spriteId, spriteEventName } = this;\n const spriteContainer = this.getOrCreateSpriteContainer();\n let spriteElement: HTMLElement = document.querySelector(`#${spriteId}`);\n\n // If the sprite element exists and has the `data-loaded` attribute, we know we have everything we need\n if (spriteElement?.hasAttribute('data-loaded') ?? false) {\n this.cloneSpriteNode();\n return true;\n }\n\n // If the sprite element exists but does not have the `data-loaded` attribute, we know it's being loaded\n // We'll listen for the event that will be dispatched when the sprite is loaded\n spriteContainer.addEventListener(\n spriteEventName,\n () => {\n this.cloneSpriteNode();\n },\n { once: true }\n );\n\n // If the sprite element exists, we know it's being loaded and will be handled by the event listener\n if (spriteElement) return true;\n\n // If sprite element does not exist, create a placeholder\n // This will let other icons know the sprite is being loaded\n spriteElement = document.createElement('div');\n spriteElement.id = spriteId;\n spriteContainer.appendChild(spriteElement);\n return false;\n }\n\n cloneSpriteNode() {\n const spriteContainer = this.getOrCreateSpriteContainer();\n const spriteNode = spriteContainer.querySelector<HTMLElement>(`#tct-${this.type}`);\n this.iconClone = spriteNode ? (spriteNode.cloneNode(true) as SVGSymbolElement) : undefined;\n }\n\n async fetchSprite() {\n const { spriteFileName, spriteId, spriteEventName } = this;\n\n const spriteExists = this.checkForSprite();\n if (spriteExists) return;\n\n if (!spriteFileName) return;\n const spritePath = getAssetPath(`assets/${spriteFileName}.symbol.svg`);\n const response = await fetch(spritePath);\n const data = await response.text();\n const wrappingDiv = document.createElement('div');\n wrappingDiv.innerHTML = data;\n const svg = wrappingDiv.querySelector('svg');\n\n svg.id = spriteId;\n svg.setAttribute('data-loaded', '');\n\n let { spriteElement } = this;\n if (spriteElement?.tagName === 'SVG') return;\n\n if (typeof spriteElement.replaceWith === 'function') {\n spriteElement.replaceWith(svg);\n } else {\n spriteElement.parentNode.replaceChild(svg, spriteElement);\n }\n\n spriteElement = document.querySelector(`#${spriteId}`);\n spriteElement.dispatchEvent(new CustomEvent(spriteEventName, { bubbles: true }));\n }\n\n /**\n * Checks for the sprite container element in the global DOM\n * If it does not exist, it creates and appends it to the body\n */\n getOrCreateSpriteContainer() {\n const spriteContainerId = 'tecton-sprites';\n let spriteContainer: HTMLDivElement = document.querySelector(`#${spriteContainerId}`);\n\n if (spriteContainer) return spriteContainer;\n spriteContainer = document.createElement('div');\n spriteContainer.id = spriteContainerId;\n spriteContainer.style.display = 'none';\n document.body.appendChild(spriteContainer);\n return spriteContainer;\n }\n\n setCustomSVGAttrs() {\n const innerSVG = this.hostElement.querySelector('svg');\n\n if (!innerSVG) return;\n\n innerSVG.setAttribute('role', 'img');\n innerSVG.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n\n const { label } = this;\n if (label) {\n const title = document.createElement('title');\n const labelId = `label-${createGuid()}`;\n title.id = labelId;\n title.textContent = label;\n innerSVG.appendChild(title);\n innerSVG.setAttribute('aria-labelledby', labelId);\n } else {\n innerSVG.setAttribute('aria-hidden', 'true');\n }\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n const { label, type } = this;\n return this.isCustom ? (\n <slot />\n ) : (\n <svg\n aria-hidden={!!label ? undefined : 'true'}\n role={!!label ? 'img' : undefined}\n aria-labelledby={!!label ? 'label' : undefined}\n viewBox={this.iconCloneViewBox}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {!!label && <title id=\"label\">{label}</title>}\n {!!type && <use ref={el => (this.spriteUse = el)} />}\n <g ref={el => (this.spriteGroup = el)}></g>\n </svg>\n );\n }\n\n // #endregion\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["q2CarouselPaneCss","Q2CarouselPaneStyle0","Q2CarouselPane","this","disabledElements","generatePaneClass","currentIndex","onMutationObserved","removePointerMoveListeners","addPointerMoveListeners","paneClicked","event","isActivePane","preventDefault","clickCarouselPane","emit","paneIndex","index","pane","hostElement","pointerMoveHandler","stopPropagation","disconnectedCallback","mutationObserver","disconnect","componentDidLoad","determineDisabledContent","MutationObserver","observer","observe","childList","subtree","focusableElements","querySelectorAll","forEach","element","hasValidTabIndex","hasAttribute","parseInt","getAttribute","setAttribute","tabIndex","removeAttribute","currentPaneIndex","Array","prototype","indexOf","call","parentElement","children","elementsToDisable","from","join","addEventListener","removeEventListener","render","label","h","Host","key","class","role","undefined","loc","toString","siblingCount","onClick"],"sources":["src/components/q2-carousel-pane/q2-carousel-pane.scss?tag=q2-carousel-pane","src/components/q2-carousel-pane/q2-carousel-pane.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\nq2-carousel .swiper-slide {\n flex-shrink: 0;\n width: 100%;\n height: 100%;\n position: relative;\n transition-property: transform;\n transition: all 0.2s;\n}\n\nq2-carousel-pane.q2-carousel-pane {\n --comp-carousel-pane-tween: #{var-list(--tct-tween-1, --app-tween-1, unquote('0.2s ease'))};\n --comp-carousel-shadow: #{var-list(--app-shadow-2, unquote(\"0px 0px 2px rgba(0, 0, 0, 0.12), 0px 4px 8px rgba(0, 0, 0, 0.14)\"))};\n\n cursor: grab;\n\n &:not([is-active-pane]) * {\n cursor: pointer;\n }\n\n &:focus {\n box-shadow: none;\n .q2-carousel-pane-main-content {\n outline: none;\n box-shadow: var(--const-double-focus-ring);\n }\n }\n\n button {\n border: 0;\n background: transparent;\n transition: all 0.2s;\n opacity: 0.3;\n cursor: pointer;\n\n &:hover {\n opacity: 0.7;\n }\n }\n\n .q2-carousel-pane-main-content {\n box-shadow: var(--comp-carousel-shadow);\n transition: var(--comp-carousel-pane-tween);\n background: var-list(\n --tct-carousel-background,\n var-prefixer(carousel-background-color),\n --tct-white,\n --app-white,\n #ffffff\n );\n border: var-list(var-prefixer(carousel-pane-border-width), 0px) solid\n var-list(\n var-prefixer(carousel-pane-border-color),\n var-prefixer(gray-11),\n --tct-gray-l1,\n --app-gray-l1,\n #cccccc\n );\n border-radius: var-list(var-prefixer(carousel-pane-border-radius), 8px);\n padding: var-list(var-prefixer(carousel-pane-padding), 7px);\n height: var-list(var-prefixer(carousel-pane-height), 10em);\n }\n\n .q2-carousel-pane-main-content:hover {\n box-shadow: var(--const-double-focus-ring), var(--comp-carousel-shadow);\n }\n &[slot-frameless]:not([slot-frameless='false']) {\n .q2-carousel-pane-main-content {\n box-shadow: none;\n border: 0;\n border-radius: 0;\n padding: 0;\n }\n }\n}\n","import { Component, ComponentInterface, Event, Element, Host, Watch, Prop, h, EventEmitter } from '@stencil/core';\nimport { loc } from 'src/utils';\n\n@Component({ tag: 'q2-carousel-pane', shadow: false, styleUrl: 'q2-carousel-pane.scss' })\nexport class Q2CarouselPane implements ComponentInterface {\n // #region Own Properties\n\n disabledElements?: HTMLElement[] = [];\n mutationObserver?: MutationObserver;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n /**\n * Used by q2-carousel to determine the pane's index.\n * @private\n */\n @Prop({ reflect: false })\n index: number;\n\n /**\n * Used by `q2-carousel` to indicate which pane is currently active.\n * @private\n */\n @Prop({ reflect: true })\n isActivePane: boolean;\n\n /**\n * Text used only as an `aria-label` for accessibility purposes.\n * @localizable\n */\n @Prop({ reflect: true })\n label: string;\n\n /**\n * Used by q2-carousel to indicate how many panes are in the carousel.\n * @private\n */\n @Prop({ reflect: false })\n siblingCount: number;\n\n /**\n * Used by `q2-carousel` to indicate the pane should be frameless\n * @private\n */\n @Prop({ reflect: true })\n slotFrameless: boolean;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the pane is clicked.\n */\n @Event()\n clickCarouselPane: EventEmitter<{ paneIndex: number; pane: HTMLElement }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n this.mutationObserver = null;\n }\n this.removePointerMoveListeners();\n }\n\n componentDidLoad(): void {\n this.determineDisabledContent();\n this.addPointerMoveListeners();\n\n if (typeof MutationObserver !== 'undefined') {\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true, subtree: true });\n this.mutationObserver = observer;\n }\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('isActivePane')\n determineDisabledContent() {\n const { isActivePane } = this;\n const focusableElements = this.hostElement.querySelectorAll<HTMLElement>(\n 'q2-btn, q2-dropdown, q2-item, q2-chart-donut, a[href], button, [tabindex]:not([tabindex=\"-1\"])'\n );\n\n focusableElements.forEach(element => {\n const hasValidTabIndex =\n element.hasAttribute('tabindex') && parseInt(element.getAttribute('tabindex')) >= 0;\n\n if (hasValidTabIndex) {\n element.setAttribute('data-q2-tabindex', `${element.tabIndex}`);\n }\n\n if (isActivePane) {\n if (element.hasAttribute('data-q2-tabindex')) {\n element.tabIndex = parseInt(element.getAttribute('data-q2-tabindex'));\n element.removeAttribute('data-q2-tabindex');\n } else {\n element.removeAttribute('tabindex');\n }\n } else {\n element.tabIndex = -1;\n }\n });\n }\n\n // #endregion\n // #region Local Methods\n\n get currentPaneIndex() {\n return Array.prototype.indexOf.call(this.hostElement.parentElement.children, this.hostElement);\n }\n\n addPointerMoveListeners() {\n const elementsToDisable = ['q2-dropdown', 'q2-dropdown-item'];\n this.disabledElements = Array.from(this.hostElement.querySelectorAll<HTMLElement>(elementsToDisable.join(',')));\n this.disabledElements.forEach(element => {\n element.addEventListener('pointermove', this.pointerMoveHandler);\n });\n }\n\n generatePaneClass = (currentIndex: number) => {\n return `q2-carousel-pane swiper-slide q2-carousel-pane-${currentIndex}`;\n };\n\n onMutationObserved = () => {\n this.removePointerMoveListeners();\n this.addPointerMoveListeners();\n };\n\n paneClicked = event => {\n if (this.isActivePane) return;\n event.preventDefault();\n this.clickCarouselPane.emit({\n paneIndex: this.index,\n pane: this.hostElement,\n });\n };\n\n pointerMoveHandler = (event: PointerEvent) => {\n event.stopPropagation();\n };\n\n removePointerMoveListeners() {\n this.disabledElements.forEach(element => {\n element.removeEventListener('pointermove', this.pointerMoveHandler);\n });\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n const { label } = this;\n\n return (\n <Host\n class={this.generatePaneClass(this.currentPaneIndex)}\n tabIndex={this.isActivePane ? 0 : -1}\n role=\"group\"\n aria-roledescription=\"slide\"\n aria-hidden={this.isActivePane ? undefined : 'true'}\n aria-label={\n label\n ? loc(label)\n : loc('tecton.element.carousel.itemDescription', [\n (this.currentPaneIndex + 1).toString(),\n (this.siblingCount || 0).toString(),\n ])\n }\n onClick={this.paneClicked}\n >\n <article class=\"q2-carousel-pane-main-content\">\n <slot></slot>\n </article>\n </Host>\n );\n }\n\n // #endregion\n}\n"],"mappings":"oGAAA,MAAMA,EAAoB,khFAC1B,MAAAC,EAAeD,E,MCGFE,EAAc,M,8EAGvBC,KAAAC,iBAAmC,GA4HnCD,KAAAE,kBAAqBC,GACV,kDAAkDA,IAG7DH,KAAAI,mBAAqB,KACjBJ,KAAKK,6BACLL,KAAKM,yBAAyB,EAGlCN,KAAAO,YAAcC,IACV,GAAIR,KAAKS,aAAc,OACvBD,EAAME,iBACNV,KAAKW,kBAAkBC,KAAK,CACxBC,UAAWb,KAAKc,MAChBC,KAAMf,KAAKgB,aACb,EAGNhB,KAAAiB,mBAAsBT,IAClBA,EAAMU,iBAAiB,E,+HApF3B,oBAAAC,GACI,GAAInB,KAAKoB,iBAAkB,CACvBpB,KAAKoB,iBAAiBC,aACtBrB,KAAKoB,iBAAmB,I,CAE5BpB,KAAKK,4B,CAGT,gBAAAiB,GACItB,KAAKuB,2BACLvB,KAAKM,0BAEL,UAAWkB,mBAAqB,YAAa,CACzC,MAAMC,EAAW,IAAID,iBAAiBxB,KAAKI,oBAC3CqB,EAASC,QAAQ1B,KAAKgB,YAAa,CAAEW,UAAW,KAAMC,QAAS,OAC/D5B,KAAKoB,iBAAmBK,C,EAQhC,wBAAAF,GACI,MAAMd,aAAEA,GAAiBT,KACzB,MAAM6B,EAAoB7B,KAAKgB,YAAYc,iBACvC,kGAGJD,EAAkBE,SAAQC,IACtB,MAAMC,EACFD,EAAQE,aAAa,aAAeC,SAASH,EAAQI,aAAa,cAAgB,EAEtF,GAAIH,EAAkB,CAClBD,EAAQK,aAAa,mBAAoB,GAAGL,EAAQM,W,CAGxD,GAAI7B,EAAc,CACd,GAAIuB,EAAQE,aAAa,oBAAqB,CAC1CF,EAAQM,SAAWH,SAASH,EAAQI,aAAa,qBACjDJ,EAAQO,gBAAgB,mB,KACrB,CACHP,EAAQO,gBAAgB,W,MAEzB,CACHP,EAAQM,UAAY,C,KAQhC,oBAAIE,GACA,OAAOC,MAAMC,UAAUC,QAAQC,KAAK5C,KAAKgB,YAAY6B,cAAcC,SAAU9C,KAAKgB,Y,CAGtF,uBAAAV,GACI,MAAMyC,EAAoB,CAAC,cAAe,oBAC1C/C,KAAKC,iBAAmBwC,MAAMO,KAAKhD,KAAKgB,YAAYc,iBAA8BiB,EAAkBE,KAAK,OACzGjD,KAAKC,iBAAiB8B,SAAQC,IAC1BA,EAAQkB,iBAAiB,cAAelD,KAAKiB,mBAAmB,G,CA0BxE,0BAAAZ,GACIL,KAAKC,iBAAiB8B,SAAQC,IAC1BA,EAAQmB,oBAAoB,cAAenD,KAAKiB,mBAAmB,G,CAO3E,MAAAmC,GACI,MAAMC,MAAEA,GAAUrD,KAElB,OACIsD,EAACC,EAAI,CAAAC,IAAA,2CACDC,MAAOzD,KAAKE,kBAAkBF,KAAKwC,kBACnCF,SAAUtC,KAAKS,aAAe,GAAK,EACnCiD,KAAK,QAAO,uBACS,QAAO,cACf1D,KAAKS,aAAekD,UAAY,OAAM,aAE/CN,EACMO,EAAIP,GACJO,EAAI,0CAA2C,EAC1C5D,KAAKwC,iBAAmB,GAAGqB,YAC3B7D,KAAK8D,cAAgB,GAAGD,aAGvCE,QAAS/D,KAAKO,aAEd+C,EAAA,WAAAE,IAAA,2CAASC,MAAM,iCACXH,EAAA,QAAAE,IAAA,8C"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as t,c as a,h as e,F as i,g as r}from"./p-a5f18e27.js";import{c as n,l as o,o as s,i as c}from"./p-84190698.js";const l="*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}:host{display:block;position:relative}button{cursor:pointer;margin:0}.tab-container{position:relative}ul{--comp-container-padding:var(--tct-scale-1, var(--app-scale-1x, 5px)) var(--tct-scale-1, var(--app-scale-1x, 5px)) 0;padding:var(--tct-tab-container-padding, var(--t-tab-container-padding, var(--comp-container-padding)));margin:var(--tct-tab-container-margin, var(--t-tab-container-margin, 0));display:flex;gap:var(--tct-tab-gap, var(--t-tab-gap, var(--tct-scale-1, var(--app-scale-1x, 5px))));list-style:none;border-bottom:1px solid var(--tct-tab-container-border-color, var(--t-tab-container-border-color, var(--tct-gray-11, var(--t-gray-11, var(--tct-gray-l1, var(--app-gray-l1, #cccccc))))));overflow-x:auto;align-items:center;scrollbar-width:none;scrollbar-color:transparent}ul::-webkit-scrollbar{width:0;height:0}ul::-webkit-scrollbar-thumb{background:transparent}ul::-webkit-scrollbar-track{background:transparent}@media print{ul.no-print{display:none}}li{flex:0 0 auto}li button{background:var(--tct-tab-inactive-background, var(--tct-tab-inactive-bg-color, var(--t-tab-inactive-bg-color, transparent)));border-width:var(--tct-tab-inactive-border-width, var(--t-tab-inactive-border-width, 0 0 3px 0));border-color:var(--tct-tab-inactive-border-color, var(--t-tab-inactive-border-color, transparent));border-style:var(--tct-tab-inactive-border-style, var(--t-tab-inactive-border-style, solid));border-radius:var(--tct-tab-border-radius, var(--t-tab-border-radius, 0));width:var(--tct-tab-width, var(--t-tab-width, 100%));text-align:var(--tct-tab-text-align, var(--t-tab-text-align, center));text-decoration:var(--tct-tab-text-decoration, var(--t-tab-text-decoration, none));padding:var(--tct-tab-padding, var(--t-tab-padding, var(--tct-scale-2, var(--app-scale-2x, 10px))));color:var(--tct-tab-inactive-color, var(--t-tab-inactive-color, inherit));font-size:var(--tct-tab-font-size, var(--t-tab-font-size, 17px));display:block;transition:color var(--tct-tween-2, var(--app-tween-2, 0.4s ease)), border-color var(--tct-tween-1, var(--app-tween-1, 0.2s ease))}:host([type=section]) li button{--comp-tab-section-padding:var(--tct-scale-2, var(--app-scale-2x, 10px)) var(--tct-scale-1, var(--app-scale-1x, 5px));font-size:var(--tct-tab-section-font-size, inherit);padding:var(--tct-tab-section-padding, var(--t-tab-section-padding, var(--comp-tab-section-padding)))}li button:hover{color:var(--tct-tab-hover-color, var(--t-tab-hover-color, var(--tct-tab-active-color, var(--t-tab-active-color, #2e2e2e))));background:var(--tct-tab-hover-background, var(--tct-tab-hover-bg-color, var(--t-tab-hover-bg-color, inherit)));width:var(--tct-tab-hover-width, var(--t-tab-hover-width, 100%))}li button[aria-selected=true]{color:var(--tct-tab-active-color, var(--t-tab-active-color, #2e2e2e));border-color:var(--tct-tab-active-border-color, var(--t-tab-active-border-color, currentcolor));border-style:var(--tct-tab-active-border-style, var(--t-tab-active-border-style, solid));width:var(--tct-tab-active-width, var(--t-tab-active-width, 100%));background:var(--tct-tab-active-background, var(--tct-tab-active-bg-color, var(--t-tab-active-bg-color, inherit)))}:host([color=alt]) li button{color:var(--tct-tab-alt-inactive-color, var(--t-tab-alt-inactive-color, inherit))}:host([color=alt]) li button:hover,:host([color=alt]) li button[aria-selected=true]{color:var(--tct-tab-alt-active-color, var(--t-tab-alt-active-color, inherit))}@media screen and (max-width: 767px){li button{--comp-tab-padding:var(--tct-scale-2, var(--app-scale-2x, 10px)) var(--tct-scale-1, var(--app-scale-1x, 5px));font-size:inherit;padding:var(--tct-tab-padding, var(--t-tab-padding, var(--comp-tab-padding)))}}.tab-content{--comp-tab-content-padding:var(--tct-scale-2, var(--app-scale-2x, 10px)) 0;padding:var(--tct-tab-container-content-padding, var(--tct-tab-content-padding, var(--t-tab-content-padding, var(--comp-tab-content-padding))));background:var(--tct-tab-container-content-backgrond, none)}.tab-content:focus{outline:none;box-shadow:none}.gradient-left,.gradient-right{z-index:1;position:absolute;top:0;height:100%;width:44px}.gradient-left{background-image:linear-gradient(to left, var(--t-base-a0), var(--t-base-a2) 10%, var(--t-base) 100%);left:0}.gradient-right{background-image:linear-gradient(to right, var(--t-base-a0), var(--t-base-a2) 10%, var(--t-base) 100%);right:0}.btn-left,.btn-right{--tct-icon-size:18px;--tct-btn-icon-hover-background:transparent;--tct-btn-icon-width:22px;--tct-icon-stroke-primary:var(--tct-stepper-scroll-arrow-color, var(--t-stepper-scroll-arrow-color, var(--t-text, #4d4d4d)));position:absolute;top:calc(50% - 22px);z-index:2}.btn-left q2-icon,.btn-right q2-icon{--tct-icon-stroke-width:3}.btn-left{left:0}.btn-right{right:0}.tab-pane-badge{display:flex;justify-content:space-between;align-items:center}.tab-pane-badge q2-badge{margin-left:5px;margin-right:5px}";const b=l;const d=class{constructor(e){t(this,e);this.change=a(this,"change",7);this.settled=a(this,"settled",7);this.guid=n();this.lastScrolled=new Date(null).getTime();this.scheduledAfterRender=[];this.checkScrollState=()=>{if(!this.listElement)return;const{scrollLeft:t,scrollWidth:a,clientWidth:e}=this.listElement;this.scrollEnabled=a>e;this.showScrollLeft=t>0;this.showScrollRight=a>Math.ceil(t)+e};this.moveFocus=(t,a=true)=>{const e=this.tabs[t].value;const i=this.listElement.querySelector(`[data-value="${e}"]`);i.focus({preventScroll:a});const r=i.offsetLeft-this.listElement.clientWidth/2;this.listElement.scrollTo({left:r,behavior:"smooth"});return i};this.moveToAdjacentTab=(t,a)=>{const e=this.tabs.map((({value:t})=>t)).indexOf(t);let i;switch(a){case"next":i=Math.min(e+1,this.tabs.length-1);break;case"prev":i=Math.max(e-1,0);break;case"first":i=0;break;case"last":i=this.tabs.length-1;break}if(e===i)return;this.moveFocus(i,false)};this.onScrollBtnClick=t=>{const{scrollLeft:a,scrollWidth:e,clientWidth:i}=this.listElement;const r=Math.floor(i/2);let n=0;if(t==="left"){n=-Math.min(r,Math.abs(a))}else{n=Math.min(r,Math.abs(e-a-i))}this.listElement.scrollBy({left:n,behavior:"smooth"})};this.onSlotChange=()=>{this.checkScrollState()};this.onTabClick=t=>{const a=t.target.closest('button[role="tab"]').dataset.value;const e=this.value===a;if(e)return;this.change.emit({value:a})};this.onTabKeyDown=t=>{const a=t.target.dataset.value;switch(t.key){case"ArrowRight":t.preventDefault();this.moveToAdjacentTab(a,"next");break;case"ArrowLeft":t.preventDefault();this.moveToAdjacentTab(a,"prev");break;case"Home":t.preventDefault();this.moveToAdjacentTab(a,"first");break;case"End":t.preventDefault();this.moveToAdjacentTab(a,"last");break;case"Space":case"Enter":t.preventDefault();this.change.emit({value:a});break}};this.setTabs=()=>{this.tabs=this.tabPanes.map((({label:t,value:a,badgeCount:e,badgeDescription:i,badgeTheme:r,badgeStatus:n})=>({label:t&&o(t)||"",value:a,badgeCount:e,badgeDescription:i,badgeTheme:r,badgeStatus:n})))};this.updateTabData=()=>{this.updateTabPaneProps();this.setTabs()};this.updateTabPaneProps=()=>{this.tabPanes.forEach(((t,a)=>{t.selected=t.value===this.selectedTabValue;t.guid=this.guid;t.index=a}))};this.hasLeft=false;this.hasRight=false;this.scrollEnabled=false;this.showScrollLeft=false;this.showScrollRight=false;this.tabs=undefined;this.color=undefined;this.name=undefined;this.noPrint=false;this.type=undefined;this.value=undefined}disconnectedCallback(){this.resizeObserver.disconnect();this.mutationObserver.disconnect();this.resizeObserver=null;this.mutationObserver=null}componentWillLoad(){const t=new MutationObserver(this.updateTabData);t.observe(this.hostElement,{childList:true,attributes:true});this.mutationObserver=t;this.resizeObserver=new ResizeObserver((()=>this.checkScrollState()));this.updateTabData()}componentDidLoad(){var t;(t=this.resizeObserver)===null||t===void 0?void 0:t.observe(this.listElement);this.checkScrollState();s(this.hostElement);const a=this.tabs.findIndex((t=>t.value===this.value));this.scheduledAfterRender.push((()=>{const t=this.tabs.length>0;if(!t)return;const e=this.moveFocus(Math.max(a,0));this.value=e.dataset.value;e.blur()}))}componentDidRender(){this.scheduledAfterRender.forEach((t=>t()));this.scheduledAfterRender=[];this.settled.emit()}onBadge(){this.setTabs()}defaultChangeHandler(t){if(t.target===this.hostElement&&!this.hostElement.onchange){this.value=t.detail.value}}onFocus(t){if(!c(t,this.hostElement))return;const a=this.tabs.findIndex((t=>t.value===this.selectedTabValue));this.moveFocus(a)}onResize(){this.checkScrollState()}nameObserver(){this.updateTabData()}valueObserver(){this.updateTabData();this.scheduledAfterRender.push(this.resizeIframe);const t=this.tabs.findIndex((t=>t.value===this.value));if(t>-1){this.scheduledAfterRender.push((()=>this.moveFocus(t,false)))}}get selectedTabValue(){return this.value||this.tabPanes[0].value||""}get tabList(){return this.hostElement.shadowRoot.querySelector(".tab-list")}get tabPanes(){const t=this.hostElement.querySelectorAll("q2-tab-pane, tecton-tab-pane");if(t.length===0){return[]}return Array.from(t).filter((t=>t.name===this.name))}generateTab(t,a){const{label:i,value:r}=t;const n=this.selectedTabValue===r;return e("li",{role:"presentation"},e("button",{id:`tab-${this.guid}-${a}`,"data-value":r,"test-id":"tabLink",tabIndex:n?0:-1,role:"tab","aria-selected":n?"true":"false",onClick:this.onTabClick,onKeyDown:this.onTabKeyDown},t.badgeCount===undefined?i:this.generateTabWithBadge(t,n)))}generateTabWithBadge(t,a){let i;if(!t.badgeStatus&&a)i=t.badgeTheme||"primary";let r;if(t.badgeDescription)r=o(t.badgeDescription);else if(t.badgeStatus)r=o(`tecton.element.tab.pane.${t.badgeStatus}`,[t.badgeCount]);else r=o("tecton.element.tab.pane.new");return e("div",{class:"tab-pane-badge","aria-label":`${t.label}, ${t.badgeCount} ${r}`},t.label,e("q2-badge",{value:t.badgeCount,theme:i,status:t.badgeStatus}))}resizeIframe(){var t,a;return(a=(t=window.TectonElements)===null||t===void 0?void 0:t.resizeIframe)===null||a===void 0?void 0:a.call(t)}render(){return e(i,{key:"5568f1a9c05f0cb8124adfe548a96d5480b0b8bc"},e("div",{key:"ddccc615e5c4cbaeefaed4471bcc3df8bacb6609",class:"tab-container"},this.scrollEnabled&&e(i,{key:"9f0303f416ceb1a868d24b2bccf8add4da980a91"},e("div",{key:"891bb9e12ea0808610ed518a6870190c738f5c8c",class:"gradient-left",hidden:!this.showScrollLeft}),e("div",{key:"60b8216b5fea77607761c6ad55895f8805a26e0e",class:"gradient-right",hidden:!this.showScrollRight}),e("q2-btn",{key:"5714bd03be5455e969b7512bf720337d7f671a5c",class:"btn-left",hidden:!this.showScrollLeft,onClick:()=>this.onScrollBtnClick("left")},e("q2-icon",{key:"acea58fefe206a0abf097870fc447181b74b4f60",type:"chevron-left",label:"scroll left"})),e("q2-btn",{key:"da12e4e1018449187b1c52fc134e9d4bfe3c6bff",class:"btn-right",hidden:!this.showScrollRight,onClick:()=>this.onScrollBtnClick("right")},e("q2-icon",{key:"9270d520507be9eee2abe16082f5ff339bf3d8c0",type:"chevron-right",label:"scroll right"}))),e("ul",{key:"b28080a7e211814886bb55cde2b770339ad64401",onScroll:this.checkScrollState,ref:t=>this.listElement=t,class:this.noPrint?"no-print":null,role:"tablist"},this.tabs.map(((t,a)=>this.generateTab(t,a))))),e("div",{key:"2209afe25d4d76ab41c7a12e16626d75e0108535",class:"tab-content"},e("slot",{key:"637744438c83fa75371fb10fbbfc3b438449f226",onSlotchange:()=>this.onSlotChange()})))}get hostElement(){return r(this)}static get watchers(){return{name:["nameObserver"],value:["valueObserver"]}}};d.style=b;export{d as q2_tab_container};
|
|
2
|
-
//# sourceMappingURL=p-333a41ca.entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["q2TabContainerCss","Q2TabContainerStyle0","Q2TabContainer","this","guid","createGuid","lastScrolled","Date","getTime","scheduledAfterRender","checkScrollState","listElement","scrollLeft","scrollWidth","clientWidth","scrollEnabled","showScrollLeft","showScrollRight","Math","ceil","moveFocus","index","preventScroll","focusedValue","tabs","value","focusedTab","querySelector","focus","left","offsetLeft","scrollTo","behavior","moveToAdjacentTab","direction","map","indexOf","newIndex","min","length","max","onScrollBtnClick","halfWidth","floor","scrollAmount","abs","scrollBy","onSlotChange","onTabClick","event","targetValue","target","closest","dataset","isAlreadySelected","change","emit","onTabKeyDown","key","preventDefault","setTabs","tabPanes","label","badgeCount","badgeDescription","badgeTheme","badgeStatus","loc","updateTabData","updateTabPaneProps","forEach","tab","selected","selectedTabValue","disconnectedCallback","resizeObserver","disconnect","mutationObserver","componentWillLoad","observer","MutationObserver","observe","hostElement","childList","attributes","ResizeObserver","componentDidLoad","_a","overrideFocus","findIndex","el","push","hasTabs","blur","componentDidRender","fn","settled","onBadge","defaultChangeHandler","onchange","detail","onFocus","isEventFromElement","onResize","nameObserver","valueObserver","resizeIframe","tabList","shadowRoot","querySelectorAll","Array","from","filter","pane","name","generateTab","isSelected","h","role","id","tabIndex","onClick","onKeyDown","undefined","generateTabWithBadge","theme","description","class","status","_b","window","TectonElements","call","render","Fragment","hidden","type","onScroll","ref","noPrint","onSlotchange"],"sources":["src/components/q2-tab-container/q2-tab-container.scss?tag=q2-tab-container&encapsulation=shadow","src/components/q2-tab-container/q2-tab-container.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: block;\n position: relative;\n}\n\nbutton {\n cursor: pointer;\n margin: 0;\n}\n\n.tab-container {\n position: relative;\n}\n\nul {\n --comp-container-padding: #{var-list(--tct-scale-1, --app-scale-1x, 5px)\n var-list(--tct-scale-1, --app-scale-1x, 5px) 0};\n padding: var-list(var-prefixer(tab-container-padding), --comp-container-padding);\n margin: var-list(var-prefixer(tab-container-margin), 0);\n display: flex;\n gap: var-list(var-prefixer(tab-gap), --tct-scale-1, --app-scale-1x, 5px);\n list-style: none;\n border-bottom: 1px solid\n var-list(\n var-prefixer(tab-container-border-color),\n --tct-gray-11,\n --t-gray-11,\n --tct-gray-l1,\n --app-gray-l1,\n #cccccc\n );\n overflow-x: auto;\n align-items: center;\n @include hidden-scrollbar();\n\n @media print {\n &.no-print {\n display: none;\n }\n }\n}\n\nli {\n flex: 0 0 auto;\n\n button {\n background: var-list(--tct-tab-inactive-background, var-prefixer(tab-inactive-bg-color), transparent);\n border-width: var-list(var-prefixer(tab-inactive-border-width), unquote('0 0 3px 0'));\n border-color: var-list(var-prefixer(tab-inactive-border-color), transparent);\n border-style: var-list(var-prefixer(tab-inactive-border-style), solid);\n border-radius: var-list(var-prefixer(tab-border-radius), 0);\n width: var-list(var-prefixer(tab-width), 100%);\n text-align: var-list(var-prefixer(tab-text-align), center);\n text-decoration: var-list(var-prefixer(tab-text-decoration), none);\n padding: var-list(var-prefixer(tab-padding), --tct-scale-2, --app-scale-2x, 10px);\n color: var-list(var-prefixer(tab-inactive-color), inherit);\n font-size: var-list(var-prefixer(tab-font-size), 17px);\n display: block;\n transition:\n color var-list(--tct-tween-2, --app-tween-2, unquote('0.4s ease')),\n border-color var-list(--tct-tween-1, --app-tween-1, unquote('0.2s ease'));\n\n :host([type='section']) & {\n --comp-tab-section-padding: #{var-list(--tct-scale-2, --app-scale-2x, 10px)\n var-list(--tct-scale-1, --app-scale-1x, 5px)};\n font-size: var-list(--tct-tab-section-font-size, inherit);\n padding: var-list(var-prefixer(tab-section-padding), --comp-tab-section-padding);\n }\n\n &:hover {\n color: var-list(var-prefixer(tab-hover-color), var-prefixer(tab-active-color), #2e2e2e);\n background: var-list(--tct-tab-hover-background, var-prefixer(tab-hover-bg-color), inherit);\n width: var-list(var-prefixer(tab-hover-width), 100%);\n }\n\n &[aria-selected='true'] {\n color: var-list(var-prefixer(tab-active-color), #2e2e2e);\n border-color: var-list(var-prefixer(tab-active-border-color), currentcolor);\n border-style: var-list(var-prefixer(tab-active-border-style), solid);\n width: var-list(var-prefixer(tab-active-width), 100%);\n background: var-list(--tct-tab-active-background, var-prefixer(tab-active-bg-color), inherit);\n }\n\n :host([color='alt']) & {\n color: var-list(var-prefixer(tab-alt-inactive-color), inherit);\n\n &:hover,\n &[aria-selected='true'] {\n color: var-list(var-prefixer(tab-alt-active-color), inherit);\n }\n }\n\n @media screen and (max-width: 767px) {\n --comp-tab-padding: #{var-list(--tct-scale-2, --app-scale-2x, 10px)\n var-list(--tct-scale-1, --app-scale-1x, 5px)};\n font-size: inherit;\n padding: var-list(var-prefixer(tab-padding), --comp-tab-padding);\n }\n }\n}\n\n.tab-content {\n --comp-tab-content-padding: #{var-list(--tct-scale-2, --app-scale-2x, 10px) 0};\n padding: var-list(\n --tct-tab-container-content-padding,\n var-prefixer(tab-content-padding),\n --comp-tab-content-padding\n );\n background: var-list(--tct-tab-container-content-backgrond, none);\n\n &:focus {\n outline: none;\n box-shadow: none;\n }\n}\n\n.gradient-left,\n.gradient-right {\n z-index: 1;\n position: absolute;\n top: 0;\n height: 100%;\n width: 44px;\n}\n\n.gradient-left {\n background-image: linear-gradient(to left, var(--t-base-a0), var(--t-base-a2) 10%, var(--t-base) 100%);\n left: 0;\n}\n\n.gradient-right {\n background-image: linear-gradient(to right, var(--t-base-a0), var(--t-base-a2) 10%, var(--t-base) 100%);\n right: 0;\n}\n\n.btn-left,\n.btn-right {\n --tct-icon-size: 18px;\n --tct-btn-icon-hover-background: transparent;\n --tct-btn-icon-width: 22px;\n --tct-icon-stroke-primary: #{var-list(var-prefixer(stepper-scroll-arrow-color), --t-text, #4d4d4d)};\n\n position: absolute;\n top: calc(50% - 22px);\n z-index: 2;\n q2-icon {\n --tct-icon-stroke-width: 3;\n }\n}\n\n.btn-left {\n left: 0;\n}\n\n.btn-right {\n right: 0;\n}\n\n.tab-pane-badge {\n display: flex;\n justify-content: space-between;\n align-items: center;\n q2-badge {\n margin-left: 5px;\n margin-right: 5px;\n }\n}\n","import {\n Component,\n ComponentInterface,\n Prop,\n Element,\n Event,\n EventEmitter,\n State,\n Listen,\n Watch,\n h,\n Fragment,\n} from '@stencil/core';\nimport { createGuid, loc, overrideFocus, isEventFromElement } from 'src/utils';\nimport { JSX } from '../../components';\nimport { Q2Badge } from '../q2-badge/q2-badge';\n\ntype TabPane = {\n label: string;\n value: string;\n badgeCount: number;\n badgeDescription: string;\n badgeTheme: Q2Badge['theme'];\n badgeStatus: Q2Badge['status'];\n};\n\n@Component({ tag: 'q2-tab-container', shadow: true, styleUrl: 'q2-tab-container.scss' })\nexport class Q2TabContainer implements ComponentInterface {\n // #region Own Properties\n\n guid: number = createGuid();\n lastScrolled: number = new Date(null).getTime();\n listElement: HTMLUListElement;\n mutationObserver: MutationObserver;\n resizeObserver: ResizeObserver;\n scheduledAfterRender: (() => void)[] = [];\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n hasLeft: boolean = false;\n\n @State()\n hasRight: boolean = false;\n\n @State()\n scrollEnabled: boolean = false;\n\n @State()\n showScrollLeft: boolean = false;\n\n @State()\n showScrollRight: boolean = false;\n\n @State()\n tabs: TabPane[];\n\n // #endregion\n // #region Public Property API\n\n /**\n * Controls which variables are used to color the tab controls.\n *\n * - `undefined` (default)\n * - Uses `--t-tab-active` and `--t-tab-inactive`.\n * - `alt`\n * - Uses `--t-tab-alt-active` and `--t-tab-alt-inactive`.\n * - The default fallback for these variables is `inherit`.\n */\n @Prop({ reflect: true })\n color: 'alt' | undefined;\n\n /**\n * Used to establish a relationship between `q2-tab-container` and its associated tab panes.\n * @warning\n * The element can fail if this property is not set. Nested tab containers without the `name` property will not render correctly.\n */\n @Prop({ reflect: true })\n name: string;\n\n /** Controls visibility of tab list in a print view. Tab content will still be visible even if `noPrint` is true. */\n @Prop({ reflect: true })\n noPrint: boolean = false;\n\n /** Determines the font size of the tab controls. */\n @Prop({ reflect: true })\n type: 'main' | 'section';\n\n /** Corresponds to the value of the selected tab pane. */\n @Prop({ reflect: true, mutable: true })\n value: string;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the selected tab changes.\n * @legacyEvent\n */\n @Event()\n change: EventEmitter<{ value: string }>;\n\n /**\n * Emitted when the component has finished rendering.\n * @private\n */\n @Event()\n settled: EventEmitter<undefined>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n this.resizeObserver.disconnect();\n this.mutationObserver.disconnect();\n this.resizeObserver = null;\n this.mutationObserver = null;\n }\n\n componentWillLoad() {\n const observer = new MutationObserver(this.updateTabData);\n observer.observe(this.hostElement, { childList: true, attributes: true });\n this.mutationObserver = observer;\n this.resizeObserver = new ResizeObserver(() => this.checkScrollState());\n this.updateTabData();\n }\n\n componentDidLoad() {\n this.resizeObserver?.observe(this.listElement);\n this.checkScrollState();\n overrideFocus(this.hostElement);\n const index = this.tabs.findIndex(el => el.value === this.value);\n this.scheduledAfterRender.push(() => {\n const hasTabs = this.tabs.length > 0;\n if (!hasTabs) return;\n const tab = this.moveFocus(Math.max(index, 0));\n this.value = tab.dataset.value;\n tab.blur();\n });\n }\n\n componentDidRender() {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n this.settled.emit();\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('badge')\n onBadge() {\n this.setTabs();\n }\n\n @Listen('change')\n defaultChangeHandler(event: CustomEvent) {\n if (event.target === this.hostElement && !this.hostElement.onchange) {\n this.value = event.detail.value;\n }\n }\n\n @Listen('focus')\n onFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n const index = this.tabs.findIndex(el => el.value === this.selectedTabValue);\n this.moveFocus(index);\n }\n\n @Listen('resize', { target: 'window' })\n onResize() {\n this.checkScrollState();\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('name')\n nameObserver() {\n this.updateTabData();\n }\n\n @Watch('value')\n valueObserver() {\n this.updateTabData();\n this.scheduledAfterRender.push(this.resizeIframe);\n const index = this.tabs.findIndex(el => el.value === this.value);\n if (index > -1) {\n this.scheduledAfterRender.push(() => this.moveFocus(index, false));\n }\n }\n\n // #endregion\n // #region Local Methods\n\n get selectedTabValue() {\n return this.value || this.tabPanes[0].value || '';\n }\n\n get tabList() {\n return this.hostElement.shadowRoot.querySelector('.tab-list');\n }\n\n get tabPanes() {\n const tabPanes = this.hostElement.querySelectorAll<HTMLQ2TabPaneElement | HTMLTectonTabPaneElement>(\n 'q2-tab-pane, tecton-tab-pane'\n );\n\n if (tabPanes.length === 0) {\n return [];\n }\n\n return Array.from(tabPanes).filter(pane => pane.name === this.name);\n }\n\n checkScrollState = () => {\n if (!this.listElement) return;\n const { scrollLeft, scrollWidth, clientWidth } = this.listElement;\n this.scrollEnabled = scrollWidth > clientWidth;\n this.showScrollLeft = scrollLeft > 0;\n this.showScrollRight = scrollWidth > Math.ceil(scrollLeft) + clientWidth;\n };\n\n generateTab(tab: TabPane, index: number): JSX.IntrinsicElements {\n const { label, value } = tab;\n const isSelected = this.selectedTabValue === value;\n return (\n <li role=\"presentation\">\n <button\n id={`tab-${this.guid}-${index}`}\n data-value={value}\n test-id=\"tabLink\"\n tabIndex={isSelected ? 0 : -1}\n role=\"tab\"\n aria-selected={isSelected ? 'true' : 'false'}\n onClick={this.onTabClick}\n onKeyDown={this.onTabKeyDown}\n >\n {tab.badgeCount === undefined ? label : this.generateTabWithBadge(tab, isSelected)}\n </button>\n </li>\n );\n }\n\n generateTabWithBadge(tab: TabPane, isSelected: boolean): JSX.IntrinsicElements {\n let theme;\n if (!tab.badgeStatus && isSelected) theme = tab.badgeTheme || 'primary';\n let description;\n if (tab.badgeDescription) description = loc(tab.badgeDescription);\n else if (tab.badgeStatus) description = loc(`tecton.element.tab.pane.${tab.badgeStatus}`, [tab.badgeCount]);\n else description = loc('tecton.element.tab.pane.new');\n\n return (\n <div\n class=\"tab-pane-badge\"\n aria-label={`${tab.label}, ${tab.badgeCount} ${description}`}\n >\n {tab.label}\n <q2-badge\n value={tab.badgeCount}\n theme={theme}\n status={tab.badgeStatus}\n />\n </div>\n );\n }\n\n moveFocus = (index: number, preventScroll: boolean = true) => {\n const focusedValue = this.tabs[index].value;\n const focusedTab = this.listElement.querySelector<HTMLButtonElement>(`[data-value=\"${focusedValue}\"]`);\n focusedTab.focus({ preventScroll });\n\n const left = focusedTab.offsetLeft - this.listElement.clientWidth / 2;\n this.listElement.scrollTo({\n left,\n behavior: 'smooth',\n });\n\n return focusedTab;\n };\n\n moveToAdjacentTab = (value: string, direction: 'next' | 'prev' | 'first' | 'last') => {\n const index = this.tabs.map(({ value }) => value).indexOf(value);\n\n let newIndex;\n switch (direction) {\n case 'next':\n newIndex = Math.min(index + 1, this.tabs.length - 1);\n break;\n\n case 'prev':\n newIndex = Math.max(index - 1, 0);\n break;\n\n case 'first':\n newIndex = 0;\n break;\n\n case 'last':\n newIndex = this.tabs.length - 1;\n break;\n }\n\n if (index === newIndex) return;\n\n this.moveFocus(newIndex, false);\n };\n\n onScrollBtnClick = (direction?: 'left' | 'right') => {\n const { scrollLeft, scrollWidth, clientWidth } = this.listElement;\n const halfWidth = Math.floor(clientWidth / 2);\n let scrollAmount: number = 0;\n if (direction === 'left') {\n scrollAmount = -Math.min(halfWidth, Math.abs(scrollLeft));\n } else {\n scrollAmount = Math.min(halfWidth, Math.abs(scrollWidth - scrollLeft - clientWidth));\n }\n this.listElement.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n };\n\n onSlotChange = () => {\n this.checkScrollState();\n };\n\n onTabClick = (event: MouseEvent) => {\n const targetValue = ((event.target as HTMLButtonElement).closest('button[role=\"tab\"]') as HTMLButtonElement)\n .dataset.value;\n const isAlreadySelected = this.value === targetValue;\n if (isAlreadySelected) return;\n\n this.change.emit({\n value: targetValue,\n });\n };\n\n onTabKeyDown = (event: KeyboardEvent) => {\n const value = (event.target as HTMLElement).dataset.value;\n switch (event.key) {\n case 'ArrowRight':\n event.preventDefault();\n this.moveToAdjacentTab(value, 'next');\n break;\n\n case 'ArrowLeft':\n event.preventDefault();\n this.moveToAdjacentTab(value, 'prev');\n break;\n\n case 'Home':\n event.preventDefault();\n this.moveToAdjacentTab(value, 'first');\n break;\n\n case 'End':\n event.preventDefault();\n this.moveToAdjacentTab(value, 'last');\n break;\n\n case 'Space':\n case 'Enter':\n event.preventDefault();\n this.change.emit({ value });\n break;\n }\n };\n\n resizeIframe() {\n return window.TectonElements?.resizeIframe?.();\n }\n\n setTabs = () => {\n this.tabs = this.tabPanes.map(({ label, value, badgeCount, badgeDescription, badgeTheme, badgeStatus }) => ({\n label: (label && loc(label)) || '',\n value,\n badgeCount,\n badgeDescription,\n badgeTheme,\n badgeStatus,\n }));\n };\n\n updateTabData = () => {\n this.updateTabPaneProps();\n this.setTabs();\n };\n\n updateTabPaneProps = () => {\n this.tabPanes.forEach((tab, index) => {\n tab.selected = tab.value === this.selectedTabValue;\n tab.guid = this.guid;\n tab.index = index;\n });\n };\n\n // #endregion\n // #region Render Methods\n\n render() {\n return (\n <Fragment>\n <div class=\"tab-container\">\n {this.scrollEnabled && (\n <Fragment>\n <div\n class=\"gradient-left\"\n hidden={!this.showScrollLeft}\n ></div>\n <div\n class=\"gradient-right\"\n hidden={!this.showScrollRight}\n ></div>\n\n <q2-btn\n class=\"btn-left\"\n hidden={!this.showScrollLeft}\n onClick={() => this.onScrollBtnClick('left')}\n >\n <q2-icon\n type=\"chevron-left\"\n label=\"scroll left\"\n ></q2-icon>\n </q2-btn>\n\n <q2-btn\n class=\"btn-right\"\n hidden={!this.showScrollRight}\n onClick={() => this.onScrollBtnClick('right')}\n >\n <q2-icon\n type=\"chevron-right\"\n label=\"scroll right\"\n ></q2-icon>\n </q2-btn>\n </Fragment>\n )}\n\n <ul\n onScroll={this.checkScrollState}\n ref={el => (this.listElement = el)}\n class={this.noPrint ? 'no-print' : null}\n role=\"tablist\"\n >\n {this.tabs.map((tab, index) => this.generateTab(tab, index))}\n </ul>\n </div>\n <div class=\"tab-content\">\n <slot onSlotchange={() => this.onSlotChange()} />\n </div>\n </Fragment>\n );\n }\n\n // #endregion\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e,c as t,h as i,g as n}from"./p-a5f18e27.js";import{d as a}from"./p-be518818.js";import{l as s,h as r,o as d,i as o,w as l,a as c}from"./p-84190698.js";function h(e){const t=new Date(e);if(!a.isValid(t))return;return a.formatISO(t,{representation:"date"})}let u;function f(e){const t=new Date(e);if(!a.isValid(t))return;const i=t.toISOString();if(!u){u=new Intl.DateTimeFormat("en-US",{month:"2-digit",day:"2-digit",year:"numeric",timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone})}return u.format(new Date(i))}let v;function p(e){const t=new Date(e);if(!a.isValid(t))return;if(!v){v=new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric",year:"numeric"})}return v.format(t)}let b;function y(e){if(!e)return;const t=new Date(e);if(!a.isValid(t))return;if(!b){b=new Intl.DateTimeFormat("en-US",{month:"long",day:"numeric",year:"numeric",weekday:"long",timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone})}return b.format(t)}function m(e){return e.replace(/[d]/g,"E").replace(/[D]/g,"d").replace(/[Y]/g,"y").replace(/[l]/g,"P").replace(/[W]/g,"I")}function g(e){const t=typeof e==="string";if(!t&&e&&a.isValid(new Date(e||undefined))){e=h(e)}else if(!e||!a.isValid(new Date(e))){return undefined}let i;const n=e.split(/[\/\-]/).map((e=>e.padStart(2,"0")));const s=t&&e.length>=24&&e[10]==="T";const r=n.length===3;const d=n.length<3;if(s){e=e.split("T")[0];i=new Date(e)}else if(r){const t=e.includes("/")&&n[2].length===4;if(t)n.unshift(n.pop());i=new Date(Date.UTC(parseInt(n[0]),parseInt(n[1])-1,parseInt(n[2])))}else if(d){const e=new Date;let t;let a;let s;switch(n.length){case 1:t=e.getFullYear();a=n[0];s="01";break;case 2:t=e.getFullYear();a=n[0];s=n[1];break}i=new Date(`${t}-${a}-${s}`)}if(!a.isValid(i))return undefined;i=w(i);return a.isValid(i)?i:undefined}function w(e){const t=e.getTimezoneOffset();return a.setMinutes(e,t+Math.abs(t%60))}function D(e){if(!Array.isArray(e)||e.length===0){return[]}return e.map((e=>g(e)))}function x(e=new Date){return{monthIndex:e.getMonth(),selectedYear:e.getFullYear()}}function k(e="",t=[],i=[],n=[],r,d,o="mm/dd/yyyy",l){let c=true;let u=false;let f="info";let v=`${s("tecton.element.calendar.hint.format")}: ${o}`;if(!e){return{isValid:c,inputDate:new Date(""),isAvailable:u,messageType:f,message:v}}const b=$(e,l);const y=b.getMonth()+1;const m=b.getDate();const g=b.getFullYear();const w=[y,m,g];if(a.isValid(b)){const a=C()[b.getMonth()];if(e.length===10){c=true;f=null;v=null}u=t.includes(b.getDay());const l=h(b);if(u){const e=i.length&&!i.includes(l);const t=n.length&&n.includes(l);const a=r&&r>l;const s=d&&d<l;if(e||t||a||s){u=false}}if(e.length>=5&&!u){c=false;f="error";const e=!a||!m||!g;v=e?`${s("tecton.element.calendar.hint.invalidDate")}: ${o}`:s("tecton.element.calendar.hint.notAvailableDate",[p(b)])}}else{c=false;f="error";v=`${s("tecton.element.calendar.hint.invalidDate")}: ${o}`}return{isValid:c,messageType:f,message:v,inputDate:b,isAvailable:u,calendarPosition:w}}function $(e,t){const i=new Date;let[n,a,s]=e.split("/");if(n==="0")n="01";if(a==="0")a="01";if(e.length===10){return new Date(e)}else if(n&&a&&Number(a)>0){const e=Number(a)<10?`0${Number(a)}`:a;const i=!s||s.length<4?I(n,a,t):s;return new Date(`${n}/${e}/${i}`)}else if(n){return new Date(`${n}/01/${i.getFullYear()}`)}}function I(e,t,i){const n=`${e}/${t}`;const a=new Date;const s=a.getMonth()<9?`0${a.getMonth()+1}`:`${a.getMonth()+1}`;const r=a.getDate()<10?`0${a.getDate()}`:`${a.getDate()}`;const d=`${s}/${r}/${a.getFullYear()}`;let o=a.getFullYear();if(i==="future"&&d.slice(0,5)>n){o=a.getFullYear()+1}else if(i==="past"&&d.slice(0,5)<n){o=a.getFullYear()-1}return o.toString()}function T(e){if(!e){return""}if(e.match(/^[1-9]\/$/)){return`0${e}/`}else if(e.match(/^[0-9]{2}\/[1-9]{1}\/$/)){const t=e.split("/");return`${t[0]}/0${t[1]}/`}return e}function E(e){const t=(e||"").split("-");if(t.length!==3)return"";return`${t[1]}/${t[2]}/${t[0]}`}function O(e,t){return new Date(t,e,1,1,1,1,1).getDay()}function V(){return[s("tecton.element.calendar.days.short.Sunday"),s("tecton.element.calendar.days.short.Monday"),s("tecton.element.calendar.days.short.Tuesday"),s("tecton.element.calendar.days.short.Wednesday"),s("tecton.element.calendar.days.short.Thursday"),s("tecton.element.calendar.days.short.Friday"),s("tecton.element.calendar.days.short.Saturday")]}function A(){return[s("tecton.element.calendar.days.Sunday"),s("tecton.element.calendar.days.Monday"),s("tecton.element.calendar.days.Tuesday"),s("tecton.element.calendar.days.Wednesday"),s("tecton.element.calendar.days.Thursday"),s("tecton.element.calendar.days.Friday"),s("tecton.element.calendar.days.Saturday")]}function C(){return[s("tecton.element.calendar.months.January"),s("tecton.element.calendar.months.February"),s("tecton.element.calendar.months.March"),s("tecton.element.calendar.months.April"),s("tecton.element.calendar.months.May"),s("tecton.element.calendar.months.June"),s("tecton.element.calendar.months.July"),s("tecton.element.calendar.months.August"),s("tecton.element.calendar.months.September"),s("tecton.element.calendar.months.October"),s("tecton.element.calendar.months.November"),s("tecton.element.calendar.months.December")]}function z(e,t){const i=a.getDaysInMonth(new Date(t,e));return[...Array(i).keys()].reduce(((i,n)=>{i.push(new Date(t,e,n+1));return i}),[])}function q(e=127){const t=e&1;const i=e&2;const n=e&4;const a=e&8;const s=e&16;const r=e&32;const d=e&64;const o=[];if(e<=0)return o;if(t)o.push(0);if(i)o.push(1);if(n)o.push(2);if(a)o.push(3);if(s)o.push(4);if(r)o.push(5);if(d)o.push(6);return o}function S(e,t){return e.includes(t.getDay())}function Y(e,t){return!F(e,t)}function F(e,t){return e.some((e=>a.isSameDay(e,t)))}function M(e,t,i,n,a,s,r){const d=[H.bind(null,s,new Date)];if(t===null||t===void 0?void 0:t.length){d.push(F.bind(null,t))}else{d.push(S.bind(null,e))}d.push(Y.bind(null,i));return L(n,a,s,d,r)}function L({monthIndex:e,selectedYear:t},i,n,s,r){const d=!a.isValid(new Date(r));const o=z(e,t).map(((e,t)=>{const a=s.some((t=>!t(e)));const r=P(e,n,i);const o=j(Object.assign(Object.assign({},r),{isInvalid:a,isIncompleteDate:d}));return Object.assign(Object.assign({},r),{isValid:!a,date:e,integer:t+1,isEmpty:false,isActivity:false,classList:o})}));const l=B(O(e,t));const c=U((l.length+o.length)%7);return[...l,...o,...c]}function H(e,t,i){const n=a.isAfter(e===null||e===void 0?void 0:e.startDate,i);const s=a.isBefore(e===null||e===void 0?void 0:e.endDate,i);const r=a.isSameDay(t,i)&&a.isAfter(t,e===null||e===void 0?void 0:e.cutOffTime);return!(n||r||s)}function P(e,t,i){if(!i)i=new Date;const n=i&&a.isSameDay(i,e);const s=a.isSameDay(e,new Date);const r=a.isSameDay(e,t===null||t===void 0?void 0:t.startDate);const d=a.isSameDay(e,t===null||t===void 0?void 0:t.endDate);return{isSelected:n,isToday:s,isStartDate:r,isEndDate:d}}function j({isInvalid:e,isSelected:t,isEndDate:i,isStartDate:n,isToday:a,isIncompleteDate:s}){const r=[];if(!e)r.push("is-valid");if(t)r.push("is-selected");if(i)r.push("is-end-date");if(n)r.push("is-start-date");if(a)r.push("is-today");if(t&&e&&!s)r.push("is-unavailable");return r.join(" ")}function B(e){return K(0,e)}function U(e){if(e===0)return[];return K(e,7)}const W={date:null,integer:null,isActivity:false,isEmpty:true,isValid:false,isToday:false,isSelected:false,isStartDate:false,isEndDate:false,classList:""};function K(e,t){if(e===7)e=0;return[...Array(t-e).keys()].map((()=>Object.assign({},W)))}const N="*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}:host{display:block}:host[hidden]{display:none}click-elsewhere{position:relative;display:block}q2-input{margin:0;cursor:pointer}q2-popover{--comp-min-tappable-size:44px;--comp-table-border-spacing:2px;--comp-min-tappable-size-and-spacing:calc(var(--comp-min-tappable-size) + var(--comp-table-border-spacing));--comp-popover-padding:var(--tct-calendar-popover-padding, var(--t-calendar-popover-padding, var(--app-scale-1x, 5px)));--comp-min-table-width:calc(var(--comp-min-tappable-size-and-spacing) * 7);--comp-table-container-border-spacing:calc(var(--comp-table-border-spacing) * 2);--comp-popover-total-padding:calc(var(--comp-popover-padding) * 2);--tct-popover-min-width:calc(\n var(--comp-min-table-width) + var(--comp-table-container-border-spacing) + var(--comp-popover-total-padding)\n )}.calendar-field-popup{padding:var(--comp-popover-padding)}.calendar-label{--comp-label-padding:var(--tct-calendar-label-padding, var(--tct-calendar-label-vertical-padding, var(--t-calendar-label-vertical-padding, var(--tct-scale-2, var(--app-scale-2x, 10px)))) 0);font-size:var(--tct-calendar-label-font-size, var(--t-calendar-label-font-size, 16px));flex:1 1;flex-basis:calc(100% - var(--tct-btn-icon-width, 44px));margin:0;padding:var(--comp-label-padding)}.cal-month-heading{padding:0 0 0.75rem;display:flex;justify-content:center;align-items:center;font-size:var(--tct-calendar-month-font-size, var(--t-calendar-month-font-size, 16px));font-weight:var(--tct-calendar-month-font-weight, var(--t-calendar-month-font-weight, 600));text-align:center}.cal-month-text{min-width:82px;display:inline-block}.cal-year-text{min-width:50px;display:inline-block}table{width:100%;margin-bottom:2px;text-align:center;border-spacing:var(--comp-table-border-spacing)}th{font-size:var(--tct-calendar-day-heading-font-size, var(--t-calendar-day-heading-font-size, inherit));font-weight:var(--tct-calendar-day-heading-font-weight, var(--t-calendar-day-heading-font-weight, 600));width:14.285714%}td{height:var(--comp-min-tappable-size);cursor:pointer;border:var(--tct-calendar-day-border, var(--t-calendar-day-border, 0));border-radius:var(--tct-calendar-day-border-radius, var(--t-calendar-day-border-radius))}td.is-unavailable{border:1px solid var(--tct-input-error-border-color, var(--const-stoplight-alert, #d20a0a))}td.is-valid:hover{border:var(--tct-calendar-day-hover-border, var(--t-calendar-day-hover-border, var(--tct-calendar-day-border, var(--t-calendar-day-border, 0))));border-radius:var(--tct-calendar-day-hover-border-radius, var(--t-calendar-day-hover-border-radius, var(--tct-calendar-day-border-radius, var(--t-calendar-day-border-radius))));background:var(--tct-calendar-day-hover-background, var(--tct-calendar-day-hover-bg, var(--t-calendar-day-hover-bg, var(--tct-gray-14, var(--app-gray14, var(--tct-gray-l4, var(--app-gray-l4, #f2f2f2)))))));color:var(--tct-calendar-day-hover-font-color, var(--t-calendar-day-hover-font-color, inherit))}td[aria-hidden],td[aria-disabled]{pointer-events:none;cursor:not-allowed}td[aria-disabled]{opacity:var(--tct-calendar-day-disabled-opacity, var(--t-calendar-day-disabled-opacity, var(--app-disabled-opacity, 0.4)))}td[aria-selected]{border:var(--tct-calendar-day-selected-border, var(--t-calendar-day-selected-border, var(--tct-calendar-day-border, var(--t-calendar-day-border, 0))));border-radius:var(--tct-calendar-day-selected-border-radius, var(--t-calendar-day-selected-border-radius, var(--tct-calendar-day-border-radius, var(--t-calendar-day-border-radius))));background:var(--tct-calendar-day-selected-background, var(--tct-calendar-day-selected-bg, var(--t-calendar-day-selected-bg, var(--tct-calendar-day-hover-background, var(--tct-calendar-day-hover-bg, var(--t-calendar-day-hover-bg, var(--tct-gray-14, var(--t-gray-14, var(--tct-gray-l4, var(--app-gray-l4, #f2f2f2))))))))));color:var(--tct-calendar-day-selected-font-color, var(--t-calendar-day-selected-font-color, var(--tct-calendar-day-hover-font-color, var(--t-calendar-day-hover-font-color, inherit))));box-shadow:0 0 0 2px var(--tct-calendar-day-selected-outline-color, var(--t-calendar-day-selected-outline-color, var(--tct-stoplight-info, var(--const-stoplight-info, #0079c1))))}td[aria-selected]:focus{box-shadow:0 0 0 2px var(--tct-calendar-day-selected-outline-color, var(--t-calendar-day-selected-outline-color, var(--tct-stoplight-info, var(--const-stoplight-info, #0079c1)))), 0 0 0 4px var(--const-focus-color, #0066cc)}.today-decorator{text-transform:uppercase;font-weight:700;font-size:10px;height:12px}.calendar-disclaimer{font-size:var(--tct-calendar-disclaimer-font-size, var(--t-calendar-disclaimer-font-size, var(--tct-font-size-small, var(--app-font-size-small, 12px))));border-style:solid;border-width:var(--tct-calendar-disclaimer-border-width, var(--t-calendar-disclaimer-border-width, 1px 0 0 0));border-color:var(--tct-calendar-disclaimer-border-color, var(--t-calendar-disclaimer-border-color, var(--tct-gray-13, var(--t-gray-13, var(--tct-gray-l3, var(--app-gray-l3, #e6e6e6))))));padding:var(--tct-calendar-disclaimer-padding, var(--tct-scale-2, var(--app-scale-2x, 10px)));text-align:left}";const _=N;const J=class{constructor(i){e(this,i);this.change=t(this,"change",7);this.error=t(this,"error",7);this.success=t(this,"success",7);this.dayAbbrStrings=V();this.dayStrings=A();this.defaultFormatString="mm/dd/yyyy";this.formatModifier="M/D/YYYY";this.internalError="";this.monthStrings=C();this.scheduledAfterRender=[];this.closeCalendar=()=>{if(!this.open)return;this.open=false;this.focusInput()};this.goToMonthYear=(e,t)=>{if(e<0){e=11;t--}else if(e>11){e=0;t++}this.selectedMonthYear={monthIndex:e,selectedYear:t};this.dateList=this.buildDateList(this.selectedMonthYear);this.scheduledAfterRender.push((()=>this.checkActiveCellForBlankness()))};this.onClickElsewhere=e=>{const t=e.target;if(t.localName==="click-elsewhere"){e.stopPropagation();this.closeCalendar()}};this.onDateKeydown=e=>{const{monthIndex:t,selectedYear:i}=this.selectedMonthYear;const n=parseInt(e.target.dataset.day);const s=this.generateDateFromDay(n);switch(e.key){case"ArrowUp":e.preventDefault();this.activateDay(a.addDays(s,-7));break;case"ArrowDown":e.preventDefault();this.activateDay(a.addDays(s,7));break;case"ArrowRight":e.preventDefault();this.activateDay(a.addDays(s,1));break;case"ArrowLeft":e.preventDefault();this.activateDay(a.addDays(s,-1));break;case"PageUp":e.preventDefault();if(e.shiftKey)this.goToMonthYear(t,i-1);else this.goToMonthYear(t-1,i);break;case"PageDown":e.preventDefault();if(e.shiftKey)this.goToMonthYear(t,i+1);else this.goToMonthYear(t+1,i);break;case"Home":e.preventDefault();this.activateDay(a.addDays(s,-s.getDay()));break;case"End":e.preventDefault();this.activateDay(a.addDays(s,6-s.getDay()));break;case"Escape":e.preventDefault();this.closeCalendar();this.focusInput();break;case"Enter":e.preventDefault();if(!this.dateList.find((({date:e})=>a.isSameDay(e,s))).isValid)return;this.selectDate(s);this.closeCalendar();this.focusInput();break;case" ":e.preventDefault();if(!this.dateList.find((({date:e})=>a.isSameDay(e,s))).isValid)return;this.selectDate(s);this.closeCalendar();this.focusInput();break}};this.onDateSelection=e=>{const t=e.target.closest("td:not([aria-hidden])");if(!t)return;const i=w(new Date(t.dataset.date));this.selectDate(i);this.closeCalendar()};this.onHeaderControlKeydown=e=>{var t;const i=this.generateDateFromDay(1);const n=(t=this.calendarBody)===null||t===void 0?void 0:t.querySelector('[aria-selected="true"]');if(e.key==="Tab"&&!n){e.preventDefault();this.activateDay(i)}};this.onInputBlur=()=>{if(!this.isTypeable)return;const e=q(this.daysOfWeekChecksum);const{typedValue:t}=this;const{isValid:i,inputDate:n,isAvailable:s}=k(this.typedValue,e,this.validDates,this.invalidDates,this.startDate,this.endDate,this.defaultFormatString,this.assume);if(!t&&(n===null||n===void 0?void 0:n.toString())==="Invalid Date"){this.setHints({isValid:true,message:this.defaultHintMessage,messageType:"info"})}else if(i||t&&t.length>4&&n&&a.isValid(n)&&s){this.setCompleteInput(n)}else if(this.value){this.valueOnBlur=this.value;this.value=null;this.change.emit({value:null});this.typedValue=t}};this.onInputChange=e=>{e.stopPropagation()};this.onInputClick=()=>{if(this.disabled)return;this.toggleCalendar()};this.onInputFocus=e=>{if(!this.isTypeable)return;if(e.target===this.controlElement){if(this.valueOnBlur&&!this.value){const e=this.typedValue;this.value=this.valueOnBlur;this.typedValue=e;this.valueOnBlur=null}this.closeCalendar()}};this.onInputInput=({detail:{value:e}})=>{this.typedValue=e};this.onInputKeydown=e=>{const{dateValue:t}=this;switch(e.key){case"ArrowDown":e.preventDefault();this.openCalendar();this.activateDay(t||new Date);break;case"Enter":case" ":if(this.typeable)break;e.preventDefault();if(this.open){this.closeCalendar()}else{this.openCalendar();this.activateDay(t||new Date)}break}};this.onInputKeyup=e=>{if(this.disabled){return}switch(e.key){case"Escape":this.onInputBlur();this.closeCalendar();break}if(!this.isTypeable)return;this.typedValue=T(this.typedValue);const{typedValue:t}=this;const i=q(this.daysOfWeekChecksum);const{isValid:n,message:s,messageType:r,inputDate:d,isAvailable:o,calendarPosition:l}=k(t,i,this.validDates,this.invalidDates,this.startDate,this.endDate,this.defaultFormatString,this.assume);if(l){const[e,t,i]=l;const n=new Date(i,e-1,t);if(a.isValid(n)){this.selectedMonthYear=x(n);this.dateList=this.buildDateList(this.selectedMonthYear);this.validateDate()}}if(e.key==="Enter"){if(n||t&&t.length>4&&d&&a.isValid(d)&&o){this.setCompleteInput(d)}else if(this.value){this.value=null;this.change.emit({value:null});this.typedValue=t}if(this.keyboardSelection){this.keyboardSelection=false;this.closeCalendar()}else{this.toggleCalendar()}}else{this.setHints({isValid:n,message:s,messageType:r})}};this.onPopupKeyup=e=>{if(e.key==="Escape"||e.key==="Esc"){this.onInputBlur();this.closeCalendar()}};this.onRefocus=()=>{var e;(e=this.btnPrevMonth)===null||e===void 0?void 0:e.dispatchEvent(new FocusEvent("focus"))};this.openCalendar=()=>{if(this.readonly||this.open)return;this.selectedMonthYear=x(this.dateValue);this.dateList=this.buildDateList(this.selectedMonthYear);this.open=true};this.selectDate=e=>{const{isValid:t}=this.dateList.find((({date:t})=>a.isSameDay(t,e)));if(!t)return;this.change.emit({value:h(e)});this.typedValue=f(e);this.invalid=false;this.success.emit({value:h(e)})};this.toggleCalendar=()=>{if(this.readonly)return;if(this.open){this.closeCalendar()}else{this.openCalendar()}};this.dateList=undefined;this.hintMessage=this.defaultHintMessage;this.hintMessageType="info";this.keyboardSelection=false;this.typedValue="";this.ariaLabel=undefined;this.assume="current";this.buttonLabel=undefined;this.calendarLabel=undefined;this.clearable=undefined;this.cutoffTime=undefined;this.daysOfWeekChecksum=undefined;this.disabled=undefined;this.disabledMsg=undefined;this.disclaimer=undefined;this.displayFormat=undefined;this.endDate=undefined;this.errors=undefined;this.hideLabel=undefined;this.hints=undefined;this.invalid=undefined;this.invalidDates=undefined;this.label=undefined;this.onsuccess=undefined;this.open=undefined;this.optional=undefined;this.placeholder=undefined;this.popDirection=undefined;this.popoverAlignment=undefined;this.popoverDirection=undefined;this.popoverMinHeight=355;this.popoverMode=null;this.readonly=undefined;this.startDate=undefined;this.typeable=undefined;this.validDates=undefined;this.value=undefined}connectedCallback(){this.selectedMonthYear=x(this.dateValue);this.dateList=this.buildDateList(this.selectedMonthYear);if(this.value&&this.isTypeable&&!this.typedValue){this.typedValue=E(this.value)}this.validateDate()}componentWillLoad(){this.popDirectionHandler();r(this)}componentDidLoad(){d(this.hostElement)}componentDidRender(){setTimeout((()=>{this.scheduledAfterRender.forEach((e=>e()));this.scheduledAfterRender=[]}),25)}defaultChangeHandler(e){if(e.target===this.hostElement&&!this.hostElement.onchange&&!!e.detail){this.value=e.detail.value}}handleClear(){this.change.emit({value:null});this.value=null;this.typedValue=""}defaultErrorHandler(e){if(e.target===this.hostElement&&!this.hostElement.onerror){if(this.hintMessageType==="error"&&this.hintMessage){this.internalError=this.hintMessage}else{this.internalError=s("tecton.element.calendar.hint.invalidDate")}}}delegateFocus(e){if(!o(e,this.hostElement))return;this.controlElement.shadowRoot.querySelector(".input-field").focus()}popoverStateHandler({detail:{open:e}}){if(this.open!==e)this.open=e}defaultSuccessHandler(e){if(e.target!==this.hostElement){return}if(typeof this.onsuccess==="function"){this.onsuccess(e)}else{this.internalError="";if(this.hintMessageType==="error"&&this.hintMessage){this.hintMessage=null;this.hintMessageType=null;this.invalid=false}}}async closePopover(){if(!this.open)return;this._togglePopover()}async openPopover(){if(this.open)return;this._togglePopover()}async setValue(e){var t;const i=typeof e==="string"?g(e):e;if(!a.isValid(i))return;await this.openPopover();await l();this.goToMonthYear(i.getMonth(),i.getFullYear());await l();const n=(t=this.calendarTable)===null||t===void 0?void 0:t.querySelector(`td[data-date="${h(i)}"]`);n===null||n===void 0?void 0:n.click()}async typeValue(e){if(!this.typeable)return;const t=typeof e==="string"?g(e):e;const i=f(t);if(!a.isValid(t))return;const{innerInputField:n,controlElement:s}=this;n.focus();n.dispatchEvent(new FocusEvent("focus"));n.value=i;n.dispatchEvent(new InputEvent("input"));s.dispatchEvent(new KeyboardEvent("keyup"))}ariaLabelObserver(){r(this)}cutoffTimeObserver(){this.dateList=this.buildDateList(this.selectedMonthYear);this.validateDate()}daysOfWeekChecksumObserver(){this.dateList=this.buildDateList(this.selectedMonthYear);this.validateDate()}endDateObserver(){this.dateList=this.buildDateList(this.selectedMonthYear);this.validateDate()}invalidDatesObserver(){this.dateList=this.buildDateList(this.selectedMonthYear);this.validateDate()}popDirectionHandler(){c(this,"popDirection","popoverDirection")}startDateObserver(){this.dateList=this.buildDateList(this.selectedMonthYear);this.validateDate()}typeableChanged(){this.valueObserver(this.value)}validDatesObserver(){this.dateList=this.buildDateList(this.selectedMonthYear);this.validateDate()}valueObserver(e){if(e===""){this.value=undefined;this.setHints({isValid:true,message:this.defaultHintMessage,messageType:"info"});return}const t=e&&typeof e!=="string"&&"toDate"in e;const i=t?e.toDate():g(e);const n=f(i);if(this.isTypeable){this.typedValue=n}else{this.controlElement.value=n;this.selectedMonthYear=x(i);this.dateList=this.buildDateList(this.selectedMonthYear);this.validateDate()}if(this.invalid)return;if(n){this.setHints({isValid:true,message:null,messageType:null})}else{this.setHints({isValid:true,message:this.defaultHintMessage,messageType:"info"})}}get canClear(){if(this.isTypeable){return this.clearable&&!!this.typedValue}else{return this.clearable&&!!this.value}}get computedPlaceholder(){if(this.disabled&&this.disabledMsg){return s(this.disabledMsg)}if(this.buttonLabel&&(this.disabled||this.placeholder)){return s(this.buttonLabel)}return this.placeholder&&s(this.placeholder)||""}get currentWeeks(){const e=this.dateList.reduce(((e,t,i)=>{const n=Math.floor(i/7);if(!e[n]){e[n]=[]}e[n].push(t);return e}),[]);return e}get dateValidators(){const e=new Date(this.cutoffTime||"");return{startDate:g(this.startDate),endDate:g(this.endDate),cutOffTime:a.isValid(e)?e:undefined}}get dateValue(){if(this.isTypeable){return g(this.typedValue)}else{let{value:e}=this;const t=e&&typeof e!=="string"&&"toDate"in e;if(t)return e.toDate();const i=typeof e==="string"&&e.split(" ").length===6&&/GMT-\d{4}/g.test(e);if(i){e=h(e)}return g(e)}}get defaultHintMessage(){return this.typeable?s("tecton.element.calendar.hint.format")+": "+this.defaultFormatString:s("tecton.element.calendar.hint.select")}get errorList(){const{errors:e,internalError:t,invalid:i}=this;let n=[];if(t){n=[t]}if(Array.isArray(e)&&e.length){n=e.filter((e=>!!e)).map((e=>s(e))).concat(n)}else if(!t&&i){return["tecton.element.calendar.invalid"]}return n}get formattedValue(){const{typedValue:e,dateValue:t,displayFormat:i,isTypeable:n}=this;if(n)return e;if(t===undefined)return"";if(i)return a.format(t,m(i));return new Intl.DateTimeFormat("en-US",{year:"numeric",month:"2-digit",day:"2-digit",timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone}).format(t)}get hintList(){const{hints:e,hintMessageType:t,hintMessage:i}=this;if(Array.isArray(e)&&e.length)return e.filter((e=>!!e)).map((e=>s(e)));if(t==="info"&&i)return[i];return[]}get innerInputContainer(){var e,t;return(t=(e=this.controlElement)===null||e===void 0?void 0:e.shadowRoot)===null||t===void 0?void 0:t.querySelector(".input-container")}get innerInputField(){var e,t;return(t=(e=this.controlElement)===null||e===void 0?void 0:e.shadowRoot)===null||t===void 0?void 0:t.querySelector(".input-field")}get isTypeable(){return this.typeable}get selectedDate(){var e;const t=(e=this.calendarBody)===null||e===void 0?void 0:e.querySelector('[aria-selected="true"]');return t?w(new Date(t.dataset.date)):null}_togglePopover(){const e=this.typeable?this.btnCalendarToggle:this.innerInputField;e===null||e===void 0?void 0:e.click();e===null||e===void 0?void 0:e.focus();e.dispatchEvent(new FocusEvent("focus"))}activateDay(e){this.goToMonthYear(e.getMonth(),e.getFullYear());this.scheduledAfterRender.push((()=>this.focusDay(e)))}buildDateList(e){const t=D(this.invalidDates);const i=q(this.daysOfWeekChecksum);const n=D(this.validDates);return M(i,n,t,e,this.dateValue,this.dateValidators,this.typedValue)}calendarDays(){return i("table",{role:"grid","aria-labelledby":"table-label",ref:e=>this.calendarTable=e},i("thead",null,i("tr",null,[...Array(7).keys()].map((e=>i("th",{scope:"col","aria-label":this.dayStrings[e]},this.dayAbbrStrings[e]))))),i("tbody",{onClick:this.onDateSelection,onKeyDown:this.onDateKeydown,ref:e=>this.calendarBody=e,"test-id":"calendarTableBody"},this.currentWeeks.map((e=>i("tr",null,e.map((e=>{var t;let n="";if(e.isToday)n=`${s("tecton.element.calendar.today")}, `;n+=y(e.date);if(e.isSelected)n+=` (${s("tecton.element.calendar.selected")})`;return i("td",{class:e.classList,"aria-hidden":e.isEmpty?"true":undefined,tabindex:e.isSelected?0:-1,role:e.isSelected?"gridcell":undefined,"aria-selected":e.isSelected?"true":undefined,"aria-disabled":e.isValid?undefined:"true","data-day":e.integer||undefined,"data-date":e.date?h(e.date):undefined},(e===null||e===void 0?void 0:e.isToday)&&i("div",{class:"today-decorator","aria-hidden":"true"},s("tecton.element.calendar.today")),i("div",{"aria-label":n},(t=e===null||e===void 0?void 0:e.integer)!==null&&t!==void 0?t:""))})))))))}calendarPopover(){const{monthIndex:e,selectedYear:t}=this.selectedMonthYear;return i("div",{class:"calendar-field-popup",onKeyUp:this.onPopupKeyup},this.calendarLabel&&i("p",{class:"calendar-label"},s(this.calendarLabel)),i("div",{class:"cal-month-heading"},i("q2-btn",{label:s("tecton.element.calendar.previousMonth"),"hide-label":true,ref:e=>this.btnPrevMonth=e,class:"cal-nav-btn prev-month","test-id":"previousMonthButton",onClick:()=>this.goToMonthYear(e-1,t)},i("q2-icon",{type:"chevron-left"})),i("span",{class:"cal-month-text"},this.monthStrings[e]),i("q2-btn",{label:s("tecton.element.calendar.nextMonth"),"hide-label":true,class:"cal-nav-btn next-month",ref:e=>this.btnNextMonth=e,"test-id":"nextMonthButton",onClick:()=>this.goToMonthYear(e+1,t)},i("q2-icon",{type:"chevron-right"})),i("q2-btn",{label:s("tecton.element.calendar.previousYear"),"hide-label":true,class:"cal-nav-btn prev-year",ref:e=>this.btnPrevYear=e,"test-id":"previousYearButton",onClick:()=>this.goToMonthYear(e,t-1)},i("q2-icon",{type:"chevron-left"})),i("span",{class:"cal-year-text"},this.selectedMonthYear.selectedYear),i("q2-btn",{label:s("tecton.element.calendar.nextYear"),"hide-label":true,class:"cal-nav-btn next-year",ref:e=>this.btnNextYear=e,"test-id":"nextYearButton",onClick:()=>this.goToMonthYear(e,t+1),onKeyDown:this.onHeaderControlKeydown},i("q2-icon",{type:"chevron-right"}))),i("div",{class:"sr","aria-live":"polite",id:"table-label"},`${this.monthStrings[e]} ${t}`),this.calendarDays(),this.disclaimer&&i("div",{class:"calendar-disclaimer"},s(this.disclaimer)),i("q2-btn",{class:"sr refocus-popup",onFocus:this.onRefocus}))}checkActiveCellForBlankness(){const e=this.hostElement.shadowRoot.activeElement;if(!e||e.tagName!=="TD"||!e.hasAttribute("aria-hidden"))return;const{calendarBody:t}=this;const i=Array.from(t.querySelectorAll("td"));const n=Array.from(i).indexOf(e);const a=n<15?1:i.filter((e=>!e.hasAttribute("aria-hidden"))).length;this.focusDay(this.generateDateFromDay(a))}async focusDay(e){var t;if(!e)return;await l();(t=this.calendarBody.querySelector(`td[data-day="${e.getDate()}"]`))===null||t===void 0?void 0:t.focus()}focusInput(){var e;(e=this.controlElement)===null||e===void 0?void 0:e.focus()}generateDateFromDay(e){const{monthIndex:t,selectedYear:i}=this.selectedMonthYear;return new Date(i,t,e)}hintField(){if(!this.hintMessage)return;return i("q2-message",{class:"calendar-hint sr",ref:e=>this.hintMessageElement=e,type:this.hintMessageType},this.hintMessage)}inputField(){const{isTypeable:e}=this;return i("q2-input",{ref:e=>this.controlElement=e,class:"calendar-input-field",value:this.formattedValue,label:s(this.label),hideLabel:this.hideLabel,disabled:!!this.disabled,readonly:!!this.readonly,clearable:this.canClear,placeholder:this.computedPlaceholder,optional:!!this.optional,ariaExpanded:`${!!this.open}`,hints:this.hintList,errors:this.errorList,onClick:e?undefined:this.onInputClick,onChange:this.onInputChange,onInput:this.onInputInput,onKeyDown:this.onInputKeydown,onKeyUp:this.onInputKeyup,onBlur:this.onInputBlur,onFocus:this.onInputFocus,"icon-right":e?undefined:"calendar","format-modifier":e?this.formatModifier:this.displayFormat||this.formatModifier,type:"date","hide-messages":!e,"test-id":"inputAndCalendarToggle",_role:"combobox",_preventEntry:!e},e&&i("q2-btn",{ref:e=>this.btnCalendarToggle=e,slot:"input-right",onClick:this.onInputClick,"test-id":"calendarToggle",label:"tecton.element.calendar.toggleAriaLabel","hide-label":true},i("q2-icon",{type:"calendar"})))}setCompleteInput(e){const t=f(e);this.change.emit({value:h(e)});this.typedValue=t;this.internalError=null;this.setHints({isValid:true,message:null,messageType:null})}setHints({isValid:e,message:t,messageType:i}){var n;if(t===this.hintMessage)return(n=this.hintMessageElement)===null||n===void 0?void 0:n.present();this.invalid=!e;this.hintMessage=t;this.hintMessageType=i;if(i==="error"&&t){this.internalError=t;this.error.emit({errors:[{message:t,errorCode:"generalInvalid"}]})}}validateDate(){var e,t,i;try{if(!!this.value){const{dateValue:n}=this;const a=(e=n===null||n===void 0?void 0:n.getMonth())!==null&&e!==void 0?e:undefined;const s=(t=n===null||n===void 0?void 0:n.getFullYear())!==null&&t!==void 0?t:undefined;const{monthIndex:r,selectedYear:d}=this.selectedMonthYear;const o=a===r&&s===d;let l=[];if(!n){l=[]}else if(o){l=this.dateList}else{l=this.buildDateList({monthIndex:a,selectedYear:s})}const c=(i=n===null||n===void 0?void 0:n.getDate())!==null&&i!==void 0?i:undefined;const u=c?!l.find((({integer:e})=>e===c)).isValid:true;if(u){this.error.emit({errors:[{message:`Value passed is invalid: The date ${this.value} is not valid`,errorCode:"generalInvalid"}]})}else{this.success.emit({value:h(n)})}}}catch(e){console.warn("Invalid moment value ",this.dateValue)}}render(){return i("click-elsewhere",{key:"8d3332cbdb66fe4255d57d2b0e02e8a8a9d1ad75",class:this.open?"dropdown-open":undefined,onChange:this.onClickElsewhere},this.inputField(),i("q2-popover",{key:"4ae9a6156dd618bd0106920f4aaf48549e00ddec",ref:e=>this.popoverElement=e,controlElement:this.innerInputContainer,open:this.open,direction:this.popoverDirection,minHeight:this.popoverMinHeight,align:this.popoverAlignment,mode:this.popoverMode||undefined,block:true},this.hintField(),this.calendarPopover()))}get hostElement(){return n(this)}static get watchers(){return{ariaLabel:["ariaLabelObserver"],cutoffTime:["cutoffTimeObserver"],daysOfWeekChecksum:["daysOfWeekChecksumObserver"],endDate:["endDateObserver"],invalidDates:["invalidDatesObserver"],popDirection:["popDirectionHandler"],startDate:["startDateObserver"],typeable:["typeableChanged"],validDates:["validDatesObserver"],value:["valueObserver"]}}};J.style=_;export{J as q2_calendar};
|
|
2
|
-
//# sourceMappingURL=p-4da4cb5d.entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["formatDateISO","value","date","Date","isValidDate","formatISO","representation","memoizedFormatDateShort","formatDateShort","isoDate","toISOString","Intl","DateTimeFormat","month","day","year","timeZone","resolvedOptions","format","memoizedFormatDateLong","formatDateLong","memoizedFormatDateFull","formatDateFull","weekday","convertMomentFormat","stringFormat","replace","stringToDate","isString","undefined","result","dateParts","split","map","part","padStart","isIsoString","length","isCompleteDate","isPartialDate","isStandardSlashDate","includes","unshift","pop","UTC","parseInt","now","yearNumber","monthNumber","dayNumber","getFullYear","removeTimezoneOffset","timeZoneOffset","getTimezoneOffset","setMinutes","Math","abs","stringArrayToDate","dateArray","Array","isArray","setupMonthYear","monthIndex","getMonth","selectedYear","validateInput","input","validDays","validDates","invalidDates","startDate","endDate","formatString","assume","isValid","isAvailable","messageType","message","loc","inputDate","buildInputDate","getDate","calendarPosition","monthName","getMonths","getDay","isoString","isNotValidDate","isInvalidDate","isBeforeStartDate","isAfterEndDate","isInvalid","Number","twoDigitDay","fourDigitYear","assumeYear","monthDay","mm","dd","nowLocal","assumedYear","slice","toString","handleMissingZeros","match","sp","reorderDateString","firstDayOfWeekInMonth","getDays","getDaysOfWeek","generateDatesFromMonthYear","daysInMonth","getDaysInMonth","keys","reduce","acc","stepIndex","push","getValidDaysOfWeek","checksum","sunValid","monValid","tuesValid","wedsValid","thursValid","friValid","satValid","ret","validateAgainstChecksum","validDaysOfWeek","newDate","validateAgainstBlacklist","validateAgainstWhitelist","some","validDate","isSameDay","buildDates","selectedMonthYear","currentSelection","dateValidators","typedValue","validationFns","baseValidation","bind","generateDateList","isIncompleteDate","datesInMonth","dayInMonth","dateIndex","fn","dayState","getDayState","classList","generateClassesForCalDay","Object","assign","integer","isEmpty","isActivity","startOfMonthEmpties","addEmptiesMonthStart","endOfMonthEmpties","addEmptiesMonthEnd","isNewDateBeforeStartDate","isAfter","isNewDateAfterEndDate","isBefore","isNowAfterCutoffTime","cutOffTime","currentDate","isSelected","isToday","isStartDate","isEndDate","classes","join","monthStartDayOfWeek","addEmptyDates","monthEndDayOfWeek","emptyDate","from","to","q2CalendarCss","Q2CalendarStyle0","Q2Calendar","this","dayAbbrStrings","dayStrings","defaultFormatString","formatModifier","internalError","monthStrings","scheduledAfterRender","closeCalendar","open","focusInput","goToMonthYear","dateList","buildDateList","checkActiveCellForBlankness","onClickElsewhere","event","target","localName","stopPropagation","onDateKeydown","currentDay","dataset","generateDateFromDay","key","preventDefault","activateDay","addDays","shiftKey","find","selectDate","onDateSelection","dateCell","closest","clickedDate","onHeaderControlKeydown","hasSelectedCell","_a","calendarBody","querySelector","onInputBlur","isTypeable","daysOfWeekChecksum","setHints","defaultHintMessage","setCompleteInput","valueOnBlur","change","emit","onInputChange","onInputClick","disabled","toggleCalendar","onInputFocus","controlElement","tmpTypedValue","onInputInput","detail","onInputKeydown","dateValue","openCalendar","typeable","onInputKeyup","yyyy","validateDate","keyboardSelection","onPopupKeyup","onRefocus","btnPrevMonth","dispatchEvent","FocusEvent","readonly","invalid","success","connectedCallback","componentWillLoad","popDirectionHandler","handleAriaLabel","componentDidLoad","overrideFocus","hostElement","componentDidRender","setTimeout","forEach","defaultChangeHandler","onchange","handleClear","defaultErrorHandler","onerror","hintMessageType","hintMessage","delegateFocus","isEventFromElement","shadowRoot","focus","popoverStateHandler","defaultSuccessHandler","onsuccess","closePopover","_togglePopover","openPopover","setValue","waitForNextPaint","tableCell","calendarTable","click","typeValue","formattedDate","innerInputField","InputEvent","KeyboardEvent","ariaLabelObserver","cutoffTimeObserver","daysOfWeekChecksumObserver","endDateObserver","invalidDatesObserver","handleRenamedProp","startDateObserver","typeableChanged","valueObserver","validDatesObserver","newValue","isMoment","toDate","shortFormattedValue","canClear","clearable","computedPlaceholder","disabledMsg","buttonLabel","placeholder","currentWeeks","weeks","accum","item","index","chunkIndex","floor","ct","cutoffTime","isMomentString","test","errorList","errors","list","filter","error","concat","formattedValue","displayFormat","hintList","hints","hint","innerInputContainer","_b","selectedDate","selectedCell","toggleElement","btnCalendarToggle","focusDay","monthYear","calendarDays","h","role","ref","scope","onClick","onKeyDown","elm","week","ariaLabel","class","tabindex","calendarPopover","onKeyUp","calendarLabel","label","type","btnNextMonth","btnPrevYear","btnNextYear","id","disclaimer","onFocus","activeElement","tagName","hasAttribute","calendarCells","querySelectorAll","indexOfCell","indexOf","dayToFocus","cell","hintField","el","hintMessageElement","inputField","hideLabel","optional","ariaExpanded","onChange","onInput","onBlur","_role","_preventEntry","slot","present","errorCode","isSelectedMonthAndYear","calculationDateList","dateValueDayOfMonth","_c","isDateValueInvalid","console","warn","render","popoverElement","direction","popoverDirection","minHeight","popoverMinHeight","align","popoverAlignment","mode","popoverMode","block"],"sources":["src/components/q2-calendar/q2-calendar-helpers.ts","src/components/q2-calendar/q2-calendar-validation.ts","src/components/q2-calendar/q2-calendar.scss?tag=q2-calendar&encapsulation=shadow","src/components/q2-calendar/q2-calendar.tsx"],"sourcesContent":["import { isValid as isValidDate, formatISO, setMinutes } from 'date-fns';\nimport { loc } from '../../utils';\nimport { ISelectedMonthYear, InputValidation } from './q2-calendar-types';\n\nexport interface IMomentLikeObject {\n toDate(): Date;\n}\n\nexport function formatDateISO(value: string | Date) {\n const date = new Date(value);\n if (!isValidDate(date)) return;\n\n return formatISO(date, { representation: 'date' });\n}\n\nlet memoizedFormatDateShort: Intl.DateTimeFormat;\nexport function formatDateShort(value: string | Date) {\n const date = new Date(value);\n if (!isValidDate(date)) return;\n\n const isoDate = date.toISOString();\n if (!memoizedFormatDateShort) {\n memoizedFormatDateShort = new Intl.DateTimeFormat('en-US', {\n month: '2-digit',\n day: '2-digit',\n year: 'numeric',\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n });\n }\n\n return memoizedFormatDateShort.format(new Date(isoDate));\n}\n\nlet memoizedFormatDateLong: Intl.DateTimeFormat;\nexport function formatDateLong(value: string | Date) {\n const date = new Date(value);\n if (!isValidDate(date)) return;\n if (!memoizedFormatDateLong) {\n memoizedFormatDateLong = new Intl.DateTimeFormat('en-US', {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n });\n }\n\n return memoizedFormatDateLong.format(date);\n}\n\nlet memoizedFormatDateFull: Intl.DateTimeFormat;\nexport function formatDateFull(value: string | Date) {\n if (!value) return;\n const date = new Date(value);\n if (!isValidDate(date)) return;\n if (!memoizedFormatDateFull) {\n memoizedFormatDateFull = new Intl.DateTimeFormat('en-US', {\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n weekday: 'long',\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n });\n }\n\n return memoizedFormatDateFull.format(date);\n}\n\nexport function convertMomentFormat(stringFormat: string) {\n return stringFormat\n .replace(/[d]/g, 'E')\n .replace(/[D]/g, 'd')\n .replace(/[Y]/g, 'y')\n .replace(/[l]/g, 'P')\n .replace(/[W]/g, 'I');\n}\n\nexport function stringToDate(date: string | null | void): Date | undefined {\n const isString = typeof date === 'string';\n if (!isString && date && isValidDate(new Date(date || undefined))) {\n date = formatDateISO(date);\n } else if (!date || !isValidDate(new Date(date))) {\n return undefined;\n }\n\n let result: Date;\n const dateParts = date.split(/[\\/\\-]/).map(part => part.padStart(2, '0'));\n const isIsoString = isString && date.length >= 24 && date[10] === 'T';\n const isCompleteDate = dateParts.length === 3;\n const isPartialDate = dateParts.length < 3;\n if (isIsoString) {\n date = date.split('T')[0];\n result = new Date(date);\n } else if (isCompleteDate) {\n const isStandardSlashDate = date.includes('/') && dateParts[2].length === 4;\n\n // Reorder mm/dd/yyyy dates for ISO formatting\n // [mm, dd, yyyy] -> [yyyy, mm, dd]\n if (isStandardSlashDate) dateParts.unshift(dateParts.pop());\n\n result = new Date(Date.UTC(parseInt(dateParts[0]), parseInt(dateParts[1]) - 1, parseInt(dateParts[2])));\n } else if (isPartialDate) {\n const now = new Date();\n\n let yearNumber: number;\n let monthNumber: string;\n let dayNumber: string;\n switch (dateParts.length) {\n case 1:\n yearNumber = now.getFullYear();\n monthNumber = dateParts[0];\n dayNumber = '01';\n break;\n\n case 2:\n yearNumber = now.getFullYear();\n monthNumber = dateParts[0];\n dayNumber = dateParts[1];\n break;\n }\n\n result = new Date(`${yearNumber}-${monthNumber}-${dayNumber}`);\n }\n\n if (!isValidDate(result)) return undefined;\n\n // result = setHours(result, 0);\n result = removeTimezoneOffset(result);\n\n return isValidDate(result) ? result : undefined;\n}\n\nexport function removeTimezoneOffset(date: Date) {\n const timeZoneOffset = date.getTimezoneOffset();\n // Minutes compensation for some timezones like India, Central Australia and etc use GMT+5:30, GMT+9:30\n return setMinutes(date, timeZoneOffset + Math.abs(timeZoneOffset % 60));\n}\n\nexport function stringArrayToDate(dateArray: string[]): Date[] {\n if (!Array.isArray(dateArray) || dateArray.length === 0) {\n return [];\n }\n return dateArray.map(date => stringToDate(date));\n}\n\nexport function setupMonthYear(value: Date | undefined = new Date()): ISelectedMonthYear {\n return {\n monthIndex: value.getMonth(),\n selectedYear: value.getFullYear(),\n };\n}\n\nexport function validateInput(\n input: string = '',\n validDays: number[] = [],\n validDates: string[] = [], // white list\n invalidDates: string[] = [], // black list\n startDate: string,\n endDate: string,\n formatString: string = 'mm/dd/yyyy',\n assume: string\n): InputValidation {\n let isValid: boolean = true;\n let isAvailable: boolean = false;\n let messageType: string = 'info';\n let message: string = `${loc('tecton.element.calendar.hint.format')}: ${formatString}`;\n if (!input) {\n return { isValid, inputDate: new Date(''), isAvailable, messageType, message };\n }\n\n const inputDate = buildInputDate(input, assume);\n const month = inputDate.getMonth() + 1;\n const date = inputDate.getDate();\n const year = inputDate.getFullYear();\n const calendarPosition = [month, date, year];\n\n if (isValidDate(inputDate)) {\n const monthName = getMonths()[inputDate.getMonth()];\n\n if (input.length === 10) {\n isValid = true;\n messageType = null;\n message = null;\n }\n\n isAvailable = validDays.includes(inputDate.getDay());\n const isoString = formatDateISO(inputDate);\n\n if (isAvailable) {\n const isNotValidDate = validDates.length && !validDates.includes(isoString);\n const isInvalidDate = invalidDates.length && invalidDates.includes(isoString);\n const isBeforeStartDate = startDate && startDate > isoString;\n const isAfterEndDate = endDate && endDate < isoString;\n\n if (isNotValidDate || isInvalidDate || isBeforeStartDate || isAfterEndDate) {\n isAvailable = false;\n }\n }\n\n if (input.length >= 5 && !isAvailable) {\n isValid = false;\n messageType = 'error';\n const isInvalid = !monthName || !date || !year;\n message = isInvalid\n ? `${loc('tecton.element.calendar.hint.invalidDate')}: ${formatString}`\n : loc('tecton.element.calendar.hint.notAvailableDate', [formatDateLong(inputDate)]);\n }\n } else {\n isValid = false;\n messageType = 'error';\n message = `${loc('tecton.element.calendar.hint.invalidDate')}: ${formatString}`;\n }\n\n return {\n isValid,\n messageType,\n message,\n inputDate,\n isAvailable,\n calendarPosition,\n };\n}\n\nexport function buildInputDate(input: string, assume: string) {\n const now = new Date();\n // eslint-disable-next-line prefer-const\n let [month, day, year] = input.split('/');\n if (month === '0') month = '01';\n if (day === '0') day = '01';\n if (input.length === 10) {\n return new Date(input);\n } else if (month && day && Number(day) > 0) {\n const twoDigitDay = Number(day) < 10 ? `0${Number(day)}` : day;\n const fourDigitYear = !year || year.length < 4 ? assumeYear(month, day, assume) : year;\n return new Date(`${month}/${twoDigitDay}/${fourDigitYear}`);\n } else if (month) {\n return new Date(`${month}/01/${now.getFullYear()}`);\n }\n}\n\nfunction assumeYear(month: string, day: string, assume: string): string {\n const monthDay = `${month}/${day}`;\n const now = new Date();\n const mm: string = now.getMonth() < 9 ? `0${now.getMonth() + 1}` : `${now.getMonth() + 1}`;\n const dd: string = now.getDate() < 10 ? `0${now.getDate()}` : `${now.getDate()}`;\n const nowLocal = `${mm}/${dd}/${now.getFullYear()}`;\n let assumedYear = now.getFullYear();\n if (assume === 'future' && nowLocal.slice(0, 5) > monthDay) {\n assumedYear = now.getFullYear() + 1;\n } else if (assume === 'past' && nowLocal.slice(0, 5) < monthDay) {\n assumedYear = now.getFullYear() - 1;\n }\n return assumedYear.toString();\n}\n\nexport function handleMissingZeros(input): string {\n if (!input) {\n return '';\n }\n if (input.match(/^[1-9]\\/$/)) {\n return `0${input}/`;\n } else if (input.match(/^[0-9]{2}\\/[1-9]{1}\\/$/)) {\n const sp = input.split('/');\n return `${sp[0]}/0${sp[1]}/`;\n }\n return input;\n}\n\nexport function reorderDateString(input: string): string {\n const dateParts = (input || '').split('-');\n if (dateParts.length !== 3) return '';\n return `${dateParts[1]}/${dateParts[2]}/${dateParts[0]}`;\n}\n\nexport function firstDayOfWeekInMonth(month: number, year: number): number {\n return new Date(year, month, 1, 1, 1, 1, 1).getDay();\n}\n\nexport function getDays(): string[] {\n return [\n loc('tecton.element.calendar.days.short.Sunday'),\n loc('tecton.element.calendar.days.short.Monday'),\n loc('tecton.element.calendar.days.short.Tuesday'),\n loc('tecton.element.calendar.days.short.Wednesday'),\n loc('tecton.element.calendar.days.short.Thursday'),\n loc('tecton.element.calendar.days.short.Friday'),\n loc('tecton.element.calendar.days.short.Saturday'),\n ];\n}\n\nexport function getDaysOfWeek(): string[] {\n return [\n loc('tecton.element.calendar.days.Sunday'),\n loc('tecton.element.calendar.days.Monday'),\n loc('tecton.element.calendar.days.Tuesday'),\n loc('tecton.element.calendar.days.Wednesday'),\n loc('tecton.element.calendar.days.Thursday'),\n loc('tecton.element.calendar.days.Friday'),\n loc('tecton.element.calendar.days.Saturday'),\n ];\n}\n\nexport function getMonths(): string[] {\n return [\n loc('tecton.element.calendar.months.January'),\n loc('tecton.element.calendar.months.February'),\n loc('tecton.element.calendar.months.March'),\n loc('tecton.element.calendar.months.April'),\n loc('tecton.element.calendar.months.May'),\n loc('tecton.element.calendar.months.June'),\n loc('tecton.element.calendar.months.July'),\n loc('tecton.element.calendar.months.August'),\n loc('tecton.element.calendar.months.September'),\n loc('tecton.element.calendar.months.October'),\n loc('tecton.element.calendar.months.November'),\n loc('tecton.element.calendar.months.December'),\n ];\n}\n","import { firstDayOfWeekInMonth } from './q2-calendar-helpers';\nimport { getDaysInMonth, isSameDay, isBefore, isAfter, isValid as isValidDate } from 'date-fns';\nimport { CalendarDay, DateEmpty, Year, IDateValidators, ISelectedMonthYear } from './q2-calendar-types';\n\n// Validation Helpers\nexport type DateList = CalendarDay[];\nexport type IsValid = boolean;\nexport type IsActivityDate = boolean;\nexport type DateValidation = (date: Date) => IsValid;\n\nexport function generateDatesFromMonthYear(month: number, year: Year): Date[] {\n const daysInMonth = getDaysInMonth(new Date(year, month));\n\n return [...Array(daysInMonth).keys()].reduce((acc, stepIndex) => {\n acc.push(new Date(year, month, stepIndex + 1));\n return acc;\n }, []);\n}\n\nexport function getValidDaysOfWeek(checksum: number = 127): number[] {\n /* tslint:disable:no-bitwise */\n const sunValid = checksum & 1;\n const monValid = checksum & 2;\n const tuesValid = checksum & 4;\n const wedsValid = checksum & 8;\n const thursValid = checksum & 16;\n const friValid = checksum & 32;\n const satValid = checksum & 64;\n /* tslint:enable:no-bitwise */\n const ret = [];\n\n if (checksum <= 0) return ret;\n if (sunValid) ret.push(0);\n if (monValid) ret.push(1);\n if (tuesValid) ret.push(2);\n if (wedsValid) ret.push(3);\n if (thursValid) ret.push(4);\n if (friValid) ret.push(5);\n if (satValid) ret.push(6);\n\n return ret;\n}\n\nexport function validateAgainstChecksum(validDaysOfWeek: number[], newDate: Date): IsValid {\n return validDaysOfWeek.includes(newDate.getDay());\n}\n\nexport function validateAgainstBlacklist(invalidDates: Date[], newDate: Date): IsValid {\n return !validateAgainstWhitelist(invalidDates, newDate);\n}\n\nexport function validateAgainstWhitelist(validDates: Date[], newDate: Date): IsValid {\n return validDates.some(validDate => isSameDay(validDate, newDate));\n}\n\nexport function buildDates(\n validDaysOfWeek: number[],\n validDates: Date[],\n invalidDates: Date[],\n selectedMonthYear: ISelectedMonthYear,\n currentSelection: Date | undefined,\n dateValidators: IDateValidators,\n typedValue: string\n): DateList {\n const validationFns = [baseValidation.bind(null, dateValidators, new Date())];\n if (validDates?.length) {\n validationFns.push(validateAgainstWhitelist.bind(null, validDates));\n } else {\n validationFns.push(validateAgainstChecksum.bind(null, validDaysOfWeek));\n }\n validationFns.push(validateAgainstBlacklist.bind(null, invalidDates));\n\n return generateDateList(selectedMonthYear, currentSelection, dateValidators, validationFns, typedValue);\n}\n\nexport function generateDateList(\n { monthIndex, selectedYear }: ISelectedMonthYear,\n currentSelection: Date | undefined,\n dateValidators: IDateValidators,\n validationFns: DateValidation[],\n typedValue: string\n): DateList {\n const isIncompleteDate = !isValidDate(new Date(typedValue));\n const datesInMonth = generateDatesFromMonthYear(monthIndex, selectedYear).map((dayInMonth, dateIndex) => {\n const isInvalid = validationFns.some(fn => !fn(dayInMonth));\n const dayState = getDayState(dayInMonth, dateValidators, currentSelection);\n const classList = generateClassesForCalDay({\n ...dayState,\n isInvalid,\n isIncompleteDate,\n });\n\n return {\n ...dayState,\n isValid: !isInvalid,\n date: dayInMonth,\n integer: dateIndex + 1,\n isEmpty: false,\n isActivity: false,\n classList,\n };\n });\n\n const startOfMonthEmpties = addEmptiesMonthStart(firstDayOfWeekInMonth(monthIndex, selectedYear));\n const endOfMonthEmpties = addEmptiesMonthEnd((startOfMonthEmpties.length + datesInMonth.length) % 7);\n\n return [...startOfMonthEmpties, ...datesInMonth, ...endOfMonthEmpties] as CalendarDay[];\n}\n\nexport function baseValidation(dateValidators: IDateValidators, now: Date, newDate: Date): boolean {\n const isNewDateBeforeStartDate = isAfter(dateValidators?.startDate, newDate);\n const isNewDateAfterEndDate = isBefore(dateValidators?.endDate, newDate);\n const isNowAfterCutoffTime = isSameDay(now, newDate) && isAfter(now, dateValidators?.cutOffTime);\n\n return !(isNewDateBeforeStartDate || isNowAfterCutoffTime || isNewDateAfterEndDate);\n}\n\nexport function getDayState(dayInMonth: Date, dateValidators: IDateValidators, currentDate: Date | undefined) {\n if (!currentDate) currentDate = new Date();\n const isSelected = currentDate && isSameDay(currentDate, dayInMonth);\n const isToday = isSameDay(dayInMonth, new Date());\n const isStartDate = isSameDay(dayInMonth, dateValidators?.startDate);\n const isEndDate = isSameDay(dayInMonth, dateValidators?.endDate);\n\n return { isSelected, isToday, isStartDate, isEndDate };\n}\n\nexport function generateClassesForCalDay({\n isInvalid,\n isSelected,\n isEndDate,\n isStartDate,\n isToday,\n isIncompleteDate,\n}: {\n isInvalid: boolean;\n isSelected: boolean;\n isEndDate: boolean;\n isStartDate: boolean;\n isToday: boolean;\n isIncompleteDate: boolean;\n}): string {\n const classes = [];\n if (!isInvalid) classes.push('is-valid');\n if (isSelected) classes.push('is-selected');\n if (isEndDate) classes.push('is-end-date');\n if (isStartDate) classes.push('is-start-date');\n if (isToday) classes.push('is-today');\n if (isSelected && isInvalid && !isIncompleteDate) classes.push('is-unavailable');\n\n return classes.join(' ');\n}\n\nexport function addEmptiesMonthStart(monthStartDayOfWeek: number): DateEmpty[] {\n return addEmptyDates(0, monthStartDayOfWeek);\n}\n\nexport function addEmptiesMonthEnd(monthEndDayOfWeek: number): DateEmpty[] {\n if (monthEndDayOfWeek === 0) return [];\n return addEmptyDates(monthEndDayOfWeek, 7);\n}\n\nexport const emptyDate: DateEmpty = {\n date: null,\n integer: null,\n isActivity: false,\n isEmpty: true,\n isValid: false,\n isToday: false,\n isSelected: false,\n isStartDate: false,\n isEndDate: false,\n classList: '',\n};\n\nexport function addEmptyDates(from: number, to: number): DateEmpty[] {\n if (from === 7) from = 0;\n return [...Array(to - from).keys()].map(() => ({ ...emptyDate }) as DateEmpty);\n}\n","@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: block;\n}\n\n:host[hidden] {\n display: none;\n}\n\nclick-elsewhere {\n position: relative;\n display: block;\n}\n\nq2-input {\n margin: 0;\n cursor: pointer;\n}\n\nq2-popover {\n --comp-min-tappable-size: 44px;\n --comp-table-border-spacing: 2px;\n --comp-min-tappable-size-and-spacing: calc(var(--comp-min-tappable-size) + var(--comp-table-border-spacing));\n --comp-popover-padding: #{var-list(var-prefixer(calendar-popover-padding), --app-scale-1x, 5px)};\n --comp-min-table-width: calc(var(--comp-min-tappable-size-and-spacing) * 7);\n --comp-table-container-border-spacing: calc(var(--comp-table-border-spacing) * 2);\n --comp-popover-total-padding: calc(var(--comp-popover-padding) * 2);\n\n --tct-popover-min-width: calc(\n var(--comp-min-table-width) + var(--comp-table-container-border-spacing) + var(--comp-popover-total-padding)\n );\n}\n\n.calendar-field-popup {\n padding: var(--comp-popover-padding);\n}\n\n.calendar-label {\n --comp-label-padding: #{var-list(\n --tct-calendar-label-padding,\n unquote('#{var-list(var-prefixer(calendar-label-vertical-padding), --tct-scale-2, --app-scale-2x, 10px)} 0')\n )};\n font-size: var-list(var-prefixer(calendar-label-font-size), 16px);\n flex: 1 1;\n flex-basis: calc(100% - var-list(--tct-btn-icon-width, 44px));\n margin: 0;\n padding: var(--comp-label-padding);\n}\n\n.cal-month-heading {\n padding: 0 0 0.75rem;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: var-list(var-prefixer(calendar-month-font-size), 16px);\n font-weight: var-list(var-prefixer(calendar-month-font-weight), 600);\n text-align: center;\n}\n\n.cal-month-text {\n min-width: 82px;\n display: inline-block;\n}\n\n.cal-year-text {\n min-width: 50px;\n display: inline-block;\n}\n\ntable {\n width: 100%;\n margin-bottom: 2px;\n text-align: center;\n border-spacing: var(--comp-table-border-spacing);\n}\n\nth {\n font-size: var-list(var-prefixer(calendar-day-heading-font-size), inherit);\n font-weight: var-list(var-prefixer(calendar-day-heading-font-weight), 600);\n width: 14.285714%;\n}\n\ntd {\n height: var(--comp-min-tappable-size);\n cursor: pointer;\n border: var-list(var-prefixer(calendar-day-border), 0);\n border-radius: var-list(var-prefixer(calendar-day-border-radius));\n\n &.is-unavailable {\n border: 1px solid var-list(--tct-input-error-border-color, --const-stoplight-alert, #d20a0a);\n }\n\n &.is-valid:hover {\n border: var-list(var-prefixer(calendar-day-hover-border), var-prefixer(calendar-day-border) 0);\n border-radius: var-list(\n var-prefixer(calendar-day-hover-border-radius),\n var-prefixer(calendar-day-border-radius)\n );\n\n background: var-list(\n --tct-calendar-day-hover-background,\n var-prefixer(calendar-day-hover-bg),\n --tct-gray-14,\n --app-gray14,\n --tct-gray-l4,\n --app-gray-l4,\n #f2f2f2\n );\n color: var-list(var-prefixer(calendar-day-hover-font-color), inherit);\n }\n\n &[aria-hidden],\n &[aria-disabled] {\n pointer-events: none;\n cursor: not-allowed;\n }\n\n &[aria-disabled] {\n opacity: var-list(var-prefixer(calendar-day-disabled-opacity), --app-disabled-opacity, 0.4);\n }\n\n &[aria-selected] {\n border: var-list(var-prefixer(calendar-day-selected-border), var-prefixer(calendar-day-border) 0);\n border-radius: var-list(\n var-prefixer(calendar-day-selected-border-radius),\n var-prefixer(calendar-day-border-radius)\n );\n background: var-list(\n --tct-calendar-day-selected-background,\n var-prefixer(calendar-day-selected-bg),\n --tct-calendar-day-hover-background, \n var-prefixer(calendar-day-hover-bg),\n var-prefixer(gray-14),\n --tct-gray-l4,\n --app-gray-l4,\n #f2f2f2\n );\n color: var-list(\n var-prefixer(calendar-day-selected-font-color),\n var-prefixer(calendar-day-hover-font-color),\n inherit\n );\n box-shadow: 0 0 0 2px\n var-list(\n var-prefixer(calendar-day-selected-outline-color),\n --tct-stoplight-info,\n --const-stoplight-info,\n #0079c1\n );\n \n }\n &[aria-selected]:focus {\n box-shadow: 0 0 0 2px\n var-list(\n var-prefixer(calendar-day-selected-outline-color),\n --tct-stoplight-info,\n --const-stoplight-info,\n #0079c1\n ),\n 0 0 0 4px var(--const-focus-color, #0066cc)\n }\n}\n\n.today-decorator {\n text-transform: uppercase;\n font-weight: 700;\n font-size: 10px;\n height: 12px;\n}\n\n\n.calendar-disclaimer {\n font-size: var-list(\n var-prefixer(calendar-disclaimer-font-size),\n --tct-font-size-small,\n --app-font-size-small,\n 12px\n );\n border-style: solid;\n border-width: var-list(var-prefixer(calendar-disclaimer-border-width), unquote('1px 0 0 0'));\n border-color: var-list(\n var-prefixer(calendar-disclaimer-border-color),\n var-prefixer(gray-13),\n --tct-gray-l3,\n --app-gray-l3,\n #e6e6e6\n );\n padding: var-list(--tct-calendar-disclaimer-padding, --tct-scale-2, --app-scale-2x, 10px);\n text-align: left;\n}\n","import {\n Component,\n ComponentInterface,\n Prop,\n Element,\n State,\n Event,\n EventEmitter,\n Listen,\n Watch,\n Method,\n h,\n} from '@stencil/core';\nimport { ISelectedMonthYear, CalendarDay, IDateValidators } from './q2-calendar-types';\nimport { addDays, isSameDay, format, isValid as isValidDate } from 'date-fns';\nimport {\n stringToDate,\n setupMonthYear,\n getMonths,\n getDays,\n getDaysOfWeek,\n stringArrayToDate,\n convertMomentFormat,\n validateInput,\n handleMissingZeros,\n formatDateISO,\n formatDateShort,\n IMomentLikeObject,\n removeTimezoneOffset,\n reorderDateString,\n formatDateFull,\n} from './q2-calendar-helpers';\nimport { buildDates, getValidDaysOfWeek, DateList } from './q2-calendar-validation';\nimport {\n handleAriaLabel,\n loc,\n overrideFocus,\n isEventFromElement,\n handleRenamedProp,\n waitForNextPaint,\n} from '../../utils';\nimport { IEventDetail } from '../q2-input/q2-input-types';\nimport { Q2InputCustomEvent } from 'src/components';\n\n@Component({ tag: 'q2-calendar', shadow: true, styleUrl: 'q2-calendar.scss' })\nexport class Q2Calendar implements ComponentInterface {\n // #region Own Properties\n\n btnCalendarToggle: HTMLQ2BtnElement;\n btnNextMonth: HTMLQ2BtnElement;\n btnNextYear: HTMLQ2BtnElement;\n btnPrevMonth: HTMLQ2BtnElement;\n btnPrevYear: HTMLQ2BtnElement;\n calendarBody: HTMLDivElement;\n calendarTable: HTMLTableElement;\n controlElement: HTMLQ2InputElement;\n dayAbbrStrings = getDays();\n dayStrings = getDaysOfWeek();\n defaultFormatString = 'mm/dd/yyyy';\n formatModifier: string = 'M/D/YYYY'; // To allow missing leading zero, 4/3/2021 => converts into 04/03/2021\n hintMessageElement: HTMLQ2MessageElement;\n internalError: string = '';\n monthStrings = getMonths();\n popoverElement?: HTMLQ2PopoverElement;\n privatePopDirection: 'up' | 'down';\n scheduledAfterRender: (() => void)[] = [];\n selectedMonthYear: ISelectedMonthYear;\n valueOnBlur: string | { toDate(): Date };\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region State Properties\n\n @State()\n dateList: CalendarDay[];\n\n @State()\n hintMessage: string = this.defaultHintMessage;\n\n @State()\n hintMessageType: 'info' | 'error' = 'info';\n\n @State()\n keyboardSelection: boolean = false;\n\n @State()\n typedValue: string = '';\n\n // #endregion\n // #region Public Property API\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true })\n ariaLabel: string;\n\n /**\n * Detects the year automatically based on today's date when the user presses the `Escape` key or the `Blur` mouse event occurs.\n * Setting `future` or `past` as the value will increase or decrease the year by one, respectively.\n */\n @Prop({ reflect: true })\n assume: 'current' | 'future' | 'past' = 'current';\n\n /** @deprecated */\n @Prop({ reflect: true })\n buttonLabel: string;\n\n /** A label shown at the top of the popover date picker. */\n @Prop({ reflect: true })\n calendarLabel: string;\n\n /** Display a button in the input field allowing the user to clear their selection. */\n @Prop({ reflect: true })\n clearable: boolean;\n\n /**\n * Specifies a time of day after which a date is no longer valid.\n *\n * @warning\n * Must be a valid ISO date string.\n */\n @Prop({ reflect: true })\n cutoffTime: string;\n\n /**\n * The most concise way to define valid days of the week for calendar. Each day of the week has a checksum value:\n *\n * - Sunday = 1\n * - Monday = 2\n * - Tuesday = 4\n * - Wednesday = 8\n * - Thursday = 16\n * - Friday = 32\n * - Saturday = 64\n *\n * Add the checksum values of your desired valid days together, and set `daysOfWeekChecksum` to that summed value.\n *\n * **Example:**\n * @snippet\n * element.daysOfWeekChecksum = 127 // All days of the week are valid\n * element.daysOfWeekChecksum = 62; // Only weekdays are valid\n * element.daysOfWeekChecksum = 65; // Only Saturday and Sunday are valid\n *\n */\n @Prop({ reflect: true })\n daysOfWeekChecksum: number;\n\n /** Disable the input field. */\n @Prop({ reflect: true })\n disabled: boolean;\n\n /**\n * Text that displays as the placeholder when the field is marked `disabled`.\n * @localizable\n */\n @Prop({ reflect: true })\n disabledMsg: string;\n\n /** Text that appears at the bottom of the popover date picker. */\n @Prop({ reflect: true })\n disclaimer: string;\n\n /**\n * Determines the display format of the date field value.\n *\n * Must follow the [date-fns](https://date-fns.org/v2.28.0/docs/format) token specification.\n */\n @Prop({ reflect: true })\n displayFormat: string;\n\n /**\n * Defines the last selectable date in the date picker popover.\n *\n * @warning\n * Must be a valid ISO date string.\n */\n @Prop({ reflect: true })\n endDate: string;\n\n /**\n * Each item in the `errors` array will appear below the input field when the field is focused and `typeable` is `true`.\n * @localizable\n */\n @Prop({ mutable: true })\n errors: string[];\n\n /** Hide the input field's ` <label> ` element from view. */\n @Prop({ reflect: true, mutable: true })\n hideLabel: boolean;\n\n /**\n * Each item in the `hints` array will appear below the input field when the field is focused and `typeable` is true.\n * @localizable\n */\n @Prop({ mutable: true })\n hints: string[];\n\n /** Show error styles when the calendar is in an errant state. */\n @Prop({ reflect: true, mutable: true })\n invalid: boolean;\n\n /**\n * Defines an explicit date blacklist.\n *\n * @warning\n * Must be a valid ISO date string.\n *\n * @info\n * When explicit date definitions like `invalidDates` is used, other date validity methods like `daysOfWeekChecksum` are overriden.\n */\n @Prop()\n invalidDates: string[];\n\n /** The visible label for the `q2-calendar` input field. */\n @Prop({ reflect: true, mutable: true })\n label: string;\n\n /** @deprecated */\n @Prop()\n onsuccess: (e: CustomEvent) => void;\n\n /** Determine whether the popover is open or closed. */\n @Prop({ reflect: true, mutable: true })\n open: boolean;\n\n /** Appends \"(optional)\" to the label and sets `aria-required=\"false\"`. */\n @Prop({ reflect: true })\n optional: boolean;\n\n /**\n * Text that appears within the input field when it is blurred and empty.\n * Placeholder text disappears when the user focuses on the field and provides input.\n */\n @Prop({ reflect: true })\n placeholder: string;\n\n /** @deprecated */\n @Prop({ reflect: true })\n popDirection: 'up' | 'down';\n\n /** Aligns the popover date picker to the left or right side of the input field. */\n @Prop()\n popoverAlignment: 'left' | 'right';\n\n /**\n * Force the direction of the popover date picker when it opens.\n * If no value is passed, the component will auto-detect the direction based on available space.\n */\n @Prop({ mutable: true })\n popoverDirection: 'up' | 'down';\n\n /** @deprecated */\n @Prop()\n popoverMinHeight: number = 355;\n\n /**\n * Determines the display mode of the popover.\n *\n * Providing a value of `legacy` instructs the popover to use absolute positioning instead of fixed positioning.\n *\n * @info\n * This is a temporary solution to work around styling issues related to using fixed positioning for the popover\n * when nested inside of elements with transform properties. This will be removed once the popover API is available\n * for use.\n */\n @Prop({ mutable: true })\n popoverMode: 'legacy' = null;\n\n /**\n * The field's content is not editable, but the field remains focusable.\n *\n * Appends \"(readonly)\" to the field label. Supersedes `optional` if both are `true`.\n */\n @Prop({ reflect: true })\n readonly: boolean;\n\n /**\n * Defines the first selectabe date in the date picker popover.\n *\n * @warning\n * Must be a valid ISO date string.\n */\n @Prop({ reflect: true })\n startDate: string;\n\n /** The user can type in the field. Only available in desktop browsers. */\n @Prop({ reflect: true })\n typeable: boolean;\n\n /**\n * Defines an explicit date whitelist.\n *\n * @warning\n * Must be a valid ISO date string.\n *\n * @info\n * When explicit date definitions like `validDates` is used, other date validity methods like `daysOfWeekChecksum` are overriden.\n */\n @Prop()\n validDates: string[];\n\n /**\n * The value of the `q2-calendar` element, e.g. the selected date.\n *\n * **How to change or clear the value with javascript:**\n * @snippet\n * // change date\n * element.value = '2022-12-21';\n * // clear date\n * element.value = null;\n */\n @Prop({ mutable: true, reflect: true })\n value: string | { toDate(): Date };\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when a date is selected or typed in the input field.\n * @legacyEvent\n */\n @Event()\n change: EventEmitter<{\n // ISO formatted date\n value: string | null;\n }>;\n\n /**\n * Emitted when an invalid date is entered into the field.\n */\n @Event()\n error: EventEmitter<{ errors: { message: string; errorCode: string }[] }>;\n\n /**\n * Emitted when a valid date is entered or selected.\n */\n @Event()\n success: EventEmitter<{\n // ISO formatted date\n value: string;\n }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n connectedCallback() {\n this.selectedMonthYear = setupMonthYear(this.dateValue);\n this.dateList = this.buildDateList(this.selectedMonthYear);\n if (this.value && this.isTypeable && !this.typedValue) {\n this.typedValue = reorderDateString(this.value as string);\n }\n this.validateDate();\n }\n\n componentWillLoad() {\n this.popDirectionHandler();\n handleAriaLabel(this);\n }\n\n componentDidLoad(): void {\n overrideFocus(this.hostElement);\n }\n\n componentDidRender() {\n setTimeout(() => {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }, 25);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('change')\n defaultChangeHandler(event: CustomEvent) {\n if (event.target === this.hostElement && !this.hostElement.onchange && !!event.detail) {\n this.value = event.detail.value;\n }\n }\n\n @Listen('clear')\n handleClear() {\n this.change.emit({ value: null });\n this.value = null;\n this.typedValue = '';\n }\n\n @Listen('error')\n defaultErrorHandler(event: CustomEvent) {\n if (event.target === this.hostElement && !this.hostElement.onerror) {\n if (this.hintMessageType === 'error' && this.hintMessage) {\n this.internalError = this.hintMessage;\n } else {\n this.internalError = loc('tecton.element.calendar.hint.invalidDate');\n }\n }\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.controlElement.shadowRoot.querySelector<HTMLElement>('.input-field').focus();\n }\n\n @Listen('popoverStateChanged')\n popoverStateHandler({ detail: { open } }: CustomEvent<{ open: boolean }>) {\n if (this.open !== open) this.open = open;\n }\n\n @Listen('success')\n defaultSuccessHandler(event: CustomEvent) {\n if (event.target !== this.hostElement) {\n return;\n }\n\n if (typeof this.onsuccess === 'function') {\n this.onsuccess(event);\n } else {\n this.internalError = '';\n if (this.hintMessageType === 'error' && this.hintMessage) {\n this.hintMessage = null;\n this.hintMessageType = null;\n this.invalid = false;\n }\n }\n }\n\n // #endregion\n // #region Public Methods API\n\n /**\n * Emulates clicking the `<input>` to hide the popover if it is visible.\n *\n * @testOnly\n */\n @Method()\n async closePopover() {\n if (!this.open) return;\n this._togglePopover();\n }\n\n /**\n * Emulates clicking the `<input>` to display the popover if it is hidden.\n *\n * @testOnly\n */\n @Method()\n async openPopover() {\n if (this.open) return;\n this._togglePopover();\n }\n\n /**\n * Emulates clicking the `<input>` to display the popover, moving to the correct month and year, and clicking the\n * provided date.\n *\n * While a `string` value can be passed, we recommended passing a `Date` object. If the value is invalid, the method\n * will not select the date.\n *\n * @testOnly\n */\n @Method()\n async setValue(value: string | Date) {\n const date = typeof value === 'string' ? stringToDate(value) : value;\n if (!isValidDate(date)) return;\n\n await this.openPopover();\n await waitForNextPaint();\n\n this.goToMonthYear(date.getMonth(), date.getFullYear());\n await waitForNextPaint();\n const tableCell = this.calendarTable?.querySelector<HTMLTableCellElement>(\n `td[data-date=\"${formatDateISO(date)}\"]`\n );\n tableCell?.click();\n }\n\n /**\n * Emulates focusing the `<input>`, entering the provided value, and emitting an `input` event.\n *\n * While a `string` value can be passed, we recommended passing a `Date` object. If the value is invalid, the method\n * will not select the date.\n *\n * @warning\n * Only applicable when the input is typeable.\n *\n * @testOnly\n */\n @Method()\n async typeValue(value: string | Date) {\n if (!this.typeable) return;\n\n const date = typeof value === 'string' ? stringToDate(value) : value;\n const formattedDate = formatDateShort(date);\n if (!isValidDate(date)) return;\n\n const { innerInputField, controlElement } = this;\n innerInputField.focus();\n innerInputField.dispatchEvent(new FocusEvent('focus'));\n innerInputField.value = formattedDate;\n innerInputField.dispatchEvent(new InputEvent('input'));\n controlElement.dispatchEvent(new KeyboardEvent('keyup'));\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n handleAriaLabel(this);\n }\n\n @Watch('cutoffTime')\n cutoffTimeObserver() {\n this.dateList = this.buildDateList(this.selectedMonthYear);\n this.validateDate();\n }\n\n @Watch('daysOfWeekChecksum')\n daysOfWeekChecksumObserver() {\n this.dateList = this.buildDateList(this.selectedMonthYear);\n this.validateDate();\n }\n\n @Watch('endDate')\n endDateObserver() {\n this.dateList = this.buildDateList(this.selectedMonthYear);\n this.validateDate();\n }\n\n @Watch('invalidDates')\n invalidDatesObserver() {\n this.dateList = this.buildDateList(this.selectedMonthYear);\n this.validateDate();\n }\n\n @Watch('popDirection')\n popDirectionHandler() {\n handleRenamedProp(this, 'popDirection', 'popoverDirection');\n }\n\n @Watch('startDate')\n startDateObserver() {\n this.dateList = this.buildDateList(this.selectedMonthYear);\n this.validateDate();\n }\n\n @Watch('typeable')\n typeableChanged() {\n this.valueObserver(this.value);\n }\n\n @Watch('validDates')\n validDatesObserver() {\n this.dateList = this.buildDateList(this.selectedMonthYear);\n this.validateDate();\n }\n\n @Watch('value')\n valueObserver(newValue: string | IMomentLikeObject) {\n // resetting by empty string\n if (newValue === '') {\n this.value = undefined;\n this.setHints({ isValid: true, message: this.defaultHintMessage, messageType: 'info' });\n return;\n }\n const isMoment = newValue && typeof newValue !== 'string' && 'toDate' in newValue;\n const newDate = isMoment ? (newValue as IMomentLikeObject).toDate() : stringToDate(newValue as string);\n const shortFormattedValue = formatDateShort(newDate);\n if (this.isTypeable) {\n this.typedValue = shortFormattedValue;\n } else {\n this.controlElement.value = shortFormattedValue;\n this.selectedMonthYear = setupMonthYear(newDate);\n this.dateList = this.buildDateList(this.selectedMonthYear);\n this.validateDate();\n }\n\n // reset hint when value is cleared\n if (this.invalid) return;\n\n if (shortFormattedValue) {\n this.setHints({\n isValid: true,\n message: null,\n messageType: null,\n });\n } else {\n this.setHints({ isValid: true, message: this.defaultHintMessage, messageType: 'info' });\n }\n }\n\n // #endregion\n // #region Local Methods\n\n get canClear() {\n if (this.isTypeable) {\n return this.clearable && !!this.typedValue;\n } else {\n return this.clearable && !!this.value;\n }\n }\n\n get computedPlaceholder(): string {\n if (this.disabled && this.disabledMsg) {\n return loc(this.disabledMsg);\n }\n\n if (this.buttonLabel && (this.disabled || this.placeholder)) {\n return loc(this.buttonLabel);\n }\n\n return (this.placeholder && loc(this.placeholder)) || '';\n }\n\n get currentWeeks() {\n const weeks = this.dateList.reduce<CalendarDay[][]>((accum, item, index) => {\n const chunkIndex = Math.floor(index / 7);\n\n if (!accum[chunkIndex]) {\n accum[chunkIndex] = [];\n }\n\n accum[chunkIndex].push(item);\n\n return accum;\n }, []);\n\n return weeks;\n }\n\n get dateValidators(): IDateValidators {\n const ct = new Date(this.cutoffTime || ''); // should fallback to InvalidDate\n return {\n startDate: stringToDate(this.startDate),\n endDate: stringToDate(this.endDate),\n cutOffTime: isValidDate(ct) ? ct : undefined,\n };\n }\n\n get dateValue(): Date | undefined {\n if (this.isTypeable) {\n return stringToDate(this.typedValue);\n } else {\n let { value } = this;\n const isMoment = value && typeof value !== 'string' && 'toDate' in value;\n if (isMoment) return (value as IMomentLikeObject).toDate();\n\n // stringified moment value assigned in html template e.g.) handlebar\n const isMomentString =\n typeof value === 'string' && value.split(' ').length === 6 && /GMT-\\d{4}/g.test(value);\n if (isMomentString) {\n value = formatDateISO(value as string);\n }\n\n return stringToDate(value as string);\n }\n }\n\n get defaultHintMessage() {\n return this.typeable\n ? loc('tecton.element.calendar.hint.format') + ': ' + this.defaultFormatString\n : loc('tecton.element.calendar.hint.select');\n }\n\n get errorList() {\n const { errors, internalError, invalid } = this;\n let list = [];\n if (internalError) {\n list = [internalError];\n }\n if (Array.isArray(errors) && errors.length) {\n list = errors\n .filter(error => !!error)\n .map(error => loc(error))\n .concat(list);\n } else if (!internalError && invalid) {\n return ['tecton.element.calendar.invalid'];\n }\n return list;\n }\n\n get formattedValue() {\n const { typedValue, dateValue, displayFormat, isTypeable } = this;\n if (isTypeable) return typedValue;\n\n if (dateValue === undefined) return '';\n if (displayFormat) return format(dateValue, convertMomentFormat(displayFormat));\n\n return new Intl.DateTimeFormat('en-US', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n }).format(dateValue);\n }\n\n get hintList() {\n const { hints, hintMessageType, hintMessage } = this;\n if (Array.isArray(hints) && hints.length) return hints.filter(hint => !!hint).map(hint => loc(hint));\n if (hintMessageType === 'info' && hintMessage) return [hintMessage];\n return [];\n }\n\n get innerInputContainer(): HTMLElement {\n return this.controlElement?.shadowRoot?.querySelector('.input-container');\n }\n\n get innerInputField(): HTMLInputElement | HTMLButtonElement {\n return this.controlElement?.shadowRoot?.querySelector('.input-field');\n }\n\n get isTypeable(): boolean {\n return this.typeable;\n }\n\n get selectedDate() {\n const selectedCell = this.calendarBody?.querySelector<HTMLTableCellElement>('[aria-selected=\"true\"]');\n return selectedCell ? removeTimezoneOffset(new Date(selectedCell.dataset.date)) : null;\n }\n\n _togglePopover() {\n const toggleElement = this.typeable ? this.btnCalendarToggle : this.innerInputField;\n toggleElement?.click();\n toggleElement?.focus();\n toggleElement.dispatchEvent(new FocusEvent('focus'));\n }\n\n activateDay(date: Date) {\n this.goToMonthYear(date.getMonth(), date.getFullYear());\n this.scheduledAfterRender.push(() => this.focusDay(date));\n }\n\n buildDateList(monthYear: ISelectedMonthYear): DateList {\n const invalidDates = stringArrayToDate(this.invalidDates);\n const validDaysOfWeek = getValidDaysOfWeek(this.daysOfWeekChecksum);\n const validDates = stringArrayToDate(this.validDates);\n return buildDates(\n validDaysOfWeek,\n validDates,\n invalidDates,\n monthYear,\n this.dateValue,\n this.dateValidators,\n this.typedValue\n );\n }\n\n calendarDays() {\n return (\n <table\n role=\"grid\"\n aria-labelledby=\"table-label\"\n ref={ref => (this.calendarTable = ref)}\n >\n <thead>\n <tr>\n {[...Array(7).keys()].map(index => (\n <th\n scope=\"col\"\n aria-label={this.dayStrings[index]}\n >\n {this.dayAbbrStrings[index]}\n </th>\n ))}\n </tr>\n </thead>\n <tbody\n onClick={this.onDateSelection}\n onKeyDown={this.onDateKeydown}\n ref={elm => (this.calendarBody = elm)}\n test-id=\"calendarTableBody\"\n >\n {this.currentWeeks.map(week => (\n <tr>\n {week.map(day => {\n let ariaLabel = '';\n if (day.isToday) ariaLabel = `${loc('tecton.element.calendar.today')}, `;\n ariaLabel += formatDateFull(day.date);\n if (day.isSelected) ariaLabel += ` (${loc('tecton.element.calendar.selected')})`;\n return (\n <td\n class={day.classList}\n aria-hidden={day.isEmpty ? 'true' : undefined}\n tabindex={day.isSelected ? 0 : -1}\n role={day.isSelected ? 'gridcell' : undefined}\n aria-selected={day.isSelected ? 'true' : undefined}\n aria-disabled={day.isValid ? undefined : 'true'}\n data-day={day.integer || undefined}\n data-date={day.date ? formatDateISO(day.date) : undefined}\n >\n {day?.isToday && (\n <div\n class=\"today-decorator\"\n aria-hidden=\"true\"\n >\n {loc('tecton.element.calendar.today')}\n </div>\n )}\n <div aria-label={ariaLabel}>{day?.integer ?? ''}</div>\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n );\n }\n\n calendarPopover() {\n const { monthIndex, selectedYear } = this.selectedMonthYear;\n return (\n <div\n class=\"calendar-field-popup\"\n onKeyUp={this.onPopupKeyup}\n >\n {this.calendarLabel && <p class=\"calendar-label\">{loc(this.calendarLabel)}</p>}\n <div class=\"cal-month-heading\">\n <q2-btn\n label={loc('tecton.element.calendar.previousMonth')}\n hide-label\n ref={elm => (this.btnPrevMonth = elm)}\n class=\"cal-nav-btn prev-month\"\n test-id=\"previousMonthButton\"\n onClick={() => this.goToMonthYear(monthIndex - 1, selectedYear)}\n >\n <q2-icon type=\"chevron-left\" />\n </q2-btn>\n <span class=\"cal-month-text\">{this.monthStrings[monthIndex]}</span>\n <q2-btn\n label={loc('tecton.element.calendar.nextMonth')}\n hide-label\n class=\"cal-nav-btn next-month\"\n ref={elm => (this.btnNextMonth = elm)}\n test-id=\"nextMonthButton\"\n onClick={() => this.goToMonthYear(monthIndex + 1, selectedYear)}\n >\n <q2-icon type=\"chevron-right\" />\n </q2-btn>\n <q2-btn\n label={loc('tecton.element.calendar.previousYear')}\n hide-label\n class=\"cal-nav-btn prev-year\"\n ref={elm => (this.btnPrevYear = elm)}\n test-id=\"previousYearButton\"\n onClick={() => this.goToMonthYear(monthIndex, selectedYear - 1)}\n >\n <q2-icon type=\"chevron-left\" />\n </q2-btn>\n <span class=\"cal-year-text\">{this.selectedMonthYear.selectedYear}</span>\n <q2-btn\n label={loc('tecton.element.calendar.nextYear')}\n hide-label\n class=\"cal-nav-btn next-year\"\n ref={elm => (this.btnNextYear = elm)}\n test-id=\"nextYearButton\"\n onClick={() => this.goToMonthYear(monthIndex, selectedYear + 1)}\n onKeyDown={this.onHeaderControlKeydown}\n >\n <q2-icon type=\"chevron-right\" />\n </q2-btn>\n </div>\n <div\n class=\"sr\"\n aria-live=\"polite\"\n id=\"table-label\"\n >\n {`${this.monthStrings[monthIndex]} ${selectedYear}`}\n </div>\n {this.calendarDays()}\n {this.disclaimer && <div class=\"calendar-disclaimer\">{loc(this.disclaimer)}</div>}\n <q2-btn\n class=\"sr refocus-popup\"\n onFocus={this.onRefocus}\n />\n </div>\n );\n }\n\n checkActiveCellForBlankness() {\n const activeElement = this.hostElement.shadowRoot.activeElement;\n if (!activeElement || activeElement.tagName !== 'TD' || !activeElement.hasAttribute('aria-hidden')) return;\n\n const { calendarBody } = this;\n const calendarCells = Array.from(calendarBody.querySelectorAll<Element>('td'));\n const indexOfCell = Array.from(calendarCells).indexOf(activeElement);\n\n const dayToFocus =\n indexOfCell < 15 ? 1 : calendarCells.filter(cell => !cell.hasAttribute('aria-hidden')).length;\n\n this.focusDay(this.generateDateFromDay(dayToFocus));\n }\n\n closeCalendar = () => {\n if (!this.open) return;\n this.open = false;\n this.focusInput();\n };\n\n async focusDay(date: Date) {\n if (!date) return;\n await waitForNextPaint();\n this.calendarBody.querySelector<HTMLElement>(`td[data-day=\"${date.getDate()}\"]`)?.focus();\n }\n\n focusInput() {\n this.controlElement?.focus();\n }\n\n generateDateFromDay(day: number) {\n const { monthIndex, selectedYear } = this.selectedMonthYear;\n return new Date(selectedYear, monthIndex, day);\n }\n\n goToMonthYear = (monthIndex: number, year: number) => {\n if (monthIndex < 0) {\n monthIndex = 11;\n year--;\n } else if (monthIndex > 11) {\n monthIndex = 0;\n year++;\n }\n this.selectedMonthYear = {\n monthIndex,\n selectedYear: year,\n };\n this.dateList = this.buildDateList(this.selectedMonthYear);\n\n this.scheduledAfterRender.push(() => this.checkActiveCellForBlankness());\n };\n\n hintField() {\n if (!this.hintMessage) return;\n\n return (\n <q2-message\n class=\"calendar-hint sr\"\n ref={el => (this.hintMessageElement = el)}\n type={this.hintMessageType}\n >\n {this.hintMessage}\n </q2-message>\n );\n }\n\n inputField() {\n const { isTypeable } = this;\n return (\n <q2-input\n ref={el => (this.controlElement = el)}\n class=\"calendar-input-field\"\n value={this.formattedValue}\n label={loc(this.label)}\n hideLabel={this.hideLabel}\n disabled={!!this.disabled}\n readonly={!!this.readonly}\n clearable={this.canClear}\n placeholder={this.computedPlaceholder}\n optional={!!this.optional}\n ariaExpanded={`${!!this.open}`}\n hints={this.hintList}\n errors={this.errorList}\n onClick={isTypeable ? undefined : this.onInputClick}\n onChange={this.onInputChange}\n onInput={this.onInputInput}\n onKeyDown={this.onInputKeydown}\n onKeyUp={this.onInputKeyup}\n onBlur={this.onInputBlur}\n onFocus={this.onInputFocus}\n icon-right={isTypeable ? undefined : 'calendar'}\n format-modifier={isTypeable ? this.formatModifier : this.displayFormat || this.formatModifier}\n type=\"date\"\n hide-messages={!isTypeable}\n test-id=\"inputAndCalendarToggle\"\n _role=\"combobox\"\n _preventEntry={!isTypeable}\n >\n {isTypeable && (\n <q2-btn\n ref={el => (this.btnCalendarToggle = el)}\n slot=\"input-right\"\n onClick={this.onInputClick}\n test-id=\"calendarToggle\"\n label=\"tecton.element.calendar.toggleAriaLabel\"\n hide-label\n >\n <q2-icon type=\"calendar\" />\n </q2-btn>\n )}\n </q2-input>\n );\n }\n\n onClickElsewhere = (event: CustomEvent) => {\n const target = event.target as HTMLClickElsewhereElement;\n if (target.localName === 'click-elsewhere') {\n event.stopPropagation();\n this.closeCalendar();\n }\n };\n\n onDateKeydown = (event: KeyboardEvent) => {\n const { monthIndex, selectedYear } = this.selectedMonthYear;\n const currentDay = parseInt((event.target as HTMLElement).dataset.day);\n const currentDate = this.generateDateFromDay(currentDay);\n\n switch (event.key) {\n case 'ArrowUp':\n event.preventDefault();\n this.activateDay(addDays(currentDate, -7));\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n this.activateDay(addDays(currentDate, 7));\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n this.activateDay(addDays(currentDate, 1));\n break;\n\n case 'ArrowLeft':\n event.preventDefault();\n this.activateDay(addDays(currentDate, -1));\n break;\n\n case 'PageUp':\n event.preventDefault();\n if (event.shiftKey) this.goToMonthYear(monthIndex, selectedYear - 1);\n else this.goToMonthYear(monthIndex - 1, selectedYear);\n break;\n\n case 'PageDown':\n event.preventDefault();\n if (event.shiftKey) this.goToMonthYear(monthIndex, selectedYear + 1);\n else this.goToMonthYear(monthIndex + 1, selectedYear);\n break;\n\n case 'Home':\n event.preventDefault();\n this.activateDay(addDays(currentDate, -currentDate.getDay()));\n break;\n\n case 'End':\n event.preventDefault();\n this.activateDay(addDays(currentDate, 6 - currentDate.getDay()));\n break;\n\n case 'Escape':\n event.preventDefault();\n this.closeCalendar();\n this.focusInput();\n break;\n\n case 'Enter':\n event.preventDefault();\n if (!this.dateList.find(({ date }) => isSameDay(date, currentDate)).isValid) return;\n this.selectDate(currentDate);\n this.closeCalendar();\n this.focusInput();\n break;\n\n case ' ':\n event.preventDefault();\n if (!this.dateList.find(({ date }) => isSameDay(date, currentDate)).isValid) return;\n this.selectDate(currentDate);\n this.closeCalendar();\n this.focusInput();\n break;\n }\n };\n\n onDateSelection = (event: MouseEvent) => {\n const dateCell = (event.target as HTMLElement).closest<HTMLElement>('td:not([aria-hidden])');\n if (!dateCell) return;\n const clickedDate = removeTimezoneOffset(new Date(dateCell.dataset.date));\n this.selectDate(clickedDate);\n this.closeCalendar();\n };\n\n onHeaderControlKeydown = (event: KeyboardEvent) => {\n const currentDate = this.generateDateFromDay(1);\n const hasSelectedCell = this.calendarBody?.querySelector<HTMLTableCellElement>('[aria-selected=\"true\"]');\n\n if (event.key === 'Tab' && !hasSelectedCell) {\n event.preventDefault();\n this.activateDay(currentDate);\n }\n };\n\n onInputBlur = () => {\n if (!this.isTypeable) return;\n\n const validDays = getValidDaysOfWeek(this.daysOfWeekChecksum);\n const { typedValue } = this;\n const { isValid, inputDate, isAvailable } = validateInput(\n this.typedValue,\n validDays,\n this.validDates,\n this.invalidDates,\n this.startDate,\n this.endDate,\n this.defaultFormatString,\n this.assume\n );\n\n if (!typedValue && inputDate?.toString() === 'Invalid Date') {\n // initial/clear state\n this.setHints({ isValid: true, message: this.defaultHintMessage, messageType: 'info' });\n } else if (\n isValid ||\n (typedValue &&\n typedValue.length > 4 && // at least mm/dd provided\n inputDate &&\n isValidDate(inputDate) &&\n isAvailable)\n ) {\n this.setCompleteInput(inputDate);\n } else if (this.value) {\n this.valueOnBlur = this.value;\n this.value = null;\n this.change.emit({ value: null });\n this.typedValue = typedValue;\n }\n };\n\n onInputChange = (event: Event) => {\n event.stopPropagation();\n };\n\n onInputClick = () => {\n if (this.disabled) return;\n this.toggleCalendar();\n };\n\n onInputFocus = (event: FocusEvent) => {\n if (!this.isTypeable) return;\n if (event.target === this.controlElement) {\n if (this.valueOnBlur && !this.value) {\n const tmpTypedValue = this.typedValue;\n this.value = this.valueOnBlur;\n this.typedValue = tmpTypedValue;\n this.valueOnBlur = null;\n }\n this.closeCalendar();\n }\n };\n\n onInputInput = ({ detail: { value } }: Q2InputCustomEvent<IEventDetail> & InputEvent) => {\n this.typedValue = value;\n };\n\n onInputKeydown = (event: KeyboardEvent) => {\n const { dateValue } = this;\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.openCalendar();\n this.activateDay(dateValue || new Date());\n break;\n\n case 'Enter':\n case ' ':\n if (this.typeable) break;\n event.preventDefault();\n if (this.open) {\n this.closeCalendar();\n } else {\n this.openCalendar();\n this.activateDay(dateValue || new Date());\n }\n break;\n }\n };\n\n onInputKeyup = (event: KeyboardEvent) => {\n if (this.disabled) {\n return;\n }\n\n switch (event.key) {\n case 'Escape':\n this.onInputBlur();\n this.closeCalendar();\n break;\n }\n\n if (!this.isTypeable) return;\n\n // handle missing zero in month and date\n this.typedValue = handleMissingZeros(this.typedValue);\n const { typedValue } = this;\n const validDays = getValidDaysOfWeek(this.daysOfWeekChecksum);\n const { isValid, message, messageType, inputDate, isAvailable, calendarPosition } = validateInput(\n typedValue,\n validDays,\n this.validDates,\n this.invalidDates,\n this.startDate,\n this.endDate,\n this.defaultFormatString,\n this.assume\n );\n\n if (calendarPosition) {\n const [mm, dd, yyyy] = calendarPosition;\n const date = new Date(yyyy, mm - 1, dd);\n if (isValidDate(date)) {\n this.selectedMonthYear = setupMonthYear(date);\n this.dateList = this.buildDateList(this.selectedMonthYear);\n this.validateDate();\n }\n }\n\n if (event.key === 'Enter') {\n if (\n isValid ||\n (typedValue &&\n typedValue.length > 4 && // at least mm/dd provided\n inputDate &&\n isValidDate(inputDate) &&\n isAvailable)\n ) {\n this.setCompleteInput(inputDate);\n } else if (this.value) {\n this.value = null;\n this.change.emit({ value: null });\n this.typedValue = typedValue;\n }\n\n if (this.keyboardSelection) {\n this.keyboardSelection = false;\n this.closeCalendar();\n } else {\n this.toggleCalendar();\n }\n } else {\n this.setHints({ isValid, message, messageType });\n }\n };\n\n onPopupKeyup = (event: KeyboardEvent) => {\n if (event.key === 'Escape' || event.key === 'Esc') {\n this.onInputBlur();\n this.closeCalendar();\n }\n };\n\n onRefocus = () => {\n this.btnPrevMonth?.dispatchEvent(new FocusEvent('focus'));\n };\n\n openCalendar = () => {\n if (this.readonly || this.open) return;\n this.selectedMonthYear = setupMonthYear(this.dateValue);\n this.dateList = this.buildDateList(this.selectedMonthYear);\n this.open = true;\n };\n\n selectDate = (newDate: Date) => {\n const { isValid } = this.dateList.find(({ date }) => isSameDay(date, newDate));\n if (!isValid) return;\n this.change.emit({ value: formatDateISO(newDate) });\n this.typedValue = formatDateShort(newDate);\n this.invalid = false;\n this.success.emit({ value: formatDateISO(newDate) });\n };\n\n setCompleteInput(inputDate: Date) {\n const formattedDate = formatDateShort(inputDate);\n this.change.emit({ value: formatDateISO(inputDate) });\n this.typedValue = formattedDate;\n this.internalError = null;\n this.setHints({\n isValid: true,\n message: null,\n messageType: null,\n });\n }\n\n setHints({ isValid, message, messageType }) {\n if (message === this.hintMessage) return this.hintMessageElement?.present();\n this.invalid = !isValid;\n this.hintMessage = message;\n this.hintMessageType = messageType;\n if (messageType === 'error' && message) {\n this.internalError = message;\n this.error.emit({\n errors: [\n {\n message,\n errorCode: 'generalInvalid',\n },\n ],\n });\n }\n }\n\n toggleCalendar = () => {\n if (this.readonly) return;\n if (this.open) {\n this.closeCalendar();\n } else {\n this.openCalendar();\n }\n };\n\n validateDate() {\n try {\n if (!!this.value) {\n const { dateValue } = this;\n const month = dateValue?.getMonth() ?? undefined;\n const year = dateValue?.getFullYear() ?? undefined;\n const { monthIndex, selectedYear } = this.selectedMonthYear;\n\n const isSelectedMonthAndYear = month === monthIndex && year === selectedYear;\n let calculationDateList = [];\n\n if (!dateValue) {\n calculationDateList = [];\n } else if (isSelectedMonthAndYear) {\n calculationDateList = this.dateList;\n } else {\n calculationDateList = this.buildDateList({\n monthIndex: month,\n selectedYear: year,\n });\n }\n\n const dateValueDayOfMonth = dateValue?.getDate() ?? undefined;\n const isDateValueInvalid = dateValueDayOfMonth\n ? !calculationDateList.find(({ integer }) => integer === dateValueDayOfMonth).isValid\n : true;\n if (isDateValueInvalid) {\n this.error.emit({\n errors: [\n {\n message: `Value passed is invalid: The date ${this.value} is not valid`,\n errorCode: 'generalInvalid',\n },\n ],\n });\n } else {\n this.success.emit({ value: formatDateISO(dateValue) });\n }\n }\n } catch (error) {\n console.warn('Invalid moment value ', this.dateValue);\n }\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n return (\n <click-elsewhere\n class={this.open ? 'dropdown-open' : undefined}\n onChange={this.onClickElsewhere}\n >\n {this.inputField()}\n <q2-popover\n ref={el => (this.popoverElement = el)}\n controlElement={this.innerInputContainer}\n open={this.open}\n direction={this.popoverDirection}\n minHeight={this.popoverMinHeight}\n align={this.popoverAlignment}\n mode={this.popoverMode || undefined}\n block\n >\n {this.hintField()}\n {this.calendarPopover()}\n </q2-popover>\n </click-elsewhere>\n );\n }\n\n // #endregion\n}\n"],"mappings":"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"}
|