@erpsquad/common 1.8.104 → 1.8.106

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../../../src/components/form-control/form-parser/form-section.tsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { memo, useMemo, useCallback } from 'react';\nimport { Grid, Divider, FormControlLabel, Radio } from '@mui/material';\nimport DynamicInput from '../form-builder/form-builder-element/text';\nimport DynamicDate from '../form-builder/form-builder-element/date';\nimport DynamicTime from '../form-builder/form-builder-element/time';\nimport DynamicPhone from '../form-builder/form-builder-element/phone';\nimport DynamicSearchSelect from '../form-builder/form-builder-element/dynamic-select';\nimport DynamicMedia from '../form-builder/form-builder-element/media';\nimport DynamicInfo from '../form-builder/form-builder-element/info';\nimport DynamicToggleButton from '../form-builder/form-builder-element/toggle-button';\nimport DynamicCheckBox from '../form-builder/form-builder-element/checkbox';\nimport DynamicTable from '../form-builder/form-builder-element/table';\nimport DynamicRadioButton from '../form-builder/form-builder-element/radio-button';\nimport DynamicTagsInput from '../form-builder/form-builder-element/dynamic-tags-input';\nimport DynamicCurrency from '../form-builder/form-builder-element/dynamic-currency-input';\nimport DynamicInputSelect from '../form-builder/form-builder-element/dynamic-input-select';\nimport ChipGenerator from '../../chip-generator/chip-generator';\nimport { LocationSearchSelect } from '../../location-select';\nimport FormSwitcher from './form-switcher';\nimport Typography from '../../typography/typography';\nimport Accordion from '../../accordion/accordion';\n\n// Types for better type safety\ninterface Field {\n name?: string;\n label: string;\n field_type: string;\n is_fullwidth?: boolean;\n custom_width?: number;\n is_hidden?: boolean;\n is_required?: boolean;\n disabled?: boolean;\n placeholder?: string;\n value?: any;\n default_value?: any;\n title?: string;\n title_position?: string;\n table_columns?: any[];\n table_rows?: any[];\n component?: React.ReactNode;\n field_properties?: {\n apiType?: string;\n customeFilter?: any;\n attributes?: any;\n disabledIds?: any[];\n sortOrder?: string;\n maxChips?: number;\n allowDuplicates?: boolean;\n };\n validation?: any;\n filterField?: string;\n}\n\ninterface Section {\n label?: string;\n is_accordion?: boolean;\n disabled?: boolean;\n form_switcher_label?: string;\n}\n\ninterface FormSectionProps {\n section: Section;\n index: number;\n members?: Field[];\n switchForms?: any[];\n isFormSwitcher: boolean;\n control: any;\n fieldArrayName: string;\n formSwitcherName: string;\n displayAvtar?: boolean;\n isButton?: boolean;\n currencyOption?: any;\n values: any;\n onBlur?: (e: any, fieldName?: string) => void;\n setValue: (name: string, value: any) => void;\n onSelectFooterClick?: (field: Field) => void;\n getSelectedData?: (row: any, key: any) => void;\n setCurrencyOptions: (options: any) => void;\n refreshOptions: any;\n handleFieldCleanUp: (forms: any[]) => void;\n handleSetCountryCodeField: (country: any, field: Field, fieldArrayName: string, values: any) => void;\n handleTableAddClick: (field: Field) => void;\n onTableCellChange?: (data: any) => void;\n // setDetailsData: (data: any) => void;\n t: (key: string) => string;\n images: any;\n}\n\n// Memoized field component to prevent unnecessary re-renders\nconst MemoizedField = memo(({ \n field, \n fieldName, \n sectionLabel, \n index, \n ...props \n}: { \n field: Field; \n fieldName: string; \n sectionLabel?: string; \n index: number; \n [key: string]: any;\n}) => {\n const gridSize = useMemo(() => \n field.is_fullwidth ? 12 : (field.custom_width ?? 6),\n [field.is_fullwidth, field.custom_width]\n );\n\n const fieldKey = useMemo(() => \n `${sectionLabel}-${fieldName}-${index}`,\n [sectionLabel, fieldName, index]\n );\n\n const commonProps = useMemo(() => ({\n ...field,\n key: fieldKey,\n name: fieldName,\n position: index,\n formControl: props.control,\n fieldArrayName: props.fieldArrayName,\n required: field.is_required,\n label: props.t(field.label),\n placeholder: props.t(field.placeholder),\n defaultValue: field.value || field.default_value,\n disabled: field.disabled\n }), [field, fieldName, index, fieldKey, props.control, props.fieldArrayName, props.t]);\n\n const handleBlur = useCallback((e: any) => {\n if (props.onBlur && typeof props.onBlur === 'function') {\n props.onBlur(e, fieldName);\n }\n }, [props.onBlur, fieldName]);\n\n const endIcon = useMemo(() => {\n const iconMap: Record<string, string> = {\n email: props.images.sms,\n url: props.images.url,\n currency: props.images.dollar,\n geoLocation: props.images.location\n };\n \n const iconSrc = iconMap[field.field_type];\n return iconSrc ? <img src={iconSrc} alt={field.field_type} /> : null;\n }, [field.field_type, props.images]);\n\n const relationLabel = useMemo(() => (\n field.field_type === \"relation\" ? (\n <span className=\"formSection--Relation\">\n {props.t(field.label)}\n <img src={props.images.relation} alt=\"relation\" />\n </span>\n ) : props.t(field.label)\n ), [field.field_type, field.label, props.t, props.images.relation]);\n\n // Render field based on type\n const renderField = () => {\n switch (field.field_type) {\n case \"text\":\n case \"email\":\n case \"url\":\n case \"currency\":\n case \"number\":\n case \"geoLocation\":\n case \"relation\":\n return (\n <DynamicInput\n {...commonProps}\n key={commonProps.key}\n label={relationLabel}\n onBlur={handleBlur}\n type={field.field_type}\n endIcon={endIcon}\n disabled={field.disabled || field.field_type === \"relation\"}\n />\n );\n\n case \"date\":\n return <DynamicDate {...commonProps} key={commonProps.key}/>;\n\n case \"time\":\n return <DynamicTime {...commonProps} key={commonProps.key}/>;\n\n case \"phone\":\n return (\n <DynamicPhone\n {...commonProps}\n key={commonProps.key}\n setCountryCodeField={(country: any) =>\n props.handleSetCountryCodeField(country, field, props.fieldArrayName, props.values)\n }\n />\n );\n\n case \"select\":\n return (\n <DynamicSearchSelect\n {...commonProps}\n key={commonProps.key}\n apiType={field.field_properties?.apiType}\n customeFilter={field.field_properties?.customeFilter}\n attributes={field.field_properties?.attributes}\n disabledIds={field.field_properties?.disabledIds}\n onChipRemove={() => props.setValue(`${props.fieldArrayName}.${fieldName}`, [])}\n onFooterClick={() => props.onSelectFooterClick?.(field)}\n handleOptions={props.setCurrencyOptions}\n getSelectedData={props.getSelectedData}\n refresh={props.refreshOptions}\n sortOrder={field.field_properties?.sortOrder}\n />\n );\n\n case \"file\":\n case \"image\":\n return <DynamicMedia {...commonProps} key={commonProps.key}/>;\n\n case \"info\":\n return <DynamicInfo {...commonProps} key={commonProps.key}/>;\n\n case \"toggleButton\":\n return (\n <DynamicToggleButton\n {...commonProps}\n key={commonProps.key}\n titlePosition={field.title_position}\n title={props.t(field.title)}\n />\n );\n\n case \"checkbox\":\n return (\n <DynamicCheckBox\n {...commonProps}\n key={commonProps.key}\n titlePosition={field.title_position}\n title={props.t(field.title)}\n />\n );\n\n case \"table\":\n return (\n <DynamicTable\n {...commonProps}\n key={commonProps.key}\n columns={field.table_columns}\n rows={field.table_rows}\n onAddClick={() => props.handleTableAddClick(field)}\n disableTableAddButton={Boolean(field.disableTableAddButton)}\n is_button={props.isButton}\n onTableCellChange={props.onTableCellChange}\n />\n );\n\n case \"radioButton\":\n return (\n <DynamicRadioButton\n {...commonProps}\n key={commonProps.key}\n titlePosition={field.title_position}\n title={props.t(field.title)}\n />\n );\n\n case \"customComponent\":\n return field.component;\n\n case \"tagsInput\":\n return (\n <DynamicTagsInput\n {...commonProps}\n key={commonProps.key}\n label={relationLabel}\n type={field.field_type}\n endIcon={endIcon}\n />\n );\n\n case \"currency_with_amount\":\n return (\n <DynamicCurrency\n {...commonProps}\n key={commonProps.key}\n currencyType={props.currencyOption}\n />\n );\n\n case \"select_with_input\":\n return (\n <DynamicInputSelect\n {...commonProps}\n currencyType={props.currencyOption}\n />\n );\n\n case \"chipInput\":\n return (\n <ChipGenerator\n {...commonProps}\n key={commonProps.key}\n maxChips={field.field_properties?.maxChips}\n allowDuplicates={field.field_properties?.allowDuplicates}\n validation={field.validation}\n endIcon={endIcon}\n onChipAdd={(chip: any) => console.log('Chip added:', chip)}\n onChipRemove={(chip: any, index: number) => console.log('Chip removed:', chip, 'at index:', index)}\n />\n );\n\n case \"location_select\":\n return (\n <LocationSearchSelect\n fieldArrayName={props.fieldArrayName}\n filterField={field.filterField}\n getSelectedData={(row: any[]) => props.getSelectedData(row)}\n locationFieldName={field.name}\n addType=\"location\"\n enable_footer={true}\n />\n );\n\n default:\n return null;\n }\n };\n\n // For table fields, use full width\n if (field.field_type === \"table\" || field.field_type === \"customComponent\") {\n return (\n <Grid item xs={12}>\n {renderField()}\n </Grid>\n );\n }\n\n return (\n <Grid item xs={gridSize}>\n {renderField()}\n </Grid>\n );\n});\n\nMemoizedField.displayName = 'MemoizedField';\n\n// Memoized FormSwitcher component\nconst MemoizedFormSwitcher = memo(({ \n section, \n switchForms, \n isFormSwitcher, \n control, \n fieldArrayName, \n formSwitcherName, \n handleFieldCleanUp, \n t \n}: {\n section: Section;\n switchForms?: any[];\n isFormSwitcher: boolean;\n control: any;\n fieldArrayName: string;\n formSwitcherName: string;\n handleFieldCleanUp: (forms: any[]) => void;\n t: (key: string) => string;\n}) => {\n const resetForm = useCallback(() => {\n handleFieldCleanUp(switchForms || []);\n }, [handleFieldCleanUp, switchForms]);\n\n if (!isFormSwitcher || !switchForms?.length) return null;\n\n return (\n <FormSwitcher\n {...section}\n isFormSwitcher={isFormSwitcher}\n control={control}\n fieldArrayName={fieldArrayName}\n formSwitcherName={formSwitcherName}\n label={t(section.form_switcher_label || '')}\n resetForm={resetForm}\n >\n {switchForms.map((forms: any) => (\n <FormControlLabel\n key={forms.id}\n value={forms.value || forms.name}\n control={<Radio />}\n slotProps={{ typography: { variant: \"body2\" } }}\n label={t(forms.name)}\n disabled={Boolean(section.disabled)}\n />\n ))}\n </FormSwitcher>\n );\n});\n\nMemoizedFormSwitcher.displayName = 'MemoizedFormSwitcher';\n\n// Main component\nconst FormSection = memo<FormSectionProps>(({\n section,\n index,\n members,\n switchForms,\n isFormSwitcher,\n control,\n fieldArrayName,\n formSwitcherName,\n displayAvtar,\n isButton,\n currencyOption,\n values,\n onBlur,\n setValue,\n onSelectFooterClick,\n getSelectedData,\n setCurrencyOptions,\n refreshOptions,\n handleFieldCleanUp,\n handleSetCountryCodeField,\n handleTableAddClick,\n onTableCellChange,\n setDetailsData,\n t,\n images\n}) => {\n // Memoize visible members to prevent recalculation\n const visibleMembers = useMemo(() => \n members?.filter(f => !f.is_hidden) || [],\n [members]\n );\n\n // Memoize field names to prevent recalculation\n const fieldsWithNames = useMemo(() => \n visibleMembers.map(field => ({\n ...field,\n fieldName: field.name || field.label.toLowerCase().split(\" \").join(\"_\")\n })),\n [visibleMembers]\n );\n\n // Memoize section header\n const sectionHeader = useMemo(() => {\n if (!section.label) return null;\n \n return (\n <div style={{ minHeight: \"16px\" }}>\n {index !== 0 && <Divider className='formParser--Section--SectionDivider' />}\n <Typography\n type=\"s3\"\n weight=\"medium\"\n mb={2}\n mt={4}\n color=\"theme.secondary.1000\"\n className='formParser--Section--SectionTitle'\n >\n {t(section.label)}\n </Typography>\n </div>\n );\n }, [section.label, index, t]);\n\n // Avatar component\n const avatarDisplay = useMemo(() => \n displayAvtar ? <div className='avtarDisplay'>ERP</div> : null,\n [displayAvtar]\n );\n\n // Common props for field rendering\n const fieldProps = useMemo(() => ({\n control,\n fieldArrayName,\n isButton,\n currencyOption,\n values,\n onBlur,\n setValue,\n onSelectFooterClick,\n getSelectedData,\n setCurrencyOptions,\n refreshOptions,\n handleSetCountryCodeField,\n handleTableAddClick,\n onTableCellChange,\n setDetailsData,\n t,\n images\n }), [\n control, fieldArrayName, isButton, currencyOption, values,\n onBlur, setValue, onSelectFooterClick, getSelectedData,\n setCurrencyOptions, refreshOptions, handleSetCountryCodeField,\n handleTableAddClick, onTableCellChange, setDetailsData, t, images\n ]);\n\n if (section.is_accordion) {\n return (\n <section key={index} className='formParser--Section'>\n <div style={{ marginTop: '20px' }}>\n <Accordion title={t(section.label || '')}>\n <div className=\"formParser--Grid formParser--Accordion\">\n <MemoizedFormSwitcher\n section={section}\n switchForms={switchForms}\n isFormSwitcher={isFormSwitcher}\n control={control}\n fieldArrayName={fieldArrayName}\n formSwitcherName={formSwitcherName}\n handleFieldCleanUp={handleFieldCleanUp}\n t={t}\n />\n {fieldsWithNames.map((field, fieldIndex) => (\n <MemoizedField\n key={`${section.label}-${field.fieldName}-${fieldIndex}`}\n field={field}\n fieldName={field.fieldName}\n sectionLabel={section.label}\n index={fieldIndex}\n {...fieldProps}\n />\n ))}\n </div>\n </Accordion>\n </div>\n </section>\n );\n }\n\n return (\n <section key={index} className='formParser--Section'>\n {sectionHeader}\n \n <MemoizedFormSwitcher\n section={section}\n switchForms={switchForms}\n isFormSwitcher={isFormSwitcher}\n control={control}\n fieldArrayName={fieldArrayName}\n formSwitcherName={formSwitcherName}\n handleFieldCleanUp={handleFieldCleanUp}\n t={t}\n />\n\n <Grid container spacing={2}>\n {avatarDisplay}\n {fieldsWithNames.map((field, fieldIndex) => (\n <MemoizedField\n key={`${section.label}-${field.fieldName}-${fieldIndex}`}\n field={field}\n fieldName={field.fieldName}\n sectionLabel={section.label}\n index={fieldIndex}\n {...fieldProps}\n />\n ))}\n </Grid>\n </section>\n );\n});\n\nFormSection.displayName = 'FormSection';\n\nexport { FormSection };\nexport default FormSection;"],"names":["_a","index"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../../../../src/components/form-control/form-parser/form-section.tsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { memo, useMemo, useCallback } from 'react';\nimport { Grid, Divider, FormControlLabel, Radio } from '@mui/material';\nimport DynamicInput from '../form-builder/form-builder-element/text';\nimport DynamicDate from '../form-builder/form-builder-element/date';\nimport DynamicTime from '../form-builder/form-builder-element/time';\nimport DynamicPhone from '../form-builder/form-builder-element/phone';\nimport DynamicSearchSelect from '../form-builder/form-builder-element/dynamic-select';\nimport DynamicMedia from '../form-builder/form-builder-element/media';\nimport DynamicInfo from '../form-builder/form-builder-element/info';\nimport DynamicToggleButton from '../form-builder/form-builder-element/toggle-button';\nimport DynamicCheckBox from '../form-builder/form-builder-element/checkbox';\nimport DynamicTable from '../form-builder/form-builder-element/table';\nimport DynamicRadioButton from '../form-builder/form-builder-element/radio-button';\nimport DynamicTagsInput from '../form-builder/form-builder-element/dynamic-tags-input';\nimport DynamicCurrency from '../form-builder/form-builder-element/dynamic-currency-input';\nimport DynamicInputSelect from '../form-builder/form-builder-element/dynamic-input-select';\nimport ChipGenerator from '../../chip-generator/chip-generator';\nimport { LocationSearchSelect } from '../../location-select';\nimport FormSwitcher from './form-switcher';\nimport Typography from '../../typography/typography';\nimport Accordion from '../../accordion/accordion';\n\n// Types for better type safety\ninterface Field {\n name?: string;\n label: string;\n field_type: string;\n is_fullwidth?: boolean;\n custom_width?: number;\n is_hidden?: boolean;\n is_required?: boolean;\n disabled?: boolean;\n placeholder?: string;\n value?: any;\n default_value?: any;\n title?: string;\n title_position?: string;\n table_columns?: any[];\n table_rows?: any[];\n component?: React.ReactNode;\n field_properties?: {\n apiType?: string;\n customeFilter?: any;\n attributes?: any;\n disabledIds?: any[];\n sortOrder?: string;\n maxChips?: number;\n allowDuplicates?: boolean;\n };\n validation?: any;\n filterField?: string;\n}\n\ninterface Section {\n label?: string;\n is_accordion?: boolean;\n disabled?: boolean;\n form_switcher_label?: string;\n}\n\ninterface FormSectionProps {\n section: Section;\n index: number;\n members?: Field[];\n switchForms?: any[];\n isFormSwitcher: boolean;\n control: any;\n fieldArrayName: string;\n formSwitcherName: string;\n displayAvtar?: boolean;\n isButton?: boolean;\n currencyOption?: any;\n values: any;\n onBlur?: (e: any, fieldName?: string) => void;\n setValue: (name: string, value: any) => void;\n onSelectFooterClick?: (field: Field) => void;\n getSelectedData?: (row: any, key: any) => void;\n setCurrencyOptions: (options: any) => void;\n refreshOptions: any;\n handleFieldCleanUp: (forms: any[]) => void;\n handleSetCountryCodeField: (country: any, field: Field, fieldArrayName: string, values: any) => void;\n handleTableAddClick: (field: Field) => void;\n onTableCellChange?: (data: any) => void;\n // setDetailsData: (data: any) => void;\n t: (key: string) => string;\n images: any;\n}\n\n// Memoized field component to prevent unnecessary re-renders\nconst MemoizedField = memo(({\n field,\n fieldName,\n sectionLabel,\n index,\n ...props\n}: {\n field: Field;\n fieldName: string;\n sectionLabel?: string;\n index: number;\n [key: string]: any;\n}) => {\n const gridSize = useMemo(() =>\n field.is_fullwidth ? 12 : (field.custom_width ?? 6),\n [field.is_fullwidth, field.custom_width]\n );\n\n const fieldKey = useMemo(() =>\n `${sectionLabel}-${fieldName}-${index}`,\n [sectionLabel, fieldName, index]\n );\n\n const commonProps = useMemo(() => ({\n ...field,\n key: fieldKey,\n name: fieldName,\n position: index,\n formControl: props.control,\n fieldArrayName: props.fieldArrayName,\n required: field.is_required,\n label: props.t(field.label),\n placeholder: props.t(field.placeholder),\n defaultValue: field.value || field.default_value,\n disabled: field.disabled\n }), [field, fieldName, index, fieldKey, props.control, props.fieldArrayName, props.t]);\n\n const handleBlur = useCallback((e: any) => {\n if (props.onBlur && typeof props.onBlur === 'function') {\n props.onBlur(e, fieldName);\n }\n }, [props.onBlur, fieldName]);\n\n const endIcon = useMemo(() => {\n const iconMap: Record<string, string> = {\n email: props.images.sms,\n url: props.images.url,\n currency: props.images.dollar,\n geoLocation: props.images.location\n };\n\n const iconSrc = iconMap[field.field_type];\n return iconSrc ? <img src={iconSrc} alt={field.field_type} /> : null;\n }, [field.field_type, props.images]);\n\n const relationLabel = useMemo(() => (\n field.field_type === \"relation\" ? (\n <span className=\"formSection--Relation\">\n {props.t(field.label)}\n <img src={props.images.relation} alt=\"relation\" />\n </span>\n ) : props.t(field.label)\n ), [field.field_type, field.label, props.t, props.images.relation]);\n\n // Render field based on type\n const renderField = () => {\n switch (field.field_type) {\n case \"text\":\n case \"email\":\n case \"url\":\n case \"currency\":\n case \"number\":\n case \"geoLocation\":\n case \"relation\":\n return (\n <DynamicInput\n {...commonProps}\n key={commonProps.key}\n label={relationLabel}\n onBlur={handleBlur}\n type={field.field_type}\n endIcon={endIcon}\n disabled={field.disabled || field.field_type === \"relation\"}\n />\n );\n\n case \"date\":\n return <DynamicDate {...commonProps} key={commonProps.key} />;\n\n case \"time\":\n return <DynamicTime {...commonProps} key={commonProps.key} />;\n\n case \"phone\":\n return (\n <DynamicPhone\n {...commonProps}\n key={commonProps.key}\n setCountryCodeField={(country: any) =>\n props.handleSetCountryCodeField(country, field, props.fieldArrayName, props.values)\n }\n />\n );\n\n case \"select\":\n return (\n <DynamicSearchSelect\n {...commonProps}\n key={commonProps.key}\n apiType={field.field_properties?.apiType}\n customeFilter={field.field_properties?.customeFilter}\n attributes={field.field_properties?.attributes}\n disabledIds={field.field_properties?.disabledIds}\n onChipRemove={() => props.setValue(`${props.fieldArrayName}.${fieldName}`, [])}\n onFooterClick={() => props.onSelectFooterClick?.(field)}\n handleOptions={props.setCurrencyOptions}\n getSelectedData={props.getSelectedData}\n refresh={props.refreshOptions}\n sortOrder={field.field_properties?.sortOrder}\n showCancelButton={field.field_properties?.showCancelButton}\n />\n );\n\n case \"file\":\n case \"image\":\n return <DynamicMedia {...commonProps} key={commonProps.key} />;\n\n case \"info\":\n return <DynamicInfo {...commonProps} key={commonProps.key} />;\n\n case \"toggleButton\":\n return (\n <DynamicToggleButton\n {...commonProps}\n key={commonProps.key}\n titlePosition={field.title_position}\n title={props.t(field.title)}\n />\n );\n\n case \"checkbox\":\n return (\n <DynamicCheckBox\n {...commonProps}\n key={commonProps.key}\n titlePosition={field.title_position}\n title={props.t(field.title)}\n />\n );\n\n case \"table\":\n return (\n <DynamicTable\n {...commonProps}\n key={commonProps.key}\n columns={field.table_columns}\n rows={field.table_rows}\n onAddClick={() => props.handleTableAddClick(field)}\n disableTableAddButton={Boolean(field.disableTableAddButton)}\n is_button={props.isButton}\n onTableCellChange={props.onTableCellChange}\n />\n );\n\n case \"radioButton\":\n return (\n <DynamicRadioButton\n {...commonProps}\n key={commonProps.key}\n titlePosition={field.title_position}\n title={props.t(field.title)}\n />\n );\n\n case \"customComponent\":\n return field.component;\n\n case \"tagsInput\":\n return (\n <DynamicTagsInput\n {...commonProps}\n key={commonProps.key}\n label={relationLabel}\n type={field.field_type}\n endIcon={endIcon}\n />\n );\n\n case \"currency_with_amount\":\n return (\n <DynamicCurrency\n {...commonProps}\n key={commonProps.key}\n currencyType={props.currencyOption}\n />\n );\n\n case \"select_with_input\":\n return (\n <DynamicInputSelect\n {...commonProps}\n currencyType={props.currencyOption}\n />\n );\n\n case \"chipInput\":\n return (\n <ChipGenerator\n {...commonProps}\n key={commonProps.key}\n maxChips={field.field_properties?.maxChips}\n allowDuplicates={field.field_properties?.allowDuplicates}\n validation={field.validation}\n endIcon={endIcon}\n onChipAdd={(chip: any) => console.log('Chip added:', chip)}\n onChipRemove={(chip: any, index: number) => console.log('Chip removed:', chip, 'at index:', index)}\n />\n );\n\n case \"location_select\":\n return (\n <LocationSearchSelect\n fieldArrayName={props.fieldArrayName}\n filterField={field.filterField}\n getSelectedData={(row: any[]) => props.getSelectedData(row)}\n locationFieldName={field.name}\n addType=\"location\"\n enable_footer={true}\n />\n );\n\n default:\n return null;\n }\n };\n\n // For table fields, use full width\n if (field.field_type === \"table\" || field.field_type === \"customComponent\") {\n return (\n <Grid item xs={12}>\n {renderField()}\n </Grid>\n );\n }\n\n return (\n <Grid item xs={gridSize}>\n {renderField()}\n </Grid>\n );\n});\n\nMemoizedField.displayName = 'MemoizedField';\n\n// Memoized FormSwitcher component\nconst MemoizedFormSwitcher = memo(({\n section,\n switchForms,\n isFormSwitcher,\n control,\n fieldArrayName,\n formSwitcherName,\n handleFieldCleanUp,\n t\n}: {\n section: Section;\n switchForms?: any[];\n isFormSwitcher: boolean;\n control: any;\n fieldArrayName: string;\n formSwitcherName: string;\n handleFieldCleanUp: (forms: any[]) => void;\n t: (key: string) => string;\n}) => {\n const resetForm = useCallback(() => {\n handleFieldCleanUp(switchForms || []);\n }, [handleFieldCleanUp, switchForms]);\n\n if (!isFormSwitcher || !switchForms?.length) return null;\n\n return (\n <FormSwitcher\n {...section}\n isFormSwitcher={isFormSwitcher}\n control={control}\n fieldArrayName={fieldArrayName}\n formSwitcherName={formSwitcherName}\n label={t(section.form_switcher_label || '')}\n resetForm={resetForm}\n >\n {switchForms.map((forms: any) => (\n <FormControlLabel\n key={forms.id}\n value={forms.value || forms.name}\n control={<Radio />}\n slotProps={{ typography: { variant: \"body2\" } }}\n label={t(forms.name)}\n disabled={Boolean(section.disabled)}\n />\n ))}\n </FormSwitcher>\n );\n});\n\nMemoizedFormSwitcher.displayName = 'MemoizedFormSwitcher';\n\n// Main component\nconst FormSection = memo<FormSectionProps>(({\n section,\n index,\n members,\n switchForms,\n isFormSwitcher,\n control,\n fieldArrayName,\n formSwitcherName,\n displayAvtar,\n isButton,\n currencyOption,\n values,\n onBlur,\n setValue,\n onSelectFooterClick,\n getSelectedData,\n setCurrencyOptions,\n refreshOptions,\n handleFieldCleanUp,\n handleSetCountryCodeField,\n handleTableAddClick,\n onTableCellChange,\n setDetailsData,\n t,\n images\n}) => {\n // Memoize visible members to prevent recalculation\n const visibleMembers = useMemo(() =>\n members?.filter(f => !f.is_hidden) || [],\n [members]\n );\n\n // Memoize field names to prevent recalculation\n const fieldsWithNames = useMemo(() =>\n visibleMembers.map(field => ({\n ...field,\n fieldName: field.name || field.label.toLowerCase().split(\" \").join(\"_\")\n })),\n [visibleMembers]\n );\n\n // Memoize section header\n const sectionHeader = useMemo(() => {\n if (!section.label) return null;\n\n return (\n <div style={{ minHeight: \"16px\" }}>\n {index !== 0 && <Divider className='formParser--Section--SectionDivider' />}\n <Typography\n type=\"s3\"\n weight=\"medium\"\n mb={2}\n mt={4}\n color=\"theme.secondary.1000\"\n className='formParser--Section--SectionTitle'\n >\n {t(section.label)}\n </Typography>\n </div>\n );\n }, [section.label, index, t]);\n\n // Avatar component\n const avatarDisplay = useMemo(() =>\n displayAvtar ? <div className='avtarDisplay'>ERP</div> : null,\n [displayAvtar]\n );\n\n // Common props for field rendering\n const fieldProps = useMemo(() => ({\n control,\n fieldArrayName,\n isButton,\n currencyOption,\n values,\n onBlur,\n setValue,\n onSelectFooterClick,\n getSelectedData,\n setCurrencyOptions,\n refreshOptions,\n handleSetCountryCodeField,\n handleTableAddClick,\n onTableCellChange,\n setDetailsData,\n t,\n images\n }), [\n control, fieldArrayName, isButton, currencyOption, values,\n onBlur, setValue, onSelectFooterClick, getSelectedData,\n setCurrencyOptions, refreshOptions, handleSetCountryCodeField,\n handleTableAddClick, onTableCellChange, setDetailsData, t, images\n ]);\n\n if (section.is_accordion) {\n return (\n <section key={index} className='formParser--Section'>\n <div style={{ marginTop: '20px' }}>\n <Accordion title={t(section.label || '')}>\n <div className=\"formParser--Grid formParser--Accordion\">\n <MemoizedFormSwitcher\n section={section}\n switchForms={switchForms}\n isFormSwitcher={isFormSwitcher}\n control={control}\n fieldArrayName={fieldArrayName}\n formSwitcherName={formSwitcherName}\n handleFieldCleanUp={handleFieldCleanUp}\n t={t}\n />\n {fieldsWithNames.map((field, fieldIndex) => (\n <MemoizedField\n key={`${section.label}-${field.fieldName}-${fieldIndex}`}\n field={field}\n fieldName={field.fieldName}\n sectionLabel={section.label}\n index={fieldIndex}\n {...fieldProps}\n />\n ))}\n </div>\n </Accordion>\n </div>\n </section>\n );\n }\n\n return (\n <section key={index} className='formParser--Section'>\n {sectionHeader}\n\n <MemoizedFormSwitcher\n section={section}\n switchForms={switchForms}\n isFormSwitcher={isFormSwitcher}\n control={control}\n fieldArrayName={fieldArrayName}\n formSwitcherName={formSwitcherName}\n handleFieldCleanUp={handleFieldCleanUp}\n t={t}\n />\n\n <Grid container spacing={2}>\n {avatarDisplay}\n {fieldsWithNames.map((field, fieldIndex) => (\n <MemoizedField\n key={`${section.label}-${field.fieldName}-${fieldIndex}`}\n field={field}\n fieldName={field.fieldName}\n sectionLabel={section.label}\n index={fieldIndex}\n {...fieldProps}\n />\n ))}\n </Grid>\n </section>\n );\n});\n\nFormSection.displayName = 'FormSection';\n\nexport { FormSection };\nexport default FormSection;"],"names":["_a","index"],"mappings":"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"}
@@ -1,23 +1,23 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),i=require("../../form-builder/form-builder-element/text/index.js"),l=require("../../form-builder/form-builder-element/date/index.js"),t=require("../../form-builder/form-builder-element/time/index.js"),a=require("../../form-builder/form-builder-element/phone/index.js"),o=require("../../form-builder/form-builder-element/dynamic-select/index.js"),n=require("../../form-builder/form-builder-element/media/index.js"),d=require("../../form-builder/form-builder-element/info/index.js"),s=require("../../form-builder/form-builder-element/toggle-button/index.js"),c=require("../../form-builder/form-builder-element/checkbox/index.js"),m=require("../../form-builder/form-builder-element/table/index.js"),u=require("../../form-builder/form-builder-element/radio-button/index.js"),f=require("../../form-builder/form-builder-element/dynamic-tags-input/index.js"),y=require("../../form-builder/form-builder-element/dynamic-currency-input/index.js"),p=require("../../form-builder/form-builder-element/dynamic-input-select/index.js"),b=require("../../../chip-generator/chip-generator/index.js"),h=require("../../../location-select/index.js"),x=require("../form-switcher/index.js"),j=require("../../../typography/typography/index.js"),_=require("../../../accordion/accordion/index.js"),C=require("../../../../node_modules/@mui/material/Divider/Divider/index.js"),g=require("../../../../node_modules/@mui/material/Grid/Grid/index.js"),k=require("../../../../node_modules/@mui/material/FormControlLabel/FormControlLabel/index.js"),N=require("../../../../node_modules/@mui/material/Radio/Radio/index.js");const S=r.memo(({field:x,fieldName:j,sectionLabel:_,index:C,...k})=>{const N=r.useMemo(()=>x.is_fullwidth?12:x.custom_width??6,[x.is_fullwidth,x.custom_width]),S=r.useMemo(()=>`${_}-${j}-${C}`,[_,j,C]),v=r.useMemo(()=>({...x,key:S,name:j,position:C,formControl:k.control,fieldArrayName:k.fieldArrayName,required:x.is_required,label:k.t(x.label),placeholder:k.t(x.placeholder),defaultValue:x.value||x.default_value,disabled:x.disabled}),[x,j,C,S,k.control,k.fieldArrayName,k.t]),F=r.useCallback(e=>{k.onBlur&&"function"==typeof k.onBlur&&k.onBlur(e,j)},[k.onBlur,j]),w=r.useMemo(()=>{const r={email:k.images.sms,url:k.images.url,currency:k.images.dollar,geoLocation:k.images.location}[x.field_type];return r?/* @__PURE__ */e.jsx("img",{src:r,alt:x.field_type}):null},[x.field_type,k.images]),q=r.useMemo(()=>"relation"===x.field_type?/* @__PURE__ */e.jsxs("span",{className:"formSection--Relation",children:[k.t(x.label),
2
- /* @__PURE__ */e.jsx("img",{src:k.images.relation,alt:"relation"})]}):k.t(x.label),[x.field_type,x.label,k.t,k.images.relation]),D=()=>{var _,C,g,N,S,D,A;switch(x.field_type){case"text":case"email":case"url":case"currency":case"number":case"geoLocation":case"relation":/* @__PURE__ */
3
- return r.createElement(i.DynamicInput,{...v,key:v.key,label:q,onBlur:F,type:x.field_type,endIcon:w,disabled:x.disabled||"relation"===x.field_type});case"date":/* @__PURE__ */
4
- return r.createElement(l.DynamicDate,{...v,key:v.key});case"time":/* @__PURE__ */
5
- return r.createElement(t.DynamicTime,{...v,key:v.key});case"phone":/* @__PURE__ */
6
- return r.createElement(a.DynamicPhone,{...v,key:v.key,setCountryCodeField:e=>k.handleSetCountryCodeField(e,x,k.fieldArrayName,k.values)});case"select":/* @__PURE__ */
7
- return r.createElement(o.default,{...v,key:v.key,apiType:null==(_=x.field_properties)?void 0:_.apiType,customeFilter:null==(C=x.field_properties)?void 0:C.customeFilter,attributes:null==(g=x.field_properties)?void 0:g.attributes,disabledIds:null==(N=x.field_properties)?void 0:N.disabledIds,onChipRemove:()=>k.setValue(`${k.fieldArrayName}.${j}`,[]),onFooterClick:()=>{var e;return null==(e=k.onSelectFooterClick)?void 0:e.call(k,x)},handleOptions:k.setCurrencyOptions,getSelectedData:k.getSelectedData,refresh:k.refreshOptions,sortOrder:null==(S=x.field_properties)?void 0:S.sortOrder});case"file":case"image":/* @__PURE__ */
8
- return r.createElement(n.DynamicMedia,{...v,key:v.key});case"info":/* @__PURE__ */
9
- return r.createElement(d.DynamicInfo,{...v,key:v.key});case"toggleButton":/* @__PURE__ */
10
- return r.createElement(s.default,{...v,key:v.key,titlePosition:x.title_position,title:k.t(x.title)});case"checkbox":/* @__PURE__ */
11
- return r.createElement(c.default,{...v,key:v.key,titlePosition:x.title_position,title:k.t(x.title)});case"table":/* @__PURE__ */
12
- return r.createElement(m.default,{...v,key:v.key,columns:x.table_columns,rows:x.table_rows,onAddClick:()=>k.handleTableAddClick(x),disableTableAddButton:Boolean(x.disableTableAddButton),is_button:k.isButton,onTableCellChange:k.onTableCellChange});case"radioButton":/* @__PURE__ */
13
- return r.createElement(u.default,{...v,key:v.key,titlePosition:x.title_position,title:k.t(x.title)});case"customComponent":return x.component;case"tagsInput":/* @__PURE__ */
14
- return r.createElement(f.DynamicTagsInput,{...v,key:v.key,label:q,type:x.field_type,endIcon:w});case"currency_with_amount":/* @__PURE__ */
15
- return r.createElement(y.DynamicCurrency,{...v,key:v.key,currencyType:k.currencyOption});case"select_with_input":/* @__PURE__ */
16
- return e.jsx(p.DynamicInputSelect,{...v,currencyType:k.currencyOption});case"chipInput":/* @__PURE__ */
17
- return r.createElement(b.default,{...v,key:v.key,maxChips:null==(D=x.field_properties)?void 0:D.maxChips,allowDuplicates:null==(A=x.field_properties)?void 0:A.allowDuplicates,validation:x.validation,endIcon:w,onChipAdd:e=>{},onChipRemove:(e,r)=>{}});case"location_select":/* @__PURE__ */
18
- return e.jsx(h.LocationSearchSelect,{fieldArrayName:k.fieldArrayName,filterField:x.filterField,getSelectedData:e=>k.getSelectedData(e),locationFieldName:x.name,addType:"location",enable_footer:!0});default:return null}};return"table"===x.field_type||"customComponent"===x.field_type?/* @__PURE__ */e.jsx(g.default,{item:!0,xs:12,children:D()}):/* @__PURE__ */e.jsx(g.default,{item:!0,xs:N,children:D()})});S.displayName="MemoizedField";const v=r.memo(({section:i,switchForms:l,isFormSwitcher:t,control:a,fieldArrayName:o,formSwitcherName:n,handleFieldCleanUp:d,t:s})=>{const c=r.useCallback(()=>{d(l||[])},[d,l]);return t&&(null==l?void 0:l.length)?/* @__PURE__ */e.jsx(x.FormSwitcher,{...i,isFormSwitcher:t,control:a,fieldArrayName:o,formSwitcherName:n,label:s(i.form_switcher_label||""),resetForm:c,children:l.map(r=>/* @__PURE__ */e.jsx(k.default,{value:r.value||r.name,control:/* @__PURE__ */e.jsx(N.default,{}),slotProps:{typography:{variant:"body2"}},label:s(r.name),disabled:Boolean(i.disabled)},r.id))}):null});v.displayName="MemoizedFormSwitcher";const F=r.memo(({section:i,index:l,members:t,switchForms:a,isFormSwitcher:o,control:n,fieldArrayName:d,formSwitcherName:s,displayAvtar:c,isButton:m,currencyOption:u,values:f,onBlur:y,setValue:p,onSelectFooterClick:b,getSelectedData:h,setCurrencyOptions:x,refreshOptions:k,handleFieldCleanUp:N,handleSetCountryCodeField:F,handleTableAddClick:w,onTableCellChange:q,setDetailsData:D,t:A,images:T})=>{const B=r.useMemo(()=>(null==t?void 0:t.filter(e=>!e.is_hidden))||[],[t]),E=r.useMemo(()=>B.map(e=>({...e,fieldName:e.name||e.label.toLowerCase().split(" ").join("_")})),[B]),M=r.useMemo(()=>i.label?/* @__PURE__ */e.jsxs("div",{style:{minHeight:"16px"},children:[0!==l&&/* @__PURE__ */e.jsx(C.default,{className:"formParser--Section--SectionDivider"}),
19
- /* @__PURE__ */e.jsx(j.Typography,{type:"s3",weight:"medium",mb:2,mt:4,color:"theme.secondary.1000",className:"formParser--Section--SectionTitle",children:A(i.label)})]}):null,[i.label,l,A]),O=r.useMemo(()=>c?/* @__PURE__ */e.jsx("div",{className:"avtarDisplay",children:"ERP"}):null,[c]),P=r.useMemo(()=>({control:n,fieldArrayName:d,isButton:m,currencyOption:u,values:f,onBlur:y,setValue:p,onSelectFooterClick:b,getSelectedData:h,setCurrencyOptions:x,refreshOptions:k,handleSetCountryCodeField:F,handleTableAddClick:w,onTableCellChange:q,setDetailsData:D,t:A,images:T}),[n,d,m,u,f,y,p,b,h,x,k,F,w,q,D,A,T]);return i.is_accordion?/* @__PURE__ */e.jsx("section",{className:"formParser--Section",children:/* @__PURE__ */e.jsx("div",{style:{marginTop:"20px"},children:/* @__PURE__ */e.jsx(_.Accordion,{title:A(i.label||""),children:/* @__PURE__ */e.jsxs("div",{className:"formParser--Grid formParser--Accordion",children:[
20
- /* @__PURE__ */e.jsx(v,{section:i,switchForms:a,isFormSwitcher:o,control:n,fieldArrayName:d,formSwitcherName:s,handleFieldCleanUp:N,t:A}),E.map((r,l)=>/* @__PURE__ */e.jsx(S,{field:r,fieldName:r.fieldName,sectionLabel:i.label,index:l,...P},`${i.label}-${r.fieldName}-${l}`))]})})})},l):/* @__PURE__ */e.jsxs("section",{className:"formParser--Section",children:[M,
21
- /* @__PURE__ */e.jsx(v,{section:i,switchForms:a,isFormSwitcher:o,control:n,fieldArrayName:d,formSwitcherName:s,handleFieldCleanUp:N,t:A}),
22
- /* @__PURE__ */e.jsxs(g.default,{container:!0,spacing:2,children:[O,E.map((r,l)=>/* @__PURE__ */e.jsx(S,{field:r,fieldName:r.fieldName,sectionLabel:i.label,index:l,...P},`${i.label}-${r.fieldName}-${l}`))]})]},l)});F.displayName="FormSection",exports.FormSection=F,exports.default=F;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),l=require("../../form-builder/form-builder-element/text/index.js"),i=require("../../form-builder/form-builder-element/date/index.js"),t=require("../../form-builder/form-builder-element/time/index.js"),a=require("../../form-builder/form-builder-element/phone/index.js"),o=require("../../form-builder/form-builder-element/dynamic-select/index.js"),n=require("../../form-builder/form-builder-element/media/index.js"),s=require("../../form-builder/form-builder-element/info/index.js"),d=require("../../form-builder/form-builder-element/toggle-button/index.js"),c=require("../../form-builder/form-builder-element/checkbox/index.js"),m=require("../../form-builder/form-builder-element/table/index.js"),u=require("../../form-builder/form-builder-element/radio-button/index.js"),f=require("../../form-builder/form-builder-element/dynamic-tags-input/index.js"),p=require("../../form-builder/form-builder-element/dynamic-currency-input/index.js"),y=require("../../form-builder/form-builder-element/dynamic-input-select/index.js"),b=require("../../../chip-generator/chip-generator/index.js"),h=require("../../../location-select/index.js"),x=require("../form-switcher/index.js"),j=require("../../../typography/typography/index.js"),_=require("../../../accordion/accordion/index.js"),C=require("../../../../node_modules/@mui/material/Divider/Divider/index.js"),g=require("../../../../node_modules/@mui/material/Grid/Grid/index.js"),k=require("../../../../node_modules/@mui/material/FormControlLabel/FormControlLabel/index.js"),N=require("../../../../node_modules/@mui/material/Radio/Radio/index.js");const v=r.memo(({field:x,fieldName:j,sectionLabel:_,index:C,...k})=>{const N=r.useMemo(()=>x.is_fullwidth?12:x.custom_width??6,[x.is_fullwidth,x.custom_width]),v=r.useMemo(()=>`${_}-${j}-${C}`,[_,j,C]),S=r.useMemo(()=>({...x,key:v,name:j,position:C,formControl:k.control,fieldArrayName:k.fieldArrayName,required:x.is_required,label:k.t(x.label),placeholder:k.t(x.placeholder),defaultValue:x.value||x.default_value,disabled:x.disabled}),[x,j,C,v,k.control,k.fieldArrayName,k.t]),F=r.useCallback(e=>{k.onBlur&&"function"==typeof k.onBlur&&k.onBlur(e,j)},[k.onBlur,j]),w=r.useMemo(()=>{const r={email:k.images.sms,url:k.images.url,currency:k.images.dollar,geoLocation:k.images.location}[x.field_type];return r?/* @__PURE__ */e.jsx("img",{src:r,alt:x.field_type}):null},[x.field_type,k.images]),q=r.useMemo(()=>"relation"===x.field_type?/* @__PURE__ */e.jsxs("span",{className:"formSection--Relation",children:[k.t(x.label),
2
+ /* @__PURE__ */e.jsx("img",{src:k.images.relation,alt:"relation"})]}):k.t(x.label),[x.field_type,x.label,k.t,k.images.relation]),D=()=>{var _,C,g,N,v,D,A,T;switch(x.field_type){case"text":case"email":case"url":case"currency":case"number":case"geoLocation":case"relation":/* @__PURE__ */
3
+ return r.createElement(l.DynamicInput,{...S,key:S.key,label:q,onBlur:F,type:x.field_type,endIcon:w,disabled:x.disabled||"relation"===x.field_type});case"date":/* @__PURE__ */
4
+ return r.createElement(i.DynamicDate,{...S,key:S.key});case"time":/* @__PURE__ */
5
+ return r.createElement(t.DynamicTime,{...S,key:S.key});case"phone":/* @__PURE__ */
6
+ return r.createElement(a.DynamicPhone,{...S,key:S.key,setCountryCodeField:e=>k.handleSetCountryCodeField(e,x,k.fieldArrayName,k.values)});case"select":/* @__PURE__ */
7
+ return r.createElement(o.default,{...S,key:S.key,apiType:null==(_=x.field_properties)?void 0:_.apiType,customeFilter:null==(C=x.field_properties)?void 0:C.customeFilter,attributes:null==(g=x.field_properties)?void 0:g.attributes,disabledIds:null==(N=x.field_properties)?void 0:N.disabledIds,onChipRemove:()=>k.setValue(`${k.fieldArrayName}.${j}`,[]),onFooterClick:()=>{var e;return null==(e=k.onSelectFooterClick)?void 0:e.call(k,x)},handleOptions:k.setCurrencyOptions,getSelectedData:k.getSelectedData,refresh:k.refreshOptions,sortOrder:null==(v=x.field_properties)?void 0:v.sortOrder,showCancelButton:null==(D=x.field_properties)?void 0:D.showCancelButton});case"file":case"image":/* @__PURE__ */
8
+ return r.createElement(n.DynamicMedia,{...S,key:S.key});case"info":/* @__PURE__ */
9
+ return r.createElement(s.DynamicInfo,{...S,key:S.key});case"toggleButton":/* @__PURE__ */
10
+ return r.createElement(d.default,{...S,key:S.key,titlePosition:x.title_position,title:k.t(x.title)});case"checkbox":/* @__PURE__ */
11
+ return r.createElement(c.default,{...S,key:S.key,titlePosition:x.title_position,title:k.t(x.title)});case"table":/* @__PURE__ */
12
+ return r.createElement(m.default,{...S,key:S.key,columns:x.table_columns,rows:x.table_rows,onAddClick:()=>k.handleTableAddClick(x),disableTableAddButton:Boolean(x.disableTableAddButton),is_button:k.isButton,onTableCellChange:k.onTableCellChange});case"radioButton":/* @__PURE__ */
13
+ return r.createElement(u.default,{...S,key:S.key,titlePosition:x.title_position,title:k.t(x.title)});case"customComponent":return x.component;case"tagsInput":/* @__PURE__ */
14
+ return r.createElement(f.DynamicTagsInput,{...S,key:S.key,label:q,type:x.field_type,endIcon:w});case"currency_with_amount":/* @__PURE__ */
15
+ return r.createElement(p.DynamicCurrency,{...S,key:S.key,currencyType:k.currencyOption});case"select_with_input":/* @__PURE__ */
16
+ return e.jsx(y.DynamicInputSelect,{...S,currencyType:k.currencyOption});case"chipInput":/* @__PURE__ */
17
+ return r.createElement(b.default,{...S,key:S.key,maxChips:null==(A=x.field_properties)?void 0:A.maxChips,allowDuplicates:null==(T=x.field_properties)?void 0:T.allowDuplicates,validation:x.validation,endIcon:w,onChipAdd:e=>{},onChipRemove:(e,r)=>{}});case"location_select":/* @__PURE__ */
18
+ return e.jsx(h.LocationSearchSelect,{fieldArrayName:k.fieldArrayName,filterField:x.filterField,getSelectedData:e=>k.getSelectedData(e),locationFieldName:x.name,addType:"location",enable_footer:!0});default:return null}};return"table"===x.field_type||"customComponent"===x.field_type?/* @__PURE__ */e.jsx(g.default,{item:!0,xs:12,children:D()}):/* @__PURE__ */e.jsx(g.default,{item:!0,xs:N,children:D()})});v.displayName="MemoizedField";const S=r.memo(({section:l,switchForms:i,isFormSwitcher:t,control:a,fieldArrayName:o,formSwitcherName:n,handleFieldCleanUp:s,t:d})=>{const c=r.useCallback(()=>{s(i||[])},[s,i]);return t&&(null==i?void 0:i.length)?/* @__PURE__ */e.jsx(x.FormSwitcher,{...l,isFormSwitcher:t,control:a,fieldArrayName:o,formSwitcherName:n,label:d(l.form_switcher_label||""),resetForm:c,children:i.map(r=>/* @__PURE__ */e.jsx(k.default,{value:r.value||r.name,control:/* @__PURE__ */e.jsx(N.default,{}),slotProps:{typography:{variant:"body2"}},label:d(r.name),disabled:Boolean(l.disabled)},r.id))}):null});S.displayName="MemoizedFormSwitcher";const F=r.memo(({section:l,index:i,members:t,switchForms:a,isFormSwitcher:o,control:n,fieldArrayName:s,formSwitcherName:d,displayAvtar:c,isButton:m,currencyOption:u,values:f,onBlur:p,setValue:y,onSelectFooterClick:b,getSelectedData:h,setCurrencyOptions:x,refreshOptions:k,handleFieldCleanUp:N,handleSetCountryCodeField:F,handleTableAddClick:w,onTableCellChange:q,setDetailsData:D,t:A,images:T})=>{const B=r.useMemo(()=>(null==t?void 0:t.filter(e=>!e.is_hidden))||[],[t]),E=r.useMemo(()=>B.map(e=>({...e,fieldName:e.name||e.label.toLowerCase().split(" ").join("_")})),[B]),M=r.useMemo(()=>l.label?/* @__PURE__ */e.jsxs("div",{style:{minHeight:"16px"},children:[0!==i&&/* @__PURE__ */e.jsx(C.default,{className:"formParser--Section--SectionDivider"}),
19
+ /* @__PURE__ */e.jsx(j.Typography,{type:"s3",weight:"medium",mb:2,mt:4,color:"theme.secondary.1000",className:"formParser--Section--SectionTitle",children:A(l.label)})]}):null,[l.label,i,A]),O=r.useMemo(()=>c?/* @__PURE__ */e.jsx("div",{className:"avtarDisplay",children:"ERP"}):null,[c]),P=r.useMemo(()=>({control:n,fieldArrayName:s,isButton:m,currencyOption:u,values:f,onBlur:p,setValue:y,onSelectFooterClick:b,getSelectedData:h,setCurrencyOptions:x,refreshOptions:k,handleSetCountryCodeField:F,handleTableAddClick:w,onTableCellChange:q,setDetailsData:D,t:A,images:T}),[n,s,m,u,f,p,y,b,h,x,k,F,w,q,D,A,T]);return l.is_accordion?/* @__PURE__ */e.jsx("section",{className:"formParser--Section",children:/* @__PURE__ */e.jsx("div",{style:{marginTop:"20px"},children:/* @__PURE__ */e.jsx(_.Accordion,{title:A(l.label||""),children:/* @__PURE__ */e.jsxs("div",{className:"formParser--Grid formParser--Accordion",children:[
20
+ /* @__PURE__ */e.jsx(S,{section:l,switchForms:a,isFormSwitcher:o,control:n,fieldArrayName:s,formSwitcherName:d,handleFieldCleanUp:N,t:A}),E.map((r,i)=>/* @__PURE__ */e.jsx(v,{field:r,fieldName:r.fieldName,sectionLabel:l.label,index:i,...P},`${l.label}-${r.fieldName}-${i}`))]})})})},i):/* @__PURE__ */e.jsxs("section",{className:"formParser--Section",children:[M,
21
+ /* @__PURE__ */e.jsx(S,{section:l,switchForms:a,isFormSwitcher:o,control:n,fieldArrayName:s,formSwitcherName:d,handleFieldCleanUp:N,t:A}),
22
+ /* @__PURE__ */e.jsxs(g.default,{container:!0,spacing:2,children:[O,E.map((r,i)=>/* @__PURE__ */e.jsx(v,{field:r,fieldName:r.fieldName,sectionLabel:l.label,index:i,...P},`${l.label}-${r.fieldName}-${i}`))]})]},i)});F.displayName="FormSection",exports.FormSection=F,exports.default=F;
23
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/form-control/form-parser/form-section.tsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { memo, useMemo, useCallback } from 'react';\nimport { Grid, Divider, FormControlLabel, Radio } from '@mui/material';\nimport DynamicInput from '../form-builder/form-builder-element/text';\nimport DynamicDate from '../form-builder/form-builder-element/date';\nimport DynamicTime from '../form-builder/form-builder-element/time';\nimport DynamicPhone from '../form-builder/form-builder-element/phone';\nimport DynamicSearchSelect from '../form-builder/form-builder-element/dynamic-select';\nimport DynamicMedia from '../form-builder/form-builder-element/media';\nimport DynamicInfo from '../form-builder/form-builder-element/info';\nimport DynamicToggleButton from '../form-builder/form-builder-element/toggle-button';\nimport DynamicCheckBox from '../form-builder/form-builder-element/checkbox';\nimport DynamicTable from '../form-builder/form-builder-element/table';\nimport DynamicRadioButton from '../form-builder/form-builder-element/radio-button';\nimport DynamicTagsInput from '../form-builder/form-builder-element/dynamic-tags-input';\nimport DynamicCurrency from '../form-builder/form-builder-element/dynamic-currency-input';\nimport DynamicInputSelect from '../form-builder/form-builder-element/dynamic-input-select';\nimport ChipGenerator from '../../chip-generator/chip-generator';\nimport { LocationSearchSelect } from '../../location-select';\nimport FormSwitcher from './form-switcher';\nimport Typography from '../../typography/typography';\nimport Accordion from '../../accordion/accordion';\n\n// Types for better type safety\ninterface Field {\n name?: string;\n label: string;\n field_type: string;\n is_fullwidth?: boolean;\n custom_width?: number;\n is_hidden?: boolean;\n is_required?: boolean;\n disabled?: boolean;\n placeholder?: string;\n value?: any;\n default_value?: any;\n title?: string;\n title_position?: string;\n table_columns?: any[];\n table_rows?: any[];\n component?: React.ReactNode;\n field_properties?: {\n apiType?: string;\n customeFilter?: any;\n attributes?: any;\n disabledIds?: any[];\n sortOrder?: string;\n maxChips?: number;\n allowDuplicates?: boolean;\n };\n validation?: any;\n filterField?: string;\n}\n\ninterface Section {\n label?: string;\n is_accordion?: boolean;\n disabled?: boolean;\n form_switcher_label?: string;\n}\n\ninterface FormSectionProps {\n section: Section;\n index: number;\n members?: Field[];\n switchForms?: any[];\n isFormSwitcher: boolean;\n control: any;\n fieldArrayName: string;\n formSwitcherName: string;\n displayAvtar?: boolean;\n isButton?: boolean;\n currencyOption?: any;\n values: any;\n onBlur?: (e: any, fieldName?: string) => void;\n setValue: (name: string, value: any) => void;\n onSelectFooterClick?: (field: Field) => void;\n getSelectedData?: (row: any, key: any) => void;\n setCurrencyOptions: (options: any) => void;\n refreshOptions: any;\n handleFieldCleanUp: (forms: any[]) => void;\n handleSetCountryCodeField: (country: any, field: Field, fieldArrayName: string, values: any) => void;\n handleTableAddClick: (field: Field) => void;\n onTableCellChange?: (data: any) => void;\n // setDetailsData: (data: any) => void;\n t: (key: string) => string;\n images: any;\n}\n\n// Memoized field component to prevent unnecessary re-renders\nconst MemoizedField = memo(({ \n field, \n fieldName, \n sectionLabel, \n index, \n ...props \n}: { \n field: Field; \n fieldName: string; \n sectionLabel?: string; \n index: number; \n [key: string]: any;\n}) => {\n const gridSize = useMemo(() => \n field.is_fullwidth ? 12 : (field.custom_width ?? 6),\n [field.is_fullwidth, field.custom_width]\n );\n\n const fieldKey = useMemo(() => \n `${sectionLabel}-${fieldName}-${index}`,\n [sectionLabel, fieldName, index]\n );\n\n const commonProps = useMemo(() => ({\n ...field,\n key: fieldKey,\n name: fieldName,\n position: index,\n formControl: props.control,\n fieldArrayName: props.fieldArrayName,\n required: field.is_required,\n label: props.t(field.label),\n placeholder: props.t(field.placeholder),\n defaultValue: field.value || field.default_value,\n disabled: field.disabled\n }), [field, fieldName, index, fieldKey, props.control, props.fieldArrayName, props.t]);\n\n const handleBlur = useCallback((e: any) => {\n if (props.onBlur && typeof props.onBlur === 'function') {\n props.onBlur(e, fieldName);\n }\n }, [props.onBlur, fieldName]);\n\n const endIcon = useMemo(() => {\n const iconMap: Record<string, string> = {\n email: props.images.sms,\n url: props.images.url,\n currency: props.images.dollar,\n geoLocation: props.images.location\n };\n \n const iconSrc = iconMap[field.field_type];\n return iconSrc ? <img src={iconSrc} alt={field.field_type} /> : null;\n }, [field.field_type, props.images]);\n\n const relationLabel = useMemo(() => (\n field.field_type === \"relation\" ? (\n <span className=\"formSection--Relation\">\n {props.t(field.label)}\n <img src={props.images.relation} alt=\"relation\" />\n </span>\n ) : props.t(field.label)\n ), [field.field_type, field.label, props.t, props.images.relation]);\n\n // Render field based on type\n const renderField = () => {\n switch (field.field_type) {\n case \"text\":\n case \"email\":\n case \"url\":\n case \"currency\":\n case \"number\":\n case \"geoLocation\":\n case \"relation\":\n return (\n <DynamicInput\n {...commonProps}\n key={commonProps.key}\n label={relationLabel}\n onBlur={handleBlur}\n type={field.field_type}\n endIcon={endIcon}\n disabled={field.disabled || field.field_type === \"relation\"}\n />\n );\n\n case \"date\":\n return <DynamicDate {...commonProps} key={commonProps.key}/>;\n\n case \"time\":\n return <DynamicTime {...commonProps} key={commonProps.key}/>;\n\n case \"phone\":\n return (\n <DynamicPhone\n {...commonProps}\n key={commonProps.key}\n setCountryCodeField={(country: any) =>\n props.handleSetCountryCodeField(country, field, props.fieldArrayName, props.values)\n }\n />\n );\n\n case \"select\":\n return (\n <DynamicSearchSelect\n {...commonProps}\n key={commonProps.key}\n apiType={field.field_properties?.apiType}\n customeFilter={field.field_properties?.customeFilter}\n attributes={field.field_properties?.attributes}\n disabledIds={field.field_properties?.disabledIds}\n onChipRemove={() => props.setValue(`${props.fieldArrayName}.${fieldName}`, [])}\n onFooterClick={() => props.onSelectFooterClick?.(field)}\n handleOptions={props.setCurrencyOptions}\n getSelectedData={props.getSelectedData}\n refresh={props.refreshOptions}\n sortOrder={field.field_properties?.sortOrder}\n />\n );\n\n case \"file\":\n case \"image\":\n return <DynamicMedia {...commonProps} key={commonProps.key}/>;\n\n case \"info\":\n return <DynamicInfo {...commonProps} key={commonProps.key}/>;\n\n case \"toggleButton\":\n return (\n <DynamicToggleButton\n {...commonProps}\n key={commonProps.key}\n titlePosition={field.title_position}\n title={props.t(field.title)}\n />\n );\n\n case \"checkbox\":\n return (\n <DynamicCheckBox\n {...commonProps}\n key={commonProps.key}\n titlePosition={field.title_position}\n title={props.t(field.title)}\n />\n );\n\n case \"table\":\n return (\n <DynamicTable\n {...commonProps}\n key={commonProps.key}\n columns={field.table_columns}\n rows={field.table_rows}\n onAddClick={() => props.handleTableAddClick(field)}\n disableTableAddButton={Boolean(field.disableTableAddButton)}\n is_button={props.isButton}\n onTableCellChange={props.onTableCellChange}\n />\n );\n\n case \"radioButton\":\n return (\n <DynamicRadioButton\n {...commonProps}\n key={commonProps.key}\n titlePosition={field.title_position}\n title={props.t(field.title)}\n />\n );\n\n case \"customComponent\":\n return field.component;\n\n case \"tagsInput\":\n return (\n <DynamicTagsInput\n {...commonProps}\n key={commonProps.key}\n label={relationLabel}\n type={field.field_type}\n endIcon={endIcon}\n />\n );\n\n case \"currency_with_amount\":\n return (\n <DynamicCurrency\n {...commonProps}\n key={commonProps.key}\n currencyType={props.currencyOption}\n />\n );\n\n case \"select_with_input\":\n return (\n <DynamicInputSelect\n {...commonProps}\n currencyType={props.currencyOption}\n />\n );\n\n case \"chipInput\":\n return (\n <ChipGenerator\n {...commonProps}\n key={commonProps.key}\n maxChips={field.field_properties?.maxChips}\n allowDuplicates={field.field_properties?.allowDuplicates}\n validation={field.validation}\n endIcon={endIcon}\n onChipAdd={(chip: any) => console.log('Chip added:', chip)}\n onChipRemove={(chip: any, index: number) => console.log('Chip removed:', chip, 'at index:', index)}\n />\n );\n\n case \"location_select\":\n return (\n <LocationSearchSelect\n fieldArrayName={props.fieldArrayName}\n filterField={field.filterField}\n getSelectedData={(row: any[]) => props.getSelectedData(row)}\n locationFieldName={field.name}\n addType=\"location\"\n enable_footer={true}\n />\n );\n\n default:\n return null;\n }\n };\n\n // For table fields, use full width\n if (field.field_type === \"table\" || field.field_type === \"customComponent\") {\n return (\n <Grid item xs={12}>\n {renderField()}\n </Grid>\n );\n }\n\n return (\n <Grid item xs={gridSize}>\n {renderField()}\n </Grid>\n );\n});\n\nMemoizedField.displayName = 'MemoizedField';\n\n// Memoized FormSwitcher component\nconst MemoizedFormSwitcher = memo(({ \n section, \n switchForms, \n isFormSwitcher, \n control, \n fieldArrayName, \n formSwitcherName, \n handleFieldCleanUp, \n t \n}: {\n section: Section;\n switchForms?: any[];\n isFormSwitcher: boolean;\n control: any;\n fieldArrayName: string;\n formSwitcherName: string;\n handleFieldCleanUp: (forms: any[]) => void;\n t: (key: string) => string;\n}) => {\n const resetForm = useCallback(() => {\n handleFieldCleanUp(switchForms || []);\n }, [handleFieldCleanUp, switchForms]);\n\n if (!isFormSwitcher || !switchForms?.length) return null;\n\n return (\n <FormSwitcher\n {...section}\n isFormSwitcher={isFormSwitcher}\n control={control}\n fieldArrayName={fieldArrayName}\n formSwitcherName={formSwitcherName}\n label={t(section.form_switcher_label || '')}\n resetForm={resetForm}\n >\n {switchForms.map((forms: any) => (\n <FormControlLabel\n key={forms.id}\n value={forms.value || forms.name}\n control={<Radio />}\n slotProps={{ typography: { variant: \"body2\" } }}\n label={t(forms.name)}\n disabled={Boolean(section.disabled)}\n />\n ))}\n </FormSwitcher>\n );\n});\n\nMemoizedFormSwitcher.displayName = 'MemoizedFormSwitcher';\n\n// Main component\nconst FormSection = memo<FormSectionProps>(({\n section,\n index,\n members,\n switchForms,\n isFormSwitcher,\n control,\n fieldArrayName,\n formSwitcherName,\n displayAvtar,\n isButton,\n currencyOption,\n values,\n onBlur,\n setValue,\n onSelectFooterClick,\n getSelectedData,\n setCurrencyOptions,\n refreshOptions,\n handleFieldCleanUp,\n handleSetCountryCodeField,\n handleTableAddClick,\n onTableCellChange,\n setDetailsData,\n t,\n images\n}) => {\n // Memoize visible members to prevent recalculation\n const visibleMembers = useMemo(() => \n members?.filter(f => !f.is_hidden) || [],\n [members]\n );\n\n // Memoize field names to prevent recalculation\n const fieldsWithNames = useMemo(() => \n visibleMembers.map(field => ({\n ...field,\n fieldName: field.name || field.label.toLowerCase().split(\" \").join(\"_\")\n })),\n [visibleMembers]\n );\n\n // Memoize section header\n const sectionHeader = useMemo(() => {\n if (!section.label) return null;\n \n return (\n <div style={{ minHeight: \"16px\" }}>\n {index !== 0 && <Divider className='formParser--Section--SectionDivider' />}\n <Typography\n type=\"s3\"\n weight=\"medium\"\n mb={2}\n mt={4}\n color=\"theme.secondary.1000\"\n className='formParser--Section--SectionTitle'\n >\n {t(section.label)}\n </Typography>\n </div>\n );\n }, [section.label, index, t]);\n\n // Avatar component\n const avatarDisplay = useMemo(() => \n displayAvtar ? <div className='avtarDisplay'>ERP</div> : null,\n [displayAvtar]\n );\n\n // Common props for field rendering\n const fieldProps = useMemo(() => ({\n control,\n fieldArrayName,\n isButton,\n currencyOption,\n values,\n onBlur,\n setValue,\n onSelectFooterClick,\n getSelectedData,\n setCurrencyOptions,\n refreshOptions,\n handleSetCountryCodeField,\n handleTableAddClick,\n onTableCellChange,\n setDetailsData,\n t,\n images\n }), [\n control, fieldArrayName, isButton, currencyOption, values,\n onBlur, setValue, onSelectFooterClick, getSelectedData,\n setCurrencyOptions, refreshOptions, handleSetCountryCodeField,\n handleTableAddClick, onTableCellChange, setDetailsData, t, images\n ]);\n\n if (section.is_accordion) {\n return (\n <section key={index} className='formParser--Section'>\n <div style={{ marginTop: '20px' }}>\n <Accordion title={t(section.label || '')}>\n <div className=\"formParser--Grid formParser--Accordion\">\n <MemoizedFormSwitcher\n section={section}\n switchForms={switchForms}\n isFormSwitcher={isFormSwitcher}\n control={control}\n fieldArrayName={fieldArrayName}\n formSwitcherName={formSwitcherName}\n handleFieldCleanUp={handleFieldCleanUp}\n t={t}\n />\n {fieldsWithNames.map((field, fieldIndex) => (\n <MemoizedField\n key={`${section.label}-${field.fieldName}-${fieldIndex}`}\n field={field}\n fieldName={field.fieldName}\n sectionLabel={section.label}\n index={fieldIndex}\n {...fieldProps}\n />\n ))}\n </div>\n </Accordion>\n </div>\n </section>\n );\n }\n\n return (\n <section key={index} className='formParser--Section'>\n {sectionHeader}\n \n <MemoizedFormSwitcher\n section={section}\n switchForms={switchForms}\n isFormSwitcher={isFormSwitcher}\n control={control}\n fieldArrayName={fieldArrayName}\n formSwitcherName={formSwitcherName}\n handleFieldCleanUp={handleFieldCleanUp}\n t={t}\n />\n\n <Grid container spacing={2}>\n {avatarDisplay}\n {fieldsWithNames.map((field, fieldIndex) => (\n <MemoizedField\n key={`${section.label}-${field.fieldName}-${fieldIndex}`}\n field={field}\n fieldName={field.fieldName}\n sectionLabel={section.label}\n index={fieldIndex}\n {...fieldProps}\n />\n ))}\n </Grid>\n </section>\n );\n});\n\nFormSection.displayName = 'FormSection';\n\nexport { FormSection };\nexport default FormSection;"],"names":["MemoizedField","memo","field","fieldName","sectionLabel","index","props","gridSize","useMemo","is_fullwidth","custom_width","fieldKey","commonProps","key","name","position","formControl","control","fieldArrayName","required","is_required","label","t","placeholder","defaultValue","value","default_value","disabled","handleBlur","useCallback","e","onBlur","endIcon","iconSrc","email","images","sms","url","currency","dollar","geoLocation","location","field_type","src","alt","relationLabel","jsxs","className","children","relation","renderField","createElement","DynamicInput","type","DynamicDate","DynamicTime","DynamicPhone","setCountryCodeField","country","handleSetCountryCodeField","values","DynamicSearchSelect","apiType","_a","field_properties","customeFilter","_b","attributes","_c","disabledIds","_d","onChipRemove","setValue","onFooterClick","onSelectFooterClick","call","handleOptions","setCurrencyOptions","getSelectedData","refresh","refreshOptions","sortOrder","_e","DynamicMedia","DynamicInfo","DynamicToggleButton","titlePosition","title_position","title","DynamicCheckBox","DynamicTable","columns","table_columns","rows","table_rows","onAddClick","handleTableAddClick","disableTableAddButton","Boolean","is_button","isButton","onTableCellChange","DynamicRadioButton","component","DynamicTagsInput","DynamicCurrency","currencyType","currencyOption","jsx","DynamicInputSelect","ChipGenerator","maxChips","_f","allowDuplicates","_g","validation","onChipAdd","chip","LocationSearchSelect","filterField","row","locationFieldName","addType","enable_footer","Grid","item","xs","displayName","MemoizedFormSwitcher","section","switchForms","isFormSwitcher","formSwitcherName","handleFieldCleanUp","resetForm","length","FormSwitcher","form_switcher_label","map","forms","FormControlLabel","Radio","slotProps","typography","variant","id","FormSection","members","displayAvtar","setDetailsData","visibleMembers","filter","f","is_hidden","fieldsWithNames","toLowerCase","split","join","sectionHeader","style","minHeight","Divider","Typography","weight","mb","mt","color","avatarDisplay","fieldProps","is_accordion","marginTop","Accordion","fieldIndex","container","spacing"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/form-control/form-parser/form-section.tsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { memo, useMemo, useCallback } from 'react';\nimport { Grid, Divider, FormControlLabel, Radio } from '@mui/material';\nimport DynamicInput from '../form-builder/form-builder-element/text';\nimport DynamicDate from '../form-builder/form-builder-element/date';\nimport DynamicTime from '../form-builder/form-builder-element/time';\nimport DynamicPhone from '../form-builder/form-builder-element/phone';\nimport DynamicSearchSelect from '../form-builder/form-builder-element/dynamic-select';\nimport DynamicMedia from '../form-builder/form-builder-element/media';\nimport DynamicInfo from '../form-builder/form-builder-element/info';\nimport DynamicToggleButton from '../form-builder/form-builder-element/toggle-button';\nimport DynamicCheckBox from '../form-builder/form-builder-element/checkbox';\nimport DynamicTable from '../form-builder/form-builder-element/table';\nimport DynamicRadioButton from '../form-builder/form-builder-element/radio-button';\nimport DynamicTagsInput from '../form-builder/form-builder-element/dynamic-tags-input';\nimport DynamicCurrency from '../form-builder/form-builder-element/dynamic-currency-input';\nimport DynamicInputSelect from '../form-builder/form-builder-element/dynamic-input-select';\nimport ChipGenerator from '../../chip-generator/chip-generator';\nimport { LocationSearchSelect } from '../../location-select';\nimport FormSwitcher from './form-switcher';\nimport Typography from '../../typography/typography';\nimport Accordion from '../../accordion/accordion';\n\n// Types for better type safety\ninterface Field {\n name?: string;\n label: string;\n field_type: string;\n is_fullwidth?: boolean;\n custom_width?: number;\n is_hidden?: boolean;\n is_required?: boolean;\n disabled?: boolean;\n placeholder?: string;\n value?: any;\n default_value?: any;\n title?: string;\n title_position?: string;\n table_columns?: any[];\n table_rows?: any[];\n component?: React.ReactNode;\n field_properties?: {\n apiType?: string;\n customeFilter?: any;\n attributes?: any;\n disabledIds?: any[];\n sortOrder?: string;\n maxChips?: number;\n allowDuplicates?: boolean;\n };\n validation?: any;\n filterField?: string;\n}\n\ninterface Section {\n label?: string;\n is_accordion?: boolean;\n disabled?: boolean;\n form_switcher_label?: string;\n}\n\ninterface FormSectionProps {\n section: Section;\n index: number;\n members?: Field[];\n switchForms?: any[];\n isFormSwitcher: boolean;\n control: any;\n fieldArrayName: string;\n formSwitcherName: string;\n displayAvtar?: boolean;\n isButton?: boolean;\n currencyOption?: any;\n values: any;\n onBlur?: (e: any, fieldName?: string) => void;\n setValue: (name: string, value: any) => void;\n onSelectFooterClick?: (field: Field) => void;\n getSelectedData?: (row: any, key: any) => void;\n setCurrencyOptions: (options: any) => void;\n refreshOptions: any;\n handleFieldCleanUp: (forms: any[]) => void;\n handleSetCountryCodeField: (country: any, field: Field, fieldArrayName: string, values: any) => void;\n handleTableAddClick: (field: Field) => void;\n onTableCellChange?: (data: any) => void;\n // setDetailsData: (data: any) => void;\n t: (key: string) => string;\n images: any;\n}\n\n// Memoized field component to prevent unnecessary re-renders\nconst MemoizedField = memo(({\n field,\n fieldName,\n sectionLabel,\n index,\n ...props\n}: {\n field: Field;\n fieldName: string;\n sectionLabel?: string;\n index: number;\n [key: string]: any;\n}) => {\n const gridSize = useMemo(() =>\n field.is_fullwidth ? 12 : (field.custom_width ?? 6),\n [field.is_fullwidth, field.custom_width]\n );\n\n const fieldKey = useMemo(() =>\n `${sectionLabel}-${fieldName}-${index}`,\n [sectionLabel, fieldName, index]\n );\n\n const commonProps = useMemo(() => ({\n ...field,\n key: fieldKey,\n name: fieldName,\n position: index,\n formControl: props.control,\n fieldArrayName: props.fieldArrayName,\n required: field.is_required,\n label: props.t(field.label),\n placeholder: props.t(field.placeholder),\n defaultValue: field.value || field.default_value,\n disabled: field.disabled\n }), [field, fieldName, index, fieldKey, props.control, props.fieldArrayName, props.t]);\n\n const handleBlur = useCallback((e: any) => {\n if (props.onBlur && typeof props.onBlur === 'function') {\n props.onBlur(e, fieldName);\n }\n }, [props.onBlur, fieldName]);\n\n const endIcon = useMemo(() => {\n const iconMap: Record<string, string> = {\n email: props.images.sms,\n url: props.images.url,\n currency: props.images.dollar,\n geoLocation: props.images.location\n };\n\n const iconSrc = iconMap[field.field_type];\n return iconSrc ? <img src={iconSrc} alt={field.field_type} /> : null;\n }, [field.field_type, props.images]);\n\n const relationLabel = useMemo(() => (\n field.field_type === \"relation\" ? (\n <span className=\"formSection--Relation\">\n {props.t(field.label)}\n <img src={props.images.relation} alt=\"relation\" />\n </span>\n ) : props.t(field.label)\n ), [field.field_type, field.label, props.t, props.images.relation]);\n\n // Render field based on type\n const renderField = () => {\n switch (field.field_type) {\n case \"text\":\n case \"email\":\n case \"url\":\n case \"currency\":\n case \"number\":\n case \"geoLocation\":\n case \"relation\":\n return (\n <DynamicInput\n {...commonProps}\n key={commonProps.key}\n label={relationLabel}\n onBlur={handleBlur}\n type={field.field_type}\n endIcon={endIcon}\n disabled={field.disabled || field.field_type === \"relation\"}\n />\n );\n\n case \"date\":\n return <DynamicDate {...commonProps} key={commonProps.key} />;\n\n case \"time\":\n return <DynamicTime {...commonProps} key={commonProps.key} />;\n\n case \"phone\":\n return (\n <DynamicPhone\n {...commonProps}\n key={commonProps.key}\n setCountryCodeField={(country: any) =>\n props.handleSetCountryCodeField(country, field, props.fieldArrayName, props.values)\n }\n />\n );\n\n case \"select\":\n return (\n <DynamicSearchSelect\n {...commonProps}\n key={commonProps.key}\n apiType={field.field_properties?.apiType}\n customeFilter={field.field_properties?.customeFilter}\n attributes={field.field_properties?.attributes}\n disabledIds={field.field_properties?.disabledIds}\n onChipRemove={() => props.setValue(`${props.fieldArrayName}.${fieldName}`, [])}\n onFooterClick={() => props.onSelectFooterClick?.(field)}\n handleOptions={props.setCurrencyOptions}\n getSelectedData={props.getSelectedData}\n refresh={props.refreshOptions}\n sortOrder={field.field_properties?.sortOrder}\n showCancelButton={field.field_properties?.showCancelButton}\n />\n );\n\n case \"file\":\n case \"image\":\n return <DynamicMedia {...commonProps} key={commonProps.key} />;\n\n case \"info\":\n return <DynamicInfo {...commonProps} key={commonProps.key} />;\n\n case \"toggleButton\":\n return (\n <DynamicToggleButton\n {...commonProps}\n key={commonProps.key}\n titlePosition={field.title_position}\n title={props.t(field.title)}\n />\n );\n\n case \"checkbox\":\n return (\n <DynamicCheckBox\n {...commonProps}\n key={commonProps.key}\n titlePosition={field.title_position}\n title={props.t(field.title)}\n />\n );\n\n case \"table\":\n return (\n <DynamicTable\n {...commonProps}\n key={commonProps.key}\n columns={field.table_columns}\n rows={field.table_rows}\n onAddClick={() => props.handleTableAddClick(field)}\n disableTableAddButton={Boolean(field.disableTableAddButton)}\n is_button={props.isButton}\n onTableCellChange={props.onTableCellChange}\n />\n );\n\n case \"radioButton\":\n return (\n <DynamicRadioButton\n {...commonProps}\n key={commonProps.key}\n titlePosition={field.title_position}\n title={props.t(field.title)}\n />\n );\n\n case \"customComponent\":\n return field.component;\n\n case \"tagsInput\":\n return (\n <DynamicTagsInput\n {...commonProps}\n key={commonProps.key}\n label={relationLabel}\n type={field.field_type}\n endIcon={endIcon}\n />\n );\n\n case \"currency_with_amount\":\n return (\n <DynamicCurrency\n {...commonProps}\n key={commonProps.key}\n currencyType={props.currencyOption}\n />\n );\n\n case \"select_with_input\":\n return (\n <DynamicInputSelect\n {...commonProps}\n currencyType={props.currencyOption}\n />\n );\n\n case \"chipInput\":\n return (\n <ChipGenerator\n {...commonProps}\n key={commonProps.key}\n maxChips={field.field_properties?.maxChips}\n allowDuplicates={field.field_properties?.allowDuplicates}\n validation={field.validation}\n endIcon={endIcon}\n onChipAdd={(chip: any) => console.log('Chip added:', chip)}\n onChipRemove={(chip: any, index: number) => console.log('Chip removed:', chip, 'at index:', index)}\n />\n );\n\n case \"location_select\":\n return (\n <LocationSearchSelect\n fieldArrayName={props.fieldArrayName}\n filterField={field.filterField}\n getSelectedData={(row: any[]) => props.getSelectedData(row)}\n locationFieldName={field.name}\n addType=\"location\"\n enable_footer={true}\n />\n );\n\n default:\n return null;\n }\n };\n\n // For table fields, use full width\n if (field.field_type === \"table\" || field.field_type === \"customComponent\") {\n return (\n <Grid item xs={12}>\n {renderField()}\n </Grid>\n );\n }\n\n return (\n <Grid item xs={gridSize}>\n {renderField()}\n </Grid>\n );\n});\n\nMemoizedField.displayName = 'MemoizedField';\n\n// Memoized FormSwitcher component\nconst MemoizedFormSwitcher = memo(({\n section,\n switchForms,\n isFormSwitcher,\n control,\n fieldArrayName,\n formSwitcherName,\n handleFieldCleanUp,\n t\n}: {\n section: Section;\n switchForms?: any[];\n isFormSwitcher: boolean;\n control: any;\n fieldArrayName: string;\n formSwitcherName: string;\n handleFieldCleanUp: (forms: any[]) => void;\n t: (key: string) => string;\n}) => {\n const resetForm = useCallback(() => {\n handleFieldCleanUp(switchForms || []);\n }, [handleFieldCleanUp, switchForms]);\n\n if (!isFormSwitcher || !switchForms?.length) return null;\n\n return (\n <FormSwitcher\n {...section}\n isFormSwitcher={isFormSwitcher}\n control={control}\n fieldArrayName={fieldArrayName}\n formSwitcherName={formSwitcherName}\n label={t(section.form_switcher_label || '')}\n resetForm={resetForm}\n >\n {switchForms.map((forms: any) => (\n <FormControlLabel\n key={forms.id}\n value={forms.value || forms.name}\n control={<Radio />}\n slotProps={{ typography: { variant: \"body2\" } }}\n label={t(forms.name)}\n disabled={Boolean(section.disabled)}\n />\n ))}\n </FormSwitcher>\n );\n});\n\nMemoizedFormSwitcher.displayName = 'MemoizedFormSwitcher';\n\n// Main component\nconst FormSection = memo<FormSectionProps>(({\n section,\n index,\n members,\n switchForms,\n isFormSwitcher,\n control,\n fieldArrayName,\n formSwitcherName,\n displayAvtar,\n isButton,\n currencyOption,\n values,\n onBlur,\n setValue,\n onSelectFooterClick,\n getSelectedData,\n setCurrencyOptions,\n refreshOptions,\n handleFieldCleanUp,\n handleSetCountryCodeField,\n handleTableAddClick,\n onTableCellChange,\n setDetailsData,\n t,\n images\n}) => {\n // Memoize visible members to prevent recalculation\n const visibleMembers = useMemo(() =>\n members?.filter(f => !f.is_hidden) || [],\n [members]\n );\n\n // Memoize field names to prevent recalculation\n const fieldsWithNames = useMemo(() =>\n visibleMembers.map(field => ({\n ...field,\n fieldName: field.name || field.label.toLowerCase().split(\" \").join(\"_\")\n })),\n [visibleMembers]\n );\n\n // Memoize section header\n const sectionHeader = useMemo(() => {\n if (!section.label) return null;\n\n return (\n <div style={{ minHeight: \"16px\" }}>\n {index !== 0 && <Divider className='formParser--Section--SectionDivider' />}\n <Typography\n type=\"s3\"\n weight=\"medium\"\n mb={2}\n mt={4}\n color=\"theme.secondary.1000\"\n className='formParser--Section--SectionTitle'\n >\n {t(section.label)}\n </Typography>\n </div>\n );\n }, [section.label, index, t]);\n\n // Avatar component\n const avatarDisplay = useMemo(() =>\n displayAvtar ? <div className='avtarDisplay'>ERP</div> : null,\n [displayAvtar]\n );\n\n // Common props for field rendering\n const fieldProps = useMemo(() => ({\n control,\n fieldArrayName,\n isButton,\n currencyOption,\n values,\n onBlur,\n setValue,\n onSelectFooterClick,\n getSelectedData,\n setCurrencyOptions,\n refreshOptions,\n handleSetCountryCodeField,\n handleTableAddClick,\n onTableCellChange,\n setDetailsData,\n t,\n images\n }), [\n control, fieldArrayName, isButton, currencyOption, values,\n onBlur, setValue, onSelectFooterClick, getSelectedData,\n setCurrencyOptions, refreshOptions, handleSetCountryCodeField,\n handleTableAddClick, onTableCellChange, setDetailsData, t, images\n ]);\n\n if (section.is_accordion) {\n return (\n <section key={index} className='formParser--Section'>\n <div style={{ marginTop: '20px' }}>\n <Accordion title={t(section.label || '')}>\n <div className=\"formParser--Grid formParser--Accordion\">\n <MemoizedFormSwitcher\n section={section}\n switchForms={switchForms}\n isFormSwitcher={isFormSwitcher}\n control={control}\n fieldArrayName={fieldArrayName}\n formSwitcherName={formSwitcherName}\n handleFieldCleanUp={handleFieldCleanUp}\n t={t}\n />\n {fieldsWithNames.map((field, fieldIndex) => (\n <MemoizedField\n key={`${section.label}-${field.fieldName}-${fieldIndex}`}\n field={field}\n fieldName={field.fieldName}\n sectionLabel={section.label}\n index={fieldIndex}\n {...fieldProps}\n />\n ))}\n </div>\n </Accordion>\n </div>\n </section>\n );\n }\n\n return (\n <section key={index} className='formParser--Section'>\n {sectionHeader}\n\n <MemoizedFormSwitcher\n section={section}\n switchForms={switchForms}\n isFormSwitcher={isFormSwitcher}\n control={control}\n fieldArrayName={fieldArrayName}\n formSwitcherName={formSwitcherName}\n handleFieldCleanUp={handleFieldCleanUp}\n t={t}\n />\n\n <Grid container spacing={2}>\n {avatarDisplay}\n {fieldsWithNames.map((field, fieldIndex) => (\n <MemoizedField\n key={`${section.label}-${field.fieldName}-${fieldIndex}`}\n field={field}\n fieldName={field.fieldName}\n sectionLabel={section.label}\n index={fieldIndex}\n {...fieldProps}\n />\n ))}\n </Grid>\n </section>\n );\n});\n\nFormSection.displayName = 'FormSection';\n\nexport { FormSection };\nexport default FormSection;"],"names":["MemoizedField","memo","field","fieldName","sectionLabel","index","props","gridSize","useMemo","is_fullwidth","custom_width","fieldKey","commonProps","key","name","position","formControl","control","fieldArrayName","required","is_required","label","t","placeholder","defaultValue","value","default_value","disabled","handleBlur","useCallback","e","onBlur","endIcon","iconSrc","email","images","sms","url","currency","dollar","geoLocation","location","field_type","src","alt","relationLabel","jsxs","className","children","relation","renderField","createElement","DynamicInput","type","DynamicDate","DynamicTime","DynamicPhone","setCountryCodeField","country","handleSetCountryCodeField","values","DynamicSearchSelect","apiType","_a","field_properties","customeFilter","_b","attributes","_c","disabledIds","_d","onChipRemove","setValue","onFooterClick","onSelectFooterClick","call","handleOptions","setCurrencyOptions","getSelectedData","refresh","refreshOptions","sortOrder","_e","showCancelButton","_f","DynamicMedia","DynamicInfo","DynamicToggleButton","titlePosition","title_position","title","DynamicCheckBox","DynamicTable","columns","table_columns","rows","table_rows","onAddClick","handleTableAddClick","disableTableAddButton","Boolean","is_button","isButton","onTableCellChange","DynamicRadioButton","component","DynamicTagsInput","DynamicCurrency","currencyType","currencyOption","jsx","DynamicInputSelect","ChipGenerator","maxChips","_g","allowDuplicates","_h","validation","onChipAdd","chip","LocationSearchSelect","filterField","row","locationFieldName","addType","enable_footer","Grid","item","xs","displayName","MemoizedFormSwitcher","section","switchForms","isFormSwitcher","formSwitcherName","handleFieldCleanUp","resetForm","length","FormSwitcher","form_switcher_label","map","forms","FormControlLabel","Radio","slotProps","typography","variant","id","FormSection","members","displayAvtar","setDetailsData","visibleMembers","filter","f","is_hidden","fieldsWithNames","toLowerCase","split","join","sectionHeader","style","minHeight","Divider","Typography","weight","mb","mt","color","avatarDisplay","fieldProps","is_accordion","marginTop","Accordion","fieldIndex","container","spacing"],"mappings":"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"}
@@ -169,6 +169,7 @@ const ListingComponent = ({
169
169
  actionBtn: actionButtons
170
170
  }
171
171
  ),
