@wix/patterns-cms 1.17.0 → 1.18.0
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/dist/cjs/adapter/__tests__/cmsFieldActions.spec.js +59 -27
- package/dist/cjs/adapter/__tests__/cmsFieldActions.spec.js.map +1 -1
- package/dist/cjs/adapter/__tests__/useCmsSchemaSource.spec.js +34 -2
- package/dist/cjs/adapter/__tests__/useCmsSchemaSource.spec.js.map +1 -1
- package/dist/cjs/adapter/createCmsFieldActions.js +35 -3
- package/dist/cjs/adapter/createCmsFieldActions.js.map +1 -1
- package/dist/cjs/adapter/fieldSettings/CmsFieldSettings.js +359 -0
- package/dist/cjs/adapter/fieldSettings/CmsFieldSettings.js.map +1 -0
- package/dist/cjs/adapter/fieldSettings/CmsFieldSettingsState.js +144 -0
- package/dist/cjs/adapter/fieldSettings/CmsFieldSettingsState.js.map +1 -0
- package/dist/cjs/adapter/fieldSettings/createCmsFieldSettings.js +29 -0
- package/dist/cjs/adapter/fieldSettings/createCmsFieldSettings.js.map +1 -0
- package/dist/cjs/adapter/useCmsSchemaSource.js +70 -56
- package/dist/cjs/adapter/useCmsSchemaSource.js.map +1 -1
- package/dist/esm/adapter/__tests__/cmsFieldActions.spec.js +50 -23
- package/dist/esm/adapter/__tests__/cmsFieldActions.spec.js.map +1 -1
- package/dist/esm/adapter/__tests__/useCmsSchemaSource.spec.js +24 -2
- package/dist/esm/adapter/__tests__/useCmsSchemaSource.spec.js.map +1 -1
- package/dist/esm/adapter/createCmsFieldActions.js +28 -3
- package/dist/esm/adapter/createCmsFieldActions.js.map +1 -1
- package/dist/esm/adapter/fieldSettings/CmsFieldSettings.js +45 -0
- package/dist/esm/adapter/fieldSettings/CmsFieldSettings.js.map +1 -0
- package/dist/esm/adapter/fieldSettings/CmsFieldSettingsState.js +136 -0
- package/dist/esm/adapter/fieldSettings/CmsFieldSettingsState.js.map +1 -0
- package/dist/esm/adapter/fieldSettings/createCmsFieldSettings.js +13 -0
- package/dist/esm/adapter/fieldSettings/createCmsFieldSettings.js.map +1 -0
- package/dist/esm/adapter/useCmsSchemaSource.js +71 -59
- package/dist/esm/adapter/useCmsSchemaSource.js.map +1 -1
- package/dist/types/adapter/createCmsFieldActions.d.ts.map +1 -1
- package/dist/types/adapter/fieldSettings/CmsFieldSettings.d.ts +12 -0
- package/dist/types/adapter/fieldSettings/CmsFieldSettings.d.ts.map +1 -0
- package/dist/types/adapter/fieldSettings/CmsFieldSettingsState.d.ts +53 -0
- package/dist/types/adapter/fieldSettings/CmsFieldSettingsState.d.ts.map +1 -0
- package/dist/types/adapter/fieldSettings/createCmsFieldSettings.d.ts +3 -0
- package/dist/types/adapter/fieldSettings/createCmsFieldSettings.d.ts.map +1 -0
- package/dist/types/adapter/useCmsSchemaSource.d.ts.map +1 -1
- package/package.json +9 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_data","require","_cmsFieldTypeMap","_transformCmsSchema","_getFieldKey","_pollUntilReady","COPY_TASK_POLL_INTERVAL_MS","COPY_TASK_MAX_ATTEMPTS","waitForCopyTask","taskId","pollUntilReady","task","tasks","getTask","status","_task$failures","failure","failures","Error","code","description","filter","Boolean","join","interval","maxAttempts","err","message","createCmsFieldActions","collectionId","getCollection","existingFieldKeys","_getCollection","fields","flatMap","f","key","findCmsField","fieldKey","_getCollection2","find","fieldsAfterMutation","dataCollection","transformCmsSchema","toCmsField","field","_field$validation","_field$validation2","_field$validation3","cmsType","PatternsFieldTypeToCmsFieldType","type","cmsField","displayName","required","validation","isPii","encrypted","helpText","numberRange","stringLengthRange","buildFieldPatch","fieldId","updates","_findCmsField","_updates$validation","_updates$validation2","_updates$validation3","sourceCmsType","patch","undefined","cloneFieldDefinition","source","newKey","newDisplayName","_cloned$typeMetadata","systemField","capabilities","rest","cloned","typeMetadata","multiReference","referencingFieldKey","addField","getFieldKey","collections","createDataCollectionField","addFields","collection","cmsFields","map","id","updateDataCollection","editField","patchDataCollectionField","deleteField","deleteDataCollectionField","renameField","newName","makePrimary","patchDataCollection","displayField","duplicateField","sourceField","duplicateFieldWithContent","createdTask","createTask","copyFieldDataOptions","dataCollectionId","sourceFieldKey","targetFieldKey","_id"],"sources":["../../../src/adapter/createCmsFieldActions.ts"],"sourcesContent":["import { collections, tasks } from '@wix/data';\nimport type { Field } from '@wix/patterns';\nimport type { FieldActions, Schema } from '@wix/patterns/schema';\nimport { PatternsFieldTypeToCmsFieldType } from './cmsFieldTypeMap';\nimport { transformCmsSchema } from './transformCmsSchema';\nimport { getFieldKey } from './getFieldKey';\nimport { pollUntilReady } from './pollUntilReady';\n\nconst COPY_TASK_POLL_INTERVAL_MS = 1000;\nconst COPY_TASK_MAX_ATTEMPTS = 300;\n\n/** Polls a COPY_FIELD_DATA task to completion, mapping the generic poll-timeout error. */\nconst waitForCopyTask = async (taskId: string): Promise<void> => {\n try {\n await pollUntilReady(\n async () => {\n const task = await tasks.getTask(taskId);\n if (task.status === 'FAILED') {\n const failure = task.failures?.[0];\n throw new Error(\n [failure?.code, failure?.description].filter(Boolean).join(': ') ||\n 'Copy field data task failed',\n );\n }\n return task.status === 'COMPLETED';\n },\n {\n interval: COPY_TASK_POLL_INTERVAL_MS,\n maxAttempts: COPY_TASK_MAX_ATTEMPTS,\n },\n );\n } catch (err) {\n if (err instanceof Error && err.message === 'Backup polling timed out') {\n throw new Error('Copy field data task timed out');\n }\n throw err;\n }\n};\n\n/**\n * Builds the `FieldActions` for a CMS collection over `@wix/data`. `getCollection`\n * returns the current raw collection snapshot (for existing keys + source field types).\n */\nexport function createCmsFieldActions(\n collectionId: string,\n getCollection: () => collections.DataCollection | null,\n): FieldActions {\n const existingFieldKeys = (): string[] =>\n getCollection()?.fields?.flatMap((f) => (f.key ? [f.key] : [])) ?? [];\n\n const findCmsField = (fieldKey: string): collections.Field | undefined =>\n getCollection()?.fields?.find((f) => f.key === fieldKey);\n\n // A field mutation returns the updated collection; turn it into the new fields\n // map. The SDK guarantees `dataCollection` on a successful mutation, so there is\n // no missing-collection case to handle here.\n const fieldsAfterMutation = (\n dataCollection: collections.DataCollection,\n ): Schema['fields'] => transformCmsSchema(dataCollection).fields;\n\n // Maps a source-neutral `Field` to a CMS field under the given `key`. Throws\n // for a type with no CMS mapping before any SDK call. Shared by addField (key\n // derived from the display name) and addFields (key = the caller's field.id).\n const toCmsField = (field: Field, key: string): collections.Field => {\n const cmsType = PatternsFieldTypeToCmsFieldType[field.type];\n if (!cmsType) {\n throw new Error(`Field type ${field.type} not supported yet`);\n }\n\n const cmsField: collections.Field = {\n key,\n displayName: field.displayName,\n type: cmsType,\n required: field.validation?.required ?? false,\n };\n\n if (field.isPii) {\n cmsField.encrypted = true;\n }\n if (field.helpText) {\n cmsField.description = field.helpText;\n }\n if (field.type === 'NUMBER' && field.validation?.numberRange) {\n cmsField.numberRange = field.validation.numberRange;\n }\n if (field.type === 'SHORT_TEXT' && field.validation?.stringLengthRange) {\n cmsField.stringLengthRange = field.validation.stringLengthRange;\n }\n\n return cmsField;\n };\n\n const buildFieldPatch = (\n fieldId: string,\n updates: Partial<Field>,\n ): collections.Field => {\n const sourceCmsType = findCmsField(fieldId)?.type;\n const patch: collections.Field = { key: fieldId };\n if (updates.displayName !== undefined) {\n patch.displayName = updates.displayName;\n }\n if (updates.isPii !== undefined) {\n patch.encrypted = updates.isPii;\n }\n if (updates.helpText !== undefined) {\n patch.description = updates.helpText;\n }\n if (updates.validation?.required !== undefined) {\n patch.required = updates.validation.required;\n }\n if (updates.validation?.numberRange && sourceCmsType === 'NUMBER') {\n patch.numberRange = updates.validation.numberRange;\n }\n if (updates.validation?.stringLengthRange && sourceCmsType === 'TEXT') {\n patch.stringLengthRange = updates.validation.stringLengthRange;\n }\n return patch;\n };\n\n /**\n * Clones a CMS field for duplication: drops `systemField`/`capabilities` and clears\n * `referencingFieldKey` so the duplicate gets its own backing reference field.\n */\n const cloneFieldDefinition = (\n source: collections.Field,\n newKey: string,\n newDisplayName: string,\n ): collections.Field => {\n const { systemField, capabilities, ...rest } = source;\n const cloned: collections.Field = {\n ...rest,\n key: newKey,\n displayName: newDisplayName,\n };\n if (cloned.typeMetadata?.multiReference?.referencingFieldKey) {\n cloned.typeMetadata = {\n ...cloned.typeMetadata,\n multiReference: {\n ...cloned.typeMetadata.multiReference,\n referencingFieldKey: undefined,\n },\n };\n }\n return cloned;\n };\n\n return {\n addField: async (field: Field) => {\n const cmsField = toCmsField(\n field,\n getFieldKey(existingFieldKeys(), field.displayName),\n );\n const { dataCollection } = await collections.createDataCollectionField(\n collectionId,\n { field: cmsField },\n );\n return fieldsAfterMutation(dataCollection!);\n },\n\n addFields: async (fields: Field[]) => {\n const collection = getCollection();\n if (!collection) {\n throw new Error(`Collection ${collectionId} not found`);\n }\n\n // Callers decide the keys up front (import uploads values under them), so\n // key each new field by its `id` — mapped before any SDK call so an\n // unsupported type throws without a partial write.\n const cmsFields = fields.map((field) => toCmsField(field, field.id));\n\n // One mutation for all new fields: append them to the existing\n // definition. Unlike the field mutations, `updateDataCollection` resolves\n // with the updated collection directly (not wrapped in `{ dataCollection }`).\n const dataCollection = await collections.updateDataCollection({\n ...collection,\n fields: [...(collection.fields ?? []), ...cmsFields],\n });\n return fieldsAfterMutation(dataCollection);\n },\n\n editField: async (fieldId, updates) => {\n const { dataCollection } = await collections.patchDataCollectionField(\n collectionId,\n buildFieldPatch(fieldId, updates),\n );\n return fieldsAfterMutation(dataCollection!);\n },\n\n deleteField: async (fieldId) => {\n const { dataCollection } = await collections.deleteDataCollectionField(\n collectionId,\n { fieldKey: fieldId },\n );\n return fieldsAfterMutation(dataCollection!);\n },\n\n renameField: async (fieldId, newName) => {\n await collections.patchDataCollectionField(\n collectionId,\n buildFieldPatch(fieldId, { displayName: newName }),\n );\n },\n\n makePrimary: async (fieldId) => {\n const { dataCollection } = await collections.patchDataCollection(\n collectionId,\n { displayField: fieldId },\n );\n return fieldsAfterMutation(dataCollection!);\n },\n\n duplicateField: async (fieldId) => {\n const sourceField = findCmsField(fieldId);\n if (!sourceField || !sourceField.type) {\n throw new Error(`Field ${fieldId} not found`);\n }\n const newDisplayName = `${sourceField.displayName ?? fieldId} (Copy)`;\n const newKey = getFieldKey(existingFieldKeys(), newDisplayName);\n const { dataCollection } = await collections.createDataCollectionField(\n collectionId,\n { field: cloneFieldDefinition(sourceField, newKey, newDisplayName) },\n );\n return fieldsAfterMutation(dataCollection!);\n },\n\n duplicateFieldWithContent: async (fieldId) => {\n const sourceField = findCmsField(fieldId);\n if (!sourceField || !sourceField.type) {\n throw new Error(`Field ${fieldId} not found`);\n }\n const newDisplayName = `${sourceField.displayName ?? fieldId} (Copy)`;\n const newKey = getFieldKey(existingFieldKeys(), newDisplayName);\n const { dataCollection } = await collections.createDataCollectionField(\n collectionId,\n { field: cloneFieldDefinition(sourceField, newKey, newDisplayName) },\n );\n const createdTask = await tasks.createTask({\n type: 'COPY_FIELD_DATA',\n copyFieldDataOptions: {\n dataCollectionId: collectionId,\n sourceFieldKey: fieldId,\n targetFieldKey: newKey,\n },\n });\n await waitForCopyTask(createdTask._id!);\n return fieldsAfterMutation(dataCollection!);\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_data","require","_cmsFieldTypeMap","_transformCmsSchema","_getFieldKey","_pollUntilReady","COPY_TASK_POLL_INTERVAL_MS","COPY_TASK_MAX_ATTEMPTS","waitForCopyTask","taskId","pollUntilReady","task","tasks","getTask","status","_task$failures","failure","failures","Error","code","description","filter","Boolean","join","interval","maxAttempts","err","message","applyCmsFieldSettings","cmsField","settings","helpText","undefined","required","stringLengthRange","characters","numberRange","values","createCmsFieldActions","collectionId","getCollection","existingFieldKeys","_getCollection","fields","flatMap","f","key","findCmsField","fieldKey","_getCollection2","find","fieldsAfterMutation","dataCollection","transformCmsSchema","toCmsField","field","_field$validation","_field$validation2","_field$validation3","cmsType","PatternsFieldTypeToCmsFieldType","type","displayName","validation","isPii","encrypted","buildFieldPatch","fieldId","updates","_findCmsField","_updates$validation","_updates$validation2","_updates$validation3","sourceCmsType","patch","writableFieldProps","source","systemField","capabilities","condition","writable","cloneFieldDefinition","newKey","newDisplayName","_cloned$typeMetadata","rest","cloned","typeMetadata","multiReference","referencingFieldKey","addField","getFieldKey","collections","createDataCollectionField","addFields","collection","cmsFields","map","id","updateDataCollection","editField","existingField","updateDataCollectionField","deleteField","deleteDataCollectionField","renameField","newName","patchDataCollectionField","makePrimary","patchDataCollection","displayField","duplicateField","sourceField","duplicateFieldWithContent","createdTask","createTask","copyFieldDataOptions","dataCollectionId","sourceFieldKey","targetFieldKey","_id"],"sources":["../../../src/adapter/createCmsFieldActions.ts"],"sourcesContent":["import { collections, tasks } from '@wix/data';\nimport type { Field } from '@wix/patterns';\nimport type { FieldActions, Schema } from '@wix/patterns/schema';\nimport { PatternsFieldTypeToCmsFieldType } from './cmsFieldTypeMap';\nimport { transformCmsSchema } from './transformCmsSchema';\nimport { getFieldKey } from './getFieldKey';\nimport { pollUntilReady } from './pollUntilReady';\nimport type { CmsFieldSettings } from './fieldSettings/CmsFieldSettingsState';\n\nconst COPY_TASK_POLL_INTERVAL_MS = 1000;\nconst COPY_TASK_MAX_ATTEMPTS = 300;\n\n/** Polls a COPY_FIELD_DATA task to completion, mapping the generic poll-timeout error. */\nconst waitForCopyTask = async (taskId: string): Promise<void> => {\n try {\n await pollUntilReady(\n async () => {\n const task = await tasks.getTask(taskId);\n if (task.status === 'FAILED') {\n const failure = task.failures?.[0];\n throw new Error(\n [failure?.code, failure?.description].filter(Boolean).join(': ') ||\n 'Copy field data task failed',\n );\n }\n return task.status === 'COMPLETED';\n },\n {\n interval: COPY_TASK_POLL_INTERVAL_MS,\n maxAttempts: COPY_TASK_MAX_ATTEMPTS,\n },\n );\n } catch (err) {\n if (err instanceof Error && err.message === 'Backup polling timed out') {\n throw new Error('Copy field data task timed out');\n }\n throw err;\n }\n};\n\nconst applyCmsFieldSettings = (\n cmsField: collections.Field,\n settings?: CmsFieldSettings,\n) => {\n if (!settings) {\n return;\n }\n cmsField.description = settings.helpText || undefined;\n cmsField.required = settings.required;\n cmsField.stringLengthRange = settings.characters;\n cmsField.numberRange = settings.values;\n};\n\n/**\n * Builds the `FieldActions` for a CMS collection over `@wix/data`. `getCollection`\n * returns the current raw collection snapshot (for existing keys + source field types).\n */\nexport function createCmsFieldActions(\n collectionId: string,\n getCollection: () => collections.DataCollection | null,\n): FieldActions {\n const existingFieldKeys = (): string[] =>\n getCollection()?.fields?.flatMap((f) => (f.key ? [f.key] : [])) ?? [];\n\n const findCmsField = (fieldKey: string): collections.Field | undefined =>\n getCollection()?.fields?.find((f) => f.key === fieldKey);\n\n // A field mutation returns the updated collection; turn it into the new fields\n // map. The SDK guarantees `dataCollection` on a successful mutation, so there is\n // no missing-collection case to handle here.\n const fieldsAfterMutation = (\n dataCollection: collections.DataCollection,\n ): Schema['fields'] => transformCmsSchema(dataCollection).fields;\n\n // Maps a source-neutral `Field` to a CMS field under the given `key`. Throws\n // for a type with no CMS mapping before any SDK call. Shared by addField (key\n // derived from the display name) and addFields (key = the caller's field.id).\n const toCmsField = (field: Field, key: string): collections.Field => {\n const cmsType = PatternsFieldTypeToCmsFieldType[field.type];\n if (!cmsType) {\n throw new Error(`Field type ${field.type} not supported yet`);\n }\n\n const cmsField: collections.Field = {\n key,\n displayName: field.displayName,\n type: cmsType,\n required: field.validation?.required ?? false,\n };\n\n if (field.isPii) {\n cmsField.encrypted = true;\n }\n if (field.helpText) {\n cmsField.description = field.helpText;\n }\n if (field.type === 'NUMBER' && field.validation?.numberRange) {\n cmsField.numberRange = field.validation.numberRange;\n }\n if (field.type === 'SHORT_TEXT' && field.validation?.stringLengthRange) {\n cmsField.stringLengthRange = field.validation.stringLengthRange;\n }\n\n return cmsField;\n };\n\n const buildFieldPatch = (\n fieldId: string,\n updates: Partial<Field>,\n ): collections.Field => {\n const sourceCmsType = findCmsField(fieldId)?.type;\n const patch: collections.Field = { key: fieldId };\n if (updates.displayName !== undefined) {\n patch.displayName = updates.displayName;\n }\n if (updates.isPii !== undefined) {\n patch.encrypted = updates.isPii;\n }\n if (updates.helpText !== undefined) {\n patch.description = updates.helpText;\n }\n if (updates.validation?.required !== undefined) {\n patch.required = updates.validation.required;\n }\n if (updates.validation?.numberRange && sourceCmsType === 'NUMBER') {\n patch.numberRange = updates.validation.numberRange;\n }\n if (updates.validation?.stringLengthRange && sourceCmsType === 'TEXT') {\n patch.stringLengthRange = updates.validation.stringLengthRange;\n }\n return patch;\n };\n\n const writableFieldProps = (source: collections.Field) => {\n const { systemField, capabilities, condition, ...writable } = source;\n return writable;\n };\n\n /**\n * Clones a CMS field for duplication: drops `systemField`/`capabilities` and clears\n * `referencingFieldKey` so the duplicate gets its own backing reference field.\n */\n const cloneFieldDefinition = (\n source: collections.Field,\n newKey: string,\n newDisplayName: string,\n ): collections.Field => {\n const { systemField, capabilities, ...rest } = source;\n const cloned: collections.Field = {\n ...rest,\n key: newKey,\n displayName: newDisplayName,\n };\n if (cloned.typeMetadata?.multiReference?.referencingFieldKey) {\n cloned.typeMetadata = {\n ...cloned.typeMetadata,\n multiReference: {\n ...cloned.typeMetadata.multiReference,\n referencingFieldKey: undefined,\n },\n };\n }\n return cloned;\n };\n\n return {\n addField: async (field: Field, settings?: CmsFieldSettings) => {\n const cmsField = toCmsField(\n field,\n getFieldKey(existingFieldKeys(), field.displayName),\n );\n\n applyCmsFieldSettings(cmsField, settings);\n const { dataCollection } = await collections.createDataCollectionField(\n collectionId,\n { field: cmsField },\n );\n return fieldsAfterMutation(dataCollection!);\n },\n\n addFields: async (fields: Field[]) => {\n const collection = getCollection();\n if (!collection) {\n throw new Error(`Collection ${collectionId} not found`);\n }\n\n // Callers decide the keys up front (import uploads values under them), so\n // key each new field by its `id` — mapped before any SDK call so an\n // unsupported type throws without a partial write.\n const cmsFields = fields.map((field) => toCmsField(field, field.id));\n\n // One mutation for all new fields: append them to the existing\n // definition. Unlike the field mutations, `updateDataCollection` resolves\n // with the updated collection directly (not wrapped in `{ dataCollection }`).\n const dataCollection = await collections.updateDataCollection({\n ...collection,\n fields: [...(collection.fields ?? []), ...cmsFields],\n });\n return fieldsAfterMutation(dataCollection);\n },\n\n editField: async (fieldId, updates, settings?: CmsFieldSettings) => {\n const existingField = findCmsField(fieldId);\n if (!existingField?.type) {\n throw new Error(`Field ${fieldId} not found`);\n }\n const field = {\n ...writableFieldProps(existingField),\n ...buildFieldPatch(fieldId, updates),\n key: fieldId,\n type: existingField.type,\n };\n applyCmsFieldSettings(field, settings);\n const { dataCollection } = await collections.updateDataCollectionField(\n collectionId,\n { field },\n );\n return fieldsAfterMutation(dataCollection!);\n },\n\n deleteField: async (fieldId) => {\n const { dataCollection } = await collections.deleteDataCollectionField(\n collectionId,\n { fieldKey: fieldId },\n );\n return fieldsAfterMutation(dataCollection!);\n },\n\n renameField: async (fieldId, newName) => {\n await collections.patchDataCollectionField(\n collectionId,\n buildFieldPatch(fieldId, { displayName: newName }),\n );\n },\n\n makePrimary: async (fieldId) => {\n const { dataCollection } = await collections.patchDataCollection(\n collectionId,\n { displayField: fieldId },\n );\n return fieldsAfterMutation(dataCollection!);\n },\n\n duplicateField: async (fieldId) => {\n const sourceField = findCmsField(fieldId);\n if (!sourceField || !sourceField.type) {\n throw new Error(`Field ${fieldId} not found`);\n }\n const newDisplayName = `${sourceField.displayName ?? fieldId} (Copy)`;\n const newKey = getFieldKey(existingFieldKeys(), newDisplayName);\n const { dataCollection } = await collections.createDataCollectionField(\n collectionId,\n { field: cloneFieldDefinition(sourceField, newKey, newDisplayName) },\n );\n return fieldsAfterMutation(dataCollection!);\n },\n\n duplicateFieldWithContent: async (fieldId) => {\n const sourceField = findCmsField(fieldId);\n if (!sourceField || !sourceField.type) {\n throw new Error(`Field ${fieldId} not found`);\n }\n const newDisplayName = `${sourceField.displayName ?? fieldId} (Copy)`;\n const newKey = getFieldKey(existingFieldKeys(), newDisplayName);\n const { dataCollection } = await collections.createDataCollectionField(\n collectionId,\n { field: cloneFieldDefinition(sourceField, newKey, newDisplayName) },\n );\n const createdTask = await tasks.createTask({\n type: 'COPY_FIELD_DATA',\n copyFieldDataOptions: {\n dataCollectionId: collectionId,\n sourceFieldKey: fieldId,\n targetFieldKey: newKey,\n },\n });\n await waitForCopyTask(createdTask._id!);\n return fieldsAfterMutation(dataCollection!);\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports._CmsFieldSettings = exports.CmsFieldSettings = void 0;
|
|
6
|
+
var _react = _interopRequireDefault(require("react"));
|
|
7
|
+
var _mobxReactLite = require("mobx-react-lite");
|
|
8
|
+
var _designSystem = require("@wix/design-system");
|
|
9
|
+
var _CmsFieldSettingsState = require("./CmsFieldSettingsState");
|
|
10
|
+
var _jsxFileName = "/home/builduser/work/843658b9f44192f0/packages/patterns-cms/dist/cjs/adapter/fieldSettings/CmsFieldSettings.tsx";
|
|
11
|
+
/** Plain strings until this package gets its own translations. */
|
|
12
|
+
const _CmsFieldSettings = props => {
|
|
13
|
+
const {
|
|
14
|
+
state,
|
|
15
|
+
fieldType
|
|
16
|
+
} = props;
|
|
17
|
+
const {
|
|
18
|
+
rangeError,
|
|
19
|
+
valueRangeError
|
|
20
|
+
} = state;
|
|
21
|
+
return /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
22
|
+
direction: "vertical",
|
|
23
|
+
gap: "SP4",
|
|
24
|
+
__self: void 0,
|
|
25
|
+
__source: {
|
|
26
|
+
fileName: _jsxFileName,
|
|
27
|
+
lineNumber: 32,
|
|
28
|
+
columnNumber: 5
|
|
29
|
+
}
|
|
30
|
+
}, /*#__PURE__*/_react.default.createElement(_designSystem.FormField, {
|
|
31
|
+
dataHook: "cms-field-settings-help-text",
|
|
32
|
+
label: "Help text",
|
|
33
|
+
infoContent: "Shown under the field when someone adds content to this collection.",
|
|
34
|
+
__self: void 0,
|
|
35
|
+
__source: {
|
|
36
|
+
fileName: _jsxFileName,
|
|
37
|
+
lineNumber: 33,
|
|
38
|
+
columnNumber: 7
|
|
39
|
+
}
|
|
40
|
+
}, /*#__PURE__*/_react.default.createElement(_designSystem.Input, {
|
|
41
|
+
dataHook: "cms-field-settings-help-text-input",
|
|
42
|
+
value: state.helpText,
|
|
43
|
+
maxLength: 200,
|
|
44
|
+
placeholder: "Add a short explanation",
|
|
45
|
+
onChange: e => state.setHelpText(e.target.value),
|
|
46
|
+
__self: void 0,
|
|
47
|
+
__source: {
|
|
48
|
+
fileName: _jsxFileName,
|
|
49
|
+
lineNumber: 38,
|
|
50
|
+
columnNumber: 9
|
|
51
|
+
}
|
|
52
|
+
})), /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
53
|
+
direction: "vertical",
|
|
54
|
+
gap: "SP2",
|
|
55
|
+
__self: void 0,
|
|
56
|
+
__source: {
|
|
57
|
+
fileName: _jsxFileName,
|
|
58
|
+
lineNumber: 46,
|
|
59
|
+
columnNumber: 7
|
|
60
|
+
}
|
|
61
|
+
}, /*#__PURE__*/_react.default.createElement(_designSystem.Text, {
|
|
62
|
+
size: "small",
|
|
63
|
+
secondary: true,
|
|
64
|
+
__self: void 0,
|
|
65
|
+
__source: {
|
|
66
|
+
fileName: _jsxFileName,
|
|
67
|
+
lineNumber: 47,
|
|
68
|
+
columnNumber: 9
|
|
69
|
+
}
|
|
70
|
+
}, "Validation"), (0, _CmsFieldSettingsState.showsRequired)(fieldType) && /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
71
|
+
dataHook: "cms-field-settings-required",
|
|
72
|
+
verticalAlign: "middle",
|
|
73
|
+
gap: "9px",
|
|
74
|
+
__self: void 0,
|
|
75
|
+
__source: {
|
|
76
|
+
fileName: _jsxFileName,
|
|
77
|
+
lineNumber: 51,
|
|
78
|
+
columnNumber: 11
|
|
79
|
+
}
|
|
80
|
+
}, /*#__PURE__*/_react.default.createElement(_designSystem.ToggleSwitch, {
|
|
81
|
+
dataHook: "cms-field-settings-required-toggle",
|
|
82
|
+
size: "medium",
|
|
83
|
+
checked: state.required,
|
|
84
|
+
onChange: e => state.setRequired(e.target.checked),
|
|
85
|
+
__self: void 0,
|
|
86
|
+
__source: {
|
|
87
|
+
fileName: _jsxFileName,
|
|
88
|
+
lineNumber: 56,
|
|
89
|
+
columnNumber: 13
|
|
90
|
+
}
|
|
91
|
+
}), /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
92
|
+
verticalAlign: "middle",
|
|
93
|
+
gap: "3px",
|
|
94
|
+
__self: void 0,
|
|
95
|
+
__source: {
|
|
96
|
+
fileName: _jsxFileName,
|
|
97
|
+
lineNumber: 62,
|
|
98
|
+
columnNumber: 13
|
|
99
|
+
}
|
|
100
|
+
}, /*#__PURE__*/_react.default.createElement(_designSystem.Text, {
|
|
101
|
+
size: "small",
|
|
102
|
+
__self: void 0,
|
|
103
|
+
__source: {
|
|
104
|
+
fileName: _jsxFileName,
|
|
105
|
+
lineNumber: 63,
|
|
106
|
+
columnNumber: 15
|
|
107
|
+
}
|
|
108
|
+
}, "Make this a required field"), /*#__PURE__*/_react.default.createElement(_designSystem.InfoIcon, {
|
|
109
|
+
size: "small",
|
|
110
|
+
content: "Make this a required field when adding content to this collection.",
|
|
111
|
+
__self: void 0,
|
|
112
|
+
__source: {
|
|
113
|
+
fileName: _jsxFileName,
|
|
114
|
+
lineNumber: 64,
|
|
115
|
+
columnNumber: 15
|
|
116
|
+
}
|
|
117
|
+
}))), (0, _CmsFieldSettingsState.showsCharactersLimit)(fieldType) && /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
118
|
+
direction: "vertical",
|
|
119
|
+
gap: "SP2",
|
|
120
|
+
__self: void 0,
|
|
121
|
+
__source: {
|
|
122
|
+
fileName: _jsxFileName,
|
|
123
|
+
lineNumber: 72,
|
|
124
|
+
columnNumber: 11
|
|
125
|
+
}
|
|
126
|
+
}, /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
127
|
+
dataHook: "cms-field-settings-characters-limit",
|
|
128
|
+
verticalAlign: "middle",
|
|
129
|
+
gap: "9px",
|
|
130
|
+
__self: void 0,
|
|
131
|
+
__source: {
|
|
132
|
+
fileName: _jsxFileName,
|
|
133
|
+
lineNumber: 73,
|
|
134
|
+
columnNumber: 13
|
|
135
|
+
}
|
|
136
|
+
}, /*#__PURE__*/_react.default.createElement(_designSystem.ToggleSwitch, {
|
|
137
|
+
dataHook: "cms-field-settings-characters-limit-toggle",
|
|
138
|
+
size: "medium",
|
|
139
|
+
checked: state.charactersLimit,
|
|
140
|
+
onChange: e => state.setCharactersLimit(e.target.checked),
|
|
141
|
+
__self: void 0,
|
|
142
|
+
__source: {
|
|
143
|
+
fileName: _jsxFileName,
|
|
144
|
+
lineNumber: 78,
|
|
145
|
+
columnNumber: 15
|
|
146
|
+
}
|
|
147
|
+
}), /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
148
|
+
verticalAlign: "middle",
|
|
149
|
+
gap: "3px",
|
|
150
|
+
__self: void 0,
|
|
151
|
+
__source: {
|
|
152
|
+
fileName: _jsxFileName,
|
|
153
|
+
lineNumber: 84,
|
|
154
|
+
columnNumber: 15
|
|
155
|
+
}
|
|
156
|
+
}, /*#__PURE__*/_react.default.createElement(_designSystem.Text, {
|
|
157
|
+
size: "small",
|
|
158
|
+
__self: void 0,
|
|
159
|
+
__source: {
|
|
160
|
+
fileName: _jsxFileName,
|
|
161
|
+
lineNumber: 85,
|
|
162
|
+
columnNumber: 17
|
|
163
|
+
}
|
|
164
|
+
}, "Limit character count"), /*#__PURE__*/_react.default.createElement(_designSystem.InfoIcon, {
|
|
165
|
+
size: "small",
|
|
166
|
+
content: "Limit the number of characters in this field for any newly added items.",
|
|
167
|
+
__self: void 0,
|
|
168
|
+
__source: {
|
|
169
|
+
fileName: _jsxFileName,
|
|
170
|
+
lineNumber: 86,
|
|
171
|
+
columnNumber: 17
|
|
172
|
+
}
|
|
173
|
+
}))), state.charactersLimit && /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
174
|
+
verticalAlign: "middle",
|
|
175
|
+
gap: "SP2",
|
|
176
|
+
__self: void 0,
|
|
177
|
+
__source: {
|
|
178
|
+
fileName: _jsxFileName,
|
|
179
|
+
lineNumber: 93,
|
|
180
|
+
columnNumber: 15
|
|
181
|
+
}
|
|
182
|
+
}, /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
183
|
+
width: "112px",
|
|
184
|
+
__self: void 0,
|
|
185
|
+
__source: {
|
|
186
|
+
fileName: _jsxFileName,
|
|
187
|
+
lineNumber: 94,
|
|
188
|
+
columnNumber: 17
|
|
189
|
+
}
|
|
190
|
+
}, /*#__PURE__*/_react.default.createElement(_designSystem.NumberInput, {
|
|
191
|
+
dataHook: "cms-field-settings-min-characters",
|
|
192
|
+
size: "small",
|
|
193
|
+
placeholder: "min",
|
|
194
|
+
min: state.minCharactersFloor,
|
|
195
|
+
max: _CmsFieldSettingsState.CHARACTERS_CEILING,
|
|
196
|
+
value: state.minCharacters,
|
|
197
|
+
onChange: value => state.setMinCharacters(value ?? undefined),
|
|
198
|
+
onBlur: state.normalizeMinCharacters,
|
|
199
|
+
__self: void 0,
|
|
200
|
+
__source: {
|
|
201
|
+
fileName: _jsxFileName,
|
|
202
|
+
lineNumber: 95,
|
|
203
|
+
columnNumber: 19
|
|
204
|
+
}
|
|
205
|
+
})), /*#__PURE__*/_react.default.createElement(_designSystem.Text, {
|
|
206
|
+
size: "small",
|
|
207
|
+
secondary: true,
|
|
208
|
+
__self: void 0,
|
|
209
|
+
__source: {
|
|
210
|
+
fileName: _jsxFileName,
|
|
211
|
+
lineNumber: 108,
|
|
212
|
+
columnNumber: 17
|
|
213
|
+
}
|
|
214
|
+
}, "and"), /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
215
|
+
width: "112px",
|
|
216
|
+
__self: void 0,
|
|
217
|
+
__source: {
|
|
218
|
+
fileName: _jsxFileName,
|
|
219
|
+
lineNumber: 111,
|
|
220
|
+
columnNumber: 17
|
|
221
|
+
}
|
|
222
|
+
}, /*#__PURE__*/_react.default.createElement(_designSystem.NumberInput, {
|
|
223
|
+
dataHook: "cms-field-settings-max-characters",
|
|
224
|
+
size: "small",
|
|
225
|
+
placeholder: "max",
|
|
226
|
+
min: _CmsFieldSettingsState.MAX_CHARACTERS_FLOOR,
|
|
227
|
+
max: _CmsFieldSettingsState.CHARACTERS_CEILING,
|
|
228
|
+
value: state.maxCharacters,
|
|
229
|
+
status: rangeError ? 'error' : undefined,
|
|
230
|
+
statusMessage: rangeError,
|
|
231
|
+
onChange: value => state.setMaxCharacters(value ?? undefined),
|
|
232
|
+
onBlur: state.normalizeMaxCharacters,
|
|
233
|
+
__self: void 0,
|
|
234
|
+
__source: {
|
|
235
|
+
fileName: _jsxFileName,
|
|
236
|
+
lineNumber: 112,
|
|
237
|
+
columnNumber: 19
|
|
238
|
+
}
|
|
239
|
+
})))), (0, _CmsFieldSettingsState.showsValueRange)(fieldType) && /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
240
|
+
direction: "vertical",
|
|
241
|
+
gap: "SP2",
|
|
242
|
+
__self: void 0,
|
|
243
|
+
__source: {
|
|
244
|
+
fileName: _jsxFileName,
|
|
245
|
+
lineNumber: 132,
|
|
246
|
+
columnNumber: 11
|
|
247
|
+
}
|
|
248
|
+
}, /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
249
|
+
dataHook: "cms-field-settings-value-range",
|
|
250
|
+
verticalAlign: "middle",
|
|
251
|
+
gap: "9px",
|
|
252
|
+
__self: void 0,
|
|
253
|
+
__source: {
|
|
254
|
+
fileName: _jsxFileName,
|
|
255
|
+
lineNumber: 133,
|
|
256
|
+
columnNumber: 13
|
|
257
|
+
}
|
|
258
|
+
}, /*#__PURE__*/_react.default.createElement(_designSystem.ToggleSwitch, {
|
|
259
|
+
dataHook: "cms-field-settings-value-range-toggle",
|
|
260
|
+
size: "medium",
|
|
261
|
+
checked: state.valueRange,
|
|
262
|
+
onChange: e => state.setValueRange(e.target.checked),
|
|
263
|
+
__self: void 0,
|
|
264
|
+
__source: {
|
|
265
|
+
fileName: _jsxFileName,
|
|
266
|
+
lineNumber: 138,
|
|
267
|
+
columnNumber: 15
|
|
268
|
+
}
|
|
269
|
+
}), /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
270
|
+
verticalAlign: "middle",
|
|
271
|
+
gap: "3px",
|
|
272
|
+
__self: void 0,
|
|
273
|
+
__source: {
|
|
274
|
+
fileName: _jsxFileName,
|
|
275
|
+
lineNumber: 144,
|
|
276
|
+
columnNumber: 15
|
|
277
|
+
}
|
|
278
|
+
}, /*#__PURE__*/_react.default.createElement(_designSystem.Text, {
|
|
279
|
+
size: "small",
|
|
280
|
+
__self: void 0,
|
|
281
|
+
__source: {
|
|
282
|
+
fileName: _jsxFileName,
|
|
283
|
+
lineNumber: 145,
|
|
284
|
+
columnNumber: 17
|
|
285
|
+
}
|
|
286
|
+
}, "Limit value range"), /*#__PURE__*/_react.default.createElement(_designSystem.InfoIcon, {
|
|
287
|
+
size: "small",
|
|
288
|
+
content: "Limit the values this field accepts for any newly added items.",
|
|
289
|
+
__self: void 0,
|
|
290
|
+
__source: {
|
|
291
|
+
fileName: _jsxFileName,
|
|
292
|
+
lineNumber: 146,
|
|
293
|
+
columnNumber: 17
|
|
294
|
+
}
|
|
295
|
+
}))), state.valueRange && /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
296
|
+
verticalAlign: "middle",
|
|
297
|
+
gap: "SP2",
|
|
298
|
+
__self: void 0,
|
|
299
|
+
__source: {
|
|
300
|
+
fileName: _jsxFileName,
|
|
301
|
+
lineNumber: 153,
|
|
302
|
+
columnNumber: 15
|
|
303
|
+
}
|
|
304
|
+
}, /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
305
|
+
width: "112px",
|
|
306
|
+
__self: void 0,
|
|
307
|
+
__source: {
|
|
308
|
+
fileName: _jsxFileName,
|
|
309
|
+
lineNumber: 154,
|
|
310
|
+
columnNumber: 17
|
|
311
|
+
}
|
|
312
|
+
}, /*#__PURE__*/_react.default.createElement(_designSystem.NumberInput, {
|
|
313
|
+
dataHook: "cms-field-settings-min-value",
|
|
314
|
+
size: "small",
|
|
315
|
+
placeholder: "min",
|
|
316
|
+
value: state.minValue,
|
|
317
|
+
onChange: value => state.setMinValue(value ?? undefined),
|
|
318
|
+
__self: void 0,
|
|
319
|
+
__source: {
|
|
320
|
+
fileName: _jsxFileName,
|
|
321
|
+
lineNumber: 155,
|
|
322
|
+
columnNumber: 19
|
|
323
|
+
}
|
|
324
|
+
})), /*#__PURE__*/_react.default.createElement(_designSystem.Text, {
|
|
325
|
+
size: "small",
|
|
326
|
+
secondary: true,
|
|
327
|
+
__self: void 0,
|
|
328
|
+
__source: {
|
|
329
|
+
fileName: _jsxFileName,
|
|
330
|
+
lineNumber: 163,
|
|
331
|
+
columnNumber: 17
|
|
332
|
+
}
|
|
333
|
+
}, "and"), /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
334
|
+
width: "112px",
|
|
335
|
+
__self: void 0,
|
|
336
|
+
__source: {
|
|
337
|
+
fileName: _jsxFileName,
|
|
338
|
+
lineNumber: 166,
|
|
339
|
+
columnNumber: 17
|
|
340
|
+
}
|
|
341
|
+
}, /*#__PURE__*/_react.default.createElement(_designSystem.NumberInput, {
|
|
342
|
+
dataHook: "cms-field-settings-max-value",
|
|
343
|
+
size: "small",
|
|
344
|
+
placeholder: "max",
|
|
345
|
+
value: state.maxValue,
|
|
346
|
+
status: valueRangeError ? 'error' : undefined,
|
|
347
|
+
statusMessage: valueRangeError,
|
|
348
|
+
onChange: value => state.setMaxValue(value ?? undefined),
|
|
349
|
+
__self: void 0,
|
|
350
|
+
__source: {
|
|
351
|
+
fileName: _jsxFileName,
|
|
352
|
+
lineNumber: 167,
|
|
353
|
+
columnNumber: 19
|
|
354
|
+
}
|
|
355
|
+
}))))));
|
|
356
|
+
};
|
|
357
|
+
exports._CmsFieldSettings = _CmsFieldSettings;
|
|
358
|
+
const CmsFieldSettings = exports.CmsFieldSettings = (0, _mobxReactLite.observer)(_CmsFieldSettings);
|
|
359
|
+
//# sourceMappingURL=CmsFieldSettings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_mobxReactLite","_designSystem","_CmsFieldSettingsState","_jsxFileName","_CmsFieldSettings","props","state","fieldType","rangeError","valueRangeError","default","createElement","Box","direction","gap","__self","__source","fileName","lineNumber","columnNumber","FormField","dataHook","label","infoContent","Input","value","helpText","maxLength","placeholder","onChange","e","setHelpText","target","Text","size","secondary","showsRequired","verticalAlign","ToggleSwitch","checked","required","setRequired","InfoIcon","content","showsCharactersLimit","charactersLimit","setCharactersLimit","width","NumberInput","min","minCharactersFloor","max","CHARACTERS_CEILING","minCharacters","setMinCharacters","undefined","onBlur","normalizeMinCharacters","MAX_CHARACTERS_FLOOR","maxCharacters","status","statusMessage","setMaxCharacters","normalizeMaxCharacters","showsValueRange","valueRange","setValueRange","minValue","setMinValue","maxValue","setMaxValue","exports","CmsFieldSettings","observer"],"sources":["../../../../src/adapter/fieldSettings/CmsFieldSettings.tsx"],"sourcesContent":["import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport {\n Box,\n FormField,\n InfoIcon,\n Input,\n NumberInput,\n Text,\n ToggleSwitch,\n} from '@wix/design-system';\nimport type { FieldSettingsProps } from '@wix/patterns/schema';\nimport {\n CHARACTERS_CEILING,\n CmsFieldSettingsState,\n MAX_CHARACTERS_FLOOR,\n showsCharactersLimit,\n showsRequired,\n showsValueRange,\n} from './CmsFieldSettingsState';\n\nexport interface CmsFieldSettingsProps extends FieldSettingsProps {\n state: CmsFieldSettingsState;\n}\n\n/** Plain strings until this package gets its own translations. */\nexport const _CmsFieldSettings = (props: CmsFieldSettingsProps) => {\n const { state, fieldType } = props;\n const { rangeError, valueRangeError } = state;\n\n return (\n <Box direction=\"vertical\" gap=\"SP4\">\n <FormField\n dataHook=\"cms-field-settings-help-text\"\n label=\"Help text\"\n infoContent=\"Shown under the field when someone adds content to this collection.\"\n >\n <Input\n dataHook=\"cms-field-settings-help-text-input\"\n value={state.helpText}\n maxLength={200}\n placeholder=\"Add a short explanation\"\n onChange={(e) => state.setHelpText(e.target.value)}\n />\n </FormField>\n <Box direction=\"vertical\" gap=\"SP2\">\n <Text size=\"small\" secondary>\n Validation\n </Text>\n {showsRequired(fieldType) && (\n <Box\n dataHook=\"cms-field-settings-required\"\n verticalAlign=\"middle\"\n gap=\"9px\"\n >\n <ToggleSwitch\n dataHook=\"cms-field-settings-required-toggle\"\n size=\"medium\"\n checked={state.required}\n onChange={(e) => state.setRequired(e.target.checked)}\n />\n <Box verticalAlign=\"middle\" gap=\"3px\">\n <Text size=\"small\">Make this a required field</Text>\n <InfoIcon\n size=\"small\"\n content=\"Make this a required field when adding content to this collection.\"\n />\n </Box>\n </Box>\n )}\n {showsCharactersLimit(fieldType) && (\n <Box direction=\"vertical\" gap=\"SP2\">\n <Box\n dataHook=\"cms-field-settings-characters-limit\"\n verticalAlign=\"middle\"\n gap=\"9px\"\n >\n <ToggleSwitch\n dataHook=\"cms-field-settings-characters-limit-toggle\"\n size=\"medium\"\n checked={state.charactersLimit}\n onChange={(e) => state.setCharactersLimit(e.target.checked)}\n />\n <Box verticalAlign=\"middle\" gap=\"3px\">\n <Text size=\"small\">Limit character count</Text>\n <InfoIcon\n size=\"small\"\n content=\"Limit the number of characters in this field for any newly added items.\"\n />\n </Box>\n </Box>\n {state.charactersLimit && (\n <Box verticalAlign=\"middle\" gap=\"SP2\">\n <Box width=\"112px\">\n <NumberInput\n dataHook=\"cms-field-settings-min-characters\"\n size=\"small\"\n placeholder=\"min\"\n min={state.minCharactersFloor}\n max={CHARACTERS_CEILING}\n value={state.minCharacters}\n onChange={(value) =>\n state.setMinCharacters(value ?? undefined)\n }\n onBlur={state.normalizeMinCharacters}\n />\n </Box>\n <Text size=\"small\" secondary>\n and\n </Text>\n <Box width=\"112px\">\n <NumberInput\n dataHook=\"cms-field-settings-max-characters\"\n size=\"small\"\n placeholder=\"max\"\n min={MAX_CHARACTERS_FLOOR}\n max={CHARACTERS_CEILING}\n value={state.maxCharacters}\n status={rangeError ? 'error' : undefined}\n statusMessage={rangeError}\n onChange={(value) =>\n state.setMaxCharacters(value ?? undefined)\n }\n onBlur={state.normalizeMaxCharacters}\n />\n </Box>\n </Box>\n )}\n </Box>\n )}\n {showsValueRange(fieldType) && (\n <Box direction=\"vertical\" gap=\"SP2\">\n <Box\n dataHook=\"cms-field-settings-value-range\"\n verticalAlign=\"middle\"\n gap=\"9px\"\n >\n <ToggleSwitch\n dataHook=\"cms-field-settings-value-range-toggle\"\n size=\"medium\"\n checked={state.valueRange}\n onChange={(e) => state.setValueRange(e.target.checked)}\n />\n <Box verticalAlign=\"middle\" gap=\"3px\">\n <Text size=\"small\">Limit value range</Text>\n <InfoIcon\n size=\"small\"\n content=\"Limit the values this field accepts for any newly added items.\"\n />\n </Box>\n </Box>\n {state.valueRange && (\n <Box verticalAlign=\"middle\" gap=\"SP2\">\n <Box width=\"112px\">\n <NumberInput\n dataHook=\"cms-field-settings-min-value\"\n size=\"small\"\n placeholder=\"min\"\n value={state.minValue}\n onChange={(value) => state.setMinValue(value ?? undefined)}\n />\n </Box>\n <Text size=\"small\" secondary>\n and\n </Text>\n <Box width=\"112px\">\n <NumberInput\n dataHook=\"cms-field-settings-max-value\"\n size=\"small\"\n placeholder=\"max\"\n value={state.maxValue}\n status={valueRangeError ? 'error' : undefined}\n statusMessage={valueRangeError}\n onChange={(value) => state.setMaxValue(value ?? undefined)}\n />\n </Box>\n </Box>\n )}\n </Box>\n )}\n </Box>\n </Box>\n );\n};\n\nexport const CmsFieldSettings = observer(_CmsFieldSettings);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.showsValueRange = exports.showsRequired = exports.showsCharactersLimit = exports.MAX_CHARACTERS_FLOOR = exports.CmsFieldSettingsState = exports.CHARACTERS_CEILING = void 0;
|
|
6
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
7
|
+
var _mobx = require("mobx");
|
|
8
|
+
/**
|
|
9
|
+
* What the CMS settings section hands back to `createCmsFieldActions`. Cairo
|
|
10
|
+
* carries it as an opaque value, so this shape is ours alone.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/** @wix/data rejects a character limit above this. */
|
|
14
|
+
const CHARACTERS_CEILING = exports.CHARACTERS_CEILING = 256_000;
|
|
15
|
+
const MAX_CHARACTERS_FLOOR = exports.MAX_CHARACTERS_FLOOR = 1;
|
|
16
|
+
const MIN_CHARACTERS_FLOOR = 0;
|
|
17
|
+
/** A required field has to hold at least one character. */
|
|
18
|
+
const MIN_CHARACTERS_FLOOR_WHEN_REQUIRED = 1;
|
|
19
|
+
|
|
20
|
+
/** Only text fields carry a character limit — the only type `@wix/data` stores a
|
|
21
|
+
* `stringLengthRange` for. */
|
|
22
|
+
const CHARACTERS_LIMIT_TYPES = ['SHORT_TEXT'];
|
|
23
|
+
|
|
24
|
+
/** Only number fields carry a value range — `@wix/data`'s `numberRange`. */
|
|
25
|
+
const VALUE_RANGE_TYPES = ['NUMBER'];
|
|
26
|
+
const showsRequired = fieldType => Boolean(fieldType);
|
|
27
|
+
exports.showsRequired = showsRequired;
|
|
28
|
+
const showsCharactersLimit = fieldType => CHARACTERS_LIMIT_TYPES.some(type => type === fieldType);
|
|
29
|
+
exports.showsCharactersLimit = showsCharactersLimit;
|
|
30
|
+
const showsValueRange = fieldType => VALUE_RANGE_TYPES.some(type => type === fieldType);
|
|
31
|
+
exports.showsValueRange = showsValueRange;
|
|
32
|
+
const clamp = (value, min, max) => value == null ? undefined : Math.min(Math.max(value, min), max);
|
|
33
|
+
const maxBelowMin = (min, max) => min == null || max == null || min <= max ? undefined : 'Max has to be higher than min.';
|
|
34
|
+
class CmsFieldSettingsState {
|
|
35
|
+
constructor() {
|
|
36
|
+
(0, _defineProperty2.default)(this, "required", false);
|
|
37
|
+
(0, _defineProperty2.default)(this, "charactersLimit", false);
|
|
38
|
+
(0, _defineProperty2.default)(this, "minCharacters", undefined);
|
|
39
|
+
(0, _defineProperty2.default)(this, "maxCharacters", undefined);
|
|
40
|
+
(0, _defineProperty2.default)(this, "valueRange", false);
|
|
41
|
+
(0, _defineProperty2.default)(this, "minValue", undefined);
|
|
42
|
+
(0, _defineProperty2.default)(this, "maxValue", undefined);
|
|
43
|
+
(0, _defineProperty2.default)(this, "helpText", '');
|
|
44
|
+
(0, _mobx.makeObservable)(this, {
|
|
45
|
+
required: _mobx.observable.ref,
|
|
46
|
+
charactersLimit: _mobx.observable.ref,
|
|
47
|
+
minCharacters: _mobx.observable.ref,
|
|
48
|
+
maxCharacters: _mobx.observable.ref,
|
|
49
|
+
valueRange: _mobx.observable.ref,
|
|
50
|
+
minValue: _mobx.observable.ref,
|
|
51
|
+
maxValue: _mobx.observable.ref,
|
|
52
|
+
helpText: _mobx.observable.ref,
|
|
53
|
+
minCharactersFloor: _mobx.computed,
|
|
54
|
+
rangeError: _mobx.computed,
|
|
55
|
+
valueRangeError: _mobx.computed,
|
|
56
|
+
setRequired: _mobx.action.bound,
|
|
57
|
+
setCharactersLimit: _mobx.action.bound,
|
|
58
|
+
setMinCharacters: _mobx.action.bound,
|
|
59
|
+
setMaxCharacters: _mobx.action.bound,
|
|
60
|
+
setValueRange: _mobx.action.bound,
|
|
61
|
+
setMinValue: _mobx.action.bound,
|
|
62
|
+
setMaxValue: _mobx.action.bound,
|
|
63
|
+
setHelpText: _mobx.action.bound,
|
|
64
|
+
normalizeMinCharacters: _mobx.action.bound,
|
|
65
|
+
normalizeMaxCharacters: _mobx.action.bound,
|
|
66
|
+
setValues: _mobx.action.bound
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
get minCharactersFloor() {
|
|
70
|
+
return this.required ? MIN_CHARACTERS_FLOOR_WHEN_REQUIRED : MIN_CHARACTERS_FLOOR;
|
|
71
|
+
}
|
|
72
|
+
get rangeError() {
|
|
73
|
+
return maxBelowMin(this.minCharacters, this.maxCharacters);
|
|
74
|
+
}
|
|
75
|
+
get valueRangeError() {
|
|
76
|
+
return maxBelowMin(this.minValue, this.maxValue);
|
|
77
|
+
}
|
|
78
|
+
setRequired(value) {
|
|
79
|
+
this.required = value;
|
|
80
|
+
this.normalizeMinCharacters();
|
|
81
|
+
}
|
|
82
|
+
setCharactersLimit(value) {
|
|
83
|
+
this.charactersLimit = value;
|
|
84
|
+
}
|
|
85
|
+
setMinCharacters(value) {
|
|
86
|
+
this.minCharacters = value;
|
|
87
|
+
}
|
|
88
|
+
setMaxCharacters(value) {
|
|
89
|
+
this.maxCharacters = value;
|
|
90
|
+
}
|
|
91
|
+
setValueRange(value) {
|
|
92
|
+
this.valueRange = value;
|
|
93
|
+
}
|
|
94
|
+
setMinValue(value) {
|
|
95
|
+
this.minValue = value;
|
|
96
|
+
}
|
|
97
|
+
setMaxValue(value) {
|
|
98
|
+
this.maxValue = value;
|
|
99
|
+
}
|
|
100
|
+
setHelpText(value) {
|
|
101
|
+
this.helpText = value;
|
|
102
|
+
}
|
|
103
|
+
normalizeMinCharacters() {
|
|
104
|
+
this.minCharacters = clamp(this.minCharacters, this.minCharactersFloor, CHARACTERS_CEILING);
|
|
105
|
+
}
|
|
106
|
+
normalizeMaxCharacters() {
|
|
107
|
+
this.maxCharacters = clamp(this.maxCharacters, MAX_CHARACTERS_FLOOR, CHARACTERS_CEILING);
|
|
108
|
+
}
|
|
109
|
+
hasError(fieldType) {
|
|
110
|
+
return showsCharactersLimit(fieldType) && this.charactersLimit && Boolean(this.rangeError) || showsValueRange(fieldType) && this.valueRange && Boolean(this.valueRangeError);
|
|
111
|
+
}
|
|
112
|
+
getValues(fieldType) {
|
|
113
|
+
// A toggle can be on with both inputs empty — that's still no limit.
|
|
114
|
+
const limit = showsCharactersLimit(fieldType) && this.charactersLimit && (this.minCharacters !== undefined || this.maxCharacters !== undefined);
|
|
115
|
+
const range = showsValueRange(fieldType) && this.valueRange && (this.minValue !== undefined || this.maxValue !== undefined);
|
|
116
|
+
return {
|
|
117
|
+
helpText: this.helpText,
|
|
118
|
+
required: showsRequired(fieldType) ? this.required : false,
|
|
119
|
+
characters: limit ? {
|
|
120
|
+
minLength: this.minCharacters,
|
|
121
|
+
maxLength: this.maxCharacters
|
|
122
|
+
} : undefined,
|
|
123
|
+
values: range ? {
|
|
124
|
+
min: this.minValue,
|
|
125
|
+
max: this.maxValue
|
|
126
|
+
} : undefined
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
setValues(field) {
|
|
130
|
+
var _field$validation, _field$validation2, _field$validation3;
|
|
131
|
+
const characters = field == null || (_field$validation = field.validation) == null ? void 0 : _field$validation.stringLengthRange;
|
|
132
|
+
const values = field == null || (_field$validation2 = field.validation) == null ? void 0 : _field$validation2.numberRange;
|
|
133
|
+
this.helpText = (field == null ? void 0 : field.helpText) ?? '';
|
|
134
|
+
this.required = (field == null || (_field$validation3 = field.validation) == null ? void 0 : _field$validation3.required) ?? false;
|
|
135
|
+
this.minCharacters = characters == null ? void 0 : characters.minLength;
|
|
136
|
+
this.maxCharacters = characters == null ? void 0 : characters.maxLength;
|
|
137
|
+
this.charactersLimit = (characters == null ? void 0 : characters.minLength) != null || (characters == null ? void 0 : characters.maxLength) != null;
|
|
138
|
+
this.minValue = values == null ? void 0 : values.min;
|
|
139
|
+
this.maxValue = values == null ? void 0 : values.max;
|
|
140
|
+
this.valueRange = (values == null ? void 0 : values.min) != null || (values == null ? void 0 : values.max) != null;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
exports.CmsFieldSettingsState = CmsFieldSettingsState;
|
|
144
|
+
//# sourceMappingURL=CmsFieldSettingsState.js.map
|