Skip to content

Commit 409558f

Browse files
committed
Added support to date field in FieldCollectionData
1 parent 990735a commit 409558f

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

src/controls/fieldCollectionData/ICustomCollectionField.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,5 +74,6 @@ export enum CustomCollectionFieldType {
7474
dropdown,
7575
fabricIcon,
7676
url,
77+
date,
7778
custom
7879
}

src/controls/fieldCollectionData/collectionDataItem/CollectionDataItem.tsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { CollectionIconField } from '../collectionIconField';
1414
import { clone, findIndex, sortBy } from '@microsoft/sp-lodash-subset';
1515
import { Guid } from '@microsoft/sp-core-library';
1616
import { FieldValidator } from '../FieldValidator';
17+
import { DatePicker } from 'office-ui-fabric-react';
1718

1819
export class CollectionDataItem extends React.Component<ICollectionDataItemProps, ICollectionDataItemState> {
1920
private emptyItem: any = null; // eslint-disable-line @typescript-eslint/no-explicit-any
@@ -385,6 +386,16 @@ export class CollectionDataItem extends React.Component<ICollectionDataItemProps
385386
deferredValidationTime={field.deferredValidationTime || field.deferredValidationTime >= 0 ? field.deferredValidationTime : 200}
386387
onGetErrorMessage={async (value: string) => this.urlFieldValidation(field, value, item)}
387388
inputClassName="PropertyFieldCollectionData__panel__url-field" />;
389+
case CustomCollectionFieldType.date:
390+
return <DatePicker
391+
className={styles.collectionDataField}
392+
placeholder={field.placeholder || field.title}
393+
isRequired={field.required}
394+
disabled={disableFieldOnEdit}
395+
value={item[field.id] ? new Date(item[field.id]) : undefined}
396+
onSelectDate={(date) => { this.onValueChanged(field.id, date) }}
397+
formatDate={(date) => { return date ? date?.toLocaleDateString() : ""; }}
398+
/>;
388399
case CustomCollectionFieldType.custom:
389400
if (field.onCustomRender) {
390401
return field.onCustomRender(field, item[field.id], this.onValueChanged, item, item.uniqueId, this.onCustomFieldValidation);

src/webparts/controlsTest/components/ControlsTest.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2006,7 +2006,8 @@ export default class ControlsTest extends React.Component<IControlsTestProps, IC
20062006
key={"FieldCollectionData"}
20072007
label={"Fields Collection"}
20082008
itemsPerPage={3}
2009-
manageBtnLabel={"Manage"} onChanged={(value) => { console.log(value); }}
2009+
manageBtnLabel={"Manage"}
2010+
onChanged={(value) => { console.log(value); }}
20102011
panelHeader={"Manage values"}
20112012
enableSorting={true}
20122013
panelProps={{ type: PanelType.custom, customWidth: "98vw" }}
@@ -2015,6 +2016,7 @@ export default class ControlsTest extends React.Component<IControlsTestProps, IC
20152016
{ id: "Field2", title: "Number field", type: CustomCollectionFieldType.number },
20162017
{ id: "Field3", title: "URL field", type: CustomCollectionFieldType.url },
20172018
{ id: "Field4", title: "Boolean field", type: CustomCollectionFieldType.boolean },
2019+
{ id: "Field5", title: "Date field", type: CustomCollectionFieldType.date, placeholder: "Select a date" }
20182020
]}
20192021
value={this.getRandomCollectionFieldData()}
20202022
/>
@@ -2610,7 +2612,9 @@ export default class ControlsTest extends React.Component<IControlsTestProps, IC
26102612
private getRandomCollectionFieldData = () => {
26112613
let result = [];
26122614
for (let i = 1; i < 16; i++) {
2613-
result.push({ "Field1": `String${i}`, "Field2": i, "Field3": "https://pnp.github.io/", "Field4": true });
2615+
const sampleDate = new Date();
2616+
sampleDate.setDate(sampleDate.getDate() + i);
2617+
result.push({ "Field1": `String${i}`, "Field2": i, "Field3": "https://pnp.github.io/", "Field4": true, "Field5": sampleDate });
26142618
}
26152619
return result;
26162620
}

0 commit comments

Comments
 (0)