@semplice-studio/pa-design-system 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/dist/components/PaAccordion/PaAccordion.vue.d.ts +0 -1
  2. package/dist/components/PaAccordion/PaAccordion.vue.js +3 -5
  3. package/dist/components/PaAccordion/PaAccordion.vue.js.map +1 -1
  4. package/dist/components/PaAccordion/PaAccordion.vue2.js +24 -30
  5. package/dist/components/PaAccordion/PaAccordion.vue2.js.map +1 -1
  6. package/dist/components/PaBanner/PaBanner.vue.js +6 -6
  7. package/dist/components/PaBanner/PaBanner.vue2.js +26 -28
  8. package/dist/components/PaBanner/PaBanner.vue2.js.map +1 -1
  9. package/dist/components/PaCard/PaCard.vue.d.ts +17 -14
  10. package/dist/components/PaCard/PaCard.vue.js +2 -2
  11. package/dist/components/PaCard/PaCard.vue2.js +37 -42
  12. package/dist/components/PaCard/PaCard.vue2.js.map +1 -1
  13. package/dist/components/PaCheckbox/PaCheckbox.vue.d.ts +5 -6
  14. package/dist/components/PaCheckbox/PaCheckbox.vue.js +2 -4
  15. package/dist/components/PaCheckbox/PaCheckbox.vue.js.map +1 -1
  16. package/dist/components/PaCheckbox/PaCheckbox.vue2.js +20 -26
  17. package/dist/components/PaCheckbox/PaCheckbox.vue2.js.map +1 -1
  18. package/dist/components/PaCheckboxGroup/PaCheckboxGroup.vue.d.ts +5 -6
  19. package/dist/components/PaCheckboxGroup/PaCheckboxGroup.vue.js +2 -4
  20. package/dist/components/PaCheckboxGroup/PaCheckboxGroup.vue.js.map +1 -1
  21. package/dist/components/PaCheckboxGroup/PaCheckboxGroup.vue2.js +25 -31
  22. package/dist/components/PaCheckboxGroup/PaCheckboxGroup.vue2.js.map +1 -1
  23. package/dist/components/PaDatePicker/PaDatePicker.vue.d.ts +13 -26
  24. package/dist/components/PaDatePicker/PaDatePicker.vue.js +4 -6
  25. package/dist/components/PaDatePicker/PaDatePicker.vue.js.map +1 -1
  26. package/dist/components/PaDatePicker/PaDatePicker.vue2.js +52 -58
  27. package/dist/components/PaDatePicker/PaDatePicker.vue2.js.map +1 -1
  28. package/dist/components/PaDrawer/PaDrawer.vue.js +2 -2
  29. package/dist/components/PaDrawer/PaDrawer.vue2.js +37 -41
  30. package/dist/components/PaDrawer/PaDrawer.vue2.js.map +1 -1
  31. package/dist/components/PaFileUpload/PaFileUpload.vue.d.ts +0 -1
  32. package/dist/components/PaFileUpload/PaFileUpload.vue.js +3 -5
  33. package/dist/components/PaFileUpload/PaFileUpload.vue.js.map +1 -1
  34. package/dist/components/PaFileUpload/PaFileUpload.vue2.js +22 -28
  35. package/dist/components/PaFileUpload/PaFileUpload.vue2.js.map +1 -1
  36. package/dist/components/PaFooter/PaFooter.vue.js +1 -1
  37. package/dist/components/PaFooter/PaFooter.vue2.js +43 -48
  38. package/dist/components/PaFooter/PaFooter.vue2.js.map +1 -1
  39. package/dist/components/PaHeaderDesktop/PaHeaderDesktop.vue.js +1 -1
  40. package/dist/components/PaHeaderDesktop/PaHeaderDesktop.vue2.js +61 -66
  41. package/dist/components/PaHeaderDesktop/PaHeaderDesktop.vue2.js.map +1 -1
  42. package/dist/components/PaHeaderMobile/PaHeaderMobile.vue.js +2 -2
  43. package/dist/components/PaHeaderMobile/PaHeaderMobile.vue2.js +69 -74
  44. package/dist/components/PaHeaderMobile/PaHeaderMobile.vue2.js.map +1 -1
  45. package/dist/components/PaHero/PaHero.vue.d.ts +15 -12
  46. package/dist/components/PaHero/PaHero.vue.js +2 -2
  47. package/dist/components/PaHero/PaHero.vue2.js +36 -41
  48. package/dist/components/PaHero/PaHero.vue2.js.map +1 -1
  49. package/dist/components/PaInput/PaInput.vue.d.ts +15 -13
  50. package/dist/components/PaInput/PaInput.vue.js +4 -6
  51. package/dist/components/PaInput/PaInput.vue.js.map +1 -1
  52. package/dist/components/PaInput/PaInput.vue2.js +27 -33
  53. package/dist/components/PaInput/PaInput.vue2.js.map +1 -1
  54. package/dist/components/PaModal/PaModal.vue.d.ts +14 -11
  55. package/dist/components/PaModal/PaModal.vue.js +3 -3
  56. package/dist/components/PaModal/PaModal.vue2.js +41 -46
  57. package/dist/components/PaModal/PaModal.vue2.js.map +1 -1
  58. package/dist/components/PaMonthPicker/PaMonthPicker.vue.d.ts +13 -26
  59. package/dist/components/PaMonthPicker/PaMonthPicker.vue.js +2 -4
  60. package/dist/components/PaMonthPicker/PaMonthPicker.vue.js.map +1 -1
  61. package/dist/components/PaMonthPicker/PaMonthPicker.vue2.js +64 -70
  62. package/dist/components/PaMonthPicker/PaMonthPicker.vue2.js.map +1 -1
  63. package/dist/components/PaPagination/PaPagination.vue.js +2 -2
  64. package/dist/components/PaPagination/PaPagination.vue2.js +41 -46
  65. package/dist/components/PaPagination/PaPagination.vue2.js.map +1 -1
  66. package/dist/components/PaRadioGroup/PaRadioGroup.vue.d.ts +5 -6
  67. package/dist/components/PaRadioGroup/PaRadioGroup.vue.js +2 -4
  68. package/dist/components/PaRadioGroup/PaRadioGroup.vue.js.map +1 -1
  69. package/dist/components/PaRadioGroup/PaRadioGroup.vue2.js +22 -28
  70. package/dist/components/PaRadioGroup/PaRadioGroup.vue2.js.map +1 -1
  71. package/dist/components/PaRangePicker/PaRangePicker.vue.d.ts +0 -1
  72. package/dist/components/PaRangePicker/PaRangePicker.vue.js +4 -6
  73. package/dist/components/PaRangePicker/PaRangePicker.vue.js.map +1 -1
  74. package/dist/components/PaRangePicker/PaRangePicker.vue2.js +75 -81
  75. package/dist/components/PaRangePicker/PaRangePicker.vue2.js.map +1 -1
  76. package/dist/components/PaSearchBar/PaSearchBar.vue.d.ts +0 -1
  77. package/dist/components/PaSearchBar/PaSearchBar.vue.js +3 -5
  78. package/dist/components/PaSearchBar/PaSearchBar.vue.js.map +1 -1
  79. package/dist/components/PaSearchBar/PaSearchBar.vue2.js +55 -61
  80. package/dist/components/PaSearchBar/PaSearchBar.vue2.js.map +1 -1
  81. package/dist/components/PaSelect/PaSelect.vue.d.ts +5 -6
  82. package/dist/components/PaSelect/PaSelect.vue.js +4 -6
  83. package/dist/components/PaSelect/PaSelect.vue.js.map +1 -1
  84. package/dist/components/PaSelect/PaSelect.vue2.js +25 -31
  85. package/dist/components/PaSelect/PaSelect.vue2.js.map +1 -1
  86. package/dist/components/PaTabs/PaTabs.vue.js +1 -1
  87. package/dist/components/PaTabs/PaTabs.vue2.js +17 -19
  88. package/dist/components/PaTabs/PaTabs.vue2.js.map +1 -1
  89. package/dist/components/PaTextarea/PaTextarea.vue.d.ts +5 -6
  90. package/dist/components/PaTextarea/PaTextarea.vue.js +4 -6
  91. package/dist/components/PaTextarea/PaTextarea.vue.js.map +1 -1
  92. package/dist/components/PaTextarea/PaTextarea.vue2.js +16 -22
  93. package/dist/components/PaTextarea/PaTextarea.vue2.js.map +1 -1
  94. package/dist/components/PaTimePicker/PaTimePicker.vue.d.ts +0 -1
  95. package/dist/components/PaTimePicker/PaTimePicker.vue.js +2 -4
  96. package/dist/components/PaTimePicker/PaTimePicker.vue.js.map +1 -1
  97. package/dist/components/PaTimePicker/PaTimePicker.vue2.js +44 -50
  98. package/dist/components/PaTimePicker/PaTimePicker.vue2.js.map +1 -1
  99. package/dist/components/PaTitleBar/PaTitleBar.vue.d.ts +12 -9
  100. package/dist/components/PaTitleBar/PaTitleBar.vue.js +2 -2
  101. package/dist/components/PaTitleBar/PaTitleBar.vue2.js +34 -39
  102. package/dist/components/PaTitleBar/PaTitleBar.vue2.js.map +1 -1
  103. package/dist/components/PaToggle/PaToggle.vue.d.ts +0 -1
  104. package/dist/components/PaToggle/PaToggle.vue.js +2 -4
  105. package/dist/components/PaToggle/PaToggle.vue.js.map +1 -1
  106. package/dist/components/PaToggle/PaToggle.vue2.js +20 -26
  107. package/dist/components/PaToggle/PaToggle.vue2.js.map +1 -1
  108. package/dist/components/PaYearPicker/PaYearPicker.vue.d.ts +13 -26
  109. package/dist/components/PaYearPicker/PaYearPicker.vue.js +4 -6
  110. package/dist/components/PaYearPicker/PaYearPicker.vue.js.map +1 -1
  111. package/dist/components/PaYearPicker/PaYearPicker.vue2.js +70 -76
  112. package/dist/components/PaYearPicker/PaYearPicker.vue2.js.map +1 -1
  113. package/dist/style.css +1 -1
  114. package/package.json +3 -3
@@ -1,19 +1,14 @@
1
- import { defineComponent as G, useModel as H, ref as M, computed as n, watch as J, onBeforeUnmount as Q, openBlock as u, createElementBlock as c, normalizeClass as p, createTextVNode as X, toDisplayString as C, createCommentVNode as v, withKeys as S, withModifiers as q, createElementVNode as g, renderSlot as Z, createVNode as y, withDirectives as ee, unref as ae, withCtx as L, vShow as te, mergeModels as ie } from "vue";
2
- import { DatePicker as ne } from "v-calendar";
1
+ import { defineComponent as H, useModel as J, ref as M, useId as N, computed as n, watch as Q, onBeforeUnmount as X, openBlock as u, createElementBlock as c, normalizeClass as f, createTextVNode as Z, toDisplayString as C, createCommentVNode as v, withKeys as q, withModifiers as E, createElementVNode as g, renderSlot as ee, createVNode as y, withDirectives as ae, unref as te, withCtx as P, vShow as ie, mergeModels as ne } from "vue";
2
+ import { DatePicker as re } from "v-calendar";
3
3
  /* empty css */
