ode-explorer 1.4.2-develop-pedago.202404301615 → 1.4.2-develop-pedago.202405171024

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.
package/dist/index.js CHANGED
@@ -18918,16 +18918,16 @@ const size$1 = function(options) {
18918
18918
  widthSide = side;
18919
18919
  heightSide = alignment === "end" ? "top" : "bottom";
18920
18920
  }
18921
- const overflowAvailableHeight = height - overflow[heightSide];
18922
- const overflowAvailableWidth = width - overflow[widthSide];
18921
+ const maximumClippingHeight = height - overflow.top - overflow.bottom;
18922
+ const maximumClippingWidth = width - overflow.left - overflow.right;
18923
+ const overflowAvailableHeight = min$1(height - overflow[heightSide], maximumClippingHeight);
18924
+ const overflowAvailableWidth = min$1(width - overflow[widthSide], maximumClippingWidth);
18923
18925
  const noShift = !state.middlewareData.shift;
18924
18926
  let availableHeight = overflowAvailableHeight;
18925
18927
  let availableWidth = overflowAvailableWidth;
18926
18928
  if (isYAxis) {
18927
- const maximumClippingWidth = width - overflow.left - overflow.right;
18928
18929
  availableWidth = alignment || noShift ? min$1(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;
18929
18930
  } else {
18930
- const maximumClippingHeight = height - overflow.top - overflow.bottom;
18931
18931
  availableHeight = alignment || noShift ? min$1(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;
18932
18932
  }
18933
18933
  if (noShift && !alignment) {
@@ -19194,10 +19194,10 @@ function getBoundingClientRect$1(element, includeScale, isFixedStrategy, offsetP
19194
19194
  });
19195
19195
  }
19196
19196
  const topLayerSelectors = [":popover-open", ":modal"];
19197
- function isTopLayer(floating) {
19197
+ function isTopLayer(element) {
19198
19198
  return topLayerSelectors.some((selector) => {
19199
19199
  try {
19200
- return floating.matches(selector);
19200
+ return element.matches(selector);
19201
19201
  } catch (e2) {
19202
19202
  return false;
19203
19203
  }
@@ -19363,7 +19363,7 @@ function getClippingRect$1(_ref) {
19363
19363
  rootBoundary,
19364
19364
  strategy
19365
19365
  } = _ref;
19366
- const elementClippingAncestors = boundary === "clippingAncestors" ? getClippingElementAncestors(element, this._c) : [].concat(boundary);
19366
+ const elementClippingAncestors = boundary === "clippingAncestors" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);
19367
19367
  const clippingAncestors = [...elementClippingAncestors, rootBoundary];
19368
19368
  const firstClippingAncestor = clippingAncestors[0];
19369
19369
  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {
@@ -19422,6 +19422,9 @@ function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
19422
19422
  height: rect.height
19423
19423
  };
19424
19424
  }
19425
+ function isStaticPositioned(element) {
19426
+ return getComputedStyle$3(element).position === "static";
19427
+ }
19425
19428
  function getTrueOffsetParent$1(element, polyfill2) {
19426
19429
  if (!isHTMLElement$1(element) || getComputedStyle$3(element).position === "fixed") {
19427
19430
  return null;
@@ -19432,18 +19435,28 @@ function getTrueOffsetParent$1(element, polyfill2) {
19432
19435
  return element.offsetParent;
19433
19436
  }
19434
19437
  function getOffsetParent$1(element, polyfill2) {
19435
- const window2 = getWindow$2(element);
19436
- if (!isHTMLElement$1(element) || isTopLayer(element)) {
19437
- return window2;
19438
+ const win = getWindow$2(element);
19439
+ if (isTopLayer(element)) {
19440
+ return win;
19441
+ }
19442
+ if (!isHTMLElement$1(element)) {
19443
+ let svgOffsetParent = getParentNode$1(element);
19444
+ while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {
19445
+ if (isElement$2(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {
19446
+ return svgOffsetParent;
19447
+ }
19448
+ svgOffsetParent = getParentNode$1(svgOffsetParent);
19449
+ }
19450
+ return win;
19438
19451
  }
19439
19452
  let offsetParent = getTrueOffsetParent$1(element, polyfill2);
19440
- while (offsetParent && isTableElement$1(offsetParent) && getComputedStyle$3(offsetParent).position === "static") {
19453
+ while (offsetParent && isTableElement$1(offsetParent) && isStaticPositioned(offsetParent)) {
19441
19454
  offsetParent = getTrueOffsetParent$1(offsetParent, polyfill2);
19442
19455
  }
19443
- if (offsetParent && (getNodeName$1(offsetParent) === "html" || getNodeName$1(offsetParent) === "body" && getComputedStyle$3(offsetParent).position === "static" && !isContainingBlock(offsetParent))) {
19444
- return window2;
19456
+ if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {
19457
+ return win;
19445
19458
  }
19446
- return offsetParent || getContainingBlock$1(element) || window2;
19459
+ return offsetParent || getContainingBlock$1(element) || win;
19447
19460
  }
19448
19461
  const getElementRects = async function(data) {
19449
19462
  const getOffsetParentFn = this.getOffsetParent || getOffsetParent$1;
@@ -63586,8 +63599,8 @@ const Image$1 = /* @__PURE__ */ reactExports.forwardRef(({
63586
63599
  onMenuItemKeyDown,
63587
63600
  onMenuItemMouseEnter,
63588
63601
  onMenuItemClick
63589
- } = itemProps, handleOnClick = () => {
63590
- onClick2 == null || onClick2(), type2 === "action" && onMenuItemClick();
63602
+ } = itemProps, handleOnClick = (event) => {
63603
+ onClick2 == null || onClick2(event), type2 === "action" && onMenuItemClick();
63591
63604
  }, id2 = reactExports.useId(), dropdownItem = clsx("dropdown-item", {
63592
63605
  focus: isFocused === id2
63593
63606
  });
@@ -64033,7 +64046,8 @@ const TextArea = /* @__PURE__ */ reactExports.forwardRef(({
64033
64046
  className,
64034
64047
  ...restProps
64035
64048
  }, ref2) => {
64036
- const {
64049
+ var _a2, _b2;
64050
+ const [content, setContent] = reactExports.useState(((_a2 = restProps.defaultValue) == null ? void 0 : _a2.toString()) || ((_b2 = restProps.value) == null ? void 0 : _b2.toString())), {
64037
64051
  id: id2,
64038
64052
  isRequired,
64039
64053
  isReadOnly,
@@ -64050,7 +64064,16 @@ const TextArea = /* @__PURE__ */ reactExports.forwardRef(({
64050
64064
  "form-control-plaintext": isReadOnly,
64051
64065
  "no-validation-icon": noValidationIcon
64052
64066
  }, className);
64053
- return /* @__PURE__ */ jsxRuntimeExports.jsx("textarea", { ref: ref2, id: id2, className: classes2, placeholder, required: isRequired, readOnly: isReadOnly, ...restProps });
64067
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
64068
+ /* @__PURE__ */ jsxRuntimeExports.jsx("textarea", { ref: ref2, id: id2, className: classes2, placeholder, required: isRequired, readOnly: isReadOnly, ...restProps, value: content, onChange: (event) => {
64069
+ setContent(event.target.value);
64070
+ } }),
64071
+ restProps.maxLength && content && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "small text-gray-700 p-2 text-end", children: [
64072
+ content.length,
64073
+ " / ",
64074
+ restProps.maxLength
64075
+ ] })
64076
+ ] });
64054
64077
  }), TextArea$1 = TextArea;
64055
64078
  function useTreeItemEvents(nodeId, label, expanded, setExpanded, onItemSelect, onItemFold, onItemUnfold, onItemFocus, onItemBlur) {
64056
64079
  const handleItemClick = (event) => {
@@ -64823,15 +64846,19 @@ const useThumb = ({
64823
64846
  /* @__PURE__ */ jsxRuntimeExports.jsx(Label$1, { children: t2("title") }),
64824
64847
  /* @__PURE__ */ jsxRuntimeExports.jsx(Input$1, { type: "text", defaultValue: isUpdating ? resource == null ? void 0 : resource.name : "", ...register("title", {
64825
64848
  required: true,
64849
+ maxLength: 60,
64826
64850
  pattern: {
64827
64851
  value: /[^ ]/,
64828
64852
  message: "invalid title"
64829
64853
  }
64830
- }), placeholder: t2("explorer.resource.editModal.title.placeholder"), size: "md", "aria-required": true })
64854
+ }), placeholder: t2("explorer.resource.editModal.title.placeholder"), size: "md", "aria-required": true, maxLength: 60 })
64831
64855
  ] }),
64832
64856
  /* @__PURE__ */ jsxRuntimeExports.jsxs(FormControl$1, { id: "description", isOptional: true, children: [
64833
64857
  /* @__PURE__ */ jsxRuntimeExports.jsx(Label$1, { children: t2("description") }),
64834
- /* @__PURE__ */ jsxRuntimeExports.jsx(TextArea$1, { defaultValue: isUpdating ? resource == null ? void 0 : resource.description : "", ...register("description"), placeholder: t2("explorer.resource.editModal.description.placeholder"), size: "md" })
64858
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TextArea$1, { value: resource.description, ...register("description", {
64859
+ required: false,
64860
+ maxLength: 400
64861
+ }), placeholder: t2("explorer.resource.editModal.description.placeholder"), size: "md", maxLength: 400 })
64835
64862
  ] })
64836
64863
  ] })
64837
64864
  ] }),
@@ -66327,8 +66354,31 @@ const SearchEngine = () => {
66327
66354
  "container-fluid": !headless,
66328
66355
  "rounded-4 border": (theme == null ? void 0 : theme.is1d) && !headless,
66329
66356
  "mt-24": (theme == null ? void 0 : theme.is1d) && !headless
66330
- }), renderHeader = headless ? null : /* @__PURE__ */ jsxRuntimeExports.jsx(Header$2, { is1d: theme == null ? void 0 : theme.is1d, src: theme == null ? void 0 : theme.basePath }), renderCookies = showCookiesConsent && /* @__PURE__ */ jsxRuntimeExports.jsx(Alert$1, { type: "info", className: "m-12", isConfirm: true, position: "bottom-right", button: /* @__PURE__ */ jsxRuntimeExports.jsx(Button$1, { color: "tertiary", variant: "ghost", onClick: handleConsultCookies, children: t2("rgpd.cookies.banner.button.consult") }), onClose: handleCloseCookiesConsent, children: t2("rgpd.cookies.banner.text1") }), renderToaster = /* @__PURE__ */ jsxRuntimeExports.jsx(Ie$1, { toastOptions: {
66331
- position: "top-right"
66357
+ }), renderHeader = headless ? null : /* @__PURE__ */ jsxRuntimeExports.jsx(Header$2, { is1d: theme == null ? void 0 : theme.is1d, src: theme == null ? void 0 : theme.basePath }), renderCookies = showCookiesConsent && /* @__PURE__ */ jsxRuntimeExports.jsx(Alert$1, { type: "info", className: "m-12", isConfirm: true, position: "bottom-right", button: /* @__PURE__ */ jsxRuntimeExports.jsx(Button$1, { color: "tertiary", variant: "ghost", onClick: handleConsultCookies, children: t2("rgpd.cookies.banner.button.consult") }), onClose: handleCloseCookiesConsent, children: t2("rgpd.cookies.banner.text1") }), renderToaster = /* @__PURE__ */ jsxRuntimeExports.jsx(Ie$1, { containerStyle: {
66358
+ zIndex: 0
66359
+ }, toastOptions: {
66360
+ position: "top-right",
66361
+ style: {},
66362
+ success: {
66363
+ style: {
66364
+ zIndex: 9999
66365
+ }
66366
+ },
66367
+ error: {
66368
+ style: {
66369
+ zIndex: 9999
66370
+ }
66371
+ },
66372
+ loading: {
66373
+ style: {
66374
+ zIndex: 9999
66375
+ }
66376
+ },
66377
+ custom: {
66378
+ style: {
66379
+ zIndex: 9999
66380
+ }
66381
+ }
66332
66382
  } });
66333
66383
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
66334
66384
  renderHeader,
@@ -68982,6 +69032,7 @@ function FolderModal$1({
68982
69032
  type: "text",
68983
69033
  ...register("name", {
68984
69034
  required: true,
69035
+ maxLength: 60,
68985
69036
  pattern: {
68986
69037
  value: /[^ ]/,
68987
69038
  message: "invalid title"
@@ -68989,7 +69040,8 @@ function FolderModal$1({
68989
69040
  }),
68990
69041
  placeholder: t2("explorer.create.folder.name"),
68991
69042
  size: "md",
68992
- "aria-required": true
69043
+ "aria-required": true,
69044
+ maxLength: 60
68993
69045
  }
68994
69046
  )
68995
69047
  ] }) }) }),
