Skip to content

Commit 538deb0

Browse files
fix(ui5-time-picker): add tooltip to icon in input (#12671)
Adding tooltip to Icon button in the input. Using "Open Picker" when closed and "Close Picker" when opened. related to: #12616
1 parent 89fa5ca commit 538deb0

File tree

4 files changed

+88
-0
lines changed

4 files changed

+88
-0
lines changed

packages/main/cypress/specs/TimePicker.cy.tsx

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -545,6 +545,77 @@ describe("Validation inside a form", () => {
545545
});
546546
});
547547

548+
describe("Icon Tooltip Tests", () => {
549+
it("TimePicker icon tooltip changes when toggling picker", () => {
550+
cy.mount(<TimePicker />);
551+
552+
cy.get<TimePicker>("[ui5-time-picker]")
553+
.as("timePicker");
554+
555+
cy.get<TimePicker>("@timePicker")
556+
.should("not.have.attr", "open");
557+
558+
cy.get<TimePicker>("@timePicker")
559+
.shadow()
560+
.find("ui5-icon")
561+
.as("icon")
562+
.should("have.attr", "accessible-name", "Open Picker");
563+
564+
cy.get<TimePicker>("@timePicker")
565+
.ui5TimePickerValueHelpIconPress();
566+
567+
cy.get<TimePicker>("@timePicker")
568+
.should("have.attr", "open");
569+
570+
cy.get("@icon")
571+
.should("have.attr", "accessible-name", "Close Picker");
572+
573+
cy.get<TimePicker>("@timePicker")
574+
.ui5TimePickerValueHelpIconPress();
575+
576+
cy.get<TimePicker>("@timePicker")
577+
.should("not.have.attr", "open");
578+
579+
cy.get("@icon")
580+
.should("have.attr", "accessible-name", "Open Picker");
581+
});
582+
583+
it("TimePicker icon tooltip changes when using keyboard shortcuts", () => {
584+
cy.mount(<TimePicker />);
585+
586+
cy.get<TimePicker>("[ui5-time-picker]")
587+
.as("timePicker")
588+
.ui5TimePickerGetInnerInput()
589+
.as("input")
590+
.realClick()
591+
.should("be.focused");
592+
593+
cy.get<TimePicker>("@timePicker")
594+
.shadow()
595+
.find("ui5-icon")
596+
.as("icon")
597+
.should("have.attr", "accessible-name", "Open Picker");
598+
599+
cy.get("@input")
600+
.realPress("F4");
601+
602+
cy.get<TimePicker>("@timePicker")
603+
.should("have.attr", "open");
604+
605+
cy.get("@icon")
606+
.should("have.attr", "accessible-name", "Close Picker");
607+
608+
cy.get("@input")
609+
.realPress(["Alt", "ArrowUp"]);
610+
611+
cy.get<TimePicker>("@timePicker")
612+
.should("not.have.attr", "open");
613+
614+
cy.get("@icon")
615+
.should("have.attr", "accessible-name", "Open Picker");
616+
});
617+
});
618+
548619
describe("CSS Parts", () => {
549620
it("TimePicker exposes input CSS part through DateTimeInput", () => {
550621
cy.mount(<TimePicker />);

packages/main/src/TimePicker.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ import {
5959
VALUE_STATE_WARNING,
6060
TIMEPICKER_VALUE_MISSING,
6161
TIMEPICKER_PATTERN_MISSMATCH,
62+
TIMEPICKER_OPEN_ICON_TITLE_OPENED,
63+
TIMEPICKER_OPEN_ICON_TITLE,
6264
} from "./generated/i18n/i18n-defaults.js";
6365

6466
// Styles
@@ -487,6 +489,14 @@ class TimePicker extends UI5Element implements IFormInputElement {
487489
this.tempValue = e.detail.value; // every time the user changes the time selection -> update tempValue
488490
}
489491

492+
get openIconTitle() {
493+
if (this.open) {
494+
return TimePicker.i18nBundle.getText(TIMEPICKER_OPEN_ICON_TITLE_OPENED);
495+
}
496+
497+
return TimePicker.i18nBundle.getText(TIMEPICKER_OPEN_ICON_TITLE);
498+
}
499+
490500
_togglePicker() {
491501
this.open = !this.open;
492502
if (this._isMobileDevice) {

packages/main/src/TimePickerTemplate.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ export default function TimePickerTemplate(this: TimePicker) {
4040
name={timeEntryRequest}
4141
tabindex={-1}
4242
showTooltip={true}
43+
accessibleName={this.openIconTitle}
4344
mode={this._iconMode}
4445
onClick={this._togglePicker}
4546
class={{

packages/main/src/i18n/messagebundle.properties

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -549,6 +549,12 @@ TIMEPICKER_INPUTS_ENTER_MINUTES=Please enter minutes
549549
#XACT: Time Picker Inputs tooltip/aria-label for Seconds input
550550
TIMEPICKER_INPUTS_ENTER_SECONDS=Please enter seconds
551551

552+
#XACT: Time Picker 'Open Picker' icon title
553+
TIMEPICKER_OPEN_ICON_TITLE=Open Picker
554+
555+
#XACT: Time Picker 'Open Picker' icon title when the picker is opened
556+
TIMEPICKER_OPEN_ICON_TITLE_OPENED=Close Picker
557+
552558
TIMEPICKER_VALUE_MISSING=Fill in the time value in the format: {0}.
553559

554560
TIMEPICKER_PATTERN_MISSMATCH=This format is not supported. Fill in the time value in the format: {0}.

0 commit comments

Comments
 (0)