UNPKG

@atlaskit/editor-plugin-extension

Version:

editor-plugin-extension plugin for @atlaskit/editor-core

625 lines (622 loc) 12.5 kB
import type { FieldDefinition } from '@atlaskit/editor-common/extensions'; export const nativeFields: FieldDefinition[] = [ { type: 'tab-group', label: 'Tab type', name: 'tabGroup', fields: [ { type: 'tab', label: 'Tab A', name: 'optionA', fields: [ { name: 'expandField', type: 'expand', label: 'awesome expand field', isExpanded: true, fields: [ { name: 'textFieldOne', type: 'string', label: 'Free text', }, ], }, { name: 'textFieldThree', type: 'string', label: 'Free text', }, ], }, { type: 'tab', label: 'Tab B', name: 'optionB', fields: [ { name: 'textFieldTwo', type: 'string', label: 'Free text', }, ], }, ], }, { name: 'text-field', type: 'string', label: 'Free text', isRequired: true, description: 'Add any text', defaultValue: 'I am the default text', }, { name: 'text-field-multiline', type: 'string', label: 'Free text', isRequired: true, description: 'Add any text across multiple lines', defaultValue: 'I am the default multiline text', style: 'multiline', }, { name: 'text-field-optional', type: 'string', label: 'Text', isRequired: false, description: 'Leave it empty', placeholder: 'Text goes here', }, { name: 'text-field-hidden', type: 'string', label: 'Hidden text field', defaultValue: 'this is a hidden value passed to the extension', isHidden: true, }, { name: 'number-field', type: 'number', label: 'Number', isRequired: true, placeholder: 'Number goes here', }, { name: 'boolean-field-required', type: 'boolean', label: 'Needs to be checked', description: '<b>A</b> <i>checkbox</i> that can be <code>true</code> or <strong>false</strong> <em>(by design)</em>', isRequired: true, }, { name: 'boolean-field-optional', type: 'boolean', label: 'Do you want free shipping?', description: 'True or <b>FALSE</b> (should be bolded)', }, { name: 'boolean-field-toggle', type: 'boolean', label: 'Turn on the Wi-Fi?', description: 'On or Off', style: 'toggle', defaultValue: true, }, { name: 'date-start', type: 'date', label: 'Date', description: `Nothing of <a onclick="alert('something is wrong')">interest</a>`, placeholder: 'Date goes here', }, { name: 'enum-select', type: 'enum', label: 'Select one', isRequired: true, description: 'Pick one', style: 'select', isMultiple: false, placeholder: 'Selected option goes here', items: [ { label: 'Option A', value: 'a' }, { label: 'Option B', value: 'b' }, ], }, { name: 'enum-select-icon', type: 'enum', label: 'Select with icons', description: 'Pick one', style: 'select', isMultiple: false, items: [ { label: 'Option A', value: 'a', description: 'Recommended', icon: 'https://i.picsum.photos/id/237/24/24.jpg', }, { label: 'Option B with a really really really really really really long label', value: 'b', description: 'One of the best options out there', icon: 'https://i.picsum.photos/id/240/24/24.jpg', }, ], }, { name: 'enum-select-icon-multiple', type: 'enum', label: 'Select with icons (multiple)', description: 'Pick many', defaultValue: ['a', 'b', 'long'], style: 'select', placeholder: 'Selected options go here', isMultiple: true, items: [ { label: 'Option A', value: 'a', description: 'Our most popular pick', icon: 'https://i.picsum.photos/id/237/24/24.jpg', }, { label: 'Option B', value: 'b', description: 'Many people like this one', icon: 'https://i.picsum.photos/id/240/24/24.jpg', }, { label: 'Option Long, a really long label (longer than we expected)', value: 'long', description: 'Many people like this one', icon: 'https://i.picsum.photos/id/240/24/24.jpg', }, ], }, { name: 'enum-select-multiple', type: 'enum', label: 'Select 1 or many', description: '1 required, no default', style: 'select', isRequired: true, isMultiple: true, items: [ { label: 'Option A', value: 'a' }, { label: 'Option B', value: 'b' }, { label: 'Option C', value: 'c' }, { label: 'Option D', value: 'd' }, { label: 'Option E', value: 'e' }, ], }, { name: 'enum-radio-required', type: 'enum', label: 'Select one', description: 'One is always required', style: 'radio', isRequired: true, isMultiple: false, items: [ { label: 'Option A', value: 'a' }, { label: 'Option B', value: 'b' }, { label: 'Option C', value: 'c' }, { label: 'Option D', value: 'd' }, { label: 'Option E', value: 'e' }, ], }, { name: 'enum-radio-defaulted', type: 'enum', label: 'Select one (defaulted)', description: 'One is always required, but we default it', style: 'radio', isRequired: false, defaultValue: 'a', items: [ { label: 'Option A', value: 'a' }, { label: 'Option B', value: 'b' }, { label: 'Option C', value: 'c' }, { label: 'Option D', value: 'd' }, { label: 'Option E', value: 'e' }, ], }, { name: 'enum-checkbox-multiple', type: 'enum', label: 'Select 1 or many, or none', description: 'Nothing required, no default', style: 'checkbox', isRequired: false, isMultiple: true, items: [ { label: 'Option A', value: 'a', description: 'tooltip description for a', }, { label: 'Option B', value: 'b', description: 'tooltip description for b', }, { label: 'Option C', value: 'c', description: 'tooltip description for c', }, { label: 'Option D', value: 'd', description: 'tooltip description for d', }, { label: 'Option E', value: 'e', description: 'tooltip description for e', }, ], }, { name: 'enum-checkbox-multiple-required', type: 'enum', label: 'Select 1 or many', description: 'Something required', style: 'checkbox', isRequired: true, isMultiple: true, items: [ { label: 'Option A', value: 'a', description: 'tooltip description for a', }, { label: 'Option B', value: 'b', description: 'tooltip description for b', }, { label: 'Option C', value: 'c', description: 'tooltip description for c', }, { label: 'Option D', value: 'd', description: 'tooltip description for d', }, { label: 'Option E', value: 'e', description: 'tooltip description for e', }, ], }, { name: 'unhandled', // eslint-disable-next-line @typescript-eslint/no-explicit-any type: 'foobar' as any, label: 'Unknown type', }, { name: 'fieldset-cql', type: 'fieldset', label: 'CQL', options: { isDynamic: true, transformer: { type: 'cql', }, }, fields: [ { name: 'created-at', type: 'date-range', label: 'Created at', description: `This is how we select date range in the cql component`, items: [ { label: 'Any date', value: '' }, { label: 'Last 24 hours', value: 'now(-1d)' }, { label: 'Last week', value: 'now(-1w)' }, { label: 'Last month', value: 'now(-1M)' }, { label: 'Last year', value: 'now(-1y)' }, ], }, { name: 'last-modified', type: 'date-range', label: 'Last modified', items: [ { label: 'Today', value: 'now(-1d)' }, { label: 'This week', value: 'now(-1w)' }, { label: 'This month', value: 'now(-1M)' }, { label: 'This year', value: 'now(-1y)' }, ], }, { name: 'query', type: 'string', label: 'Search term', }, { name: 'custom', type: 'custom', label: 'Custom: Select anything', isRequired: true, options: { resolver: { type: 'mock-resolver', }, }, }, { name: 'content', type: 'enum', label: 'Content Type', isRequired: false, style: 'checkbox', isMultiple: true, items: [ { label: 'Page', value: 'page', }, { label: 'Blogpost', value: 'blogpost', }, { label: 'Question', value: 'question', }, ], }, ], }, { name: 'fieldset-without-label', type: 'fieldset', label: 'Fieldset without label', options: { isDynamic: true, showTitle: false, transformer: { type: 'cql', }, }, fields: [ { name: 'inner-text', type: 'string', label: 'Search term', }, ], }, { name: 'fieldset-jira-filter', type: 'fieldset', label: 'Issues filter', options: { isDynamic: true, transformer: { type: 'cql', }, }, fields: [ { name: 'keywords', type: 'string', label: 'Keywords', }, { name: 'project', type: 'enum', label: 'Project', isRequired: false, style: 'select', items: [ { label: 'Editor platform', value: 'editor-platform', }, { label: 'Editor experiences', value: 'editor-experiences', }, ], }, { name: 'status', type: 'enum', label: 'Status', isRequired: false, style: 'select', items: [ { label: 'To do', value: 'to-do', }, { label: 'In Progress', value: 'in-progress', }, { label: 'Done', value: 'Done', }, ], }, ], }, { name: 'expand field', type: 'expand', label: 'awesome expand field', fields: [ { name: 'enum-select-expand', type: 'enum', label: 'Select one', isRequired: true, description: 'Pick one', style: 'select', isMultiple: false, placeholder: 'Selected option goes here', items: [ { label: 'Option A', value: 'a' }, { label: 'Option B', value: 'b' }, ], }, { name: 'enum-select-icon-expand', type: 'enum', label: 'Select with icons', description: 'Pick one', style: 'select', isMultiple: false, items: [ { label: 'Option A', value: 'a', description: 'Recommended', }, { label: 'Option B with a really really really really really really long label', value: 'b', description: 'One of the best options out there', }, ], }, ], }, { name: 'color-picker', label: 'Color Picker', type: 'color', description: 'Pick your color', defaultValue: '#7AB2FF', }, { name: 'color-picker-req', label: 'Color Picker Required', type: 'color', isRequired: true, description: 'Pick your color', defaultValue: '#7AB2FF', }, ]; export const customFields: FieldDefinition[] = [ { name: 'custom-required', type: 'custom', label: 'Custom: Required', description: 'Select the option', isRequired: true, options: { resolver: { type: 'mock-resolver', }, }, }, { name: 'custom-optional', type: 'custom', label: 'Custom: Optional', description: 'Select the option, maybe', options: { resolver: { type: 'mock-resolver', }, }, }, { name: 'custom-required-create', type: 'custom', label: 'Custom: Create an option', description: 'Select or create an option', isRequired: true, options: { isCreatable: true, resolver: { type: 'mock-resolver', }, }, }, { name: 'custom-create-multiple', type: 'custom', label: 'Custom: Create option(s)', description: 'Select or create option(s)', isMultiple: true, options: { isCreatable: true, resolver: { type: 'mock-resolver', }, }, }, { name: 'custom-format-create-label', type: 'custom', label: 'Custom: Customized create label', description: 'Select or create an option with a custom label', options: { isCreatable: true, formatCreateLabel: (value: string) => { return `Add "${value}" to the list`; }, resolver: { type: 'mock-resolver', }, }, }, { name: 'unsupported', type: 'custom', label: 'Custom: Missing provider', options: { resolver: { type: 'missing-type', }, }, }, { name: 'user-jdog', type: 'user', label: 'JDog User', options: { provider: { type: 'user-jdog-provider', }, }, }, { name: 'user-jdog-required', type: 'user', label: 'JDog User (Required)', isRequired: true, options: { provider: { type: 'user-jdog-provider', }, }, }, { name: 'user-jdog-multiple', type: 'user', label: 'JDog User (Multiple, Required)', isRequired: true, isMultiple: true, options: { provider: { type: 'user-jdog-provider', }, }, }, ];