UNPKG

@im-ian/react-survey

Version:

2018~2019년에 제작했던 React 설문 모듈입니다. 아카이브 용도로 업로드 되었습니다.

101 lines (83 loc) 2.48 kB
import { BlockTypes, Blocks, IBlocks, SelectableOption, TypedBlock, } from "../@types/block"; export const createBlock = ( id: string, type: BlockTypes, order: number ): IBlocks => { const blockShape = { id, type, order, required: false }; switch (type) { case Blocks.BLANK: return blockShape as TypedBlock<typeof Blocks.BLANK>; case Blocks.SHORT_TEXT: return Object.assign(blockShape, { answer: "", }) as TypedBlock<typeof Blocks.SHORT_TEXT>; case Blocks.LONG_TEXT: return Object.assign(blockShape, { answer: "", }) as TypedBlock<typeof Blocks.LONG_TEXT>; case Blocks.SWITCH: return Object.assign(blockShape, { switchTitle: "", answer: false, }) as TypedBlock<typeof Blocks.SWITCH>; case Blocks.CHECK_BOX: return Object.assign(blockShape, { checkboxTitle: "", answer: false, }) as TypedBlock<typeof Blocks.CHECK_BOX>; case Blocks.SINGLE_SELECT: return Object.assign(blockShape, { question: [] as SelectableOption[], answer: null, }) as TypedBlock<typeof Blocks.SINGLE_SELECT>; case Blocks.MULTI_SELECT: return Object.assign(blockShape, { question: [] as SelectableOption[], answer: [] as string[], }) as TypedBlock<typeof Blocks.MULTI_SELECT>; case Blocks.DROPDOWN: return Object.assign(blockShape, { question: [] as SelectableOption[], answer: null, }) as TypedBlock<typeof Blocks.DROPDOWN>; // case Blocks.FILE_UPLOAD: // return Object.assign(blockShape, { // multiple: true, // answer: [], // }) as TypedBlock<typeof Blocks.FILE_UPLOAD>; case Blocks.RANGE: return Object.assign(blockShape, { min: 1, minTitle: "", max: 5, maxTitle: "", answer: null, }) as TypedBlock<typeof Blocks.RANGE>; // case Blocks.DATE: // return Object.assign(blockShape, { // value: '', // answer: '', // }) as TypedBlock<typeof Blocks.DATE>; // case Blocks.TIME: // return Object.assign(blockShape, { // value: '', // answer: '', // }) as TypedBlock<typeof Blocks.TIME>; default: throw new Error("return untyped block."); } }; export const getRange = (size: number): number[] => { const range = []; for (let i = 0; i < size; i++) { range.push(i); } return range; };