@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.
Files changed (66) hide show
  1. package/CHANGELOG.md +117 -0
  2. package/README.md +590 -2
  3. package/dist/cjs/components/DataForm/ButtonContainer/index.js +158 -0
  4. package/dist/cjs/components/DataForm/ButtonContainer/index.js.map +1 -0
  5. package/dist/cjs/components/DataForm/FieldBuilder/index.js +3 -2
  6. package/dist/cjs/components/DataForm/FieldBuilder/index.js.map +1 -1
  7. package/dist/cjs/components/DataForm/FormBuilder/index.js +178 -65
  8. package/dist/cjs/components/DataForm/FormBuilder/index.js.map +1 -1
  9. package/dist/cjs/components/DataForm/FormBuilder/types.js.map +1 -1
  10. package/dist/cjs/components/DataForm/index.js +6 -3
  11. package/dist/cjs/components/DataForm/index.js.map +1 -1
  12. package/dist/cjs/components/DataTable/GridBuilder/index.js +72 -58
  13. package/dist/cjs/components/DataTable/GridBuilder/index.js.map +1 -1
  14. package/dist/cjs/components/DataTable/SearchBar/index.js +184 -0
  15. package/dist/cjs/components/DataTable/SearchBar/index.js.map +1 -0
  16. package/dist/cjs/components/DataTable/index.js +53 -33
  17. package/dist/cjs/components/DataTable/index.js.map +1 -1
  18. package/dist/cjs/components/DataTable/types.js.map +1 -1
  19. package/dist/cjs/components/FileUpload/index.js +12 -2
  20. package/dist/cjs/components/FileUpload/index.js.map +1 -1
  21. package/dist/esm/components/DataForm/ButtonContainer/index.js +154 -0
  22. package/dist/esm/components/DataForm/ButtonContainer/index.js.map +1 -0
  23. package/dist/esm/components/DataForm/FieldBuilder/index.js +3 -2
  24. package/dist/esm/components/DataForm/FieldBuilder/index.js.map +1 -1
  25. package/dist/esm/components/DataForm/FormBuilder/index.js +180 -67
  26. package/dist/esm/components/DataForm/FormBuilder/index.js.map +1 -1
  27. package/dist/esm/components/DataForm/FormBuilder/types.js.map +1 -1
  28. package/dist/esm/components/DataForm/index.js +7 -4
  29. package/dist/esm/components/DataForm/index.js.map +1 -1
  30. package/dist/esm/components/DataTable/GridBuilder/index.js +74 -60
  31. package/dist/esm/components/DataTable/GridBuilder/index.js.map +1 -1
  32. package/dist/esm/components/DataTable/SearchBar/index.js +180 -0
  33. package/dist/esm/components/DataTable/SearchBar/index.js.map +1 -0
  34. package/dist/esm/components/DataTable/index.js +53 -33
  35. package/dist/esm/components/DataTable/index.js.map +1 -1
  36. package/dist/esm/components/DataTable/types.js.map +1 -1
  37. package/dist/esm/components/FileUpload/index.js +13 -3
  38. package/dist/esm/components/FileUpload/index.js.map +1 -1
  39. package/dist/esm/types/components/DataForm/ButtonContainer/index.d.ts +12 -0
  40. package/dist/esm/types/components/DataForm/ButtonContainer/index.d.ts.map +1 -0
  41. package/dist/esm/types/components/DataForm/ButtonContainer/types.d.ts +82 -0
  42. package/dist/esm/types/components/DataForm/ButtonContainer/types.d.ts.map +1 -0
  43. package/dist/esm/types/components/DataForm/FieldBuilder/index.d.ts.map +1 -1
  44. package/dist/esm/types/components/DataForm/FormBuilder/index.d.ts.map +1 -1
  45. package/dist/esm/types/components/DataForm/FormBuilder/types.d.ts +40 -0
  46. package/dist/esm/types/components/DataForm/FormBuilder/types.d.ts.map +1 -1
  47. package/dist/esm/types/components/DataForm/index.d.ts.map +1 -1
  48. package/dist/esm/types/components/DataForm/types.d.ts +2 -0
  49. package/dist/esm/types/components/DataForm/types.d.ts.map +1 -1
  50. package/dist/esm/types/components/DataTable/GridBuilder/index.d.ts +1 -1
  51. package/dist/esm/types/components/DataTable/GridBuilder/index.d.ts.map +1 -1
  52. package/dist/esm/types/components/DataTable/GridBuilder/types.d.ts +1 -0
  53. package/dist/esm/types/components/DataTable/GridBuilder/types.d.ts.map +1 -1
  54. package/dist/esm/types/components/DataTable/SearchBar/index.d.ts +11 -0
  55. package/dist/esm/types/components/DataTable/SearchBar/index.d.ts.map +1 -0
  56. package/dist/esm/types/components/DataTable/index.d.ts +1 -1
  57. package/dist/esm/types/components/DataTable/index.d.ts.map +1 -1
  58. package/dist/esm/types/components/DataTable/types.d.ts +38 -0
  59. package/dist/esm/types/components/DataTable/types.d.ts.map +1 -1
  60. package/dist/esm/types/components/FileUpload/index.d.ts +2 -3
  61. package/dist/esm/types/components/FileUpload/index.d.ts.map +1 -1
  62. package/dist/esm/types/components/FileUpload/types.d.ts +14 -0
  63. package/dist/esm/types/components/FileUpload/types.d.ts.map +1 -1
  64. package/dist/esm/types/components/index.d.ts +2 -1
  65. package/dist/esm/types/components/index.d.ts.map +1 -1
  66. 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":"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"}
