dinocollab-core 2.0.1 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/data-view/ui.units.js.map +1 -1
  2. package/dist/http-service/index.js +1 -1
  3. package/dist/mfe-navigate/mfe-navigate.debug.js +2 -0
  4. package/dist/mfe-navigate/mfe-navigate.debug.js.map +1 -0
  5. package/dist/mfe-navigate/mfe-navigate.remote.js +2 -0
  6. package/dist/mfe-navigate/mfe-navigate.remote.js.map +1 -0
  7. package/dist/mfe-navigate/nextjs/provider.js.map +1 -0
  8. package/dist/mfe-navigate/react/provider.js +2 -0
  9. package/dist/mfe-navigate/react/provider.js.map +1 -0
  10. package/dist/types/http-service/base/index.d.ts +0 -1
  11. package/dist/types/mfe-navigate/mfe-navigate.debug.d.ts +4 -0
  12. package/dist/types/{mfe-modules → mfe-navigate}/mfe-navigate.remote.d.ts +4 -3
  13. package/dist/types/{mfe-modules → mfe-navigate}/react/provider.d.ts +1 -1
  14. package/dist/types/mfe-navigate/types.d.ts +13 -0
  15. package/package.json +16 -16
  16. package/dist/http-service/base/types.js +0 -2
  17. package/dist/http-service/base/types.js.map +0 -1
  18. package/dist/mfe-modules/mfe-navigate.debug.js +0 -2
  19. package/dist/mfe-modules/mfe-navigate.debug.js.map +0 -1
  20. package/dist/mfe-modules/mfe-navigate.remote.js +0 -2
  21. package/dist/mfe-modules/mfe-navigate.remote.js.map +0 -1
  22. package/dist/mfe-modules/nextjs/provider.js.map +0 -1
  23. package/dist/mfe-modules/react/provider.js +0 -2
  24. package/dist/mfe-modules/react/provider.js.map +0 -1
  25. package/dist/types/mfe-modules/mfe-navigate.debug.d.ts +0 -2
  26. package/dist/types/mfe-modules/types.d.ts +0 -7
  27. /package/dist/{mfe-modules → mfe-navigate}/index.js +0 -0
  28. /package/dist/{mfe-modules → mfe-navigate}/index.js.map +0 -0
  29. /package/dist/{mfe-modules → mfe-navigate}/nextjs/index.js +0 -0
  30. /package/dist/{mfe-modules → mfe-navigate}/nextjs/index.js.map +0 -0
  31. /package/dist/{mfe-modules → mfe-navigate}/nextjs/provider.js +0 -0
  32. /package/dist/{mfe-modules → mfe-navigate}/react/index.js +0 -0
  33. /package/dist/{mfe-modules → mfe-navigate}/react/index.js.map +0 -0
  34. /package/dist/types/{mfe-modules → mfe-navigate}/index.d.ts +0 -0
  35. /package/dist/types/{mfe-modules → mfe-navigate}/nextjs/index.d.ts +0 -0
  36. /package/dist/types/{mfe-modules → mfe-navigate}/nextjs/provider.d.ts +0 -0
  37. /package/dist/types/{mfe-modules → mfe-navigate}/react/index.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ui.units.js","sources":["../../src/data-view/ui.units.tsx"],"sourcesContent":["import React, { FC, ReactNode, useState } from 'react'\r\nimport { Box, Button, ButtonProps, Fade, IconButton, InputBaseProps, Typography } from '@mui/material'\r\nimport { FormControlLabel, FormGroup, Radio, RadioGroup, TextField, colors, styled } from '@mui/material'\r\nimport { ToggleButton, Tooltip, ToggleButtonGroup, Checkbox, IconButtonProps, InputAdornment, InputBase } from '@mui/material'\r\nimport CloseIcon from '@mui/icons-material/Close'\r\nimport ShuffleIcon from '@mui/icons-material/Shuffle'\r\nimport ClearAllIcon from '@mui/icons-material/ClearAll'\r\nimport FilterListIcon from '@mui/icons-material/FilterList'\r\nimport ArrowUpwardIcon from '@mui/icons-material/ArrowUpward'\r\nimport ArrowDownwardIcon from '@mui/icons-material/ArrowDownward'\r\nimport KeyboardReturnIcon from '@mui/icons-material/KeyboardReturn'\r\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'\r\nimport { mapDataViewContext } from './context'\r\nimport { IFilterLogic, IFilterDateLogic, IFilterDateRangeLogic, IFilterSelectDef, IValidationResult, IFilterDateDef, IFilterBasicDef } from './types'\r\nimport HelpTooltip from '../components/help-tooltip'\r\n\r\nexport const mapSortConfigs: Record<'asc' | 'desc', { title: string; icon: ReactNode }> = {\r\n asc: { title: 'Ascending', icon: <ArrowUpwardIcon fontSize='small' /> },\r\n desc: { title: 'Descending', icon: <ArrowDownwardIcon fontSize='small' /> }\r\n}\r\n\r\n//#region Toggle Components\r\nexport interface IFilterLogicToggleProps {\r\n value?: IFilterLogic\r\n onChange?: (event: React.MouseEvent<HTMLElement>, value: IFilterLogic) => void\r\n}\r\n\r\nexport const FilterLogicToggle: FC<IFilterLogicToggleProps> = (props) => {\r\n const handleChange = (event: React.MouseEvent<HTMLElement>, newValue: string | null) => {\r\n if (newValue && props.onChange) {\r\n props.onChange(event, newValue as IFilterLogic)\r\n }\r\n }\r\n\r\n return (\r\n <ToggleButtonGroupCustom size='small' value={props.value || 'and'} exclusive onChange={handleChange}>\r\n <ToggleButton size='small' value='and' aria-label='and logic'>\r\n AND\r\n </ToggleButton>\r\n <ToggleButton size='small' value='or' aria-label='or logic'>\r\n OR\r\n </ToggleButton>\r\n </ToggleButtonGroupCustom>\r\n )\r\n}\r\n\r\nexport interface IDateLogicToggleProps {\r\n value?: IFilterDateLogic\r\n onChange?: (event: React.MouseEvent<HTMLElement>, value: IFilterDateLogic) => void\r\n}\r\n\r\nexport const DateLogicToggle: FC<IDateLogicToggleProps> = (props) => {\r\n const handleChange = (event: React.MouseEvent<HTMLElement>, newValue: string | null) => {\r\n if (newValue && props.onChange) {\r\n props.onChange(event, newValue as IFilterDateLogic)\r\n }\r\n }\r\n\r\n return (\r\n <ToggleButtonGroupCustom size='small' value={props.value || 'before'} exclusive onChange={handleChange}>\r\n <ToggleButton size='small' value='before' aria-label='before date'>\r\n before\r\n </ToggleButton>\r\n <ToggleButton size='small' value='after' aria-label='after date'>\r\n after\r\n </ToggleButton>\r\n </ToggleButtonGroupCustom>\r\n )\r\n}\r\n\r\nexport interface IDateRangeLogicToggleProps {\r\n value?: IFilterDateRangeLogic\r\n onChange?: (event: React.MouseEvent<HTMLElement>, value: IFilterDateRangeLogic) => void\r\n}\r\n\r\nexport const DateRangeLogicToggle: FC<IDateRangeLogicToggleProps> = (props) => {\r\n const handleChange = (event: React.MouseEvent<HTMLElement>, newValue: string | null) => {\r\n if (newValue && props.onChange) {\r\n props.onChange(event, newValue as IFilterDateRangeLogic)\r\n }\r\n }\r\n\r\n return (\r\n <ToggleButtonGroupCustom size='small' value={props.value || 'between'} exclusive onChange={handleChange}>\r\n <ToggleButton size='small' value='between' aria-label='between dates'>\r\n between\r\n </ToggleButton>\r\n <ToggleButton size='small' value='not-between' aria-label='not between dates'>\r\n not between\r\n </ToggleButton>\r\n </ToggleButtonGroupCustom>\r\n )\r\n}\r\n\r\nconst ToggleButtonGroupCustom = styled(ToggleButtonGroup)({\r\n '& .MuiToggleButton-root': {\r\n color: '#fff',\r\n borderColor: 'rgba(255, 255, 255, 0.3)',\r\n fontSize: '0.65rem',\r\n fontWeight: 600,\r\n lineHeight: 1,\r\n minWidth: '40px',\r\n padding: '6px 8px',\r\n '&.Mui-selected': {\r\n backgroundColor: '#1976d2',\r\n color: '#fff',\r\n '&:hover': {\r\n backgroundColor: '#1565c0'\r\n }\r\n },\r\n '&:hover': {\r\n backgroundColor: 'rgba(255, 255, 255, 0.08)'\r\n }\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region Notes\r\nexport interface IFilterNotesProps {\r\n title?: string\r\n items?: string[]\r\n disabledSize?: boolean\r\n renderContent?: () => ReactNode\r\n}\r\n\r\nconst HelpTooltipContent: FC<{ items: string[] }> = (props) => (\r\n <WrapList>\r\n {props.items.map((item, index) => (\r\n <Typography key={index} component='li' variant='body2'>\r\n {item}\r\n </Typography>\r\n ))}\r\n </WrapList>\r\n)\r\n\r\nexport const FilterNotes: FC<IFilterNotesProps> = (props) => (\r\n <WrapIcon className={props.disabledSize === true ? 'disabled-size' : ''}>\r\n <HelpTooltip small title={props.title ?? 'The search includes'}>\r\n {props.renderContent ? props.renderContent() : <HelpTooltipContent items={props.items ?? []} />}\r\n </HelpTooltip>\r\n </WrapIcon>\r\n)\r\n//#endregion\r\n\r\n//#region Input\r\nexport const FilterInput = React.forwardRef<HTMLInputElement, InputBaseProps>((props, ref) => {\r\n return <InputBase fullWidth autoComplete='off' size='small' {...props} inputRef={ref} />\r\n})\r\n\r\ninterface IFilterInputAdornmentProps {\r\n notes?: IFilterNotesProps\r\n keyword?: string\r\n onClear: IconButtonProps['onClick']\r\n onEnterSearch: ButtonProps['onClick']\r\n}\r\n\r\nexport const FilterInputAdornment: FC<IFilterInputAdornmentProps> = (props) => (\r\n <InputAdornment position='end'>\r\n {props.keyword && (\r\n <>\r\n <HelpButton size='small' color='primary' onClick={props.onEnterSearch} sx={{ display: { xs: 'none', md: 'flex' } }}>\r\n <Typography variant='caption'>\r\n Type and hit <b>Enter ⏎</b> to filter.\r\n </Typography>\r\n </HelpButton>\r\n <Tooltip title='Press Enter to filter' placement='bottom' arrow>\r\n <IconButton size='small' color='primary' sx={{ display: { xs: 'flex', md: 'none' } }} onClick={props.onEnterSearch}>\r\n <KeyboardReturnIcon fontSize='small' />\r\n </IconButton>\r\n </Tooltip>\r\n </>\r\n )}\r\n {props.keyword && (\r\n <Tooltip title='Press Esc to clear' placement='bottom' arrow>\r\n <IconButton\r\n size='small'\r\n sx={{\r\n marginLeft: '8px',\r\n color: 'text.error',\r\n '&:hover': { color: 'error.main' }\r\n }}\r\n onClick={props.onClear}\r\n >\r\n <CloseIcon fontSize='small' />\r\n </IconButton>\r\n </Tooltip>\r\n )}\r\n {props.notes && <FilterNotes {...props.notes} />}\r\n </InputAdornment>\r\n)\r\n\r\nconst HelpButton = styled(Button)({\r\n padding: '4px 6px',\r\n textTransform: 'none',\r\n lineHeight: 1,\r\n '.MuiTypography-root': {\r\n fontWeight: 600,\r\n b: {\r\n fontWeight: 700,\r\n backgroundColor: colors.blue[100],\r\n borderRadius: '4px',\r\n padding: '2px 4px'\r\n }\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region Button\r\nexport interface IButtonClearProps {\r\n visibled?: boolean\r\n onClick: IconButtonProps['onClick']\r\n}\r\n\r\nexport const ButtonClear: FC<IButtonClearProps> = (props) => (\r\n <WrapIcon>\r\n <Tooltip title='Remove filter'>\r\n <Fade in={props.visibled} unmountOnExit>\r\n <IconButton size='small' onClick={props.onClick}>\r\n <CloseIcon fontSize='small' />\r\n </IconButton>\r\n </Fade>\r\n </Tooltip>\r\n </WrapIcon>\r\n)\r\n\r\nexport const ClearAllButton = React.forwardRef<HTMLButtonElement, ButtonProps>(({ children, ...props }, ref) => (\r\n <ClearButtonStyled size='small' color='error' startIcon={<ClearAllIcon />} ref={ref} {...props}>\r\n {children || 'Clear all'}\r\n </ClearButtonStyled>\r\n))\r\n\r\nconst ClearButtonStyled = styled(Button)({ textTransform: 'none', fontWeight: 700 })\r\n\r\nexport const FilterButton = React.forwardRef<HTMLButtonElement, IconButtonProps>((props, ref) => (\r\n <IconButton ref={ref} size='small' sx={{ flex: '0 0 auto' }} {...props}>\r\n <FilterListIcon />\r\n </IconButton>\r\n))\r\n\r\nexport const SortIconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>((props, ref) => (\r\n <IconButton ref={ref} size='small' sx={{ flex: '0 0 auto' }} {...props}>\r\n <ShuffleIcon />\r\n </IconButton>\r\n))\r\n\r\nexport const SortButton: FC<ButtonProps> = (props) => (\r\n <>\r\n {mapDataViewContext((context) => {\r\n const { filterState, filterBarConfigs: configs } = context\r\n const config: Partial<{ title: string; icon: ReactNode }> = filterState.sort ? mapSortConfigs[filterState.sort?.direction] : {}\r\n const fieldConfig = configs.fields?.[filterState.sort?.field as any]\r\n const text = fieldConfig?.label || filterState.sort?.field.toString() || configs.sortButton?.text\r\n return (\r\n <SortButtonStyled\r\n size='small'\r\n color='inherit'\r\n startIcon={config.icon || <ShuffleIcon fontSize='small' />}\r\n endIcon={configs.sortButton?.icon ?? <KeyboardArrowDownIcon fontSize='small' />}\r\n onClick={(e) => context.onPopperPanelChange(e.currentTarget, 'sortButton')}\r\n {...configs.sortButton?.wrapProps}\r\n {...props}\r\n >\r\n {text || 'Sort'}\r\n </SortButtonStyled>\r\n )\r\n })}\r\n </>\r\n)\r\n\r\nconst SortButtonStyled = styled(Button)({\r\n height: 'var(--filter-bar-height, 40px)',\r\n padding: '0 16px',\r\n backgroundColor: colors.grey[50],\r\n border: '1px solid var(--color-divider, rgba(145 158 171 / 20%))',\r\n textTransform: 'none',\r\n fontWeight: 600,\r\n ':hover': {\r\n backgroundColor: colors.grey[100]\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region Panel Not Found\r\nexport const PanelNotFound: FC<{ area?: string }> = ({ area }) => (\r\n <Box sx={{ padding: '8px', textAlign: 'center', border: '1px solid #ddd', borderRadius: '4px' }}>\r\n <Typography variant='body2' sx={{ padding: '8px' }}>\r\n No panel available for area: {area}\r\n </Typography>\r\n </Box>\r\n)\r\n//#endregion\r\n\r\n//#region Form\r\ninterface IFormContentProps {\r\n label: string\r\n notes?: any\r\n children?: React.ReactNode\r\n afterTopBar?: React.ReactNode\r\n}\r\n\r\nconst FormContent: FC<IFormContentProps> = ({ label, notes, children, afterTopBar }) => (\r\n <FormContentWrapper>\r\n <Box className='top-bar'>\r\n <Typography variant='subtitle2'>{label}</Typography>\r\n {afterTopBar && <Box className='after-top-bar'>{afterTopBar}</Box>}\r\n {notes && <FilterNotes title={`The ${label} includes`} disabledSize {...notes} />}\r\n </Box>\r\n <Box className='content'>{children}</Box>\r\n </FormContentWrapper>\r\n)\r\n\r\nconst FormContentWrapper = styled(Box)({\r\n minWidth: '200px',\r\n borderRadius: '4px',\r\n overflow: 'hidden',\r\n '.top-bar': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n background: colors.grey[900],\r\n padding: '8px',\r\n gap: '8px',\r\n '.MuiTypography-root': {\r\n color: colors.common.white,\r\n flex: 1\r\n }\r\n },\r\n '.after-top-bar': {\r\n marginLeft: '8px'\r\n },\r\n '.content': {\r\n padding: '8px'\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region Menu - String Type\r\ninterface IMenuWithTypeBaseProps {\r\n name: string\r\n validationResult?: IValidationResult\r\n}\r\n\r\ninterface IMenuWithTypeStringProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterBasicDef\r\n}\r\n\r\nexport const MenuWithTypeString: FC<IMenuWithTypeStringProps> = (props) => {\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent label={label} notes={props.fieldConfig?.notes}>\r\n <TextField\r\n autoFocus\r\n name={props.name}\r\n size='small'\r\n fullWidth\r\n error={!!props.validationResult?.hasError}\r\n helperText={props.validationResult?.message}\r\n />\r\n </FormContent>\r\n )\r\n}\r\n//#endregion\r\n\r\n//#region Menu - Select Type\r\nexport interface IMenuWithTypeSelectProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterSelectDef\r\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\r\n}\r\n\r\nexport const MenuWithTypeSelect: FC<IMenuWithTypeSelectProps> = (props) => {\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent label={label} notes={props.fieldConfig?.notes}>\r\n <CustomRadioGroup name={props.name} className={props.validationResult?.hasError ? 'error' : ''} onChange={props.onChange}>\r\n {props.fieldConfig?.options.map((x, i) => (\r\n <FormControlLabel key={x.value.toString() + i} value={x.value} control={<Radio />} label={x.label ?? x.value} />\r\n ))}\r\n </CustomRadioGroup>\r\n </FormContent>\r\n )\r\n}\r\n\r\nconst CustomRadioGroup = styled(RadioGroup)({\r\n marginLeft: '-8px',\r\n marginRight: '-8px',\r\n '&.error .MuiRadio-root': {\r\n color: '#d32f2f'\r\n },\r\n '.MuiFormControlLabel-root': {\r\n margin: 0\r\n },\r\n '.MuiFormControlLabel-root:hover': {\r\n backgroundColor: 'rgba(25, 118, 210, 0.04)'\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region Menu - Select Multi Type\r\nexport interface IMenuWithTypeSelectMultiProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterSelectDef\r\n onChange?: (event: React.SyntheticEvent, checked: boolean) => void\r\n}\r\n\r\nexport const MenuWithTypeSelectMulti: FC<IMenuWithTypeSelectMultiProps> = (props) => {\r\n const [filterLogic, setFilterLogic] = useState<IFilterLogic>('and')\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent\r\n label={label}\r\n notes={props.fieldConfig?.notes}\r\n afterTopBar={<FilterLogicToggle value={filterLogic} onChange={(_, value) => setFilterLogic(value)} />}\r\n >\r\n {/* Hidden input for logic value */}\r\n <input type='hidden' name='filterLogic' value={filterLogic} />\r\n <CustomFormGroup className={props.validationResult?.hasError ? 'error' : ''}>\r\n {props.fieldConfig?.options.map((x, i) => (\r\n <FormControlLabel\r\n key={x.value.toString() + i}\r\n value={x.value}\r\n control={<Checkbox name={props.name} />}\r\n label={x.label ?? x.value}\r\n onChange={props.onChange}\r\n />\r\n ))}\r\n </CustomFormGroup>\r\n </FormContent>\r\n )\r\n}\r\n\r\nconst CustomFormGroup = styled(FormGroup)({\r\n marginLeft: '-8px',\r\n marginRight: '-8px',\r\n '&.error .MuiCheckbox-root': {\r\n color: '#d32f2f'\r\n },\r\n '.MuiFormControlLabel-root': {\r\n margin: 0\r\n },\r\n '.MuiFormControlLabel-root:hover': {\r\n backgroundColor: 'rgba(25, 118, 210, 0.04)'\r\n }\r\n})\r\n//#endregion\r\n\r\nfunction convertDateToCustomFormat(dateString: string): string {\r\n if (!dateString || !/^\\d{4}-\\d{2}-\\d{2}$/.test(dateString)) return ''\r\n return `${dateString}T00:00:00.0000000`\r\n}\r\n//#region Menu - Date Type\r\nexport interface IMenuWithTypeDateProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterDateDef\r\n}\r\n\r\nexport const MenuWithTypeDate: FC<IMenuWithTypeDateProps> = (props) => {\r\n const [dateLogic, setDateLogic] = useState<IFilterDateLogic>('before')\r\n const [value, setValue] = useState<string>('')\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent\r\n label={label}\r\n notes={props.fieldConfig?.notes}\r\n afterTopBar={<DateLogicToggle value={dateLogic} onChange={(_, value) => setDateLogic(value)} />}\r\n >\r\n <Box className='content'>\r\n {/* Hidden input for logic value */}\r\n <input type='hidden' name='dateLogic' value={dateLogic} />\r\n <input hidden type='text' name={props.name} readOnly value={convertDateToCustomFormat(value)} />\r\n <TextField\r\n autoFocus\r\n fullWidth\r\n type='date'\r\n size='small'\r\n value={value}\r\n onChange={(event) => setValue(event.target.value)}\r\n error={!!props.validationResult?.hasError}\r\n helperText={props.validationResult?.message}\r\n inputProps={{ min: props.fieldConfig?.minDate, max: props.fieldConfig?.maxDate }}\r\n />\r\n </Box>\r\n </FormContent>\r\n )\r\n}\r\n//#endregion\r\n\r\n//#region Menu - Date Range Type\r\nexport interface IMenuWithTypeDateRangeProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterDateDef\r\n}\r\n\r\nexport const MenuWithTypeDateRange: FC<IMenuWithTypeDateRangeProps> = (props) => {\r\n const [dateRangeLogic, setDateRangeLogic] = useState<IFilterDateRangeLogic>('between')\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent\r\n label={label}\r\n notes={props.fieldConfig?.notes}\r\n afterTopBar={<DateRangeLogicToggle value={dateRangeLogic} onChange={(_, value) => setDateRangeLogic(value)} />}\r\n >\r\n {/* Hidden input for logic value */}\r\n <input type='hidden' name='dateRangeLogic' value={dateRangeLogic} />\r\n <DateRangeContainer>\r\n <TextField\r\n autoFocus\r\n fullWidth\r\n name={`${props.name}_start`}\r\n type='date'\r\n size='small'\r\n label='From'\r\n error={!!props.validationResult?.hasError}\r\n sx={{ marginBottom: 1 }}\r\n InputLabelProps={{ shrink: true }}\r\n inputProps={{ min: props.fieldConfig?.minDate, max: props.fieldConfig?.maxDate }}\r\n />\r\n <TextField\r\n fullWidth\r\n name={`${props.name}_end`}\r\n type='date'\r\n size='small'\r\n label='To'\r\n error={!!props.validationResult?.hasError}\r\n helperText={props.validationResult?.message}\r\n InputLabelProps={{ shrink: true }}\r\n inputProps={{ min: props.fieldConfig?.minDate, max: props.fieldConfig?.maxDate }}\r\n />\r\n </DateRangeContainer>\r\n </FormContent>\r\n )\r\n}\r\n\r\nconst DateRangeContainer = styled(Box)({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '8px'\r\n})\r\n//#endregion\r\n\r\n//#region Styled\r\nconst WrapIcon = styled(Box)({\r\n display: 'inline-flex',\r\n flex: '0 0 auto',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n '&:not(.disabled-size)': {\r\n width: '40px',\r\n height: '40px'\r\n }\r\n})\r\n\r\nconst WrapList = styled('ul')({\r\n paddingLeft: '1.7rem',\r\n marginBottom: 0,\r\n li: {\r\n position: 'relative',\r\n textAlign: 'justify',\r\n '&::before': {\r\n content: '\"►\"',\r\n display: 'block',\r\n position: 'absolute',\r\n top: '50%',\r\n right: 'calc(100% + 6px)',\r\n transform: 'translateY(-50%)',\r\n fontSize: '0.9em'\r\n }\r\n }\r\n})\r\n//#endregion\r\n"],"names":["mapSortConfigs","asc","title","icon","_jsx","ArrowUpwardIcon","fontSize","desc","ArrowDownwardIcon","FilterLogicToggle","props","_jsxs","ToggleButtonGroupCustom","size","value","exclusive","onChange","event","newValue","children","ToggleButton","DateLogicToggle","DateRangeLogicToggle","styled","ToggleButtonGroup","color","borderColor","fontWeight","lineHeight","minWidth","padding","backgroundColor","HelpTooltipContent","WrapList","items","map","item","index","Typography","component","variant","FilterNotes","_props$title","_props$items","WrapIcon","className","disabledSize","HelpTooltip","small","renderContent","FilterInput","React","forwardRef","ref","InputBase","_objectSpread","fullWidth","autoComplete","inputRef","FilterInputAdornment","InputAdornment","position","keyword","_Fragment","HelpButton","onClick","onEnterSearch","sx","display","xs","md","Tooltip","placement","arrow","IconButton","KeyboardReturnIcon","marginLeft","onClear","CloseIcon","notes","Button","textTransform","b","colors","blue","borderRadius","ClearAllButton","_ref","_objectWithoutProperties","_excluded","ClearButtonStyled","startIcon","ClearAllIcon","FilterButton","flex","FilterListIcon","SortButton","mapDataViewContext","context","_filterState$sort","_configs$fields","_filterState$sort2","_filterState$sort3","_configs$sortButton","_configs$sortButton$i","_configs$sortButton2","_configs$sortButton3","filterState","configs","filterBarConfigs","config","sort","direction","fieldConfig","fields","field","text","label","toString","sortButton","SortButtonStyled","ShuffleIcon","endIcon","KeyboardArrowDownIcon","e","onPopperPanelChange","currentTarget","wrapProps","height","grey","border","PanelNotFound","_ref2","area","Box","textAlign","FormContent","_ref3","afterTopBar","FormContentWrapper","concat","overflow","alignItems","background","gap","common","white","MenuWithTypeString","_props$fieldConfig$la","_props$fieldConfig","_props$fieldConfig2","_props$validationResu","_props$validationResu2","name","TextField","autoFocus","error","validationResult","hasError","helperText","message","MenuWithTypeSelect","_props$fieldConfig$la2","_props$fieldConfig3","_props$fieldConfig4","_props$validationResu3","_props$fieldConfig5","CustomRadioGroup","options","x","i","_x$label","FormControlLabel","control","Radio","RadioGroup","marginRight","margin","MenuWithTypeSelectMulti","_props$fieldConfig$la3","_props$fieldConfig6","_props$fieldConfig7","_props$validationResu4","_props$fieldConfig8","_useState","useState","_useState2","_slicedToArray","filterLogic","setFilterLogic","_","type","CustomFormGroup","_x$label2","Checkbox","FormGroup","MenuWithTypeDate","_props$fieldConfig$la4","_props$fieldConfig9","_props$fieldConfig0","_props$validationResu5","_props$validationResu6","_props$fieldConfig1","_props$fieldConfig10","dateString","_useState3","_useState4","dateLogic","setDateLogic","_useState5","_useState6","setValue","hidden","readOnly","test","target","inputProps","min","minDate","max","maxDate","MenuWithTypeDateRange","_props$fieldConfig$la5","_props$fieldConfig11","_props$fieldConfig12","_props$validationResu7","_props$fieldConfig13","_props$fieldConfig14","_props$validationResu8","_props$validationResu9","_props$fieldConfig15","_props$fieldConfig16","_useState7","_useState8","dateRangeLogic","setDateRangeLogic","DateRangeContainer","marginBottom","InputLabelProps","shrink","flexDirection","justifyContent","width","paddingLeft","li","content","top","right","transform"],"mappings":"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"}
