@dynamic-framework/ui-react 1.1.5 → 1.2.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.
Files changed (58) hide show
  1. package/dist/css/dynamic-ui-all.css +1 -0
  2. package/dist/css/dynamic-ui-react.css +1 -1
  3. package/dist/css/dynamic-ui.css +1 -0
  4. package/dist/index.esm.js +107 -26
  5. package/dist/index.esm.js.map +1 -1
  6. package/dist/index.js +117 -26
  7. package/dist/index.js.map +1 -1
  8. package/dist/types/components/MBoxFile.d.ts +1 -1
  9. package/dist/types/components/MCalendar.d.ts +1 -1
  10. package/dist/types/components/MCarousel.d.ts +7 -0
  11. package/dist/types/components/MCarouselSlide.d.ts +5 -0
  12. package/dist/types/components/MCollapse.d.ts +1 -1
  13. package/dist/types/components/MCurrencyText.d.ts +1 -2
  14. package/dist/types/components/MFormikInput.d.ts +1 -1
  15. package/dist/types/components/MFormikInputCurrency.d.ts +7 -0
  16. package/dist/types/components/MFormikInputSelect.d.ts +1 -1
  17. package/dist/types/components/MInputCurrency.d.ts +3 -1
  18. package/dist/types/components/MList.d.ts +10 -0
  19. package/dist/types/components/MListItem.d.ts +10 -0
  20. package/dist/types/components/MListItemMovement.d.ts +10 -0
  21. package/dist/types/components/MPaginator.d.ts +12 -0
  22. package/dist/types/components/MPopover.d.ts +1 -1
  23. package/dist/types/components/MSkeleton.d.ts +1 -1
  24. package/dist/types/components/MStepper.d.ts +12 -0
  25. package/dist/types/components/MTabContent.d.ts +1 -1
  26. package/dist/types/components/MTabs.d.ts +1 -1
  27. package/dist/types/components/MToastContainer.d.ts +1 -1
  28. package/dist/types/components/MTooltip.d.ts +1 -1
  29. package/dist/types/components/banking/MCollapseIconText.d.ts +1 -1
  30. package/dist/types/components/banking/MPermissionGroup.d.ts +1 -2
  31. package/dist/types/components/banking/MPermissionItem.d.ts +1 -2
  32. package/dist/types/components/banking/MSummaryCard.d.ts +1 -1
  33. package/dist/types/components/index.d.ts +7 -0
  34. package/dist/types/contexts/LiquidContext.d.ts +1 -1
  35. package/dist/types/contexts/ModalContext.d.ts +1 -1
  36. package/dist/types/contexts/OffcanvasContext.d.ts +1 -1
  37. package/dist/types/stories/components/MCarousel.stories.d.ts +9 -0
  38. package/dist/types/stories/components/MFormikInputCurrency.stories.d.ts +8 -0
  39. package/dist/types/stories/components/MList.stories.d.ts +10 -0
  40. package/dist/types/stories/components/MListItem.stories.d.ts +9 -0
  41. package/dist/types/stories/components/MListItemMovement.stories.d.ts +7 -0
  42. package/dist/types/stories/components/MPaginator.stories.d.ts +10 -0
  43. package/dist/types/stories/components/MStepper.stories.d.ts +7 -0
  44. package/dist/types/stories/hooks/useFormatCurrency.stories.d.ts +1 -2
  45. package/dist/types/stories/hooks/useModalContext.stories.d.ts +1 -2
  46. package/dist/types/stories/hooks/useOffcanvasContext.stories.d.ts +1 -2
  47. package/dist/types/stories/hooks/useToast.stories.d.ts +1 -2
  48. package/dist/types/utils/index.d.ts +1 -0
  49. package/package.json +16 -13
  50. package/src/style/components/_+import.scss +3 -0
  51. package/src/style/components/_m-carousel.scss +44 -0
  52. package/src/style/components/_m-paginator.scss +98 -0
  53. package/src/style/components/_m-stepper.scss +156 -0
  54. package/src/style/dynamic-ui-all.scss +3 -0
  55. package/src/style/dynamic-ui.scss +1 -0
  56. /package/dist/types/stories/{patterns → components}/MBadge.stories.d.ts +0 -0
  57. /package/dist/types/stories/{patterns → components}/MChip.stories.d.ts +0 -0
  58. /package/src/style/{main.scss → dynamic-ui-react.scss} +0 -0
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ const es = require('date-fns/locale/es');
9
9
  const React = require('react');
