phx-react 1.3.1837 → 1.3.1839

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 (73) hide show
  1. package/dist/cjs/components/Modal/Modal.d.ts +1 -1
  2. package/dist/cjs/components/Modal/Modal.js +53 -19
  3. package/dist/cjs/components/Modal/Modal.js.map +1 -1
  4. package/dist/cjs/components/Onboarding/contexts/onboarding-context.d.ts +63 -0
  5. package/dist/cjs/components/Onboarding/contexts/onboarding-context.js +282 -0
  6. package/dist/cjs/components/Onboarding/contexts/onboarding-context.js.map +1 -0
  7. package/dist/cjs/components/Onboarding/contexts/style.d.ts +1 -0
  8. package/dist/cjs/components/Onboarding/contexts/style.js +77 -0
  9. package/dist/cjs/components/Onboarding/contexts/style.js.map +1 -0
  10. package/dist/cjs/components/Onboarding/hooks/use-onboarding-init.d.ts +7 -0
  11. package/dist/cjs/components/Onboarding/hooks/use-onboarding-init.js +19 -0
  12. package/dist/cjs/components/Onboarding/hooks/use-onboarding-init.js.map +1 -0
  13. package/dist/cjs/components/Onboarding/index.d.ts +3 -0
  14. package/dist/cjs/components/Onboarding/index.js +7 -0
  15. package/dist/cjs/components/Onboarding/index.js.map +1 -0
  16. package/dist/cjs/components/Onboarding/modal-slides/modal-slides.d.ts +10 -0
  17. package/dist/cjs/components/Onboarding/modal-slides/modal-slides.js +59 -0
  18. package/dist/cjs/components/Onboarding/modal-slides/modal-slides.js.map +1 -0
  19. package/dist/cjs/components/Onboarding/onbroading-demo.d.ts +9 -0
  20. package/dist/cjs/components/Onboarding/onbroading-demo.js +208 -0
  21. package/dist/cjs/components/Onboarding/onbroading-demo.js.map +1 -0
  22. package/dist/cjs/components/Slider/index.d.ts +2 -0
  23. package/dist/cjs/components/Slider/index.js +6 -0
  24. package/dist/cjs/components/Slider/index.js.map +1 -0
  25. package/dist/cjs/components/Slider/phx-slider-item.d.ts +6 -0
  26. package/dist/cjs/components/Slider/phx-slider-item.js +38 -0
  27. package/dist/cjs/components/Slider/phx-slider-item.js.map +1 -0
  28. package/dist/cjs/components/Slider/phx-slider.d.ts +18 -0
  29. package/dist/cjs/components/Slider/phx-slider.js +168 -0
  30. package/dist/cjs/components/Slider/phx-slider.js.map +1 -0
  31. package/dist/cjs/components/Slider/ultis/create-animate.d.ts +17 -0
  32. package/dist/cjs/components/Slider/ultis/create-animate.js +38 -0
  33. package/dist/cjs/components/Slider/ultis/create-animate.js.map +1 -0
  34. package/dist/cjs/index.d.ts +2 -0
  35. package/dist/cjs/index.js +2 -0
  36. package/dist/cjs/index.js.map +1 -1
  37. package/dist/esm/components/Modal/Modal.d.ts +1 -1
  38. package/dist/esm/components/Modal/Modal.js +54 -20
  39. package/dist/esm/components/Modal/Modal.js.map +1 -1
  40. package/dist/esm/components/Onboarding/contexts/onboarding-context.d.ts +63 -0
  41. package/dist/esm/components/Onboarding/contexts/onboarding-context.js +276 -0
  42. package/dist/esm/components/Onboarding/contexts/onboarding-context.js.map +1 -0
  43. package/dist/esm/components/Onboarding/contexts/style.d.ts +1 -0
  44. package/dist/esm/components/Onboarding/contexts/style.js +74 -0
  45. package/dist/esm/components/Onboarding/contexts/style.js.map +1 -0
  46. package/dist/esm/components/Onboarding/hooks/use-onboarding-init.d.ts +7 -0
  47. package/dist/esm/components/Onboarding/hooks/use-onboarding-init.js +15 -0
  48. package/dist/esm/components/Onboarding/hooks/use-onboarding-init.js.map +1 -0
  49. package/dist/esm/components/Onboarding/index.d.ts +3 -0
  50. package/dist/esm/components/Onboarding/index.js +4 -0
  51. package/dist/esm/components/Onboarding/index.js.map +1 -0
  52. package/dist/esm/components/Onboarding/modal-slides/modal-slides.d.ts +10 -0
  53. package/dist/esm/components/Onboarding/modal-slides/modal-slides.js +54 -0
  54. package/dist/esm/components/Onboarding/modal-slides/modal-slides.js.map +1 -0
  55. package/dist/esm/components/Onboarding/onbroading-demo.d.ts +9 -0
  56. package/dist/esm/components/Onboarding/onbroading-demo.js +203 -0
  57. package/dist/esm/components/Onboarding/onbroading-demo.js.map +1 -0
  58. package/dist/esm/components/Slider/index.d.ts +2 -0
  59. package/dist/esm/components/Slider/index.js +2 -0
  60. package/dist/esm/components/Slider/index.js.map +1 -0
  61. package/dist/esm/components/Slider/phx-slider-item.d.ts +6 -0
  62. package/dist/esm/components/Slider/phx-slider-item.js +33 -0
  63. package/dist/esm/components/Slider/phx-slider-item.js.map +1 -0
  64. package/dist/esm/components/Slider/phx-slider.d.ts +18 -0
  65. package/dist/esm/components/Slider/phx-slider.js +164 -0
  66. package/dist/esm/components/Slider/phx-slider.js.map +1 -0
  67. package/dist/esm/components/Slider/ultis/create-animate.d.ts +17 -0
  68. package/dist/esm/components/Slider/ultis/create-animate.js +34 -0
  69. package/dist/esm/components/Slider/ultis/create-animate.js.map +1 -0
  70. package/dist/esm/index.d.ts +2 -0
  71. package/dist/esm/index.js +2 -0
  72. package/dist/esm/index.js.map +1 -1
  73. package/package.json +2 -1
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createAnimate = void 0;
4
+ /**
5
+ * Tạo animation
6
+ * @param duration Thời lượng animation
7
+ * @param from Giá trị bắt đầu
8
+ * @param onUpdate Callback khi cập nhật giá trị
9
+ * @param onEnd Callback khi kết thúc
10
+ * @param to Giá trị kết thúc
11
+ */
12
+ const createAnimate = ({ duration, from, onEnd, onUpdate, to }) => {
13
+ const start = performance.now();
14
+ /**
15
+ * Hàm tạo animation
16
+ * @param now Thời gian hiện tại
17
+ */
18
+ const frame = (now) => {
19
+ const progress = Math.min((now - start) / duration, 1);
20
+ /**
21
+ * Hàm tính toán giá trị animation
22
+ * @param t Giá trị progress
23
+ */
24
+ const easeOutCubic = (t) => 1 - Math.pow(1 - t, 3);
25
+ const eased = easeOutCubic(progress);
26
+ const value = from + (to - from) * eased;
27
+ onUpdate(value);
28
+ if (progress < 1) {
29
+ requestAnimationFrame(frame);
30
+ }
31
+ else {
32
+ onEnd === null || onEnd === void 0 ? void 0 : onEnd();
33
+ }
34
+ };
35
+ requestAnimationFrame(frame);
36
+ };
37
+ exports.createAnimate = createAnimate;
38
+ //# sourceMappingURL=create-animate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-animate.js","sourceRoot":"","sources":["../../../../../src/components/Slider/ultis/create-animate.ts"],"names":[],"mappings":";;;AAOA;;;;;;;GAOG;AACI,MAAM,aAAa,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAuB,EAAE,EAAE;IAC5F,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;IAC/B;;;OAGG;IACH,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAA;QAEtD;;;WAGG;QACH,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QAC1D,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;QAEpC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAA;QACxC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAEf,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,qBAAqB,CAAC,KAAK,CAAC,CAAA;QAC9B,CAAC;aAAM,CAAC;YACN,KAAK,aAAL,KAAK,uBAAL,KAAK,EAAI,CAAA;QACX,CAAC;IACH,CAAC,CAAA;IACD,qBAAqB,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC,CAAA;AA1BY,QAAA,aAAa,iBA0BzB"}
@@ -135,5 +135,7 @@ import { PHXFormatDateTime } from './helpers/formatDate';
135
135
  import PHXTableGroup from './components/TableGroup/TableGroup';
