react-luminus-components 1.1.6 → 1.1.9

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 (53) hide show
  1. package/dist/.vite/manifest.json +53 -46
  2. package/dist/DataKey-Bo883ncO.js +1 -0
  3. package/dist/DataKey-CXMJ5YCH.mjs +51 -0
  4. package/dist/{InvalidFeedback.module-DJcRbXSF.mjs → SimplePicker.module-BL8k4kWN.mjs} +217 -199
  5. package/dist/{InvalidFeedback.module-DrVBvau3.js → SimplePicker.module-DnODgYFl.js} +21 -21
  6. package/dist/SimpleTooltip-BmkUawod.js +1 -0
  7. package/dist/{SimpleTooltip-CKNsKZll.mjs → SimpleTooltip-DgJ8gBIF.mjs} +2 -2
  8. package/dist/components/Buttons/FloatingSubmit/FloatingFormSubmit.d.ts +3 -2
  9. package/dist/components/Buttons/PrimaryButton/PrimaryButton.d.ts +1 -1
  10. package/dist/components/Form/DropdownPicker/DropdownPicker.d.ts +19 -0
  11. package/dist/components/Form/index.d.ts +1 -1
  12. package/dist/components/HookForm/DropdownPicker/HookFormDropdownPicker.d.ts +15 -0
  13. package/dist/components/HookForm/index.d.ts +1 -1
  14. package/dist/components/common/InputContainer/InputContainer.d.ts +2 -1
  15. package/dist/components/common/SimplePicker/SimplePicker.d.ts +15 -0
  16. package/dist/components/common/index.d.ts +1 -0
  17. package/dist/contexts/luminus-components/LuminusComponentsContext.d.ts +2 -2
  18. package/dist/contexts/luminus-components/LuminusComponentsProvider.d.ts +3 -3
  19. package/dist/contexts.cjs.js +1 -1
  20. package/dist/contexts.es.js +648 -74
  21. package/dist/{hasClass-2sGhxaPc.mjs → hasClass-BHK2NooK.mjs} +1 -1
  22. package/dist/{hasClass-Ch2izaph.js → hasClass-C-64QyIl.js} +5 -5
  23. package/dist/hooks/index.d.ts +1 -0
  24. package/dist/hooks/useClickOutside/useClickOutside.d.ts +3 -0
  25. package/dist/hooks.cjs.js +1 -1
  26. package/dist/hooks.es.js +35 -33
  27. package/dist/layout.cjs.js +1 -1
  28. package/dist/layout.es.js +2 -2
  29. package/dist/main.cjs.js +1 -1
  30. package/dist/main.d.ts +3 -3
  31. package/dist/main.es.js +1773 -1763
  32. package/dist/models/index.d.ts +3 -2
  33. package/dist/models/prop-types/{HookFormEmployeePickerProps.d.ts → HookFormDropdownPickerProps.d.ts} +3 -2
  34. package/dist/models/texts/DropdownPickerTexts.d.ts +5 -0
  35. package/dist/models/texts/FormSubmitTexts.d.ts +4 -0
  36. package/dist/style.css +1 -1
  37. package/dist/useClickOutside-BjJyGTec.mjs +14 -0
  38. package/dist/useClickOutside-DsVG12Cs.js +1 -0
  39. package/dist/useConfirm-5bscOMVZ.js +1 -0
  40. package/dist/{useConfirm-Cv_8Pxgx.mjs → useConfirm-Rw0k8LNX.mjs} +1 -1
  41. package/package.json +2 -3
  42. package/dist/Modal-Cgt4jEpF.mjs +0 -627
  43. package/dist/Modal-dXyx77X0.js +0 -1
  44. package/dist/SimpleTooltip-hw-DnjyJ.js +0 -1
  45. package/dist/components/EmployeePicker/EmployeeSearch/EmployeeSearch.d.ts +0 -7
  46. package/dist/components/EmployeePicker/EmployeeSearchModal/EmployeeSearchModal.d.ts +0 -9
  47. package/dist/components/EmployeePicker/comps/EmployeeSearchItem/EmployeeSearchItem.d.ts +0 -7
  48. package/dist/components/EmployeePicker/comps/index.d.ts +0 -1
  49. package/dist/components/EmployeePicker/index.d.ts +0 -2
  50. package/dist/components/Form/EmployeePicker/EmployeePicker.d.ts +0 -13
  51. package/dist/components/HookForm/EmployeePicker/HookFormEmployeePicker.d.ts +0 -9
  52. package/dist/models/texts/EmployeeSearchModalTexts.d.ts +0 -6
  53. package/dist/useConfirm-BCj1t5rw.js +0 -1
