@strapi/design-system 1.6.5 → 1.6.6

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 (44) hide show
  1. package/dist/BaseButton/BaseButton.cjs +3 -3
  2. package/dist/BaseButton/BaseButton.js +17 -16
  3. package/dist/DatePicker/DatePicker.cjs +8 -1
  4. package/dist/DatePicker/DatePicker.js +71 -98
  5. package/dist/DatePicker/DatePickerCalendar.cjs +1 -1
  6. package/dist/DatePicker/DatePickerCalendar.js +124 -57
  7. package/dist/DatePicker/DatePickerTd.cjs +4 -4
  8. package/dist/DatePicker/DatePickerTd.js +42 -24
  9. package/dist/DatePicker/DatePickerTh.cjs +3 -3
  10. package/dist/DatePicker/DatePickerTh.js +29 -12
  11. package/dist/DatePicker/components.cjs +8 -6
  12. package/dist/DatePicker/components.js +15 -13
  13. package/dist/DatePicker/utils/getDayOfWeek.js +8 -8
  14. package/dist/DatePicker/utils/getMonths.cjs +1 -1
  15. package/dist/DatePicker/utils/getMonths.js +3 -3
  16. package/dist/DatePicker/utils/getYears.cjs +1 -1
  17. package/dist/DatePicker/utils/getYears.js +1 -1
  18. package/dist/DateTimePicker/DateTimePicker.cjs +1 -1
  19. package/dist/DateTimePicker/DateTimePicker.js +97 -104
  20. package/dist/Field/FieldHint.cjs +1 -1
  21. package/dist/Field/FieldHint.js +3 -3
  22. package/dist/Field/FieldLabel.cjs +5 -2
  23. package/dist/Field/FieldLabel.js +27 -27
  24. package/dist/IconButton/IconButton.cjs +4 -4
  25. package/dist/IconButton/IconButton.js +32 -30
  26. package/dist/RawTable/RawCell.cjs +1 -1
  27. package/dist/RawTable/RawCell.js +4 -1
  28. package/dist/Select/Select.cjs +2 -2
  29. package/dist/Select/Select.js +57 -55
  30. package/dist/Select/SelectButton.cjs +3 -3
  31. package/dist/Select/SelectButton.js +17 -15
  32. package/dist/TextButton/TextButton.cjs +6 -12
  33. package/dist/TextButton/TextButton.js +32 -46
  34. package/dist/TextInput/TextInput.cjs +1 -1
  35. package/dist/TextInput/TextInput.js +47 -46
  36. package/dist/TimePicker/TimePicker.cjs +5 -7
  37. package/dist/TimePicker/TimePicker.js +48 -100
  38. package/package.json +4 -3
  39. package/dist/DateTimePicker/DateTimePickerProps.cjs +0 -1
  40. package/dist/DateTimePicker/DateTimePickerProps.js +0 -40
  41. package/dist/DateTimePicker/__tests__/parseDate.test.cjs +0 -1
  42. package/dist/DateTimePicker/__tests__/parseDate.test.js +0 -8
  43. package/dist/DateTimePicker/parseDate.cjs +0 -1
  44. package/dist/DateTimePicker/parseDate.js +0 -7
@@ -1,51 +1,52 @@
1
- import r, { useRef as g, useImperativeHandle as E } from "react";
2
- import e from "prop-types";
1
+ import { jsx as r, jsxs as s } from "react/jsx-runtime";
2
+ import { forwardRef as c, useRef as u, useImperativeHandle as h } from "react";
3
3
  import { Field as I } from "../Field/Field.js";
4
- import { FieldLabel as T } from "../Field/FieldLabel.js";
5
- import { FieldInput as y } from "../Field/FieldInput.js";
6
- import { FieldHint as A } from "../Field/FieldHint.js";
7
- import { FieldError as F } from "../Field/FieldError.js";
4
+ import { FieldLabel as x } from "../Field/FieldLabel.js";
5
+ import { FieldInput as F } from "../Field/FieldInput.js";
6
+ import { FieldHint as T } from "../Field/FieldHint.js";
7
+ import { FieldError as g } from "../Field/FieldError.js";
8
8
  import "../Field/FieldContext.js";
9
9
  import "../Field/FieldAction.js";
