@sbb-esta/lyne-elements-dev 4.13.0-dev.1780293313 → 4.13.0-dev.1780334133
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/core/mixins/form-associated-input-mixin.js +5 -0
- package/custom-elements.json +2302 -2212
- package/date-input/date-input.component.js +1 -1
- package/{date-input.component-e3c3CgE1.js → date-input.component-kYGldhkg.js} +8 -6
- package/date-input.js +1 -1
- package/date-input.pure.js +1 -1
- package/development/core/mixins/form-associated-input-mixin.d.ts +1 -0
- package/development/core/mixins/form-associated-input-mixin.d.ts.map +1 -1
- package/development/core/mixins/form-associated-input-mixin.js +6 -1
- package/development/date-input/date-input.component.d.ts.map +1 -1
- package/development/date-input/date-input.component.js +1 -1
- package/development/date-input.component-BBdsFSUJ.js +307 -0
- package/development/date-input.js +1 -1
- package/development/date-input.pure.js +1 -1
- package/development/time-input/time-input.component.d.ts +3 -1
- package/development/time-input/time-input.component.d.ts.map +1 -1
- package/development/time-input/time-input.component.js +1 -1
- package/development/time-input.component-BgsJfVZ1.js +198 -0
- package/development/time-input.js +1 -1
- package/development/time-input.pure.js +1 -1
- package/package.json +2 -2
- package/time-input/time-input.component.js +1 -1
- package/{time-input.component-I1it887_.js → time-input.component-DBXdyVPm.js} +15 -8
- package/time-input.js +1 -1
- package/time-input.pure.js +1 -1
- package/development/date-input.component-aFqmx0uy.js +0 -307
- package/development/time-input.component-BZ-9meEb.js +0 -191
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-input.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/time-input/time-input.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAuB,MAAM,KAAK,CAAC;AAI/D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;;AAsBtD;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,wBAAuC;IAC9E,gBAAgC,WAAW,EAAE,MAAM,CAAoB;IACvE,OAAuB,MAAM,EAAE,cAAc,CAAoB;IAEjE;;;OAGG;IACH,IAAoB,KAAK,CAAC,KAAK,EAAE,MAAM,EAYtC;IACD,IAAoB,KAAK,IAAI,MAAM,CAElC;IAED,iDAAiD;IACjD,IACW,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"time-input.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/time-input/time-input.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAuB,MAAM,KAAK,CAAC;AAI/D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;;AAsBtD;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,wBAAuC;IAC9E,gBAAgC,WAAW,EAAE,MAAM,CAAoB;IACvE,OAAuB,MAAM,EAAE,cAAc,CAAoB;IAEjE;;;OAGG;IACH,IAAoB,KAAK,CAAC,KAAK,EAAE,MAAM,EAYtC;IACD,IAAoB,KAAK,IAAI,MAAM,CAElC;IAED,iDAAiD;IACjD,IACW,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,EAoBxC;IACD,IAAW,WAAW,IAAI,IAAI,GAAG,IAAI,CASpC;IACD,OAAO,CAAC,YAAY,CAAC,CAAc;IAEnC;;;OAGG;IACH,OAAO,CAAC,WAAW,CAAC,CAAwB;IAE5C,OAAO,CAAC,SAAS,CAAmC;;IAWpC,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;cAIzB,eAAe,IAAI,IAAI;IAM1C,OAAO,CAAC,cAAc;IAOtB,kDAAkD;IAClD,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,WAAW;cAUA,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;cAMvC,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO;cAOtD,QAAQ,IAAI,IAAI;IAanC,OAAO,CAAC,qBAAqB;IAI7B,uFAAuF;IACvF,OAAO,CAAC,YAAY;IAIpB,qDAAqD;IACrD,OAAO,CAAC,kBAAkB;IAgC1B,OAAO,CAAC,aAAa;CAItB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,gBAAgB,EAAE,mBAAmB,CAAC;KACvC;CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as SbbTimeInputElement } from "../time-input.component-
|
|
1
|
+
import { t as SbbTimeInputElement } from "../time-input.component-BgsJfVZ1.js";
|
|
2
2
|
export { SbbTimeInputElement };
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
+
import { isServer, unsafeCSS } from "lit";
|
|
3
|
+
import { property } from "lit/decorators.js";
|
|
4
|
+
import { SbbElement } from "./core/base-elements.js";
|
|
5
|
+
import { SbbFormAssociatedInputMixin } from "./core/mixins.js";
|
|
6
|
+
import { SbbLanguageController } from "./core/controllers.js";
|
|
7
|
+
import { i18nTimeInputChange, i18nTimeInvalid, i18nTimeMax, i18nTimeMaxLength } from "./core/i18n.js";
|
|
8
|
+
import { sbbLiveAnnouncer } from "./core/a11y.js";
|
|
9
|
+
//#region src/elements/time-input/time-input.scss?inline
|
|
10
|
+
var time_input_default = ":host {\n display: inline-flex;\n min-width: var(--sbb-time-input-max-width);\n max-width: var(--sbb-time-input-max-width);\n cursor: text;\n align-items: center;\n font-weight: normal;\n}\n@media (forced-colors: active) {\n :host {\n color: FieldText;\n }\n}\n\n:host(:disabled) {\n cursor: var(--sbb-cursor-default);\n}\n\n:host(:focus) {\n text-overflow: initial !important;\n}\n\n:host(:empty)::after {\n content: attr(placeholder);\n color: var(--sbb-color-5);\n -webkit-text-fill-color: var(--sbb-color-5);\n opacity: 1;\n}\n@media (forced-colors: active) {\n :host(:empty)::after {\n color: GrayText;\n }\n}";
|
|
11
|
+
//#endregion
|
|
12
|
+
//#region src/elements/time-input/time-input.component.ts
|
|
13
|
+
var REGEX_ALLOWED_CHARACTERS = /[0-9.:,\-;_hH]/;
|
|
14
|
+
var REGEX_DISALLOWED_CHARACTERS = /[^0-9.:,\-;_hH]/g;
|
|
15
|
+
var REGEX_GROUPS_WITHOUT_COLON = /^([0-9]{1,2})([0-9]{2})$/;
|
|
16
|
+
var REGEX_GROUPS_WITH_COLON = /^([0-9]{1,2})?[.:,\-;_hH]?([0-9]{1,2})?$/;
|
|
17
|
+
/**
|
|
18
|
+
* Custom input for a time.
|
|
19
|
+
*/
|
|
20
|
+
var SbbTimeInputElement = (() => {
|
|
21
|
+
let _classSuper = SbbFormAssociatedInputMixin(SbbElement);
|
|
22
|
+
let _instanceExtraInitializers = [];
|
|
23
|
+
let _set_valueAsDate_decorators;
|
|
24
|
+
return class SbbTimeInputElement extends _classSuper {
|
|
25
|
+
static {
|
|
26
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
27
|
+
_set_valueAsDate_decorators = [property({ attribute: false })];
|
|
28
|
+
__esDecorate(this, null, _set_valueAsDate_decorators, {
|
|
29
|
+
kind: "setter",
|
|
30
|
+
name: "valueAsDate",
|
|
31
|
+
static: false,
|
|
32
|
+
private: false,
|
|
33
|
+
access: {
|
|
34
|
+
has: (obj) => "valueAsDate" in obj,
|
|
35
|
+
set: (obj, value) => {
|
|
36
|
+
obj.valueAsDate = value;
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
metadata: _metadata
|
|
40
|
+
}, null, _instanceExtraInitializers);
|
|
41
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, {
|
|
42
|
+
enumerable: true,
|
|
43
|
+
configurable: true,
|
|
44
|
+
writable: true,
|
|
45
|
+
value: _metadata
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
static {
|
|
49
|
+
this.elementName = "sbb-time-input";
|
|
50
|
+
}
|
|
51
|
+
static {
|
|
52
|
+
this.styles = unsafeCSS(time_input_default);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The value of the time input. Reflects the current text value
|
|
56
|
+
* of this input.
|
|
57
|
+
*/
|
|
58
|
+
set value(value) {
|
|
59
|
+
value = typeof value === "string" ? value.replace(REGEX_DISALLOWED_CHARACTERS, "").substring(0, 5) : "";
|
|
60
|
+
this._tryParseValue(value);
|
|
61
|
+
if (!isServer && !this.isSelected() && this.valueAsDate !== null) value = this._formatTime();
|
|
62
|
+
super.value = value;
|
|
63
|
+
}
|
|
64
|
+
get value() {
|
|
65
|
+
return super.value ?? "";
|
|
66
|
+
}
|
|
67
|
+
/** Formats the current input's value as date. */
|
|
68
|
+
set valueAsDate(value) {
|
|
69
|
+
const time = this._toTime(value);
|
|
70
|
+
if (this.isSelected() && (time === null || this._isSameTime(time, this._parseValue(this.value)))) {} else if (time) {
|
|
71
|
+
this._valueAsTime = time;
|
|
72
|
+
const formattedValue = this._formatTime();
|
|
73
|
+
if (this.value !== formattedValue) this.value = formattedValue;
|
|
74
|
+
} else {
|
|
75
|
+
this._valueAsTime = null;
|
|
76
|
+
this.value = "";
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
get valueAsDate() {
|
|
80
|
+
if (this._valueAsTime && this._isTimeValid(this._valueAsTime)) {
|
|
81
|
+
const date = /* @__PURE__ */ new Date(0);
|
|
82
|
+
date.setHours(this._valueAsTime.hours);
|
|
83
|
+
date.setMinutes(this._valueAsTime.minutes);
|
|
84
|
+
return date;
|
|
85
|
+
} else return null;
|
|
86
|
+
}
|
|
87
|
+
constructor() {
|
|
88
|
+
super();
|
|
89
|
+
this._valueAsTime = __runInitializers(this, _instanceExtraInitializers);
|
|
90
|
+
this._language = new SbbLanguageController(this);
|
|
91
|
+
this.addEventListener?.("change", () => this._updateValueDateFormat(), { capture: true });
|
|
92
|
+
this.addEventListener?.("change", () => sbbLiveAnnouncer.announce(i18nTimeInputChange(this.value)[this._language.current]));
|
|
93
|
+
this.addEventListener?.("keydown", (event) => this._preventCharInsert(event));
|
|
94
|
+
}
|
|
95
|
+
connectedCallback() {
|
|
96
|
+
super.connectedCallback();
|
|
97
|
+
this.inputMode ||= "numeric";
|
|
98
|
+
this.placeholder ||= "HH:MM";
|
|
99
|
+
}
|
|
100
|
+
disconnectedCallback() {
|
|
101
|
+
super.disconnectedCallback();
|
|
102
|
+
}
|
|
103
|
+
updateFormValue() {
|
|
104
|
+
this._tryParseValue();
|
|
105
|
+
const formValue = this.valueAsDate !== null ? this._formatTime() : null;
|
|
106
|
+
this.internals.setFormValue(formValue, this.value);
|
|
107
|
+
}
|
|
108
|
+
_tryParseValue(value = this.value) {
|
|
109
|
+
if (this._valueCache?.[0] !== value) {
|
|
110
|
+
this._valueAsTime = this._parseValue(value);
|
|
111
|
+
this._valueCache = [value, this._valueAsTime ?? null];
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/** Validate input against the defined RegExps. */
|
|
115
|
+
_parseValue(value) {
|
|
116
|
+
const trimmedValue = value?.trim();
|
|
117
|
+
if (!trimmedValue) return null;
|
|
118
|
+
const match = trimmedValue.match(REGEX_GROUPS_WITHOUT_COLON) ?? trimmedValue.match(REGEX_GROUPS_WITH_COLON);
|
|
119
|
+
if (match) return {
|
|
120
|
+
hours: +match[1] || 0,
|
|
121
|
+
minutes: +match[2] || 0
|
|
122
|
+
};
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
_toTime(value) {
|
|
126
|
+
return value instanceof Date && !isNaN(value.valueOf()) ? {
|
|
127
|
+
hours: value.getHours(),
|
|
128
|
+
minutes: value.getMinutes()
|
|
129
|
+
} : null;
|
|
130
|
+
}
|
|
131
|
+
_isSameTime(time1, time2) {
|
|
132
|
+
return !!(time1 == time2 || time1 && time2 && time1.hours === time2.hours && time1.minutes === time2.minutes);
|
|
133
|
+
}
|
|
134
|
+
_updateValueDateFormat() {
|
|
135
|
+
if (this.valueAsDate) {
|
|
136
|
+
const formattedDate = this._formatTime();
|
|
137
|
+
if (this.value !== formattedDate) super.value = formattedDate;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
_formatTime() {
|
|
141
|
+
const value = this.valueAsDate;
|
|
142
|
+
if (!value) return "";
|
|
143
|
+
return `${String(value.getHours()).padStart(2, "0")}:${String(value.getMinutes()).padStart(2, "0")}`;
|
|
144
|
+
}
|
|
145
|
+
preparePastedText(text) {
|
|
146
|
+
return text.replace(REGEX_DISALLOWED_CHARACTERS, "").substring(0, 5 - (this.textContent?.length ?? 0));
|
|
147
|
+
}
|
|
148
|
+
shouldValidate(name) {
|
|
149
|
+
return super.shouldValidate(name) || [
|
|
150
|
+
"valueAsDate",
|
|
151
|
+
"min",
|
|
152
|
+
"max",
|
|
153
|
+
"dateFilter"
|
|
154
|
+
].includes(name);
|
|
155
|
+
}
|
|
156
|
+
validate() {
|
|
157
|
+
super.validate();
|
|
158
|
+
if (!this.value) this._removeValidityErrors();
|
|
159
|
+
else if (!this._valueAsTime) this.setValidityFlag("badInput", i18nTimeInvalid[this.language.current]);
|
|
160
|
+
else if (!this._isTimeValid(this._valueAsTime)) this.setValidityFlag("rangeOverflow", i18nTimeMax[this.language.current]);
|
|
161
|
+
else this._removeValidityErrors();
|
|
162
|
+
}
|
|
163
|
+
_removeValidityErrors() {
|
|
164
|
+
["badInput", "rangeOverflow"].forEach((f) => this.removeValidityFlag(f));
|
|
165
|
+
}
|
|
166
|
+
/** Checks if values of hours and minutes are possible, to avoid non-existent times. */
|
|
167
|
+
_isTimeValid(time) {
|
|
168
|
+
return time.hours < 24 && time.minutes < 60;
|
|
169
|
+
}
|
|
170
|
+
/** Only allow typing numbers and separator keys. */
|
|
171
|
+
_preventCharInsert(event) {
|
|
172
|
+
if (event.ctrlKey || event.altKey || event.metaKey || [
|
|
173
|
+
"Backspace",
|
|
174
|
+
"Tab",
|
|
175
|
+
"Enter",
|
|
176
|
+
"ArrowUp",
|
|
177
|
+
"ArrowDown",
|
|
178
|
+
"ArrowLeft",
|
|
179
|
+
"ArrowRight",
|
|
180
|
+
"Home",
|
|
181
|
+
"End",
|
|
182
|
+
"PageUp",
|
|
183
|
+
"PageDown",
|
|
184
|
+
"Delete"
|
|
185
|
+
].includes(event.key) || REGEX_ALLOWED_CHARACTERS.test(event.key) && (this.value.length < 5 || this._hasSelection())) return;
|
|
186
|
+
event.preventDefault();
|
|
187
|
+
if (this.value.length >= 5) sbbLiveAnnouncer.announce(i18nTimeMaxLength[this._language.current]);
|
|
188
|
+
}
|
|
189
|
+
_hasSelection() {
|
|
190
|
+
const range = window.getSelection()?.getRangeAt(0);
|
|
191
|
+
return !!range && range.startOffset !== range.endOffset;
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
})();
|
|
195
|
+
//#endregion
|
|
196
|
+
export { SbbTimeInputElement as t };
|
|
197
|
+
|
|
198
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1pbnB1dC5jb21wb25lbnQtQmdzSmZWWjEuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3RpbWUtaW5wdXQvdGltZS1pbnB1dC5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy90aW1lLWlucHV0L3RpbWUtaW5wdXQuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG5cbiAgLy8gV2l0aCBzYmItZm9ybS1maWVsZFt3aWR0aD1cImNvbGxhcHNlZFwiXSwgdGhlIGRlZmF1bHQgbWluIHdpZHRoIG9mIGFcbiAgLy8gYW4gaW5saW5lIGVsZW1lbnQgaXMgYmFzaWNhbGx5IG5vdGhpbmcgKGV4Y2VwdCBwb3RlbnRpYWxseSB0aGUgcGxhY2Vob2xkZXIpLlxuICAvLyBEdWUgdG8gdGhpcywgd2Ugc2V0IGEgbWluaW11bSB3aWR0aCBmb3IgdGhlIHRpbWUgaW5wdXQgZWxlbWVudC5cbiAgLy8gV2UgYWxzbyBjYW5ub3QgdXNlIHdpZHRoLCBhcyB0aGUgZm9ybSBmaWVsZCBvdmVyd3JpdGVzIHRoYXQgcHJvcGVydHkuXG4gIG1pbi13aWR0aDogdmFyKC0tc2JiLXRpbWUtaW5wdXQtbWF4LXdpZHRoKTtcblxuICAvLyBUaGUgdGltZSBpbnB1dCBhbHNvIGhhcyBhIHZlcnkgc3BlY2lmaWMgZGltZW5zaW9uLCBzbyB3ZSBhbHNvIHNldCB0aGUgbWF4aW11bSB3aWR0aC5cbiAgbWF4LXdpZHRoOiB2YXIoLS1zYmItdGltZS1pbnB1dC1tYXgtd2lkdGgpO1xuICBjdXJzb3I6IHRleHQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cbiAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgIGNvbG9yOiBGaWVsZFRleHQ7XG4gIH1cbn1cblxuOmhvc3QoOmRpc2FibGVkKSB7XG4gIGN1cnNvcjogdmFyKC0tc2JiLWN1cnNvci1kZWZhdWx0KTtcbn1cblxuOmhvc3QoOmZvY3VzKSB7XG4gIHRleHQtb3ZlcmZsb3c6IGluaXRpYWwgIWltcG9ydGFudDtcbn1cblxuOmhvc3QoOmVtcHR5KTo6YWZ0ZXIge1xuICBjb250ZW50OiBhdHRyKHBsYWNlaG9sZGVyKTtcbiAgQGluY2x1ZGUgc2JiLnBsYWNlaG9sZGVyO1xuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgY29sb3I6IEdyYXlUZXh0O1xuICB9XG59XG4iLCJpbXBvcnQgeyB0eXBlIENTU1Jlc3VsdEdyb3VwLCBpc1NlcnZlciwgdW5zYWZlQ1NTIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBzYmJMaXZlQW5ub3VuY2VyIH0gZnJvbSAnLi4vY29yZS9hMTF5LnRzJztcbmltcG9ydCB7IFNiYkVsZW1lbnQgfSBmcm9tICcuLi9jb3JlL2Jhc2UtZWxlbWVudHMudHMnO1xuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vY29yZS9jb250cm9sbGVycy50cyc7XG5pbXBvcnQge1xuICBpMThuVGltZUlucHV0Q2hhbmdlLFxuICBpMThuVGltZUludmFsaWQsXG4gIGkxOG5UaW1lTWF4LFxuICBpMThuVGltZU1heExlbmd0aCxcbn0gZnJvbSAnLi4vY29yZS9pMThuLnRzJztcbmltcG9ydCB7IFNiYkZvcm1Bc3NvY2lhdGVkSW5wdXRNaXhpbiB9IGZyb20gJy4uL2NvcmUvbWl4aW5zLnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vdGltZS1pbnB1dC5zY3NzP2lubGluZSc7XG5cbmNvbnN0IFJFR0VYX0FMTE9XRURfQ0hBUkFDVEVSUyA9IC9bMC05LjosXFwtO19oSF0vO1xuY29uc3QgUkVHRVhfRElTQUxMT1dFRF9DSEFSQUNURVJTID0gL1teMC05LjosXFwtO19oSF0vZztcbmNvbnN0IFJFR0VYX0dST1VQU19XSVRIT1VUX0NPTE9OID0gL14oWzAtOV17MSwyfSkoWzAtOV17Mn0pJC87XG5jb25zdCBSRUdFWF9HUk9VUFNfV0lUSF9DT0xPTiA9IC9eKFswLTldezEsMn0pP1suOixcXC07X2hIXT8oWzAtOV17MSwyfSk/JC87XG5cbmludGVyZmFjZSBUaW1lIHtcbiAgaG91cnM6IG51bWJlcjtcbiAgbWludXRlczogbnVtYmVyO1xufVxuXG4vKipcbiAqIEN1c3RvbSBpbnB1dCBmb3IgYSB0aW1lLlxuICovXG5leHBvcnQgY2xhc3MgU2JiVGltZUlucHV0RWxlbWVudCBleHRlbmRzIFNiYkZvcm1Bc3NvY2lhdGVkSW5wdXRNaXhpbihTYmJFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItdGltZS1pbnB1dCc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHVuc2FmZUNTUyhzdHlsZSk7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgdGltZSBpbnB1dC4gUmVmbGVjdHMgdGhlIGN1cnJlbnQgdGV4dCB2YWx1ZVxuICAgKiBvZiB0aGlzIGlucHV0LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdmFsdWUgPVxuICAgICAgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICA/IHZhbHVlLnJlcGxhY2UoUkVHRVhfRElTQUxMT1dFRF9DSEFSQUNURVJTLCAnJykuc3Vic3RyaW5nKDAsIDUpXG4gICAgICAgIDogJyc7XG4gICAgdGhpcy5fdHJ5UGFyc2VWYWx1ZSh2YWx1ZSk7XG4gICAgLy8gQXMgbG9uZyBhcyB0aGlzIGVsZW1lbnQgaGFzIGZvY3VzIHdlIGRlbGF5IGF1dG9tYXRpY2FsbHkgdXBkYXRpbmdcbiAgICAvLyB0aGUgdmFsdWUgd2l0aCB0aGUgZm9ybWF0dGVkIHN0cmluZyBvZiB0aGUgcGFyc2VkIGRhdGUuXG4gICAgaWYgKCFpc1NlcnZlciAmJiAhdGhpcy5pc1NlbGVjdGVkKCkgJiYgdGhpcy52YWx1ZUFzRGF0ZSAhPT0gbnVsbCkge1xuICAgICAgdmFsdWUgPSB0aGlzLl9mb3JtYXRUaW1lKCk7XG4gICAgfVxuICAgIHN1cGVyLnZhbHVlID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIG92ZXJyaWRlIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdXBlci52YWx1ZSA/PyAnJztcbiAgfVxuXG4gIC8qKiBGb3JtYXRzIHRoZSBjdXJyZW50IGlucHV0J3MgdmFsdWUgYXMgZGF0ZS4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiBmYWxzZSB9KVxuICBwdWJsaWMgc2V0IHZhbHVlQXNEYXRlKHZhbHVlOiBEYXRlIHwgbnVsbCkge1xuICAgIGNvbnN0IHRpbWUgPSB0aGlzLl90b1RpbWUodmFsdWUpO1xuICAgIGlmIChcbiAgICAgIHRoaXMuaXNTZWxlY3RlZCgpICYmXG4gICAgICAodGltZSA9PT0gbnVsbCB8fCB0aGlzLl9pc1NhbWVUaW1lKHRpbWUsIHRoaXMuX3BhcnNlVmFsdWUodGhpcy52YWx1ZSkpKVxuICAgICkge1xuICAgICAgLy8gRG8gbm90aGluZywgYXMgdGhlIHVzZXIgaXMgY3VycmVudGx5IGVkaXRpbmcgdGhlIHZhbHVlIGFuZCB0aGUgcGFyc2VkXG4gICAgICAvLyB0aW1lIGlzIHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IHZhbHVlLlxuICAgICAgLy8gVGhpcyBjYW4gYWxzbyBoYXBwZW4gd2l0aCBBbmd1bGFyIEZvcm1zIFNpZ25hbHMsIGFzIGl0IGN1cnJlbnRseVxuICAgICAgLy8gY29udGludW91c2x5IGludm9rZXMgd3JpdGVWYWx1ZSwgd2hpY2ggYXNzaWducyB0byB0aGlzIHNldHRlci5cbiAgICB9IGVsc2UgaWYgKHRpbWUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlQXNUaW1lID0gdGltZTtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdGhpcy5fZm9ybWF0VGltZSgpO1xuICAgICAgaWYgKHRoaXMudmFsdWUgIT09IGZvcm1hdHRlZFZhbHVlKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdmFsdWVBc1RpbWUgPSBudWxsO1xuICAgICAgdGhpcy52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IHZhbHVlQXNEYXRlKCk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAodGhpcy5fdmFsdWVBc1RpbWUgJiYgdGhpcy5faXNUaW1lVmFsaWQodGhpcy5fdmFsdWVBc1RpbWUpKSB7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoMCk7XG4gICAgICBkYXRlLnNldEhvdXJzKHRoaXMuX3ZhbHVlQXNUaW1lLmhvdXJzKTtcbiAgICAgIGRhdGUuc2V0TWludXRlcyh0aGlzLl92YWx1ZUFzVGltZS5taW51dGVzKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfdmFsdWVBc1RpbWU/OiBUaW1lIHwgbnVsbDtcblxuICAvKipcbiAgICogU3RvcmVzIHRoZSBsYXN0IHN0cmluZyBhbmQgcGFyc2VkIGRhdGUgb2JqZWN0IHZhbHVlIHRvIHByZXZlbnQgcmVwZWF0ZWRcbiAgICogcGFyc2luZyBvZiB0aGUgc3RyaW5nIHZhbHVlLlxuICAgKi9cbiAgcHJpdmF0ZSBfdmFsdWVDYWNoZT86IFtzdHJpbmcsIFRpbWUgfCBudWxsXTtcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2NoYW5nZScsICgpID0+IHRoaXMuX3VwZGF0ZVZhbHVlRGF0ZUZvcm1hdCgpLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2NoYW5nZScsICgpID0+XG4gICAgICBzYmJMaXZlQW5ub3VuY2VyLmFubm91bmNlKGkxOG5UaW1lSW5wdXRDaGFuZ2UodGhpcy52YWx1ZSlbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF0pLFxuICAgICk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2tleWRvd24nLCAoZXZlbnQpID0+IHRoaXMuX3ByZXZlbnRDaGFySW5zZXJ0KGV2ZW50KSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLmlucHV0TW9kZSB8fD0gJ251bWVyaWMnO1xuICAgIHRoaXMucGxhY2Vob2xkZXIgfHw9ICdISDpNTSc7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB1cGRhdGVGb3JtVmFsdWUoKTogdm9pZCB7XG4gICAgdGhpcy5fdHJ5UGFyc2VWYWx1ZSgpO1xuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMudmFsdWVBc0RhdGUgIT09IG51bGwgPyB0aGlzLl9mb3JtYXRUaW1lKCkgOiBudWxsO1xuICAgIHRoaXMuaW50ZXJuYWxzLnNldEZvcm1WYWx1ZShmb3JtVmFsdWUsIHRoaXMudmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdHJ5UGFyc2VWYWx1ZSh2YWx1ZSA9IHRoaXMudmFsdWUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdmFsdWVDYWNoZT8uWzBdICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5fdmFsdWVBc1RpbWUgPSB0aGlzLl9wYXJzZVZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMuX3ZhbHVlQ2FjaGUgPSBbdmFsdWUsIHRoaXMuX3ZhbHVlQXNUaW1lID8/IG51bGxdO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBWYWxpZGF0ZSBpbnB1dCBhZ2FpbnN0IHRoZSBkZWZpbmVkIFJlZ0V4cHMuICovXG4gIHByaXZhdGUgX3BhcnNlVmFsdWUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFRpbWUgfCBudWxsIHtcbiAgICBjb25zdCB0cmltbWVkVmFsdWUgPSB2YWx1ZT8udHJpbSgpO1xuICAgIGlmICghdHJpbW1lZFZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBTcGVjaWFsIGNhc2U6IHRoZSBpbnB1dCBpcyAzIG9yIDQgZGlnaXRzOyBzcGxpdCBsaWtlOiBBQj86Q0RcbiAgICBjb25zdCBtYXRjaCA9XG4gICAgICB0cmltbWVkVmFsdWUubWF0Y2goUkVHRVhfR1JPVVBTX1dJVEhPVVRfQ09MT04pID8/IHRyaW1tZWRWYWx1ZS5tYXRjaChSRUdFWF9HUk9VUFNfV0lUSF9DT0xPTik7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICByZXR1cm4geyBob3VyczogK21hdGNoWzFdIHx8IDAsIG1pbnV0ZXM6ICttYXRjaFsyXSB8fCAwIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF90b1RpbWUodmFsdWU6IERhdGUgfCBudWxsKTogVGltZSB8IG51bGwge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKHZhbHVlLnZhbHVlT2YoKSlcbiAgICAgID8geyBob3VyczogdmFsdWUuZ2V0SG91cnMoKSwgbWludXRlczogdmFsdWUuZ2V0TWludXRlcygpIH1cbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgX2lzU2FtZVRpbWUodGltZTE6IFRpbWUgfCBudWxsLCB0aW1lMjogVGltZSB8IG51bGwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEoXG4gICAgICB0aW1lMSA9PSB0aW1lMiB8fFxuICAgICAgKHRpbWUxICYmIHRpbWUyICYmIHRpbWUxLmhvdXJzID09PSB0aW1lMi5ob3VycyAmJiB0aW1lMS5taW51dGVzID09PSB0aW1lMi5taW51dGVzKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVWYWx1ZURhdGVGb3JtYXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmFsdWVBc0RhdGUpIHtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB0aGlzLl9mb3JtYXRUaW1lKCk7XG4gICAgICBpZiAodGhpcy52YWx1ZSAhPT0gZm9ybWF0dGVkRGF0ZSkge1xuICAgICAgICBzdXBlci52YWx1ZSA9IGZvcm1hdHRlZERhdGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZm9ybWF0VGltZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZUFzRGF0ZTtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IGhvdXJzID0gU3RyaW5nKHZhbHVlLmdldEhvdXJzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgY29uc3QgbWludXRlcyA9IFN0cmluZyh2YWx1ZS5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgcmV0dXJuIGAke2hvdXJzfToke21pbnV0ZXN9YDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBwcmVwYXJlUGFzdGVkVGV4dCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0ZXh0XG4gICAgICAucmVwbGFjZShSRUdFWF9ESVNBTExPV0VEX0NIQVJBQ1RFUlMsICcnKVxuICAgICAgLnN1YnN0cmluZygwLCA1IC0gKHRoaXMudGV4dENvbnRlbnQ/Lmxlbmd0aCA/PyAwKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2hvdWxkVmFsaWRhdGUobmFtZTogUHJvcGVydHlLZXkgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgc3VwZXIuc2hvdWxkVmFsaWRhdGUobmFtZSkgfHxcbiAgICAgIFsndmFsdWVBc0RhdGUnLCAnbWluJywgJ21heCcsICdkYXRlRmlsdGVyJ10uaW5jbHVkZXMobmFtZSBhcyBzdHJpbmcpXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB2YWxpZGF0ZSgpOiB2b2lkIHtcbiAgICBzdXBlci52YWxpZGF0ZSgpO1xuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5fcmVtb3ZlVmFsaWRpdHlFcnJvcnMoKTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLl92YWx1ZUFzVGltZSkge1xuICAgICAgdGhpcy5zZXRWYWxpZGl0eUZsYWcoJ2JhZElucHV0JywgaTE4blRpbWVJbnZhbGlkW3RoaXMubGFuZ3VhZ2UuY3VycmVudF0pO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuX2lzVGltZVZhbGlkKHRoaXMuX3ZhbHVlQXNUaW1lKSkge1xuICAgICAgdGhpcy5zZXRWYWxpZGl0eUZsYWcoJ3JhbmdlT3ZlcmZsb3cnLCBpMThuVGltZU1heFt0aGlzLmxhbmd1YWdlLmN1cnJlbnRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcmVtb3ZlVmFsaWRpdHlFcnJvcnMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9yZW1vdmVWYWxpZGl0eUVycm9ycygpOiB2b2lkIHtcbiAgICAoWydiYWRJbnB1dCcsICdyYW5nZU92ZXJmbG93J10gYXMgY29uc3QpLmZvckVhY2goKGYpID0+IHRoaXMucmVtb3ZlVmFsaWRpdHlGbGFnKGYpKTtcbiAgfVxuXG4gIC8qKiBDaGVja3MgaWYgdmFsdWVzIG9mIGhvdXJzIGFuZCBtaW51dGVzIGFyZSBwb3NzaWJsZSwgdG8gYXZvaWQgbm9uLWV4aXN0ZW50IHRpbWVzLiAqL1xuICBwcml2YXRlIF9pc1RpbWVWYWxpZCh0aW1lOiBUaW1lKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRpbWUuaG91cnMgPCAyNCAmJiB0aW1lLm1pbnV0ZXMgPCA2MDtcbiAgfVxuXG4gIC8qKiAgT25seSBhbGxvdyB0eXBpbmcgbnVtYmVycyBhbmQgc2VwYXJhdG9yIGtleXMuICovXG4gIHByaXZhdGUgX3ByZXZlbnRDaGFySW5zZXJ0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgYWx3YXlzQWxsb3dlZCA9IFtcbiAgICAgICdCYWNrc3BhY2UnLFxuICAgICAgJ1RhYicsXG4gICAgICAnRW50ZXInLFxuICAgICAgJ0Fycm93VXAnLFxuICAgICAgJ0Fycm93RG93bicsXG4gICAgICAnQXJyb3dMZWZ0JyxcbiAgICAgICdBcnJvd1JpZ2h0JyxcbiAgICAgICdIb21lJyxcbiAgICAgICdFbmQnLFxuICAgICAgJ1BhZ2VVcCcsXG4gICAgICAnUGFnZURvd24nLFxuICAgICAgJ0RlbGV0ZScsXG4gICAgXTtcblxuICAgIGlmIChcbiAgICAgIGV2ZW50LmN0cmxLZXkgfHxcbiAgICAgIGV2ZW50LmFsdEtleSB8fFxuICAgICAgZXZlbnQubWV0YUtleSB8fFxuICAgICAgYWx3YXlzQWxsb3dlZC5pbmNsdWRlcyhldmVudC5rZXkpIHx8XG4gICAgICAoUkVHRVhfQUxMT1dFRF9DSEFSQUNURVJTLnRlc3QoZXZlbnQua2V5KSAmJiAodGhpcy52YWx1ZS5sZW5ndGggPCA1IHx8IHRoaXMuX2hhc1NlbGVjdGlvbigpKSlcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA+PSA1KSB7XG4gICAgICBzYmJMaXZlQW5ub3VuY2VyLmFubm91bmNlKGkxOG5UaW1lTWF4TGVuZ3RoW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYXNTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmFuZ2UgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk/LmdldFJhbmdlQXQoMCk7XG4gICAgcmV0dXJuICEhcmFuZ2UgJiYgcmFuZ2Uuc3RhcnRPZmZzZXQgIT09IHJhbmdlLmVuZE9mZnNldDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXRpbWUtaW5wdXQnOiBTYmJUaW1lSW5wdXRFbGVtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQ2dCQSxJQUFNLDJCQUEyQjtBQUNqQyxJQUFNLDhCQUE4QjtBQUNwQyxJQUFNLDZCQUE2QjtBQUNuQyxJQUFNLDBCQUEwQjs7OztJQVVuQiw2QkFBbUI7bUJBQVMsNEJBQTRCLFVBQVU7OztjQUFsRSw0QkFBNEIsWUFBdUM7OztrQ0EwQjdFLFNBQVMsRUFBRSxXQUFXLE1BQUssQ0FBRSxDQUFDO0dBQy9CLGFBQUEsTUFBQSxNQUFBLDZCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsaUJBQUE7S0FBQSxNQUFBLEtBQUEsVUFBQTtNQUFBLElBQVcsY0FBVztLQUFBO0lBQUE7SUFBQSxVQUFBO0dBQUEsR0FBQSxNQUFBLDBCQUFBOzs7Ozs7Ozs7R0ExQlUsS0FBQSxjQUFzQjtFQUFpQjs7R0FDaEQsS0FBQSxTQUF5QixVQUFVLGtCQUFLO0VBQUU7Ozs7O0VBTWpFLElBQW9CLE1BQU0sT0FBYTtHQUNyQyxRQUNFLE9BQU8sVUFBVSxXQUNiLE1BQU0sUUFBUSw2QkFBNkIsRUFBRSxFQUFFLFVBQVUsR0FBRyxDQUFDLElBQzdEO0dBQ04sS0FBSyxlQUFlLEtBQUs7R0FHekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLFdBQVUsS0FBTSxLQUFLLGdCQUFnQixNQUMxRCxRQUFRLEtBQUssWUFBVztHQUUxQixNQUFN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
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as SbbTimeInputElement } from "./time-input.component-
|
|
1
|
+
import { t as SbbTimeInputElement } from "./time-input.component-BgsJfVZ1.js";
|
|
2
2
|
export { SbbTimeInputElement };
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sbb-esta/lyne-elements-dev",
|
|
3
|
-
"version": "4.13.0-dev.
|
|
3
|
+
"version": "4.13.0-dev.1780334133",
|
|
4
4
|
"description": "Lyne Design System",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"design system",
|
|
7
7
|
"web components",
|
|
8
8
|
"lit",
|
|
9
|
-
"https://github.com/sbb-design-systems/lyne-components/commit/
|
|
9
|
+
"https://github.com/sbb-design-systems/lyne-components/commit/8ef70f003d301480f6f86228c1f3667865ca33f0"
|
|
10
10
|
],
|
|
11
11
|
"type": "module",
|
|
12
12
|
"exports": {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "../time-input.component-
|
|
1
|
+
import { t as e } from "../time-input.component-DBXdyVPm.js";
|
|
2
2
|
export { e as SbbTimeInputElement };
|
|
@@ -38,19 +38,17 @@ var p = ":host{display:inline-flex;min-width:var(--sbb-time-input-max-width);max
|
|
|
38
38
|
this.styles = r(p);
|
|
39
39
|
}
|
|
40
40
|
set value(e) {
|
|
41
|
-
e = typeof e == "string" ? e.replace(h, "").substring(0, 5) : "", this._tryParseValue(e), !n && !this.
|
|
41
|
+
e = typeof e == "string" ? e.replace(h, "").substring(0, 5) : "", this._tryParseValue(e), !n && !this.isSelected() && this.valueAsDate !== null && (e = this._formatTime()), super.value = e;
|
|
42
42
|
}
|
|
43
43
|
get value() {
|
|
44
44
|
return super.value ?? "";
|
|
45
45
|
}
|
|
46
46
|
set valueAsDate(e) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
let t = this._formatTime();
|
|
53
|
-
this.value !== t && (this.value = t);
|
|
47
|
+
let t = this._toTime(e);
|
|
48
|
+
if (!(this.isSelected() && (t === null || this._isSameTime(t, this._parseValue(this.value))))) if (t) {
|
|
49
|
+
this._valueAsTime = t;
|
|
50
|
+
let e = this._formatTime();
|
|
51
|
+
this.value !== e && (this.value = e);
|
|
54
52
|
} else this._valueAsTime = null, this.value = "";
|
|
55
53
|
}
|
|
56
54
|
get valueAsDate() {
|
|
@@ -85,6 +83,15 @@ var p = ":host{display:inline-flex;min-width:var(--sbb-time-input-max-width);max
|
|
|
85
83
|
minutes: +n[2] || 0
|
|
86
84
|
} : null;
|
|
87
85
|
}
|
|
86
|
+
_toTime(e) {
|
|
87
|
+
return e instanceof Date && !isNaN(e.valueOf()) ? {
|
|
88
|
+
hours: e.getHours(),
|
|
89
|
+
minutes: e.getMinutes()
|
|
90
|
+
} : null;
|
|
91
|
+
}
|
|
92
|
+
_isSameTime(e, t) {
|
|
93
|
+
return !!(e == t || e && t && e.hours === t.hours && e.minutes === t.minutes);
|
|
94
|
+
}
|
|
88
95
|
_updateValueDateFormat() {
|
|
89
96
|
if (this.valueAsDate) {
|
|
90
97
|
let e = this._formatTime();
|
package/time-input.js
CHANGED
package/time-input.pure.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "./time-input.component-
|
|
1
|
+
import { t as e } from "./time-input.component-DBXdyVPm.js";
|
|
2
2
|
export { e as SbbTimeInputElement };
|