q2-tecton-elements 1.69.1 → 1.70.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle-report.json +2246 -355
- package/dist/cjs/click-elsewhere_3.cjs.entry.js +2 -2
- package/dist/cjs/{index-D2LFCsNP.js → index-SpDCZABA.js} +2 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-action-group_2.cjs.entry.js +1 -1
- package/dist/cjs/q2-action-sheet.cjs.entry.js +2 -2
- package/dist/cjs/q2-badge_2.cjs.entry.js +11 -4
- package/dist/cjs/q2-btn_2.cjs.entry.js +6 -2
- package/dist/cjs/q2-calendar.cjs.entry.js +5 -3
- package/dist/cjs/q2-card-image.cjs.entry.js +8 -6
- package/dist/cjs/q2-card.cjs.entry.js +2 -2
- package/dist/cjs/q2-carousel-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-area.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-bar.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-donut.cjs.entry.js +2 -2
- package/dist/cjs/q2-checkbox-group.cjs.entry.js +1 -1
- package/dist/cjs/q2-checkbox_2.cjs.entry.js +4 -3
- package/dist/cjs/q2-context.cjs.entry.js +1 -1
- package/dist/cjs/q2-currency.cjs.entry.js +1 -1
- package/dist/cjs/q2-data-table.cjs.entry.js +6 -3
- package/dist/cjs/q2-detail.cjs.entry.js +2 -2
- package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +3 -3
- package/dist/cjs/q2-editable-field.cjs.entry.js +12 -4
- package/dist/cjs/q2-file-picker.cjs.entry.js +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js +1 -1
- package/dist/cjs/q2-item.cjs.entry.js +2 -2
- package/dist/cjs/q2-legend.cjs.entry.js +1 -1
- package/dist/cjs/q2-link_2.cjs.entry.js +2 -2
- package/dist/cjs/q2-loc.cjs.entry.js +20 -2
- package/dist/cjs/q2-message.cjs.entry.js +1 -1
- package/dist/cjs/q2-meter.cjs.entry.js +2 -2
- package/dist/cjs/q2-modal.cjs.entry.js +3 -3
- package/dist/cjs/q2-month-picker.cjs.entry.js +1 -1
- package/dist/cjs/q2-optgroup.cjs.entry.js +1 -1
- package/dist/cjs/q2-option.cjs.entry.js +1 -1
- package/dist/cjs/q2-otp.cjs.entry.js +1 -1
- package/dist/cjs/q2-pagination.cjs.entry.js +1 -1
- package/dist/cjs/q2-pill.cjs.entry.js +1 -1
- package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
- package/dist/cjs/q2-radio.cjs.entry.js +1 -1
- package/dist/cjs/q2-relative-time.cjs.entry.js +1 -1
- package/dist/cjs/q2-search.cjs.entry.js +101 -12
- package/dist/cjs/q2-section.cjs.entry.js +2 -2
- package/dist/cjs/q2-select.cjs.entry.js +36 -6
- package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js +24 -18
- package/dist/cjs/q2-stepper.cjs.entry.js +5 -4
- package/dist/cjs/q2-surface.cjs.entry.js +95 -0
- package/dist/cjs/q2-tab-container.cjs.entry.js +2 -2
- package/dist/cjs/q2-tab-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js +1 -1
- package/dist/cjs/q2-toast.cjs.entry.js +1 -1
- package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.css +1 -1
- package/dist/collection/components/q2-btn/q2-btn.css +32 -17
- package/dist/collection/components/q2-btn/q2-btn.js +6 -1
- package/dist/collection/components/q2-calendar/q2-calendar.js +24 -2
- package/dist/collection/components/q2-calendar/test/q2-calendar-test.vr.js +4 -0
- package/dist/collection/components/q2-card/q2-card.css +2 -2
- package/dist/collection/components/q2-card-image/q2-card-image.css +3 -0
- package/dist/collection/components/q2-card-image/q2-card-image.js +25 -23
- package/dist/collection/components/q2-chart-area/q2-chart-area.css +4 -0
- package/dist/collection/components/q2-chart-bar/q2-chart-bar.css +4 -0
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.css +1 -1
- package/dist/collection/components/q2-checkbox/q2-checkbox.js +2 -1
- package/dist/collection/components/q2-currency/q2-currency.css +1 -1
- package/dist/collection/components/q2-data-table/q2-data-table.js +5 -2
- package/dist/collection/components/q2-detail/q2-detail.css +12 -12
- package/dist/collection/components/q2-dropdown/q2-dropdown.js +2 -2
- package/dist/collection/components/q2-editable-field/q2-editable-field.js +11 -3
- package/dist/collection/components/q2-input/q2-input.css +11 -1
- package/dist/collection/components/q2-input/q2-input.js +29 -2
- package/dist/collection/components/q2-input/test/q2-input-test.vr.js +8 -0
- package/dist/collection/components/q2-item/q2-item.css +10 -5
- package/dist/collection/components/q2-item/test/q2-item-test.vr.js +132 -0
- package/dist/collection/components/q2-legend/q2-legend.css +2 -2
- package/dist/collection/components/q2-list/q2-list.css +1 -1
- package/dist/collection/components/q2-loc/q2-loc.js +42 -1
- package/dist/collection/components/q2-message/q2-message.css +4 -0
- package/dist/collection/components/q2-meter/q2-meter.css +3 -3
- package/dist/collection/components/q2-modal/q2-modal.css +1 -1
- package/dist/collection/components/q2-modal/q2-modal.js +2 -2
- package/dist/collection/components/q2-otp/q2-otp.css +33 -0
- package/dist/collection/components/q2-otp/test/q2-otp-test.vr.js +83 -0
- package/dist/collection/components/q2-popover/q2-popover.css +2 -1
- package/dist/collection/components/q2-radio/q2-radio.css +2 -0
- package/dist/collection/components/q2-search/q2-search.css +30 -0
- package/dist/collection/components/q2-search/q2-search.js +99 -10
- package/dist/collection/components/q2-search/test/q2-search-test.vr.js +145 -0
- package/dist/collection/components/q2-section/q2-section.css +1 -1
- package/dist/collection/components/q2-select/q2-select.css +4 -2
- package/dist/collection/components/q2-select/q2-select.js +54 -4
- package/dist/collection/components/q2-select/test/q2-select-test.vr.js +5 -0
- package/dist/collection/components/q2-stepper/q2-stepper.css +2 -2
- package/dist/collection/components/q2-stepper/q2-stepper.js +3 -2
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.css +2 -2
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +22 -16
- package/dist/collection/components/q2-surface/q2-surface.css +348 -0
- package/dist/collection/components/q2-surface/q2-surface.js +381 -0
- package/dist/collection/components/q2-surface/test/q2-surface-test.vr.js +108 -0
- package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
- package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
- package/dist/collection/components/q2-tag/q2-tag.js +1 -1
- package/dist/collection/components/q2-toast/q2-toast.js +3 -1
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
- package/dist/collection/utils/index.js +2 -2
- package/dist/components/index.js +12 -10
- package/dist/components/index2.js +3 -3
- package/dist/components/q2-action-sheet.js +1 -1
- package/dist/components/q2-btn2.js +5 -1
- package/dist/components/q2-calendar.js +294 -290
- package/dist/components/q2-card-image.js +9 -6
- package/dist/components/q2-card.js +14 -14
- package/dist/components/q2-chart-donut.js +1 -1
- package/dist/components/q2-checkbox2.js +12 -12
- package/dist/components/q2-currency.js +1 -1
- package/dist/components/q2-data-table.js +4 -4
- package/dist/components/q2-detail.js +1 -1
- package/dist/components/q2-dropdown.js +8 -8
- package/dist/components/q2-editable-field.js +15 -5
- package/dist/components/q2-input2.js +46 -26
- package/dist/components/q2-item2.js +1 -1
- package/dist/components/q2-legend2.js +51 -51
- package/dist/components/q2-list2.js +1 -1
- package/dist/components/q2-loc.js +23 -8
- package/dist/components/q2-meter.js +10 -10
- package/dist/components/q2-modal.js +54 -54
- package/dist/components/q2-popover2.js +1 -1
- package/dist/components/q2-search.js +106 -51
- package/dist/components/q2-section.js +1 -1
- package/dist/components/q2-select2.js +25 -9
- package/dist/components/q2-stepper-vertical.js +72 -63
- package/dist/components/q2-stepper.js +73 -71
- package/dist/components/q2-surface.d.ts +11 -0
- package/dist/components/q2-surface.js +109 -0
- package/dist/components/q2-tab-container.js +12 -12
- package/dist/components/q2-tab-pane.js +6 -6
- package/dist/components/q2-tag2.js +5 -5
- package/dist/components/tecton-tab-pane.js +10 -10
- package/dist/esm/click-elsewhere_3.entry.js +2 -2
- package/dist/esm/{index-Bx4m6N0g.js → index-Cps4jSQM.js} +2 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-action-group_2.entry.js +1 -1
- package/dist/esm/q2-action-sheet.entry.js +2 -2
- package/dist/esm/q2-badge_2.entry.js +11 -4
- package/dist/esm/q2-btn_2.entry.js +6 -2
- package/dist/esm/q2-calendar.entry.js +5 -3
- package/dist/esm/q2-card-image.entry.js +8 -6
- package/dist/esm/q2-card.entry.js +2 -2
- package/dist/esm/q2-carousel-pane.entry.js +1 -1
- package/dist/esm/q2-carousel.entry.js +1 -1
- package/dist/esm/q2-chart-area.entry.js +1 -1
- package/dist/esm/q2-chart-bar.entry.js +1 -1
- package/dist/esm/q2-chart-donut.entry.js +2 -2
- package/dist/esm/q2-checkbox-group.entry.js +1 -1
- package/dist/esm/q2-checkbox_2.entry.js +4 -3
- package/dist/esm/q2-context.entry.js +1 -1
- package/dist/esm/q2-currency.entry.js +1 -1
- package/dist/esm/q2-data-table.entry.js +6 -3
- package/dist/esm/q2-detail.entry.js +2 -2
- package/dist/esm/q2-dropdown-item.entry.js +1 -1
- package/dist/esm/q2-dropdown.entry.js +3 -3
- package/dist/esm/q2-editable-field.entry.js +12 -4
- package/dist/esm/q2-file-picker.entry.js +1 -1
- package/dist/esm/q2-icon.entry.js +1 -1
- package/dist/esm/q2-item.entry.js +2 -2
- package/dist/esm/q2-legend.entry.js +1 -1
- package/dist/esm/q2-link_2.entry.js +2 -2
- package/dist/esm/q2-loc.entry.js +20 -2
- package/dist/esm/q2-message.entry.js +1 -1
- package/dist/esm/q2-meter.entry.js +2 -2
- package/dist/esm/q2-modal.entry.js +3 -3
- package/dist/esm/q2-month-picker.entry.js +1 -1
- package/dist/esm/q2-optgroup.entry.js +1 -1
- package/dist/esm/q2-option.entry.js +1 -1
- package/dist/esm/q2-otp.entry.js +1 -1
- package/dist/esm/q2-pagination.entry.js +1 -1
- package/dist/esm/q2-pill.entry.js +1 -1
- package/dist/esm/q2-radio-group.entry.js +1 -1
- package/dist/esm/q2-radio.entry.js +1 -1
- package/dist/esm/q2-relative-time.entry.js +1 -1
- package/dist/esm/q2-search.entry.js +101 -12
- package/dist/esm/q2-section.entry.js +2 -2
- package/dist/esm/q2-select.entry.js +36 -6
- package/dist/esm/q2-stepper-pane.entry.js +1 -1
- package/dist/esm/q2-stepper-vertical.entry.js +24 -18
- package/dist/esm/q2-stepper.entry.js +5 -4
- package/dist/esm/q2-surface.entry.js +93 -0
- package/dist/esm/q2-tab-container.entry.js +2 -2
- package/dist/esm/q2-tab-pane.entry.js +1 -1
- package/dist/esm/q2-tecton-elements.js +1 -1
- package/dist/esm/q2-textarea.entry.js +1 -1
- package/dist/esm/q2-toast.entry.js +1 -1
- package/dist/esm/q2-tooltip.entry.js +1 -1
- package/dist/esm/tecton-tab-pane.entry.js +2 -2
- package/dist/q2-tecton-elements/click-elsewhere_3.entry.js +2 -2
- package/dist/q2-tecton-elements/{index-Bx4m6N0g.js → index-Cps4jSQM.js} +3 -3
- package/dist/q2-tecton-elements/q2-action-group_2.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-action-sheet.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-badge_2.entry.js +51 -32
- package/dist/q2-tecton-elements/q2-btn_2.entry.js +6 -2
- package/dist/q2-tecton-elements/q2-calendar.entry.js +7 -4
- package/dist/q2-tecton-elements/q2-card-image.entry.js +65 -62
- package/dist/q2-tecton-elements/q2-card.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-carousel.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-chart-area.entry.js +54 -54
- package/dist/q2-tecton-elements/q2-chart-bar.entry.js +3 -3
- package/dist/q2-tecton-elements/q2-chart-donut.entry.js +7 -7
- package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-checkbox_2.entry.js +18 -18
- package/dist/q2-tecton-elements/q2-context.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-currency.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-data-table.entry.js +50 -50
- package/dist/q2-tecton-elements/q2-detail.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-dropdown.entry.js +16 -16
- package/dist/q2-tecton-elements/q2-editable-field.entry.js +15 -8
- package/dist/q2-tecton-elements/q2-file-picker.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-icon.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-item.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-legend.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-link_2.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-loc.entry.js +20 -6
- package/dist/q2-tecton-elements/q2-message.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-meter.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-modal.entry.js +55 -55
- package/dist/q2-tecton-elements/q2-month-picker.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-optgroup.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-option.entry.js +7 -7
- package/dist/q2-tecton-elements/q2-otp.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-pagination.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-pill.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-radio-group.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-radio.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-relative-time.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-search.entry.js +108 -53
- package/dist/q2-tecton-elements/q2-section.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-select.entry.js +25 -10
- package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +75 -66
- package/dist/q2-tecton-elements/q2-stepper.entry.js +47 -45
- package/dist/q2-tecton-elements/q2-surface.entry.js +89 -0
- package/dist/q2-tecton-elements/q2-tab-container.entry.js +13 -13
- package/dist/q2-tecton-elements/q2-tab-pane.entry.js +2 -2
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
- package/dist/q2-tecton-elements/q2-textarea.entry.js +1 -1
- package/dist/q2-tecton-elements/q2-toast.entry.js +5 -5
- package/dist/q2-tecton-elements/q2-tooltip.entry.js +8 -8
- package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +6 -6
- package/dist/types/components/q2-calendar/q2-calendar.d.ts +2 -0
- package/dist/types/components/q2-card-image/q2-card-image.d.ts +5 -5
- package/dist/types/components/q2-editable-field/q2-editable-field.d.ts +1 -0
- package/dist/types/components/q2-input/q2-input.d.ts +3 -0
- package/dist/types/components/q2-item/test/q2-item-test.vr.d.ts +1 -0
- package/dist/types/components/q2-loc/q2-loc.d.ts +6 -0
- package/dist/types/components/q2-modal/q2-modal.d.ts +1 -1
- package/dist/types/components/q2-otp/test/q2-otp-test.vr.d.ts +1 -0
- package/dist/types/components/q2-search/q2-search.d.ts +7 -0
- package/dist/types/components/q2-search/test/q2-search-test.vr.d.ts +1 -0
- package/dist/types/components/q2-select/q2-select.d.ts +4 -0
- package/dist/types/components/q2-stepper-vertical/q2-stepper-vertical.d.ts +2 -1
- package/dist/types/components/q2-surface/q2-surface.d.ts +54 -0
- package/dist/types/components/q2-surface/test/q2-surface-test.vr.d.ts +1 -0
- package/dist/types/components/q2-toast/q2-toast.d.ts +3 -1
- package/dist/types/components.d.ts +259 -13
- package/dist/types/utils/index.d.ts +3 -1
- package/package.json +4 -3
|
@@ -41,6 +41,8 @@ export class Q2Calendar {
|
|
|
41
41
|
* for use.
|
|
42
42
|
*/
|
|
43
43
|
this.popoverMode = null;
|
|
44
|
+
/** Show success styles when the calendar is in a valid state. The error state takes precedence when both are set. */
|
|
45
|
+
this.valid = false;
|
|
44
46
|
this.closeCalendar = () => {
|
|
45
47
|
if (!this.open)
|
|
46
48
|
return;
|
|
@@ -799,10 +801,10 @@ export class Q2Calendar {
|
|
|
799
801
|
}
|
|
800
802
|
renderInputField() {
|
|
801
803
|
const { isTypeable } = this;
|
|
802
|
-
return (h("q2-input", { ref: el => (this.controlElement = el), class: "calendar-input-field", value: this.formattedValue, label: loc(this.label), hideLabel: this.hideLabel, disabled: !!this.disabled, readonly: !!this.readonly, clearable: this.canClear, placeholder: this.computedPlaceholder, optional: !!this.optional, "aria-expanded": `${!!this.open}`, "aria-controls": "calendar-popover", hints: this.hintList, errors: this.errorList, onClick: isTypeable ? undefined : this.onInputClick, onChange: e => e.stopImmediatePropagation(), onTctChange: e => e.stopImmediatePropagation(), onInput: e => e.stopImmediatePropagation(), onTctInput: this.onInputInput, onKeyDown: this.onInputKeydown, onKeyUp: this.onInputKeyup, onBlur: this.onInputBlur, onFocus: this.onInputFocus, "icon-right": isTypeable ? undefined : 'calendar', "format-modifier": isTypeable ? this.formatModifier : this.displayFormat || this.formatModifier, type: "date", "hide-messages": !isTypeable, "test-id": "inputAndCalendarToggle", _role: "combobox", _preventEntry: !isTypeable }, isTypeable && (h("q2-btn", { ref: el => (this.btnCalendarToggle = el), slot: "input-right", onClick: this.onInputClick, "test-id": "calendarToggle", label: "tecton.element.calendar.toggleAriaLabel", "hide-label": true }, h("q2-icon", { type: "calendar" })))));
|
|
804
|
+
return (h("q2-input", { ref: el => (this.controlElement = el), class: "calendar-input-field", value: this.formattedValue, label: loc(this.label), hideLabel: this.hideLabel, disabled: !!this.disabled, readonly: !!this.readonly, clearable: this.canClear, placeholder: this.computedPlaceholder, optional: !!this.optional, valid: this.valid, "aria-expanded": `${!!this.open}`, "aria-controls": "calendar-popover", hints: this.hintList, errors: this.errorList, onClick: isTypeable ? undefined : this.onInputClick, onChange: e => e.stopImmediatePropagation(), onTctChange: e => e.stopImmediatePropagation(), onInput: e => e.stopImmediatePropagation(), onTctInput: this.onInputInput, onKeyDown: this.onInputKeydown, onKeyUp: this.onInputKeyup, onBlur: this.onInputBlur, onFocus: this.onInputFocus, "icon-right": isTypeable ? undefined : 'calendar', "format-modifier": isTypeable ? this.formatModifier : this.displayFormat || this.formatModifier, type: "date", "hide-messages": !isTypeable, "test-id": "inputAndCalendarToggle", _role: "combobox", _preventEntry: !isTypeable }, isTypeable && (h("q2-btn", { ref: el => (this.btnCalendarToggle = el), slot: "input-right", onClick: this.onInputClick, "test-id": "calendarToggle", label: "tecton.element.calendar.toggleAriaLabel", "hide-label": true }, h("q2-icon", { type: "calendar" })))));
|
|
803
805
|
}
|
|
804
806
|
render() {
|
|
805
|
-
return (h("click-elsewhere", { key: '
|
|
807
|
+
return (h("click-elsewhere", { key: 'b13259be3c0d64bff32654faf0c738a7a7450c4e', class: this.open ? 'dropdown-open' : undefined, onChange: this.onClickElsewhere }, this.renderInputField(), h("q2-popover", { key: '2e183cd962e7abc4186b93da7edd835e0db5504a', ref: el => (this.popoverElement = el), id: "calendar-popover", controlElement: this.innerInputContainer, open: this.open, direction: this.popoverDirection, minHeight: this.popoverMinHeight, align: this.popoverAlignment, mode: this.popoverMode || undefined, block: true }, this.renderHintField(), this.renderCalendarPopover())));
|
|
806
808
|
}
|
|
807
809
|
static get is() { return "q2-calendar"; }
|
|
808
810
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1436,6 +1438,26 @@ export class Q2Calendar {
|
|
|
1436
1438
|
"reflect": true,
|
|
1437
1439
|
"attribute": "typeable"
|
|
1438
1440
|
},
|
|
1441
|
+
"valid": {
|
|
1442
|
+
"type": "boolean",
|
|
1443
|
+
"mutable": false,
|
|
1444
|
+
"complexType": {
|
|
1445
|
+
"original": "boolean",
|
|
1446
|
+
"resolved": "boolean",
|
|
1447
|
+
"references": {}
|
|
1448
|
+
},
|
|
1449
|
+
"required": false,
|
|
1450
|
+
"optional": false,
|
|
1451
|
+
"docs": {
|
|
1452
|
+
"tags": [],
|
|
1453
|
+
"text": "Show success styles when the calendar is in a valid state. The error state takes precedence when both are set."
|
|
1454
|
+
},
|
|
1455
|
+
"getter": false,
|
|
1456
|
+
"setter": false,
|
|
1457
|
+
"reflect": true,
|
|
1458
|
+
"attribute": "valid",
|
|
1459
|
+
"defaultValue": "false"
|
|
1460
|
+
},
|
|
1439
1461
|
"validDates": {
|
|
1440
1462
|
"type": "unknown",
|
|
1441
1463
|
"mutable": false,
|
|
@@ -34,6 +34,10 @@ const RESTING_VARIANTS = [
|
|
|
34
34
|
name: 'invalid',
|
|
35
35
|
html: `<q2-calendar label="My calendar" placeholder="My date" invalid typeable></q2-calendar>`,
|
|
36
36
|
},
|
|
37
|
+
{
|
|
38
|
+
name: 'valid',
|
|
39
|
+
html: `<q2-calendar label="My calendar" placeholder="My date" value="2025-05-20" valid></q2-calendar>`,
|
|
40
|
+
},
|
|
37
41
|
{
|
|
38
42
|
name: 'with-value',
|
|
39
43
|
html: `<q2-calendar label="My calendar" placeholder="My date" value="2025-05-20"></q2-calendar>`,
|
|
@@ -144,7 +144,7 @@ button {
|
|
|
144
144
|
display: grid;
|
|
145
145
|
gap: var(--tct-card-gap, var(--t-card-gap, var(--app-scale-3x, 15px)));
|
|
146
146
|
margin: 0;
|
|
147
|
-
color: var(--tct-card-font-color, var(--tct-card-color, var(--t-card-color,
|
|
147
|
+
color: var(--tct-card-font-color, var(--tct-card-color, var(--t-card-color, inherit)));
|
|
148
148
|
backdrop-filter: var(--tct-card-backdrop-filter);
|
|
149
149
|
background: var(--tct-card-background, var(--t-card-background, var(--t-base, #ffffff)));
|
|
150
150
|
border-width: var(--tct-card-border-width, var(--t-card-border-width, 0px));
|
|
@@ -223,7 +223,7 @@ button {
|
|
|
223
223
|
.container.is-static {
|
|
224
224
|
cursor: auto;
|
|
225
225
|
background: var(--tct-card-static-background, var(--tct-card-background, none));
|
|
226
|
-
color: var(--tct-card-static-font-color, var(--tct-card-color,
|
|
226
|
+
color: var(--tct-card-static-font-color, var(--tct-card-color, inherit));
|
|
227
227
|
backdrop-filter: none;
|
|
228
228
|
border-radius: 0;
|
|
229
229
|
border: 0;
|
|
@@ -22,6 +22,8 @@ export class Q2CardImage {
|
|
|
22
22
|
// #endregion
|
|
23
23
|
// #region State Properties
|
|
24
24
|
this.computedSize = 'medium';
|
|
25
|
+
// #endregion
|
|
26
|
+
// #region Public Property API
|
|
25
27
|
/**
|
|
26
28
|
* Background style for the base layer.
|
|
27
29
|
* - `'primary'` | `'secondary'` | `'tertiary'`: Solid theme colors
|
|
@@ -314,7 +316,7 @@ export class Q2CardImage {
|
|
|
314
316
|
}
|
|
315
317
|
renderCardContent() {
|
|
316
318
|
const cardDetails = this.orientation === 'horizontal' ? this.renderHorizontalCardDetails() : this.renderVerticalCardDetails();
|
|
317
|
-
return (h("div", { role: !this.isDecorative && !this.clickable ? 'img' : undefined, "aria-label": !this.isDecorative && !this.clickable ? this.
|
|
319
|
+
return (h("div", { role: !this.isDecorative && !this.clickable ? 'img' : undefined, "aria-label": !this.isDecorative && !this.clickable ? this.tctAriaLabel : undefined, "aria-hidden": this.isDecorative || this.clickable ? 'true' : undefined, class: {
|
|
318
320
|
'card-image-container': true,
|
|
319
321
|
block: !this.inline,
|
|
320
322
|
clickable: this.clickable && !this.disabled,
|
|
@@ -365,13 +367,13 @@ export class Q2CardImage {
|
|
|
365
367
|
}, style: cardTypeColorStyle }, this.getCardTypeText())), h("div", { class: "vertical-vendor-row" }, h("div", { class: "vertical-vendor" }, vendorPath && (h("img", { src: vendorPath, alt: "", "aria-hidden": "true" }))))));
|
|
366
368
|
}
|
|
367
369
|
render() {
|
|
368
|
-
const cardContent = this.clickable ? (h("q2-btn", { disabled: this.disabled, label: this.
|
|
370
|
+
const cardContent = this.clickable ? (h("q2-btn", { block: true, disabled: this.disabled, label: this.tctAriaLabel, hideLabel: true, onClick: this.handleCardClick }, this.renderCardContent())) : (this.renderCardContent());
|
|
369
371
|
const showBanner = !!this.cardStatus && this.size === 'large';
|
|
370
|
-
return (h(Host, { key: '
|
|
372
|
+
return (h(Host, { key: '4425c2f04d081d93b56ed67f00b949c8143d0046', class: {
|
|
371
373
|
[`${this.orientation}`]: true,
|
|
372
374
|
'has-action': this.hasActionSlotContent,
|
|
373
375
|
'has-banner': showBanner,
|
|
374
|
-
} }, this.renderStatusBanner(), h("div", { key: '
|
|
376
|
+
} }, this.renderStatusBanner(), h("div", { key: '1d264f88e00805b9153a7ac59f4ea367bf28dc3f', class: "card-wrapper" }, cardContent, this.renderAction())));
|
|
375
377
|
}
|
|
376
378
|
static get is() { return "q2-card-image"; }
|
|
377
379
|
static get encapsulation() { return "shadow"; }
|
|
@@ -388,25 +390,6 @@ export class Q2CardImage {
|
|
|
388
390
|
static get assetsDirs() { return ["assets"]; }
|
|
389
391
|
static get properties() {
|
|
390
392
|
return {
|
|
391
|
-
"accessibilityLabel": {
|
|
392
|
-
"type": "string",
|
|
393
|
-
"mutable": false,
|
|
394
|
-
"complexType": {
|
|
395
|
-
"original": "string",
|
|
396
|
-
"resolved": "string",
|
|
397
|
-
"references": {}
|
|
398
|
-
},
|
|
399
|
-
"required": false,
|
|
400
|
-
"optional": true,
|
|
401
|
-
"docs": {
|
|
402
|
-
"tags": [],
|
|
403
|
-
"text": "Accessible label for the card image. When provided, this value is applied as `aria-label`\non either the card container (non-clickable) or the wrapping button (clickable)."
|
|
404
|
-
},
|
|
405
|
-
"getter": false,
|
|
406
|
-
"setter": false,
|
|
407
|
-
"reflect": false,
|
|
408
|
-
"attribute": "accessibility-label"
|
|
409
|
-
},
|
|
410
393
|
"background": {
|
|
411
394
|
"type": "string",
|
|
412
395
|
"mutable": false,
|
|
@@ -737,6 +720,25 @@ export class Q2CardImage {
|
|
|
737
720
|
"reflect": false,
|
|
738
721
|
"attribute": "status-text-override"
|
|
739
722
|
},
|
|
723
|
+
"tctAriaLabel": {
|
|
724
|
+
"type": "string",
|
|
725
|
+
"mutable": false,
|
|
726
|
+
"complexType": {
|
|
727
|
+
"original": "string",
|
|
728
|
+
"resolved": "string",
|
|
729
|
+
"references": {}
|
|
730
|
+
},
|
|
731
|
+
"required": false,
|
|
732
|
+
"optional": true,
|
|
733
|
+
"docs": {
|
|
734
|
+
"tags": [],
|
|
735
|
+
"text": "Accessible label for the card image. When provided, this value is applied as `aria-label`\non either the card container (non-clickable) or the wrapping button (clickable)."
|
|
736
|
+
},
|
|
737
|
+
"getter": false,
|
|
738
|
+
"setter": false,
|
|
739
|
+
"reflect": false,
|
|
740
|
+
"attribute": "tct-aria-label"
|
|
741
|
+
},
|
|
740
742
|
"vendor": {
|
|
741
743
|
"type": "string",
|
|
742
744
|
"mutable": false,
|
|
@@ -65,6 +65,10 @@ button {
|
|
|
65
65
|
visibility: hidden;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
/**
|
|
69
|
+
* @prop --tct-area-chart-width?: (<length-percentage>) Controls the width of the area chart.
|
|
70
|
+
* @prop --tct-area-chart-height?: (<length-percentage>) Controls the height of the area chart.
|
|
71
|
+
*/
|
|
68
72
|
:host {
|
|
69
73
|
width: var(--tct-area-chart-width, 100%);
|
|
70
74
|
height: var(--tct-area-chart-height, 100%);
|
|
@@ -65,6 +65,10 @@ button {
|
|
|
65
65
|
visibility: hidden;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
/**
|
|
69
|
+
* @prop --tct-bar-chart-width?: (<length-percentage>) Controls the width of the bar chart.
|
|
70
|
+
* @prop --tct-bar-chart-height?: (<length-percentage>) Controls the height of the bar chart.
|
|
71
|
+
*/
|
|
68
72
|
:host {
|
|
69
73
|
width: var(--tct-bar-chart-width, 100%);
|
|
70
74
|
height: var(--tct-bar-chart-height, 100%);
|
|
@@ -156,7 +156,7 @@ button:focus-visible {
|
|
|
156
156
|
height: 100%;
|
|
157
157
|
width: 100%;
|
|
158
158
|
text-align: center;
|
|
159
|
-
color: var(--tct-chart-donut-text-color, var(--t-chart-donut-text-color,
|
|
159
|
+
color: var(--tct-chart-donut-text-color, var(--t-chart-donut-text-color, inherit));
|
|
160
160
|
margin-inline: auto;
|
|
161
161
|
display: flex;
|
|
162
162
|
flex-direction: column;
|
|
@@ -30,6 +30,7 @@ export class Q2Checkbox {
|
|
|
30
30
|
if (!(event.target instanceof HTMLInputElement))
|
|
31
31
|
return;
|
|
32
32
|
const { value, checked } = event.target;
|
|
33
|
+
this.checked = checked;
|
|
33
34
|
mirrorEmit(this, ['change', 'tctChange'], {
|
|
34
35
|
value,
|
|
35
36
|
checked,
|
|
@@ -179,7 +180,7 @@ export class Q2Checkbox {
|
|
|
179
180
|
containerClasses.push('has-multiline-label');
|
|
180
181
|
if (this.hideLabel)
|
|
181
182
|
textLabelClasses.push('sr');
|
|
182
|
-
return (h("div", { key: '
|
|
183
|
+
return (h("div", { key: '0dff5141bf9fd0eb9b9d92f55c80b046a8224bad', class: containerClasses.join(' ') }, h("input", { key: 'ac0565c29bcb4b2e29403215ceb5fc0221578209', ref: el => (this.inputElement = el), "aria-describedby": this.hasDescription ? 'description' : undefined, "aria-invalid": this.hasError === undefined ? undefined : `${this.hasError}`, "aria-labelledby": this.ariaLabelledBy, checked: this.indeterminate || this.checked || false, class: "sr", disabled: !!this.disabled || !!this.groupDisabled, id: this._id, name: this.name || this._id, onClick: this.onInputClick, "test-id": "q2CheckboxInnerCheckBox", type: "checkbox", value: this.value }), h("label", { key: '56684f4fb63b0f6d136e69420f2e632a807ab03a', htmlFor: this._id, class: "label-control", "test-id": "checkboxButton", "aria-hidden": "true" }, this.renderCheckboxSVG()), h("div", { key: '4f40ff7c46337d002e3097e849e8a6d163271787', class: textLabelClasses.join(' '), ref: el => (this.labelTextElement = el) }, h("label", { key: '3d9803210e8462137d28205891762da8a9fa19cd', "test-id": "checkboxLabel", htmlFor: this._id, id: this.labelId }, h("div", { key: 'de644e9efa49bfb2c84400d4f748678f1724786d', class: "label-content" }, loc(this.label), h("slot", { key: 'f537a700ad48155f2896ae1880fcfdc4f1e60226', onSlotchange: this.queueLabelLayoutUpdate }), h("slot", { key: '184d686720af904c8f5cda2d4508cd07add7b1bf', name: "label", onSlotchange: this.queueLabelLayoutUpdate })))), this._tooltip && (h("span", { key: '05a8eacb9150b56ce30183561c72b0c607c60c8c', id: this.tooltipId, class: "sr", "test-id": "checkboxTooltipText" }, this._tooltip)), this.hasDescription && (h("div", { key: '7b06216cede51eb0bc13932ed17e3237854c1316', class: "description-text", "test-id": "checkboxDescription", id: "description" }, loc(this.description), h("slot", { key: '723ac0aa53756d0bd9f06e7bb2a1231056cdca50', name: "description" })))));
|
|
183
184
|
}
|
|
184
185
|
static get is() { return "q2-checkbox"; }
|
|
185
186
|
static get encapsulation() { return "shadow"; }
|
|
@@ -101,7 +101,7 @@ button {
|
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
.currency {
|
|
104
|
-
--comp-currency-color: var(--tct-currency-color,
|
|
104
|
+
--comp-currency-color: var(--tct-currency-color, inherit);
|
|
105
105
|
color: var(--comp-currency-color);
|
|
106
106
|
font-size: var(--tct-currency-font-size, inherit);
|
|
107
107
|
font-weight: var(--tct-currency-font-weight, inherit);
|
|
@@ -90,8 +90,11 @@ export class Q2DataTable {
|
|
|
90
90
|
rows: selectedRows,
|
|
91
91
|
allSelected: allRowsSelected,
|
|
92
92
|
});
|
|
93
|
-
if (selectEvent.defaultPrevented)
|
|
93
|
+
if (selectEvent.defaultPrevented) {
|
|
94
|
+
if (event.target)
|
|
95
|
+
event.target.checked = row.selected;
|
|
94
96
|
return;
|
|
97
|
+
}
|
|
95
98
|
this.serializedRows = this.serializedRows.map(row => (row.id === selectedRow.id ? selectedRow : row));
|
|
96
99
|
this.allRowsSelected = allRowsSelected;
|
|
97
100
|
this.someRowsSelected = isIndeterminate;
|
|
@@ -416,7 +419,7 @@ export class Q2DataTable {
|
|
|
416
419
|
// #region Render Methods
|
|
417
420
|
render() {
|
|
418
421
|
const { caption } = this;
|
|
419
|
-
return (h("div", { key: '
|
|
422
|
+
return (h("div", { key: '9f2281aae60f873a2755db7ed67aaab73c79f499', class: "container" }, h("table", { key: '2d057320dad36ea04d1037546ef2b9a8135b0a08' }, caption && h("caption", { key: '2b4ae6daf2d2f3c75e1819166cf758b5ff5f3ab4', class: this.hideCaption ? 'sr' : undefined }, caption), this.renderTableColGroup(), this.renderTableHeader(), this.renderEmptyState(), this.renderTableRows())));
|
|
420
423
|
}
|
|
421
424
|
renderCellContent(cell) {
|
|
422
425
|
if (!cell)
|
|
@@ -149,30 +149,30 @@ button {
|
|
|
149
149
|
flex: 1;
|
|
150
150
|
text-align: left;
|
|
151
151
|
line-height: 1.5;
|
|
152
|
-
color: var(--tct-detail-label-font-color,
|
|
152
|
+
color: var(--tct-detail-label-font-color, inherit);
|
|
153
153
|
}
|
|
154
154
|
.label-size-xsmall {
|
|
155
|
-
color: var(--tct-detail-label-xsmall-font-color,
|
|
155
|
+
color: var(--tct-detail-label-xsmall-font-color, var(--tct-detail-label-font-color, inherit));
|
|
156
156
|
font-size: var(--tct-detail-label-xsmall-font-size, 14px);
|
|
157
157
|
font-weight: var(--tct-detail-label-xsmall-font-weight, 400);
|
|
158
158
|
}
|
|
159
159
|
.label-size-small {
|
|
160
|
-
color: var(--tct-detail-label-small-font-color);
|
|
160
|
+
color: var(--tct-detail-label-small-font-color, var(--tct-detail-label-font-color, inherit));
|
|
161
161
|
font-size: var(--tct-detail-label-small-font-size, 14px);
|
|
162
162
|
font-weight: var(--tct-detail-label-small-font-weight, 400);
|
|
163
163
|
}
|
|
164
164
|
.label-size-medium {
|
|
165
|
-
color: var(--tct-detail-label-medium-font-color);
|
|
165
|
+
color: var(--tct-detail-label-medium-font-color, var(--tct-detail-label-font-color, inherit));
|
|
166
166
|
font-size: var(--tct-detail-label-medium-font-size, 14px);
|
|
167
167
|
font-weight: var(--tct-detail-label-medium-font-weight, 400);
|
|
168
168
|
}
|
|
169
169
|
.label-size-large {
|
|
170
|
-
color: var(--tct-detail-label-large-font-color);
|
|
170
|
+
color: var(--tct-detail-label-large-font-color, var(--tct-detail-label-font-color, inherit));
|
|
171
171
|
font-size: var(--tct-detail-label-large-font-size, 16px);
|
|
172
172
|
font-weight: var(--tct-detail-label-large-font-weight, 400);
|
|
173
173
|
}
|
|
174
174
|
.label-size-xlarge {
|
|
175
|
-
color: var(--tct-detail-label-xlarge-font-color);
|
|
175
|
+
color: var(--tct-detail-label-xlarge-font-color, var(--tct-detail-label-font-color, inherit));
|
|
176
176
|
font-size: var(--tct-detail-label-xlarge-font-size, 18px);
|
|
177
177
|
font-weight: var(--tct-detail-label-xlarge-font-weight, 400);
|
|
178
178
|
}
|
|
@@ -187,34 +187,34 @@ button {
|
|
|
187
187
|
display: flex;
|
|
188
188
|
align-items: center;
|
|
189
189
|
line-height: 1.5;
|
|
190
|
-
color: var(--tct-detail-description-font-color,
|
|
190
|
+
color: var(--tct-detail-description-font-color, inherit);
|
|
191
191
|
column-gap: var(--tct-detail-description-gap-column, var(--app-scale-1x, 5px));
|
|
192
192
|
}
|
|
193
193
|
.description-alignment-right {
|
|
194
194
|
justify-content: flex-end;
|
|
195
195
|
}
|
|
196
196
|
.description-size-xsmall {
|
|
197
|
-
color: var(--tct-detail-description-xsmall-font-color,
|
|
197
|
+
color: var(--tct-detail-description-xsmall-font-color, var(--tct-detail-description-font-color, inherit));
|
|
198
198
|
font-size: var(--tct-detail-description-xsmall-font-size, 14px);
|
|
199
199
|
font-weight: var(--tct-detail-description-xsmall-font-weight, 400);
|
|
200
200
|
}
|
|
201
201
|
.description-size-small {
|
|
202
|
-
color: var(--tct-detail-description-small-font-color);
|
|
202
|
+
color: var(--tct-detail-description-small-font-color, var(--tct-detail-description-font-color, inherit));
|
|
203
203
|
font-size: var(--tct-detail-description-small-font-size, 14px);
|
|
204
204
|
font-weight: var(--tct-detail-description-small-font-weight, 400);
|
|
205
205
|
}
|
|
206
206
|
.description-size-medium {
|
|
207
|
-
color: var(--tct-detail-description-medium-font-color);
|
|
207
|
+
color: var(--tct-detail-description-medium-font-color, var(--tct-detail-description-font-color, inherit));
|
|
208
208
|
font-size: var(--tct-detail-description-medium-font-size, 24px);
|
|
209
209
|
font-weight: var(--tct-detail-description-medium-font-weight, 600);
|
|
210
210
|
}
|
|
211
211
|
.description-size-large {
|
|
212
|
-
color: var(--tct-detail-description-large-font-color);
|
|
212
|
+
color: var(--tct-detail-description-large-font-color, var(--tct-detail-description-font-color, inherit));
|
|
213
213
|
font-size: var(--tct-detail-description-large-font-size, 28px);
|
|
214
214
|
font-weight: var(--tct-detail-description-large-font-weight, 600);
|
|
215
215
|
}
|
|
216
216
|
.description-size-xlarge {
|
|
217
|
-
color: var(--tct-detail-description-xlarge-font-color);
|
|
217
|
+
color: var(--tct-detail-description-xlarge-font-color, var(--tct-detail-description-font-color, inherit));
|
|
218
218
|
font-size: var(--tct-detail-description-xlarge-font-size, 32px);
|
|
219
219
|
font-weight: var(--tct-detail-description-xlarge-font-weight, 700);
|
|
220
220
|
}
|
|
@@ -238,7 +238,7 @@ export class Q2Dropdown {
|
|
|
238
238
|
// #endregion
|
|
239
239
|
// #region Local Methods
|
|
240
240
|
get determineDropdownItemCount() {
|
|
241
|
-
return this.hostElement.querySelectorAll(this.dropdownItemSelector).length;
|
|
241
|
+
return this.hostElement.querySelectorAll(`${this.dropdownItemSelector}, ${this.optionSelector}`).length;
|
|
242
242
|
}
|
|
243
243
|
get hasCustomControl() {
|
|
244
244
|
return !!this.hostElement.querySelector('[slot=control]');
|
|
@@ -364,7 +364,7 @@ export class Q2Dropdown {
|
|
|
364
364
|
// #region Render Methods
|
|
365
365
|
render() {
|
|
366
366
|
const btnProps = this.toggleButtonProps;
|
|
367
|
-
return (h("click-elsewhere", { key: '
|
|
367
|
+
return (h("click-elsewhere", { key: '27e7a560b21894fb10175be18c9cb07e37f59db3', class: this.open ? 'dropdown-open' : '', onChange: this.onClickElsewhere, "test-id": "dropdownContainer" }, h("q2-btn", { key: 'b53dace27e75fdbcd87a1689470a1466ad9e07d3', tabIndex: 0, ref: el => (this.controlElement = el), class: btnProps.className, onClick: this.onToggleClick, onKeyDown: this.onToggleKeydown, fab: btnProps.fab, intent: btnProps.intent, onFocusout: this.handleFocusOut, active: btnProps.active, disabled: btnProps.disabled, ariaExpanded: `${!!btnProps.ariaExpanded}`, label: this.hideLabel && this.label ? loc(this.label) : undefined, hideLabel: this.hideLabel, ariaHasPopup: "menu", "test-id": "dropdownButton", block: this.block, description: loc('tecton.element.dropdown.itemCount', [this.determineDropdownItemCount]) }, this.hasCustomControl ? (h("div", { "test-id": "dropdownControl", class: btnProps.custom ? '' : 'hidden' }, h("slot", { name: "control" }))) : (h(Fragment, null, this.label && !this.hideLabel && (h("span", { class: "dropdown-button-text" }, loc(this.label))), this.icon ? h("q2-icon", { type: this.icon }) : ' '))), h("q2-popover", { key: '4a15e7d6d8f474c8464e39e35437cd8edcc9487d', ref: el => (this.popoverElement = el), controlElement: this.controlElement, open: this.open, "max-height": this.popoverMaxHeight, onFocusout: this.handleFocusOut, minHeight: this.popoverMinHeight, direction: this.popoverDirection, align: this.popoverAlignment, mode: this.popoverMode || undefined, block: this.block }, h("slot", { key: '7854254650f81b8d5a229acbec55aa8beab36882', name: "popover-top" }), h("q2-option-list", { key: 'a38c9411306ad8d39456dce81bb50e9af13bf1f6', onPopoverState: this.onPopoverState, id: "option-list", ref: el => (this.optionList = el), type: "menu", label: loc('tecton.element.optionList.label', [this.optionListLabel]), "no-select": true }, h("slot", { key: '7472127d019366f76eff86cd744d050d197b25c1' })), h("slot", { key: '5af670e8f5ed273175100ddc9202c44e2c06f7b3', name: "popover-bottom" }))));
|
|
368
368
|
}
|
|
369
369
|
static get is() { return "q2-dropdown"; }
|
|
370
370
|
static get encapsulation() { return "shadow"; }
|
|
@@ -22,7 +22,10 @@ export class Q2EditableField {
|
|
|
22
22
|
this.cancelClick = (event) => {
|
|
23
23
|
event === null || event === void 0 ? void 0 : event.stopPropagation();
|
|
24
24
|
mirrorEmit(this, ['change', 'tctChange'], { editing: false, name: 'cancel' });
|
|
25
|
-
this.
|
|
25
|
+
this.innerValue = undefined;
|
|
26
|
+
this.formattedValue = undefined;
|
|
27
|
+
this.inputElement.value = '';
|
|
28
|
+
this.inputElement.value = this.defaultValue;
|
|
26
29
|
};
|
|
27
30
|
this.editClick = (event) => {
|
|
28
31
|
event === null || event === void 0 ? void 0 : event.stopPropagation();
|
|
@@ -55,7 +58,6 @@ export class Q2EditableField {
|
|
|
55
58
|
this.saveClick = (event) => {
|
|
56
59
|
event && event.stopPropagation();
|
|
57
60
|
const valueFromInputProp = this.hostElement.shadowRoot.querySelector('q2-input').value;
|
|
58
|
-
this.defaultValue = valueFromInputProp;
|
|
59
61
|
mirrorEmit(this, ['change', 'tctChange'], {
|
|
60
62
|
editing: false,
|
|
61
63
|
name: 'save',
|
|
@@ -180,6 +182,9 @@ export class Q2EditableField {
|
|
|
180
182
|
return;
|
|
181
183
|
this.inputElement.focus();
|
|
182
184
|
}
|
|
185
|
+
valueObserver(newValue) {
|
|
186
|
+
this.defaultValue = newValue;
|
|
187
|
+
}
|
|
183
188
|
// #endregion
|
|
184
189
|
// #region Local Methods
|
|
185
190
|
get hasErrors() {
|
|
@@ -206,7 +211,7 @@ export class Q2EditableField {
|
|
|
206
211
|
// #endregion
|
|
207
212
|
// #region Render Methods
|
|
208
213
|
render() {
|
|
209
|
-
return (h("div", { key: '
|
|
214
|
+
return (h("div", { key: '8231300cc04b5b2dce65d3c39ef2e4c0bc892696' }, this.generateEditStateDOM(), this.generateReadStateDOM()));
|
|
210
215
|
}
|
|
211
216
|
static get is() { return "q2-editable-field"; }
|
|
212
217
|
static get encapsulation() { return "shadow"; }
|
|
@@ -673,6 +678,9 @@ export class Q2EditableField {
|
|
|
673
678
|
}, {
|
|
674
679
|
"propName": "errors",
|
|
675
680
|
"methodName": "errorsObserver"
|
|
681
|
+
}, {
|
|
682
|
+
"propName": "value",
|
|
683
|
+
"methodName": "valueObserver"
|
|
676
684
|
}];
|
|
677
685
|
}
|
|
678
686
|
static get listeners() {
|
|
@@ -121,6 +121,9 @@ button {
|
|
|
121
121
|
* @prop --tct-input-error-prefix-background: (<color>) Controls the background color of the input prefix in the error state.
|
|
122
122
|
* @prop --tct-input-error-prefix-font-color?: (<color>) Controls the optional text color of the input prefix in the error state.
|
|
123
123
|
* @prop --tct-input-placeholder-font-color: (<color>) Controls the placeholder text color of the input.
|
|
124
|
+
* @prop --tct-input-placeholder-font-size?: (<length-percentage>) Controls the optional font size of the input placeholder text.
|
|
125
|
+
* @prop --tct-input-placeholder-font-weight?: (<number>) Controls the optional font weight of the input placeholder text.
|
|
126
|
+
* @prop --tct-input-placeholder-padding?: (<length-percentage>+) Controls the optional inner padding of the input placeholder text.
|
|
124
127
|
* @prop --tct-input-autofill-background: (<color>) Controls the background color of the input field when autofilled.
|
|
125
128
|
* @prop --tct-input-autofill-font-color?: (<color>) Controls the optional text color of the input field when autofilled.
|
|
126
129
|
* @prop --tct-input-label-font-color?: (<color>) Controls the optional text color of the input label.
|
|
@@ -393,9 +396,11 @@ button {
|
|
|
393
396
|
max-width: 100%;
|
|
394
397
|
}
|
|
395
398
|
.has-custom-display .custom-display-container {
|
|
399
|
+
width: 100%;
|
|
400
|
+
}
|
|
401
|
+
.has-custom-display .custom-display-container ::slotted([slot=custom-display]) {
|
|
396
402
|
--comp-default-padding: var(--app-scale-2x, 10px) var(--app-scale-2x, 10px) var(--app-scale-3x, 15px);
|
|
397
403
|
padding: var(--tct-input-padding, var(--t-input-padding, var(--comp-default-padding)));
|
|
398
|
-
width: 100%;
|
|
399
404
|
}
|
|
400
405
|
|
|
401
406
|
.input-field::placeholder,
|
|
@@ -508,6 +513,11 @@ q2-icon {
|
|
|
508
513
|
--tct-icon-stroke-primary: var(--tct-stoplight-error, var(--const-stoplight-alert, #d20a0a));
|
|
509
514
|
}
|
|
510
515
|
|
|
516
|
+
.icon-valid {
|
|
517
|
+
color: var(--tct-stoplight-success, var(--const-stoplight-success, #0e8a00));
|
|
518
|
+
--tct-icon-stroke-primary: var(--tct-stoplight-success, var(--const-stoplight-success, #0e8a00));
|
|
519
|
+
}
|
|
520
|
+
|
|
511
521
|
.messages-container {
|
|
512
522
|
height: 0px;
|
|
513
523
|
overflow: hidden;
|
|
@@ -86,6 +86,8 @@ export class Q2Input {
|
|
|
86
86
|
this.showVisibilityToggle = false;
|
|
87
87
|
/** Specifies the field's expected [input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types), and provides the optimal keyboard on mobile devices. */
|
|
88
88
|
this.type = 'text';
|
|
89
|
+
/** Displays a success state icon when the field does not have active errors. */
|
|
90
|
+
this.valid = false;
|
|
89
91
|
/**
|
|
90
92
|
* Sets textSelectedForDeletion to true if the user has selected text for deletion
|
|
91
93
|
* This is used to prevent other logic from running when text is deleted
|
|
@@ -442,6 +444,9 @@ export class Q2Input {
|
|
|
442
444
|
get hasInputRightSlot() {
|
|
443
445
|
return hasSlotContent(this.hostElement, 'input-right');
|
|
444
446
|
}
|
|
447
|
+
get hasValidState() {
|
|
448
|
+
return this.valid && !this.hasError;
|
|
449
|
+
}
|
|
445
450
|
get inputDescribedBy() {
|
|
446
451
|
return this.showMessages ? `${this.inputId}-description` : undefined;
|
|
447
452
|
}
|
|
@@ -515,6 +520,8 @@ export class Q2Input {
|
|
|
515
520
|
const classNames = ['field-container'];
|
|
516
521
|
if (this.hasError)
|
|
517
522
|
classNames.push('has-error');
|
|
523
|
+
if (this.hasValidState)
|
|
524
|
+
classNames.push('has-valid');
|
|
518
525
|
if (!!this.value)
|
|
519
526
|
classNames.push('has-value');
|
|
520
527
|
if (this.clearable && !!this.value)
|
|
@@ -708,7 +715,7 @@ export class Q2Input {
|
|
|
708
715
|
}
|
|
709
716
|
renderInputContainerDOM() {
|
|
710
717
|
const { hasInputLeftSlot, hasInputRightSlot } = this;
|
|
711
|
-
return (h("div", { class: "input-container", tabindex: -1, "test-id": "inputContainer" }, h("div", { class: "input-icons-container-left" }, this.formattedValueObject.prefix && (h("div", { class: "input-prefix" }, this.formattedValueObject.prefix)), this.computedIconLeft && (h("div", null, h("q2-icon", { type: this.computedIconLeft, class: this.computedClassForIconLeft }))), hasInputLeftSlot && h("slot", { name: "input-left" }), this.showIconSeparator && h("div", { class: "vertical-separator" }), this.hasError && this.type === 'currency' && (h("div", { "test-id": "divIconError", onClick: this.onRefocusInput }, h("q2-icon", { type: "error", class: "icon-error", "test-id": "iconError" })))), this.pseudo ? this.renderPseudoInputDOM() : this.renderStandardInputDOM(), h("div", { class: "input-icons-container-right" }, h("q2-btn", { class: this.clearClasses.join(' '), label: loc('tecton.element.input.clear', [this.label]), hideLabel: true, "test-id": "clearButton", onMouseDown: e => e.preventDefault(), onClick: this.onClearInput, onKeyDown: e => e.stopPropagation() }, h("q2-icon", { type: "close", class: "icon-clear" })), ['password', 'text', 'ssn', 'tin'].includes(this.type) && this.showVisibilityToggle && (h("q2-btn", { class: "btn-visibility-toggle", "test-id": "toggleVisibilityButton", onClick: this.onToggleVisibility, label: loc(this.visibilityToggleAriaLabel, { label: this.label }), "hide-label": true }, this.visibilityToggleText)), this.formattedValueObject.suffix && (h("span", { class: "input-suffix" }, this.formattedValueObject.suffix)), this.badgeValue && (h("q2-badge", { size: "large", theme: this.badgeTheme }, this.badgeValue)), this.hasError && this.type !== 'currency' && (h("div", { "test-id": "divIconError", onClick: this.onRefocusInput }, h("q2-icon", { type: "error", class: "icon-error", "test-id": "iconError" }))), this.iconRight && !this.formattedValueObject.suffix && (h("div", null, h("q2-icon", { type: this.iconRight, class: "icon-right" }))), hasInputRightSlot && h("slot", { name: "input-right" }))));
|
|
718
|
+
return (h("div", { class: "input-container", tabindex: -1, "test-id": "inputContainer" }, h("div", { class: "input-icons-container-left" }, this.formattedValueObject.prefix && (h("div", { class: "input-prefix" }, this.formattedValueObject.prefix)), this.computedIconLeft && (h("div", null, h("q2-icon", { type: this.computedIconLeft, class: this.computedClassForIconLeft }))), hasInputLeftSlot && h("slot", { name: "input-left" }), this.showIconSeparator && h("div", { class: "vertical-separator" }), this.hasError && this.type === 'currency' && (h("div", { "test-id": "divIconError", onClick: this.onRefocusInput }, h("q2-icon", { type: "error", class: "icon-error", "test-id": "iconError" }))), this.hasValidState && this.type === 'currency' && (h("div", { class: "input-valid-icon-container", "test-id": "divIconValid" }, h("q2-icon", { type: "success", class: "icon-valid", "test-id": "iconValid" })))), this.pseudo ? this.renderPseudoInputDOM() : this.renderStandardInputDOM(), h("div", { class: "input-icons-container-right" }, h("q2-btn", { class: this.clearClasses.join(' '), label: loc('tecton.element.input.clear', [this.label]), hideLabel: true, "test-id": "clearButton", onMouseDown: e => e.preventDefault(), onClick: this.onClearInput, onKeyDown: e => e.stopPropagation() }, h("q2-icon", { type: "close", class: "icon-clear" })), ['password', 'text', 'ssn', 'tin'].includes(this.type) && this.showVisibilityToggle && (h("q2-btn", { class: "btn-visibility-toggle", "test-id": "toggleVisibilityButton", onClick: this.onToggleVisibility, label: loc(this.visibilityToggleAriaLabel, { label: this.label }), "hide-label": true }, this.visibilityToggleText)), this.formattedValueObject.suffix && (h("span", { class: "input-suffix" }, this.formattedValueObject.suffix)), this.badgeValue && (h("q2-badge", { size: "large", theme: this.badgeTheme }, this.badgeValue)), this.hasValidState && this.type !== 'currency' && (h("div", { class: "input-valid-icon-container", "test-id": "divIconValid" }, h("q2-icon", { type: "success", class: "icon-valid", "test-id": "iconValid" }))), this.hasError && this.type !== 'currency' && (h("div", { "test-id": "divIconError", onClick: this.onRefocusInput }, h("q2-icon", { type: "error", class: "icon-error", "test-id": "iconError" }))), this.iconRight && !this.formattedValueObject.suffix && (h("div", null, h("q2-icon", { type: this.iconRight, class: "icon-right" }))), hasInputRightSlot && h("slot", { name: "input-right" }))));
|
|
712
719
|
}
|
|
713
720
|
renderPseudoInputDOM() {
|
|
714
721
|
const showPlaceholder = !this.value && !!this.placeholder;
|
|
@@ -725,7 +732,7 @@ export class Q2Input {
|
|
|
725
732
|
}
|
|
726
733
|
render() {
|
|
727
734
|
const { ariaControls, ariaExpanded } = this.ariaAttributes;
|
|
728
|
-
return (h(Host, { key: '
|
|
735
|
+
return (h(Host, { key: 'edb58506d07e300340ece461b1788acfcbaf712a', role: this._role, "aria-controls": ariaControls, "aria-expanded": ariaExpanded }, h("div", { key: '10bcd4e4adb9614628958029aca0d7cb96593c31', class: this.wrapperClasses }, h("div", { key: 'bfad0e782b14bc1ab1c2fd01cacc79d76f82f6ab', class: "label-wrapper" }, renderLabel(this), this.renderCountDOM()), this.renderInputContainerDOM(), renderMessages(this))));
|
|
729
736
|
}
|
|
730
737
|
static get is() { return "q2-input"; }
|
|
731
738
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1564,6 +1571,26 @@ export class Q2Input {
|
|
|
1564
1571
|
"attribute": "type",
|
|
1565
1572
|
"defaultValue": "'text'"
|
|
1566
1573
|
},
|
|
1574
|
+
"valid": {
|
|
1575
|
+
"type": "boolean",
|
|
1576
|
+
"mutable": false,
|
|
1577
|
+
"complexType": {
|
|
1578
|
+
"original": "boolean",
|
|
1579
|
+
"resolved": "boolean",
|
|
1580
|
+
"references": {}
|
|
1581
|
+
},
|
|
1582
|
+
"required": false,
|
|
1583
|
+
"optional": false,
|
|
1584
|
+
"docs": {
|
|
1585
|
+
"tags": [],
|
|
1586
|
+
"text": "Displays a success state icon when the field does not have active errors."
|
|
1587
|
+
},
|
|
1588
|
+
"getter": false,
|
|
1589
|
+
"setter": false,
|
|
1590
|
+
"reflect": true,
|
|
1591
|
+
"attribute": "valid",
|
|
1592
|
+
"defaultValue": "false"
|
|
1593
|
+
},
|
|
1567
1594
|
"validity": {
|
|
1568
1595
|
"type": "unknown",
|
|
1569
1596
|
"mutable": true,
|
|
@@ -44,6 +44,14 @@ const VARIANTS = [
|
|
|
44
44
|
html: '<q2-input label="My input" placeholder="Enter text here"></q2-input>',
|
|
45
45
|
setup: 'errors',
|
|
46
46
|
},
|
|
47
|
+
{
|
|
48
|
+
name: 'valid',
|
|
49
|
+
html: '<q2-input label="My input" placeholder="Enter text here" valid value="Valid value"></q2-input>',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: 'valid-currency',
|
|
53
|
+
html: '<q2-input label="My input" placeholder="Enter text here" type="currency" valid value="12.34"></q2-input>',
|
|
54
|
+
},
|
|
47
55
|
];
|
|
48
56
|
const FOCUS_VARIANTS = new Set(['default', 'hinted', 'errored']);
|
|
49
57
|
const applyInputSetup = async (page, setup) => {
|
|
@@ -144,6 +144,7 @@ button {
|
|
|
144
144
|
* @prop --tct-item-avatar-height: (<length>) Controls the height applied to an avatar rendered in the item bullet area.
|
|
145
145
|
* @prop --tct-item-avatar-width: (<length>) Controls the width applied to an avatar rendered in the item bullet area.
|
|
146
146
|
* @prop --tct-item-action-align-items: (<custom-ident>) Controls the align-items value of the item action (trailing) area.
|
|
147
|
+
* @prop --tct-item-action-btn-icon-padding: (<length>) Controls the padding of icon buttons in the item action area.
|
|
147
148
|
* @prop --tct-item-action-icon-height: (<length>) Controls the height applied to icon buttons in the item action area.
|
|
148
149
|
* @prop --tct-item-action-icon-width: (<length>) Controls the width applied to icon buttons in the item action area.
|
|
149
150
|
* @prop --tct-item-action-icon-size: (<length>) Controls the icon size applied to icons in the item action area.
|
|
@@ -198,9 +199,6 @@ button {
|
|
|
198
199
|
}
|
|
199
200
|
|
|
200
201
|
.action {
|
|
201
|
-
--tct-btn-icon-height: var(--tct-item-action-icon-height, var(--app-scale-6x, 30px));
|
|
202
|
-
--tct-btn-icon-width: var(--tct-item-action-icon-width, var(--app-scale-6x, 30px));
|
|
203
|
-
--tct-icon-size: var(--tct-item-action-icon-size, var(--app-scale-6x, 30px));
|
|
204
202
|
--tct-radio-label-hidden-columns: 18px;
|
|
205
203
|
--tct-radio-label-margin-right: 0;
|
|
206
204
|
--tct-radio-margin: 0;
|
|
@@ -212,9 +210,16 @@ button {
|
|
|
212
210
|
.action-no-bullet {
|
|
213
211
|
grid-column: 2;
|
|
214
212
|
}
|
|
213
|
+
.action ::slotted(q2-dropdown[type=icon]),
|
|
214
|
+
.action ::slotted(q2-btn:not([intent])) {
|
|
215
|
+
--tct-btn-icon-height: var(--tct-item-action-icon-height, var(--app-scale-6x, 30px));
|
|
216
|
+
--tct-btn-icon-width: var(--tct-item-action-icon-width, var(--app-scale-6x, 30px));
|
|
217
|
+
--tct-icon-size: var(--tct-item-action-icon-size, var(--app-scale-6x, 30px));
|
|
218
|
+
--tct-btn-icon-padding: var(--tct-item-action-btn-icon-padding, 0);
|
|
219
|
+
}
|
|
215
220
|
|
|
216
221
|
.body {
|
|
217
|
-
color: var(--tct-item-body-color,
|
|
222
|
+
color: var(--tct-item-body-color, inherit);
|
|
218
223
|
font-size: var(--tct-item-body-font-size, var(--app-font-size, 14px));
|
|
219
224
|
font-weight: var(--tct-item-body-font-weight, 400);
|
|
220
225
|
font-style: var(--tct-item-body-font-style, inherit);
|
|
@@ -282,7 +287,7 @@ button {
|
|
|
282
287
|
}
|
|
283
288
|
|
|
284
289
|
.header {
|
|
285
|
-
color: var(--tct-item-header-color,
|
|
290
|
+
color: var(--tct-item-header-color, inherit);
|
|
286
291
|
font-size: var(--tct-item-header-font-size, 16px);
|
|
287
292
|
font-style: var(--tct-item-header-font-style, inherit);
|
|
288
293
|
font-weight: var(--tct-item-header-font-weight, 600);
|