@@ -1,4 +1,4 @@
1
1
  export { default as CheckInput } from './CheckInput/CheckInput';
2
2
  export { default as TextInput } from './TextInput/TextInput';
3
3
  export { default as SelectInput } from './SelectInput/SelectInput';
4
- export { default as EmployeePicker } from './EmployeePicker/EmployeePicker';
4
+ export { default as DropdownPicker } from './DropdownPicker/DropdownPicker';
@@ -0,0 +1,15 @@
1
+ /// <reference types="react" />
2
+ import HookFormInputProps from '@models/types/HookFormInputProps';
3
+ import HookFormDropdownPickerProps from '@models/prop-types/HookFormDropdownPickerProps';
4
+ import { DropdownPickerTexts, FormSelectOption } from '@models/index';
5
+ type Props = {
6
+ hookFormProps: HookFormInputProps;
7
+ inputProps: HookFormDropdownPickerProps;
8
+ items: FormSelectOption[];
9
+ onSearchQueryChange: (query: string) => void;
10
+ onClickSelectedItem: (item: FormSelectOption) => void;
11
+ texts: DropdownPickerTexts;
12
+ isLoading?: boolean;
13
+ };
14
+ declare const HookFormDropdownPicker: ({ hookFormProps, inputProps, items, onSearchQueryChange, onClickSelectedItem, texts, isLoading, }: Props) => import("react").JSX.Element;
15
+ export default HookFormDropdownPicker;
@@ -3,4 +3,4 @@ export { default as HookFormRadioInput } from './RadioInput/HookFormRadioInput';
3
3
  export { default as HookFormSelectInput } from './SelectInput/HookFormSelectInput';
4
4
  export { default as HookFormTextAreaInput } from './TextAreaInput/HookFormTextAreaInput';
5
5
  export { default as HookFormTextInput } from './TextInput/HookFormTextInput';
6
- export { default as HookFormEmployeePicker } from './EmployeePicker/HookFormEmployeePicker';
6
+ export { default as HookFormDropdownPicker } from './DropdownPicker/HookFormDropdownPicker';
@@ -4,6 +4,7 @@ type InputContainerProps = {
4
4
  label: string;
5
5
  hidden?: boolean;
6
6
  children: React.ReactNode;
7
+ className?: string;
7
8
  };
8
- declare const InputContainer: ({ withoutLabel, label, hidden, children }: InputContainerProps) => import("react").JSX.Element;
9
+ declare const InputContainer: ({ withoutLabel, label, hidden, children, className, }: InputContainerProps) => import("react").JSX.Element;
9
10
  export default InputContainer;
@@ -0,0 +1,15 @@
1
+ /// <reference types="react" />
2
+ import { DropdownPickerTexts, FormSelectOption } from '@models/index';
3
+ type Props = {
4
+ show: boolean;
5
+ onCancel: () => void;
6
+ items: FormSelectOption[];
7
+ currentSelection: FormSelectOption | null;
8
+ onSelectionChange: (item: FormSelectOption | null) => void;
9
+ onClickSelectedItem: (item: FormSelectOption) => void;
10
+ onSearchQueryChange: (query: string) => void;
11
+ texts: DropdownPickerTexts;
12
+ isLoading?: boolean;
13
+ };
14
+ declare const SimplePicker: ({ show, onCancel, items, currentSelection, onSelectionChange, onClickSelectedItem, onSearchQueryChange, texts, isLoading, }: Props) => import("react").JSX.Element;
15
+ export default SimplePicker;
@@ -8,3 +8,4 @@ export { default as Badge } from './Badge/Badge';
8
8
  export { default as Collapse } from './Collapse/Collapse';
9
9
  export { default as InputContainer } from './InputContainer/InputContainer';
10
10
  export { default as InvalidFeedback } from './InvalidFeedback/InvalidFeedback';
11
+ export { default as SimplePicker } from './SimplePicker/SimplePicker';
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import { AxiosInstance } from 'axios';
3
3
  import { LinkProps } from 'react-router-dom';