136
136
  import { EMAIL_REGEX, PHONE_NUMBER_REGEX } from './utils/constants';
137
137
  import { PHXIframe } from './components/Iframe';
138
+ export * from './components/Slider';
139
+ export * from './components/Onboarding';
138
140
  import { PHXScheduleTable } from './components/TableSchedule';
139
141
  export { PHXBottomAction, ModalCreateBorrowTicket as PHXLibraryModalCreateBorrowTicket, ModalReturnBook as PHXLibraryModalReturnBook, useFixedAction, PHXGrpcQueryAllSchool, PHXTextEditorV2, useMainwrapV4EventBus, PHXGetSettingSite, PHXSetSettingSite, PHXMainWrapV4, PHXTargetSelect, PHXTextEditorView, PHXStoreProduct, PHXButton, PHXBreadcrumb, PHXCard, PHXSpinner, PHXFormWrap, PHXHeaderBar, PHXTableV3, PHXInput, PHXSelect, PHXSelectBox, PHXRadio, PHXCheckbox, PHXCheckboxGroup, PHXContainer, PHXFormStep, PHXNotifications, PHXStep, PHXSkeleton, PHXFuncGetLoggedInfo, PHXClientQueryV3, PHXClientMutationV3, PHXClientMutationDataCenterV3, PHXClientQueryDataCenterV3, PHXClientMutationDevPortalV3, PHXClientQueryDevPortalV3, PHXTextarea, PHXModal, PHXTabs, PHXChoiceList, PHXDescriptionLists, PHXBadge, PHXLoginV3, PHXLoginSsoV3, PHXBanner, PHXButtonGroup, PHXCombobox, PHXFormLayout, PHXHorizontalStack, PHXUploadFile, PHXSearchResultListV3, PHXDatePicker, PHXEmptyRecord, PHXEmptySearch, PHXTimePicker, PHXDropdown, PHXUploadAvatar, PHXDateRangePicker, PHXUseDebounce, PHXResourceList, PHXFetchAPI, PieChart, BarChart, DonutChart, PHXTooltip, PHXGetActiveYearAndNextYearV3, PHXGetPrevCurrentNextYearV3, PHXGetCurrentYearWithTermHocVuV3, PHXGetCurrentYearWithTermV3, PHXFormTuitionV3, PHXMainWrapV3, PHXPagePermissionV3, PHXGetEnvPublicV3, PHXFuncGetActionPermissionV3, PHXUseQueryDataV3, PHXCalendar, PHXLoadingProvider, useLoading, PHXLoadingIndicator, PHXLink, PHXSwitchView, PHXTableVertical, PHXEmptyStateAction, PHXActivityHistory, PHXBannerWithCard, PHXUrlApply, PHXGetSelectedFilterValueFromUrl, PHXCardDetail, PHXGridLayout, PHXColumn, PHXRow, PHXStepCircle, PHXTableStatic, PHXGetToken, PHXToggle, PHXColSpan, PHXSortItem, PHXSortable, PHXGetListDepartmentManager, PHXGetUserManagerByUserId, PHXReportButtonTab, PHXReportButtonTabV2, PHXAllowExplanation, PHXUseRouterBack, PHXChunkUpdateMany, PHXTabDate, PHXTwoColumnLayout, PHXAxiosInstance, PHXDrawer, PHXResourceListSetting, PHXCompleteState, PHXTableReport, PHXMiniProgressBar, PHXFormConfigTimeUseService, PHXSelectWithAction, PHXText, PHXDescriptionListInTooltip, PHXSegmentTab, PHXUserTargetSelect, PHXTimeline, PHXClientQueryV5, PHXClientMutationV5, PHXUseToastContent, PHXTableV5, PHXPushNotificationService, PHXClientQueryV6, PHXClientMutationV6, PHXTableV6, PHXTextV2, PHXBox, PHXLegend, PHXIcon, PHXDivider, PHXPreviewNoti, PHXBlockStack, PHXInlineGrid, PHXUseDirectLink, PHXInputTags, PHXUseAuditLog, PHXFormatDateTime, PHXTableGroup, EMAIL_REGEX, PHONE_NUMBER_REGEX, PHXIframe, PHXScheduleTable, };
