@uxf/cms 13.0.3 → 14.1.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 (69) hide show
  1. package/README.md +1 -1
  2. package/api/index.d.ts +2 -0
  3. package/api/index.js +2 -2
  4. package/api/swr.js +71 -6
  5. package/content-builder/content-builder-header.js +42 -3
  6. package/content-builder/content-builder.js +140 -18
  7. package/content-builder/content-builder.stories.js +24 -5
  8. package/content-builder/forms/content-builder-basic-form.js +212 -25
  9. package/content-builder/forms/content-builder-seo-form.js +92 -8
  10. package/forms/change-password-form/change-password-form.js +152 -15
  11. package/forms/components/wysiwyg-input/wysiwyg-input.js +188 -50
  12. package/forms/components/wysiwyg-input/wysiwyg-input.stories.js +127 -22
  13. package/forms/forgotten-password-form/forgotten-password-form.js +119 -15
  14. package/forms/invite-user-form/invite-user-form.js +171 -13
  15. package/forms/login-form/login-form.js +122 -13
  16. package/forms/renew-password-form/renew-password-form.js +148 -16
  17. package/lib/api/create-axios-instance.d.ts +3 -1
  18. package/lib/api/create-axios-request.d.ts +3 -1
  19. package/lib/api/create-axios-request.js +9 -2
  20. package/lib/api/create-axios-request.test.d.ts +1 -0
  21. package/lib/api/create-axios-request.test.js +32 -0
  22. package/lib/layout/layout.js +126 -28
  23. package/lib/layout/sidebar.js +69 -38
  24. package/lib/menu/ui/menu-item.js +5 -2
  25. package/lib/menu/ui/sub-menu/sub-menu-mobile.js +62 -14
  26. package/lib/menu/ui/sub-menu/sub-menu.js +66 -14
  27. package/lib/menu/ui/sub-menu/use-sub-menu.js +137 -34
  28. package/lib/menu/ui/user-menu.js +178 -14
  29. package/package.json +21 -21
  30. package/pages/content-builder/components/form-content.js +189 -38
  31. package/pages/content-builder/components/form-root-fields.js +3 -3
  32. package/pages/content-builder/components/form.js +142 -27
  33. package/pages/content-builder/components/header.js +44 -5
  34. package/pages/content-builder/content/feature-section.js +67 -15
  35. package/pages/content-builder/content/gallery.js +38 -6
  36. package/pages/content-builder/content/hero-section.js +39 -6
  37. package/pages/content-builder/content/people.js +64 -13
  38. package/pages/content-builder/content/wysiwyg.js +60 -6
  39. package/pages/content-builder/content-builder-page.js +120 -48
  40. package/pages/content-builder/content-field.js +216 -35
  41. package/pages/content-builder/content-header-behaviour.spec.d.ts +1 -0
  42. package/pages/content-builder/content-header-behaviour.spec.js +22 -0
  43. package/pages/content-builder/content-header.js +100 -53
  44. package/pages/content-builder/context/details-visibility-context.js +96 -18
  45. package/pages/forgotten-password-page/forgotten-password-page.js +29 -46
  46. package/pages/grid-page/grid-page.js +292 -76
  47. package/pages/grid-page/history-pathname.d.ts +6 -0
  48. package/pages/grid-page/history-pathname.js +11 -0
  49. package/pages/grid-page/history-pathname.test.d.ts +1 -0
  50. package/pages/grid-page/history-pathname.test.js +11 -0
  51. package/pages/grid-page/use-hidden-columns.js +29 -8
  52. package/pages/invite-user-page/invite-user-page.js +39 -16
  53. package/pages/login-page/login-page.js +44 -50
  54. package/pages/renew-password-page/renew-password-page.js +35 -43
  55. package/pages/translations.d.ts +3 -0
  56. package/pages/translations.js +3 -0
  57. package/security/restricted-page.js +88 -10
  58. package/security/use-logged-user.js +33 -8
  59. package/translations/cs.json +2 -1
  60. package/translations/translations.d.ts +3 -0
  61. package/ui/avatar/avatar.js +3 -2
  62. package/ui/copy-to-clipboard/copy-to-clipboard.js +57 -44
  63. package/ui/copy-to-clipboard-button/copy-to-clipboard-button.js +47 -46
  64. package/utils/remove-confirm-handler.js +80 -11
  65. package/utils/use-viewport-height.js +26 -20
  66. package/utils/use-viewport-height.test.d.ts +1 -0
  67. package/utils/use-viewport-height.test.js +37 -0
  68. package/utils/use-visual-viewport-height.d.ts +2 -0
  69. package/utils/use-visual-viewport-height.js +26 -0
