wimui 0.50.0 → 0.50.1

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.
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../node_modules/@radix-ui/react-slot/dist/index.cjs"),n=require("../../../icon/chevron-left.cjs"),r=require("../../../icon/chevron-right.cjs"),i=require("../../media/Icon/Icon.cjs"),a=require("./carousel.module.cjs");let o=require("react");o=e.__toESM(o,1);let s=require("classnames");s=e.__toESM(s,1);let c=require("react/jsx-runtime");var l={slideLabel:e=>`Slide ${e}`,prevSlide:`Previous slide`,nextSlide:`Next slide`,goToSlide:e=>`Go to slide ${e}`},u=(e,t)=>typeof e==`number`?e:e?t>=1280&&e.xl?e.xl:t>=1024&&e.lg?e.lg:t>=768&&e.md?e.md:t>=640&&e.sm?e.sm:e.base||1:1,d=(0,o.forwardRef)(({children:e,autoPlay:d=!1,interval:f=5e3,showIndicators:p=!0,showControls:m=!0,controlsPlacement:h=`overlay`,loop:g=!0,slidesToShow:_=1,aspectRatio:v,objectFit:y=`cover`,labels:b,className:x,asChild:S,...C},w)=>{let T=S?t.Root:`div`,E={...l,...b},D=(0,o.useMemo)(()=>o.default.Children.toArray(e),[e]),O=D.length,[k,A]=(0,o.useState)(typeof window<`u`?window.innerWidth:0),[j,M]=(0,o.useState)(g?O:0),[N,P]=(0,o.useState)(!1),[F,I]=(0,o.useState)(!1),L=u(_,k),R=(0,o.useRef)(null),z=(0,o.useRef)(null),B=(0,o.useRef)(null),V=(0,o.useRef)(null);(0,o.useEffect)(()=>{let e=()=>A(window.innerWidth);return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]);let H=(0,o.useMemo)(()=>!g||O===0?D:[...D,...D,...D],[D,g,O]),U=(0,o.useCallback)(()=>{if(!N){if(!g){M(e=>Math.min(e+1,O-L));return}P(!0),M(e=>e+1)}},[N,g,O,L]),W=(0,o.useCallback)(()=>{if(!N){if(!g){M(e=>Math.max(e-1,0));return}P(!0),M(e=>e-1)}},[N,g]),G=e=>{N||(g?(P(!0),M(e+O)):M(e))},K=()=>{g&&(P(!1),j>=O*2?M(j-O):j<O&&M(j+O))};(0,o.useEffect)(()=>(d&&!F&&O>L&&(R.current=window.setInterval(U,f)),()=>{R.current&&window.clearInterval(R.current)}),[d,f,U,O,L,F]);let q=e=>{e.key===`ArrowLeft`?W():e.key===`ArrowRight`&&U()},J=e=>{B.current=e.targetTouches[0].clientX},Y=e=>{V.current=e.targetTouches[0].clientX},X=()=>{if(!B.current||!V.current)return;let e=B.current-V.current;e>50?U():e<-50&&W(),B.current=null,V.current=null};if(O===0)return null;let Z=100/L,Q=-j*Z;return(0,c.jsxs)(T,{ref:w,className:(0,s.default)(`wim-carousel`,a.default.root,h===`outside`&&a.default.controlsOutside,x),onMouseEnter:()=>I(!0),onMouseLeave:()=>I(!1),onFocus:()=>I(!0),onBlur:()=>I(!1),onKeyDown:q,tabIndex:0,role:`region`,"aria-roledescription":`carousel`,...C,children:[(0,c.jsx)(`div`,{className:a.default.viewport,children:(0,c.jsx)(`div`,{ref:z,className:(0,s.default)(a.default.track,N&&a.default.transition),style:{transform:`translateX(${Q}%)`},onTransitionEnd:K,onTouchStart:J,onTouchMove:Y,onTouchEnd:X,children:H.map((e,t)=>(0,c.jsx)(`div`,{className:(0,s.default)(a.default.item,v&&a.default.hasAspectRatio),style:{flex:`0 0 ${Z}%`,width:`${Z}%`,...v?{aspectRatio:v,"--wim-carousel-object-fit":y}:{}},role:`group`,"aria-roledescription":`slide`,"aria-label":E.slideLabel(t%O+1),children:e},t))})}),m&&O>L&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(`button`,{className:(0,s.default)(a.default.control,a.default.prev),onClick:W,"aria-label":E.prevSlide,disabled:!g&&j===0,tabIndex:-1,children:(0,c.jsx)(i.Icon,{component:n.default,size:`md`})}),(0,c.jsx)(`button`,{className:(0,s.default)(a.default.control,a.default.next),onClick:U,"aria-label":E.nextSlide,disabled:!g&&j>=O-L,tabIndex:-1,children:(0,c.jsx)(i.Icon,{component:r.default,size:`md`})})]}),p&&O>1&&(0,c.jsx)(`div`,{className:a.default.indicators,children:D.map((e,t)=>{let n=g?j%O===t:j===t;return(0,c.jsx)(`button`,{className:(0,s.default)(a.default.indicator,n&&a.default.active),onClick:()=>G(t),"aria-label":E.goToSlide(t+1),"aria-current":n?`true`:`false`},t)})})]})});d.displayName=`Carousel`,exports.Carousel=d;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../node_modules/@radix-ui/react-slot/dist/index.cjs"),n=require("../../../i18n/useWimTranslation.cjs"),r=require("../../../icon/chevron-left.cjs"),i=require("../../../icon/chevron-right.cjs"),a=require("../../media/Icon/Icon.cjs"),o=require("./carousel.module.cjs");let s=require("react");s=e.__toESM(s,1);let c=require("classnames");c=e.__toESM(c,1);let l=require("react/jsx-runtime");var u=(e,t)=>typeof e==`number`?e:e?t>=1280&&e.xl?e.xl:t>=1024&&e.lg?e.lg:t>=768&&e.md?e.md:t>=640&&e.sm?e.sm:e.base||1:1,d=(0,s.forwardRef)(({children:e,autoPlay:d=!1,interval:f=5e3,showIndicators:p=!0,showControls:m=!0,controlsPlacement:h=`overlay`,loop:g=!0,slidesToShow:_=1,aspectRatio:v,objectFit:y=`cover`,labels:b,className:x,asChild:S,...C},w)=>{let T=S?t.Root:`div`,{t:E}=n.useWimTranslation(`components`),D={slideLabel:e=>E(`carousel.slide`,{number:e}),prevSlide:E(`carousel.prev_slide`),nextSlide:E(`carousel.next_slide`),goToSlide:e=>E(`carousel.go_to_slide`,{number:e}),...b},O=(0,s.useMemo)(()=>s.default.Children.toArray(e),[e]),k=O.length,[A,j]=(0,s.useState)(typeof window<`u`?window.innerWidth:0),[M,N]=(0,s.useState)(g?k:0),[P,F]=(0,s.useState)(!1),[I,L]=(0,s.useState)(!1),R=u(_,A),z=(0,s.useRef)(null),B=(0,s.useRef)(null),V=(0,s.useRef)(null),H=(0,s.useRef)(null);(0,s.useEffect)(()=>{let e=()=>j(window.innerWidth);return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]);let U=(0,s.useMemo)(()=>!g||k===0?O:[...O,...O,...O],[O,g,k]),W=(0,s.useCallback)(()=>{if(!P){if(!g){N(e=>Math.min(e+1,k-R));return}F(!0),N(e=>e+1)}},[P,g,k,R]),G=(0,s.useCallback)(()=>{if(!P){if(!g){N(e=>Math.max(e-1,0));return}F(!0),N(e=>e-1)}},[P,g]),K=e=>{P||(g?(F(!0),N(e+k)):N(e))},q=()=>{g&&(F(!1),M>=k*2?N(M-k):M<k&&N(M+k))};(0,s.useEffect)(()=>(d&&!I&&k>R&&(z.current=window.setInterval(W,f)),()=>{z.current&&window.clearInterval(z.current)}),[d,f,W,k,R,I]);let J=e=>{e.key===`ArrowLeft`?G():e.key===`ArrowRight`&&W()},Y=e=>{V.current=e.targetTouches[0].clientX},X=e=>{H.current=e.targetTouches[0].clientX},Z=()=>{if(!V.current||!H.current)return;let e=V.current-H.current;e>50?W():e<-50&&G(),V.current=null,H.current=null};if(k===0)return null;let Q=100/R,$=-M*Q;return(0,l.jsxs)(T,{ref:w,className:(0,c.default)(`wim-carousel`,o.default.root,h===`outside`&&o.default.controlsOutside,x),onMouseEnter:()=>L(!0),onMouseLeave:()=>L(!1),onFocus:()=>L(!0),onBlur:()=>L(!1),onKeyDown:J,tabIndex:0,role:`region`,"aria-roledescription":`carousel`,...C,children:[(0,l.jsx)(`div`,{className:o.default.viewport,children:(0,l.jsx)(`div`,{ref:B,className:(0,c.default)(o.default.track,P&&o.default.transition),style:{transform:`translateX(${$}%)`},onTransitionEnd:q,onTouchStart:Y,onTouchMove:X,onTouchEnd:Z,children:U.map((e,t)=>(0,l.jsx)(`div`,{className:(0,c.default)(o.default.item,v&&o.default.hasAspectRatio),style:{flex:`0 0 ${Q}%`,width:`${Q}%`,...v?{aspectRatio:v,"--wim-carousel-object-fit":y}:{}},role:`group`,"aria-roledescription":`slide`,"aria-label":D.slideLabel(t%k+1),children:e},t))})}),m&&k>R&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`button`,{className:(0,c.default)(o.default.control,o.default.prev),onClick:G,"aria-label":D.prevSlide,disabled:!g&&M===0,tabIndex:-1,children:(0,l.jsx)(a.Icon,{component:r.default,size:`md`})}),(0,l.jsx)(`button`,{className:(0,c.default)(o.default.control,o.default.next),onClick:W,"aria-label":D.nextSlide,disabled:!g&&M>=k-R,tabIndex:-1,children:(0,l.jsx)(a.Icon,{component:i.default,size:`md`})})]}),p&&k>1&&(0,l.jsx)(`div`,{className:o.default.indicators,children:O.map((e,t)=>{let n=g?M%k===t:M===t;return(0,l.jsx)(`button`,{className:(0,c.default)(o.default.indicator,n&&o.default.active),onClick:()=>K(t),"aria-label":D.goToSlide(t+1),"aria-current":n?`true`:`false`},t)})})]})});d.displayName=`Carousel`,exports.Carousel=d;
@@ -1,109 +1,108 @@
1
1
  "use client";
