@dynamic-framework/ui-react 1.11.1 → 1.12.1

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 (47) hide show
  1. package/dist/css/dynamic-ui-non-root.css +785 -18
  2. package/dist/css/dynamic-ui-non-root.min.css +1 -1
  3. package/dist/css/dynamic-ui.css +785 -18
  4. package/dist/css/dynamic-ui.min.css +1 -1
  5. package/dist/index.esm.js +76 -155
  6. package/dist/index.esm.js.map +1 -1
  7. package/dist/index.js +85 -162
  8. package/dist/index.js.map +1 -1
  9. package/dist/types/components/DAlert/DAlert.d.ts +15 -0
  10. package/dist/types/components/DAlert/index.d.ts +2 -0
  11. package/dist/types/components/DButton/DButton.d.ts +2 -1
  12. package/dist/types/components/DInputMask/DInputMask.d.ts +16 -0
  13. package/dist/types/components/DInputMask/index.d.ts +2 -0
  14. package/dist/types/components/DModal/DModal.d.ts +2 -2
  15. package/dist/types/components/DToastContainer/useToast.d.ts +2 -2
  16. package/dist/types/components/DTooltip/DTooltip.d.ts +3 -2
  17. package/dist/types/components/config.d.ts +2 -2
  18. package/dist/types/components/index.d.ts +2 -2
  19. package/dist/types/components/interface.d.ts +3 -4
  20. package/dist/types/contexts/DModalContext.d.ts +31 -0
  21. package/dist/types/contexts/DOffcanvasContext.d.ts +31 -0
  22. package/dist/types/contexts/index.d.ts +2 -2
  23. package/dist/types/hooks/index.d.ts +2 -0
  24. package/dist/types/hooks/useDisableBodyScrollEffect.d.ts +1 -0
  25. package/dist/types/hooks/usePortal.d.ts +3 -0
  26. package/package.json +3 -2
  27. package/src/style/abstracts/_maps.scss +1 -1
  28. package/src/style/abstracts/_utilities.scss +2 -5
  29. package/src/style/abstracts/variables/_box-file.scss +1 -0
  30. package/src/style/abstracts/variables/_modals.scss +4 -0
  31. package/src/style/abstracts/variables/_offcanvas.scss +1 -0
  32. package/src/style/abstracts/variables/_typography.scss +1 -0
  33. package/src/style/components/_+import.scss +2 -1
  34. package/src/style/components/{_d-toast.scss → _d-alert.scss} +12 -11
  35. package/src/style/components/_d-box-file.scss +2 -0
  36. package/src/style/components/_d-button.scss +67 -3
  37. package/src/style/components/_d-modal.scss +16 -4
  38. package/src/style/components/_d-offcanvas.scss +4 -0
  39. package/src/style/components/_d-stepper-desktop.scss +1 -1
  40. package/src/style/components/_d-stepper-mobile.scss +5 -1
  41. package/src/style/components/_d-tooltip.scss +35 -0
  42. package/dist/types/components/DAlertBox/DAlertBox.d.ts +0 -9
  43. package/dist/types/components/DAlertBox/index.d.ts +0 -2
  44. package/dist/types/components/DToast/DToast.d.ts +0 -14
  45. package/dist/types/components/DToast/index.d.ts +0 -2
  46. package/dist/types/contexts/ModalContext.d.ts +0 -44
  47. package/dist/types/contexts/OffcanvasContext.d.ts +0 -44
package/dist/index.esm.js CHANGED
@@ -7,6 +7,7 @@ import { SplideSlide, Splide } from '@splidejs/react-splide';
7
7
  import currency from 'currency.js';
8
8
  import DatePicker from 'react-datepicker';
9
9
  import { parseISO, format, getMonth, getYear } from 'date-fns';
10
+ import { InputMask } from '@react-input/mask';
10
11
  import ResponsivePagination from 'react-responsive-pagination';
11
12
  import { useFloating, offset, flip, shift, autoUpdate, useClick, useDismiss, useRole, useInteractions, useId, FloatingFocusManager, arrow, useHover, useFocus, FloatingPortal, FloatingArrow } from '@floating-ui/react';
12
13
  import ContentLoader from 'react-content-loader';
@@ -53,6 +54,8 @@ const ALERT_TYPE_ICON = {
53
54
  info: 'info-circle',
54
55
  dark: 'info-circle',
55
56
  light: 'info-circle',
57
+ primary: 'info-circle',
58
+ secondary: 'info-circle',
56
59
  };
57
60
 