10
- import { Flex as h } from "../Flex/Flex.js";
11
- import { useId as x } from "../hooks/useId.js";
12
- import { sizes as O } from "../themes/sizes.js";
13
- const o = r.forwardRef(
14
- ({ size: a, startAction: m, endAction: d, name: p, hint: s, error: c, label: t, labelAction: f, id: u, required: b, ...i }, n) => {
15
- const v = x(u), l = g(null);
16
- if (!t && !i["aria-label"])
17
- throw new Error('The TextInput component needs a "label" or an "aria-label" props');
18
- return E(n, () => ({
19
- inputWrapperRef: l
20
- })), /* @__PURE__ */ r.createElement("div", { ref: l }, /* @__PURE__ */ r.createElement(I, { name: p, hint: s, error: c, id: v, required: b }, /* @__PURE__ */ r.createElement(h, { direction: "column", alignItems: "stretch", gap: 1 }, t && /* @__PURE__ */ r.createElement(T, { action: f }, t), /* @__PURE__ */ r.createElement(y, { size: a, ref: n, startAction: m, endAction: d, ...i }), /* @__PURE__ */ r.createElement(A, null), /* @__PURE__ */ r.createElement(F, null))));
21
- }
22
- );
23
- o.displayName = "TextInput";
24
- o.defaultProps = {
25
- "aria-label": void 0,
26
- label: void 0,
27
- labelAction: void 0,
28
- error: void 0,
29
- hint: void 0,
30
- id: void 0,
31
- startAction: void 0,
32
- size: "M",
33
- endAction: void 0,
34
- required: !1
35
- };
36
- o.propTypes = {
37
- "aria-label": e.string,
38
- endAction: e.element,
39
- error: e.oneOfType([e.string, e.bool]),
40
- hint: e.oneOfType([e.string, e.bool, e.node, e.arrayOf(e.node)]),
41
- id: e.string,
42
- label: e.string,
43
- labelAction: e.element,
44
- name: e.string.isRequired,
45
- required: e.bool,
46
- size: e.oneOf(Object.keys(O.input)),
47
- startAction: e.element
48
- };
10
+ import { Flex as w } from "../Flex/Flex.js";
11
+ import { useId as R } from "../hooks/useId.js";
12
+ const b = c(({
13
+ name: t,
14
+ hint: n,
15
+ error: m,
16
+ label: e,
17
+ labelAction: p,
18
+ id: d,
19
+ required: a,
20
+ ...i
21
+ }, l) => {
22
+ const f = R(d), o = u(null);
23
+ if (!e && !i["aria-label"])
24
+ throw new Error('The TextInput component needs a "label" or an "aria-label" props');
25
+ return h(l, () => ({
26
+ inputWrapperRef: o
27
+ })), r("div", {
28
+ ref: o,
29
+ children: r(I, {
30
+ name: t,
31
+ hint: n,
32
+ error: m,
33
+ id: f,
34
+ required: a,
35
+ children: s(w, {
36
+ direction: "column",
37
+ alignItems: "stretch",
38
+ gap: 1,
39
+ children: [e && r(x, {
40
+ action: p,
41
+ children: e
42
+ }), r(F, {
43
+ ...i
44
+ }), r(T, {}), r(g, {})]
45
+ })
46
+ })
47
+ });
48
+ });
49
+ b.displayName = "TextInput";
49
50
  export {
50
- o as TextInput
51
+ b as TextInput
51
52
  };