@@ -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":";;AAKYA;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;;"}
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","children","Flex","width","alignItems","ProgressCircle","size","isIndeterminate","View","FormBuilder"],"mappings":"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"}
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: jsxRuntime.jsxs(reactSpectrum.TableView, {
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 return (\n <View width={'100%'} marginTop={'size-200'}>\n <TableView\n selectionMode={selectionMode}\n onSelectionChange={onSelectionChange}\n minHeight={'size-6000'}\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): 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): JSX.Element => (\n <Row>\n {(columnKey): 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 any}</Cell>\n )\n }\n </Row>\n )}\n </TableBody>\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","selectionMode","length","_jsx","View","width","marginTop","children","_jsxs","IllustratedMessage","Heading","Content","TableView","minHeight","renderEmptyState","TableHeader","column","Column","align","uid","name","TableBody","items","item","Row","columnKey","Cell","LINKS","LinksRenderer","BUTTONS","ButtonsRenderer","ActionMenuRenderer"],"mappings":";;;;;;;;;;;;AAwBA,IAAMA,WAAW,GAAG,SAAdA,WAAWA,CAAAC,IAAA,EAQsB;AAAA,EAAA,IAAAC,YAAA,GAAAD,IAAA,CAPrCE,OAAO;AAAPA,IAAAA,OAAO,GAAAD,YAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,YAAA;IAAAE,SAAA,GAAAH,IAAA,CACZI,IAAI;AAAJA,IAAAA,IAAI,GAAAD,SAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,SAAA;IAAAE,qBAAA,GAAAL,IAAA,CACTM,oBAAoB;AAApBA,IAAAA,oBAAoB,GAAAD,qBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,qBAAA;IAAAE,eAAA,GAAAP,IAAA,CAC5BQ,UAAU;AAAVA,IAAAA,UAAU,GAAAD,eAAA,KAAA,MAAA,GAAGE,gBAAU,CAACC,WAAW,GAAAH,eAAA;IAAAI,gBAAA,GAAAX,IAAA,CACnCY,WAAW;AAAXA,IAAAA,WAAW,GAAAD,gBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,gBAAA;IAAAE,qBAAA,GAAAb,IAAA,CAChBc,iBAAiB;IAAjBA,iBAAiB,GAAAD,qBAAA,KAAA,MAAA,gBAAAE,0CAAA,cAAAC,qCAAA,EAAA,CAAAC,CAAA,CAAG,SAAAC,OAAAA,GAAA;AAAA,MAAA,OAAAF,qCAAA,EAAA,CAAAG,CAAA,CAAA,UAAAC,QAAA,EAAA;QAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,CAAA;AAAA,UAAA,KAAA,CAAA;YAAA,OAAAD,QAAA,CAAAE,CAAA,CAAA,CAAA,CAAA;AAAA;AAAA,MAAA,CAAA,EAAAJ,OAAA,CAAA;AAAA,IAAA,CAA6B,KAAAL,qBAAA;IAAAU,qBAAA,GAAAvB,IAAA,CACjDwB,iBAAiB;AAAjBA,IAAAA,iBAAiB,GAAAD,qBAAA,KAAA,MAAA,GAAG,aAAa,CAAC,GAAAA,qBAAA;AAElC,EAAA,IAAME,aAAa,GAAGnB,oBAAoB,GAAG,UAAU,GAAG,MAAM;AAEhE;AACA,EAAA,IAAIJ,OAAO,CAACwB,MAAM,KAAK,CAAC,EAAE;IACxB,OACEC,cAAA,CAACC,kBAAI,EAAA;AAACC,MAAAA,KAAK,EAAE,MAAM;AAAEC,MAAAA,SAAS,EAAE,UAAU;AAAAC,MAAAA,QAAA,EACxCC,gBAACC,gCAAkB,EAAA;AAAAF,QAAAA,QAAA,EAAA,CACjBJ,cAAA,CAACO,qBAAO,EAAA;AAAAH,UAAAA,QAAA,EAAA;AAAA,SAAA,CAAgC,EACxCJ,cAAA,CAACQ,qBAAO,EAAA;AAAAJ,UAAAA,QAAA,EAAA;AAAA,SAAA,CAAmD;OAAA;AACxC,KAAA,CAChB;AAEX,EAAA;EAEA,OACEJ,cAAA,CAACC,kBAAI,EAAA;AAACC,IAAAA,KAAK,EAAE,MAAM;AAAEC,IAAAA,SAAS,EAAE,UAAU;AAAAC,IAAAA,QAAA,EACxCC,gBAACI,uBAAS,EAAA;AACRX,MAAAA,aAAa,EAAEA,aAAa;AAC5BD,MAAAA,iBAAiB,EAAEA,iBAAiB;AACpCa,MAAAA,SAAS,EAAE,WAAW;AACtBC,MAAAA,gBAAgB,EAAE,SAAlBA,gBAAgBA,GAAoB;QAClC,OACEN,eAAA,CAACC,gCAAkB,EAAA;AAAAF,UAAAA,QAAA,EAAA,CACjBJ,cAAA,CAACO,qBAAO,EAAA;AAAAH,YAAAA,QAAA,EAAA;AAAA,WAAA,CAAqB,EAC7BJ,cAAA,CAACQ,qBAAO,EAAA;AAAAJ,YAAAA,QAAA,EAAA;AAAA,WAAA,CAA2B;AAAA,SAAA,CAChB;MAEzB,CAAC;iBAEDJ,cAAA,CAACY,yBAAW,EAAA;AAACrC,QAAAA,OAAO,EAAEA,OAAO;AAAA6B,QAAAA,QAAA,EAC1B,SAD0BA,QAAAA,CACzBS,MAAM,EAAA;UAAA,OACNb,cAAA,CAACc,oBAAM,EAAA;YAAkBC,KAAK,EAAEF,MAAM,CAACG,GAAG,KAAK,SAAS,GAAG,KAAK,GAAG,OAAO;YAAAZ,QAAA,EACvES,MAAM,CAACI;AAAI,WAAA,EADDJ,MAAM,CAACG,GAAG,CAEd;AAAA,QAAA;AACV,OAAA,CACW,EACdhB,cAAA,CAACkB,uBAAS,EAAA;AAACC,QAAAA,KAAK,EAAE1C,IAAI;kBACnB,kBAAC2C,IAAI,EAAA;UAAA,OACJpB,cAAA,CAACqB,iBAAG,EAAA;AAAAjB,YAAAA,QAAA,EACD,SADCA,QAAAA,CACAkB,SAAS,EAAA;AAAA,cAAA,OACTA,SAAS,KAAK,SAAS,GACrBtB,cAAA,CAACuB,kBAAI,EAAA;AAAAnB,gBAAAA,QAAA,EACD,YAAkB;AAClB,kBAAA,QAAQvB,UAAU;oBAChB,KAAKC,gBAAU,CAAC0C,KAAK;sBACnB,OACExB,cAAA,CAACyB,eAAa,EAAA;AACZL,wBAAAA,IAAI,EAAEA,IAAI;AACVnC,wBAAAA,WAAW,EAAEA,WAAW;AACxBE,wBAAAA,iBAAiB,EAAEA;AAAiB,uBAAA,CACpC;oBAEN,KAAKL,gBAAU,CAAC4C,OAAO;sBACrB,OACE1B,cAAA,CAAC2B,eAAe,EAAA;AACdP,wBAAAA,IAAI,EAAEA,IAAI;AACVnC,wBAAAA,WAAW,EAAEA,WAAW;AACxBE,wBAAAA,iBAAiB,EAAEA;AAAiB,uBAAA,CACpC;AAEN,oBAAA;sBACE,OACEa,cAAA,CAAC4B,aAAkB,EAAA;AACjBR,wBAAAA,IAAI,EAAEA,IAAI;AACVnC,wBAAAA,WAAW,EAAEA,WAAW;AACxBE,wBAAAA,iBAAiB,EAAEA;AAAiB,uBAAA,CACpC;AAER;AACF,gBAAA,CAAC;AAAG,eAAA,CACC,GAEPa,cAAA,CAACuB,kBAAI,EAAA;gBAAAnB,QAAA,EAAEgB,IAAI,CAACE,SAAS;AAAQ,eAAA,CAC9B;AAAA,YAAA;AAAA,WAAA,CAEC;AAAA,QAAA;AACP,OAAA,CACS;KAAA;AACF,GAAA,CACP;AAEX;;;;"}
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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"}