4
- import E from "../PaIcon/PaIcon.vue.js";
5
- const re = ["for"], le = {
4
+ import S from "../PaIcon/PaIcon.vue.js";
5
+ const le = ["for"], de = {
6
6
  key: 0,
7
7
  class: "pa-date-picker__required",
8
8
  "aria-hidden": "true"
9
- }, de = ["id", "disabled", "aria-expanded", "aria-required", "aria-invalid", "aria-readonly", "aria-describedby", "onKeydown"], oe = { class: "pa-date-picker__value" }, se = ["name", "value", "disabled", "readonly", "required"], ue = ["onClick"], ce = ["onClick"], ve = ["id"];
10
- let me = 0;
11
- function fe() {
12
- return `pa-date-picker-${++me}`;
13
- }
14
- const be = /* @__PURE__ */ G({
9
+ }, oe = ["id", "disabled", "aria-expanded", "aria-required", "aria-invalid", "aria-readonly", "aria-describedby", "onKeydown"], se = { class: "pa-date-picker__value" }, ue = ["name", "value", "disabled", "readonly", "required"], ce = ["onClick"], ve = ["onClick"], me = ["id"], ke = /* @__PURE__ */ H({
15
10
  __name: "PaDatePicker",
16
- props: /* @__PURE__ */ ie({
11
+ props: /* @__PURE__ */ ne({
17
12
  display: { default: "popover" },
18
13
  placeholder: { default: "gg/mm/aaaa" },
19
14
  label: {},
@@ -34,17 +29,17 @@ const be = /* @__PURE__ */ G({
34
29
  }),
35
30
  emits: ["update:modelValue"],
36
31
  setup(t) {
37
- const a = t, d = H(t, "modelValue"), k = M(null), _ = M(null), r = M(!1), B = `pa-date-picker-pop-${Math.random().toString(36).slice(2, 9)}`, N = fe(), b = n(() => a.id ?? N), F = n(() => `${b.value}-msg`), Y = new Intl.DateTimeFormat("it-IT", {
32
+ const a = t, d = J(t, "modelValue"), k = M(null), _ = M(null), r = M(!1), B = `pa-date-picker-pop-${N()}`, Y = `pa-date-picker-${N()}`, b = n(() => a.id ?? Y), F = n(() => `${b.value}-msg`), z = new Intl.DateTimeFormat("it-IT", {
38
33
  day: "2-digit",
39
34
  month: "2-digit",
40
35
  year: "numeric"
41
- }), z = n(
42
- () => d.value instanceof Date ? Y.format(d.value) : a.placeholder
43
- ), K = n(() => !(d.value instanceof Date)), s = n(() => !!a.error), V = n(() => a.valid && !s.value), R = n(
36
+ }), K = n(
37
+ () => d.value instanceof Date ? z.format(d.value) : a.placeholder
38
+ ), R = n(() => !(d.value instanceof Date)), s = n(() => !!a.error), V = n(() => a.valid && !s.value), A = n(
44
39
  () => typeof a.error == "string" && a.error.length > 0 ? a.error : null
45
- ), A = n(
40
+ ), W = n(
46
41
  () => !s.value && a.helperText ? a.helperText : null
47
- ), h = n(() => R.value ?? A.value), W = n(() => {
42
+ ), h = n(() => A.value ?? W.value), O = n(() => {
48
43
  const e = d.value;
49
44
  if (!(e instanceof Date) || isNaN(e.getTime())) return "";
50
45
  const i = e.getFullYear(), o = String(e.getMonth() + 1).padStart(2, "0"), T = String(e.getDate()).padStart(2, "0");
@@ -56,17 +51,17 @@ const be = /* @__PURE__ */ G({
56
51
  function $(e, i) {
57
52
  return new Date(e.getFullYear(), e.getMonth(), e.getDate() + i, 0, 0, 0, 0);
58
53
  }
59
- function O(e) {
54
+ function U(e) {
60
55
  const i = l(e);
61
56
  return a.min && i.getTime() < l(a.min).getTime() || a.max && i.getTime() > l(a.max).getTime() ? !0 : a.disabledDates ? a.disabledDates(i) === !0 : !1;
62
57
  }
63
- const U = n(() => {
58
+ const j = n(() => {
64
59
  const e = [];
65
60
  if (a.min && e.push({ start: null, end: $(l(a.min), -1) }), a.max && e.push({ start: $(l(a.max), 1), end: null }), a.disabledDates) {
66
- const i = d.value instanceof Date ? d.value.getFullYear() : (/* @__PURE__ */ new Date()).getFullYear(), o = a.min ? l(a.min) : new Date(i - 5, 0, 1, 0, 0, 0, 0), T = a.max ? l(a.max) : new Date(i + 5, 11, 31, 0, 0, 0, 0), f = new Date(o.getTime());
67
- for (; f.getTime() <= T.getTime(); ) {
68
- const P = l(f);
69
- a.disabledDates(P) && e.push(P), f.setDate(f.getDate() + 1);
61
+ const i = d.value instanceof Date ? d.value.getFullYear() : (/* @__PURE__ */ new Date()).getFullYear(), o = a.min ? l(a.min) : new Date(i - 5, 0, 1, 0, 0, 0, 0), T = a.max ? l(a.max) : new Date(i + 5, 11, 31, 0, 0, 0, 0), p = new Date(o.getTime());
62
+ for (; p.getTime() <= T.getTime(); ) {
63
+ const L = l(p);
64
+ a.disabledDates(L) && e.push(L), p.setDate(p.getDate() + 1);
70
65
  }
71
66
  }
72
67
  return e;
@@ -81,10 +76,10 @@ const be = /* @__PURE__ */ G({
81
76
  function w() {
82
77
  a.disabled || a.readonly || (r.value ? m() : I());
83
78
  }
84
- function j(e) {
79
+ function G(e) {
85
80
  if (a.readonly) return;
86
81
  const i = l(e.date);
87
- O(i) || (d.value = i, a.display === "popover" && m());
82
+ U(i) || (d.value = i, a.display === "popover" && m());
88
83
  }
89
84
  function D(e) {
90
85
  k.value && (k.value.contains(e.target) || m(!1));
@@ -92,14 +87,14 @@ const be = /* @__PURE__ */ G({
92
87
  function x(e) {
93
88
  e.key === "Escape" && (e.preventDefault(), m());
94
89
  }
95
- return J(r, (e) => {
90
+ return Q(r, (e) => {
96
91
  e ? (document.addEventListener("mousedown", D), window.addEventListener("keydown", x)) : (document.removeEventListener("mousedown", D), window.removeEventListener("keydown", x));
97
- }), Q(() => {
92
+ }), X(() => {
98
93
  document.removeEventListener("mousedown", D), window.removeEventListener("keydown", x);
99
94
  }), (e, i) => (u(), c("div", {
100
95
  ref_key: "rootRef",
101
96
  ref: k,
102
- class: p([
97
+ class: f([
103
98
  "pa-date-picker",
104
99
  `pa-date-picker--${t.display}`,
105
100
  {
@@ -116,19 +111,19 @@ const be = /* @__PURE__ */ G({
116
111
  for: b.value,
117
112
  class: "pa-date-picker__label"
118
113
  }, [
119
- X(C(t.label), 1),
120
- t.required ? (u(), c("span", le, "*")) : v("", !0)
121
- ], 8, re)) : v("", !0),
114
+ Z(C(t.label), 1),
115
+ t.required ? (u(), c("span", de, "*")) : v("", !0)
116
+ ], 8, le)) : v("", !0),
122
117
  t.display === "popover" ? (u(), c("button", {
123
118
  key: 1,
124
119
  id: b.value,
125
120
  ref_key: "triggerRef",
126
121
  ref: _,
127
122
  type: "button",
128
- class: p([
123
+ class: f([
129
124
  "pa-date-picker__trigger",
130
125
  {
131
- "pa-date-picker__trigger--placeholder": K.value,
126
+ "pa-date-picker__trigger--placeholder": R.value,
132
127
  "pa-date-picker__trigger--disabled": t.disabled,
133
128
  "pa-date-picker__trigger--readonly": t.readonly && !t.disabled,
134
129
  "pa-date-picker__trigger--error": s.value && !t.disabled,
@@ -145,85 +140,84 @@ const be = /* @__PURE__ */ G({
145
140
  "aria-describedby": h.value ? F.value : void 0,
146
141
  onClick: w,
147
142
  onKeydown: [
148
- S(q(w, ["prevent"]), ["enter"]),
149
- S(q(w, ["prevent"]), ["space"]),
150
- S(q(I, ["prevent"]), ["down"])
143
+ q(E(w, ["prevent"]), ["enter"]),
144
+ q(E(w, ["prevent"]), ["space"]),
145
+ q(E(I, ["prevent"]), ["down"])
151
146
  ]
152
147
  }, [
153
- g("span", oe, C(z.value), 1),
154
- Z(e.$slots, "suffix", {}, () => [
155
- y(E, {
148
+ g("span", se, C(K.value), 1),
149
+ ee(e.$slots, "suffix", {}, () => [
150
+ y(S, {
156
151
  name: "calendar-blank",
157
152
  size: "md"
158
153
  })
159
154
  ], !0)
160
- ], 42, de)) : v("", !0),
155
+ ], 42, oe)) : v("", !0),
161
156
  t.name ? (u(), c("input", {
162
157
  key: 2,
163
158
  type: "hidden",
164
159
  name: t.name,
165
- value: W.value,
160
+ value: O.value,
166
161
  disabled: t.disabled,
167
162
  readonly: t.readonly,
168
163
  required: t.required
169
- }, null, 8, se)) : v("", !0),
170
- ee(g("div", {
164
+ }, null, 8, ue)) : v("", !0),
165
+ ae(g("div", {
171
166
  id: B,
172
- class: p([
167
+ class: f([
173
168
  "pa-date-picker__popover",
174
169
  { "pa-date-picker__popover--inline": t.display === "inline" }
175
170
  ]),
176
171
  role: "dialog",
177
172
  "aria-modal": "false"
178
173
  }, [
179
- y(ae(ne), {
174
+ y(te(re), {
180
175
  "model-value": d.value,
181
176
  locale: { id: "it-IT", firstDayOfWeek: 2 },
182
177
  "is-required": !1,
183
- "disabled-dates": U.value,
184
- onDayclick: j
178
+ "disabled-dates": j.value,
179
+ onDayclick: G
185
180
  }, {
186
- "nav-prev-button": L(({ click: o }) => [
181
+ "nav-prev-button": P(({ click: o }) => [
187
182
  g("button", {
188
183
  type: "button",
189
184
  class: "pa-date-picker__nav-arrow",
190
185
  "aria-label": "Mese precedente",
191
186
  onClick: o
192
187
  }, [
193
- y(E, {
188
+ y(S, {
194
189
  name: "caret-left",
195
190
  size: "sm"
196
191
  })
197
- ], 8, ue)
192
+ ], 8, ce)
198
193
  ]),
199
- "nav-next-button": L(({ click: o }) => [
194
+ "nav-next-button": P(({ click: o }) => [
200
195
  g("button", {
201
196
  type: "button",
202
197
  class: "pa-date-picker__nav-arrow",
203
198
  "aria-label": "Mese successivo",
204
199
  onClick: o
205
200
  }, [
206
- y(E, {
201
+ y(S, {
207
202
  name: "caret-right",
208
203
  size: "sm"
209
204
  })
210
- ], 8, ce)
205
+ ], 8, ve)
211
206
  ]),
212
207
  _: 1
213
208
  }, 8, ["model-value", "disabled-dates"])
214
209
  ], 2), [
215
- [te, t.display === "inline" || r.value]
210
+ [ie, t.display === "inline" || r.value]
216
211
  ]),
217
212
  h.value ? (u(), c("div", {
218
213
  key: 3,
219
214
  id: F.value,
220
- class: p(["pa-date-picker__message", { "pa-date-picker__message--error": s.value }])
221
- }, C(h.value), 11, ve)) : v("", !0)
215
+ class: f(["pa-date-picker__message", { "pa-date-picker__message--error": s.value }])
216
+ }, C(h.value), 11, me)) : v("", !0)
222
217
  ], 2));
223
218
  }
224
219
  });
225
220
  export {
226
- be as default,
227
- fe as nextPaDatePickerId
221
+ ke as default
228
222
  };
229
223
  //# sourceMappingURL=PaDatePicker.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PaDatePicker.vue2.js","sources":["../../../src/components/PaDatePicker/PaDatePicker.vue"],"sourcesContent":["<script lang=\"ts\">\nlet uid = 0\nexport function nextPaDatePickerId() {\n return `pa-date-picker-${++uid}`\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, ref, watch } from 'vue'\nimport { DatePicker as VDatePicker } from 'v-calendar'\nimport 'v-calendar/style.css'\nimport PaIcon from '../PaIcon/PaIcon.vue'\n\nconst props = withDefaults(\n defineProps<{\n display?: 'popover' | 'inline'\n placeholder?: string\n label?: string\n required?: boolean\n helperText?: string\n error?: string | boolean\n valid?: boolean\n disabled?: boolean\n readonly?: boolean\n id?: string\n name?: string\n min?: Date | null\n max?: Date | null\n disabledDates?: (date: Date) => boolean\n }>(),\n {\n display: 'popover',\n placeholder: 'gg/mm/aaaa',\n required: false,\n error: false,\n valid: false,\n disabled: false,\n readonly: false,\n min: null,\n max: null,\n disabledDates: undefined,\n },\n)\n\nconst model = defineModel<Date | null>({ default: null })\n\nconst rootRef = ref<HTMLElement | null>(null)\nconst triggerRef = ref<HTMLButtonElement | null>(null)\nconst open = ref(false)\nconst popoverId = `pa-date-picker-pop-${Math.random().toString(36).slice(2, 9)}`\nconst generatedId = nextPaDatePickerId()\nconst triggerId = computed(() => props.id ?? generatedId)\nconst messageId = computed(() => `${triggerId.value}-msg`)\n\nconst dateFormatter = new Intl.DateTimeFormat('it-IT', {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n})\n\nconst displayValue = computed(() =>\n model.value instanceof Date ? dateFormatter.format(model.value) : props.placeholder,\n)\n\nconst placeholderShown = computed(() => !(model.value instanceof Date))\n\nconst errorActive = computed(() => Boolean(props.error))\nconst validActive = computed(() => props.valid && !errorActive.value)\nconst errorMessage = computed(() =>\n typeof props.error === 'string' && props.error.length > 0 ? props.error : null,\n)\nconst helperMessage = computed(() =>\n !errorActive.value && props.helperText ? props.helperText : null,\n)\nconst message = computed(() => errorMessage.value ?? helperMessage.value)\n\n// Built from LOCAL components — NEVER `.toISOString().slice(0, 10)`, which\n// returns UTC and lands on the previous day in any UTC-positive timezone.\nconst serialized = computed(() => {\n const v = model.value\n if (!(v instanceof Date) || isNaN(v.getTime())) return ''\n const y = v.getFullYear()\n const m = String(v.getMonth() + 1).padStart(2, '0')\n const d = String(v.getDate()).padStart(2, '0')\n return `${y}-${m}-${d}`\n})\n\nfunction localMidnight(d: Date): Date {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0, 0, 0)\n}\nfunction addDays(d: Date, n: number): Date {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate() + n, 0, 0, 0, 0)\n}\n\nfunction isDisabledDate(d: Date): boolean {\n const m = localMidnight(d)\n if (props.min && m.getTime() < localMidnight(props.min).getTime()) return true\n if (props.max && m.getTime() > localMidnight(props.max).getTime()) return true\n return props.disabledDates ? props.disabledDates(m) === true : false\n}\n\n// V-Calendar's `disabled-dates` accepts only Date / range entries (no\n// functions). To keep a single source of truth for visual disable + native\n// keyboard skip, we enumerate predicate-true days within a bounded window\n// (min/max if set, else ±5y around the model's anchor year) and push them as\n// individual Date entries alongside the min/max ranges.\nconst disabledDatesForVCalendar = computed(() => {\n const list: unknown[] = []\n if (props.min) list.push({ start: null, end: addDays(localMidnight(props.min), -1) })\n if (props.max) list.push({ start: addDays(localMidnight(props.max), 1), end: null })\n if (props.disabledDates) {\n const anchorYear =\n model.value instanceof Date ? model.value.getFullYear() : new Date().getFullYear()\n const winStart = props.min\n ? localMidnight(props.min)\n : new Date(anchorYear - 5, 0, 1, 0, 0, 0, 0)\n const winEnd = props.max\n ? localMidnight(props.max)\n : new Date(anchorYear + 5, 11, 31, 0, 0, 0, 0)\n const cursor = new Date(winStart.getTime())\n while (cursor.getTime() <= winEnd.getTime()) {\n const day = localMidnight(cursor)\n if (props.disabledDates(day)) list.push(day)\n cursor.setDate(cursor.getDate() + 1)\n }\n }\n return list\n})\n\nfunction openPopover() {\n if (open.value || props.disabled || props.readonly) return\n open.value = true\n}\n\nfunction closePopover(returnFocus = true) {\n if (!open.value) return\n open.value = false\n if (returnFocus) triggerRef.value?.focus()\n}\n\nfunction togglePopover() {\n if (props.disabled || props.readonly) return\n open.value ? closePopover() : openPopover()\n}\n\n// The ONLY writer to `model`. V-Calendar receives :model-value one-way and\n// never v-models back into us — the reactive feedback loop is what crashed\n// the previous v1.32 attempt.\n//\n// Normalize to local midnight: V-Calendar's day.date may carry a non-midnight\n// wall-clock time that, once serialized via `.toISOString()`, lands on the\n// previous day in any UTC-positive timezone. Storing local midnight keeps\n// `getFullYear / getMonth / getDate` and any locale-aware formatter aligned.\nfunction onDayClick(day: { date: Date }) {\n if (props.readonly) return\n const picked = localMidnight(day.date)\n if (isDisabledDate(picked)) return\n model.value = picked\n if (props.display === 'popover') closePopover()\n}\n\nfunction onDocumentMousedown(event: MouseEvent) {\n if (!rootRef.value) return\n if (!rootRef.value.contains(event.target as Node)) closePopover(false)\n}\n\nfunction onWindowKeydown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n event.preventDefault()\n closePopover()\n }\n}\n\nwatch(open, (isOpen) => {\n if (isOpen) {\n document.addEventListener('mousedown', onDocumentMousedown)\n window.addEventListener('keydown', onWindowKeydown)\n } else {\n document.removeEventListener('mousedown', onDocumentMousedown)\n window.removeEventListener('keydown', onWindowKeydown)\n }\n})\n\nonBeforeUnmount(() => {\n document.removeEventListener('mousedown', onDocumentMousedown)\n window.removeEventListener('keydown', onWindowKeydown)\n})\n</script>\n\n<template>\n <div\n ref=\"rootRef\"\n :class=\"[\n 'pa-date-picker',\n `pa-date-picker--${display}`,\n {\n 'pa-date-picker--open': open,\n 'pa-date-picker--disabled': disabled,\n 'pa-date-picker--readonly': readonly,\n 'pa-date-picker--error': errorActive,\n 'pa-date-picker--valid': validActive,\n },\n ]\"\n >\n <label v-if=\"label\" :for=\"triggerId\" class=\"pa-date-picker__label\">\n {{ label }}<span v-if=\"required\" class=\"pa-date-picker__required\" aria-hidden=\"true\">*</span>\n </label>\n\n <button\n v-if=\"display === 'popover'\"\n :id=\"triggerId\"\n ref=\"triggerRef\"\n type=\"button\"\n :class=\"[\n 'pa-date-picker__trigger',\n {\n 'pa-date-picker__trigger--placeholder': placeholderShown,\n 'pa-date-picker__trigger--disabled': disabled,\n 'pa-date-picker__trigger--readonly': readonly && !disabled,\n 'pa-date-picker__trigger--error': errorActive && !disabled,\n 'pa-date-picker__trigger--valid': validActive && !disabled,\n },\n ]\"\n :disabled=\"disabled\"\n :aria-expanded=\"open\"\n aria-haspopup=\"dialog\"\n :aria-controls=\"popoverId\"\n :aria-required=\"required || undefined\"\n :aria-invalid=\"errorActive || undefined\"\n :aria-readonly=\"readonly || undefined\"\n :aria-describedby=\"message ? messageId : undefined\"\n @click=\"togglePopover\"\n @keydown.enter.prevent=\"togglePopover\"\n @keydown.space.prevent=\"togglePopover\"\n @keydown.down.prevent=\"openPopover\"\n >\n <span class=\"pa-date-picker__value\">{{ displayValue }}</span>\n <slot name=\"suffix\">\n <PaIcon name=\"calendar-blank\" size=\"md\" />\n </slot>\n </button>\n\n <input\n v-if=\"name\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"serialized\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :required=\"required\"\n />\n\n <div\n v-show=\"display === 'inline' || open\"\n :id=\"popoverId\"\n :class=\"[\n 'pa-date-picker__popover',\n { 'pa-date-picker__popover--inline': display === 'inline' },\n ]\"\n role=\"dialog\"\n aria-modal=\"false\"\n >\n <VDatePicker\n :model-value=\"model\"\n :locale=\"{ id: 'it-IT', firstDayOfWeek: 2 }\"\n :is-required=\"false\"\n :disabled-dates=\"disabledDatesForVCalendar\"\n @dayclick=\"onDayClick\"\n >\n <template #nav-prev-button=\"{ click }\">\n <button\n type=\"button\"\n class=\"pa-date-picker__nav-arrow\"\n aria-label=\"Mese precedente\"\n @click=\"click\"\n >\n <PaIcon name=\"caret-left\" size=\"sm\" />\n </button>\n </template>\n <template #nav-next-button=\"{ click }\">\n <button\n type=\"button\"\n class=\"pa-date-picker__nav-arrow\"\n aria-label=\"Mese successivo\"\n @click=\"click\"\n >\n <PaIcon name=\"caret-right\" size=\"sm\" />\n </button>\n </template>\n </VDatePicker>\n </div>\n\n <div\n v-if=\"message\"\n :id=\"messageId\"\n :class=\"['pa-date-picker__message', { 'pa-date-picker__message--error': errorActive }]\"\n >\n {{ message }}\n </div>\n </div>\n</template>\n\n<style scoped>\n.pa-date-picker {\n position: relative;\n display: inline-flex;\n flex-direction: column;\n gap: var(--pa-space-2xs, 4px);\n font-family: var(--pa-font-family-sans, 'Inter', sans-serif);\n}\n\n.pa-date-picker__label {\n font: 600 14px/20px 'Inter', sans-serif;\n color: var(--pa-color-text-dark-blue, #00173d);\n}\n.pa-date-picker__required {\n margin-left: 2px;\n color: var(--pa-color-error, #de2049);\n}\n\n.pa-date-picker__trigger {\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n width: 100%;\n min-width: 240px;\n padding: 12px 16px;\n background: #ffffff;\n border: 1px solid var(--pa-color-neutral-gray, #454d56);\n border-radius: 4px;\n font: 400 16px/20px 'Inter', sans-serif;\n color: var(--pa-color-neutral-gray, #454d56);\n cursor: pointer;\n text-align: left;\n}\n.pa-date-picker__trigger:hover { border-color: var(--pa-color-primary, #0071ff); }\n.pa-date-picker__trigger:focus-visible {\n outline: 2px solid var(--pa-color-primary-focus-border, #0065d1);\n outline-offset: 2px;\n}\n.pa-date-picker__trigger--placeholder .pa-date-picker__value {\n color: var(--pa-color-text-disabled, #5b6571);\n}\n.pa-date-picker__trigger--error {\n border-color: var(--pa-color-error, #de2049);\n}\n.pa-date-picker__trigger--error:hover {\n border-color: var(--pa-color-error, #de2049);\n}\n.pa-date-picker__trigger--valid {\n border-color: var(--pa-color-success, #008069);\n}\n.pa-date-picker__trigger--valid:hover {\n border-color: var(--pa-color-success, #008069);\n}\n.pa-date-picker__trigger--disabled,\n.pa-date-picker__trigger[disabled] {\n background: var(--pa-color-bg-disabled-gray, #e7e8e3);\n color: var(--pa-color-text-disabled, #5b6571);\n border-color: var(--pa-color-neutral-gray, #454d56);\n cursor: not-allowed;\n}\n.pa-date-picker__trigger--disabled:hover,\n.pa-date-picker__trigger[disabled]:hover {\n border-color: var(--pa-color-neutral-gray, #454d56);\n}\n.pa-date-picker__trigger--readonly:hover {\n border-color: var(--pa-color-neutral-gray, #454d56);\n}\n.pa-date-picker__value {\n flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;\n}\n\n.pa-date-picker__message {\n font: 400 14px/20px 'Inter', sans-serif;\n color: var(--pa-color-neutral-gray, #454d56);\n}\n.pa-date-picker__message--error {\n color: var(--pa-color-error, #de2049);\n}\n\n.pa-date-picker__popover {\n position: absolute;\n top: calc(100% + 8px);\n left: 0;\n z-index: 900; min-width: 280px; padding: 24px;\n background: #ffffff; border-radius: 8px;\n box-shadow: var(--pa-shadow-elevation-02, 0 0 24px #e3e5e8);\n}\n.pa-date-picker__popover--inline {\n position: static; top: auto; left: auto; display: inline-block;\n}\n/* Anchor the absolute popover under the trigger (not under the label). */\n.pa-date-picker:has(.pa-date-picker__label) .pa-date-picker__popover:not(.pa-date-picker__popover--inline) {\n top: auto;\n}\n\n.pa-date-picker :deep(.pa-date-picker__nav-arrow) {\n display: inline-flex; align-items: center; justify-content: center;\n width: 32px; height: 32px; padding: 0;\n background: #ffffff; border: 0; border-radius: 9999px;\n color: var(--pa-color-primary, #0071ff); cursor: pointer;\n}\n.pa-date-picker :deep(.pa-date-picker__nav-arrow:hover) {\n background: var(--pa-color-bg-primary-light-40, #f2f6fc);\n}\n.pa-date-picker :deep(.pa-date-picker__nav-arrow:focus-visible) {\n outline: 2px solid var(--pa-color-primary-focus-border, #0065d1);\n outline-offset: 0;\n}\n\n.pa-date-picker :deep(.vc-container) {\n --vc-bg: #ffffff; --vc-border: transparent; --vc-rounded: 0;\n --vc-font-family: 'Inter', sans-serif;\n font-family: 'Inter', sans-serif;\n background: #ffffff; border: 0;\n color: var(--pa-color-neutral-gray, #454d56);\n}\n.pa-date-picker :deep(.vc-header) { padding: 0 0 16px; }\n.pa-date-picker :deep(.vc-title) {\n font: 600 16px/20px 'Inter', sans-serif;\n color: var(--pa-color-primary, #0071ff);\n pointer-events: none;\n}\n.pa-date-picker :deep(.vc-weeks) { padding: 0; }\n.pa-date-picker :deep(.vc-weekday) {\n font: 600 16px/20px 'Inter', sans-serif;\n color: var(--pa-color-neutral-gray, #454d56);\n padding: 8px 0; text-transform: capitalize;\n}\n.pa-date-picker :deep(.vc-day) { min-height: 36px; }\n.pa-date-picker :deep(.vc-day-content) {\n font: 400 16px/18px 'Roboto Mono', monospace;\n color: var(--pa-color-neutral-gray, #454d56);\n width: 32px; height: 32px; border-radius: 9999px; transition: none;\n}\n.pa-date-picker :deep(.vc-day-content:hover) {\n background: var(--pa-color-primary-hover, #00368f); color: #ffffff;\n}\n.pa-date-picker :deep(.vc-day-content:focus-visible) {\n outline: 2px solid var(--pa-color-primary-focus-border, #0065d1);\n outline-offset: -2px; background: transparent;\n color: var(--pa-color-primary, #0071ff);\n}\n.pa-date-picker :deep(.vc-day-content:active) {\n background: var(--pa-color-primary-pressed, #00173d); color: #ffffff;\n}\n.pa-date-picker :deep(.vc-highlight) {\n background: var(--pa-color-primary, #0071ff) !important;\n border-radius: 9999px;\n}\n.pa-date-picker :deep(.vc-highlight-content-solid) {\n color: #ffffff !important;\n font: 400 16px/18px 'Roboto Mono', monospace;\n}\n.pa-date-picker :deep(.vc-day.is-not-in-month .vc-day-content),\n.pa-date-picker :deep(.vc-day.is-disabled .vc-day-content) {\n color: var(--pa-color-text-disabled, #5b6571);\n pointer-events: none;\n}\n.pa-date-picker :deep(.vc-pane-layout) { gap: 0; }\n.pa-date-picker :deep(.vc-arrow) { display: none; }\n</style>\n"],"names":["uid","nextPaDatePickerId","props","__props","model","_useModel","rootRef","ref","triggerRef","open","popoverId","generatedId","triggerId","computed","messageId","dateFormatter","displayValue","placeholderShown","errorActive","validActive","errorMessage","helperMessage","message","serialized","v","y","m","d","localMidnight","addDays","n","isDisabledDate","disabledDatesForVCalendar","list","anchorYear","winStart","winEnd","cursor","day","openPopover","closePopover","returnFocus","_a","togglePopover","onDayClick","picked","onDocumentMousedown","event","onWindowKeydown","watch","isOpen","onBeforeUnmount","_createElementBlock","_normalizeClass","_hoisted_2","_createElementVNode","_hoisted_4","_toDisplayString","_renderSlot","_ctx","_createVNode","PaIcon","_unref","VDatePicker","_withCtx","click","_vShow","_hoisted_8"],"mappings":"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"}
1
+ {"version":3,"file":"PaDatePicker.vue2.js","sources":["../../../src/components/PaDatePicker/PaDatePicker.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, ref, useId, watch } from 'vue'\nimport { DatePicker as VDatePicker } from 'v-calendar'\nimport 'v-calendar/style.css'\nimport PaIcon from '../PaIcon/PaIcon.vue'\n\nconst props = withDefaults(\n defineProps<{\n display?: 'popover' | 'inline'\n placeholder?: string\n label?: string\n required?: boolean\n helperText?: string\n error?: string | boolean\n valid?: boolean\n disabled?: boolean\n readonly?: boolean\n id?: string\n name?: string\n min?: Date | null\n max?: Date | null\n disabledDates?: (date: Date) => boolean\n }>(),\n {\n display: 'popover',\n placeholder: 'gg/mm/aaaa',\n required: false,\n error: false,\n valid: false,\n disabled: false,\n readonly: false,\n min: null,\n max: null,\n disabledDates: undefined,\n },\n)\n\nconst model = defineModel<Date | null>({ default: null })\n\nconst rootRef = ref<HTMLElement | null>(null)\nconst triggerRef = ref<HTMLButtonElement | null>(null)\nconst open = ref(false)\nconst popoverId = `pa-date-picker-pop-${useId()}`\nconst generatedId = `pa-date-picker-${useId()}`\nconst triggerId = computed(() => props.id ?? generatedId)\nconst messageId = computed(() => `${triggerId.value}-msg`)\n\nconst dateFormatter = new Intl.DateTimeFormat('it-IT', {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n})\n\nconst displayValue = computed(() =>\n model.value instanceof Date ? dateFormatter.format(model.value) : props.placeholder,\n)\n\nconst placeholderShown = computed(() => !(model.value instanceof Date))\n\nconst errorActive = computed(() => Boolean(props.error))\nconst validActive = computed(() => props.valid && !errorActive.value)\nconst errorMessage = computed(() =>\n typeof props.error === 'string' && props.error.length > 0 ? props.error : null,\n)\nconst helperMessage = computed(() =>\n !errorActive.value && props.helperText ? props.helperText : null,\n)\nconst message = computed(() => errorMessage.value ?? helperMessage.value)\n\n// Built from LOCAL components — NEVER `.toISOString().slice(0, 10)`, which\n// returns UTC and lands on the previous day in any UTC-positive timezone.\nconst serialized = computed(() => {\n const v = model.value\n if (!(v instanceof Date) || isNaN(v.getTime())) return ''\n const y = v.getFullYear()\n const m = String(v.getMonth() + 1).padStart(2, '0')\n const d = String(v.getDate()).padStart(2, '0')\n return `${y}-${m}-${d}`\n})\n\nfunction localMidnight(d: Date): Date {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0, 0, 0)\n}\nfunction addDays(d: Date, n: number): Date {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate() + n, 0, 0, 0, 0)\n}\n\nfunction isDisabledDate(d: Date): boolean {\n const m = localMidnight(d)\n if (props.min && m.getTime() < localMidnight(props.min).getTime()) return true\n if (props.max && m.getTime() > localMidnight(props.max).getTime()) return true\n return props.disabledDates ? props.disabledDates(m) === true : false\n}\n\n// V-Calendar's `disabled-dates` accepts only Date / range entries (no\n// functions). To keep a single source of truth for visual disable + native\n// keyboard skip, we enumerate predicate-true days within a bounded window\n// (min/max if set, else ±5y around the model's anchor year) and push them as\n// individual Date entries alongside the min/max ranges.\nconst disabledDatesForVCalendar = computed(() => {\n const list: unknown[] = []\n if (props.min) list.push({ start: null, end: addDays(localMidnight(props.min), -1) })\n if (props.max) list.push({ start: addDays(localMidnight(props.max), 1), end: null })\n if (props.disabledDates) {\n const anchorYear =\n model.value instanceof Date ? model.value.getFullYear() : new Date().getFullYear()\n const winStart = props.min\n ? localMidnight(props.min)\n : new Date(anchorYear - 5, 0, 1, 0, 0, 0, 0)\n const winEnd = props.max\n ? localMidnight(props.max)\n : new Date(anchorYear + 5, 11, 31, 0, 0, 0, 0)\n const cursor = new Date(winStart.getTime())\n while (cursor.getTime() <= winEnd.getTime()) {\n const day = localMidnight(cursor)\n if (props.disabledDates(day)) list.push(day)\n cursor.setDate(cursor.getDate() + 1)\n }\n }\n return list\n})\n\nfunction openPopover() {\n if (open.value || props.disabled || props.readonly) return\n open.value = true\n}\n\nfunction closePopover(returnFocus = true) {\n if (!open.value) return\n open.value = false\n if (returnFocus) triggerRef.value?.focus()\n}\n\nfunction togglePopover() {\n if (props.disabled || props.readonly) return\n open.value ? closePopover() : openPopover()\n}\n\n// The ONLY writer to `model`. V-Calendar receives :model-value one-way and\n// never v-models back into us — the reactive feedback loop is what crashed\n// the previous v1.32 attempt.\n//\n// Normalize to local midnight: V-Calendar's day.date may carry a non-midnight\n// wall-clock time that, once serialized via `.toISOString()`, lands on the\n// previous day in any UTC-positive timezone. Storing local midnight keeps\n// `getFullYear / getMonth / getDate` and any locale-aware formatter aligned.\nfunction onDayClick(day: { date: Date }) {\n if (props.readonly) return\n const picked = localMidnight(day.date)\n if (isDisabledDate(picked)) return\n model.value = picked\n if (props.display === 'popover') closePopover()\n}\n\nfunction onDocumentMousedown(event: MouseEvent) {\n if (!rootRef.value) return\n if (!rootRef.value.contains(event.target as Node)) closePopover(false)\n}\n\nfunction onWindowKeydown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n event.preventDefault()\n closePopover()\n }\n}\n\nwatch(open, (isOpen) => {\n if (isOpen) {\n document.addEventListener('mousedown', onDocumentMousedown)\n window.addEventListener('keydown', onWindowKeydown)\n } else {\n document.removeEventListener('mousedown', onDocumentMousedown)\n window.removeEventListener('keydown', onWindowKeydown)\n }\n})\n\nonBeforeUnmount(() => {\n document.removeEventListener('mousedown', onDocumentMousedown)\n window.removeEventListener('keydown', onWindowKeydown)\n})\n</script>\n\n<template>\n <div\n ref=\"rootRef\"\n :class=\"[\n 'pa-date-picker',\n `pa-date-picker--${display}`,\n {\n 'pa-date-picker--open': open,\n 'pa-date-picker--disabled': disabled,\n 'pa-date-picker--readonly': readonly,\n 'pa-date-picker--error': errorActive,\n 'pa-date-picker--valid': validActive,\n },\n ]\"\n >\n <label v-if=\"label\" :for=\"triggerId\" class=\"pa-date-picker__label\">\n {{ label }}<span v-if=\"required\" class=\"pa-date-picker__required\" aria-hidden=\"true\">*</span>\n </label>\n\n <button\n v-if=\"display === 'popover'\"\n :id=\"triggerId\"\n ref=\"triggerRef\"\n type=\"button\"\n :class=\"[\n 'pa-date-picker__trigger',\n {\n 'pa-date-picker__trigger--placeholder': placeholderShown,\n 'pa-date-picker__trigger--disabled': disabled,\n 'pa-date-picker__trigger--readonly': readonly && !disabled,\n 'pa-date-picker__trigger--error': errorActive && !disabled,\n 'pa-date-picker__trigger--valid': validActive && !disabled,\n },\n ]\"\n :disabled=\"disabled\"\n :aria-expanded=\"open\"\n aria-haspopup=\"dialog\"\n :aria-controls=\"popoverId\"\n :aria-required=\"required || undefined\"\n :aria-invalid=\"errorActive || undefined\"\n :aria-readonly=\"readonly || undefined\"\n :aria-describedby=\"message ? messageId : undefined\"\n @click=\"togglePopover\"\n @keydown.enter.prevent=\"togglePopover\"\n @keydown.space.prevent=\"togglePopover\"\n @keydown.down.prevent=\"openPopover\"\n >\n <span class=\"pa-date-picker__value\">{{ displayValue }}</span>\n <slot name=\"suffix\">\n <PaIcon name=\"calendar-blank\" size=\"md\" />\n </slot>\n </button>\n\n <input\n v-if=\"name\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"serialized\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :required=\"required\"\n />\n\n <div\n v-show=\"display === 'inline' || open\"\n :id=\"popoverId\"\n :class=\"[\n 'pa-date-picker__popover',\n { 'pa-date-picker__popover--inline': display === 'inline' },\n ]\"\n role=\"dialog\"\n aria-modal=\"false\"\n >\n <VDatePicker\n :model-value=\"model\"\n :locale=\"{ id: 'it-IT', firstDayOfWeek: 2 }\"\n :is-required=\"false\"\n :disabled-dates=\"disabledDatesForVCalendar\"\n @dayclick=\"onDayClick\"\n >\n <template #nav-prev-button=\"{ click }\">\n <button\n type=\"button\"\n class=\"pa-date-picker__nav-arrow\"\n aria-label=\"Mese precedente\"\n @click=\"click\"\n >\n <PaIcon name=\"caret-left\" size=\"sm\" />\n </button>\n </template>\n <template #nav-next-button=\"{ click }\">\n <button\n type=\"button\"\n class=\"pa-date-picker__nav-arrow\"\n aria-label=\"Mese successivo\"\n @click=\"click\"\n >\n <PaIcon name=\"caret-right\" size=\"sm\" />\n </button>\n </template>\n </VDatePicker>\n </div>\n\n <div\n v-if=\"message\"\n :id=\"messageId\"\n :class=\"['pa-date-picker__message', { 'pa-date-picker__message--error': errorActive }]\"\n >\n {{ message }}\n </div>\n </div>\n</template>\n\n<style scoped>\n.pa-date-picker {\n position: relative;\n display: inline-flex;\n flex-direction: column;\n gap: var(--pa-space-2xs, 4px);\n font-family: var(--pa-font-family-sans, 'Inter', sans-serif);\n}\n\n.pa-date-picker__label {\n font: 600 14px/20px 'Inter', sans-serif;\n color: var(--pa-color-text-dark-blue, #00173d);\n}\n.pa-date-picker__required {\n margin-left: 2px;\n color: var(--pa-color-error, #de2049);\n}\n\n.pa-date-picker__trigger {\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n width: 100%;\n min-width: 240px;\n padding: 12px 16px;\n background: #ffffff;\n border: 1px solid var(--pa-color-neutral-gray, #454d56);\n border-radius: 4px;\n font: 400 16px/20px 'Inter', sans-serif;\n color: var(--pa-color-neutral-gray, #454d56);\n cursor: pointer;\n text-align: left;\n}\n.pa-date-picker__trigger:hover { border-color: var(--pa-color-primary, #0071ff); }\n.pa-date-picker__trigger:focus-visible {\n outline: 2px solid var(--pa-color-primary-focus-border, #0065d1);\n outline-offset: 2px;\n}\n.pa-date-picker__trigger--placeholder .pa-date-picker__value {\n color: var(--pa-color-text-disabled, #5b6571);\n}\n.pa-date-picker__trigger--error {\n border-color: var(--pa-color-error, #de2049);\n}\n.pa-date-picker__trigger--error:hover {\n border-color: var(--pa-color-error, #de2049);\n}\n.pa-date-picker__trigger--valid {\n border-color: var(--pa-color-success, #008069);\n}\n.pa-date-picker__trigger--valid:hover {\n border-color: var(--pa-color-success, #008069);\n}\n.pa-date-picker__trigger--disabled,\n.pa-date-picker__trigger[disabled] {\n background: var(--pa-color-bg-disabled-gray, #e7e8e3);\n color: var(--pa-color-text-disabled, #5b6571);\n border-color: var(--pa-color-neutral-gray, #454d56);\n cursor: not-allowed;\n}\n.pa-date-picker__trigger--disabled:hover,\n.pa-date-picker__trigger[disabled]:hover {\n border-color: var(--pa-color-neutral-gray, #454d56);\n}\n.pa-date-picker__trigger--readonly:hover {\n border-color: var(--pa-color-neutral-gray, #454d56);\n}\n.pa-date-picker__value {\n flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;\n}\n\n.pa-date-picker__message {\n font: 400 14px/20px 'Inter', sans-serif;\n color: var(--pa-color-neutral-gray, #454d56);\n}\n.pa-date-picker__message--error {\n color: var(--pa-color-error, #de2049);\n}\n\n.pa-date-picker__popover {\n position: absolute;\n top: calc(100% + 8px);\n left: 0;\n z-index: 900; min-width: 280px; padding: 24px;\n background: #ffffff; border-radius: 8px;\n box-shadow: var(--pa-shadow-elevation-02, 0 0 24px #e3e5e8);\n}\n.pa-date-picker__popover--inline {\n position: static; top: auto; left: auto; display: inline-block;\n}\n/* Anchor the absolute popover under the trigger (not under the label). */\n.pa-date-picker:has(.pa-date-picker__label) .pa-date-picker__popover:not(.pa-date-picker__popover--inline) {\n top: auto;\n}\n\n.pa-date-picker :deep(.pa-date-picker__nav-arrow) {\n display: inline-flex; align-items: center; justify-content: center;\n width: 32px; height: 32px; padding: 0;\n background: #ffffff; border: 0; border-radius: 9999px;\n color: var(--pa-color-primary, #0071ff); cursor: pointer;\n}\n.pa-date-picker :deep(.pa-date-picker__nav-arrow:hover) {\n background: var(--pa-color-bg-primary-light-40, #f2f6fc);\n}\n.pa-date-picker :deep(.pa-date-picker__nav-arrow:focus-visible) {\n outline: 2px solid var(--pa-color-primary-focus-border, #0065d1);\n outline-offset: 0;\n}\n\n.pa-date-picker :deep(.vc-container) {\n --vc-bg: #ffffff; --vc-border: transparent; --vc-rounded: 0;\n --vc-font-family: 'Inter', sans-serif;\n font-family: 'Inter', sans-serif;\n background: #ffffff; border: 0;\n color: var(--pa-color-neutral-gray, #454d56);\n}\n.pa-date-picker :deep(.vc-header) { padding: 0 0 16px; }\n.pa-date-picker :deep(.vc-title) {\n font: 600 16px/20px 'Inter', sans-serif;\n color: var(--pa-color-primary, #0071ff);\n pointer-events: none;\n}\n.pa-date-picker :deep(.vc-weeks) { padding: 0; }\n.pa-date-picker :deep(.vc-weekday) {\n font: 600 16px/20px 'Inter', sans-serif;\n color: var(--pa-color-neutral-gray, #454d56);\n padding: 8px 0; text-transform: capitalize;\n}\n.pa-date-picker :deep(.vc-day) { min-height: 36px; }\n.pa-date-picker :deep(.vc-day-content) {\n font: 400 16px/18px 'Roboto Mono', monospace;\n color: var(--pa-color-neutral-gray, #454d56);\n width: 32px; height: 32px; border-radius: 9999px; transition: none;\n}\n.pa-date-picker :deep(.vc-day-content:hover) {\n background: var(--pa-color-primary-hover, #00368f); color: #ffffff;\n}\n.pa-date-picker :deep(.vc-day-content:focus-visible) {\n outline: 2px solid var(--pa-color-primary-focus-border, #0065d1);\n outline-offset: -2px; background: transparent;\n color: var(--pa-color-primary, #0071ff);\n}\n.pa-date-picker :deep(.vc-day-content:active) {\n background: var(--pa-color-primary-pressed, #00173d); color: #ffffff;\n}\n.pa-date-picker :deep(.vc-highlight) {\n background: var(--pa-color-primary, #0071ff) !important;\n border-radius: 9999px;\n}\n.pa-date-picker :deep(.vc-highlight-content-solid) {\n color: #ffffff !important;\n font: 400 16px/18px 'Roboto Mono', monospace;\n}\n.pa-date-picker :deep(.vc-day.is-not-in-month .vc-day-content),\n.pa-date-picker :deep(.vc-day.is-disabled .vc-day-content) {\n color: var(--pa-color-text-disabled, #5b6571);\n pointer-events: none;\n}\n.pa-date-picker :deep(.vc-pane-layout) { gap: 0; }\n.pa-date-picker :deep(.vc-arrow) { display: none; }\n</style>\n"],"names":["props","__props","model","_useModel","rootRef","ref","triggerRef","open","popoverId","useId","generatedId","triggerId","computed","messageId","dateFormatter","displayValue","placeholderShown","errorActive","validActive","errorMessage","helperMessage","message","serialized","v","y","m","d","localMidnight","addDays","n","isDisabledDate","disabledDatesForVCalendar","list","anchorYear","winStart","winEnd","cursor","day","openPopover","closePopover","returnFocus","_a","togglePopover","onDayClick","picked","onDocumentMousedown","event","onWindowKeydown","watch","isOpen","onBeforeUnmount","_createElementBlock","_normalizeClass","_hoisted_2","_createElementVNode","_hoisted_4","_toDisplayString","_renderSlot","_ctx","_createVNode","PaIcon","_unref","VDatePicker","_withCtx","click","_vShow","_hoisted_8"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import o from "./PaDrawer.vue2.js";
2
2
  /* empty css */
3
3
  import r from "../../_virtual/_plugin-vue_export-helper.js";
4
- const m = /* @__PURE__ */ r(o, [["__scopeId", "data-v-b2a79b9f"]]);
4
+ const p = /* @__PURE__ */ r(o, [["__scopeId", "data-v-1250bb84"]]);
5
5
  export {
6
- m as default
6
+ p as default
7
7
  };
8
8
  //# sourceMappingURL=PaDrawer.vue.js.map
@@ -1,16 +1,11 @@
1
- import { defineComponent as M, useModel as O, computed as f, ref as x, watch as U, nextTick as P, onBeforeUnmount as q, openBlock as n, createBlock as D, Teleport as j, createElementVNode as v, normalizeClass as R, createVNode as w, Transition as S, withCtx as y, createElementBlock as p, createCommentVNode as i, resolveDynamicComponent as G, createTextVNode as H, toDisplayString as J, renderSlot as T, mergeModels as Q } from "vue";
2
- import X from "../PaIcon/PaIcon.vue.js";
3
- const Y = ["aria-labelledby"], Z = { class: "pa-drawer__header" }, ee = ["aria-label"], te = { class: "pa-drawer__body" }, oe = {
1
+ import { defineComponent as M, useModel as O, useId as P, computed as f, ref as R, watch as U, nextTick as q, onBeforeUnmount as j, openBlock as n, createBlock as x, Teleport as G, createElementVNode as v, normalizeClass as D, createVNode as y, Transition as S, withCtx as w, createElementBlock as p, createCommentVNode as r, resolveDynamicComponent as H, createTextVNode as J, toDisplayString as Q, renderSlot as T, mergeModels as X } from "vue";
2
+ import Y from "../PaIcon/PaIcon.vue.js";
3
+ const Z = ["aria-labelledby"], ee = { class: "pa-drawer__header" }, te = ["aria-label"], oe = { class: "pa-drawer__body" }, ae = {
4
4
  key: 0,
5
5
  class: "pa-drawer__footer"
6
- };
7
- let ae = 0;
8
- function le() {
9
- return ++ae;
10
- }
11
- const ie = /* @__PURE__ */ M({
6
+ }, ie = /* @__PURE__ */ M({
12
7
  __name: "PaDrawer",
13
- props: /* @__PURE__ */ Q({
8
+ props: /* @__PURE__ */ X({
14
9
  title: {},
15
10
  titleLevel: { default: 2 },
16
11
  showClose: { type: Boolean, default: !0 },
@@ -24,8 +19,8 @@ const ie = /* @__PURE__ */ M({
24
19
  }),
25
20
  emits: ["update:open"],
26
21
  setup(t) {
27
- const d = t, l = O(t, "open"), A = le(), z = f(() => d.id ?? `pa-drawer-${A}`), b = f(() => `${z.value}__title`), K = f(() => d.title ? b.value : void 0), N = f(() => `h${d.titleLevel}`), o = x(null), m = x(null);
28
- let r = null, h = "", _ = "", s = !1, c = !1;
22
+ const d = t, l = O(t, "open"), A = P(), z = f(() => d.id ?? `pa-drawer-${A}`), b = f(() => `${z.value}__title`), K = f(() => d.title ? b.value : void 0), N = f(() => `h${d.titleLevel}`), o = R(null), m = R(null);
23
+ let i = null, h = "", _ = "", s = !1, c = !1;
29
24
  const V = 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])';
30
25
  function k(e) {
31
26
  return Array.from(e.querySelectorAll(V));
@@ -61,45 +56,46 @@ const ie = /* @__PURE__ */ M({
61
56
  U(
62
57
  l,
63
58
  async (e) => {
64
- if (e) {
65
- if (r = document.activeElement, F(), I(), await P(), d.showClose && m.value)
66
- m.value.focus();
67
- else if (o.value) {
68
- const a = k(o.value);
69
- a.length > 0 ? a[0].focus() : o.value.focus();
70
- }
71
- } else
72
- C(), E(), r && document.contains(r) && r.focus(), r = null;
59
+ if (!(typeof document > "u"))
60
+ if (e) {
61
+ if (i = document.activeElement, F(), I(), await q(), d.showClose && m.value)
62
+ m.value.focus();
63
+ else if (o.value) {
64
+ const a = k(o.value);
65
+ a.length > 0 ? a[0].focus() : o.value.focus();
66
+ }
67
+ } else
68
+ C(), E(), i && document.contains(i) && i.focus(), i = null;
73
69
  },
74
70
  { flush: "post", immediate: !0 }
75
- ), q(() => {
71
+ ), j(() => {
76
72
  C(), E();
77
73
  });
78
74
  function B() {
79
75
  l.value = !1;
80
76
  }
81
- return (e, a) => (n(), D(j, { to: "body" }, [
77
+ return (e, a) => (n(), x(G, { to: "body" }, [
82
78
  v("div", {
83
- class: R(["pa-drawer__wrapper", { "pa-drawer__wrapper--active": l.value }])
79
+ class: D(["pa-drawer__wrapper", { "pa-drawer__wrapper--active": l.value }])
84
80
  }, [
85
- w(S, {
81
+ y(S, {
86
82
  name: "pa-drawer-backdrop",
87
83
  appear: ""
88
84
  }, {
89
- default: y(() => [
85
+ default: w(() => [
90
86
  l.value ? (n(), p("div", {
91
87
  key: 0,
92
88
  class: "pa-drawer__backdrop",
93
89
  onClick: B
94
- })) : i("", !0)
90
+ })) : r("", !0)
95
91
  ]),
96
92
  _: 1
97
93
  }),
98
- w(S, {
94
+ y(S, {
99
95
  name: `pa-drawer-${t.position}`,
100
96
  appear: ""
101
97
  }, {
102
- default: y(() => [
98
+ default: w(() => [
103
99
  l.value ? (n(), p("div", {
104
100
  key: 0,
105
101
  ref_key: "drawerRef",
@@ -108,24 +104,24 @@ const ie = /* @__PURE__ */ M({
108
104
  "aria-modal": "true",
109
105
  tabindex: "-1",
110
106
  "aria-labelledby": K.value,
111
- class: R([
107
+ class: D([
112
108
  "pa-drawer",
113
109
  `pa-drawer--${t.position}`,
114
110
  `pa-drawer--${t.size}`
115
111
  ]),
116
112
  onKeydown: W
117
113
  }, [
118
- v("div", Z, [
119
- t.title ? (n(), D(G(N.value), {
114
+ v("div", ee, [
115
+ t.title ? (n(), x(H(N.value), {
120
116
  key: 0,
121
117
  id: b.value,
122
118
  class: "pa-drawer__title"
123
119
  }, {
124
- default: y(() => [
125
- H(J(t.title), 1)
120
+ default: w(() => [
121
+ J(Q(t.title), 1)
126
122
  ]),
127
123
  _: 1
128
- }, 8, ["id"])) : i("", !0),
124
+ }, 8, ["id"])) : r("", !0),
129
125
  t.showClose ? (n(), p("button", {
130
126
  key: 1,
131
127
  ref_key: "closeButtonRef",
@@ -135,19 +131,19 @@ const ie = /* @__PURE__ */ M({
135
131
  "aria-label": t.closeLabel,
136
132
  onClick: B
137
133
  }, [
138
- w(X, {
134
+ y(Y, {
139
135
  name: "x",
140
136
  size: "sm"
141
137
  })
142
- ], 8, ee)) : i("", !0)
138
+ ], 8, te)) : r("", !0)
143
139
  ]),
144
- v("div", te, [
140
+ v("div", oe, [
145
141
  T(e.$slots, "default", {}, void 0, !0)
146
142
  ]),
147
- e.$slots.footer ? (n(), p("div", oe, [
143
+ e.$slots.footer ? (n(), p("div", ae, [
148
144
  T(e.$slots, "footer", {}, void 0, !0)
149
- ])) : i("", !0)
150
- ], 42, Y)) : i("", !0)
145
+ ])) : r("", !0)
146
+ ], 42, Z)) : r("", !0)
151
147
  ]),
152
148
  _: 3
153
149
  }, 8, ["name"])
@@ -1 +1 @@
1
- {"version":3,"file":"PaDrawer.vue2.js","sources":["../../../src/components/PaDrawer/PaDrawer.vue"],"sourcesContent":["<script lang=\"ts\">\nlet drawerUid = 0\nfunction nextDrawerId() {\n return ++drawerUid\n}\n\nexport type PaDrawerPosition = 'right' | 'left' | 'top' | 'bottom'\nexport type PaDrawerSize = 'sm' | 'md' | 'lg'\n\nexport interface PaDrawerProps {\n title?: string\n titleLevel?: 1 | 2 | 3 | 4 | 5 | 6\n showClose?: boolean\n closeLabel?: string\n position?: PaDrawerPosition\n size?: PaDrawerSize\n id?: string\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, ref, watch } from 'vue'\nimport PaIcon from '../PaIcon/PaIcon.vue'\n\nconst props = withDefaults(defineProps<PaDrawerProps>(), {\n titleLevel: 2,\n showClose: true,\n closeLabel: 'Chiudi',\n position: 'right',\n size: 'md',\n})\n\nconst open = defineModel<boolean>('open', { default: false })\n\nconst uid = nextDrawerId()\nconst baseId = computed(() => props.id ?? `pa-drawer-${uid}`)\nconst titleId = computed(() => `${baseId.value}__title`)\nconst labelledBy = computed(() => (props.title ? titleId.value : undefined))\nconst titleTag = computed(() => `h${props.titleLevel}` as const)\n\nconst drawerRef = ref<HTMLElement | null>(null)\nconst closeButtonRef = ref<HTMLButtonElement | null>(null)\n\nlet previouslyFocusedElement: HTMLElement | null = null\nlet originalBodyOverflow = ''\nlet originalBodyPaddingRight = ''\nlet scrollLockActive = false\nlet escListenerAttached = false\n\nconst FOCUSABLE_SELECTOR =\n 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n\nfunction getFocusable(root: HTMLElement): HTMLElement[] {\n return Array.from(root.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR))\n}\n\nfunction onDrawerKeydown(event: KeyboardEvent) {\n if (event.key !== 'Tab' || !drawerRef.value) return\n const focusable = getFocusable(drawerRef.value)\n if (focusable.length === 0) {\n event.preventDefault()\n drawerRef.value.focus()\n return\n }\n const first = focusable[0]!\n const last = focusable[focusable.length - 1]!\n const active = document.activeElement as HTMLElement | null\n if (event.shiftKey) {\n if (active === first || !drawerRef.value.contains(active)) {\n event.preventDefault()\n last.focus()\n }\n } else {\n if (active === last || !drawerRef.value.contains(active)) {\n event.preventDefault()\n first.focus()\n }\n }\n}\n\nfunction onWindowKeydownEsc(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n event.preventDefault()\n open.value = false\n }\n}\n\nfunction lockScroll() {\n if (scrollLockActive) return\n originalBodyOverflow = document.body.style.overflow\n originalBodyPaddingRight = document.body.style.paddingRight\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth\n document.body.style.overflow = 'hidden'\n if (scrollbarWidth > 0) {\n document.body.style.paddingRight = `${scrollbarWidth}px`\n }\n scrollLockActive = true\n}\n\nfunction unlockScroll() {\n if (!scrollLockActive) return\n document.body.style.overflow = originalBodyOverflow\n document.body.style.paddingRight = originalBodyPaddingRight\n scrollLockActive = false\n}\n\nfunction attachEsc() {\n if (escListenerAttached) return\n window.addEventListener('keydown', onWindowKeydownEsc)\n escListenerAttached = true\n}\n\nfunction detachEsc() {\n if (!escListenerAttached) return\n window.removeEventListener('keydown', onWindowKeydownEsc)\n escListenerAttached = false\n}\n\nwatch(\n open,\n async (next) => {\n if (next) {\n previouslyFocusedElement = document.activeElement as HTMLElement | null\n lockScroll()\n attachEsc()\n await nextTick()\n if (props.showClose && closeButtonRef.value) {\n closeButtonRef.value.focus()\n } else if (drawerRef.value) {\n const focusable = getFocusable(drawerRef.value)\n if (focusable.length > 0) {\n focusable[0]!.focus()\n } else {\n drawerRef.value.focus()\n }\n }\n } else {\n detachEsc()\n unlockScroll()\n if (previouslyFocusedElement && document.contains(previouslyFocusedElement)) {\n previouslyFocusedElement.focus()\n }\n previouslyFocusedElement = null\n }\n },\n { flush: 'post', immediate: true },\n)\n\nonBeforeUnmount(() => {\n detachEsc()\n unlockScroll()\n})\n\nfunction close() {\n open.value = false\n}\n</script>\n\n<template>\n <Teleport to=\"body\">\n <div class=\"pa-drawer__wrapper\" :class=\"{ 'pa-drawer__wrapper--active': open }\">\n <Transition name=\"pa-drawer-backdrop\" appear>\n <div v-if=\"open\" class=\"pa-drawer__backdrop\" @click=\"close\" />\n </Transition>\n <Transition :name=\"`pa-drawer-${position}`\" appear>\n <div\n v-if=\"open\"\n ref=\"drawerRef\"\n role=\"dialog\"\n aria-modal=\"true\"\n tabindex=\"-1\"\n :aria-labelledby=\"labelledBy\"\n :class=\"[\n 'pa-drawer',\n `pa-drawer--${position}`,\n `pa-drawer--${size}`,\n ]\"\n @keydown=\"onDrawerKeydown\"\n >\n <div class=\"pa-drawer__header\">\n <component\n :is=\"titleTag\"\n v-if=\"title\"\n :id=\"titleId\"\n class=\"pa-drawer__title\"\n >\n {{ title }}\n </component>\n <button\n v-if=\"showClose\"\n ref=\"closeButtonRef\"\n type=\"button\"\n class=\"pa-drawer__close\"\n :aria-label=\"closeLabel\"\n @click=\"close\"\n >\n <PaIcon name=\"x\" size=\"sm\" />\n </button>\n </div>\n <div class=\"pa-drawer__body\">\n <slot />\n </div>\n <div v-if=\"$slots.footer\" class=\"pa-drawer__footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n </Transition>\n </div>\n </Teleport>\n</template>\n\n<style scoped>\n.pa-drawer__wrapper {\n position: fixed;\n inset: 0;\n z-index: 1000;\n container-type: inline-size;\n pointer-events: none;\n}\n\n.pa-drawer__backdrop {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.5);\n z-index: 1000;\n pointer-events: auto;\n}\n\n.pa-drawer {\n position: fixed;\n z-index: 1001;\n background: var(--pa-color-bg-white);\n box-shadow: var(--pa-shadow-elevation-01);\n display: flex;\n flex-direction: column;\n padding: 32px;\n pointer-events: auto;\n font-family: var(--pa-font-family-base);\n box-sizing: border-box;\n}\n\n.pa-drawer:focus {\n outline: none;\n}\n\n.pa-drawer--sm {\n --pa-drawer-width: 400px;\n --pa-drawer-height: 320px;\n}\n\n.pa-drawer--md {\n --pa-drawer-width: 550px;\n --pa-drawer-height: 480px;\n}\n\n.pa-drawer--lg {\n --pa-drawer-width: 720px;\n --pa-drawer-height: 640px;\n}\n\n.pa-drawer--right {\n top: 0;\n right: 0;\n height: 100vh;\n width: var(--pa-drawer-width);\n max-width: 100vw;\n}\n\n.pa-drawer--left {\n top: 0;\n left: 0;\n height: 100vh;\n width: var(--pa-drawer-width);\n max-width: 100vw;\n}\n\n.pa-drawer--top {\n top: 0;\n left: 0;\n width: 100vw;\n height: var(--pa-drawer-height);\n max-height: 100vh;\n}\n\n.pa-drawer--bottom {\n bottom: 0;\n left: 0;\n width: 100vw;\n height: var(--pa-drawer-height);\n max-height: 100vh;\n}\n\n.pa-drawer__header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--pa-space-sm);\n width: 100%;\n flex-shrink: 0;\n}\n\n.pa-drawer__title {\n margin: 0;\n flex: 1 1 auto;\n min-width: 0;\n font-weight: 600;\n font-size: 20px;\n line-height: 24px;\n letter-spacing: -0.5px;\n color: var(--pa-color-primary);\n}\n\n.pa-drawer__close {\n flex: 0 0 auto;\n width: 44px;\n height: 44px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--pa-radius-smooth);\n background: transparent;\n border: none;\n color: var(--pa-color-primary);\n cursor: pointer;\n padding: 0;\n margin: -10px -10px 0 0;\n}\n\n.pa-drawer__close:hover {\n background: var(--pa-color-bg-secondary-light-50);\n}\n\n.pa-drawer__close:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-primary-focus-border);\n outline-offset: 2px;\n}\n\n.pa-drawer__body {\n flex: 1 1 auto;\n overflow-y: auto;\n width: 100%;\n margin-top: var(--pa-space-sm);\n}\n\n.pa-drawer__footer {\n display: flex;\n align-items: center;\n gap: var(--pa-space-sm);\n min-height: 64px;\n padding: var(--pa-space-xs) var(--pa-space-lg);\n margin: 0 calc(-1 * var(--pa-space-lg)) calc(-1 * var(--pa-space-lg))\n calc(-1 * var(--pa-space-lg));\n background: var(--pa-color-primary);\n color: var(--pa-color-text-white);\n flex-shrink: 0;\n}\n\n.pa-drawer-backdrop-enter-from,\n.pa-drawer-backdrop-leave-to {\n opacity: 0;\n}\n\n.pa-drawer-backdrop-enter-active {\n transition: opacity 200ms ease-out;\n}\n\n.pa-drawer-backdrop-leave-active {\n transition: opacity 200ms ease-in;\n}\n\n.pa-drawer-right-enter-from,\n.pa-drawer-right-leave-to {\n transform: translateX(100%);\n}\n\n.pa-drawer-left-enter-from,\n.pa-drawer-left-leave-to {\n transform: translateX(-100%);\n}\n\n.pa-drawer-top-enter-from,\n.pa-drawer-top-leave-to {\n transform: translateY(-100%);\n}\n\n.pa-drawer-bottom-enter-from,\n.pa-drawer-bottom-leave-to {\n transform: translateY(100%);\n}\n\n.pa-drawer-right-enter-active,\n.pa-drawer-left-enter-active,\n.pa-drawer-top-enter-active,\n.pa-drawer-bottom-enter-active {\n transition: transform 250ms ease-out;\n}\n\n.pa-drawer-right-leave-active,\n.pa-drawer-left-leave-active,\n.pa-drawer-top-leave-active,\n.pa-drawer-bottom-leave-active {\n transition: transform 200ms ease-in;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .pa-drawer-backdrop-enter-active,\n .pa-drawer-backdrop-leave-active,\n .pa-drawer-right-enter-active,\n .pa-drawer-right-leave-active,\n .pa-drawer-left-enter-active,\n .pa-drawer-left-leave-active,\n .pa-drawer-top-enter-active,\n .pa-drawer-top-leave-active,\n .pa-drawer-bottom-enter-active,\n .pa-drawer-bottom-leave-active {\n transition-duration: 0ms;\n }\n}\n\n@container (max-width: 600px) {\n .pa-drawer {\n padding: var(--pa-space-md);\n }\n\n .pa-drawer--right,\n .pa-drawer--left {\n width: 100vw;\n max-width: none;\n }\n\n .pa-drawer--top,\n .pa-drawer--bottom {\n height: 100vh;\n max-height: none;\n }\n\n .pa-drawer__title {\n font-size: 18px;\n line-height: 22px;\n }\n\n .pa-drawer__footer {\n padding: var(--pa-space-xs) var(--pa-space-md);\n margin: 0 calc(-1 * var(--pa-space-md)) calc(-1 * var(--pa-space-md))\n calc(-1 * var(--pa-space-md));\n }\n}\n</style>\n"],"names":["drawerUid","nextDrawerId","props","__props","open","_useModel","uid","baseId","computed","titleId","labelledBy","titleTag","drawerRef","ref","closeButtonRef","previouslyFocusedElement","originalBodyOverflow","originalBodyPaddingRight","scrollLockActive","escListenerAttached","FOCUSABLE_SELECTOR","getFocusable","root","onDrawerKeydown","event","focusable","first","last","active","onWindowKeydownEsc","lockScroll","scrollbarWidth","unlockScroll","attachEsc","detachEsc","watch","next","nextTick","onBeforeUnmount","close","_createBlock","_Teleport","_createElementVNode","_normalizeClass","_createVNode","_Transition","_createElementBlock","_hoisted_2","_openBlock","_resolveDynamicComponent","PaIcon","_hoisted_4","_renderSlot","_ctx","$slots","_hoisted_5"],"mappings":"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"}
1
+ {"version":3,"file":"PaDrawer.vue2.js","sources":["../../../src/components/PaDrawer/PaDrawer.vue"],"sourcesContent":["<script lang=\"ts\">\n\nexport type PaDrawerPosition = 'right' | 'left' | 'top' | 'bottom'\nexport type PaDrawerSize = 'sm' | 'md' | 'lg'\n\nexport interface PaDrawerProps {\n title?: string\n titleLevel?: 1 | 2 | 3 | 4 | 5 | 6\n showClose?: boolean\n closeLabel?: string\n position?: PaDrawerPosition\n size?: PaDrawerSize\n id?: string\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, ref, useId, watch } from 'vue'\nimport PaIcon from '../PaIcon/PaIcon.vue'\n\nconst props = withDefaults(defineProps<PaDrawerProps>(), {\n titleLevel: 2,\n showClose: true,\n closeLabel: 'Chiudi',\n position: 'right',\n size: 'md',\n})\n\nconst open = defineModel<boolean>('open', { default: false })\n\nconst uid = useId()\nconst baseId = computed(() => props.id ?? `pa-drawer-${uid}`)\nconst titleId = computed(() => `${baseId.value}__title`)\nconst labelledBy = computed(() => (props.title ? titleId.value : undefined))\nconst titleTag = computed(() => `h${props.titleLevel}` as const)\n\nconst drawerRef = ref<HTMLElement | null>(null)\nconst closeButtonRef = ref<HTMLButtonElement | null>(null)\n\nlet previouslyFocusedElement: HTMLElement | null = null\nlet originalBodyOverflow = ''\nlet originalBodyPaddingRight = ''\nlet scrollLockActive = false\nlet escListenerAttached = false\n\nconst FOCUSABLE_SELECTOR =\n 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n\nfunction getFocusable(root: HTMLElement): HTMLElement[] {\n return Array.from(root.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR))\n}\n\nfunction onDrawerKeydown(event: KeyboardEvent) {\n if (event.key !== 'Tab' || !drawerRef.value) return\n const focusable = getFocusable(drawerRef.value)\n if (focusable.length === 0) {\n event.preventDefault()\n drawerRef.value.focus()\n return\n }\n const first = focusable[0]!\n const last = focusable[focusable.length - 1]!\n const active = document.activeElement as HTMLElement | null\n if (event.shiftKey) {\n if (active === first || !drawerRef.value.contains(active)) {\n event.preventDefault()\n last.focus()\n }\n } else {\n if (active === last || !drawerRef.value.contains(active)) {\n event.preventDefault()\n first.focus()\n }\n }\n}\n\nfunction onWindowKeydownEsc(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n event.preventDefault()\n open.value = false\n }\n}\n\nfunction lockScroll() {\n if (scrollLockActive) return\n originalBodyOverflow = document.body.style.overflow\n originalBodyPaddingRight = document.body.style.paddingRight\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth\n document.body.style.overflow = 'hidden'\n if (scrollbarWidth > 0) {\n document.body.style.paddingRight = `${scrollbarWidth}px`\n }\n scrollLockActive = true\n}\n\nfunction unlockScroll() {\n if (!scrollLockActive) return\n document.body.style.overflow = originalBodyOverflow\n document.body.style.paddingRight = originalBodyPaddingRight\n scrollLockActive = false\n}\n\nfunction attachEsc() {\n if (escListenerAttached) return\n window.addEventListener('keydown', onWindowKeydownEsc)\n escListenerAttached = true\n}\n\nfunction detachEsc() {\n if (!escListenerAttached) return\n window.removeEventListener('keydown', onWindowKeydownEsc)\n escListenerAttached = false\n}\n\nwatch(\n open,\n async (next) => {\n if (typeof document === 'undefined') return\n if (next) {\n previouslyFocusedElement = document.activeElement as HTMLElement | null\n lockScroll()\n attachEsc()\n await nextTick()\n if (props.showClose && closeButtonRef.value) {\n closeButtonRef.value.focus()\n } else if (drawerRef.value) {\n const focusable = getFocusable(drawerRef.value)\n if (focusable.length > 0) {\n focusable[0]!.focus()\n } else {\n drawerRef.value.focus()\n }\n }\n } else {\n detachEsc()\n unlockScroll()\n if (previouslyFocusedElement && document.contains(previouslyFocusedElement)) {\n previouslyFocusedElement.focus()\n }\n previouslyFocusedElement = null\n }\n },\n { flush: 'post', immediate: true },\n)\n\nonBeforeUnmount(() => {\n detachEsc()\n unlockScroll()\n})\n\nfunction close() {\n open.value = false\n}\n</script>\n\n<template>\n <Teleport to=\"body\">\n <div class=\"pa-drawer__wrapper\" :class=\"{ 'pa-drawer__wrapper--active': open }\">\n <Transition name=\"pa-drawer-backdrop\" appear>\n <div v-if=\"open\" class=\"pa-drawer__backdrop\" @click=\"close\" />\n </Transition>\n <Transition :name=\"`pa-drawer-${position}`\" appear>\n <div\n v-if=\"open\"\n ref=\"drawerRef\"\n role=\"dialog\"\n aria-modal=\"true\"\n tabindex=\"-1\"\n :aria-labelledby=\"labelledBy\"\n :class=\"[\n 'pa-drawer',\n `pa-drawer--${position}`,\n `pa-drawer--${size}`,\n ]\"\n @keydown=\"onDrawerKeydown\"\n >\n <div class=\"pa-drawer__header\">\n <component\n :is=\"titleTag\"\n v-if=\"title\"\n :id=\"titleId\"\n class=\"pa-drawer__title\"\n >\n {{ title }}\n </component>\n <button\n v-if=\"showClose\"\n ref=\"closeButtonRef\"\n type=\"button\"\n class=\"pa-drawer__close\"\n :aria-label=\"closeLabel\"\n @click=\"close\"\n >\n <PaIcon name=\"x\" size=\"sm\" />\n </button>\n </div>\n <div class=\"pa-drawer__body\">\n <slot />\n </div>\n <div v-if=\"$slots.footer\" class=\"pa-drawer__footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n </Transition>\n </div>\n </Teleport>\n</template>\n\n<style scoped>\n.pa-drawer__wrapper {\n position: fixed;\n inset: 0;\n z-index: 1000;\n container-type: inline-size;\n pointer-events: none;\n}\n\n.pa-drawer__backdrop {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.5);\n z-index: 1000;\n pointer-events: auto;\n}\n\n.pa-drawer {\n position: fixed;\n z-index: 1001;\n background: var(--pa-color-bg-white);\n box-shadow: var(--pa-shadow-elevation-01);\n display: flex;\n flex-direction: column;\n padding: 32px;\n pointer-events: auto;\n font-family: var(--pa-font-family-base);\n box-sizing: border-box;\n}\n\n.pa-drawer:focus {\n outline: none;\n}\n\n.pa-drawer--sm {\n --pa-drawer-width: 400px;\n --pa-drawer-height: 320px;\n}\n\n.pa-drawer--md {\n --pa-drawer-width: 550px;\n --pa-drawer-height: 480px;\n}\n\n.pa-drawer--lg {\n --pa-drawer-width: 720px;\n --pa-drawer-height: 640px;\n}\n\n.pa-drawer--right {\n top: 0;\n right: 0;\n height: 100vh;\n width: var(--pa-drawer-width);\n max-width: 100vw;\n}\n\n.pa-drawer--left {\n top: 0;\n left: 0;\n height: 100vh;\n width: var(--pa-drawer-width);\n max-width: 100vw;\n}\n\n.pa-drawer--top {\n top: 0;\n left: 0;\n width: 100vw;\n height: var(--pa-drawer-height);\n max-height: 100vh;\n}\n\n.pa-drawer--bottom {\n bottom: 0;\n left: 0;\n width: 100vw;\n height: var(--pa-drawer-height);\n max-height: 100vh;\n}\n\n.pa-drawer__header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--pa-space-sm);\n width: 100%;\n flex-shrink: 0;\n}\n\n.pa-drawer__title {\n margin: 0;\n flex: 1 1 auto;\n min-width: 0;\n font-weight: 600;\n font-size: 20px;\n line-height: 24px;\n letter-spacing: -0.5px;\n color: var(--pa-color-primary);\n}\n\n.pa-drawer__close {\n flex: 0 0 auto;\n width: 44px;\n height: 44px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--pa-radius-smooth);\n background: transparent;\n border: none;\n color: var(--pa-color-primary);\n cursor: pointer;\n padding: 0;\n margin: -10px -10px 0 0;\n}\n\n.pa-drawer__close:hover {\n background: var(--pa-color-bg-secondary-light-50);\n}\n\n.pa-drawer__close:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-primary-focus-border);\n outline-offset: 2px;\n}\n\n.pa-drawer__body {\n flex: 1 1 auto;\n overflow-y: auto;\n width: 100%;\n margin-top: var(--pa-space-sm);\n}\n\n.pa-drawer__footer {\n display: flex;\n align-items: center;\n gap: var(--pa-space-sm);\n min-height: 64px;\n padding: var(--pa-space-xs) var(--pa-space-lg);\n margin: 0 calc(-1 * var(--pa-space-lg)) calc(-1 * var(--pa-space-lg))\n calc(-1 * var(--pa-space-lg));\n background: var(--pa-color-primary);\n color: var(--pa-color-text-white);\n flex-shrink: 0;\n}\n\n.pa-drawer-backdrop-enter-from,\n.pa-drawer-backdrop-leave-to {\n opacity: 0;\n}\n\n.pa-drawer-backdrop-enter-active {\n transition: opacity 200ms ease-out;\n}\n\n.pa-drawer-backdrop-leave-active {\n transition: opacity 200ms ease-in;\n}\n\n.pa-drawer-right-enter-from,\n.pa-drawer-right-leave-to {\n transform: translateX(100%);\n}\n\n.pa-drawer-left-enter-from,\n.pa-drawer-left-leave-to {\n transform: translateX(-100%);\n}\n\n.pa-drawer-top-enter-from,\n.pa-drawer-top-leave-to {\n transform: translateY(-100%);\n}\n\n.pa-drawer-bottom-enter-from,\n.pa-drawer-bottom-leave-to {\n transform: translateY(100%);\n}\n\n.pa-drawer-right-enter-active,\n.pa-drawer-left-enter-active,\n.pa-drawer-top-enter-active,\n.pa-drawer-bottom-enter-active {\n transition: transform 250ms ease-out;\n}\n\n.pa-drawer-right-leave-active,\n.pa-drawer-left-leave-active,\n.pa-drawer-top-leave-active,\n.pa-drawer-bottom-leave-active {\n transition: transform 200ms ease-in;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .pa-drawer-backdrop-enter-active,\n .pa-drawer-backdrop-leave-active,\n .pa-drawer-right-enter-active,\n .pa-drawer-right-leave-active,\n .pa-drawer-left-enter-active,\n .pa-drawer-left-leave-active,\n .pa-drawer-top-enter-active,\n .pa-drawer-top-leave-active,\n .pa-drawer-bottom-enter-active,\n .pa-drawer-bottom-leave-active {\n transition-duration: 0ms;\n }\n}\n\n@container (max-width: 600px) {\n .pa-drawer {\n padding: var(--pa-space-md);\n }\n\n .pa-drawer--right,\n .pa-drawer--left {\n width: 100vw;\n max-width: none;\n }\n\n .pa-drawer--top,\n .pa-drawer--bottom {\n height: 100vh;\n max-height: none;\n }\n\n .pa-drawer__title {\n font-size: 18px;\n line-height: 22px;\n }\n\n .pa-drawer__footer {\n padding: var(--pa-space-xs) var(--pa-space-md);\n margin: 0 calc(-1 * var(--pa-space-md)) calc(-1 * var(--pa-space-md))\n calc(-1 * var(--pa-space-md));\n }\n}\n</style>\n"],"names":["props","__props","open","_useModel","uid","useId","baseId","computed","titleId","labelledBy","titleTag","drawerRef","ref","closeButtonRef","previouslyFocusedElement","originalBodyOverflow","originalBodyPaddingRight","scrollLockActive","escListenerAttached","FOCUSABLE_SELECTOR","getFocusable","root","onDrawerKeydown","event","focusable","first","last","active","onWindowKeydownEsc","lockScroll","scrollbarWidth","unlockScroll","attachEsc","detachEsc","watch","next","nextTick","onBeforeUnmount","close","_createBlock","_Teleport","_createElementVNode","_normalizeClass","_createVNode","_Transition","_createElementBlock","_hoisted_2","_openBlock","_resolveDynamicComponent","PaIcon","_hoisted_4","_renderSlot","_ctx","$slots","_hoisted_5"],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- export declare function nextPaFileUploadId(): string;
2
1
  export interface PaFileUploadProps {
3
2
  label?: string;
4
3
  helperText?: string;
@@ -1,10 +1,8 @@
1
1
  import o from "./PaFileUpload.vue2.js";
2
- import { nextPaFileUploadId as f } from "./PaFileUpload.vue2.js";
3
2
  /* empty css */
4
- import a from "../../_virtual/_plugin-vue_export-helper.js";
5
- const e = /* @__PURE__ */ a(o, [["__scopeId", "data-v-3ba1b228"]]);
3
+ import t from "../../_virtual/_plugin-vue_export-helper.js";
4
+ const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-d1518cb0"]]);
6
5
  export {
7
- e as default,
8
- f as nextPaFileUploadId
6
+ m as default
9
7
  };
10
8
  //# sourceMappingURL=PaFileUpload.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PaFileUpload.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
1
+ {"version":3,"file":"PaFileUpload.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}