Skip to content

Commit 3dd5fb4

Browse files
Merge branch 'GuidoZam-patch-fieldcollectiondata' into dev
2 parents ea1dd74 + 4e2a43e commit 3dd5fb4

File tree

7 files changed

+39
-126
lines changed

7 files changed

+39
-126
lines changed

src/controls/fieldCollectionData/ICustomCollectionField.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,5 +97,6 @@ export enum CustomCollectionFieldType {
9797
peoplepicker,
9898
fabricIcon,
9999
url,
100+
date,
100101
custom
101102
}

src/controls/fieldCollectionData/collectionDataItem/CollectionDataItem.tsx

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ import { PeoplePicker, PrincipalType } from "../../peoplepicker";
1414
import { Callout, DirectionalHint } from 'office-ui-fabric-react/lib/components/Callout';
1515
import { CollectionIconField } from '../collectionIconField';
1616
import { clone, findIndex, sortBy } from '@microsoft/sp-lodash-subset';
17-
import { CollectionNumberField } from '../collectionNumberField';
1817
import { Guid } from '@microsoft/sp-core-library';
1918
import { FieldValidator } from '../FieldValidator';
19+
import { DatePicker } from 'office-ui-fabric-react/lib/DatePicker';
2020
import { IPersonaProps } from 'office-ui-fabric-react/lib/Persona';
2121

