Skip to content

Commit 23a9af4

Browse files
Merge pull request pnp#1318 from SmarterJB/feature/use_regional_settings_for_firstdayofweek
DynamicForm - FirstDayOfWeek in DatePickers from webs regional settings
2 parents ead7115 + 01f3c88 commit 23a9af4

File tree

4 files changed

+19
-2
lines changed

4 files changed

+19
-2
lines changed

src/controls/dynamicForm/DynamicForm.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,7 @@ export class DynamicForm extends React.Component<IDynamicFormProps, IDynamicForm
330330
let order: number = 0;
331331
const responseValue = listFeilds.value;
332332
const hiddenFields = this.props.hiddenFields !== undefined ? this.props.hiddenFields : [];
333+
let defaultDayOfWeek: number = 0;
333334
for (let i = 0, len = responseValue.length; i < len; i++) {
334335
const field = responseValue[i];
335336

@@ -436,7 +437,7 @@ export class DynamicForm extends React.Component<IDynamicFormProps, IDynamicForm
436437
const schemaXml = field.SchemaXml;
437438
const dateFormatRegEx = /\s+Format="([^"]+)"/gmi.exec(schemaXml);
438439
dateFormat = dateFormatRegEx && dateFormatRegEx.length ? dateFormatRegEx[1] as DateFormat : 'DateOnly';
439-
440+
defaultDayOfWeek = (await this._spService.getRegionalWebSettings()).FirstDayOfWeek;
440441
}
441442
else if (fieldType === "UserMulti") {
442443
if (item !== null)
@@ -492,6 +493,7 @@ export class DynamicForm extends React.Component<IDynamicFormProps, IDynamicForm
492493
Order: field.order,
493494
isRichText: richText,
494495
dateFormat: dateFormat,
496+
firstDayOfWeek: defaultDayOfWeek,
495497
listItemId: listItemId,
496498
principalType: principalType,
497499
description: field.Description

src/controls/dynamicForm/dynamicField/DynamicField.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ export class DynamicField extends React.Component<IDynamicFieldProps, IDynamicFi
7272
isRichText,
7373
//bingAPIKey,
7474
dateFormat,
75+
firstDayOfWeek,
7576
columnInternalName,
7677
principalType,
7778
description
@@ -302,6 +303,7 @@ export class DynamicField extends React.Component<IDynamicFieldProps, IDynamicFi
302303
value={(changedValue !== null && changedValue !== "") ? changedValue : defaultValue}
303304
onSelectDate={(newDate) => { this.onChange(newDate); }}
304305
disabled={disabled}
306+
firstDayOfWeek={firstDayOfWeek}
305307
/>}
306308
{
307309
dateFormat === 'DateTime' &&
@@ -311,7 +313,9 @@ export class DynamicField extends React.Component<IDynamicFieldProps, IDynamicFi
311313
formatDate={(date) => { return date.toLocaleDateString(context.pageContext.cultureInfo.currentCultureName); }}
312314
value={(changedValue !== null && changedValue !== "") ? changedValue : defaultValue}
313315
onChange={(newDate) => { this.onChange(newDate); }}
314-
disabled={disabled} />
316+
disabled={disabled}
317+
firstDayOfWeek={firstDayOfWeek}
318+
/>
315319
}
316320
{descriptionEl}
317321
{errorTextEl}

src/controls/dynamicForm/dynamicField/IDynamicFieldProps.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export interface IDynamicFieldProps {
2929
Order: number;
3030
isRichText?: boolean;
3131
dateFormat?: DateFormat;
32+
firstDayOfWeek: number;
3233
additionalData?: FieldChangeAdditionalData;
3334
principalType?:string;
3435
description?: string;

src/services/SPService.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -679,6 +679,16 @@ export default class SPService implements ISPService {
679679
return result;
680680
}
681681

682+
public async getRegionalWebSettings(webUrl?: string): Promise<any> {
683+
const webAbsoluteUrl = !webUrl ? this._context.pageContext.web.absoluteUrl : webUrl;
684+
const apiRequestPath = "/_api/web/regionalsettings";
685+
686+
const apiUrl = urlCombine(webAbsoluteUrl, apiRequestPath, false);
687+
const response = await this._context.spHttpClient.get(apiUrl, SPHttpClient.configurations.v1);
688+
const result = await response.json();
689+
return result;
690+
}
691+
682692
private _filterListItemsFieldValuesAsText(items: any[], internalColumnName: string, filterText: string | undefined, substringSearch: boolean): any[] { // eslint-disable-line @typescript-eslint/no-explicit-any
683693
const lowercasedFilterText = filterText.toLowerCase();
684694

0 commit comments

Comments
 (0)