package/dist/cjs/index.js CHANGED
@@ -287,6 +287,8 @@ Object.defineProperty(exports, "EMAIL_REGEX", { enumerable: true, get: function
287
287
  Object.defineProperty(exports, "PHONE_NUMBER_REGEX", { enumerable: true, get: function () { return constants_1.PHONE_NUMBER_REGEX; } });
288
288
  const Iframe_1 = require("./components/Iframe");
289
289
  Object.defineProperty(exports, "PHXIframe", { enumerable: true, get: function () { return Iframe_1.PHXIframe; } });
290
+ tslib_1.__exportStar(require("./components/Slider"), exports);
291
+ tslib_1.__exportStar(require("./components/Onboarding"), exports);
290
292
  const TableSchedule_1 = require("./components/TableSchedule");
291
293
  Object.defineProperty(exports, "PHXScheduleTable", { enumerable: true, get: function () { return TableSchedule_1.PHXScheduleTable; } });
292
294
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -45,4 +45,4 @@ export interface ModalProps {
45
45
  headerClassName?: string;
46
46
  theme?: 'WHITE' | 'GRAY';
47
47
  }
48
- export declare const PHXModal: ({ show, title, className, primaryActionText, secondaryActionText, dangerActionText, children, primaryLoading, size, dangerLoading, footerBulkAction, downloadLinkRef, downloadText, primarySubmit, dangerSubmit, hiddenSubmit, hrefLink, isCancel, closeButton, isHeaderDownload, noOverlay, headerContent, onHide, onSubmit, onPrimaryClick, onDangerClick, onCancel, onHeaderAction, type, customWidth, inCard, disableCloseButton, leftActionText, disableLeftAction, loadingLeftAction, onLeftActionText, disableSubmit, dowloadIcon, hiddenCloseButton, disableOutsideClick, customFooter, customHeight, headerClassName, theme, }: ModalProps) => React.JSX.Element;
48
+ export declare const PHXModal: ({ children, className, closeButton, customFooter, customHeight, customWidth, dangerActionText, dangerLoading, dangerSubmit, disableCloseButton, disableLeftAction, disableOutsideClick, disableSubmit, dowloadIcon, downloadLinkRef, downloadText, footerBulkAction, headerClassName, headerContent, hiddenCloseButton, hiddenSubmit, hrefLink, inCard, isCancel, isHeaderDownload, leftActionText, loadingLeftAction, noOverlay, onCancel, onDangerClick, onHeaderAction, onHide, onLeftActionText, onPrimaryClick, onSubmit, primaryActionText, primaryLoading, primarySubmit, secondaryActionText, show, size, theme, title, type, }: ModalProps) => React.JSX.Element;
@@ -3,7 +3,7 @@ import { Dialog, Transition } from '@headlessui/react';
3
3
  import { PHXCard } from '../Card';
4
4
  import { classNames } from '../types';
5
5
  import { PHXButton } from '../Button';
6
- import { ArrowLeftIcon } from '@heroicons/react/24/solid';
6
+ import { ArrowLeftIcon, XMarkIcon } from '@heroicons/react/24/solid';
7
7
  import { ArrowDownTrayIcon } from '@heroicons/react/24/outline';
8
8
  import PHXLink from '../Link/link';
9
9
  var MODAL_THEME;
@@ -11,7 +11,10 @@ var MODAL_THEME;
11
11
  MODAL_THEME["WHITE"] = "WHITE";
12
12
  MODAL_THEME["GRAY"] = "GRAY";
13
13
  })(MODAL_THEME || (MODAL_THEME = {}));