2222
export class CollectionDataItem extends React.Component<ICollectionDataItemProps, ICollectionDataItemState> {
@@ -487,9 +487,16 @@ export class CollectionDataItem extends React.Component<ICollectionDataItemProps
487487
onRenderOption={field.onRenderOption}
488488
className="PropertyFieldCollectionData__panel__dropdown-field" />;
489489
case CustomCollectionFieldType.number:
490-
return (
491-
<CollectionNumberField field={field} item={item} disableEdit={disableFieldOnEdit} fOnValueChange={this.onValueChanged} fValidation={this.fieldValidation} />
492-
);
490+
return <TextField placeholder={field.placeholder || field.title}
491+
className={styles.collectionDataField}
492+
value={item[field.id] ? item[field.id] : ""}
493+
required={field.required}
494+
disabled={disableFieldOnEdit}
495+
type='number'
496+
onChange={(e, value) => this.onValueChanged(field.id, value)}
497+
deferredValidationTime={field.deferredValidationTime || field.deferredValidationTime >= 0 ? field.deferredValidationTime : 200}
498+
onGetErrorMessage={async (value: string) => await this.fieldValidation(field, value)}
499+
inputClassName="PropertyFieldCollectionData__panel__number-field" />;
493500
case CustomCollectionFieldType.fabricIcon:
494501
return (
495502
<CollectionIconField field={field} item={item} disableEdit={disableFieldOnEdit} fOnValueChange={this.onValueChanged} fValidation={this.fieldValidation} />
@@ -504,6 +511,16 @@ export class CollectionDataItem extends React.Component<ICollectionDataItemProps
504511
deferredValidationTime={field.deferredValidationTime || field.deferredValidationTime >= 0 ? field.deferredValidationTime : 200}
505512
onGetErrorMessage={async (value: string) => this.urlFieldValidation(field, value, item)}
506513
inputClassName="PropertyFieldCollectionData__panel__url-field" />;
514+
case CustomCollectionFieldType.date:
515+
return <DatePicker
516+
className={styles.collectionDataField}
517+
placeholder={field.placeholder || field.title}
518+
isRequired={field.required}
519+
disabled={disableFieldOnEdit}
520+
value={item[field.id] ? new Date(item[field.id]) : undefined}
521+
onSelectDate={(date) => { this.onValueChanged(field.id, date) }}
522+
formatDate={(date) => { return date ? date?.toLocaleDateString() : ""; }}
523+
/>;
507524
case CustomCollectionFieldType.custom:
508525
if (field.onCustomRender) {
509526
return field.onCustomRender(field, item[field.id], this.onValueChanged, item, item.uniqueId, this.onCustomFieldValidation);

src/controls/fieldCollectionData/collectionNumberField/CollectionNumberField.tsx

Lines changed: 0 additions & 94 deletions
This file was deleted.

src/controls/fieldCollectionData/collectionNumberField/ICollectionNumberFieldProps.ts

Lines changed: 0 additions & 10 deletions
This file was deleted.

src/controls/fieldCollectionData/collectionNumberField/ICollectionNumberFieldState.ts

Lines changed: 0 additions & 4 deletions
This file was deleted.

src/controls/fieldCollectionData/collectionNumberField/index.ts

Lines changed: 0 additions & 3 deletions
This file was deleted.

src/webparts/controlsTest/components/ControlsTest.tsx

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2043,7 +2043,8 @@ export default class ControlsTest extends React.Component<IControlsTestProps, IC
20432043
key={"FieldCollectionData"}
20442044
label={"Fields Collection"}
20452045
itemsPerPage={3}
2046-
manageBtnLabel={"Manage"} onChanged={(value) => { console.log(value); }}
2046+
manageBtnLabel={"Manage"}
2047+
onChanged={(value) => { console.log(value); }}
20472048
panelHeader={"Manage values"}
20482049
enableSorting={true}
20492050
panelProps={{ type: PanelType.custom, customWidth: "98vw" }}
@@ -2052,9 +2053,9 @@ export default class ControlsTest extends React.Component<IControlsTestProps, IC
20522053
{ id: "Field2", title: "Number field", type: CustomCollectionFieldType.number },
20532054
{ id: "Field3", title: "URL field", type: CustomCollectionFieldType.url },
20542055
{ id: "Field4", title: "Boolean field", type: CustomCollectionFieldType.boolean },
2055-
{
2056+
{
20562057
id: "Field5", title: "People picker", type: CustomCollectionFieldType.peoplepicker, required: true,
2057-
minimumUsers: 2, minimumUsersMessage: "2 Users is the minimum", maximumUsers: 3,
2058+
minimumUsers: 2, minimumUsersMessage: "2 Users is the minimum", maximumUsers: 3,
20582059
},
20592060
{
20602061
id: "Field6", title: "Combo Single", type: CustomCollectionFieldType.combobox, required: true,
@@ -2063,8 +2064,8 @@ export default class ControlsTest extends React.Component<IControlsTestProps, IC
20632064
{
20642065
id: "Field7", title: "Combo Multi", type: CustomCollectionFieldType.combobox,
20652066
allowFreeform: true, multiSelect: true, options: [{key: "choice 1", text: "choice 1"}, {key: "choice 2", text: "choice 2"}, {key: "choice 3", text: "choice 3"}]
2066-
},
2067-
2067+
},
2068+
{ id: "Field8", title: "Date field", type: CustomCollectionFieldType.date, placeholder: "Select a date" }
20682069
]}
20692070
value={this.getRandomCollectionFieldData()}
20702071

@@ -2665,14 +2666,19 @@ export default class ControlsTest extends React.Component<IControlsTestProps, IC
26652666
private getRandomCollectionFieldData = () => {
26662667
let result = [];
26672668
for (let i = 1; i < 16; i++) {
2668-
result.push({
2669-
"Field1": `String${i}`,
2670-
"Field2": i,
2671-
"Field3": "https://pnp.github.io/",
2672-
"Field4": true,
2669+
2670+
const sampleDate = new Date();
2671+
sampleDate.setDate(sampleDate.getDate() + i);
2672+
2673+
result.push({
2674+
"Field1": `String${i}`,
2675+
"Field2": i,
2676+
"Field3": "https://pnp.github.io/",
2677+
"Field4": true,
26732678
"Field5": null,
26742679
"Field6": {key: "choice 1", text: "choice 1"},
2675-
"Field7": [{key: "choice 1", text: "choice 1"}, {key: "choice 2", text: "choice 2"}]
2680+
"Field7": [{key: "choice 1", text: "choice 1"}, {key: "choice 2", text: "choice 2"}],
2681+
"Field8": sampleDate
26762682
});
26772683
}
26782684
return result;

0 commit comments

Comments
 (0)