@@ -1,12 +1,10 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const I=require("react"),P=require("@strapi/icons"),z=require("prop-types"),E=require("styled-components"),R=require("../hooks/useId.cjs"),L=require("../Select/Select.cjs"),w=require("../Select/Option.cjs");require("../Select/OptGroup.cjs");require("../Select/MultiSelectNested.cjs");require("../Select/SelectList.cjs");const B=require("../themes/sizes.cjs"),d=l=>l&&typeof l=="object"&&"default"in l?l:{default:l},a=d(I),e=d(z),x=d(E),D=x.default.div`
2
- display: flex;
3
- align-items: center;
4
- svg {
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("react/jsx-runtime"),q=require("@strapi/icons"),x=require("styled-components"),f=require("../Flex/Flex.cjs"),g=require("../hooks/useId.cjs"),M=require("../Select/Select.cjs"),b=require("../Select/Option.cjs");require("../Select/OptGroup.cjs");require("../Select/MultiSelectNested.cjs");require("../Select/SelectList.cjs");const $=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},y=$(x),I=({id:t,value:i,step:a=15,...d})=>{const p=g.useId(t),h=24,s=[];let c=0;for(let e=0;e<h;e++)for(c=0;c<60;)s.push(`${e<10?`0${e}`:e}:${c<10?`0${c}`:c}`),c+=a;const j=()=>{const[e,u]=i?.split(":")??[],m=s.reduce((r,o)=>{const[l]=o.split(":");return Math.abs(l-e)<Math.abs(r-e)?l:r},s[0].split(":")[0]),S=s.reduce((r,o)=>{const l=o.split(":")[1];return Math.abs(l-u)<Math.abs(r-u)?l:r},s[0].split(":")[1]);return`${m}:${S}`};return n.jsx(M.Select,{id:p,placeholder:"--:--",value:i?j():null,startIcon:n.jsx(v,{children:n.jsx(q.Clock,{})}),...d,children:s.map(e=>n.jsx(b.Option,{value:e,children:e},e))})},v=y.default(f.Flex)`
2
+ & > svg {
5
3
  height: 1rem;
6
4
  width: 1rem;
7
5
  }
8
6
 