10
10
  const ui = require('@dynamic-framework/ui');
11
11
  const ContentLoader = require('react-content-loader');
12
- const classnames = require('classnames');
12
+ const classNames = require('classnames');
13
13
  const reactToastify = require('react-toastify');
14
14
  require('react-toastify/dist/ReactToastify.css');
15
15
  const react = require('@floating-ui/react');
@@ -37,6 +37,7 @@ const mQuickActionCheck_js = require('@dynamic-framework/ui/components/m-quick-a
37
37
  const mQuickActionSelect_js = require('@dynamic-framework/ui/components/m-quick-action-select.js');
38
38
  const mQuickActionSwitch_js = require('@dynamic-framework/ui/components/m-quick-action-switch.js');
39
39
  const reactDropzone = require('react-dropzone');
40
+ const reactSplide = require('@splidejs/react-splide');
40
41
  const i18n = require('i18next');
41
42
  const reactI18next = require('react-i18next');
42
43
  const html2canvas = require('html2canvas');
@@ -48,7 +49,7 @@ const DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker);
48
49
  const es__default = /*#__PURE__*/_interopDefaultLegacy(es);
49
50
  const React__default = /*#__PURE__*/_interopDefaultLegacy(React);
50
51
  const ContentLoader__default = /*#__PURE__*/_interopDefaultLegacy(ContentLoader);
51
- const classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
52
+ const classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
52
53
  const i18n__default = /*#__PURE__*/_interopDefaultLegacy(i18n);
53
54
  const html2canvas__default = /*#__PURE__*/_interopDefaultLegacy(html2canvas);
54
55
 
