@skdx/vue 0.30.0 → 0.32.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 (225) hide show
  1. package/dist/autocomplete/AutocompleteAnatomy.vue_vue_type_script_setup_true_lang.cjs +1 -1
  2. package/dist/autocomplete/AutocompleteAnatomy.vue_vue_type_script_setup_true_lang.js +1 -1
  3. package/dist/backdrop/Backdrop.vue.cjs +1 -0
  4. package/dist/backdrop/Backdrop.vue.d.cts +12 -0
  5. package/dist/backdrop/Backdrop.vue.d.ts +12 -0
  6. package/dist/backdrop/Backdrop.vue.js +1 -0
  7. package/dist/backdrop/Backdrop.vue_vue_type_script_setup_true_lang.cjs +1 -0
  8. package/dist/backdrop/Backdrop.vue_vue_type_script_setup_true_lang.js +1 -0
  9. package/dist/backdrop/index.cjs +1 -0
  10. package/dist/backdrop/index.d.cts +1 -0
  11. package/dist/backdrop/index.d.ts +1 -0
  12. package/dist/backdrop/index.js +1 -0
  13. package/dist/checkbox-card/CheckboxCard.vue_vue_type_script_setup_true_lang.cjs +1 -1
  14. package/dist/checkbox-card/CheckboxCard.vue_vue_type_script_setup_true_lang.js +1 -1
  15. package/dist/checkbox-group/CheckboxGroupItem.vue.d.cts +7 -4
  16. package/dist/checkbox-group/CheckboxGroupItem.vue.d.ts +7 -4
  17. package/dist/checkbox-group/CheckboxGroupItem.vue_vue_type_script_setup_true_lang.cjs +1 -1
  18. package/dist/checkbox-group/CheckboxGroupItem.vue_vue_type_script_setup_true_lang.js +1 -1
  19. package/dist/checkbox-group/CheckboxGroupSelectAll.vue.d.cts +7 -4
  20. package/dist/checkbox-group/CheckboxGroupSelectAll.vue.d.ts +7 -4
  21. package/dist/checkbox-group/CheckboxGroupSelectAll.vue_vue_type_script_setup_true_lang.cjs +1 -1
  22. package/dist/checkbox-group/CheckboxGroupSelectAll.vue_vue_type_script_setup_true_lang.js +1 -1
  23. package/dist/chip/Chip.vue.cjs +1 -0
  24. package/dist/chip/Chip.vue.d.cts +12 -0
  25. package/dist/chip/Chip.vue.d.ts +12 -0
  26. package/dist/chip/Chip.vue.js +1 -0
  27. package/dist/chip/Chip.vue_vue_type_script_setup_true_lang.cjs +1 -0
  28. package/dist/chip/Chip.vue_vue_type_script_setup_true_lang.js +1 -0
  29. package/dist/chip/index.cjs +1 -0
  30. package/dist/chip/index.d.cts +1 -0
  31. package/dist/chip/index.d.ts +1 -0
  32. package/dist/chip/index.js +1 -0
  33. package/dist/combobox/Combobox.vue_vue_type_script_setup_true_lang.cjs +1 -1
  34. package/dist/combobox/Combobox.vue_vue_type_script_setup_true_lang.js +1 -1
  35. package/dist/combobox/primitives.d.cts +1 -0
  36. package/dist/combobox/primitives.d.ts +1 -0
  37. package/dist/date-picker/DatePickerTimeField.vue.d.cts +1 -1
  38. package/dist/date-picker/DatePickerTimeField.vue.d.ts +1 -1
  39. package/dist/date-picker/DatePickerTrigger.vue_vue_type_script_setup_true_lang.cjs +1 -1
  40. package/dist/date-picker/DatePickerTrigger.vue_vue_type_script_setup_true_lang.js +1 -1
  41. package/dist/date-range-picker/DateRangePicker.vue.cjs +1 -0
  42. package/dist/date-range-picker/DateRangePicker.vue.d.cts +12 -0
  43. package/dist/date-range-picker/DateRangePicker.vue.d.ts +12 -0
  44. package/dist/date-range-picker/DateRangePicker.vue.js +1 -0
  45. package/dist/date-range-picker/DateRangePicker.vue_vue_type_script_setup_true_lang.cjs +1 -0
  46. package/dist/date-range-picker/DateRangePicker.vue_vue_type_script_setup_true_lang.js +1 -0
  47. package/dist/date-range-picker/index.cjs +1 -0
  48. package/dist/date-range-picker/index.d.cts +1 -0
  49. package/dist/date-range-picker/index.d.ts +1 -0
  50. package/dist/date-range-picker/index.js +1 -0
  51. package/dist/date-time-picker/DateTimePicker.vue.cjs +1 -0
  52. package/dist/date-time-picker/DateTimePicker.vue.d.cts +12 -0
  53. package/dist/date-time-picker/DateTimePicker.vue.d.ts +12 -0
  54. package/dist/date-time-picker/DateTimePicker.vue.js +1 -0
  55. package/dist/date-time-picker/DateTimePicker.vue_vue_type_script_setup_true_lang.cjs +1 -0
  56. package/dist/date-time-picker/DateTimePicker.vue_vue_type_script_setup_true_lang.js +1 -0
  57. package/dist/date-time-picker/index.cjs +1 -0
  58. package/dist/date-time-picker/index.d.cts +1 -0
  59. package/dist/date-time-picker/index.d.ts +1 -0
  60. package/dist/date-time-picker/index.js +1 -0
  61. package/dist/dialog/Dialogs.vue.cjs +1 -0
  62. package/dist/dialog/Dialogs.vue.d.cts +17 -0
  63. package/dist/dialog/Dialogs.vue.d.ts +17 -0
  64. package/dist/dialog/Dialogs.vue.js +1 -0
  65. package/dist/dialog/Dialogs.vue_vue_type_script_setup_true_lang.cjs +1 -0
  66. package/dist/dialog/Dialogs.vue_vue_type_script_setup_true_lang.js +1 -0
  67. package/dist/dialog/index.cjs +1 -1
  68. package/dist/dialog/index.d.cts +2 -0
  69. package/dist/dialog/index.d.ts +2 -0
  70. package/dist/dialog/index.js +1 -1
  71. package/dist/fab/Fab.vue.cjs +1 -0
  72. package/dist/fab/Fab.vue.d.cts +12 -0
  73. package/dist/fab/Fab.vue.d.ts +12 -0
  74. package/dist/fab/Fab.vue.js +1 -0
  75. package/dist/fab/Fab.vue_vue_type_script_setup_true_lang.cjs +1 -0
  76. package/dist/fab/Fab.vue_vue_type_script_setup_true_lang.js +1 -0
  77. package/dist/fab/index.cjs +1 -0
  78. package/dist/fab/index.d.cts +1 -0
  79. package/dist/fab/index.d.ts +1 -0
  80. package/dist/fab/index.js +1 -0
  81. package/dist/field/FieldError.vue_vue_type_script_setup_true_lang.cjs +1 -1
  82. package/dist/field/FieldError.vue_vue_type_script_setup_true_lang.js +1 -1
  83. package/dist/file-upload/FileUploadAnatomy.vue_vue_type_script_setup_true_lang.cjs +1 -1
  84. package/dist/file-upload/FileUploadAnatomy.vue_vue_type_script_setup_true_lang.js +1 -1
  85. package/dist/floating-panel/FloatingPanelContent.vue_vue_type_script_setup_true_lang.cjs +1 -1
  86. package/dist/floating-panel/FloatingPanelContent.vue_vue_type_script_setup_true_lang.js +1 -1
  87. package/dist/floating-panel/FloatingPanelRoot.vue_vue_type_script_setup_true_lang.cjs +1 -1
  88. package/dist/floating-panel/FloatingPanelRoot.vue_vue_type_script_setup_true_lang.js +1 -1
  89. package/dist/floating-panel/context.d.cts +4 -0
  90. package/dist/floating-panel/context.d.ts +4 -0
  91. package/dist/gauge/Gauge.vue.cjs +1 -0
  92. package/dist/gauge/Gauge.vue.d.cts +12 -0
  93. package/dist/gauge/Gauge.vue.d.ts +12 -0
  94. package/dist/gauge/Gauge.vue.js +1 -0
  95. package/dist/gauge/Gauge.vue_vue_type_script_setup_true_lang.cjs +1 -0
  96. package/dist/gauge/Gauge.vue_vue_type_script_setup_true_lang.js +1 -0
  97. package/dist/gauge/index.cjs +1 -0
  98. package/dist/gauge/index.d.cts +1 -0
  99. package/dist/gauge/index.d.ts +1 -0
  100. package/dist/gauge/index.js +1 -0
  101. package/dist/grid/Grid.vue.cjs +1 -0
  102. package/dist/grid/Grid.vue.d.cts +12 -0
  103. package/dist/grid/Grid.vue.d.ts +12 -0
  104. package/dist/grid/Grid.vue.js +1 -0
  105. package/dist/grid/Grid.vue_vue_type_script_setup_true_lang.cjs +1 -0
  106. package/dist/grid/Grid.vue_vue_type_script_setup_true_lang.js +1 -0
  107. package/dist/grid/index.cjs +1 -0
  108. package/dist/grid/index.d.cts +1 -0
  109. package/dist/grid/index.d.ts +1 -0
  110. package/dist/grid/index.js +1 -0
  111. package/dist/index.cjs +1 -1
  112. package/dist/index.d.cts +15 -1
  113. package/dist/index.d.ts +15 -1
  114. package/dist/index.js +1 -1
  115. package/dist/listbox/ListboxAnatomy.vue_vue_type_script_setup_true_lang.cjs +1 -1
  116. package/dist/listbox/ListboxAnatomy.vue_vue_type_script_setup_true_lang.js +1 -1
  117. package/dist/paper/Paper.vue.cjs +1 -0
  118. package/dist/paper/Paper.vue.d.cts +12 -0
  119. package/dist/paper/Paper.vue.d.ts +12 -0
  120. package/dist/paper/Paper.vue.js +1 -0
  121. package/dist/paper/Paper.vue_vue_type_script_setup_true_lang.cjs +1 -0
  122. package/dist/paper/Paper.vue_vue_type_script_setup_true_lang.js +1 -0
  123. package/dist/paper/index.cjs +1 -0
  124. package/dist/paper/index.d.cts +1 -0
  125. package/dist/paper/index.d.ts +1 -0
  126. package/dist/paper/index.js +1 -0
  127. package/dist/progress/Progress.vue_vue_type_script_setup_true_lang.cjs +1 -1
  128. package/dist/progress/Progress.vue_vue_type_script_setup_true_lang.js +1 -1
  129. package/dist/select/SelectContent.vue_vue_type_script_setup_true_lang.cjs +1 -1
  130. package/dist/select/SelectContent.vue_vue_type_script_setup_true_lang.js +1 -1
  131. package/dist/speed-dial/SpeedDial.vue.d.cts +5 -0
  132. package/dist/speed-dial/SpeedDial.vue.d.ts +5 -0
  133. package/dist/speed-dial/SpeedDial.vue_vue_type_script_setup_true_lang.cjs +1 -1
  134. package/dist/speed-dial/SpeedDial.vue_vue_type_script_setup_true_lang.js +1 -1
  135. package/dist/speed-dial/SpeedDialAnatomy.vue.d.cts +5 -0
  136. package/dist/speed-dial/SpeedDialAnatomy.vue.d.ts +5 -0
  137. package/dist/speed-dial/SpeedDialAnatomy.vue_vue_type_script_setup_true_lang.cjs +1 -1
  138. package/dist/speed-dial/SpeedDialAnatomy.vue_vue_type_script_setup_true_lang.js +1 -1
  139. package/dist/speed-dial/SpeedDialContent.vue_vue_type_script_setup_true_lang.cjs +1 -1
  140. package/dist/speed-dial/SpeedDialContent.vue_vue_type_script_setup_true_lang.js +1 -1
  141. package/dist/stack/Stack.vue.cjs +1 -0
  142. package/dist/stack/Stack.vue.d.cts +12 -0
  143. package/dist/stack/Stack.vue.d.ts +12 -0
  144. package/dist/stack/Stack.vue.js +1 -0
  145. package/dist/stack/Stack.vue_vue_type_script_setup_true_lang.cjs +1 -0
  146. package/dist/stack/Stack.vue_vue_type_script_setup_true_lang.js +1 -0
  147. package/dist/stack/index.cjs +1 -0
  148. package/dist/stack/index.d.cts +1 -0
  149. package/dist/stack/index.d.ts +1 -0
  150. package/dist/stack/index.js +1 -0
  151. package/dist/table/Table.vue.d.cts +14 -3
  152. package/dist/table/Table.vue.d.ts +14 -3
  153. package/dist/table/Table.vue_vue_type_script_setup_true_lang.cjs +1 -1
  154. package/dist/table/Table.vue_vue_type_script_setup_true_lang.js +1 -1
  155. package/dist/table/TableAnatomy.vue.d.cts +1 -0
  156. package/dist/table/TableAnatomy.vue.d.ts +1 -0
  157. package/dist/table/TableAnatomy.vue_vue_type_script_setup_true_lang.cjs +1 -1
  158. package/dist/table/TableAnatomy.vue_vue_type_script_setup_true_lang.js +1 -1
  159. package/dist/table/TableColumnHeaderFilterInput.vue.cjs +1 -0
  160. package/dist/table/TableColumnHeaderFilterInput.vue.d.cts +11 -0
  161. package/dist/table/TableColumnHeaderFilterInput.vue.d.ts +11 -0
  162. package/dist/table/TableColumnHeaderFilterInput.vue.js +1 -0
  163. package/dist/table/TableColumnHeaderFilterInput.vue_vue_type_script_setup_true_lang.cjs +1 -0
  164. package/dist/table/TableColumnHeaderFilterInput.vue_vue_type_script_setup_true_lang.js +1 -0
  165. package/dist/table/TableHeaderCell.vue.d.cts +6 -0
  166. package/dist/table/TableHeaderCell.vue.d.ts +6 -0
  167. package/dist/table/TableHeaderCell.vue_vue_type_script_setup_true_lang.cjs +1 -1
  168. package/dist/table/TableHeaderCell.vue_vue_type_script_setup_true_lang.js +1 -1
  169. package/dist/table/context.d.cts +11 -0
  170. package/dist/table/context.d.ts +11 -0
  171. package/dist/table/index.d.cts +1 -1
  172. package/dist/table/index.d.ts +1 -1
  173. package/dist/table/primitives.cjs +1 -1
  174. package/dist/table/primitives.d.cts +2 -1
  175. package/dist/table/primitives.d.ts +2 -1
  176. package/dist/table/primitives.js +1 -1
  177. package/dist/timeline/Timeline.vue.d.cts +5 -0
  178. package/dist/timeline/Timeline.vue.d.ts +5 -0
  179. package/dist/timeline/Timeline.vue_vue_type_script_setup_true_lang.cjs +1 -1
  180. package/dist/timeline/Timeline.vue_vue_type_script_setup_true_lang.js +1 -1
  181. package/dist/timeline/TimelineAnatomy.vue.d.cts +4 -0
  182. package/dist/timeline/TimelineAnatomy.vue.d.ts +4 -0
  183. package/dist/timeline/TimelineAnatomy.vue_vue_type_script_setup_true_lang.cjs +1 -1
  184. package/dist/timeline/TimelineAnatomy.vue_vue_type_script_setup_true_lang.js +1 -1
  185. package/dist/timeline/types.d.cts +2 -2
  186. package/dist/timeline/types.d.ts +2 -2
  187. package/dist/tooltip/Tooltip.vue.cjs +1 -0
  188. package/dist/tooltip/Tooltip.vue.d.cts +12 -0
  189. package/dist/tooltip/Tooltip.vue.d.ts +12 -0
  190. package/dist/tooltip/Tooltip.vue.js +1 -0
  191. package/dist/tooltip/Tooltip.vue_vue_type_script_setup_true_lang.cjs +1 -0
  192. package/dist/tooltip/Tooltip.vue_vue_type_script_setup_true_lang.js +1 -0
  193. package/dist/tooltip/index.cjs +1 -0
  194. package/dist/tooltip/index.d.cts +1 -0
  195. package/dist/tooltip/index.d.ts +1 -0
  196. package/dist/tooltip/index.js +1 -0
  197. package/dist/tree-select/TreeSelect.vue.d.cts +2 -2
  198. package/dist/tree-select/TreeSelect.vue.d.ts +2 -2
  199. package/dist/utils/csv.cjs +2 -0
  200. package/dist/utils/csv.d.cts +43 -0
  201. package/dist/utils/csv.d.ts +43 -0
  202. package/dist/utils/csv.js +1 -0
  203. package/dist/utils/dialogs.cjs +1 -0
  204. package/dist/utils/dialogs.d.cts +96 -0
  205. package/dist/utils/dialogs.d.ts +96 -0
  206. package/dist/utils/dialogs.js +1 -0
  207. package/dist/utils/dismissal.cjs +1 -1
  208. package/dist/utils/dismissal.d.cts +7 -0
  209. package/dist/utils/dismissal.d.ts +7 -0
  210. package/dist/utils/dismissal.js +1 -1
  211. package/dist/utils/field-core.cjs +1 -1
  212. package/dist/utils/field-core.d.cts +2 -0
  213. package/dist/utils/field-core.d.ts +2 -0
  214. package/dist/utils/field-core.js +1 -1
  215. package/dist/utils/media-query.cjs +1 -0
  216. package/dist/utils/media-query.d.cts +7 -0
  217. package/dist/utils/media-query.d.ts +7 -0
  218. package/dist/utils/media-query.js +1 -0
  219. package/dist/utils/useDismiss.cjs +1 -1
  220. package/dist/utils/useDismiss.js +1 -1
  221. package/dist/utils/useMediaQuery.cjs +1 -0
  222. package/dist/utils/useMediaQuery.d.cts +11 -0
  223. package/dist/utils/useMediaQuery.d.ts +11 -0
  224. package/dist/utils/useMediaQuery.js +1 -0
  225. package/package.json +102 -2
