|
@@ -0,0 +1,175 @@
|
|
|
+import { ValueTransformer } from './../dynaform/interfaces';
|
|
|
+import { buildModeledMeta } from './../dynaform/libs';
|
|
|
+
|
|
|
+// ---------------------------------------------------------------------------------------------------------------------
|
|
|
+// Native
|
|
|
+
|
|
|
+const basicTextField = {
|
|
|
+ name: 'basicTextField',
|
|
|
+ type: 'text',
|
|
|
+ label: 'Field One',
|
|
|
+ placeholder: 'Type a value here'
|
|
|
+};
|
|
|
+
|
|
|
+const styledTextField = {
|
|
|
+ name: 'styledTextField',
|
|
|
+ type: 'text',
|
|
|
+ placeholder: 'With a DOM id and CSS classes applied',
|
|
|
+ class: ['red', 'bgPaleBlue'],
|
|
|
+ id: 'yoyo'
|
|
|
+};
|
|
|
+
|
|
|
+const textareaField = {
|
|
|
+ name: 'textareaField',
|
|
|
+ type: 'textarea',
|
|
|
+ placeholder: 'Type your long-winded comments here'
|
|
|
+};
|
|
|
+
|
|
|
+const passwordField = {
|
|
|
+ name: 'passwordField',
|
|
|
+ type: 'password',
|
|
|
+ placeholder: 'It\'s a secret'
|
|
|
+};
|
|
|
+
|
|
|
+const selectField = {
|
|
|
+ name: 'selectField',
|
|
|
+ type: 'select',
|
|
|
+ options: ['', 'Apples', 'Oranges', 'Pears', 'Gorgonzola']
|
|
|
+};
|
|
|
+
|
|
|
+const radioField = {
|
|
|
+ name: 'radioField',
|
|
|
+ type: 'radio',
|
|
|
+ options: ['Tea', 'Coffee', 'Cocoa', 'Yerba Maté']
|
|
|
+};
|
|
|
+
|
|
|
+const disabledTextField = {
|
|
|
+ name: 'disabledTextField',
|
|
|
+ type: 'text',
|
|
|
+ placeholder: 'You can\'t touch this',
|
|
|
+ isDisabled: true
|
|
|
+};
|
|
|
+
|
|
|
+const radioFieldHorizontal = {
|
|
|
+ name: 'radioFieldHorizontal',
|
|
|
+ type: 'radio',
|
|
|
+ options: ['Fish', 'Fowl', 'Neither'],
|
|
|
+ horizontal: true
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+// ---------------------------------------------------------------------------------------------------------------------
|
|
|
+// Custom
|
|
|
+
|
|
|
+const checkbutton = {
|
|
|
+ name: 'checkbutton',
|
|
|
+ type: 'checkbutton',
|
|
|
+ value: '456'
|
|
|
+};
|
|
|
+
|
|
|
+const checkbutton2 = {
|
|
|
+ name: 'checkbutton2',
|
|
|
+ type: 'checkbutton',
|
|
|
+ value: 'Yowsa'
|
|
|
+};
|
|
|
+
|
|
|
+const modifiers = ['Matches', 'Starts With', 'Contains'];
|
|
|
+const transformerFunctions: ValueTransformer = {
|
|
|
+ inputFn: val => {
|
|
|
+ let modifier = 'Starts With';
|
|
|
+ if (/^%.*?%$/.test(val)) {
|
|
|
+ modifier = 'Contains';
|
|
|
+ } else if (/^[^%].*?[^%]$/.test(val)) {
|
|
|
+ modifier = 'Matches';
|
|
|
+ } else if (/^%.*/.test(val)) {
|
|
|
+ modifier = 'Starts With';
|
|
|
+ }
|
|
|
+ const transformedVal = val.replace(/%/g, '').trim();
|
|
|
+ return { modifier: modifier, value: transformedVal };
|
|
|
+ },
|
|
|
+ outputFn: (mod, val) => {
|
|
|
+ let transformedValue;
|
|
|
+ switch (mod) {
|
|
|
+ case 'Starts With':
|
|
|
+ transformedValue = `%${val}`;
|
|
|
+ break;
|
|
|
+ case 'Contains':
|
|
|
+ transformedValue = `%${val}%`;
|
|
|
+ break;
|
|
|
+ case 'Matches':
|
|
|
+ default:
|
|
|
+ transformedValue = val;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return transformedValue;
|
|
|
+ }
|
|
|
+};
|
|
|
+const dropdownModifiedInput = {
|
|
|
+ name: 'dropdownModifiedInput',
|
|
|
+ type: 'dropdownModifiedInput',
|
|
|
+ value: 'lovely',
|
|
|
+ modifiers,
|
|
|
+ transform: transformerFunctions
|
|
|
+};
|
|
|
+
|
|
|
+const checkbuttonGroup = {
|
|
|
+ name: 'checkbuttonGroup',
|
|
|
+ type: 'CheckbuttonGroup',
|
|
|
+ firstEnablesRest: true,
|
|
|
+ meta: [{name: 'iMaskTheOthers'}, {name: 'groupMemberTwo'}, {name: 'groupMemberThree'}]
|
|
|
+};
|
|
|
+
|
|
|
+const checkbuttonGroup2 = {
|
|
|
+ name: 'waggaWahWah',
|
|
|
+ type: 'CheckbuttonGroup',
|
|
|
+ firstEnablesRest: true,
|
|
|
+ meta: [{name: 'One'}, {name: 'Two'}, {name: 'Three'}]
|
|
|
+};
|
|
|
+
|
|
|
+// ---------------------------------------------------------------------------------------------------------------------
|
|
|
+// Kendo
|
|
|
+
|
|
|
+const timepicker = {
|
|
|
+ name: 'timepicker',
|
|
|
+ type: 'timepicker'
|
|
|
+};
|
|
|
+
|
|
|
+const datepicker = {
|
|
|
+ name: 'datepicker',
|
|
|
+ type: 'datepicker'
|
|
|
+};
|
|
|
+
|
|
|
+// ---------------------------------------------------------------------------------------------------------------------
|
|
|
+// Container
|
|
|
+
|
|
|
+const container = {
|
|
|
+ name: 'container',
|
|
|
+ type: 'container',
|
|
|
+ meta: {
|
|
|
+ basicTextField,
|
|
|
+ checkbuttonGroup2,
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+// ---------------------------------------------------------------------------------------------------------------------
|
|
|
+
|
|
|
+const metadata = {
|
|
|
+ basicTextField,
|
|
|
+ styledTextField,
|
|
|
+ textareaField,
|
|
|
+ passwordField,
|
|
|
+ selectField,
|
|
|
+ radioField,
|
|
|
+ disabledTextField,
|
|
|
+ radioFieldHorizontal,
|
|
|
+ checkbutton,
|
|
|
+ dropdownModifiedInput,
|
|
|
+ checkbuttonGroup,
|
|
|
+ timepicker,
|
|
|
+ datepicker,
|
|
|
+ container
|
|
|
+};
|
|
|
+
|
|
|
+export const formMetaDataObj = buildModeledMeta(metadata);
|
|
|
+
|
|
|
+console.log(formMetaDataObj);
|