@@ -288,7 +289,7 @@ function MCollapse({ id, className, Component, hasSeparator = false, defaultColl
288
289
  React.useEffect(() => {
289
290
  setToggle(defaultCollapsed);
290
291
  }, [defaultCollapsed]);
291
- return (jsxRuntime.jsxs("div", Object.assign({ id: id, className: classnames__default["default"]('m-collapse collapse-container', className) }, { children: [jsxRuntime.jsxs("button", Object.assign({ className: "collapse-button", type: "button", onClick: onChangeCollapse }, { children: [jsxRuntime.jsx("div", Object.assign({ className: "flex-grow-1" }, { children: Component })), jsxRuntime.jsx(MIcon, { color: `var(--${ui.PREFIX_BS}gray)`, size: `var(--${ui.PREFIX_BS}ref-fs-small)`, icon: toggle ? 'chevron-up' : 'chevron-down' })] })), toggle && (jsxRuntime.jsx("div", Object.assign({ className: classnames__default["default"]({
292
+ return (jsxRuntime.jsxs("div", Object.assign({ id: id, className: classNames__default["default"]('m-collapse collapse-container', className) }, { children: [jsxRuntime.jsxs("button", Object.assign({ className: "collapse-button", type: "button", onClick: onChangeCollapse }, { children: [jsxRuntime.jsx("div", Object.assign({ className: "flex-grow-1" }, { children: Component })), jsxRuntime.jsx(MIcon, { color: `var(--${ui.PREFIX_BS}gray)`, size: `var(--${ui.PREFIX_BS}ref-fs-small)`, icon: toggle ? 'chevron-up' : 'chevron-down' })] })), toggle && (jsxRuntime.jsx("div", Object.assign({ className: classNames__default["default"]({
292
293
  'collapse-body': true,
293
294
  }), style: {
294
295
  [`--${ui.PREFIX_BS}m-collapse-separator-display`]: hasSeparator ? 'block' : 'none',
@@ -615,10 +616,10 @@ function MTabs({ children, defaultSelected, onChange, options, className, isVert
615
616
  const value = React.useMemo(() => ({
616
617
  isSelected,
617
618
  }), [isSelected]);
618
- return (jsxRuntime.jsx(TabContext.Provider, Object.assign({ value: value }, { children: jsxRuntime.jsxs("div", Object.assign({ className: classnames__default["default"]({
619
+ return (jsxRuntime.jsx(TabContext.Provider, Object.assign({ value: value }, { children: jsxRuntime.jsxs("div", Object.assign({ className: classNames__default["default"]({
619
620
  'm-tabs': true,
620
621
  'm-tabs-vertical': isVertical,
621
- }) }, { children: [jsxRuntime.jsx("nav", Object.assign({ className: "nav" }, { children: options.map((option) => (jsxRuntime.jsx("button", Object.assign({ id: `${option.tab}Tab`, className: classnames__default["default"]('nav-link', {
622
+ }) }, { children: [jsxRuntime.jsx("nav", Object.assign({ className: "nav" }, { children: options.map((option) => (jsxRuntime.jsx("button", Object.assign({ id: `${option.tab}Tab`, className: classNames__default["default"]('nav-link', {
622
623
  active: option.tab === selected,
623
624
  }, className), type: "button", role: "tab", "aria-controls": `${option.tab}Pane`, "aria-selected": option.tab === selected, disabled: option.isDisabled, onClick: () => onSelect(option) }, { children: option.label }), option.label))) })), jsxRuntime.jsx("div", Object.assign({ className: "tab-content" }, { children: children }))] })) })));
624
625
  }
@@ -638,7 +639,7 @@ function MTabContent({ tab, children }) {
638
639
  return (jsxRuntime.jsx("div", Object.assign({ className: "tab-pane fade show active", id: `${tab}Pane`, role: "tabpanel", tabIndex: 0, "aria-labelledby": `${tab}Tab` }, { children: children })));
639
640
  }
640
641
 
641
- function MToastContainer({ style, position = 'bottom-center', }) {
642
+ function MToastContainer({ style, position = 'top-right', }) {
642
643
  return (jsxRuntime.jsx(reactToastify.ToastContainer, { toastClassName: () => 'shadow-none p-0 cursor-default', position: position, autoClose: false, hideProgressBar: true, closeOnClick: false, closeButton: false, transition: reactToastify.Slide, style: style }));
643
644
  }
644
645
 
@@ -689,9 +690,9 @@ function MCurrencyText({ value, className, }) {
689
690
  }
690
691
 
691
692
  function MFormikInput(_a) {
692
- var { name } = _a, props = tslib.__rest(_a, ["name"]);
693
+ var { name, hint } = _a, props = tslib.__rest(_a, ["name", "hint"]);
693
694
  const [field, meta, helpers] = formik.useField(name);
694
- return (jsxRuntime.jsx(MInput, Object.assign({}, props, { name: field.name, value: field.value, onMChange: ({ detail }) => helpers.setValue(detail), onMBlur: ({ detail }) => field.onBlur(detail), isInvalid: !!meta.error })));
695
+ return (jsxRuntime.jsx(MInput, Object.assign({}, props, { name: field.name, value: field.value, onMChange: ({ detail }) => helpers.setValue(detail), onMBlur: ({ detail }) => field.onBlur(detail), isInvalid: !!meta.error, hint: meta.error || hint })));
695
696
  }
696
697
 
697
698
  function MFormikInputSelect(_a) {
@@ -759,40 +760,66 @@ function MTooltip({ classNameContainer, className, offSet = ARROW_HEIGHT + GAP,
759
760
  }
760
761
 
761
762
  function MInputCurrency(_a) {
762
- var { onChange } = _a, otherProps = tslib.__rest(_a, ["onChange"]);
763
+ var { onChange, onBlur, onFocus } = _a, otherProps = tslib.__rest(_a, ["onChange", "onBlur", "onFocus"]);
763
764
  const { currency } = useLiquidContext();
764
- return (jsxRuntime.jsx(MInputCurrencyBase, Object.assign({ currencyOptions: currency, onMChange: ({ detail }) => onChange(detail) }, otherProps)));
765
+ return (jsxRuntime.jsx(MInputCurrencyBase, Object.assign({ currencyOptions: currency, onMChange: ({ detail }) => onChange(detail), onMBlur: ({ detail }) => onBlur(detail), onMFocus: ({ detail }) => onFocus(detail) }, otherProps)));
765
766
  }
766
767
 
767
768
  function MBoxFile(_a) {
768
769
  var { icon = 'cloud-upload', iconFamilyClass, iconFamilyPrefix, isDisabled = false, children } = _a, dropzoneOptions = tslib.__rest(_a, ["icon", "iconFamilyClass", "iconFamilyPrefix", "isDisabled", "children"]);
769
770
  const { acceptedFiles, getRootProps, getInputProps, } = reactDropzone.useDropzone(Object.assign({ disabled: isDisabled }, dropzoneOptions));
770
- return (jsxRuntime.jsxs("section", Object.assign({ className: classnames__default["default"]('m-box-file', {
771
+ return (jsxRuntime.jsxs("section", Object.assign({ className: classNames__default["default"]('m-box-file', {
771
772
  'm-box-file-selected': !!acceptedFiles.length,
772
773
  }) }, { children: [jsxRuntime.jsxs("div", Object.assign({}, getRootProps({
773
- className: classnames__default["default"]('m-box-file-dropzone', {
774
+ className: classNames__default["default"]('m-box-file-dropzone', {
774
775
  disabled: isDisabled,
775
776
  }),
776
777
  }), { children: [jsxRuntime.jsx("input", Object.assign({}, getInputProps())), jsxRuntime.jsx(MIcon, { icon: icon, familyClass: iconFamilyClass, familyPrefix: iconFamilyPrefix }), jsxRuntime.jsx("div", Object.assign({ className: "m-box-content" }, { children: children }))] })), !!acceptedFiles.length && (jsxRuntime.jsx("aside", Object.assign({ className: "m-box-files" }, { children: acceptedFiles.map((file) => (jsxRuntime.jsx("div", Object.assign({ className: "m-box-files-text" }, { children: `${file.name} - ${file.size} bytes` }), file.name))) })))] })));
777
778
  }
778
779
 
779
- const LANG = ui.liquidParser.parse('{{site.language}}');
780
- async function configureI8n(resources, _a = {}) {
781
- var { lng = LANG, fallbackLng = 'es' } = _a, config = tslib.__rest(_a, ["lng", "fallbackLng"]);
782
- return i18n__default["default"]
783
- .use(reactI18next.initReactI18next)
784
- .init(Object.assign({ resources,
785
- lng, initImmediate: true, fallbackLng, interpolation: {
786
- escapeValue: false,
787
- prefix: '{',
788
- suffix: '}',
789
- // skipOnVariables: false,
790
- } }, config))
791
- .then((t) => t);
780
+ function MCarousel(_a) {
781
+ var { children, className, options } = _a, props = tslib.__rest(_a, ["children", "className", "options"]);
782
+ return (jsxRuntime.jsx(reactSplide.Splide, Object.assign({ className: classNames__default["default"]('m-carousel', className), options: Object.assign(Object.assign({}, options), { classes: {
783
+ // Arrows
784
+ arrows: 'splide__arrows m-carousel-arrows',
785
+ arrow: 'splide__arrow m-carousel-arrow',
786
+ prev: 'splide__arrow--prev m-carousel-arrow-prev',
787
+ next: 'splide__arrow--next m-carousel-arrow-next',
788
+ // Paginator
789
+ pagination: 'splide__pagination m-carousel-pagination',
790
+ page: 'splide__pagination__page m-carousel-pagination-page',
791
+ } }) }, props, { children: children })));
792
+ }
793
+
794
+ function MCarouselSlide(_a) {
795
+ var { className } = _a, props = tslib.__rest(_a, ["className"]);
796
+ return (jsxRuntime.jsx(reactSplide.SplideSlide, Object.assign({ className: classNames__default["default"]('m-carousel-slide', className) }, props)));
797
+ }
798
+
799
+ function MList({ children, className, isFlush = false, isNumbered = false, isHorizontal = false, horizontalBreakpoint, }) {
800
+ if (isFlush && isHorizontal) {
801
+ throw new Error("Horizontal and Flush props don't work together");
802
+ }
803
+ return (jsxRuntime.jsx("div", Object.assign({ className: classNames__default["default"]('m-list list-group', {
804
+ 'list-group-flush': isFlush && !isHorizontal,
805
+ 'list-group-numbered': isNumbered,
806
+ 'list-group-horizontal': isHorizontal && !horizontalBreakpoint,
807
+ }, (isHorizontal && horizontalBreakpoint) && `list-group-horizontal-${horizontalBreakpoint}`, className) }, { children: children })));
808
+ }
809
+
810
+ function MListItem({ children, className, isActive = false, isDisabled = false, theme, onMClick, }) {
811
+ const Tag = React.useMemo(() => (onMClick ? 'button' : 'div'), [onMClick]);
812
+ return (jsxRuntime.jsx(Tag, Object.assign({}, Tag === 'button' && {
813
+ onClick: onMClick,
814
+ type: 'button',
815
+ }, { className: classNames__default["default"]('m-list-item list-group-item list-group-item-action', theme ? `list-group-item-${theme}` : undefined, className, {
816
+ active: isActive,
817
+ disabled: isDisabled,
818
+ }) }, isActive && { 'aria-current': true }, { children: children })));
792
819
  }
793
820
 
794
821
  function useToast() {
795
- const toast = React.useCallback((message, { position = 'bottom-center', type = 'info', showClose = true, autoClose = false, } = {}) => {
822
+ const toast = React.useCallback((message, { position = 'top-right', type = 'info', showClose = true, autoClose = false, } = {}) => {
796
823
  reactToastify.toast(({ closeToast }) => (jsxRuntime.jsx(MAlert, Object.assign({ type: type, showClose: showClose, onMClose: closeToast }, { children: message }))), {
797
824
  transition: reactToastify.Slide,
798
825
  position,
@@ -867,6 +894,63 @@ function useScreenshotWebShare() {
867
894
  };
868
895
  }
869
896
 
897
+ function MListItemMovement(_a) {
898
+ var { description, date, amount, classNameMovement } = _a, props = tslib.__rest(_a, ["description", "date", "amount", "classNameMovement"]);
899
+ const { format } = useFormatCurrency();
900
+ const value = React.useMemo(() => {
901
+ const valueFormatted = format(amount);
902
+ if (amount > 0) {
903
+ return {
904
+ theme: 'text-success',
905
+ valueFormatted,
906
+ };
907
+ }
908
+ return {
909
+ theme: 'text-danger',
910
+ valueFormatted,
911
+ };
912
+ }, [format, amount]);
913
+ return (jsxRuntime.jsx(MListItem, Object.assign({}, props, { children: jsxRuntime.jsxs("div", Object.assign({ className: classNames__default["default"]('m-list-item-movement', 'd-flex justify-content-between align-items-center p-3 gap-3', classNameMovement) }, { children: [jsxRuntime.jsxs("div", Object.assign({ className: "d-flex flex-column gap-1" }, { children: [jsxRuntime.jsx("span", Object.assign({ className: "fs-6" }, { children: description })), jsxRuntime.jsx("span", Object.assign({ className: "sp text-gray-700" }, { children: date }))] })), jsxRuntime.jsx("span", Object.assign({ className: classNames__default["default"]('fs-6', value.theme) }, { children: value.valueFormatted }))] })) })));
914
+ }
915
+
916
+ function MStepper({ options, currentStep, successIcon = 'check', isVertical = false, }) {
917
+ return (jsxRuntime.jsx("div", Object.assign({ className: classNames__default["default"]({
918
+ 'm-stepper': true,
919
+ 'is-vertical': isVertical,
920
+ }) }, { children: options.map(({ label, value }) => (jsxRuntime.jsxs("div", Object.assign({ className: "m-step" }, { children: [jsxRuntime.jsx("div", Object.assign({ className: "m-step-value" }, { children: jsxRuntime.jsx("div", Object.assign({ className: classNames__default["default"]({
921
+ 'm-step-icon-container': true,
922
+ 'm-step-check': value < currentStep,
923
+ 'm-step-current': value === currentStep,
924
+ }) }, { children: value < currentStep
925
+ ? (jsxRuntime.jsx(MIcon, { icon: successIcon, innerClass: "m-step-icon" }))
926
+ : value })) })), jsxRuntime.jsx("div", Object.assign({ className: "m-step-label" }, { children: label }))] }), label))) })));
927
+ }
928
+
929
+ function MFormikInputCurrency(_a) {
930
+ var { name, hint } = _a, props = tslib.__rest(_a, ["name", "hint"]);
931
+ const [field, meta, helpers] = formik.useField(name);
932
+ return (jsxRuntime.jsx(MInputCurrency, Object.assign({}, props, { name: field.name, value: field.value, onChange: (value) => helpers.setValue(value), onMBlur: ({ detail }) => field.onBlur(detail), isInvalid: !!meta.error, hint: meta.error || hint })));
933
+ }
934
+
935
+ const LANG = ui.liquidParser.parse('{{site.language}}');
936
+ async function configureI8n(resources, _a = {}) {
937
+ var { lng = LANG, fallbackLng = 'es' } = _a, config = tslib.__rest(_a, ["lng", "fallbackLng"]);
938
+ return i18n__default["default"]
939
+ .use(reactI18next.initReactI18next)
940
+ .init(Object.assign({ resources,
941
+ lng, initImmediate: true, fallbackLng, interpolation: {
942
+ escapeValue: false,
943
+ prefix: '{',
944
+ suffix: '}',
945
+ // skipOnVariables: false,
946
+ } }, config))
947
+ .then((t) => t);
948
+ }
949
+
950
+ Object.defineProperty(exports, 'liquidParser', {
951
+ enumerable: true,
952
+ get: function () { return ui.liquidParser; }
953
+ });
870
954
  exports.LiquidContext = LiquidContext$1;
871
955
  exports.LiquidContextProvider = LiquidContextProvider;
872
956
  exports.MAlert = MAlert;
@@ -874,11 +958,14 @@ exports.MBadge = MBadge;
874
958
  exports.MBoxFile = MBoxFile;
875
959
  exports.MButton = MButton;
876
960
  exports.MCalendar = MCalendar;
961
+ exports.MCarousel = MCarousel;
962
+ exports.MCarouselSlide = MCarouselSlide;
877
963
  exports.MChip = MChip;
878
964
  exports.MCollapse = MCollapse;
879
965
  exports.MCollapseIconText = MCollapseIconText;
880
966
  exports.MCurrencyText = MCurrencyText;
881
967
  exports.MFormikInput = MFormikInput;
968
+ exports.MFormikInputCurrency = MFormikInputCurrency;
882
969
  exports.MFormikInputSelect = MFormikInputSelect;
883
970
  exports.MIcon = MIcon;
884
971
  exports.MInput = MInput;
@@ -891,6 +978,9 @@ exports.MInputPin = MInputPin;
891
978
  exports.MInputSearch = MInputSearch;
892
979
  exports.MInputSelect = MInputSelect;
893
980
  exports.MInputSwitch = MInputSwitch;
981
+ exports.MList = MList;
982
+ exports.MListItem = MListItem;
983
+ exports.MListItemMovement = MListItemMovement;
894
984
  exports.MModal = MModal;
895
985
  exports.MOffcanvas = MOffcanvas;
896
986
  exports.MPermissionGroup = MPermissionGroup;
@@ -902,6 +992,7 @@ exports.MQuickActionCheck = MQuickActionCheck;
902
992
  exports.MQuickActionSelect = MQuickActionSelect;
903
993
  exports.MQuickActionSwitch = MQuickActionSwitch;
904
994
  exports.MSkeleton = MSkeleton;
995
+ exports.MStepper = MStepper;
905
996
  exports.MSummaryCard = MSummaryCard;
906
997
  exports.MTabContent = MTabContent;
907
998
  exports.MTabs = MTabs;