q2-tecton-elements 1.37.1 → 1.38.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 +68 -58
- package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
- package/dist/cjs/{index-6f9f259c.js → index-09c712ea.js} +13 -2
- package/dist/cjs/index-09c712ea.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-action-sheet.cjs.entry.js +2 -2
- 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-avatar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-badge.cjs.entry.js +1 -1
- package/dist/cjs/q2-badge.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-btn_2.cjs.entry.js +3 -3
- package/dist/cjs/q2-btn_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-calendar.cjs.entry.js +38 -4
- package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-card.cjs.entry.js +2 -2
- package/dist/cjs/q2-card.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-carousel-pane.cjs.entry.js +2 -2
- package/dist/cjs/q2-carousel-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-carousel.cjs.entry.js +2 -2
- package/dist/cjs/q2-carousel.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-area.cjs.entry.js +2 -2
- package/dist/cjs/q2-chart-area.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-bar.cjs.entry.js +2 -2
- package/dist/cjs/q2-chart-bar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-donut.cjs.entry.js +11 -2
- package/dist/cjs/q2-chart-donut.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-checkbox-group.cjs.entry.js +7 -2
- package/dist/cjs/q2-checkbox-group.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-checkbox.cjs.entry.js +2 -2
- package/dist/cjs/q2-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-data-table.cjs.entry.js +2 -2
- package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-dropdown-item.cjs.entry.js +2 -2
- package/dist/cjs/q2-dropdown-item.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +2 -2
- package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-editable-field.cjs.entry.js +26 -3
- package/dist/cjs/q2-editable-field.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js +2 -2
- package/dist/cjs/q2-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-input.cjs.entry.js +125 -12
- package/dist/cjs/q2-input.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-loc.cjs.entry.js +2 -2
- package/dist/cjs/q2-loc.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-message.cjs.entry.js +5 -2
- package/dist/cjs/q2-message.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-month-picker.cjs.entry.js +2 -2
- package/dist/cjs/q2-month-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-optgroup_2.cjs.entry.js +3 -3
- package/dist/cjs/q2-optgroup_2.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-option-list.cjs.entry.js +19 -11
- package/dist/cjs/q2-option-list.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-pagination.cjs.entry.js +2 -2
- package/dist/cjs/q2-pagination.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-pill.cjs.entry.js +2 -2
- package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-radio-group.cjs.entry.js +7 -2
- package/dist/cjs/q2-radio-group.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-radio.cjs.entry.js +2 -2
- package/dist/cjs/q2-radio.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-section.cjs.entry.js +2 -2
- package/dist/cjs/q2-section.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-select.cjs.entry.js +73 -20
- 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-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
- package/dist/cjs/q2-stepper.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tab-container.cjs.entry.js +16 -10
- package/dist/cjs/q2-tab-container.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tab-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-tab-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tag.cjs.entry.js +2 -2
- 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 +39 -6
- package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tooltip.cjs.entry.js +2 -2
- package/dist/cjs/q2-tooltip.cjs.entry.js.map +1 -1
- package/dist/cjs/tecton-tab-pane.cjs.entry.js +1 -1
- package/dist/cjs/tecton-tab-pane.cjs.entry.js.map +1 -1
- package/dist/collection/components/q2-action-sheet/styles.css +1 -1
- package/dist/collection/components/q2-avatar/styles.css +1 -1
- package/dist/collection/components/q2-badge/styles.css +1 -1
- package/dist/collection/components/q2-btn/styles.css +18 -3
- package/dist/collection/components/q2-calendar/index.js +59 -10
- package/dist/collection/components/q2-calendar/index.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-month-picker.css +1 -1
- package/dist/collection/components/q2-calendar/styles.css +1 -1
- package/dist/collection/components/q2-card/styles.css +1 -1
- package/dist/collection/components/q2-carousel/styles.css +1 -1
- package/dist/collection/components/q2-carousel-pane/styles.css +1 -1
- package/dist/collection/components/q2-chart-area/styles.css +1 -1
- package/dist/collection/components/q2-chart-bar/styles.css +1 -1
- package/dist/collection/components/q2-chart-donut/index.js +12 -3
- package/dist/collection/components/q2-chart-donut/index.js.map +1 -1
- package/dist/collection/components/q2-chart-donut/styles.css +1 -1
- package/dist/collection/components/q2-checkbox/styles.css +84 -20
- package/dist/collection/components/q2-checkbox-group/index.js +10 -2
- package/dist/collection/components/q2-checkbox-group/index.js.map +1 -1
- package/dist/collection/components/q2-checkbox-group/styles.css +1 -1
- package/dist/collection/components/q2-data-table/index.js +6 -6
- package/dist/collection/components/q2-data-table/styles.css +1 -1
- package/dist/collection/components/q2-dropdown/styles.css +1 -1
- package/dist/collection/components/q2-dropdown-item/styles.css +1 -1
- package/dist/collection/components/q2-editable-field/index.js +44 -9
- package/dist/collection/components/q2-editable-field/index.js.map +1 -1
- package/dist/collection/components/q2-editable-field/styles.css +1 -1
- package/dist/collection/components/q2-icon/styles.css +1 -1
- package/dist/collection/components/q2-input/formatting/date.js +1 -1
- package/dist/collection/components/q2-input/formatting/date.js.map +1 -1
- package/dist/collection/components/q2-input/index.js +156 -16
- package/dist/collection/components/q2-input/index.js.map +1 -1
- package/dist/collection/components/q2-input/styles.css +64 -51
- package/dist/collection/components/q2-loading/styles.css +1 -1
- package/dist/collection/components/q2-loc/styles.css +1 -1
- package/dist/collection/components/q2-message/index.js +4 -1
- package/dist/collection/components/q2-message/index.js.map +1 -1
- package/dist/collection/components/q2-message/styles.css +1 -1
- package/dist/collection/components/q2-optgroup/styles.css +2 -2
- package/dist/collection/components/q2-option/styles.css +1 -1
- package/dist/collection/components/q2-option-list/index.js +19 -11
- package/dist/collection/components/q2-option-list/index.js.map +1 -1
- package/dist/collection/components/q2-option-list/styles.css +1 -1
- package/dist/collection/components/q2-pagination/styles.css +1 -1
- package/dist/collection/components/q2-pill/styles.css +7 -7
- package/dist/collection/components/q2-popover/index.js +90 -73
- package/dist/collection/components/q2-popover/index.js.map +1 -1
- package/dist/collection/components/q2-popover/styles.css +13 -13
- package/dist/collection/components/q2-radio/styles.css +36 -13
- package/dist/collection/components/q2-radio-group/index.js +10 -2
- package/dist/collection/components/q2-radio-group/index.js.map +1 -1
- package/dist/collection/components/q2-radio-group/styles.css +1 -1
- package/dist/collection/components/q2-section/styles.css +1 -1
- package/dist/collection/components/q2-select/index.js +96 -26
- package/dist/collection/components/q2-select/index.js.map +1 -1
- package/dist/collection/components/q2-select/styles.css +18 -10
- package/dist/collection/components/q2-stepper/styles.css +2 -12
- package/dist/collection/components/q2-stepper-pane/index.js +2 -2
- package/dist/collection/components/q2-stepper-pane/styles.css +1 -1
- package/dist/collection/components/q2-stepper-vertical/styles.css +1 -1
- package/dist/collection/components/q2-tab-container/index.js +14 -8
- package/dist/collection/components/q2-tab-container/index.js.map +1 -1
- package/dist/collection/components/q2-tab-container/styles.css +1 -1
- package/dist/collection/components/q2-tab-pane/styles.css +1 -1
- package/dist/collection/components/q2-tag/styles.css +4 -4
- package/dist/collection/components/q2-textarea/index.js +44 -8
- package/dist/collection/components/q2-textarea/index.js.map +1 -1
- package/dist/collection/components/q2-textarea/styles.css +69 -11
- package/dist/collection/components/q2-tooltip/styles.css +1 -1
- package/dist/collection/components/tecton-tab-pane/styles.css +1 -1
- package/dist/collection/utils/index.js +11 -1
- package/dist/collection/utils/index.js.map +1 -1
- package/dist/components/index10.js +1 -1
- package/dist/components/index10.js.map +1 -1
- package/dist/components/index11.js +5 -2
- package/dist/components/index11.js.map +1 -1
- package/dist/components/index12.js +1 -1
- package/dist/components/index12.js.map +1 -1
- package/dist/components/index13.js +1 -1
- package/dist/components/index13.js.map +1 -1
- package/dist/components/index14.js +18 -10
- package/dist/components/index14.js.map +1 -1
- package/dist/components/index15.js +69 -59
- package/dist/components/index15.js.map +1 -1
- package/dist/components/index16.js +12 -2
- package/dist/components/index16.js.map +1 -1
- package/dist/components/index3.js +1 -1
- package/dist/components/index3.js.map +1 -1
- package/dist/components/index4.js +1 -1
- package/dist/components/index4.js.map +1 -1
- package/dist/components/index5.js +1 -1
- package/dist/components/index5.js.map +1 -1
- package/dist/components/index6.js +1 -1
- package/dist/components/index6.js.map +1 -1
- package/dist/components/index7.js +1 -1
- package/dist/components/index7.js.map +1 -1
- package/dist/components/index8.js +1 -1
- package/dist/components/index8.js.map +1 -1
- package/dist/components/index9.js +127 -12
- package/dist/components/index9.js.map +1 -1
- package/dist/components/q2-action-sheet.js +1 -1
- package/dist/components/q2-action-sheet.js.map +1 -1
- package/dist/components/q2-calendar.js +37 -3
- package/dist/components/q2-calendar.js.map +1 -1
- package/dist/components/q2-card.js +1 -1
- package/dist/components/q2-card.js.map +1 -1
- package/dist/components/q2-carousel-pane.js +1 -1
- package/dist/components/q2-carousel-pane.js.map +1 -1
- package/dist/components/q2-carousel.js +1 -1
- package/dist/components/q2-carousel.js.map +1 -1
- package/dist/components/q2-chart-area.js +1 -1
- package/dist/components/q2-chart-area.js.map +1 -1
- package/dist/components/q2-chart-bar.js +1 -1
- package/dist/components/q2-chart-bar.js.map +1 -1
- package/dist/components/q2-chart-donut.js +10 -1
- package/dist/components/q2-chart-donut.js.map +1 -1
- package/dist/components/q2-checkbox-group.js +6 -1
- package/dist/components/q2-checkbox-group.js.map +1 -1
- package/dist/components/q2-data-table.js +1 -1
- package/dist/components/q2-data-table.js.map +1 -1
- package/dist/components/q2-dropdown.js +1 -1
- package/dist/components/q2-dropdown.js.map +1 -1
- package/dist/components/q2-editable-field.js +25 -2
- package/dist/components/q2-editable-field.js.map +1 -1
- package/dist/components/q2-loc.js +1 -1
- package/dist/components/q2-loc.js.map +1 -1
- package/dist/components/q2-month-picker.js +1 -1
- package/dist/components/q2-month-picker.js.map +1 -1
- package/dist/components/q2-pagination.js +1 -1
- package/dist/components/q2-pagination.js.map +1 -1
- package/dist/components/q2-pill.js +1 -1
- package/dist/components/q2-pill.js.map +1 -1
- package/dist/components/q2-radio-group.js +6 -1
- package/dist/components/q2-radio-group.js.map +1 -1
- package/dist/components/q2-radio.js +1 -1
- package/dist/components/q2-radio.js.map +1 -1
- package/dist/components/q2-section.js +1 -1
- package/dist/components/q2-section.js.map +1 -1
- package/dist/components/q2-select.js +74 -19
- package/dist/components/q2-select.js.map +1 -1
- package/dist/components/q2-stepper-pane.js +1 -1
- package/dist/components/q2-stepper-pane.js.map +1 -1
- package/dist/components/q2-stepper-vertical.js +1 -1
- package/dist/components/q2-stepper-vertical.js.map +1 -1
- package/dist/components/q2-stepper.js +1 -1
- package/dist/components/q2-stepper.js.map +1 -1
- package/dist/components/q2-tab-container.js +15 -9
- package/dist/components/q2-tab-container.js.map +1 -1
- package/dist/components/q2-tab-pane.js +1 -1
- package/dist/components/q2-tab-pane.js.map +1 -1
- package/dist/components/q2-tag.js +1 -1
- package/dist/components/q2-tag.js.map +1 -1
- package/dist/components/q2-textarea.js +38 -5
- package/dist/components/q2-textarea.js.map +1 -1
- package/dist/components/q2-tooltip.js +1 -1
- package/dist/components/q2-tooltip.js.map +1 -1
- package/dist/components/tecton-tab-pane.js +1 -1
- package/dist/components/tecton-tab-pane.js.map +1 -1
- package/dist/esm/click-elsewhere_2.entry.js +68 -58
- package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
- package/dist/esm/{index-74a659a5.js → index-84f1034e.js} +13 -3
- package/dist/esm/index-84f1034e.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-action-sheet.entry.js +2 -2
- package/dist/esm/q2-action-sheet.entry.js.map +1 -1
- package/dist/esm/q2-avatar.entry.js +1 -1
- package/dist/esm/q2-avatar.entry.js.map +1 -1
- package/dist/esm/q2-badge.entry.js +1 -1
- package/dist/esm/q2-badge.entry.js.map +1 -1
- package/dist/esm/q2-btn_2.entry.js +3 -3
- package/dist/esm/q2-btn_2.entry.js.map +1 -1
- package/dist/esm/q2-calendar.entry.js +38 -4
- package/dist/esm/q2-calendar.entry.js.map +1 -1
- package/dist/esm/q2-card.entry.js +2 -2
- package/dist/esm/q2-card.entry.js.map +1 -1
- package/dist/esm/q2-carousel-pane.entry.js +2 -2
- package/dist/esm/q2-carousel-pane.entry.js.map +1 -1
- package/dist/esm/q2-carousel.entry.js +2 -2
- package/dist/esm/q2-carousel.entry.js.map +1 -1
- package/dist/esm/q2-chart-area.entry.js +2 -2
- package/dist/esm/q2-chart-area.entry.js.map +1 -1
- package/dist/esm/q2-chart-bar.entry.js +2 -2
- package/dist/esm/q2-chart-bar.entry.js.map +1 -1
- package/dist/esm/q2-chart-donut.entry.js +11 -2
- package/dist/esm/q2-chart-donut.entry.js.map +1 -1
- package/dist/esm/q2-checkbox-group.entry.js +7 -2
- package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
- package/dist/esm/q2-checkbox.entry.js +2 -2
- package/dist/esm/q2-checkbox.entry.js.map +1 -1
- package/dist/esm/q2-data-table.entry.js +2 -2
- package/dist/esm/q2-data-table.entry.js.map +1 -1
- package/dist/esm/q2-dropdown-item.entry.js +2 -2
- package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
- package/dist/esm/q2-dropdown.entry.js +2 -2
- package/dist/esm/q2-dropdown.entry.js.map +1 -1
- package/dist/esm/q2-editable-field.entry.js +26 -3
- package/dist/esm/q2-editable-field.entry.js.map +1 -1
- package/dist/esm/q2-icon.entry.js +2 -2
- package/dist/esm/q2-icon.entry.js.map +1 -1
- package/dist/esm/q2-input.entry.js +125 -12
- package/dist/esm/q2-input.entry.js.map +1 -1
- package/dist/esm/q2-loc.entry.js +2 -2
- package/dist/esm/q2-loc.entry.js.map +1 -1
- package/dist/esm/q2-message.entry.js +5 -2
- package/dist/esm/q2-message.entry.js.map +1 -1
- package/dist/esm/q2-month-picker.entry.js +2 -2
- package/dist/esm/q2-month-picker.entry.js.map +1 -1
- package/dist/esm/q2-optgroup_2.entry.js +3 -3
- package/dist/esm/q2-optgroup_2.entry.js.map +1 -1
- package/dist/esm/q2-option-list.entry.js +19 -11
- package/dist/esm/q2-option-list.entry.js.map +1 -1
- package/dist/esm/q2-pagination.entry.js +2 -2
- package/dist/esm/q2-pagination.entry.js.map +1 -1
- package/dist/esm/q2-pill.entry.js +2 -2
- package/dist/esm/q2-pill.entry.js.map +1 -1
- package/dist/esm/q2-radio-group.entry.js +7 -2
- package/dist/esm/q2-radio-group.entry.js.map +1 -1
- package/dist/esm/q2-radio.entry.js +2 -2
- package/dist/esm/q2-radio.entry.js.map +1 -1
- package/dist/esm/q2-section.entry.js +2 -2
- package/dist/esm/q2-section.entry.js.map +1 -1
- package/dist/esm/q2-select.entry.js +73 -20
- package/dist/esm/q2-select.entry.js.map +1 -1
- package/dist/esm/q2-stepper-pane.entry.js +2 -2
- package/dist/esm/q2-stepper-pane.entry.js.map +1 -1
- package/dist/esm/q2-stepper-vertical.entry.js +2 -2
- package/dist/esm/q2-stepper-vertical.entry.js.map +1 -1
- package/dist/esm/q2-stepper.entry.js +2 -2
- package/dist/esm/q2-stepper.entry.js.map +1 -1
- package/dist/esm/q2-tab-container.entry.js +16 -10
- package/dist/esm/q2-tab-container.entry.js.map +1 -1
- package/dist/esm/q2-tab-pane.entry.js +1 -1
- package/dist/esm/q2-tab-pane.entry.js.map +1 -1
- package/dist/esm/q2-tag.entry.js +2 -2
- 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 +39 -6
- package/dist/esm/q2-textarea.entry.js.map +1 -1
- package/dist/esm/q2-tooltip.entry.js +2 -2
- package/dist/esm/q2-tooltip.entry.js.map +1 -1
- package/dist/esm/tecton-tab-pane.entry.js +1 -1
- package/dist/esm/tecton-tab-pane.entry.js.map +1 -1
- package/dist/q2-tecton-elements/p-059ea7c9.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-bfd69d42.entry.js.map → p-059ea7c9.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-072bda73.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-077107c1.entry.js.map → p-072bda73.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-0cade28b.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-47c60d4a.entry.js.map → p-0cade28b.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-0fb2be4c.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-536978fe.entry.js.map → p-0fb2be4c.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-107f07f2.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-4abbd0b1.entry.js.map → p-107f07f2.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-145849d0.entry.js +2 -0
- package/dist/q2-tecton-elements/p-145849d0.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-14e3c48f.entry.js +2 -0
- package/dist/q2-tecton-elements/p-14e3c48f.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-15179d55.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-46287c02.entry.js.map → p-15179d55.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-2812f9d2.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-58cdb9c7.entry.js.map → p-2812f9d2.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-29a7ca63.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-a52371cf.entry.js.map → p-29a7ca63.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-311f37e2.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-1c993698.entry.js.map → p-311f37e2.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-9ef2829e.entry.js → p-3d82d94f.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-9ef2829e.entry.js.map → p-3d82d94f.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-8e7b762a.entry.js → p-52132d80.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-8e7b762a.entry.js.map → p-52132d80.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-57e81863.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-e45856f7.entry.js.map → p-57e81863.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-5843f6c8.entry.js +2 -0
- package/dist/q2-tecton-elements/p-5843f6c8.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-5c033ed9.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-09d4b3d3.entry.js.map → p-5c033ed9.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-a60f82c0.entry.js → p-69dcf12e.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-a60f82c0.entry.js.map → p-69dcf12e.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-6ae87415.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-9d743327.entry.js.map → p-6ae87415.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-72b4ecc6.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-597f8656.entry.js.map → p-72b4ecc6.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-81b917a5.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-9c9a2550.entry.js.map → p-81b917a5.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-85dc889e.entry.js +2 -0
- package/dist/q2-tecton-elements/p-85dc889e.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-8f273db2.entry.js +2 -0
- package/dist/q2-tecton-elements/p-8f273db2.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-8f8d5362.entry.js +2 -0
- package/dist/q2-tecton-elements/p-8f8d5362.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-9220365b.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-6cacc879.entry.js.map → p-9220365b.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-75fd6df5.entry.js → p-959f47ef.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-75fd6df5.entry.js.map → p-959f47ef.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-9da0db14.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-6170e44c.entry.js.map → p-9da0db14.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-a09c90c1.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-efbe6c17.entry.js.map → p-a09c90c1.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-a4017e55.entry.js +2 -0
- package/dist/q2-tecton-elements/p-a4017e55.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-a6b03db1.entry.js +2 -0
- package/dist/q2-tecton-elements/p-a6b03db1.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-af98db79.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-59d34a17.entry.js.map → p-af98db79.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-e8858d0d.entry.js → p-b83568e7.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-b83568e7.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-bb0d4f5a.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-ff6afb42.entry.js.map → p-bb0d4f5a.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-c057134f.entry.js +2 -0
- package/dist/q2-tecton-elements/p-c057134f.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-d7fb3534.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-3505f25c.entry.js.map → p-d7fb3534.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-db3bbfb8.entry.js +2 -0
- package/dist/q2-tecton-elements/p-db3bbfb8.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-deb773a5.entry.js +2 -0
- package/dist/q2-tecton-elements/p-deb773a5.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-e4dadcd7.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-9a28b93a.entry.js.map → p-e4dadcd7.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-e98d9cf2.entry.js +2 -0
- package/dist/q2-tecton-elements/p-e98d9cf2.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-f198f77b.entry.js +2 -0
- package/dist/q2-tecton-elements/p-f198f77b.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-f34521a4.js +2 -0
- package/dist/q2-tecton-elements/p-f34521a4.js.map +1 -0
- package/dist/q2-tecton-elements/p-f3868a77.entry.js +2 -0
- package/dist/q2-tecton-elements/p-f3868a77.entry.js.map +1 -0
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
- package/dist/test/elements/q2-calendar-test.e2e.js +109 -47
- package/dist/test/elements/q2-calendar-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-checkbox-test.e2e.js +156 -0
- package/dist/test/elements/q2-checkbox-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-editable-field-test.e2e.js +27 -0
- package/dist/test/elements/q2-editable-field-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-input-test.e2e.js +88 -4
- package/dist/test/elements/q2-input-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-option-list-test.e2e.js +40 -10
- package/dist/test/elements/q2-option-list-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-popover-test.e2e.js +269 -79
- package/dist/test/elements/q2-popover-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-select-test.e2e.js +117 -42
- package/dist/test/elements/q2-select-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-tab-container-test.e2e.js +2 -2
- package/dist/test/elements/q2-tab-container-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-textarea-test.e2e.js +879 -199
- package/dist/test/elements/q2-textarea-test.e2e.js.map +1 -1
- package/dist/test/helpers.js +2 -1
- package/dist/test/helpers.js.map +1 -1
- package/dist/types/components/q2-calendar/index.d.ts +31 -0
- package/dist/types/components/q2-chart-donut/index.d.ts +9 -0
- package/dist/types/components/q2-checkbox-group/index.d.ts +5 -0
- package/dist/types/components/q2-editable-field/index.d.ts +23 -0
- package/dist/types/components/q2-input/index.d.ts +28 -2
- package/dist/types/components/q2-message/index.d.ts +3 -0
- package/dist/types/components/q2-popover/index.d.ts +9 -1
- package/dist/types/components/q2-radio-group/index.d.ts +5 -0
- package/dist/types/components/q2-select/index.d.ts +33 -3
- package/dist/types/components/q2-textarea/index.d.ts +12 -1
- package/dist/types/components.d.ts +93 -2
- package/dist/types/global.d.ts +2 -1
- package/dist/types/utils/index.d.ts +1 -0
- package/package.json +3 -3
- package/dist/cjs/index-6f9f259c.js.map +0 -1
- package/dist/docs.d.ts +0 -322
- package/dist/docs.json +0 -10294
- package/dist/esm/index-74a659a5.js.map +0 -1
- package/dist/q2-tecton-elements/p-077107c1.entry.js +0 -2
- package/dist/q2-tecton-elements/p-09d4b3d3.entry.js +0 -2
- package/dist/q2-tecton-elements/p-0d4aec6e.entry.js +0 -2
- package/dist/q2-tecton-elements/p-0d4aec6e.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-1c993698.entry.js +0 -2
- package/dist/q2-tecton-elements/p-252889b7.entry.js +0 -2
- package/dist/q2-tecton-elements/p-252889b7.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-25bd1b18.entry.js +0 -2
- package/dist/q2-tecton-elements/p-25bd1b18.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-2a975246.entry.js +0 -2
- package/dist/q2-tecton-elements/p-2a975246.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-30facf35.entry.js +0 -2
- package/dist/q2-tecton-elements/p-30facf35.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-3505f25c.entry.js +0 -2
- package/dist/q2-tecton-elements/p-46287c02.entry.js +0 -2
- package/dist/q2-tecton-elements/p-47c60d4a.entry.js +0 -2
- package/dist/q2-tecton-elements/p-4abbd0b1.entry.js +0 -2
- package/dist/q2-tecton-elements/p-536978fe.entry.js +0 -2
- package/dist/q2-tecton-elements/p-570c1d3d.entry.js +0 -2
- package/dist/q2-tecton-elements/p-570c1d3d.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-578e3f98.entry.js +0 -2
- package/dist/q2-tecton-elements/p-578e3f98.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-58cdb9c7.entry.js +0 -2
- package/dist/q2-tecton-elements/p-597f8656.entry.js +0 -2
- package/dist/q2-tecton-elements/p-59d34a17.entry.js +0 -2
- package/dist/q2-tecton-elements/p-5bc4d94c.entry.js +0 -2
- package/dist/q2-tecton-elements/p-5bc4d94c.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-6170e44c.entry.js +0 -2
- package/dist/q2-tecton-elements/p-67f33354.entry.js +0 -2
- package/dist/q2-tecton-elements/p-67f33354.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-680929be.entry.js +0 -2
- package/dist/q2-tecton-elements/p-680929be.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-6cacc879.entry.js +0 -2
- package/dist/q2-tecton-elements/p-7366d36d.entry.js +0 -2
- package/dist/q2-tecton-elements/p-7366d36d.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-9a28b93a.entry.js +0 -2
- package/dist/q2-tecton-elements/p-9c9a2550.entry.js +0 -2
- package/dist/q2-tecton-elements/p-9d743327.entry.js +0 -2
- package/dist/q2-tecton-elements/p-a52371cf.entry.js +0 -2
- package/dist/q2-tecton-elements/p-a53e9f1e.entry.js +0 -2
- package/dist/q2-tecton-elements/p-a53e9f1e.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-ac82ea35.entry.js +0 -2
- package/dist/q2-tecton-elements/p-ac82ea35.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-bfd69d42.entry.js +0 -2
- package/dist/q2-tecton-elements/p-db6921fb.entry.js +0 -2
- package/dist/q2-tecton-elements/p-db6921fb.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-e45856f7.entry.js +0 -2
- package/dist/q2-tecton-elements/p-e8858d0d.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-ef856249.js +0 -2
- package/dist/q2-tecton-elements/p-ef856249.js.map +0 -1
- package/dist/q2-tecton-elements/p-efbe6c17.entry.js +0 -2
- package/dist/q2-tecton-elements/p-ff6afb42.entry.js +0 -2
- /package/dist/types/workspace/workspace/{tecton-production_release_1.37.x → tecton-production_release_1.38.x}/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +0 -0
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
*:focus {
|
|
10
10
|
outline: none;
|
|
11
|
-
box-shadow: var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #
|
|
11
|
+
box-shadow: var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc);
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
:host {
|
|
@@ -102,23 +102,23 @@ q2-popover,
|
|
|
102
102
|
--comp-btn-color: var(--tct-pill-active-btn-color, var(--t-pill-active-btn-color, var(--t-base, #ffffff)));
|
|
103
103
|
}
|
|
104
104
|
:host([theme=primary]) .btn-wrapper {
|
|
105
|
-
--comp-active-btn-background: var(--tct-pill-primary-active-background, var(--t-primary
|
|
105
|
+
--comp-active-btn-background: var(--tct-pill-primary-active-background, var(--t-primary, #61c4ff));
|
|
106
106
|
--comp-active-btn-color: var(--tct-pill-primary-active-font-color, var(--t-primary-text, #ffffff));
|
|
107
|
-
--comp-active-btn-border-color: var(--tct-pill-primary-active-border-color, var(--t-primary
|
|
107
|
+
--comp-active-btn-border-color: var(--tct-pill-primary-active-border-color, var(--t-primary, #61c4ff));
|
|
108
108
|
--comp-hover-active-btn-background: var(--tct-pill-primary-active-hover-background, var(--t-primary-l3, #21acff));
|
|
109
109
|
--comp-hover-active-btn-border-color: var(--tct-pill-primary-active-hover-border-color, var(--t-primary-l3, #21acff));
|
|
110
110
|
}
|
|
111
111
|
:host([theme=secondary]) .btn-wrapper {
|
|
112
|
-
--comp-active-btn-background: var(--tct-pill-secondary-active-background, var(--t-secondary
|
|
112
|
+
--comp-active-btn-background: var(--tct-pill-secondary-active-background, var(--t-secondary, #d9e1e6));
|
|
113
113
|
--comp-active-btn-color: var(--tct-pill-secondary-active-font-color, var(--t-secondary-text, #141414));
|
|
114
|
-
--comp-active-btn-border-color: var(--tct-pill-secondary-active-border-color, var(--t-secondary
|
|
114
|
+
--comp-active-btn-border-color: var(--tct-pill-secondary-active-border-color, var(--t-secondary, #d9e1e6));
|
|
115
115
|
--comp-hover-active-btn-background: var(--tct-pill-secondary-active-hover-background, var(--t-secondary-l3, #c9d5db));
|
|
116
116
|
--comp-hover-active-btn-border-color: var(--tct-pill-secondary-active-hover-border-color, var(--t-secondary-l3, #c9d5db));
|
|
117
117
|
}
|
|
118
118
|
:host([theme=tertiary]) .btn-wrapper {
|
|
119
|
-
--comp-active-btn-background: var(--tct-pill-tertiary-active-background, var(--t-tertiary
|
|
119
|
+
--comp-active-btn-background: var(--tct-pill-tertiary-active-background, var(--t-tertiary, #f4fafe));
|
|
120
120
|
--comp-active-btn-color: var(--tct-pill-tertiary-active-font-color, var(--t-tertiary-text, #141414));
|
|
121
|
-
--comp-active-btn-border-color: var(--tct-pill-tertiary-active-border-color, var(--t-tertiary
|
|
121
|
+
--comp-active-btn-border-color: var(--tct-pill-tertiary-active-border-color, var(--t-tertiary, #f4fafe));
|
|
122
122
|
--comp-hover-active-btn-background: var(--tct-pill-tertiary-active-hover-background, var(--t-tertiary-l3, #eff8fd));
|
|
123
123
|
--comp-hover-active-btn-border-color: var(--tct-pill-tertiary-active-hover-border-color, var(--t-tertiary-l3, #eff8fd));
|
|
124
124
|
}
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
import { h, } from '@stencil/core';
|
|
2
|
-
import { resizeIframe, waitForNextPaint } from '../../utils';
|
|
2
|
+
import { nextPaint, resizeIframe, waitForNextPaint, handleDeprecationWarning } from '../../utils';
|
|
3
3
|
export class Q2Popover {
|
|
4
4
|
constructor() {
|
|
5
5
|
this.scheduledAfterRender = [];
|
|
6
|
+
/**
|
|
7
|
+
* The number of pixels to leave between the popover and the edge of the viewport
|
|
8
|
+
*/
|
|
9
|
+
this.displayBuffer = 10;
|
|
6
10
|
/// Helpers ///
|
|
11
|
+
this.handleMinHeight = () => {
|
|
12
|
+
if (this.minHeight) {
|
|
13
|
+
handleDeprecationWarning(this, 'minHeight', 'prop');
|
|
14
|
+
}
|
|
15
|
+
};
|
|
7
16
|
this.viewPortChanged = () => {
|
|
8
17
|
if (!this.open)
|
|
9
18
|
return;
|
|
@@ -13,13 +22,14 @@ export class Q2Popover {
|
|
|
13
22
|
this.align = undefined;
|
|
14
23
|
this.open = undefined;
|
|
15
24
|
this.block = undefined;
|
|
16
|
-
this.minHeight = undefined;
|
|
17
25
|
this.controlElement = undefined;
|
|
26
|
+
this.minHeight = undefined;
|
|
18
27
|
this.currentDirection = undefined;
|
|
19
28
|
this.show = false;
|
|
20
29
|
}
|
|
21
30
|
/// Lifecycle hooks ///
|
|
22
31
|
componentDidLoad() {
|
|
32
|
+
this.handleMinHeight();
|
|
23
33
|
if (this.open)
|
|
24
34
|
this.determinePopDirection();
|
|
25
35
|
}
|
|
@@ -50,11 +60,16 @@ export class Q2Popover {
|
|
|
50
60
|
else {
|
|
51
61
|
this.removeViewportListeners();
|
|
52
62
|
this.currentDirection = undefined;
|
|
53
|
-
this.containerElement.style.removeProperty('display');
|
|
54
|
-
this.containerElement.style.removeProperty('--comp-pop-max-height');
|
|
55
63
|
this.show = false;
|
|
64
|
+
nextPaint(() => {
|
|
65
|
+
this.containerElement.style.removeProperty('--comp-pop-max-height');
|
|
66
|
+
this.containerElement.style.removeProperty('display');
|
|
67
|
+
});
|
|
56
68
|
}
|
|
57
69
|
}
|
|
70
|
+
minHeightProvided() {
|
|
71
|
+
this.handleMinHeight();
|
|
72
|
+
}
|
|
58
73
|
/// Listeners ///
|
|
59
74
|
popoverStateHandler(event) {
|
|
60
75
|
const { detail: { open }, } = event;
|
|
@@ -78,71 +93,67 @@ export class Q2Popover {
|
|
|
78
93
|
this.currentDirection = direction;
|
|
79
94
|
this.show = true;
|
|
80
95
|
}
|
|
96
|
+
get isModule() {
|
|
97
|
+
var _a, _b;
|
|
98
|
+
const isIframe = window !== window.top;
|
|
99
|
+
const hasPlatformDimensions = Object.keys((_b = (_a = window.Tecton) === null || _a === void 0 ? void 0 : _a.platformDimensions) !== null && _b !== void 0 ? _b : {}).length > 0;
|
|
100
|
+
return isIframe && hasPlatformDimensions;
|
|
101
|
+
}
|
|
81
102
|
async determinePopDirection() {
|
|
82
|
-
var _a, _b
|
|
83
|
-
const { containerElement,
|
|
103
|
+
var _a, _b;
|
|
104
|
+
const { containerElement, direction, controlElement, displayBuffer } = this;
|
|
84
105
|
if (containerElement)
|
|
85
106
|
containerElement.style.maxHeight = null;
|
|
86
|
-
//
|
|
87
|
-
const currentOrStatedDirection = direction !== null && direction !== void 0 ? direction : currentDirection;
|
|
88
|
-
// Set the container to block so we can get the height
|
|
107
|
+
// Show the container so we can get the height
|
|
89
108
|
containerElement.style.setProperty('display', 'block');
|
|
90
109
|
await waitForNextPaint();
|
|
91
|
-
|
|
92
|
-
const { top:
|
|
110
|
+
const { isModule } = this;
|
|
111
|
+
const { top: controlTop, bottom: controlBottom } = (_a = controlElement === null || controlElement === void 0 ? void 0 : controlElement.getBoundingClientRect()) !== null && _a !== void 0 ? _a : {
|
|
93
112
|
top: 0,
|
|
94
|
-
|
|
113
|
+
bottom: 0,
|
|
95
114
|
};
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
else if (currentOrStatedDirection === undefined && canShowFullSizeAbove)
|
|
114
|
-
determinedDirection = 'up';
|
|
115
|
-
if (determinedDirection)
|
|
116
|
-
return this.setDirectionAndShow(determinedDirection);
|
|
117
|
-
// If full size will not fit then make it as tall as possible
|
|
118
|
-
const { minHeight = 150 } = this;
|
|
119
|
-
const displayBuffer = 5;
|
|
120
|
-
const canShowMinHeightBelow = bottomOffset >= minHeight + displayBuffer;
|
|
121
|
-
let maxHeight;
|
|
122
|
-
if (currentOrStatedDirection === 'down') {
|
|
123
|
-
maxHeight = Math.max(bottomOffset - displayBuffer, minHeight);
|
|
124
|
-
determinedDirection = 'down';
|
|
125
|
-
}
|
|
126
|
-
else if (currentOrStatedDirection === 'up') {
|
|
127
|
-
maxHeight = Math.max(topOffset - displayBuffer, minHeight);
|
|
128
|
-
determinedDirection = 'up';
|
|
129
|
-
}
|
|
130
|
-
else if (canShowMinHeightBelow) {
|
|
131
|
-
maxHeight = Math.max(bottomOffset - displayBuffer, minHeight);
|
|
132
|
-
determinedDirection = 'down';
|
|
115
|
+
let windowHeight;
|
|
116
|
+
let maxSpaceAbove;
|
|
117
|
+
let maxSpaceBelow;
|
|
118
|
+
if (isModule) {
|
|
119
|
+
const platformDimensions = (_b = window.Tecton) === null || _b === void 0 ? void 0 : _b.platformDimensions;
|
|
120
|
+
const distanceToIframeBottom = window.visualViewport.height - controlBottom;
|
|
121
|
+
const viewableSpaceBelow = platformDimensions.innerHeight - (platformDimensions.outletOffset + controlBottom);
|
|
122
|
+
const isIframeShorterThanWindow = distanceToIframeBottom < viewableSpaceBelow;
|
|
123
|
+
windowHeight = platformDimensions.innerHeight;
|
|
124
|
+
// If the top of the module is below the top of the window we just use the controlTop
|
|
125
|
+
// Otherwise we need to add the outletOffset to the controlTop
|
|
126
|
+
maxSpaceAbove =
|
|
127
|
+
(platformDimensions.outletOffset > 0 ? controlTop : controlTop + platformDimensions.outletOffset) -
|
|
128
|
+
displayBuffer;
|
|
129
|
+
maxSpaceBelow = isIframeShorterThanWindow
|
|
130
|
+
? distanceToIframeBottom - displayBuffer
|
|
131
|
+
: viewableSpaceBelow - displayBuffer;
|
|
133
132
|
}
|
|
134
133
|
else {
|
|
135
|
-
|
|
136
|
-
|
|
134
|
+
windowHeight = window.visualViewport.height;
|
|
135
|
+
maxSpaceAbove = controlTop - displayBuffer;
|
|
136
|
+
maxSpaceBelow = windowHeight - controlBottom - displayBuffer;
|
|
137
|
+
}
|
|
138
|
+
const directionWithMostSpace = maxSpaceAbove > maxSpaceBelow ? 'up' : 'down';
|
|
139
|
+
switch (direction !== null && direction !== void 0 ? direction : directionWithMostSpace) {
|
|
140
|
+
case 'up':
|
|
141
|
+
containerElement.style.setProperty('--comp-pop-max-height', `${maxSpaceAbove}px`);
|
|
142
|
+
return this.setDirectionAndShow('up');
|
|
143
|
+
case 'down':
|
|
144
|
+
containerElement.style.setProperty('--comp-pop-max-height', `${maxSpaceBelow}px`);
|
|
145
|
+
return this.setDirectionAndShow('down');
|
|
146
|
+
default:
|
|
147
|
+
break;
|
|
137
148
|
}
|
|
138
|
-
containerElement.style.setProperty('--comp-pop-max-height', `${maxHeight}px`);
|
|
139
|
-
return this.setDirectionAndShow(determinedDirection);
|
|
140
149
|
}
|
|
141
150
|
determinePopOffset() {
|
|
142
|
-
var _a;
|
|
143
151
|
const { controlElement, containerElement } = this;
|
|
144
|
-
const
|
|
145
|
-
|
|
152
|
+
const controlStyle = getComputedStyle(controlElement);
|
|
153
|
+
const controlSize = parseInt(controlStyle.height) +
|
|
154
|
+
parseInt(controlStyle.borderTopWidth) +
|
|
155
|
+
parseInt(controlStyle.borderBottomWidth);
|
|
156
|
+
containerElement.style.setProperty('--comp-pop-offset', `${controlSize}px`);
|
|
146
157
|
}
|
|
147
158
|
/// DOM ///
|
|
148
159
|
render() {
|
|
@@ -233,23 +244,6 @@ export class Q2Popover {
|
|
|
233
244
|
"attribute": "block",
|
|
234
245
|
"reflect": true
|
|
235
246
|
},
|
|
236
|
-
"minHeight": {
|
|
237
|
-
"type": "number",
|
|
238
|
-
"mutable": false,
|
|
239
|
-
"complexType": {
|
|
240
|
-
"original": "number",
|
|
241
|
-
"resolved": "number",
|
|
242
|
-
"references": {}
|
|
243
|
-
},
|
|
244
|
-
"required": false,
|
|
245
|
-
"optional": false,
|
|
246
|
-
"docs": {
|
|
247
|
-
"tags": [],
|
|
248
|
-
"text": ""
|
|
249
|
-
},
|
|
250
|
-
"attribute": "min-height",
|
|
251
|
-
"reflect": false
|
|
252
|
-
},
|
|
253
247
|
"controlElement": {
|
|
254
248
|
"type": "unknown",
|
|
255
249
|
"mutable": false,
|
|
@@ -268,6 +262,26 @@ export class Q2Popover {
|
|
|
268
262
|
"tags": [],
|
|
269
263
|
"text": ""
|
|
270
264
|
}
|
|
265
|
+
},
|
|
266
|
+
"minHeight": {
|
|
267
|
+
"type": "number",
|
|
268
|
+
"mutable": false,
|
|
269
|
+
"complexType": {
|
|
270
|
+
"original": "number",
|
|
271
|
+
"resolved": "number",
|
|
272
|
+
"references": {}
|
|
273
|
+
},
|
|
274
|
+
"required": false,
|
|
275
|
+
"optional": false,
|
|
276
|
+
"docs": {
|
|
277
|
+
"tags": [{
|
|
278
|
+
"name": "deprecated",
|
|
279
|
+
"text": undefined
|
|
280
|
+
}],
|
|
281
|
+
"text": ""
|
|
282
|
+
},
|
|
283
|
+
"attribute": "min-height",
|
|
284
|
+
"reflect": false
|
|
271
285
|
}
|
|
272
286
|
};
|
|
273
287
|
}
|
|
@@ -342,6 +356,9 @@ export class Q2Popover {
|
|
|
342
356
|
return [{
|
|
343
357
|
"propName": "open",
|
|
344
358
|
"methodName": "openChanged"
|
|
359
|
+
}, {
|
|
360
|
+
"propName": "minHeight",
|
|
361
|
+
"methodName": "minHeightProvided"
|
|
345
362
|
}];
|
|
346
363
|
}
|
|
347
364
|
static get listeners() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/q2-popover/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Prop,\n h,\n ComponentInterface,\n Element,\n Watch,\n Method,\n Listen,\n EventEmitter,\n Event,\n State,\n} from '@stencil/core';\nimport { resizeIframe, waitForNextPaint } from '../../utils';\n\n@Component({\n tag: 'q2-popover',\n shadow: true,\n styleUrl: 'styles.scss',\n})\nexport class Q2Popover implements ComponentInterface {\n @Prop({ reflect: true }) direction: 'up' | 'down';\n @Prop({ reflect: true }) align: 'left' | 'right';\n @Prop({ reflect: true, mutable: true }) open: boolean;\n @Prop({ reflect: true }) block: boolean;\n @Prop() minHeight: number;\n @Prop() controlElement: HTMLElement;\n\n @Element() hostElement: HTMLElement;\n @Event() popoverStateChanged: EventEmitter<{ open: boolean }>;\n\n @State() currentDirection: 'down' | 'up' = undefined;\n @State() show: boolean = false;\n containerElement: HTMLDivElement;\n contentElement: HTMLDivElement;\n scheduledAfterRender: (() => void)[] = [];\n\n /// Lifecycle hooks ///\n componentDidLoad() {\n if (this.open) this.determinePopDirection();\n }\n\n componentDidRender() {\n setTimeout(() => {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }, 25);\n }\n\n disconnectedCallback() {\n this.removeViewportListeners();\n }\n\n /// Methods ///\n @Method()\n async toggle() {\n this.open = !this.open;\n }\n\n @Method()\n async scrollContainerTo(options: ScrollToOptions) {\n this.containerElement.scrollTo(options);\n }\n\n /// Watchers ///\n @Watch('open')\n openChanged(open) {\n this.popoverStateChanged.emit({ open });\n this.scheduledAfterRender.push(resizeIframe);\n if (open) {\n this.addViewportListeners();\n this.determinePopDirection();\n } else {\n this.removeViewportListeners();\n this.currentDirection = undefined;\n this.containerElement.style.removeProperty('display');\n this.containerElement.style.removeProperty('--comp-pop-max-height');\n this.show = false;\n }\n }\n\n /// Listeners ///\n @Listen('popoverState')\n popoverStateHandler(event: CustomEvent<{ open: boolean }>) {\n const {\n detail: { open },\n } = event;\n if (open === this.open) return;\n\n this.open = open;\n event.stopPropagation();\n }\n\n /// Helpers ///\n viewPortChanged = () => {\n if (!this.open) return;\n this.determinePopDirection();\n };\n\n addViewportListeners() {\n // window.visualViewport.addEventListener('scroll', this.viewPortChanged);\n window.visualViewport.addEventListener('resize', this.viewPortChanged);\n }\n\n removeViewportListeners() {\n // window.visualViewport.removeEventListener('scroll', this.viewPortChanged);\n window.visualViewport.removeEventListener('resize', this.viewPortChanged);\n }\n\n async setDirectionAndShow(direction: 'up' | 'down') {\n if (direction === 'up') {\n this.determinePopOffset();\n }\n\n this.currentDirection = direction;\n this.show = true;\n }\n\n async determinePopDirection() {\n const { containerElement, contentElement, direction, controlElement, currentDirection } = this;\n if (containerElement) containerElement.style.maxHeight = null;\n\n // If the direction is already set then use it, otherwise use the current direction\n const currentOrStatedDirection = direction ?? currentDirection;\n\n // Set the container to block so we can get the height\n containerElement.style.setProperty('display', 'block');\n await waitForNextPaint();\n\n // Determine the dimensions of the control element\n const { top: topOffset, height } = controlElement?.getBoundingClientRect() ?? {\n top: 0,\n height: 0,\n };\n\n const contentHeight = contentElement.clientHeight;\n const scrollY =\n window.Tecton?.platformDimensions?.scrollY ||\n window.visualViewport?.offsetTop || // Only Android Chrome provides this which we need when scrolled\n 0;\n const outletOffset = scrollY + (window.Tecton?.platformDimensions?.outletOffset || 0);\n const innerHeight =\n window.Tecton?.platformDimensions?.innerHeight || window.visualViewport?.height || window.innerHeight;\n const bottomOffset = scrollY + innerHeight - topOffset - height - outletOffset;\n const canShowFullSizeBelow = bottomOffset > contentHeight;\n const canShowFullSizeAbove = contentHeight <= topOffset;\n let determinedDirection: 'up' | 'down';\n\n // Show the full-size popover below or above if it will fit\n if (currentOrStatedDirection === 'down' && canShowFullSizeBelow) return this.setDirectionAndShow('down');\n else if (currentOrStatedDirection === 'up' && canShowFullSizeAbove) return this.setDirectionAndShow('up');\n else if (currentOrStatedDirection === undefined && canShowFullSizeBelow) determinedDirection = 'down';\n else if (currentOrStatedDirection === undefined && canShowFullSizeAbove) determinedDirection = 'up';\n\n if (determinedDirection) return this.setDirectionAndShow(determinedDirection);\n\n // If full size will not fit then make it as tall as possible\n const { minHeight = 150 } = this;\n const displayBuffer = 5;\n const canShowMinHeightBelow = bottomOffset >= minHeight + displayBuffer;\n\n let maxHeight;\n if (currentOrStatedDirection === 'down') {\n maxHeight = Math.max(bottomOffset - displayBuffer, minHeight);\n determinedDirection = 'down';\n } else if (currentOrStatedDirection === 'up') {\n maxHeight = Math.max(topOffset - displayBuffer, minHeight);\n determinedDirection = 'up';\n } else if (canShowMinHeightBelow) {\n maxHeight = Math.max(bottomOffset - displayBuffer, minHeight);\n determinedDirection = 'down';\n } else {\n maxHeight = Math.max(topOffset - scrollY - displayBuffer, minHeight);\n determinedDirection = 'up';\n }\n containerElement.style.setProperty('--comp-pop-max-height', `${maxHeight}px`);\n return this.setDirectionAndShow(determinedDirection);\n }\n\n determinePopOffset() {\n const { controlElement, containerElement } = this;\n const dropdownHeight = controlElement?.getBoundingClientRect().height ?? 0;\n containerElement.style.setProperty('--comp-pop-offset', `${dropdownHeight}px`);\n }\n\n /// DOM ///\n render() {\n const containerClasses = ['container', this.currentDirection];\n if (this.show) containerClasses.push('show');\n\n return (\n <div\n ref={el => (this.containerElement = el)}\n class={containerClasses.join(' ')}\n test-id=\"outerContainer\"\n >\n <div\n ref={el => (this.contentElement = el)}\n class=\"content\"\n >\n <slot />\n </div>\n </div>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/q2-popover/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Prop,\n h,\n ComponentInterface,\n Element,\n Watch,\n Method,\n Listen,\n EventEmitter,\n Event,\n State,\n} from '@stencil/core';\nimport { nextPaint, resizeIframe, waitForNextPaint, handleDeprecationWarning } from '../../utils';\n\n@Component({\n tag: 'q2-popover',\n shadow: true,\n styleUrl: 'styles.scss',\n})\nexport class Q2Popover implements ComponentInterface {\n @Prop({ reflect: true }) direction: 'up' | 'down';\n @Prop({ reflect: true }) align: 'left' | 'right';\n @Prop({ reflect: true, mutable: true }) open: boolean;\n @Prop({ reflect: true }) block: boolean;\n @Prop() controlElement: HTMLElement;\n\n /** @deprecated */\n @Prop() minHeight: number;\n\n @Element() hostElement: HTMLElement;\n @Event() popoverStateChanged: EventEmitter<{ open: boolean }>;\n\n @State() currentDirection: 'down' | 'up' = undefined;\n @State() show: boolean = false;\n containerElement: HTMLDivElement;\n contentElement: HTMLDivElement;\n scheduledAfterRender: (() => void)[] = [];\n\n /**\n * The number of pixels to leave between the popover and the edge of the viewport\n */\n displayBuffer = 10;\n\n /// Lifecycle hooks ///\n componentDidLoad() {\n this.handleMinHeight();\n if (this.open) this.determinePopDirection();\n }\n\n componentDidRender() {\n setTimeout(() => {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n }, 25);\n }\n\n disconnectedCallback() {\n this.removeViewportListeners();\n }\n\n /// Methods ///\n @Method()\n async toggle() {\n this.open = !this.open;\n }\n\n @Method()\n async scrollContainerTo(options: ScrollToOptions) {\n this.containerElement.scrollTo(options);\n }\n\n /// Watchers ///\n @Watch('open')\n openChanged(open) {\n this.popoverStateChanged.emit({ open });\n this.scheduledAfterRender.push(resizeIframe);\n if (open) {\n this.addViewportListeners();\n this.determinePopDirection();\n } else {\n this.removeViewportListeners();\n this.currentDirection = undefined;\n this.show = false;\n nextPaint(() => {\n this.containerElement.style.removeProperty('--comp-pop-max-height');\n this.containerElement.style.removeProperty('display');\n });\n }\n }\n\n @Watch('minHeight')\n minHeightProvided() {\n this.handleMinHeight();\n }\n\n /// Listeners ///\n @Listen('popoverState')\n popoverStateHandler(event: CustomEvent<{ open: boolean }>) {\n const {\n detail: { open },\n } = event;\n if (open === this.open) return;\n\n this.open = open;\n event.stopPropagation();\n }\n\n /// Helpers ///\n handleMinHeight = () => {\n if (this.minHeight) {\n handleDeprecationWarning(this, 'minHeight', 'prop');\n }\n };\n\n viewPortChanged = () => {\n if (!this.open) return;\n this.determinePopDirection();\n };\n\n addViewportListeners() {\n // window.visualViewport.addEventListener('scroll', this.viewPortChanged);\n window.visualViewport.addEventListener('resize', this.viewPortChanged);\n }\n\n removeViewportListeners() {\n // window.visualViewport.removeEventListener('scroll', this.viewPortChanged);\n window.visualViewport.removeEventListener('resize', this.viewPortChanged);\n }\n\n async setDirectionAndShow(direction: 'up' | 'down') {\n if (direction === 'up') {\n this.determinePopOffset();\n }\n\n this.currentDirection = direction;\n this.show = true;\n }\n\n get isModule() {\n const isIframe = window !== window.top;\n const hasPlatformDimensions = Object.keys(window.Tecton?.platformDimensions ?? {}).length > 0;\n return isIframe && hasPlatformDimensions;\n }\n\n async determinePopDirection() {\n const { containerElement, direction, controlElement, displayBuffer } = this;\n if (containerElement) containerElement.style.maxHeight = null;\n\n // Show the container so we can get the height\n containerElement.style.setProperty('display', 'block');\n await waitForNextPaint();\n\n const { isModule } = this;\n const { top: controlTop, bottom: controlBottom } = controlElement?.getBoundingClientRect() ?? {\n top: 0,\n bottom: 0,\n };\n\n let windowHeight: number;\n let maxSpaceAbove: number;\n let maxSpaceBelow: number;\n\n if (isModule) {\n const platformDimensions = window.Tecton?.platformDimensions;\n const distanceToIframeBottom = window.visualViewport.height - controlBottom;\n const viewableSpaceBelow =\n platformDimensions.innerHeight - (platformDimensions.outletOffset + controlBottom);\n const isIframeShorterThanWindow = distanceToIframeBottom < viewableSpaceBelow;\n windowHeight = platformDimensions.innerHeight;\n // If the top of the module is below the top of the window we just use the controlTop\n // Otherwise we need to add the outletOffset to the controlTop\n maxSpaceAbove =\n (platformDimensions.outletOffset > 0 ? controlTop : controlTop + platformDimensions.outletOffset) -\n displayBuffer;\n maxSpaceBelow = isIframeShorterThanWindow\n ? distanceToIframeBottom - displayBuffer\n : viewableSpaceBelow - displayBuffer;\n } else {\n windowHeight = window.visualViewport.height;\n maxSpaceAbove = controlTop - displayBuffer;\n maxSpaceBelow = windowHeight - controlBottom - displayBuffer;\n }\n\n const directionWithMostSpace: 'up' | 'down' = maxSpaceAbove > maxSpaceBelow ? 'up' : 'down';\n switch (direction ?? directionWithMostSpace) {\n case 'up':\n containerElement.style.setProperty('--comp-pop-max-height', `${maxSpaceAbove}px`);\n return this.setDirectionAndShow('up');\n case 'down':\n containerElement.style.setProperty('--comp-pop-max-height', `${maxSpaceBelow}px`);\n return this.setDirectionAndShow('down');\n default:\n break;\n }\n }\n\n determinePopOffset() {\n const { controlElement, containerElement } = this;\n const controlStyle = getComputedStyle(controlElement);\n const controlSize =\n parseInt(controlStyle.height) +\n parseInt(controlStyle.borderTopWidth) +\n parseInt(controlStyle.borderBottomWidth);\n\n containerElement.style.setProperty('--comp-pop-offset', `${controlSize}px`);\n }\n\n /// DOM ///\n render() {\n const containerClasses = ['container', this.currentDirection];\n if (this.show) containerClasses.push('show');\n\n return (\n <div\n ref={el => (this.containerElement = el)}\n class={containerClasses.join(' ')}\n test-id=\"outerContainer\"\n >\n <div\n ref={el => (this.contentElement = el)}\n class=\"content\"\n >\n <slot />\n </div>\n </div>\n );\n }\n}\n"]}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
*:focus {
|
|
10
10
|
outline: none;
|
|
11
|
-
box-shadow: var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #
|
|
11
|
+
box-shadow: var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc);
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
:host {
|
|
@@ -84,17 +84,20 @@ button {
|
|
|
84
84
|
opacity: 0;
|
|
85
85
|
height: 0;
|
|
86
86
|
position: absolute;
|
|
87
|
-
top: var(--tct-popover-top,
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
z-index: var(--tct-popover-z-index, var(--t-popover-z-index, 100));
|
|
87
|
+
top: var(--tct-popover-top, initial);
|
|
88
|
+
background: var(--tct-popover-background, var(--app-white, #ffffff));
|
|
89
|
+
color: var(--tct-popover-font-color, var(--t-text, #4d4d4d));
|
|
90
|
+
z-index: var(--tct-popover-z-index, 100);
|
|
92
91
|
width: max-content;
|
|
93
|
-
min-width: var(--tct-popover-min-width,
|
|
94
|
-
box-shadow: var(--tct-popover-box-shadow, var(--
|
|
92
|
+
min-width: var(--tct-popover-min-width, 135px);
|
|
93
|
+
box-shadow: var(--tct-popover-box-shadow, var(--app-shadow-1, 0 2px 4px rgba(0, 0, 0, 0.3)));
|
|
95
94
|
text-align: start;
|
|
96
95
|
left: 0;
|
|
97
|
-
|
|
96
|
+
margin-block: var(--tct-popover-margin-block, 0);
|
|
97
|
+
border-width: var(--tct-popover-border-width, 0);
|
|
98
|
+
border-style: solid;
|
|
99
|
+
border-color: var(--tct-popover-border-color, transparent);
|
|
100
|
+
border-radius: var(--tct-popover-border-radius, 0);
|
|
98
101
|
max-height: var(--comp-pop-max-height);
|
|
99
102
|
--comp-scrollbar-size: var(--tct-scrollbar-size, var(--t-scrollbar-size, var(--app-scale-1x, 5px)));
|
|
100
103
|
--comp-scrollbar-border-radius: var(--tct-scrollbar-border-radius, var(--t-scrollbar-border-radius, var(--app-border-radius-1, 3px)));
|
|
@@ -119,16 +122,13 @@ button {
|
|
|
119
122
|
left: unset;
|
|
120
123
|
right: unset;
|
|
121
124
|
width: 100%;
|
|
122
|
-
min-width: var(--tct-popover-min-width,
|
|
125
|
+
min-width: var(--tct-popover-min-width, unset);
|
|
123
126
|
}
|
|
124
127
|
:host([align=right]) .container {
|
|
125
128
|
right: 0;
|
|
126
129
|
text-align: end;
|
|
127
130
|
left: unset;
|
|
128
131
|
}
|
|
129
|
-
:host([open]) .container {
|
|
130
|
-
visibility: visible;
|
|
131
|
-
}
|
|
132
132
|
:host([open]) .container.show {
|
|
133
133
|
height: auto;
|
|
134
134
|
overflow: auto;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
*:focus {
|
|
10
10
|
outline: none;
|
|
11
|
-
box-shadow: var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #
|
|
11
|
+
box-shadow: var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc);
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
:host {
|
|
@@ -92,12 +92,7 @@ button {
|
|
|
92
92
|
.radio-container circle:nth-child(1) {
|
|
93
93
|
stroke-width: 2;
|
|
94
94
|
stroke: var(--tct-radio-stroke-color, var(--t-a11y-gray-color-AA, #949494));
|
|
95
|
-
|
|
96
|
-
.radio-container input:focus + label svg {
|
|
97
|
-
box-shadow: var(--const-double-focus-ring);
|
|
98
|
-
}
|
|
99
|
-
.radio-container input:focus + label circle:nth-child(1) {
|
|
100
|
-
stroke: var(--tct-radio-focus-stroke-color, var(--tct-checkbox-check-stroke-color, var(--t-checkbox-fill, #2e2e2e)));
|
|
95
|
+
fill: var(--tct-radio-background-fill, transparent);
|
|
101
96
|
}
|
|
102
97
|
.radio-container input:checked + label circle:nth-child(1) {
|
|
103
98
|
fill: var(--tct-radio-checked-background-fill, var(--tct-radio-checked-bg, transparent));
|
|
@@ -106,10 +101,28 @@ button {
|
|
|
106
101
|
.radio-container input:checked + label .label-content {
|
|
107
102
|
font-weight: var(--tct-checkbox-selected-font-weight, 600);
|
|
108
103
|
letter-spacing: var(--tct-checkbox-selected-letter-spacing, 0.25);
|
|
104
|
+
color: var(--tct-radio-checked-label-color, inherit);
|
|
109
105
|
}
|
|
110
106
|
.radio-container input:checked + label circle:nth-child(2) {
|
|
111
107
|
fill: var(--tct-radio-checked-fill, var(--tct-checkbox-check-stroke-color, var(--t-checkbox-fill, #2e2e2e)));
|
|
112
108
|
}
|
|
109
|
+
.radio-container input:hover + label circle:nth-child(1) {
|
|
110
|
+
fill: var(--tct-radio-hover-background-fill, transparent);
|
|
111
|
+
stroke: var(--tct-radio-hover-stroke-color, var(--tct-radio-stroke-color, var(--t-a11y-gray-color-AA, #949494)));
|
|
112
|
+
}
|
|
113
|
+
.radio-container input:hover + label .label-content {
|
|
114
|
+
color: var(--tct-radio-hover-label-color, inherit);
|
|
115
|
+
}
|
|
116
|
+
.radio-container input:focus + label svg {
|
|
117
|
+
box-shadow: var(--const-double-focus-ring);
|
|
118
|
+
}
|
|
119
|
+
.radio-container input:focus + label circle:nth-child(1) {
|
|
120
|
+
fill: var(--tct-radio-focus-background-fill, transparent);
|
|
121
|
+
stroke: var(--tct-radio-focus-stroke-color, var(--tct-checkbox-check-stroke-color, var(--t-checkbox-fill, #2e2e2e)));
|
|
122
|
+
}
|
|
123
|
+
.radio-container input:focus + label .label-content {
|
|
124
|
+
color: var(--tct-radio-focus-label-color, var(--tct-radio-checked-label-color, inherit));
|
|
125
|
+
}
|
|
113
126
|
|
|
114
127
|
.radio-tile {
|
|
115
128
|
flex-basis: 100px;
|
|
@@ -121,6 +134,7 @@ button {
|
|
|
121
134
|
align-items: center;
|
|
122
135
|
border-radius: 3px;
|
|
123
136
|
border: 2px solid var(--tct-radio-stroke-color, var(--t-a11y-gray-color-AA, #949494));
|
|
137
|
+
background: var(--tct-radio-background-fill, transparent);
|
|
124
138
|
cursor: pointer;
|
|
125
139
|
display: block;
|
|
126
140
|
padding: 10px;
|
|
@@ -129,17 +143,15 @@ button {
|
|
|
129
143
|
transition: border-color var(--tct-tween-1, var(--app-tween-1, 0.2s ease));
|
|
130
144
|
white-space: nowrap;
|
|
131
145
|
}
|
|
132
|
-
.radio-tile input:focus + label, .radio-tile input:focus:checked + label {
|
|
133
|
-
border-color: var(--tct-checkbox-check-stroke-color, var(--t-checkbox-check-stroke-color, var(--t-checkbox-fill, #2e2e2e)));
|
|
134
|
-
box-shadow: var(--const-double-focus-ring), var(--tct-global-focus, 0 0 0 2px #33b4ff);
|
|
135
|
-
}
|
|
136
146
|
.radio-tile input:checked + label {
|
|
137
|
-
border-color: var(--tct-checkbox-check-stroke-color, var(--t-checkbox-check-stroke-color, var(--t-checkbox-fill, #2e2e2e)));
|
|
147
|
+
border-color: var(--tct-radio-checked-stroke-color, var(--tct-checkbox-check-stroke-color, var(--t-checkbox-check-stroke-color, var(--t-checkbox-fill, #2e2e2e))));
|
|
138
148
|
box-shadow: inset 0 0 0 2px #ffffff;
|
|
149
|
+
background: var(--tct-radio-checked-background-fill, transparent);
|
|
150
|
+
color: var(--tct-radio-checked-label-color, inherit);
|
|
139
151
|
}
|
|
140
152
|
.radio-tile input:checked + label:after {
|
|
141
153
|
border-bottom-width: 3px;
|
|
142
|
-
border-bottom: 5px solid var(--tct-checkbox-check-stroke-color, var(--t-checkbox-check-stroke-color, var(--t-checkbox-fill, #2e2e2e)));
|
|
154
|
+
border-bottom: 5px solid var(--tct-radio-checked-stroke-color, var(--tct-checkbox-check-stroke-color, var(--t-checkbox-check-stroke-color, var(--t-checkbox-fill, #2e2e2e))));
|
|
143
155
|
border-left-width: 5px;
|
|
144
156
|
border-left: 8px solid transparent;
|
|
145
157
|
border-right-width: 5px;
|
|
@@ -152,6 +164,17 @@ button {
|
|
|
152
164
|
position: absolute;
|
|
153
165
|
width: 0;
|
|
154
166
|
}
|
|
167
|
+
.radio-tile input:hover + label {
|
|
168
|
+
border-color: var(--tct-radio-hover-stroke-color, var(--tct-radio-stroke-color, var(--t-a11y-gray-color-AA, #949494)));
|
|
169
|
+
background: var(--tct-radio-hover-background-fill, transparent);
|
|
170
|
+
color: var(--tct-radio-hover-label-color, var(--tct-radio-label-color, inherit));
|
|
171
|
+
}
|
|
172
|
+
.radio-tile input:focus + label, .radio-tile input:focus:checked + label {
|
|
173
|
+
border-color: var(--tct-radio-focus-stroke-color, var(--tct-checkbox-check-stroke-color, var(--t-checkbox-check-stroke-color, var(--t-checkbox-fill, #2e2e2e))));
|
|
174
|
+
background: var(--tct-radio-focus-background-fill, transparent);
|
|
175
|
+
box-shadow: var(--const-double-focus-ring), var(--tct-global-focus, 0 0 0 2px #33b4ff);
|
|
176
|
+
color: var(--tct-radio-focus-label-color, var(--tct-radio-checked-label-color, inherit));
|
|
177
|
+
}
|
|
155
178
|
|
|
156
179
|
input:disabled + label[for] {
|
|
157
180
|
cursor: not-allowed;
|
|
@@ -96,6 +96,11 @@ export class Q2RadioGroup {
|
|
|
96
96
|
});
|
|
97
97
|
}
|
|
98
98
|
/// Methods ///
|
|
99
|
+
/**
|
|
100
|
+
* Emulates clicking the `<q2-radio>` option with the provided value.
|
|
101
|
+
*
|
|
102
|
+
* @testOnly
|
|
103
|
+
*/
|
|
99
104
|
setValue(value) {
|
|
100
105
|
this.radioElements.forEach(radio => {
|
|
101
106
|
if (value !== radio.value)
|
|
@@ -391,8 +396,11 @@ export class Q2RadioGroup {
|
|
|
391
396
|
"return": "Promise<void>"
|
|
392
397
|
},
|
|
393
398
|
"docs": {
|
|
394
|
-
"text": "",
|
|
395
|
-
"tags": [
|
|
399
|
+
"text": "Emulates clicking the `<q2-radio>` option with the provided value.",
|
|
400
|
+
"tags": [{
|
|
401
|
+
"name": "testOnly",
|
|
402
|
+
"text": undefined
|
|
403
|
+
}]
|
|
396
404
|
}
|
|
397
405
|
}
|
|
398
406
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/q2-radio-group/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Prop,\n Element,\n h,\n Listen,\n EventEmitter,\n Event,\n ComponentInterface,\n Watch,\n Fragment,\n Method,\n} from '@stencil/core';\nimport { createGuid, isEventFromElement, loc, overrideFocus } from 'src/utils';\n\n@Component({\n tag: 'q2-radio-group',\n shadow: true,\n styleUrl: 'styles.scss',\n})\nexport class Q2RadioGroup implements ComponentInterface {\n @Prop({ reflect: true }) label: string;\n @Prop({ mutable: true }) value: string;\n @Prop({ reflect: true }) disabled: boolean = false;\n @Prop({ reflect: true }) name: string;\n @Prop({ reflect: true }) optional: boolean;\n @Prop({ reflect: true }) readonly: boolean;\n @Prop({ reflect: true, mutable: true }) tileLayout: boolean;\n @Prop({ reflect: true }) tileAlignment: 'left' | 'center' | 'right' = 'center';\n @Prop({ reflect: true }) hasError: boolean = false;\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true }) tilelayout: boolean;\n\n @Element() hostElement: HTMLElement;\n _id: string = `radio-group-${createGuid()}`;\n mutationObserver: MutationObserver;\n\n get radioElements() {\n return Array.from(this.hostElement.querySelectorAll('q2-radio')) as HTMLQ2RadioElement[];\n }\n\n onMutationObserved = () => {\n this.valueUpdated(this.value);\n this.nameUpdated();\n this.disabledUpdated();\n this.readonlyUpdated();\n this.tileLayoutUpdated(this.tileLayout);\n };\n\n onInnerRadioChange = (event: CustomEvent) => {\n event.stopImmediatePropagation();\n if (this.readonly) return;\n\n this.change.emit({ value: event.detail.value });\n };\n\n checkedRadioExists = () => {\n // Returns first checked individual q2-radio or undefined if none are set to checked={true}\n const firstCheckedRadio = this.radioElements.find(radio => radio.checked === true) || undefined;\n\n // Changes radio-group[\"value\"] if inital value is not set and if a any individual q2-radio is checked\n if (!this.value && !!firstCheckedRadio) {\n this.value = firstCheckedRadio.value;\n } else if (!this.value && !firstCheckedRadio) {\n // if no radios are meant to be checked, then assign first radio tabIndex of 0\n if (this.radioElements.length) this.radioElements[0].tabIndex = 0;\n }\n };\n\n /////// LIFECYCLE HOOK ///////\n componentWillLoad() {\n this.checkedRadioExists();\n this.onMutationObserved();\n this.handleDeprecatedTilelayout(this.tilelayout);\n }\n\n componentDidLoad() {\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true });\n this.mutationObserver = observer;\n overrideFocus(this.hostElement);\n this.checkedRadioExists();\n }\n\n /////// OBSERVERS ///////\n\n @Watch('value')\n valueUpdated(newVal: string) {\n this.radioElements.forEach(radio => {\n radio.checked = newVal === radio.value;\n // Removes checked attribute from trailing radios, if multiple individual radio's are intially checked (checked={true}) at componentDidLoad\n if (!radio.checked) {\n radio.removeAttribute('checked');\n radio.tabIndex = -1;\n } else if (radio.checked) {\n radio.tabIndex = 0;\n }\n });\n }\n\n @Watch('name')\n nameUpdated() {\n this.radioElements.forEach(radio => {\n radio.name = this.name || this._id;\n });\n }\n\n @Watch('disabled')\n disabledUpdated() {\n this.radioElements.forEach(radio => {\n radio.groupDisabled = this.disabled;\n });\n }\n\n @Watch('readonly')\n readonlyUpdated() {\n const readonly = this.readonly;\n this.radioElements.forEach(radio => (radio.groupReadonly = readonly));\n }\n\n @Watch('tilelayout')\n handleDeprecatedTilelayout(tilelayout: boolean) {\n if (typeof tilelayout !== 'boolean') return;\n this.tileLayout = tilelayout;\n this.tilelayout = undefined;\n }\n\n @Watch('tileLayout')\n tileLayoutUpdated(tileLayout: boolean) {\n this.radioElements.forEach(radio => {\n radio.groupTileLayout = tileLayout;\n });\n }\n\n /// Methods ///\n @Method()\n setValue(value: string) {\n this.radioElements.forEach(radio => {\n if (value !== radio.value) return;\n radio.click();\n });\n }\n\n /////// HOST ELEMENT EVENTS ///////\n\n @Event() change: EventEmitter;\n\n @Listen('change')\n onHostElementChange(event: CustomEvent) {\n if (event.target === this.hostElement) {\n if (!this.hostElement.onchange) {\n this.value = event.detail.value;\n }\n }\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n const radio = this.hostElement.querySelector('q2-radio[checked]') || this.hostElement.querySelector('q2-radio');\n radio?.dispatchEvent(new FocusEvent('focus'));\n }\n\n @Listen('keydown')\n keydownHandler(event: KeyboardEvent) {\n const currentValue = (event.target as HTMLElement).getAttribute('value') || this.value;\n let index = this.radioElements.findIndex(\n el => el === event.target || (el as HTMLElement).getAttribute('value') === currentValue\n );\n let sign = 0;\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n sign = -1;\n break;\n\n case 'ArrowRight':\n case 'ArrowDown':\n sign = 1;\n break;\n }\n\n if (index === -1 || sign === 0) {\n return;\n }\n index += sign;\n index = sign < 0 ? Math.max(0, index) : Math.min(this.radioElements.length - 1, index);\n event.preventDefault();\n if (!this.readonly) {\n this.value = this.radioElements[index].value;\n }\n this.radioElements[index].dispatchEvent(new FocusEvent('focus'));\n }\n\n labelDOM() {\n const { label, optional, readonly } = this;\n let helpText = '';\n if (readonly) {\n helpText = <span class=\"optional-tag\">{loc('tecton.element.input.readonly')}</span>;\n } else if (optional) {\n helpText = <span class=\"optional-tag\">{loc('tecton.element.input.optional')}</span>;\n }\n return (\n <Fragment>\n {label && loc(label)}\n {!!helpText && <span class=\"optional-tag\">{helpText}</span>}\n </Fragment>\n );\n }\n\n render() {\n const showLabel = this.label || this.optional || this.readonly;\n const { hasError } = this;\n const showLabelRow = showLabel || hasError;\n return (\n <Fragment>\n {showLabelRow && (\n <div class=\"label-row\">\n {showLabel && <div class=\"group-legend\">{this.labelDOM()}</div>}\n {hasError && (\n <q2-icon\n type=\"error\"\n test-id=\"iconError\"\n ></q2-icon>\n )}\n </div>\n )}\n <fieldset\n onChange={this.onInnerRadioChange}\n aria-invalid={`${this.hasError}`}\n >\n {showLabel && <legend class=\"sr\">{this.labelDOM()}</legend>}\n {this.inputDom()}\n </fieldset>\n </Fragment>\n );\n }\n\n inputDom() {\n if (this.tileLayout) {\n const { tileAlignment } = this;\n const alignment = ['left', 'center', 'right'].includes(tileAlignment) ? tileAlignment : 'center';\n return (\n <div class={`tile-container ${alignment}`}>\n <div class=\"options-container\">\n <slot />\n </div>\n </div>\n );\n } else {\n return (\n <div class=\"options-container\">\n <slot />\n </div>\n );\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/q2-radio-group/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Prop,\n Element,\n h,\n Listen,\n EventEmitter,\n Event,\n ComponentInterface,\n Watch,\n Fragment,\n Method,\n} from '@stencil/core';\nimport { createGuid, isEventFromElement, loc, overrideFocus } from 'src/utils';\n\n@Component({\n tag: 'q2-radio-group',\n shadow: true,\n styleUrl: 'styles.scss',\n})\nexport class Q2RadioGroup implements ComponentInterface {\n @Prop({ reflect: true }) label: string;\n @Prop({ mutable: true }) value: string;\n @Prop({ reflect: true }) disabled: boolean = false;\n @Prop({ reflect: true }) name: string;\n @Prop({ reflect: true }) optional: boolean;\n @Prop({ reflect: true }) readonly: boolean;\n @Prop({ reflect: true, mutable: true }) tileLayout: boolean;\n @Prop({ reflect: true }) tileAlignment: 'left' | 'center' | 'right' = 'center';\n @Prop({ reflect: true }) hasError: boolean = false;\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true }) tilelayout: boolean;\n\n @Element() hostElement: HTMLElement;\n _id: string = `radio-group-${createGuid()}`;\n mutationObserver: MutationObserver;\n\n get radioElements() {\n return Array.from(this.hostElement.querySelectorAll('q2-radio')) as HTMLQ2RadioElement[];\n }\n\n onMutationObserved = () => {\n this.valueUpdated(this.value);\n this.nameUpdated();\n this.disabledUpdated();\n this.readonlyUpdated();\n this.tileLayoutUpdated(this.tileLayout);\n };\n\n onInnerRadioChange = (event: CustomEvent) => {\n event.stopImmediatePropagation();\n if (this.readonly) return;\n\n this.change.emit({ value: event.detail.value });\n };\n\n checkedRadioExists = () => {\n // Returns first checked individual q2-radio or undefined if none are set to checked={true}\n const firstCheckedRadio = this.radioElements.find(radio => radio.checked === true) || undefined;\n\n // Changes radio-group[\"value\"] if inital value is not set and if a any individual q2-radio is checked\n if (!this.value && !!firstCheckedRadio) {\n this.value = firstCheckedRadio.value;\n } else if (!this.value && !firstCheckedRadio) {\n // if no radios are meant to be checked, then assign first radio tabIndex of 0\n if (this.radioElements.length) this.radioElements[0].tabIndex = 0;\n }\n };\n\n /////// LIFECYCLE HOOK ///////\n componentWillLoad() {\n this.checkedRadioExists();\n this.onMutationObserved();\n this.handleDeprecatedTilelayout(this.tilelayout);\n }\n\n componentDidLoad() {\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true });\n this.mutationObserver = observer;\n overrideFocus(this.hostElement);\n this.checkedRadioExists();\n }\n\n /////// OBSERVERS ///////\n\n @Watch('value')\n valueUpdated(newVal: string) {\n this.radioElements.forEach(radio => {\n radio.checked = newVal === radio.value;\n // Removes checked attribute from trailing radios, if multiple individual radio's are intially checked (checked={true}) at componentDidLoad\n if (!radio.checked) {\n radio.removeAttribute('checked');\n radio.tabIndex = -1;\n } else if (radio.checked) {\n radio.tabIndex = 0;\n }\n });\n }\n\n @Watch('name')\n nameUpdated() {\n this.radioElements.forEach(radio => {\n radio.name = this.name || this._id;\n });\n }\n\n @Watch('disabled')\n disabledUpdated() {\n this.radioElements.forEach(radio => {\n radio.groupDisabled = this.disabled;\n });\n }\n\n @Watch('readonly')\n readonlyUpdated() {\n const readonly = this.readonly;\n this.radioElements.forEach(radio => (radio.groupReadonly = readonly));\n }\n\n @Watch('tilelayout')\n handleDeprecatedTilelayout(tilelayout: boolean) {\n if (typeof tilelayout !== 'boolean') return;\n this.tileLayout = tilelayout;\n this.tilelayout = undefined;\n }\n\n @Watch('tileLayout')\n tileLayoutUpdated(tileLayout: boolean) {\n this.radioElements.forEach(radio => {\n radio.groupTileLayout = tileLayout;\n });\n }\n\n /// Methods ///\n /**\n * Emulates clicking the `<q2-radio>` option with the provided value.\n *\n * @testOnly\n */\n @Method()\n setValue(value: string) {\n this.radioElements.forEach(radio => {\n if (value !== radio.value) return;\n radio.click();\n });\n }\n\n /////// HOST ELEMENT EVENTS ///////\n\n @Event() change: EventEmitter;\n\n @Listen('change')\n onHostElementChange(event: CustomEvent) {\n if (event.target === this.hostElement) {\n if (!this.hostElement.onchange) {\n this.value = event.detail.value;\n }\n }\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n const radio = this.hostElement.querySelector('q2-radio[checked]') || this.hostElement.querySelector('q2-radio');\n radio?.dispatchEvent(new FocusEvent('focus'));\n }\n\n @Listen('keydown')\n keydownHandler(event: KeyboardEvent) {\n const currentValue = (event.target as HTMLElement).getAttribute('value') || this.value;\n let index = this.radioElements.findIndex(\n el => el === event.target || (el as HTMLElement).getAttribute('value') === currentValue\n );\n let sign = 0;\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n sign = -1;\n break;\n\n case 'ArrowRight':\n case 'ArrowDown':\n sign = 1;\n break;\n }\n\n if (index === -1 || sign === 0) {\n return;\n }\n index += sign;\n index = sign < 0 ? Math.max(0, index) : Math.min(this.radioElements.length - 1, index);\n event.preventDefault();\n if (!this.readonly) {\n this.value = this.radioElements[index].value;\n }\n this.radioElements[index].dispatchEvent(new FocusEvent('focus'));\n }\n\n labelDOM() {\n const { label, optional, readonly } = this;\n let helpText = '';\n if (readonly) {\n helpText = <span class=\"optional-tag\">{loc('tecton.element.input.readonly')}</span>;\n } else if (optional) {\n helpText = <span class=\"optional-tag\">{loc('tecton.element.input.optional')}</span>;\n }\n return (\n <Fragment>\n {label && loc(label)}\n {!!helpText && <span class=\"optional-tag\">{helpText}</span>}\n </Fragment>\n );\n }\n\n render() {\n const showLabel = this.label || this.optional || this.readonly;\n const { hasError } = this;\n const showLabelRow = showLabel || hasError;\n return (\n <Fragment>\n {showLabelRow && (\n <div class=\"label-row\">\n {showLabel && <div class=\"group-legend\">{this.labelDOM()}</div>}\n {hasError && (\n <q2-icon\n type=\"error\"\n test-id=\"iconError\"\n ></q2-icon>\n )}\n </div>\n )}\n <fieldset\n onChange={this.onInnerRadioChange}\n aria-invalid={`${this.hasError}`}\n >\n {showLabel && <legend class=\"sr\">{this.labelDOM()}</legend>}\n {this.inputDom()}\n </fieldset>\n </Fragment>\n );\n }\n\n inputDom() {\n if (this.tileLayout) {\n const { tileAlignment } = this;\n const alignment = ['left', 'center', 'right'].includes(tileAlignment) ? tileAlignment : 'center';\n return (\n <div class={`tile-container ${alignment}`}>\n <div class=\"options-container\">\n <slot />\n </div>\n </div>\n );\n } else {\n return (\n <div class=\"options-container\">\n <slot />\n </div>\n );\n }\n }\n}\n"]}
|