@adobe-commerce/aio-experience-kit 1.0.2 → 1.0.4
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/CHANGELOG.md +117 -0
- package/README.md +590 -2
- package/dist/cjs/components/DataForm/ButtonContainer/index.js +158 -0
- package/dist/cjs/components/DataForm/ButtonContainer/index.js.map +1 -0
- package/dist/cjs/components/DataForm/FieldBuilder/index.js +3 -2
- package/dist/cjs/components/DataForm/FieldBuilder/index.js.map +1 -1
- package/dist/cjs/components/DataForm/FormBuilder/index.js +178 -65
- package/dist/cjs/components/DataForm/FormBuilder/index.js.map +1 -1
- package/dist/cjs/components/DataForm/FormBuilder/types.js.map +1 -1
- package/dist/cjs/components/DataForm/index.js +6 -3
- package/dist/cjs/components/DataForm/index.js.map +1 -1
- package/dist/cjs/components/DataTable/GridBuilder/index.js +72 -58
- package/dist/cjs/components/DataTable/GridBuilder/index.js.map +1 -1
- package/dist/cjs/components/DataTable/SearchBar/index.js +184 -0
- package/dist/cjs/components/DataTable/SearchBar/index.js.map +1 -0
- package/dist/cjs/components/DataTable/index.js +53 -33
- package/dist/cjs/components/DataTable/index.js.map +1 -1
- package/dist/cjs/components/DataTable/types.js.map +1 -1
- package/dist/cjs/components/FileUpload/index.js +12 -2
- package/dist/cjs/components/FileUpload/index.js.map +1 -1
- package/dist/esm/components/DataForm/ButtonContainer/index.js +154 -0
- package/dist/esm/components/DataForm/ButtonContainer/index.js.map +1 -0
- package/dist/esm/components/DataForm/FieldBuilder/index.js +3 -2
- package/dist/esm/components/DataForm/FieldBuilder/index.js.map +1 -1
- package/dist/esm/components/DataForm/FormBuilder/index.js +180 -67
- package/dist/esm/components/DataForm/FormBuilder/index.js.map +1 -1
- package/dist/esm/components/DataForm/FormBuilder/types.js.map +1 -1
- package/dist/esm/components/DataForm/index.js +7 -4
- package/dist/esm/components/DataForm/index.js.map +1 -1
- package/dist/esm/components/DataTable/GridBuilder/index.js +74 -60
- package/dist/esm/components/DataTable/GridBuilder/index.js.map +1 -1
- package/dist/esm/components/DataTable/SearchBar/index.js +180 -0
- package/dist/esm/components/DataTable/SearchBar/index.js.map +1 -0
- package/dist/esm/components/DataTable/index.js +53 -33
- package/dist/esm/components/DataTable/index.js.map +1 -1
- package/dist/esm/components/DataTable/types.js.map +1 -1
- package/dist/esm/components/FileUpload/index.js +13 -3
- package/dist/esm/components/FileUpload/index.js.map +1 -1
- package/dist/esm/types/components/DataForm/ButtonContainer/index.d.ts +12 -0
- package/dist/esm/types/components/DataForm/ButtonContainer/index.d.ts.map +1 -0
- package/dist/esm/types/components/DataForm/ButtonContainer/types.d.ts +82 -0
- package/dist/esm/types/components/DataForm/ButtonContainer/types.d.ts.map +1 -0
- package/dist/esm/types/components/DataForm/FieldBuilder/index.d.ts.map +1 -1
- package/dist/esm/types/components/DataForm/FormBuilder/index.d.ts.map +1 -1
- package/dist/esm/types/components/DataForm/FormBuilder/types.d.ts +40 -0
- package/dist/esm/types/components/DataForm/FormBuilder/types.d.ts.map +1 -1
- package/dist/esm/types/components/DataForm/index.d.ts.map +1 -1
- package/dist/esm/types/components/DataForm/types.d.ts +2 -0
- package/dist/esm/types/components/DataForm/types.d.ts.map +1 -1
- package/dist/esm/types/components/DataTable/GridBuilder/index.d.ts +1 -1
- package/dist/esm/types/components/DataTable/GridBuilder/index.d.ts.map +1 -1
- package/dist/esm/types/components/DataTable/GridBuilder/types.d.ts +1 -0
- package/dist/esm/types/components/DataTable/GridBuilder/types.d.ts.map +1 -1
- package/dist/esm/types/components/DataTable/SearchBar/index.d.ts +11 -0
- package/dist/esm/types/components/DataTable/SearchBar/index.d.ts.map +1 -0
- package/dist/esm/types/components/DataTable/index.d.ts +1 -1
- package/dist/esm/types/components/DataTable/index.d.ts.map +1 -1
- package/dist/esm/types/components/DataTable/types.d.ts +38 -0
- package/dist/esm/types/components/DataTable/types.d.ts.map +1 -1
- package/dist/esm/types/components/FileUpload/index.d.ts +2 -3
- package/dist/esm/types/components/FileUpload/index.d.ts.map +1 -1
- package/dist/esm/types/components/FileUpload/types.d.ts +14 -0
- package/dist/esm/types/components/FileUpload/types.d.ts.map +1 -1
- package/dist/esm/types/components/index.d.ts +2 -1
- package/dist/esm/types/components/index.d.ts.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../src/components/DataForm/FormBuilder/index.tsx"],"sourcesContent":["/**\n * <license header>\n */\n\nimport React, { useState } from 'react';\nimport { Form, Flex, ProgressCircle, Heading, ActionButton, Text } from '@adobe/react-spectrum';\nimport { FormBuilderProps } from './types';\nimport FieldBuilder from '../FieldBuilder';\nimport SaveFloppy from '@spectrum-icons/workflow/SaveFloppy';\nimport Back from '@spectrum-icons/workflow/Back';\n\nconst FormBuilder: React.FC<FormBuilderProps> = ({\n components = { groups: [] },\n editItem = {},\n onFieldChange = (): Promise<void> => Promise.resolve(),\n onFormSubmit = (): Promise<void> => Promise.resolve(),\n onPostFormSubmit = (): Promise<void> => Promise.resolve(),\n onBackPress = (): void => {},\n isProcessing = false,\n usePlaceholder = true,\n}) => {\n const [isSubmitting, setSubmitting] = useState(false);\n const [values, setValues] = useState<Record<string, any>>({});\n\n return (\n <Form\n isRequired\n isDisabled={isSubmitting || isProcessing}\n width=\"size-6000\"\n validationBehavior=\"native\"\n onSubmit={async e => {\n e.preventDefault();\n // Create a new object instead of mutating the existing values\n const submissionValues = { ...values };\n for (const key in editItem) {\n if (!Object.prototype.hasOwnProperty.call(submissionValues, key)) {\n submissionValues[key] = editItem[key];\n }\n }\n setSubmitting(true);\n await onFormSubmit(submissionValues);\n setSubmitting(false);\n await onPostFormSubmit();\n }}\n >\n <>\n {components.groups.map(group => (\n <Flex key={group.code} direction=\"column\" marginBottom=\"size-200\">\n <Heading id={group.code} level={4} marginTop={0}>\n {group.label}\n </Heading>\n {group.fields.map(field => (\n <FieldBuilder\n key={field.db_field}\n field={field}\n editItem={editItem}\n usePlaceholder={usePlaceholder}\n onFieldChange={async (code, db_field, value) => {\n setValues(prevValues => ({\n ...prevValues,\n [db_field]: value,\n }));\n await onFieldChange(code, value);\n }}\n />\n ))}\n </Flex>\n ))}\n </>\n <Flex width=\"100%\" alignItems=\"center\" marginTop={'size-100'}>\n {(isSubmitting || isProcessing) && (\n <ProgressCircle\n size=\"M\"\n marginEnd={'size-250'}\n aria-label=\"Submitting..\"\n isIndeterminate\n />\n )}\n <ActionButton\n marginEnd={'size-100'}\n type=\"submit\"\n isDisabled={isSubmitting || isProcessing}\n staticColor=\"black\"\n >\n <SaveFloppy size={'M'} />\n <Text>Save</Text>\n </ActionButton>\n <ActionButton\n type=\"button\"\n staticColor=\"black\"\n isDisabled={isSubmitting || isProcessing}\n onPress={onBackPress}\n >\n <Back size={'M'} />\n <Text>Back</Text>\n </ActionButton>\n </Flex>\n </Form>\n );\n};\n\nexport default FormBuilder;\n"],"names":["FormBuilder","_ref","_ref$components","components","groups","_ref$editItem","editItem","_ref$onFieldChange","onFieldChange","Promise","resolve","_ref$onFormSubmit","onFormSubmit","_ref$onPostFormSubmit","onPostFormSubmit","_ref$onBackPress","onBackPress","_ref$isProcessing","isProcessing","_ref$usePlaceholder","usePlaceholder","_useState","useState","_useState2","_slicedToArray","isSubmitting","setSubmitting","_useState3","_useState4","values","setValues","_jsxs","Form","isRequired","isDisabled","width","validationBehavior","onSubmit","_onSubmit","_asyncToGenerator","_regenerator","m","_callee","e","submissionValues","key","w","_context","n","preventDefault","_objectSpread","Object","prototype","hasOwnProperty","call","a","_x","apply","arguments","_jsx","_Fragment","children","map","group","Flex","direction","marginBottom","Heading","id","code","level","marginTop","label","fields","field","FieldBuilder","_onFieldChange2","_callee2","db_field","value","_context2","prevValues","_defineProperty","_x2","_x3","_x4","alignItems","ProgressCircle","size","marginEnd","isIndeterminate","ActionButton","type","staticColor","SaveFloppy","Text","onPress","Back"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/components/DataForm/FormBuilder/index.tsx"],"sourcesContent":["/**\n * <license header>\n */\n\nimport React, { useState, useMemo, useCallback } from 'react';\nimport { Form, Flex, Heading } from '@adobe/react-spectrum';\nimport { FormBuilderProps, FormBuilderField, DependencyCondition } from './types';\nimport FieldBuilder from '../FieldBuilder';\nimport ButtonContainer from '../ButtonContainer';\n\n/**\n * Evaluates whether a dependency condition is met\n * @param condition The dependency condition to evaluate\n * @param value The current value of the dependency field\n * @param allValues All form values for custom validators\n * @returns true if condition is met, false otherwise\n */\nconst evaluateDependencyCondition = (\n condition: DependencyCondition,\n value: any,\n allValues: Record<string, any>\n): boolean => {\n switch (condition.type) {\n case 'equals':\n return value === condition.value;\n case 'notEquals':\n return value !== condition.value;\n case 'in':\n return condition.values.indexOf(value) !== -1;\n case 'notIn':\n return condition.values.indexOf(value) === -1;\n case 'greaterThan':\n return typeof value === 'number' && value > condition.value;\n case 'lessThan':\n return typeof value === 'number' && value < condition.value;\n case 'truthy':\n return !!value && value !== '0' && value !== 'false';\n case 'falsy':\n return !value || value === '0' || value === 'false';\n case 'custom':\n return condition.validator(value, allValues);\n default:\n return true;\n }\n};\n\nconst FormBuilder: React.FC<FormBuilderProps> = ({\n components = { groups: [] },\n editItem = {},\n onFieldChange = (): Promise<void> => Promise.resolve(),\n onFormSubmit = (): Promise<void> => Promise.resolve(),\n onPostFormSubmit = (): Promise<void> => Promise.resolve(),\n onBackPress = (): void => {},\n isProcessing = false,\n usePlaceholder = true,\n buttonConfig,\n}) => {\n const [isSubmitting, setSubmitting] = useState(false);\n const [values, setValues] = useState<Record<string, any>>({});\n\n // Initialize form values with editItem values for proper dependency evaluation\n const initializedValues = useMemo(() => {\n const mergedValues: Record<string, any> = {};\n components.groups.forEach(group => {\n group.fields.forEach(field => {\n // Set both code and db_field for consistency\n if (editItem[field.db_field] !== undefined) {\n mergedValues[field.code] = editItem[field.db_field];\n mergedValues[field.db_field] = editItem[field.db_field];\n } else if (field.value !== undefined) {\n mergedValues[field.code] = field.value;\n mergedValues[field.db_field] = field.value;\n }\n });\n });\n return mergedValues;\n }, [editItem, components]);\n\n // Combine initial values with current form values\n const allValues = useMemo(() => {\n return { ...initializedValues, ...values };\n }, [initializedValues, values]);\n\n /**\n * Evaluates whether a field should be visible based on its dependencies\n * @param field The field to evaluate\n * @returns true if field should be visible, false otherwise\n */\n const isFieldVisible = useCallback(\n (field: FormBuilderField): boolean => {\n if (!field.dependsOn) {\n return true;\n }\n\n const dependencyValue = allValues[field.dependsOn.field];\n return evaluateDependencyCondition(field.dependsOn.condition, dependencyValue, allValues);\n },\n [allValues]\n );\n\n /**\n * Get all visible fields with memoization for performance\n */\n const visibleFieldsByGroup = useMemo(() => {\n const result: Map<string, FormBuilderField[]> = new Map();\n\n components.groups.forEach(group => {\n const visibleFields = group.fields.filter(field => isFieldVisible(field));\n result.set(group.code, visibleFields);\n });\n\n return result;\n }, [components.groups, isFieldVisible]);\n\n // Determine button position (default: 'after')\n const buttonPosition = buttonConfig?.position ?? 'after';\n\n /**\n * Handle field changes with dependency awareness\n */\n const handleFieldChange = useCallback(\n async (code: string, db_field: string, value: any) => {\n setValues(prevValues => {\n const newValues = {\n ...prevValues,\n [code]: value,\n [db_field]: value,\n };\n\n // Check if any fields depend on this field and clear their values if they become hidden\n components.groups.forEach(group => {\n group.fields.forEach(field => {\n if (field.dependsOn?.field === code && field.dependsOn.clearValueOnHide !== false) {\n // Evaluate if the dependent field will be visible with the new value\n const tempValues = { ...allValues, [code]: value };\n const willBeVisible = evaluateDependencyCondition(\n field.dependsOn.condition,\n value,\n tempValues\n );\n\n // If field will be hidden, clear its value\n if (!willBeVisible) {\n delete newValues[field.code];\n delete newValues[field.db_field];\n }\n }\n });\n });\n\n return newValues;\n });\n\n await onFieldChange(code, value);\n },\n [allValues, components.groups, onFieldChange]\n );\n\n // Button container component\n const buttonContainerElement = (\n <ButtonContainer\n {...(buttonConfig !== undefined && { buttonConfig })}\n isSubmitting={isSubmitting}\n isProcessing={isProcessing}\n onBackPress={onBackPress}\n />\n );\n\n return (\n <Form\n isRequired\n isDisabled={isSubmitting || isProcessing}\n width=\"size-6000\"\n validationBehavior=\"native\"\n onSubmit={async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n // Create a new object instead of mutating the existing values\n const submissionValues = { ...values };\n\n // Only include values from visible fields\n const visibleFieldCodes = new Set<string>();\n components.groups.forEach(group => {\n const visibleFields = visibleFieldsByGroup.get(group.code) || [];\n visibleFields.forEach(field => {\n visibleFieldCodes.add(field.db_field);\n });\n });\n\n // Filter out hidden field values\n Object.keys(submissionValues).forEach(key => {\n if (!visibleFieldCodes.has(key)) {\n delete submissionValues[key];\n }\n });\n\n // Add editItem values for fields not changed\n for (const key in editItem) {\n if (\n !Object.prototype.hasOwnProperty.call(submissionValues, key) &&\n visibleFieldCodes.has(key)\n ) {\n submissionValues[key] = editItem[key];\n }\n }\n\n setSubmitting(true);\n await onFormSubmit(submissionValues);\n setSubmitting(false);\n await onPostFormSubmit();\n }}\n >\n <>\n {/* Render buttons before form if position is 'before' */}\n {buttonPosition === 'before' && buttonContainerElement}\n\n {/* Render form fields */}\n {components.groups.map(group => {\n const visibleFields = visibleFieldsByGroup.get(group.code) || [];\n\n // Only render group if it has visible fields\n if (visibleFields.length === 0) {\n return null;\n }\n\n return (\n <Flex key={group.code} direction=\"column\" marginBottom=\"size-200\">\n <Heading id={group.code} level={4} marginTop={0}>\n {group.label}\n </Heading>\n {visibleFields.map(field => (\n <FieldBuilder\n key={field.db_field}\n field={field}\n editItem={editItem}\n usePlaceholder={usePlaceholder}\n onFieldChange={async (code, db_field, value) => {\n await handleFieldChange(code, db_field, value);\n }}\n />\n ))}\n </Flex>\n );\n })}\n\n {/* Render buttons after form if position is 'after' (default) */}\n {buttonPosition === 'after' && buttonContainerElement}\n </>\n </Form>\n );\n};\n\nexport default FormBuilder;\n"],"names":["evaluateDependencyCondition","condition","value","allValues","type","values","indexOf","validator","FormBuilder","_ref","_buttonConfig$positio","_ref$components","components","groups","_ref$editItem","editItem","_ref$onFieldChange","onFieldChange","Promise","resolve","_ref$onFormSubmit","onFormSubmit","_ref$onPostFormSubmit","onPostFormSubmit","_ref$onBackPress","onBackPress","_ref$isProcessing","isProcessing","_ref$usePlaceholder","usePlaceholder","buttonConfig","_useState","useState","_useState2","_slicedToArray","isSubmitting","setSubmitting","_useState3","_useState4","setValues","initializedValues","useMemo","mergedValues","forEach","group","fields","field","db_field","undefined","code","_objectSpread","isFieldVisible","useCallback","dependsOn","dependencyValue","visibleFieldsByGroup","result","Map","visibleFields","filter","set","buttonPosition","position","handleFieldChange","_ref2","_asyncToGenerator","_regenerator","m","_callee","w","_context","n","prevValues","newValues","_defineProperty","_field$dependsOn","clearValueOnHide","tempValues","willBeVisible","a","_x","_x2","_x3","apply","arguments","buttonContainerElement","_jsx","ButtonContainer","Form","isRequired","isDisabled","width","validationBehavior","onSubmit","_onSubmit","_callee2","e","submissionValues","visibleFieldCodes","key","_context2","preventDefault","Set","get","add","Object","keys","has","prototype","hasOwnProperty","call","_x4","_jsxs","_Fragment","children","map","length","Flex","direction","marginBottom","Heading","id","level","marginTop","label","FieldBuilder","_onFieldChange","_callee3","_context3","_x5","_x6","_x7"],"mappings":";;;;;;;;;;;AAUA;;;;;;AAMG;AACH,IAAMA,2BAA2B,GAAG,SAA9BA,2BAA2BA,CAC/BC,SAA8B,EAC9BC,KAAU,EACVC,SAA8B,EACnB;EACX,QAAQF,SAAS,CAACG,IAAI;AACpB,IAAA,KAAK,QAAQ;AACX,MAAA,OAAOF,KAAK,KAAKD,SAAS,CAACC,KAAK;AAClC,IAAA,KAAK,WAAW;AACd,MAAA,OAAOA,KAAK,KAAKD,SAAS,CAACC,KAAK;AAClC,IAAA,KAAK,IAAI;MACP,OAAOD,SAAS,CAACI,MAAM,CAACC,OAAO,CAACJ,KAAK,CAAC,KAAK,EAAE;AAC/C,IAAA,KAAK,OAAO;MACV,OAAOD,SAAS,CAACI,MAAM,CAACC,OAAO,CAACJ,KAAK,CAAC,KAAK,EAAE;AAC/C,IAAA,KAAK,aAAa;MAChB,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,GAAGD,SAAS,CAACC,KAAK;AAC7D,IAAA,KAAK,UAAU;MACb,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,GAAGD,SAAS,CAACC,KAAK;AAC7D,IAAA,KAAK,QAAQ;MACX,OAAO,CAAC,CAACA,KAAK,IAAIA,KAAK,KAAK,GAAG,IAAIA,KAAK,KAAK,OAAO;AACtD,IAAA,KAAK,OAAO;MACV,OAAO,CAACA,KAAK,IAAIA,KAAK,KAAK,GAAG,IAAIA,KAAK,KAAK,OAAO;AACrD,IAAA,KAAK,QAAQ;AACX,MAAA,OAAOD,SAAS,CAACM,SAAS,CAACL,KAAK,EAAEC,SAAS,CAAC;AAC9C,IAAA;AACE,MAAA,OAAO,IAAI;AACf;AACF,CAAC;AAED,IAAMK,WAAW,GAA+B,SAA1CA,WAAWA,CAAAC,IAAA,EAUZ;AAAA,EAAA,IAAAC,qBAAA;AAAA,EAAA,IAAAC,eAAA,GAAAF,IAAA,CATHG,UAAU;IAAVA,UAAU,GAAAD,eAAA,KAAA,MAAA,GAAG;AAAEE,MAAAA,MAAM,EAAE;AAAE,KAAE,GAAAF,eAAA;IAAAG,aAAA,GAAAL,IAAA,CAC3BM,QAAQ;AAARA,IAAAA,QAAQ,GAAAD,aAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,aAAA;IAAAE,kBAAA,GAAAP,IAAA,CACbQ,aAAa;IAAbA,aAAa,GAAAD,kBAAA,KAAA,MAAA,GAAG,YAAA;AAAA,MAAA,OAAqBE,OAAO,CAACC,OAAO,EAAE;AAAA,IAAA,CAAA,GAAAH,kBAAA;IAAAI,iBAAA,GAAAX,IAAA,CACtDY,YAAY;IAAZA,YAAY,GAAAD,iBAAA,KAAA,MAAA,GAAG,YAAA;AAAA,MAAA,OAAqBF,OAAO,CAACC,OAAO,EAAE;AAAA,IAAA,CAAA,GAAAC,iBAAA;IAAAE,qBAAA,GAAAb,IAAA,CACrDc,gBAAgB;IAAhBA,gBAAgB,GAAAD,qBAAA,KAAA,MAAA,GAAG,YAAA;AAAA,MAAA,OAAqBJ,OAAO,CAACC,OAAO,EAAE;AAAA,IAAA,CAAA,GAAAG,qBAAA;IAAAE,gBAAA,GAAAf,IAAA,CACzDgB,WAAW;AAAXA,IAAAA,WAAW,GAAAD,gBAAA,KAAA,MAAA,GAAG,YAAW,CAAE,CAAC,GAAAA,gBAAA;IAAAE,iBAAA,GAAAjB,IAAA,CAC5BkB,YAAY;AAAZA,IAAAA,YAAY,GAAAD,iBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,iBAAA;IAAAE,mBAAA,GAAAnB,IAAA,CACpBoB,cAAc;AAAdA,IAAAA,cAAc,GAAAD,mBAAA,KAAA,MAAA,GAAG,IAAI,GAAAA,mBAAA;IACrBE,YAAY,GAAArB,IAAA,CAAZqB,YAAY;AAEZ,EAAA,IAAAC,SAAA,GAAsCC,cAAQ,CAAC,KAAK,CAAC;IAAAC,UAAA,GAAAC,uCAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAA9CI,IAAAA,YAAY,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,aAAa,GAAAH,UAAA,CAAA,CAAA,CAAA;AAClC,EAAA,IAAAI,UAAA,GAA4BL,cAAQ,CAAsB,EAAE,CAAC;IAAAM,UAAA,GAAAJ,uCAAA,CAAAG,UAAA,EAAA,CAAA,CAAA;AAAtDhC,IAAAA,MAAM,GAAAiC,UAAA,CAAA,CAAA,CAAA;AAAEC,IAAAA,SAAS,GAAAD,UAAA,CAAA,CAAA,CAAA;AAExB;AACA,EAAA,IAAME,iBAAiB,GAAGC,aAAO,CAAC,YAAK;IACrC,IAAMC,YAAY,GAAwB,EAAE;AAC5C9B,IAAAA,UAAU,CAACC,MAAM,CAAC8B,OAAO,CAAC,UAAAC,KAAK,EAAG;AAChCA,MAAAA,KAAK,CAACC,MAAM,CAACF,OAAO,CAAC,UAAAG,KAAK,EAAG;AAC3B;QACA,IAAI/B,QAAQ,CAAC+B,KAAK,CAACC,QAAQ,CAAC,KAAKC,SAAS,EAAE;UAC1CN,YAAY,CAACI,KAAK,CAACG,IAAI,CAAC,GAAGlC,QAAQ,CAAC+B,KAAK,CAACC,QAAQ,CAAC;UACnDL,YAAY,CAACI,KAAK,CAACC,QAAQ,CAAC,GAAGhC,QAAQ,CAAC+B,KAAK,CAACC,QAAQ,CAAC;AACzD,QAAA,CAAC,MAAM,IAAID,KAAK,CAAC5C,KAAK,KAAK8C,SAAS,EAAE;UACpCN,YAAY,CAACI,KAAK,CAACG,IAAI,CAAC,GAAGH,KAAK,CAAC5C,KAAK;UACtCwC,YAAY,CAACI,KAAK,CAACC,QAAQ,CAAC,GAAGD,KAAK,CAAC5C,KAAK;AAC5C,QAAA;AACF,MAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AACF,IAAA,OAAOwC,YAAY;AACrB,EAAA,CAAC,EAAE,CAAC3B,QAAQ,EAAEH,UAAU,CAAC,CAAC;AAE1B;AACA,EAAA,IAAMT,SAAS,GAAGsC,aAAO,CAAC,YAAK;AAC7B,IAAA,OAAAS,uCAAA,CAAAA,uCAAA,CAAA,EAAA,EAAYV,iBAAiB,GAAKnC,MAAM,CAAA;AAC1C,EAAA,CAAC,EAAE,CAACmC,iBAAiB,EAAEnC,MAAM,CAAC,CAAC;AAE/B;;;;AAIG;AACH,EAAA,IAAM8C,cAAc,GAAGC,iBAAW,CAChC,UAACN,KAAuB,EAAa;AACnC,IAAA,IAAI,CAACA,KAAK,CAACO,SAAS,EAAE;AACpB,MAAA,OAAO,IAAI;AACb,IAAA;IAEA,IAAMC,eAAe,GAAGnD,SAAS,CAAC2C,KAAK,CAACO,SAAS,CAACP,KAAK,CAAC;IACxD,OAAO9C,2BAA2B,CAAC8C,KAAK,CAACO,SAAS,CAACpD,SAAS,EAAEqD,eAAe,EAAEnD,SAAS,CAAC;AAC3F,EAAA,CAAC,EACD,CAACA,SAAS,CAAC,CACZ;AAED;;AAEG;AACH,EAAA,IAAMoD,oBAAoB,GAAGd,aAAO,CAAC,YAAK;AACxC,IAAA,IAAMe,MAAM,GAAoC,IAAIC,GAAG,EAAE;AAEzD7C,IAAAA,UAAU,CAACC,MAAM,CAAC8B,OAAO,CAAC,UAAAC,KAAK,EAAG;MAChC,IAAMc,aAAa,GAAGd,KAAK,CAACC,MAAM,CAACc,MAAM,CAAC,UAAAb,KAAK,EAAA;QAAA,OAAIK,cAAc,CAACL,KAAK,CAAC;MAAA,CAAA,CAAC;MACzEU,MAAM,CAACI,GAAG,CAAChB,KAAK,CAACK,IAAI,EAAES,aAAa,CAAC;AACvC,IAAA,CAAC,CAAC;AAEF,IAAA,OAAOF,MAAM;EACf,CAAC,EAAE,CAAC5C,UAAU,CAACC,MAAM,EAAEsC,cAAc,CAAC,CAAC;AAEvC;AACA,EAAA,IAAMU,cAAc,GAAA,CAAAnD,qBAAA,GAAGoB,YAAY,aAAZA,YAAY,KAAA,MAAA,GAAA,MAAA,GAAZA,YAAY,CAAEgC,QAAQ,MAAA,IAAA,IAAApD,qBAAA,KAAA,MAAA,GAAAA,qBAAA,GAAI,OAAO;AAExD;;AAEG;EACH,IAAMqD,iBAAiB,GAAGX,iBAAW,cAAA,YAAA;AAAA,IAAA,IAAAY,KAAA,GAAAC,0CAAA,cAAAC,qCAAA,EAAA,CAAAC,CAAA,CACnC,SAAAC,OAAAA,CAAOnB,IAAY,EAAEF,QAAgB,EAAE7C,KAAU,EAAA;AAAA,MAAA,OAAAgE,qCAAA,EAAA,CAAAG,CAAA,CAAA,UAAAC,QAAA,EAAA;QAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,CAAA;AAAA,UAAA,KAAA,CAAA;YAC/ChC,SAAS,CAAC,UAAAiC,UAAU,EAAG;AACrB,cAAA,IAAMC,SAAS,GAAAvB,uCAAA,CAAAA,uCAAA,CAAA,EAAA,EACVsB,UAAU,CAAA,EAAA,EAAA,EAAAE,wCAAA,CAAAA,wCAAA,CAAA,EAAA,EACZzB,IAAI,EAAG/C,KAAK,GACZ6C,QAAQ,EAAG7C,KAAK,CAAA,CAClB;AAED;AACAU,cAAAA,UAAU,CAACC,MAAM,CAAC8B,OAAO,CAAC,UAAAC,KAAK,EAAG;AAChCA,gBAAAA,KAAK,CAACC,MAAM,CAACF,OAAO,CAAC,UAAAG,KAAK,EAAG;AAAA,kBAAA,IAAA6B,gBAAA;kBAC3B,IAAI,CAAA,CAAAA,gBAAA,GAAA7B,KAAK,CAACO,SAAS,MAAA,IAAA,IAAAsB,gBAAA,KAAA,MAAA,GAAA,MAAA,GAAfA,gBAAA,CAAiB7B,KAAK,MAAKG,IAAI,IAAIH,KAAK,CAACO,SAAS,CAACuB,gBAAgB,KAAK,KAAK,EAAE;AACjF;AACA,oBAAA,IAAMC,UAAU,GAAA3B,uCAAA,CAAAA,uCAAA,CAAA,EAAA,EAAQ/C,SAAS,CAAA,EAAA,EAAA,EAAAuE,wCAAA,CAAA,EAAA,EAAGzB,IAAI,EAAG/C,KAAK,CAAA,CAAE;AAClD,oBAAA,IAAM4E,aAAa,GAAG9E,2BAA2B,CAC/C8C,KAAK,CAACO,SAAS,CAACpD,SAAS,EACzBC,KAAK,EACL2E,UAAU,CACX;AAED;oBACA,IAAI,CAACC,aAAa,EAAE;AAClB,sBAAA,OAAOL,SAAS,CAAC3B,KAAK,CAACG,IAAI,CAAC;AAC5B,sBAAA,OAAOwB,SAAS,CAAC3B,KAAK,CAACC,QAAQ,CAAC;AAClC,oBAAA;AACF,kBAAA;AACF,gBAAA,CAAC,CAAC;AACJ,cAAA,CAAC,CAAC;AAEF,cAAA,OAAO0B,SAAS;AAClB,YAAA,CAAC,CAAC;AAACH,YAAAA,QAAA,CAAAC,CAAA,GAAA,CAAA;AAAA,YAAA,OAEGtD,aAAa,CAACgC,IAAI,EAAE/C,KAAK,CAAC;AAAA,UAAA,KAAA,CAAA;YAAA,OAAAoE,QAAA,CAAAS,CAAA,CAAA,CAAA,CAAA;AAAA;AAAA,MAAA,CAAA,EAAAX,OAAA,CAAA;IAAA,CACjC,CAAA,CAAA;AAAA,IAAA,OAAA,UAAAY,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAA;AAAA,MAAA,OAAAlB,KAAA,CAAAmB,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA;AAAA,IAAA,CAAA;EAAA,CAAA,EAAA,EACD,CAACjF,SAAS,EAAES,UAAU,CAACC,MAAM,EAAEI,aAAa,CAAC,CAC9C;AAED;AACA,EAAA,IAAMoE,sBAAsB,GAC1BC,cAAA,CAACC,aAAe,EAAArC,uCAAA,CAAAA,uCAAA,CAAA,EAAA,EACTpB,YAAY,KAAKkB,SAAS,IAAI;AAAElB,IAAAA,YAAY,EAAZA;GAAc,CAAA,EAAA,EAAA,EAAA;AACnDK,IAAAA,YAAY,EAAEA,YAAY;AAC1BR,IAAAA,YAAY,EAAEA,YAAY;AAC1BF,IAAAA,WAAW,EAAEA;AAAW,GAAA,CAAA,CAE3B;EAED,OACE6D,cAAA,CAACE,kBAAI,EAAA;AACHC,IAAAA,UAAU,EAAA,IAAA;IACVC,UAAU,EAAEvD,YAAY,IAAIR,YAAY;AACxCgE,IAAAA,KAAK,EAAC,WAAW;AACjBC,IAAAA,kBAAkB,EAAC,QAAQ;IAC3BC,QAAQ,EAAA,YAAA;MAAA,IAAAC,SAAA,GAAA7B,0CAAA,cAAAC,qCAAA,GAAAC,CAAA,CAAE,SAAA4B,QAAAA,CAAOC,CAAmC,EAAA;AAAA,QAAA,IAAAC,gBAAA,EAAAC,iBAAA,EAAAC,GAAA;AAAA,QAAA,OAAAjC,qCAAA,EAAA,CAAAG,CAAA,CAAA,UAAA+B,SAAA,EAAA;UAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA7B,CAAA;AAAA,YAAA,KAAA,CAAA;cAClDyB,CAAC,CAACK,cAAc,EAAE;AAClB;AACMJ,cAAAA,gBAAgB,GAAA/C,uCAAA,CAAA,EAAA,EAAQ7C,MAAM,CAAA,CAAA;AAG9B6F,cAAAA,iBAAiB,GAAG,IAAII,GAAG,EAAU;AAC3C1F,cAAAA,UAAU,CAACC,MAAM,CAAC8B,OAAO,CAAC,UAAAC,KAAK,EAAG;gBAChC,IAAMc,aAAa,GAAGH,oBAAoB,CAACgD,GAAG,CAAC3D,KAAK,CAACK,IAAI,CAAC,IAAI,EAAE;AAChES,gBAAAA,aAAa,CAACf,OAAO,CAAC,UAAAG,KAAK,EAAG;AAC5BoD,kBAAAA,iBAAiB,CAACM,GAAG,CAAC1D,KAAK,CAACC,QAAQ,CAAC;AACvC,gBAAA,CAAC,CAAC;AACJ,cAAA,CAAC,CAAC;AAEF;cACA0D,MAAM,CAACC,IAAI,CAACT,gBAAgB,CAAC,CAACtD,OAAO,CAAC,UAAAwD,GAAG,EAAG;AAC1C,gBAAA,IAAI,CAACD,iBAAiB,CAACS,GAAG,CAACR,GAAG,CAAC,EAAE;kBAC/B,OAAOF,gBAAgB,CAACE,GAAG,CAAC;AAC9B,gBAAA;AACF,cAAA,CAAC,CAAC;AAEF;cACA,KAAWA,GAAG,IAAIpF,QAAQ,EAAE;gBAC1B,IACE,CAAC0F,MAAM,CAACG,SAAS,CAACC,cAAc,CAACC,IAAI,CAACb,gBAAgB,EAAEE,GAAG,CAAC,IAC5DD,iBAAiB,CAACS,GAAG,CAACR,GAAG,CAAC,EAC1B;AACAF,kBAAAA,gBAAgB,CAACE,GAAG,CAAC,GAAGpF,QAAQ,CAACoF,GAAG,CAAC;AACvC,gBAAA;AACF,cAAA;cAEA/D,aAAa,CAAC,IAAI,CAAC;AAACgE,cAAAA,SAAA,CAAA7B,CAAA,GAAA,CAAA;cAAA,OACdlD,YAAY,CAAC4E,gBAAgB,CAAC;AAAA,YAAA,KAAA,CAAA;cACpC7D,aAAa,CAAC,KAAK,CAAC;AAACgE,cAAAA,SAAA,CAAA7B,CAAA,GAAA,CAAA;cAAA,OACfhD,gBAAgB,EAAE;AAAA,YAAA,KAAA,CAAA;cAAA,OAAA6E,SAAA,CAAArB,CAAA,CAAA,CAAA,CAAA;AAAA;AAAA,QAAA,CAAA,EAAAgB,QAAA,CAAA;MAAA,CACzB,CAAA,CAAA;MAAA,SAnCDF,QAAQA,CAAAkB,GAAA,EAAA;AAAA,QAAA,OAAAjB,SAAA,CAAAX,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA;AAAA,MAAA;AAAA,MAAA,OAARS,QAAQ;IAAA,CAAA,EAmCP;cAEDmB,eAAA,CAAAC,mBAAA,EAAA;AAAAC,MAAAA,QAAA,EAAA,CAEGrD,cAAc,KAAK,QAAQ,IAAIwB,sBAAsB,EAGrDzE,UAAU,CAACC,MAAM,CAACsG,GAAG,CAAC,UAAAvE,KAAK,EAAG;QAC7B,IAAMc,aAAa,GAAGH,oBAAoB,CAACgD,GAAG,CAAC3D,KAAK,CAACK,IAAI,CAAC,IAAI,EAAE;AAEhE;AACA,QAAA,IAAIS,aAAa,CAAC0D,MAAM,KAAK,CAAC,EAAE;AAC9B,UAAA,OAAO,IAAI;AACb,QAAA;QAEA,OACEJ,eAAA,CAACK,kBAAI,EAAA;AAAkBC,UAAAA,SAAS,EAAC,QAAQ;AAACC,UAAAA,YAAY,EAAC,UAAU;AAAAL,UAAAA,QAAA,EAAA,CAC/D5B,cAAA,CAACkC,qBAAO,EAAA;YAACC,EAAE,EAAE7E,KAAK,CAACK,IAAI;AAAEyE,YAAAA,KAAK,EAAE,CAAC;AAAEC,YAAAA,SAAS,EAAE,CAAC;YAAAT,QAAA,EAC5CtE,KAAK,CAACgF;AAAK,WAAA,CACJ,EACTlE,aAAa,CAACyD,GAAG,CAAC,UAAArE,KAAK,EAAA;YAAA,OACtBwC,cAAA,CAACuC,eAAY,EAAA;AAEX/E,cAAAA,KAAK,EAAEA,KAAK;AACZ/B,cAAAA,QAAQ,EAAEA,QAAQ;AAClBc,cAAAA,cAAc,EAAEA,cAAc;cAC9BZ,aAAa,EAAA,YAAA;AAAA,gBAAA,IAAA6G,cAAA,GAAA7D,0CAAA,cAAAC,qCAAA,EAAA,CAAAC,CAAA,CAAE,SAAA4D,QAAAA,CAAO9E,IAAI,EAAEF,QAAQ,EAAE7C,KAAK,EAAA;AAAA,kBAAA,OAAAgE,qCAAA,EAAA,CAAAG,CAAA,CAAA,UAAA2D,SAAA,EAAA;oBAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAzD,CAAA;AAAA,sBAAA,KAAA,CAAA;AAAAyD,wBAAAA,SAAA,CAAAzD,CAAA,GAAA,CAAA;AAAA,wBAAA,OACnCR,iBAAiB,CAACd,IAAI,EAAEF,QAAQ,EAAE7C,KAAK,CAAC;AAAA,sBAAA,KAAA,CAAA;wBAAA,OAAA8H,SAAA,CAAAjD,CAAA,CAAA,CAAA,CAAA;AAAA;AAAA,kBAAA,CAAA,EAAAgD,QAAA,CAAA;gBAAA,CAC/C,CAAA,CAAA;AAAA,gBAAA,SAFD9G,aAAaA,CAAAgH,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAA;AAAA,kBAAA,OAAAL,cAAA,CAAA3C,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA;AAAA,gBAAA;AAAA,gBAAA,OAAbnE,aAAa;AAAA,cAAA,CAAA;AAEZ,aAAA,EANI6B,KAAK,CAACC,QAAQ,CAOnB;AAAA,UAAA,CACH,CAAC;AAAA,SAAA,EAdOH,KAAK,CAACK,IAAI,CAed;AAEX,MAAA,CAAC,CAAC,EAGDY,cAAc,KAAK,OAAO,IAAIwB,sBAAsB;KAAA;AACpD,GAAA,CACE;AAEX;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../../../../src/components/DataForm/FormBuilder/types.ts"],"sourcesContent":["/**\n * <license header>\n */\nimport React from 'react';\n\nexport enum FieldType {\n TEXT = 'text',\n EMAIL = 'email',\n PASSWORD = 'password',\n NUMBER = 'number',\n URL = 'url',\n TEL = 'tel',\n SEARCH = 'search',\n SELECT = 'select',\n MULTISELECT = 'multiselect',\n TOGGLE = 'toggle',\n LABEL = 'label',\n}\n\nexport interface FormBuilderProps {\n components: FormBuilderComponents;\n editItem?: Record<string, any>;\n onFieldChange?: (field: string, value: any) => Promise<void>;\n onFormSubmit?: (values: Record<string, any>) => Promise<void>;\n onPostFormSubmit?: () => Promise<void>;\n onBackPress?: () => void;\n isProcessing?: boolean;\n usePlaceholder?: boolean;\n}\n\nexport interface FormBuilderComponents {\n groups: FormBuilderGroup[];\n}\n\nexport interface FormBuilderGroup {\n code: string;\n label: string;\n fields: FormBuilderField[];\n}\n\nexport interface FormBuilderField {\n label: string;\n code: string;\n db_field: string;\n type: FieldType;\n required: boolean;\n disabled: boolean;\n use_env_var?: boolean;\n value?: string;\n options?: FormBuilderOption[];\n contextualHelp?: React.ReactNode;\n onFieldChange?: (value: any) => void;\n}\n\nexport interface FormBuilderOption {\n value: string;\n label: string;\n}\n"],"names":["FieldType"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../../../src/components/DataForm/FormBuilder/types.ts"],"sourcesContent":["/**\n * <license header>\n */\nimport React from 'react';\nimport { FormButtonConfig } from '../ButtonContainer/types';\n\nexport enum FieldType {\n TEXT = 'text',\n EMAIL = 'email',\n PASSWORD = 'password',\n NUMBER = 'number',\n URL = 'url',\n TEL = 'tel',\n SEARCH = 'search',\n SELECT = 'select',\n MULTISELECT = 'multiselect',\n TOGGLE = 'toggle',\n LABEL = 'label',\n}\n\n/**\n * Dependency condition types for field visibility\n */\nexport type DependencyCondition =\n | { type: 'equals'; value: any }\n | { type: 'notEquals'; value: any }\n | { type: 'in'; values: any[] }\n | { type: 'notIn'; values: any[] }\n | { type: 'greaterThan'; value: number }\n | { type: 'lessThan'; value: number }\n | { type: 'truthy' }\n | { type: 'falsy' }\n | { type: 'custom'; validator: (value: any, formValues: Record<string, any>) => boolean };\n\n/**\n * Field dependency configuration\n */\nexport interface FieldDependency {\n field: string; // The code of the field this depends on\n condition: DependencyCondition;\n clearValueOnHide?: boolean; // Whether to clear the field value when hidden (default: false)\n}\n\nexport interface FormBuilderProps {\n components: FormBuilderComponents;\n editItem?: Record<string, any>;\n onFieldChange?: (field: string, value: any) => Promise<void>;\n onFormSubmit?: (values: Record<string, any>) => Promise<void>;\n onPostFormSubmit?: () => Promise<void>;\n onBackPress?: () => void;\n isProcessing?: boolean;\n usePlaceholder?: boolean;\n buttonConfig?: FormButtonConfig;\n}\n\nexport interface FormBuilderComponents {\n groups: FormBuilderGroup[];\n}\n\nexport interface FormBuilderGroup {\n code: string;\n label: string;\n fields: FormBuilderField[];\n}\n\nexport interface FormBuilderField {\n label: string;\n code: string;\n db_field: string;\n type: FieldType;\n required: boolean;\n disabled: boolean;\n use_env_var?: boolean;\n value?: string;\n options?: FormBuilderOption[];\n contextualHelp?: React.ReactNode;\n onFieldChange?: (value: any) => void;\n dependsOn?: FieldDependency; // Dependency configuration for conditional visibility\n}\n\nexport interface FormBuilderOption {\n value: string;\n label: string;\n}\n"],"names":["FieldType"],"mappings":";;AAMYA;AAAZ,CAAA,UAAYA,SAAS,EAAA;AACnBA,EAAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACbA,EAAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACfA,EAAAA,SAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrBA,EAAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjBA,EAAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACXA,EAAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACXA,EAAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjBA,EAAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjBA,EAAAA,SAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3BA,EAAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjBA,EAAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACjB,CAAC,EAZWA,iBAAS,KAATA,iBAAS,GAAA,EAAA,CAAA,CAAA;;"}
|
|
@@ -35,7 +35,8 @@ var DataForm = function DataForm(_ref) {
|
|
|
35
35
|
_ref$isProcessing = _ref.isProcessing,
|
|
36
36
|
isProcessing = _ref$isProcessing === void 0 ? false : _ref$isProcessing,
|
|
37
37
|
_ref$usePlaceholder = _ref.usePlaceholder,
|
|
38
|
-
usePlaceholder = _ref$usePlaceholder === void 0 ? true : _ref$usePlaceholder
|
|
38
|
+
usePlaceholder = _ref$usePlaceholder === void 0 ? true : _ref$usePlaceholder,
|
|
39
|
+
buttonConfig = _ref.buttonConfig;
|
|
39
40
|
var _useState = React.useState(true),
|
|
40
41
|
_useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
|
|
41
42
|
isLoading = _useState2[0],
|
|
@@ -77,7 +78,7 @@ var DataForm = function DataForm(_ref) {
|
|
|
77
78
|
isIndeterminate: true
|
|
78
79
|
}) : jsxRuntime.jsx(reactSpectrum.View, {
|
|
79
80
|
width: "100%",
|
|
80
|
-
children: jsxRuntime.jsx(index.default, {
|
|
81
|
+
children: jsxRuntime.jsx(index.default, _rollupPluginBabelHelpers.objectSpread2({
|
|
81
82
|
components: components,
|
|
82
83
|
editItem: editItem,
|
|
83
84
|
onFieldChange: onFieldChange,
|
|
@@ -86,7 +87,9 @@ var DataForm = function DataForm(_ref) {
|
|
|
86
87
|
onPostFormSubmit: onPostFormSubmit,
|
|
87
88
|
isProcessing: isProcessing,
|
|
88
89
|
usePlaceholder: usePlaceholder
|
|
89
|
-
}
|
|
90
|
+
}, buttonConfig !== undefined && {
|
|
91
|
+
buttonConfig: buttonConfig
|
|
92
|
+
}))
|
|
90
93
|
})
|
|
91
94
|
})
|
|
92
95
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/DataForm/index.tsx"],"sourcesContent":["/**\n * <license header>\n */\n\nimport React, { useEffect, useState, useCallback, useRef } from 'react';\nimport { defaultTheme, Provider, Flex, ProgressCircle, View } from '@adobe/react-spectrum';\nimport { DataFormProps } from './types';\nimport FormBuilder from './FormBuilder';\n\nconst DataForm: React.FC<DataFormProps> = ({\n components = { groups: [] },\n editItem,\n onFieldChange = (): Promise<void> => Promise.resolve(),\n onFormLoad = (): Promise<void> => Promise.resolve(),\n onFormSubmit = (): Promise<void> => Promise.resolve(),\n onPostFormSubmit = (): Promise<void> => Promise.resolve(),\n onBackPress = (): void => {},\n isProcessing = false,\n usePlaceholder = true,\n}) => {\n const [isLoading, setLoading] = useState<boolean>(true);\n\n // Stable reference to onFormLoad to prevent infinite loops\n const onFormLoadRef = useRef(onFormLoad);\n\n // Update ref in useEffect instead of during render\n useEffect(() => {\n onFormLoadRef.current = onFormLoad;\n }, [onFormLoad]);\n\n // Stable callback that won't change on every render\n const stableOnFormLoad = useCallback(() => {\n return onFormLoadRef.current();\n }, []);\n\n useEffect(() => {\n (async (): Promise<void> => {\n await stableOnFormLoad();\n setLoading(false);\n })();\n }, [stableOnFormLoad]);\n\n return (\n <Provider theme={defaultTheme} colorScheme={'light'}>\n <Flex width=\"100%\" alignItems=\"center\">\n {isLoading ? (\n <ProgressCircle size=\"L\" aria-label=\"Loading...\" isIndeterminate />\n ) : (\n <View width=\"100%\">\n <FormBuilder\n components={components}\n editItem={editItem}\n onFieldChange={onFieldChange}\n onBackPress={onBackPress}\n onFormSubmit={onFormSubmit}\n onPostFormSubmit={onPostFormSubmit}\n isProcessing={isProcessing}\n usePlaceholder={usePlaceholder}\n />\n </View>\n )}\n </Flex>\n </Provider>\n );\n};\n\nexport default DataForm;\n"],"names":["DataForm","_ref","_ref$components","components","groups","editItem","_ref$onFieldChange","onFieldChange","Promise","resolve","_ref$onFormLoad","onFormLoad","_ref$onFormSubmit","onFormSubmit","_ref$onPostFormSubmit","onPostFormSubmit","_ref$onBackPress","onBackPress","_ref$isProcessing","isProcessing","_ref$usePlaceholder","usePlaceholder","_useState","useState","_useState2","_slicedToArray","isLoading","setLoading","onFormLoadRef","useRef","useEffect","current","stableOnFormLoad","useCallback","_asyncToGenerator","_regenerator","m","_callee","w","_context","n","a","_jsx","Provider","theme","defaultTheme","colorScheme","
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/DataForm/index.tsx"],"sourcesContent":["/**\n * <license header>\n */\n\nimport React, { useEffect, useState, useCallback, useRef } from 'react';\nimport { defaultTheme, Provider, Flex, ProgressCircle, View } from '@adobe/react-spectrum';\nimport { DataFormProps } from './types';\nimport FormBuilder from './FormBuilder';\n\nconst DataForm: React.FC<DataFormProps> = ({\n components = { groups: [] },\n editItem,\n onFieldChange = (): Promise<void> => Promise.resolve(),\n onFormLoad = (): Promise<void> => Promise.resolve(),\n onFormSubmit = (): Promise<void> => Promise.resolve(),\n onPostFormSubmit = (): Promise<void> => Promise.resolve(),\n onBackPress = (): void => {},\n isProcessing = false,\n usePlaceholder = true,\n buttonConfig,\n}) => {\n const [isLoading, setLoading] = useState<boolean>(true);\n\n // Stable reference to onFormLoad to prevent infinite loops\n const onFormLoadRef = useRef(onFormLoad);\n\n // Update ref in useEffect instead of during render\n useEffect(() => {\n onFormLoadRef.current = onFormLoad;\n }, [onFormLoad]);\n\n // Stable callback that won't change on every render\n const stableOnFormLoad = useCallback(() => {\n return onFormLoadRef.current();\n }, []);\n\n useEffect(() => {\n (async (): Promise<void> => {\n await stableOnFormLoad();\n setLoading(false);\n })();\n }, [stableOnFormLoad]);\n\n return (\n <Provider theme={defaultTheme} colorScheme={'light'}>\n <Flex width=\"100%\" alignItems=\"center\">\n {isLoading ? (\n <ProgressCircle size=\"L\" aria-label=\"Loading...\" isIndeterminate />\n ) : (\n <View width=\"100%\">\n <FormBuilder\n components={components}\n editItem={editItem}\n onFieldChange={onFieldChange}\n onBackPress={onBackPress}\n onFormSubmit={onFormSubmit}\n onPostFormSubmit={onPostFormSubmit}\n isProcessing={isProcessing}\n usePlaceholder={usePlaceholder}\n {...(buttonConfig !== undefined && { buttonConfig })}\n />\n </View>\n )}\n </Flex>\n </Provider>\n );\n};\n\nexport default DataForm;\n"],"names":["DataForm","_ref","_ref$components","components","groups","editItem","_ref$onFieldChange","onFieldChange","Promise","resolve","_ref$onFormLoad","onFormLoad","_ref$onFormSubmit","onFormSubmit","_ref$onPostFormSubmit","onPostFormSubmit","_ref$onBackPress","onBackPress","_ref$isProcessing","isProcessing","_ref$usePlaceholder","usePlaceholder","buttonConfig","_useState","useState","_useState2","_slicedToArray","isLoading","setLoading","onFormLoadRef","useRef","useEffect","current","stableOnFormLoad","useCallback","_asyncToGenerator","_regenerator","m","_callee","w","_context","n","a","_jsx","Provider","theme","defaultTheme","colorScheme","Flex","width","alignItems","children","ProgressCircle","size","isIndeterminate","View","FormBuilder","_objectSpread","undefined"],"mappings":"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"}
|
|
@@ -31,7 +31,8 @@ var GridBuilder = function GridBuilder(_ref) {
|
|
|
31
31
|
}, _callee);
|
|
32
32
|
})) : _ref$onGridActionPres,
|
|
33
33
|
_ref$onSelectionChang = _ref.onSelectionChange,
|
|
34
|
-
onSelectionChange = _ref$onSelectionChang === void 0 ? function () {} : _ref$onSelectionChang
|
|
34
|
+
onSelectionChange = _ref$onSelectionChang === void 0 ? function () {} : _ref$onSelectionChang,
|
|
35
|
+
maxHeight = _ref.maxHeight;
|
|
35
36
|
var selectionMode = isMassActionsEnabled ? 'multiple' : 'none';
|
|
36
37
|
// Handle empty columns gracefully
|
|
37
38
|
if (columns.length === 0) {
|
|
@@ -47,66 +48,79 @@ var GridBuilder = function GridBuilder(_ref) {
|
|
|
47
48
|
})
|
|
48
49
|
});
|
|
49
50
|
}
|
|
51
|
+
var tableView = jsxRuntime.jsxs(reactSpectrum.TableView, _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({
|
|
52
|
+
selectionMode: selectionMode,
|
|
53
|
+
onSelectionChange: onSelectionChange,
|
|
54
|
+
minHeight: 'size-6000'
|
|
55
|
+
}, maxHeight && {
|
|
56
|
+
flex: true
|
|
57
|
+
}), {}, {
|
|
58
|
+
renderEmptyState: function renderEmptyState() {
|
|
59
|
+
return jsxRuntime.jsxs(reactSpectrum.IllustratedMessage, {
|
|
60
|
+
children: [jsxRuntime.jsx(reactSpectrum.Heading, {
|
|
61
|
+
children: "No results"
|
|
62
|
+
}), jsxRuntime.jsx(reactSpectrum.Content, {
|
|
63
|
+
children: "No results found"
|
|
64
|
+
})]
|
|
65
|
+
});
|
|
66
|
+
},
|
|
67
|
+
children: [jsxRuntime.jsx(reactSpectrum.TableHeader, {
|
|
68
|
+
columns: columns,
|
|
69
|
+
children: function children(column) {
|
|
70
|
+
return jsxRuntime.jsx(reactSpectrum.Column, {
|
|
71
|
+
align: column.uid === 'actions' ? 'end' : 'start',
|
|
72
|
+
children: column.name
|
|
73
|
+
}, column.uid);
|
|
74
|
+
}
|
|
75
|
+
}), jsxRuntime.jsx(reactSpectrum.TableBody, {
|
|
76
|
+
items: data,
|
|
77
|
+
children: function children(item) {
|
|
78
|
+
return jsxRuntime.jsx(reactSpectrum.Row, {
|
|
79
|
+
children: function children(columnKey) {
|
|
80
|
+
return columnKey === 'actions' ? jsxRuntime.jsx(reactSpectrum.Cell, {
|
|
81
|
+
children: function () {
|
|
82
|
+
switch (gridAction) {
|
|
83
|
+
case types.GridAction.LINKS:
|
|
84
|
+
return jsxRuntime.jsx(index$2.default, {
|
|
85
|
+
item: item,
|
|
86
|
+
gridActions: gridActions,
|
|
87
|
+
onGridActionPress: onGridActionPress
|
|
88
|
+
});
|
|
89
|
+
case types.GridAction.BUTTONS:
|
|
90
|
+
return jsxRuntime.jsx(index$1.default, {
|
|
91
|
+
item: item,
|
|
92
|
+
gridActions: gridActions,
|
|
93
|
+
onGridActionPress: onGridActionPress
|
|
94
|
+
});
|
|
95
|
+
default:
|
|
96
|
+
return jsxRuntime.jsx(index.default, {
|
|
97
|
+
item: item,
|
|
98
|
+
gridActions: gridActions,
|
|
99
|
+
onGridActionPress: onGridActionPress
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}()
|
|
103
|
+
}) : jsxRuntime.jsx(reactSpectrum.Cell, {
|
|
104
|
+
children: item[columnKey]
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
})]
|
|
110
|
+
}));
|
|
111
|
+
if (maxHeight) {
|
|
112
|
+
return jsxRuntime.jsx(reactSpectrum.Flex, {
|
|
113
|
+
height: maxHeight,
|
|
114
|
+
width: '100%',
|
|
115
|
+
direction: "column",
|
|
116
|
+
marginTop: 'size-200',
|
|
117
|
+
children: tableView
|
|
118
|
+
});
|
|
119
|
+
}
|
|
50
120
|
return jsxRuntime.jsx(reactSpectrum.View, {
|
|
51
121
|
width: '100%',
|
|
52
122
|
marginTop: 'size-200',
|
|
53
|
-
children:
|
|
54
|
-
selectionMode: selectionMode,
|
|
55
|
-
onSelectionChange: onSelectionChange,
|
|
56
|
-
minHeight: 'size-6000',
|
|
57
|
-
renderEmptyState: function renderEmptyState() {
|
|
58
|
-
return jsxRuntime.jsxs(reactSpectrum.IllustratedMessage, {
|
|
59
|
-
children: [jsxRuntime.jsx(reactSpectrum.Heading, {
|
|
60
|
-
children: "No results"
|
|
61
|
-
}), jsxRuntime.jsx(reactSpectrum.Content, {
|
|
62
|
-
children: "No results found"
|
|
63
|
-
})]
|
|
64
|
-
});
|
|
65
|
-
},
|
|
66
|
-
children: [jsxRuntime.jsx(reactSpectrum.TableHeader, {
|
|
67
|
-
columns: columns,
|
|
68
|
-
children: function children(column) {
|
|
69
|
-
return jsxRuntime.jsx(reactSpectrum.Column, {
|
|
70
|
-
align: column.uid === 'actions' ? 'end' : 'start',
|
|
71
|
-
children: column.name
|
|
72
|
-
}, column.uid);
|
|
73
|
-
}
|
|
74
|
-
}), jsxRuntime.jsx(reactSpectrum.TableBody, {
|
|
75
|
-
items: data,
|
|
76
|
-
children: function children(item) {
|
|
77
|
-
return jsxRuntime.jsx(reactSpectrum.Row, {
|
|
78
|
-
children: function children(columnKey) {
|
|
79
|
-
return columnKey === 'actions' ? jsxRuntime.jsx(reactSpectrum.Cell, {
|
|
80
|
-
children: function () {
|
|
81
|
-
switch (gridAction) {
|
|
82
|
-
case types.GridAction.LINKS:
|
|
83
|
-
return jsxRuntime.jsx(index$2.default, {
|
|
84
|
-
item: item,
|
|
85
|
-
gridActions: gridActions,
|
|
86
|
-
onGridActionPress: onGridActionPress
|
|
87
|
-
});
|
|
88
|
-
case types.GridAction.BUTTONS:
|
|
89
|
-
return jsxRuntime.jsx(index$1.default, {
|
|
90
|
-
item: item,
|
|
91
|
-
gridActions: gridActions,
|
|
92
|
-
onGridActionPress: onGridActionPress
|
|
93
|
-
});
|
|
94
|
-
default:
|
|
95
|
-
return jsxRuntime.jsx(index.default, {
|
|
96
|
-
item: item,
|
|
97
|
-
gridActions: gridActions,
|
|
98
|
-
onGridActionPress: onGridActionPress
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
}()
|
|
102
|
-
}) : jsxRuntime.jsx(reactSpectrum.Cell, {
|
|
103
|
-
children: item[columnKey]
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
})]
|
|
109
|
-
})
|
|
123
|
+
children: tableView
|
|
110
124
|
});
|
|
111
125
|
};
|
|
112
126
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../src/components/DataTable/GridBuilder/index.tsx"],"sourcesContent":["/**\n * <license header>\n */\n\n// import React from 'react'\nimport {\n Cell,\n Column,\n Content,\n Heading,\n IllustratedMessage,\n Row,\n TableBody,\n TableHeader,\n TableView,\n View,\n} from '@adobe/react-spectrum';\n// import NotFound from '@spectrum-icons/illustrations/NotFound';\nimport { GridBuilderProps } from './types';\nimport { GridAction, DataTableRow } from '../types';\nimport LinksRenderer from './LinksRenderer';\nimport ButtonsRenderer from './ButtonsRenderer';\nimport ActionMenuRenderer from './ActionMenuRenderer';\n\nconst GridBuilder = <T extends DataTableRow = DataTableRow>({\n columns = [],\n data = [],\n isMassActionsEnabled = false,\n gridAction = GridAction.ACTION_MENU,\n gridActions = [],\n onGridActionPress = async (): Promise<void> => {},\n onSelectionChange = (): void => {},\n}: GridBuilderProps<T>): JSX.Element => {\n const selectionMode = isMassActionsEnabled ? 'multiple' : 'none';\n\n // Handle empty columns gracefully\n if (columns.length === 0) {\n return (\n <View width={'100%'} marginTop={'size-200'}>\n <IllustratedMessage>\n <Heading>No columns configured</Heading>\n <Content>Please configure columns to display data</Content>\n </IllustratedMessage>\n </View>\n );\n }\n\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/components/DataTable/GridBuilder/index.tsx"],"sourcesContent":["/**\n * <license header>\n */\n\n// import React from 'react'\nimport {\n Cell,\n Column,\n Content,\n Flex,\n Heading,\n IllustratedMessage,\n Row,\n TableBody,\n TableHeader,\n TableView,\n View,\n} from '@adobe/react-spectrum';\n// import NotFound from '@spectrum-icons/illustrations/NotFound';\nimport { GridBuilderProps } from './types';\nimport { GridAction, DataTableRow } from '../types';\nimport LinksRenderer from './LinksRenderer';\nimport ButtonsRenderer from './ButtonsRenderer';\nimport ActionMenuRenderer from './ActionMenuRenderer';\n\nconst GridBuilder = <T extends DataTableRow = DataTableRow>({\n columns = [],\n data = [],\n isMassActionsEnabled = false,\n gridAction = GridAction.ACTION_MENU,\n gridActions = [],\n onGridActionPress = async (): Promise<void> => {},\n onSelectionChange = (): void => {},\n maxHeight,\n}: GridBuilderProps<T>): JSX.Element => {\n const selectionMode = isMassActionsEnabled ? 'multiple' : 'none';\n\n // Handle empty columns gracefully\n if (columns.length === 0) {\n return (\n <View width={'100%'} marginTop={'size-200'}>\n <IllustratedMessage>\n <Heading>No columns configured</Heading>\n <Content>Please configure columns to display data</Content>\n </IllustratedMessage>\n </View>\n );\n }\n\n const tableView = (\n <TableView\n selectionMode={selectionMode}\n onSelectionChange={onSelectionChange}\n minHeight={'size-6000'}\n {...(maxHeight && { flex: true })}\n renderEmptyState={(): JSX.Element => {\n return (\n <IllustratedMessage>\n <Heading>No results</Heading>\n <Content>No results found</Content>\n </IllustratedMessage>\n );\n }}\n >\n <TableHeader columns={columns}>\n {(column: { uid: string; name: string }): JSX.Element => (\n <Column key={column.uid} align={column.uid === 'actions' ? 'end' : 'start'}>\n {column.name}\n </Column>\n )}\n </TableHeader>\n <TableBody items={data}>\n {(item: T): JSX.Element => (\n <Row>\n {(columnKey: React.Key): JSX.Element =>\n columnKey === 'actions' ? (\n <Cell>\n {((): JSX.Element => {\n switch (gridAction) {\n case GridAction.LINKS:\n return (\n <LinksRenderer\n item={item}\n gridActions={gridActions}\n onGridActionPress={onGridActionPress}\n />\n );\n case GridAction.BUTTONS:\n return (\n <ButtonsRenderer\n item={item}\n gridActions={gridActions}\n onGridActionPress={onGridActionPress}\n />\n );\n default:\n return (\n <ActionMenuRenderer\n item={item}\n gridActions={gridActions}\n onGridActionPress={onGridActionPress}\n />\n );\n }\n })()}\n </Cell>\n ) : (\n <Cell>{item[columnKey as string] as any}</Cell>\n )\n }\n </Row>\n )}\n </TableBody>\n </TableView>\n );\n\n if (maxHeight) {\n return (\n <Flex height={maxHeight} width={'100%'} direction=\"column\" marginTop={'size-200'}>\n {tableView}\n </Flex>\n );\n }\n\n return (\n <View width={'100%'} marginTop={'size-200'}>\n {tableView}\n </View>\n );\n};\n\nexport default GridBuilder;\n"],"names":["GridBuilder","_ref","_ref$columns","columns","_ref$data","data","_ref$isMassActionsEna","isMassActionsEnabled","_ref$gridAction","gridAction","GridAction","ACTION_MENU","_ref$gridActions","gridActions","_ref$onGridActionPres","onGridActionPress","_asyncToGenerator","_regenerator","m","_callee","w","_context","n","a","_ref$onSelectionChang","onSelectionChange","maxHeight","selectionMode","length","_jsx","View","width","marginTop","children","_jsxs","IllustratedMessage","Heading","Content","tableView","TableView","_objectSpread","minHeight","flex","renderEmptyState","TableHeader","column","Column","align","uid","name","TableBody","items","item","Row","columnKey","Cell","LINKS","LinksRenderer","BUTTONS","ButtonsRenderer","ActionMenuRenderer","Flex","height","direction"],"mappings":"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"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
+
var React = require('react');
|
|
8
|
+
var reactSpectrum = require('@adobe/react-spectrum');
|
|
9
|
+
|
|
10
|
+
var SearchBar = function SearchBar(_ref) {
|
|
11
|
+
var searchConfig = _ref.searchConfig,
|
|
12
|
+
onSearch = _ref.onSearch;
|
|
13
|
+
var _searchConfig$enabled = searchConfig.enabled,
|
|
14
|
+
enabled = _searchConfig$enabled === void 0 ? false : _searchConfig$enabled,
|
|
15
|
+
_searchConfig$placeho = searchConfig.placeholder,
|
|
16
|
+
placeholder = _searchConfig$placeho === void 0 ? 'Search...' : _searchConfig$placeho,
|
|
17
|
+
_searchConfig$searchB = searchConfig.searchButtonLabel,
|
|
18
|
+
searchButtonLabel = _searchConfig$searchB === void 0 ? 'Search' : _searchConfig$searchB,
|
|
19
|
+
_searchConfig$showCle = searchConfig.showClearButton,
|
|
20
|
+
showClearButton = _searchConfig$showCle === void 0 ? true : _searchConfig$showCle,
|
|
21
|
+
_searchConfig$searchO = searchConfig.searchOnType,
|
|
22
|
+
searchOnType = _searchConfig$searchO === void 0 ? false : _searchConfig$searchO,
|
|
23
|
+
_searchConfig$debounc = searchConfig.debounceMs,
|
|
24
|
+
debounceMs = _searchConfig$debounc === void 0 ? 300 : _searchConfig$debounc,
|
|
25
|
+
_searchConfig$searcha = searchConfig.searchableColumns,
|
|
26
|
+
searchableColumns = _searchConfig$searcha === void 0 ? [] : _searchConfig$searcha,
|
|
27
|
+
_searchConfig$minChar = searchConfig.minCharacters,
|
|
28
|
+
minCharacters = _searchConfig$minChar === void 0 ? 1 : _searchConfig$minChar,
|
|
29
|
+
_searchConfig$maxLeng = searchConfig.maxLength,
|
|
30
|
+
maxLength = _searchConfig$maxLeng === void 0 ? 100 : _searchConfig$maxLeng,
|
|
31
|
+
_searchConfig$isSearc = searchConfig.isSearching,
|
|
32
|
+
isSearching = _searchConfig$isSearc === void 0 ? false : _searchConfig$isSearc,
|
|
33
|
+
_searchConfig$ariaLab = searchConfig.ariaLabel,
|
|
34
|
+
ariaLabel = _searchConfig$ariaLab === void 0 ? 'Search table' : _searchConfig$ariaLab;
|
|
35
|
+
var _useState = React.useState(''),
|
|
36
|
+
_useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
|
|
37
|
+
searchText = _useState2[0],
|
|
38
|
+
setSearchText = _useState2[1];
|
|
39
|
+
var debounceTimerRef = React.useRef(null);
|
|
40
|
+
var isUnmountedRef = React.useRef(false);
|
|
41
|
+
// Cleanup on unmount
|
|
42
|
+
React.useEffect(function () {
|
|
43
|
+
return function () {
|
|
44
|
+
isUnmountedRef.current = true;
|
|
45
|
+
if (debounceTimerRef.current) {
|
|
46
|
+
clearTimeout(debounceTimerRef.current);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
}, []);
|
|
50
|
+
// Stable reference to onSearch to prevent re-creating callbacks
|
|
51
|
+
var onSearchRef = React.useRef(onSearch);
|
|
52
|
+
React.useEffect(function () {
|
|
53
|
+
onSearchRef.current = onSearch;
|
|
54
|
+
}, [onSearch]);
|
|
55
|
+
// Perform search with validation
|
|
56
|
+
var performSearch = React.useCallback(/*#__PURE__*/function () {
|
|
57
|
+
var _ref2 = _rollupPluginBabelHelpers.asyncToGenerator(/*#__PURE__*/_rollupPluginBabelHelpers.regenerator().m(function _callee(text) {
|
|
58
|
+
var trimmedText, columnsToSearch;
|
|
59
|
+
return _rollupPluginBabelHelpers.regenerator().w(function (_context) {
|
|
60
|
+
while (1) switch (_context.n) {
|
|
61
|
+
case 0:
|
|
62
|
+
if (!isUnmountedRef.current) {
|
|
63
|
+
_context.n = 1;
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
return _context.a(2);
|
|
67
|
+
case 1:
|
|
68
|
+
if (!(text.length > 0 && text.length < minCharacters)) {
|
|
69
|
+
_context.n = 2;
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
return _context.a(2);
|
|
73
|
+
case 2:
|
|
74
|
+
// Trim the search text
|
|
75
|
+
trimmedText = text.trim(); // Call onSearch callback with searchable columns if specified
|
|
76
|
+
columnsToSearch = searchableColumns.length > 0 ? searchableColumns : undefined;
|
|
77
|
+
_context.n = 3;
|
|
78
|
+
return onSearchRef.current(trimmedText, columnsToSearch);
|
|
79
|
+
case 3:
|
|
80
|
+
return _context.a(2);
|
|
81
|
+
}
|
|
82
|
+
}, _callee);
|
|
83
|
+
}));
|
|
84
|
+
return function (_x) {
|
|
85
|
+
return _ref2.apply(this, arguments);
|
|
86
|
+
};
|
|
87
|
+
}(), [minCharacters, searchableColumns]);
|
|
88
|
+
// Handle debounced search for search-as-you-type mode
|
|
89
|
+
React.useEffect(function () {
|
|
90
|
+
if (!searchOnType) return function () {};
|
|
91
|
+
// Clear existing timer
|
|
92
|
+
if (debounceTimerRef.current) {
|
|
93
|
+
clearTimeout(debounceTimerRef.current);
|
|
94
|
+
}
|
|
95
|
+
// Set new debounce timer
|
|
96
|
+
debounceTimerRef.current = setTimeout(function () {
|
|
97
|
+
performSearch(searchText);
|
|
98
|
+
}, debounceMs);
|
|
99
|
+
// Cleanup function
|
|
100
|
+
return function () {
|
|
101
|
+
if (debounceTimerRef.current) {
|
|
102
|
+
clearTimeout(debounceTimerRef.current);
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
}, [searchText, searchOnType, debounceMs, performSearch]);
|
|
106
|
+
// Handle search button click (for button mode)
|
|
107
|
+
var handleSearchButtonClick = React.useCallback(/*#__PURE__*/_rollupPluginBabelHelpers.asyncToGenerator(/*#__PURE__*/_rollupPluginBabelHelpers.regenerator().m(function _callee2() {
|
|
108
|
+
return _rollupPluginBabelHelpers.regenerator().w(function (_context2) {
|
|
109
|
+
while (1) switch (_context2.n) {
|
|
110
|
+
case 0:
|
|
111
|
+
if (searchOnType) {
|
|
112
|
+
_context2.n = 1;
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
_context2.n = 1;
|
|
116
|
+
return performSearch(searchText);
|
|
117
|
+
case 1:
|
|
118
|
+
return _context2.a(2);
|
|
119
|
+
}
|
|
120
|
+
}, _callee2);
|
|
121
|
+
})), [searchOnType, searchText, performSearch]);
|
|
122
|
+
// Handle clear button
|
|
123
|
+
var handleClear = React.useCallback(function () {
|
|
124
|
+
// Cancel pending searches
|
|
125
|
+
if (debounceTimerRef.current) {
|
|
126
|
+
clearTimeout(debounceTimerRef.current);
|
|
127
|
+
debounceTimerRef.current = null;
|
|
128
|
+
}
|
|
129
|
+
setSearchText('');
|
|
130
|
+
// Trigger search with empty string
|
|
131
|
+
performSearch('');
|
|
132
|
+
}, [performSearch]);
|
|
133
|
+
// Handle Enter key press
|
|
134
|
+
var handleKeyDown = React.useCallback(function (e) {
|
|
135
|
+
if (e.key === 'Enter') {
|
|
136
|
+
// In button mode, Enter triggers search
|
|
137
|
+
// In type mode, Enter also triggers immediate search (bypassing debounce)
|
|
138
|
+
performSearch(searchText);
|
|
139
|
+
} else if (e.key === 'Escape' && showClearButton) {
|
|
140
|
+
handleClear();
|
|
141
|
+
}
|
|
142
|
+
}, [searchText, showClearButton, performSearch, handleClear]);
|
|
143
|
+
// Don't render if search is not enabled
|
|
144
|
+
if (!enabled) {
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
return jsxRuntime.jsxs(reactSpectrum.Flex, {
|
|
148
|
+
direction: "row",
|
|
149
|
+
gap: "size-100",
|
|
150
|
+
alignItems: "center",
|
|
151
|
+
children: [jsxRuntime.jsx(reactSpectrum.SearchField, _rollupPluginBabelHelpers.objectSpread2({
|
|
152
|
+
"aria-label": ariaLabel,
|
|
153
|
+
placeholder: placeholder,
|
|
154
|
+
value: searchText,
|
|
155
|
+
onChange: setSearchText,
|
|
156
|
+
onKeyDown: handleKeyDown,
|
|
157
|
+
maxLength: maxLength,
|
|
158
|
+
width: "size-3000",
|
|
159
|
+
isDisabled: isSearching
|
|
160
|
+
}, showClearButton && {
|
|
161
|
+
onClear: handleClear
|
|
162
|
+
})), !searchOnType && jsxRuntime.jsx(reactSpectrum.ActionButton, {
|
|
163
|
+
"aria-label": searchButtonLabel,
|
|
164
|
+
onPress: handleSearchButtonClick,
|
|
165
|
+
isDisabled: isSearching || searchText.length > 0 && searchText.length < minCharacters,
|
|
166
|
+
children: isSearching ? jsxRuntime.jsx(reactSpectrum.ProgressCircle, {
|
|
167
|
+
size: "S",
|
|
168
|
+
"aria-label": "Searching...",
|
|
169
|
+
isIndeterminate: true
|
|
170
|
+
}) : jsxRuntime.jsx(jsxRuntime.Fragment, {
|
|
171
|
+
children: jsxRuntime.jsx(reactSpectrum.Text, {
|
|
172
|
+
children: searchButtonLabel
|
|
173
|
+
})
|
|
174
|
+
})
|
|
175
|
+
}), searchOnType && isSearching && jsxRuntime.jsx(reactSpectrum.ProgressCircle, {
|
|
176
|
+
size: "S",
|
|
177
|
+
"aria-label": "Searching...",
|
|
178
|
+
isIndeterminate: true
|
|
179
|
+
})]
|
|
180
|
+
});
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
exports.default = SearchBar;
|
|
184
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/components/DataTable/SearchBar/index.tsx"],"sourcesContent":["/**\n * <license header>\n */\n\nimport { useState, useEffect, useRef, useCallback } from 'react';\nimport { Flex, SearchField, ActionButton, ProgressCircle, Text } from '@adobe/react-spectrum';\nimport { DataTableSearchConfig } from '../types';\n\nexport interface SearchBarProps {\n searchConfig: DataTableSearchConfig;\n onSearch: (searchText: string, searchColumns?: string[]) => Promise<void>;\n}\n\nconst SearchBar = ({ searchConfig, onSearch }: SearchBarProps): JSX.Element | null => {\n const {\n enabled = false,\n placeholder = 'Search...',\n searchButtonLabel = 'Search',\n showClearButton = true,\n searchOnType = false,\n debounceMs = 300,\n searchableColumns = [],\n minCharacters = 1,\n maxLength = 100,\n isSearching = false,\n ariaLabel = 'Search table',\n } = searchConfig;\n\n const [searchText, setSearchText] = useState('');\n const debounceTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const isUnmountedRef = useRef(false);\n\n // Cleanup on unmount\n useEffect((): (() => void) => {\n return (): void => {\n isUnmountedRef.current = true;\n if (debounceTimerRef.current) {\n clearTimeout(debounceTimerRef.current);\n }\n };\n }, []);\n\n // Stable reference to onSearch to prevent re-creating callbacks\n const onSearchRef = useRef(onSearch);\n useEffect(() => {\n onSearchRef.current = onSearch;\n }, [onSearch]);\n\n // Perform search with validation\n const performSearch = useCallback(\n async (text: string) => {\n // Skip if unmounted\n if (isUnmountedRef.current) return;\n\n // Validate minimum characters (except for empty string which means \"clear search\")\n if (text.length > 0 && text.length < minCharacters) {\n return;\n }\n\n // Trim the search text\n const trimmedText = text.trim();\n\n // Call onSearch callback with searchable columns if specified\n const columnsToSearch = searchableColumns.length > 0 ? searchableColumns : undefined;\n await onSearchRef.current(trimmedText, columnsToSearch);\n },\n [minCharacters, searchableColumns]\n );\n\n // Handle debounced search for search-as-you-type mode\n useEffect((): (() => void) => {\n if (!searchOnType) return (): void => {};\n\n // Clear existing timer\n if (debounceTimerRef.current) {\n clearTimeout(debounceTimerRef.current);\n }\n\n // Set new debounce timer\n debounceTimerRef.current = setTimeout(() => {\n performSearch(searchText);\n }, debounceMs);\n\n // Cleanup function\n return (): void => {\n if (debounceTimerRef.current) {\n clearTimeout(debounceTimerRef.current);\n }\n };\n }, [searchText, searchOnType, debounceMs, performSearch]);\n\n // Handle search button click (for button mode)\n const handleSearchButtonClick = useCallback(async () => {\n if (!searchOnType) {\n await performSearch(searchText);\n }\n }, [searchOnType, searchText, performSearch]);\n\n // Handle clear button\n const handleClear = useCallback(() => {\n // Cancel pending searches\n if (debounceTimerRef.current) {\n clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = null;\n }\n\n setSearchText('');\n // Trigger search with empty string\n performSearch('');\n }, [performSearch]);\n\n // Handle Enter key press\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n // In button mode, Enter triggers search\n // In type mode, Enter also triggers immediate search (bypassing debounce)\n performSearch(searchText);\n } else if (e.key === 'Escape' && showClearButton) {\n handleClear();\n }\n },\n [searchText, showClearButton, performSearch, handleClear]\n );\n\n // Don't render if search is not enabled\n if (!enabled) {\n return null;\n }\n\n return (\n <Flex direction=\"row\" gap=\"size-100\" alignItems=\"center\">\n <SearchField\n aria-label={ariaLabel}\n placeholder={placeholder}\n value={searchText}\n onChange={setSearchText}\n onKeyDown={handleKeyDown}\n maxLength={maxLength}\n width=\"size-3000\"\n isDisabled={isSearching}\n // We'll use the built-in clear button from SearchField\n {...(showClearButton && { onClear: handleClear })}\n />\n {!searchOnType && (\n <ActionButton\n aria-label={searchButtonLabel}\n onPress={handleSearchButtonClick}\n isDisabled={isSearching || (searchText.length > 0 && searchText.length < minCharacters)}\n >\n {isSearching ? (\n <ProgressCircle size=\"S\" aria-label=\"Searching...\" isIndeterminate />\n ) : (\n <>\n <Text>{searchButtonLabel}</Text>\n </>\n )}\n </ActionButton>\n )}\n {searchOnType && isSearching && (\n <ProgressCircle size=\"S\" aria-label=\"Searching...\" isIndeterminate />\n )}\n </Flex>\n );\n};\n\nexport default SearchBar;\n"],"names":["SearchBar","_ref","searchConfig","onSearch","_searchConfig$enabled","enabled","_searchConfig$placeho","placeholder","_searchConfig$searchB","searchButtonLabel","_searchConfig$showCle","showClearButton","_searchConfig$searchO","searchOnType","_searchConfig$debounc","debounceMs","_searchConfig$searcha","searchableColumns","_searchConfig$minChar","minCharacters","_searchConfig$maxLeng","maxLength","_searchConfig$isSearc","isSearching","_searchConfig$ariaLab","ariaLabel","_useState","useState","_useState2","_slicedToArray","searchText","setSearchText","debounceTimerRef","useRef","isUnmountedRef","useEffect","current","clearTimeout","onSearchRef","performSearch","useCallback","_ref2","_asyncToGenerator","_regenerator","m","_callee","text","trimmedText","columnsToSearch","w","_context","n","a","length","trim","undefined","_x","apply","arguments","setTimeout","handleSearchButtonClick","_callee2","_context2","handleClear","handleKeyDown","e","key","_jsxs","Flex","direction","gap","alignItems","children","_jsx","SearchField","_objectSpread","value","onChange","onKeyDown","width","isDisabled","onClear","ActionButton","onPress","ProgressCircle","size","isIndeterminate","_Fragment","Text"],"mappings":"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"}
|