@@ -1 +1 @@
1
- var t="validity-change",e="data-skdx-field",i="data-skdx-field-name",s="data-skdx-field-message",r="data-skdx-field-description",o="data-skdx-field-error",a="data-skdx-field-character-count",n="data-skdx-field-pending",l="data-skdx-field-resubmit",d="data-skdx-form-field",h="data-skdx-form-message",u=["validity-change","invalid","change","blur"],c="data-skdx-error-summary",m=1e3;function p(t){const e=Math.abs(t),i=1===e?"character":"characters";return t<0?`You have ${e} ${i} too many`:`You have ${e} ${i} remaining`}function b(t,e,i=0){return i<=0||t>=e*i/100}var f="This field is invalid.",v="data-skdx-field-control",y=[`[${v}]`,'input:not([type="hidden"])',"select","textarea",'[role="textbox"]','[role="searchbox"]','[role="combobox"]','[role="listbox"]','[role="radiogroup"]','[role="group"]','[role="slider"]','[role="spinbutton"]','[role="checkbox"]','[role="radio"]','[role="switch"]'].join(", "),g="data-skdx-field-required-indicator",T=/* @__PURE__ */new Set(["INPUT","SELECT","TEXTAREA"]),A=/* @__PURE__ */new Set(["radiogroup","group"]),E=['input:not([disabled]):not([type="hidden"])',"select:not([disabled])","textarea:not([disabled])","button:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(", ");function I(t){return null==t?[]:(Array.isArray(t)?t:[t]).filter(t=>"string"==typeof t&&""!==t.trim())}function L(t){for(const e of Array.from(t.querySelectorAll(y)))if("true"!==e.getAttribute("aria-hidden")&&e.closest("[data-skdx-field]")===t)return e;return null}function S(t,i){return C(t,e,i)}function C(t,e,i){for(const s of Array.from(t.querySelectorAll(i)))if(s.closest(`[${e}]`)===t)return s;return null}function x(t){if(!t)return;const e=t;return"checkbox"===e.type||"radio"===e.type?e.checked:"value"in t?e.value:t.querySelector('input[aria-hidden="true"]')?.value}function R(t){return null!=t&&!1!==t&&""!==t&&!(Array.isArray(t)&&0===t.length)}function _(t,e,i){i?t.setAttribute(e,""):t.removeAttribute(e)}function D(t,...e){const i=t.split(/\s+/).filter(Boolean);for(const t of e)t&&!i.includes(t)&&i.push(t);return i.join(" ")}function k(t){return t.closest("form, skdx-form")??t.parentElement??t}function w(t){const e=L(t),i=S(t,"[data-skdx-field-error]")?.textContent?.trim()||t.getAttribute("data-skdx-field-message")||t.getAttribute("data-skdx-field-name")||"";return e?.id&&i?[{id:e.id,message:i}]:[]}function B(t){const e=C(t,d,y);if(!e?.id||"true"!==e.getAttribute("aria-invalid"))return[];const i=C(t,"data-skdx-form-field","[data-skdx-form-message]:not([hidden])")?.textContent?.trim()||t.getAttribute("data-skdx-field-name")||"";return i?[{id:e.id,message:i}]:[]}function F(t){return Array.from(t.querySelectorAll(`[${e}][data-invalid], [${d}]`)).flatMap(t=>(t.hasAttribute("data-skdx-field")?w:B)(t))}var V="__skdxFieldCheckValidity",O="__skdxFieldReset";async function M(t){const i=Array.from(t.querySelectorAll(`[${e}]`));return(await Promise.all(i.map(t=>t[V]?.()??Promise.resolve(!0)))).every(Boolean)}function q(t){for(const i of Array.from(t.querySelectorAll(`[${e}]`)))i[O]?.()}function N(t,e=document){const i=e.getElementById(t);if(!i)return;const s=i.getAttribute("role"),r=("FIELDSET"===i.tagName||null!==s&&A.has(s)?i.querySelector(E):null)??i;r.focus(),r.scrollIntoView?.({block:"center"})}var U=class{constructor(t){this.options=t,this.props={},this.root=null,this.form=null,this.control=null,this.baseDescribedBy="",this.baseLabelledBy="",this.wroteLabelledBy=!1,this.wroteRequired=!1,this.wroteDisabled=!1,this.wroteGroupDisabled=!1,this.runToken=0,this.pending=!1,this.injected=[],this.custom=[],this.characterCount=null,this.awaitingSubmit=!1,this.handleInput=()=>{const t=this.isOverLimit(this.snapshot.count),e=this.readCount();this.update({dirty:!0,filled:R(this.resolveValue()),count:e,errors:this.composeErrors(e)}),this.scheduleCountAnnouncement(e,t),("change"===this.props.mode||this.snapshot.errors.length>0)&&this.scheduleValidation()},this.handleFocusOut=()=>{const t=this.readCount();this.update({touched:!0,filled:R(this.resolveValue()),count:t,errors:this.composeErrors(t)});const e=void 0!==this.validationTimer;clearTimeout(this.validationTimer),this.validationTimer=void 0;const i=this.props.mode??"blur";(e||"blur"===i||this.snapshot.errors.length>0)&&this.runValidation()},this.handleSubmit=t=>{if(!this.form)return;const e=t.target;if(e!==this.form&&e?.closest?.("form")!==this.form||this.isEngineResubmit(t))return;this.markTouched();const i=this.runValidation({silent:this.hasErrorSummary()});if(P(i))return t.preventDefault(),this.awaitingSubmit=!0,void Promise.resolve(i).then(()=>{this.awaitingSubmit&&(this.awaitingSubmit=!1,this.resubmitIfSettled())});(i.length>0||this.pending)&&t.preventDefault()},this.snapshot={controlId:"",errors:[],valid:!0,touched:!1,dirty:!1,filled:!1,count:0,validity:null}}get state(){return this.snapshot}setProps(t){const e=this.props.value;this.props=t;const i=I(t.errors??null),s=!function(t,e){return t.length===e.length&&t.every((t,i)=>t===e[i])}(this.injected,i);s&&(this.injected=i);const r=t.value!==e;if(!s&&!r)return;const o=this.readCount();this.update({count:o,filled:R(this.resolveValue()),errors:this.composeErrors(o)})}setCharacterCount(t){if((this.characterCount?.maxLength??null)===(t?.maxLength??null)&&(this.characterCount?.threshold??0)===(t?.threshold??0))return;this.characterCount=t;const e=this.readCount();this.update({count:e,errors:this.composeErrors(e)})}readCount(){const t=this.resolveValue();return"string"==typeof t?t.length:0}countMessage(t){return(this.props.getCharacterCountMessage??p)(t)}isOverLimit(t){return null!==this.characterCount&&t>this.characterCount.maxLength}composeErrors(t=this.snapshot.count){const e=[...this.injected,...this.custom];return this.characterCount&&this.isOverLimit(t)&&e.push(this.countMessage(this.characterCount.maxLength-t)),e}scheduleCountAnnouncement(t,e){const i=this.characterCount;if(!i)return;if(clearTimeout(this.announceTimer),this.isOverLimit(t))return void(e||this.options.announce(this.countMessage(i.maxLength-t),"assertive"));if(!b(t,i.maxLength,i.threshold))return;const s=i.maxLength-t;this.announceTimer=setTimeout(()=>{this.options.announce(this.countMessage(s),"polite")},1e3)}connect(t){this.root=t,t.setAttribute(e,""),Object.defineProperty(t,V,{value:()=>this.validate(),configurable:!0,enumerable:!1,writable:!0}),Object.defineProperty(t,O,{value:()=>this.reset(),configurable:!0,enumerable:!1,writable:!0}),t.addEventListener("input",this.handleInput,!0),t.addEventListener("change",this.handleInput,!0),t.addEventListener("focusout",this.handleFocusOut,!0),this.form=t.closest("form"),this.form&&t.ownerDocument.addEventListener("submit",this.handleSubmit,!0),this.sync();const i=this.readCount();this.update({filled:R(this.resolveValue()),count:i,errors:this.composeErrors(i)})}disconnect(){clearTimeout(this.announceTimer),clearTimeout(this.validationTimer),this.validationTimer=void 0,this.awaitingSubmit=!1;const t=this.root;t&&(t.removeEventListener("input",this.handleInput,!0),t.removeEventListener("change",this.handleInput,!0),t.removeEventListener("focusout",this.handleFocusOut,!0),this.form&&t.ownerDocument.removeEventListener("submit",this.handleSubmit,!0),delete t[V],delete t[O],this.root=null,this.form=null,this.control=null)}sync(){const t=this.root;if(!t)return;const e=L(t);e!==this.control&&(this.control=e,this.baseDescribedBy=e?.getAttribute("aria-describedby")??"",this.baseLabelledBy=e?.getAttribute("aria-labelledby")??"",this.wroteLabelledBy=!1,this.wroteRequired=!1,this.wroteDisabled=!1,this.wroteGroupDisabled=!1);const{name:r}=this.props;r?t.setAttribute(i,r):t.removeAttribute(i);const o=this.snapshot.errors.join(" ");o?t.setAttribute(s,o):t.removeAttribute(s),this.applyStateAttributes(t),e&&(e.id||(e.id=this.options.controlId),e.id!==this.snapshot.controlId&&(this.snapshot={...this.snapshot,controlId:e.id,validity:this.readValidity()},this.options.onSnapshotChange(this.snapshot)),this.applyDescribedBy(t,e),this.snapshot.errors.length>0?e.setAttribute("aria-invalid","true"):e.removeAttribute("aria-invalid"),this.applyLabelledBy(t,e),this.applyConstraintState(e),this.applyStateAttributes(e))}applyDescribedBy(t,e){const i=null!==S(t,`[${r}]`),s=null!==S(t,`[${o}]`),a=D(this.baseDescribedBy,i?this.options.descriptionId:void 0,s?this.options.errorId:void 0);a?e.setAttribute("aria-describedby",a):e.removeAttribute("aria-describedby")}applyLabelledBy(t,e){const i=null!==t.ownerDocument.getElementById(this.options.labelId);this.options.grouped&&i?(e.setAttribute("aria-labelledby",D(this.baseLabelledBy,this.options.labelId)),this.wroteLabelledBy=!0):this.wroteLabelledBy&&(this.baseLabelledBy?e.setAttribute("aria-labelledby",this.baseLabelledBy):e.removeAttribute("aria-labelledby"),this.wroteLabelledBy=!1)}applyConstraintState(t){const e=T.has(t.tagName),i=!0===this.props.required,s=!0===this.props.disabled;i?(e?t.setAttribute("required",""):t.setAttribute("aria-required","true"),this.wroteRequired=!0):this.wroteRequired&&(t.removeAttribute(e?"required":"aria-required"),this.wroteRequired=!1),s?(e?t.setAttribute("disabled",""):t.setAttribute("aria-disabled","true"),this.wroteDisabled=!0):this.wroteDisabled&&(t.removeAttribute(e?"disabled":"aria-disabled"),this.wroteDisabled=!1),e||this.applyGroupDisabled(t,s)}applyGroupDisabled(t,e){const i=t.getAttribute("role");if(("FIELDSET"===t.tagName||null!==i&&A.has(i))&&(e||this.wroteGroupDisabled)){for(const i of t.querySelectorAll("input, select, textarea, button"))e?i.setAttribute("disabled",""):i.removeAttribute("disabled");this.wroteGroupDisabled=e}}validate(){return Promise.resolve(this.runValidation()).then(t=>0===t.length)}reset(){this.injected=[],this.custom=[],this.pending=!1,this.awaitingSubmit=!1,this.runToken++,clearTimeout(this.announceTimer),clearTimeout(this.validationTimer),this.validationTimer=void 0,this.markPending(!1);const t=this.readCount();this.update({touched:!1,dirty:!1,count:t,filled:R(this.resolveValue()),errors:this.composeErrors(t)}),this.sync()}markTouched(){this.snapshot.touched||this.update({touched:!0})}applyStateAttributes(t){const{errors:e,touched:i,dirty:s,filled:r,count:o}=this.snapshot;_(t,"data-invalid",e.length>0),_(t,"data-valid",0===e.length),_(t,"data-touched",i),_(t,"data-dirty",s),_(t,"data-filled",r),_(t,"data-over-limit",this.isOverLimit(o)),_(t,"data-disabled",!0===this.props.disabled)}resolveValue(){return void 0!==this.props.value?this.props.value:x(this.control)}readValidity(){return this.control?.validity??null}markPending(t){this.root&&_(this.root,n,t)}nativeMessage(){const t=this.control;return!t?.validity||t.validity.valid?null:t.validationMessage||this.props.invalidMessage||"This field is invalid."}runValidation(t={}){const e=++this.runToken,i=this.props.validate?.(this.resolveValue());return P(i)?(this.pending=!0,this.markPending(!0),Promise.resolve(i).then(i=>e!==this.runToken?this.snapshot.errors:(this.pending=!1,this.markPending(!1),this.commit(i,t)))):this.commit(i,t)}commit(t,e){if(this.custom=I(t),0===this.custom.length){const t=this.nativeMessage();t&&!this.injected.includes(t)&&(this.custom=[t])}const i=this.readCount(),s=this.composeErrors(i),r=0===this.snapshot.errors.length;this.update({errors:s,count:i,filled:R(this.resolveValue())});const o=s[0];return o&&r&&!e.silent&&this.options.announce(o,"assertive"),s}update(e){const i={...this.snapshot,...e,valid:!0,validity:this.readValidity()};i.valid=0===i.errors.length,!function(t,e){return t.controlId===e.controlId&&t.valid===e.valid&&t.touched===e.touched&&t.dirty===e.dirty&&t.filled===e.filled&&t.count===e.count&&t.validity===e.validity&&t.errors.length===e.errors.length&&t.errors.every((t,i)=>t===e.errors[i])}(this.snapshot,i)&&(this.snapshot=i,this.sync(),this.options.onSnapshotChange(i),this.root?.dispatchEvent(new CustomEvent(t,{bubbles:!0,composed:!0,detail:{valid:i.valid,errors:i.errors,touched:i.touched,dirty:i.dirty,filled:i.filled,count:i.count,validity:i.validity}})))}scheduleValidation(){clearTimeout(this.validationTimer),this.validationTimer=void 0;const t="change"===this.props.mode?this.props.validationDebounceTime??0:0;t<=0?this.runValidation():this.validationTimer=setTimeout(()=>{this.validationTimer=void 0,this.runValidation()},t)}hasErrorSummary(){return null!=this.form?.querySelector(`[${c}]`)}isEngineResubmit(t){return!!this.form?.hasAttribute("data-skdx-field-resubmit")&&(this.snapshot.errors.length>0&&t.preventDefault(),!0)}resubmitIfSettled(){const t=this.form;if(t&&"function"==typeof t.requestSubmit&&!t.querySelector("[data-skdx-field-pending]")&&!t.querySelector("[data-skdx-field][data-invalid]")){t.setAttribute(l,"");try{t.requestSubmit()}finally{t.removeAttribute(l)}}}};function P(t){return"function"==typeof t?.then}export{m as CHARACTER_COUNT_ANNOUNCE_DELAY_MS,u as ERROR_SUMMARY_RESCAN_EVENTS,a as FIELD_CHARACTER_COUNT_ATTRIBUTE,v as FIELD_CONTROL_ATTRIBUTE,y as FIELD_CONTROL_SELECTOR,r as FIELD_DESCRIPTION_ATTRIBUTE,o as FIELD_ERROR_ATTRIBUTE,c as FIELD_ERROR_SUMMARY_ATTRIBUTE,s as FIELD_MESSAGE_ATTRIBUTE,i as FIELD_NAME_ATTRIBUTE,n as FIELD_PENDING_ATTRIBUTE,g as FIELD_REQUIRED_INDICATOR_ATTRIBUTE,l as FIELD_RESUBMIT_ATTRIBUTE,e as FIELD_ROOT_ATTRIBUTE,t as FIELD_VALIDITY_CHANGE_EVENT,d as FORM_FIELD_ATTRIBUTE,h as FORM_MESSAGE_ATTRIBUTE,U as FieldController,f as NATIVE_INVALID_FALLBACK_MESSAGE,p as characterCountMessage,b as characterCountVisible,F as collectFieldErrors,k as errorSummaryScope,L as findFieldControl,N as focusFieldTarget,R as isFilled,I as normalizeMessages,x as readControlValue,q as resetFields,M as validateFields};
1
+ var t="validity-change",e="data-skdx-field",i="data-skdx-field-name",s="data-skdx-field-message",r="data-skdx-field-description",o="data-skdx-field-error",n="data-skdx-field-character-count",a="data-skdx-field-pending",l="data-skdx-field-resubmit",d="data-skdx-form-field",u="data-skdx-form-message",h=["validity-change","invalid","change","blur"],c="data-skdx-error-summary",m=1e3;function p(t){const e=Math.abs(t),i=1===e?"character":"characters";return t<0?`You have ${e} ${i} too many`:`You have ${e} ${i} remaining`}function b(t,e,i=0){return i<=0||t>=e*i/100}function f(t){return t.map((e,i)=>i===t.length-1||/[.!?]$/.test(e)?e:`${e}.`).join(" ")}var v="This field is invalid.",y="data-skdx-field-control",g=[`[${y}]`,'input:not([type="hidden"])',"select","textarea",'[role="textbox"]','[role="searchbox"]','[role="combobox"]','[role="listbox"]','[role="radiogroup"]','[role="group"]','[role="slider"]','[role="spinbutton"]','[role="checkbox"]','[role="radio"]','[role="switch"]'].join(", "),T="data-skdx-field-required-indicator",A=/* @__PURE__ */new Set(["INPUT","SELECT","TEXTAREA"]),E=/* @__PURE__ */new Set(["radiogroup","group"]),I=['input:not([disabled]):not([type="hidden"])',"select:not([disabled])","textarea:not([disabled])","button:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(", ");function L(t){return null==t?[]:(Array.isArray(t)?t:[t]).filter(t=>"string"==typeof t&&""!==t.trim())}function S(t){for(const e of Array.from(t.querySelectorAll(g)))if("true"!==e.getAttribute("aria-hidden")&&e.closest("[data-skdx-field]")===t)return e;return null}function C(t,i){return x(t,e,i)}function x(t,e,i){for(const s of Array.from(t.querySelectorAll(i)))if(s.closest(`[${e}]`)===t)return s;return null}function R(t){if(!t)return;const e=t;return"checkbox"===e.type||"radio"===e.type?e.checked:"value"in t?e.value:t.querySelector('input[aria-hidden="true"]')?.value}function _(t){return null!=t&&!1!==t&&""!==t&&!(Array.isArray(t)&&0===t.length)}function D(t,e,i){i?t.setAttribute(e,""):t.removeAttribute(e)}function k(t,...e){const i=t.split(/\s+/).filter(Boolean);for(const t of e)t&&!i.includes(t)&&i.push(t);return i.join(" ")}function w(t){return t.closest("form, skdx-form")??t.parentElement??t}function B(t){const e=S(t),i=C(t,"[data-skdx-field-error]")?.textContent?.trim()||t.getAttribute("data-skdx-field-message")||t.getAttribute("data-skdx-field-name")||"";return e?.id&&i?[{id:e.id,message:i}]:[]}function F(t){const e=x(t,d,g);if(!e?.id||"true"!==e.getAttribute("aria-invalid"))return[];const i=x(t,"data-skdx-form-field","[data-skdx-form-message]:not([hidden])")?.textContent?.trim()||t.getAttribute("data-skdx-field-name")||"";return i?[{id:e.id,message:i}]:[]}function V(t){return Array.from(t.querySelectorAll(`[${e}][data-invalid], [${d}]`)).flatMap(t=>(t.hasAttribute("data-skdx-field")?B:F)(t))}var O="__skdxFieldCheckValidity",M="__skdxFieldReset";async function q(t){const i=Array.from(t.querySelectorAll(`[${e}]`));return(await Promise.all(i.map(t=>t[O]?.()??Promise.resolve(!0)))).every(Boolean)}function N(t){for(const i of Array.from(t.querySelectorAll(`[${e}]`)))i[M]?.()}function U(t,e=document){const i=e.getElementById(t);if(!i)return;const s=i.getAttribute("role"),r=("FIELDSET"===i.tagName||null!==s&&E.has(s)?i.querySelector(I):null)??i;r.focus(),r.scrollIntoView?.({block:"center"})}var P=class{constructor(t){this.options=t,this.props={},this.root=null,this.form=null,this.control=null,this.baseDescribedBy="",this.baseLabelledBy="",this.wroteLabelledBy=!1,this.wroteRequired=!1,this.wroteDisabled=!1,this.wroteGroupDisabled=!1,this.runToken=0,this.pending=!1,this.injected=[],this.custom=[],this.characterCount=null,this.awaitingSubmit=!1,this.handleInput=()=>{const t=this.isOverLimit(this.snapshot.count),e=this.readCount();this.update({dirty:!0,filled:_(this.resolveValue()),count:e,errors:this.composeErrors(e)}),this.scheduleCountAnnouncement(e,t),("change"===this.props.mode||this.snapshot.errors.length>0)&&this.scheduleValidation()},this.handleFocusOut=()=>{const t=this.readCount();this.update({touched:!0,filled:_(this.resolveValue()),count:t,errors:this.composeErrors(t)});const e=void 0!==this.validationTimer;clearTimeout(this.validationTimer),this.validationTimer=void 0;const i=this.props.mode??"blur";(e||"blur"===i||this.snapshot.errors.length>0)&&this.runValidation()},this.handleSubmit=t=>{if(!this.form)return;const e=t.target;if(e!==this.form&&e?.closest?.("form")!==this.form||this.isEngineResubmit(t))return;this.markTouched();const i=this.runValidation({silent:this.hasErrorSummary()});if($(i))return t.preventDefault(),this.awaitingSubmit=!0,void Promise.resolve(i).then(()=>{this.awaitingSubmit&&(this.awaitingSubmit=!1,this.resubmitIfSettled())});(i.length>0||this.pending)&&t.preventDefault()},this.snapshot={controlId:"",errors:[],valid:!0,touched:!1,dirty:!1,filled:!1,count:0,validity:null}}get state(){return this.snapshot}setProps(t){const e=this.props.value;this.props=t;const i=L(t.errors??null),s=!function(t,e){return t.length===e.length&&t.every((t,i)=>t===e[i])}(this.injected,i);s&&(this.injected=i);const r=t.value!==e;if(!s&&!r)return;const o=this.readCount();this.update({count:o,filled:_(this.resolveValue()),errors:this.composeErrors(o)})}setCharacterCount(t){if((this.characterCount?.maxLength??null)===(t?.maxLength??null)&&(this.characterCount?.threshold??0)===(t?.threshold??0))return;this.characterCount=t;const e=this.readCount();this.update({count:e,errors:this.composeErrors(e)})}readCount(){const t=this.resolveValue();return"string"==typeof t?t.length:0}countMessage(t){return(this.props.getCharacterCountMessage??p)(t)}isOverLimit(t){return null!==this.characterCount&&t>this.characterCount.maxLength}composeErrors(t=this.snapshot.count){const e=[...this.injected,...this.custom];return this.characterCount&&this.isOverLimit(t)&&e.push(this.countMessage(this.characterCount.maxLength-t)),e}scheduleCountAnnouncement(t,e){const i=this.characterCount;if(!i)return;if(clearTimeout(this.announceTimer),this.isOverLimit(t))return void(e||this.options.announce(this.countMessage(i.maxLength-t),"assertive"));if(!b(t,i.maxLength,i.threshold))return;const s=i.maxLength-t;this.announceTimer=setTimeout(()=>{this.options.announce(this.countMessage(s),"polite")},1e3)}connect(t){this.root=t,t.setAttribute(e,""),Object.defineProperty(t,O,{value:()=>this.validate(),configurable:!0,enumerable:!1,writable:!0}),Object.defineProperty(t,M,{value:()=>this.reset(),configurable:!0,enumerable:!1,writable:!0}),t.addEventListener("input",this.handleInput,!0),t.addEventListener("change",this.handleInput,!0),t.addEventListener("focusout",this.handleFocusOut,!0),this.form=t.closest("form"),this.form&&t.ownerDocument.addEventListener("submit",this.handleSubmit,!0),this.sync();const i=this.readCount();this.update({filled:_(this.resolveValue()),count:i,errors:this.composeErrors(i)})}disconnect(){clearTimeout(this.announceTimer),clearTimeout(this.validationTimer),this.validationTimer=void 0,this.awaitingSubmit=!1;const t=this.root;t&&(t.removeEventListener("input",this.handleInput,!0),t.removeEventListener("change",this.handleInput,!0),t.removeEventListener("focusout",this.handleFocusOut,!0),this.form&&t.ownerDocument.removeEventListener("submit",this.handleSubmit,!0),delete t[O],delete t[M],this.root=null,this.form=null,this.control=null)}sync(){const t=this.root;if(!t)return;const e=S(t);e!==this.control&&(this.control=e,this.baseDescribedBy=e?.getAttribute("aria-describedby")??"",this.baseLabelledBy=e?.getAttribute("aria-labelledby")??"",this.wroteLabelledBy=!1,this.wroteRequired=!1,this.wroteDisabled=!1,this.wroteGroupDisabled=!1);const{name:r}=this.props;r?t.setAttribute(i,r):t.removeAttribute(i);const o=this.snapshot.errors.join(" ");o?t.setAttribute(s,o):t.removeAttribute(s),this.applyStateAttributes(t),e&&(e.id||(e.id=this.options.controlId),e.id!==this.snapshot.controlId&&(this.snapshot={...this.snapshot,controlId:e.id,validity:this.readValidity()},this.options.onSnapshotChange(this.snapshot)),this.applyDescribedBy(t,e),this.snapshot.errors.length>0?e.setAttribute("aria-invalid","true"):e.removeAttribute("aria-invalid"),this.applyLabelledBy(t,e),this.applyConstraintState(e),this.applyStateAttributes(e))}applyDescribedBy(t,e){const i=null!==C(t,`[${r}]`),s=null!==C(t,`[${o}]`),n=k(this.baseDescribedBy,i?this.options.descriptionId:void 0,s?this.options.errorId:void 0);n?e.setAttribute("aria-describedby",n):e.removeAttribute("aria-describedby")}applyLabelledBy(t,e){const i=null!==t.ownerDocument.getElementById(this.options.labelId);this.options.grouped&&i?(e.setAttribute("aria-labelledby",k(this.baseLabelledBy,this.options.labelId)),this.wroteLabelledBy=!0):this.wroteLabelledBy&&(this.baseLabelledBy?e.setAttribute("aria-labelledby",this.baseLabelledBy):e.removeAttribute("aria-labelledby"),this.wroteLabelledBy=!1)}applyConstraintState(t){const e=A.has(t.tagName),i=!0===this.props.required,s=!0===this.props.disabled;i?(e?t.setAttribute("required",""):t.setAttribute("aria-required","true"),this.wroteRequired=!0):this.wroteRequired&&(t.removeAttribute(e?"required":"aria-required"),this.wroteRequired=!1),s?(e?t.setAttribute("disabled",""):t.setAttribute("aria-disabled","true"),this.wroteDisabled=!0):this.wroteDisabled&&(t.removeAttribute(e?"disabled":"aria-disabled"),this.wroteDisabled=!1),e||this.applyGroupDisabled(t,s)}applyGroupDisabled(t,e){const i=t.getAttribute("role");if(("FIELDSET"===t.tagName||null!==i&&E.has(i))&&(e||this.wroteGroupDisabled)){for(const i of t.querySelectorAll("input, select, textarea, button"))e?i.setAttribute("disabled",""):i.removeAttribute("disabled");this.wroteGroupDisabled=e}}validate(){return Promise.resolve(this.runValidation()).then(t=>0===t.length)}reset(){this.injected=[],this.custom=[],this.pending=!1,this.awaitingSubmit=!1,this.runToken++,clearTimeout(this.announceTimer),clearTimeout(this.validationTimer),this.validationTimer=void 0,this.markPending(!1);const t=this.readCount();this.update({touched:!1,dirty:!1,count:t,filled:_(this.resolveValue()),errors:this.composeErrors(t)}),this.sync()}markTouched(){this.snapshot.touched||this.update({touched:!0})}applyStateAttributes(t){const{errors:e,touched:i,dirty:s,filled:r,count:o}=this.snapshot;D(t,"data-invalid",e.length>0),D(t,"data-valid",0===e.length),D(t,"data-touched",i),D(t,"data-dirty",s),D(t,"data-filled",r),D(t,"data-over-limit",this.isOverLimit(o)),D(t,"data-disabled",!0===this.props.disabled)}resolveValue(){return void 0!==this.props.value?this.props.value:R(this.control)}readValidity(){return this.control?.validity??null}markPending(t){this.root&&D(this.root,a,t)}nativeMessage(){const t=this.control;return!t?.validity||t.validity.valid?null:t.validationMessage||this.props.invalidMessage||"This field is invalid."}runValidation(t={}){const e=++this.runToken,i=this.props.validate?.(this.resolveValue());return $(i)?(this.pending=!0,this.markPending(!0),Promise.resolve(i).then(i=>e!==this.runToken?this.snapshot.errors:(this.pending=!1,this.markPending(!1),this.commit(i,t)))):this.commit(i,t)}commit(t,e){if(this.custom=L(t),0===this.custom.length){const t=this.nativeMessage();t&&!this.injected.includes(t)&&(this.custom=[t])}const i=this.readCount(),s=this.composeErrors(i),r=0===this.snapshot.errors.length;this.update({errors:s,count:i,filled:_(this.resolveValue())});const o=s[0];return o&&r&&!e.silent&&this.options.announce(o,"assertive"),s}update(e){const i={...this.snapshot,...e,valid:!0,validity:this.readValidity()};i.valid=0===i.errors.length,!function(t,e){return t.controlId===e.controlId&&t.valid===e.valid&&t.touched===e.touched&&t.dirty===e.dirty&&t.filled===e.filled&&t.count===e.count&&t.validity===e.validity&&t.errors.length===e.errors.length&&t.errors.every((t,i)=>t===e.errors[i])}(this.snapshot,i)&&(this.snapshot=i,this.sync(),this.options.onSnapshotChange(i),this.root?.dispatchEvent(new CustomEvent(t,{bubbles:!0,composed:!0,detail:{valid:i.valid,errors:i.errors,touched:i.touched,dirty:i.dirty,filled:i.filled,count:i.count,validity:i.validity}})))}scheduleValidation(){clearTimeout(this.validationTimer),this.validationTimer=void 0;const t="change"===this.props.mode?this.props.validationDebounceTime??0:0;t<=0?this.runValidation():this.validationTimer=setTimeout(()=>{this.validationTimer=void 0,this.runValidation()},t)}hasErrorSummary(){return null!=this.form?.querySelector(`[${c}]`)}isEngineResubmit(t){return!!this.form?.hasAttribute("data-skdx-field-resubmit")&&(this.snapshot.errors.length>0&&t.preventDefault(),!0)}resubmitIfSettled(){const t=this.form;if(t&&"function"==typeof t.requestSubmit&&!t.querySelector("[data-skdx-field-pending]")&&!t.querySelector("[data-skdx-field][data-invalid]")){t.setAttribute(l,"");try{t.requestSubmit()}finally{t.removeAttribute(l)}}}};function $(t){return"function"==typeof t?.then}export{m as CHARACTER_COUNT_ANNOUNCE_DELAY_MS,h as ERROR_SUMMARY_RESCAN_EVENTS,n as FIELD_CHARACTER_COUNT_ATTRIBUTE,y as FIELD_CONTROL_ATTRIBUTE,g as FIELD_CONTROL_SELECTOR,r as FIELD_DESCRIPTION_ATTRIBUTE,o as FIELD_ERROR_ATTRIBUTE,c as FIELD_ERROR_SUMMARY_ATTRIBUTE,s as FIELD_MESSAGE_ATTRIBUTE,i as FIELD_NAME_ATTRIBUTE,a as FIELD_PENDING_ATTRIBUTE,T as FIELD_REQUIRED_INDICATOR_ATTRIBUTE,l as FIELD_RESUBMIT_ATTRIBUTE,e as FIELD_ROOT_ATTRIBUTE,t as FIELD_VALIDITY_CHANGE_EVENT,d as FORM_FIELD_ATTRIBUTE,u as FORM_MESSAGE_ATTRIBUTE,P as FieldController,v as NATIVE_INVALID_FALLBACK_MESSAGE,p as characterCountMessage,b as characterCountVisible,V as collectFieldErrors,w as errorSummaryScope,S as findFieldControl,U as focusFieldTarget,_ as isFilled,f as joinFieldMessages,L as normalizeMessages,R as readControlValue,N as resetFields,q as validateFields};
@@ -0,0 +1 @@
1
+ function d(e){return typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia(e).matches}function c(e,t){if(typeof window>"u"||typeof window.matchMedia!="function")return()=>{};const n=window.matchMedia(e),i=a=>t(a.matches);return n.addEventListener("change",i),()=>n.removeEventListener("change",i)}exports.matchesMediaQuery=d;exports.subscribeMediaQuery=c;
@@ -0,0 +1,7 @@
1
+ /** Whether `query` currently matches; `false` wherever `matchMedia` is missing (SSR, some test runners). */
2
+ export declare function matchesMediaQuery(query: string): boolean;
3
+ /**
4
+ * Calls `onChange` with the new match state whenever `query` flips, and returns the unsubscribe.
5
+ * A no-op returning a no-op wherever `matchMedia` is missing.
6
+ */
7
+ export declare function subscribeMediaQuery(query: string, onChange: (matches: boolean) => void): () => void;
@@ -0,0 +1,7 @@
1
+ /** Whether `query` currently matches; `false` wherever `matchMedia` is missing (SSR, some test runners). */
2
+ export declare function matchesMediaQuery(query: string): boolean;
3
+ /**
4
+ * Calls `onChange` with the new match state whenever `query` flips, and returns the unsubscribe.
5
+ * A no-op returning a no-op wherever `matchMedia` is missing.
6
+ */
7
+ export declare function subscribeMediaQuery(query: string, onChange: (matches: boolean) => void): () => void;
@@ -0,0 +1 @@
1
+ function e(e){return!(typeof window>"u"||"function"!=typeof window.matchMedia)&&window.matchMedia(e).matches}function n(e,n){if(typeof window>"u"||"function"!=typeof window.matchMedia)return()=>{};const t=window.matchMedia(e),i=e=>n(e.matches);return t.addEventListener("change",i),()=>t.removeEventListener("change",i)}export{e as matchesMediaQuery,n as subscribeMediaQuery};
@@ -1 +1 @@
1
- const n=require("./dismissal.cjs");let l=require("vue");function L({enabled:w,onEscapeKeyDown:E,onPointerDownOutside:p,onFocusOutside:y,onInteractOutside:r},i){if(typeof document>"u")return;let s,o;const u={insideElements:()=>i.map(e=>e.value)},c=e=>!i.some(t=>t.value?.contains(e)),d=e=>{n.handleEscapeKeyDown(e,u,E)},a=e=>{const t=e.target;t&&c(t)&&(r?.(e),p?.(e))},m=e=>{const t=n.focusOutsideTarget(e);if(!t||!c(t))return;const v=n.focusOutsideEvent(e);r?.(v),y?.(v)};function D(){o=n.pushDismissLayer(u),document.addEventListener("keydown",d),s=setTimeout(()=>{document.addEventListener("pointerdown",a,!0),document.addEventListener("focusin",m,!0)},0)}function f(){o?.(),o=void 0,document.removeEventListener("keydown",d),clearTimeout(s),document.removeEventListener("pointerdown",a,!0),document.removeEventListener("focusin",m,!0)}(0,l.watch)(w,e=>{f(),e&&D()},{immediate:!0}),(0,l.onBeforeUnmount)(f)}exports.backdropPointerDown=n.backdropPointerDown;exports.useDismiss=L;
1
+ const n=require("./dismissal.cjs");let l=require("vue");function D({enabled:w,onEscapeKeyDown:E,onPointerDownOutside:y,onFocusOutside:L,onInteractOutside:r},s){if(typeof document>"u")return;let u,o;const i={insideElements:()=>s.map(e=>e.value)},c=e=>!s.some(t=>t.value?.contains(e))&&!n.nestedLayerContains(i,e),d=e=>{n.handleEscapeKeyDown(e,i,E)},a=e=>{const t=e.target;t&&c(t)&&(r?.(e),y?.(e))},m=e=>{const t=n.focusOutsideTarget(e);if(!t||!c(t))return;const v=n.focusOutsideEvent(e);r?.(v),L?.(v)};function p(){o=n.pushDismissLayer(i),document.addEventListener("keydown",d),u=setTimeout(()=>{document.addEventListener("pointerdown",a,!0),document.addEventListener("focusin",m,!0)},0)}function f(){o?.(),o=void 0,document.removeEventListener("keydown",d),clearTimeout(u),document.removeEventListener("pointerdown",a,!0),document.removeEventListener("focusin",m,!0)}(0,l.watch)(w,e=>{f(),e&&p()},{immediate:!0}),(0,l.onBeforeUnmount)(f)}exports.backdropPointerDown=n.backdropPointerDown;exports.useDismiss=D;
@@ -1 +1 @@
1
- import{backdropPointerDown as e,focusOutsideEvent as n,focusOutsideTarget as t,handleEscapeKeyDown as o,pushDismissLayer as s}from"./dismissal.js";import{onBeforeUnmount as i,watch as r}from"vue";function a({enabled:e,onEscapeKeyDown:a,onPointerDownOutside:d,onFocusOutside:u,onInteractOutside:c},m){if(typeof document>"u")return;let v,f;const p={insideElements:()=>m.map(e=>e.value)},w=e=>!m.some(n=>n.value?.contains(e)),E=e=>{o(e,p,a)},l=e=>{const n=e.target;n&&w(n)&&(c?.(e),d?.(e))},D=e=>{const o=t(e);if(!o||!w(o))return;const s=n(e);c?.(s),u?.(s)};function L(){f?.(),f=void 0,document.removeEventListener("keydown",E),clearTimeout(v),document.removeEventListener("pointerdown",l,!0),document.removeEventListener("focusin",D,!0)}r(e,e=>{L(),e&&(f=s(p),document.addEventListener("keydown",E),v=setTimeout(()=>{document.addEventListener("pointerdown",l,!0),document.addEventListener("focusin",D,!0)},0))},{immediate:!0}),i(L)}export{e as backdropPointerDown,a as useDismiss};
1
+ import{backdropPointerDown as e,focusOutsideEvent as n,focusOutsideTarget as t,handleEscapeKeyDown as o,nestedLayerContains as s,pushDismissLayer as i}from"./dismissal.js";import{onBeforeUnmount as a,watch as r}from"vue";function d({enabled:e,onEscapeKeyDown:d,onPointerDownOutside:u,onFocusOutside:c,onInteractOutside:m},v){if(typeof document>"u")return;let f,p;const w={insideElements:()=>v.map(e=>e.value)},E=e=>!v.some(n=>n.value?.contains(e))&&!s(w,e),l=e=>{o(e,w,d)},L=e=>{const n=e.target;n&&E(n)&&(m?.(e),u?.(e))},y=e=>{const o=t(e);if(!o||!E(o))return;const s=n(e);m?.(s),c?.(s)};function D(){p?.(),p=void 0,document.removeEventListener("keydown",l),clearTimeout(f),document.removeEventListener("pointerdown",L,!0),document.removeEventListener("focusin",y,!0)}r(e,e=>{D(),e&&(p=i(w),document.addEventListener("keydown",l),f=setTimeout(()=>{document.addEventListener("pointerdown",L,!0),document.addEventListener("focusin",y,!0)},0))},{immediate:!0}),a(D)}export{e as backdropPointerDown,d as useDismiss};
@@ -0,0 +1 @@
1
+ const i=require("./media-query.cjs");let e=require("vue");function o(s){const u=(0,e.ref)(!1);let r=()=>{};return(0,e.watch)(()=>(0,e.toValue)(s),a=>{r(),u.value=i.matchesMediaQuery(a),r=i.subscribeMediaQuery(a,t=>{u.value=t})},{immediate:!0}),(0,e.onScopeDispose)(()=>r()),(0,e.readonly)(u)}exports.useMediaQuery=o;
@@ -0,0 +1,11 @@
1
+ import { type MaybeRefOrGetter, type Ref } from 'vue';
2
+ /**
3
+ * Whether `query` matches, as a read-only ref kept live through `matchMedia`;
4
+ * `false` wherever `matchMedia` is missing, such as on the server.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * const narrow = useMediaQuery('(max-width: 600px)');
9
+ * ```
10
+ */
11
+ export declare function useMediaQuery(query: MaybeRefOrGetter<string>): Readonly<Ref<boolean>>;
@@ -0,0 +1,11 @@
1
+ import { type MaybeRefOrGetter, type Ref } from 'vue';
2
+ /**
3
+ * Whether `query` matches, as a read-only ref kept live through `matchMedia`;
4
+ * `false` wherever `matchMedia` is missing, such as on the server.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * const narrow = useMediaQuery('(max-width: 600px)');
9
+ * ```
10
+ */
11
+ export declare function useMediaQuery(query: MaybeRefOrGetter<string>): Readonly<Ref<boolean>>;
@@ -0,0 +1 @@
1
+ import{matchesMediaQuery as e,subscribeMediaQuery as a}from"./media-query.js";import{onScopeDispose as s,readonly as r,ref as o,toValue as u,watch as i}from"vue";function t(t){const m=o(!1);let c=()=>{};return i(()=>u(t),s=>{c(),m.value=e(s),c=a(s,e=>{m.value=e})},{immediate:!0}),s(()=>c()),r(m)}export{t as useMediaQuery};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skdx/vue",
3
- "version": "0.30.0",
3
+ "version": "0.32.0",
4
4
  "description": "Vue 3 (Composition API) components for the SkandaDX design system",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -93,6 +93,16 @@
93
93
  "default": "./dist/avatar/index.cjs"
94
94
  }
95
95
  },
