@atlaskit/editor-plugin-extension 0.4.2 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +26 -0
- package/CHANGELOG.md +16 -0
- package/dist/cjs/actions.js +236 -0
- package/dist/cjs/commands.js +122 -0
- package/dist/cjs/context-panel.js +269 -0
- package/dist/cjs/extension-api.js +266 -0
- package/dist/cjs/index.js +8 -1
- package/dist/cjs/plugin-factory.js +32 -0
- package/dist/cjs/plugin-key.js +8 -0
- package/dist/cjs/plugin.js +147 -0
- package/dist/cjs/pm-plugins/keymap.js +21 -0
- package/dist/cjs/pm-plugins/macro/actions.js +186 -0
- package/dist/cjs/pm-plugins/macro/index.js +72 -0
- package/dist/cjs/pm-plugins/macro/plugin-key.js +8 -0
- package/dist/cjs/pm-plugins/macro/types.js +5 -0
- package/dist/cjs/pm-plugins/main.js +323 -0
- package/dist/cjs/pm-plugins/unique-id.js +80 -0
- package/dist/cjs/pm-plugins/utils.js +75 -0
- package/dist/cjs/reducer.js +18 -0
- package/dist/cjs/toolbar.js +242 -0
- package/dist/cjs/ui/ConfigPanel/ConfigPanel.js +475 -0
- package/dist/cjs/ui/ConfigPanel/ConfigPanelFieldsLoader.js +122 -0
- package/dist/cjs/ui/ConfigPanel/ConfigPanelLoader.js +23 -0
- package/dist/cjs/ui/ConfigPanel/ErrorMessage/ErrorImage.js +76 -0
- package/dist/cjs/ui/ConfigPanel/ErrorMessage/index.js +33 -0
- package/dist/cjs/ui/ConfigPanel/FieldMessages.js +105 -0
- package/dist/cjs/ui/ConfigPanel/Fields/Boolean.js +150 -0
- package/dist/cjs/ui/ConfigPanel/Fields/CheckboxGroup.js +101 -0
- package/dist/cjs/ui/ConfigPanel/Fields/ColorPicker.js +420 -0
- package/dist/cjs/ui/ConfigPanel/Fields/CustomSelect.js +192 -0
- package/dist/cjs/ui/ConfigPanel/Fields/Date.js +55 -0
- package/dist/cjs/ui/ConfigPanel/Fields/DateRange.js +160 -0
- package/dist/cjs/ui/ConfigPanel/Fields/Enum.js +41 -0
- package/dist/cjs/ui/ConfigPanel/Fields/Expand.js +88 -0
- package/dist/cjs/ui/ConfigPanel/Fields/Fieldset.js +270 -0
- package/dist/cjs/ui/ConfigPanel/Fields/Number.js +64 -0
- package/dist/cjs/ui/ConfigPanel/Fields/RadioGroup.js +56 -0
- package/dist/cjs/ui/ConfigPanel/Fields/Select.js +60 -0
- package/dist/cjs/ui/ConfigPanel/Fields/SelectItem.js +53 -0
- package/dist/cjs/ui/ConfigPanel/Fields/String.js +75 -0
- package/dist/cjs/ui/ConfigPanel/Fields/TabGroup.js +73 -0
- package/dist/cjs/ui/ConfigPanel/Fields/UnhandledType.js +19 -0
- package/dist/cjs/ui/ConfigPanel/Fields/UserSelect.js +268 -0
- package/dist/cjs/ui/ConfigPanel/Fields/common/RequiredIndicator.js +12 -0
- package/dist/cjs/ui/ConfigPanel/FormContent.js +231 -0
- package/dist/cjs/ui/ConfigPanel/FormErrorBoundary.js +140 -0
- package/dist/cjs/ui/ConfigPanel/Header.js +148 -0
- package/dist/cjs/ui/ConfigPanel/LoadingState.js +25 -0
- package/dist/cjs/ui/ConfigPanel/NestedForms/RemovableField.js +61 -0
- package/dist/cjs/ui/ConfigPanel/constants.js +13 -0
- package/dist/cjs/ui/ConfigPanel/index.js +9 -0
- package/dist/cjs/ui/ConfigPanel/messages.js +99 -0
- package/dist/cjs/ui/ConfigPanel/transformers.js +631 -0
- package/dist/cjs/ui/ConfigPanel/types.js +15 -0
- package/dist/cjs/ui/ConfigPanel/use-abortable-effect/index.js +56 -0
- package/dist/cjs/ui/ConfigPanel/use-state-from-promise/index.js +41 -0
- package/dist/cjs/ui/ConfigPanel/utils.js +116 -0
- package/dist/cjs/ui/SaveIndicator/SaveIndicator.js +79 -0
- package/dist/cjs/ui/SaveIndicator/messages.js +14 -0
- package/dist/cjs/ui/SaveIndicator/types.js +5 -0
- package/dist/cjs/utils.js +73 -0
- package/dist/es2019/actions.js +203 -0
- package/dist/es2019/commands.js +99 -0
- package/dist/es2019/context-panel.js +181 -0
- package/dist/es2019/extension-api.js +284 -0
- package/dist/es2019/index.js +1 -1
- package/dist/es2019/plugin-factory.js +26 -0
- package/dist/es2019/plugin-key.js +2 -0
- package/dist/es2019/plugin.js +138 -0
- package/dist/es2019/pm-plugins/keymap.js +15 -0
- package/dist/es2019/pm-plugins/macro/actions.js +152 -0
- package/dist/es2019/pm-plugins/macro/index.js +36 -0
- package/dist/es2019/pm-plugins/macro/plugin-key.js +2 -0
- package/dist/es2019/pm-plugins/macro/types.js +1 -0
- package/dist/es2019/pm-plugins/main.js +230 -0
- package/dist/es2019/pm-plugins/unique-id.js +69 -0
- package/dist/es2019/pm-plugins/utils.js +30 -0
- package/dist/es2019/reducer.js +11 -0
- package/dist/es2019/toolbar.js +236 -0
- package/dist/es2019/ui/ConfigPanel/ConfigPanel.js +415 -0
- package/dist/es2019/ui/ConfigPanel/ConfigPanelFieldsLoader.js +100 -0
- package/dist/es2019/ui/ConfigPanel/ConfigPanelLoader.js +7 -0
- package/dist/es2019/ui/ConfigPanel/ErrorMessage/ErrorImage.js +66 -0
- package/dist/es2019/ui/ConfigPanel/ErrorMessage/index.js +25 -0
- package/dist/es2019/ui/ConfigPanel/FieldMessages.js +101 -0
- package/dist/es2019/ui/ConfigPanel/Fields/Boolean.js +138 -0
- package/dist/es2019/ui/ConfigPanel/Fields/CheckboxGroup.js +96 -0
- package/dist/es2019/ui/ConfigPanel/Fields/ColorPicker.js +411 -0
- package/dist/es2019/ui/ConfigPanel/Fields/CustomSelect.js +132 -0
- package/dist/es2019/ui/ConfigPanel/Fields/Date.js +50 -0
- package/dist/es2019/ui/ConfigPanel/Fields/DateRange.js +139 -0
- package/dist/es2019/ui/ConfigPanel/Fields/Enum.js +35 -0
- package/dist/es2019/ui/ConfigPanel/Fields/Expand.js +73 -0
- package/dist/es2019/ui/ConfigPanel/Fields/Fieldset.js +227 -0
- package/dist/es2019/ui/ConfigPanel/Fields/Number.js +61 -0
- package/dist/es2019/ui/ConfigPanel/Fields/RadioGroup.js +40 -0
- package/dist/es2019/ui/ConfigPanel/Fields/Select.js +50 -0
- package/dist/es2019/ui/ConfigPanel/Fields/SelectItem.js +47 -0
- package/dist/es2019/ui/ConfigPanel/Fields/String.js +67 -0
- package/dist/es2019/ui/ConfigPanel/Fields/TabGroup.js +57 -0
- package/dist/es2019/ui/ConfigPanel/Fields/UnhandledType.js +11 -0
- package/dist/es2019/ui/ConfigPanel/Fields/UserSelect.js +194 -0
- package/dist/es2019/ui/ConfigPanel/Fields/common/RequiredIndicator.js +5 -0
- package/dist/es2019/ui/ConfigPanel/FormContent.js +225 -0
- package/dist/es2019/ui/ConfigPanel/FormErrorBoundary.js +100 -0
- package/dist/es2019/ui/ConfigPanel/Header.js +140 -0
- package/dist/es2019/ui/ConfigPanel/LoadingState.js +15 -0
- package/dist/es2019/ui/ConfigPanel/NestedForms/RemovableField.js +52 -0
- package/dist/es2019/ui/ConfigPanel/constants.js +7 -0
- package/dist/es2019/ui/ConfigPanel/index.js +2 -0
- package/dist/es2019/ui/ConfigPanel/messages.js +93 -0
- package/dist/es2019/ui/ConfigPanel/transformers.js +367 -0
- package/dist/es2019/ui/ConfigPanel/types.js +9 -0
- package/dist/es2019/ui/ConfigPanel/use-abortable-effect/index.js +46 -0
- package/dist/es2019/ui/ConfigPanel/use-state-from-promise/index.js +30 -0
- package/dist/es2019/ui/ConfigPanel/utils.js +86 -0
- package/dist/es2019/ui/SaveIndicator/SaveIndicator.js +66 -0
- package/dist/es2019/ui/SaveIndicator/messages.js +8 -0
- package/dist/es2019/ui/SaveIndicator/types.js +1 -0
- package/dist/es2019/utils.js +65 -0
- package/dist/esm/actions.js +223 -0
- package/dist/esm/commands.js +113 -0
- package/dist/esm/context-panel.js +261 -0
- package/dist/esm/extension-api.js +259 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/plugin-factory.js +25 -0
- package/dist/esm/plugin-key.js +2 -0
- package/dist/esm/plugin.js +140 -0
- package/dist/esm/pm-plugins/keymap.js +15 -0
- package/dist/esm/pm-plugins/macro/actions.js +179 -0
- package/dist/esm/pm-plugins/macro/index.js +42 -0
- package/dist/esm/pm-plugins/macro/plugin-key.js +2 -0
- package/dist/esm/pm-plugins/macro/types.js +1 -0
- package/dist/esm/pm-plugins/main.js +298 -0
- package/dist/esm/pm-plugins/unique-id.js +74 -0
- package/dist/esm/pm-plugins/utils.js +68 -0
- package/dist/esm/reducer.js +11 -0
- package/dist/esm/toolbar.js +235 -0
- package/dist/esm/ui/ConfigPanel/ConfigPanel.js +465 -0
- package/dist/esm/ui/ConfigPanel/ConfigPanelFieldsLoader.js +112 -0
- package/dist/esm/ui/ConfigPanel/ConfigPanelLoader.js +11 -0
- package/dist/esm/ui/ConfigPanel/ErrorMessage/ErrorImage.js +68 -0
- package/dist/esm/ui/ConfigPanel/ErrorMessage/index.js +26 -0
- package/dist/esm/ui/ConfigPanel/FieldMessages.js +97 -0
- package/dist/esm/ui/ConfigPanel/Fields/Boolean.js +140 -0
- package/dist/esm/ui/ConfigPanel/Fields/CheckboxGroup.js +95 -0
- package/dist/esm/ui/ConfigPanel/Fields/ColorPicker.js +414 -0
- package/dist/esm/ui/ConfigPanel/Fields/CustomSelect.js +182 -0
- package/dist/esm/ui/ConfigPanel/Fields/Date.js +48 -0
- package/dist/esm/ui/ConfigPanel/Fields/DateRange.js +154 -0
- package/dist/esm/ui/ConfigPanel/Fields/Enum.js +34 -0
- package/dist/esm/ui/ConfigPanel/Fields/Expand.js +77 -0
- package/dist/esm/ui/ConfigPanel/Fields/Fieldset.js +261 -0
- package/dist/esm/ui/ConfigPanel/Fields/Number.js +57 -0
- package/dist/esm/ui/ConfigPanel/Fields/RadioGroup.js +46 -0
- package/dist/esm/ui/ConfigPanel/Fields/Select.js +50 -0
- package/dist/esm/ui/ConfigPanel/Fields/SelectItem.js +45 -0
- package/dist/esm/ui/ConfigPanel/Fields/String.js +65 -0
- package/dist/esm/ui/ConfigPanel/Fields/TabGroup.js +62 -0
- package/dist/esm/ui/ConfigPanel/Fields/UnhandledType.js +10 -0
- package/dist/esm/ui/ConfigPanel/Fields/UserSelect.js +258 -0
- package/dist/esm/ui/ConfigPanel/Fields/common/RequiredIndicator.js +5 -0
- package/dist/esm/ui/ConfigPanel/FormContent.js +223 -0
- package/dist/esm/ui/ConfigPanel/FormErrorBoundary.js +133 -0
- package/dist/esm/ui/ConfigPanel/Header.js +140 -0
- package/dist/esm/ui/ConfigPanel/LoadingState.js +17 -0
- package/dist/esm/ui/ConfigPanel/NestedForms/RemovableField.js +53 -0
- package/dist/esm/ui/ConfigPanel/constants.js +7 -0
- package/dist/esm/ui/ConfigPanel/index.js +2 -0
- package/dist/esm/ui/ConfigPanel/messages.js +93 -0
- package/dist/esm/ui/ConfigPanel/transformers.js +624 -0
- package/dist/esm/ui/ConfigPanel/types.js +9 -0
- package/dist/esm/ui/ConfigPanel/use-abortable-effect/index.js +49 -0
- package/dist/esm/ui/ConfigPanel/use-state-from-promise/index.js +34 -0
- package/dist/esm/ui/ConfigPanel/utils.js +109 -0
- package/dist/esm/ui/SaveIndicator/SaveIndicator.js +72 -0
- package/dist/esm/ui/SaveIndicator/messages.js +8 -0
- package/dist/esm/ui/SaveIndicator/types.js +1 -0
- package/dist/esm/utils.js +67 -0
- package/dist/types/actions.d.ts +20 -0
- package/dist/types/commands.d.ts +15 -0
- package/dist/types/context-panel.d.ts +10 -0
- package/dist/types/extension-api.d.ts +12 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/types/plugin-factory.d.ts +4 -0
- package/dist/types/plugin-key.d.ts +3 -0
- package/dist/types/plugin.d.ts +2 -0
- package/dist/types/pm-plugins/keymap.d.ts +3 -0
- package/dist/types/pm-plugins/macro/actions.d.ts +9 -0
- package/dist/types/pm-plugins/macro/index.d.ts +8 -0
- package/dist/types/pm-plugins/macro/plugin-key.d.ts +3 -0
- package/dist/types/pm-plugins/macro/types.d.ts +4 -0
- package/dist/types/pm-plugins/main.d.ts +25 -0
- package/dist/types/pm-plugins/unique-id.d.ts +3 -0
- package/dist/types/pm-plugins/utils.d.ts +3 -0
- package/dist/types/reducer.d.ts +2 -0
- package/dist/types/toolbar.d.ts +44 -0
- package/dist/types/types.d.ts +27 -2
- package/dist/types/ui/ConfigPanel/ConfigPanel.d.ts +22 -0
- package/dist/types/ui/ConfigPanel/ConfigPanelFieldsLoader.d.ts +21 -0
- package/dist/types/ui/ConfigPanel/ConfigPanelLoader.d.ts +5 -0
- package/dist/types/ui/ConfigPanel/ErrorMessage/ErrorImage.d.ts +4 -0
- package/dist/types/ui/ConfigPanel/ErrorMessage/index.d.ts +10 -0
- package/dist/types/ui/ConfigPanel/FieldMessages.d.ts +12 -0
- package/dist/types/ui/ConfigPanel/Fields/Boolean.d.ts +8 -0
- package/dist/types/ui/ConfigPanel/Fields/CheckboxGroup.d.ts +8 -0
- package/dist/types/ui/ConfigPanel/Fields/ColorPicker.d.ts +20 -0
- package/dist/types/ui/ConfigPanel/Fields/CustomSelect.d.ts +24 -0
- package/dist/types/ui/ConfigPanel/Fields/Date.d.ts +20 -0
- package/dist/types/ui/ConfigPanel/Fields/DateRange.d.ts +20 -0
- package/dist/types/ui/ConfigPanel/Fields/Enum.d.ts +10 -0
- package/dist/types/ui/ConfigPanel/Fields/Expand.d.ts +16 -0
- package/dist/types/ui/ConfigPanel/Fields/Fieldset.d.ts +19 -0
- package/dist/types/ui/ConfigPanel/Fields/Number.d.ts +10 -0
- package/dist/types/ui/ConfigPanel/Fields/RadioGroup.d.ts +8 -0
- package/dist/types/ui/ConfigPanel/Fields/Select.d.ts +11 -0
- package/dist/types/ui/ConfigPanel/Fields/SelectItem.d.ts +5 -0
- package/dist/types/ui/ConfigPanel/Fields/String.d.ts +10 -0
- package/dist/types/ui/ConfigPanel/Fields/TabGroup.d.ts +14 -0
- package/dist/types/ui/ConfigPanel/Fields/UnhandledType.d.ts +6 -0
- package/dist/types/ui/ConfigPanel/Fields/UserSelect.d.ts +10 -0
- package/dist/types/ui/ConfigPanel/Fields/common/RequiredIndicator.d.ts +1 -0
- package/dist/types/ui/ConfigPanel/FormContent.d.ts +4 -0
- package/dist/types/ui/ConfigPanel/FormErrorBoundary.d.ts +16 -0
- package/dist/types/ui/ConfigPanel/Header.d.ts +23 -0
- package/dist/types/ui/ConfigPanel/LoadingState.d.ts +4 -0
- package/dist/types/ui/ConfigPanel/NestedForms/RemovableField.d.ts +19 -0
- package/dist/types/ui/ConfigPanel/constants.d.ts +2 -0
- package/dist/types/ui/ConfigPanel/index.d.ts +2 -0
- package/dist/types/ui/ConfigPanel/messages.d.ts +92 -0
- package/dist/types/ui/ConfigPanel/transformers.d.ts +9 -0
- package/dist/types/ui/ConfigPanel/types.d.ts +36 -0
- package/dist/types/ui/ConfigPanel/use-abortable-effect/index.d.ts +16 -0
- package/dist/types/ui/ConfigPanel/use-state-from-promise/index.d.ts +15 -0
- package/dist/types/ui/ConfigPanel/utils.d.ts +16 -0
- package/dist/types/ui/SaveIndicator/SaveIndicator.d.ts +4 -0
- package/dist/types/ui/SaveIndicator/messages.d.ts +7 -0
- package/dist/types/ui/SaveIndicator/types.d.ts +11 -0
- package/dist/types/utils.d.ts +15 -0
- package/dist/types-ts4.5/actions.d.ts +20 -0
- package/dist/types-ts4.5/commands.d.ts +15 -0
- package/dist/types-ts4.5/context-panel.d.ts +10 -0
- package/dist/types-ts4.5/extension-api.d.ts +12 -0
- package/dist/types-ts4.5/index.d.ts +2 -1
- package/dist/types-ts4.5/plugin-factory.d.ts +4 -0
- package/dist/types-ts4.5/plugin-key.d.ts +3 -0
- package/dist/types-ts4.5/plugin.d.ts +2 -0
- package/dist/types-ts4.5/pm-plugins/keymap.d.ts +3 -0
- package/dist/types-ts4.5/pm-plugins/macro/actions.d.ts +9 -0
- package/dist/types-ts4.5/pm-plugins/macro/index.d.ts +8 -0
- package/dist/types-ts4.5/pm-plugins/macro/plugin-key.d.ts +3 -0
- package/dist/types-ts4.5/pm-plugins/macro/types.d.ts +4 -0
- package/dist/types-ts4.5/pm-plugins/main.d.ts +25 -0
- package/dist/types-ts4.5/pm-plugins/unique-id.d.ts +3 -0
- package/dist/types-ts4.5/pm-plugins/utils.d.ts +3 -0
- package/dist/types-ts4.5/reducer.d.ts +2 -0
- package/dist/types-ts4.5/toolbar.d.ts +44 -0
- package/dist/types-ts4.5/types.d.ts +27 -2
- package/dist/types-ts4.5/ui/ConfigPanel/ConfigPanel.d.ts +22 -0
- package/dist/types-ts4.5/ui/ConfigPanel/ConfigPanelFieldsLoader.d.ts +21 -0
- package/dist/types-ts4.5/ui/ConfigPanel/ConfigPanelLoader.d.ts +5 -0
- package/dist/types-ts4.5/ui/ConfigPanel/ErrorMessage/ErrorImage.d.ts +4 -0
- package/dist/types-ts4.5/ui/ConfigPanel/ErrorMessage/index.d.ts +10 -0
- package/dist/types-ts4.5/ui/ConfigPanel/FieldMessages.d.ts +12 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/Boolean.d.ts +8 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/CheckboxGroup.d.ts +8 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/ColorPicker.d.ts +20 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/CustomSelect.d.ts +24 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/Date.d.ts +20 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/DateRange.d.ts +20 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/Enum.d.ts +10 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/Expand.d.ts +16 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/Fieldset.d.ts +19 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/Number.d.ts +10 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/RadioGroup.d.ts +8 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/Select.d.ts +11 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/SelectItem.d.ts +5 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/String.d.ts +10 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/TabGroup.d.ts +14 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/UnhandledType.d.ts +6 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/UserSelect.d.ts +10 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Fields/common/RequiredIndicator.d.ts +1 -0
- package/dist/types-ts4.5/ui/ConfigPanel/FormContent.d.ts +4 -0
- package/dist/types-ts4.5/ui/ConfigPanel/FormErrorBoundary.d.ts +16 -0
- package/dist/types-ts4.5/ui/ConfigPanel/Header.d.ts +23 -0
- package/dist/types-ts4.5/ui/ConfigPanel/LoadingState.d.ts +4 -0
- package/dist/types-ts4.5/ui/ConfigPanel/NestedForms/RemovableField.d.ts +19 -0
- package/dist/types-ts4.5/ui/ConfigPanel/constants.d.ts +2 -0
- package/dist/types-ts4.5/ui/ConfigPanel/index.d.ts +2 -0
- package/dist/types-ts4.5/ui/ConfigPanel/messages.d.ts +92 -0
- package/dist/types-ts4.5/ui/ConfigPanel/transformers.d.ts +9 -0
- package/dist/types-ts4.5/ui/ConfigPanel/types.d.ts +39 -0
- package/dist/types-ts4.5/ui/ConfigPanel/use-abortable-effect/index.d.ts +16 -0
- package/dist/types-ts4.5/ui/ConfigPanel/use-state-from-promise/index.d.ts +18 -0
- package/dist/types-ts4.5/ui/ConfigPanel/utils.d.ts +16 -0
- package/dist/types-ts4.5/ui/SaveIndicator/SaveIndicator.d.ts +4 -0
- package/dist/types-ts4.5/ui/SaveIndicator/messages.d.ts +7 -0
- package/dist/types-ts4.5/ui/SaveIndicator/types.d.ts +11 -0
- package/dist/types-ts4.5/utils.d.ts +15 -0
- package/example-utils/config-panel/ConfigPanelWithExtensionPicker.tsx +217 -0
- package/example-utils/config-panel/ConfigPanelWithProviders.tsx +51 -0
- package/example-utils/config-panel/ExtensionNodePicker.tsx +141 -0
- package/example-utils/config-panel/FieldTypePicker.tsx +63 -0
- package/example-utils/config-panel/example-manifest-all-fields.ts +86 -0
- package/example-utils/config-panel/example-manifest-individual-fields.ts +85 -0
- package/example-utils/config-panel/fields.ts +611 -0
- package/package.json +49 -7
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
|
+
import ConfigPanel from './ConfigPanel';
|
|
3
|
+
import { useStateFromPromise } from './use-state-from-promise';
|
|
4
|
+
const getFieldsDefinitionFn = (extensionManifest, nodeKey) => {
|
|
5
|
+
if (extensionManifest && extensionManifest.modules.nodes && extensionManifest.modules.nodes[nodeKey] && extensionManifest.modules.nodes[nodeKey].getFieldsDefinition) {
|
|
6
|
+
return extensionManifest.modules.nodes[nodeKey].getFieldsDefinition;
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
// having the default value in the props instead of a reference will cause excessive rerenders
|
|
11
|
+
const defaultEmptyObject = {};
|
|
12
|
+
const FieldDefinitionsPromiseResolver = props => {
|
|
13
|
+
const {
|
|
14
|
+
extensionManifest,
|
|
15
|
+
nodeKey,
|
|
16
|
+
extensionParameters,
|
|
17
|
+
setErrorMessage
|
|
18
|
+
} = props;
|
|
19
|
+
const [fields, setFields] = useState(undefined);
|
|
20
|
+
|
|
21
|
+
// Resolve the promise
|
|
22
|
+
// useStateFromPromise() has an issue which isn't compatible with
|
|
23
|
+
// DynamicFieldDefinitions when it returns a function as setState()
|
|
24
|
+
// will immediately run the function returned and pass it the currentState.
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
if (!extensionManifest) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const promiseFn = getFieldsDefinitionFn(extensionManifest, nodeKey);
|
|
30
|
+
if (typeof promiseFn !== 'function') {
|
|
31
|
+
setFields(undefined);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
promiseFn(extensionParameters).catch(err => {
|
|
35
|
+
if (err && typeof err.message === 'string') {
|
|
36
|
+
setErrorMessage(err.message);
|
|
37
|
+
}
|
|
38
|
+
setFields(undefined);
|
|
39
|
+
}).then(value => {
|
|
40
|
+
if (Array.isArray(value)) {
|
|
41
|
+
// value: FieldDefinition[]
|
|
42
|
+
setFields(value);
|
|
43
|
+
} else if (typeof value === 'function') {
|
|
44
|
+
try {
|
|
45
|
+
// value: DynamicFieldDefinitions
|
|
46
|
+
const dynamicFields = value(extensionParameters);
|
|
47
|
+
setFields(dynamicFields);
|
|
48
|
+
} catch (err) {
|
|
49
|
+
if (err instanceof Error) {
|
|
50
|
+
setErrorMessage(err.message);
|
|
51
|
+
}
|
|
52
|
+
setFields(undefined);
|
|
53
|
+
}
|
|
54
|
+
} else {
|
|
55
|
+
// value: undefined
|
|
56
|
+
setFields(undefined);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}, [extensionManifest, nodeKey, extensionParameters, setErrorMessage]);
|
|
60
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, props.children(fields));
|
|
61
|
+
};
|
|
62
|
+
export default function FieldsLoader({
|
|
63
|
+
extensionType,
|
|
64
|
+
extensionKey,
|
|
65
|
+
nodeKey,
|
|
66
|
+
extensionProvider,
|
|
67
|
+
extensionParameters = defaultEmptyObject,
|
|
68
|
+
parameters = defaultEmptyObject,
|
|
69
|
+
autoSave,
|
|
70
|
+
autoSaveTrigger,
|
|
71
|
+
autoSaveReject,
|
|
72
|
+
closeOnEsc,
|
|
73
|
+
showHeader,
|
|
74
|
+
featureFlags,
|
|
75
|
+
onChange,
|
|
76
|
+
onCancel
|
|
77
|
+
}) {
|
|
78
|
+
const [extensionManifest] = useStateFromPromise(() => extensionProvider.getExtension(extensionType, extensionKey), [extensionProvider, extensionType, extensionKey]);
|
|
79
|
+
const [errorMessage, setErrorMessage] = useState(null);
|
|
80
|
+
return /*#__PURE__*/React.createElement(FieldDefinitionsPromiseResolver, {
|
|
81
|
+
setErrorMessage: setErrorMessage,
|
|
82
|
+
extensionManifest: extensionManifest,
|
|
83
|
+
nodeKey: nodeKey,
|
|
84
|
+
extensionParameters: extensionParameters
|
|
85
|
+
}, fields => /*#__PURE__*/React.createElement(ConfigPanel, {
|
|
86
|
+
extensionManifest: extensionManifest,
|
|
87
|
+
isLoading: !extensionManifest || errorMessage === null && !fields,
|
|
88
|
+
fields: fields,
|
|
89
|
+
parameters: parameters,
|
|
90
|
+
autoSave: autoSave,
|
|
91
|
+
autoSaveTrigger: autoSaveTrigger,
|
|
92
|
+
autoSaveReject: autoSaveReject,
|
|
93
|
+
closeOnEsc: closeOnEsc,
|
|
94
|
+
showHeader: showHeader,
|
|
95
|
+
onChange: onChange,
|
|
96
|
+
onCancel: onCancel,
|
|
97
|
+
errorMessage: errorMessage,
|
|
98
|
+
featureFlags: featureFlags
|
|
99
|
+
}));
|
|
100
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import Loadable from 'react-loadable';
|
|
2
|
+
import LoadingState from './LoadingState';
|
|
3
|
+
export default Loadable({
|
|
4
|
+
loader: () => import( /* webpackChunkName: "@atlaskit-internal_editor-core-config-panel" */
|
|
5
|
+
'./ConfigPanelFieldsLoader').then(module => module.default),
|
|
6
|
+
loading: LoadingState
|
|
7
|
+
});
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/* eslint-disable @atlaskit/design-system/ensure-design-token-usage */
|
|
2
|
+
// Quality Ticket: https://product-fabric.atlassian.net/browse/DSP-4249
|
|
3
|
+
/** @jsx jsx */
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { css, jsx } from '@emotion/react';
|
|
6
|
+
const imageContainerStyles = css({
|
|
7
|
+
margin: `0 auto ${"var(--ds-space-300, 24px)"}`,
|
|
8
|
+
height: '80px'
|
|
9
|
+
});
|
|
10
|
+
const ErrorImage = () => jsx("div", {
|
|
11
|
+
css: imageContainerStyles
|
|
12
|
+
}, jsx("svg", {
|
|
13
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
14
|
+
viewBox: "0 0 163.28 218",
|
|
15
|
+
height: "80"
|
|
16
|
+
}, jsx("defs", null, jsx("linearGradient", {
|
|
17
|
+
id: "linear-gradient",
|
|
18
|
+
x1: "133.86",
|
|
19
|
+
x2: "-2.79",
|
|
20
|
+
y1: "136.43",
|
|
21
|
+
y2: "200.15",
|
|
22
|
+
gradientUnits: "userSpaceOnUse"
|
|
23
|
+
}, jsx("stop", {
|
|
24
|
+
offset: "0",
|
|
25
|
+
stopColor: "#ffd740"
|
|
26
|
+
}), jsx("stop", {
|
|
27
|
+
offset: "1",
|
|
28
|
+
stopColor: "#ffab00"
|
|
29
|
+
})), jsx("clipPath", {
|
|
30
|
+
id: "clip-path"
|
|
31
|
+
}, jsx("path", {
|
|
32
|
+
id: "_Polygon_",
|
|
33
|
+
d: "M94.78 80.16l66.44 115.08A15.17 15.17 0 01148.08 218H15.2a15.17 15.17 0 01-13.14-22.76L68.5 80.16a15.17 15.17 0 0126.28 0z",
|
|
34
|
+
className: "cls-1",
|
|
35
|
+
"data-name": "<Polygon>"
|
|
36
|
+
})), jsx("style", null, `.cls-1{fill:url(#linear-gradient)}.cls-2{fill:#253858}.cls-6{fill:none;stroke-linecap:round;stroke-miterlimit:10;stroke-width:2px;stroke:#5e6c84}`)), jsx("g", {
|
|
37
|
+
id: "Layer_2",
|
|
38
|
+
"data-name": "Layer 2"
|
|
39
|
+
}, jsx("g", {
|
|
40
|
+
id: "Software"
|
|
41
|
+
}, jsx("path", {
|
|
42
|
+
id: "_Polygon_2",
|
|
43
|
+
d: "M94.78 80.16l66.44 115.08A15.17 15.17 0 01148.08 218H15.2a15.17 15.17 0 01-13.14-22.76L68.5 80.16a15.17 15.17 0 0126.28 0z",
|
|
44
|
+
className: "cls-1",
|
|
45
|
+
"data-name": "<Polygon>"
|
|
46
|
+
}), jsx("path", {
|
|
47
|
+
d: "M87.22 163.71l2.88-44.35a9.18 9.18 0 00-9.16-9.78 9.18 9.18 0 00-9.16 9.78l2.88 44.35a6.3 6.3 0 006.28 5.89 6.3 6.3 0 006.28-5.89zM71.38 187.25a9.53 9.53 0 0010.39 9.58 9.68 9.68 0 00-.9-19.32 9.64 9.64 0 00-9.49 9.74z",
|
|
48
|
+
className: "cls-2"
|
|
49
|
+
}), jsx("path", {
|
|
50
|
+
fill: "#ffc400",
|
|
51
|
+
d: "M91.7 27.17L84.29.45A.61.61 0 0083.1.5l-4.66 25.1-5.8-1.08a.61.61 0 00-.7.76L79.35 52a.61.61 0 001.19 0l4.66-25.1 5.8 1.03a.61.61 0 00.7-.76z"
|
|
52
|
+
}), jsx("path", {
|
|
53
|
+
fill: "#ffab00",
|
|
54
|
+
d: "M65.12 41.81l-10.88-8.55a.27.27 0 00-.41.33L59.36 45l-2.66 1.31a.27.27 0 000 .45l10.87 8.55a.27.27 0 00.41-.33l-5.57-11.43 2.66-1.29a.27.27 0 00.05-.45z"
|
|
55
|
+
}), jsx("path", {
|
|
56
|
+
fill: "none",
|
|
57
|
+
stroke: "#344563",
|
|
58
|
+
strokeLinecap: "round",
|
|
59
|
+
strokeMiterlimit: "10",
|
|
60
|
+
strokeWidth: "2",
|
|
61
|
+
d: "M115.15 36.6c-1.17 1.59-11-5.6-12.16-4s8.66 8.79 7.5 10.39-11-5.6-12.17-4 8.66 8.79 7.49 10.39-11-5.6-12.17-4 8.66 8.79 7.49 10.39"
|
|
62
|
+
}), jsx("path", {
|
|
63
|
+
d: "M119.92 64.19c-1.46 1.33-7.05-4.78-8.51-3.44s4.13 7.45 2.67 8.78-7.05-4.78-8.51-3.44c-.68.62.16 2.27 1.11 4M44.8 64c1.82.77 5-6.87 6.86-6.1s-1.39 8.4.43 9.17 5-6.87 6.86-6.1c.85.36.61 2.19.29 4.13",
|
|
64
|
+
className: "cls-6"
|
|
65
|
+
})))));
|
|
66
|
+
export default ErrorImage;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { defineMessages, injectIntl } from 'react-intl-next';
|
|
3
|
+
import EmptyState from '@atlaskit/empty-state';
|
|
4
|
+
import ErrorImage from './ErrorImage';
|
|
5
|
+
const messages = defineMessages({
|
|
6
|
+
configFailedToLoad: {
|
|
7
|
+
id: 'fabric.editor.configFailedToLoad',
|
|
8
|
+
defaultMessage: 'Failed to load',
|
|
9
|
+
description: 'Displayed when the config panel fails to load fields'
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
const ConfigPanelErrorMessage = ({
|
|
13
|
+
errorMessage,
|
|
14
|
+
intl
|
|
15
|
+
}) => {
|
|
16
|
+
return /*#__PURE__*/React.createElement(EmptyState, {
|
|
17
|
+
header: intl.formatMessage(messages.configFailedToLoad),
|
|
18
|
+
description: errorMessage,
|
|
19
|
+
renderImage: () => /*#__PURE__*/React.createElement(ErrorImage, null),
|
|
20
|
+
size: "narrow",
|
|
21
|
+
imageHeight: 80,
|
|
22
|
+
testId: "config-panel-error-message"
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
export default injectIntl(ConfigPanelErrorMessage);
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import React, { Fragment, useMemo } from 'react';
|
|
2
|
+
import { injectIntl } from 'react-intl-next';
|
|
3
|
+
import { ErrorMessage, HelperMessage } from '@atlaskit/form';
|
|
4
|
+
import { messages } from './messages';
|
|
5
|
+
import { FieldTypeError, ValidationError } from './types';
|
|
6
|
+
|
|
7
|
+
// sidestep XSS issues
|
|
8
|
+
function makeMarkup(fragment, key) {
|
|
9
|
+
const {
|
|
10
|
+
nodeName,
|
|
11
|
+
nodeType,
|
|
12
|
+
childNodes,
|
|
13
|
+
textContent
|
|
14
|
+
} = fragment;
|
|
15
|
+
if (nodeType === Node.TEXT_NODE) {
|
|
16
|
+
return /*#__PURE__*/React.createElement(Fragment, {
|
|
17
|
+
key: key
|
|
18
|
+
}, textContent);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// NOTE: NodeList doesn't have .map
|
|
22
|
+
const children = [];
|
|
23
|
+
childNodes.forEach((childNode, i) => {
|
|
24
|
+
const markup = makeMarkup(childNode, String(i));
|
|
25
|
+
if (markup) {
|
|
26
|
+
children.push(markup);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
switch (nodeName) {
|
|
30
|
+
case 'B':
|
|
31
|
+
return /*#__PURE__*/React.createElement("b", {
|
|
32
|
+
key: key
|
|
33
|
+
}, children);
|
|
34
|
+
case 'I':
|
|
35
|
+
return /*#__PURE__*/React.createElement("i", {
|
|
36
|
+
key: key
|
|
37
|
+
}, children);
|
|
38
|
+
case 'STRONG':
|
|
39
|
+
return /*#__PURE__*/React.createElement("strong", {
|
|
40
|
+
key: key
|
|
41
|
+
}, children);
|
|
42
|
+
case 'EM':
|
|
43
|
+
return /*#__PURE__*/React.createElement("em", {
|
|
44
|
+
key: key
|
|
45
|
+
}, children);
|
|
46
|
+
case 'CODE':
|
|
47
|
+
return /*#__PURE__*/React.createElement("code", {
|
|
48
|
+
key: key
|
|
49
|
+
}, children);
|
|
50
|
+
}
|
|
51
|
+
if (children.length === 1) {
|
|
52
|
+
return /*#__PURE__*/React.createElement(Fragment, {
|
|
53
|
+
key: key
|
|
54
|
+
}, children[0]);
|
|
55
|
+
}
|
|
56
|
+
if (children.length) {
|
|
57
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
58
|
+
key: key
|
|
59
|
+
}, children);
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
function Description({
|
|
64
|
+
description
|
|
65
|
+
}) {
|
|
66
|
+
const markup = useMemo(() => {
|
|
67
|
+
const dom = new DOMParser().parseFromString(description, 'text/html');
|
|
68
|
+
return makeMarkup(dom);
|
|
69
|
+
}, [description]);
|
|
70
|
+
return /*#__PURE__*/React.createElement(HelperMessage, {
|
|
71
|
+
testId: "field-message-description"
|
|
72
|
+
}, markup);
|
|
73
|
+
}
|
|
74
|
+
const FieldMessages = function ({
|
|
75
|
+
error,
|
|
76
|
+
description,
|
|
77
|
+
intl
|
|
78
|
+
}) {
|
|
79
|
+
if (!error && description) {
|
|
80
|
+
return /*#__PURE__*/React.createElement(Description, {
|
|
81
|
+
description: description
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
switch (error) {
|
|
85
|
+
case ValidationError.Required:
|
|
86
|
+
return /*#__PURE__*/React.createElement(ErrorMessage, {
|
|
87
|
+
testId: "config-panel-error-message"
|
|
88
|
+
}, intl.formatMessage(messages.required));
|
|
89
|
+
case ValidationError.Invalid:
|
|
90
|
+
return /*#__PURE__*/React.createElement(ErrorMessage, {
|
|
91
|
+
testId: "config-panel-error-message"
|
|
92
|
+
}, intl.formatMessage(messages.invalid));
|
|
93
|
+
case FieldTypeError.isMultipleAndRadio:
|
|
94
|
+
return /*#__PURE__*/React.createElement(ErrorMessage, {
|
|
95
|
+
testId: "config-panel-error-message"
|
|
96
|
+
}, intl.formatMessage(messages.isMultipleAndRadio));
|
|
97
|
+
default:
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
export default injectIntl(FieldMessages);
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
/** @jsx jsx */
|
|
3
|
+
import React, { Fragment } from 'react';
|
|
4
|
+
import { css, jsx } from '@emotion/react';
|
|
5
|
+
import { Checkbox as AKCheckbox } from '@atlaskit/checkbox';
|
|
6
|
+
import { Field } from '@atlaskit/form';
|
|
7
|
+
import AKToggle from '@atlaskit/toggle';
|
|
8
|
+
import FieldMessages from '../FieldMessages';
|
|
9
|
+
import { ValidationError } from '../types';
|
|
10
|
+
import { requiredIndicator } from './common/RequiredIndicator';
|
|
11
|
+
const toggleFieldWrapperStyles = css({
|
|
12
|
+
display: 'flex'
|
|
13
|
+
});
|
|
14
|
+
const toggleLabelStyles = css({
|
|
15
|
+
display: 'flex',
|
|
16
|
+
padding: '3px 3px 3px 0px',
|
|
17
|
+
flexGrow: 1
|
|
18
|
+
});
|
|
19
|
+
function validate(value, isRequired) {
|
|
20
|
+
if (isRequired && !value) {
|
|
21
|
+
return ValidationError.Required;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function parseBoolean(value) {
|
|
25
|
+
if (typeof value === 'boolean') {
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
return value === 'true';
|
|
29
|
+
}
|
|
30
|
+
function handleOnChange(onChange, onFieldChange, event) {
|
|
31
|
+
var _event$target;
|
|
32
|
+
onChange((event === null || event === void 0 ? void 0 : (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.checked) || false);
|
|
33
|
+
// Note: prior to bumping typescript to version 2.4.2 onFieldChange
|
|
34
|
+
// was being called with a global variable (which had a value of '')
|
|
35
|
+
// While this was not intended, the code still worked as expected.
|
|
36
|
+
// In typescript 2.4.2 accessing the global variable name has been
|
|
37
|
+
// deprecated, so this has been replaced with the value it was
|
|
38
|
+
// previously passing.
|
|
39
|
+
onFieldChange('', true);
|
|
40
|
+
}
|
|
41
|
+
function Checkbox({
|
|
42
|
+
name,
|
|
43
|
+
field,
|
|
44
|
+
onFieldChange
|
|
45
|
+
}) {
|
|
46
|
+
const {
|
|
47
|
+
label,
|
|
48
|
+
description,
|
|
49
|
+
isRequired = false,
|
|
50
|
+
defaultValue = false
|
|
51
|
+
} = field;
|
|
52
|
+
return jsx(Field, {
|
|
53
|
+
name: name,
|
|
54
|
+
isRequired: isRequired,
|
|
55
|
+
validate: value => validate(value, isRequired),
|
|
56
|
+
defaultValue: defaultValue
|
|
57
|
+
}, ({
|
|
58
|
+
fieldProps,
|
|
59
|
+
error
|
|
60
|
+
}) => {
|
|
61
|
+
const {
|
|
62
|
+
value: isChecked,
|
|
63
|
+
...restFieldProps
|
|
64
|
+
} = fieldProps;
|
|
65
|
+
return jsx(Fragment, null, jsx(AKCheckbox, _extends({}, restFieldProps, {
|
|
66
|
+
label: label,
|
|
67
|
+
onChange: event => handleOnChange(fieldProps.onChange, onFieldChange, event),
|
|
68
|
+
isChecked: parseBoolean(isChecked)
|
|
69
|
+
})), jsx(FieldMessages, {
|
|
70
|
+
error: error,
|
|
71
|
+
description: description
|
|
72
|
+
}));
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
function Toggle({
|
|
76
|
+
name,
|
|
77
|
+
field,
|
|
78
|
+
onFieldChange
|
|
79
|
+
}) {
|
|
80
|
+
const {
|
|
81
|
+
label,
|
|
82
|
+
description,
|
|
83
|
+
isRequired = false,
|
|
84
|
+
defaultValue = false
|
|
85
|
+
} = field;
|
|
86
|
+
return jsx(Field, {
|
|
87
|
+
name: name,
|
|
88
|
+
isRequired: isRequired,
|
|
89
|
+
validate: value => validate(value, isRequired),
|
|
90
|
+
defaultValue: defaultValue,
|
|
91
|
+
testId: `config-panel-toggle-${name}`
|
|
92
|
+
}, ({
|
|
93
|
+
fieldProps,
|
|
94
|
+
error
|
|
95
|
+
}) => {
|
|
96
|
+
const {
|
|
97
|
+
id,
|
|
98
|
+
value: isChecked,
|
|
99
|
+
...restFieldProps
|
|
100
|
+
} = fieldProps;
|
|
101
|
+
return jsx(Fragment, null, jsx("div", {
|
|
102
|
+
css: toggleFieldWrapperStyles
|
|
103
|
+
}, jsx("label", {
|
|
104
|
+
css: toggleLabelStyles,
|
|
105
|
+
id: id,
|
|
106
|
+
htmlFor: id
|
|
107
|
+
}, label, isRequired ?
|
|
108
|
+
// eslint-disable-next-line @atlaskit/design-system/consistent-css-prop-usage
|
|
109
|
+
jsx("span", {
|
|
110
|
+
css: requiredIndicator,
|
|
111
|
+
"aria-hidden": "true"
|
|
112
|
+
}, "*") : null), jsx(AKToggle, _extends({}, restFieldProps, {
|
|
113
|
+
onChange: event => handleOnChange(fieldProps.onChange, onFieldChange, event),
|
|
114
|
+
isChecked: parseBoolean(isChecked)
|
|
115
|
+
}))), jsx(FieldMessages, {
|
|
116
|
+
error: error,
|
|
117
|
+
description: description
|
|
118
|
+
}));
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
export default function Boolean({
|
|
122
|
+
name,
|
|
123
|
+
field,
|
|
124
|
+
onFieldChange
|
|
125
|
+
}) {
|
|
126
|
+
if (field.style === 'toggle') {
|
|
127
|
+
return jsx(Toggle, {
|
|
128
|
+
name: name,
|
|
129
|
+
field: field,
|
|
130
|
+
onFieldChange: onFieldChange
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
return jsx(Checkbox, {
|
|
134
|
+
name: name,
|
|
135
|
+
field: field,
|
|
136
|
+
onFieldChange: onFieldChange
|
|
137
|
+
});
|
|
138
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
/** @jsx jsx */
|
|
3
|
+
|
|
4
|
+
import { Fragment, useCallback } from 'react';
|
|
5
|
+
import { css, jsx } from '@emotion/react';
|
|
6
|
+
import { Checkbox as AKCheckbox } from '@atlaskit/checkbox';
|
|
7
|
+
import { Fieldset as AKFieldset, Field } from '@atlaskit/form';
|
|
8
|
+
import FieldMessages from '../FieldMessages';
|
|
9
|
+
import { ValidationError } from '../types';
|
|
10
|
+
function validate(value, isRequired) {
|
|
11
|
+
if (isRequired && !(value !== null && value !== void 0 && value.length)) {
|
|
12
|
+
return ValidationError.Required;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
const requiredIndicatorStyles = css({
|
|
16
|
+
color: "var(--ds-text-danger, #bf2600)"
|
|
17
|
+
});
|
|
18
|
+
function CheckboxGroupInner({
|
|
19
|
+
label,
|
|
20
|
+
description,
|
|
21
|
+
onFieldChange,
|
|
22
|
+
options,
|
|
23
|
+
error,
|
|
24
|
+
fieldProps
|
|
25
|
+
}) {
|
|
26
|
+
const {
|
|
27
|
+
onChange,
|
|
28
|
+
value,
|
|
29
|
+
...restFieldProps
|
|
30
|
+
} = fieldProps;
|
|
31
|
+
function _onChange(optionValue, isChecked) {
|
|
32
|
+
const active = new Set(value ? value : []);
|
|
33
|
+
if (isChecked) {
|
|
34
|
+
active.add(optionValue);
|
|
35
|
+
} else {
|
|
36
|
+
active.delete(optionValue);
|
|
37
|
+
}
|
|
38
|
+
onChange([...active]);
|
|
39
|
+
onFieldChange();
|
|
40
|
+
}
|
|
41
|
+
return jsx(Fragment, null, jsx(AKFieldset, {
|
|
42
|
+
legend: label
|
|
43
|
+
}, options.map(({
|
|
44
|
+
label: optionLabel,
|
|
45
|
+
value: optionValue
|
|
46
|
+
}, i) => {
|
|
47
|
+
const isChecked = value && value.includes(optionValue);
|
|
48
|
+
const onOptionChange = event => {
|
|
49
|
+
_onChange(optionValue, event.target.checked);
|
|
50
|
+
};
|
|
51
|
+
return jsx(AKCheckbox, _extends({
|
|
52
|
+
key: i
|
|
53
|
+
}, restFieldProps, {
|
|
54
|
+
isRequired: false,
|
|
55
|
+
label: optionLabel,
|
|
56
|
+
isChecked: isChecked,
|
|
57
|
+
onChange: onOptionChange
|
|
58
|
+
}));
|
|
59
|
+
})), jsx(FieldMessages, {
|
|
60
|
+
error: error,
|
|
61
|
+
description: description
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
export default function CheckboxGroup({
|
|
65
|
+
name,
|
|
66
|
+
field,
|
|
67
|
+
onFieldChange
|
|
68
|
+
}) {
|
|
69
|
+
const {
|
|
70
|
+
label: labelBase,
|
|
71
|
+
description,
|
|
72
|
+
defaultValue,
|
|
73
|
+
isRequired = false,
|
|
74
|
+
items: options
|
|
75
|
+
} = field;
|
|
76
|
+
const label = jsx(Fragment, null, labelBase, isRequired ? jsx("span", {
|
|
77
|
+
css: requiredIndicatorStyles,
|
|
78
|
+
"aria-hidden": "true"
|
|
79
|
+
}, ' ', "*") : null);
|
|
80
|
+
const _onFieldChange = useCallback(() => {
|
|
81
|
+
onFieldChange(name, true);
|
|
82
|
+
}, [name, onFieldChange]);
|
|
83
|
+
return jsx(Field, {
|
|
84
|
+
name: name,
|
|
85
|
+
isRequired: isRequired,
|
|
86
|
+
defaultValue: defaultValue,
|
|
87
|
+
validate: value => validate(value, isRequired)
|
|
88
|
+
}, props => {
|
|
89
|
+
return jsx(CheckboxGroupInner, _extends({
|
|
90
|
+
label: label,
|
|
91
|
+
description: description,
|
|
92
|
+
options: options,
|
|
93
|
+
onFieldChange: _onFieldChange
|
|
94
|
+
}, props));
|
|
95
|
+
});
|
|
96
|
+
}
|