9
- svg path {
10
- fill: ${({theme:l})=>l.colors.neutral500};
7
+ & > svg path {
8
+ fill: ${({theme:t})=>t.colors.neutral500};
11
9
  }
12
- `,c=({disabled:l,error:p,hint:b,id:m,onClear:y,onChange:h,value:n,clearLabel:g,label:q,required:v,selectButtonTitle:O,step:T,size:S,...j})=>{const M=R.useId(m),_=24,s=[];let u=0;for(let t=0;t<_;t++)for(u=0;u<60;)s.push(`${t<10?`0${t}`:t}:${u<10?`0${u}`:u}`),u+=T;const $=()=>{const t=n.split(":")[0],f=n.split(":")[1],k=s.reduce((r,i)=>{const o=i.split(":")[0];return Math.abs(o-t)<Math.abs(r-t)?o:r},s[0].split(":")[0]),C=s.reduce((r,i)=>{const o=i.split(":")[1];return Math.abs(o-f)<Math.abs(r-f)?o:r},s[0].split(":")[1]);return`${k}:${C}`};return a.default.createElement(L.Select,{id:M,label:q,placeholder:"--:--",hint:b,onClear:y,clearLabel:g,error:p,value:n?$():null,size:S,onChange:h,disabled:l,required:v,selectButtonTitle:O,startIcon:a.default.createElement(D,null,a.default.createElement(P.Clock,null)),...j},s.map(t=>a.default.createElement(w.Option,{value:t,key:t},t)))};c.defaultProps={disabled:!1,error:void 0,hint:void 0,id:void 0,label:void 0,onClear:void 0,required:!1,size:"M",selectButtonTitle:void 0,step:15,value:void 0};c.propTypes={clearLabel:e.default.string.isRequired,disabled:e.default.bool,error:e.default.oneOfType([e.default.string,e.default.bool]),hint:e.default.oneOfType([e.default.string,e.default.bool,e.default.node,e.default.arrayOf(e.default.node)]),id:e.default.oneOfType([e.default.string,e.default.number]),label:e.default.string,onChange:e.default.func.isRequired,onClear:e.default.func,required:e.default.bool,selectButtonTitle:e.default.string,size:e.default.oneOf(Object.keys(B.sizes.input)),step:e.default.number,value:e.default.oneOfType([e.default.arrayOf(e.default.oneOfType([e.default.string,e.default.number])),e.default.string,e.default.number])};exports.TimePicker=c;
10
+ `;exports.TimePicker=I;
@@ -1,110 +1,58 @@
1
- import n from "react";
2
- import { Clock as z } from "@strapi/icons";
3
- import e from "prop-types";
4
- import P from "styled-components";
5
- import { useId as R } from "../hooks/useId.js";
6
- import { Select as w } from "../Select/Select.js";
7
- import { Option as x } from "../Select/Option.js";
1
+ import { jsx as i } from "react/jsx-runtime";
2
+ import { Clock as $ } from "@strapi/icons";
3
+ import g from "styled-components";
4
+ import { Flex as M } from "../Flex/Flex.js";
5
+ import { useId as b } from "../hooks/useId.js";
6
+ import { Select as C } from "../Select/Select.js";
7
+ import { Option as I } from "../Select/Option.js";
8
8
  import "../Select/OptGroup.js";
9
9
  import "../Select/MultiSelectNested.js";
10
10
  import "../Select/SelectList.js";
11
- import { sizes as B } from "../themes/sizes.js";
12
- const _ = P.div`
13
- display: flex;
14
- align-items: center;
15
- svg {
11
+ const S = ({
12
+ id: l,
13
+ value: m,
14
+ step: u = 15,
15
+ ...p
16
+ }) => {
17
+ const a = b(l), h = 24, o = [];
18
+ let r = 0;
19
+ for (let t = 0; t < h; t++)
20
+ for (r = 0; r < 60; )
21
+ o.push(`${t < 10 ? `0${t}` : t}:${r < 10 ? `0${r}` : r}`), r += u;
22
+ return i(C, {
23
+ id: a,
24
+ placeholder: "--:--",
25
+ value: m ? (() => {
26
+ const [t, c] = m?.split(":") ?? [], d = o.reduce((e, n) => {
27
+ const [s] = n.split(":");
28
+ return Math.abs(s - t) < Math.abs(e - t) ? s : e;
29
+ }, o[0].split(":")[0]), f = o.reduce((e, n) => {
30
+ const s = n.split(":")[1];
31
+ return Math.abs(s - c) < Math.abs(e - c) ? s : e;
32
+ }, o[0].split(":")[1]);
33
+ return `${d}:${f}`;
34
+ })() : null,
35
+ startIcon: i(v, {
36
+ children: i($, {})
37
+ }),
38
+ ...p,
39
+ children: o.map((t) => i(I, {
40
+ value: t,
41
+ children: t
42
+ }, t))
43
+ });
44
+ }, v = g(M)`
45
+ & > svg {
16
46
  height: 1rem;
17
47
  width: 1rem;
18
48
  }
19
49
 
20
- svg path {
21
- fill: ${({ theme: l }) => l.colors.neutral500};
50
+ & > svg path {
51
+ fill: ${({
52
+ theme: l
53
+ }) => l.colors.neutral500};
22
54
  }
23
- `, m = ({
24
- disabled: l,
25
- error: c,
26
- hint: d,
27
- id: f,
28
- onClear: b,
29
- onChange: h,
30
- value: a,
31
- clearLabel: g,
32
- label: y,
33
- required: v,
34
- selectButtonTitle: T,
35
- step: O,
36
- size: $,
37
- ...C
38
- }) => {
39
- const M = R(f), k = 24, r = [];
40
- let o = 0;
41
- for (let t = 0; t < k; t++)
42
- for (o = 0; o < 60; )
43
- r.push(`${t < 10 ? `0${t}` : t}:${o < 10 ? `0${o}` : o}`), o += O;
44
- const q = () => {
45
- const t = a.split(":")[0], p = a.split(":")[1], E = r.reduce((i, u) => {
46
- const s = u.split(":")[0];
47
- return Math.abs(s - t) < Math.abs(i - t) ? s : i;
48
- }, r[0].split(":")[0]), I = r.reduce((i, u) => {
49
- const s = u.split(":")[1];
50
- return Math.abs(s - p) < Math.abs(i - p) ? s : i;
51
- }, r[0].split(":")[1]);
52
- return `${E}:${I}`;
53
- };
54
- return /* @__PURE__ */ n.createElement(
55
- w,
56
- {
57
- id: M,
58
- label: y,
59
- placeholder: "--:--",
60
- hint: d,
61
- onClear: b,
62
- clearLabel: g,
63
- error: c,
64
- value: a ? q() : null,
65
- size: $,
66
- onChange: h,
67
- disabled: l,
68
- required: v,
69
- selectButtonTitle: T,
70
- startIcon: /* @__PURE__ */ n.createElement(_, null, /* @__PURE__ */ n.createElement(z, null)),
71
- ...C
72
- },
73
- r.map((t) => /* @__PURE__ */ n.createElement(x, { value: t, key: t }, t))
74
- );
75
- };
76
- m.defaultProps = {
77
- disabled: !1,
78
- error: void 0,
79
- hint: void 0,
80
- id: void 0,
81
- label: void 0,
82
- onClear: void 0,
83
- required: !1,
84
- size: "M",
85
- selectButtonTitle: void 0,
86
- step: 15,
87
- value: void 0
88
- };
89
- m.propTypes = {
90
- clearLabel: e.string.isRequired,
91
- disabled: e.bool,
92
- error: e.oneOfType([e.string, e.bool]),
93
- hint: e.oneOfType([e.string, e.bool, e.node, e.arrayOf(e.node)]),
94
- id: e.oneOfType([e.string, e.number]),
95
- label: e.string,
96
- onChange: e.func.isRequired,
97
- onClear: e.func,
98
- required: e.bool,
99
- selectButtonTitle: e.string,
100
- size: e.oneOf(Object.keys(B.input)),
101
- step: e.number,
102
- value: e.oneOfType([
103
- e.arrayOf(e.oneOfType([e.string, e.number])),
104
- e.string,
105
- e.number
106
- ])
107
- };
55
+ `;
108
56
  export {
109
- m as TimePicker
57
+ S as TimePicker
110
58
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/design-system",
3
- "version": "1.6.5",
3
+ "version": "1.6.6",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -29,7 +29,7 @@
29
29
  "devDependencies": {
30
30
  "@juggle/resize-observer": "^3.4.0",
31
31
  "@playwright/test": "1.27.1",
32
- "@strapi/icons": "^1.6.5",
32
+ "@strapi/icons": "^1.6.6",
33
33
  "@swc/core": "^1.3.11",
34
34
  "@swc/jest": "^0.2.23",
35
35
  "@testing-library/jest-dom": "5.16.5",
@@ -62,6 +62,7 @@
62
62
  "develop": "vite build --watch",
63
63
  "build": "yarn build:prod",
64
64
  "build:prod": "vite build",
65
+ "clean": "rm -rf dist node_modules",
65
66
  "generate:types": "tsc --noEmit false --emitDeclarationOnly --declarationDir dist",
66
67
  "lint": "eslint . --ext .js,.jsx,.tsx,.ts",
67
68
  "format": "yarn lint --fix",
@@ -77,5 +78,5 @@
77
78
  "@types/react": "17.0.2",
78
79
  "@types/react-dom": "17.0.2"
79
80
  },
80
- "gitHead": "0c136e23f46fcce45a4d005c1cd99a6197ec35d1"
81
+ "gitHead": "be5ac8aa421db6f7c845c29a8df3c9528882d856"
81
82
  }
@@ -1 +0,0 @@
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;
@@ -1,40 +0,0 @@
1
- import t from "react";
2
- import e from "prop-types";
3
- const i = (r) => /* @__PURE__ */ t.createElement("div", { ...r }), o = {
4
- ariaLabel: void 0,
5
- clearLabel: "clear",
6
- disabled: !1,
7
- error: void 0,
8
- hint: void 0,
9
- label: void 0,
10
- labelAction: void 0,
11
- onClear: void 0,
12
- required: !1,
13
- selectButtonTitle: "select",
14
- size: "M",
15
- step: 1,
16
- value: void 0
17
- }, l = {
18
- ariaLabel: e.string,
19
- clearLabel: e.string,
20
- disabled: e.bool,
21
- error: e.oneOfType([e.string, e.bool]),
22
- hint: e.string,
23
- label: e.string,
24
- labelAction: e.element,
25
- name: e.string.isRequired,
26
- onChange: e.func.isRequired,
27
- onClear: e.func,
28
- required: e.bool,
29
- selectButtonTitle: e.string,
30
- size: e.oneOf(["S", "M"]),
31
- step: e.number,
32
- value: e.instanceOf(Date)
33
- };
34
- i.defaultProps = o;
35
- i.propTypes = l;
36
- export {
37
- i as DateTimePickerProps,
38
- o as dateTimePickerDefaultProps,
39
- l as dateTimePickerPropTypes
40
- };
@@ -1 +0,0 @@
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()})});
@@ -1,8 +0,0 @@
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
- });
@@ -1 +0,0 @@
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;
@@ -1,7 +0,0 @@
1
- const r = (t) => {
2
- const e = Date.parse(t);
3
- return Number.isNaN(e) ? null : new Date(e);
4
- };
5
- export {
6
- r as parseDate
7
- };