96
+ "./backdrop": {
97
+ "import": {
98
+ "types": "./dist/backdrop/index.d.ts",
99
+ "default": "./dist/backdrop/index.js"
100
+ },
101
+ "require": {
102
+ "types": "./dist/backdrop/index.d.cts",
103
+ "default": "./dist/backdrop/index.cjs"
104
+ }
105
+ },
96
106
  "./badge": {
97
107
  "import": {
98
108
  "types": "./dist/badge/index.d.ts",
@@ -193,6 +203,16 @@
193
203
  "default": "./dist/checkbox-group/index.cjs"
194
204
  }
195
205
  },
206
+ "./chip": {
207
+ "import": {
208
+ "types": "./dist/chip/index.d.ts",
209
+ "default": "./dist/chip/index.js"
210
+ },
211
+ "require": {
212
+ "types": "./dist/chip/index.d.cts",
213
+ "default": "./dist/chip/index.cjs"
214
+ }
215
+ },
196
216
  "./clipboard": {
197
217
  "import": {
198
218
  "types": "./dist/clipboard/index.d.ts",
@@ -263,6 +283,26 @@
263
283
  "default": "./dist/date-picker/index.cjs"
264
284
  }
265
285
  },
286
+ "./date-range-picker": {
287
+ "import": {
288
+ "types": "./dist/date-range-picker/index.d.ts",
289
+ "default": "./dist/date-range-picker/index.js"
290
+ },
291
+ "require": {
292
+ "types": "./dist/date-range-picker/index.d.cts",
293
+ "default": "./dist/date-range-picker/index.cjs"
294
+ }
295
+ },
296
+ "./date-time-picker": {
297
+ "import": {
298
+ "types": "./dist/date-time-picker/index.d.ts",
299
+ "default": "./dist/date-time-picker/index.js"
300
+ },
301
+ "require": {
302
+ "types": "./dist/date-time-picker/index.d.cts",
303
+ "default": "./dist/date-time-picker/index.cjs"
304
+ }
305
+ },
266
306
  "./dialog": {
267
307
  "import": {
268
308
  "types": "./dist/dialog/index.d.ts",
@@ -303,6 +343,16 @@
303
343
  "default": "./dist/editable/index.cjs"
304
344
  }
305
345
  },