@@ -1,58 +1,59 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
35
5
  Object.defineProperty(exports, "__esModule", { value: true });
36
6
  exports.CopyToClipboardButton = void 0;
7
+ const compiler_runtime_1 = require("react/compiler-runtime");
37
8
  const copy_to_clipboard_1 = require("@uxf/core/utils/copy-to-clipboard");
38
9
  const translations_1 = require("@uxf/core-react/translations");
39
10
  const button_1 = require("@uxf/ui/button");
40
11
  const flash_messages_service_1 = require("@uxf/ui/flash-messages/flash-messages-service");
41
12
  const icon_1 = require("@uxf/ui/icon");
42
- const react_1 = __importStar(require("react"));
13
+ const react_1 = __importDefault(require("react"));
43
14
  // eslint-disable-next-line react/destructuring-assignment
44
- const CopyToClipboardButton = ({ color = "default", size = "sm", textToCopy }) => {
15
+ const CopyToClipboardButton = t0 => {
16
+ const $ = (0, compiler_runtime_1.c)(8);
17
+ const { color: t1, size: t2, textToCopy } = t0;
18
+ const color = t1 === undefined ? "default" : t1;
19
+ const size = t2 === undefined ? "sm" : t2;
45
20
  const t = (0, translations_1.useUxfTranslation)();
46
- const onCopy = (0, react_1.useCallback)(async () => {
47
- const isCopied = await (0, copy_to_clipboard_1.copyToClipboard)(textToCopy);
48
- (0, flash_messages_service_1.flashMessage)({
49
- message: isCopied
50
- ? t("uxf-cms-copy-to-clipboard-button:text-copied")
51
- : t("uxf-cms-copy-to-clipboard-button:copy-failed"),
52
- variant: isCopied ? "success" : "error",
53
- });
54
- }, [textToCopy, t]);
55
- return (react_1.default.createElement(button_1.Button, { color: color, onClick: onCopy, size: size },
56
- react_1.default.createElement(icon_1.Icon, { name: "copy" })));
21
+ let t3;
22
+ if ($[0] !== t || $[1] !== textToCopy) {
23
+ t3 = async () => {
24
+ const isCopied = await (0, copy_to_clipboard_1.copyToClipboard)(textToCopy);
25
+ (0, flash_messages_service_1.flashMessage)({
26
+ message: isCopied ? t("uxf-cms-copy-to-clipboard-button:text-copied") : t("uxf-cms-copy-to-clipboard-button:copy-failed"),
27
+ variant: isCopied ? "success" : "error"
28
+ });
29
+ };
30
+ $[0] = t;
31
+ $[1] = textToCopy;
32
+ $[2] = t3;
33
+ }
34
+ else {
35
+ t3 = $[2];
36
+ }
37
+ const onCopy = t3;
38
+ let t4;
39
+ if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
40
+ t4 = react_1.default.createElement(icon_1.Icon, { name: "copy" });
41
+ $[3] = t4;
42
+ }
43
+ else {
44
+ t4 = $[3];
45
+ }
46
+ let t5;
47
+ if ($[4] !== color || $[5] !== onCopy || $[6] !== size) {
48
+ t5 = react_1.default.createElement(button_1.Button, { color: color, onClick: onCopy, size: size }, t4);
49
+ $[4] = color;
50
+ $[5] = onCopy;
51
+ $[6] = size;
52
+ $[7] = t5;
53
+ }
54
+ else {
55
+ t5 = $[7];
56
+ }
57
+ return t5;
57
58
  };
58
59
  exports.CopyToClipboardButton = CopyToClipboardButton;
@@ -4,28 +4,97 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.removeConfirmHandler = removeConfirmHandler;
7
+ const compiler_runtime_1 = require("react/compiler-runtime");
7
8
  const translations_1 = require("@uxf/core-react/translations");
8
9
  const button_1 = require("@uxf/ui/button");
9
10
  const modal_1 = require("@uxf/ui/modal");
10
11
  const modal_dialog_1 = require("@uxf/ui/modal-dialog/modal-dialog");
11
12
  const react_1 = __importDefault(require("react"));