1
+ {"version":3,"file":"ui.units.js","sources":["../../src/data-view/ui.units.tsx"],"sourcesContent":["import React, { FC, ReactNode, useState } from 'react'\r\nimport { Box, Button, ButtonProps, Fade, IconButton, InputBaseProps, Typography } from '@mui/material'\r\nimport { FormControlLabel, FormGroup, Radio, RadioGroup, TextField, colors, styled } from '@mui/material'\r\nimport { ToggleButton, Tooltip, ToggleButtonGroup, Checkbox, IconButtonProps, InputAdornment, InputBase } from '@mui/material'\r\nimport CloseIcon from '@mui/icons-material/Close'\r\nimport ShuffleIcon from '@mui/icons-material/Shuffle'\r\nimport ClearAllIcon from '@mui/icons-material/ClearAll'\r\nimport FilterListIcon from '@mui/icons-material/FilterList'\r\nimport ArrowUpwardIcon from '@mui/icons-material/ArrowUpward'\r\nimport ArrowDownwardIcon from '@mui/icons-material/ArrowDownward'\r\nimport KeyboardReturnIcon from '@mui/icons-material/KeyboardReturn'\r\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'\r\nimport { mapDataViewContext } from './context'\r\nimport { IFilterLogic, IFilterDateLogic, IFilterDateRangeLogic, IFilterSelectDef, IValidationResult, IFilterDateDef, IFilterBasicDef } from './types'\r\nimport HelpTooltip from '../components/help-tooltip'\r\n\r\nexport const mapSortConfigs: Record<'asc' | 'desc', { title: string; icon: ReactNode }> = {\r\n asc: { title: 'Ascending', icon: <ArrowUpwardIcon fontSize='small' /> },\r\n desc: { title: 'Descending', icon: <ArrowDownwardIcon fontSize='small' /> }\r\n}\r\n\r\n//#region Toggle Components\r\nexport interface IFilterLogicToggleProps {\r\n value?: IFilterLogic\r\n onChange?: (event: React.MouseEvent<HTMLElement>, value: IFilterLogic) => void\r\n}\r\n\r\nexport const FilterLogicToggle: FC<IFilterLogicToggleProps> = (props) => {\r\n const handleChange = (event: React.MouseEvent<HTMLElement>, newValue: string | null) => {\r\n if (newValue && props.onChange) {\r\n props.onChange(event, newValue as IFilterLogic)\r\n }\r\n }\r\n\r\n return (\r\n <ToggleButtonGroupCustom size='small' value={props.value || 'and'} exclusive onChange={handleChange}>\r\n <ToggleButton size='small' value='and' aria-label='and logic'>\r\n AND\r\n </ToggleButton>\r\n <ToggleButton size='small' value='or' aria-label='or logic'>\r\n OR\r\n </ToggleButton>\r\n </ToggleButtonGroupCustom>\r\n )\r\n}\r\n\r\nexport interface IDateLogicToggleProps {\r\n value?: IFilterDateLogic\r\n onChange?: (event: React.MouseEvent<HTMLElement>, value: IFilterDateLogic) => void\r\n}\r\n\r\nexport const DateLogicToggle: FC<IDateLogicToggleProps> = (props) => {\r\n const handleChange = (event: React.MouseEvent<HTMLElement>, newValue: string | null) => {\r\n if (newValue && props.onChange) {\r\n props.onChange(event, newValue as IFilterDateLogic)\r\n }\r\n }\r\n\r\n return (\r\n <ToggleButtonGroupCustom size='small' value={props.value || 'before'} exclusive onChange={handleChange}>\r\n <ToggleButton size='small' value='before' aria-label='before date'>\r\n before\r\n </ToggleButton>\r\n <ToggleButton size='small' value='after' aria-label='after date'>\r\n after\r\n </ToggleButton>\r\n </ToggleButtonGroupCustom>\r\n )\r\n}\r\n\r\nexport interface IDateRangeLogicToggleProps {\r\n value?: IFilterDateRangeLogic\r\n onChange?: (event: React.MouseEvent<HTMLElement>, value: IFilterDateRangeLogic) => void\r\n}\r\n\r\nexport const DateRangeLogicToggle: FC<IDateRangeLogicToggleProps> = (props) => {\r\n const handleChange = (event: React.MouseEvent<HTMLElement>, newValue: string | null) => {\r\n if (newValue && props.onChange) {\r\n props.onChange(event, newValue as IFilterDateRangeLogic)\r\n }\r\n }\r\n\r\n return (\r\n <ToggleButtonGroupCustom size='small' value={props.value || 'between'} exclusive onChange={handleChange}>\r\n <ToggleButton size='small' value='between' aria-label='between dates'>\r\n between\r\n </ToggleButton>\r\n <ToggleButton size='small' value='not-between' aria-label='not between dates'>\r\n not between\r\n </ToggleButton>\r\n </ToggleButtonGroupCustom>\r\n )\r\n}\r\n\r\nconst ToggleButtonGroupCustom = styled(ToggleButtonGroup)({\r\n '& .MuiToggleButton-root': {\r\n color: '#fff',\r\n borderColor: 'rgba(255, 255, 255, 0.3)',\r\n fontSize: '0.65rem',\r\n fontWeight: 600,\r\n lineHeight: 1,\r\n minWidth: '40px',\r\n padding: '6px 8px',\r\n '&.Mui-selected': {\r\n backgroundColor: '#1976d2',\r\n color: '#fff',\r\n '&:hover': {\r\n backgroundColor: '#1565c0'\r\n }\r\n },\r\n '&:hover': {\r\n backgroundColor: 'rgba(255, 255, 255, 0.08)'\r\n }\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region Notes\r\nexport interface IFilterNotesProps {\r\n title?: string\r\n items?: string[]\r\n disabledSize?: boolean\r\n renderContent?: () => ReactNode\r\n}\r\n\r\nconst HelpTooltipContent: FC<{ items: string[] }> = (props) => (\r\n <WrapList>\r\n {props.items.map((item, index) => (\r\n <Typography key={index} component='li' variant='body2'>\r\n {item}\r\n </Typography>\r\n ))}\r\n </WrapList>\r\n)\r\n\r\nexport const FilterNotes: FC<IFilterNotesProps> = (props) => (\r\n <WrapIcon className={props.disabledSize === true ? 'disabled-size' : ''}>\r\n <HelpTooltip small title={props.title ?? 'The search includes'}>\r\n {props.renderContent ? props.renderContent() : <HelpTooltipContent items={props.items ?? []} />}\r\n </HelpTooltip>\r\n </WrapIcon>\r\n)\r\n//#endregion\r\n\r\n//#region Input\r\nexport const FilterInput = React.forwardRef<HTMLInputElement, InputBaseProps>((props, ref) => {\r\n return <InputBase fullWidth autoComplete='off' size='small' {...props} inputRef={ref} />\r\n})\r\n\r\ninterface IFilterInputAdornmentProps {\r\n notes?: IFilterNotesProps\r\n keyword?: string\r\n onClear: IconButtonProps['onClick']\r\n onEnterSearch: ButtonProps['onClick']\r\n}\r\n\r\nexport const FilterInputAdornment: FC<IFilterInputAdornmentProps> = (props) => (\r\n <InputAdornment position='end'>\r\n {props.keyword && (\r\n <>\r\n <HelpButton size='small' color='primary' onClick={props.onEnterSearch} sx={{ display: { xs: 'none', md: 'flex' } }}>\r\n <Typography variant='caption'>\r\n Type and hit <b>Enter ⏎</b> to filter.\r\n </Typography>\r\n </HelpButton>\r\n <Tooltip title='Press Enter to filter' placement='bottom' arrow>\r\n <IconButton size='small' color='primary' sx={{ display: { xs: 'flex', md: 'none' } }} onClick={props.onEnterSearch}>\r\n <KeyboardReturnIcon fontSize='small' />\r\n </IconButton>\r\n </Tooltip>\r\n </>\r\n )}\r\n {props.keyword && (\r\n <Tooltip title='Press Esc to clear' placement='bottom' arrow>\r\n <IconButton size='small' sx={{ marginLeft: '8px', color: 'text.error', '&:hover': { color: 'error.main' } }} onClick={props.onClear}>\r\n <CloseIcon fontSize='small' />\r\n </IconButton>\r\n </Tooltip>\r\n )}\r\n {props.notes && <FilterNotes {...props.notes} />}\r\n </InputAdornment>\r\n)\r\n\r\nconst HelpButton = styled(Button)({\r\n padding: '4px 6px',\r\n textTransform: 'none',\r\n lineHeight: 1,\r\n '.MuiTypography-root': {\r\n fontWeight: 600,\r\n b: {\r\n fontWeight: 700,\r\n backgroundColor: colors.blue[100],\r\n borderRadius: '4px',\r\n padding: '2px 4px'\r\n }\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region Button\r\nexport interface IButtonClearProps {\r\n visibled?: boolean\r\n onClick: IconButtonProps['onClick']\r\n}\r\n\r\nexport const ButtonClear: FC<IButtonClearProps> = (props) => (\r\n <WrapIcon>\r\n <Tooltip title='Remove filter'>\r\n <Fade in={props.visibled} unmountOnExit>\r\n <IconButton size='small' onClick={props.onClick}>\r\n <CloseIcon fontSize='small' />\r\n </IconButton>\r\n </Fade>\r\n </Tooltip>\r\n </WrapIcon>\r\n)\r\n\r\nexport const ClearAllButton = React.forwardRef<HTMLButtonElement, ButtonProps>(({ children, ...props }, ref) => (\r\n <ClearButtonStyled size='small' color='error' startIcon={<ClearAllIcon />} ref={ref} {...props}>\r\n {children || 'Clear all'}\r\n </ClearButtonStyled>\r\n))\r\n\r\nconst ClearButtonStyled = styled(Button)({ textTransform: 'none', fontWeight: 700 })\r\n\r\nexport const FilterButton = React.forwardRef<HTMLButtonElement, IconButtonProps>((props, ref) => (\r\n <IconButton ref={ref} size='small' sx={{ flex: '0 0 auto' }} {...props}>\r\n <FilterListIcon />\r\n </IconButton>\r\n))\r\n\r\nexport const SortIconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>((props, ref) => (\r\n <IconButton ref={ref} size='small' sx={{ flex: '0 0 auto' }} {...props}>\r\n <ShuffleIcon />\r\n </IconButton>\r\n))\r\n\r\nexport const SortButton: FC<ButtonProps> = (props) => (\r\n <>\r\n {mapDataViewContext((context) => {\r\n const { filterState, filterBarConfigs: configs } = context\r\n const config: Partial<{ title: string; icon: ReactNode }> = filterState.sort ? mapSortConfigs[filterState.sort?.direction] : {}\r\n const fieldConfig = configs.fields?.[filterState.sort?.field as any]\r\n const text = fieldConfig?.label || filterState.sort?.field.toString() || configs.sortButton?.text\r\n return (\r\n <SortButtonStyled\r\n size='small'\r\n color='inherit'\r\n startIcon={config.icon || <ShuffleIcon fontSize='small' />}\r\n endIcon={configs.sortButton?.icon ?? <KeyboardArrowDownIcon fontSize='small' />}\r\n onClick={(e) => context.onPopperPanelChange(e.currentTarget, 'sortButton')}\r\n {...configs.sortButton?.wrapProps}\r\n {...props}\r\n >\r\n {text || 'Sort'}\r\n </SortButtonStyled>\r\n )\r\n })}\r\n </>\r\n)\r\n\r\nconst SortButtonStyled = styled(Button)({\r\n height: 'var(--filter-bar-height, 40px)',\r\n padding: '0 16px',\r\n backgroundColor: colors.grey[50],\r\n border: '1px solid var(--color-divider, rgba(145 158 171 / 20%))',\r\n textTransform: 'none',\r\n fontWeight: 600,\r\n ':hover': {\r\n backgroundColor: colors.grey[100]\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region Panel Not Found\r\nexport const PanelNotFound: FC<{ area?: string }> = ({ area }) => (\r\n <Box sx={{ padding: '8px', textAlign: 'center', border: '1px solid #ddd', borderRadius: '4px' }}>\r\n <Typography variant='body2' sx={{ padding: '8px' }}>\r\n No panel available for area: {area}\r\n </Typography>\r\n </Box>\r\n)\r\n//#endregion\r\n\r\n//#region Form\r\ninterface IFormContentProps {\r\n label: string\r\n notes?: any\r\n children?: React.ReactNode\r\n afterTopBar?: React.ReactNode\r\n}\r\n\r\nconst FormContent: FC<IFormContentProps> = ({ label, notes, children, afterTopBar }) => (\r\n <FormContentWrapper>\r\n <Box className='top-bar'>\r\n <Typography variant='subtitle2'>{label}</Typography>\r\n {afterTopBar && <Box className='after-top-bar'>{afterTopBar}</Box>}\r\n {notes && <FilterNotes title={`The ${label} includes`} disabledSize {...notes} />}\r\n </Box>\r\n <Box className='content'>{children}</Box>\r\n </FormContentWrapper>\r\n)\r\n\r\nconst FormContentWrapper = styled(Box)({\r\n minWidth: '200px',\r\n borderRadius: '4px',\r\n overflow: 'hidden',\r\n '.top-bar': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n background: colors.grey[900],\r\n padding: '8px',\r\n gap: '8px',\r\n '.MuiTypography-root': {\r\n color: colors.common.white,\r\n flex: 1\r\n }\r\n },\r\n '.after-top-bar': {\r\n marginLeft: '8px'\r\n },\r\n '.content': {\r\n padding: '8px'\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region Menu - String Type\r\ninterface IMenuWithTypeBaseProps {\r\n name: string\r\n validationResult?: IValidationResult\r\n}\r\n\r\ninterface IMenuWithTypeStringProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterBasicDef\r\n}\r\n\r\nexport const MenuWithTypeString: FC<IMenuWithTypeStringProps> = (props) => {\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent label={label} notes={props.fieldConfig?.notes}>\r\n <TextField\r\n autoFocus\r\n name={props.name}\r\n size='small'\r\n fullWidth\r\n error={!!props.validationResult?.hasError}\r\n helperText={props.validationResult?.message}\r\n />\r\n </FormContent>\r\n )\r\n}\r\n//#endregion\r\n\r\n//#region Menu - Select Type\r\nexport interface IMenuWithTypeSelectProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterSelectDef\r\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\r\n}\r\n\r\nexport const MenuWithTypeSelect: FC<IMenuWithTypeSelectProps> = (props) => {\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent label={label} notes={props.fieldConfig?.notes}>\r\n <CustomRadioGroup name={props.name} className={props.validationResult?.hasError ? 'error' : ''} onChange={props.onChange}>\r\n {props.fieldConfig?.options.map((x, i) => (\r\n <FormControlLabel key={x.value.toString() + i} value={x.value} control={<Radio />} label={x.label ?? x.value} />\r\n ))}\r\n </CustomRadioGroup>\r\n </FormContent>\r\n )\r\n}\r\n\r\nconst CustomRadioGroup = styled(RadioGroup)({\r\n marginLeft: '-8px',\r\n marginRight: '-8px',\r\n '&.error .MuiRadio-root': {\r\n color: '#d32f2f'\r\n },\r\n '.MuiFormControlLabel-root': {\r\n margin: 0\r\n },\r\n '.MuiFormControlLabel-root:hover': {\r\n backgroundColor: 'rgba(25, 118, 210, 0.04)'\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region Menu - Select Multi Type\r\nexport interface IMenuWithTypeSelectMultiProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterSelectDef\r\n onChange?: (event: React.SyntheticEvent, checked: boolean) => void\r\n}\r\n\r\nexport const MenuWithTypeSelectMulti: FC<IMenuWithTypeSelectMultiProps> = (props) => {\r\n const [filterLogic, setFilterLogic] = useState<IFilterLogic>('and')\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent\r\n label={label}\r\n notes={props.fieldConfig?.notes}\r\n afterTopBar={<FilterLogicToggle value={filterLogic} onChange={(_, value) => setFilterLogic(value)} />}\r\n >\r\n {/* Hidden input for logic value */}\r\n <input type='hidden' name='filterLogic' value={filterLogic} />\r\n <CustomFormGroup className={props.validationResult?.hasError ? 'error' : ''}>\r\n {props.fieldConfig?.options.map((x, i) => (\r\n <FormControlLabel\r\n key={x.value.toString() + i}\r\n value={x.value}\r\n control={<Checkbox name={props.name} />}\r\n label={x.label ?? x.value}\r\n onChange={props.onChange}\r\n />\r\n ))}\r\n </CustomFormGroup>\r\n </FormContent>\r\n )\r\n}\r\n\r\nconst CustomFormGroup = styled(FormGroup)({\r\n marginLeft: '-8px',\r\n marginRight: '-8px',\r\n '&.error .MuiCheckbox-root': {\r\n color: '#d32f2f'\r\n },\r\n '.MuiFormControlLabel-root': {\r\n margin: 0\r\n },\r\n '.MuiFormControlLabel-root:hover': {\r\n backgroundColor: 'rgba(25, 118, 210, 0.04)'\r\n }\r\n})\r\n//#endregion\r\n\r\nfunction convertDateToCustomFormat(dateString: string): string {\r\n if (!dateString || !/^\\d{4}-\\d{2}-\\d{2}$/.test(dateString)) return ''\r\n return `${dateString}T00:00:00.0000000`\r\n}\r\n//#region Menu - Date Type\r\nexport interface IMenuWithTypeDateProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterDateDef\r\n}\r\n\r\nexport const MenuWithTypeDate: FC<IMenuWithTypeDateProps> = (props) => {\r\n const [dateLogic, setDateLogic] = useState<IFilterDateLogic>('before')\r\n const [value, setValue] = useState<string>('')\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent\r\n label={label}\r\n notes={props.fieldConfig?.notes}\r\n afterTopBar={<DateLogicToggle value={dateLogic} onChange={(_, value) => setDateLogic(value)} />}\r\n >\r\n <Box className='content'>\r\n {/* Hidden input for logic value */}\r\n <input type='hidden' name='dateLogic' value={dateLogic} />\r\n <input hidden type='text' name={props.name} readOnly value={convertDateToCustomFormat(value)} />\r\n <TextField\r\n autoFocus\r\n fullWidth\r\n type='date'\r\n size='small'\r\n value={value}\r\n onChange={(event) => setValue(event.target.value)}\r\n error={!!props.validationResult?.hasError}\r\n helperText={props.validationResult?.message}\r\n inputProps={{ min: props.fieldConfig?.minDate, max: props.fieldConfig?.maxDate }}\r\n />\r\n </Box>\r\n </FormContent>\r\n )\r\n}\r\n//#endregion\r\n\r\n//#region Menu - Date Range Type\r\nexport interface IMenuWithTypeDateRangeProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterDateDef\r\n}\r\n\r\nexport const MenuWithTypeDateRange: FC<IMenuWithTypeDateRangeProps> = (props) => {\r\n const [dateRangeLogic, setDateRangeLogic] = useState<IFilterDateRangeLogic>('between')\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent\r\n label={label}\r\n notes={props.fieldConfig?.notes}\r\n afterTopBar={<DateRangeLogicToggle value={dateRangeLogic} onChange={(_, value) => setDateRangeLogic(value)} />}\r\n >\r\n {/* Hidden input for logic value */}\r\n <input type='hidden' name='dateRangeLogic' value={dateRangeLogic} />\r\n <DateRangeContainer>\r\n <TextField\r\n autoFocus\r\n fullWidth\r\n name={`${props.name}_start`}\r\n type='date'\r\n size='small'\r\n label='From'\r\n error={!!props.validationResult?.hasError}\r\n sx={{ marginBottom: 1 }}\r\n InputLabelProps={{ shrink: true }}\r\n inputProps={{ min: props.fieldConfig?.minDate, max: props.fieldConfig?.maxDate }}\r\n />\r\n <TextField\r\n fullWidth\r\n name={`${props.name}_end`}\r\n type='date'\r\n size='small'\r\n label='To'\r\n error={!!props.validationResult?.hasError}\r\n helperText={props.validationResult?.message}\r\n InputLabelProps={{ shrink: true }}\r\n inputProps={{ min: props.fieldConfig?.minDate, max: props.fieldConfig?.maxDate }}\r\n />\r\n </DateRangeContainer>\r\n </FormContent>\r\n )\r\n}\r\n\r\nconst DateRangeContainer = styled(Box)({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '8px'\r\n})\r\n//#endregion\r\n\r\n//#region Styled\r\nconst WrapIcon = styled(Box)({\r\n display: 'inline-flex',\r\n flex: '0 0 auto',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n '&:not(.disabled-size)': {\r\n width: '40px',\r\n height: '40px'\r\n }\r\n})\r\n\r\nconst WrapList = styled('ul')({\r\n paddingLeft: '1.7rem',\r\n marginBottom: 0,\r\n li: {\r\n position: 'relative',\r\n textAlign: 'justify',\r\n '&::before': {\r\n content: '\"►\"',\r\n display: 'block',\r\n position: 'absolute',\r\n top: '50%',\r\n right: 'calc(100% + 6px)',\r\n transform: 'translateY(-50%)',\r\n fontSize: '0.9em'\r\n }\r\n }\r\n})\r\n//#endregion\r\n"],"names":["mapSortConfigs","asc","title","icon","_jsx","ArrowUpwardIcon","fontSize","desc","ArrowDownwardIcon","FilterLogicToggle","props","_jsxs","ToggleButtonGroupCustom","size","value","exclusive","onChange","event","newValue","children","ToggleButton","DateLogicToggle","DateRangeLogicToggle","styled","ToggleButtonGroup","color","borderColor","fontWeight","lineHeight","minWidth","padding","backgroundColor","HelpTooltipContent","WrapList","items","map","item","index","Typography","component","variant","FilterNotes","_props$title","_props$items","WrapIcon","className","disabledSize","HelpTooltip","small","renderContent","FilterInput","React","forwardRef","ref","InputBase","_objectSpread","fullWidth","autoComplete","inputRef","FilterInputAdornment","InputAdornment","position","keyword","_Fragment","HelpButton","onClick","onEnterSearch","sx","display","xs","md","Tooltip","placement","arrow","IconButton","KeyboardReturnIcon","marginLeft","onClear","CloseIcon","notes","Button","textTransform","b","colors","blue","borderRadius","ClearAllButton","_ref","_objectWithoutProperties","_excluded","ClearButtonStyled","startIcon","ClearAllIcon","FilterButton","flex","FilterListIcon","SortButton","mapDataViewContext","context","_filterState$sort","_configs$fields","_filterState$sort2","_filterState$sort3","_configs$sortButton","_configs$sortButton$i","_configs$sortButton2","_configs$sortButton3","filterState","configs","filterBarConfigs","config","sort","direction","fieldConfig","fields","field","text","label","toString","sortButton","SortButtonStyled","ShuffleIcon","endIcon","KeyboardArrowDownIcon","e","onPopperPanelChange","currentTarget","wrapProps","height","grey","border","PanelNotFound","_ref2","area","Box","textAlign","FormContent","_ref3","afterTopBar","FormContentWrapper","concat","overflow","alignItems","background","gap","common","white","MenuWithTypeString","_props$fieldConfig$la","_props$fieldConfig","_props$fieldConfig2","_props$validationResu","_props$validationResu2","name","TextField","autoFocus","error","validationResult","hasError","helperText","message","MenuWithTypeSelect","_props$fieldConfig$la2","_props$fieldConfig3","_props$fieldConfig4","_props$validationResu3","_props$fieldConfig5","CustomRadioGroup","options","x","i","_x$label","FormControlLabel","control","Radio","RadioGroup","marginRight","margin","MenuWithTypeSelectMulti","_props$fieldConfig$la3","_props$fieldConfig6","_props$fieldConfig7","_props$validationResu4","_props$fieldConfig8","_useState","useState","_useState2","_slicedToArray","filterLogic","setFilterLogic","_","type","CustomFormGroup","_x$label2","Checkbox","FormGroup","MenuWithTypeDate","_props$fieldConfig$la4","_props$fieldConfig9","_props$fieldConfig0","_props$validationResu5","_props$validationResu6","_props$fieldConfig1","_props$fieldConfig10","dateString","_useState3","_useState4","dateLogic","setDateLogic","_useState5","_useState6","setValue","hidden","readOnly","test","target","inputProps","min","minDate","max","maxDate","MenuWithTypeDateRange","_props$fieldConfig$la5","_props$fieldConfig11","_props$fieldConfig12","_props$validationResu7","_props$fieldConfig13","_props$fieldConfig14","_props$validationResu8","_props$validationResu9","_props$fieldConfig15","_props$fieldConfig16","_useState7","_useState8","dateRangeLogic","setDateRangeLogic","DateRangeContainer","marginBottom","InputLabelProps","shrink","flexDirection","justifyContent","width","paddingLeft","li","content","top","right","transform"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export{ELogic,EOperator,EOrder}from"./base/types.js";export{CancelAction,default as ServiceBase}from"./base/service-base.js";export{HttpService,createHttpService}from"./base/gateway.js";export{default as CRUDServiceBase}from"./base/crud-service-base.js";export{processError}from"./base/helpers.js";export{default as GraphqlRequest,createGraphqlRequest}from"./graphql/graphql-request.js";export{EAppName}from"./graphql/types.js";export{RequestParam,createRequestBuilder}from"./graphql/request-param.js";export{createKeyConverter,getKeyConverter}from"./graphql/key-converter.js";
1
+ export{CancelAction,default as ServiceBase}from"./base/service-base.js";export{HttpService,createHttpService}from"./base/gateway.js";export{default as CRUDServiceBase}from"./base/crud-service-base.js";export{processError}from"./base/helpers.js";export{default as GraphqlRequest,createGraphqlRequest}from"./graphql/graphql-request.js";export{EAppName}from"./graphql/types.js";export{RequestParam,createRequestBuilder}from"./graphql/request-param.js";export{createKeyConverter,getKeyConverter}from"./graphql/key-converter.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,2 @@
1
+ import{slicedToArray as e,objectSpread2 as r,toConsumableArray as n}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as t,jsx as i}from"react/jsx-runtime";import{useState as o,useEffect as a}from"react";var l=function(l){var s=l.style,c=o([]),d=e(c,2),f=d[0],m=d[1];return a((function(){var e=function(e){var r=e.detail,t=r.primaryHref,i=r.secondaryHref,o=r.internal,a=r.options;m((function(e){return[{primaryHref:t,secondaryHref:i,internal:o,options:a}].concat(n(e.slice(0,9)))}))};return globalThis.addEventListener("mfe:navigate",e),function(){return globalThis.removeEventListener("mfe:navigate",e)}}),[]),t("div",{style:r({position:"fixed",background:"rgba(0,0,0,0.8)",color:"#fff",padding:12,borderRadius:8,fontSize:12,zIndex:9999,maxWidth:320,maxHeight:240,overflowY:"auto",boxShadow:"0 2px 8px rgba(0,0,0,0.2)"},null!=s?s:{bottom:16,left:16}),children:[i("div",{style:{fontWeight:"bold",marginBottom:8},children:"MFE Navigate Debug"}),0===f.length?i("div",{style:{opacity:.7},children:"No navigation events"}):i("ul",{style:{margin:0,padding:0,listStyle:"none"},children:f.map((function(e,r){var n;return t("li",{style:{marginBottom:4},children:[i("span",{style:{color:"#90ee90"},children:e.primaryHref}),e.secondaryHref&&t("span",{style:{color:"#ffa500",marginLeft:8},children:["→ ",e.secondaryHref]}),e.internal&&i("span",{style:{color:"#87ceeb",marginLeft:8},children:"[internal]"}),(null===(n=e.options)||void 0===n?void 0:n.target)&&t("span",{style:{color:"#ffb6c1",marginLeft:8},children:["(",e.options.target,")"]})]},r)}))})]})};export{l as MfeNavigateDebugPanel};
2
+ //# sourceMappingURL=mfe-navigate.debug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mfe-navigate.debug.js","sources":["../../src/mfe-navigate/mfe-navigate.debug.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\r\nimport type { FC } from 'react'\r\nimport type { MfeNavigate } from './types'\r\n\r\nconst MAX_EVENTS = 10\r\n\r\nexport const MfeNavigateDebugPanel: FC<{ style?: React.CSSProperties }> = ({ style }) => {\r\n const [debugEvents, setDebugEvents] = useState<MfeNavigate[]>([])\r\n\r\n useEffect(() => {\r\n const handleNavigate = (e: CustomEvent) => {\r\n const { primaryHref, secondaryHref, internal, options } = e.detail as MfeNavigate\r\n setDebugEvents((events) => [{ primaryHref, secondaryHref, internal, options }, ...events.slice(0, MAX_EVENTS - 1)])\r\n }\r\n globalThis.addEventListener('mfe:navigate', handleNavigate as EventListener)\r\n return () => globalThis.removeEventListener('mfe:navigate', handleNavigate as EventListener)\r\n }, [])\r\n\r\n return (\r\n <div\r\n style={{\r\n position: 'fixed',\r\n background: 'rgba(0,0,0,0.8)',\r\n color: '#fff',\r\n padding: 12,\r\n borderRadius: 8,\r\n fontSize: 12,\r\n zIndex: 9999,\r\n maxWidth: 320,\r\n maxHeight: 240,\r\n overflowY: 'auto',\r\n boxShadow: '0 2px 8px rgba(0,0,0,0.2)',\r\n ...(style ?? { bottom: 16, left: 16 })\r\n }}\r\n >\r\n <div style={{ fontWeight: 'bold', marginBottom: 8 }}>MFE Navigate Debug</div>\r\n {debugEvents.length === 0 ? (\r\n <div style={{ opacity: 0.7 }}>No navigation events</div>\r\n ) : (\r\n <ul style={{ margin: 0, padding: 0, listStyle: 'none' }}>\r\n {debugEvents.map((ev, idx) => (\r\n <li key={idx} style={{ marginBottom: 4 }}>\r\n <span style={{ color: '#90ee90' }}>{ev.primaryHref}</span>\r\n {ev.secondaryHref && <span style={{ color: '#ffa500', marginLeft: 8 }}>→ {ev.secondaryHref}</span>}\r\n {ev.internal && <span style={{ color: '#87ceeb', marginLeft: 8 }}>[internal]</span>}\r\n {ev.options?.target && <span style={{ color: '#ffb6c1', marginLeft: 8 }}>({ev.options.target})</span>}\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </div>\r\n )\r\n}\r\n"],"names":["MfeNavigateDebugPanel","_ref","style","_useState","useState","_useState2","_slicedToArray","debugEvents","setDebugEvents","useEffect","handleNavigate","e","_e$detail","detail","primaryHref","secondaryHref","internal","options","events","concat","_toConsumableArray","slice","MAX_EVENTS","globalThis","addEventListener","removeEventListener","_jsxs","_objectSpread","position","background","color","padding","borderRadius","fontSize","zIndex","maxWidth","maxHeight","overflowY","boxShadow","bottom","left","children","_jsx","fontWeight","marginBottom","length","opacity","margin","listStyle","map","ev","idx","_ev$options","marginLeft","target"],"mappings":"qNAIA,IAEaA,EAA6D,SAAxCC,GAAsD,IAAXC,EAAKD,EAALC,MAC3EC,EAAsCC,EAAwB,IAAGC,EAAAC,EAAAH,EAAA,GAA1DI,EAAWF,EAAA,GAAEG,EAAcH,EAAA,GAWlC,OATAI,GAAU,WACR,IAAMC,EAAiB,SAACC,GACtB,IAAAC,EAA0DD,EAAEE,OAApDC,EAAWF,EAAXE,YAAaC,EAAaH,EAAbG,cAAeC,EAAQJ,EAARI,SAAUC,EAAOL,EAAPK,QAC9CT,GAAe,SAACU,GAAM,MAAM,CAAA,CAAEJ,YAAAA,EAAaC,cAAAA,EAAeC,SAAAA,EAAUC,QAAAA,IAASE,OAAAC,EAAKF,EAAOG,MAAM,EAAGC,IAAe,GAClH,EAED,OADAC,WAAWC,iBAAiB,eAAgBd,GACrC,WAAA,OAAMa,WAAWE,oBAAoB,eAAgBf,EAAgC,CAC7F,GAAE,IAGDgB,EACE,MAAA,CAAAxB,MAAKyB,EAAA,CACHC,SAAU,QACVC,WAAY,kBACZC,MAAO,OACPC,QAAS,GACTC,aAAc,EACdC,SAAU,GACVC,OAAQ,KACRC,SAAU,IACVC,UAAW,IACXC,UAAW,OACXC,UAAW,6BACPpC,QAAAA,EAAS,CAAEqC,OAAQ,GAAIC,KAAM,KAClCC,SAAA,CAEDC,SAAKxC,MAAO,CAAEyC,WAAY,OAAQC,aAAc,GAAGH,SAAA,uBAC3B,IAAvBlC,EAAYsC,OACXH,EAAK,MAAA,CAAAxC,MAAO,CAAE4C,QAAS,IAAiCL,SAAA,yBAExDC,EAAI,KAAA,CAAAxC,MAAO,CAAE6C,OAAQ,EAAGhB,QAAS,EAAGiB,UAAW,QAAQP,SACpDlC,EAAY0C,KAAI,SAACC,EAAIC,GAAG,IAAAC,EAAA,OACvB1B,EAAA,KAAA,CAAcxB,MAAO,CAAE0C,aAAc,GAAGH,SAAA,CACtCC,UAAMxC,MAAO,CAAE4B,MAAO,oBAAcoB,EAAGpC,cACtCoC,EAAGnC,eAAiBW,UAAMxB,MAAO,CAAE4B,MAAO,UAAWuB,WAAY,GAAQZ,SAAA,CAAA,KAAAS,EAAGnC,iBAC5EmC,EAAGlC,UAAY0B,EAAM,OAAA,CAAAxC,MAAO,CAAE4B,MAAO,UAAWuB,WAAY,GAAGZ,SAAA,gBACrD,QAAVW,EAAAF,EAAGjC,eAAO,IAAAmC,OAAA,EAAVA,EAAYE,SAAU5B,UAAMxB,MAAO,CAAE4B,MAAO,UAAWuB,WAAY,GAAOZ,SAAA,CAAA,IAAAS,EAAGjC,QAAQqC,OAAM,SAJrFH,EAMV,QAKX"}
@@ -0,0 +1,2 @@
1
+ import{objectWithoutProperties as e,objectSpread2 as r}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n}from"react/jsx-runtime";var t=["internal","primaryHref","secondaryHref","onClick"],a=function(){return{navigate:function(e){globalThis.dispatchEvent(new CustomEvent("mfe:navigate",{detail:e}))}}},i=function(i){var o=i.internal,f=i.primaryHref,l=i.secondaryHref,u=i.onClick,c=e(i,t),p=a().navigate;return n("a",r(r({},c),{},{href:f,onClick:function(e){if(u&&u(e),!e.defaultPrevented)return o&&l?(e.preventDefault(),void p({primaryHref:f,secondaryHref:l,internal:o})):void 0}}))};export{i as MfeLink,a as useMfeNavigate};
2
+ //# sourceMappingURL=mfe-navigate.remote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mfe-navigate.remote.js","sources":["../../src/mfe-navigate/mfe-navigate.remote.tsx"],"sourcesContent":["import type { AnchorHTMLAttributes, FC } from 'react'\r\nimport type { MfeNavigate } from './types'\r\n\r\nexport const useMfeNavigate = () => {\r\n const navigate = (params: MfeNavigate) => {\r\n globalThis.dispatchEvent(new CustomEvent('mfe:navigate', { detail: params }))\r\n }\r\n return { navigate }\r\n}\r\n\r\nexport interface IMfeLinkProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> {\r\n internal?: boolean\r\n primaryHref: string\r\n secondaryHref?: string\r\n}\r\n\r\nexport const MfeLink: FC<IMfeLinkProps> = (props) => {\r\n const { internal, primaryHref, secondaryHref, onClick, ...rest } = props\r\n const { navigate } = useMfeNavigate()\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\r\n if (onClick) onClick(e)\r\n if (e.defaultPrevented) return\r\n if (internal && secondaryHref) {\r\n e.preventDefault()\r\n navigate({ primaryHref, secondaryHref, internal })\r\n return\r\n }\r\n // If not internal or no secondaryHref, let the anchor tag handle it\r\n }\r\n\r\n return <a {...rest} href={primaryHref} onClick={handleClick} />\r\n}\r\n"],"names":["useMfeNavigate","navigate","params","globalThis","dispatchEvent","CustomEvent","detail","MfeLink","props","internal","primaryHref","secondaryHref","onClick","rest","_objectWithoutProperties","_excluded","_jsx","_objectSpread","href","e","defaultPrevented","preventDefault"],"mappings":"yMAGaA,EAAiB,WAI5B,MAAO,CAAEC,SAHQ,SAACC,GAChBC,WAAWC,cAAc,IAAIC,YAAY,eAAgB,CAAEC,OAAQJ,IACpE,EAEH,EAQaK,EAA6B,SAACC,GACzC,IAAQC,EAA2DD,EAA3DC,SAAUC,EAAiDF,EAAjDE,YAAaC,EAAoCH,EAApCG,cAAeC,EAAqBJ,EAArBI,QAAYC,EAAIC,EAAKN,EAAKO,GAChEd,EAAaD,IAAbC,SAaR,OAAOe,EAAA,IAAAC,EAAAA,KAAOJ,GAAI,GAAA,CAAEK,KAAMR,EAAaE,QAXnB,SAACO,GAEnB,GADIP,GAASA,EAAQO,IACjBA,EAAEC,iBACN,OAAIX,GAAYE,GACdQ,EAAEE,sBACFpB,EAAS,CAAES,YAAAA,EAAaC,cAAAA,EAAeF,SAAAA,UAFzC,CAMD,IAGH"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sources":["../../../src/mfe-navigate/nextjs/provider.tsx"],"sourcesContent":["import { FC } from 'react'\r\n\r\nexport const MfeNavigateNextProvider: FC = () => {\r\n return <>Next Provider</>\r\n}\r\n"],"names":["MfeNavigateNextProvider","_jsx"],"mappings":"0DAEaA,EAA8B,WACzC,OAAOC,+BACT"}
@@ -0,0 +1,2 @@
1
+ import{jsx as e,Fragment as r}from"react/jsx-runtime";import{useEffect as a}from"react";var n=function(){var n=function(){try{return require("react-router-dom").useNavigate()}catch(e){return console.warn("react-router-dom not available, using fallback"),function(){console.warn("Navigate function is not available. Please ensure react-router-dom is installed.")}}}();return a((function(){var e=function(e){var r=e.detail,a=r.primaryHref,t=r.secondaryHref,o=r.options;if(a){var i=t||a||"/";"_blank"!==(null==o?void 0:o.target)?n(i,o):globalThis.open("".concat(i),"_blank")}};return globalThis.addEventListener("mfe:navigate",e),function(){return globalThis.removeEventListener("mfe:navigate",e)}}),[n]),e(r,{})};export{n as MfeNavigateReactProvider};
2
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sources":["../../../src/mfe-navigate/react/provider.tsx"],"sourcesContent":["import { useEffect } from 'react'\r\nimport type { FC } from 'react'\r\nimport type { MfeNavigate } from '../types'\r\n\r\n// Define types to avoid direct imports\r\nexport type NavigateFunction = (path: string, options?: any) => void\r\n\r\n// Use hook-style functions that don't directly import from react-router-dom\r\nfunction useReactNavigate(): NavigateFunction {\r\n try {\r\n // @ts-ignore - Ignore TS errors during build time\r\n return require('react-router-dom').useNavigate()\r\n } catch (error) {\r\n console.warn('react-router-dom not available, using fallback')\r\n // Provide fallback implementation\r\n return () => {\r\n console.warn('Navigate function is not available. Please ensure react-router-dom is installed.')\r\n }\r\n }\r\n}\r\n\r\nexport const MfeNavigateReactProvider: FC = () => {\r\n const navigate = useReactNavigate()\r\n\r\n useEffect(() => {\r\n const handleNavigate = (e: CustomEvent) => {\r\n const { primaryHref, secondaryHref, options } = e.detail as MfeNavigate\r\n if (!primaryHref) return\r\n // Navigate to secondaryHref if available, otherwise fallback to primaryHref\r\n const url = secondaryHref || primaryHref || '/'\r\n if (options?.target === '_blank') {\r\n globalThis.open(`${url}`, '_blank')\r\n return\r\n }\r\n navigate(url, options)\r\n }\r\n globalThis.addEventListener('mfe:navigate', handleNavigate as EventListener)\r\n return () => globalThis.removeEventListener('mfe:navigate', handleNavigate as EventListener)\r\n }, [navigate])\r\n return <></>\r\n}\r\n"],"names":["MfeNavigateReactProvider","navigate","require","useNavigate","error","console","warn","useReactNavigate","useEffect","handleNavigate","e","_e$detail","detail","primaryHref","secondaryHref","options","url","target","globalThis","open","concat","addEventListener","removeEventListener","_jsx"],"mappings":"4FAqBaA,EAA+B,WAC1C,IAAMC,EAdR,WACE,IAEE,OAAOC,QAAQ,oBAAoBC,aACpC,CAAC,MAAOC,GAGP,OAFAC,QAAQC,KAAK,kDAEN,WACLD,QAAQC,KAAK,mFACd,CACF,CACH,CAGmBC,GAiBjB,OAfAC,GAAU,WACR,IAAMC,EAAiB,SAACC,GACtB,IAAAC,EAAgDD,EAAEE,OAA1CC,EAAWF,EAAXE,YAAaC,EAAaH,EAAbG,cAAeC,EAAOJ,EAAPI,QACpC,GAAKF,EAAL,CAEA,IAAMG,EAAMF,GAAiBD,GAAe,IACpB,YAApBE,aAAO,EAAPA,EAASE,QAIbhB,EAASe,EAAKD,GAHZG,WAAWC,KAAIC,GAAAA,OAAIJ,GAAO,SAJV,CAQnB,EAED,OADAE,WAAWG,iBAAiB,eAAgBZ,GACrC,WAAA,OAAMS,WAAWI,oBAAoB,eAAgBb,EAAgC,CAC9F,GAAG,CAACR,IACGsB,OACT"}
@@ -1,4 +1,3 @@
1
- export * from './types';
2
1
  export { default as ServiceBase } from './service-base';