346
+ "./fab": {
347
+ "import": {
348
+ "types": "./dist/fab/index.d.ts",
349
+ "default": "./dist/fab/index.js"
350
+ },
351
+ "require": {
352
+ "types": "./dist/fab/index.d.cts",
353
+ "default": "./dist/fab/index.cjs"
354
+ }
355
+ },
306
356
  "./field": {
307
357
  "import": {
308
358
  "types": "./dist/field/index.d.ts",
@@ -343,6 +393,26 @@
343
393
  "default": "./dist/form/index.cjs"
344
394
  }
345
395
  },
396
+ "./gauge": {
397
+ "import": {
398
+ "types": "./dist/gauge/index.d.ts",
399
+ "default": "./dist/gauge/index.js"
400
+ },
401
+ "require": {
402
+ "types": "./dist/gauge/index.d.cts",
403
+ "default": "./dist/gauge/index.cjs"
404
+ }
405
+ },
406
+ "./grid": {
407
+ "import": {
408
+ "types": "./dist/grid/index.d.ts",
409
+ "default": "./dist/grid/index.js"
410
+ },
411
+ "require": {
412
+ "types": "./dist/grid/index.d.cts",
413
+ "default": "./dist/grid/index.cjs"
414
+ }
415
+ },
346
416
  "./heading": {
347
417
  "import": {
348
418
  "types": "./dist/heading/index.d.ts",
@@ -483,6 +553,16 @@
483
553
  "default": "./dist/pagination/index.cjs"
484
554
  }
485
555
  },