58
61
  function DIcon({ icon, theme, style, className, size = '1.5rem', loading = false, loadingDuration = 1.8, hasCircle = false, circleSize = `calc(var(--${PREFIX_BS}icon-component-size) * 1)`, color, backgroundColor, familyClass = 'bi', familyPrefix = 'bi-', }) {
@@ -92,18 +95,13 @@ function DSummaryCard({ title, description, icon, iconSize, iconTheme, Summary,
92
95
  return (jsxs("div", { children: [jsx("h6", { className: "fw-bold fs-6", children: title }), jsx("p", { className: "fs-8", children: description }), jsxs("div", { className: "bg-white rounded p-4 d-flex gap-3 shadow-sm text-gray-700 fs-8", children: [jsx(DIcon, { icon: icon, theme: iconTheme, size: iconSize }), Summary] })] }));
93
96
  }
94
97
 
95
- function DToast({ type = 'success', icon, iconFamilyClass, iconFamilyPrefix, showIcon = false, showClose, onClose, children, id, className, style, }) {
96
- const generateClasses = useMemo(() => (Object.assign({ alert: true, [`alert-${type}`]: true, 'fade show': !!showClose }, className && { [className]: true })), [type, showClose, className]);
98
+ function DAlert({ type = 'success', icon, iconFamilyClass, iconFamilyPrefix, showIcon = true, soft = false, showClose, onClose, children, id, className, style, }) {
99
+ const generateClasses = useMemo(() => (Object.assign({ alert: true, [`alert-${type}`]: true, 'fade show': !!showClose, 'alert-soft': soft }, className && { [className]: true })), [type, showClose, soft, className]);
97
100
  const getIcon = useMemo(() => icon || ALERT_TYPE_ICON[type] || '', [icon, type]);
98
101
  const generateStyleVariables = useMemo(() => (Object.assign(Object.assign({}, style), { [`--${PREFIX_BS}alert-component-separator-opacity`]: '0.3' })), [style]);
99
102
  return (jsxs("div", { className: classNames(generateClasses), style: generateStyleVariables, role: "alert", id: id, children: [(showIcon || icon) && (jsx(DIcon, Object.assign({ className: "alert-icon", icon: getIcon }, iconFamilyClass && { familyClass: iconFamilyClass }, iconFamilyPrefix && { familyPrefix: iconFamilyPrefix }))), jsx("div", { className: "alert-text", children: children }), showClose && (jsx("div", { className: "alert-separator" })), showClose && (jsx("button", { type: "button", className: "btn-close", "aria-label": "Close", onClick: onClose, children: jsx(DIcon, { className: "alert-close-icon", icon: "x-lg", familyClass: iconFamilyClass, familyPrefix: iconFamilyPrefix }) }))] }));
100
103
  }
101
104
 
102
- function DAlertBox({ theme = 'box-secondary', icon = 'info-circle', iconFamilyClass, iconFamilyPrefix, children, id, className, style, }) {
103
- const generateClasses = useMemo(() => (Object.assign({ 'alert alert-box': true, [`alert-${theme}`]: true }, className && { [className]: true })), [theme, className]);
104
- return (jsxs("div", { className: classNames(generateClasses), style: style, role: "alert", id: id, children: [jsx(DIcon, Object.assign({ className: "alert-icon", icon: icon }, iconFamilyClass && { familyClass: iconFamilyClass }, iconFamilyPrefix && { familyPrefix: iconFamilyPrefix })), jsx("div", { className: "alert-text", children: children })] }));
105
- }
106
-
107
105
  function DBoxFile(_a) {
108
106
  var { icon = 'cloud-upload', iconFamilyClass, iconFamilyPrefix, disabled = false, children, className, style } = _a, dropzoneOptions = __rest(_a, ["icon", "iconFamilyClass", "iconFamilyPrefix", "disabled", "children", "className", "style"]);
109
107
  const { acceptedFiles, getRootProps, getInputProps, } = useDropzone(Object.assign({ disabled }, dropzoneOptions));
@@ -116,7 +114,7 @@ function DBoxFile(_a) {
116
114
  }), { children: [jsx("input", Object.assign({}, getInputProps())), jsx(DIcon, { icon: icon, familyClass: iconFamilyClass, familyPrefix: iconFamilyPrefix }), jsx("div", { className: "d-box-content", children: children })] })), !!acceptedFiles.length && (jsx("aside", { className: "d-box-files", children: acceptedFiles.map((file) => (jsx("div", { className: "d-box-files-text", children: `${file.name} - ${file.size} bytes` }, file.name))) }))] }));
117
115
  }
118
116
 
