@wise/dynamic-flow-client 2.4.0 → 2.5.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/build/i18n/tr.json +2 -2
- package/build/main.js +107 -23
- package/build/main.min.js +1 -1
- package/build/types/formControl/FormControl.d.ts +4 -6
- package/build/types/formControl/utils/getAutocompleteString.d.ts +2 -0
- package/build/types/formControl/utils/index.d.ts +1 -0
- package/build/types/revamp/wise/renderers/utils/layout-utils.d.ts +1 -1
- package/package.json +23 -23
package/build/i18n/tr.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"dynamicFlows.ArraySchema.addItem": "Kaydet",
|
|
3
|
-
"dynamicFlows.ArraySchema.addItemTitle": "
|
|
3
|
+
"dynamicFlows.ArraySchema.addItemTitle": "Öğe ekle",
|
|
4
4
|
"dynamicFlows.ArraySchema.editItem": "Kaydet",
|
|
5
5
|
"dynamicFlows.ArraySchema.maxItemsError": "Lütfen {maxItems} veya daha az ekleme yapın",
|
|
6
6
|
"dynamicFlows.ArraySchema.minItemsError": "Lütfen en az {minItems} ekleme yapın.",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"dynamicFlows.CameraCapture.reviewInstructions": "Fotoğrafınız net, okunaklı ve eksiksiz mi?",
|
|
14
14
|
"dynamicFlows.CameraCapture.reviewRetry": "Hayır, tekrar dene",
|
|
15
15
|
"dynamicFlows.CameraCapture.reviewSubmit": "Evet, gönder",
|
|
16
|
-
"dynamicFlows.CameraCapture.rotatePhone.text": "
|
|
16
|
+
"dynamicFlows.CameraCapture.rotatePhone.text": "Fotoğraf çekmek için telefonunuzu dik pozisyonda tutun",
|
|
17
17
|
"dynamicFlows.ControlFeedback.maxLength": "Lütfen {maxLength} veya daha az karakter girin.",
|
|
18
18
|
"dynamicFlows.ControlFeedback.maximum": "Lütfen {maximum} veya daha düşük bir sayı girin.",
|
|
19
19
|
"dynamicFlows.ControlFeedback.maximumDate": "Lütfen {maximum} veya daha erken bir tarih girin.",
|
package/build/main.js
CHANGED
|
@@ -99,9 +99,9 @@ var require_classnames = __commonJS({
|
|
|
99
99
|
}
|
|
100
100
|
});
|
|
101
101
|
|
|
102
|
-
// ../../node_modules/.pnpm/react-webcam@7.
|
|
102
|
+
// ../../node_modules/.pnpm/react-webcam@7.2.0_react-dom@18.2.0_react@18.2.0/node_modules/react-webcam/dist/react-webcam.js
|
|
103
103
|
var require_react_webcam = __commonJS({
|
|
104
|
-
"../../node_modules/.pnpm/react-webcam@7.
|
|
104
|
+
"../../node_modules/.pnpm/react-webcam@7.2.0_react-dom@18.2.0_react@18.2.0/node_modules/react-webcam/dist/react-webcam.js"(exports, module2) {
|
|
105
105
|
"use strict";
|
|
106
106
|
(function webpackUniversalModuleDefinition(root, factory) {
|
|
107
107
|
if (typeof exports === "object" && typeof module2 === "object")
|
|
@@ -477,7 +477,7 @@ var require_react_webcam = __commonJS({
|
|
|
477
477
|
Webcam3.prototype.render = function() {
|
|
478
478
|
var _this = this;
|
|
479
479
|
var _a = this, state = _a.state, props = _a.props;
|
|
480
|
-
var audio = props.audio, forceScreenshotSourceSize = props.forceScreenshotSourceSize, onUserMedia = props.onUserMedia, onUserMediaError = props.onUserMediaError, screenshotFormat = props.screenshotFormat, screenshotQuality = props.screenshotQuality, minScreenshotWidth = props.minScreenshotWidth, minScreenshotHeight = props.minScreenshotHeight, audioConstraints = props.audioConstraints, videoConstraints = props.videoConstraints, imageSmoothing = props.imageSmoothing, mirrored = props.mirrored, _b = props.style, style = _b === void 0 ? {} : _b, children = props.children, rest = __rest(props, ["audio", "forceScreenshotSourceSize", "onUserMedia", "onUserMediaError", "screenshotFormat", "screenshotQuality", "minScreenshotWidth", "minScreenshotHeight", "audioConstraints", "videoConstraints", "imageSmoothing", "mirrored", "style", "children"]);
|
|
480
|
+
var audio = props.audio, forceScreenshotSourceSize = props.forceScreenshotSourceSize, disablePictureInPicture = props.disablePictureInPicture, onUserMedia = props.onUserMedia, onUserMediaError = props.onUserMediaError, screenshotFormat = props.screenshotFormat, screenshotQuality = props.screenshotQuality, minScreenshotWidth = props.minScreenshotWidth, minScreenshotHeight = props.minScreenshotHeight, audioConstraints = props.audioConstraints, videoConstraints = props.videoConstraints, imageSmoothing = props.imageSmoothing, mirrored = props.mirrored, _b = props.style, style = _b === void 0 ? {} : _b, children = props.children, rest = __rest(props, ["audio", "forceScreenshotSourceSize", "disablePictureInPicture", "onUserMedia", "onUserMediaError", "screenshotFormat", "screenshotQuality", "minScreenshotWidth", "minScreenshotHeight", "audioConstraints", "videoConstraints", "imageSmoothing", "mirrored", "style", "children"]);
|
|
481
481
|
var videoStyle = mirrored ? __assign(__assign({}, style), { transform: (style.transform || "") + " scaleX(-1)" }) : style;
|
|
482
482
|
var childrenProps = {
|
|
483
483
|
getScreenshot: this.getScreenshot.bind(this)
|
|
@@ -485,7 +485,7 @@ var require_react_webcam = __commonJS({
|
|
|
485
485
|
return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](
|
|
486
486
|
react__WEBPACK_IMPORTED_MODULE_0__["Fragment"],
|
|
487
487
|
null,
|
|
488
|
-
react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("video", __assign({ autoPlay: true, src: state.src, muted: !audio, playsInline: true, ref: function(ref) {
|
|
488
|
+
react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("video", __assign({ autoPlay: true, disablePictureInPicture, src: state.src, muted: !audio, playsInline: true, ref: function(ref) {
|
|
489
489
|
_this.video = ref;
|
|
490
490
|
}, style: videoStyle }, rest)),
|
|
491
491
|
children && children(childrenProps)
|
|
@@ -493,6 +493,7 @@ var require_react_webcam = __commonJS({
|
|
|
493
493
|
};
|
|
494
494
|
Webcam3.defaultProps = {
|
|
495
495
|
audio: false,
|
|
496
|
+
disablePictureInPicture: false,
|
|
496
497
|
forceScreenshotSourceSize: false,
|
|
497
498
|
imageSmoothing: true,
|
|
498
499
|
mirrored: false,
|
|
@@ -2753,7 +2754,7 @@ var ControlFeedback = (props) => {
|
|
|
2753
2754
|
const validationMessages = __spreadValues(__spreadValues(__spreadValues({}, defaultValidationMessages), props.validationMessages), props.schema.validationMessages);
|
|
2754
2755
|
const isErrorVisible = (props.submitted || !props.changed) && !!props.errors;
|
|
2755
2756
|
const isValidationVisible = !isErrorVisible && (props.submitted || props.changed && props.blurred) && !!((_a = props.validations) == null ? void 0 : _a.length);
|
|
2756
|
-
const isDescriptionVisible = props.
|
|
2757
|
+
const isDescriptionVisible = props.schema.description && !isErrorVisible && !isValidationVisible;
|
|
2757
2758
|
const hasInfoMessage = !!props.infoMessage;
|
|
2758
2759
|
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { id: props.id, children: [
|
|
2759
2760
|
isErrorVisible ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_components7.InlineAlert, { type: "error", children: props.errors }) : null,
|
|
@@ -3026,7 +3027,8 @@ var ItemSummaryOption = ({
|
|
|
3026
3027
|
onClick,
|
|
3027
3028
|
media: getNavigationOptionMedia(item),
|
|
3028
3029
|
title: item.title,
|
|
3029
|
-
content: item.description
|
|
3030
|
+
content: item.description,
|
|
3031
|
+
showMediaAtAllSizes: true
|
|
3030
3032
|
}
|
|
3031
3033
|
);
|
|
3032
3034
|
};
|
|
@@ -3365,7 +3367,8 @@ var RepeatableSchema = ({
|
|
|
3365
3367
|
{
|
|
3366
3368
|
onClick: onAddItem,
|
|
3367
3369
|
media: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_icons.Plus, {}),
|
|
3368
|
-
title: schema.addItemTitle || formatMessage(RepeatableSchema_messages_default.addItemTitle)
|
|
3370
|
+
title: schema.addItemTitle || formatMessage(RepeatableSchema_messages_default.addItemTitle),
|
|
3371
|
+
showMediaAtAllSizes: true
|
|
3369
3372
|
}
|
|
3370
3373
|
),
|
|
3371
3374
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
@@ -3679,17 +3682,96 @@ var logInvalidTypeFallbackWarning = ({
|
|
|
3679
3682
|
);
|
|
3680
3683
|
};
|
|
3681
3684
|
|
|
3685
|
+
// src/formControl/utils/getAutocompleteString.ts
|
|
3686
|
+
var getAutocompleteString = (hints) => {
|
|
3687
|
+
const validHints = hints.filter((hint) => autocompleteHintMap[hint]);
|
|
3688
|
+
if (validHints.length === 0) {
|
|
3689
|
+
return "off";
|
|
3690
|
+
}
|
|
3691
|
+
return validHints.map((hint) => autocompleteHintMap[hint]).join(" ");
|
|
3692
|
+
};
|
|
3693
|
+
var autocompleteHintMap = {
|
|
3694
|
+
on: "on",
|
|
3695
|
+
name: "name",
|
|
3696
|
+
namePrefix: "honorific-prefix",
|
|
3697
|
+
givenName: "given-name",
|
|
3698
|
+
additionalName: "additional-name",
|
|
3699
|
+
familyName: "family-name",
|
|
3700
|
+
nameSuffix: "honorific-suffix",
|
|
3701
|
+
nickname: "nickname",
|
|
3702
|
+
email: "email",
|
|
3703
|
+
// Web doesn't have a specific mapping for new username, but this is semantically close enough
|
|
3704
|
+
newUsername: "username",
|
|
3705
|
+
username: "username",
|
|
3706
|
+
newPassword: "new-password",
|
|
3707
|
+
password: "current-password",
|
|
3708
|
+
oneTimeCode: "one-time-code",
|
|
3709
|
+
jobTitle: "organization-title",
|
|
3710
|
+
organizationName: "organization",
|
|
3711
|
+
fullStreetAddress: "street-address",
|
|
3712
|
+
streetAddressLine1: "address-line1",
|
|
3713
|
+
streetAddressLine2: "address-line2",
|
|
3714
|
+
streetAddressLine3: "address-line3",
|
|
3715
|
+
addressLevel1: "address-level1",
|
|
3716
|
+
addressLevel2: "address-level2",
|
|
3717
|
+
addressLevel3: "address-level3",
|
|
3718
|
+
addressLevel4: "address-level4",
|
|
3719
|
+
countryCode: "country",
|
|
3720
|
+
countryName: "country-name",
|
|
3721
|
+
postalCode: "postal-code",
|
|
3722
|
+
creditCardName: "cc-name",
|
|
3723
|
+
creditCardGivenName: "cc-given-name",
|
|
3724
|
+
creditCardMiddleName: "cc-additional-name",
|
|
3725
|
+
creditCardFamilyName: "cc-family-name",
|
|
3726
|
+
creditCardNumber: "cc-number",
|
|
3727
|
+
creditCardExpiration: "cc-exp",
|
|
3728
|
+
creditCardExpirationMonth: "cc-exp-month",
|
|
3729
|
+
creditCardExpirationYear: "cc-exp-year",
|
|
3730
|
+
creditCardSecurityCode: "cc-csc",
|
|
3731
|
+
creditCardType: "cc-type",
|
|
3732
|
+
transactionCurrency: "transaction-currency",
|
|
3733
|
+
transactionAmount: "transaction-amount",
|
|
3734
|
+
language: "language",
|
|
3735
|
+
birthdate: "bday",
|
|
3736
|
+
birthdateDay: "bday-day",
|
|
3737
|
+
birthdateMonth: "bday-month",
|
|
3738
|
+
birthdateYear: "bday-year",
|
|
3739
|
+
gender: "sex",
|
|
3740
|
+
phoneNumber: "tel",
|
|
3741
|
+
phoneCountryCode: "tel-country-code",
|
|
3742
|
+
phoneNational: "tel-national",
|
|
3743
|
+
phoneAreaCode: "tel-area-code",
|
|
3744
|
+
phoneLocal: "tel-local",
|
|
3745
|
+
phoneLocalPrefix: "tel-local-prefix",
|
|
3746
|
+
phoneLocalSuffix: "tel-local-suffix",
|
|
3747
|
+
phoneExtension: "tel-extension",
|
|
3748
|
+
url: "url",
|
|
3749
|
+
photo: "photo",
|
|
3750
|
+
impp: "impp",
|
|
3751
|
+
shipping: "shipping",
|
|
3752
|
+
billing: "billing",
|
|
3753
|
+
home: "home",
|
|
3754
|
+
work: "work",
|
|
3755
|
+
mobile: "mobile",
|
|
3756
|
+
fax: "fax",
|
|
3757
|
+
pager: "pager"
|
|
3758
|
+
};
|
|
3759
|
+
|
|
3682
3760
|
// src/formControl/FormControl.tsx
|
|
3683
3761
|
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
3684
3762
|
var _FormControl = class _FormControl extends import_react15.PureComponent {
|
|
3685
3763
|
constructor(props) {
|
|
3686
3764
|
super(props);
|
|
3687
|
-
|
|
3688
|
-
|
|
3689
|
-
|
|
3690
|
-
|
|
3691
|
-
|
|
3692
|
-
|
|
3765
|
+
this.getAutocompleteValue = () => {
|
|
3766
|
+
const { autoComplete, autocompleteHint } = this.props;
|
|
3767
|
+
if (isArray(autocompleteHint)) {
|
|
3768
|
+
return getAutocompleteString(autocompleteHint);
|
|
3769
|
+
}
|
|
3770
|
+
if (autoComplete === true) {
|
|
3771
|
+
return "on";
|
|
3772
|
+
}
|
|
3773
|
+
return "off";
|
|
3774
|
+
};
|
|
3693
3775
|
this.handleOnChange = (value) => {
|
|
3694
3776
|
this.props.onChange(value);
|
|
3695
3777
|
};
|
|
@@ -3842,7 +3924,7 @@ var _FormControl = class _FormControl extends import_react15.PureComponent {
|
|
|
3842
3924
|
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
3843
3925
|
"input",
|
|
3844
3926
|
{
|
|
3845
|
-
autoComplete: this.
|
|
3927
|
+
autoComplete: this.getAutocompleteValue(),
|
|
3846
3928
|
className: "form-control",
|
|
3847
3929
|
disabled,
|
|
3848
3930
|
id,
|
|
@@ -3886,7 +3968,7 @@ var _FormControl = class _FormControl extends import_react15.PureComponent {
|
|
|
3886
3968
|
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
3887
3969
|
"input",
|
|
3888
3970
|
{
|
|
3889
|
-
autoComplete: this.
|
|
3971
|
+
autoComplete: this.getAutocompleteValue(),
|
|
3890
3972
|
className: "form-control",
|
|
3891
3973
|
disabled,
|
|
3892
3974
|
id,
|
|
@@ -3964,7 +4046,7 @@ var _FormControl = class _FormControl extends import_react15.PureComponent {
|
|
|
3964
4046
|
onFocus: this.handleOnFocus,
|
|
3965
4047
|
onBlur: this.handleOnBlur,
|
|
3966
4048
|
disabled,
|
|
3967
|
-
autoComplete: this.
|
|
4049
|
+
autoComplete: this.getAutocompleteValue()
|
|
3968
4050
|
};
|
|
3969
4051
|
if (this.props.displayPattern) {
|
|
3970
4052
|
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
@@ -4024,7 +4106,7 @@ var _FormControl = class _FormControl extends import_react15.PureComponent {
|
|
|
4024
4106
|
onFocus: this.handleOnFocus,
|
|
4025
4107
|
onBlur: this.handleOnBlur,
|
|
4026
4108
|
disabled,
|
|
4027
|
-
autoComplete: this.
|
|
4109
|
+
autoComplete: this.getAutocompleteValue()
|
|
4028
4110
|
};
|
|
4029
4111
|
if (this.props.displayPattern) {
|
|
4030
4112
|
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
@@ -4253,6 +4335,7 @@ var SchemaFormControl = (props) => {
|
|
|
4253
4335
|
options: options || [],
|
|
4254
4336
|
placeholder: schema.placeholder,
|
|
4255
4337
|
autoComplete: !schema.help,
|
|
4338
|
+
autocompleteHint: schema.autocompleteHint,
|
|
4256
4339
|
disabled: disabled || schema.disabled,
|
|
4257
4340
|
displayPattern: schema.displayFormat,
|
|
4258
4341
|
// TODO: LOW avoid type assertion below
|
|
@@ -4415,11 +4498,11 @@ var OneOfSchema = (props) => {
|
|
|
4415
4498
|
function getTitleAndHelp(schema, id) {
|
|
4416
4499
|
var _a;
|
|
4417
4500
|
const helpElement = schema.help ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Help_default, { help: schema.help }) : null;
|
|
4418
|
-
const titleElement = isConstSchema(schema.oneOf[0]) ? /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("label", { className: "control-label d-inline", htmlFor: id, children: [
|
|
4501
|
+
const titleElement = isConstSchema(schema.oneOf[0]) ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "m-b-1", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("label", { className: "control-label d-inline", htmlFor: id, children: [
|
|
4419
4502
|
schema.title,
|
|
4420
4503
|
" ",
|
|
4421
4504
|
helpElement
|
|
4422
|
-
] }) : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_jsx_runtime30.Fragment, { children: helpElement ? /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("h4", { className: "m-b-2", children: [
|
|
4505
|
+
] }) }) : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_jsx_runtime30.Fragment, { children: helpElement ? /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("h4", { className: "m-b-2", children: [
|
|
4423
4506
|
schema.title,
|
|
4424
4507
|
" ",
|
|
4425
4508
|
helpElement
|
|
@@ -5384,6 +5467,7 @@ var SearchInput = ({ title, value, onFocus, onChange }) => {
|
|
|
5384
5467
|
{
|
|
5385
5468
|
type: "text",
|
|
5386
5469
|
value,
|
|
5470
|
+
className: "m-t-1",
|
|
5387
5471
|
onFocus,
|
|
5388
5472
|
onChange: (event) => onChange(event.currentTarget.value)
|
|
5389
5473
|
}
|
|
@@ -5636,7 +5720,7 @@ var BasicTypeSchema = (props) => {
|
|
|
5636
5720
|
const formGroupClasses = {
|
|
5637
5721
|
"form-group": true,
|
|
5638
5722
|
"has-error": (props.submitted || !changed) && !!props.errors || (props.submitted || changed && blurred) && !!validations.length,
|
|
5639
|
-
"has-info":
|
|
5723
|
+
"has-info": !!props.schema.description || !!props.infoMessage
|
|
5640
5724
|
};
|
|
5641
5725
|
const showLabel = props.schema.format !== "file" && props.schema.type !== "boolean";
|
|
5642
5726
|
const schemaHelp = props.schema.help;
|
|
@@ -5644,7 +5728,7 @@ var BasicTypeSchema = (props) => {
|
|
|
5644
5728
|
return !isHidden ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_jsx_runtime54.Fragment, { children: [
|
|
5645
5729
|
props.schema.alert && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(DynamicAlert_default, { component: props.schema.alert }),
|
|
5646
5730
|
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: (0, import_classnames6.default)(formGroupClasses), children: [
|
|
5647
|
-
showLabel && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "d-inline-block", children: [
|
|
5731
|
+
showLabel && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "d-inline-block m-b-1", children: [
|
|
5648
5732
|
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("label", { className: "control-label d-inline", htmlFor: id, children: props.schema.title }),
|
|
5649
5733
|
!!schemaHelp && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Help_default, { help: schemaHelp })
|
|
5650
5734
|
] }),
|
|
@@ -7950,7 +8034,7 @@ var th_default = {
|
|
|
7950
8034
|
// src/i18n/tr.json
|
|
7951
8035
|
var tr_default = {
|
|
7952
8036
|
"dynamicFlows.ArraySchema.addItem": "Kaydet",
|
|
7953
|
-
"dynamicFlows.ArraySchema.addItemTitle": "
|
|
8037
|
+
"dynamicFlows.ArraySchema.addItemTitle": "\xD6\u011Fe ekle",
|
|
7954
8038
|
"dynamicFlows.ArraySchema.editItem": "Kaydet",
|
|
7955
8039
|
"dynamicFlows.ArraySchema.maxItemsError": "L\xFCtfen {maxItems} veya daha az ekleme yap\u0131n",
|
|
7956
8040
|
"dynamicFlows.ArraySchema.minItemsError": "L\xFCtfen en az {minItems} ekleme yap\u0131n.",
|
|
@@ -7963,7 +8047,7 @@ var tr_default = {
|
|
|
7963
8047
|
"dynamicFlows.CameraCapture.reviewInstructions": "Foto\u011Fraf\u0131n\u0131z net, okunakl\u0131 ve eksiksiz mi?",
|
|
7964
8048
|
"dynamicFlows.CameraCapture.reviewRetry": "Hay\u0131r, tekrar dene",
|
|
7965
8049
|
"dynamicFlows.CameraCapture.reviewSubmit": "Evet, g\xF6nder",
|
|
7966
|
-
"dynamicFlows.CameraCapture.rotatePhone.text": "
|
|
8050
|
+
"dynamicFlows.CameraCapture.rotatePhone.text": "Foto\u011Fraf \xE7ekmek i\xE7in telefonunuzu dik pozisyonda tutun",
|
|
7967
8051
|
"dynamicFlows.ControlFeedback.maxLength": "L\xFCtfen {maxLength} veya daha az karakter girin.",
|
|
7968
8052
|
"dynamicFlows.ControlFeedback.maximum": "L\xFCtfen {maximum} veya daha d\xFC\u015F\xFCk bir say\u0131 girin.",
|
|
7969
8053
|
"dynamicFlows.ControlFeedback.maximumDate": "L\xFCtfen {maximum} veya daha erken bir tarih girin.",
|