556
+ "./paper": {
557
+ "import": {
558
+ "types": "./dist/paper/index.d.ts",
559
+ "default": "./dist/paper/index.js"
560
+ },
561
+ "require": {
562
+ "types": "./dist/paper/index.d.cts",
563
+ "default": "./dist/paper/index.cjs"
564
+ }
565
+ },
486
566
  "./password-input": {
487
567
  "import": {
488
568
  "types": "./dist/password-input/index.d.ts",
@@ -643,6 +723,16 @@
643
723
  "default": "./dist/split-button/index.cjs"
644
724
  }
645
725
  },
726
+ "./stack": {
727
+ "import": {
728
+ "types": "./dist/stack/index.d.ts",
729
+ "default": "./dist/stack/index.js"
730
+ },
731
+ "require": {
732
+ "types": "./dist/stack/index.d.cts",
733
+ "default": "./dist/stack/index.cjs"
734
+ }
735
+ },
646
736
  "./stepper": {
647
737
  "import": {
648
738
  "types": "./dist/stepper/index.d.ts",
@@ -803,6 +893,16 @@
803
893
  "default": "./dist/toolbar/index.cjs"
804
894
  }
805
895
  },
896
+ "./tooltip": {
897
+ "import": {
898
+ "types": "./dist/tooltip/index.d.ts",
899
+ "default": "./dist/tooltip/index.js"
900
+ },
901
+ "require": {
902
+ "types": "./dist/tooltip/index.d.cts",
903
+ "default": "./dist/tooltip/index.cjs"
904
+ }
905
+ },
806
906
  "./tour": {
807
907
  "import": {
808
908
  "types": "./dist/tour/index.d.ts",
@@ -1498,7 +1598,7 @@
1498
1598
  "vitest": "^4.1.10",
1499
1599
  "vue": "^3.5.39",
1500
1600
  "vue-tsc": "^2.0.0",
1501
- "@skdx/shared": "0.30.0"
1601
+ "@skdx/shared": "0.32.0"
1502
1602
  },
1503
1603
  "scripts": {
1504
1604
  "lint": "eslint . --cache --cache-location node_modules/.cache/eslint/",