Генератор формы по json-описанию.
Содержит 2 основных компонента:
- многострочный текстовый редактор json-объектов с кнопкой формирования модальной формы;
- модальная форма, формируемая на основе json-объекта, с кнопкой, генерирующей (также на основе json-объекта) и отображающая на экране массив объектов {"code":value}.
Vue 3 (Composition API) + TypeScript + SASS (SCSS)
npm install
npm run serve
npm run build
npm run lint
[
	{
		"type": "container"|"input"|"datepicker"|"list",
		"code": уникальный ключ компонента в объекте для возможной последующей обработки,
		"parent": визуальный контейнер, на котором размещен компонент,
		"listdata":[{"key":"value"}],
		"value": значение, вводимое в компонент, должно сохраняться реактивно
	}
]
где:
- "type" - тип компонента на форме:
- container - визуальный контейнер, на котором может быть размещен другой компонент (должен быть изображен в виде рамки серого цвета)
- input - поле ввода строчных данных
- datepicker - компонент для ввода данных типа "дата"
- list - компонент списка выбора значений
 
- "parent" - ссылка на некий контейнер. Должна поддерживаться неограниченная вложенность компонентов в контейнеры. Допускается размещение на визуальном контейнере других контейнеров. В одном контейнере могут быть одновременно размещены другие контейнеры и компоненты ввода данных.
- "listdata" - данные для наполнения компонента типа list.
[
  {
    "type": "container",
    "code": "k1",
    "parent": null
  },
  {
    "type": "input",
    "code": "c1",
    "parent": "k1",
    "value": null
  },
  {
    "type": "datepicker",
    "code": "c2",
    "parent": "k1",
    "value": "2020-01-01"
  },
  {
    "type": "container",
    "code": "k2",
    "parent": "k1"
  },
  {
    "type": "list",
    "code": "с3",
    "parent": "k2",
    "listdata": [
      {
        "key": 1,
        "value": "мужской"
      },
      {
        "key": 2,
        "value": "женский"
      }
    ],
    "value": 1
  },
  {
    "type": "input",
    "code": "c4",
    "parent": "k2",
    "value": "тест"
  }
]
[
  {
    "type": "container",
    "code": "k1",
    "parent": null
  },
  {
    "type": "container",
    "code": "k3",
    "parent": "k1"
  },
  {
    "type": "container",
    "code": "k4",
    "parent": "k3"
  },
  {
    "type": "list",
    "code": "list1",
    "parent": "k4",
    "listdata": [
      {
        "key": 1,
        "value": "мужской"
      },
      {
        "key": 2,
        "value": "женский"
      }
    ],
    "value": 1
  },
  {
    "type": "datepicker",
    "code": "datepicker1",
    "parent": "k4",
    "value": "2020-01-01"
  },
  {
    "type": "input",
    "code": "in1",
    "parent": "k3",
    "value": null
  },
  {
    "type": "input",
    "code": "in2",
    "parent": "k3",
    "value": null
  },
  {
    "type": "input",
    "code": "c1",
    "parent": "k1",
    "value": null
  },
  {
    "type": "datepicker",
    "code": "c2",
    "parent": "k1",
    "value": "2020-01-01"
  },
  {
    "type": "container",
    "code": "k2",
    "parent": "k1"
  },
  {
    "type": "list",
    "code": "c3",
    "parent": "k2",
    "listdata": [
      {
        "key": 1,
        "value": "мужской"
      },
      {
        "key": 2,
        "value": "женский"
      }
    ],
    "value": 1
  },
  {
    "type": "input",
    "code": "c4",
    "parent": "k2",
    "value": "тест"
  }
]
Вводим в поле ввода один из примеров JSON, представленных выше.
Нажимаем кнопку "Сгенерировать форму".
Отображается модальная форма, которая содержит сгенерированную по JSON форму.
В этой форме можно изменить значения полей.
Нажимаем на X в правом верхнем углу модальной формы, тем самым закрываем форму и видим сообщение, содержащее значения полей формы.