Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
export interface AttachmentFieldConstraints {
maxNumberOfFiles: number;
allowedFileTypeGroups: AllowedFileTypeGroups;
}

export interface AllowedFileTypeGroups {
mode: AllowMode;
groups?: FileTypeGroup[];
}

export enum AllowMode {
ALL = 'ALL',
ONLY = 'ONLY',
}

export enum FileTypeGroup {
IMAGES = 'IMAGES',
DOCUMENTS = 'DOCUMENTS',
ARCHIVES = 'ARCHIVES',
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { InputFieldBase } from './input-field-base.js';
import { InputFieldTranslation } from './input-field-translation.js';
import { AttachmentFieldConstraints } from './attachment-field-constraints.js';

export interface AttachmentFieldCreationRequest extends InputFieldBase {
type: 'ATTACHMENT';
title: string;
visitorFacingTitle?: string;
translations?: InputFieldTranslation[];
constraints: AttachmentFieldConstraints;
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { PhoneNumberFieldCreationRequest } from './phone-number-field-creation-r
import { SelectFieldCreationRequest } from './select-field-creation-request.js';
import { TextFieldCreationRequest } from './text-field-creation-request.js';
import { UrlFieldCreationRequest } from './url-field-creation-request.js';
import { AttachmentFieldCreationRequest } from './attachment-field-creation-request';

/**
* A discriminated union of all input field creation request types.
Expand All @@ -21,4 +22,5 @@ export type InputFieldCreationRequest =
| LastNameFieldCreationRequest
| UrlFieldCreationRequest
| DateFieldCreationRequest
| NumericFieldCreationRequest;
| NumericFieldCreationRequest
| AttachmentFieldCreationRequest;
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,15 @@ import { Desk } from '../../model/desk';
import { InputFieldCreationRequest } from '../../model/input-field/input-field-creation-request';
import { FirstNameFieldCreationRequest } from '../../model/input-field/first-name-field-creation-request';
import { NumericFieldCreationRequest } from '../../model/input-field/numeric-field-creation-request';
import { AttachmentFieldCreationRequest } from '../../model/input-field/attachment-field-creation-request';
import { SelectFieldCreationRequest } from '../../model/input-field/select-field-creation-request';
import { Qminder } from '../../qminder';
import { LocationService } from './location.service';
import {
AllowedFileTypeGroups,
AllowMode,
FileTypeGroup,
} from '../../model/input-field/attachment-field-constraints';

describe('Location service', function () {
const LOCATIONS = [
Expand Down Expand Up @@ -331,6 +337,38 @@ describe('Location service', function () {
).toBeTruthy();
});

it('sends an ATTACHMENT field with constraints', async function () {
const attachmentField: AttachmentFieldCreationRequest = {
type: 'ATTACHMENT',
id: '3fcf43c4-2dc3-46bf-be7b-4e52350e2ce4 ',
location: { id: LOCATION_ID },
title: 'Amount',
constraints: {
maxNumberOfFiles: 10,
allowedFileTypeGroups: {
mode: AllowMode.ONLY,
groups: [FileTypeGroup.IMAGES],
},
},
isMandatoryBeforeAdded: false,
isMandatoryBeforeServed: true,
isMandatoryInRemoteSignIn: false,
isVisibleInWaitingDrawer: false,
isVisibleInServingDrawer: true,
visibleForLines: [],
showInRemoteSignIn: false,
};

await LocationService.createInputField(attachmentField);
expect(
requestStub.calledWith('input-fields', {
method: 'POST',
body: JSON.stringify(attachmentField),
headers: { 'X-Qminder-API-Version': '2020-09-01' },
}),
).toBeTruthy();
});

it('sends a FIRST_NAME field with only base properties', async function () {
const firstNameField: FirstNameFieldCreationRequest = {
type: 'FIRST_NAME',
Expand Down
2 changes: 2 additions & 0 deletions packages/javascript-api/src/public-api/model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,5 @@ export { LastNameFieldCreationRequest } from '../lib/model/input-field/last-name
export { UrlFieldCreationRequest } from '../lib/model/input-field/url-field-creation-request.js';
export { DateFieldCreationRequest } from '../lib/model/input-field/date-field-creation-request.js';
export { NumericFieldCreationRequest } from '../lib/model/input-field/numeric-field-creation-request.js';
export { AttachmentFieldConstraints } from '../lib/model/input-field/attachment-field-constraints.js';
export { AttachmentFieldCreationRequest } from '../lib/model/input-field/attachment-field-creation-request.js';
Loading