dinocollab-core 1.0.14 → 1.0.16
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/form/create.form-grid-layout.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/table-grid/item-actions.js +1 -1
- package/dist/table-grid/item-actions.js.map +1 -1
- package/dist/types/table-grid/index.d.ts +1 -0
- package/dist/types/table-grid/item-actions.d.ts +13 -10
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.form-grid-layout.js","sources":["../../src/form/create.form-grid-layout.tsx"],"sourcesContent":["import React, { Component, ComponentType, Fragment } from 'react'\r\nimport { BoxProps, Grid, RegularBreakpoints, SxProps, Theme } from '@mui/material'\r\nimport { IFormBase, IFormInputBase } from './types'\r\nimport { mapGlobalModalContext } from '../api-context'\r\nimport { ContentWrap, CreateFormBottomBar } from './create.form-grid-layout.units'\r\nimport FormValidator from './validator'\r\nimport CreateInput from './create.input'\r\nimport CreateFormBase from './create.form-base'\r\n\r\nexport interface IFormGridLayoutConfig<T> {\r\n key: keyof T\r\n label?: string\r\n placeholder?: string\r\n reponsives?: RegularBreakpoints\r\n defaultValue?: any\r\n inputElement?: React.ComponentType<IFormInputBase<T>>\r\n}\r\n\r\nexport type SubmitMappingEvent<T> = (value: Partial<T>, oldValue?: T) => Partial<T>\r\n\r\nexport interface IFormGridLayoutSlots<T> {\r\n action?: React.ComponentType<IFormBase<T>>\r\n actionBefore?: JSX.Element\r\n contentBefore?: JSX.Element\r\n contentAfter?: JSX.Element\r\n inputVisibility?: Partial<Record<keyof T, boolean>>\r\n inputDisabled?: Partial<Record<keyof T, boolean>>\r\n closeState?: { Success?: boolean; Fail?: boolean }\r\n contentProps?: BoxProps\r\n submitMapping?: SubmitMappingEvent<T>\r\n}\r\n\r\nexport interface IFormGridLayoutParams<T> extends IFormGridLayoutSlots<T> {\r\n configs: IFormGridLayoutConfig<T>[]\r\n validate: FormValidator<Partial<T>>\r\n}\r\n\r\nexport interface IFormGridLayoutProps<T> {\r\n data?: T\r\n onSubmit: (value: Partial<T>, signal?: AbortSignal) => Promise<void>\r\n onError?: (error: any) => void\r\n onClose?: () => void\r\n sx?: SxProps<Theme>\r\n slots?: IFormGridLayoutSlots<T>\r\n}\r\n\r\nexport interface IFormGridLayoutState {\r\n loadding?: boolean\r\n}\r\n\r\nconst CreateFormGridLayout = function <T>(params: IFormGridLayoutParams<T>): ComponentType<IFormGridLayoutProps<T>> {\r\n const FormBaseInstance = CreateFormBase<T>()\r\n const BottomBarInstance = CreateFormBottomBar<T>()\r\n const InputBaseInstance = CreateInput<T>({ maxLength: 250 })\r\n\r\n class FormGridLayout extends Component<IFormGridLayoutProps<T>, IFormGridLayoutState> {\r\n private abortController?: AbortController\r\n constructor(props: IFormGridLayoutProps<T>) {\r\n super(props)\r\n this.state = { loadding: false }\r\n }\r\n\r\n get configMerged() {\r\n return {\r\n inputVisibility: this.props.slots?.inputVisibility ?? params.inputVisibility,\r\n inputDisabled: this.props.slots?.inputDisabled ?? params.inputDisabled\r\n }\r\n }\r\n\r\n render() {\r\n const BottomBar = params?.action ?? this.props.slots?.action ?? BottomBarInstance\r\n return mapGlobalModalContext(({ close }) => (\r\n <FormBaseInstance.Form validate={params.validate} onSubmit={(v) => this.onSubmit(v, close)} sx={this.getSxProps()}>\r\n {this.renderContent()}\r\n {FormBaseInstance.contextMapping((context) => (\r\n <BottomBar data={this.props.data} onBlur={context.onBlur} messageErrors={context.messageErrors} before={this.props.slots?.actionBefore} />\r\n ))}\r\n </FormBaseInstance.Form>\r\n ))\r\n }\r\n\r\n renderContent = () => {\r\n const { slots } = this.props\r\n return (\r\n <ContentWrap {...this.props?.slots?.contentProps}>\r\n {slots?.contentBefore && slots?.contentBefore}\r\n {params?.contentBefore}\r\n <Grid container spacing={2}>\r\n {params.configs.map((config, index) => {\r\n const visibility: boolean | undefined = this.configMerged.inputVisibility?.[config.key] ? true : undefined\r\n if (visibility) return <Fragment key={config.key.toString() + index} />\r\n return (\r\n <Fragment key={config.key.toString() + index}>\r\n <Grid item xs={12} {...config.reponsives}>\r\n {this.renderFormFieldElement(config)}\r\n </Grid>\r\n </Fragment>\r\n )\r\n })}\r\n </Grid>\r\n {params?.contentAfter}\r\n {slots?.contentAfter && slots?.contentAfter}\r\n </ContentWrap>\r\n )\r\n }\r\n\r\n renderFormFieldElement = (config: IFormGridLayoutConfig<T>) => {\r\n const { slots, ...otherProps } = this.props\r\n const ElementComponent = config.inputElement ?? InputBaseInstance\r\n const dValue = otherProps.data?.[config.key] ?? config?.defaultValue\r\n const disabled: boolean | undefined = this.configMerged.inputDisabled?.[config.key] ? true : undefined\r\n return FormBaseInstance.contextMapping((context) => (\r\n <ElementComponent\r\n data={this.props.data}\r\n onBlur={context.onBlur}\r\n messageErrors={context.messageErrors}\r\n name={config.key}\r\n label={config.label}\r\n placeholder={config.placeholder}\r\n disabled={disabled}\r\n defaultValue={dValue}\r\n />\r\n ))\r\n }\r\n\r\n loading = () => this.setState({ loadding: true })\r\n\r\n unloading = () => this.setState({ loadding: false })\r\n\r\n componentWillUnmount(): void {\r\n this.abortController?.abort()\r\n }\r\n\r\n onSubmit = async (value: Partial<T>, close?: () => void) => {\r\n const { slots } = this.props\r\n const mapping = this.props.slots?.submitMapping ?? params.submitMapping ?? this.submitMapping\r\n const data = mapping(value, this.props.data)\r\n try {\r\n this.loading()\r\n this.abortController?.abort()\r\n this.abortController = new AbortController()\r\n await this.props.onSubmit(data, this.abortController.signal)\r\n if (!slots?.closeState || slots.closeState.Success !== false) {\r\n close && close()\r\n this.props.onClose && this.props.onClose()\r\n }\r\n } catch (error) {\r\n if (slots?.closeState && slots.closeState.Fail === true) {\r\n close && close()\r\n this.props.onClose && this.props.onClose()\r\n }\r\n if (this.props.onError) this.props.onError(error)\r\n } finally {\r\n this.unloading()\r\n }\r\n }\r\n\r\n submitMapping: SubmitMappingEvent<T> = (value) => value\r\n\r\n getSxProps = (): SxProps<Theme> => {\r\n const isLoading = this.state.loadding\r\n return { ...this.props.sx, opacity: isLoading ? 0.7 : 1, pointerEvents: isLoading ? 'none' : 'auto' }\r\n }\r\n }\r\n return FormGridLayout\r\n}\r\n\r\nexport default CreateFormGridLayout\r\n"],"names":["CreateFormGridLayout","params","FormBaseInstance","CreateFormBase","BottomBarInstance","CreateFormBottomBar","InputBaseInstance","CreateInput","maxLength","FormGridLayout","props","_this","_classCallCheck","_callSuper","_defineProperty","_this$props","slots","_jsxs","ContentWrap","_objectSpread","contentProps","children","contentBefore","_jsx","Grid","container","spacing","configs","map","config","index","_this$configMerged$in","visibility","configMerged","inputVisibility","key","undefined","Fragment","item","xs","reponsives","renderFormFieldElement","toString","contentAfter","_config$inputElement","_otherProps$data$conf","_otherProps$data","_this$configMerged$in2","_this$props2","otherProps","_objectWithoutProperties","_excluded","ElementComponent","inputElement","dValue","data","defaultValue","disabled","inputDisabled","contextMapping","context","onBlur","messageErrors","name","label","placeholder","setState","loadding","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","value","close","_ref2","_this$props$slots$sub","_this$props$slots","mapping","_this$abortController","wrap","_context","prev","next","submitMapping","loading","abortController","abort","AbortController","onSubmit","signal","closeState","Success","onClose","t0","Fail","onError","unloading","finish","stop","_x","_x2","apply","this","arguments","isLoading","state","sx","opacity","pointerEvents","_inherits","Component","_createClass","get","_this$props$slots$inp","_this$props$slots2","_this$props$slots$inp2","_this$props$slots3","_ref3","_params$action","_this$props$slots4","_this2","BottomBar","action","mapGlobalModalContext","_ref4","Form","validate","v","getSxProps","renderContent","_this2$props$slots","before","actionBefore","_this$abortController2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create.form-grid-layout.js","sources":["../../src/form/create.form-grid-layout.tsx"],"sourcesContent":["import React, { Component, ComponentType, Fragment } from 'react'\r\nimport { BoxProps, Grid, RegularBreakpoints, SxProps, Theme } from '@mui/material'\r\nimport { IFormBase, IFormInputBase } from './types'\r\nimport { mapGlobalModalContext } from '../api-context'\r\nimport { ContentWrap, CreateFormBottomBar } from './create.form-grid-layout.units'\r\nimport FormValidator from './validator'\r\nimport CreateInput from './create.input'\r\nimport CreateFormBase from './create.form-base'\r\n\r\nexport interface IFormGridLayoutConfig<T> {\r\n key: keyof T\r\n label?: string\r\n placeholder?: string\r\n reponsives?: RegularBreakpoints\r\n defaultValue?: any\r\n inputElement?: React.ComponentType<IFormInputBase<T>>\r\n}\r\n\r\nexport type SubmitMappingEvent<T> = (value: Partial<T>, oldValue?: T) => Partial<T>\r\n\r\nexport interface IFormGridLayoutSlots<T> {\r\n action?: React.ComponentType<IFormBase<T>>\r\n actionBefore?: JSX.Element\r\n contentBefore?: JSX.Element\r\n contentAfter?: JSX.Element\r\n inputVisibility?: Partial<Record<keyof T, boolean>>\r\n // inputVisibilityGetter?: (value: Partial<T>) => Partial<Record<keyof T, boolean>>\r\n inputDisabled?: Partial<Record<keyof T, boolean>>\r\n closeState?: { Success?: boolean; Fail?: boolean }\r\n contentProps?: BoxProps\r\n submitMapping?: SubmitMappingEvent<T>\r\n}\r\n\r\nexport interface IFormGridLayoutParams<T> extends IFormGridLayoutSlots<T> {\r\n configs: IFormGridLayoutConfig<T>[]\r\n validate: FormValidator<Partial<T>>\r\n}\r\n\r\nexport interface IFormGridLayoutProps<T> {\r\n data?: T\r\n onSubmit: (value: Partial<T>, signal?: AbortSignal) => Promise<void>\r\n onError?: (error: any) => void\r\n onClose?: () => void\r\n sx?: SxProps<Theme>\r\n slots?: IFormGridLayoutSlots<T>\r\n}\r\n\r\nexport interface IFormGridLayoutState {\r\n loadding?: boolean\r\n}\r\n\r\nconst CreateFormGridLayout = function <T>(params: IFormGridLayoutParams<T>): ComponentType<IFormGridLayoutProps<T>> {\r\n const FormBaseInstance = CreateFormBase<T>()\r\n const BottomBarInstance = CreateFormBottomBar<T>()\r\n const InputBaseInstance = CreateInput<T>({ maxLength: 250 })\r\n\r\n class FormGridLayout extends Component<IFormGridLayoutProps<T>, IFormGridLayoutState> {\r\n private abortController?: AbortController\r\n constructor(props: IFormGridLayoutProps<T>) {\r\n super(props)\r\n this.state = { loadding: false }\r\n }\r\n\r\n get configMerged() {\r\n return {\r\n inputVisibility: this.props.slots?.inputVisibility ?? params.inputVisibility,\r\n inputDisabled: this.props.slots?.inputDisabled ?? params.inputDisabled\r\n }\r\n }\r\n\r\n render() {\r\n const BottomBar = params?.action ?? this.props.slots?.action ?? BottomBarInstance\r\n return mapGlobalModalContext(({ close }) => (\r\n <FormBaseInstance.Form validate={params.validate} onSubmit={(v) => this.onSubmit(v, close)} sx={this.getSxProps()}>\r\n {this.renderContent()}\r\n {FormBaseInstance.contextMapping((context) => (\r\n <BottomBar data={this.props.data} onBlur={context.onBlur} messageErrors={context.messageErrors} before={this.props.slots?.actionBefore} />\r\n ))}\r\n </FormBaseInstance.Form>\r\n ))\r\n }\r\n\r\n renderContent = () => {\r\n const { slots } = this.props\r\n return (\r\n <ContentWrap {...this.props?.slots?.contentProps}>\r\n {slots?.contentBefore && slots?.contentBefore}\r\n {params?.contentBefore}\r\n <Grid container spacing={2}>\r\n {params.configs.map((config, index) => {\r\n const visibility: boolean | undefined = this.configMerged.inputVisibility?.[config.key] ? true : undefined\r\n if (visibility) return <Fragment key={config.key.toString() + index} />\r\n return (\r\n <Fragment key={config.key.toString() + index}>\r\n <Grid item xs={12} {...config.reponsives}>\r\n {this.renderFormFieldElement(config)}\r\n </Grid>\r\n </Fragment>\r\n )\r\n })}\r\n </Grid>\r\n {params?.contentAfter}\r\n {slots?.contentAfter && slots?.contentAfter}\r\n </ContentWrap>\r\n )\r\n }\r\n\r\n renderFormFieldElement = (config: IFormGridLayoutConfig<T>) => {\r\n const { slots, ...otherProps } = this.props\r\n const ElementComponent = config.inputElement ?? InputBaseInstance\r\n const dValue = otherProps.data?.[config.key] ?? config?.defaultValue\r\n const disabled: boolean | undefined = this.configMerged.inputDisabled?.[config.key] ? true : undefined\r\n return FormBaseInstance.contextMapping((context) => (\r\n <ElementComponent\r\n data={this.props.data}\r\n onBlur={context.onBlur}\r\n messageErrors={context.messageErrors}\r\n name={config.key}\r\n label={config.label}\r\n placeholder={config.placeholder}\r\n disabled={disabled}\r\n defaultValue={dValue}\r\n />\r\n ))\r\n }\r\n\r\n loading = () => this.setState({ loadding: true })\r\n\r\n unloading = () => this.setState({ loadding: false })\r\n\r\n componentWillUnmount(): void {\r\n this.abortController?.abort()\r\n }\r\n\r\n onSubmit = async (value: Partial<T>, close?: () => void) => {\r\n const { slots } = this.props\r\n const mapping = this.props.slots?.submitMapping ?? params.submitMapping ?? this.submitMapping\r\n const data = mapping(value, this.props.data)\r\n try {\r\n this.loading()\r\n this.abortController?.abort()\r\n this.abortController = new AbortController()\r\n await this.props.onSubmit(data, this.abortController.signal)\r\n if (!slots?.closeState || slots.closeState.Success !== false) {\r\n close && close()\r\n this.props.onClose && this.props.onClose()\r\n }\r\n } catch (error) {\r\n if (slots?.closeState && slots.closeState.Fail === true) {\r\n close && close()\r\n this.props.onClose && this.props.onClose()\r\n }\r\n if (this.props.onError) this.props.onError(error)\r\n } finally {\r\n this.unloading()\r\n }\r\n }\r\n\r\n submitMapping: SubmitMappingEvent<T> = (value) => value\r\n\r\n getSxProps = (): SxProps<Theme> => {\r\n const isLoading = this.state.loadding\r\n return { ...this.props.sx, opacity: isLoading ? 0.7 : 1, pointerEvents: isLoading ? 'none' : 'auto' }\r\n }\r\n }\r\n return FormGridLayout\r\n}\r\n\r\nexport default CreateFormGridLayout\r\n"],"names":["CreateFormGridLayout","params","FormBaseInstance","CreateFormBase","BottomBarInstance","CreateFormBottomBar","InputBaseInstance","CreateInput","maxLength","FormGridLayout","props","_this","_classCallCheck","_callSuper","_defineProperty","_this$props","slots","_jsxs","ContentWrap","_objectSpread","contentProps","children","contentBefore","_jsx","Grid","container","spacing","configs","map","config","index","_this$configMerged$in","visibility","configMerged","inputVisibility","key","undefined","Fragment","item","xs","reponsives","renderFormFieldElement","toString","contentAfter","_config$inputElement","_otherProps$data$conf","_otherProps$data","_this$configMerged$in2","_this$props2","otherProps","_objectWithoutProperties","_excluded","ElementComponent","inputElement","dValue","data","defaultValue","disabled","inputDisabled","contextMapping","context","onBlur","messageErrors","name","label","placeholder","setState","loadding","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","value","close","_ref2","_this$props$slots$sub","_this$props$slots","mapping","_this$abortController","wrap","_context","prev","next","submitMapping","loading","abortController","abort","AbortController","onSubmit","signal","closeState","Success","onClose","t0","Fail","onError","unloading","finish","stop","_x","_x2","apply","this","arguments","isLoading","state","sx","opacity","pointerEvents","_inherits","Component","_createClass","get","_this$props$slots$inp","_this$props$slots2","_this$props$slots$inp2","_this$props$slots3","_ref3","_params$action","_this$props$slots4","_this2","BottomBar","action","mapGlobalModalContext","_ref4","Form","validate","v","getSxProps","renderContent","_this2$props$slots","before","actionBefore","_this$abortController2"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{default as ApiPopover,ApiPopoverContext,mapApiPopoverContext,withApiPopoverContext}from"./api-context/popover.js";export{AlertDialog,default as AlertGlobal,ApiAlertContext}from"./api-context/alert-global.js";export{default as DrawerGlobal}from"./api-context/drawer-global.js";export{default as GlobalModal,GlobalModalContext,mapGlobalModalContext,withApiGlobalModalConsumerContext,withApiGlobalModalContext}from"./api-context/global-modal.js";export{default as PopoverGlobal,PopoverGlobalApi,PopoverGlobalContext,PopoverGlobalProvider,mapPopoverGlobalContext,withPopoverGlobalContext}from"./api-context/popover-global.js";export{default as Breadcrumbs}from"./components/breadcrumbs.js";export{LoadingButton}from"./components/buttons.js";export{default as CopyToClipboard}from"./components/copy-to-clipboard.js";export{default as CreateMultiSelectDropdown}from"./components/create.multi-select-dropdown.js";export{default as ImageWithFallback}from"./components/image-with-fallback.js";export{default as HelpTooltip,HelpTooltipWrap}from"./components/help-tooltip.js";export{default as TextEditorPreview}from"./components/text-editor.preview.js";export{default as TextEditor,textEditorClasses}from"./components/text-editor.js";export{default as CreateFilterBar}from"./filter-bar/create.filter-bar.js";export{EFieldValidate,ESearchMatch}from"./filter-bar/types.js";export{default as FormValidator,SingleRuleValidate,createFormValidator,mapRuleOptions}from"./form/validator.js";export{default as DinoForm}from"./form/dino-form.js";export{convertFormDataToJson,getErrorMessage}from"./form/helper.js";export{useCheckScrolled,useDebounce}from"./hooks/index.js";export{ELazyStatus}from"./redux/types.js";export{default as DinoRedux}from"./redux/dino.js";export{default as CreateHocLazy,EmptyComponent,defaultOptionHocLazy}from"./redux/create.hoc-lazy.js";export{ELogic,EOperator,EOrder}from"./table/model-filter.js";import"react/jsx-runtime";import"react";import"@mui/material";import"@mui/icons-material/Edit";import"@mui/icons-material/Delete";export{decodeBase64,encodeBase64,fetchDelay,formatCapitalizeFirstText,formatCurrency,formatDatetime,formatFileSize,formatNumberWithCommas,mergeClasses,mergeObjects,sleep,tryParseArray,tryParseIntRequired,tryParseObject,windowScrollToTop}from"./utils/helpers.js";import"./utils/dayjs-config.js";export{default as JObject}from"./utils/json-object.js";export{MFEventProvider,useMFEvent}from"./utils/mfe-events.js";export{QueryParam}from"./utils/query-param.js";export{default as CreateTable}from"./table/create.table.js";export{default as DinoTable}from"./table/dino.js";export{dinoTableClasses}from"./table/helpers.js";export{default as DinoTableGrid}from"./table-grid/dino.js";export{default as dayjsCustom}from"dayjs";
|
|
1
|
+
export{default as ApiPopover,ApiPopoverContext,mapApiPopoverContext,withApiPopoverContext}from"./api-context/popover.js";export{AlertDialog,default as AlertGlobal,ApiAlertContext}from"./api-context/alert-global.js";export{default as DrawerGlobal}from"./api-context/drawer-global.js";export{default as GlobalModal,GlobalModalContext,mapGlobalModalContext,withApiGlobalModalConsumerContext,withApiGlobalModalContext}from"./api-context/global-modal.js";export{default as PopoverGlobal,PopoverGlobalApi,PopoverGlobalContext,PopoverGlobalProvider,mapPopoverGlobalContext,withPopoverGlobalContext}from"./api-context/popover-global.js";export{default as Breadcrumbs}from"./components/breadcrumbs.js";export{LoadingButton}from"./components/buttons.js";export{default as CopyToClipboard}from"./components/copy-to-clipboard.js";export{default as CreateMultiSelectDropdown}from"./components/create.multi-select-dropdown.js";export{default as ImageWithFallback}from"./components/image-with-fallback.js";export{default as HelpTooltip,HelpTooltipWrap}from"./components/help-tooltip.js";export{default as TextEditorPreview}from"./components/text-editor.preview.js";export{default as TextEditor,textEditorClasses}from"./components/text-editor.js";export{default as CreateFilterBar}from"./filter-bar/create.filter-bar.js";export{EFieldValidate,ESearchMatch}from"./filter-bar/types.js";export{default as FormValidator,SingleRuleValidate,createFormValidator,mapRuleOptions}from"./form/validator.js";export{default as DinoForm}from"./form/dino-form.js";export{convertFormDataToJson,getErrorMessage}from"./form/helper.js";export{useCheckScrolled,useDebounce}from"./hooks/index.js";export{ELazyStatus}from"./redux/types.js";export{default as DinoRedux}from"./redux/dino.js";export{default as CreateHocLazy,EmptyComponent,defaultOptionHocLazy}from"./redux/create.hoc-lazy.js";export{ELogic,EOperator,EOrder}from"./table/model-filter.js";import"react/jsx-runtime";import"react";import"@mui/material";import"@mui/icons-material/Edit";import"@mui/icons-material/Delete";export{decodeBase64,encodeBase64,fetchDelay,formatCapitalizeFirstText,formatCurrency,formatDatetime,formatFileSize,formatNumberWithCommas,mergeClasses,mergeObjects,sleep,tryParseArray,tryParseIntRequired,tryParseObject,windowScrollToTop}from"./utils/helpers.js";import"./utils/dayjs-config.js";export{default as JObject}from"./utils/json-object.js";export{MFEventProvider,useMFEvent}from"./utils/mfe-events.js";export{QueryParam}from"./utils/query-param.js";export{default as CreateTable}from"./table/create.table.js";export{default as DinoTable}from"./table/dino.js";export{dinoTableClasses}from"./table/helpers.js";export{default as DinoTableGrid}from"./table-grid/dino.js";export{CreateTableGridItemActions}from"./table-grid/item-actions.js";export{default as dayjsCustom}from"dayjs";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as r,createClass as e,classCallCheck as i,callSuper as o,defineProperty as t,objectSpread2 as n}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as l,Fragment as a,jsxs as s}from"react/jsx-runtime";import{Component as p}from"react";import{styled as
|
|
1
|
+
import{inherits as r,createClass as e,classCallCheck as i,callSuper as o,defineProperty as t,objectSpread2 as n}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as l,Fragment as a,jsxs as s}from"react/jsx-runtime";import{Component as p}from"react";import{styled as m,Box as c,colors as u,IconButton as d,List as f,ListItem as h,ListItemButton as v,ListItemIcon as b,ListItemText as g}from"@mui/material";import C from"@mui/icons-material/Edit";import x from"@mui/icons-material/MoreVert";import k from"@mui/icons-material/DeleteOutline";import"../api-context/alert-global.js";import"../api-context/drawer-global.js";import{mapGlobalModalContext as I}from"../api-context/global-modal.js";import y from"../api-context/popover-global.js";var A={Edit:l(C,{fontSize:"small",color:"primary"}),Delete:l(k,{fontSize:"small",color:"error"})};function E(){var m=function(){function m(){var r;i(this,m);for(var e=arguments.length,p=new Array(e),c=0;c<e;c++)p[c]=arguments[c];return r=o(this,m,[].concat(p)),t(r,"isVisible",(function(){return!!r.props.formEdit||!!r.props.formDelete})),t(r,"renderItems",(function(e){return e?(Array.isArray(e)?e:[e]).map((function(e,i){var o=e.name+i,t=e.override;if(t)return l(t,{onClose:y.Api.close},o);var a=e.listItemPropsGetter?e.listItemPropsGetter(r.props.value):e.listItemProps;return l(h,n(n({disablePadding:!0,sx:{minWidth:"170px"},onClick:function(i){!1!==e.closableOnClick&&y.Api.close(),e.onClick&&e.onClick(i,r.props.value)}},a),{},{children:s(v,{children:[l(b,{children:e.icon}),l(g,{primary:e.name})]})}),o)})):l(a,{})})),t(r,"renderItemWithForm",(function(e,i,o){return i?I((function(t){return l(h,{disablePadding:!0,sx:{minWidth:"170px"},onClick:function(){y.Api.close(),t.show(n({renderContent:function(){return i(r.props.value)}},o))},children:s(v,{children:[l(b,{children:A[e]}),l(g,{primary:e})]})})})):l(a,{})})),r}return r(m,p),e(m,[{key:"render",value:function(){var r=this;return this.isVisible()?l(P,{children:l(d,{size:"small",onClick:function(e){var i,o,t;y.Api.open({anchorEl:e.currentTarget,popoverProps:{anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"}},content:s(f,{children:[r.renderItems(null===(i=r.props.menuList)||void 0===i?void 0:i.before),r.renderItemWithForm("Edit",r.props.formEdit,r.props.buttonEditConfig),r.renderItemWithForm("Delete",r.props.formDelete,null!==(o=r.props.buttonEditConfig)&&void 0!==o?o:{backdropActivated:!0}),r.renderItems(null===(t=r.props.menuList)||void 0===t?void 0:t.after)]})})},children:l(x,{fontSize:"small"})})}):l(a,{})}}])}();return m}var P=m(c)({background:u.common.white,borderRadius:"6px","& > .MuiButtonBase-root":{borderRadius:"6px"}});export{E as CreateTableGridItemActions};
|
|
2
2
|
//# sourceMappingURL=item-actions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item-actions.js","sources":["../../src/table-grid/item-actions.tsx"],"sourcesContent":["import React, { Component, ComponentType, ReactNode } from 'react'\r\nimport { Box, colors, IconButton, List, ListItem, ListItemButton, ListItemIcon, ListItemProps, ListItemText, styled } from '@mui/material'\r\nimport EditIcon from '@mui/icons-material/Edit'\r\nimport MoreVertIcon from '@mui/icons-material/MoreVert'\r\nimport DeleteOutlineIcon from '@mui/icons-material/DeleteOutline'\r\nimport { ClosePopover, GlobalModalState, mapGlobalModalContext, PopoverGlobal } from '../api-context'\r\n\r\nexport type ITableGridItemActionType = 'Edit' | 'Delete'\r\n\r\nconst mapIcons: { [key in ITableGridItemActionType]: ReactNode } = {\r\n Edit: <EditIcon fontSize='small' color='primary' />,\r\n Delete: <DeleteOutlineIcon fontSize='small' color='error' />\r\n}\r\n\r\nexport interface ITableGridItemActionsBaseProps<T> {\r\n value: T\r\n}\r\n\r\nexport type
|
|
1
|
+
{"version":3,"file":"item-actions.js","sources":["../../src/table-grid/item-actions.tsx"],"sourcesContent":["import React, { Component, ComponentType, ReactNode } from 'react'\r\nimport { Box, colors, IconButton, List, ListItem, ListItemButton, ListItemIcon, ListItemProps, ListItemText, styled } from '@mui/material'\r\nimport EditIcon from '@mui/icons-material/Edit'\r\nimport MoreVertIcon from '@mui/icons-material/MoreVert'\r\nimport DeleteOutlineIcon from '@mui/icons-material/DeleteOutline'\r\nimport { ClosePopover, GlobalModalState, mapGlobalModalContext, PopoverGlobal } from '../api-context'\r\n\r\nexport type ITableGridItemActionType = 'Edit' | 'Delete'\r\n\r\nconst mapIcons: { [key in ITableGridItemActionType]: ReactNode } = {\r\n Edit: <EditIcon fontSize='small' color='primary' />,\r\n Delete: <DeleteOutlineIcon fontSize='small' color='error' />\r\n}\r\n\r\nexport interface ITableGridItemActionsBaseProps<T> {\r\n value: T\r\n}\r\n\r\nexport type IActionFormGetter<T> = (value: T) => React.ReactNode\r\n\r\nexport interface IActionMenuItemDef<T> {\r\n name: string\r\n icon?: ReactNode\r\n /** Whether this item should trigger a close action when clicked. @default true */\r\n closableOnClick?: boolean\r\n /** Handler called when item is clicked */\r\n onClick?: (event: React.MouseEvent<HTMLLIElement, MouseEvent>, value: T) => void\r\n listItemProps?: ListItemProps\r\n listItemPropsGetter?: (value: T) => ListItemProps & { [key: string]: any }\r\n /**\r\n * Optional custom ReactNode to override the entire ListItem UI.\r\n * If provided, this will be rendered instead of the default ListItem structure\r\n * (icon + text + click behavior).\r\n */\r\n override?: ComponentType<{ onClose?: ClosePopover }>\r\n}\r\n\r\nexport interface TableGridItemActionsConfig<T> {\r\n formEdit?: IActionFormGetter<T>\r\n formDelete?: IActionFormGetter<T>\r\n buttonEditConfig?: GlobalModalState\r\n buttonDeleteConfig?: GlobalModalState\r\n menuList?: {\r\n before?: SingleOrArray<IActionMenuItemDef<T>>\r\n after?: SingleOrArray<IActionMenuItemDef<T>>\r\n }\r\n}\r\n\r\nexport interface ITableGridItemActionsProps<T> extends ITableGridItemActionsBaseProps<T>, TableGridItemActionsConfig<T> {}\r\n\r\nexport function CreateTableGridItemActions<T>() {\r\n class TableGridItemActions extends Component<ITableGridItemActionsProps<T>> {\r\n render() {\r\n if (!this.isVisible()) return <></>\r\n return (\r\n <Wrap>\r\n <IconButton\r\n size='small'\r\n onClick={(e) => {\r\n PopoverGlobal.Api.open({\r\n anchorEl: e.currentTarget,\r\n popoverProps: { anchorOrigin: { vertical: 'top', horizontal: 'right' }, transformOrigin: { vertical: 'top', horizontal: 'right' } },\r\n content: (\r\n <List>\r\n {this.renderItems(this.props.menuList?.before)}\r\n {this.renderItemWithForm('Edit', this.props.formEdit, this.props.buttonEditConfig)}\r\n {this.renderItemWithForm('Delete', this.props.formDelete, this.props.buttonEditConfig ?? { backdropActivated: true })}\r\n {this.renderItems(this.props.menuList?.after)}\r\n </List>\r\n )\r\n })\r\n }}\r\n >\r\n <MoreVertIcon fontSize='small' />\r\n </IconButton>\r\n </Wrap>\r\n )\r\n }\r\n\r\n isVisible = () => {\r\n return !!this.props.formEdit || !!this.props.formDelete\r\n }\r\n\r\n renderItems = (value?: SingleOrArray<IActionMenuItemDef<T>>) => {\r\n if (!value) return <></>\r\n const list = Array.isArray(value) ? value : [value]\r\n return list.map((item, index) => {\r\n const key = item.name + index\r\n const { override: Override } = item\r\n if (Override) return <Override key={key} onClose={PopoverGlobal.Api.close} />\r\n const itemProps = item.listItemPropsGetter ? item.listItemPropsGetter(this.props.value) : item.listItemProps\r\n return (\r\n <ListItem\r\n key={key}\r\n disablePadding\r\n sx={{ minWidth: '170px' }}\r\n onClick={(e) => {\r\n if (item.closableOnClick !== false) PopoverGlobal.Api.close()\r\n item.onClick && item.onClick(e, this.props.value)\r\n }}\r\n {...itemProps}\r\n >\r\n <ListItemButton>\r\n <ListItemIcon>{item.icon}</ListItemIcon>\r\n <ListItemText primary={item.name} />\r\n </ListItemButton>\r\n </ListItem>\r\n )\r\n })\r\n }\r\n\r\n renderItemWithForm = (name: ITableGridItemActionType, form?: IActionFormGetter<T>, globalState?: GlobalModalState) => {\r\n if (!form) return <></>\r\n return mapGlobalModalContext((context) => (\r\n <ListItem\r\n disablePadding\r\n sx={{ minWidth: '170px' }}\r\n onClick={() => {\r\n PopoverGlobal.Api.close()\r\n context.show({ renderContent: () => form(this.props.value), ...globalState })\r\n }}\r\n >\r\n <ListItemButton>\r\n <ListItemIcon>{mapIcons[name]}</ListItemIcon>\r\n <ListItemText primary={name} />\r\n </ListItemButton>\r\n </ListItem>\r\n ))\r\n }\r\n }\r\n return TableGridItemActions\r\n}\r\n\r\nconst Wrap = styled(Box)({\r\n background: colors.common.white,\r\n borderRadius: '6px',\r\n '& > .MuiButtonBase-root': {\r\n borderRadius: '6px'\r\n }\r\n})\r\n"],"names":["mapIcons","Edit","_jsx","EditIcon","fontSize","color","Delete","DeleteOutlineIcon","CreateTableGridItemActions","TableGridItemActions","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","props","formEdit","formDelete","value","isArray","map","item","index","key","name","Override","override","onClose","PopoverGlobal","Api","close","itemProps","listItemPropsGetter","listItemProps","ListItem","_objectSpread","disablePadding","sx","minWidth","onClick","e","closableOnClick","children","_jsxs","ListItemButton","ListItemIcon","icon","ListItemText","primary","form","globalState","mapGlobalModalContext","context","show","renderContent","_inherits","Component","_createClass","_this2","isVisible","Wrap","IconButton","size","_this2$props$menuList","_this2$props$buttonEd","_this2$props$menuList2","open","anchorEl","currentTarget","popoverProps","anchorOrigin","vertical","horizontal","transformOrigin","content","List","renderItems","menuList","before","renderItemWithForm","buttonEditConfig","backdropActivated","after","MoreVertIcon","styled","Box","background","colors","common","white","borderRadius"],"mappings":"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"}
|
|
@@ -5,8 +5,8 @@ export type ITableGridItemActionType = 'Edit' | 'Delete';
|
|
|
5
5
|
export interface ITableGridItemActionsBaseProps<T> {
|
|
6
6
|
value: T;
|
|
7
7
|
}
|
|
8
|
-
export type
|
|
9
|
-
export interface
|
|
8
|
+
export type IActionFormGetter<T> = (value: T) => React.ReactNode;
|
|
9
|
+
export interface IActionMenuItemDef<T> {
|
|
10
10
|
name: string;
|
|
11
11
|
icon?: ReactNode;
|
|
12
12
|
/** Whether this item should trigger a close action when clicked. @default true */
|
|
@@ -14,6 +14,9 @@ export interface IListItemDef<T> {
|
|
|
14
14
|
/** Handler called when item is clicked */
|
|
15
15
|
onClick?: (event: React.MouseEvent<HTMLLIElement, MouseEvent>, value: T) => void;
|
|
16
16
|
listItemProps?: ListItemProps;
|
|
17
|
+
listItemPropsGetter?: (value: T) => ListItemProps & {
|
|
18
|
+
[key: string]: any;
|
|
19
|
+
};
|
|
17
20
|
/**
|
|
18
21
|
* Optional custom ReactNode to override the entire ListItem UI.
|
|
19
22
|
* If provided, this will be rendered instead of the default ListItem structure
|
|
@@ -24,13 +27,13 @@ export interface IListItemDef<T> {
|
|
|
24
27
|
}>;
|
|
25
28
|
}
|
|
26
29
|
export interface TableGridItemActionsConfig<T> {
|
|
27
|
-
formEdit?:
|
|
28
|
-
formDelete?:
|
|
30
|
+
formEdit?: IActionFormGetter<T>;
|
|
31
|
+
formDelete?: IActionFormGetter<T>;
|
|
29
32
|
buttonEditConfig?: GlobalModalState;
|
|
30
33
|
buttonDeleteConfig?: GlobalModalState;
|
|
31
34
|
menuList?: {
|
|
32
|
-
before?: SingleOrArray<
|
|
33
|
-
after?:
|
|
35
|
+
before?: SingleOrArray<IActionMenuItemDef<T>>;
|
|
36
|
+
after?: SingleOrArray<IActionMenuItemDef<T>>;
|
|
34
37
|
};
|
|
35
38
|
}
|
|
36
39
|
export interface ITableGridItemActionsProps<T> extends ITableGridItemActionsBaseProps<T>, TableGridItemActionsConfig<T> {
|
|
@@ -39,8 +42,8 @@ export declare function CreateTableGridItemActions<T>(): {
|
|
|
39
42
|
new (props: ITableGridItemActionsProps<T>): {
|
|
40
43
|
render(): import("react/jsx-runtime").JSX.Element;
|
|
41
44
|
isVisible: () => boolean;
|
|
42
|
-
renderItems: (value?: SingleOrArray<
|
|
43
|
-
renderItemWithForm: (name: ITableGridItemActionType, form?:
|
|
45
|
+
renderItems: (value?: SingleOrArray<IActionMenuItemDef<T>>) => import("react/jsx-runtime").JSX.Element | import("react/jsx-runtime").JSX.Element[];
|
|
46
|
+
renderItemWithForm: (name: ITableGridItemActionType, form?: IActionFormGetter<T>, globalState?: GlobalModalState) => import("react/jsx-runtime").JSX.Element;
|
|
44
47
|
context: unknown;
|
|
45
48
|
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<ITableGridItemActionsProps<T>>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
|
46
49
|
forceUpdate(callback?: (() => void) | undefined): void;
|
|
@@ -65,8 +68,8 @@ export declare function CreateTableGridItemActions<T>(): {
|
|
|
65
68
|
new (props: ITableGridItemActionsProps<T>, context: any): {
|
|
66
69
|
render(): import("react/jsx-runtime").JSX.Element;
|
|
67
70
|
isVisible: () => boolean;
|
|
68
|
-
renderItems: (value?: SingleOrArray<
|
|
69
|
-
renderItemWithForm: (name: ITableGridItemActionType, form?:
|
|
71
|
+
renderItems: (value?: SingleOrArray<IActionMenuItemDef<T>>) => import("react/jsx-runtime").JSX.Element | import("react/jsx-runtime").JSX.Element[];
|
|
72
|
+
renderItemWithForm: (name: ITableGridItemActionType, form?: IActionFormGetter<T>, globalState?: GlobalModalState) => import("react/jsx-runtime").JSX.Element;
|
|
70
73
|
context: unknown;
|
|
71
74
|
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<ITableGridItemActionsProps<T>>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
|
72
75
|
forceUpdate(callback?: (() => void) | undefined): void;
|