@scbt-ecom/ui 0.136.2 → 0.138.0
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/lib/widgets/dynamicFormDialog/DynamicFormDialog.js +1 -1
- package/dist/lib/widgets/dynamicFormDialog/DynamicFormDialog.js.map +1 -1
- package/dist/stats.html +1 -1
- package/dist/types/lib/widgets/dynamicForm/model/types.d.ts +1 -0
- package/dist/types/lib/widgets/dynamicFormDialog/DynamicFormDialog.d.ts +2 -1
- package/dist/types/lib/widgets/model/helpers.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as m,jsxs as h}from"react/jsx-runtime";import{useState as F,createElement as j}from"react";import{AuthProvider as l}from"../authProvider/AuthProvider.js";import{HTMLRenderer as x}from"../htmlParser/HTMLRenderer.js";import{getDynamicSchema as v}from"../../../src/shared/utils/getDynamicSchema.js";import{cn as y}from"../../shared/utils/cn.js";import{TypeGuards as A}from"../../shared/utils/typeGuards.js";import{useControlledForm as P}from"../../shared/hooks/useControlledForm.js";import"react-hook-form";import{Button as M}from"../../shared/ui/button/Button.js";import"../../shared/ui/buttonIcon/ButtonIcon.js";import"../../shared/ui/calendar/Calendar.js";import"../../shared/ui/calendar/model/utils.js";import"../../shared/ui/accordion/Accordion.js";import"react-dom";import"../../shared/ui/modal/ui/IframeModalContent.js";import"../../../node_modules/react-hot-toast/dist/index.js";import"../../shared/ui/table/ui/primitives/Primitives.js";import"../../shared/ui/carousel/ui/CarouselContent.js";import{Dialog as Z}from"../../shared/ui/dialog/Dialog.js";import"../../shared/ui/slot/Slot.js";import"../../shared/ui/formElements/uncontrolled/autocomplete/Autocomplete.js";import{CheckboxBase as E}from"../../shared/ui/formElements/uncontrolled/checkbox/Checkbox.js";import"../../shared/ui/formElements/uncontrolled/combobox/combobox.js";import"../../shared/ui/formElements/uncontrolled/dayPicker/DayPicker.js";import"../../shared/ui/formElements/uncontrolled/input/Input.js";import"../../shared/ui/formElements/uncontrolled/inputOtp/InputOtpBase.js";import"../../shared/ui/formElements/uncontrolled/maskInput/MaskInput.js";import"../../shared/ui/formElements/uncontrolled/radio/RadioGroup.js";import"../../shared/ui/formElements/uncontrolled/radio/ui/RadioItem.js";import"../../shared/ui/formElements/uncontrolled/slider/SliderBase.js";import"../../shared/ui/formElements/uncontrolled/switch/Switch.js";import"../../shared/ui/formElements/uncontrolled/textarea/Textarea.js";import"../../shared/ui/formElements/uncontrolled/uploader/UploaderBase.js";import"../../shared/ui/formElements/uncontrolled/inputCurrency/InputCurrency.js";import"../../../src/configs/api.js";import"../../shared/ui/formElements/controlled/editor/ui/Editor.js";import"../../shared/ui/formElements/controlled/input/MaskInputControl.js";import"../../shared/ui/dropdownList/ui/dropdownItem/DropdownItem.js";import"../../shared/validation/zodValidation/dadataFio.js";import"../../shared/validation/zodValidation/calendar.js";import"../../shared/validation/zodValidation/phone.js";import"../../shared/validation/zodValidation/otpCode.js";import{ZodUtils as H}from"../../shared/validation/utils/zodUtils.js";import{FieldMapper as I}from"../fieldMapper/FieldMapper.js";import{QueryClientProvider as L}from"../queryClientProvider/QueryClientProvider.js";const Q=(r,n,i,o)=>r.type==="off"?null:r.type==="text"?m(x,{html:r.message,as:"div",className:o==null?void 0:o.content}):h("label",{className:y("mob-body-regular-s text-color-dark","desktop:desk-body-regular-m desktop:gap-x-4","flex items-center justify-items-start gap-x-3"),children:[m(E,{classes:o==null?void 0:o.checkbox,checked:n,onCheckedChange:i}),m(x,{html:r.content,as:"div",className:o==null?void 0:o.content})]}),g=r=>{switch(r.mode){case"esia":return m(l,{...r,mode:r.mode});case"mobileId":return m(l,{...r,mode:r.mode});case"combine":return m(l,{...r,mode:r.mode});case"off":return null}},Mr=({fields:r,title:n,approvement:i,submitProps:o,dialogId:b,classes:t,auth:f,buttonGroup:e,ssoAuthorizationTop:c=!1,...k})=>{const{submitCallback:a}=o??{},[d,w]=F(!1),u=v(r),C=H.getZodDefaults(u),{control:N,handleSubmit:S}=P({schema:u,defaultValues:C,mode:"onBlur"});return m(L,{children:m(Z,{id:b,title:n,...k,children:h("form",{onSubmit:S(p=>{a&&a({...p,agree:d})}),className:"flex flex-col gap-6",children:[c&&g(f),m(I,{control:N,fields:r}),Q(i,d,w,t==null?void 0:t.approvement),A.isArrayFilled(e)&&m("div",{className:"flex flex-col gap-4",children:e==null?void 0:e.map((p,D)=>{const B=p.type==="submit"&&i.type==="checkbox"?!d:!1;return j(M,{...p,size:"lg",key:D,disabled:B,className:y("w-full whitespace-nowrap",{"w-full":!!i},t==null?void 0:t.submit)})})}),!c&&g(f)]})})})};export{Mr as DynamicFormDialog,Mr as default};
|
|
2
2
|
//# sourceMappingURL=DynamicFormDialog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicFormDialog.js","sources":["../../../../lib/widgets/dynamicFormDialog/DynamicFormDialog.tsx"],"sourcesContent":["'use client'\nimport { useState } from 'react'\nimport type { Control, FieldValues, SubmitHandler } from 'react-hook-form'\nimport { type TypeOf } from 'zod'\nimport { AuthProvider } from '../authProvider'\nimport { type Auth, type AuthMode } from '../dynamicForm/model'\nimport { HTMLRenderer } from '../htmlParser'\nimport type { Approvement, ApprovementType } from './model'\nimport { type FieldValidation, getDynamicSchema } from '@/shared/utils'\nimport { useControlledForm } from '$/shared/hooks'\nimport { Button, type ButtonProps, CheckboxBase, type CheckedState, Dialog } from '$/shared/ui'\nimport { cn, TypeGuards } from '$/shared/utils'\nimport { ZodUtils } from '$/shared/validation'\nimport { type FieldElement, FieldMapper } from '$/widgets/fieldMapper'\nimport { QueryClientProvider } from '$/widgets/queryClientProvider'\n\ntype SubmitProps = {\n submitCallback: <T extends FieldValues>(values: T) => void\n}\n\ntype ApprovementClasses = {\n checkbox?: React.ComponentProps<typeof CheckboxBase>['classes']\n content?: string\n}\n\ntype DynamicFormDialogClasses = {\n root?: string\n title?: string\n fields?: string\n form?: string\n approvement?: ApprovementClasses\n submit?: string\n}\n\nexport type DynamicFormDialogProps<\n AType extends ApprovementType,\n AuthType extends AuthMode\n> = React.DialogHTMLAttributes<HTMLDialogElement> & {\n fields: FieldElement<any, any, { validation: FieldValidation }>[]\n title: string\n approvement: Approvement<AType>\n dialogId: string\n submitProps?: SubmitProps\n classes?: DynamicFormDialogClasses\n buttonGroup: ButtonProps[]\n auth: Auth<AuthType>\n}\n\nconst withApprovement = <Type extends ApprovementType>(\n approvement: Approvement<Type>,\n checked: CheckedState,\n onCheckedChange: (checked: CheckedState) => void,\n classes?: ApprovementClasses\n) => {\n if (approvement.type === 'off') return null\n\n if (approvement.type === 'text') {\n return <HTMLRenderer html={approvement.message} as='div' className={classes?.content} />\n }\n\n return (\n <label\n className={cn(\n 'mob-body-regular-s text-color-dark',\n 'desktop:desk-body-regular-m desktop:gap-x-4',\n 'flex items-center justify-items-start gap-x-3'\n )}\n >\n <CheckboxBase classes={classes?.checkbox} checked={checked} onCheckedChange={onCheckedChange} />\n <HTMLRenderer html={approvement.content} as='div' className={classes?.content} />\n </label>\n )\n}\n\nconst withAuthProvider = <Mode extends AuthMode>(auth: Auth<Mode>) => {\n switch (auth.mode) {\n case 'esia':\n return <AuthProvider {...auth} mode={auth.mode} />\n case 'mobileId':\n return <AuthProvider {...auth} mode={auth.mode} />\n case 'combine':\n return <AuthProvider {...auth} mode={auth.mode} />\n case 'off':\n return null\n }\n}\n\nexport const DynamicFormDialog = <AType extends ApprovementType, AuthType extends AuthMode>({\n fields,\n title,\n approvement,\n submitProps,\n dialogId,\n classes,\n auth,\n buttonGroup,\n ...props\n}: DynamicFormDialogProps<AType, AuthType>) => {\n const { submitCallback } = submitProps ?? {}\n\n const [checked, onCheckedChange] = useState<CheckedState>(false)\n\n const schema = getDynamicSchema(fields)\n const defaultValues = ZodUtils.getZodDefaults(schema)\n\n const { control, handleSubmit } = useControlledForm({\n schema,\n defaultValues,\n mode: 'onBlur'\n })\n\n const onSubmit: SubmitHandler<TypeOf<typeof schema>> = (values) => {\n if (submitCallback) submitCallback({ ...values, agree: checked })\n }\n\n return (\n <QueryClientProvider>\n <Dialog id={dialogId} title={title} {...props}>\n <form onSubmit={handleSubmit(onSubmit)} className='flex flex-col gap-6'>\n <FieldMapper control={control as unknown as Control} fields={fields} />\n {withApprovement(approvement, checked, onCheckedChange, classes?.approvement)}\n {TypeGuards.isArrayFilled(buttonGroup) && (\n <div className='flex flex-col gap-4'>\n {buttonGroup?.map((button, index) => {\n const disabled = button.type === 'submit' && approvement.type === 'checkbox' ? !checked : false\n\n return (\n <Button\n {...button}\n size='lg'\n key={index}\n disabled={disabled}\n className={cn(\n 'w-full whitespace-nowrap',\n {\n 'w-full': Boolean(approvement)\n },\n classes?.submit\n )}\n />\n )\n })}\n </div>\n )}\n {/*<Button {...buttonProps} type='submit' disabled={approvement.type === 'checkbox' ? !checked : false} className='w-full'>*/}\n {/* {children ?? 'Отправить форму'}*/}\n {/*</Button>*/}\n {withAuthProvider(auth)}\n </form>\n </Dialog>\n </QueryClientProvider>\n )\n}\n\nexport default DynamicFormDialog\n"],"names":["withApprovement","approvement","checked","onCheckedChange","classes","jsx","HTMLRenderer","jsxs","cn","CheckboxBase","withAuthProvider","auth","AuthProvider","DynamicFormDialog","fields","title","submitProps","dialogId","buttonGroup","props","submitCallback","useState","schema","getDynamicSchema","defaultValues","ZodUtils","control","handleSubmit","useControlledForm","QueryClientProvider","Dialog","values","FieldMapper","TypeGuards","button","index","disabled","createElement","Button"],"mappings":"
|
|
1
|
+
{"version":3,"file":"DynamicFormDialog.js","sources":["../../../../lib/widgets/dynamicFormDialog/DynamicFormDialog.tsx"],"sourcesContent":["'use client'\nimport { useState } from 'react'\nimport type { Control, FieldValues, SubmitHandler } from 'react-hook-form'\nimport { type TypeOf } from 'zod'\nimport { AuthProvider } from '../authProvider'\nimport { type Auth, type AuthMode } from '../dynamicForm/model'\nimport { HTMLRenderer } from '../htmlParser'\nimport type { Approvement, ApprovementType } from './model'\nimport { type FieldValidation, getDynamicSchema } from '@/shared/utils'\nimport { useControlledForm } from '$/shared/hooks'\nimport { Button, type ButtonProps, CheckboxBase, type CheckedState, Dialog } from '$/shared/ui'\nimport { cn, TypeGuards } from '$/shared/utils'\nimport { ZodUtils } from '$/shared/validation'\nimport { type FieldElement, FieldMapper } from '$/widgets/fieldMapper'\nimport { QueryClientProvider } from '$/widgets/queryClientProvider'\n\ntype SubmitProps = {\n submitCallback: <T extends FieldValues>(values: T) => void\n}\n\ntype ApprovementClasses = {\n checkbox?: React.ComponentProps<typeof CheckboxBase>['classes']\n content?: string\n}\n\ntype DynamicFormDialogClasses = {\n root?: string\n title?: string\n fields?: string\n form?: string\n approvement?: ApprovementClasses\n submit?: string\n}\n\nexport type DynamicFormDialogProps<\n AType extends ApprovementType,\n AuthType extends AuthMode\n> = React.DialogHTMLAttributes<HTMLDialogElement> & {\n fields: FieldElement<any, any, { validation: FieldValidation }>[]\n title: string\n approvement: Approvement<AType>\n dialogId: string\n submitProps?: SubmitProps\n classes?: DynamicFormDialogClasses\n buttonGroup: ButtonProps[]\n auth: Auth<AuthType>\n ssoAuthorizationTop?: boolean\n}\n\nconst withApprovement = <Type extends ApprovementType>(\n approvement: Approvement<Type>,\n checked: CheckedState,\n onCheckedChange: (checked: CheckedState) => void,\n classes?: ApprovementClasses\n) => {\n if (approvement.type === 'off') return null\n\n if (approvement.type === 'text') {\n return <HTMLRenderer html={approvement.message} as='div' className={classes?.content} />\n }\n\n return (\n <label\n className={cn(\n 'mob-body-regular-s text-color-dark',\n 'desktop:desk-body-regular-m desktop:gap-x-4',\n 'flex items-center justify-items-start gap-x-3'\n )}\n >\n <CheckboxBase classes={classes?.checkbox} checked={checked} onCheckedChange={onCheckedChange} />\n <HTMLRenderer html={approvement.content} as='div' className={classes?.content} />\n </label>\n )\n}\n\nconst withAuthProvider = <Mode extends AuthMode>(auth: Auth<Mode>) => {\n switch (auth.mode) {\n case 'esia':\n return <AuthProvider {...auth} mode={auth.mode} />\n case 'mobileId':\n return <AuthProvider {...auth} mode={auth.mode} />\n case 'combine':\n return <AuthProvider {...auth} mode={auth.mode} />\n case 'off':\n return null\n }\n}\n\nexport const DynamicFormDialog = <AType extends ApprovementType, AuthType extends AuthMode>({\n fields,\n title,\n approvement,\n submitProps,\n dialogId,\n classes,\n auth,\n buttonGroup,\n ssoAuthorizationTop = false,\n ...props\n}: DynamicFormDialogProps<AType, AuthType>) => {\n const { submitCallback } = submitProps ?? {}\n\n const [checked, onCheckedChange] = useState<CheckedState>(false)\n\n const schema = getDynamicSchema(fields)\n const defaultValues = ZodUtils.getZodDefaults(schema)\n\n const { control, handleSubmit } = useControlledForm({\n schema,\n defaultValues,\n mode: 'onBlur'\n })\n\n const onSubmit: SubmitHandler<TypeOf<typeof schema>> = (values) => {\n if (submitCallback) submitCallback({ ...values, agree: checked })\n }\n\n return (\n <QueryClientProvider>\n <Dialog id={dialogId} title={title} {...props}>\n <form onSubmit={handleSubmit(onSubmit)} className='flex flex-col gap-6'>\n {ssoAuthorizationTop && withAuthProvider(auth)}\n <FieldMapper control={control as unknown as Control} fields={fields} />\n {withApprovement(approvement, checked, onCheckedChange, classes?.approvement)}\n {TypeGuards.isArrayFilled(buttonGroup) && (\n <div className='flex flex-col gap-4'>\n {buttonGroup?.map((button, index) => {\n const disabled = button.type === 'submit' && approvement.type === 'checkbox' ? !checked : false\n\n return (\n <Button\n {...button}\n size='lg'\n key={index}\n disabled={disabled}\n className={cn(\n 'w-full whitespace-nowrap',\n {\n 'w-full': Boolean(approvement)\n },\n classes?.submit\n )}\n />\n )\n })}\n </div>\n )}\n {/*<Button {...buttonProps} type='submit' disabled={approvement.type === 'checkbox' ? !checked : false} className='w-full'>*/}\n {/* {children ?? 'Отправить форму'}*/}\n {/*</Button>*/}\n {!ssoAuthorizationTop && withAuthProvider(auth)}\n </form>\n </Dialog>\n </QueryClientProvider>\n )\n}\n\nexport default DynamicFormDialog\n"],"names":["withApprovement","approvement","checked","onCheckedChange","classes","jsx","HTMLRenderer","jsxs","cn","CheckboxBase","withAuthProvider","auth","AuthProvider","DynamicFormDialog","fields","title","submitProps","dialogId","buttonGroup","ssoAuthorizationTop","props","submitCallback","useState","schema","getDynamicSchema","defaultValues","ZodUtils","control","handleSubmit","useControlledForm","QueryClientProvider","Dialog","values","FieldMapper","TypeGuards","button","index","disabled","createElement","Button"],"mappings":"6wFAiDA,MAAMA,EAAkB,CACtBC,EACAC,EACAC,EACAC,IAEIH,EAAY,OAAS,MAAc,KAEnCA,EAAY,OAAS,OAChBI,EAACC,GAAa,KAAML,EAAY,QAAS,GAAG,MAAM,UAAWG,GAAA,YAAAA,EAAS,OAAA,CAAS,EAItFG,EAAC,QAAA,CACC,UAAWC,EACT,qCACA,8CACA,+CAAA,EAGF,SAAA,CAAAH,EAACI,EAAA,CAAa,QAASL,GAAA,YAAAA,EAAS,SAAU,QAAAF,EAAkB,gBAAAC,EAAkC,EAC9FE,EAACC,GAAa,KAAML,EAAY,QAAS,GAAG,MAAM,UAAWG,GAAA,YAAAA,EAAS,OAAA,CAAS,CAAA,CAAA,CAAA,EAK/EM,EAA2CC,GAAqB,CACpE,OAAQA,EAAK,KAAA,CACX,IAAK,OACH,SAAQC,EAAA,CAAc,GAAGD,EAAM,KAAMA,EAAK,KAAM,EAClD,IAAK,WACH,SAAQC,EAAA,CAAc,GAAGD,EAAM,KAAMA,EAAK,KAAM,EAClD,IAAK,UACH,SAAQC,EAAA,CAAc,GAAGD,EAAM,KAAMA,EAAK,KAAM,EAClD,IAAK,MACH,OAAO,IAAA,CAEb,EAEaE,GAAoB,CAA2D,CAC1F,OAAAC,EACA,MAAAC,EACA,YAAAd,EACA,YAAAe,EACA,SAAAC,EACA,QAAAb,EACA,KAAAO,EACA,YAAAO,EACA,oBAAAC,EAAsB,GACtB,GAAGC,CACL,IAA+C,CAC7C,KAAM,CAAE,eAAAC,GAAmBL,GAAe,CAAA,EAEpC,CAACd,EAASC,CAAe,EAAImB,EAAuB,EAAK,EAEzDC,EAASC,EAAiBV,CAAM,EAChCW,EAAgBC,EAAS,eAAeH,CAAM,EAE9C,CAAE,QAAAI,EAAS,aAAAC,CAAA,EAAiBC,EAAkB,CAClD,OAAAN,EACA,cAAAE,EACA,KAAM,QAAA,CACP,EAMD,SACGK,EAAA,CACC,SAAAzB,EAAC0B,EAAA,CAAO,GAAId,EAAU,MAAAF,EAAe,GAAGK,EACtC,SAAAb,EAAC,QAAK,SAAUqB,EAPkCI,GAAW,CAC7DX,GAAgBA,EAAe,CAAE,GAAGW,EAAQ,MAAO9B,EAAS,CAClE,CAK2C,EAAG,UAAU,sBAC/C,SAAA,CAAAiB,GAAuBT,EAAiBC,CAAI,EAC7CN,EAAC4B,EAAA,CAAY,QAAAN,EAAwC,OAAAb,CAAA,CAAgB,EACpEd,EAAgBC,EAAaC,EAASC,EAAiBC,GAAA,YAAAA,EAAS,WAAW,EAC3E8B,EAAW,cAAchB,CAAW,GACnCb,EAAC,MAAA,CAAI,UAAU,sBACZ,SAAAa,GAAA,YAAAA,EAAa,IAAI,CAACiB,EAAQC,IAAU,CACnC,MAAMC,EAAWF,EAAO,OAAS,UAAYlC,EAAY,OAAS,WAAa,CAACC,EAAU,GAE1F,OACEoC,EAACC,EAAA,CACE,GAAGJ,EACJ,KAAK,KACL,IAAKC,EACL,SAAAC,EACA,UAAW7B,EACT,2BACA,CACE,SAAU,EAAQP,CAAW,EAE/BG,GAAA,YAAAA,EAAS,MAAA,CACX,CAAA,CAGN,EAAC,CACH,EAKD,CAACe,GAAuBT,EAAiBC,CAAI,CAAA,CAAA,CAChD,EACF,EACF,CAEJ"}
|