@@ -69111,7 +69163,7 @@ const Library = () => {
69111
69163
  href: libraryUrl,
69112
69164
  target: "_blank",
69113
69165
  rel: "noreferrer",
69114
- className: "d-inline-flex gap-4 btn btn-ghost-primary py-0 p-0 pe-8",
69166
+ className: "d-inline-flex align-items-center gap-4 btn btn-ghost-primary py-0 p-0 pe-8",
69115
69167
  children: [
69116
69168
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: t2("explorer.libray.btn") }),
69117
69169
  /* @__PURE__ */ jsxRuntimeExports.jsx(SvgArrowRight$1, {})
package/dist/version.txt CHANGED
@@ -1 +1 @@
1
- ode-explorer=1.0-b2school-SNAPSHOT 30/04/2024 16:15:49
1
+ ode-explorer=1.0-b2school-SNAPSHOT 17/05/2024 10:25:10
@@ -1,6 +1,6 @@
1
- import { jsxs as b, jsx as a } from "react/jsx-runtime";
2
- import { useId as q, useEffect as B } from "react";
3
- import { Modal as m, FormControl as L, Label as w, Input as R, Button as I } from "@edifice-ui/react";
1
+ import { jsxs as x, jsx as a } from "react/jsx-runtime";
2
+ import { useId as j, useEffect as q } from "react";
3
+ import { Modal as m, FormControl as B, Label as w, Input as R, Button as C } from "@edifice-ui/react";
4
4
  import { createPortal as T } from "react-dom";
