@strapi/design-system 1.3.0 → 1.4.0-beta.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.
- package/dist/DatePicker/DatePicker.cjs +1 -1
- package/dist/DatePicker/DatePicker.js +14 -14
- package/dist/DateTimePicker/DateTimePicker.cjs +1 -0
- package/dist/DateTimePicker/DateTimePicker.js +108 -0
- package/dist/DateTimePicker/DateTimePickerProps.cjs +1 -0
- package/dist/DateTimePicker/DateTimePickerProps.js +42 -0
- package/dist/DateTimePicker/__tests__/parseDate.test.cjs +1 -0
- package/dist/DateTimePicker/__tests__/parseDate.test.js +8 -0
- package/dist/DateTimePicker/index.cjs +1 -0
- package/dist/DateTimePicker/index.js +4 -0
- package/dist/DateTimePicker/parseDate.cjs +1 -0
- package/dist/DateTimePicker/parseDate.js +7 -0
- package/dist/Field/Field.cjs +1 -1
- package/dist/Field/Field.js +8 -8
- package/dist/Field/FieldError.cjs +1 -1
- package/dist/Field/FieldError.js +4 -4
- package/dist/RawTable/RawCell.cjs +1 -1
- package/dist/RawTable/RawCell.js +18 -18
- package/dist/Select/Select.cjs +2 -2
- package/dist/Select/Select.js +117 -112
- package/dist/TextInput/TextInput.cjs +1 -1
- package/dist/TextInput/TextInput.js +14 -14
- package/dist/TimePicker/TimePicker.cjs +2 -2
- package/dist/TimePicker/TimePicker.js +38 -35
- package/dist/index.cjs +1 -1
- package/dist/index.js +175 -173
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react"),L=require("prop-types"),O=require("@strapi/icons/Calendar"),x=require("@strapi/icons/Cross"),z=require("../themes/sizes.cjs"),S=require("../TextInput/TextInput.cjs"),d=require("./components.cjs"),B=require("./DatePickerCalendar.cjs"),h=require("./utils/formatDate.cjs"),M=require("../helpers/useId.cjs"),W=require("../helpers/getDefaultLocale.cjs"),s=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},a=s(o),e=s(L),A=s(O),V=s(x),f=({ariaLabel:t,initialDate:k,selectedDate:n,onChange:q,label:c,locale:v,selectedDateLabel:P,onClear:p,clearLabel:I,disabled:r,id:_,...j})=>{const y=M.useId("datepicker",_),[D,i]=o.useState(!1),l=o.useRef(null),g=o.useRef(null),m=v||W.getDefaultLocale(),b=n?h.formatDate(n,m):"",C=()=>{r||i(u=>!u)},R=()=>{r||(p(),g.current.focus())},E=u=>{q(u),i(!1)},T=()=>{i(!1)};return a.default.createElement(d.DatePickerWrapper,{bold:D},a.default.createElement(S.TextInput,{ref:l,onClick:C,onChange:()=>{},value:b,startAction:a.default.createElement(d.DatePickerButton,{ref:g,onClick:C,"aria-label":n?P(h.formatDate(n,m)):c||t,type:"button","aria-disabled":r},a.default.createElement(A.default,{"aria-hidden":!0})),endAction:p&&b?a.default.createElement(d.IconBox,{as:"button",onClick:R,"aria-label":I,"aria-disabled":r},a.default.createElement(V.default,null)):void 0,"aria-autocomplete":"none",label:c,"aria-label":t,disabled:r,id:y,...j}),l.current&&l.current.inputWrapperRef&&D&&a.default.createElement(B.DatePickerCalendar,{selectedDate:n,initialDate:k,onChange:E,onEscape:T,popoverSource:l.current.inputWrapperRef,label:c||t}))};f.defaultProps={ariaLabel:void 0,clearLabel:void 0,disabled:!1,id:void 0,label:void 0,initialDate:new Date,onClear:void 0,placeholder:void 0,selectedDate:void 0,size:"M"};f.propTypes={ariaLabel:e.default.string,clearLabel:e.default.string,disabled:e.default.bool,id:e.default.string,initialDate:e.default.instanceOf(Date),label:e.default.string,locale:e.default.string,maxDate:e.default.instanceOf(Date),minDate:e.default.instanceOf(Date),onChange:e.default.func.isRequired,onClear:e.default.func,placeholder:e.default.string,selectedDate:e.default.instanceOf(Date),selectedDateLabel:e.default.func.isRequired,size:e.default.oneOf(Object.keys(z.sizes.input))};exports.DatePicker=f;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import t, { useState as
|
|
1
|
+
import t, { useState as L, useRef as b } from "react";
|
|
2
2
|
import e from "prop-types";
|
|
3
3
|
import z from "@strapi/icons/Calendar";
|
|
4
4
|
import B from "@strapi/icons/Cross";
|
|
@@ -10,11 +10,11 @@ import { formatDate as D } from "./utils/formatDate.js";
|
|
|
10
10
|
import { useId as _ } from "../helpers/useId.js";
|
|
11
11
|
import { getDefaultLocale as j } from "../helpers/getDefaultLocale.js";
|
|
12
12
|
const g = ({
|
|
13
|
-
ariaLabel:
|
|
13
|
+
ariaLabel: o,
|
|
14
14
|
initialDate: C,
|
|
15
15
|
selectedDate: a,
|
|
16
16
|
onChange: v,
|
|
17
|
-
label:
|
|
17
|
+
label: i,
|
|
18
18
|
locale: h,
|
|
19
19
|
selectedDateLabel: k,
|
|
20
20
|
onClear: s,
|
|
@@ -23,14 +23,14 @@ const g = ({
|
|
|
23
23
|
id: R,
|
|
24
24
|
...P
|
|
25
25
|
}) => {
|
|
26
|
-
const O = _("datepicker", R), [f,
|
|
27
|
-
r ||
|
|
26
|
+
const O = _("datepicker", R), [f, l] = L(!1), n = b(null), p = b(null), u = h || j(), m = a ? D(a, u) : "", d = () => {
|
|
27
|
+
r || l((c) => !c);
|
|
28
28
|
}, y = () => {
|
|
29
29
|
r || (s(), p.current.focus());
|
|
30
|
-
}, I = (
|
|
31
|
-
v(
|
|
32
|
-
},
|
|
33
|
-
|
|
30
|
+
}, I = (c) => {
|
|
31
|
+
v(c), l(!1);
|
|
32
|
+
}, x = () => {
|
|
33
|
+
l(!1);
|
|
34
34
|
};
|
|
35
35
|
return /* @__PURE__ */ t.createElement(q, {
|
|
36
36
|
bold: f
|
|
@@ -43,7 +43,7 @@ const g = ({
|
|
|
43
43
|
startAction: /* @__PURE__ */ t.createElement(A, {
|
|
44
44
|
ref: p,
|
|
45
45
|
onClick: d,
|
|
46
|
-
"aria-label": a ? k(D(a, u)) : o,
|
|
46
|
+
"aria-label": a ? k(D(a, u)) : i || o,
|
|
47
47
|
type: "button",
|
|
48
48
|
"aria-disabled": r
|
|
49
49
|
}, /* @__PURE__ */ t.createElement(z, {
|
|
@@ -56,8 +56,8 @@ const g = ({
|
|
|
56
56
|
"aria-disabled": r
|
|
57
57
|
}, /* @__PURE__ */ t.createElement(B, null)) : void 0,
|
|
58
58
|
"aria-autocomplete": "none",
|
|
59
|
-
label:
|
|
60
|
-
"aria-label":
|
|
59
|
+
label: i,
|
|
60
|
+
"aria-label": o,
|
|
61
61
|
disabled: r,
|
|
62
62
|
id: O,
|
|
63
63
|
...P
|
|
@@ -65,9 +65,9 @@ const g = ({
|
|
|
65
65
|
selectedDate: a,
|
|
66
66
|
initialDate: C,
|
|
67
67
|
onChange: I,
|
|
68
|
-
onEscape:
|
|
68
|
+
onEscape: x,
|
|
69
69
|
popoverSource: n.current.inputWrapperRef,
|
|
70
|
-
label:
|
|
70
|
+
label: i || o
|
|
71
71
|
}));
|
|
72
72
|
};
|
|
73
73
|
g.defaultProps = {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const p=require("react"),S=require("../Stack/Stack.cjs"),v=require("../DatePicker/DatePicker.cjs"),C=require("../TimePicker/TimePicker.cjs"),R=require("../Field/Field.cjs"),x=require("../Field/FieldLabel.cjs");require("../Field/FieldInput.cjs");const A=require("../Field/FieldHint.cjs"),O=require("../Field/FieldError.cjs");require("../Field/FieldContext.cjs");require("../Field/FieldAction.cjs");const q=require("../helpers/useId.cjs"),E=require("./parseDate.cjs"),$=require("./DateTimePickerProps.cjs"),z=i=>i&&typeof i=="object"&&"default"in i?i:{default:i},r=z(p),D=({ariaLabel:i,clearLabel:k,disabled:F,error:f,hint:H,label:o,labelAction:y,onChange:s,onClear:m,name:P,required:M,selectButtonTitle:I,size:T,step:b,value:c,...g})=>{const l=E.parseDate(c),[a,n]=p.useState(l),[u,d]=p.useState(l?`${l.getHours()}:${l.getMinutes()}:${l.getSeconds()}`:null),h=e=>{n(e);let t;u?(t=new Date(e),t.setHours(u.split(":")[0]),t.setMinutes(u.split(":")[1])):(t=new Date(e),d(`${t.getHours()}:${t.getMinutes()}:${t.getSeconds()}`)),s&&s(t)},w=e=>{d(e);const t=a?new Date(a):new Date;t.setHours(e.split(":")[0]),t.setMinutes(e.split(":")[1]),a||n(t),s&&s(t)},_=()=>{n(void 0),d(void 0),m()},L=()=>{d(void 0);let e;a&&(e=new Date(a),e.setHours("00"),e.setMinutes("00")),s&&s(e)};p.useEffect(()=>{if(c&&+c!=+a){const e=E.parseDate(c);n(e),d(e?`${e.getHours()}:${e.getMinutes()}:${e.getSeconds()}`:null)}else c||(n(void 0),d(void 0))},[c]);const j=q.useId("datetime-label",g?.id),V=q.useId("datetimepicker");return r.default.createElement(R.Field,{name:P,role:"group","aria-labelledby":j,hint:H,error:f},r.default.createElement(S.Stack,{spacing:1},o&&r.default.createElement(x.FieldLabel,{required:M,action:y,id:j},o),r.default.createElement(S.Stack,{horizontal:!0,spacing:2},r.default.createElement(v.DatePicker,{"data-testid":"datetimepicker-date",name:P,ariaLabel:o||i,error:typeof f=="string",selectedDate:a,selectedDateLabel:e=>`Date picker, current is ${e}`,onChange:h,size:T,onClear:m&&_,clearLabel:k,disabled:F,...g}),r.default.createElement(C.TimePicker,{"data-testid":"datetimepicker-time",size:T,"aria-label":o||i,error:typeof f=="string",value:u,onChange:w,onClear:m&&L,clearLabel:k,selectButtonTitle:I,disabled:F,step:b})),r.default.createElement(A.FieldHint,null),r.default.createElement(O.FieldError,{id:V})))};D.defaultProps=$.dateTimePickerDefaultProps;D.propTypes=$.dateTimePickerPropTypes;exports.DateTimePicker=D;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import i, { useState as $, useEffect as C } from "react";
|
|
2
|
+
import { Stack as P } from "../Stack/Stack.js";
|
|
3
|
+
import { DatePicker as L } from "../DatePicker/DatePicker.js";
|
|
4
|
+
import { TimePicker as R } from "../TimePicker/TimePicker.js";
|
|
5
|
+
import { Field as j } from "../Field/Field.js";
|
|
6
|
+
import { FieldLabel as q } from "../Field/FieldLabel.js";
|
|
7
|
+
import "../Field/FieldInput.js";
|
|
8
|
+
import { FieldHint as z } from "../Field/FieldHint.js";
|
|
9
|
+
import { FieldError as A } from "../Field/FieldError.js";
|
|
10
|
+
import "../Field/FieldContext.js";
|
|
11
|
+
import "../Field/FieldAction.js";
|
|
12
|
+
import { useId as S } from "../helpers/useId.js";
|
|
13
|
+
import { parseDate as H } from "./parseDate.js";
|
|
14
|
+
import { dateTimePickerDefaultProps as B, dateTimePickerPropTypes as G } from "./DateTimePickerProps.js";
|
|
15
|
+
const M = ({
|
|
16
|
+
ariaLabel: f,
|
|
17
|
+
clearLabel: u,
|
|
18
|
+
disabled: D,
|
|
19
|
+
error: c,
|
|
20
|
+
hint: w,
|
|
21
|
+
label: d,
|
|
22
|
+
labelAction: y,
|
|
23
|
+
onChange: o,
|
|
24
|
+
onClear: p,
|
|
25
|
+
name: g,
|
|
26
|
+
required: F,
|
|
27
|
+
selectButtonTitle: h,
|
|
28
|
+
size: T,
|
|
29
|
+
step: V,
|
|
30
|
+
value: a,
|
|
31
|
+
...E
|
|
32
|
+
}) => {
|
|
33
|
+
const n = H(a), [r, m] = $(n), [l, s] = $(
|
|
34
|
+
n ? `${n.getHours()}:${n.getMinutes()}:${n.getSeconds()}` : null
|
|
35
|
+
), I = (e) => {
|
|
36
|
+
m(e);
|
|
37
|
+
let t;
|
|
38
|
+
l ? (t = new Date(e), t.setHours(l.split(":")[0]), t.setMinutes(l.split(":")[1])) : (t = new Date(e), s(`${t.getHours()}:${t.getMinutes()}:${t.getSeconds()}`)), o && o(t);
|
|
39
|
+
}, _ = (e) => {
|
|
40
|
+
s(e);
|
|
41
|
+
const t = r ? new Date(r) : new Date();
|
|
42
|
+
t.setHours(e.split(":")[0]), t.setMinutes(e.split(":")[1]), r || m(t), o && o(t);
|
|
43
|
+
}, b = () => {
|
|
44
|
+
m(void 0), s(void 0), p();
|
|
45
|
+
}, v = () => {
|
|
46
|
+
s(void 0);
|
|
47
|
+
let e;
|
|
48
|
+
r && (e = new Date(r), e.setHours("00"), e.setMinutes("00")), o && o(e);
|
|
49
|
+
};
|
|
50
|
+
C(() => {
|
|
51
|
+
if (a && +a != +r) {
|
|
52
|
+
const e = H(a);
|
|
53
|
+
m(e), s(
|
|
54
|
+
e ? `${e.getHours()}:${e.getMinutes()}:${e.getSeconds()}` : null
|
|
55
|
+
);
|
|
56
|
+
} else
|
|
57
|
+
a || (m(void 0), s(void 0));
|
|
58
|
+
}, [a]);
|
|
59
|
+
const k = S("datetime-label", E?.id), x = S("datetimepicker");
|
|
60
|
+
return /* @__PURE__ */ i.createElement(j, {
|
|
61
|
+
name: g,
|
|
62
|
+
role: "group",
|
|
63
|
+
"aria-labelledby": k,
|
|
64
|
+
hint: w,
|
|
65
|
+
error: c
|
|
66
|
+
}, /* @__PURE__ */ i.createElement(P, {
|
|
67
|
+
spacing: 1
|
|
68
|
+
}, d && /* @__PURE__ */ i.createElement(q, {
|
|
69
|
+
required: F,
|
|
70
|
+
action: y,
|
|
71
|
+
id: k
|
|
72
|
+
}, d), /* @__PURE__ */ i.createElement(P, {
|
|
73
|
+
horizontal: !0,
|
|
74
|
+
spacing: 2
|
|
75
|
+
}, /* @__PURE__ */ i.createElement(L, {
|
|
76
|
+
"data-testid": "datetimepicker-date",
|
|
77
|
+
name: g,
|
|
78
|
+
ariaLabel: d || f,
|
|
79
|
+
error: typeof c == "string",
|
|
80
|
+
selectedDate: r,
|
|
81
|
+
selectedDateLabel: (e) => `Date picker, current is ${e}`,
|
|
82
|
+
onChange: I,
|
|
83
|
+
size: T,
|
|
84
|
+
onClear: p && b,
|
|
85
|
+
clearLabel: u,
|
|
86
|
+
disabled: D,
|
|
87
|
+
...E
|
|
88
|
+
}), /* @__PURE__ */ i.createElement(R, {
|
|
89
|
+
"data-testid": "datetimepicker-time",
|
|
90
|
+
size: T,
|
|
91
|
+
"aria-label": d || f,
|
|
92
|
+
error: typeof c == "string",
|
|
93
|
+
value: l,
|
|
94
|
+
onChange: _,
|
|
95
|
+
onClear: p && v,
|
|
96
|
+
clearLabel: u,
|
|
97
|
+
selectButtonTitle: h,
|
|
98
|
+
disabled: D,
|
|
99
|
+
step: V
|
|
100
|
+
})), /* @__PURE__ */ i.createElement(z, null), /* @__PURE__ */ i.createElement(A, {
|
|
101
|
+
id: x
|
|
102
|
+
})));
|
|
103
|
+
};
|
|
104
|
+
M.defaultProps = B;
|
|
105
|
+
M.propTypes = G;
|
|
106
|
+
export {
|
|
107
|
+
M as DateTimePicker
|
|
108
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react"),d=require("prop-types"),l=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},u=l(o),e=l(d),a=t=>u.default.createElement("div",{...t}),r={ariaLabel:void 0,clearLabel:"clear",disabled:!1,error:void 0,hint:void 0,label:void 0,labelAction:void 0,onClear:void 0,required:!1,selectButtonTitle:"select",size:"M",step:1,value:void 0},i={ariaLabel:e.default.string,clearLabel:e.default.string,disabled:e.default.bool,error:e.default.oneOfType([e.default.string,e.default.bool]),hint:e.default.string,label:e.default.string,labelAction:e.default.element,name:e.default.string.isRequired,onChange:e.default.func.isRequired,onClear:e.default.func,required:e.default.bool,selectButtonTitle:e.default.string,size:e.default.oneOf(["S","M"]),step:e.default.number,value:e.default.instanceOf(Date)};a.defaultProps=r;a.propTypes=i;exports.DateTimePickerProps=a;exports.dateTimePickerDefaultProps=r;exports.dateTimePickerPropTypes=i;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import t from "react";
|
|
2
|
+
import e from "prop-types";
|
|
3
|
+
const i = (r) => /* @__PURE__ */ t.createElement("div", {
|
|
4
|
+
...r
|
|
5
|
+
}), o = {
|
|
6
|
+
ariaLabel: void 0,
|
|
7
|
+
clearLabel: "clear",
|
|
8
|
+
disabled: !1,
|
|
9
|
+
error: void 0,
|
|
10
|
+
hint: void 0,
|
|
11
|
+
label: void 0,
|
|
12
|
+
labelAction: void 0,
|
|
13
|
+
onClear: void 0,
|
|
14
|
+
required: !1,
|
|
15
|
+
selectButtonTitle: "select",
|
|
16
|
+
size: "M",
|
|
17
|
+
step: 1,
|
|
18
|
+
value: void 0
|
|
19
|
+
}, l = {
|
|
20
|
+
ariaLabel: e.string,
|
|
21
|
+
clearLabel: e.string,
|
|
22
|
+
disabled: e.bool,
|
|
23
|
+
error: e.oneOfType([e.string, e.bool]),
|
|
24
|
+
hint: e.string,
|
|
25
|
+
label: e.string,
|
|
26
|
+
labelAction: e.element,
|
|
27
|
+
name: e.string.isRequired,
|
|
28
|
+
onChange: e.func.isRequired,
|
|
29
|
+
onClear: e.func,
|
|
30
|
+
required: e.bool,
|
|
31
|
+
selectButtonTitle: e.string,
|
|
32
|
+
size: e.oneOf(["S", "M"]),
|
|
33
|
+
step: e.number,
|
|
34
|
+
value: e.instanceOf(Date)
|
|
35
|
+
};
|
|
36
|
+
i.defaultProps = o;
|
|
37
|
+
i.propTypes = l;
|
|
38
|
+
export {
|
|
39
|
+
i as DateTimePickerProps,
|
|
40
|
+
o as dateTimePickerDefaultProps,
|
|
41
|
+
l as dateTimePickerPropTypes
|
|
42
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const e=require("../parseDate.cjs");describe("parseDate",()=>{it("should return a date",()=>{expect(e.parseDate("2021-11-05T15:37:29.592Z")instanceof Date).toBeTruthy()}),it("should return null if the passed params has not the right format",()=>{expect(e.parseDate("test")).toBeNull()})});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { parseDate as t } from "../parseDate.js";
|
|
2
|
+
describe("parseDate", () => {
|
|
3
|
+
it("should return a date", () => {
|
|
4
|
+
expect(t("2021-11-05T15:37:29.592Z") instanceof Date).toBeTruthy();
|
|
5
|
+
}), it("should return null if the passed params has not the right format", () => {
|
|
6
|
+
expect(t("test")).toBeNull();
|
|
7
|
+
});
|
|
8
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./DateTimePicker.cjs");exports.DateTimePicker=e.DateTimePicker;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=t=>{const e=Date.parse(t);return Number.isNaN(e)?null:new Date(e)};exports.parseDate=r;
|
package/dist/Field/Field.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const f=require("react"),c=require("prop-types"),p=require("./FieldContext.cjs"),y=require("../helpers/useId.cjs"),o=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},r=o(f),e=o(c),d=({children:t,name:
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const f=require("react"),c=require("prop-types"),p=require("./FieldContext.cjs"),y=require("../helpers/useId.cjs"),o=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},r=o(f),e=o(c),d=({children:t,name:l,error:u,hint:a,id:n,...i})=>{const s=y.useId("field",n);return r.default.createElement("div",{...i},r.default.createElement(p.FieldContext.Provider,{value:{name:l,id:s,error:u,hint:a}},t))};d.defaultProps={error:void 0,hint:void 0,id:void 0,name:void 0};d.propTypes={children:e.default.node.isRequired,error:e.default.oneOfType([e.default.string,e.default.bool]),hint:e.default.oneOfType([e.default.string,e.default.node,e.default.arrayOf(e.default.node)]),id:e.default.oneOfType([e.default.string,e.default.number]),name:e.default.string};exports.Field=d;
|
package/dist/Field/Field.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import r from "react";
|
|
2
2
|
import e from "prop-types";
|
|
3
|
-
import { FieldContext as
|
|
4
|
-
import { useId as
|
|
5
|
-
const o = ({ children: i, name: t, error:
|
|
6
|
-
const a =
|
|
3
|
+
import { FieldContext as f } from "./FieldContext.js";
|
|
4
|
+
import { useId as s } from "../helpers/useId.js";
|
|
5
|
+
const o = ({ children: i, name: t, error: n, hint: d, id: p, ...m }) => {
|
|
6
|
+
const a = s("field", p);
|
|
7
7
|
return /* @__PURE__ */ r.createElement("div", {
|
|
8
|
-
...
|
|
9
|
-
}, /* @__PURE__ */ r.createElement(
|
|
10
|
-
value: { name: t, id: a, error:
|
|
8
|
+
...m
|
|
9
|
+
}, /* @__PURE__ */ r.createElement(f.Provider, {
|
|
10
|
+
value: { name: t, id: a, error: n, hint: d }
|
|
11
11
|
}, i));
|
|
12
12
|
};
|
|
13
13
|
o.defaultProps = {
|
|
@@ -18,7 +18,7 @@ o.defaultProps = {
|
|
|
18
18
|
};
|
|
19
19
|
o.propTypes = {
|
|
20
20
|
children: e.node.isRequired,
|
|
21
|
-
error: e.string,
|
|
21
|
+
error: e.oneOfType([e.string, e.bool]),
|
|
22
22
|
hint: e.oneOfType([e.string, e.node, e.arrayOf(e.node)]),
|
|
23
23
|
id: e.oneOfType([e.string, e.number]),
|
|
24
24
|
name: e.string
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react"),o=require("./FieldContext.cjs"),a=require("../Typography/Typography.cjs"),i=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},l=i(t),n=()=>{const{id:e,error:r}=o.useField();return r?l.default.createElement(a.Typography,{variant:"pi",as:"p",id:`${e}-error`,textColor:"danger600","data-strapi-field-error":!0},r)
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react"),o=require("./FieldContext.cjs"),a=require("../Typography/Typography.cjs"),i=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},l=i(t),n=()=>{const{id:e,error:r}=o.useField();return!r||typeof r!="string"?null:l.default.createElement(a.Typography,{variant:"pi",as:"p",id:`${e}-error`,textColor:"danger600","data-strapi-field-error":!0},r)};exports.FieldError=n;
|
package/dist/Field/FieldError.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import t from "react";
|
|
2
2
|
import { useField as o } from "./FieldContext.js";
|
|
3
3
|
import { Typography as i } from "../Typography/Typography.js";
|
|
4
|
-
const
|
|
4
|
+
const d = () => {
|
|
5
5
|
const { id: e, error: r } = o();
|
|
6
|
-
return r ? /* @__PURE__ */ t.createElement(i, {
|
|
6
|
+
return !r || typeof r != "string" ? null : /* @__PURE__ */ t.createElement(i, {
|
|
7
7
|
variant: "pi",
|
|
8
8
|
as: "p",
|
|
9
9
|
id: `${e}-error`,
|
|
10
10
|
textColor: "danger600",
|
|
11
11
|
"data-strapi-field-error": !0
|
|
12
|
-
}, r)
|
|
12
|
+
}, r);
|
|
13
13
|
};
|
|
14
14
|
export {
|
|
15
|
-
|
|
15
|
+
d as FieldError
|
|
16
16
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const d=require("react"),m=require("prop-types"),R=require("../Box/Box.cjs"),c=require("../helpers/getFocusableNodes.cjs"),l=require("../helpers/keyboardKeys.cjs"),w=require("./RawTableContext.cjs"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const d=require("react"),m=require("prop-types"),R=require("../Box/Box.cjs"),c=require("../helpers/getFocusableNodes.cjs"),l=require("../helpers/keyboardKeys.cjs"),w=require("./RawTableContext.cjs"),N=s=>s&&typeof s=="object"&&"default"in s?s:{default:s},h=N(d),a=N(m),y=s=>h.default.createElement(f,{...s,as:"th"}),f=({coords:s,as:g,...p})=>{const r=d.useRef(null),{rowIndex:T,colIndex:x,setTableValues:E}=w.useTable(),[u,i]=d.useState(!1),K=e=>{const t=c.getFocusableNodes(r.current,!0);if(console.log(t.find(o=>o.tagName!=="BUTTON")),!(t.length===0||t.length===1&&c.getFocusableNodesWithKeyboardNav(t).length===0)){if(t.length>1&&!Boolean(t.find(o=>o.tagName!=="BUTTON"))){e.preventDefault();const o=t.findIndex(n=>n===document.activeElement);if(e.key===l.KeyboardKeys.RIGHT){const n=t[o+1];n&&(e.stopPropagation(),n.focus())}else if(e.key===l.KeyboardKeys.LEFT){const n=t[o-1];n&&(e.stopPropagation(),n.focus())}return}e.key===l.KeyboardKeys.ENTER&&!u?i(!0):(e.key===l.KeyboardKeys.ESCAPE||e.key===l.KeyboardKeys.ENTER)&&u?(i(!1),r.current.focus()):u&&e.stopPropagation()}},b=T===s.row-1&&x===s.col-1;return d.useLayoutEffect(()=>{const e=c.getFocusableNodes(r.current,!0);e.length===0||e.length===1&&c.getFocusableNodesWithKeyboardNav(e).length!==0||e.length>1&&Boolean(e.find(t=>t.tagName!=="BUTTON"))?(r.current.setAttribute("tabIndex",!u&&b?0:-1),e.forEach((t,o)=>{t.setAttribute("tabIndex",u?0:-1),u&&o===0&&t.focus()})):e.forEach(t=>{t.setAttribute("tabIndex",b?0:-1)})},[u,b]),d.useLayoutEffect(()=>{const e=c.getFocusableNodes(r.current,!0),t=()=>{e.length>=1&&(c.getFocusableNodesWithKeyboardNav(e).length!==0||!Boolean(e.find(o=>o.tagName!=="BUTTON")))&&i(!0),E({rowIndex:s.row-1,colIndex:s.col-1})};return e.forEach(o=>{o.addEventListener("focus",t)}),()=>{c.getFocusableNodes(r.current,!0).forEach(n=>{n.removeEventListener("focus",t)})}},[]),h.default.createElement(R.Box,{as:g||"td",ref:r,onKeyDown:K,...p})};y.defaultProps={coords:{}};y.propTypes={["aria-colindex"]:a.default.number.isRequired,children:a.default.node,coords:a.default.shape({col:a.default.number,row:a.default.number})};f.defaultProps={coords:{}};f.propTypes={["aria-colindex"]:a.default.number.isRequired,as:a.default.oneOf(["td","th"]),children:a.default.node,coords:a.default.shape({col:a.default.number,row:a.default.number})};exports.RawTd=f;exports.RawTh=y;
|
package/dist/RawTable/RawCell.js
CHANGED
|
@@ -3,45 +3,45 @@ import n from "prop-types";
|
|
|
3
3
|
import { Box as R } from "../Box/Box.js";
|
|
4
4
|
import { getFocusableNodes as l, getFocusableNodesWithKeyboardNav as i } from "../helpers/getFocusableNodes.js";
|
|
5
5
|
import { KeyboardKeys as u } from "../helpers/keyboardKeys.js";
|
|
6
|
-
import { useTable as
|
|
6
|
+
import { useTable as B } from "./RawTableContext.js";
|
|
7
7
|
const N = (c) => /* @__PURE__ */ h.createElement(m, {
|
|
8
8
|
...c,
|
|
9
9
|
as: "th"
|
|
10
10
|
}), m = ({ coords: c, as: p, ...g }) => {
|
|
11
|
-
const s = I(null), { rowIndex:
|
|
12
|
-
const
|
|
13
|
-
if (
|
|
14
|
-
if (
|
|
11
|
+
const s = I(null), { rowIndex: T, colIndex: E, setTableValues: x } = B(), [a, f] = w(!1), y = (e) => {
|
|
12
|
+
const o = l(s.current, !0);
|
|
13
|
+
if (console.log(o.find((t) => t.tagName !== "BUTTON")), !(o.length === 0 || o.length === 1 && i(o).length === 0)) {
|
|
14
|
+
if (o.length > 1 && !Boolean(o.find((t) => t.tagName !== "BUTTON"))) {
|
|
15
15
|
e.preventDefault();
|
|
16
|
-
const
|
|
16
|
+
const t = o.findIndex((r) => r === document.activeElement);
|
|
17
17
|
if (e.key === u.RIGHT) {
|
|
18
|
-
const r = t
|
|
18
|
+
const r = o[t + 1];
|
|
19
19
|
r && (e.stopPropagation(), r.focus());
|
|
20
20
|
} else if (e.key === u.LEFT) {
|
|
21
|
-
const r = t
|
|
21
|
+
const r = o[t - 1];
|
|
22
22
|
r && (e.stopPropagation(), r.focus());
|
|
23
23
|
}
|
|
24
24
|
return;
|
|
25
25
|
}
|
|
26
26
|
e.key === u.ENTER && !a ? f(!0) : (e.key === u.ESCAPE || e.key === u.ENTER) && a ? (f(!1), s.current.focus()) : a && e.stopPropagation();
|
|
27
27
|
}
|
|
28
|
-
}, d =
|
|
28
|
+
}, d = T === c.row - 1 && E === c.col - 1;
|
|
29
29
|
return b(() => {
|
|
30
30
|
const e = l(s.current, !0);
|
|
31
|
-
e.length === 0 || e.length === 1 && i(e).length !== 0 || e.length > 1 && Boolean(e.find((
|
|
32
|
-
|
|
33
|
-
})) : e.forEach((
|
|
34
|
-
|
|
31
|
+
e.length === 0 || e.length === 1 && i(e).length !== 0 || e.length > 1 && Boolean(e.find((o) => o.tagName !== "BUTTON")) ? (s.current.setAttribute("tabIndex", !a && d ? 0 : -1), e.forEach((o, t) => {
|
|
32
|
+
o.setAttribute("tabIndex", a ? 0 : -1), a && t === 0 && o.focus();
|
|
33
|
+
})) : e.forEach((o) => {
|
|
34
|
+
o.setAttribute("tabIndex", d ? 0 : -1);
|
|
35
35
|
});
|
|
36
36
|
}, [a, d]), b(() => {
|
|
37
|
-
const e = l(s.current, !0),
|
|
38
|
-
e.length >= 1 && (i(e).length !== 0 || !Boolean(e.find((
|
|
37
|
+
const e = l(s.current, !0), o = () => {
|
|
38
|
+
e.length >= 1 && (i(e).length !== 0 || !Boolean(e.find((t) => t.tagName !== "BUTTON"))) && f(!0), x({ rowIndex: c.row - 1, colIndex: c.col - 1 });
|
|
39
39
|
};
|
|
40
|
-
return e.forEach((
|
|
41
|
-
|
|
40
|
+
return e.forEach((t) => {
|
|
41
|
+
t.addEventListener("focus", o);
|
|
42
42
|
}), () => {
|
|
43
43
|
l(s.current, !0).forEach((r) => {
|
|
44
|
-
r.removeEventListener("focus",
|
|
44
|
+
r.removeEventListener("focus", o);
|
|
45
45
|
});
|
|
46
46
|
};
|
|
47
47
|
}, []), /* @__PURE__ */ h.createElement(R, {
|
package/dist/Select/Select.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const d=require("react"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const d=require("react"),ne=require("prop-types"),re=require("@strapi/icons/CarretDown"),oe=require("@strapi/icons/Cross"),se=require("../themes/sizes.cjs"),ae=require("./SelectButton.cjs"),ie=require("../Field/Field.cjs"),ce=require("../Field/FieldLabel.cjs");require("../Field/FieldInput.cjs");const de=require("../Field/FieldHint.cjs"),ue=require("../Field/FieldError.cjs");require("../Field/FieldContext.cjs");require("../Field/FieldAction.cjs");const fe=require("../Popover/Popover.cjs"),pe=require("../Stack/Stack.cjs"),H=require("../Typography/Typography.cjs"),x=require("../Flex/Flex.cjs"),P=require("../Box/Box.cjs"),ye=require("../helpers/useId.cjs"),he=require("./SelectList.cjs"),v=require("./components.cjs"),me=require("./hooks/useButtonRef.cjs"),A=require("../VisuallyHidden/VisuallyHidden.cjs"),ge=require("./constants.cjs"),z=require("../helpers/escapeSelector.cjs"),Ee=require("./SelectTags.cjs"),be=require("styled-components"),f=r=>r&&typeof r=="object"&&"default"in r?r:{default:r},l=f(d),e=f(ne),qe=f(re),Fe=f(oe),Se=f(be),je=Se.default(x.Flex)`
|
|
2
2
|
width: 100%;
|
|
3
|
-
`,C=({label:r,labelAction:
|
|
3
|
+
`,C=({label:r,labelAction:G,id:W,children:N,customizeContent:p,placeholder:q,onChange:F,value:n,hint:S,error:y,disabled:i,clearLabel:I,onClear:O,onReachEnd:J,multi:s,required:K,selectButtonTitle:Q,size:U,startIcon:R,withTags:h,...V})=>{const o=ye.useId("select",W),[m,g]=d.useState(void 0),_=me.useButtonRef(m),L=d.useRef(null),j=`${o}-label`,E=`${o}-content`,D=typeof y=="string",X=D?`${o}-error`:void 0,Y=S?`${o}-hint`:void 0,Z=X||Y;if(h&&!s)throw new Error('The "withTags" props can only be used when the "multi" prop is present');const ee=()=>{g(void 0)},te=()=>{i||(O(),_.current.focus())},$=t=>{t.preventDefault(),!i&&(t.nativeEvent.which===3||t.nativeEvent.button===2||g(ge.DownState.Mouse))},B=(t,a=!0)=>{s?F(n.includes(t)?n.filter(u=>u!==t):[...n,t]):(F(t),a&&g(void 0))},w=t=>{F(n.includes(t[0])?n.filter(function(a){return this.indexOf(a)<0},t):[...n,...t])};let T,M=[];const k=(t,a)=>{const u=`${o}-option-${t.props.value}`,b=s?n.includes(t.props.value):t.props.value===n;return b&&(h?M.push({label:t.props.children,value:t.props.value}):T=t.props.children),d.cloneElement(t,{id:z.escapeSelector(u),onClick:()=>B(t.props.value),selected:b,multi:s,isChild:a})},le=d.Children.toArray(N).map(t=>{if(t.type.displayName==="OptGroup"){const a=`${o}-option-${t.props.label}`,u=t.props.children.every(c=>n.includes(c.props.value)),b=!u&&t.props.children.some(c=>n.includes(c.props.value));return d.cloneElement(t,{id:z.escapeSelector(a),onClick:()=>w(t.props.children.map(c=>c.props.value)),selected:u,indeterminate:b,multi:s,children:d.Children.toArray(t.props.children).map(c=>k(c,!0)),value:t.props.label})}else return k(t)});return l.default.createElement(ie.Field,{hint:S,error:y,id:o},l.default.createElement(pe.Stack,{spacing:r||S||D?1:0},r&&l.default.createElement(ce.FieldLabel,{required:K,as:"span",id:j,action:G},r),l.default.createElement(v.SelectButtonWrapper,{size:U,hasError:Boolean(y),disabled:i,ref:L},l.default.createElement(ae.SelectButton,{ref:_,labelledBy:`${j} ${E}`,"aria-describedby":Z,expanded:Boolean(m),onTrigger:g,id:o,hasError:Boolean(y),disabled:i,onMouseDown:$,...V}),l.default.createElement(je,{justifyContent:"space-between"},l.default.createElement(x.Flex,null,R&&l.default.createElement(P.Box,{paddingLeft:3,"aria-hidden":!0},R),h&&l.default.createElement(Ee.SelectTags,{tags:M,onRemoveTag:B,disabled:i}),l.default.createElement(P.Box,{paddingLeft:4,paddingRight:4},h?l.default.createElement(l.default.Fragment,null,!n||n.length===0?l.default.createElement(H.Typography,{ellipsis:!0,id:E,textColor:"neutral600"},q):null,l.default.createElement(A.VisuallyHidden,{as:"span",id:E},p?p(n):T||q,n.join(", "))):l.default.createElement(H.Typography,{ellipsis:!0,id:E,textColor:n?"neutral800":"neutral600"},p?p(n):T||q,s&&l.default.createElement(A.VisuallyHidden,{as:"span"},n.join(", "))))),l.default.createElement(x.Flex,null,(s&&n&&n.length||!s&&n)&&O&&l.default.createElement(v.IconBox,{as:"button",type:"button",onClick:te,"aria-label":I,"aria-disabled":i,title:I},l.default.createElement(Fe.default,null)),l.default.createElement(v.CaretBox,{paddingLeft:3,"aria-hidden":!0,as:"button",type:"button",onMouseDown:$,tabIndex:-1,disabled:i,title:Q},l.default.createElement(qe.default,null))))),l.default.createElement(de.FieldHint,null),l.default.createElement(ue.FieldError,null)),m&&l.default.createElement(fe.Popover,{source:L,spacing:4,fullWidth:!0,intersectionId:`select-list-intersection-${o}`,onReachEnd:J},l.default.createElement(he.SelectList,{selectId:o,labelledBy:r?j:void 0,onEscape:ee,expanded:m,onSelectItem:(t,a)=>a?w(t):B(t,!1),multi:s},le)))};C.defaultProps={"aria-label":void 0,children:[],clearLabel:"Clear",customizeContent:void 0,disabled:!1,id:void 0,label:void 0,labelAction:void 0,multi:!1,onChange:()=>{},onClear:void 0,onReachEnd:void 0,value:void 0,hint:void 0,error:void 0,placeholder:"Select...",required:!1,selectButtonTitle:"Carret Down Button",size:"M",startIcon:void 0,withTags:!1};C.propTypes={"aria-label":e.default.string,children:e.default.oneOfType([e.default.arrayOf(e.default.node),e.default.node]),clearLabel:e.default.string,customizeContent:e.default.func,disabled:e.default.bool,error:e.default.oneOfType([e.default.string,e.default.bool]),hint:e.default.oneOfType([e.default.string,e.default.node,e.default.arrayOf(e.default.node)]),id:e.default.oneOfType([e.default.string,e.default.number]),label:e.default.string,labelAction:e.default.element,multi:e.default.bool,onChange:e.default.func,onClear:e.default.func,onReachEnd:e.default.func,placeholder:e.default.string,required:e.default.bool,selectButtonTitle:e.default.string,size:e.default.oneOf(Object.keys(se.sizes.input)),startIcon:e.default.element,value:e.default.oneOfType([e.default.arrayOf(e.default.oneOfType([e.default.string,e.default.number])),e.default.string,e.default.number]),withTags:e.default.bool};exports.Select=C;
|