4
- import { AxiosTexts, ConfirmTexts, EmployeeSearchModalTexts, FormValidationTexts, HomeDashboardTexts } from '@models/index';
4
+ import { AxiosTexts, ConfirmTexts, FormSubmitTexts, FormValidationTexts, HomeDashboardTexts } from '@models/index';
5
5
  interface ILuminusComponentsContext {
6
6
  axiosInstance: AxiosInstance;
7
7
  LinkComponent: React.ForwardRefExoticComponent<LinkProps & React.RefAttributes<HTMLAnchorElement>>;
@@ -9,8 +9,8 @@ interface ILuminusComponentsContext {
9
9
  axiosTexts: AxiosTexts;
10
10
  confirmTexts: ConfirmTexts;
11
11
  formValidationTexts: FormValidationTexts;
12
- employeePickerModalTexts: EmployeeSearchModalTexts;
13
12
  homeDashboardTexts: HomeDashboardTexts;
13
+ formSubmitTexts: FormSubmitTexts;
14
14
  }
15
15
  declare const LuminusComponentsContext: import("react").Context<ILuminusComponentsContext>;
16
16
  export default LuminusComponentsContext;
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import { LinkProps } from 'react-router-dom';
3
3
  import { AxiosInstance } from 'axios';
4
- import { AxiosTexts, ConfirmTexts, EmployeeSearchModalTexts, FormValidationTexts, HomeDashboardTexts } from '@models/index';
4
+ import { AxiosTexts, ConfirmTexts, FormSubmitTexts, FormValidationTexts, HomeDashboardTexts } from '@models/index';
5
5
  type Props = {
6
6
  axiosInstance: AxiosInstance;
7
7
  LinkComponent: React.ForwardRefExoticComponent<LinkProps & React.RefAttributes<HTMLAnchorElement>>;
@@ -9,9 +9,9 @@ type Props = {
9
9
  axiosTexts: AxiosTexts;
10
10
  confirmTexts: ConfirmTexts;
11
11
  formValidationTexts: FormValidationTexts;
12
- employeePickerModalTexts: EmployeeSearchModalTexts;
13
12
  homeDashboardTexts: HomeDashboardTexts;
13
+ formSubmitTexts: FormSubmitTexts;
14
14
  children: React.ReactNode;
15
15
  };
16
- declare const LuminusComponentsProvider: ({ axiosInstance, LinkComponent, language, axiosTexts, confirmTexts, formValidationTexts, employeePickerModalTexts, homeDashboardTexts, children, }: Props) => import("react").JSX.Element;
16
+ declare const LuminusComponentsProvider: ({ axiosInstance, LinkComponent, language, axiosTexts, confirmTexts, formValidationTexts, homeDashboardTexts, formSubmitTexts, children, }: Props) => import("react").JSX.Element;
17
17
  export default LuminusComponentsProvider;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./InvalidFeedback.module-DrVBvau3.js"),t=require("react"),d=require("./Modal-dXyx77X0.js"),j=require("./useConfirm-BCj1t5rw.js"),p=({children:u})=>{const[o,n]=t.useState(!1),[s,r]=t.useState(""),i=t.useCallback(x=>{n(!0),r(x)},[]),l=t.useCallback(()=>{n(!1)},[]),a=t.useMemo(()=>({show:o,text:s,showConfirm:i,hideConfirm:l}),[o,s,i,l]);return e.jsxRuntimeExports.jsxs(e.ConfirmContext.Provider,{value:a,children:[e.jsxRuntimeExports.jsx(f,{}),u]})},g=({axiosInstance:u,LinkComponent:o,language:n,axiosTexts:s,confirmTexts:r,formValidationTexts:i,employeePickerModalTexts:l,homeDashboardTexts:a,children:x})=>{const m=t.useMemo(()=>({axiosInstance:u,LinkComponent:o,language:n,axiosTexts:s,confirmTexts:r,formValidationTexts:i,employeePickerModalTexts:l,homeDashboardTexts:a}),[u,o,n,s,r,i,l,a]);return e.jsxRuntimeExports.jsx(e.LuminusComponentsContext.Provider,{value:m,children:e.jsxRuntimeExports.jsxs(p,{children:[e.jsxRuntimeExports.jsx(e.Ie,{}),x]})})},v=({children:u})=>{const[o,n]=t.useState(!1),[s]=t.useState(new Set),r=t.useCallback(a=>{s.add(a),n(!0)},[s]),i=t.useCallback(a=>{s.delete(a),s.size===0&&n(!1)},[s]),l=t.useMemo(()=>({isLoading:o,startLoading:r,stopLoading:i}),[o,r,i]);return e.jsxRuntimeExports.jsxs(e.LoadingContext.Provider,{value:l,children:[o&&e.jsxRuntimeExports.jsx(d.Loading,{}),u]})},b=({children:u})=>{const o=e.useAxios(),n=t.useCallback(()=>{const c=localStorage.getItem("user")??null;return c?JSON.parse(c):null},[]),[s,r]=t.useState(n()),i=t.useCallback(async()=>{let c=null;return await o.get("/user/detail").then(C=>{c=C.data}).catch(()=>{c=null}),localStorage.setItem("user",JSON.stringify(c)),c},[o]),l=t.useCallback(()=>{localStorage.removeItem("user")},[]),a=t.useCallback(async()=>{const c=await i();return c?(r(c),!0):!1},[i]),x=t.useCallback(()=>{l(),r(null)},[l]),m=t.useMemo(()=>({user:s,loginUser:a,logoutUser:x}),[s,a,x]);return t.useEffect(()=>{r(n())},[n]),e.jsxRuntimeExports.jsx(e.UserContext.Provider,{value:m,children:u})},f=()=>{const{confirmTexts:u}=t.useContext(e.LuminusComponentsContext),{onConfirm:o,onCancel:n,text:s,show:r}=j.useConfirm();return e.jsxRuntimeExports.jsx(d.Modal,{show:r,size:"sm",centered:!0,onHide:n,children:e.jsxRuntimeExports.jsxs(d.Modal.Body,{children:[e.jsxRuntimeExports.jsx("div",{className:"mb-5 text-center",children:e.jsxRuntimeExports.jsx(d.Typography,{variant:"h6",children:s})}),e.jsxRuntimeExports.jsxs("div",{className:"w-100 d-flex gap-5",children:[e.jsxRuntimeExports.jsx("button",{type:"button",className:"btn btn-secondary w-100",onClick:n,children:u.no}),e.jsxRuntimeExports.jsx("button",{type:"button",className:"btn btn-primary w-100 ml",onClick:o,children:u.yes})]})]})})};exports.LoadingContext=e.LoadingContext;exports.LuminusComponentsContext=e.LuminusComponentsContext;exports.UserContext=e.UserContext;exports.LoadingProvider=v;exports.LuminusComponentsProvider=g;exports.UserProvider=b;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./SimplePicker.module-DnODgYFl.js"),l=require("react"),v=require("./DataKey-Bo883ncO.js"),Fe=require("./useConfirm-5bscOMVZ.js"),a=require("./hasClass-C-64QyIl.js"),Ie=require("react-dom");function We(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const s in t)if(s!=="default"){const n=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(e,s,n.get?n:{enumerable:!0,get:()=>t[s]})}}return e.default=t,Object.freeze(e)}const h=We(l),$e=({children:t})=>{const[e,s]=l.useState(!1),[n,r]=l.useState(""),i=l.useCallback(g=>{s(!0),r(g)},[]),f=l.useCallback(()=>{s(!1)},[]),u=l.useMemo(()=>({show:e,text:n,showConfirm:i,hideConfirm:f}),[e,n,i,f]);return o.jsxRuntimeExports.jsxs(o.ConfirmContext.Provider,{value:u,children:[o.jsxRuntimeExports.jsx(ft,{}),t]})},Ue=({axiosInstance:t,LinkComponent:e,language:s,axiosTexts:n,confirmTexts:r,formValidationTexts:i,homeDashboardTexts:f,formSubmitTexts:u,children:g})=>{const x=l.useMemo(()=>({axiosInstance:t,LinkComponent:e,language:s,axiosTexts:n,confirmTexts:r,formValidationTexts:i,homeDashboardTexts:f,formSubmitTexts:u}),[t,e,s,n,r,i,f,u]);return o.jsxRuntimeExports.jsx(o.LuminusComponentsContext.Provider,{value:x,children:o.jsxRuntimeExports.jsxs($e,{children:[o.jsxRuntimeExports.jsx(o.Ie,{}),g]})})},Pe=({children:t})=>{const[e,s]=l.useState(!1),[n]=l.useState(new Set),r=l.useCallback(u=>{n.add(u),s(!0)},[n]),i=l.useCallback(u=>{n.delete(u),n.size===0&&s(!1)},[n]),f=l.useMemo(()=>({isLoading:e,startLoading:r,stopLoading:i}),[e,r,i]);return o.jsxRuntimeExports.jsxs(o.LoadingContext.Provider,{value:f,children:[e&&o.jsxRuntimeExports.jsx(v.Loading,{}),t]})},_e=({children:t})=>{const e=o.useAxios(),s=l.useCallback(()=>{const m=localStorage.getItem("user")??null;return m?JSON.parse(m):null},[]),[n,r]=l.useState(s()),i=l.useCallback(async()=>{let m=null;return await e.get("/user/detail").then(R=>{m=R.data}).catch(()=>{m=null}),localStorage.setItem("user",JSON.stringify(m)),m},[e]),f=l.useCallback(()=>{localStorage.removeItem("user")},[]),u=l.useCallback(async()=>{const m=await i();return m?(r(m),!0):!1},[i]),g=l.useCallback(()=>{f(),r(null)},[f]),x=l.useMemo(()=>({user:n,loginUser:u,logoutUser:g}),[n,u,g]);return l.useEffect(()=>{r(s())},[s]),o.jsxRuntimeExports.jsx(o.UserContext.Provider,{value:x,children:t})},He=t=>h.forwardRef((e,s)=>o.jsxRuntimeExports.jsx("div",{...e,ref:s,className:o.classNames(e.className,t)})),qe={"aria-label":a.PropTypes.string,onClick:a.PropTypes.func,variant:a.PropTypes.oneOf(["white"])},me=h.forwardRef(({className:t,variant:e,"aria-label":s="Close",...n},r)=>o.jsxRuntimeExports.jsx("button",{ref:r,type:"button",className:o.classNames("btn-close",e&&`btn-close-${e}`,t),"aria-label":s,...n}));me.displayName="CloseButton";me.propTypes=qe;const Ke=me;var J;function he(t){if((!J&&J!==0||t)&&a.canUseDOM){var e=document.createElement("div");e.style.position="absolute",e.style.top="-9999px",e.style.width="50px",e.style.height="50px",e.style.overflow="scroll",document.body.appendChild(e),J=e.offsetWidth-e.clientWidth,document.body.removeChild(e)}return J}function ce(t){t===void 0&&(t=a.ownerDocument());try{var e=t.activeElement;return!e||!e.nodeName?null:e}catch{return t.body}}function ze(t=document){const e=t.defaultView;return Math.abs(e.innerWidth-t.documentElement.clientWidth)}const xe=v.dataAttr("modal-open");class Ge{constructor({ownerDocument:e,handleContainerOverflow:s=!0,isRTL:n=!1}={}){this.handleContainerOverflow=s,this.isRTL=n,this.modals=[],this.ownerDocument=e}getScrollbarWidth(){return ze(this.ownerDocument)}getElement(){return(this.ownerDocument||document).body}setModalAttributes(e){}removeModalAttributes(e){}setContainerStyle(e){const s={overflow:"hidden"},n=this.isRTL?"paddingLeft":"paddingRight",r=this.getElement();e.style={overflow:r.style.overflow,[n]:r.style[n]},e.scrollBarWidth&&(s[n]=`${parseInt(a.style(r,n)||"0",10)+e.scrollBarWidth}px`),r.setAttribute(xe,""),a.style(r,s)}reset(){[...this.modals].forEach(e=>this.remove(e))}removeContainerStyle(e){const s=this.getElement();s.removeAttribute(xe),Object.assign(s.style,e.style)}add(e){let s=this.modals.indexOf(e);return s!==-1||(s=this.modals.length,this.modals.push(e),this.setModalAttributes(e),s!==0)||(this.state={scrollBarWidth:this.getScrollbarWidth(),style:{}},this.handleContainerOverflow&&this.setContainerStyle(this.state)),s}remove(e){const s=this.modals.indexOf(e);s!==-1&&(this.modals.splice(s,1),!this.modals.length&&this.handleContainerOverflow&&this.removeContainerStyle(this.state),this.removeModalAttributes(e))}isTopModal(e){return!!this.modals.length&&this.modals[this.modals.length-1]===e}}const fe=Ge,Ve=["show","role","className","style","children","backdrop","keyboard","onBackdropClick","onEscapeKeyDown","transition","runTransition","backdropTransition","runBackdropTransition","autoFocus","enforceFocus","restoreFocus","restoreFocusOptions","renderDialog","renderBackdrop","manager","container","onShow","onHide","onExit","onExited","onExiting","onEnter","onEntering","onEntered"];function Xe(t,e){if(t==null)return{};var s={},n=Object.keys(t),r,i;for(i=0;i<n.length;i++)r=n[i],!(e.indexOf(r)>=0)&&(s[r]=t[r]);return s}let de;function Ye(t){return de||(de=new fe({ownerDocument:t==null?void 0:t.document})),de}function Je(t){const e=a.useWindow(),s=t||Ye(e),n=l.useRef({dialog:null,backdrop:null});return Object.assign(n.current,{add:()=>s.add(n.current),remove:()=>s.remove(n.current),isTopModal:()=>s.isTopModal(n.current),setDialogRef:l.useCallback(r=>{n.current.dialog=r},[]),setBackdropRef:l.useCallback(r=>{n.current.backdrop=r},[])})}const Ce=l.forwardRef((t,e)=>{let{show:s=!1,role:n="dialog",className:r,style:i,children:f,backdrop:u=!0,keyboard:g=!0,onBackdropClick:x,onEscapeKeyDown:m,transition:R,runTransition:j,backdropTransition:M,runBackdropTransition:Q,autoFocus:U=!0,enforceFocus:Z=!0,restoreFocus:w=!0,restoreFocusOptions:ee,renderDialog:P,renderBackdrop:te=d=>o.jsxRuntimeExports.jsx("div",Object.assign({},d)),manager:se,container:ne,onShow:_,onHide:A=()=>{},onExit:oe,onExited:D,onExiting:H,onEnter:q,onEntering:K,onEntered:z}=t,re=Xe(t,Ve);const C=a.useWindow(),N=a.useWaitForDOMRef(ne),p=Je(se),ae=a.useMounted(),G=v.usePrevious(s),[b,T]=l.useState(!s),E=l.useRef(null);l.useImperativeHandle(e,()=>p,[p]),a.canUseDOM&&!G&&s&&(E.current=ce(C==null?void 0:C.document)),s&&b&&T(!1);const y=a.useEventCallback(()=>{if(p.add(),k.current=a.listen(document,"keydown",le),I.current=a.listen(document,"focus",()=>setTimeout(ie),!0),_&&_(),U){var d,Y;const $=ce((d=(Y=p.dialog)==null?void 0:Y.ownerDocument)!=null?d:C==null?void 0:C.document);p.dialog&&$&&!a.contains(p.dialog,$)&&(E.current=$,p.dialog.focus())}}),F=a.useEventCallback(()=>{if(p.remove(),k.current==null||k.current(),I.current==null||I.current(),w){var d;(d=E.current)==null||d.focus==null||d.focus(ee),E.current=null}});l.useEffect(()=>{!s||!N||y()},[s,N,y]),l.useEffect(()=>{b&&F()},[b,F]),a.useWillUnmount(()=>{F()});const ie=a.useEventCallback(()=>{if(!Z||!ae()||!p.isTopModal())return;const d=ce(C==null?void 0:C.document);p.dialog&&d&&!a.contains(p.dialog,d)&&p.dialog.focus()}),V=a.useEventCallback(d=>{d.target===d.currentTarget&&(x==null||x(d),u===!0&&A())}),le=a.useEventCallback(d=>{g&&a.isEscKey(d)&&p.isTopModal()&&(m==null||m(d),d.defaultPrevented||A())}),I=l.useRef(),k=l.useRef(),X=(...d)=>{T(!0),D==null||D(...d)};if(!N)return null;const S=Object.assign({role:n,ref:p.setDialogRef,"aria-modal":n==="dialog"?!0:void 0},re,{style:i,className:r,tabIndex:-1});let W=P?P(S):o.jsxRuntimeExports.jsx("div",Object.assign({},S,{children:h.cloneElement(f,{role:"document"})}));W=a.renderTransition(R,j,{unmountOnExit:!0,mountOnEnter:!0,appear:!0,in:!!s,onExit:oe,onExiting:H,onExited:X,onEnter:q,onEntering:K,onEntered:z,children:W});let O=null;return u&&(O=te({ref:p.setBackdropRef,onClick:V}),O=a.renderTransition(M,Q,{in:!!s,appear:!0,mountOnEnter:!0,unmountOnExit:!0,children:O})),o.jsxRuntimeExports.jsx(o.jsxRuntimeExports.Fragment,{children:Ie.createPortal(o.jsxRuntimeExports.jsxs(o.jsxRuntimeExports.Fragment,{children:[O,W]}),N)})});Ce.displayName="Modal";const Qe=Object.assign(Ce,{Manager:fe});function Ze(t,e){t.classList?t.classList.add(e):a.hasClass(t,e)||(typeof t.className=="string"?t.className=t.className+" "+e:t.setAttribute("class",(t.className&&t.className.baseVal||"")+" "+e))}function Ee(t,e){return t.replace(new RegExp("(^|\\s)"+e+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}function et(t,e){t.classList?t.classList.remove(e):typeof t.className=="string"?t.className=Ee(t.className,e):t.setAttribute("class",Ee(t.className&&t.className.baseVal||"",e))}const L={FIXED_CONTENT:".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",STICKY_CONTENT:".sticky-top",NAVBAR_TOGGLER:".navbar-toggler"};class tt extends fe{adjustAndStore(e,s,n){const r=s.style[e];s.dataset[e]=r,a.style(s,{[e]:`${parseFloat(a.style(s,e))+n}px`})}restore(e,s){const n=s.dataset[e];n!==void 0&&(delete s.dataset[e],a.style(s,{[e]:n}))}setContainerStyle(e){super.setContainerStyle(e);const s=this.getElement();if(Ze(s,"modal-open"),!e.scrollBarWidth)return;const n=this.isRTL?"paddingLeft":"paddingRight",r=this.isRTL?"marginLeft":"marginRight";v.qsa(s,L.FIXED_CONTENT).forEach(i=>this.adjustAndStore(n,i,e.scrollBarWidth)),v.qsa(s,L.STICKY_CONTENT).forEach(i=>this.adjustAndStore(r,i,-e.scrollBarWidth)),v.qsa(s,L.NAVBAR_TOGGLER).forEach(i=>this.adjustAndStore(r,i,e.scrollBarWidth))}removeContainerStyle(e){super.removeContainerStyle(e);const s=this.getElement();et(s,"modal-open");const n=this.isRTL?"paddingLeft":"paddingRight",r=this.isRTL?"marginLeft":"marginRight";v.qsa(s,L.FIXED_CONTENT).forEach(i=>this.restore(n,i)),v.qsa(s,L.STICKY_CONTENT).forEach(i=>this.restore(r,i)),v.qsa(s,L.NAVBAR_TOGGLER).forEach(i=>this.restore(r,i))}}let ue;function st(t){return ue||(ue=new tt(t)),ue}const ye=h.forwardRef(({className:t,bsPrefix:e,as:s="div",...n},r)=>(e=a.useBootstrapPrefix(e,"modal-body"),o.jsxRuntimeExports.jsx(s,{ref:r,className:o.classNames(t,e),...n})));ye.displayName="ModalBody";const nt=ye,ot=h.createContext({onHide(){}}),Re=ot,je=h.forwardRef(({bsPrefix:t,className:e,contentClassName:s,centered:n,size:r,fullscreen:i,children:f,scrollable:u,...g},x)=>{t=a.useBootstrapPrefix(t,"modal");const m=`${t}-dialog`,R=typeof i=="string"?`${t}-fullscreen-${i}`:`${t}-fullscreen`;return o.jsxRuntimeExports.jsx("div",{...g,ref:x,className:o.classNames(m,e,r&&`${t}-${r}`,n&&`${m}-centered`,u&&`${m}-scrollable`,i&&R),children:o.jsxRuntimeExports.jsx("div",{className:o.classNames(`${t}-content`,s),children:f})})});je.displayName="ModalDialog";const be=je,Me=h.forwardRef(({className:t,bsPrefix:e,as:s="div",...n},r)=>(e=a.useBootstrapPrefix(e,"modal-footer"),o.jsxRuntimeExports.jsx(s,{ref:r,className:o.classNames(t,e),...n})));Me.displayName="ModalFooter";const rt=Me,at=h.forwardRef(({closeLabel:t="Close",closeVariant:e,closeButton:s=!1,onHide:n,children:r,...i},f)=>{const u=l.useContext(Re),g=a.useEventCallback(()=>{u==null||u.onHide(),n==null||n()});return o.jsxRuntimeExports.jsxs("div",{ref:f,...i,children:[r,s&&o.jsxRuntimeExports.jsx(Ke,{"aria-label":t,variant:e,onClick:g})]})}),it=at,we=h.forwardRef(({bsPrefix:t,className:e,closeLabel:s="Close",closeButton:n=!1,...r},i)=>(t=a.useBootstrapPrefix(t,"modal-header"),o.jsxRuntimeExports.jsx(it,{ref:i,...r,className:o.classNames(e,t),closeLabel:s,closeButton:n})));we.displayName="ModalHeader";const lt=we,ct=He("h4"),Ne=h.forwardRef(({className:t,bsPrefix:e,as:s=ct,...n},r)=>(e=a.useBootstrapPrefix(e,"modal-title"),o.jsxRuntimeExports.jsx(s,{ref:r,className:o.classNames(t,e),...n})));Ne.displayName="ModalTitle";const dt=Ne;function ut(t){return o.jsxRuntimeExports.jsx(a.Fade,{...t,timeout:null})}function mt(t){return o.jsxRuntimeExports.jsx(a.Fade,{...t,timeout:null})}const Te=h.forwardRef(({bsPrefix:t,className:e,style:s,dialogClassName:n,contentClassName:r,children:i,dialogAs:f=be,"data-bs-theme":u,"aria-labelledby":g,"aria-describedby":x,"aria-label":m,show:R=!1,animation:j=!0,backdrop:M=!0,keyboard:Q=!0,onEscapeKeyDown:U,onShow:Z,onHide:w,container:ee,autoFocus:P=!0,enforceFocus:te=!0,restoreFocus:se=!0,restoreFocusOptions:ne,onEntered:_,onExit:A,onExiting:oe,onEnter:D,onEntering:H,onExited:q,backdropClassName:K,manager:z,...re},C)=>{const[N,p]=l.useState({}),[ae,G]=l.useState(!1),b=l.useRef(!1),T=l.useRef(!1),E=l.useRef(null),[y,F]=a.useCallbackRef(),ie=a.useMergedRefs(C,F),V=a.useEventCallback(w),le=a.useIsRTL();t=a.useBootstrapPrefix(t,"modal");const I=l.useMemo(()=>({onHide:V}),[V]);function k(){return z||st({isRTL:le})}function X(c){if(!a.canUseDOM)return;const B=k().getScrollbarWidth()>0,ge=c.scrollHeight>a.ownerDocument(c).documentElement.clientHeight;p({paddingRight:B&&!ge?he():void 0,paddingLeft:!B&&ge?he():void 0})}const S=a.useEventCallback(()=>{y&&X(y.dialog)});a.useWillUnmount(()=>{a.removeEventListener(window,"resize",S),E.current==null||E.current()});const W=()=>{b.current=!0},O=c=>{b.current&&y&&c.target===y.dialog&&(T.current=!0),b.current=!1},d=()=>{G(!0),E.current=a.transitionEnd(y.dialog,()=>{G(!1)})},Y=c=>{c.target===c.currentTarget&&d()},$=c=>{if(M==="static"){Y(c);return}if(T.current||c.target!==c.currentTarget){T.current=!1;return}w==null||w()},ke=c=>{Q?U==null||U(c):(c.preventDefault(),M==="static"&&d())},Se=(c,B)=>{c&&X(c),D==null||D(c,B)},Oe=c=>{E.current==null||E.current(),A==null||A(c)},Be=(c,B)=>{H==null||H(c,B),a.addEventListener(window,"resize",S)},Le=c=>{c&&(c.style.display=""),q==null||q(c),a.removeEventListener(window,"resize",S)},Ae=l.useCallback(c=>o.jsxRuntimeExports.jsx("div",{...c,className:o.classNames(`${t}-backdrop`,K,!j&&"show")}),[j,K,t]),pe={...s,...N};pe.display="block";const De=c=>o.jsxRuntimeExports.jsx("div",{role:"dialog",...c,style:pe,className:o.classNames(e,t,ae&&`${t}-static`,!j&&"show"),onClick:M?$:void 0,onMouseUp:O,"data-bs-theme":u,"aria-label":m,"aria-labelledby":g,"aria-describedby":x,children:o.jsxRuntimeExports.jsx(f,{...re,onMouseDown:W,className:n,contentClassName:r,children:i})});return o.jsxRuntimeExports.jsx(Re.Provider,{value:I,children:o.jsxRuntimeExports.jsx(Qe,{show:R,ref:ie,backdrop:M,container:ee,keyboard:!0,autoFocus:P,enforceFocus:te,restoreFocus:se,restoreFocusOptions:ne,onEscapeKeyDown:ke,onShow:Z,onHide:w,onEnter:Se,onEntering:Be,onEntered:_,onExit:Oe,onExiting:oe,onExited:Le,manager:k(),transition:j?ut:void 0,backdropTransition:j?mt:void 0,renderBackdrop:Ae,renderDialog:De})})});Te.displayName="Modal";const ve=Object.assign(Te,{Body:nt,Header:lt,Title:dt,Footer:rt,Dialog:be,TRANSITION_DURATION:300,BACKDROP_TRANSITION_DURATION:150}),ft=()=>{const{confirmTexts:t}=l.useContext(o.LuminusComponentsContext),{onConfirm:e,onCancel:s,text:n,show:r}=Fe.useConfirm();return o.jsxRuntimeExports.jsx(ve,{show:r,size:"sm",centered:!0,onHide:s,children:o.jsxRuntimeExports.jsxs(ve.Body,{children:[o.jsxRuntimeExports.jsx("div",{className:"mb-5 text-center",children:o.jsxRuntimeExports.jsx(v.Typography,{variant:"h6",children:n})}),o.jsxRuntimeExports.jsxs("div",{className:"w-100 d-flex gap-5",children:[o.jsxRuntimeExports.jsx("button",{type:"button",className:"btn btn-secondary w-100",onClick:s,children:t.no}),o.jsxRuntimeExports.jsx("button",{type:"button",className:"btn btn-primary w-100 ml",onClick:e,children:t.yes})]})]})})};exports.LoadingContext=o.LoadingContext;exports.LuminusComponentsContext=o.LuminusComponentsContext;exports.UserContext=o.UserContext;exports.LoadingProvider=Pe;exports.LuminusComponentsProvider=Ue;exports.UserProvider=_e;