14
- export const PHXModal = ({ show, title, className, primaryActionText = 'Xác nhận', secondaryActionText = 'Đóng', dangerActionText, children, primaryLoading, size = 'small', dangerLoading, footerBulkAction, downloadLinkRef, downloadText, primarySubmit, dangerSubmit, hiddenSubmit, hrefLink, isCancel = false, closeButton, isHeaderDownload, noOverlay = false, headerContent, onHide, onSubmit, onPrimaryClick, onDangerClick, onCancel, onHeaderAction, type = 'default', customWidth, inCard = true, disableCloseButton = false, leftActionText, disableLeftAction = false, loadingLeftAction = false, onLeftActionText, disableSubmit = false, dowloadIcon = false, hiddenCloseButton = false, disableOutsideClick, customFooter, customHeight, headerClassName = '', theme = MODAL_THEME.WHITE, }) => {
14
+ export const PHXModal = ({ children, className,
15
+ // @ts-ignore
16
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
17
+ closeButton, customFooter, customHeight, customWidth, dangerActionText, dangerLoading, dangerSubmit, disableCloseButton = false, disableLeftAction = false, disableOutsideClick, disableSubmit = false, dowloadIcon = false, downloadLinkRef, downloadText, footerBulkAction, headerClassName = '', headerContent, hiddenCloseButton = false, hiddenSubmit, hrefLink, inCard = true, isCancel = false, isHeaderDownload, leftActionText, loadingLeftAction = false, noOverlay = false, onCancel, onDangerClick, onHeaderAction, onHide, onLeftActionText, onPrimaryClick, onSubmit, primaryActionText = 'Xác nhận', primaryLoading, primarySubmit, secondaryActionText = 'Đóng', show, size = 'small', theme = MODAL_THEME.WHITE, title, type = 'default', }) => {
15
18
  const [open, setOpen] = useState(false);
16
19
  const headerText = headerContent ? headerContent : '';
17
20
  const sizeModal = classNames(size === 'small' && 'sm:max-w-lg', size === 'medium' && 'sm:max-w-xl', size === 'large' && 'sm:max-w-2xl', size === 'large-plus' && 'sm:max-w-2xl lg:max-w-4xl', size === 'extra-large' && 'w-[90vw] max-w-[95vw] sm:max-w-3xl md:max-w-4xl lg:max-w-5xl xl:max-w-7xl');
@@ -40,7 +43,16 @@ export const PHXModal = ({ show, title, className, primaryActionText = 'Xác nh
40
43
  onHide();
41
44
  }
42
45
  };
43
- const Card = () => (React.createElement(PHXCard, { footerBulkAction: footerBulkAction, dowloadIcon: dowloadIcon, primaryHeader: true, title: title, headerAction: { content: closeButton ? 'close' : headerText, onClick: handleClickCloseAction }, secondaryFooterActions: !hiddenCloseButton ? [{ content: secondaryActionText, onClick: onClose }] : undefined, type: 'modal', downloadLinkRef: downloadLinkRef, downloadText: downloadText, fullSize: type === 'no-padding', hrefLink: hrefLink, primaryFooterAction: !hiddenSubmit
46
+ const Card = () => (React.createElement(PHXCard, { dangerFooterAction: {
47
+ content: dangerActionText,
48
+ loading: dangerLoading,
49
+ onClick: onDangerClick,
50
+ submit: dangerSubmit,
51
+ disabled: disableSubmit,
52
+ }, dowloadIcon: dowloadIcon, downloadLinkRef: downloadLinkRef, downloadText: downloadText, footerBulkAction: footerBulkAction, fullSize: type === 'no-padding', headerAction: {
53
+ content: headerText || 'close',
54
+ onClick: handleClickCloseAction,
55
+ }, hrefLink: hrefLink, isHeaderDownload: isHeaderDownload, primaryFooterAction: !hiddenSubmit
44
56
  ? {
45
57
  content: primaryActionText,
46
58
  loading: primaryLoading,
@@ -48,14 +60,26 @@ export const PHXModal = ({ show, title, className, primaryActionText = 'Xác nh
48
60
  submit: primarySubmit,
49
61
  disabled: disableSubmit,
50
62
  }
51
- : {}, dangerFooterAction: {
52
- content: dangerActionText,
53
- loading: dangerLoading,
54
- onClick: onDangerClick,
55
- submit: dangerSubmit,
56
- disabled: disableSubmit,
57
- }, isHeaderDownload: isHeaderDownload },
63
+ : {}, primaryHeader: true, secondaryFooterActions: !hiddenCloseButton ? [{ content: secondaryActionText, onClick: onClose }] : undefined, title: title, type: 'modal' },
58
64
  React.createElement("div", { className: type !== 'no-padding' ? '-mt-1' : '' }, children)));
65
+ useEffect(() => {
66
+ /**
67
+ * Handles the Escape key press to close the modal.
68
+ * Prevents closing when the close button is disabled.
69
+ *
70
+ * @param event - The keyboard event triggered by the user.
71
+ */
72
+ const handleKeyDown = (event) => {
73
+ if (event.key === 'Escape' && !disableCloseButton) {
74
+ setOpen(false);
75
+ onHide === null || onHide === void 0 ? void 0 : onHide();
76
+ }
77
+ };
78
+ window.addEventListener('keydown', handleKeyDown);
79
+ return () => {
80
+ window.removeEventListener('keydown', handleKeyDown);
81
+ };
82
+ }, [disableCloseButton, show]);
59
83
  return (React.createElement(Transition.Root, { as: Fragment, show: open },
60
84
  React.createElement(Dialog, { as: 'div', className: 'relative z-50', onClose: () => {
61
85
  // Chỉ tắt modal này
@@ -66,29 +90,39 @@ export const PHXModal = ({ show, title, className, primaryActionText = 'Xác nh
66
90
  onHide === null || onHide === void 0 ? void 0 : onHide();
67
91
  }, static: true },
68
92
  !noOverlay && (React.createElement(Transition.Child, { as: Fragment, enter: 'transform ease-out duration-300 transition', enterFrom: 'translate-y-2 opacity-0 sm:translate-y-0 sm:translate-y-10', enterTo: 'translate-y-0 opacity-100 sm:translate-y-0', leave: 'transition ease-in duration-100', leaveFrom: 'translate-y-0 opacity-100 sm:translate-y-0', leaveTo: 'translate-y-2 opacity-0 sm:translate-y-0 sm:translate-y-10' },
69
- React.createElement("div", { className: 'fixed inset-0 z-40 transition-opacity bg-gray-500 bg-opacity-75' }))),
93
+ React.createElement("div", { className: 'fixed inset-0 z-40 bg-gray-500 bg-opacity-75 transition-opacity' }))),
70
94
  React.createElement("div", { className: `fixed inset-0 z-50 overflow-y-auto ${className || ''}` },
71
- React.createElement("div", { className: 'flex items-center justify-center min-h-full p-4 text-center sm:items-center sm:p-0' },
95
+ React.createElement("div", { className: 'flex min-h-full items-center justify-center p-4 text-center sm:items-center sm:p-0' },
72
96
  React.createElement(Transition.Child, { as: Fragment, enter: 'transform ease-out duration-300 transition', enterFrom: 'translate-y-2 opacity-0 sm:translate-y-0 sm:translate-y-10', enterTo: 'translate-y-0 opacity-100 sm:translate-y-0', leave: 'transition ease-in duration-100', leaveFrom: 'translate-y-0 opacity-100 sm:translate-y-0', leaveTo: 'translate-y-2 opacity-0 sm:translate-y-0 sm:translate-y-10' },
73
97
  React.createElement("div", { className: classNames('min-w-0 flex-1', customWidth ? customWidth : sizeModal) },
74
98
  React.createElement(Dialog.Panel, { className: classNames('shadow-xl relative transform rounded-lg text-left transition-all sm:my-24 sm:w-full', theme === MODAL_THEME.GRAY ? 'bg-[#F1F1F1]' : 'bg-white') }, inCard ? (primarySubmit || dangerSubmit ? (React.createElement("form", { onSubmit: onSubmit },
75
99
  React.createElement(Card, null))) : (React.createElement(Card, null))) : (React.createElement("div", null,
76
100
  React.createElement("div", { className: classNames('flex items-center justify-between rounded-t-lg border-b border-gray-200 p-4 text-sm font-semibold text-gray-900', headerClassName, theme === MODAL_THEME.GRAY ? 'bg-[#F1F1F1]' : 'bg-[#F3F3F3]') },
77
101
  React.createElement("div", { className: 'flex items-center gap-1' },
78
- isCancel && (React.createElement("button", { className: 'inline-flex items-center px-2 py-1 text-xs font-bold text-gray-700 bg-transparent rounded-lg hover:bg-gray-200', onClick: onCancel, type: 'button' },
79
- React.createElement(ArrowLeftIcon, { className: 'w-4 h-4' }))),
80
- title)),
81
- React.createElement("div", { style: { maxHeight: customHeight || '100%' }, className: type === 'default' ? 'p-3 text-xs text-gray-500' : '' }, children),
102
+ isCancel && (React.createElement("button", { className: 'inline-flex items-center rounded-lg bg-transparent px-2 py-1 text-xs font-bold text-gray-700 hover:bg-gray-200', onClick: onCancel, type: 'button' },
103
+ React.createElement(ArrowLeftIcon, { className: 'h-4 w-4' }))),
104
+ title),
105
+ React.createElement("button", { className: 'grid grid-cols-1 rounded-md p-0.5 text-gray-400 hover:bg-gray-200 hover:text-gray-500', onClick: () => {
106
+ if (disableCloseButton) {
107
+ return;
108
+ }
109
+ setOpen(false);
110
+ onHide === null || onHide === void 0 ? void 0 : onHide();
111
+ }, type: 'button' },
112
+ React.createElement(React.Fragment, null,
113
+ React.createElement("span", { className: 'sr-only' }, "Close"),
114
+ React.createElement(XMarkIcon, { "aria-hidden": 'true', className: 'h-5 w-5' })))),
115
+ React.createElement("div", { className: type === 'default' ? 'p-3 text-xs text-gray-500' : '', style: { maxHeight: customHeight || '100%' } }, children),
82
116
  React.createElement("div", { className: classNames('flex items-center justify-between gap-x-3 rounded-b-lg border-t border-gray-200 ', theme === MODAL_THEME.GRAY ? 'bg-[#F1F1F1]' : 'bg-white') }, customFooter ? (customFooter) : (React.createElement(React.Fragment, null,
83
- React.createElement("div", { className: 'flex items-center p-4 pl-5 rounded-t-lg gap-x-3' },
117
+ React.createElement("div", { className: 'flex items-center gap-x-3 rounded-t-lg p-4 pl-5' },
84
118
  downloadLinkRef && hrefLink && downloadText && (React.createElement("div", { className: 'group flex items-center gap-x-1' },
85
119
  dowloadIcon && (React.createElement(ArrowDownTrayIcon, { className: 'h-4 w-4 text-link-500 group-hover:text-link-600 group-active:text-link-600', strokeWidth: 2 })),
86
- React.createElement(PHXLink, { as: 'a', ref: downloadLinkRef, href: hrefLink }, downloadText))),
120
+ React.createElement(PHXLink, { ref: downloadLinkRef, as: 'a', href: hrefLink }, downloadText))),
87
121
  leftActionText && (React.createElement("div", { className: 'flex gap-2' },
88
- React.createElement(PHXButton, { className: 'text-sm !text-link-500 !px-0', disabled: disableLeftAction, onClick: onLeftActionText, plain: true }, leftActionText),
122
+ React.createElement(PHXButton, { className: '!px-0 text-sm !text-link-500', disabled: disableLeftAction, onClick: onLeftActionText, plain: true }, leftActionText),
89
123
  loadingLeftAction && React.createElement(PHXButton, { disabled: true, loading: true, plain: true, size: 'micro' }))),
90
124
  footerBulkAction && footerBulkAction.content && (React.createElement(PHXButton, { danger: true, disabled: footerBulkAction.disabled, loading: footerBulkAction.loading, onClick: footerBulkAction.onClick, size: 'micro', submit: !!footerBulkAction.submit }, footerBulkAction.content))),
91
- React.createElement("div", { className: 'flex justify-end p-4 rounded-t-lg gap-x-3' },
125
+ React.createElement("div", { className: 'flex justify-end gap-x-3 rounded-t-lg p-4' },
92
126
  React.createElement(PHXButton, { disabled: disableCloseButton, onClick: onHide, secondary: true, size: 'micro' }, secondaryActionText),
93
127
  dangerSubmit && (React.createElement(PHXButton, { danger: true, disabled: disableSubmit, loading: dangerLoading, onClick: onDangerClick, size: 'micro' }, dangerActionText)),
94
128
  !hiddenSubmit && (React.createElement(PHXButton, { disabled: disableSubmit, loading: primaryLoading, onClick: () => onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(), primary: true, size: 'micro' }, primaryActionText))))))))))))))));
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../../../src/components/Modal/Modal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../../../src/components/Modal/Modal.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import 'driver.js/dist/driver.css';
2
+ import React from 'react';
3
+ export interface IPHXOnboardingStep {
4
+ element: string;
5
+ popover: {
6
+ title: string;
7
+ description: string;
8
+ side?: 'left' | 'right' | 'top' | 'bottom';
9
+ align?: 'start' | 'center' | 'end';
10
+ };
11
+ }
12
+ export interface IPHXOnboardingSlideStep {
13
+ id: number;
14
+ title?: string;
15
+ description?: string;
16
+ content?: string;
17
+ image: string;
18
+ }
19
+ /**
20
+ * Một flow onboarding có thể có slides, tour steps, hoặc cả hai.
21
+ * - Chỉ slides: hiện modal slides, không có tour
22
+ * - Chỉ tour: chạy driver.js tour trực tiếp
23
+ * - Cả hai: hiện modal slides → nút "Bắt đầu Tour" → chạy tour
24
+ */
25
+ export interface IPHXOnboardingFlow {
26
+ name: string;
27
+ slides?: Array<IPHXOnboardingSlideStep>;
28
+ steps?: Array<IPHXOnboardingStep>;
29
+ }
30
+ export interface IPHXOnboardingStatus {
31
+ slidesCompleted: boolean;
32
+ toursCompleted: boolean;
33
+ }
34
+ export interface IPHXOnboardingContextType {
35
+ currentFlow: string | null;
36
+ isRunning: boolean;
37
+ registerFlow(flow: IPHXOnboardingFlow): void;
38
+ startFlow(flowName: string): void;
39
+ endFlow(): void;
40
+ nextStep(): void;
41
+ previousStep(): void;
42
+ skipFlow(): void;
43
+ resetStatusOnboarding(flowName: string): void;
44
+ isSlidesOpen: boolean;
45
+ closeSlides(): void;
46
+ /**
47
+ * Lưu trạng thái hoàn thành của flow vào localStorage.
48
+ * Mặc định trạng thái chỉ được giữ trong bộ nhớ (in-memory).
49
+ * Gọi hàm này khi muốn persist để không hiện lại lần sau.
50
+ */
51
+ persistFlowStatus(flowName: string): void;
52
+ /**
53
+ * Đọc trạng thái hiện tại của flow từ bộ nhớ.
54
+ */
55
+ getFlowStatus(flowName: string): IPHXOnboardingStatus;
56
+ }
57
+ export declare const PHXOnboardingProvider: React.FC<{
58
+ children: React.ReactNode;
59
+ }>;
60
+ /**
61
+ * Hook để sử dụng context
62
+ */
63
+ export declare const usePHXOnboarding: () => IPHXOnboardingContextType;
@@ -0,0 +1,276 @@
1
+ 'use client';
2
+ import { driver } from 'driver.js';
3
+ import 'driver.js/dist/driver.css';
4
+ import React, { createContext, useContext, useEffect, useState } from 'react';
5
+ import { PHXOnboardingModal } from '../modal-slides/modal-slides';
6
+ import { styleOnboarding } from './style';
7
+ const ONBOARDING_STATUS_KEY = 'phx-onboarding-status';
8
+ const PHXOnboardingContext = createContext(undefined);
9
+ export const PHXOnboardingProvider = ({ children }) => {
10
+ const [currentFlow, setCurrentFlow] = useState(null);
11
+ const [isRunning, setIsRunning] = useState(false);
12
+ const [flows, setFlows] = useState(new Map());
13
+ const [driverInstance, setDriverInstance] = useState(null);
14
+ // Modal slides state
15
+ const [isSlidesOpen, setIsSlidesOpen] = useState(false);
16
+ const [activeSlides, setActiveSlides] = useState([]);
17
+ const [hasTours, setHasTours] = useState(false);
18
+ const [pendingTourFlowName, setPendingTourFlowName] = useState(null);
19
+ // In-memory status only — không tự động ghi localStorage
20
+ const [onboardingStatus, setOnboardingStatus] = useState({});
21
+ // Đọc trạng thái đã persist từ localStorage khi khởi động
22
+ useEffect(() => {
23
+ const saved = localStorage.getItem(ONBOARDING_STATUS_KEY);
24
+ if (saved) {
25
+ try {
26
+ setOnboardingStatus(JSON.parse(saved));
27
+ }
28
+ catch (_a) {
29
+ // ignore parse error
30
+ }
31
+ }
32
+ }, []);
33
+ /**
34
+ * Cập nhật trạng thái trong bộ nhớ (KHÔNG ghi localStorage)
35
+ * @param flowName Tên flow
36
+ * @param patch Trạng thái muốn cập nhật
37
+ */
38
+ const updateStatus = (flowName, patch) => {
39
+ setOnboardingStatus((prev) => {
40
+ var _a;
41
+ const current = (_a = prev[flowName]) !== null && _a !== void 0 ? _a : {
42
+ slidesCompleted: false,
43
+ toursCompleted: false,
44
+ };
45
+ return {
46
+ ...prev,
47
+ [flowName]: { ...current, ...patch },
48
+ };
49
+ });
50
+ };
51
+ /** Lưu trạng thái của flow vào localStorage
52
+ * @param flowName Tên flow
53
+ */
54
+ const persistFlowStatus = (flowName) => {
55
+ setOnboardingStatus((prev) => {
56
+ var _a;
57
+ const status = (_a = prev[flowName]) !== null && _a !== void 0 ? _a : {
58
+ slidesCompleted: false,
59
+ toursCompleted: false,
60
+ };
61
+ const updated = { ...prev, [flowName]: status };
62
+ localStorage.setItem(ONBOARDING_STATUS_KEY, JSON.stringify(updated));
63
+ return updated;
64
+ });
65
+ };
66
+ /**
67
+ * Lấy trạng thái của flow
68
+ * @param flowName Tên flow
69
+ */
70
+ const getFlowStatus = (flowName) => {
71
+ var _a;
72
+ return (_a = onboardingStatus[flowName]) !== null && _a !== void 0 ? _a : {
73
+ slidesCompleted: false,
74
+ toursCompleted: false,
75
+ };
76
+ };
77
+ /**
78
+ * Đăng ký flow
79
+ * @param flow Flow cần đăng ký
80
+ */
81
+ const registerFlow = (flow) => {
82
+ setFlows((prev) => new Map(prev).set(flow.name, flow));
83
+ };
84
+ /**
85
+ * Chạy tour
86
+ * @param flowName Tên flow
87
+ * @param flow Flow cần chạy tour
88
+ */
89
+ const runTour = (flowName, flow) => {
90
+ var _a;
91
+ if (!((_a = flow.steps) === null || _a === void 0 ? void 0 : _a.length))
92
+ return;
93
+ if (driverInstance) {
94
+ driverInstance.destroy();
95
+ }
96
+ /**
97
+ * Tạo driver instance
98
+ */
99
+ const newDriver = driver({
100
+ showProgress: true,
101
+ showButtons: ['next', 'previous', 'close'],
102
+ nextBtnText: 'Tiếp theo',
103
+ prevBtnText: 'Quay lại',
104
+ doneBtnText: 'Hoàn tất',
105
+ stageRadius: 12,
106
+ allowClose: true,
107
+ onDestroyed: () => {
108
+ setDriverInstance(null);
109
+ setCurrentFlow(null);
110
+ setIsRunning(false);
111
+ // Chỉ cập nhật in-memory, không tự động persist
112
+ updateStatus(flowName, { toursCompleted: true });
113
+ },
114
+ });
115
+ newDriver.setSteps(flow.steps.map((step) => {
116
+ var _a, _b;
117
+ return ({
118
+ element: step.element,
119
+ popover: {
120
+ title: step.popover.title,
121
+ description: step.popover.description,
122
+ side: (_a = step.popover.side) !== null && _a !== void 0 ? _a : 'bottom',
123
+ align: (_b = step.popover.align) !== null && _b !== void 0 ? _b : 'center',
124
+ },
125
+ });
126
+ }));
127
+ setDriverInstance(newDriver);
128
+ setCurrentFlow(flowName);
129
+ setIsRunning(true);
130
+ newDriver.drive();
131
+ };
132
+ /**
133
+ * Bắt đầu flow
134
+ * @param flowName Tên flow
135
+ */
136
+ const startFlow = (flowName) => {
137
+ var _a, _b;
138
+ const flow = flows.get(flowName);
139
+ if (!flow) {
140
+ console.warn(`[Onboarding] Flow "${flowName}" not registered`);
141
+ return;
142
+ }
143
+ const hasSlides = Boolean((_a = flow.slides) === null || _a === void 0 ? void 0 : _a.length);
144
+ const hasTourSteps = Boolean((_b = flow.steps) === null || _b === void 0 ? void 0 : _b.length);
145
+ const status = getFlowStatus(flowName);
146
+ // Case 1: chỉ có tour (không có slides)
147
+ if (!hasSlides && hasTourSteps) {
148
+ runTour(flowName, flow);
149
+ return;
150
+ }
151
+ // Case 2: chỉ có slides (không có tour)
152
+ if (hasSlides && !hasTourSteps) {
153
+ if (!status.slidesCompleted) {
154
+ setActiveSlides(flow.slides);
155
+ setHasTours(false);
156
+ setPendingTourFlowName(null);
157
+ setCurrentFlow(flowName);
158
+ setIsSlidesOpen(true);
159
+ }
160
+ return;
161
+ }
162
+ // Case 3: cả slides lẫn tour
163
+ if (hasSlides && hasTourSteps) {
164
+ if (!status.slidesCompleted) {
165
+ setActiveSlides(flow.slides);
166
+ setHasTours(true);
167
+ setPendingTourFlowName(flowName);
168
+ setCurrentFlow(flowName);
169
+ setIsSlidesOpen(true);
170
+ }
171
+ else if (!status.toursCompleted) {
172
+ runTour(flowName, flow);
173
+ }
174
+ return;
175
+ }
176
+ console.warn(`[Onboarding] Flow "${flowName}" has no slides or steps`);
177
+ };
178
+ /**
179
+ * Cập nhật trạng thái của flow
180
+ */
181
+ const updateStatusFlow = () => {
182
+ if (currentFlow) {
183
+ // Chỉ cập nhật in-memory, không tự động persist
184
+ updateStatus(currentFlow, { slidesCompleted: true });
185
+ }
186
+ };
187
+ /**
188
+ * Đóng slides
189
+ */
190
+ const closeSlides = () => {
191
+ setIsSlidesOpen(false);
192
+ updateStatusFlow();
193
+ };
194
+ /**
195
+ * Bắt đầu tour từ slides
196
+ */
197
+ const startTourFromSlides = () => {
198
+ setIsSlidesOpen(false);
199
+ updateStatusFlow();
200
+ if (pendingTourFlowName) {
201
+ const flow = flows.get(pendingTourFlowName);
202
+ if (flow) {
203
+ runTour(pendingTourFlowName, flow);
204
+ }
205
+ }
206
+ };
207
+ /**
208
+ * Kết thúc flow
209
+ */
210
+ const endFlow = () => {
211
+ if (driverInstance) {
212
+ driverInstance.destroy();
213
+ setDriverInstance(null);
214
+ }
215
+ setIsRunning(false);
216
+ setCurrentFlow(null);
217
+ };
218
+ /**
219
+ * Chuyển đến bước tiếp theo
220
+ */
221
+ const nextStep = () => {
222
+ driverInstance === null || driverInstance === void 0 ? void 0 : driverInstance.moveNext();
223
+ };
224
+ /**
225
+ * Chuyển đến bước trước đó
226
+ */
227
+ const previousStep = () => {
228
+ driverInstance === null || driverInstance === void 0 ? void 0 : driverInstance.movePrevious();
229
+ };
230
+ /**
231
+ * Bỏ qua flow
232
+ */
233
+ const skipFlow = () => {
234
+ endFlow();
235
+ };
236
+ /**
237
+ * Reset trạng thái của flow
238
+ * @param flowName Tên flow
239
+ */
240
+ const resetStatusOnboarding = (flowName) => {
241
+ updateStatus(flowName, {
242
+ slidesCompleted: false,
243
+ toursCompleted: false,
244
+ });
245
+ };
246
+ const value = {
247
+ currentFlow,
248
+ isRunning,
249
+ registerFlow,
250
+ startFlow,
251
+ endFlow,
252
+ nextStep,
253
+ previousStep,
254
+ skipFlow,
255
+ isSlidesOpen,
256
+ closeSlides,
257
+ persistFlowStatus,
258
+ getFlowStatus,
259
+ resetStatusOnboarding,
260
+ };
261
+ return (React.createElement(PHXOnboardingContext.Provider, { value: value },
262
+ React.createElement("style", { dangerouslySetInnerHTML: { __html: styleOnboarding } }),
263
+ children,
264
+ React.createElement(PHXOnboardingModal, { hasTours: hasTours, onHide: closeSlides, onStartTour: startTourFromSlides, show: isSlidesOpen, slides: activeSlides })));
265
+ };
266
+ /**
267
+ * Hook để sử dụng context
268
+ */
269
+ export const usePHXOnboarding = () => {
270
+ const context = useContext(PHXOnboardingContext);
271
+ if (!context) {
272
+ throw new Error('useOnboarding must be used within OnboardingProvider');
273
+ }
274
+ return context;
275
+ };
276
+ //# sourceMappingURL=onboarding-context.js.map