@erpsquad/common 1.8.103 → 1.8.105
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/index/index.esm11.js +2 -4
- package/dist/_virtual/index/index.esm11.js.map +1 -1
- package/dist/_virtual/index/index.esm2.js +4 -2
- package/dist/_virtual/index/index.esm2.js.map +1 -1
- package/dist/_virtual/index/index11.js +1 -1
- package/dist/_virtual/index/index2.js +1 -1
- package/dist/api-client/api.inventory/api/index.esm.js +95 -30
- package/dist/api-client/api.inventory/api/index.esm.js.map +1 -1
- package/dist/api-client/api.inventory/api/index.js +1 -1
- package/dist/api-client/api.inventory/api/index.js.map +1 -1
- package/dist/api-client/api.inventory/api-types.d.ts +930 -425
- package/dist/api-client/api.inventory/api.d.ts +14 -10
- package/dist/api-client/api.rbac/api/index.esm2.js +218 -0
- package/dist/api-client/api.rbac/api/index.esm2.js.map +1 -1
- package/dist/api-client/api.rbac/api/index2.js +1 -1
- package/dist/api-client/api.rbac/api/index2.js.map +1 -1
- package/dist/components/filter/components/delete-group/index.esm.js +1 -0
- package/dist/components/filter/components/delete-group/index.esm.js.map +1 -1
- package/dist/components/filter/components/delete-group/index.js +1 -1
- package/dist/components/filter/components/delete-group/index.js.map +1 -1
- package/dist/components/form-control/form-parser/form-section/index.esm.js +5 -4
- package/dist/components/form-control/form-parser/form-section/index.esm.js.map +1 -1
- package/dist/components/form-control/form-parser/form-section/index.js +22 -22
- package/dist/components/form-control/form-parser/form-section/index.js.map +1 -1
- package/dist/components/listing/listing/index.esm.js +3 -2
- package/dist/components/listing/listing/index.esm.js.map +1 -1
- package/dist/components/listing/listing/index.js +5 -5
- package/dist/components/listing/listing/index.js.map +1 -1
- package/dist/components/uom-field-wrapper/uom-field-wrapper/index.esm.js.map +1 -1
- package/dist/components/uom-field-wrapper/uom-field-wrapper/index.js.map +1 -1
- package/dist/hooks/apiHelper/index.esm.js.map +1 -1
- package/dist/hooks/apiHelper/index.js.map +1 -1
- package/dist/hooks/index.esm.js +4 -4
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/useApi/index.esm.js +1 -0
- package/dist/hooks/useApi/index.esm.js.map +1 -1
- package/dist/hooks/useApi/index.js.map +1 -1
- package/dist/hooks/useDataFetcher/index.esm.js +2 -3
- package/dist/hooks/useDataFetcher/index.esm.js.map +1 -1
- package/dist/hooks/useDataFetcher/index.js +1 -1
- package/dist/hooks/useDataFetcher/index.js.map +1 -1
- package/dist/hooks/useDataFetcher.d.ts +2 -2
- package/dist/index.esm.js +69 -69
- package/dist/index.js +1 -1
- package/dist/node_modules/@asseinfo/react-kanban/dist/index/index.esm.js +1 -1
- package/dist/node_modules/@asseinfo/react-kanban/dist/index/index.js +1 -1
- package/dist/node_modules/@asseinfo/react-kanban/dist/index/index.js.map +1 -1
- package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.esm.js +1 -1
- package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.js +1 -1
- package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.js.map +1 -1
- package/dist/src/api-client/api.inventory/api.d.ts +14 -10
- package/dist/src/hooks/useDataFetcher.d.ts +2 -2
- package/dist/src/utils/api.d.ts +18 -8
- package/dist/style.css +63 -63
- package/dist/utils/api/index.esm.js +45 -22
- package/dist/utils/api/index.esm.js.map +1 -1
- package/dist/utils/api/index.js +1 -1
- package/dist/utils/api/index.js.map +1 -1
- package/dist/utils/api.d.ts +18 -8
- package/dist/utils/common-utility/index.esm.js +13 -7
- package/dist/utils/common-utility/index.esm.js.map +1 -1
- package/dist/utils/common-utility/index.js +5 -5
- package/dist/utils/common-utility/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -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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"}
|
|
@@ -8,7 +8,7 @@ import { useDispatch } from "react-redux";
|
|
|
8
8
|
import { enqueueSnackbar } from "../../../node_modules/notistack/notistack.esm/index.esm.js";
|
|
9
9
|
import { usePages } from "../../../hooks/use-pages/index.esm.js";
|
|
10
10
|
import { useAppSelector } from "../../../redux/hooks/index.esm.js";
|
|
11
|
-
import
|
|
11
|
+
import useGenericDataFetcher from "../../../hooks/useDataFetcher/index.esm.js";
|
|
12
12
|
import { ActionBar } from "../../action-bar/action-bar/index.esm.js";
|
|
13
13
|
import viewTypes from "../../../constants/action-bar/index.esm.js";
|
|
14
14
|
import { MaterialTable } from "../../material-table/material-table/index.esm.js";
|
|
@@ -132,7 +132,7 @@ const ListingComponent = ({
|
|
|
132
132
|
const cleanUp = useCallback(() => {
|
|
133
133
|
dispatch(resetState());
|
|
134
134
|
}, [dispatch, resetState]);
|
|
135
|
-
const getData =
|
|
135
|
+
const getData = useGenericDataFetcher(
|
|
136
136
|
(tableColumns == null ? void 0 : tableColumns.length) ? tableColumns : activePage,
|
|
137
137
|
{ skip, limit },
|
|
138
138
|
fetchApi,
|
|
@@ -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":["logo","AddIcon"],"mappings":"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"}
|
|
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,6 +1,6 @@
|
|
|
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 */
|
|
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}),
|
|
3
|
-
/* @__PURE__ */e.jsxs(e.Fragment,{children:[(null==oe?void 0:oe.active_view)===u.default.TABLE&&/* @__PURE__ */e.jsx(m.MaterialTable,{rows:
|
|
4
|
-
/* @__PURE__ */e.jsx(v.Footer,{total:
|
|
5
|
-
/* @__PURE__ */e.jsx(
|
|
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}),"ssdssds",
|
|
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
|
+
/* @__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
|
+
/* @__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)||""} ?`})]})]})};
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -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":"26BAiB2D,EACvDA,QACAC,eACAC,cAAc,CAAC,kBACfC,gBACAC,wBACAC,kBACAC,aACAC,eACAC,gBAAgB,CAAC,SAAU,WAAY,SACvCC,SACAC,cAAc,GACdC,WACAC,mBACAC,iBAAgB,EAChBC,gBACAC,qBACAC,eAAc,EACdC,gBACAC,cACAC,mBACAC,qBACAC,kBACAC,eACAC,YAAY,GACZC,kBACAC,cACAC,oBACAC,WACAC,aACAC,qBACAC,YACAC,YACAC,cACAC,gBACAC,eACAC,UAAWC,gBAEX,MAAMC,EAAEA,IAAMC,mBAGRC,GAAWC,EAAAA,eAGXC,WAAEA,GAAAC,eAAYA,IAAmBC,cAEjCC,gBACFA,GAAAC,KACAA,GAAAV,UACAA,IACAW,EAAAA,eAAgBC,SAAUA,WAAQhB,KAIhCiB,OAAEA,GAAQC,MAAOC,GAAAC,WAAQA,IAAeP,GACxCK,GAAQR,GAAWW,WAAaF,GAChCG,GAAOJ,IAASD,GAAS,IAIxBM,GAAcC,IAAmBC,WAAwB,CAC5DC,aAAc/C,EACdgD,aAAc,KACdC,YAAY,IAIVC,GAAQC,KAAKC,KAAKX,GAAaF,IAG/Bc,GAAYC,EAAAA,QAAQ,IAAMnB,GAAM,CAACA,KAyBjCoB,GAAqBC,IACvBX,WAA8BY,EAAMT,aAAcQ,MAqBhDE,GAA6BJ,EAAAA,QAAQ,KACvC,GAAK5D,EAEL,OAAOA,EAAsBiE,IAAIC,IAAA,IAC1BA,EACHC,aAAcD,EAAOE,MAAMC,cAAcC,SAAS,UAC5CT,GACAK,EAAOC,iBAElB,CAACnE,IAGEuE,GAAyBC,IACvBnC,GAAWW,YAAa,MAAAwB,OAAA,EAAAA,EAAO3B,QAC/BP,GAAe,CAAEU,UAAWwB,EAAM3B,QAEtCV,GAASV,EAAmB+C,KAkB1BC,GAAUC,EAAAA,YAAY,KACxBvC,GAASX,MACV,CAACW,GAAUX,IAGRmD,GAAUC,EAAAA,gBACZ,MAAA/E,OAAA,EAAAA,EAAcgF,QAAShF,EAAewC,GACtC,CAAEY,QAAMJ,UACRtB,EACAM,EACA,IACA,EACAC,GAaJ,OATAgD,EAAAA,UAAU,KACNH,MACD,CAACA,KAEJG,EAAAA,UAAU,IACCL,GACR,CAACA,oBAIAM,EAAAA,KAAC,UAAA,CAAQ5D,UAAW,qBAAqBA,IACrC6D,SAAA;eAAAC,EAAAA,IAACC,EAAAA,UAAA,CACGtF,QACAuF,MAAM,MAAA9C,QAAA,EAAAA,GAAY+C,QAAS,GAC3BC,QAAUD,GAAU9C,GAAe,CAAE8C,UACrCE,OAAQjD,GAAWkD,YACnBC,UAAYC,GAAQnD,GAAe,CAAEiD,YAAaE,IAClDxF,kBACAC,WAAYA,GAAcmC,GAAWqD,QAAU,GAC/CvF,aAlGgBuF,IACxBpD,GAAe,CAAEoD,WACjBnB,GAAsB,CAAE3B,OAAQ,IAChC,MAAAzC,GAAAA,EAAeuF,IAgGPtF,gBACAC,SACAuB,cACAtB,YAAa4C,GAAaG,aAC1B9C,WACAC,mBACAmF,OAAQlF,EACRmF,UAAWlF;eAIfqE,OAAAc,EAAAA,SAAA,CACKb,SAAA,EAAA,MAAA3C,QAAA,EAAAA,GAAYkD,eAAgBO,UAAUC,sBACnCd,EAAAA,IAACe,EAAAA,cAAA,CACGvD,KAAMkB,IAAa,GACnBsC,QAASpG,EACT2C,mBACA0D,WAAY1C,GACZ1D,YAAa,IAAIA,KAAgBuC,GAAW8D,cAC5CC,OAAQ,CAAErE,UAAWC,GAAeD,IACpCd,gBAAiBA,EAAmBoF,IAChC/D,GAAe,CAAE+D,SACjBpF,EAAgBoF,SAChB,EACJC,sBAAsB,EACtBC,eAAe,EACfxG,gBACAC,sBAAuBgE,GACvBwC,YAAY,EACZ1F,YA/IQuC,IACxB,MAAMoD,EAAiBpD,EAAaY,IAAKyC,GAAQA,EAAIC,SAASC,IAC9DzD,WAA8BY,EAAMV,aAAcoD,KAClD,MAAA3F,GAAAA,EAAcuC,IA6IEwD,qBAAsB9F,EAAoB+F,IACtC,MAAMC,EAAWD,EAASE,MAAM,GAChC1E,GAAe,CAAE6D,aAAcY,IAC/BhG,EAAiBgG,SACjB,EACJ/F,mBAAoBA,EAAsBiF,IACtC3D,GAAe,CAAE2E,gBAAiBhB,IAClCjF,EAAmBiF,SACnB,WAIX5D,aAAYkD,eAAgBO,EAAAA,QAAUoB,MAAQrG,kBAC3CoE,EAAAA,IAACpE,EAAA,CACGsE,KAAMxB,GACN5D,gBACAC,sBAAuBgE,OAI7B,MAAA3B,QAAA,EAAAA,GAAYkD,eAAgBxD,mBAC1BkD,EAAAA,IAACkC,EAAAA,SAAA,CACGC,QAASxH,EACTyH,KAAMnG,kBAAgB+D,EAAAA,IAAC,MAAA,CAAIqC,IAAKC,EAAAA,OAAKC,kBAAmBC,IAAI,aAE3DzC,YAAiB/E,kBACdgF,EAAAA,IAACyC,EAAAA,OAAA,CACGC,QAAQ,YACRC,+BAAYC,EAAAA,QAAA,IACZC,QAAS7H,EAER+E,YAAG/C,GAAE,iBAAiBA,GAAE;eAMzCgD,EAAAA,IAAC8C,EAAAA,OAAA,CACGvE,SACAhB,gBAAiB,IACVA,GACHK,MAAOR,GAAWW,WAEtBuB,sBApLgBC,IACxBnC,GAAWW,aAAc,MAAAwB,OAAA,EAAAA,EAAO3B,QAChCP,GAAe,CAAEU,UAAWwB,EAAM3B,QAEtC0B,GAAsBC,IAiLVwD,SAAUrH,EACVC;eAGJqE,EAAAA,IAACgD,EAAAA,aAAA,CACGC,KAAMC,QAAQjF,GAAaI,cAC3B8E,QA3JW,KACvBjF,WAA8BY,EAAMT,aAAc,SA2JtC+E,UAzKYC,UACxB,GAAKpF,GAAaI,aAAlB,CAEAH,WAA8BY,EAAMR,YAAY,KAEhD,IACInC,QAAwBA,EAAgB8B,GAAaI,mBAgCxCgF,OAAOC,IACxB,MAAMC,QAAsBrG,GAAST,EAAU+G,OAAOF,EAAgB3B,MACtE8B,EAAAA,UAAUF,EAAU,KAChBG,EAAAA,gBACI,IAAI/I,MAAU,MAAA2I,OAAA,EAAAA,EAAiB3B,MAAM3E,GAAE,yBAE3C0C,QAtC2EiE,CAAa1F,GAAaI,cACrGH,GAAgBY,QAAcA,EAAMT,aAAc,KAAMC,YAAY,IACxE,OAASsF,GACL1F,WAA8BY,EAAMR,YAAY,IACpD,CATgC,GAyKpBuF,QAAS5F,GAAaK,WACtB3D,MAAOyB,GAAe,GAAGY,GAAE,oBAAoBrC,IAC/CmJ,YACIzH,EACMA,EAAkB4B,GAAaI,cAC/B,GAAGrB,GAAE,uBAAuBrC,OAAU,OAAAoJ,MAAa1F,mBAAb,EAAA0F,GAA2BpC,MAAM,OAAAqC,GAAA/F,GAAaI,mBAAb,EAAA2F,GAA2BC,OAAQ"}
|
|
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/components/uom-field-wrapper/uom-field-wrapper.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useState, useMemo } from 'react';\nimport DynamicSearchSelect from '../form-control/form-builder/form-builder-element/dynamic-select';\nimport { useUomFieldUpdater } from '../../hooks/useUomFieldUpdater';\nimport { useFormContext } from 'react-hook-form';\n\ninterface UomFieldWrapperProps {\n label: string;\n name?: string;\n placeholder?: string;\n fieldArrayName?: string;\n required?: boolean;\n is_loading?: boolean;\n disabled?: boolean;\n selectedItem: any;\n selectedUom?: any;\n fieldMapping?: Record<string, string>;\n customeFilter?: Record<string, any>;\n getSelectedData?: (data: any, name: string) => void;\n fieldPrefix?: string;\n setValue?: any;\n control?: any;\n isConversationFactor?: boolean;\n}\n\nconst UomFieldWrapper: React.FC<UomFieldWrapperProps> = ({\n label,\n name = 'uom_id',\n placeholder,\n fieldArrayName,\n required = false,\n is_loading = false,\n disabled = false,\n selectedItem,\n fieldMapping = {\n 'total_on_hand_quantity': 'on_hand_quantity',\n 'total_available_quantity': 'available_quantity',\n 'total_committed_quantity': 'committed_quantity',\n },\n customeFilter,\n getSelectedData,\n fieldPrefix,\n setValue,\n control,\n isConversationFactor = true\n}) => {\n // const selectedUom = useMemo(() => getValues(`${fieldArrayName}.${name}`), [getValues(`${fieldArrayName}.${name}`)])\n\n const [uomDetails, setUomDetails] = useState<any>(null);\n const formContext = useFormContext()\n const {\n control: contextControl,\n setValue: contextSetValue,\n } = formContext || {};\n\n const effectiveFieldPrefix = fieldPrefix !== undefined ? fieldPrefix : fieldArrayName || '';\n const finalFieldMapping = useMemo(() => fieldMapping
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../../../src/components/uom-field-wrapper/uom-field-wrapper.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useState, useMemo } from 'react';\nimport DynamicSearchSelect from '../form-control/form-builder/form-builder-element/dynamic-select';\nimport { useUomFieldUpdater } from '../../hooks/useUomFieldUpdater';\nimport { useFormContext } from 'react-hook-form';\n\ninterface UomFieldWrapperProps {\n label: string;\n name?: string;\n placeholder?: string;\n fieldArrayName?: string;\n required?: boolean;\n is_loading?: boolean;\n disabled?: boolean;\n selectedItem: any;\n selectedUom?: any;\n fieldMapping?: Record<string, string>;\n customeFilter?: Record<string, any>;\n getSelectedData?: (data: any, name: string) => void;\n fieldPrefix?: string;\n setValue?: any;\n control?: any;\n isConversationFactor?: boolean;\n}\n\nconst UomFieldWrapper: React.FC<UomFieldWrapperProps> = ({\n label,\n name = 'uom_id',\n placeholder,\n fieldArrayName,\n required = false,\n is_loading = false,\n disabled = false,\n selectedItem,\n fieldMapping = {\n 'total_on_hand_quantity': 'on_hand_quantity',\n 'total_available_quantity': 'available_quantity',\n 'total_committed_quantity': 'committed_quantity',\n },\n customeFilter,\n getSelectedData,\n fieldPrefix,\n setValue,\n control,\n isConversationFactor = true\n}) => {\n // const selectedUom = useMemo(() => getValues(`${fieldArrayName}.${name}`), [getValues(`${fieldArrayName}.${name}`)])\n\n const [uomDetails, setUomDetails] = useState<any>(null);\n const formContext = useFormContext()\n const {\n control: contextControl,\n setValue: contextSetValue,\n } = formContext || {};\n\n const effectiveFieldPrefix = fieldPrefix !== undefined ? fieldPrefix : fieldArrayName || '';\n const finalFieldMapping = useMemo(() => fieldMapping,\n //eslint-disable-next-line\n [JSON.stringify(fieldMapping)]);\n\n const handleUomChange = useUomFieldUpdater({\n fieldMapping: finalFieldMapping,\n sourceData: selectedItem,\n conversation_factor: uomDetails?.conversation_factor,\n fieldPrefix: effectiveFieldPrefix,\n setValue: setValue || contextSetValue,\n control: control || contextControl,\n // shouldUpdate: !!selectedUom\n });\n\n useEffect(() => {\n if (!isConversationFactor) return;\n handleUomChange();\n // eslint-disable-next-line\n }, [handleUomChange, isConversationFactor]);\n\n const handleUomSelect = (data: any, name: string) => {\n setUomDetails(data);\n getSelectedData?.(data, name);\n };\n\n const effectiveCustomeFilter = customeFilter || {\n '&template_id.eq': selectedItem?.unit_of_measurement || 0\n };\n\n return (\n <DynamicSearchSelect\n label={label}\n name={name}\n placeholder={placeholder || ''}\n fieldArrayName={fieldArrayName || ''}\n formControl={control}\n required={required}\n is_loading={is_loading}\n disabled={disabled}\n apiType='uom'\n customeFilter={effectiveCustomeFilter}\n getSelectedData={handleUomSelect}\n />\n );\n};\n\nexport default UomFieldWrapper;\n"],"names":["name"],"mappings":";;;;;AAyBA,MAAM,kBAAkD,CAAC;AAAA,EACrD;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,aAAa;AAAA,EACb,WAAW;AAAA,EACX;AAAA,EACA,eAAe;AAAA,IACX,0BAA0B;AAAA,IAC1B,4BAA4B;AAAA,IAC5B,4BAA4B;AAAA,EAAA;AAAA,EAEhC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,uBAAuB;AAC3B,MAAM;AAGF,QAAM,CAAC,YAAY,aAAa,IAAI,SAAc,IAAI;AACtD,QAAM,cAAc,eAAA;AACpB,QAAM;AAAA,IAEF,UAAU;AAAA,EAAA,IACV,eAAe,CAAA;AAEnB,QAAM,uBAAuB,gBAAgB,SAAY,cAAc,kBAAkB;AACzF,QAAM,oBAAoB;AAAA,IAAQ,MAAM;AAAA;AAAA,IAEpC,CAAC,KAAK,UAAU,YAAY,CAAC;AAAA,EAAA;AAEjC,QAAM,kBAAkB,mBAAmB;AAAA,IACvC,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,qBAAqB,yCAAY;AAAA,IACjC,aAAa;AAAA,IACb,UAAU,YAAY;AAAA,EAG1B,CAAC;AAED,YAAU,MAAM;AACZ,QAAI,CAAC,qBAAsB;AAC3B,oBAAA;AAAA,EAEJ,GAAG,CAAC,iBAAiB,oBAAoB,CAAC;AAE1C,QAAM,kBAAkB,CAAC,MAAWA,UAAiB;AACjD,kBAAc,IAAI;AAClB,uDAAkB,MAAMA;AAAAA,EAC5B;AAEA,QAAM,yBAAyB,iBAAiB;AAAA,IAC5C,oBAAmB,6CAAc,wBAAuB;AAAA,EAAA;AAG5D,SACI;AAAA,IAAC;AAAA,IAAA;AAAA,MACG;AAAA,MACA;AAAA,MACA,aAAa,eAAe;AAAA,MAC5B,gBAAgB,kBAAkB;AAAA,MAClC,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAQ;AAAA,MACR,eAAe;AAAA,MACf,iBAAiB;AAAA,IAAA;AAAA,EAAA;AAG7B;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/uom-field-wrapper/uom-field-wrapper.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useState, useMemo } from 'react';\nimport DynamicSearchSelect from '../form-control/form-builder/form-builder-element/dynamic-select';\nimport { useUomFieldUpdater } from '../../hooks/useUomFieldUpdater';\nimport { useFormContext } from 'react-hook-form';\n\ninterface UomFieldWrapperProps {\n label: string;\n name?: string;\n placeholder?: string;\n fieldArrayName?: string;\n required?: boolean;\n is_loading?: boolean;\n disabled?: boolean;\n selectedItem: any;\n selectedUom?: any;\n fieldMapping?: Record<string, string>;\n customeFilter?: Record<string, any>;\n getSelectedData?: (data: any, name: string) => void;\n fieldPrefix?: string;\n setValue?: any;\n control?: any;\n isConversationFactor?: boolean;\n}\n\nconst UomFieldWrapper: React.FC<UomFieldWrapperProps> = ({\n label,\n name = 'uom_id',\n placeholder,\n fieldArrayName,\n required = false,\n is_loading = false,\n disabled = false,\n selectedItem,\n fieldMapping = {\n 'total_on_hand_quantity': 'on_hand_quantity',\n 'total_available_quantity': 'available_quantity',\n 'total_committed_quantity': 'committed_quantity',\n },\n customeFilter,\n getSelectedData,\n fieldPrefix,\n setValue,\n control,\n isConversationFactor = true\n}) => {\n // const selectedUom = useMemo(() => getValues(`${fieldArrayName}.${name}`), [getValues(`${fieldArrayName}.${name}`)])\n\n const [uomDetails, setUomDetails] = useState<any>(null);\n const formContext = useFormContext()\n const {\n control: contextControl,\n setValue: contextSetValue,\n } = formContext || {};\n\n const effectiveFieldPrefix = fieldPrefix !== undefined ? fieldPrefix : fieldArrayName || '';\n const finalFieldMapping = useMemo(() => fieldMapping
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/uom-field-wrapper/uom-field-wrapper.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useState, useMemo } from 'react';\nimport DynamicSearchSelect from '../form-control/form-builder/form-builder-element/dynamic-select';\nimport { useUomFieldUpdater } from '../../hooks/useUomFieldUpdater';\nimport { useFormContext } from 'react-hook-form';\n\ninterface UomFieldWrapperProps {\n label: string;\n name?: string;\n placeholder?: string;\n fieldArrayName?: string;\n required?: boolean;\n is_loading?: boolean;\n disabled?: boolean;\n selectedItem: any;\n selectedUom?: any;\n fieldMapping?: Record<string, string>;\n customeFilter?: Record<string, any>;\n getSelectedData?: (data: any, name: string) => void;\n fieldPrefix?: string;\n setValue?: any;\n control?: any;\n isConversationFactor?: boolean;\n}\n\nconst UomFieldWrapper: React.FC<UomFieldWrapperProps> = ({\n label,\n name = 'uom_id',\n placeholder,\n fieldArrayName,\n required = false,\n is_loading = false,\n disabled = false,\n selectedItem,\n fieldMapping = {\n 'total_on_hand_quantity': 'on_hand_quantity',\n 'total_available_quantity': 'available_quantity',\n 'total_committed_quantity': 'committed_quantity',\n },\n customeFilter,\n getSelectedData,\n fieldPrefix,\n setValue,\n control,\n isConversationFactor = true\n}) => {\n // const selectedUom = useMemo(() => getValues(`${fieldArrayName}.${name}`), [getValues(`${fieldArrayName}.${name}`)])\n\n const [uomDetails, setUomDetails] = useState<any>(null);\n const formContext = useFormContext()\n const {\n control: contextControl,\n setValue: contextSetValue,\n } = formContext || {};\n\n const effectiveFieldPrefix = fieldPrefix !== undefined ? fieldPrefix : fieldArrayName || '';\n const finalFieldMapping = useMemo(() => fieldMapping,\n //eslint-disable-next-line\n [JSON.stringify(fieldMapping)]);\n\n const handleUomChange = useUomFieldUpdater({\n fieldMapping: finalFieldMapping,\n sourceData: selectedItem,\n conversation_factor: uomDetails?.conversation_factor,\n fieldPrefix: effectiveFieldPrefix,\n setValue: setValue || contextSetValue,\n control: control || contextControl,\n // shouldUpdate: !!selectedUom\n });\n\n useEffect(() => {\n if (!isConversationFactor) return;\n handleUomChange();\n // eslint-disable-next-line\n }, [handleUomChange, isConversationFactor]);\n\n const handleUomSelect = (data: any, name: string) => {\n setUomDetails(data);\n getSelectedData?.(data, name);\n };\n\n const effectiveCustomeFilter = customeFilter || {\n '&template_id.eq': selectedItem?.unit_of_measurement || 0\n };\n\n return (\n <DynamicSearchSelect\n label={label}\n name={name}\n placeholder={placeholder || ''}\n fieldArrayName={fieldArrayName || ''}\n formControl={control}\n required={required}\n is_loading={is_loading}\n disabled={disabled}\n apiType='uom'\n customeFilter={effectiveCustomeFilter}\n getSelectedData={handleUomSelect}\n />\n );\n};\n\nexport default UomFieldWrapper;\n"],"names":["label","name","placeholder","fieldArrayName","required","is_loading","disabled","selectedItem","fieldMapping","total_on_hand_quantity","total_available_quantity","total_committed_quantity","customeFilter","getSelectedData","fieldPrefix","setValue","control","isConversationFactor","uomDetails","setUomDetails","useState","formContext","useFormContext","contextSetValue","effectiveFieldPrefix","finalFieldMapping","useMemo","JSON","stringify","handleUomChange","useUomFieldUpdater","sourceData","conversation_factor","useEffect","effectiveCustomeFilter","unit_of_measurement","jsx","DynamicSearchSelect","formControl","apiType","data"],"mappings":"yTAyBwD,EACpDA,QACAC,OAAO,SACPC,cACAC,iBACAC,YAAW,EACXC,cAAa,EACbC,YAAW,EACXC,eACAC,eAAe,CACXC,uBAA0B,mBAC1BC,yBAA4B,qBAC5BC,yBAA4B,sBAEhCC,gBACAC,kBACAC,cACAC,WACAC,UACAC,wBAAuB,MAIvB,MAAOC,EAAYC,GAAiBC,EAAAA,SAAc,MAC5CC,EAAcC,EAAAA,kBAGhBP,SAAUQ,GACVF,GAAe,CAAA,EAEbG,OAAuC,IAAhBV,EAA4BA,EAAcX,GAAkB,GACnFsB,EAAoBC,EAAAA,QAAQ,IAAMlB,EAEpC,CAACmB,KAAKC,UAAUpB,KAEdqB,EAAkBC,EAAAA,mBAAmB,CACvCtB,aAAciB,EACdM,WAAYxB,EACZyB,oBAAqB,MAAAd,OAAA,EAAAA,EAAYc,oBACjClB,YAAaU,EACbT,SAAUA,GAAYQ,IAK1BU,EAAAA,UAAU,KACDhB,GACLY,KAED,CAACA,EAAiBZ,IAErB,MAKMiB,EAAyBtB,GAAiB,CAC5C,yBAAmBL,WAAc4B,sBAAuB;AAG5D,OACIC,EAAAA,IAACC,EAAAA,QAAA,CACGrC,QACAC,OACAC,YAAaA,GAAe,GAC5BC,eAAgBA,GAAkB,GAClCmC,YAAatB,EACbZ,WACAC,aACAC,WACAiC,QAAQ,MACR3B,cAAesB,EACfrB,gBArBgB,CAAC2B,EAAWvC,KAChCkB,EAAcqB,GACd,MAAA3B,GAAAA,EAAkB2B,EAAMvC"}
|
|
@@ -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
|
|
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
|
|
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"}
|
package/dist/hooks/index.esm.js
CHANGED
|
@@ -6,13 +6,13 @@ import { usePermissions } from "./use-permissions/index.esm.js";
|
|
|
6
6
|
import { useAppTranslations } from "./use-translations/index.esm.js";
|
|
7
7
|
import { useAuth } from "./useAuth/index.esm.js";
|
|
8
8
|
import { useNameSkuUniquenessCheck } from "./useCheckSkuAndName/index.esm.js";
|
|
9
|
-
import {
|
|
9
|
+
import { default as default3 } from "./useDataFetcher/index.esm.js";
|
|
10
10
|
import { useLanguage } from "./useLangauge/index.esm.js";
|
|
11
11
|
import { useLanguageFallback, useLanguageState } from "./useLanguageFallback/index.esm.js";
|
|
12
12
|
import { useLocationFilter, useMultipleLocationFilters } from "./useLocationFilter/index.esm.js";
|
|
13
13
|
import { useReduxIntegration } from "./useReduxIntegration/index.esm.js";
|
|
14
14
|
import { apiHelper } from "./apiHelper/index.esm.js";
|
|
15
|
-
import { default as
|
|
15
|
+
import { default as default4 } from "./useApi/index.esm.js";
|
|
16
16
|
export {
|
|
17
17
|
apiHelper,
|
|
18
18
|
apiType,
|
|
@@ -27,10 +27,10 @@ export {
|
|
|
27
27
|
recursiveSort,
|
|
28
28
|
removeExtraKeys,
|
|
29
29
|
sortData,
|
|
30
|
-
|
|
30
|
+
default4 as useApi,
|
|
31
31
|
useAppTranslations,
|
|
32
32
|
useAuth,
|
|
33
|
-
useDataFetcher,
|
|
33
|
+
default3 as useDataFetcher,
|
|
34
34
|
default2 as useDeepMemo,
|
|
35
35
|
useLanguage,
|
|
36
36
|
useLanguageFallback,
|
package/dist/hooks/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./common/index.js"),s=require("./use-deep-memo/index.js"),r=require("./use-material-calculations/index.js"),t=require("./use-pages/index.js"),a=require("./use-permissions/index.js"),u=require("./use-translations/index.js"),i=require("./useAuth/index.js"),o=require("./useCheckSkuAndName/index.js"),p=require("./useDataFetcher/index.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./common/index.js"),s=require("./use-deep-memo/index.js"),r=require("./use-material-calculations/index.js"),t=require("./use-pages/index.js"),a=require("./use-permissions/index.js"),u=require("./use-translations/index.js"),i=require("./useAuth/index.js"),o=require("./useCheckSkuAndName/index.js"),p=require("./useDataFetcher/index.js"),l=require("./useLangauge/index.js"),n=require("./useLanguageFallback/index.js"),x=require("./useLocationFilter/index.js"),d=require("./useReduxIntegration/index.js"),c=require("./apiHelper/index.js"),m=require("./useApi/index.js");exports.apiType=e.apiType,exports.capitalizeWords=e.capitalizeWords,exports.convertEmptyToNull=e.convertEmptyToNull,exports.defaultUserCurrency=e.defaultUserCurrency,exports.formatNumber=e.formatNumber,exports.formatTime=e.formatTime,exports.formateDate=e.formateDate,exports.recursiveSort=e.recursiveSort,exports.removeExtraKeys=e.removeExtraKeys,exports.sortData=e.sortData,exports.valueWithCurrency=e.valueWithCurrency,exports.useDeepMemo=s.default,exports.getAvailableSteelTypes=r.getAvailableSteelTypes,exports.getAvailableTubeTypes=r.getAvailableTubeTypes,exports.useMaterialCalculations=r.useMaterialCalculations,exports.validateFormValues=r.validateFormValues,exports.usePages=t.usePages,exports.usePermissions=a.usePermissions,exports.useAppTranslations=u.useAppTranslations,exports.useAuth=i.useAuth,exports.useNameSkuUniquenessCheck=o.useNameSkuUniquenessCheck,exports.useDataFetcher=p.default,exports.useLanguage=l.useLanguage,exports.useLanguageFallback=n.useLanguageFallback,exports.useLanguageState=n.useLanguageState,exports.useLocationFilter=x.useLocationFilter,exports.useMultipleLocationFilters=x.useMultipleLocationFilters,exports.useReduxIntegration=d.useReduxIntegration,exports.apiHelper=c.apiHelper,exports.useApi=m.default;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -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;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../../../src/hooks/useApi.tsx"],"sourcesContent":["import { enqueueSnackbar } from 'notistack';\nimport { useCallback, useState } from 'react';\ninterface UseApiProps {\n apiFunc: any;\n onSuccess?: any;\n onError?: any;\n enableLoading?: any;\n successMessage?: string;\n errorMessage?: string | null;\n loadingState?: any;\n showError?: boolean;\n}\n\ntype ApiResponse = {\n meta?: {\n requestStatus?: string;\n };\n error?: {\n message?: string;\n };\n payload?: any\n};\n\ntype Callback = () => void;\n\nfunction apiHelper({\n res,\n callBack,\n showError = true,\n errorCallback,\n succsessMessage = null,\n}: {\n res: ApiResponse;\n callBack?: Callback;\n showError?: boolean;\n errorCallback?: (error: any) => void;\n succsessMessage?: string | null;\n}): 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 =\n errorMessage?.message?.replace(\"Error:\", \"\").trim() ||\n \"Something went wrong\";\n if (showError) {\n enqueueSnackbar(message, { variant: \"error\" });\n }\n\n if (errorCallback && typeof errorCallback === \"function\") {\n errorCallback(message);\n }\n return;\n }\n if (succsessMessage) {\n enqueueSnackbar(succsessMessage);\n }\n if (callBack && typeof callBack === \"function\") {\n callBack();\n }\n}\n\nexport default function useApi() {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n\n const callApi = useCallback(async ({\n apiFunc,\n onSuccess,\n onError,\n successMessage,\n errorMessage,\n loadingState,\n enableLoading = true,\n showError = true,\n }: UseApiProps) => {\n if (enableLoading) setLoading(true);\n loadingState?.(true);\n const response = await apiFunc();\n if (enableLoading) setLoading(false);\n loadingState?.(false);\n apiHelper(\n {\n res: response,\n callBack: () => {\n onSuccess?.(response);\n },\n errorCallback: (err) => {\n onError?.(response);\n setError(errorMessage || err);\n },\n succsessMessage: successMessage,\n showError,\n }\n )\n\n return { response, error }\n\n }, [])\n\n return { callApi, loading, error };\n}\n"],"names":["_a"],"mappings":";;AAyBA,SAAS,UAAU;AAAA,EACf;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,kBAAkB;AACtB,GAMS;;AACL,QAAI,gCAAK,SAAL,mBAAW,mBAAkB,YAAY;AACzC,UAAM,gBAAgB,MAAM;;AACxB,UAAI;AACA,iBAAOA,MAAA,IAAI,UAAJ,gBAAAA,IAAW,WAAU,KAAK,MAAM,IAAI,MAAM,OAAO,IAAI;AAAA,MAChE,QAAQ;AACJ,eAAO,EAAE,SAAS,uBAAA;AAAA,MACtB;AAAA,IACJ,GAAA;AAEA,UAAM,YACF,kDAAc,YAAd,mBAAuB,QAAQ,UAAU,IAAI,WAC7C;AACJ,QAAI,WAAW;AACX,sBAAgB,SAAS,EAAE,SAAS,QAAA,CAAS;AAAA,IACjD;AAEA,QAAI,iBAAiB,OAAO,kBAAkB,YAAY;AACtD,oBAAc,OAAO;AAAA,IACzB;AACA;AAAA,EACJ;AACA,MAAI,iBAAiB;AACjB,oBAAgB,eAAe;AAAA,EACnC;AACA,MAAI,YAAY,OAAO,aAAa,YAAY;AAC5C,aAAA;AAAA,EACJ;AACJ;AAEA,SAAwB,SAAS;AAC7B,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,IAAI;AAEvC,QAAM,UAAU,YAAY,OAAO;AAAA,IAC/B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,IAChB,YAAY;AAAA,EAAA,MACG;AACf,QAAI,0BAA0B,IAAI;AAClC,iDAAe;AACf,UAAM,WAAW,MAAM,QAAA;AACvB,QAAI,0BAA0B,KAAK;AACnC,iDAAe;AACf;AAAA,MACI;AAAA,QACI,KAAK;AAAA,QACL,UAAU,MAAM;AACZ,iDAAY;AAAA,QAChB;AAAA,QACA,eAAe,CAAC,QAAQ;AACpB,6CAAU;AACV,mBAAS,gBAAgB,GAAG;AAAA,QAChC;AAAA,QACA,iBAAiB;AAAA,QACjB;AAAA,MAAA;AAAA,IACJ;AAGJ,WAAO,EAAE,UAAU,MAAA;AAAA,EAEvB,GAAG,CAAA,CAAE;AAEL,SAAO,EAAE,SAAS,SAAS,MAAA;AAC/B;"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../../src/hooks/useApi.tsx"],"sourcesContent":["import { enqueueSnackbar } from 'notistack';\nimport { useCallback, useState } from 'react';\ninterface UseApiProps {\n apiFunc: any;\n onSuccess?: any;\n onError?: any;\n enableLoading?: any;\n successMessage?: string;\n errorMessage?: string | null;\n loadingState?: any;\n showError?: boolean;\n}\n\ntype ApiResponse = {\n meta?: {\n requestStatus?: string;\n };\n error?: {\n message?: string;\n };\n payload?: any\n};\n\ntype Callback = () => void;\n\nfunction apiHelper({\n res,\n callBack,\n showError = true,\n errorCallback,\n succsessMessage = null,\n}: {\n res: ApiResponse;\n callBack?: Callback;\n showError?: boolean;\n errorCallback?: (error: any) => void;\n succsessMessage?: string | null;\n}): void {\n console.log(\"🚀 ~ apiHelper ~ succsessMessage:\", succsessMessage)\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 =\n errorMessage?.message?.replace(\"Error:\", \"\").trim() ||\n \"Something went wrong\";\n if (showError) {\n enqueueSnackbar(message, { variant: \"error\" });\n }\n\n if (errorCallback && typeof errorCallback === \"function\") {\n errorCallback(message);\n }\n return;\n }\n if (succsessMessage) {\n enqueueSnackbar(succsessMessage);\n }\n if (callBack && typeof callBack === \"function\") {\n callBack();\n }\n}\n\nexport default function useApi() {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n\n const callApi = useCallback(async ({\n apiFunc,\n onSuccess,\n onError,\n successMessage,\n errorMessage,\n loadingState,\n enableLoading = true,\n showError = true,\n }: UseApiProps) => {\n if (enableLoading) setLoading(true);\n loadingState?.(true);\n const response = await apiFunc();\n if (enableLoading) setLoading(false);\n loadingState?.(false);\n apiHelper(\n {\n res: response,\n callBack: () => {\n onSuccess?.(response);\n },\n errorCallback: (err) => {\n onError?.(response);\n setError(errorMessage || err);\n },\n succsessMessage: successMessage,\n showError,\n }\n )\n\n return { response, error }\n\n }, [])\n\n return { callApi, loading, error };\n}\n"],"names":["_a"],"mappings":";;AAyBA,SAAS,UAAU;AAAA,EACf;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,kBAAkB;AACtB,GAMS;;AACL,UAAQ,IAAI,qCAAqC,eAAe;AAChE,QAAI,gCAAK,SAAL,mBAAW,mBAAkB,YAAY;AACzC,UAAM,gBAAgB,MAAM;;AACxB,UAAI;AACA,iBAAOA,MAAA,IAAI,UAAJ,gBAAAA,IAAW,WAAU,KAAK,MAAM,IAAI,MAAM,OAAO,IAAI;AAAA,MAChE,QAAQ;AACJ,eAAO,EAAE,SAAS,uBAAA;AAAA,MACtB;AAAA,IACJ,GAAA;AAEA,UAAM,YACF,kDAAc,YAAd,mBAAuB,QAAQ,UAAU,IAAI,WAC7C;AACJ,QAAI,WAAW;AACX,sBAAgB,SAAS,EAAE,SAAS,QAAA,CAAS;AAAA,IACjD;AAEA,QAAI,iBAAiB,OAAO,kBAAkB,YAAY;AACtD,oBAAc,OAAO;AAAA,IACzB;AACA;AAAA,EACJ;AACA,MAAI,iBAAiB;AACjB,oBAAgB,eAAe;AAAA,EACnC;AACA,MAAI,YAAY,OAAO,aAAa,YAAY;AAC5C,aAAA;AAAA,EACJ;AACJ;AAEA,SAAwB,SAAS;AAC7B,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,IAAI;AAEvC,QAAM,UAAU,YAAY,OAAO;AAAA,IAC/B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,IAChB,YAAY;AAAA,EAAA,MACG;AACf,QAAI,0BAA0B,IAAI;AAClC,iDAAe;AACf,UAAM,WAAW,MAAM,QAAA;AACvB,QAAI,0BAA0B,KAAK;AACnC,iDAAe;AACf;AAAA,MACI;AAAA,QACI,KAAK;AAAA,QACL,UAAU,MAAM;AACZ,iDAAY;AAAA,QAChB;AAAA,QACA,eAAe,CAAC,QAAQ;AACpB,6CAAU;AACV,mBAAS,gBAAgB,GAAG;AAAA,QAChC;AAAA,QACA,iBAAiB;AAAA,QACjB;AAAA,MAAA;AAAA,IACJ;AAGJ,WAAO,EAAE,UAAU,MAAA;AAAA,EAEvB,GAAG,CAAA,CAAE;AAEL,SAAO,EAAE,SAAS,SAAS,MAAA;AAC/B;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/hooks/useApi.tsx"],"sourcesContent":["import { enqueueSnackbar } from 'notistack';\nimport { useCallback, useState } from 'react';\ninterface UseApiProps {\n apiFunc: any;\n onSuccess?: any;\n onError?: any;\n enableLoading?: any;\n successMessage?: string;\n errorMessage?: string | null;\n loadingState?: any;\n showError?: boolean;\n}\n\ntype ApiResponse = {\n meta?: {\n requestStatus?: string;\n };\n error?: {\n message?: string;\n };\n payload?: any\n};\n\ntype Callback = () => void;\n\nfunction apiHelper({\n res,\n callBack,\n showError = true,\n errorCallback,\n succsessMessage = null,\n}: {\n res: ApiResponse;\n callBack?: Callback;\n showError?: boolean;\n errorCallback?: (error: any) => void;\n succsessMessage?: string | null;\n}): 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 =\n errorMessage?.message?.replace(\"Error:\", \"\").trim() ||\n \"Something went wrong\";\n if (showError) {\n enqueueSnackbar(message, { variant: \"error\" });\n }\n\n if (errorCallback && typeof errorCallback === \"function\") {\n errorCallback(message);\n }\n return;\n }\n if (succsessMessage) {\n enqueueSnackbar(succsessMessage);\n }\n if (callBack && typeof callBack === \"function\") {\n callBack();\n }\n}\n\nexport default function useApi() {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n\n const callApi = useCallback(async ({\n apiFunc,\n onSuccess,\n onError,\n successMessage,\n errorMessage,\n loadingState,\n enableLoading = true,\n showError = true,\n }: UseApiProps) => {\n if (enableLoading) setLoading(true);\n loadingState?.(true);\n const response = await apiFunc();\n if (enableLoading) setLoading(false);\n loadingState?.(false);\n apiHelper(\n {\n res: response,\n callBack: () => {\n onSuccess?.(response);\n },\n errorCallback: (err) => {\n onError?.(response);\n setError(errorMessage || err);\n },\n succsessMessage: successMessage,\n showError,\n }\n )\n\n return { response, error }\n\n }, [])\n\n return { callApi, loading, error };\n}\n"],"names":["loading","setLoading","useState","error","setError","callApi","useCallback","async","apiFunc","onSuccess","onError","successMessage","errorMessage","loadingState","enableLoading","showError","response","res","callBack","errorCallback","succsessMessage","_a","meta","requestStatus","message","JSON","parse","_b","replace","trim","enqueueSnackbar","variant","apiHelper","err"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/hooks/useApi.tsx"],"sourcesContent":["import { enqueueSnackbar } from 'notistack';\nimport { useCallback, useState } from 'react';\ninterface UseApiProps {\n apiFunc: any;\n onSuccess?: any;\n onError?: any;\n enableLoading?: any;\n successMessage?: string;\n errorMessage?: string | null;\n loadingState?: any;\n showError?: boolean;\n}\n\ntype ApiResponse = {\n meta?: {\n requestStatus?: string;\n };\n error?: {\n message?: string;\n };\n payload?: any\n};\n\ntype Callback = () => void;\n\nfunction apiHelper({\n res,\n callBack,\n showError = true,\n errorCallback,\n succsessMessage = null,\n}: {\n res: ApiResponse;\n callBack?: Callback;\n showError?: boolean;\n errorCallback?: (error: any) => void;\n succsessMessage?: string | null;\n}): void {\n console.log(\"🚀 ~ apiHelper ~ succsessMessage:\", succsessMessage)\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 =\n errorMessage?.message?.replace(\"Error:\", \"\").trim() ||\n \"Something went wrong\";\n if (showError) {\n enqueueSnackbar(message, { variant: \"error\" });\n }\n\n if (errorCallback && typeof errorCallback === \"function\") {\n errorCallback(message);\n }\n return;\n }\n if (succsessMessage) {\n enqueueSnackbar(succsessMessage);\n }\n if (callBack && typeof callBack === \"function\") {\n callBack();\n }\n}\n\nexport default function useApi() {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n\n const callApi = useCallback(async ({\n apiFunc,\n onSuccess,\n onError,\n successMessage,\n errorMessage,\n loadingState,\n enableLoading = true,\n showError = true,\n }: UseApiProps) => {\n if (enableLoading) setLoading(true);\n loadingState?.(true);\n const response = await apiFunc();\n if (enableLoading) setLoading(false);\n loadingState?.(false);\n apiHelper(\n {\n res: response,\n callBack: () => {\n onSuccess?.(response);\n },\n errorCallback: (err) => {\n onError?.(response);\n setError(errorMessage || err);\n },\n succsessMessage: successMessage,\n showError,\n }\n )\n\n return { response, error }\n\n }, [])\n\n return { callApi, loading, error };\n}\n"],"names":["loading","setLoading","useState","error","setError","callApi","useCallback","async","apiFunc","onSuccess","onError","successMessage","errorMessage","loadingState","enableLoading","showError","response","res","callBack","errorCallback","succsessMessage","_a","meta","requestStatus","message","JSON","parse","_b","replace","trim","enqueueSnackbar","variant","apiHelper","err"],"mappings":"4KAoEA,WACI,MAAOA,EAASC,GAAcC,EAAAA,UAAS,IAChCC,EAAOC,GAAYF,EAAAA,SAAS,MAoCnC,MAAO,CAAEG,QAlCOC,EAAAA,YAAYC,OACxBC,UACAC,YACAC,UACAC,iBACAC,eACAC,eACAC,iBAAgB,EAChBC,aAAY,MAERD,MAA0B,GAC9B,MAAAD,GAAAA,GAAe,GACf,MAAMG,QAAiBR,IAkBvB,OAjBIM,MAA0B,GAC9B,MAAAD,GAAAA,GAAe,GA7DvB,UAAmBI,IACfA,EAAAC,SACAA,EAAAH,UACAA,GAAY,EAAAI,cACZA,EAAAC,gBACAA,EAAkB,eASlB,GAAiC,cAA7B,OAAAC,EAAA,MAAAJ,OAAA,EAAAA,EAAKK,WAAL,EAAAD,EAAWE,eAA8B,CACzC,MAAMX,cACF,IACI,OAAO,OAAAS,EAAAJ,EAAId,YAAJ,EAAAkB,EAAWG,SAAUC,KAAKC,MAAMT,EAAId,MAAMqB,SAAW,IAChE,CAAA,MACI,MAAO,CAAEA,QAAS,uBACtB,CACJ,KAEMA,GACF,OAAAG,EAAA,MAAAf,OAAA,EAAAA,EAAcY,kBAASI,QAAQ,SAAU,IAAIC,SAC7C,uBAQJ,OAPId,GACAe,EAAAA,gBAAgBN,EAAS,CAAEO,QAAS,eAGpCZ,GAA0C,mBAAlBA,GACxBA,EAAcK,GAGtB,CACIJ,GACAU,EAAAA,gBAAgBV,GAEhBF,GAAgC,mBAAbA,GACnBA,GAER,CAqBQc,CACI,CACIf,IAAKD,EACLE,SAAU,KACN,MAAAT,GAAAA,EAAYO,IAEhBG,cAAgBc,IACZ,MAAAvB,GAAAA,EAAUM,GACVZ,EAASQ,GAAgBqB,IAE7Bb,gBAAiBT,EACjBI,cAID,CAAEC,WAAUb,UAEpB,IAEeH,UAASG,QAC/B"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useCallback } from "react";
|
|
2
2
|
import { useDispatch } from "react-redux";
|
|
3
3
|
import { usePages } from "../use-pages/index.esm.js";
|
|
4
|
-
const
|
|
4
|
+
const useGenericDataFetcher = (cols, pagination, fetchAction, customeFilter = "", customDeps, showCreatedBy = true, customFields = []) => {
|
|
5
5
|
const { activePage } = usePages();
|
|
6
6
|
const dispatch = useDispatch();
|
|
7
7
|
const updatedCols = Array.isArray(cols) ? cols : activePage == null ? void 0 : activePage.visible_columns;
|
|
@@ -56,7 +56,6 @@ const useDataFetcher = (cols, pagination, fetchAction, customeFilter = "", custo
|
|
|
56
56
|
return fetchData;
|
|
57
57
|
};
|
|
58
58
|
export {
|
|
59
|
-
|
|
60
|
-
useDataFetcher
|
|
59
|
+
useGenericDataFetcher as default
|
|
61
60
|
};
|
|
62
61
|
//# sourceMappingURL=index.esm.js.map
|