Keystone Js Пользовательские поля плохо документированы и не легко доступны. фактически вся концепция написания целого настраиваемого поля может быть излишней.
вот пример, который один из основных членов команды скопировал из тестового проекта. - https://github.com/MadeByMike/keystone-custom-field/blob/7caf0139c189eadda1884a86073c6945bdd6ff05/index.js#L15
это то, что вам нужно сделать: 1. вам нужно создать папку для поля 2. вы можете скопировать реализацию текстового поля, чтобы начать с 3. там index. js файл должен экспортировать специфицированный c объект (экспорт по умолчанию), подобный этому (я добавил несколько комментариев для каждой строки)
{
type: 'Stars', // name of the implementation
implementation: Stars, // implementation itself
views: { // all views are required you can copy the implementation from Text field)
Controller: Integer.views.Controller, // it is using controller from Integer field type
Field: require.resolve('./views/Field'), // field which goes into edit page or create dialog
Filter: Integer.views.Filter, // this adds filters in the list page
Cell: require.resolve('./views/Cell'), // view for list page where you usually see the text, for Relationship it is rendered as link.
},
adapters: {
mongoose: MongoIntegerInterface, // mongoose adapter specific inplementation
knex: KnexIntegerInterface, // knex adapter specific implementation,.
},
}
создать представления для каждого типа (Поле, Фильтр, Ячейка и т. Д. c.) импортировать поле (импорт по умолчанию) в определении схемы и использовать его как обычное поле. любая пользовательская опция передается пользовательской реализации.