172
+ "ssdssds",
172
173
  /* @__PURE__ */ jsxs(Fragment, { children: [
173
174
  (activePage == null ? void 0 : activePage.active_view) === viewTypes.TABLE && /* @__PURE__ */ jsx(
174
175
  MaterialTable,
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../../src/components/listing/listing.tsx"],"sourcesContent":["import React, { useState, useMemo, useEffect, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport AddIcon from '@mui/icons-material/Add';\n\nimport { MaterialTable, ActionBar, Fallback, Footer, Button, ConfirmPopUp } from '../../components';\nimport { viewTypes } from '../../constants';\n\nimport { IListingComponentProps, IListingState } from './types'\nimport logo from '../../assets/images';\n\nimport './listing.scss';\nimport { useDataFetcher, apiHelper } from '../../hooks';\nimport { useDispatch } from 'react-redux';\nimport { usePages } from '../../hooks';\nimport { useAppSelector } from '../../redux';\nimport { enqueueSnackbar } from 'notistack';\n\nconst ListingComponent: React.FC<IListingComponentProps> = ({\n title,\n tableColumns,\n columnOrder = ['mrt-row-select'],\n rowActionMenu,\n destructiveActionMenu,\n handleAddButton,\n searchText,\n handleSearch,\n disabledViews = ['Kanban', 'Calendar', 'Gantt'],\n fields,\n selectedIds = [],\n pageName,\n importModuleName,\n showAddButton = true,\n actionButtons,\n paginationResource,\n enablePages = false,\n GridComponent,\n onSelectRow,\n onColumnOrdering,\n onColumnVisibility,\n onSortingChange,\n fallbackIcon,\n className = '',\n onDeleteConfirm,\n deleteTitle,\n deleteDescription,\n fetchApi,\n resetState,\n setPaginationModel,\n deleteApi,\n storeName,\n isUseFields,\n customeFilter,\n customFields,\n isLoading: loadinState\n}) => {\n const { t } = useTranslation();\n\n //dispatch\n const dispatch = useDispatch()\n\n //Page Context\n const { activePage, updatePageInfo } = usePages();\n //Store \n const {\n paginationModel,\n rows,\n isLoading,\n } = useAppSelector((store) => store?.[storeName]);\n console.log(\"🚀 ~ ListingComponent ~ rows:\", rows)\n\n\n const { pageNo, limit: pLimit, totalCount } = paginationModel;\n const limit = activePage.page_size || pLimit;\n const skip = limit * (pageNo - 1);\n\n\n // Local state\n const [listingState, setListingState] = useState<IListingState>({\n selectedRows: selectedIds,\n itemToDelete: null,\n isDeleting: false\n });\n\n // Calculate pagination values\n const total = Math.ceil(totalCount / limit);\n\n // Memoized table data\n const tableRows = useMemo(() => rows, [rows]);\n\n // Handle row selection\n const handleRowSelection = (selectedRows: any[]) => {\n const selectedRowIds = selectedRows.map((row) => row.original.id);\n setListingState(prev => ({ ...prev, selectedRows: selectedRowIds }));\n onSelectRow?.(selectedRows);\n };\n\n // Handle pagination changes\n const handlePaginationChange = (model: any) => {\n if (activePage.page_size !== model?.limit) {\n updatePageInfo({ page_size: model.limit });\n }\n handlePaginationModel(model);\n };\n\n // Handle search\n const handleSearchChange = (search: string) => {\n updatePageInfo({ search });\n handlePaginationModel({ pageNo: 1 });\n handleSearch?.(search);\n };\n\n // Handle delete confirmation\n const handleDeleteClick = (item: any) => {\n setListingState(prev => ({ ...prev, itemToDelete: item }));\n };\n\n const handleDeleteConfirm = async () => {\n if (!listingState.itemToDelete) return;\n\n setListingState(prev => ({ ...prev, isDeleting: true }));\n\n try {\n onDeleteConfirm ? await onDeleteConfirm(listingState.itemToDelete) : await deleteRecord(listingState.itemToDelete);\n setListingState(prev => ({ ...prev, itemToDelete: null, isDeleting: false }));\n } catch (error) {\n setListingState(prev => ({ ...prev, isDeleting: false }));\n }\n };\n\n const handleDeleteCancel = () => {\n setListingState(prev => ({ ...prev, itemToDelete: null }));\n };\n\n // Enhance destructive actions to include delete confirmation\n const enhancedDestructiveActions = useMemo(() => {\n if (!destructiveActionMenu) return undefined;\n\n return destructiveActionMenu.map(action => ({\n ...action,\n handleAction: action.label.toLowerCase().includes('delete')\n ? handleDeleteClick\n : action.handleAction\n }));\n }, [destructiveActionMenu]);\n\n //Handle pagination model\n const handlePaginationModel = (model: IPaginationModel) => {\n if (activePage.page_size != model?.limit) {\n updatePageInfo({ page_size: model.limit });\n }\n dispatch(setPaginationModel(model));\n }\n\n //Delete\n const deleteRecord = async (requestToDelete: any) => {\n const response: any = await dispatch(deleteApi(String(requestToDelete.id)));\n apiHelper(response, () => {\n enqueueSnackbar(\n ` ${title}: ${requestToDelete?.id} ${t('common.msg.deleted')}`,\n )\n getData()\n })\n };\n\n\n\n\n //clean up\n const cleanUp = useCallback(() => {\n dispatch(resetState())\n }, [dispatch, resetState]);\n\n // Data fetching\n const getData = useDataFetcher(\n tableColumns?.length ? tableColumns : activePage,\n { skip, limit },\n fetchApi,\n customeFilter,\n [],\n true,\n customFields\n\n )\n\n useEffect(() => {\n getData()\n }, [getData])\n\n useEffect(() => {\n return cleanUp;\n }, [cleanUp]);\n\n\n return (\n <section className={`listing-component ${className}`}>\n <ActionBar\n title={title}\n data={activePage?.views || []}\n setData={(views) => updatePageInfo({ views })}\n active={activePage.active_view}\n setActive={(tab) => updatePageInfo({ active_view: tab })}\n handleAddButton={handleAddButton}\n searchText={searchText || activePage.search || ''}\n handleSearch={handleSearchChange}\n disabledViews={disabledViews}\n fields={fields}\n isUseFields={isUseFields}\n selectedIds={listingState.selectedRows}\n pageName={pageName}\n importModuleName={importModuleName}\n button={showAddButton}\n actionBtn={actionButtons}\n />\n\n\n <>\n {activePage?.active_view === viewTypes.TABLE && (\n <MaterialTable\n rows={tableRows || []}\n columns={tableColumns}\n paginationModel={paginationModel}\n totalPages={total}\n columnOrder={[...columnOrder, ...activePage.column_order]}\n states={{ isLoading: loadinState || isLoading }}\n onSortingChange={onSortingChange ? (sort) => {\n updatePageInfo({ sort });\n onSortingChange(sort);\n } : undefined}\n enableColumnDragging={false}\n enableEditing={false}\n rowActionMenu={rowActionMenu}\n destructiveActionMenu={enhancedDestructiveActions}\n isResetRow={false}\n onSelectRow={handleRowSelection}\n handleColumnOrdering={onColumnOrdering ? (colOrder) => {\n const newOrder = colOrder.slice(1);\n updatePageInfo({ column_order: newOrder });\n onColumnOrdering(newOrder);\n } : undefined}\n onColumnVisibility={onColumnVisibility ? (columns) => {\n updatePageInfo({ visible_columns: columns });\n onColumnVisibility(columns);\n } : undefined}\n />\n )}\n\n {activePage?.active_view === viewTypes.GRID && GridComponent && (\n <GridComponent\n data={tableRows}\n rowActionMenu={rowActionMenu}\n destructiveActionMenu={enhancedDestructiveActions}\n />\n )}\n\n {!activePage?.active_view && !isLoading && (\n <Fallback\n heading={title}\n icon={fallbackIcon || <img src={logo.shippmentFallback} alt=\"fallback\" />}\n >\n {showAddButton && handleAddButton && (\n <Button\n variant='contained'\n startIcon={<AddIcon />}\n onClick={handleAddButton}\n >\n {`${t('common.add')} ${t('common.new')}`}\n </Button>\n )}\n </Fallback>\n )}\n\n <Footer\n total={total}\n paginationModel={{\n ...paginationModel,\n limit: activePage.page_size\n }}\n handlePaginationModel={handlePaginationChange}\n resource={paginationResource}\n enablePages={enablePages}\n />\n\n <ConfirmPopUp\n open={Boolean(listingState.itemToDelete)}\n onClose={handleDeleteCancel}\n onConfirm={handleDeleteConfirm}\n loading={listingState.isDeleting}\n title={deleteTitle || `${t('common.delete')} ${title}`}\n description={\n deleteDescription\n ? deleteDescription(listingState.itemToDelete)\n : `${t('common.deleteMsg')} ${title}: ${listingState.itemToDelete?.id || listingState.itemToDelete?.name || ''} ?`\n }\n />\n </>\n </section>\n );\n};\n\nexport default ListingComponent;\n"],"names":["useDataFetcher","logo","AddIcon"],"mappings":";;;;;;;;;;;;;;;;;;;AAiBA,MAAM,mBAAqD,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA,cAAc,CAAC,gBAAgB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB,CAAC,UAAU,YAAY,OAAO;AAAA,EAC9C;AAAA,EACA,cAAc,CAAA;AAAA,EACd;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AACf,MAAM;;AACF,QAAM,EAAE,EAAA,IAAM,eAAA;AAGd,QAAM,WAAW,YAAA;AAGjB,QAAM,EAAE,YAAY,eAAA,IAAmB,SAAA;AAEvC,QAAM;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACA,eAAe,CAAC,UAAU,+BAAQ,UAAU;AAChD,UAAQ,IAAI,iCAAiC,IAAI;AAGjD,QAAM,EAAE,QAAQ,OAAO,QAAQ,eAAe;AAC9C,QAAM,QAAQ,WAAW,aAAa;AACtC,QAAM,OAAO,SAAS,SAAS;AAI/B,QAAM,CAAC,cAAc,eAAe,IAAI,SAAwB;AAAA,IAC5D,cAAc;AAAA,IACd,cAAc;AAAA,IACd,YAAY;AAAA,EAAA,CACf;AAGD,QAAM,QAAQ,KAAK,KAAK,aAAa,KAAK;AAG1C,QAAM,YAAY,QAAQ,MAAM,MAAM,CAAC,IAAI,CAAC;AAG5C,QAAM,qBAAqB,CAAC,iBAAwB;AAChD,UAAM,iBAAiB,aAAa,IAAI,CAAC,QAAQ,IAAI,SAAS,EAAE;AAChE,oBAAgB,WAAS,EAAE,GAAG,MAAM,cAAc,iBAAiB;AACnE,+CAAc;AAAA,EAClB;AAGA,QAAM,yBAAyB,CAAC,UAAe;AAC3C,QAAI,WAAW,eAAc,+BAAO,QAAO;AACvC,qBAAe,EAAE,WAAW,MAAM,MAAA,CAAO;AAAA,IAC7C;AACA,0BAAsB,KAAK;AAAA,EAC/B;AAGA,QAAM,qBAAqB,CAAC,WAAmB;AAC3C,mBAAe,EAAE,QAAQ;AACzB,0BAAsB,EAAE,QAAQ,GAAG;AACnC,iDAAe;AAAA,EACnB;AAGA,QAAM,oBAAoB,CAAC,SAAc;AACrC,oBAAgB,WAAS,EAAE,GAAG,MAAM,cAAc,OAAO;AAAA,EAC7D;AAEA,QAAM,sBAAsB,YAAY;AACpC,QAAI,CAAC,aAAa,aAAc;AAEhC,oBAAgB,WAAS,EAAE,GAAG,MAAM,YAAY,OAAO;AAEvD,QAAI;AACA,wBAAkB,MAAM,gBAAgB,aAAa,YAAY,IAAI,MAAM,aAAa,aAAa,YAAY;AACjH,sBAAgB,CAAA,UAAS,EAAE,GAAG,MAAM,cAAc,MAAM,YAAY,QAAQ;AAAA,IAChF,SAAS,OAAO;AACZ,sBAAgB,WAAS,EAAE,GAAG,MAAM,YAAY,QAAQ;AAAA,IAC5D;AAAA,EACJ;AAEA,QAAM,qBAAqB,MAAM;AAC7B,oBAAgB,WAAS,EAAE,GAAG,MAAM,cAAc,OAAO;AAAA,EAC7D;AAGA,QAAM,6BAA6B,QAAQ,MAAM;AAC7C,QAAI,CAAC,sBAAuB,QAAO;AAEnC,WAAO,sBAAsB,IAAI,CAAA,YAAW;AAAA,MACxC,GAAG;AAAA,MACH,cAAc,OAAO,MAAM,YAAA,EAAc,SAAS,QAAQ,IACpD,oBACA,OAAO;AAAA,IAAA,EACf;AAAA,EACN,GAAG,CAAC,qBAAqB,CAAC;AAG1B,QAAM,wBAAwB,CAAC,UAA4B;AACvD,QAAI,WAAW,cAAa,+BAAO,QAAO;AACtC,qBAAe,EAAE,WAAW,MAAM,MAAA,CAAO;AAAA,IAC7C;AACA,aAAS,mBAAmB,KAAK,CAAC;AAAA,EACtC;AAGA,QAAM,eAAe,OAAO,oBAAyB;AACjD,UAAM,WAAgB,MAAM,SAAS,UAAU,OAAO,gBAAgB,EAAE,CAAC,CAAC;AAC1E,cAAU,UAAU,MAAM;AACtB;AAAA,QACI,IAAI,KAAK,KAAK,mDAAiB,EAAE,IAAI,EAAE,oBAAoB,CAAC;AAAA,MAAA;AAEhE,cAAA;AAAA,IACJ,CAAC;AAAA,EACL;AAMA,QAAM,UAAU,YAAY,MAAM;AAC9B,aAAS,YAAY;AAAA,EACzB,GAAG,CAAC,UAAU,UAAU,CAAC;AAGzB,QAAM,UAAUA;AAAAA,KACZ,6CAAc,UAAS,eAAe;AAAA,IACtC,EAAE,MAAM,MAAA;AAAA,IACR;AAAA,IACA;AAAA,IACA,CAAA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAIJ,YAAU,MAAM;AACZ,YAAA;AAAA,EACJ,GAAG,CAAC,OAAO,CAAC;AAEZ,YAAU,MAAM;AACZ,WAAO;AAAA,EACX,GAAG,CAAC,OAAO,CAAC;AAGZ,SACI,qBAAC,WAAA,EAAQ,WAAW,qBAAqB,SAAS,IAC9C,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACG;AAAA,QACA,OAAM,yCAAY,UAAS,CAAA;AAAA,QAC3B,SAAS,CAAC,UAAU,eAAe,EAAE,OAAO;AAAA,QAC5C,QAAQ,WAAW;AAAA,QACnB,WAAW,CAAC,QAAQ,eAAe,EAAE,aAAa,KAAK;AAAA,QACvD;AAAA,QACA,YAAY,cAAc,WAAW,UAAU;AAAA,QAC/C,cAAc;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA,aAAa,aAAa;AAAA,QAC1B;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,QACR,WAAW;AAAA,MAAA;AAAA,IAAA;AAAA,IAIf,qBAAA,UAAA,EACK,UAAA;AAAA,OAAA,yCAAY,iBAAgB,UAAU,SACnC;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,MAAM,aAAa,CAAA;AAAA,UACnB,SAAS;AAAA,UACT;AAAA,UACA,YAAY;AAAA,UACZ,aAAa,CAAC,GAAG,aAAa,GAAG,WAAW,YAAY;AAAA,UACxD,QAAQ,EAAE,WAAW,eAAe,UAAA;AAAA,UACpC,iBAAiB,kBAAkB,CAAC,SAAS;AACzC,2BAAe,EAAE,MAAM;AACvB,4BAAgB,IAAI;AAAA,UACxB,IAAI;AAAA,UACJ,sBAAsB;AAAA,UACtB,eAAe;AAAA,UACf;AAAA,UACA,uBAAuB;AAAA,UACvB,YAAY;AAAA,UACZ,aAAa;AAAA,UACb,sBAAsB,mBAAmB,CAAC,aAAa;AACnD,kBAAM,WAAW,SAAS,MAAM,CAAC;AACjC,2BAAe,EAAE,cAAc,UAAU;AACzC,6BAAiB,QAAQ;AAAA,UAC7B,IAAI;AAAA,UACJ,oBAAoB,qBAAqB,CAAC,YAAY;AAClD,2BAAe,EAAE,iBAAiB,SAAS;AAC3C,+BAAmB,OAAO;AAAA,UAC9B,IAAI;AAAA,QAAA;AAAA,MAAA;AAAA,OAIX,yCAAY,iBAAgB,UAAU,QAAQ,iBAC3C;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,MAAM;AAAA,UACN;AAAA,UACA,uBAAuB;AAAA,QAAA;AAAA,MAAA;AAAA,MAI9B,EAAC,yCAAY,gBAAe,CAAC,aAC1B;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,SAAS;AAAA,UACT,MAAM,gBAAgB,oBAAC,OAAA,EAAI,KAAKC,OAAK,mBAAmB,KAAI,YAAW;AAAA,UAEtE,2BAAiB,mBACd;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,SAAQ;AAAA,cACR,+BAAYC,WAAA,EAAQ;AAAA,cACpB,SAAS;AAAA,cAER,aAAG,EAAE,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC;AAAA,YAAA;AAAA,UAAA;AAAA,QAC1C;AAAA,MAAA;AAAA,MAKZ;AAAA,QAAC;AAAA,QAAA;AAAA,UACG;AAAA,UACA,iBAAiB;AAAA,YACb,GAAG;AAAA,YACH,OAAO,WAAW;AAAA,UAAA;AAAA,UAEtB,uBAAuB;AAAA,UACvB,UAAU;AAAA,UACV;AAAA,QAAA;AAAA,MAAA;AAAA,MAGJ;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,MAAM,QAAQ,aAAa,YAAY;AAAA,UACvC,SAAS;AAAA,UACT,WAAW;AAAA,UACX,SAAS,aAAa;AAAA,UACtB,OAAO,eAAe,GAAG,EAAE,eAAe,CAAC,IAAI,KAAK;AAAA,UACpD,aACI,oBACM,kBAAkB,aAAa,YAAY,IAC3C,GAAG,EAAE,kBAAkB,CAAC,IAAI,KAAK,OAAK,kBAAa,iBAAb,mBAA2B,SAAM,kBAAa,iBAAb,mBAA2B,SAAQ,EAAE;AAAA,QAAA;AAAA,MAAA;AAAA,IAE1H,EAAA,CACJ;AAAA,EAAA,GACJ;AAER;"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../../../src/components/listing/listing.tsx"],"sourcesContent":["import React, { useState, useMemo, useEffect, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport AddIcon from '@mui/icons-material/Add';\n\nimport { MaterialTable, ActionBar, Fallback, Footer, Button, ConfirmPopUp } from '../../components';\nimport { viewTypes } from '../../constants';\n\nimport { IListingComponentProps, IListingState } from './types'\nimport logo from '../../assets/images';\n\nimport './listing.scss';\nimport { useDataFetcher, apiHelper } from '../../hooks';\nimport { useDispatch } from 'react-redux';\nimport { usePages } from '../../hooks';\nimport { useAppSelector } from '../../redux';\nimport { enqueueSnackbar } from 'notistack';\n\nconst ListingComponent: React.FC<IListingComponentProps> = ({\n title,\n tableColumns,\n columnOrder = ['mrt-row-select'],\n rowActionMenu,\n destructiveActionMenu,\n handleAddButton,\n searchText,\n handleSearch,\n disabledViews = ['Kanban', 'Calendar', 'Gantt'],\n fields,\n selectedIds = [],\n pageName,\n importModuleName,\n showAddButton = true,\n actionButtons,\n paginationResource,\n enablePages = false,\n GridComponent,\n onSelectRow,\n onColumnOrdering,\n onColumnVisibility,\n onSortingChange,\n fallbackIcon,\n className = '',\n onDeleteConfirm,\n deleteTitle,\n deleteDescription,\n fetchApi,\n resetState,\n setPaginationModel,\n deleteApi,\n storeName,\n isUseFields,\n customeFilter,\n customFields,\n isLoading: loadinState\n}) => {\n const { t } = useTranslation();\n\n //dispatch\n const dispatch = useDispatch()\n\n //Page Context\n const { activePage, updatePageInfo } = usePages();\n //Store \n const {\n paginationModel,\n rows,\n isLoading,\n } = useAppSelector((store) => store?.[storeName]);\n console.log(\"🚀 ~ ListingComponent ~ rows:\", rows)\n\n\n const { pageNo, limit: pLimit, totalCount } = paginationModel;\n const limit = activePage.page_size || pLimit;\n const skip = limit * (pageNo - 1);\n\n\n // Local state\n const [listingState, setListingState] = useState<IListingState>({\n selectedRows: selectedIds,\n itemToDelete: null,\n isDeleting: false\n });\n\n // Calculate pagination values\n const total = Math.ceil(totalCount / limit);\n\n // Memoized table data\n const tableRows = useMemo(() => rows, [rows]);\n\n // Handle row selection\n const handleRowSelection = (selectedRows: any[]) => {\n const selectedRowIds = selectedRows.map((row) => row.original.id);\n setListingState(prev => ({ ...prev, selectedRows: selectedRowIds }));\n onSelectRow?.(selectedRows);\n };\n\n // Handle pagination changes\n const handlePaginationChange = (model: any) => {\n if (activePage.page_size !== model?.limit) {\n updatePageInfo({ page_size: model.limit });\n }\n handlePaginationModel(model);\n };\n\n // Handle search\n const handleSearchChange = (search: string) => {\n updatePageInfo({ search });\n handlePaginationModel({ pageNo: 1 });\n handleSearch?.(search);\n };\n\n // Handle delete confirmation\n const handleDeleteClick = (item: any) => {\n setListingState(prev => ({ ...prev, itemToDelete: item }));\n };\n\n const handleDeleteConfirm = async () => {\n if (!listingState.itemToDelete) return;\n\n setListingState(prev => ({ ...prev, isDeleting: true }));\n\n try {\n onDeleteConfirm ? await onDeleteConfirm(listingState.itemToDelete) : await deleteRecord(listingState.itemToDelete);\n setListingState(prev => ({ ...prev, itemToDelete: null, isDeleting: false }));\n } catch (error) {\n setListingState(prev => ({ ...prev, isDeleting: false }));\n }\n };\n\n const handleDeleteCancel = () => {\n setListingState(prev => ({ ...prev, itemToDelete: null }));\n };\n\n // Enhance destructive actions to include delete confirmation\n const enhancedDestructiveActions = useMemo(() => {\n if (!destructiveActionMenu) return undefined;\n\n return destructiveActionMenu.map(action => ({\n ...action,\n handleAction: action.label.toLowerCase().includes('delete')\n ? handleDeleteClick\n : action.handleAction\n }));\n }, [destructiveActionMenu]);\n\n //Handle pagination model\n const handlePaginationModel = (model: IPaginationModel) => {\n if (activePage.page_size != model?.limit) {\n updatePageInfo({ page_size: model.limit });\n }\n dispatch(setPaginationModel(model));\n }\n\n //Delete\n const deleteRecord = async (requestToDelete: any) => {\n const response: any = await dispatch(deleteApi(String(requestToDelete.id)));\n apiHelper(response, () => {\n enqueueSnackbar(\n ` ${title}: ${requestToDelete?.id} ${t('common.msg.deleted')}`,\n )\n getData()\n })\n };\n\n\n\n\n //clean up\n const cleanUp = useCallback(() => {\n dispatch(resetState())\n }, [dispatch, resetState]);\n\n // Data fetching\n const getData = useDataFetcher(\n tableColumns?.length ? tableColumns : activePage,\n { skip, limit },\n fetchApi,\n customeFilter,\n [],\n true,\n customFields\n\n )\n\n useEffect(() => {\n getData()\n }, [getData])\n\n useEffect(() => {\n return cleanUp;\n }, [cleanUp]);\n\n\n return (\n <section className={`listing-component ${className}`}>\n <ActionBar\n title={title}\n data={activePage?.views || []}\n setData={(views) => updatePageInfo({ views })}\n active={activePage.active_view}\n setActive={(tab) => updatePageInfo({ active_view: tab })}\n handleAddButton={handleAddButton}\n searchText={searchText || activePage.search || ''}\n handleSearch={handleSearchChange}\n disabledViews={disabledViews}\n fields={fields}\n isUseFields={isUseFields}\n selectedIds={listingState.selectedRows}\n pageName={pageName}\n importModuleName={importModuleName}\n button={showAddButton}\n actionBtn={actionButtons}\n />\n ssdssds\n\n <>\n {activePage?.active_view === viewTypes.TABLE && (\n < MaterialTable\n rows={tableRows || []}\n columns={tableColumns}\n paginationModel={paginationModel}\n totalPages={total}\n columnOrder={[...columnOrder, ...activePage.column_order]}\n states={{ isLoading: loadinState || isLoading }}\n onSortingChange={onSortingChange ? (sort) => {\n updatePageInfo({ sort });\n onSortingChange(sort);\n } : undefined}\n enableColumnDragging={false}\n enableEditing={false}\n rowActionMenu={rowActionMenu}\n destructiveActionMenu={enhancedDestructiveActions}\n isResetRow={false}\n onSelectRow={handleRowSelection}\n handleColumnOrdering={onColumnOrdering ? (colOrder) => {\n const newOrder = colOrder.slice(1);\n updatePageInfo({ column_order: newOrder });\n onColumnOrdering(newOrder);\n } : undefined}\n onColumnVisibility={onColumnVisibility ? (columns) => {\n updatePageInfo({ visible_columns: columns });\n onColumnVisibility(columns);\n } : undefined}\n />\n )}\n\n {activePage?.active_view === viewTypes.GRID && GridComponent && (\n <GridComponent\n data={tableRows}\n rowActionMenu={rowActionMenu}\n destructiveActionMenu={enhancedDestructiveActions}\n />\n )}\n\n {!activePage?.active_view && !isLoading && (\n <Fallback\n heading={title}\n icon={fallbackIcon || <img src={logo.shippmentFallback} alt=\"fallback\" />}\n >\n {showAddButton && handleAddButton && (\n <Button\n variant='contained'\n startIcon={<AddIcon />}\n onClick={handleAddButton}\n >\n {`${t('common.add')} ${t('common.new')}`}\n </Button>\n )}\n </Fallback>\n )}\n\n <Footer\n total={total}\n paginationModel={{\n ...paginationModel,\n limit: activePage.page_size\n }}\n handlePaginationModel={handlePaginationChange}\n resource={paginationResource}\n enablePages={enablePages}\n />\n\n <ConfirmPopUp\n open={Boolean(listingState.itemToDelete)}\n onClose={handleDeleteCancel}\n onConfirm={handleDeleteConfirm}\n loading={listingState.isDeleting}\n title={deleteTitle || `${t('common.delete')} ${title}`}\n description={\n deleteDescription\n ? deleteDescription(listingState.itemToDelete)\n : `${t('common.deleteMsg')} ${title}: ${listingState.itemToDelete?.id || listingState.itemToDelete?.name || ''} ?`\n }\n />\n </>\n </section>\n );\n};\n\nexport default ListingComponent;\n"],"names":["useDataFetcher","logo","AddIcon"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),i=require("react"),t=require("react-i18next"),n=,/* empty css */o=;/* empty css */;/* empty css */var a=require("react-redux"),l=,/* empty css */s=,/* empty css */r=,/* empty css */d=,/* empty css */c=,/* empty css */u=,/* empty css */m=,/* empty css */g=,/* empty css */p=,/* empty css */v=,/* empty css */x=,/* empty css */h=;/* empty css */exports.default=({title:b,tableColumns:j,columnOrder:f=["mrt-row-select"],rowActionMenu:w,destructiveActionMenu:D,handleAddButton:q,searchText:M,handleSearch:A,disabledViews:C=["Kanban","Calendar","Gantt"],fields:_,selectedIds:T=[],pageName:k,importModuleName:S,showAddButton:$=!0,actionButtons:P,paginationResource:B,enablePages:F=!1,GridComponent:N,onSelectRow:R,onColumnOrdering:y,onColumnVisibility:z,onSortingChange:I,fallbackIcon:L,className:O="",onDeleteConfirm:E,deleteTitle:V,deleteDescription:G,fetchApi:U,resetState:H,setPaginationModel:K,deleteApi:J,storeName:Q,isUseFields:W,customeFilter:X,customFields:Y,isLoading:Z})=>{var ee,ie;const{t:te}=t.useTranslation(),ne=a.useDispatch(),{activePage:oe,updatePageInfo:ae}=s.usePages(),{paginationModel:le,rows:se,isLoading:re}=r.useAppSelector(e=>null==e?void 0:e[Q]),{pageNo:de,limit:ce,totalCount:ue}=le,me=oe.page_size||ce,ge=me*(de-1),[pe,ve]=i.useState({selectedRows:T,itemToDelete:null,isDeleting:!1}),xe=Math.ceil(ue/me),he=i.useMemo(()=>se,[se]),be=e=>{ve(i=>({...i,itemToDelete:e}))},je=i.useMemo(()=>{if(D)return D.map(e=>({...e,handleAction:e.label.toLowerCase().includes("delete")?be:e.handleAction}))},[D]),fe=e=>{oe.page_size!=(null==e?void 0:e.limit)&&ae({page_size:e.limit}),ne(K(e))},we=i.useCallback(()=>{ne(H())},[ne,H]),De=d.default((null==j?void 0:j.length)?j:oe,{skip:ge,limit:me},U,X,[],!0,Y);return i.useEffect(()=>{De()},[De]),i.useEffect(()=>we,[we]),/* @__PURE__ */e.jsxs("section",{className:`listing-component ${O}`,children:[
2
- /* @__PURE__ */e.jsx(c.ActionBar,{title:b,data:(null==oe?void 0:oe.views)||[],setData:e=>ae({views:e}),active:oe.active_view,setActive:e=>ae({active_view:e}),handleAddButton:q,searchText:M||oe.search||"",handleSearch:e=>{ae({search:e}),fe({pageNo:1}),null==A||A(e)},disabledViews:C,fields:_,isUseFields:W,selectedIds:pe.selectedRows,pageName:k,importModuleName:S,button:$,actionBtn:P}),
2
+ /* @__PURE__ */e.jsx(c.ActionBar,{title:b,data:(null==oe?void 0:oe.views)||[],setData:e=>ae({views:e}),active:oe.active_view,setActive:e=>ae({active_view:e}),handleAddButton:q,searchText:M||oe.search||"",handleSearch:e=>{ae({search:e}),fe({pageNo:1}),null==A||A(e)},disabledViews:C,fields:_,isUseFields:W,selectedIds:pe.selectedRows,pageName:k,importModuleName:S,button:$,actionBtn:P}),"ssdssds",
3
3
  /* @__PURE__ */e.jsxs(e.Fragment,{children:[(null==oe?void 0:oe.active_view)===u.default.TABLE&&/* @__PURE__ */e.jsx(m.MaterialTable,{rows:he||[],columns:j,paginationModel:le,totalPages:xe,columnOrder:[...f,...oe.column_order],states:{isLoading:Z||re},onSortingChange:I?e=>{ae({sort:e}),I(e)}:void 0,enableColumnDragging:!1,enableEditing:!1,rowActionMenu:w,destructiveActionMenu:je,isResetRow:!1,onSelectRow:e=>{const i=e.map(e=>e.original.id);ve(e=>({...e,selectedRows:i})),null==R||R(e)},handleColumnOrdering:y?e=>{const i=e.slice(1);ae({column_order:i}),y(i)}:void 0,onColumnVisibility:z?e=>{ae({visible_columns:e}),z(e)}:void 0}),(null==oe?void 0:oe.active_view)===u.default.GRID&&N&&/* @__PURE__ */e.jsx(N,{data:he,rowActionMenu:w,destructiveActionMenu:je}),!(null==oe?void 0:oe.active_view)&&!re&&/* @__PURE__ */e.jsx(g.Fallback,{heading:b,icon:L||/* @__PURE__ */e.jsx("img",{src:o.images.shippmentFallback,alt:"fallback"}),children:$&&q&&/* @__PURE__ */e.jsx(p.Button,{variant:"contained",startIcon:/* @__PURE__ */e.jsx(n.default,{}),onClick:q,children:`${te("common.add")} ${te("common.new")}`})}),
4
4
  /* @__PURE__ */e.jsx(v.Footer,{total:xe,paginationModel:{...le,limit:oe.page_size},handlePaginationModel:e=>{oe.page_size!==(null==e?void 0:e.limit)&&ae({page_size:e.limit}),fe(e)},resource:B,enablePages:F}),
5
5
  /* @__PURE__ */e.jsx(x.ConfirmPopUp,{open:Boolean(pe.itemToDelete),onClose:()=>{ve(e=>({...e,itemToDelete:null}))},onConfirm:async()=>{if(pe.itemToDelete){ve(e=>({...e,isDeleting:!0}));try{E?await E(pe.itemToDelete):await(async e=>{const i=await ne(J(String(e.id)));h.apiHelper(i,()=>{l.enqueueSnackbar(` ${b}: ${null==e?void 0:e.id} ${te("common.msg.deleted")}`),De()})})(pe.itemToDelete),ve(e=>({...e,itemToDelete:null,isDeleting:!1}))}catch(e){ve(e=>({...e,isDeleting:!1}))}}},loading:pe.isDeleting,title:V||`${te("common.delete")} ${b}`,description:G?G(pe.itemToDelete):`${te("common.deleteMsg")} ${b}: ${(null==(ee=pe.itemToDelete)?void 0:ee.id)||(null==(ie=pe.itemToDelete)?void 0:ie.name)||""} ?`})]})]})};
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/listing/listing.tsx"],"sourcesContent":["import React, { useState, useMemo, useEffect, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport AddIcon from '@mui/icons-material/Add';\n\nimport { MaterialTable, ActionBar, Fallback, Footer, Button, ConfirmPopUp } from '../../components';\nimport { viewTypes } from '../../constants';\n\nimport { IListingComponentProps, IListingState } from './types'\nimport logo from '../../assets/images';\n\nimport './listing.scss';\nimport { useDataFetcher, apiHelper } from '../../hooks';\nimport { useDispatch } from 'react-redux';\nimport { usePages } from '../../hooks';\nimport { useAppSelector } from '../../redux';\nimport { enqueueSnackbar } from 'notistack';\n\nconst ListingComponent: React.FC<IListingComponentProps> = ({\n title,\n tableColumns,\n columnOrder = ['mrt-row-select'],\n rowActionMenu,\n destructiveActionMenu,\n handleAddButton,\n searchText,\n handleSearch,\n disabledViews = ['Kanban', 'Calendar', 'Gantt'],\n fields,\n selectedIds = [],\n pageName,\n importModuleName,\n showAddButton = true,\n actionButtons,\n paginationResource,\n enablePages = false,\n GridComponent,\n onSelectRow,\n onColumnOrdering,\n onColumnVisibility,\n onSortingChange,\n fallbackIcon,\n className = '',\n onDeleteConfirm,\n deleteTitle,\n deleteDescription,\n fetchApi,\n resetState,\n setPaginationModel,\n deleteApi,\n storeName,\n isUseFields,\n customeFilter,\n customFields,\n isLoading: loadinState\n}) => {\n const { t } = useTranslation();\n\n //dispatch\n const dispatch = useDispatch()\n\n //Page Context\n const { activePage, updatePageInfo } = usePages();\n //Store \n const {\n paginationModel,\n rows,\n isLoading,\n } = useAppSelector((store) => store?.[storeName]);\n console.log(\"🚀 ~ ListingComponent ~ rows:\", rows)\n\n\n const { pageNo, limit: pLimit, totalCount } = paginationModel;\n const limit = activePage.page_size || pLimit;\n const skip = limit * (pageNo - 1);\n\n\n // Local state\n const [listingState, setListingState] = useState<IListingState>({\n selectedRows: selectedIds,\n itemToDelete: null,\n isDeleting: false\n });\n\n // Calculate pagination values\n const total = Math.ceil(totalCount / limit);\n\n // Memoized table data\n const tableRows = useMemo(() => rows, [rows]);\n\n // Handle row selection\n const handleRowSelection = (selectedRows: any[]) => {\n const selectedRowIds = selectedRows.map((row) => row.original.id);\n setListingState(prev => ({ ...prev, selectedRows: selectedRowIds }));\n onSelectRow?.(selectedRows);\n };\n\n // Handle pagination changes\n const handlePaginationChange = (model: any) => {\n if (activePage.page_size !== model?.limit) {\n updatePageInfo({ page_size: model.limit });\n }\n handlePaginationModel(model);\n };\n\n // Handle search\n const handleSearchChange = (search: string) => {\n updatePageInfo({ search });\n handlePaginationModel({ pageNo: 1 });\n handleSearch?.(search);\n };\n\n // Handle delete confirmation\n const handleDeleteClick = (item: any) => {\n setListingState(prev => ({ ...prev, itemToDelete: item }));\n };\n\n const handleDeleteConfirm = async () => {\n if (!listingState.itemToDelete) return;\n\n setListingState(prev => ({ ...prev, isDeleting: true }));\n\n try {\n onDeleteConfirm ? await onDeleteConfirm(listingState.itemToDelete) : await deleteRecord(listingState.itemToDelete);\n setListingState(prev => ({ ...prev, itemToDelete: null, isDeleting: false }));\n } catch (error) {\n setListingState(prev => ({ ...prev, isDeleting: false }));\n }\n };\n\n const handleDeleteCancel = () => {\n setListingState(prev => ({ ...prev, itemToDelete: null }));\n };\n\n // Enhance destructive actions to include delete confirmation\n const enhancedDestructiveActions = useMemo(() => {\n if (!destructiveActionMenu) return undefined;\n\n return destructiveActionMenu.map(action => ({\n ...action,\n handleAction: action.label.toLowerCase().includes('delete')\n ? handleDeleteClick\n : action.handleAction\n }));\n }, [destructiveActionMenu]);\n\n //Handle pagination model\n const handlePaginationModel = (model: IPaginationModel) => {\n if (activePage.page_size != model?.limit) {\n updatePageInfo({ page_size: model.limit });\n }\n dispatch(setPaginationModel(model));\n }\n\n //Delete\n const deleteRecord = async (requestToDelete: any) => {\n const response: any = await dispatch(deleteApi(String(requestToDelete.id)));\n apiHelper(response, () => {\n enqueueSnackbar(\n ` ${title}: ${requestToDelete?.id} ${t('common.msg.deleted')}`,\n )\n getData()\n })\n };\n\n\n\n\n //clean up\n const cleanUp = useCallback(() => {\n dispatch(resetState())\n }, [dispatch, resetState]);\n\n // Data fetching\n const getData = useDataFetcher(\n tableColumns?.length ? tableColumns : activePage,\n { skip, limit },\n fetchApi,\n customeFilter,\n [],\n true,\n customFields\n\n )\n\n useEffect(() => {\n getData()\n }, [getData])\n\n useEffect(() => {\n return cleanUp;\n }, [cleanUp]);\n\n\n return (\n <section className={`listing-component ${className}`}>\n <ActionBar\n title={title}\n data={activePage?.views || []}\n setData={(views) => updatePageInfo({ views })}\n active={activePage.active_view}\n setActive={(tab) => updatePageInfo({ active_view: tab })}\n handleAddButton={handleAddButton}\n searchText={searchText || activePage.search || ''}\n handleSearch={handleSearchChange}\n disabledViews={disabledViews}\n fields={fields}\n isUseFields={isUseFields}\n selectedIds={listingState.selectedRows}\n pageName={pageName}\n importModuleName={importModuleName}\n button={showAddButton}\n actionBtn={actionButtons}\n />\n\n\n <>\n {activePage?.active_view === viewTypes.TABLE && (\n <MaterialTable\n rows={tableRows || []}\n columns={tableColumns}\n paginationModel={paginationModel}\n totalPages={total}\n columnOrder={[...columnOrder, ...activePage.column_order]}\n states={{ isLoading: loadinState || isLoading }}\n onSortingChange={onSortingChange ? (sort) => {\n updatePageInfo({ sort });\n onSortingChange(sort);\n } : undefined}\n enableColumnDragging={false}\n enableEditing={false}\n rowActionMenu={rowActionMenu}\n destructiveActionMenu={enhancedDestructiveActions}\n isResetRow={false}\n onSelectRow={handleRowSelection}\n handleColumnOrdering={onColumnOrdering ? (colOrder) => {\n const newOrder = colOrder.slice(1);\n updatePageInfo({ column_order: newOrder });\n onColumnOrdering(newOrder);\n } : undefined}\n onColumnVisibility={onColumnVisibility ? (columns) => {\n updatePageInfo({ visible_columns: columns });\n onColumnVisibility(columns);\n } : undefined}\n />\n )}\n\n {activePage?.active_view === viewTypes.GRID && GridComponent && (\n <GridComponent\n data={tableRows}\n rowActionMenu={rowActionMenu}\n destructiveActionMenu={enhancedDestructiveActions}\n />\n )}\n\n {!activePage?.active_view && !isLoading && (\n <Fallback\n heading={title}\n icon={fallbackIcon || <img src={logo.shippmentFallback} alt=\"fallback\" />}\n >\n {showAddButton && handleAddButton && (\n <Button\n variant='contained'\n startIcon={<AddIcon />}\n onClick={handleAddButton}\n >\n {`${t('common.add')} ${t('common.new')}`}\n </Button>\n )}\n </Fallback>\n )}\n\n <Footer\n total={total}\n paginationModel={{\n ...paginationModel,\n limit: activePage.page_size\n }}\n handlePaginationModel={handlePaginationChange}\n resource={paginationResource}\n enablePages={enablePages}\n />\n\n <ConfirmPopUp\n open={Boolean(listingState.itemToDelete)}\n onClose={handleDeleteCancel}\n onConfirm={handleDeleteConfirm}\n loading={listingState.isDeleting}\n title={deleteTitle || `${t('common.delete')} ${title}`}\n description={\n deleteDescription\n ? deleteDescription(listingState.itemToDelete)\n : `${t('common.deleteMsg')} ${title}: ${listingState.itemToDelete?.id || listingState.itemToDelete?.name || ''} ?`\n }\n />\n </>\n </section>\n );\n};\n\nexport default ListingComponent;\n"],"names":["title","tableColumns","columnOrder","rowActionMenu","destructiveActionMenu","handleAddButton","searchText","handleSearch","disabledViews","fields","selectedIds","pageName","importModuleName","showAddButton","actionButtons","paginationResource","enablePages","GridComponent","onSelectRow","onColumnOrdering","onColumnVisibility","onSortingChange","fallbackIcon","className","onDeleteConfirm","deleteTitle","deleteDescription","fetchApi","resetState","setPaginationModel","deleteApi","storeName","isUseFields","customeFilter","customFields","isLoading","loadinState","t","useTranslation","dispatch","useDispatch","activePage","updatePageInfo","usePages","paginationModel","rows","useAppSelector","store","pageNo","limit","pLimit","totalCount","page_size","skip","listingState","setListingState","useState","selectedRows","itemToDelete","isDeleting","total","Math","ceil","tableRows","useMemo","handleDeleteClick","item","prev","enhancedDestructiveActions","map","action","handleAction","label","toLowerCase","includes","handlePaginationModel","model","cleanUp","useCallback","getData","useDataFetcher","length","useEffect","jsxs","children","jsx","ActionBar","data","views","setData","active","active_view","setActive","tab","search","button","actionBtn","Fragment","viewTypes","TABLE","MaterialTable","columns","totalPages","column_order","states","sort","enableColumnDragging","enableEditing","isResetRow","selectedRowIds","row","original","id","handleColumnOrdering","colOrder","newOrder","slice","visible_columns","GRID","Fallback","heading","icon","src","logo","shippmentFallback","alt","Button","variant","startIcon","AddIcon","onClick","Footer","resource","ConfirmPopUp","open","Boolean","onClose","onConfirm","async","requestToDelete","response","String","apiHelper","enqueueSnackbar","deleteRecord","error","loading","description","_a","_b","name"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/listing/listing.tsx"],"sourcesContent":["import React, { useState, useMemo, useEffect, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport AddIcon from '@mui/icons-material/Add';\n\nimport { MaterialTable, ActionBar, Fallback, Footer, Button, ConfirmPopUp } from '../../components';\nimport { viewTypes } from '../../constants';\n\nimport { IListingComponentProps, IListingState } from './types'\nimport logo from '../../assets/images';\n\nimport './listing.scss';\nimport { useDataFetcher, apiHelper } from '../../hooks';\nimport { useDispatch } from 'react-redux';\nimport { usePages } from '../../hooks';\nimport { useAppSelector } from '../../redux';\nimport { enqueueSnackbar } from 'notistack';\n\nconst ListingComponent: React.FC<IListingComponentProps> = ({\n title,\n tableColumns,\n columnOrder = ['mrt-row-select'],\n rowActionMenu,\n destructiveActionMenu,\n handleAddButton,\n searchText,\n handleSearch,\n disabledViews = ['Kanban', 'Calendar', 'Gantt'],\n fields,\n selectedIds = [],\n pageName,\n importModuleName,\n showAddButton = true,\n actionButtons,\n paginationResource,\n enablePages = false,\n GridComponent,\n onSelectRow,\n onColumnOrdering,\n onColumnVisibility,\n onSortingChange,\n fallbackIcon,\n className = '',\n onDeleteConfirm,\n deleteTitle,\n deleteDescription,\n fetchApi,\n resetState,\n setPaginationModel,\n deleteApi,\n storeName,\n isUseFields,\n customeFilter,\n customFields,\n isLoading: loadinState\n}) => {\n const { t } = useTranslation();\n\n //dispatch\n const dispatch = useDispatch()\n\n //Page Context\n const { activePage, updatePageInfo } = usePages();\n //Store \n const {\n paginationModel,\n rows,\n isLoading,\n } = useAppSelector((store) => store?.[storeName]);\n console.log(\"🚀 ~ ListingComponent ~ rows:\", rows)\n\n\n const { pageNo, limit: pLimit, totalCount } = paginationModel;\n const limit = activePage.page_size || pLimit;\n const skip = limit * (pageNo - 1);\n\n\n // Local state\n const [listingState, setListingState] = useState<IListingState>({\n selectedRows: selectedIds,\n itemToDelete: null,\n isDeleting: false\n });\n\n // Calculate pagination values\n const total = Math.ceil(totalCount / limit);\n\n // Memoized table data\n const tableRows = useMemo(() => rows, [rows]);\n\n // Handle row selection\n const handleRowSelection = (selectedRows: any[]) => {\n const selectedRowIds = selectedRows.map((row) => row.original.id);\n setListingState(prev => ({ ...prev, selectedRows: selectedRowIds }));\n onSelectRow?.(selectedRows);\n };\n\n // Handle pagination changes\n const handlePaginationChange = (model: any) => {\n if (activePage.page_size !== model?.limit) {\n updatePageInfo({ page_size: model.limit });\n }\n handlePaginationModel(model);\n };\n\n // Handle search\n const handleSearchChange = (search: string) => {\n updatePageInfo({ search });\n handlePaginationModel({ pageNo: 1 });\n handleSearch?.(search);\n };\n\n // Handle delete confirmation\n const handleDeleteClick = (item: any) => {\n setListingState(prev => ({ ...prev, itemToDelete: item }));\n };\n\n const handleDeleteConfirm = async () => {\n if (!listingState.itemToDelete) return;\n\n setListingState(prev => ({ ...prev, isDeleting: true }));\n\n try {\n onDeleteConfirm ? await onDeleteConfirm(listingState.itemToDelete) : await deleteRecord(listingState.itemToDelete);\n setListingState(prev => ({ ...prev, itemToDelete: null, isDeleting: false }));\n } catch (error) {\n setListingState(prev => ({ ...prev, isDeleting: false }));\n }\n };\n\n const handleDeleteCancel = () => {\n setListingState(prev => ({ ...prev, itemToDelete: null }));\n };\n\n // Enhance destructive actions to include delete confirmation\n const enhancedDestructiveActions = useMemo(() => {\n if (!destructiveActionMenu) return undefined;\n\n return destructiveActionMenu.map(action => ({\n ...action,\n handleAction: action.label.toLowerCase().includes('delete')\n ? handleDeleteClick\n : action.handleAction\n }));\n }, [destructiveActionMenu]);\n\n //Handle pagination model\n const handlePaginationModel = (model: IPaginationModel) => {\n if (activePage.page_size != model?.limit) {\n updatePageInfo({ page_size: model.limit });\n }\n dispatch(setPaginationModel(model));\n }\n\n //Delete\n const deleteRecord = async (requestToDelete: any) => {\n const response: any = await dispatch(deleteApi(String(requestToDelete.id)));\n apiHelper(response, () => {\n enqueueSnackbar(\n ` ${title}: ${requestToDelete?.id} ${t('common.msg.deleted')}`,\n )\n getData()\n })\n };\n\n\n\n\n //clean up\n const cleanUp = useCallback(() => {\n dispatch(resetState())\n }, [dispatch, resetState]);\n\n // Data fetching\n const getData = useDataFetcher(\n tableColumns?.length ? tableColumns : activePage,\n { skip, limit },\n fetchApi,\n customeFilter,\n [],\n true,\n customFields\n\n )\n\n useEffect(() => {\n getData()\n }, [getData])\n\n useEffect(() => {\n return cleanUp;\n }, [cleanUp]);\n\n\n return (\n <section className={`listing-component ${className}`}>\n <ActionBar\n title={title}\n data={activePage?.views || []}\n setData={(views) => updatePageInfo({ views })}\n active={activePage.active_view}\n setActive={(tab) => updatePageInfo({ active_view: tab })}\n handleAddButton={handleAddButton}\n searchText={searchText || activePage.search || ''}\n handleSearch={handleSearchChange}\n disabledViews={disabledViews}\n fields={fields}\n isUseFields={isUseFields}\n selectedIds={listingState.selectedRows}\n pageName={pageName}\n importModuleName={importModuleName}\n button={showAddButton}\n actionBtn={actionButtons}\n />\n ssdssds\n\n <>\n {activePage?.active_view === viewTypes.TABLE && (\n < MaterialTable\n rows={tableRows || []}\n columns={tableColumns}\n paginationModel={paginationModel}\n totalPages={total}\n columnOrder={[...columnOrder, ...activePage.column_order]}\n states={{ isLoading: loadinState || isLoading }}\n onSortingChange={onSortingChange ? (sort) => {\n updatePageInfo({ sort });\n onSortingChange(sort);\n } : undefined}\n enableColumnDragging={false}\n enableEditing={false}\n rowActionMenu={rowActionMenu}\n destructiveActionMenu={enhancedDestructiveActions}\n isResetRow={false}\n onSelectRow={handleRowSelection}\n handleColumnOrdering={onColumnOrdering ? (colOrder) => {\n const newOrder = colOrder.slice(1);\n updatePageInfo({ column_order: newOrder });\n onColumnOrdering(newOrder);\n } : undefined}\n onColumnVisibility={onColumnVisibility ? (columns) => {\n updatePageInfo({ visible_columns: columns });\n onColumnVisibility(columns);\n } : undefined}\n />\n )}\n\n {activePage?.active_view === viewTypes.GRID && GridComponent && (\n <GridComponent\n data={tableRows}\n rowActionMenu={rowActionMenu}\n destructiveActionMenu={enhancedDestructiveActions}\n />\n )}\n\n {!activePage?.active_view && !isLoading && (\n <Fallback\n heading={title}\n icon={fallbackIcon || <img src={logo.shippmentFallback} alt=\"fallback\" />}\n >\n {showAddButton && handleAddButton && (\n <Button\n variant='contained'\n startIcon={<AddIcon />}\n onClick={handleAddButton}\n >\n {`${t('common.add')} ${t('common.new')}`}\n </Button>\n )}\n </Fallback>\n )}\n\n <Footer\n total={total}\n paginationModel={{\n ...paginationModel,\n limit: activePage.page_size\n }}\n handlePaginationModel={handlePaginationChange}\n resource={paginationResource}\n enablePages={enablePages}\n />\n\n <ConfirmPopUp\n open={Boolean(listingState.itemToDelete)}\n onClose={handleDeleteCancel}\n onConfirm={handleDeleteConfirm}\n loading={listingState.isDeleting}\n title={deleteTitle || `${t('common.delete')} ${title}`}\n description={\n deleteDescription\n ? deleteDescription(listingState.itemToDelete)\n : `${t('common.deleteMsg')} ${title}: ${listingState.itemToDelete?.id || listingState.itemToDelete?.name || ''} ?`\n }\n />\n </>\n </section>\n );\n};\n\nexport default ListingComponent;\n"],"names":["title","tableColumns","columnOrder","rowActionMenu","destructiveActionMenu","handleAddButton","searchText","handleSearch","disabledViews","fields","selectedIds","pageName","importModuleName","showAddButton","actionButtons","paginationResource","enablePages","GridComponent","onSelectRow","onColumnOrdering","onColumnVisibility","onSortingChange","fallbackIcon","className","onDeleteConfirm","deleteTitle","deleteDescription","fetchApi","resetState","setPaginationModel","deleteApi","storeName","isUseFields","customeFilter","customFields","isLoading","loadinState","t","useTranslation","dispatch","useDispatch","activePage","updatePageInfo","usePages","paginationModel","rows","useAppSelector","store","pageNo","limit","pLimit","totalCount","page_size","skip","listingState","setListingState","useState","selectedRows","itemToDelete","isDeleting","total","Math","ceil","tableRows","useMemo","handleDeleteClick","item","prev","enhancedDestructiveActions","map","action","handleAction","label","toLowerCase","includes","handlePaginationModel","model","cleanUp","useCallback","getData","useDataFetcher","length","useEffect","jsxs","children","jsx","ActionBar","data","views","setData","active","active_view","setActive","tab","search","button","actionBtn","Fragment","viewTypes","TABLE","MaterialTable","columns","totalPages","column_order","states","sort","enableColumnDragging","enableEditing","isResetRow","selectedRowIds","row","original","id","handleColumnOrdering","colOrder","newOrder","slice","visible_columns","GRID","Fallback","heading","icon","src","logo","shippmentFallback","alt","Button","variant","startIcon","AddIcon","onClick","Footer","resource","ConfirmPopUp","open","Boolean","onClose","onConfirm","async","requestToDelete","response","String","apiHelper","enqueueSnackbar","deleteRecord","error","loading","description","_a","_b","name"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../src/hooks/apiHelper.ts"],"sourcesContent":["import { enqueueSnackbar } from \"notistack\";\n\ntype ApiResponse = {\n meta?: {\n requestStatus?: string;\n };\n error?: {\n message?: string;\n };\n payload?:any\n};\n\ntype Callback = () => void;\n\nexport function apiHelper(res: ApiResponse, callBack?: Callback): void {\n if (res?.meta?.requestStatus === \"rejected\") {\n const errorMessage = (() => {\n try {\n return res.error?.message ? JSON.parse(res.error.message) : null;\n } catch {\n return { message: \"Something went wrong\" };\n }\n })();\n\n const message = errorMessage?.message?.replace(\"Error:\", \"\").trim() || \"Something went wrong\";\n\n enqueueSnackbar(message, {\n variant: \"error\",\n });\n return \n }\n \n if (callBack && typeof callBack === \"function\") {\n callBack();\n } else if (callBack) {\n console.warn(\"Provided callBack is not a function.\");\n }\n}\n"],"names":["_a"],"mappings":";AAcO,SAAS,UAAU,KAAkB,UAA2B;;AACrE,QAAI,gCAAK,SAAL,mBAAW,mBAAkB,YAAY;AAC3C,UAAM,gBAAgB,MAAM;;AAC1B,UAAI;AACF,iBAAOA,MAAA,IAAI,UAAJ,gBAAAA,IAAW,WAAU,KAAK,MAAM,IAAI,MAAM,OAAO,IAAI;AAAA,MAC9D,QAAQ;AACN,eAAO,EAAE,SAAS,uBAAA;AAAA,MACpB;AAAA,IACF,GAAA;AAEA,UAAM,YAAU,kDAAc,YAAd,mBAAuB,QAAQ,UAAU,IAAI,WAAU;AAEvE,oBAAgB,SAAS;AAAA,MACvB,SAAS;AAAA,IAAA,CACV;AACD;AAAA,EACF;AAEA,MAAI,YAAY,OAAO,aAAa,YAAY;AAC9C,aAAA;AAAA,EACF,WAAW,UAAU;AACnB,YAAQ,KAAK,sCAAsC;AAAA,EACrD;AACF;"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../../src/hooks/apiHelper.ts"],"sourcesContent":["import { enqueueSnackbar } from \"notistack\";\n\ntype ApiResponse = {\n meta?: {\n requestStatus?: string;\n };\n error?: {\n message?: string;\n };\n payload?: any\n};\n\ntype Callback = () => void;\n\nexport function apiHelper(res: ApiResponse, callBack?: Callback): void {\n if (res?.meta?.requestStatus === \"rejected\") {\n const errorMessage = (() => {\n try {\n return res.error?.message ? JSON.parse(res.error.message) : null;\n } catch {\n return { message: \"Something went wrong\" };\n }\n })();\n\n const message = errorMessage?.message?.replace(\"Error:\", \"\").trim() || \"Something went wrong\";\n\n enqueueSnackbar(message, {\n variant: \"error\",\n });\n return\n }\n\n if (callBack && typeof callBack === \"function\") {\n callBack();\n } else if (callBack) {\n console.warn(\"Provided callBack is not a function.\");\n }\n}\n"],"names":["_a"],"mappings":";AAcO,SAAS,UAAU,KAAkB,UAA2B;;AACrE,QAAI,gCAAK,SAAL,mBAAW,mBAAkB,YAAY;AAC3C,UAAM,gBAAgB,MAAM;;AAC1B,UAAI;AACF,iBAAOA,MAAA,IAAI,UAAJ,gBAAAA,IAAW,WAAU,KAAK,MAAM,IAAI,MAAM,OAAO,IAAI;AAAA,MAC9D,QAAQ;AACN,eAAO,EAAE,SAAS,uBAAA;AAAA,MACpB;AAAA,IACF,GAAA;AAEA,UAAM,YAAU,kDAAc,YAAd,mBAAuB,QAAQ,UAAU,IAAI,WAAU;AAEvE,oBAAgB,SAAS;AAAA,MACvB,SAAS;AAAA,IAAA,CACV;AACD;AAAA,EACF;AAEA,MAAI,YAAY,OAAO,aAAa,YAAY;AAC9C,aAAA;AAAA,EACF,WAAW,UAAU;AACnB,YAAQ,KAAK,sCAAsC;AAAA,EACrD;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/hooks/apiHelper.ts"],"sourcesContent":["import { enqueueSnackbar } from \"notistack\";\n\ntype ApiResponse = {\n meta?: {\n requestStatus?: string;\n };\n error?: {\n message?: string;\n };\n payload?:any\n};\n\ntype Callback = () => void;\n\nexport function apiHelper(res: ApiResponse, callBack?: Callback): void {\n if (res?.meta?.requestStatus === \"rejected\") {\n const errorMessage = (() => {\n try {\n return res.error?.message ? JSON.parse(res.error.message) : null;\n } catch {\n return { message: \"Something went wrong\" };\n }\n })();\n\n const message = errorMessage?.message?.replace(\"Error:\", \"\").trim() || \"Something went wrong\";\n\n enqueueSnackbar(message, {\n variant: \"error\",\n });\n return \n }\n \n if (callBack && typeof callBack === \"function\") {\n callBack();\n } else if (callBack) {\n console.warn(\"Provided callBack is not a function.\");\n }\n}\n"],"names":["res","callBack","_a","meta","requestStatus","errorMessage","error","message","JSON","parse","_b","replace","trim","enqueueSnackbar","variant"],"mappings":"2JAcO,SAAmBA,EAAkBC,WAC1C,GAAiC,cAA7B,OAAAC,EAAA,MAAAF,OAAA,EAAAA,EAAKG,WAAL,EAAAD,EAAWE,eAA8B,CAC3C,MAAMC,cACJ,IACE,OAAO,OAAAH,EAAAF,EAAIM,YAAJ,EAAAJ,EAAWK,SAAUC,KAAKC,MAAMT,EAAIM,MAAMC,SAAW,IAC9D,CAAA,MACE,MAAO,CAAEA,QAAS,uBACpB,CACF,KAEMA,GAAU,OAAAG,EAAA,MAAAL,OAAA,EAAAA,EAAcE,kBAASI,QAAQ,SAAU,IAAIC,SAAU,uBAKvE,YAHAC,EAAAA,gBAAgBN,EAAS,CACvBO,QAAS,SAGb,CAEIb,GAAgC,mBAAbA,GACrBA,GAIJ"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/hooks/apiHelper.ts"],"sourcesContent":["import { enqueueSnackbar } from \"notistack\";\n\ntype ApiResponse = {\n meta?: {\n requestStatus?: string;\n };\n error?: {\n message?: string;\n };\n payload?: any\n};\n\ntype Callback = () => void;\n\nexport function apiHelper(res: ApiResponse, callBack?: Callback): void {\n if (res?.meta?.requestStatus === \"rejected\") {\n const errorMessage = (() => {\n try {\n return res.error?.message ? JSON.parse(res.error.message) : null;\n } catch {\n return { message: \"Something went wrong\" };\n }\n })();\n\n const message = errorMessage?.message?.replace(\"Error:\", \"\").trim() || \"Something went wrong\";\n\n enqueueSnackbar(message, {\n variant: \"error\",\n });\n return\n }\n\n if (callBack && typeof callBack === \"function\") {\n callBack();\n } else if (callBack) {\n console.warn(\"Provided callBack is not a function.\");\n }\n}\n"],"names":["res","callBack","_a","meta","requestStatus","errorMessage","error","message","JSON","parse","_b","replace","trim","enqueueSnackbar","variant"],"mappings":"2JAcO,SAAmBA,EAAkBC,WAC1C,GAAiC,cAA7B,OAAAC,EAAA,MAAAF,OAAA,EAAAA,EAAKG,WAAL,EAAAD,EAAWE,eAA8B,CAC3C,MAAMC,cACJ,IACE,OAAO,OAAAH,EAAAF,EAAIM,YAAJ,EAAAJ,EAAWK,SAAUC,KAAKC,MAAMT,EAAIM,MAAMC,SAAW,IAC9D,CAAA,MACE,MAAO,CAAEA,QAAS,uBACpB,CACF,KAEMA,GAAU,OAAAG,EAAA,MAAAL,OAAA,EAAAA,EAAcE,kBAASI,QAAQ,SAAU,IAAIC,SAAU,uBAKvE,YAHAC,EAAAA,gBAAgBN,EAAS,CACvBO,QAAS,SAGb,CAEIb,GAAgC,mBAAbA,GACrBA,GAIJ"}
@@ -8,6 +8,7 @@ function apiHelper({
8
8
  succsessMessage = null
9
9
  }) {
10
10
  var _a, _b;
11
+ console.log("🚀 ~ apiHelper ~ succsessMessage:", succsessMessage);
11
12
  if (((_a = res == null ? void 0 : res.meta) == null ? void 0 : _a.requestStatus) === "rejected") {
12
13
  const errorMessage = (() => {
13
14
  var _a2;