119
- function DButton({ theme = 'primary', size, variant, state, text = '', ariaLabel, iconStart, iconStartFamilyClass, iconStartFamilyPrefix, iconEnd, iconEndFamilyClass, iconEndFamilyPrefix, value, type = 'button', pill = false, loading = false, loadingAriaLabel, disabled = false, stopPropagationEnabled = true, className, onClick, }) {
117
+ function DButton({ theme = 'primary', size, variant, state, text = '', ariaLabel, iconStart, iconStartFamilyClass, iconStartFamilyPrefix, iconEnd, iconEndFamilyClass, iconEndFamilyPrefix, value, type = 'button', pill = false, loading = false, loadingAriaLabel, disabled = false, stopPropagationEnabled = true, className, form, onClick, }) {
120
118
  const generateClasses = useMemo(() => {
121
119
  const variantClass = variant
122
120
  ? `btn-${variant}-${theme}`
@@ -143,7 +141,7 @@ function DButton({ theme = 'primary', size, variant, state, text = '', ariaLabel
143
141
  const newAriaLabel = useMemo(() => (loading
144
142
  ? (loadingAriaLabel || ariaLabel || text)
145
143
  : (ariaLabel || text)), [loading, loadingAriaLabel, ariaLabel, text]);
146
- return (jsxs("button", Object.assign({ className: classNames(generateClasses, className), style: generateStyleVariables, type: type, disabled: isDisabled, onClick: clickHandler, "aria-label": newAriaLabel }, value && { value }, { children: [iconStart && (jsx(DIcon, { icon: iconStart, familyClass: iconStartFamilyClass, familyPrefix: iconStartFamilyPrefix })), (text && !loading) && (jsx("span", { children: text })), loading && (jsx("span", { className: "spinner-border spinner-border-sm", role: "status", "aria-hidden": "true", children: jsx("span", { className: "visually-hidden", children: "Loading..." }) })), iconEnd && (jsx(DIcon, { icon: iconEnd, familyClass: iconEndFamilyClass, familyPrefix: iconEndFamilyPrefix }))] })));
144
+ return (jsxs("button", Object.assign({ className: classNames(generateClasses, className), style: generateStyleVariables, type: type, disabled: isDisabled, onClick: clickHandler, "aria-label": newAriaLabel, form: form }, value && { value }, { children: [iconStart && (jsx(DIcon, { icon: iconStart, familyClass: iconStartFamilyClass, familyPrefix: iconStartFamilyPrefix })), (text && !loading) && (jsx("span", { children: text })), loading && (jsx("span", { className: "spinner-border spinner-border-sm", role: "status", "aria-hidden": "true", children: jsx("span", { className: "visually-hidden", children: "Loading..." }) })), iconEnd && (jsx(DIcon, { icon: iconEnd, familyClass: iconEndFamilyClass, familyPrefix: iconEndFamilyPrefix }))] })));
147
145
  }
148
146
 
149
147
  function DCardHeader({ className, style, children, }) {
@@ -249,6 +247,35 @@ function useDContext() {
249
247
  return context;
250
248
  }
251
249
 
250
+ function useDisableBodyScrollEffect(disable) {
251
+ useEffect(() => {
252
+ if (disable) {
253
+ document.body.style.overflow = 'hidden';
254
+ document.body.style.paddingRight = '0';
255
+ }
256
+ else {
257
+ document.body.style.overflow = 'unset';
258
+ document.body.style.paddingRight = 'unset';
259
+ }
260
+ }, [disable]);
261
+ }
262
+
263
+ function usePortal(portalName) {
264
+ const [hasPortal, setHasPortal] = useState(false);
265
+ useEffect(() => {
266
+ const previousPortal = document.querySelector(`#${portalName}`);
267
+ if (previousPortal) {
268
+ previousPortal.remove();
269
+ }
270
+ const portal = document.createElement('div');
271
+ portal.id = portalName;
272
+ portal.className = 'd-portal';
273
+ document.body.appendChild(portal);
274
+ setHasPortal(true);
275
+ }, [portalName]);
276
+ return { created: hasPortal };
277
+ }
278
+
252
279
  /**
253
280
  * useStackState inspired from rooks
254
281
  * @see https://github.com/imbhargav5/rooks/blob/main/packages/rooks/src/hooks/useStackState.ts
@@ -294,73 +321,27 @@ function useStackState(initialList) {
294
321
  return [list, controls];
295
322
  }
296
323
 
297
- const ModalContext = createContext(undefined);
298
- function enhanceModal(Modal, callbacks) {
299
- return function EnhancedModal(_a) {
300
- var { name, payload } = _a, otherProps = __rest(_a, ["name", "payload"]);
301
- useEffect(() => {
302
- if (callbacks === null || callbacks === void 0 ? void 0 : callbacks.onAfterOpen) {
303
- callbacks.onAfterOpen(payload);
304
- }
305
- return () => {
306
- if (callbacks === null || callbacks === void 0 ? void 0 : callbacks.onAfterClose) {
307
- callbacks.onAfterClose({ fromModal: false }, payload);
308
- }
309
- };
310
- }, [payload]);
311
- return (
312
- // eslint-disable-next-line react/jsx-props-no-spreading
313
- jsx(Modal, Object.assign({ name: name, payload: payload }, otherProps)));
314
- };
315
- }
316
- function ModalContextProvider({ portalName, children, availableModals, }) {
317
- const [hasPortal, setHasPortal] = useState(false);
318
- useEffect(() => {
319
- const previousPortal = document.querySelector(`#${portalName}`);
320
- if (previousPortal) {
321
- previousPortal.remove();
322
- }
323
- const portal = document.createElement('div');
324
- portal.id = portalName;
325
- document.body.appendChild(portal);
326
- setHasPortal(true);
327
- }, [portalName]);
324
+ const DModalContext = createContext(undefined);
325
+ function DModalContextProvider({ portalName, children, availableModals, }) {
326
+ const { created } = usePortal(portalName);
328
327
  const [stack, { push, pop, peek }] = useStackState([]);
329
- useEffect(() => {
330
- if (stack.length) {
331
- document.body.style.overflow = 'hidden';
332
- document.body.style.paddingRight = '0';
333
- }
334
- else {
335
- document.body.style.overflow = 'unset';
336
- document.body.style.paddingRight = 'unset';
337
- }
338
- }, [stack.length]);
339
- const openModal = useCallback((modalName, { payload, callbacks } = { payload: {} }) => {
328
+ useDisableBodyScrollEffect(Boolean(stack.length));
329
+ const openModal = useCallback((modalName, payload) => {
340
330
  const Component = availableModals[modalName];
341
331
  if (!Component) {
342
- throw new Error(`there is no component for modal ${modalName}`);
332
+ throw new Error(`there is no component for modal ${modalName.toString()}`);
343
333
  }
344
- const stackItem = {
334
+ push({
345
335
  modalName,
346
336
  Component,
347
337
  payload,
348
- callbacks,
349
- };
350
- if (callbacks === null || callbacks === void 0 ? void 0 : callbacks.onBeforeOpen) {
351
- callbacks.onBeforeOpen(payload);
352
- }
353
- push(stackItem);
338
+ });
354
339
  }, [availableModals, push]);
355
- const closeModal = useCallback((context = { fromModal: false }) => {
356
- var _a;
340
+ const closeModal = useCallback(() => {
357
341
  const stackItem = peek();
358
342
  if (!stackItem) {
359
343
  return;
360
344
  }
361
- if ((_a = stackItem.callbacks) === null || _a === void 0 ? void 0 : _a.onBeforeClose) {
362
- stackItem.callbacks.onBeforeClose(context, stackItem.payload);
363
- }
364
345
  pop();
365
346
  }, [peek, pop]);
366
347
  const value = useMemo(() => ({
@@ -368,86 +349,37 @@ function ModalContextProvider({ portalName, children, availableModals, }) {
368
349
  openModal,
369
350
  closeModal,
370
351
  }), [stack, openModal, closeModal]);
371
- return (jsxs(ModalContext.Provider, { value: value, children: [children, hasPortal && createPortal(jsxs(Fragment, { children: [stack.map(({ Component, modalName, callbacks, payload, }) => {
372
- const EnhancedComponent = enhanceModal(Component, callbacks);
373
- return (jsx(EnhancedComponent, { name: modalName, payload: payload, openModal: openModal, closeModal: closeModal }, modalName));
374
- }), !!stack.length && jsx("div", { className: "modal-backdrop fade show" })] }), document.getElementById(portalName))] }));
352
+ return (jsxs(DModalContext.Provider, { value: value, children: [children, created && createPortal(jsxs(Fragment, { children: [stack.map(({ Component, modalName, payload, }) => (jsx(Component, { name: modalName, payload: payload, openModal: openModal, closeModal: closeModal }, modalName))), !!stack.length && jsx("div", { className: "modal-backdrop fade show" })] }), document.getElementById(portalName))] }));
375
353
  }
376
- function useModalContext() {
377
- const context = useContext(ModalContext);
354
+ function useDModalContext() {
355
+ const context = useContext(DModalContext);
378
356
  if (context === undefined) {
379
357
  throw new Error('useModalContext was used outside of ModalContextProvider');
380
358
  }
381
359
  return context;
382
360
  }
383
361
 
384
- const OffcanvasContext = createContext(undefined);
385
- function enhanceOffcanvas(Offcanvas, callbacks) {
386
- return function EnhancedOffcanvas(_a) {
387
- var { name, payload } = _a, otherProps = __rest(_a, ["name", "payload"]);
388
- useEffect(() => {
389
- if (callbacks === null || callbacks === void 0 ? void 0 : callbacks.onAfterOpen) {
390
- callbacks.onAfterOpen(payload);
391
- }
392
- return () => {
393
- if (callbacks === null || callbacks === void 0 ? void 0 : callbacks.onAfterClose) {
394
- callbacks.onAfterClose({ fromOffcanvas: false }, payload);
395
- }
396
- };
397
- }, [payload]);
398
- return (
399
- // eslint-disable-next-line react/jsx-props-no-spreading
400
- jsx(Offcanvas, Object.assign({ name: name, payload: payload }, otherProps)));
401
- };
402
- }
403
- function OffcanvasContextProvider({ portalName, children, availableOffcanvas, }) {
404
- const [hasPortal, setHasPortal] = useState(false);
405
- useEffect(() => {
406
- const previousPortal = document.querySelector(`#${portalName}`);
407
- if (previousPortal) {
408
- previousPortal.remove();
409
- }
410
- const portal = document.createElement('div');
411
- portal.id = portalName;
412
- document.body.appendChild(portal);
413
- setHasPortal(true);
414
- }, [portalName]);
362
+ const DOffcanvasContext = createContext(undefined);
363
+ function DOffcanvasContextProvider({ portalName, children, availableOffcanvas, }) {
364
+ const { created } = usePortal(portalName);
415
365
  const [stack, { push, pop, peek }] = useStackState([]);
416
- useEffect(() => {
417
- if (stack.length) {
418
- document.body.style.overflow = 'hidden';
419
- document.body.style.paddingRight = '0';
420
- }
421
- else {
422
- document.body.style.overflow = 'unset';
423
- document.body.style.paddingRight = 'unset';
424
- }
425
- }, [stack.length]);
426
- const openOffcanvas = useCallback((offcanvasName, { payload, callbacks } = { payload: {} }) => {
366
+ useDisableBodyScrollEffect(Boolean(stack.length));
367
+ const openOffcanvas = useCallback((offcanvasName, payload) => {
427
368
  const Component = availableOffcanvas[offcanvasName];
428
369
  if (!Component) {
429
370
  throw new Error(`there is no component for offcanvas ${offcanvasName}`);
430
371
  }
431
- const stackItem = {
372
+ push({
432
373
  offcanvasName,
433
374
  Component,
434
375
  payload,
435
- callbacks,
436
- };
437
- if (callbacks === null || callbacks === void 0 ? void 0 : callbacks.onBeforeOpen) {
438
- callbacks.onBeforeOpen(payload);
439
- }
440
- push(stackItem);
376
+ });
441
377
  }, [availableOffcanvas, push]);
442
- const closeOffcanvas = useCallback((context = { fromOffcanvas: false }) => {
443
- var _a;
378
+ const closeOffcanvas = useCallback(() => {
444
379
  const stackItem = peek();
445
380
  if (!stackItem) {
446
381
  return;
447
382
  }
448
- if ((_a = stackItem.callbacks) === null || _a === void 0 ? void 0 : _a.onBeforeClose) {
449
- stackItem.callbacks.onBeforeClose(context, stackItem.payload);
450
- }
451
383
  pop();
452
384
  }, [peek, pop]);
453
385
  const value = useMemo(() => ({
@@ -455,13 +387,10 @@ function OffcanvasContextProvider({ portalName, children, availableOffcanvas, })
455
387
  openOffcanvas,
456
388
  closeOffcanvas,
457
389
  }), [stack, openOffcanvas, closeOffcanvas]);
458
- return (jsxs(OffcanvasContext.Provider, { value: value, children: [children, hasPortal && createPortal(jsxs(Fragment, { children: [stack.map(({ Component, offcanvasName, callbacks, payload, }) => {
459
- const EnhancedComponent = enhanceOffcanvas(Component, callbacks);
460
- return (jsx(EnhancedComponent, { name: offcanvasName, payload: payload, openOffcanvas: openOffcanvas, closeOffcanvas: closeOffcanvas }, offcanvasName));
461
- }), !!stack.length && jsx("div", { className: "offcanvas-backdrop fade show" })] }), document.getElementById(portalName))] }));
390
+ return (jsxs(DOffcanvasContext.Provider, { value: value, children: [children, created && createPortal(jsxs(Fragment, { children: [stack.map(({ Component, offcanvasName, payload, }) => (jsx(Component, { name: offcanvasName, payload: payload, openOffcanvas: openOffcanvas, closeOffcanvas: closeOffcanvas }, offcanvasName))), !!stack.length && jsx("div", { className: "offcanvas-backdrop fade show" })] }), document.getElementById(portalName))] }));
462
391
  }
463
- function useOffcanvasContext() {
464
- const context = useContext(OffcanvasContext);
392
+ function useDOffcanvasContext() {
393
+ const context = useContext(DOffcanvasContext);
465
394
  if (context === undefined) {
466
395
  throw new Error('useOffcanvasContext was used outside of OffcanvasContextProvider');
467
396
  }
@@ -557,10 +486,7 @@ function DInput(_a, ref) {
557
486
  }
558
487
  return inputComponent;
559
488
  }, [floatingLabel, inputComponent, labelComponent]);
560
- return (jsxs("div", { className: classNames({
561
- 'd-input': true,
562
- className: !!className,
563
- }), style: style, children: [label && !floatingLabel && (labelComponent), jsxs("div", { className: "d-input-control", children: [jsxs("div", { className: classNames({
489
+ return (jsxs("div", { className: classNames(Object.assign({ 'd-input': true }, className && { [className]: true })), style: style, children: [label && !floatingLabel && (labelComponent), jsxs("div", { className: "d-input-control", children: [jsxs("div", { className: classNames({
564
490
  'input-group': true,
565
491
  'has-validation': invalid,
566
492
  disabled: disabled || loading,
@@ -619,6 +545,13 @@ function DDatePicker(_a) {
619
545
  return (jsx(DatePicker, Object.assign({ selected: selected, calendarClassName: "d-date-picker", renderCustomHeader: (headerProps) => jsx(DatePickerHeader, Object.assign({}, headerProps)), customInput: (jsx(DDatePickerInput$1, { id: inputId, "aria-label": inputAriaLabel, iconEndAriaLabel: inputActionAriaLabel, iconEnd: inputIcon, className: className, style: style })), customTimeInput: jsx(DDatePickerTime, { id: timeId, label: timeLabel }), selectsRange: selectsRange }, locale && { locale }, props)));
620
546
  }
621
547
 
548
+ function DInputMask(props, ref) {
549
+ return (jsx(InputMask, Object.assign({ ref: ref, component: DInput$1 }, props)));
550
+ }
551
+ const ForwardedDInputMask = forwardRef(DInputMask);
552
+ ForwardedDInputMask.displayName = 'DInputMask';
553
+ var DInputMask$1 = ForwardedDInputMask;
554
+
622
555
  function DInputCounter(_a, ref) {
623
556
  var { minValue, maxValue, value = minValue, invalid, iconStart = 'dash-square', iconEnd = 'plus-square', iconStartAriaLabel = 'decrease action', iconEndAriaLabel = 'increase action', style, onChange } = _a, props = __rest(_a, ["minValue", "maxValue", "value", "invalid", "iconStart", "iconEnd", "iconStartAriaLabel", "iconEndAriaLabel", "style", "onChange"]);
624
557
  const inputRef = useProvidedRefOrCreate(ref);
@@ -837,7 +770,7 @@ function DInputPin({ id, label = '', labelIcon, labelIconFamilyClass, labelIconF
837
770
  }), type: secret ? 'password' : type, "aria-describedby": `${id}State`, inputMode: innerInputMode, id: `pinIndex${index}`, name: `pin-${index}`, maxLength: 1, onChange: nextInput, onKeyDown: prevInput, onFocus: focusInput, onWheel: wheelInput, onClick: preventDefaultEvent, autoComplete: "off", placeholder: placeholder, disabled: disabled || loading, required: true }, type === 'number' && ({ min: 0, max: 9 })), index))), (invalid || valid) && !loading && (jsx("span", { className: "input-group-text", id: `${id}State`, children: jsx(DIcon, { className: "d-input-pin-validation-icon", icon: invalid ? 'exclamation-circle' : 'check', familyClass: iconFamilyClass, familyPrefix: iconFamilyPrefix }) })), loading && (jsx("div", { className: "input-group-text d-input-pin-icon", children: jsx("span", { className: "spinner-border spinner-border-sm", role: "status", "aria-hidden": "true", children: jsx("span", { className: "visually-hidden", children: "Loading..." }) }) }))] }), hint && (jsx("div", { className: "form-text", id: `${id}Hint`, children: hint }))] }));
838
771
  }
839
772
 
840
- function DInputSelect({ id, name, label = '', className, style, options, labelIcon, labelIconFamilyClass, labelIconFamilyPrefix, disabled = false, loading = false, iconStart, iconStartFamilyClass, iconStartFamilyPrefix, iconStartAriaLabel, iconEnd, iconEndFamilyClass, iconEndFamilyPrefix, iconEndAriaLabel, hint, value, floatingLabel = false, valueExtractor, labelExtractor, onChange, onBlur, onIconStartClick, onIconEndClick, }) {
773
+ function DInputSelect({ id, name, label = '', className, style, options = [], labelIcon, labelIconFamilyClass, labelIconFamilyPrefix, disabled = false, loading = false, iconStart, iconStartFamilyClass, iconStartFamilyPrefix, iconStartAriaLabel, iconEnd, iconEndFamilyClass, iconEndFamilyPrefix, iconEndAriaLabel, hint, value, floatingLabel = false, valueExtractor, labelExtractor, onChange, onBlur, onIconStartClick, onIconEndClick, }) {
841
774
  const internalValueExtractor = useCallback((option) => {
842
775
  if (valueExtractor) {
843
776
  return valueExtractor(option);
@@ -961,7 +894,7 @@ function DListItemMovement(_a) {
961
894
  }
962
895
 
963
896
  function DModalHeader({ showCloseButton, onClose, children, className, style, }) {
964
- return (jsxs("div", { className: classNames('modal-header', className), style: style, children: [showCloseButton && (jsx("button", { type: "button", className: "d-modal-close", "aria-label": "Close", onClick: onClose, children: jsx(DIcon, { icon: "x-lg" }) })), children] }));
897
+ return (jsxs("div", { className: classNames('modal-header', className), style: style, children: [jsx("div", { className: "d-modal-slot", children: children }), showCloseButton && (jsx("button", { type: "button", className: "d-modal-close", "aria-label": "Close", onClick: onClose, children: jsx(DIcon, { icon: "x-lg" }) }))] }));
965
898
  }
966
899
 
967
900
  function DModalBody({ children, className, style, }) {
@@ -972,7 +905,7 @@ function DModalFooter({ className, style, actionPlacement = 'fill', children, })
972
905
  return (jsxs(Fragment, { children: [jsx("div", { className: "d-modal-separator" }), jsx("div", { className: classNames(`d-modal-slot modal-footer d-modal-action-${actionPlacement}`, className), style: style, children: children })] }));
973
906
  }
974
907
 
975
- function DModal({ name, className, style, staticBackdrop, scrollable, centered, fullScreen, fullScreenFrom, modalSize, children, }) {
908
+ function DModal({ name, className, style, staticBackdrop, scrollable, centered, fullScreen, fullScreenFrom, size, children, }) {
976
909
  const fullScreenClass = useMemo(() => {
977
910
  if (fullScreen) {
978
911
  if (fullScreenFrom) {
@@ -983,7 +916,7 @@ function DModal({ name, className, style, staticBackdrop, scrollable, centered,
983
916
  return '';
984
917
  }, [fullScreenFrom, fullScreen]);
985
918
  const generateClasses = useMemo(() => (Object.assign({ 'modal fade show': true }, className && { [className]: true })), [className]);
986
- const generateModalDialogClasses = useMemo(() => (Object.assign({ 'modal-dialog': true, 'modal-dialog-centered': !!centered, 'modal-dialog-scrollable': !!scrollable, [fullScreenClass]: !!fullScreen }, modalSize && { [`modal-${modalSize}`]: true })), [fullScreenClass, centered, fullScreen, scrollable, modalSize]);
919
+ const generateModalDialogClasses = useMemo(() => (Object.assign({ 'modal-dialog': true, 'modal-dialog-centered': !!centered, 'modal-dialog-scrollable': !!scrollable, [fullScreenClass]: !!fullScreen }, size && { [`modal-${size}`]: true })), [fullScreenClass, centered, fullScreen, scrollable, size]);
987
920
  return (jsx("div", Object.assign({ className: classNames(generateClasses), id: name, tabIndex: -1, "aria-labelledby": `${name}Label`, "aria-hidden": "false", style: style }, staticBackdrop && ({
988
921
  [`data-${PREFIX_BS}backdrop`]: 'static',
989
922
  [`data-${PREFIX_BS}keyboard`]: 'false',
@@ -1197,22 +1130,11 @@ function DStepper({ options, currentStep, successIcon = 'check', vertical = fals
1197
1130
  return (jsxs("div", { className: className, style: style, children: [jsx("div", { className: `d-block d-${breakpoint}-none`, children: jsx(DStepper$1, { options: options, currentStep: currentStep }) }), jsx("div", { className: `d-none d-${breakpoint}-block`, children: jsx(DStepper$2, { options: options, currentStep: currentStep, successIcon: successIcon, vertical: vertical }) })] }));
1198
1131
  }
1199
1132
 
1200
- const TOOLTIP_FONT_SIZE_BY_SIZE = {
1201
- sm: `var(--${PREFIX_BS}ref-fs-small)`,
1202
- default: `var(--${PREFIX_BS}body-font-size)`,
1203
- lg: `var(--${PREFIX_BS}ref-fs-6)`,
1204
- };
1205
1133
  const ARROW_WIDTH = 8;
1206
1134
  const ARROW_HEIGHT = 4;
1207
1135
  const GAP = 2;
1208
- function DTooltip({ classNameContainer, className, style, offSet = ARROW_HEIGHT + GAP, padding, withFocus = false, withClick = false, withHover = true, open = false, placement = 'top', size, Component, children, }) {
1136
+ function DTooltip({ className, childrenClassName, style, offSet = ARROW_HEIGHT + GAP, padding, withFocus = false, withClick = false, withHover = true, open = false, theme = 'primary', placement = 'top', size, Component, children, }) {
1209
1137
  const [isOpen, setIsOpen] = useState(open);
1210
- const styleVariables = useMemo(() => {
1211
- const defaultFontSize = size
1212
- ? TOOLTIP_FONT_SIZE_BY_SIZE[size]
1213
- : TOOLTIP_FONT_SIZE_BY_SIZE.default;
1214
- return Object.assign(Object.assign({}, style), { background: `var(--${PREFIX_BS}tooltip-bg, var(--${PREFIX_BS}tooltip-component-bg, var(--${PREFIX_BS}secondary)))`, borderRadius: `var(--${PREFIX_BS}tooltip-border-radius, var(--${PREFIX_BS}tooltip-component-border-radius, var(--${PREFIX_BS}border-radius)))`, color: `var(--${PREFIX_BS}tooltip-color, var(--${PREFIX_BS}tooltip-component-color, var(--${PREFIX_BS}white)))`, fontSize: `var(--${PREFIX_BS}tooltip-font-size, var(--${PREFIX_BS}tooltip-component-font-size, ${defaultFontSize}))`, padding: `var(--${PREFIX_BS}tooltip-padding, var(--${PREFIX_BS}tooltip-component-padding, var(--${PREFIX_BS}ref-spacer-2)))`, maxWidth: `var(--${PREFIX_BS}tooltip-max-width, var(--${PREFIX_BS}tooltip-component-max-width, 300px))` });
1215
- }, [size, style]);
1216
1138
  const arrowRef = useRef(null);
1217
1139
  const { refs, context, floatingStyles, } = useFloating({
1218
1140
  open: isOpen,
@@ -1242,9 +1164,8 @@ function DTooltip({ classNameContainer, className, style, offSet = ARROW_HEIGHT
1242
1164
  dismiss,
1243
1165
  role,
1244
1166
  ]);
1245
- return (jsxs(Fragment, { children: [jsx("div", Object.assign({ className: className, ref: refs.setReference }, getReferenceProps(), { children: Component })), jsx(FloatingPortal, { children: isOpen && (jsxs("div", Object.assign({ className: classNameContainer, ref: refs.setFloating, style: Object.assign(Object.assign({}, floatingStyles), styleVariables) }, getFloatingProps(), { children: [jsx(FloatingArrow, { ref: arrowRef, context: context, style: {
1246
- fill: styleVariables.background,
1247
- }, width: ARROW_WIDTH, height: ARROW_HEIGHT }), children] }))) })] }));
1167
+ const generateClasses = useMemo(() => (Object.assign({ 'd-tooltip': true, [`d-tooltip-${size}`]: !!size, [`d-tooltip-${theme}`]: !!theme }, className && { [className]: true })), [size, theme, className]);
1168
+ return (jsxs(Fragment, { children: [jsx("div", Object.assign({ className: childrenClassName, ref: refs.setReference }, getReferenceProps(), { children: Component })), jsx(FloatingPortal, { children: isOpen && (jsxs("div", Object.assign({ className: classNames(generateClasses), ref: refs.setFloating, style: Object.assign(Object.assign({}, floatingStyles), style) }, getFloatingProps(), { children: [jsx(FloatingArrow, { ref: arrowRef, context: context, width: ARROW_WIDTH, height: ARROW_HEIGHT }), children] }))) })] }));
1248
1169
  }
1249
1170
 
1250
1171
  const TabContext = createContext(undefined);
@@ -1296,7 +1217,7 @@ function DToastContainer({ style, position = 'top-right', className, }) {
1296
1217
 
1297
1218
  function useToast() {
1298
1219
  const toast$1 = useCallback((message, { position = 'top-right', type = 'info', showClose = true, autoClose = false, } = {}) => {
1299
- toast(({ closeToast }) => (jsx(DToast, { type: type, showClose: showClose, onClose: closeToast, id: "alertID", children: message })), {
1220
+ toast(({ closeToast }) => (jsx(DAlert, { type: type, showClose: showClose, onClose: closeToast, id: "alertID", children: message })), {
1300
1221
  transition: Slide,
1301
1222
  position,
1302
1223
  autoClose,
@@ -1321,5 +1242,5 @@ async function configureI8n(resources, _a = {}) {
1321
1242
  .then((t) => t);
1322
1243
  }
1323
1244
 
1324
- export { DAlertBox, DBadge, DBoxFile, DButton, DCard$1 as DCard, DCardAccount, DCardBody, DCardFooter, DCardHeader, DCarousel$1 as DCarousel, DCarouselSlide, DChip, DCollapse, DCollapseIconText, DContext, DContextProvider, DCurrencyText, DDatePicker, DIcon, DInput$1 as DInput, DInputCheck, DInputCounter$1 as DInputCounter, DInputCurrency$1 as DInputCurrency, DInputCurrencyBase$1 as DInputCurrencyBase, DInputPassword$1 as DInputPassword, DInputPin, DInputSearch$1 as DInputSearch, DInputSelect, DInputSwitch, DList$1 as DList, DListItem, DListItemMovement, DModal$1 as DModal, DModalBody, DModalFooter, DModalHeader, DOffcanvas$1 as DOffcanvas, DOffcanvasBody, DOffcanvasFooter, DOffcanvasHeader, DPaginator, DPermissionGroup, DPermissionItem, DPopover, DProgress, DQuickActionButton, DQuickActionCheck, DQuickActionSelect, DQuickActionSwitch, DSkeleton, DStepper, DStepper$2 as DStepperDesktop, DStepper$1 as DStepperMobile, DSummaryCard, DTabContent, DTabs$1 as DTabs, DToast, DToastContainer, DTooltip, ModalContext, ModalContextProvider, OffcanvasContext, OffcanvasContextProvider, configureI8n as configureI18n, formatCurrency, useDContext, useFormatCurrency, useInputCurrency, useModalContext, useOffcanvasContext, useProvidedRefOrCreate, useStackState, useTabContext, useToast };
1245
+ export { DAlert, DBadge, DBoxFile, DButton, DCard$1 as DCard, DCardAccount, DCardBody, DCardFooter, DCardHeader, DCarousel$1 as DCarousel, DCarouselSlide, DChip, DCollapse, DCollapseIconText, DContext, DContextProvider, DCurrencyText, DDatePicker, DIcon, DInput$1 as DInput, DInputCheck, DInputCounter$1 as DInputCounter, DInputCurrency$1 as DInputCurrency, DInputCurrencyBase$1 as DInputCurrencyBase, DInputMask$1 as DInputMask, DInputPassword$1 as DInputPassword, DInputPin, DInputSearch$1 as DInputSearch, DInputSelect, DInputSwitch, DList$1 as DList, DListItem, DListItemMovement, DModal$1 as DModal, DModalBody, DModalContext, DModalContextProvider, DModalFooter, DModalHeader, DOffcanvas$1 as DOffcanvas, DOffcanvasBody, DOffcanvasContext, DOffcanvasContextProvider, DOffcanvasFooter, DOffcanvasHeader, DPaginator, DPermissionGroup, DPermissionItem, DPopover, DProgress, DQuickActionButton, DQuickActionCheck, DQuickActionSelect, DQuickActionSwitch, DSkeleton, DStepper, DStepper$2 as DStepperDesktop, DStepper$1 as DStepperMobile, DSummaryCard, DTabContent, DTabs$1 as DTabs, DToastContainer, DTooltip, configureI8n as configureI18n, formatCurrency, useDContext, useDModalContext, useDOffcanvasContext, useDisableBodyScrollEffect, useFormatCurrency, useInputCurrency, usePortal, useProvidedRefOrCreate, useStackState, useTabContext, useToast };
1325
1246
  //# sourceMappingURL=index.esm.js.map