5
5
  import { useTranslation as U } from "react-i18next";
6
6
  import { FOLDER as V } from "edifice-ts-client";
@@ -11,20 +11,20 @@ import "i18next";
11
11
  import "zustand";
12
12
  import "@tanstack/react-query";
13
13
  function P({
14
- edit: o,
14
+ edit: t,
15
15
  onSuccess: e,
16
16
  onClose: s
17
17
  }) {
18
- var x;
19
- const l = k(), r = z(), c = A(), f = H(), u = o ? (x = l[0]) == null ? void 0 : x.name : void 0, {
20
- reset: t,
18
+ var b;
19
+ const l = k(), r = z(), c = A(), f = H(), u = t ? (b = l[0]) == null ? void 0 : b.name : void 0, {
20
+ reset: o,
21
21
  register: p,
22
22
  handleSubmit: n,
23
23
  setFocus: h,
24
24
  formState: {
25
25
  errors: F,
26
26
  isSubmitting: d,
27
- isDirty: g,
27
+ isDirty: I,
28
28
  isValid: v
29
29
  }
30
30
  } = _({
@@ -32,47 +32,47 @@ function P({
32
32
  values: {
33
33
  name: u || ""
34
34
  }
35
- }), M = q(), D = async function({
35
+ }), M = j(), L = async function({
36
36
  name: y
37
37
  }) {
38
- var C;
38
+ var g;
39
39
  try {
40
- if (o) {
41
- const i = (C = l[0]) == null ? void 0 : C.parentId, j = l[0].id;
40
+ if (t) {
41
+ const i = (g = l[0]) == null ? void 0 : g.parentId, E = l[0].id;
42
42
  await f.mutate({
43
- folderId: j,
43
+ folderId: E,
44
44
  parentId: i,
45
45
  name: y
46
- }), t(), e == null || e();
46
+ }), o(), e == null || e();
47
47
  } else {
48
48
  const i = (r == null ? void 0 : r.id) || V.DEFAULT;
49
49
  await c.mutate({
50
50
  name: y,
51
51
  parentId: i
52
- }), t(), e == null || e();
52
+ }), o(), e == null || e();
53
53
  }
54
54
  } catch (i) {
55
55
  console.error(i);
56
56
  }
57
57
  };
58
- function E() {
59
- t(), s();
58
+ function D() {
59
+ o(), s();
60
60
  }
61
61
  return {
62
62
  formId: `createModal_${M}`,
63
63
  errors: F,
64
64
  isSubmitting: d,
65
- isDirty: g,
65
+ isDirty: I,
66
66
  isValid: v,
67
67
  register: p,
68
68
  setFocus: h,
69
69
  handleSubmit: n,
70
- onCancel: E,
71
- onSubmit: D
70
+ onCancel: D,
71
+ onSubmit: L
72
72
  };
73
73
  }
74
- function oe({
75
- isOpen: o,
74
+ function te({
75
+ isOpen: t,
76
76
  edit: e,
77
77
  onSuccess: s,
78
78
  onCancel: l
@@ -83,7 +83,7 @@ function oe({
83
83
  isDirty: c,
84
84
  isValid: f,
85
85
  isSubmitting: u,
86
- formId: t,
86
+ formId: o,
87
87
  onSubmit: p,
88
88
  onCancel: n,
89
89
  handleSubmit: h,
@@ -94,26 +94,27 @@ function oe({
94
94
  onSuccess: s,
95
95
  onClose: l
96
96
  });
97
- return B(() => {
98
- o && d("name");
99
- }, [o, d]), o ? /* @__PURE__ */ T(/* @__PURE__ */ b(m, { isOpen: o, onModalClose: n, id: "modal_" + t, children: [
97
+ return q(() => {
98
+ t && d("name");
99
+ }, [t, d]), t ? /* @__PURE__ */ T(/* @__PURE__ */ x(m, { isOpen: t, onModalClose: n, id: "modal_" + o, children: [
100
100
  /* @__PURE__ */ a(m.Header, { onModalClose: n, children: r(e ? "explorer.rename.folder" : "explorer.create.folder") }),
101
- /* @__PURE__ */ a(m.Body, { children: /* @__PURE__ */ a("form", { id: t, onSubmit: h(p), children: /* @__PURE__ */ b(L, { id: "nameFolder", isRequired: !0, children: [
101
+ /* @__PURE__ */ a(m.Body, { children: /* @__PURE__ */ a("form", { id: o, onSubmit: h(p), children: /* @__PURE__ */ x(B, { id: "nameFolder", isRequired: !0, children: [
102
102
  /* @__PURE__ */ a(w, { children: r("explorer.create.folder.name") }),
103
103
  /* @__PURE__ */ a(R, { type: "text", ...F("name", {
104
104
  required: !0,
105
+ maxLength: 60,
105
106
  pattern: {
106
107
  value: /[^ ]/,
107
108
  message: "invalid title"
108
109
  }
109
- }), placeholder: r("explorer.create.folder.name"), size: "md", "aria-required": !0 })
110
+ }), placeholder: r("explorer.create.folder.name"), size: "md", "aria-required": !0, maxLength: 60 })
110
111
  ] }) }) }),
111
- /* @__PURE__ */ b(m.Footer, { children: [
112
- /* @__PURE__ */ a(I, { color: "tertiary", onClick: n, type: "button", variant: "ghost", children: r("explorer.cancel") }),
113
- /* @__PURE__ */ a(I, { form: t, type: "submit", color: "primary", variant: "filled", disabled: !c || !f || u, children: r(e ? "explorer.rename" : "explorer.create") })
112
+ /* @__PURE__ */ x(m.Footer, { children: [
113
+ /* @__PURE__ */ a(C, { color: "tertiary", onClick: n, type: "button", variant: "ghost", children: r("explorer.cancel") }),
114
+ /* @__PURE__ */ a(C, { form: o, type: "submit", color: "primary", variant: "filled", disabled: !c || !f || u, children: r(e ? "explorer.rename" : "explorer.create") })
114
115
  ] })
115
116
  ] }), document.getElementById("portal")) : null;
116
117
  }
117
118
  export {
118
- oe as default
119
+ te as default
119
120
  };
package/lib/Library.js CHANGED
@@ -11,7 +11,7 @@ const y = () => {
11
11
  return t && /* @__PURE__ */ i("div", { className: "p-16", children: [
12
12
  /* @__PURE__ */ r(p, { width: "270", height: "140", loading: "lazy", className: "rounded", src: `${l}/${a == null ? void 0 : a.bootstrapVersion}/image-library.svg`, alt: e("explorer.libray.img.alt") }),
13
13
  /* @__PURE__ */ r("p", { className: "m-8", children: e("explorer.libray.title") }),
14
- /* @__PURE__ */ i("a", { href: t, target: "_blank", rel: "noreferrer", className: "d-inline-flex gap-4 btn btn-ghost-primary py-0 p-0 pe-8", children: [
14
+ /* @__PURE__ */ i("a", { href: t, target: "_blank", rel: "noreferrer", className: "d-inline-flex align-items-center gap-4 btn btn-ghost-primary py-0 p-0 pe-8", children: [
15
15
  /* @__PURE__ */ r("span", { children: e("explorer.libray.btn") }),
16
16
  /* @__PURE__ */ r(s, {})
17
17
  ] })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ode-explorer",
3
- "version": "1.4.2-develop-pedago.202404301615",
3
+ "version": "1.4.2-develop-pedago.202405171024",
4
4
  "description": "Edifice Explorer",
5
5
  "homepage": "https://github.com/edificeio/explorer#readme",
6
6
  "bugs": {