12
13
  function removeConfirmHandler() {
13
- return new Promise((resolve) => {
14
+ return new Promise(resolve => {
14
15
  const RemoveConfirmModal = () => {
16
+ const $ = (0, compiler_runtime_1.c)(16);
15
17
  const t = (0, translations_1.useUxfTranslation)();
16
- return (react_1.default.createElement(modal_dialog_1.ModalDialog, { footer: react_1.default.createElement(react_1.default.Fragment, null,
17
- react_1.default.createElement(button_1.Button, { onClick: () => {
18
- resolve(false);
19
- (0, modal_1.closeModal)();
20
- } }, t("uxf-cms-remove-confirm-handler:cancel")),
21
- react_1.default.createElement(button_1.Button, { color: "negative", onClick: () => {
22
- resolve(true);
23
- (0, modal_1.closeModal)();
24
- } }, t("uxf-cms-remove-confirm-handler:confirm-delete"))), title: t("uxf-cms-remove-confirm-handler:confirm-delete-message"), width: "sm" }));
18
+ let t0;
19
+ if ($[0] !== t) {
20
+ t0 = t("uxf-cms-remove-confirm-handler:cancel");
21
+ $[0] = t;
22
+ $[1] = t0;
23
+ }
24
+ else {
25
+ t0 = $[1];
26
+ }
27
+ let t1;
28
+ if ($[2] !== t0) {
29
+ t1 = react_1.default.createElement(button_1.Button, { onClick: _temp }, t0);
30
+ $[2] = t0;
31
+ $[3] = t1;
32
+ }
33
+ else {
34
+ t1 = $[3];
35
+ }
36
+ let t2;
37
+ if ($[4] !== t) {
38
+ t2 = t("uxf-cms-remove-confirm-handler:confirm-delete");
39
+ $[4] = t;
40
+ $[5] = t2;
41
+ }
42
+ else {
43
+ t2 = $[5];
44
+ }
45
+ let t3;
46
+ if ($[6] !== t2) {
47
+ t3 = react_1.default.createElement(button_1.Button, { color: "negative", onClick: _temp2 }, t2);
48
+ $[6] = t2;
49
+ $[7] = t3;
50
+ }
51
+ else {
52
+ t3 = $[7];
53
+ }
54
+ let t4;
55
+ if ($[8] !== t1 || $[9] !== t3) {
56
+ t4 = react_1.default.createElement(react_1.default.Fragment, null,
57
+ t1,
58
+ t3);
59
+ $[8] = t1;
60
+ $[9] = t3;
61
+ $[10] = t4;
62
+ }
63
+ else {
64
+ t4 = $[10];
65
+ }
66
+ let t5;
67
+ if ($[11] !== t) {
68
+ t5 = t("uxf-cms-remove-confirm-handler:confirm-delete-message");
69
+ $[11] = t;
70
+ $[12] = t5;
71
+ }
72
+ else {
73
+ t5 = $[12];
74
+ }
75
+ let t6;
76
+ if ($[13] !== t4 || $[14] !== t5) {
77
+ t6 = react_1.default.createElement(modal_dialog_1.ModalDialog, { footer: t4, title: t5, width: "sm" });
78
+ $[13] = t4;
79
+ $[14] = t5;
80
+ $[15] = t6;
81
+ }
82
+ else {
83
+ t6 = $[15];
84
+ }
85
+ return t6;
25
86
  };
26
87
  (0, modal_1.openModal)({
27
88
  isBackdropCloseDisabled: true,
28
- children: react_1.default.createElement(RemoveConfirmModal, null),
89
+ children: react_1.default.createElement(RemoveConfirmModal, null)
29
90
  });
30
91
  });
31
92
  }
93
+ function _temp() {
94
+ resolve(false);
95
+ (0, modal_1.closeModal)();
96
+ }
97
+ function _temp2() {
98
+ resolve(true);
99
+ (0, modal_1.closeModal)();
100
+ }
@@ -1,28 +1,34 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useViewportHeight = useViewportHeight;
4
+ const compiler_runtime_1 = require("react/compiler-runtime");
4
5
  const react_1 = require("react");
5
- function getHeight() {
6
- var _a, _b;
7
- if (typeof window === "undefined") {
8
- return "100vh";
9
- }
10
- return (_b = (_a = window.visualViewport) === null || _a === void 0 ? void 0 : _a.height) !== null && _b !== void 0 ? _b : "100vh";
11
- }
6
+ const use_visual_viewport_height_1 = require("./use-visual-viewport-height");
12
7
  function useViewportHeight(scrollLock) {
13
- const [height, setHeight] = (0, react_1.useState)(() => getHeight());
14
- (0, react_1.useEffect)(() => {
15
- if (scrollLock) {
16
- document.body.classList.add("xl:overflow-hidden");
17
- }
18
- const handler = () => setHeight(getHeight());
19
- window.addEventListener("resize", handler);
20
- return () => {
21
- if (scrollLock) {
22
- document.body.classList.remove("xl:overflow-hidden");
8
+ var _a;
9
+ const $ = (0, compiler_runtime_1.c)(3);
10
+ let t0;
11
+ let t1;
12
+ if ($[0] !== scrollLock) {
13
+ t0 = () => {
14
+ if (!scrollLock) {
15
+ return;
23
16
  }
24
- window.removeEventListener("resize", handler);
17
+ document.body.classList.add("xl:overflow-hidden");
18
+ return _temp;
25
19
  };
26
- }, [scrollLock]);
27
- return height;
20
+ t1 = [scrollLock];
21
+ $[0] = scrollLock;
22
+ $[1] = t0;
23
+ $[2] = t1;
24
+ }
25
+ else {
26
+ t0 = $[1];
27
+ t1 = $[2];
28
+ }
29
+ (0, react_1.useEffect)(t0, t1);
30
+ return (_a = (0, use_visual_viewport_height_1.useVisualViewportHeight)()) !== null && _a !== void 0 ? _a : "100vh";
31
+ }
32
+ function _temp() {
33
+ return document.body.classList.remove("xl:overflow-hidden");
28
34
  }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const react_1 = require("@testing-library/react");
4
+ const use_viewport_height_1 = require("./use-viewport-height");
5
+ class FakeVisualViewport extends EventTarget {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.height = 700;
9
+ this.scale = 1;
10
+ }
11
+ }
12
+ let visualViewport;
13
+ beforeEach(() => {
14
+ visualViewport = new FakeVisualViewport();
15
+ Object.defineProperty(window, "visualViewport", { configurable: true, value: visualViewport });
16
+ });
17
+ afterEach(() => {
18
+ Object.defineProperty(window, "visualViewport", { configurable: true, value: undefined });
19
+ });
20
+ test("follows the visual viewport, which shrinks when the on-screen keyboard opens", () => {
21
+ const { result } = (0, react_1.renderHook)(() => (0, use_viewport_height_1.useViewportHeight)());
22
+ (0, react_1.act)(() => {
23
+ visualViewport.height = 400;
24
+ // iOS fires this on the visual viewport only; window gets no resize event.
25
+ visualViewport.dispatchEvent(new Event("resize"));
26
+ });
27
+ expect(result.current).toBe(400);
28
+ });
29
+ test("ignores pinch zoom, which shrinks the visual viewport by the zoom scale", () => {
30
+ const { result } = (0, react_1.renderHook)(() => (0, use_viewport_height_1.useViewportHeight)());
31
+ (0, react_1.act)(() => {
32
+ visualViewport.scale = 2;
33
+ visualViewport.height = 350;
34
+ visualViewport.dispatchEvent(new Event("resize"));
35
+ });
36
+ expect(result.current).toBe(700);
37
+ });
@@ -0,0 +1,2 @@
1
+ /** Height of the visual viewport in px, not counting pinch zoom; `undefined` on the server and while hydrating. */
2
+ export declare function useVisualViewportHeight(): number | undefined;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useVisualViewportHeight = useVisualViewportHeight;
4
+ const react_1 = require("react");
5
+ function subscribe(onStoreChange) {
6
+ var _a;
7
+ // The visual viewport has its own resize event: iOS fires it when the on-screen keyboard opens, and the window
8
+ // gets none.
9
+ const target = (_a = window.visualViewport) !== null && _a !== void 0 ? _a : window;
10
+ const controller = new AbortController();
11
+ target.addEventListener("resize", onStoreChange, {
12
+ signal: controller.signal
13
+ });
14
+ return () => controller.abort();
15
+ }
16
+ function getSnapshot() {
17
+ const viewport = window.visualViewport;
18
+ // Times the zoom scale: pinch zoom shrinks `height` by the scale, and the layout must not shrink with it. The
19
+ // on-screen keyboard shrinks it at scale 1, which is the change to follow.
20
+ return viewport ? viewport.height * viewport.scale : window.innerHeight;
21
+ }
22
+ /** Height of the visual viewport in px, not counting pinch zoom; `undefined` on the server and while hydrating. */
23
+ function useVisualViewportHeight() {
24
+ return (0, react_1.useSyncExternalStore)(subscribe, getSnapshot, _temp);
25
+ }
26
+ function _temp() { }