3
2
  export * from './service-base';
4
3
  export * from './gateway';
@@ -0,0 +1,4 @@
1
+ import type { FC } from 'react';
2
+ export declare const MfeNavigateDebugPanel: FC<{
3
+ style?: React.CSSProperties;
4
+ }>;
@@ -1,10 +1,11 @@
1
- import { AnchorHTMLAttributes, FC } from 'react';
1
+ import type { AnchorHTMLAttributes, FC } from 'react';
2
2
  import type { MfeNavigate } from './types';
3
3
  export declare const useMfeNavigate: () => {
4
4
  navigate: (params: MfeNavigate) => void;
5
5
  };
6
6
  export interface IMfeLinkProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> {
7
- to?: string;
8
- isInternal?: boolean;
7
+ internal?: boolean;
8
+ primaryHref: string;
9
+ secondaryHref?: string;
9
10
  }
10
11
  export declare const MfeLink: FC<IMfeLinkProps>;
@@ -1,3 +1,3 @@
1
- import { FC } from 'react';
1
+ import type { FC } from 'react';
2
2
  export type NavigateFunction = (path: string, options?: any) => void;
3
3
  export declare const MfeNavigateReactProvider: FC;
@@ -0,0 +1,13 @@
1
+ export type AppSite = 'client' | 'home' | 'music';
2
+ export type IMfeNavigateHref = {
3
+ primaryHref: string;
4
+ secondaryHref?: string;
5
+ };
6
+ export interface MfeNavigate {
7
+ primaryHref: string;
8
+ secondaryHref?: string;
9
+ internal?: boolean;
10
+ site?: AppSite;
11
+ options?: any;
12
+ target?: '_self' | '_blank';
13
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dinocollab-core",
3
- "version": "2.0.1",
3
+ "version": "2.0.2",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -42,14 +42,14 @@
42
42
  "mfe-auth": [
43
43
  "./dist/types/mfe-auth/index.d.ts"
44
44
  ],
45
- "mfe-modules": [
46
- "./dist/types/mfe-modules/index.d.ts"
45
+ "mfe-navigate": [
46
+ "./dist/types/mfe-navigate/index.d.ts"
47
47
  ],
48
- "mfe-modules/react": [
49
- "./dist/types/mfe-modules/react/index.d.ts"
48
+ "mfe-navigate/react": [
49
+ "./dist/types/mfe-navigate/react/index.d.ts"
50
50
  ],
51
- "mfe-modules/nextjs": [
52
- "./dist/types/mfe-modules/nextjs/index.d.ts"
51
+ "mfe-navigate/nextjs": [
52
+ "./dist/types/mfe-navigate/nextjs/index.d.ts"
53
53
  ],
54
54
  "redux": [
55
55
  "./dist/types/redux/index.d.ts"
@@ -98,17 +98,17 @@
98
98
  "import": "./dist/mfe-auth/index.js",
99
99
  "types": "./dist/types/mfe-auth/index.d.ts"
100
100
  },
101
- "./mfe-modules": {
102
- "import": "./dist/mfe-modules/index.js",
103
- "types": "./dist/types/mfe-modules/index.d.ts"
101
+ "./mfe-navigate": {
102
+ "import": "./dist/mfe-navigate/index.js",
103
+ "types": "./dist/types/mfe-navigate/index.d.ts"
104
104
  },
105
- "./mfe-modules/react": {
106
- "import": "./dist/mfe-modules/react/index.js",
107
- "types": "./dist/types/mfe-modules/react/index.d.ts"
105
+ "./mfe-navigate/react": {
106
+ "import": "./dist/mfe-navigate/react/index.js",
107
+ "types": "./dist/types/mfe-navigate/react/index.d.ts"
108
108
  },
109
- "./mfe-modules/nextjs": {
110
- "import": "./dist/mfe-modules/nextjs/index.js",
111
- "types": "./dist/types/mfe-modules/nextjs/index.d.ts"
109
+ "./mfe-navigate/nextjs": {
110
+ "import": "./dist/mfe-navigate/nextjs/index.js",
111
+ "types": "./dist/types/mfe-navigate/nextjs/index.d.ts"
112
112
  },
113
113
  "./utils": {
114
114
  "import": "./dist/utils/index.js",
@@ -1,2 +0,0 @@
1
- var n,a,e;!function(n){n[n.And=0]="And",n[n.Or=1]="Or"}(n||(n={})),function(n){n[n.GreaterThan=0]="GreaterThan",n[n.LessThan=1]="LessThan",n[n.GreaterThanOrEqual=2]="GreaterThanOrEqual",n[n.LessThanOrEqual=3]="LessThanOrEqual",n[n.NotEqual=4]="NotEqual",n[n.Equal=5]="Equal",n[n.Contains=6]="Contains"}(a||(a={})),function(n){n[n.Ascending=0]="Ascending",n[n.Descending=1]="Descending"}(e||(e={}));export{n as ELogic,a as EOperator,e as EOrder};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sources":["../../../src/http-service/base/types.ts"],"sourcesContent":["export enum ELogic {\r\n And,\r\n Or\r\n}\r\n\r\nexport enum EOperator {\r\n GreaterThan,\r\n LessThan,\r\n GreaterThanOrEqual,\r\n LessThanOrEqual,\r\n NotEqual,\r\n Equal,\r\n Contains\r\n}\r\n\r\nexport enum EOrder {\r\n Ascending,\r\n Descending\r\n}\r\n\r\ninterface IFilterField<T> {\r\n Logic?: ELogic\r\n Operator?: EOperator\r\n FieldName: keyof T\r\n Value: string\r\n}\r\n\r\ninterface IFilterScope<T> {\r\n Logic?: ELogic\r\n Scopes: IPropFilter<T>[]\r\n}\r\n\r\nexport type IPropFilter<T> = IFilterField<T> | IFilterScope<T>\r\n\r\nexport interface IPropOrderBy<T> {\r\n Type: EOrder\r\n FieldName: keyof T\r\n}\r\n\r\nexport interface IFilterModelSwagger<T> {\r\n Page?: number\r\n Amount?: number\r\n PropFilters?: IPropFilter<T>[]\r\n PropOrders?: IPropOrderBy<T>[]\r\n}\r\n\r\nexport interface IReponseAll<T> {\r\n Data?: T[]\r\n Total?: number\r\n Page?: number\r\n Amount?: number\r\n}\r\n"],"names":["ELogic","EOperator","EOrder"],"mappings":"IAAYA,EAKAC,EAUAC,GAfZ,SAAYF,GACVA,EAAAA,EAAA,IAAA,GAAA,MACAA,EAAAA,EAAA,GAAA,GAAA,IACD,CAHD,CAAYA,IAAAA,EAGX,CAAA,IAED,SAAYC,GACVA,EAAAA,EAAA,YAAA,GAAA,cACAA,EAAAA,EAAA,SAAA,GAAA,WACAA,EAAAA,EAAA,mBAAA,GAAA,qBACAA,EAAAA,EAAA,gBAAA,GAAA,kBACAA,EAAAA,EAAA,SAAA,GAAA,WACAA,EAAAA,EAAA,MAAA,GAAA,QACAA,EAAAA,EAAA,SAAA,GAAA,UACD,CARD,CAAYA,IAAAA,EAQX,CAAA,IAED,SAAYC,GACVA,EAAAA,EAAA,UAAA,GAAA,YACAA,EAAAA,EAAA,WAAA,GAAA,YACD,CAHD,CAAYA,IAAAA,EAGX,CAAA"}
@@ -1,2 +0,0 @@
1
- import{slicedToArray as t,toConsumableArray as e}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as o,jsx as n}from"react/jsx-runtime";import{useState as i,useEffect as r}from"react";var a=function(){var a=i([]),l=t(a,2),s=l[0],d=l[1];return r((function(){var t=function(t){var o=t.detail,n=o.to,i=o.options;d((function(t){return[{to:n,options:i}].concat(e(t.slice(0,9)))}))};return globalThis.addEventListener("mfe:navigate",t),function(){return globalThis.removeEventListener("mfe:navigate",t)}}),[]),o("div",{style:{position:"fixed",bottom:16,left:16,background:"rgba(0,0,0,0.8)",color:"#fff",padding:12,borderRadius:8,fontSize:12,zIndex:9999,maxWidth:320,maxHeight:240,overflowY:"auto",boxShadow:"0 2px 8px rgba(0,0,0,0.2)"},children:[n("div",{style:{fontWeight:"bold",marginBottom:8},children:"MFE Navigate Debug"}),0===s.length?n("div",{style:{opacity:.7},children:"No navigation events"}):n("ul",{style:{margin:0,padding:0,listStyle:"none"},children:s.map((function(t,e){var i;return o("li",{style:{marginBottom:4},children:[n("span",{style:{color:"#90ee90"},children:t.to}),(null===(i=t.options)||void 0===i?void 0:i.target)&&o("span",{style:{color:"#87ceeb",marginLeft:8},children:["(",t.options.target,")"]})]},e)}))})]})};export{a as MfeNavigateDebugPanel};
2
- //# sourceMappingURL=mfe-navigate.debug.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mfe-navigate.debug.js","sources":["../../src/mfe-modules/mfe-navigate.debug.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\r\nimport type { MfeNavigate } from './types'\r\n\r\nconst MAX_EVENTS = 10\r\n\r\nexport const MfeNavigateDebugPanel: React.FC = () => {\r\n const [debugEvents, setDebugEvents] = useState<MfeNavigate[]>([])\r\n\r\n useEffect(() => {\r\n const handleNavigate = (e: CustomEvent) => {\r\n const { to, options } = e.detail as MfeNavigate\r\n setDebugEvents((events) => [{ to, options }, ...events.slice(0, MAX_EVENTS - 1)])\r\n }\r\n globalThis.addEventListener('mfe:navigate', handleNavigate as EventListener)\r\n return () => globalThis.removeEventListener('mfe:navigate', handleNavigate as EventListener)\r\n }, [])\r\n\r\n return (\r\n <div\r\n style={{\r\n position: 'fixed',\r\n bottom: 16,\r\n left: 16,\r\n background: 'rgba(0,0,0,0.8)',\r\n color: '#fff',\r\n padding: 12,\r\n borderRadius: 8,\r\n fontSize: 12,\r\n zIndex: 9999,\r\n maxWidth: 320,\r\n maxHeight: 240,\r\n overflowY: 'auto',\r\n boxShadow: '0 2px 8px rgba(0,0,0,0.2)'\r\n }}\r\n >\r\n <div style={{ fontWeight: 'bold', marginBottom: 8 }}>MFE Navigate Debug</div>\r\n {debugEvents.length === 0 ? (\r\n <div style={{ opacity: 0.7 }}>No navigation events</div>\r\n ) : (\r\n <ul style={{ margin: 0, padding: 0, listStyle: 'none' }}>\r\n {debugEvents.map((ev, idx) => (\r\n <li key={idx} style={{ marginBottom: 4 }}>\r\n <span style={{ color: '#90ee90' }}>{ev.to}</span>\r\n {ev.options?.target && <span style={{ color: '#87ceeb', marginLeft: 8 }}>({ev.options.target})</span>}\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </div>\r\n )\r\n}\r\n"],"names":["MfeNavigateDebugPanel","_useState","useState","_useState2","_slicedToArray","debugEvents","setDebugEvents","useEffect","handleNavigate","e","_e$detail","detail","to","options","events","concat","_toConsumableArray","slice","MAX_EVENTS","globalThis","addEventListener","removeEventListener","_jsxs","style","position","bottom","left","background","color","padding","borderRadius","fontSize","zIndex","maxWidth","maxHeight","overflowY","boxShadow","children","_jsx","fontWeight","marginBottom","length","opacity","margin","listStyle","map","ev","idx","_ev$options","target","marginLeft"],"mappings":"kMAGA,IAEaA,EAAkC,WAC7C,IAAAC,EAAsCC,EAAwB,IAAGC,EAAAC,EAAAH,EAAA,GAA1DI,EAAWF,EAAA,GAAEG,EAAcH,EAAA,GAWlC,OATAI,GAAU,WACR,IAAMC,EAAiB,SAACC,GACtB,IAAAC,EAAwBD,EAAEE,OAAlBC,EAAEF,EAAFE,GAAIC,EAAOH,EAAPG,QACZP,GAAe,SAACQ,GAAM,MAAM,CAAA,CAAEF,GAAAA,EAAIC,QAAAA,IAASE,OAAAC,EAAKF,EAAOG,MAAM,EAAGC,IAAe,GAChF,EAED,OADAC,WAAWC,iBAAiB,eAAgBZ,GACrC,WAAA,OAAMW,WAAWE,oBAAoB,eAAgBb,EAAgC,CAC7F,GAAE,IAGDc,EACE,MAAA,CAAAC,MAAO,CACLC,SAAU,QACVC,OAAQ,GACRC,KAAM,GACNC,WAAY,kBACZC,MAAO,OACPC,QAAS,GACTC,aAAc,EACdC,SAAU,GACVC,OAAQ,KACRC,SAAU,IACVC,UAAW,IACXC,UAAW,OACXC,UAAW,6BAGbC,SAAA,CAAAC,EAAA,MAAA,CAAKf,MAAO,CAAEgB,WAAY,OAAQC,aAAc,GAAGH,SAAA,uBAC3B,IAAvBhC,EAAYoC,OACXH,EAAK,MAAA,CAAAf,MAAO,CAAEmB,QAAS,IAAiCL,SAAA,yBAExDC,EAAI,KAAA,CAAAf,MAAO,CAAEoB,OAAQ,EAAGd,QAAS,EAAGe,UAAW,QAC5CP,SAAAhC,EAAYwC,KAAI,SAACC,EAAIC,GAAG,IAAAC,EAAA,OACvB1B,EAAA,KAAA,CAAcC,MAAO,CAAEiB,aAAc,GAAGH,SAAA,CACtCC,EAAM,OAAA,CAAAf,MAAO,CAAEK,MAAO,WAAcS,SAAAS,EAAGlC,MAC5B,QAAVoC,EAAAF,EAAGjC,eAAO,IAAAmC,OAAA,EAAVA,EAAYC,SAAU3B,EAAM,OAAA,CAAAC,MAAO,CAAEK,MAAO,UAAWsB,WAAY,GAAOb,SAAA,CAAA,IAAAS,EAAGjC,QAAQoC,OAAe,SAF9FF,EAIV,QAKX"}
@@ -1,2 +0,0 @@
1
- import{objectWithoutProperties as t,objectSpread2 as e}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n}from"react/jsx-runtime";var r=["to","isInternal"],a=function(){return{navigate:function(t){globalThis.dispatchEvent(new CustomEvent("mfe:navigate",{detail:t}))}}},i=function(i){var o=i.to,l=i.isInternal,u=t(i,r),s=a().navigate;return n("a",e(e({},u),{},{href:o,onClick:function(t){o&&l&&(t.preventDefault(),s({to:o}))}}))};export{i as MfeLink,a as useMfeNavigate};
2
- //# sourceMappingURL=mfe-navigate.remote.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mfe-navigate.remote.js","sources":["../../src/mfe-modules/mfe-navigate.remote.tsx"],"sourcesContent":["import React, { AnchorHTMLAttributes, FC } from 'react'\r\nimport type { MfeNavigate } from './types'\r\n\r\nexport const useMfeNavigate = () => {\r\n const navigate = (params: MfeNavigate) => {\r\n globalThis.dispatchEvent(new CustomEvent('mfe:navigate', { detail: params }))\r\n }\r\n return { navigate }\r\n}\r\n\r\nexport interface IMfeLinkProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> {\r\n to?: string\r\n isInternal?: boolean\r\n}\r\n\r\nexport const MfeLink: FC<IMfeLinkProps> = (props) => {\r\n const { to, isInternal, ...rest } = props\r\n const { navigate } = useMfeNavigate()\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\r\n if (to && isInternal) {\r\n e.preventDefault()\r\n navigate({ to })\r\n }\r\n }\r\n\r\n return <a {...rest} href={to} onClick={handleClick} />\r\n}\r\n"],"names":["useMfeNavigate","navigate","params","globalThis","dispatchEvent","CustomEvent","detail","MfeLink","props","to","isInternal","rest","_objectWithoutProperties","_excluded","_jsx","_objectSpread","href","onClick","e","preventDefault"],"mappings":"wKAGaA,EAAiB,WAI5B,MAAO,CAAEC,SAHQ,SAACC,GAChBC,WAAWC,cAAc,IAAIC,YAAY,eAAgB,CAAEC,OAAQJ,IACpE,EAEH,EAOaK,EAA6B,SAACC,GACzC,IAAQC,EAA4BD,EAA5BC,GAAIC,EAAwBF,EAAxBE,WAAeC,EAAIC,EAAKJ,EAAKK,GACjCZ,EAAaD,IAAbC,SASR,OAAOa,EAAA,IAAAC,EAAAA,KAAOJ,GAAI,GAAA,CAAEK,KAAMP,EAAIQ,QAPV,SAACC,GACfT,GAAMC,IACRQ,EAAEC,iBACFlB,EAAS,CAAEQ,GAAAA,IAEd,IAGH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider.js","sources":["../../../src/mfe-modules/nextjs/provider.tsx"],"sourcesContent":["import { FC } from 'react'\r\n\r\nexport const MfeNavigateNextProvider: FC = () => {\r\n return <>Next Provider</>\r\n}\r\n"],"names":["MfeNavigateNextProvider","_jsx"],"mappings":"0DAEaA,EAA8B,WACzC,OAAOC,+BACT"}
@@ -1,2 +0,0 @@
1
- import{jsx as e,Fragment as t}from"react/jsx-runtime";import{useEffect as n}from"react";var r=function(){var r=function(){try{return require("react-router-dom").useNavigate()}catch(e){return console.warn("react-router-dom not available, using fallback"),function(){console.warn("Navigate function is not available. Please ensure react-router-dom is installed.")}}}();return n((function(){var e=function(e){var t=e.detail,n=t.to,a=t.options;n&&("_blank"!==(null==a?void 0:a.target)?r(n,a):globalThis.open("".concat(n),"_blank"))};return globalThis.addEventListener("mfe:navigate",e),function(){return globalThis.removeEventListener("mfe:navigate",e)}}),[r]),e(t,{})};export{r as MfeNavigateReactProvider};
2
- //# sourceMappingURL=provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider.js","sources":["../../../src/mfe-modules/react/provider.tsx"],"sourcesContent":["import React, { FC, useEffect } from 'react'\r\nimport { MfeNavigate } from '../types'\r\n\r\n// Define types to avoid direct imports\r\nexport type NavigateFunction = (path: string, options?: any) => void\r\n\r\n// Use hook-style functions that don't directly import from react-router-dom\r\nfunction useReactNavigate(): NavigateFunction {\r\n try {\r\n // @ts-ignore - Ignore TS errors during build time\r\n return require('react-router-dom').useNavigate()\r\n } catch (error) {\r\n console.warn('react-router-dom not available, using fallback')\r\n // Provide fallback implementation\r\n return () => {\r\n console.warn('Navigate function is not available. Please ensure react-router-dom is installed.')\r\n }\r\n }\r\n}\r\n\r\nexport const MfeNavigateReactProvider: FC = () => {\r\n const navigate = useReactNavigate()\r\n\r\n useEffect(() => {\r\n const handleNavigate = (e: CustomEvent) => {\r\n const { to, options } = e.detail as MfeNavigate\r\n if (!to) return\r\n if (options?.target === '_blank') {\r\n globalThis.open(`${to}`, '_blank')\r\n return\r\n }\r\n navigate(to, options)\r\n }\r\n globalThis.addEventListener('mfe:navigate', handleNavigate as EventListener)\r\n return () => globalThis.removeEventListener('mfe:navigate', handleNavigate as EventListener)\r\n }, [navigate])\r\n return <></>\r\n}\r\n"],"names":["MfeNavigateReactProvider","navigate","require","useNavigate","error","console","warn","useReactNavigate","useEffect","handleNavigate","e","_e$detail","detail","to","options","target","globalThis","open","concat","addEventListener","removeEventListener","_jsx"],"mappings":"4FAoBaA,EAA+B,WAC1C,IAAMC,EAdR,WACE,IAEE,OAAOC,QAAQ,oBAAoBC,aACpC,CAAC,MAAOC,GAGP,OAFAC,QAAQC,KAAK,kDAEN,WACLD,QAAQC,KAAK,mFACd,CACF,CACH,CAGmBC,GAejB,OAbAC,GAAU,WACR,IAAMC,EAAiB,SAACC,GACtB,IAAAC,EAAwBD,EAAEE,OAAlBC,EAAEF,EAAFE,GAAIC,EAAOH,EAAPG,QACPD,IACmB,YAApBC,aAAO,EAAPA,EAASC,QAIbd,EAASY,EAAIC,GAHXE,WAAWC,KAAIC,GAAAA,OAAIL,GAAM,UAI5B,EAED,OADAG,WAAWG,iBAAiB,eAAgBV,GACrC,WAAA,OAAMO,WAAWI,oBAAoB,eAAgBX,EAAgC,CAC9F,GAAG,CAACR,IACGoB,OACT"}
@@ -1,2 +0,0 @@
1
- import React from 'react';
2
- export declare const MfeNavigateDebugPanel: React.FC;
@@ -1,7 +0,0 @@
1
- import type { NavigateOptions } from 'react-router-dom';
2
- export interface MfeNavigate {
3
- to: string;
4
- options?: NavigateOptions & {
5
- target?: '_self' | '_blank';
6
- };
7
- }
File without changes
File without changes