Skip to content

Commit 00dcf47

Browse files
NHristov-sapilhan007
authored andcommitted
feat(ui5-step-input): inintial implementation (#2804)
Fixes #2640
1 parent 7d9e409 commit 00dcf47

14 files changed

+1741
-10
lines changed

packages/base/src/Keys.js

+24
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,22 @@ const isUp = event => (event.key ? (event.key === "ArrowUp" || event.key === "Up
115115

116116
const isDown = event => (event.key ? (event.key === "ArrowDown" || event.key === "Down") : event.keyCode === KeyCodes.ARROW_DOWN) && !hasModifierKeys(event);
117117

118+
const isLeftCtrl = event => (event.key ? (event.key === "ArrowLeft" || event.key === "Left") : event.keyCode === KeyCodes.ARROW_LEFT) && checkModifierKeys(event, true, false, false);
119+
120+
const isRightCtrl = event => (event.key ? (event.key === "ArrowRight" || event.key === "Right") : event.keyCode === KeyCodes.ARROW_RIGHT) && checkModifierKeys(event, true, false, false);
121+
122+
const isUpCtrl = event => (event.key ? (event.key === "ArrowUp" || event.key === "Up") : event.keyCode === KeyCodes.ARROW_UP) && checkModifierKeys(event, true, false, false);
123+
124+
const isDownCtrl = event => (event.key ? (event.key === "ArrowDown" || event.key === "Down") : event.keyCode === KeyCodes.ARROW_DOWN) && checkModifierKeys(event, true, false, false);
125+
126+
const isUpShift = event => (event.key ? (event.key === "ArrowUp" || event.key === "Up") : event.keyCode === KeyCodes.ARROW_UP) && checkModifierKeys(event, false, false, true);
127+
128+
const isDownShift = event => (event.key ? (event.key === "ArrowDown" || event.key === "Down") : event.keyCode === KeyCodes.ARROW_DOWN) && checkModifierKeys(event, false, false, true);
129+
130+
const isUpShiftCtrl = event => (event.key ? (event.key === "ArrowUp" || event.key === "Up") : event.keyCode === KeyCodes.ARROW_UP) && checkModifierKeys(event, true, false, true);
131+
132+
const isDownShiftCtrl = event => (event.key ? (event.key === "ArrowDown" || event.key === "Down") : event.keyCode === KeyCodes.ARROW_DOWN) && checkModifierKeys(event, true, false, true);
133+
118134
const isHome = event => (event.key ? event.key === "Home" : event.keyCode === KeyCodes.HOME) && !hasModifierKeys(event);
119135

120136
const isEnd = event => (event.key ? event.key === "End" : event.keyCode === KeyCodes.END) && !hasModifierKeys(event);
@@ -176,6 +192,14 @@ export {
176192
isRight,
177193
isUp,
178194
isDown,
195+
isLeftCtrl,
196+
isRightCtrl,
197+
isUpCtrl,
198+
isDownCtrl,
199+
isUpShift,
200+
isDownShift,
201+
isUpShiftCtrl,
202+
isDownShiftCtrl,
179203
isHome,
180204
isEnd,
181205
isHomeCtrl,

packages/main/bundle.esm.js

+1
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ import ResponsivePopover from "./dist/ResponsivePopover.js";
6767
import SegmentedButton from "./dist/SegmentedButton.js";
6868
import Select from "./dist/Select.js";
6969
import Slider from "./dist/Slider.js";
70+
import StepInput from "./dist/StepInput.js";
7071
import RangeSlider from "./dist/RangeSlider.js";
7172
import Switch from "./dist/Switch.js";
7273
import MessageStrip from "./dist/MessageStrip.js";

packages/main/src/Input.hbs

+3-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@
3333
@focusin={{innerFocusIn}}
3434
data-sap-no-tab-ref
3535
data-sap-focus-ref
36-
step="{{step}}"
36+
step="{{nativeInputAttributes.step}}"
37+
min="{{nativeInputAttributes.min}}"
38+
max="{{nativeInputAttributes.max}}"
3739
/>
3840
{{#if icon.length}}
3941
<div class="ui5-input-icon-root">

packages/main/src/Input.js

+9-1
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ const metadata = {
331331
type: Object,
332332
},
333333

334-
_wrapperAccInfo: {
334+
_nativeInputAttributes: {
335335
type: Object,
336336
},
337337

@@ -1067,6 +1067,14 @@ class Input extends UI5Element {
10671067
};
10681068
}
10691069

1070+
get nativeInputAttributes() {
1071+
return {
1072+
"min": this.type === InputType.Number ? this._nativeInputAttributes.min : undefined,
1073+
"max": this.type === InputType.Number ? this._nativeInputAttributes.max : undefined,
1074+
"step": this.type === InputType.Number ? (this._nativeInputAttributes.step || "any") : undefined,
1075+
};
1076+
}
1077+
10701078
get ariaValueStateHiddenText() {
10711079
if (!this.hasValueStateMessage) {
10721080
return;

packages/main/src/StepInput.hbs

+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
<div
2+
id="{{_id}}"
3+
class="ui5-step-input-root"
4+
style="{{styles}}"
5+
@keydown="{{_onkeydown}}"
6+
@focusin="{{_onfocusin}}"
7+
@focusout="{{_onfocusout}}"
8+
>
9+
<!-- Decrement Icon -->
10+
<div
11+
class="ui5-step-icon ui5-step-dec"
12+
title="{{decIconTitle}}"
13+
>
14+
<ui5-icon
15+
id="{{_id}}-dec"
16+
name="{{decIconName}}"
17+
tabindex="-1"
18+
accessible-name="{{decIconTitle}}"
19+
@click="{{_decValue}}"
20+
@focusout="{{_onButtonFocusOut}}"
21+
@mousedown="{{_decSpin}}"
22+
@mouseup="{{_resetSpin}}"
23+
@mouseout="{{_resetSpinOut}}"
24+
input-icon
25+
show-tooltip
26+
?clickable="{{_decIconClickable}}"
27+
></ui5-icon>
28+
</div>
29+
30+
<!-- INPUT -->
31+
<ui5-input
32+
id="{{_id}}-inner"
33+
class="ui5-step-input-input"
34+
placeholder="{{placeholder}}"
35+
type="{{type}}"
36+
value="{{_valuePrecisioned}}"
37+
?disabled="{{disabled}}"
38+
?required="{{required}}"
39+
?readonly="{{readonly}}"
40+
value-state="{{valueState}}"
41+
data-sap-focus-ref
42+
._inputAccInfo ="{{accInfo}}"
43+
._nativeInputAttributes="{{inputAttributes}}"
44+
@ui5-change="{{_onInputChange}}"
45+
@ui5-submit="{{_onInputChange}}"
46+
@focusout="{{_onInputFocusOut}}"
47+
@focusin="{{_onInputFocusIn}}"
48+
>
49+
50+
{{#if valueStateMessage.length}}
51+
<slot name="valueStateMessage" slot="valueStateMessage"></slot>
52+
{{/if}}
53+
54+
</ui5-input>
55+
56+
<!-- Increment Icon -->
57+
<div
58+
class="ui5-step-icon ui5-step-inc"
59+
title="{{incIconTitle}}"
60+
>
61+
<ui5-icon
62+
id="{{_id}}-inc"
63+
name="{{incIconName}}"
64+
tabindex="-1"
65+
accessible-name="{{incIconTitle}}"
66+
@click="{{_incValue}}"
67+
@focusout="{{_onButtonFocusOut}}"
68+
@mousedown="{{_incSpin}}"
69+
@mouseup="{{_resetSpin}}"
70+
@mouseout="{{_resetSpinOut}}"
71+
input-icon
72+
show-tooltip
73+
?clickable="{{_incIconClickable}}"
74+
></ui5-icon>
75+
</div>
76+
77+
<slot name="formSupport"></slot>
78+
79+
</div>

0 commit comments

Comments
 (0)