2
2
  import { Root as e } from "../../../node_modules/@radix-ui/react-slot/dist/index.js";
3
- import t from "../../../icon/chevron-left.js";
4
- import n from "../../../icon/chevron-right.js";
5
- import { Icon as r } from "../../media/Icon/Icon.js";
6
- import i from "./carousel.module.js";
7
- import a, { forwardRef as o, useCallback as s, useEffect as c, useMemo as l, useRef as u, useState as d } from "react";
3
+ import { useWimTranslation as t } from "../../../i18n/useWimTranslation.js";
4
+ import n from "../../../icon/chevron-left.js";
5
+ import r from "../../../icon/chevron-right.js";
6
+ import { Icon as i } from "../../media/Icon/Icon.js";
7
+ import a from "./carousel.module.js";
8
+ import ee, { forwardRef as o, useCallback as s, useEffect as c, useMemo as l, useRef as u, useState as d } from "react";
8
9
  import f from "classnames";
9
- import { Fragment as ee, jsx as p, jsxs as m } from "react/jsx-runtime";
10
+ import { Fragment as p, jsx as m, jsxs as h } from "react/jsx-runtime";
10
11
  //#region src/components/data-display/Carousel/Carousel.tsx
11
- var h = {
12
- slideLabel: (e) => `Slide ${e}`,
13
- prevSlide: "Previous slide",
14
- nextSlide: "Next slide",
15
- goToSlide: (e) => `Go to slide ${e}`
16
- }, g = (e, t) => typeof e == "number" ? e : e ? t >= 1280 && e.xl ? e.xl : t >= 1024 && e.lg ? e.lg : t >= 768 && e.md ? e.md : t >= 640 && e.sm ? e.sm : e.base || 1 : 1, _ = o(({ children: o, autoPlay: _ = !1, interval: v = 5e3, showIndicators: y = !0, showControls: b = !0, controlsPlacement: x = "overlay", loop: S = !0, slidesToShow: C = 1, aspectRatio: w, objectFit: T = "cover", labels: E, className: D, asChild: O, ...k }, A) => {
17
- let j = O ? e : "div", M = {
18
- ...h,
12
+ var g = (e, t) => typeof e == "number" ? e : e ? t >= 1280 && e.xl ? e.xl : t >= 1024 && e.lg ? e.lg : t >= 768 && e.md ? e.md : t >= 640 && e.sm ? e.sm : e.base || 1 : 1, _ = o(({ children: o, autoPlay: _ = !1, interval: v = 5e3, showIndicators: y = !0, showControls: b = !0, controlsPlacement: x = "overlay", loop: S = !0, slidesToShow: C = 1, aspectRatio: w, objectFit: T = "cover", labels: E, className: D, asChild: O, ...k }, A) => {
13
+ let j = O ? e : "div", { t: M } = t("components"), N = {
14
+ slideLabel: (e) => M("carousel.slide", { number: e }),
15
+ prevSlide: M("carousel.prev_slide"),
16
+ nextSlide: M("carousel.next_slide"),
17
+ goToSlide: (e) => M("carousel.go_to_slide", { number: e }),
19
18
  ...E
20
- }, N = l(() => a.Children.toArray(o), [o]), P = N.length, [F, I] = d(typeof window < "u" ? window.innerWidth : 0), [L, R] = d(S ? P : 0), [z, B] = d(!1), [V, H] = d(!1), U = g(C, F), W = u(null), G = u(null), K = u(null), q = u(null);
19
+ }, P = l(() => ee.Children.toArray(o), [o]), F = P.length, [I, L] = d(typeof window < "u" ? window.innerWidth : 0), [R, z] = d(S ? F : 0), [B, V] = d(!1), [H, U] = d(!1), W = g(C, I), G = u(null), K = u(null), q = u(null), J = u(null);
21
20
  c(() => {
22
- let e = () => I(window.innerWidth);
21
+ let e = () => L(window.innerWidth);
23
22
  return window.addEventListener("resize", e), () => window.removeEventListener("resize", e);
24
23
  }, []);
25
- let J = l(() => !S || P === 0 ? N : [
26
- ...N,
27
- ...N,
28
- ...N
24
+ let Y = l(() => !S || F === 0 ? P : [
25
+ ...P,
26
+ ...P,
27
+ ...P
29
28
  ], [
30
- N,
29
+ P,
31
30
  S,
32
- P
33
- ]), Y = s(() => {
34
- if (!z) {
31
+ F
32
+ ]), X = s(() => {
33
+ if (!B) {
35
34
  if (!S) {
36
- R((e) => Math.min(e + 1, P - U));
35
+ z((e) => Math.min(e + 1, F - W));
37
36
  return;
38
37
  }
39
- B(!0), R((e) => e + 1);
38
+ V(!0), z((e) => e + 1);
40
39
  }
41
40
  }, [
42
- z,
41
+ B,
43
42
  S,
44
- P,
45
- U
46
- ]), X = s(() => {
47
- if (!z) {
43
+ F,
44
+ W
45
+ ]), Z = s(() => {
46
+ if (!B) {
48
47
  if (!S) {
49
- R((e) => Math.max(e - 1, 0));
48
+ z((e) => Math.max(e - 1, 0));
50
49
  return;
51
50
  }
52
- B(!0), R((e) => e - 1);
51
+ V(!0), z((e) => e - 1);
53
52
  }
54
- }, [z, S]), Z = (e) => {
55
- z || (S ? (B(!0), R(e + P)) : R(e));
56
- }, Q = () => {
57
- S && (B(!1), L >= P * 2 ? R(L - P) : L < P && R(L + P));
53
+ }, [B, S]), Q = (e) => {
54
+ B || (S ? (V(!0), z(e + F)) : z(e));
55
+ }, te = () => {
56
+ S && (V(!1), R >= F * 2 ? z(R - F) : R < F && z(R + F));
58
57
  };
59
- c(() => (_ && !V && P > U && (W.current = window.setInterval(Y, v)), () => {
60
- W.current && window.clearInterval(W.current);
58
+ c(() => (_ && !H && F > W && (G.current = window.setInterval(X, v)), () => {
59
+ G.current && window.clearInterval(G.current);
61
60
  }), [
62
61
  _,
63
62
  v,
64
- Y,
65
- P,
66
- U,
67
- V
63
+ X,
64
+ F,
65
+ W,
66
+ H
68
67
  ]);
69
- let te = (e) => {
70
- e.key === "ArrowLeft" ? X() : e.key === "ArrowRight" && Y();
71
- }, ne = (e) => {
72
- K.current = e.targetTouches[0].clientX;
68
+ let ne = (e) => {
69
+ e.key === "ArrowLeft" ? Z() : e.key === "ArrowRight" && X();
73
70
  }, re = (e) => {
74
71
  q.current = e.targetTouches[0].clientX;
75
- }, ie = () => {
76
- if (!K.current || !q.current) return;
77
- let e = K.current - q.current;
78
- e > 50 ? Y() : e < -50 && X(), K.current = null, q.current = null;
72
+ }, ie = (e) => {
73
+ J.current = e.targetTouches[0].clientX;
74
+ }, ae = () => {
75
+ if (!q.current || !J.current) return;
76
+ let e = q.current - J.current;
77
+ e > 50 ? X() : e < -50 && Z(), q.current = null, J.current = null;
79
78
  };
80
- if (P === 0) return null;
81
- let $ = 100 / U, ae = -L * $;
82
- return /* @__PURE__ */ m(j, {
79
+ if (F === 0) return null;
80
+ let $ = 100 / W, oe = -R * $;
81
+ return /* @__PURE__ */ h(j, {
83
82
  ref: A,
84
- className: f("wim-carousel", i.root, x === "outside" && i.controlsOutside, D),
85
- onMouseEnter: () => H(!0),
86
- onMouseLeave: () => H(!1),
87
- onFocus: () => H(!0),
88
- onBlur: () => H(!1),
89
- onKeyDown: te,
83
+ className: f("wim-carousel", a.root, x === "outside" && a.controlsOutside, D),
84
+ onMouseEnter: () => U(!0),
85
+ onMouseLeave: () => U(!1),
86
+ onFocus: () => U(!0),
87
+ onBlur: () => U(!1),
88
+ onKeyDown: ne,
90
89
  tabIndex: 0,
91
90
  role: "region",
92
91
  "aria-roledescription": "carousel",
93
92
  ...k,
94
93
  children: [
95
- /* @__PURE__ */ p("div", {
96
- className: i.viewport,
97
- children: /* @__PURE__ */ p("div", {
98
- ref: G,
99
- className: f(i.track, z && i.transition),
100
- style: { transform: `translateX(${ae}%)` },
101
- onTransitionEnd: Q,
102
- onTouchStart: ne,
103
- onTouchMove: re,
104
- onTouchEnd: ie,
105
- children: J.map((e, t) => /* @__PURE__ */ p("div", {
106
- className: f(i.item, w && i.hasAspectRatio),
94
+ /* @__PURE__ */ m("div", {
95
+ className: a.viewport,
96
+ children: /* @__PURE__ */ m("div", {
97
+ ref: K,
98
+ className: f(a.track, B && a.transition),
99
+ style: { transform: `translateX(${oe}%)` },
100
+ onTransitionEnd: te,
101
+ onTouchStart: re,
102
+ onTouchMove: ie,
103
+ onTouchEnd: ae,
104
+ children: Y.map((e, t) => /* @__PURE__ */ m("div", {
105
+ className: f(a.item, w && a.hasAspectRatio),
107
106
  style: {
108
107
  flex: `0 0 ${$}%`,
109
108
  width: `${$}%`,
@@ -114,40 +113,40 @@ var h = {
114
113
  },
115
114
  role: "group",
116
115
  "aria-roledescription": "slide",
117
- "aria-label": M.slideLabel(t % P + 1),
116
+ "aria-label": N.slideLabel(t % F + 1),
118
117
  children: e
119
118
  }, t))
120
119
  })
121
120
  }),
122
- b && P > U && /* @__PURE__ */ m(ee, { children: [/* @__PURE__ */ p("button", {
123
- className: f(i.control, i.prev),
124
- onClick: X,
125
- "aria-label": M.prevSlide,
126
- disabled: !S && L === 0,
121
+ b && F > W && /* @__PURE__ */ h(p, { children: [/* @__PURE__ */ m("button", {
122
+ className: f(a.control, a.prev),
123
+ onClick: Z,
124
+ "aria-label": N.prevSlide,
125
+ disabled: !S && R === 0,
127
126
  tabIndex: -1,
128
- children: /* @__PURE__ */ p(r, {
129
- component: t,
127
+ children: /* @__PURE__ */ m(i, {
128
+ component: n,
130
129
  size: "md"
131
130
  })
132
- }), /* @__PURE__ */ p("button", {
133
- className: f(i.control, i.next),
134
- onClick: Y,
135
- "aria-label": M.nextSlide,
136
- disabled: !S && L >= P - U,
131
+ }), /* @__PURE__ */ m("button", {
132
+ className: f(a.control, a.next),
133
+ onClick: X,
134
+ "aria-label": N.nextSlide,
135
+ disabled: !S && R >= F - W,
137
136
  tabIndex: -1,
138
- children: /* @__PURE__ */ p(r, {
139
- component: n,
137
+ children: /* @__PURE__ */ m(i, {
138
+ component: r,
140
139
  size: "md"
141
140
  })
142
141
  })] }),
143
- y && P > 1 && /* @__PURE__ */ p("div", {
144
- className: i.indicators,
145
- children: N.map((e, t) => {
146
- let n = S ? L % P === t : L === t;
147
- return /* @__PURE__ */ p("button", {
148
- className: f(i.indicator, n && i.active),
149
- onClick: () => Z(t),
150
- "aria-label": M.goToSlide(t + 1),
142
+ y && F > 1 && /* @__PURE__ */ m("div", {
143
+ className: a.indicators,
144
+ children: P.map((e, t) => {
145
+ let n = S ? R % F === t : R === t;
146
+ return /* @__PURE__ */ m("button", {
147
+ className: f(a.indicator, n && a.active),
148
+ onClick: () => Q(t),
149
+ "aria-label": N.goToSlide(t + 1),
151
150
  "aria-current": n ? "true" : "false"
152
151
  }, t);
153
152
  })
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../i18n/useWimTranslation.cjs"),n=require("../../layout/Transition/Transition.cjs"),r=require("../../../icon/chevron-down.cjs"),i=require("../../media/Icon/Icon.cjs"),a=require("../FieldTemplate/FieldTemplate.cjs"),o=require("./phone-input.module.cjs");let s=require("react");s=e.__toESM(s,1);let c=require("classnames");c=e.__toESM(c,1);let l=require("react/jsx-runtime");var u=[{code:`US`,name:`United States`,dialCode:`1`,flag:`🇺🇸`},{code:`JP`,name:`Japan`,dialCode:`81`,flag:`🇯🇵`},{code:`GB`,name:`United Kingdom`,dialCode:`44`,flag:`🇬🇧`},{code:`AU`,name:`Australia`,dialCode:`61`,flag:`🇦🇺`},{code:`DE`,name:`Germany`,dialCode:`49`,flag:`🇩🇪`},{code:`FR`,name:`France`,dialCode:`33`,flag:`🇫🇷`},{code:`CN`,name:`China`,dialCode:`86`,flag:`🇨🇳`},{code:`KR`,name:`South Korea`,dialCode:`82`,flag:`🇰🇷`},{code:`IN`,name:`India`,dialCode:`91`,flag:`🇮🇳`},{code:`BR`,name:`Brazil`,dialCode:`55`,flag:`🇧🇷`}],d=(0,s.forwardRef)(({value:e=``,onChange:d,countryCode:f=`US`,onCountryChange:p,placeholder:m=`000-0000-0000`,disabled:h=!1,error:g,required:_=!1,label:v,layout:y=`vertical`,className:b,fullWidth:x=!1,...S},C)=>{let w=`wim-phone-input-${(0,s.useId)()}`,T=v?`${w}-label`:void 0,{t:E}=t.useWimTranslation(`form`),D=E(`phone.select_country`),O=`${w}-countries`,k=e=>`${w}-country-${e}`,A=g?`${w}-error`:void 0,[j,M]=(0,s.useState)(!1),[N,P]=(0,s.useState)(-1),F=(0,s.useRef)(null),I=(0,s.useRef)(null),L=(0,s.useRef)({text:``,timer:null});(0,s.useEffect)(()=>{let e=e=>{F.current&&!F.current.contains(e.target)&&M(!1)};return j&&document.addEventListener(`mousedown`,e),()=>{document.removeEventListener(`mousedown`,e)}},[j]);let R=u.find(e=>e.code===f)??u[0],z=e=>{d?.(e.target.value)},B=u.length-1,V=e=>{let t=u.findIndex(e=>e.code===R.code);P(e??Math.max(t,0)),M(!0)},H=e=>{let t=u[e];t&&(p?.(t.code),M(!1))},U=(e,t)=>{let n=e.toLowerCase().replace(/^\+/,``);if(n===``)return-1;let r=/^[0-9]+$/.test(n),i=(e,t)=>r?e.dialCode.startsWith(t):e.name.toLowerCase().startsWith(t),a=!r&&n.length>1&&n.split(``).every(e=>e===n[0]),o=a?n[0]:n,s=a||n.length===1?t+1:t;for(let e=0;e<u.length;e++){let t=(Math.max(s,0)+e)%u.length;if(i(u[t],o))return t}return-1},W=e=>{let t=L.current;t.timer&&clearTimeout(t.timer),t.text+=e,t.timer=setTimeout(()=>{t.text=``,t.timer=null},500);let n=U(t.text,j?N:-1);n<0||(j?P(n):V(n))},G=e=>{if(!h)switch(e.key){case`ArrowDown`:case`ArrowUp`:if(e.preventDefault(),!j)V();else{let t=e.key===`ArrowDown`?1:-1;P(e=>(e+t+u.length)%u.length)}break;case`Home`:case`End`:e.preventDefault(),j?P(e.key===`Home`?0:B):V(e.key===`Home`?0:B);break;case`Enter`:case` `:e.preventDefault(),e.key===` `&&L.current.text!==``?W(` `):j?H(N):V();break;case`Escape`:j&&(e.preventDefault(),M(!1));break;case`Tab`:M(!1);break;default:e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&(e.preventDefault(),W(e.key))}};return(0,s.useEffect)(()=>{let e=L.current;return()=>{e.timer&&clearTimeout(e.timer)}},[]),(0,s.useEffect)(()=>{j&&N>=0&&(I.current?.querySelectorAll(`[role="option"]`)?.[N])?.scrollIntoView?.({block:`nearest`})},[N,j]),(0,l.jsx)(a.FieldTemplate,{label:v,labelId:T,htmlFor:w,required:_,error:g,errorId:A,layout:y,className:b,children:(0,l.jsxs)(`div`,{ref:F,className:(0,c.default)(`wim-phone-input`,o.default.root,x&&o.default.fullWidth,h&&o.default.disabled,g&&o.default.danger),"data-testid":`phone-input-root`,...S,children:[(0,l.jsxs)(`div`,{className:o.default.countryWrapper,children:[(0,l.jsxs)(`button`,{type:`button`,role:`combobox`,className:o.default.countryTrigger,onClick:()=>{h||(j?M(!1):V())},onKeyDown:G,onKeyUp:e=>{e.key===` `&&e.preventDefault()},disabled:h,"aria-haspopup":`listbox`,"aria-expanded":j,"aria-controls":j?O:void 0,"aria-activedescendant":j&&N>=0?k(N):void 0,"aria-label":D,children:[(0,l.jsx)(`span`,{"aria-hidden":`true`,style:{fontSize:`1.2em`},children:R.flag}),(0,l.jsxs)(`span`,{children:[`+`,R.dialCode]}),(0,l.jsx)(i.Icon,{component:r.default,size:`sm`,className:(0,c.default)(o.default.chevron,j&&o.default.chevronOpen)})]}),(0,l.jsx)(n.Transition,{show:j,preset:`fade`,className:o.default.dropdown,children:(0,l.jsx)(`ul`,{ref:I,id:O,className:o.default.countryList,role:`listbox`,"aria-label":D,tabIndex:-1,onMouseDown:e=>e.preventDefault(),children:u.map((e,t)=>(0,l.jsxs)(`li`,{id:k(t),className:(0,c.default)(o.default.countryOption,t===N&&o.default.active,R.code===e.code&&o.default.selected),onMouseEnter:()=>P(t),onClick:()=>H(t),role:`option`,"aria-selected":R.code===e.code,children:[(0,l.jsx)(`span`,{"aria-hidden":`true`,children:e.flag}),(0,l.jsx)(`span`,{className:o.default.countryName,children:e.name}),(0,l.jsxs)(`span`,{className:o.default.countryCode,children:[`+`,e.dialCode]})]},e.code))})})]}),(0,l.jsx)(`div`,{className:o.default.divider,"aria-hidden":`true`}),(0,l.jsx)(`input`,{id:w,ref:C,type:`tel`,value:e,onChange:z,placeholder:m,disabled:h,className:o.default.number,"aria-invalid":!!g,"aria-describedby":A})]})})});d.displayName=`PhoneInput`,exports.PHONE_COUNTRIES=u,exports.PhoneInput=d;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../i18n/useWimTranslation.cjs"),n=require("../../layout/Transition/Transition.cjs"),r=require("../../../icon/chevron-down.cjs"),i=require("../../media/Icon/Icon.cjs"),a=require("../FieldTemplate/FieldTemplate.cjs"),o=require("./phone-input.module.cjs");let s=require("react");s=e.__toESM(s,1);let c=require("classnames");c=e.__toESM(c,1);let l=require("react/jsx-runtime");var u=[{code:`US`,dialCode:`1`,flag:`🇺🇸`},{code:`JP`,dialCode:`81`,flag:`🇯🇵`},{code:`GB`,dialCode:`44`,flag:`🇬🇧`},{code:`AU`,dialCode:`61`,flag:`🇦🇺`},{code:`DE`,dialCode:`49`,flag:`🇩🇪`},{code:`FR`,dialCode:`33`,flag:`🇫🇷`},{code:`CN`,dialCode:`86`,flag:`🇨🇳`},{code:`KR`,dialCode:`82`,flag:`🇰🇷`},{code:`IN`,dialCode:`91`,flag:`🇮🇳`},{code:`BR`,dialCode:`55`,flag:`🇧🇷`}],d=(0,s.forwardRef)(({value:e=``,onChange:d,countryCode:f=`US`,onCountryChange:p,placeholder:m=`000-0000-0000`,disabled:h=!1,error:g,required:_=!1,label:v,layout:y=`vertical`,className:b,fullWidth:x=!1,...S},C)=>{let w=`wim-phone-input-${(0,s.useId)()}`,T=v?`${w}-label`:void 0,{t:E}=t.useWimTranslation(`form`),D=E(`phone.select_country`),O=`${w}-countries`,k=e=>`${w}-country-${e}`,A=g?`${w}-error`:void 0,[j,M]=(0,s.useState)(!1),[N,P]=(0,s.useState)(-1),F=(0,s.useRef)(null),I=(0,s.useRef)(null),L=(0,s.useRef)({text:``,timer:null});(0,s.useEffect)(()=>{let e=e=>{F.current&&!F.current.contains(e.target)&&M(!1)};return j&&document.addEventListener(`mousedown`,e),()=>{document.removeEventListener(`mousedown`,e)}},[j]);let R=u.find(e=>e.code===f)??u[0],z=e=>{d?.(e.target.value)},B=u.length-1,V=e=>{let t=u.findIndex(e=>e.code===R.code);P(e??Math.max(t,0)),M(!0)},H=e=>{let t=u[e];t&&(p?.(t.code),M(!1))},U=e=>E(`phone.countries.${e.code}`),W=(e,t)=>{let n=e.toLowerCase().replace(/^\+/,``);if(n===``)return-1;let r=/^[0-9]+$/.test(n),i=(e,t)=>r?e.dialCode.startsWith(t):U(e).toLowerCase().startsWith(t),a=!r&&n.length>1&&n.split(``).every(e=>e===n[0]),o=a?n[0]:n,s=a||n.length===1?t+1:t;for(let e=0;e<u.length;e++){let t=(Math.max(s,0)+e)%u.length;if(i(u[t],o))return t}return-1},G=e=>{let t=L.current;t.timer&&clearTimeout(t.timer),t.text+=e,t.timer=setTimeout(()=>{t.text=``,t.timer=null},500);let n=W(t.text,j?N:-1);n<0||(j?P(n):V(n))},K=e=>{if(!h)switch(e.key){case`ArrowDown`:case`ArrowUp`:if(e.preventDefault(),!j)V();else{let t=e.key===`ArrowDown`?1:-1;P(e=>(e+t+u.length)%u.length)}break;case`Home`:case`End`:e.preventDefault(),j?P(e.key===`Home`?0:B):V(e.key===`Home`?0:B);break;case`Enter`:case` `:e.preventDefault(),e.key===` `&&L.current.text!==``?G(` `):j?H(N):V();break;case`Escape`:j&&(e.preventDefault(),M(!1));break;case`Tab`:M(!1);break;default:e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&(e.preventDefault(),G(e.key))}};return(0,s.useEffect)(()=>{let e=L.current;return()=>{e.timer&&clearTimeout(e.timer)}},[]),(0,s.useEffect)(()=>{j&&N>=0&&(I.current?.querySelectorAll(`[role="option"]`)?.[N])?.scrollIntoView?.({block:`nearest`})},[N,j]),(0,l.jsx)(a.FieldTemplate,{label:v,labelId:T,htmlFor:w,required:_,error:g,errorId:A,layout:y,className:b,children:(0,l.jsxs)(`div`,{ref:F,className:(0,c.default)(`wim-phone-input`,o.default.root,x&&o.default.fullWidth,h&&o.default.disabled,g&&o.default.danger),"data-testid":`phone-input-root`,...S,children:[(0,l.jsxs)(`div`,{className:o.default.countryWrapper,children:[(0,l.jsxs)(`button`,{type:`button`,role:`combobox`,className:o.default.countryTrigger,onClick:()=>{h||(j?M(!1):V())},onKeyDown:K,onKeyUp:e=>{e.key===` `&&e.preventDefault()},disabled:h,"aria-haspopup":`listbox`,"aria-expanded":j,"aria-controls":j?O:void 0,"aria-activedescendant":j&&N>=0?k(N):void 0,"aria-label":D,children:[(0,l.jsx)(`span`,{"aria-hidden":`true`,style:{fontSize:`1.2em`},children:R.flag}),(0,l.jsxs)(`span`,{children:[`+`,R.dialCode]}),(0,l.jsx)(i.Icon,{component:r.default,size:`sm`,className:(0,c.default)(o.default.chevron,j&&o.default.chevronOpen)})]}),(0,l.jsx)(n.Transition,{show:j,preset:`fade`,className:o.default.dropdown,children:(0,l.jsx)(`ul`,{ref:I,id:O,className:o.default.countryList,role:`listbox`,"aria-label":D,tabIndex:-1,onMouseDown:e=>e.preventDefault(),children:u.map((e,t)=>(0,l.jsxs)(`li`,{id:k(t),className:(0,c.default)(o.default.countryOption,t===N&&o.default.active,R.code===e.code&&o.default.selected),onMouseEnter:()=>P(t),onClick:()=>H(t),role:`option`,"aria-selected":R.code===e.code,children:[(0,l.jsx)(`span`,{"aria-hidden":`true`,children:e.flag}),(0,l.jsx)(`span`,{className:o.default.countryName,children:U(e)}),(0,l.jsxs)(`span`,{className:o.default.countryCode,children:[`+`,e.dialCode]})]},e.code))})})]}),(0,l.jsx)(`div`,{className:o.default.divider,"aria-hidden":`true`}),(0,l.jsx)(`input`,{id:w,ref:C,type:`tel`,value:e,onChange:z,placeholder:m,disabled:h,className:o.default.number,"aria-invalid":!!g,"aria-describedby":A})]})})});d.displayName=`PhoneInput`,exports.PHONE_COUNTRIES=u,exports.PhoneInput=d;
@@ -1,7 +1,7 @@
1
1
  import { default as React } from 'react';
2
+ type CountryCode = "US" | "JP" | "GB" | "AU" | "DE" | "FR" | "CN" | "KR" | "IN" | "BR";
2
3
  interface Country {
3
- code: string;
4
- name: string;
4
+ code: CountryCode;
5
5
  dialCode: string;
6
6
  flag: string;
7
7
  }
@@ -12,61 +12,51 @@ import { jsx as f, jsxs as p } from "react/jsx-runtime";
12
12
  var m = [
13
13
  {
14
14
  code: "US",
15
- name: "United States",
16
15
  dialCode: "1",
17
16
  flag: "🇺🇸"
18
17
  },
19
18
  {
20
19
  code: "JP",
21
- name: "Japan",
22
20
  dialCode: "81",
23
21
  flag: "🇯🇵"
24
22
  },
25
23
  {
26
24
  code: "GB",
27
- name: "United Kingdom",
28
25
  dialCode: "44",
29
26
  flag: "🇬🇧"
30
27
  },
31
28
  {
32
29
  code: "AU",
33
- name: "Australia",
34
30
  dialCode: "61",
35
31
  flag: "🇦🇺"
36
32
  },
37
33
  {
38
34
  code: "DE",
39
- name: "Germany",
40
35
  dialCode: "49",
41
36
  flag: "🇩🇪"
42
37
  },
43
38
  {
44
39
  code: "FR",
45
- name: "France",
46
40
  dialCode: "33",
47
41
  flag: "🇫🇷"
48
42
  },
49
43
  {
50
44
  code: "CN",
51
- name: "China",
52
45
  dialCode: "86",
53
46
  flag: "🇨🇳"
54
47
  },
55
48
  {
56
49
  code: "KR",
57
- name: "South Korea",
58
50
  dialCode: "82",
59
51
  flag: "🇰🇷"
60
52
  },
61
53
  {
62
54
  code: "IN",
63
- name: "India",
64
55
  dialCode: "91",
65
56
  flag: "🇮🇳"
66
57
  },
67
58
  {
68
59
  code: "BR",
69
- name: "Brazil",
70
60
  dialCode: "55",
71
61
  flag: "🇧🇷"
72
62
  }
@@ -91,23 +81,23 @@ var m = [
91
81
  }, K = (e) => {
92
82
  let t = m[e];
93
83
  t && (_?.(t.code), I(!1));
94
- }, q = (e, t) => {
84
+ }, q = (e) => A(`phone.countries.${e.code}`), J = (e, t) => {
95
85
  let n = e.toLowerCase().replace(/^\+/, "");
96
86
  if (n === "") return -1;
97
- let r = /^[0-9]+$/.test(n), i = (e, t) => r ? e.dialCode.startsWith(t) : e.name.toLowerCase().startsWith(t), a = !r && n.length > 1 && n.split("").every((e) => e === n[0]), o = a ? n[0] : n, s = a || n.length === 1 ? t + 1 : t;
87
+ let r = /^[0-9]+$/.test(n), i = (e, t) => r ? e.dialCode.startsWith(t) : q(e).toLowerCase().startsWith(t), a = !r && n.length > 1 && n.split("").every((e) => e === n[0]), o = a ? n[0] : n, s = a || n.length === 1 ? t + 1 : t;
98
88
  for (let e = 0; e < m.length; e++) {
99
89
  let t = (Math.max(s, 0) + e) % m.length;
100
90
  if (i(m[t], o)) return t;
101
91
  }
102
92
  return -1;
103
- }, J = (e) => {
93
+ }, Y = (e) => {
104
94
  let t = V.current;
105
95
  t.timer && clearTimeout(t.timer), t.text += e, t.timer = setTimeout(() => {
106
96
  t.text = "", t.timer = null;
107
97
  }, 500);
108
- let n = q(t.text, F ? L : -1);
98
+ let n = J(t.text, F ? L : -1);
109
99
  n < 0 || (F ? R(n) : G(n));
110
- }, Y = (e) => {
100
+ }, X = (e) => {
111
101
  if (!y) switch (e.key) {
112
102
  case "ArrowDown":
113
103
  case "ArrowUp":
@@ -123,7 +113,7 @@ var m = [
123
113
  break;
124
114
  case "Enter":
125
115
  case " ":
126
- e.preventDefault(), e.key === " " && V.current.text !== "" ? J(" ") : F ? K(L) : G();
116
+ e.preventDefault(), e.key === " " && V.current.text !== "" ? Y(" ") : F ? K(L) : G();
127
117
  break;
128
118
  case "Escape":
129
119
  F && (e.preventDefault(), I(!1));
@@ -131,7 +121,7 @@ var m = [
131
121
  case "Tab":
132
122
  I(!1);
133
123
  break;
134
- default: e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey && (e.preventDefault(), J(e.key));
124
+ default: e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey && (e.preventDefault(), Y(e.key));
135
125
  }
136
126
  };
137
127
  return s(() => {
@@ -165,7 +155,7 @@ var m = [
165
155
  onClick: () => {
166
156
  y || (F ? I(!1) : G());
167
157
  },
168
- onKeyDown: Y,
158
+ onKeyDown: X,
169
159
  onKeyUp: (e) => {
170
160
  e.key === " " && e.preventDefault();
171
161
  },
@@ -214,7 +204,7 @@ var m = [
214
204
  }),
215
205
  /* @__PURE__ */ f("span", {
216
206
  className: a.countryName,
217
- children: e.name
207
+ children: q(e)
218
208
  }),
219
209
  /* @__PURE__ */ p("span", {
220
210
  className: a.countryCode,
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../i18n/useWimTranslation.cjs"),n=require("../Button/Button.cjs"),r=require("../Input/Input.cjs"),i=require("../DatePicker/DatePicker.cjs"),a=require("../NumberInput/NumberInput.cjs"),o=require("../SegmentedControl/SegmentedControl.cjs"),s=require("../Select/Select.cjs"),c=require("../Switch/Switch.cjs"),l=require("../IconButton/IconButton.cjs"),u=require("./querybuilder.module.cjs"),d=require("./warn-unknown-operator.cjs");let f=require("react");f=e.__toESM(f,1);let p=require("classnames");p=e.__toESM(p,1);let m=require("react/jsx-runtime");var h=0,g=()=>typeof window<`u`&&window.__VRT__?(h+=1,`vrt-id-${h}`):Math.random().toString(36).substring(2,11),_={string:[{label:`Equals`,value:`=`,key:`equal`},{label:`Does not equal`,value:`!=`,key:`not_equal`},{label:`Contains`,value:`contains`,key:`contains`},{label:`Starts with`,value:`starts_with`,key:`starts_with`},{label:`Ends with`,value:`ends_with`,key:`ends_with`},{label:`Is null`,value:`is_null`,key:`is_null`},{label:`Is not null`,value:`is_not_null`,key:`is_not_null`}],number:[{label:`Equals`,value:`=`,key:`equal`},{label:`Does not equal`,value:`!=`,key:`not_equal`},{label:`Greater than`,value:`>`,key:`greater_than`},{label:`Less than`,value:`<`,key:`less_than`},{label:`Greater than or equal`,value:`>=`,key:`greater_than_or_equal`},{label:`Less than or equal`,value:`<=`,key:`less_than_or_equal`},{label:`Is null`,value:`is_null`,key:`is_null`},{label:`Is not null`,value:`is_not_null`,key:`is_not_null`}],date:[{label:`Equals`,value:`=`,key:`equal`},{label:`Does not equal`,value:`!=`,key:`not_equal`},{label:`After`,value:`>`,key:`after`},{label:`Before`,value:`<`,key:`before`},{label:`After or on`,value:`>=`,key:`after_or_on`},{label:`Before or on`,value:`<=`,key:`before_or_on`},{label:`Is null`,value:`is_null`,key:`is_null`},{label:`Is not null`,value:`is_not_null`,key:`is_not_null`}],boolean:[{label:`Equals`,value:`=`,key:`equal`},{label:`Does not equal`,value:`!=`,key:`not_equal`},{label:`Is null`,value:`is_null`,key:`is_null`},{label:`Is not null`,value:`is_not_null`,key:`is_not_null`}]},v=({fields:e,query:h,defaultQuery:v,onChange:y,maxDepth:b=3,className:x,id:S,labels:C={}})=>{let{t:w}=t.useWimTranslation(`components`),{ruleAdded:T=w(`query.builder.rule_added`),groupAdded:E=w(`query.builder.group_added`),removed:D=w(`query.builder.removed`),ruleAriaLabel:O=w(`query.builder.rule`),fieldAriaLabel:k=w(`query.builder.field`),operatorAriaLabel:A=w(`query.builder.operator`),valueAriaLabel:j=w(`query.builder.value`),trueLabel:M=w(`query.builder.true`),falseLabel:N=w(`query.builder.false`),removeRuleAriaLabel:P=w(`query.builder.remove_rule`),removeGroupAriaLabel:F=w(`query.builder.remove_group`),addRuleLabel:I=w(`query.builder.add_rule`),addGroupLabel:L=w(`query.builder.add_group`),regionAriaLabel:R=w(`query.builder.region_label`),combinatorAriaLabel:z=w(`query.builder.combinator`),operators:B={}}=C,V=(0,f.useId)(),H=S||`wim-qb-${V}`,U=(0,f.useRef)(null),[W,G]=(0,f.useState)(v||{id:g(),combinator:`and`,not:!1,rules:[]}),K=h===void 0?W:h,q=(0,f.useCallback)(e=>{U.current&&(U.current.textContent=``,setTimeout(()=>{U.current&&(U.current.textContent=e)},50))},[]),J=(0,f.useCallback)(e=>{h===void 0&&G(e),y?.(e)},[h,y]),Y=(e,t)=>{let n=r=>r.id===e?{...r,...t}:{...r,rules:r.rules.map(r=>r.id===e?{...r,...t}:`rules`in r?n(r):r)};J(n(K))},X=t=>{let n=e[0],r={id:g(),field:n?.name||``,operator:`=`,value:n?.type!==`boolean`&&``},i=e=>e.id===t?{...e,rules:[...e.rules,r]}:{...e,rules:e.rules.map(e=>`rules`in e?i(e):e)};J(i(K)),q(T)},Z=e=>{let t={id:g(),combinator:`and`,not:!1,rules:[]},n=r=>r.id===e?{...r,rules:[...r.rules,t]}:{...r,rules:r.rules.map(e=>`rules`in e?n(e):e)};J(n(K)),q(E)},Q=e=>{let t=n=>({...n,rules:n.rules.filter(t=>t.id!==e).map(e=>`rules`in e?t(e):e)});J(t(K)),q(D)},$=(e,t,r)=>{let i=`${e.combinator.toUpperCase()} group`;return(0,m.jsxs)(`div`,{role:`group`,"aria-label":i,className:(0,p.default)(u.default.group,t>0&&u.default.nested,r&&u.default.excluded),children:[(0,m.jsxs)(`div`,{className:u.default.groupHeader,children:[(0,m.jsxs)(`div`,{className:u.default.groupHeaderLeft,children:[(0,m.jsx)(o.SegmentedControl,{size:`md`,options:[{label:`AND`,value:`and`},{label:`OR`,value:`or`}],value:e.combinator,onChange:t=>Y(e.id,{combinator:t}),"aria-label":z,styles:{root:u.default.segmentedControl,item:u.default.segmentedControlItem,slider:u.default.segmentedControlSlider}}),(0,m.jsx)(c.Switch,{size:`md`,checked:e.not,onChange:t=>Y(e.id,{not:t.target.checked}),children:`NOT`})]}),t>0&&(0,m.jsx)(l.IconButton,{iconName:`TrashIcon`,"aria-label":F,variant:`ghost`,size:`md`,intent:`danger`,onClick:()=>Q(e.id),className:u.default.removeGroup})]}),(0,m.jsx)(`div`,{className:u.default.ruleList,children:e.rules.map(e=>`rules`in e?$(e,t+1,r):ee(e))}),(0,m.jsxs)(`div`,{className:u.default.groupActions,children:[(0,m.jsx)(n.Button,{size:`md`,variant:`ghost`,icon:`PlusIcon`,onClick:()=>X(e.id),children:I}),t<b&&(0,m.jsx)(n.Button,{size:`md`,variant:`ghost`,icon:`PlusIcon`,onClick:()=>Z(e.id),children:L})]})]},e.id)},ee=t=>{let n=e.find(e=>e.name===t.field)?.type||`string`,o=_[n].map(e=>({...e,label:B[e.key]||e.label})),c=n=>{let r=e.find(e=>e.name===n);Y(t.id,{field:n,operator:`=`,value:r?.type!==`boolean`&&``})};o.some(e=>e.value===t.operator)||d.warnUnknownOperator(t.operator,n,o.map(e=>e.value));let f=t.operator===`is_null`||t.operator===`is_not_null`;return(0,m.jsx)(`div`,{className:u.default.rule,role:`group`,"aria-label":O,children:(0,m.jsxs)(`div`,{className:u.default.ruleFields,children:[(0,m.jsx)(s.Select,{className:u.default.field,options:e.map(e=>({label:e.label,value:e.name})),value:t.field,onChange:c,"aria-label":k,fullWidth:!0,styles:{root:u.default.select,trigger:u.default.selectTrigger,inputBase:{root:u.default.inputBase}}}),(0,m.jsx)(s.Select,{className:u.default.operator,options:o.map(e=>({label:e.label,value:e.value})),value:t.operator,onChange:e=>Y(t.id,{operator:e}),"aria-label":A,fullWidth:!0,styles:{root:u.default.select,trigger:u.default.selectTrigger,inputBase:{root:u.default.inputBase}}}),!f&&(0,m.jsx)(`div`,{className:u.default.value,children:n===`number`?(0,m.jsx)(a.NumberInput,{value:typeof t.value==`boolean`?void 0:t.value??void 0,onChange:e=>Y(t.id,{value:e.target.value}),"aria-label":j}):n===`date`?(0,m.jsx)(i.DatePicker,{value:typeof t.value==`string`||typeof t.value==`number`?new Date(t.value):void 0,onChange:e=>Y(t.id,{value:e?e.toISOString():``}),"aria-label":j}):n===`boolean`?(0,m.jsx)(s.Select,{options:[{label:M,value:`true`},{label:N,value:`false`}],value:String(t.value),onChange:e=>Y(t.id,{value:e===`true`}),"aria-label":j,fullWidth:!0,styles:{root:u.default.select,trigger:u.default.selectTrigger,inputBase:{root:u.default.inputBase}}}):(0,m.jsx)(r.Input,{value:typeof t.value==`boolean`?void 0:t.value??void 0,onChange:e=>Y(t.id,{value:e.target.value}),"aria-label":j,styles:{root:u.default.inputBase}})}),(0,m.jsx)(l.IconButton,{iconName:`TrashIcon`,"aria-label":P,variant:`ghost`,size:`md`,intent:`danger`,onClick:()=>Q(t.id),className:u.default.removeRule})]})},t.id)};return(0,m.jsxs)(`div`,{id:H,role:`region`,"aria-label":R,className:(0,p.default)(`wim-query-builder`,u.default.root,x),children:[(0,m.jsx)(`div`,{ref:U,"aria-live":`polite`,"aria-atomic":`true`,className:u.default.srOnly}),$(K,0,!1)]})};exports.QueryBuilder=v;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../i18n/useWimTranslation.cjs"),n=require("../Button/Button.cjs"),r=require("../Input/Input.cjs"),i=require("../DatePicker/DatePicker.cjs"),a=require("../NumberInput/NumberInput.cjs"),o=require("../SegmentedControl/SegmentedControl.cjs"),s=require("../Select/Select.cjs"),c=require("../Switch/Switch.cjs"),l=require("../IconButton/IconButton.cjs"),u=require("./querybuilder.module.cjs"),d=require("./warn-unknown-operator.cjs");let f=require("react");f=e.__toESM(f,1);let p=require("classnames");p=e.__toESM(p,1);let m=require("react/jsx-runtime");var h=0,g=()=>typeof window<`u`&&window.__VRT__?(h+=1,`vrt-id-${h}`):Math.random().toString(36).substring(2,11),_={string:[{value:`=`,key:`equal`},{value:`!=`,key:`not_equal`},{value:`contains`,key:`contains`},{value:`starts_with`,key:`starts_with`},{value:`ends_with`,key:`ends_with`},{value:`is_null`,key:`is_null`},{value:`is_not_null`,key:`is_not_null`}],number:[{value:`=`,key:`equal`},{value:`!=`,key:`not_equal`},{value:`>`,key:`greater_than`},{value:`<`,key:`less_than`},{value:`>=`,key:`greater_than_or_equal`},{value:`<=`,key:`less_than_or_equal`},{value:`is_null`,key:`is_null`},{value:`is_not_null`,key:`is_not_null`}],date:[{value:`=`,key:`equal`},{value:`!=`,key:`not_equal`},{value:`>`,key:`after`},{value:`<`,key:`before`},{value:`>=`,key:`after_or_on`},{value:`<=`,key:`before_or_on`},{value:`is_null`,key:`is_null`},{value:`is_not_null`,key:`is_not_null`}],boolean:[{value:`=`,key:`equal`},{value:`!=`,key:`not_equal`},{value:`is_null`,key:`is_null`},{value:`is_not_null`,key:`is_not_null`}]},v=({fields:e,query:h,defaultQuery:v,onChange:y,maxDepth:b=3,className:x,id:S,labels:C={}})=>{let{t:w}=t.useWimTranslation(`components`),{ruleAdded:T=w(`query.builder.rule_added`),groupAdded:E=w(`query.builder.group_added`),removed:D=w(`query.builder.removed`),ruleAriaLabel:O=w(`query.builder.rule`),fieldAriaLabel:k=w(`query.builder.field`),operatorAriaLabel:A=w(`query.builder.operator`),valueAriaLabel:j=w(`query.builder.value`),trueLabel:M=w(`query.builder.true`),falseLabel:N=w(`query.builder.false`),removeRuleAriaLabel:P=w(`query.builder.remove_rule`),removeGroupAriaLabel:F=w(`query.builder.remove_group`),addRuleLabel:I=w(`query.builder.add_rule`),addGroupLabel:L=w(`query.builder.add_group`),regionAriaLabel:R=w(`query.builder.region_label`),combinatorAriaLabel:z=w(`query.builder.combinator`),operators:B={}}=C,V=(0,f.useId)(),H=S||`wim-qb-${V}`,U=(0,f.useRef)(null),[W,G]=(0,f.useState)(v||{id:g(),combinator:`and`,not:!1,rules:[]}),K=h===void 0?W:h,q=(0,f.useCallback)(e=>{U.current&&(U.current.textContent=``,setTimeout(()=>{U.current&&(U.current.textContent=e)},50))},[]),J=(0,f.useCallback)(e=>{h===void 0&&G(e),y?.(e)},[h,y]),Y=(e,t)=>{let n=r=>r.id===e?{...r,...t}:{...r,rules:r.rules.map(r=>r.id===e?{...r,...t}:`rules`in r?n(r):r)};J(n(K))},X=t=>{let n=e[0],r={id:g(),field:n?.name||``,operator:`=`,value:n?.type!==`boolean`&&``},i=e=>e.id===t?{...e,rules:[...e.rules,r]}:{...e,rules:e.rules.map(e=>`rules`in e?i(e):e)};J(i(K)),q(T)},Z=e=>{let t={id:g(),combinator:`and`,not:!1,rules:[]},n=r=>r.id===e?{...r,rules:[...r.rules,t]}:{...r,rules:r.rules.map(e=>`rules`in e?n(e):e)};J(n(K)),q(E)},Q=e=>{let t=n=>({...n,rules:n.rules.filter(t=>t.id!==e).map(e=>`rules`in e?t(e):e)});J(t(K)),q(D)},$=(e,t,r)=>{let i=`${e.combinator.toUpperCase()} group`;return(0,m.jsxs)(`div`,{role:`group`,"aria-label":i,className:(0,p.default)(u.default.group,t>0&&u.default.nested,r&&u.default.excluded),children:[(0,m.jsxs)(`div`,{className:u.default.groupHeader,children:[(0,m.jsxs)(`div`,{className:u.default.groupHeaderLeft,children:[(0,m.jsx)(o.SegmentedControl,{size:`md`,options:[{label:`AND`,value:`and`},{label:`OR`,value:`or`}],value:e.combinator,onChange:t=>Y(e.id,{combinator:t}),"aria-label":z,styles:{root:u.default.segmentedControl,item:u.default.segmentedControlItem,slider:u.default.segmentedControlSlider}}),(0,m.jsx)(c.Switch,{size:`md`,checked:e.not,onChange:t=>Y(e.id,{not:t.target.checked}),children:`NOT`})]}),t>0&&(0,m.jsx)(l.IconButton,{iconName:`TrashIcon`,"aria-label":F,variant:`ghost`,size:`md`,intent:`danger`,onClick:()=>Q(e.id),className:u.default.removeGroup})]}),(0,m.jsx)(`div`,{className:u.default.ruleList,children:e.rules.map(e=>`rules`in e?$(e,t+1,r):ee(e))}),(0,m.jsxs)(`div`,{className:u.default.groupActions,children:[(0,m.jsx)(n.Button,{size:`md`,variant:`ghost`,icon:`PlusIcon`,onClick:()=>X(e.id),children:I}),t<b&&(0,m.jsx)(n.Button,{size:`md`,variant:`ghost`,icon:`PlusIcon`,onClick:()=>Z(e.id),children:L})]})]},e.id)},ee=t=>{let n=e.find(e=>e.name===t.field)?.type||`string`,o=_[n].map(e=>({...e,label:B[e.key]||w(`query.builder.operators.${e.key}`)})),c=n=>{let r=e.find(e=>e.name===n);Y(t.id,{field:n,operator:`=`,value:r?.type!==`boolean`&&``})};o.some(e=>e.value===t.operator)||d.warnUnknownOperator(t.operator,n,o.map(e=>e.value));let f=t.operator===`is_null`||t.operator===`is_not_null`;return(0,m.jsx)(`div`,{className:u.default.rule,role:`group`,"aria-label":O,children:(0,m.jsxs)(`div`,{className:u.default.ruleFields,children:[(0,m.jsx)(s.Select,{className:u.default.field,options:e.map(e=>({label:e.label,value:e.name})),value:t.field,onChange:c,"aria-label":k,fullWidth:!0,styles:{root:u.default.select,trigger:u.default.selectTrigger,inputBase:{root:u.default.inputBase}}}),(0,m.jsx)(s.Select,{className:u.default.operator,options:o.map(e=>({label:e.label,value:e.value})),value:t.operator,onChange:e=>Y(t.id,{operator:e}),"aria-label":A,fullWidth:!0,styles:{root:u.default.select,trigger:u.default.selectTrigger,inputBase:{root:u.default.inputBase}}}),!f&&(0,m.jsx)(`div`,{className:u.default.value,children:n===`number`?(0,m.jsx)(a.NumberInput,{value:typeof t.value==`boolean`?void 0:t.value??void 0,onChange:e=>Y(t.id,{value:e.target.value}),"aria-label":j}):n===`date`?(0,m.jsx)(i.DatePicker,{value:typeof t.value==`string`||typeof t.value==`number`?new Date(t.value):void 0,onChange:e=>Y(t.id,{value:e?e.toISOString():``}),"aria-label":j}):n===`boolean`?(0,m.jsx)(s.Select,{options:[{label:M,value:`true`},{label:N,value:`false`}],value:String(t.value),onChange:e=>Y(t.id,{value:e===`true`}),"aria-label":j,fullWidth:!0,styles:{root:u.default.select,trigger:u.default.selectTrigger,inputBase:{root:u.default.inputBase}}}):(0,m.jsx)(r.Input,{value:typeof t.value==`boolean`?void 0:t.value??void 0,onChange:e=>Y(t.id,{value:e.target.value}),"aria-label":j,styles:{root:u.default.inputBase}})}),(0,m.jsx)(l.IconButton,{iconName:`TrashIcon`,"aria-label":P,variant:`ghost`,size:`md`,intent:`danger`,onClick:()=>Q(t.id),className:u.default.removeRule})]})},t.id)};return(0,m.jsxs)(`div`,{id:H,role:`region`,"aria-label":R,className:(0,p.default)(`wim-query-builder`,u.default.root,x),children:[(0,m.jsx)(`div`,{ref:U,"aria-live":`polite`,"aria-atomic":`true`,className:u.default.srOnly}),$(K,0,!1)]})};exports.QueryBuilder=v;
@@ -71,120 +71,93 @@ export interface QueryBuilderProps {
71
71
  }
72
72
  /**
73
73
  * 演算子の語彙。**利用者が `QueryRule.operator` に渡すのは `value`(記号)**で、
74
- * `key` は翻訳の引き当てにしか使わない。以前は `operator: string` だったため
74
+ * `key` は翻訳の引き当てにしか使わない(文言は `components:query.builder.operators.<key>`。en / ja / pt)。以前は `operator: string` だったため
75
75
  * `"greater_equal"` のような語を渡すと**空の Select が黙って描画された**(T124)。
76
76
  * 型はこの表から導くので、値を足せば型も追随する(T38 と同じ形)。
77
77
  */
78
78
  declare const DEFAULT_OPERATORS: {
79
79
  readonly string: readonly [{
80
- readonly label: "Equals";
81
80
  readonly value: "=";
82
81
  readonly key: "equal";
83
82
  }, {
84
- readonly label: "Does not equal";
85
83
  readonly value: "!=";
86
84
  readonly key: "not_equal";
87
85
  }, {
88
- readonly label: "Contains";
89
86
  readonly value: "contains";
90
87
  readonly key: "contains";
91
88
  }, {
92
- readonly label: "Starts with";
93
89
  readonly value: "starts_with";
94
90
  readonly key: "starts_with";
95
91
  }, {
96
- readonly label: "Ends with";
97
92
  readonly value: "ends_with";
98
93
  readonly key: "ends_with";
99
94
  }, {
100
- readonly label: "Is null";
101
95
  readonly value: "is_null";
102
96
  readonly key: "is_null";
103
97
  }, {
104
- readonly label: "Is not null";
105
98
  readonly value: "is_not_null";
106
99
  readonly key: "is_not_null";
107
100
  }];
108
101
  readonly number: readonly [{
109
- readonly label: "Equals";
110
102
  readonly value: "=";
111
103
  readonly key: "equal";
112
104
  }, {
113
- readonly label: "Does not equal";
114
105
  readonly value: "!=";
115
106
  readonly key: "not_equal";
116
107
  }, {
117
- readonly label: "Greater than";
118
108
  readonly value: ">";
119
109
  readonly key: "greater_than";
120
110
  }, {
121
- readonly label: "Less than";
122
111
  readonly value: "<";
123
112
  readonly key: "less_than";
124
113
  }, {
125
- readonly label: "Greater than or equal";
126
114
  readonly value: ">=";
127
115
  readonly key: "greater_than_or_equal";
128
116
  }, {
129
- readonly label: "Less than or equal";
130
117
  readonly value: "<=";
131
118
  readonly key: "less_than_or_equal";
132
119
  }, {
133
- readonly label: "Is null";
134
120
  readonly value: "is_null";
135
121
  readonly key: "is_null";
136
122
  }, {
137
- readonly label: "Is not null";
138
123
  readonly value: "is_not_null";
139
124
  readonly key: "is_not_null";
140
125
  }];
141
126
  readonly date: readonly [{
142
- readonly label: "Equals";
143
127
  readonly value: "=";
144
128
  readonly key: "equal";
145
129
  }, {
146
- readonly label: "Does not equal";
147
130
  readonly value: "!=";
148
131
  readonly key: "not_equal";
149
132
  }, {
150
- readonly label: "After";
151
133
  readonly value: ">";
152
134
  readonly key: "after";
153
135
  }, {
154
- readonly label: "Before";
155
136
  readonly value: "<";
156
137
  readonly key: "before";
157
138
  }, {
158
- readonly label: "After or on";
159
139
  readonly value: ">=";
160
140
  readonly key: "after_or_on";
161
141
  }, {
162
- readonly label: "Before or on";
163
142
  readonly value: "<=";
164
143
  readonly key: "before_or_on";
165
144
  }, {
166
- readonly label: "Is null";
167
145
  readonly value: "is_null";
168
146
  readonly key: "is_null";
169
147
  }, {
170
- readonly label: "Is not null";
171
148
  readonly value: "is_not_null";
172
149
  readonly key: "is_not_null";
173
150
  }];
174
151
  readonly boolean: readonly [{
175
- readonly label: "Equals";
176
152
  readonly value: "=";
177
153
  readonly key: "equal";
178
154
  }, {
179
- readonly label: "Does not equal";
180
155
  readonly value: "!=";
181
156
  readonly key: "not_equal";
182
157
  }, {
183
- readonly label: "Is null";
184
158
  readonly value: "is_null";
185
159
  readonly key: "is_null";
186
160
  }, {
187
- readonly label: "Is not null";
188
161
  readonly value: "is_not_null";
189
162
  readonly key: "is_not_null";
190
163
  }];