@eos-ui/vue 0.1.0 → 0.2.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 (409) hide show
  1. package/THIRD_PARTY.md +1 -1
  2. package/dist/component-names.js +1 -1
  3. package/dist/component-names.js.map +1 -1
  4. package/dist/components/Actions/EActions.js.map +1 -1
  5. package/dist/components/Actions/EActions.vue.d.ts +3 -1
  6. package/dist/components/Actions/EActions.vue_vue_type_script_setup_true_lang.js +12 -3
  7. package/dist/components/Actions/EActions.vue_vue_type_script_setup_true_lang.js.map +1 -1
  8. package/dist/components/AppHeader/EAppHeader.js.map +1 -1
  9. package/dist/components/AppHeader/EAppHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  10. package/dist/components/AppShell/EAppShell.js.map +1 -1
  11. package/dist/components/AppShell/EAppShell.vue.d.ts +2 -2
  12. package/dist/components/AppShell/EAppShell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  13. package/dist/components/Avatar/EAvatar.js.map +1 -1
  14. package/dist/components/Avatar/EAvatar.vue.d.ts +4 -4
  15. package/dist/components/Avatar/EAvatar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  16. package/dist/components/Breadcrumb/EBreadcrumb.js.map +1 -1
  17. package/dist/components/Breadcrumb/EBreadcrumb.vue.d.ts +2 -2
  18. package/dist/components/Breadcrumb/EBreadcrumb.vue_vue_type_script_setup_true_lang.js.map +1 -1
  19. package/dist/components/Button/EButton.js.map +1 -1
  20. package/dist/components/Button/EButton.vue.d.ts +5 -3
  21. package/dist/components/Button/EButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  22. package/dist/components/Calendar/ECalendar.js.map +1 -1
  23. package/dist/components/Calendar/ECalendar.vue.d.ts +12 -9
  24. package/dist/components/Calendar/ECalendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  25. package/dist/components/Checkbox/ECheckbox.js.map +1 -1
  26. package/dist/components/Checkbox/ECheckbox.vue.d.ts +6 -3
  27. package/dist/components/Checkbox/ECheckbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  28. package/dist/components/CodeBlock/ECodeBlock.js.map +1 -1
  29. package/dist/components/CodeBlock/ECodeBlock.vue.d.ts +2 -2
  30. package/dist/components/CodeBlock/ECodeBlock.vue_vue_type_script_setup_true_lang.js.map +1 -1
  31. package/dist/components/ColorField/EColorField.js.map +1 -1
  32. package/dist/components/ColorField/EColorField.vue.d.ts +5 -3
  33. package/dist/components/ColorField/EColorField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  34. package/dist/components/Combobox/ECombobox.js.map +1 -1
  35. package/dist/components/Combobox/ECombobox.vue.d.ts +7 -5
  36. package/dist/components/Combobox/ECombobox.vue_vue_type_script_setup_true_lang.js +3 -2
  37. package/dist/components/Combobox/ECombobox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  38. package/dist/components/Combobox/EComboboxBase.js.map +1 -1
  39. package/dist/components/Combobox/EComboboxBase.vue.d.ts +6 -14
  40. package/dist/components/Combobox/EComboboxBase.vue_vue_type_script_setup_true_lang.js +9 -8
  41. package/dist/components/Combobox/EComboboxBase.vue_vue_type_script_setup_true_lang.js.map +1 -1
  42. package/dist/components/Combobox/EComboboxOption.js.map +1 -1
  43. package/dist/components/Combobox/EComboboxOption.vue_vue_type_script_setup_true_lang.js +1 -1
  44. package/dist/components/Combobox/EComboboxOption.vue_vue_type_script_setup_true_lang.js.map +1 -1
  45. package/dist/components/Combobox/{EHighlight.js → matchHighlight.js} +3 -3
  46. package/dist/components/Combobox/matchHighlight.js.map +1 -0
  47. package/dist/components/Combobox/types.d.ts +13 -8
  48. package/dist/components/CurrencyField/ECurrencyField.js.map +1 -1
  49. package/dist/components/CurrencyField/ECurrencyField.vue.d.ts +8 -6
  50. package/dist/components/CurrencyField/ECurrencyField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  51. package/dist/components/DataGrid/EDataGrid.js.map +1 -1
  52. package/dist/components/DataGrid/EDataGrid.vue.d.ts +20 -15
  53. package/dist/components/DataGrid/EDataGrid.vue_vue_type_script_setup_true_lang.js +213 -213
  54. package/dist/components/DataGrid/EDataGrid.vue_vue_type_script_setup_true_lang.js.map +1 -1
  55. package/dist/components/DatePicker/EDatePicker.js.map +1 -1
  56. package/dist/components/DatePicker/EDatePicker.vue.d.ts +9 -6
  57. package/dist/components/DatePicker/EDatePicker.vue_vue_type_script_setup_true_lang.js +10 -10
  58. package/dist/components/DatePicker/EDatePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  59. package/dist/components/Definition/EDefinition.js +8 -0
  60. package/dist/components/Definition/EDefinition.js.map +1 -0
  61. package/dist/components/{Popover/EPopover.vue.d.ts → Definition/EDefinition.vue.d.ts} +2 -1
  62. package/dist/components/{Popover/EPopover.vue_vue_type_script_setup_true_lang.js → Definition/EDefinition.vue_vue_type_script_setup_true_lang.js} +4 -4
  63. package/dist/components/Definition/EDefinition.vue_vue_type_script_setup_true_lang.js.map +1 -0
  64. package/dist/components/Definition/index.d.ts +1 -0
  65. package/dist/components/DescriptionList/EDescriptionList.js.map +1 -1
  66. package/dist/components/DescriptionList/EDescriptionList.vue.d.ts +32 -5
  67. package/dist/components/DescriptionList/EDescriptionList.vue_vue_type_script_setup_true_lang.js +70 -8
  68. package/dist/components/DescriptionList/EDescriptionList.vue_vue_type_script_setup_true_lang.js.map +1 -1
  69. package/dist/components/Dialog/DialogFrame.js.map +1 -1
  70. package/dist/components/Dialog/DialogFrame.vue.d.ts +1 -0
  71. package/dist/components/Dialog/DialogFrame.vue_vue_type_script_setup_true_lang.js +19 -18
  72. package/dist/components/Dialog/DialogFrame.vue_vue_type_script_setup_true_lang.js.map +1 -1
  73. package/dist/components/Dialog/EDialog.js.map +1 -1
  74. package/dist/components/Dialog/EDialog.vue.d.ts +4 -1
  75. package/dist/components/Dialog/EDialog.vue_vue_type_script_setup_true_lang.js +3 -0
  76. package/dist/components/Dialog/EDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  77. package/dist/components/Disclosure/EDisclosure.js.map +1 -1
  78. package/dist/components/Disclosure/EDisclosure.vue.d.ts +6 -9
  79. package/dist/components/Disclosure/EDisclosure.vue_vue_type_script_setup_true_lang.js +14 -19
  80. package/dist/components/Disclosure/EDisclosure.vue_vue_type_script_setup_true_lang.js.map +1 -1
  81. package/dist/components/Drawer/EDrawer.js.map +1 -1
  82. package/dist/components/Drawer/EDrawer.vue.d.ts +4 -1
  83. package/dist/components/Drawer/EDrawer.vue_vue_type_script_setup_true_lang.js +3 -0
  84. package/dist/components/Drawer/EDrawer.vue_vue_type_script_setup_true_lang.js.map +1 -1
  85. package/dist/components/EmptyState/EEmptyState.js.map +1 -1
  86. package/dist/components/EmptyState/EEmptyState.vue.d.ts +1 -1
  87. package/dist/components/EmptyState/EEmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -1
  88. package/dist/components/ExpandableRow/EExpandableRow.js +8 -0
  89. package/dist/components/ExpandableRow/EExpandableRow.js.map +1 -0
  90. package/dist/components/{ButtonGroup/EButtonGroup.vue.d.ts → ExpandableRow/EExpandableRow.vue.d.ts} +12 -4
  91. package/dist/components/ExpandableRow/EExpandableRow.vue_vue_type_script_setup_true_lang.js +40 -0
  92. package/dist/components/ExpandableRow/EExpandableRow.vue_vue_type_script_setup_true_lang.js.map +1 -0
  93. package/dist/components/ExpandableRow/index.d.ts +1 -0
  94. package/dist/components/Field/EField.js.map +1 -1
  95. package/dist/components/Field/EField.vue.d.ts +1 -1
  96. package/dist/components/Field/EField.vue_vue_type_script_setup_true_lang.js +4 -4
  97. package/dist/components/Field/EField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  98. package/dist/components/Field/labelProps.d.ts +2 -2
  99. package/dist/components/Fieldset/EFieldset.js.map +1 -1
  100. package/dist/components/Fieldset/EFieldset.vue.d.ts +5 -3
  101. package/dist/components/Fieldset/EFieldset.vue_vue_type_script_setup_true_lang.js +54 -35
  102. package/dist/components/Fieldset/EFieldset.vue_vue_type_script_setup_true_lang.js.map +1 -1
  103. package/dist/components/Grid/EGrid.js.map +1 -1
  104. package/dist/components/Grid/EGrid.vue.d.ts +5 -2
  105. package/dist/components/Grid/EGrid.vue_vue_type_script_setup_true_lang.js +15 -11
  106. package/dist/components/Grid/EGrid.vue_vue_type_script_setup_true_lang.js.map +1 -1
  107. package/dist/components/Heading/EHeading.js.map +1 -1
  108. package/dist/components/Heading/EHeading.vue.d.ts +1 -1
  109. package/dist/components/Heading/EHeading.vue_vue_type_script_setup_true_lang.js +10 -10
  110. package/dist/components/Heading/EHeading.vue_vue_type_script_setup_true_lang.js.map +1 -1
  111. package/dist/components/Highlight/EHighlight.js.map +1 -1
  112. package/dist/components/Highlight/EHighlight.vue_vue_type_script_setup_true_lang.js.map +1 -1
  113. package/dist/components/IconButton/EIconButton.js.map +1 -1
  114. package/dist/components/IconButton/EIconButton.vue.d.ts +1 -0
  115. package/dist/components/IconButton/EIconButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  116. package/dist/components/Inline/EInline.js.map +1 -1
  117. package/dist/components/Inline/EInline.vue.d.ts +3 -3
  118. package/dist/components/Inline/EInline.vue_vue_type_script_setup_true_lang.js.map +1 -1
  119. package/dist/components/Kbd/EKbd.js.map +1 -1
  120. package/dist/components/Kbd/EKbd.vue_vue_type_script_setup_true_lang.js.map +1 -1
  121. package/dist/components/Link/ELink.js.map +1 -1
  122. package/dist/components/Link/ELink.vue.d.ts +2 -2
  123. package/dist/components/Link/ELink.vue_vue_type_script_setup_true_lang.js.map +1 -1
  124. package/dist/components/Menu/EMenu.js.map +1 -1
  125. package/dist/components/Menu/EMenu.vue.d.ts +4 -3
  126. package/dist/components/Menu/EMenu.vue_vue_type_script_setup_true_lang.js +1 -1
  127. package/dist/components/Menu/EMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  128. package/dist/components/NavList/ENavList.js.map +1 -1
  129. package/dist/components/NavList/ENavList.vue.d.ts +7 -9
  130. package/dist/components/NavList/ENavList.vue_vue_type_script_setup_true_lang.js +2 -3
  131. package/dist/components/NavList/ENavList.vue_vue_type_script_setup_true_lang.js.map +1 -1
  132. package/dist/components/{Tabs → NavList}/LinkNav.js +1 -1
  133. package/dist/components/NavList/LinkNav.js.map +1 -0
  134. package/dist/components/{Tabs → NavList}/LinkNav.vue_vue_type_script_setup_true_lang.js +1 -1
  135. package/dist/components/NavList/LinkNav.vue_vue_type_script_setup_true_lang.js.map +1 -0
  136. package/dist/components/Notice/ENotice.js.map +1 -1
  137. package/dist/components/Notice/ENotice.vue.d.ts +2 -2
  138. package/dist/components/Notice/ENotice.vue_vue_type_script_setup_true_lang.js.map +1 -1
  139. package/dist/components/NumberField/ENumberField.js.map +1 -1
  140. package/dist/components/NumberField/ENumberField.vue.d.ts +5 -3
  141. package/dist/components/NumberField/ENumberField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  142. package/dist/components/OtpField/EOtpField.js.map +1 -1
  143. package/dist/components/OtpField/EOtpField.vue.d.ts +10 -8
  144. package/dist/components/OtpField/EOtpField.vue_vue_type_script_setup_true_lang.js +2 -2
  145. package/dist/components/OtpField/EOtpField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  146. package/dist/components/PageHeader/EPageHeader.js.map +1 -1
  147. package/dist/components/PageHeader/EPageHeader.vue.d.ts +1 -1
  148. package/dist/components/PageHeader/EPageHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  149. package/dist/components/Pagination/EPagination.js.map +1 -1
  150. package/dist/components/Pagination/EPagination.vue.d.ts +1 -0
  151. package/dist/components/Pagination/EPagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  152. package/dist/components/PasswordField/EPasswordField.js.map +1 -1
  153. package/dist/components/PasswordField/EPasswordField.vue.d.ts +14 -10
  154. package/dist/components/PasswordField/EPasswordField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  155. package/dist/components/PhoneField/EPhoneField.js.map +1 -1
  156. package/dist/components/PhoneField/EPhoneField.vue.d.ts +6 -4
  157. package/dist/components/PhoneField/EPhoneField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  158. package/dist/components/Progress/EProgress.js.map +1 -1
  159. package/dist/components/Progress/EProgress.vue.d.ts +5 -5
  160. package/dist/components/Progress/EProgress.vue_vue_type_script_setup_true_lang.js +20 -14
  161. package/dist/components/Progress/EProgress.vue_vue_type_script_setup_true_lang.js.map +1 -1
  162. package/dist/components/RadioGroup/ERadioGroup.js.map +1 -1
  163. package/dist/components/RadioGroup/ERadioGroup.vue.d.ts +8 -4
  164. package/dist/components/RadioGroup/ERadioGroup.vue_vue_type_script_setup_true_lang.js +1 -1
  165. package/dist/components/RadioGroup/ERadioGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  166. package/dist/components/RangePicker/ERangePicker.js.map +1 -1
  167. package/dist/components/RangePicker/ERangePicker.vue.d.ts +12 -8
  168. package/dist/components/RangePicker/ERangePicker.vue_vue_type_script_setup_true_lang.js +65 -65
  169. package/dist/components/RangePicker/ERangePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  170. package/dist/components/SearchBar/ESearchBar.js.map +1 -1
  171. package/dist/components/SearchBar/ESearchBar.vue.d.ts +8 -7
  172. package/dist/components/SearchBar/ESearchBar.vue_vue_type_script_setup_true_lang.js +1 -1
  173. package/dist/components/SearchBar/ESearchBar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  174. package/dist/components/SearchResults/ESearchResults.js.map +1 -1
  175. package/dist/components/SearchResults/ESearchResults.vue.d.ts +3 -3
  176. package/dist/components/SearchResults/ESearchResults.vue_vue_type_script_setup_true_lang.js +1 -1
  177. package/dist/components/SearchResults/ESearchResults.vue_vue_type_script_setup_true_lang.js.map +1 -1
  178. package/dist/components/Segmented/ESegmented.js.map +1 -1
  179. package/dist/components/Segmented/ESegmented.vue.d.ts +10 -6
  180. package/dist/components/Segmented/ESegmented.vue_vue_type_script_setup_true_lang.js.map +1 -1
  181. package/dist/components/Select/ESelect.js.map +1 -1
  182. package/dist/components/Select/ESelect.vue.d.ts +9 -6
  183. package/dist/components/Select/ESelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  184. package/dist/components/Select/ESelectControl.js.map +1 -1
  185. package/dist/components/Select/ESelectControl.vue.d.ts +2 -2
  186. package/dist/components/Select/ESelectControl.vue_vue_type_script_setup_true_lang.js +6 -6
  187. package/dist/components/Select/ESelectControl.vue_vue_type_script_setup_true_lang.js.map +1 -1
  188. package/dist/components/Select/options.d.ts +1 -1
  189. package/dist/components/Select/options.js.map +1 -1
  190. package/dist/components/SignatureField/ESignatureField.js.map +1 -1
  191. package/dist/components/SignatureField/ESignatureField.vue.d.ts +14 -10
  192. package/dist/components/SignatureField/ESignatureField.vue_vue_type_script_setup_true_lang.js +4 -4
  193. package/dist/components/SignatureField/ESignatureField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  194. package/dist/components/SignaturePad/ESignaturePad.js.map +1 -1
  195. package/dist/components/SignaturePad/ESignaturePad.vue.d.ts +3 -1
  196. package/dist/components/SignaturePad/ESignaturePad.vue_vue_type_script_setup_true_lang.js.map +1 -1
  197. package/dist/components/Skeleton/ESkeleton.js.map +1 -1
  198. package/dist/components/Skeleton/ESkeleton.vue.d.ts +3 -3
  199. package/dist/components/Skeleton/ESkeleton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  200. package/dist/components/Stack/EStack.js.map +1 -1
  201. package/dist/components/Stack/EStack.vue.d.ts +2 -2
  202. package/dist/components/Stack/EStack.vue_vue_type_script_setup_true_lang.js.map +1 -1
  203. package/dist/components/Stamp/EStamp.js.map +1 -1
  204. package/dist/components/Stamp/EStamp.vue.d.ts +18 -12
  205. package/dist/components/Stamp/EStamp.vue_vue_type_script_setup_true_lang.js +27 -40
  206. package/dist/components/Stamp/EStamp.vue_vue_type_script_setup_true_lang.js.map +1 -1
  207. package/dist/components/Stepper/EStepper.js.map +1 -1
  208. package/dist/components/Stepper/EStepper.vue.d.ts +2 -2
  209. package/dist/components/Stepper/EStepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  210. package/dist/components/Surface/ESurface.js.map +1 -1
  211. package/dist/components/Surface/ESurface.vue.d.ts +5 -5
  212. package/dist/components/Surface/ESurface.vue_vue_type_script_setup_true_lang.js +5 -5
  213. package/dist/components/Surface/ESurface.vue_vue_type_script_setup_true_lang.js.map +1 -1
  214. package/dist/components/Switch/ESwitch.js.map +1 -1
  215. package/dist/components/Switch/ESwitch.vue.d.ts +3 -1
  216. package/dist/components/Switch/ESwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  217. package/dist/components/Tabs/ETabs.js.map +1 -1
  218. package/dist/components/Tabs/ETabs.vue.d.ts +10 -32
  219. package/dist/components/Tabs/ETabs.vue_vue_type_script_setup_true_lang.js +21 -50
  220. package/dist/components/Tabs/ETabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
  221. package/dist/components/Tabs/index.d.ts +1 -1
  222. package/dist/components/Text/EText.js.map +1 -1
  223. package/dist/components/Text/EText.vue.d.ts +4 -3
  224. package/dist/components/Text/EText.vue_vue_type_script_setup_true_lang.js +7 -2
  225. package/dist/components/Text/EText.vue_vue_type_script_setup_true_lang.js.map +1 -1
  226. package/dist/components/TextField/ETextField.js.map +1 -1
  227. package/dist/components/TextField/ETextField.vue.d.ts +8 -6
  228. package/dist/components/TextField/ETextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  229. package/dist/components/Textarea/ETextarea.js.map +1 -1
  230. package/dist/components/Textarea/ETextarea.vue.d.ts +4 -2
  231. package/dist/components/Textarea/ETextarea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  232. package/dist/components/Toast/EToast.js.map +1 -1
  233. package/dist/components/Toast/EToast.vue_vue_type_script_setup_true_lang.js +5 -5
  234. package/dist/components/Toast/EToast.vue_vue_type_script_setup_true_lang.js.map +1 -1
  235. package/dist/components/ToastProvider/EToastProvider.js.map +1 -1
  236. package/dist/components/ToastProvider/EToastProvider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  237. package/dist/components/Tooltip/ETooltip.js.map +1 -1
  238. package/dist/components/Tooltip/ETooltip.vue.d.ts +1 -0
  239. package/dist/components/Tooltip/ETooltip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  240. package/dist/components/Upload/EUpload.js.map +1 -1
  241. package/dist/components/Upload/EUpload.vue.d.ts +5 -3
  242. package/dist/components/Upload/EUpload.vue_vue_type_script_setup_true_lang.js.map +1 -1
  243. package/dist/fonts.css +1 -1
  244. package/dist/index.d.ts +2 -25
  245. package/dist/index.js +71 -94
  246. package/dist/messages.d.ts +0 -13
  247. package/dist/messages.js +0 -13
  248. package/dist/messages.js.map +1 -1
  249. package/dist/style.css +2655 -3121
  250. package/package.json +4 -2
  251. package/dist/components/Accordion/EAccordion.js +0 -8
  252. package/dist/components/Accordion/EAccordion.js.map +0 -1
  253. package/dist/components/Accordion/EAccordion.vue.d.ts +0 -32
  254. package/dist/components/Accordion/EAccordion.vue_vue_type_script_setup_true_lang.js +0 -35
  255. package/dist/components/Accordion/EAccordion.vue_vue_type_script_setup_true_lang.js.map +0 -1
  256. package/dist/components/Accordion/index.d.ts +0 -2
  257. package/dist/components/AddressField/EAddressField.js +0 -8
  258. package/dist/components/AddressField/EAddressField.js.map +0 -1
  259. package/dist/components/AddressField/EAddressField.vue.d.ts +0 -39
  260. package/dist/components/AddressField/EAddressField.vue_vue_type_script_setup_true_lang.js +0 -119
  261. package/dist/components/AddressField/EAddressField.vue_vue_type_script_setup_true_lang.js.map +0 -1
  262. package/dist/components/AddressField/index.d.ts +0 -2
  263. package/dist/components/AddressField/usStates.d.ts +0 -5
  264. package/dist/components/AddressField/usStates.js +0 -211
  265. package/dist/components/AddressField/usStates.js.map +0 -1
  266. package/dist/components/Amount/EAmount.js +0 -8
  267. package/dist/components/Amount/EAmount.js.map +0 -1
  268. package/dist/components/Amount/EAmount.vue.d.ts +0 -21
  269. package/dist/components/Amount/EAmount.vue_vue_type_script_setup_true_lang.js +0 -38
  270. package/dist/components/Amount/EAmount.vue_vue_type_script_setup_true_lang.js.map +0 -1
  271. package/dist/components/Amount/index.d.ts +0 -2
  272. package/dist/components/Autocomplete/EAutocomplete.js +0 -7
  273. package/dist/components/Autocomplete/EAutocomplete.js.map +0 -1
  274. package/dist/components/Autocomplete/EAutocomplete.vue.d.ts +0 -44
  275. package/dist/components/Autocomplete/EAutocomplete.vue_vue_type_script_setup_true_lang.js +0 -58
  276. package/dist/components/Autocomplete/EAutocomplete.vue_vue_type_script_setup_true_lang.js.map +0 -1
  277. package/dist/components/Autocomplete/index.d.ts +0 -1
  278. package/dist/components/BackLink/EBackLink.js +0 -8
  279. package/dist/components/BackLink/EBackLink.js.map +0 -1
  280. package/dist/components/BackLink/EBackLink.vue.d.ts +0 -23
  281. package/dist/components/BackLink/EBackLink.vue_vue_type_script_setup_true_lang.js +0 -27
  282. package/dist/components/BackLink/EBackLink.vue_vue_type_script_setup_true_lang.js.map +0 -1
  283. package/dist/components/BackLink/index.d.ts +0 -1
  284. package/dist/components/BookingCard/EBookingCard.js +0 -8
  285. package/dist/components/BookingCard/EBookingCard.js.map +0 -1
  286. package/dist/components/BookingCard/EBookingCard.vue.d.ts +0 -46
  287. package/dist/components/BookingCard/EBookingCard.vue_vue_type_script_setup_true_lang.js +0 -86
  288. package/dist/components/BookingCard/EBookingCard.vue_vue_type_script_setup_true_lang.js.map +0 -1
  289. package/dist/components/BookingCard/index.d.ts +0 -2
  290. package/dist/components/ButtonGroup/EButtonGroup.js +0 -8
  291. package/dist/components/ButtonGroup/EButtonGroup.js.map +0 -1
  292. package/dist/components/ButtonGroup/EButtonGroup.vue_vue_type_script_setup_true_lang.js +0 -18
  293. package/dist/components/ButtonGroup/EButtonGroup.vue_vue_type_script_setup_true_lang.js.map +0 -1
  294. package/dist/components/ButtonGroup/index.d.ts +0 -1
  295. package/dist/components/CardField/ECardField.js +0 -8
  296. package/dist/components/CardField/ECardField.js.map +0 -1
  297. package/dist/components/CardField/ECardField.vue.d.ts +0 -31
  298. package/dist/components/CardField/ECardField.vue_vue_type_script_setup_true_lang.js +0 -65
  299. package/dist/components/CardField/ECardField.vue_vue_type_script_setup_true_lang.js.map +0 -1
  300. package/dist/components/CardField/index.d.ts +0 -1
  301. package/dist/components/Chip/EChip.js +0 -8
  302. package/dist/components/Chip/EChip.js.map +0 -1
  303. package/dist/components/Chip/EChip.vue.d.ts +0 -22
  304. package/dist/components/Chip/EChip.vue_vue_type_script_setup_true_lang.js +0 -18
  305. package/dist/components/Chip/EChip.vue_vue_type_script_setup_true_lang.js.map +0 -1
  306. package/dist/components/Chip/index.d.ts +0 -2
  307. package/dist/components/Combobox/EHighlight.js.map +0 -1
  308. package/dist/components/DetailRow/EDetailRow.js +0 -8
  309. package/dist/components/DetailRow/EDetailRow.js.map +0 -1
  310. package/dist/components/DetailRow/EDetailRow.vue.d.ts +0 -30
  311. package/dist/components/DetailRow/EDetailRow.vue_vue_type_script_setup_true_lang.js +0 -53
  312. package/dist/components/DetailRow/EDetailRow.vue_vue_type_script_setup_true_lang.js.map +0 -1
  313. package/dist/components/DetailRow/index.d.ts +0 -1
  314. package/dist/components/ErrorSummary/EErrorSummary.js +0 -8
  315. package/dist/components/ErrorSummary/EErrorSummary.js.map +0 -1
  316. package/dist/components/ErrorSummary/EErrorSummary.vue.d.ts +0 -30
  317. package/dist/components/ErrorSummary/EErrorSummary.vue_vue_type_script_setup_true_lang.js +0 -52
  318. package/dist/components/ErrorSummary/EErrorSummary.vue_vue_type_script_setup_true_lang.js.map +0 -1
  319. package/dist/components/ErrorSummary/index.d.ts +0 -2
  320. package/dist/components/FormSection/EFormSection.js +0 -8
  321. package/dist/components/FormSection/EFormSection.js.map +0 -1
  322. package/dist/components/FormSection/EFormSection.vue.d.ts +0 -28
  323. package/dist/components/FormSection/EFormSection.vue_vue_type_script_setup_true_lang.js +0 -38
  324. package/dist/components/FormSection/EFormSection.vue_vue_type_script_setup_true_lang.js.map +0 -1
  325. package/dist/components/FormSection/index.d.ts +0 -1
  326. package/dist/components/ItemList/EItemList.js +0 -8
  327. package/dist/components/ItemList/EItemList.js.map +0 -1
  328. package/dist/components/ItemList/EItemList.vue.d.ts +0 -13
  329. package/dist/components/ItemList/EItemList.vue_vue_type_script_setup_true_lang.js +0 -17
  330. package/dist/components/ItemList/EItemList.vue_vue_type_script_setup_true_lang.js.map +0 -1
  331. package/dist/components/ItemList/context.d.ts +0 -3
  332. package/dist/components/ItemList/context.js +0 -6
  333. package/dist/components/ItemList/context.js.map +0 -1
  334. package/dist/components/ItemList/index.d.ts +0 -1
  335. package/dist/components/ItemRow/EItemRow.js +0 -8
  336. package/dist/components/ItemRow/EItemRow.js.map +0 -1
  337. package/dist/components/ItemRow/EItemRow.vue.d.ts +0 -29
  338. package/dist/components/ItemRow/EItemRow.vue_vue_type_script_setup_true_lang.js +0 -54
  339. package/dist/components/ItemRow/EItemRow.vue_vue_type_script_setup_true_lang.js.map +0 -1
  340. package/dist/components/ItemRow/index.d.ts +0 -1
  341. package/dist/components/LinkCard/ELinkCard.js +0 -8
  342. package/dist/components/LinkCard/ELinkCard.js.map +0 -1
  343. package/dist/components/LinkCard/ELinkCard.vue.d.ts +0 -39
  344. package/dist/components/LinkCard/ELinkCard.vue_vue_type_script_setup_true_lang.js +0 -61
  345. package/dist/components/LinkCard/ELinkCard.vue_vue_type_script_setup_true_lang.js.map +0 -1
  346. package/dist/components/LinkCard/index.d.ts +0 -1
  347. package/dist/components/LoadingBar/ELoadingBar.js +0 -8
  348. package/dist/components/LoadingBar/ELoadingBar.js.map +0 -1
  349. package/dist/components/LoadingBar/ELoadingBar.vue.d.ts +0 -7
  350. package/dist/components/LoadingBar/ELoadingBar.vue_vue_type_script_setup_true_lang.js +0 -21
  351. package/dist/components/LoadingBar/ELoadingBar.vue_vue_type_script_setup_true_lang.js.map +0 -1
  352. package/dist/components/LoadingBar/index.d.ts +0 -1
  353. package/dist/components/MetaList/EMetaList.js +0 -8
  354. package/dist/components/MetaList/EMetaList.js.map +0 -1
  355. package/dist/components/MetaList/EMetaList.vue.d.ts +0 -15
  356. package/dist/components/MetaList/EMetaList.vue_vue_type_script_setup_true_lang.js +0 -19
  357. package/dist/components/MetaList/EMetaList.vue_vue_type_script_setup_true_lang.js.map +0 -1
  358. package/dist/components/MetaList/index.d.ts +0 -2
  359. package/dist/components/MultiSelect/EMultiSelect.js +0 -7
  360. package/dist/components/MultiSelect/EMultiSelect.js.map +0 -1
  361. package/dist/components/MultiSelect/EMultiSelect.vue.d.ts +0 -44
  362. package/dist/components/MultiSelect/EMultiSelect.vue_vue_type_script_setup_true_lang.js +0 -58
  363. package/dist/components/MultiSelect/EMultiSelect.vue_vue_type_script_setup_true_lang.js.map +0 -1
  364. package/dist/components/MultiSelect/index.d.ts +0 -1
  365. package/dist/components/Panel/EPanel.js +0 -8
  366. package/dist/components/Panel/EPanel.js.map +0 -1
  367. package/dist/components/Panel/EPanel.vue.d.ts +0 -25
  368. package/dist/components/Panel/EPanel.vue_vue_type_script_setup_true_lang.js +0 -38
  369. package/dist/components/Panel/EPanel.vue_vue_type_script_setup_true_lang.js.map +0 -1
  370. package/dist/components/Panel/index.d.ts +0 -1
  371. package/dist/components/Popover/EPopover.js +0 -8
  372. package/dist/components/Popover/EPopover.js.map +0 -1
  373. package/dist/components/Popover/EPopover.vue_vue_type_script_setup_true_lang.js.map +0 -1
  374. package/dist/components/Popover/index.d.ts +0 -1
  375. package/dist/components/SlotPicker/ESlotPicker.js +0 -8
  376. package/dist/components/SlotPicker/ESlotPicker.js.map +0 -1
  377. package/dist/components/SlotPicker/ESlotPicker.vue.d.ts +0 -55
  378. package/dist/components/SlotPicker/ESlotPicker.vue_vue_type_script_setup_true_lang.js +0 -82
  379. package/dist/components/SlotPicker/ESlotPicker.vue_vue_type_script_setup_true_lang.js.map +0 -1
  380. package/dist/components/SlotPicker/index.d.ts +0 -2
  381. package/dist/components/StatementCard/EStatementCard.js +0 -8
  382. package/dist/components/StatementCard/EStatementCard.js.map +0 -1
  383. package/dist/components/StatementCard/EStatementCard.vue.d.ts +0 -20
  384. package/dist/components/StatementCard/EStatementCard.vue_vue_type_script_setup_true_lang.js +0 -96
  385. package/dist/components/StatementCard/EStatementCard.vue_vue_type_script_setup_true_lang.js.map +0 -1
  386. package/dist/components/StatementCard/index.d.ts +0 -2
  387. package/dist/components/StatementCard/types.d.ts +0 -37
  388. package/dist/components/StatementRow/EStatementRow.js +0 -8
  389. package/dist/components/StatementRow/EStatementRow.js.map +0 -1
  390. package/dist/components/StatementRow/EStatementRow.vue.d.ts +0 -14
  391. package/dist/components/StatementRow/EStatementRow.vue_vue_type_script_setup_true_lang.js +0 -96
  392. package/dist/components/StatementRow/EStatementRow.vue_vue_type_script_setup_true_lang.js.map +0 -1
  393. package/dist/components/StatementRow/index.d.ts +0 -1
  394. package/dist/components/Tabs/LinkNav.js.map +0 -1
  395. package/dist/components/Tabs/LinkNav.vue_vue_type_script_setup_true_lang.js.map +0 -1
  396. package/dist/components/Timeline/ETimeline.js +0 -8
  397. package/dist/components/Timeline/ETimeline.js.map +0 -1
  398. package/dist/components/Timeline/ETimeline.vue.d.ts +0 -15
  399. package/dist/components/Timeline/ETimeline.vue_vue_type_script_setup_true_lang.js +0 -43
  400. package/dist/components/Timeline/ETimeline.vue_vue_type_script_setup_true_lang.js.map +0 -1
  401. package/dist/components/Timeline/index.d.ts +0 -2
  402. package/dist/components/Toggle/EToggle.js +0 -8
  403. package/dist/components/Toggle/EToggle.js.map +0 -1
  404. package/dist/components/Toggle/EToggle.vue.d.ts +0 -27
  405. package/dist/components/Toggle/EToggle.vue_vue_type_script_setup_true_lang.js +0 -40
  406. package/dist/components/Toggle/EToggle.vue_vue_type_script_setup_true_lang.js.map +0 -1
  407. package/dist/components/Toggle/index.d.ts +0 -1
  408. /package/dist/components/Combobox/{EHighlight.d.ts → matchHighlight.d.ts} +0 -0
  409. /package/dist/components/{Tabs → NavList}/LinkNav.vue.d.ts +0 -0
@@ -3,7 +3,7 @@ type __VLS_Props = {
3
3
  title: string;
4
4
  /** A short line under the title. */
5
5
  description?: string;
6
- /** The heading level, 1 by default. A page has exactly one h1. */
6
+ /** The heading level of the title, 1 by default. A page has exactly one h1; change it only when the header is not the page's title. */
7
7
  headingLevel?: 1 | 2 | 3 | 4 | 5 | 6;
8
8
  };
9
9
  type __VLS_Slots = {
@@ -1 +1 @@
1
- {"version":3,"file":"EPageHeader.vue_vue_type_script_setup_true_lang.js","names":["$slots","_openBlock","_createElementBlock","_renderSlot","_createElementVNode","_createBlock","_resolveDynamicComponent","_withCtx","_createTextVNode","_toDisplayString","_createCommentVNode","EActions","EActions_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","EPageHeader_vue_vue_type_script_setup_true_lang_default","openBlock","createElementBlock","renderSlot","_ctx","createElementVNode","createBlock","resolveDynamicComponent","__props","withCtx","createTextVNode","toDisplayString","createCommentVNode"],"sources":["../../../src/components/PageHeader/EPageHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport EActions from \"../Actions/EActions.vue\";\nimport \"../../styles/base.css\";\n\nwithDefaults(\n defineProps<{\n /** The page's title: where the person is, in their words (\"Visit on Oct 2\"). */\n title: string;\n /** A short line under the title. */\n description?: string;\n /** The heading level, 1 by default. A page has exactly one h1. */\n headingLevel?: 1 | 2 | 3 | 4 | 5 | 6;\n }>(),\n { headingLevel: 1 },\n);\n\ndefineSlots<{\n /** An EBreadcrumb above the title. */\n breadcrumb?(): unknown;\n /** An EStamp beside the title. */\n status?(): unknown;\n /** The page's Buttons, the main one first. */\n actions?(): unknown;\n}>();\n</script>\n\n<template>\n <div class=\"e-pagehead\">\n <slot name=\"breadcrumb\" />\n <div class=\"e-pagehead-row\">\n <div class=\"e-pagehead-text\">\n <div class=\"e-pagehead-titlerow\">\n <component :is=\"`h${headingLevel}`\" class=\"e-pagehead-title\">{{ title }}</component>\n <slot name=\"status\" />\n </div>\n <p v-if=\"description\" class=\"e-pagehead-desc\">{{ description }}</p>\n </div>\n <EActions v-if=\"$slots.actions\" class=\"e-pagehead-actions\"><slot name=\"actions\" /></EActions>\n </div>\n </div>\n</template>\n\n<style>\n@layer e.page {\n .e-pagehead {\n display: grid;\n gap: var(--e-space-3);\n margin-bottom: var(--e-space-6);\n }\n\n .e-pagehead-row {\n display: flex;\n flex-wrap: wrap;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--e-space-3) var(--e-space-4);\n }\n\n .e-pagehead-text {\n flex: 1 1 18rem;\n min-width: 0;\n }\n\n .e-pagehead-title {\n margin: 0;\n font: 500 var(--e-text-4xl) / 1.1 var(--e-font-sans);\n text-wrap: balance;\n }\n\n .e-pagehead-desc {\n margin: var(--e-space-2) 0 0;\n max-width: var(--e-measure);\n font: 400 var(--e-text-lg) / 1.45 var(--e-font-sans);\n color: var(--e-muted);\n }\n\n @media (max-width: 32rem) {\n .e-pagehead-title {\n font-size: var(--e-text-2xl);\n }\n }\n\n .e-pagehead-titlerow {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--e-space-2) var(--e-space-4);\n }\n\n .e-pagehead-titlerow > :not(.e-pagehead-title) {\n margin-top: var(--e-space-1);\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;E,kBA2BEC,EAAA,GAAAC,EAYM,OAZNW,GAYM,CAXJV,EAA0BmB,EAAA,QAAA,YAAA,GAC1BlB,EASM,OATNU,GASM,CARJV,EAMM,OANNW,GAMM,CALJX,EAGM,OAHNY,GAGM,EAFJf,EAAA,GAAAI,EAAoFC,EAAA,IAAhEoB,EAAA,cAAY,GAAA,EAAI,OAAM,mBAAkB,GAAA;GAAC,SAAAnB,QAAW,CAARC,EAAAC,EAAAiB,EAAA,KAAK,GAAA,CAAA,C;;E,KACrEvB,EAAsBmB,EAAA,QAAA,QAAA,C,IAEfI,EAAA,eAATzB,EAAA,GAAAC,EAAmE,KAAnEe,GAAmER,EAAlBiB,EAAA,WAAW,GAAA,CAAA,K,aAE9C1B,EAAAA,OAAO,WAAvBC,EAAA,GAAAI,EAA6FM,GAAA;;GAA7D,OAAM;;GAAqB,SAAAJ,QAAuB,CAAvBJ,EAAuBmB,EAAA,QAAA,SAAA,C"}
1
+ {"version":3,"file":"EPageHeader.vue_vue_type_script_setup_true_lang.js","names":["$slots","_openBlock","_createElementBlock","_renderSlot","_createElementVNode","_createBlock","_resolveDynamicComponent","_withCtx","_createTextVNode","_toDisplayString","_createCommentVNode","EActions","EActions_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","EPageHeader_vue_vue_type_script_setup_true_lang_default","openBlock","createElementBlock","renderSlot","_ctx","createElementVNode","createBlock","resolveDynamicComponent","__props","withCtx","createTextVNode","toDisplayString","createCommentVNode"],"sources":["../../../src/components/PageHeader/EPageHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport EActions from \"../Actions/EActions.vue\";\nimport \"../../styles/base.css\";\n\nwithDefaults(\n defineProps<{\n /** The page's title: where the person is, in their words (\"Visit on Oct 2\"). */\n title: string;\n /** A short line under the title. */\n description?: string;\n /** The heading level of the title, 1 by default. A page has exactly one h1; change it only when the header is not the page's title. */\n headingLevel?: 1 | 2 | 3 | 4 | 5 | 6;\n }>(),\n { headingLevel: 1 },\n);\n\ndefineSlots<{\n /** An EBreadcrumb above the title. */\n breadcrumb?(): unknown;\n /** An EStamp beside the title. */\n status?(): unknown;\n /** The page's Buttons, the main one first. */\n actions?(): unknown;\n}>();\n</script>\n\n<template>\n <div class=\"e-pagehead\">\n <slot name=\"breadcrumb\" />\n <div class=\"e-pagehead-row\">\n <div class=\"e-pagehead-text\">\n <div class=\"e-pagehead-titlerow\">\n <component :is=\"`h${headingLevel}`\" class=\"e-pagehead-title\">{{ title }}</component>\n <slot name=\"status\" />\n </div>\n <p v-if=\"description\" class=\"e-pagehead-desc\">{{ description }}</p>\n </div>\n <EActions v-if=\"$slots.actions\" class=\"e-pagehead-actions\"><slot name=\"actions\" /></EActions>\n </div>\n </div>\n</template>\n\n<style>\n@layer e.page {\n .e-pagehead {\n display: grid;\n gap: var(--e-space-3);\n margin-bottom: var(--e-space-6);\n }\n\n .e-pagehead-row {\n display: flex;\n flex-wrap: wrap;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--e-space-3) var(--e-space-4);\n }\n\n .e-pagehead-text {\n flex: 1 1 18rem;\n min-width: 0;\n }\n\n .e-pagehead-title {\n margin: 0;\n font: 500 var(--e-text-4xl) / 1.1 var(--e-font-sans);\n text-wrap: balance;\n }\n\n .e-pagehead-desc {\n margin: var(--e-space-2) 0 0;\n max-width: var(--e-measure);\n font: 400 var(--e-text-lg) / 1.45 var(--e-font-sans);\n color: var(--e-muted);\n }\n\n @media (max-width: 32rem) {\n .e-pagehead-title {\n font-size: var(--e-text-2xl);\n }\n }\n\n .e-pagehead-titlerow {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--e-space-2) var(--e-space-4);\n }\n\n .e-pagehead-titlerow > :not(.e-pagehead-title) {\n margin-top: var(--e-space-1);\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;E,kBA2BEC,EAAA,GAAAC,EAYM,OAZNW,GAYM,CAXJV,EAA0BmB,EAAA,QAAA,YAAA,GAC1BlB,EASM,OATNU,GASM,CARJV,EAMM,OANNW,GAMM,CALJX,EAGM,OAHNY,GAGM,EAFJf,EAAA,GAAAI,EAAoFC,EAAA,IAAhEoB,EAAA,cAAY,GAAA,EAAI,OAAM,mBAAkB,GAAA;GAAC,SAAAnB,QAAW,CAARC,EAAAC,EAAAiB,EAAA,KAAK,GAAA,CAAA,C;;E,KACrEvB,EAAsBmB,EAAA,QAAA,QAAA,C,IAEfI,EAAA,eAATzB,EAAA,GAAAC,EAAmE,KAAnEe,GAAmER,EAAlBiB,EAAA,WAAW,GAAA,CAAA,K,aAE9C1B,EAAAA,OAAO,WAAvBC,EAAA,GAAAI,EAA6FM,GAAA;;GAA7D,OAAM;;GAAqB,SAAAJ,QAAuB,CAAvBJ,EAAuBmB,EAAA,QAAA,SAAA,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"EPagination.js","names":["_sfc_main","EPagination_vue_vue_type_script_setup_true_lang_default","EPagination_default"],"sources":["../../../src/components/Pagination/EPagination.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport EButton from \"../Button/EButton.vue\";\nimport EIcon from \"../Icon/EIcon.vue\";\nimport { useMessages } from \"../../config.js\";\nimport \"../../styles/base.css\";\n\nconst props = defineProps<{\n /** How many pages there are. */\n pageCount: number;\n}>();\n\nconst page = defineModel<number>({ default: 1 });\n\nconst t = useMessages();\n\nconst items = computed<(number | \"gap\")[]>(() => {\n const list: (number | \"gap\")[] = [];\n for (let i = 1; i <= props.pageCount; i++) {\n if (i === 1 || i === props.pageCount || Math.abs(i - page.value) <= 1) list.push(i);\n else if (list[list.length - 1] !== \"gap\") list.push(\"gap\");\n }\n return list.map((n, k) => {\n const before = list[k - 1];\n const after = list[k + 1];\n return n === \"gap\" && typeof before === \"number\" && typeof after === \"number\" && after - before === 2\n ? before + 1\n : n;\n });\n});\n</script>\n\n<template>\n <nav class=\"e-pager\" :aria-label=\"t('pagination')\">\n <EButton variant=\"outline\" icon=\"chevron-left\" :disabled=\"page <= 1\" @click=\"page = page - 1\">\n {{ t(\"previous\") }}\n </EButton>\n <ul class=\"e-pages\">\n <li v-for=\"(n, i) in items\" :key=\"i\">\n <span v-if=\"n === 'gap'\" class=\"e-page-gap\" aria-hidden=\"true\">&hellip;</span>\n <button\n v-else\n type=\"button\"\n class=\"e-page\"\n :aria-current=\"n === page ? 'page' : undefined\"\n :aria-label=\"t('pageN', { n })\"\n @click=\"page = n\"\n >\n {{ n }}\n </button>\n </li>\n </ul>\n <EButton variant=\"outline\" :disabled=\"page >= pageCount\" @click=\"page = page + 1\">\n {{ t(\"next\") }}\n <EIcon name=\"chevron-right\" />\n </EButton>\n </nav>\n</template>\n\n<style>\n@layer e.composites {\n .e-pager {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n gap: var(--e-space-3);\n }\n\n .e-pages {\n display: flex;\n align-items: center;\n gap: var(--e-space-1);\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n .e-page {\n display: inline-grid;\n place-items: center;\n min-width: var(--e-control-height);\n height: var(--e-control-height);\n padding: 0 var(--e-space-2);\n border: var(--e-stroke-edge) solid transparent;\n border-radius: var(--e-radius-md);\n background: transparent;\n color: var(--e-ink);\n font: 500 var(--e-text-sm)/1 var(--e-font-mono);\n font-variant-numeric: tabular-nums;\n cursor: pointer;\n transition:\n background-color var(--e-duration-tap) var(--e-easing-out),\n border-color var(--e-duration-tap) var(--e-easing-out);\n }\n\n .e-page:hover {\n background: var(--e-surface-tint);\n border-color: var(--e-border-strong);\n }\n\n .e-page:focus-visible {\n outline: var(--e-stroke-focus) solid var(--e-focus-ring);\n outline-offset: var(--e-focus-gap);\n }\n\n .e-page[aria-current=\"page\"] {\n background: var(--e-primary);\n border-color: var(--e-primary);\n color: var(--e-on-primary);\n font-weight: 600;\n cursor: default;\n }\n\n .e-page-gap {\n display: inline-grid;\n place-items: center;\n min-width: 28px;\n color: var(--e-muted);\n }\n\n @media (max-width: 32rem) {\n .e-pages {\n display: none;\n }\n\n .e-pager {\n justify-content: space-between;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .e-page {\n transition: none;\n }\n }\n\n @media (forced-colors: active) {\n .e-page[aria-current=\"page\"] {\n forced-color-adjust: none;\n background: Highlight;\n color: HighlightText;\n }\n }\n\n @media print {\n .e-pager {\n display: none;\n }\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"EPagination.js","names":["_sfc_main","EPagination_vue_vue_type_script_setup_true_lang_default","EPagination_default"],"sources":["../../../src/components/Pagination/EPagination.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport EButton from \"../Button/EButton.vue\";\nimport EIcon from \"../Icon/EIcon.vue\";\nimport { useMessages } from \"../../config.js\";\nimport \"../../styles/base.css\";\n\nconst props = defineProps<{\n /** How many pages there are. */\n pageCount: number;\n}>();\n\n/** The current page, from 1. */\nconst page = defineModel<number>({ default: 1 });\n\nconst t = useMessages();\n\nconst items = computed<(number | \"gap\")[]>(() => {\n const list: (number | \"gap\")[] = [];\n for (let i = 1; i <= props.pageCount; i++) {\n if (i === 1 || i === props.pageCount || Math.abs(i - page.value) <= 1) list.push(i);\n else if (list[list.length - 1] !== \"gap\") list.push(\"gap\");\n }\n return list.map((n, k) => {\n const before = list[k - 1];\n const after = list[k + 1];\n return n === \"gap\" && typeof before === \"number\" && typeof after === \"number\" && after - before === 2\n ? before + 1\n : n;\n });\n});\n</script>\n\n<template>\n <nav class=\"e-pager\" :aria-label=\"t('pagination')\">\n <EButton variant=\"outline\" icon=\"chevron-left\" :disabled=\"page <= 1\" @click=\"page = page - 1\">\n {{ t(\"previous\") }}\n </EButton>\n <ul class=\"e-pages\">\n <li v-for=\"(n, i) in items\" :key=\"i\">\n <span v-if=\"n === 'gap'\" class=\"e-page-gap\" aria-hidden=\"true\">&hellip;</span>\n <button\n v-else\n type=\"button\"\n class=\"e-page\"\n :aria-current=\"n === page ? 'page' : undefined\"\n :aria-label=\"t('pageN', { n })\"\n @click=\"page = n\"\n >\n {{ n }}\n </button>\n </li>\n </ul>\n <EButton variant=\"outline\" :disabled=\"page >= pageCount\" @click=\"page = page + 1\">\n {{ t(\"next\") }}\n <EIcon name=\"chevron-right\" />\n </EButton>\n </nav>\n</template>\n\n<style>\n@layer e.composites {\n .e-pager {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n gap: var(--e-space-3);\n }\n\n .e-pages {\n display: flex;\n align-items: center;\n gap: var(--e-space-1);\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n .e-page {\n display: inline-grid;\n place-items: center;\n min-width: var(--e-control-height);\n height: var(--e-control-height);\n padding: 0 var(--e-space-2);\n border: var(--e-stroke-edge) solid transparent;\n\n --e-bc: transparent;\n\n outline: var(--e-stroke-edge) solid var(--e-bc);\n outline-offset: calc(-1 * var(--e-stroke-edge));\n border-radius: var(--e-radius-md);\n background: transparent;\n color: var(--e-ink);\n font: 500 var(--e-text-sm)/1 var(--e-font-mono);\n font-variant-numeric: tabular-nums;\n cursor: pointer;\n transition:\n background-color var(--e-duration-tap) var(--e-easing-out),\n border-color var(--e-duration-tap) var(--e-easing-out);\n }\n\n .e-page:hover {\n background: var(--e-surface-hover);\n border-color: var(--e-border-strong);\n\n --e-bc: var(--e-border-strong);\n }\n\n .e-page:focus-visible {\n outline: var(--e-stroke-focus) solid var(--e-focus-ring);\n outline-offset: var(--e-focus-gap);\n }\n\n .e-page[aria-current=\"page\"] {\n background: var(--e-primary);\n border-color: var(--e-primary);\n\n --e-bc: var(--e-primary);\n\n color: var(--e-on-primary);\n font-weight: 600;\n cursor: default;\n }\n\n .e-page-gap {\n display: inline-grid;\n place-items: center;\n min-width: calc(var(--e-space-6) + var(--e-space-1));\n color: var(--e-muted);\n }\n\n @media (max-width: 32rem) {\n .e-pages {\n display: none;\n }\n\n .e-pager {\n justify-content: space-between;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .e-page {\n transition: none;\n }\n }\n\n @media (forced-colors: active) {\n .e-page[aria-current=\"page\"] {\n forced-color-adjust: none;\n background: Highlight;\n color: HighlightText;\n }\n }\n\n @media print {\n .e-pager {\n display: none;\n }\n }\n}\n</style>\n"],"mappings":""}
@@ -3,6 +3,7 @@ type __VLS_Props = {
3
3
  pageCount: number;
4
4
  };
5
5
  type __VLS_ModelProps = {
6
+ /** The current page, from 1. */
6
7
  modelValue?: number;
7
8
  };
8
9
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
@@ -1 +1 @@
1
- {"version":3,"file":"EPagination.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createElementBlock","_unref","_createVNode","EButton","_withCtx","_createTextVNode","_toDisplayString","_createElementVNode","_Fragment","_renderList","EIcon","EIcon_default","EButton_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","EPagination_vue_vue_type_script_setup_true_lang_default","\"modelValue\"","\"modelModifiers\"","props","__props","page","useModel","t","useMessages","items","computed","list","i","before","k","after","n","openBlock","createElementBlock","unref","createVNode","_cache","withCtx","createTextVNode","toDisplayString","createElementVNode","Fragment","renderList"],"sources":["../../../src/components/Pagination/EPagination.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport EButton from \"../Button/EButton.vue\";\nimport EIcon from \"../Icon/EIcon.vue\";\nimport { useMessages } from \"../../config.js\";\nimport \"../../styles/base.css\";\n\nconst props = defineProps<{\n /** How many pages there are. */\n pageCount: number;\n}>();\n\nconst page = defineModel<number>({ default: 1 });\n\nconst t = useMessages();\n\nconst items = computed<(number | \"gap\")[]>(() => {\n const list: (number | \"gap\")[] = [];\n for (let i = 1; i <= props.pageCount; i++) {\n if (i === 1 || i === props.pageCount || Math.abs(i - page.value) <= 1) list.push(i);\n else if (list[list.length - 1] !== \"gap\") list.push(\"gap\");\n }\n return list.map((n, k) => {\n const before = list[k - 1];\n const after = list[k + 1];\n return n === \"gap\" && typeof before === \"number\" && typeof after === \"number\" && after - before === 2\n ? before + 1\n : n;\n });\n});\n</script>\n\n<template>\n <nav class=\"e-pager\" :aria-label=\"t('pagination')\">\n <EButton variant=\"outline\" icon=\"chevron-left\" :disabled=\"page <= 1\" @click=\"page = page - 1\">\n {{ t(\"previous\") }}\n </EButton>\n <ul class=\"e-pages\">\n <li v-for=\"(n, i) in items\" :key=\"i\">\n <span v-if=\"n === 'gap'\" class=\"e-page-gap\" aria-hidden=\"true\">&hellip;</span>\n <button\n v-else\n type=\"button\"\n class=\"e-page\"\n :aria-current=\"n === page ? 'page' : undefined\"\n :aria-label=\"t('pageN', { n })\"\n @click=\"page = n\"\n >\n {{ n }}\n </button>\n </li>\n </ul>\n <EButton variant=\"outline\" :disabled=\"page >= pageCount\" @click=\"page = page + 1\">\n {{ t(\"next\") }}\n <EIcon name=\"chevron-right\" />\n </EButton>\n </nav>\n</template>\n\n<style>\n@layer e.composites {\n .e-pager {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n gap: var(--e-space-3);\n }\n\n .e-pages {\n display: flex;\n align-items: center;\n gap: var(--e-space-1);\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n .e-page {\n display: inline-grid;\n place-items: center;\n min-width: var(--e-control-height);\n height: var(--e-control-height);\n padding: 0 var(--e-space-2);\n border: var(--e-stroke-edge) solid transparent;\n border-radius: var(--e-radius-md);\n background: transparent;\n color: var(--e-ink);\n font: 500 var(--e-text-sm)/1 var(--e-font-mono);\n font-variant-numeric: tabular-nums;\n cursor: pointer;\n transition:\n background-color var(--e-duration-tap) var(--e-easing-out),\n border-color var(--e-duration-tap) var(--e-easing-out);\n }\n\n .e-page:hover {\n background: var(--e-surface-tint);\n border-color: var(--e-border-strong);\n }\n\n .e-page:focus-visible {\n outline: var(--e-stroke-focus) solid var(--e-focus-ring);\n outline-offset: var(--e-focus-gap);\n }\n\n .e-page[aria-current=\"page\"] {\n background: var(--e-primary);\n border-color: var(--e-primary);\n color: var(--e-on-primary);\n font-weight: 600;\n cursor: default;\n }\n\n .e-page-gap {\n display: inline-grid;\n place-items: center;\n min-width: 28px;\n color: var(--e-muted);\n }\n\n @media (max-width: 32rem) {\n .e-pages {\n display: none;\n }\n\n .e-pager {\n justify-content: space-between;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .e-page {\n transition: none;\n }\n }\n\n @media (forced-colors: active) {\n .e-page[aria-current=\"page\"] {\n forced-color-adjust: none;\n background: Highlight;\n color: HighlightText;\n }\n }\n\n @media print {\n .e-pager {\n display: none;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EAOA,IAAMsB,IAAQC,GAKRC,IAAOxB,EAAmBuB,GAAA,YAAe,GAEzCG,IAAIC,EAAY,GAEhBC,IAAQC,QAAmC;GAC/C,IAAMC,IAA2B,CAAC;GAClC,KAAK,IAAIC,IAAI,GAAGA,KAAKT,EAAM,WAAW,KACpC,AAAIS,MAAM,KAAKA,MAAMT,EAAM,aAAa,KAAK,IAAIS,IAAIP,EAAK,KAAK,KAAK,IAAGM,EAAK,KAAKC,CAAC,IACzED,EAAKA,EAAK,SAAS,OAAO,SAAOA,EAAK,KAAK,KAAK;GAE3D,OAAOA,EAAK,KAAK,GAAG,MAAM;IACxB,IAAME,IAASF,EAAKG,IAAI,IAClBC,IAAQJ,EAAKG,IAAI;IACvB,OAAOE,MAAM,SAAS,OAAOH,KAAW,YAAY,OAAOE,KAAU,YAAYA,IAAQF,MAAW,IAChGA,IAAS,IACTG;GACN,CAAC;EACH,CAAC;E,kBAIClC,EAAA,GAAAC,EAuBM,OAAA;GAvBD,OAAM;GAAW,cAAYC,EAAAuB,CAAA,CAAC,CAAA,YAAA;;GACjCtB,EAEUC,GAAA;IAFD,SAAQ;IAAU,MAAK;IAAgB,UAAUmB,EAAA,SAAI;IAAQ,SAAK,AAAAgB,EAAA,QAAA,MAAE,IAAA;;IAC3E,SAAAlC,QAAmB,CAAhBC,EAAAC,EAAAL,EAAAuB,CAAA,CAAC,CAAA,UAAA,CAAA,GAAA,CAAA,C;;;GAENjB,EAcK,MAdLO,GAcK,EAbHf,EAAA,EAAA,GAAAC,EAYKQ,GAAA,MAAAC,EAZgBiB,EAAA,QAAT,GAAG,OAAf3B,EAAA,GAAAC,EAYK,MAAA,EAZwB,KAAK6B,EAAC,GAAA,CACrBI,MAAC,SAAblC,EAAA,GAAAC,EAA8E,QAA9Ee,GAA+D,GAAQ,MACvEhB,EAAA,GAAAC,EASS,UAAA;;IAPP,MAAK;IACL,OAAM;IACL,gBAAciC,MAAMX,EAAA,QAAI,SAAY,KAAA;IACpC,cAAYrB,EAAAuB,CAAA,CAAC,CAAA,SAAA,EAAY,KAAC,CAAA;IAC1B,UAAK,MAAE,EAAA,QAAOS;GAEZ,GAAA3B,EAAA2B,CAAC,GAAA,GAAAjB,CAAA,E;GAIVd,EAGUC,GAAA;IAHD,SAAQ;IAAW,UAAUmB,EAAA,SAAQD,EAAA;IAAY,SAAK,AAAAiB,EAAA,QAAA,MAAE,EAAA,SAAW;;IAC1E,SAAAlC,QAAe,CAAZC,EAAAC,EAAAL,EAAAuB,CAAA,CAAC,CAAA,MAAA,CAAA,IAAW,KACf,CAAA,GAAAtB,EAA8BQ,GAAA,EAAvB,MAAK,gBAAe,CAAA,C"}
1
+ {"version":3,"file":"EPagination.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createElementBlock","_unref","_createVNode","EButton","_withCtx","_createTextVNode","_toDisplayString","_createElementVNode","_Fragment","_renderList","EIcon","EIcon_default","EButton_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","EPagination_vue_vue_type_script_setup_true_lang_default","\"modelValue\"","\"modelModifiers\"","props","__props","page","useModel","t","useMessages","items","computed","list","i","before","k","after","n","openBlock","createElementBlock","unref","createVNode","_cache","withCtx","createTextVNode","toDisplayString","createElementVNode","Fragment","renderList"],"sources":["../../../src/components/Pagination/EPagination.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport EButton from \"../Button/EButton.vue\";\nimport EIcon from \"../Icon/EIcon.vue\";\nimport { useMessages } from \"../../config.js\";\nimport \"../../styles/base.css\";\n\nconst props = defineProps<{\n /** How many pages there are. */\n pageCount: number;\n}>();\n\n/** The current page, from 1. */\nconst page = defineModel<number>({ default: 1 });\n\nconst t = useMessages();\n\nconst items = computed<(number | \"gap\")[]>(() => {\n const list: (number | \"gap\")[] = [];\n for (let i = 1; i <= props.pageCount; i++) {\n if (i === 1 || i === props.pageCount || Math.abs(i - page.value) <= 1) list.push(i);\n else if (list[list.length - 1] !== \"gap\") list.push(\"gap\");\n }\n return list.map((n, k) => {\n const before = list[k - 1];\n const after = list[k + 1];\n return n === \"gap\" && typeof before === \"number\" && typeof after === \"number\" && after - before === 2\n ? before + 1\n : n;\n });\n});\n</script>\n\n<template>\n <nav class=\"e-pager\" :aria-label=\"t('pagination')\">\n <EButton variant=\"outline\" icon=\"chevron-left\" :disabled=\"page <= 1\" @click=\"page = page - 1\">\n {{ t(\"previous\") }}\n </EButton>\n <ul class=\"e-pages\">\n <li v-for=\"(n, i) in items\" :key=\"i\">\n <span v-if=\"n === 'gap'\" class=\"e-page-gap\" aria-hidden=\"true\">&hellip;</span>\n <button\n v-else\n type=\"button\"\n class=\"e-page\"\n :aria-current=\"n === page ? 'page' : undefined\"\n :aria-label=\"t('pageN', { n })\"\n @click=\"page = n\"\n >\n {{ n }}\n </button>\n </li>\n </ul>\n <EButton variant=\"outline\" :disabled=\"page >= pageCount\" @click=\"page = page + 1\">\n {{ t(\"next\") }}\n <EIcon name=\"chevron-right\" />\n </EButton>\n </nav>\n</template>\n\n<style>\n@layer e.composites {\n .e-pager {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n gap: var(--e-space-3);\n }\n\n .e-pages {\n display: flex;\n align-items: center;\n gap: var(--e-space-1);\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n .e-page {\n display: inline-grid;\n place-items: center;\n min-width: var(--e-control-height);\n height: var(--e-control-height);\n padding: 0 var(--e-space-2);\n border: var(--e-stroke-edge) solid transparent;\n\n --e-bc: transparent;\n\n outline: var(--e-stroke-edge) solid var(--e-bc);\n outline-offset: calc(-1 * var(--e-stroke-edge));\n border-radius: var(--e-radius-md);\n background: transparent;\n color: var(--e-ink);\n font: 500 var(--e-text-sm)/1 var(--e-font-mono);\n font-variant-numeric: tabular-nums;\n cursor: pointer;\n transition:\n background-color var(--e-duration-tap) var(--e-easing-out),\n border-color var(--e-duration-tap) var(--e-easing-out);\n }\n\n .e-page:hover {\n background: var(--e-surface-hover);\n border-color: var(--e-border-strong);\n\n --e-bc: var(--e-border-strong);\n }\n\n .e-page:focus-visible {\n outline: var(--e-stroke-focus) solid var(--e-focus-ring);\n outline-offset: var(--e-focus-gap);\n }\n\n .e-page[aria-current=\"page\"] {\n background: var(--e-primary);\n border-color: var(--e-primary);\n\n --e-bc: var(--e-primary);\n\n color: var(--e-on-primary);\n font-weight: 600;\n cursor: default;\n }\n\n .e-page-gap {\n display: inline-grid;\n place-items: center;\n min-width: calc(var(--e-space-6) + var(--e-space-1));\n color: var(--e-muted);\n }\n\n @media (max-width: 32rem) {\n .e-pages {\n display: none;\n }\n\n .e-pager {\n justify-content: space-between;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .e-page {\n transition: none;\n }\n }\n\n @media (forced-colors: active) {\n .e-page[aria-current=\"page\"] {\n forced-color-adjust: none;\n background: Highlight;\n color: HighlightText;\n }\n }\n\n @media print {\n .e-pager {\n display: none;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EAOA,IAAMsB,IAAQC,GAMRC,IAAOxB,EAAmBuB,GAAA,YAAe,GAEzCG,IAAIC,EAAY,GAEhBC,IAAQC,QAAmC;GAC/C,IAAMC,IAA2B,CAAC;GAClC,KAAK,IAAIC,IAAI,GAAGA,KAAKT,EAAM,WAAW,KACpC,AAAIS,MAAM,KAAKA,MAAMT,EAAM,aAAa,KAAK,IAAIS,IAAIP,EAAK,KAAK,KAAK,IAAGM,EAAK,KAAKC,CAAC,IACzED,EAAKA,EAAK,SAAS,OAAO,SAAOA,EAAK,KAAK,KAAK;GAE3D,OAAOA,EAAK,KAAK,GAAG,MAAM;IACxB,IAAME,IAASF,EAAKG,IAAI,IAClBC,IAAQJ,EAAKG,IAAI;IACvB,OAAOE,MAAM,SAAS,OAAOH,KAAW,YAAY,OAAOE,KAAU,YAAYA,IAAQF,MAAW,IAChGA,IAAS,IACTG;GACN,CAAC;EACH,CAAC;E,kBAIClC,EAAA,GAAAC,EAuBM,OAAA;GAvBD,OAAM;GAAW,cAAYC,EAAAuB,CAAA,CAAC,CAAA,YAAA;;GACjCtB,EAEUC,GAAA;IAFD,SAAQ;IAAU,MAAK;IAAgB,UAAUmB,EAAA,SAAI;IAAQ,SAAK,AAAAgB,EAAA,QAAA,MAAE,IAAA;;IAC3E,SAAAlC,QAAmB,CAAhBC,EAAAC,EAAAL,EAAAuB,CAAA,CAAC,CAAA,UAAA,CAAA,GAAA,CAAA,C;;;GAENjB,EAcK,MAdLO,GAcK,EAbHf,EAAA,EAAA,GAAAC,EAYKQ,GAAA,MAAAC,EAZgBiB,EAAA,QAAT,GAAG,OAAf3B,EAAA,GAAAC,EAYK,MAAA,EAZwB,KAAK6B,EAAC,GAAA,CACrBI,MAAC,SAAblC,EAAA,GAAAC,EAA8E,QAA9Ee,GAA+D,GAAQ,MACvEhB,EAAA,GAAAC,EASS,UAAA;;IAPP,MAAK;IACL,OAAM;IACL,gBAAciC,MAAMX,EAAA,QAAI,SAAY,KAAA;IACpC,cAAYrB,EAAAuB,CAAA,CAAC,CAAA,SAAA,EAAY,KAAC,CAAA;IAC1B,UAAK,MAAE,EAAA,QAAOS;GAEZ,GAAA3B,EAAA2B,CAAC,GAAA,GAAAjB,CAAA,E;GAIVd,EAGUC,GAAA;IAHD,SAAQ;IAAW,UAAUmB,EAAA,SAAQD,EAAA;IAAY,SAAK,AAAAiB,EAAA,QAAA,MAAE,EAAA,SAAW;;IAC1E,SAAAlC,QAAe,CAAZC,EAAAC,EAAAL,EAAAuB,CAAA,CAAC,CAAA,MAAA,CAAA,IAAW,KACf,CAAA,GAAAtB,EAA8BQ,GAAA,EAAvB,MAAK,gBAAe,CAAA,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"EPasswordField.js","names":["_sfc_main","EPasswordField_vue_vue_type_script_setup_true_lang_default","EPasswordField_default"],"sources":["../../../src/components/PasswordField/EPasswordField.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface PasswordRule {\n /** What the password needs, such as \"At least 10 characters\". */\n label: string;\n /** Whether the password meets the rule. */\n test: (value: string) => boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from \"vue\";\nimport EIcon from \"../Icon/EIcon.vue\";\nimport EField from \"../Field/EField.vue\";\nimport { useMessages } from \"../../config.js\";\nimport { focusInside } from \"../../composables/focusInside.js\";\nimport { useFieldAttrs } from \"../../composables/useFieldAttrs.js\";\nimport \"../../styles/base.css\";\nimport \"../TextField/input.css\";\nimport \"../Combobox/combo.css\";\n\ndefineOptions({ inheritAttrs: false });\n\nconst props = defineProps<{\n /** The visible label, a mono kicker above the field. Default \"Password\". */\n label?: string;\n /** Keep the label for screen readers and remove it from the page. */\n hideLabel?: boolean;\n /** `current` for signing in, `new` for choosing one. Sets the autocomplete token so a password manager can fill or suggest. */\n mode?: \"current\" | \"new\";\n /** A checklist that updates as the person types. Each rule shows a tick or an empty circle and says \"met\" or \"not met yet\". */\n rules?: PasswordRule[];\n /** Help that stays under the field. */\n hint?: string;\n /** What to fix. Replaces the hint, marks the input invalid and is announced. */\n error?: string;\n /** A word beside the label. */\n required?: boolean;\n /** A word beside the label. Flag whichever is rarer. */\n optional?: boolean;\n disabled?: boolean;\n /** The id of the input; the label points at it. Generated when left out. */\n id?: string;\n}>();\n\nconst model = defineModel<string>({ default: \"\" });\n\nconst t = useMessages();\nconst attrs = useFieldAttrs();\nconst input = ref<HTMLInputElement | null>(null);\nconst shown = ref(false);\n\nconst list = computed(() => props.rules ?? []);\n\nfunction inputBind(field: { id: string; ariaInvalid: \"true\" | undefined; ariaDescribedby: string | undefined }) {\n const describedby = [field.ariaDescribedby, list.value.length ? `${field.id}-rules` : \"\"].filter(Boolean).join(\" \");\n return {\n id: field.id,\n class: \"e-input\",\n type: shown.value ? \"text\" : \"password\",\n value: model.value,\n disabled: props.disabled,\n required: props.required,\n autocomplete: props.mode === \"new\" ? \"new-password\" : \"current-password\",\n autocapitalize: \"none\",\n spellcheck: false,\n \"aria-invalid\": field.ariaInvalid,\n ...attrs.input(describedby || undefined),\n };\n}\n\ndefineExpose({\n input,\n focus: () => input.value?.focus(),\n});\n</script>\n\n<template>\n <EField\n v-bind=\"attrs.wrapper()\"\n :id=\"id\"\n :label=\"label || t('password')\"\n :hide-label=\"hideLabel\"\n :hint=\"hint\"\n :error=\"error\"\n :required=\"required\"\n :optional=\"optional\"\n >\n <template #default=\"field\">\n <!-- eslint-disable-next-line vuejs-accessibility/click-events-have-key-events, vuejs-accessibility/no-static-element-interactions -->\n <div\n class=\"e-input-wrap\"\n :data-invalid=\"error ? '' : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n @click=\"focusInside\"\n >\n <input ref=\"input\" v-bind=\"inputBind(field)\" @input=\"model = ($event.target as HTMLInputElement).value\" />\n <button\n type=\"button\"\n class=\"e-combo-btn\"\n :aria-pressed=\"shown ? 'true' : 'false'\"\n :aria-label=\"shown ? t('hidePassword') : t('showPassword')\"\n :disabled=\"disabled\"\n @click=\"shown = !shown\"\n >\n <EIcon :name=\"shown ? 'eye-slash' : 'eye'\" />\n </button>\n </div>\n <ul v-if=\"list.length\" :id=\"`${field.id}-rules`\" class=\"e-rules\" :aria-label=\"t('passwordRules')\">\n <li v-for=\"r in list\" :key=\"r.label\" class=\"e-rule\" :data-met=\"r.test(model) ? '' : undefined\">\n <EIcon v-if=\"r.test(model)\" name=\"check\" small />\n <span v-else class=\"e-rule-dot\" aria-hidden=\"true\" />\n {{ r.label }}\n <span class=\"e-sr\"> ({{ t(r.test(model) ? \"ruleMet\" : \"ruleNotMet\") }})</span>\n </li>\n </ul>\n </template>\n </EField>\n</template>\n\n<style>\n@layer e.composites {\n .e-rules {\n display: grid;\n gap: var(--e-space-1);\n margin: 0;\n padding: 0;\n list-style: none;\n font: 400 var(--e-text-sm)/1.4 var(--e-font-sans);\n }\n\n .e-rule {\n display: flex;\n align-items: center;\n gap: var(--e-space-2);\n color: var(--e-muted);\n }\n\n .e-rule[data-met] {\n color: var(--e-secondary);\n }\n\n .e-rule .e-icon {\n flex: none;\n }\n\n .e-rule-dot {\n flex: none;\n width: 14px;\n height: 14px;\n border: var(--e-stroke-edge) solid var(--e-border-strong);\n border-radius: 50%;\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"EPasswordField.js","names":["_sfc_main","EPasswordField_vue_vue_type_script_setup_true_lang_default","EPasswordField_default"],"sources":["../../../src/components/PasswordField/EPasswordField.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface PasswordRule {\n /** What the password needs, such as \"At least 10 characters\". */\n label: string;\n /** Whether the password meets the rule. */\n test: (value: string) => boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from \"vue\";\nimport EIcon from \"../Icon/EIcon.vue\";\nimport EField from \"../Field/EField.vue\";\nimport { useMessages } from \"../../config.js\";\nimport { focusInside } from \"../../composables/focusInside.js\";\nimport { useFieldAttrs } from \"../../composables/useFieldAttrs.js\";\nimport \"../../styles/base.css\";\nimport \"../TextField/input.css\";\nimport \"../Combobox/combo.css\";\n\ndefineOptions({ inheritAttrs: false });\n\nconst props = defineProps<{\n /** The visible label, a mono kicker above the field. @default \"Password\" */\n label?: string;\n /** Keep the label for screen readers and remove it from the page. */\n hideLabel?: boolean;\n /** `current` for signing in, `new` for choosing one. Sets `autocomplete` (`current-password` or `new-password`) so a password manager can fill or suggest. */\n mode?: \"current\" | \"new\";\n /** `{ label, test(value) }`. A checklist under the field that updates as the person types. Each rule shows a tick or an empty circle and says \"met\" or \"not met yet\". */\n rules?: PasswordRule[];\n /** Help that stays under the field. */\n hint?: string;\n /** What to fix. Replaces the hint, marks the input invalid and is announced. */\n error?: string;\n /** The `required` attribute and a word beside the label. */\n required?: boolean;\n /** A word beside the label. Flag whichever is rarer. */\n optional?: boolean;\n /** Disables the input and the toggle. */\n disabled?: boolean;\n /** The id of the input; the label points at it. @default generated */\n id?: string;\n}>();\n\n/** The password. */\nconst model = defineModel<string>({ default: \"\" });\n\nconst t = useMessages();\nconst attrs = useFieldAttrs();\nconst input = ref<HTMLInputElement | null>(null);\nconst shown = ref(false);\n\nconst list = computed(() => props.rules ?? []);\n\nfunction inputBind(field: { id: string; ariaInvalid: \"true\" | undefined; ariaDescribedby: string | undefined }) {\n const describedby = [field.ariaDescribedby, list.value.length ? `${field.id}-rules` : \"\"].filter(Boolean).join(\" \");\n return {\n id: field.id,\n class: \"e-input\",\n type: shown.value ? \"text\" : \"password\",\n value: model.value,\n disabled: props.disabled,\n required: props.required,\n autocomplete: props.mode === \"new\" ? \"new-password\" : \"current-password\",\n autocapitalize: \"none\",\n spellcheck: false,\n \"aria-invalid\": field.ariaInvalid,\n ...attrs.input(describedby || undefined),\n };\n}\n\ndefineExpose({\n input,\n focus: () => input.value?.focus(),\n});\n</script>\n\n<template>\n <EField\n v-bind=\"attrs.wrapper()\"\n :id=\"id\"\n :label=\"label || t('password')\"\n :hide-label=\"hideLabel\"\n :hint=\"hint\"\n :error=\"error\"\n :required=\"required\"\n :optional=\"optional\"\n >\n <template #default=\"field\">\n <!-- eslint-disable-next-line vuejs-accessibility/click-events-have-key-events, vuejs-accessibility/no-static-element-interactions -->\n <div\n class=\"e-input-wrap\"\n :data-invalid=\"error ? '' : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n @click=\"focusInside\"\n >\n <input ref=\"input\" v-bind=\"inputBind(field)\" @input=\"model = ($event.target as HTMLInputElement).value\" />\n <button\n type=\"button\"\n class=\"e-combo-btn\"\n :aria-pressed=\"shown ? 'true' : 'false'\"\n :aria-label=\"shown ? t('hidePassword') : t('showPassword')\"\n :disabled=\"disabled\"\n @click=\"shown = !shown\"\n >\n <EIcon :name=\"shown ? 'eye-slash' : 'eye'\" />\n </button>\n </div>\n <ul v-if=\"list.length\" :id=\"`${field.id}-rules`\" class=\"e-rules\" :aria-label=\"t('passwordRules')\">\n <li v-for=\"r in list\" :key=\"r.label\" class=\"e-rule\" :data-met=\"r.test(model) ? '' : undefined\">\n <EIcon v-if=\"r.test(model)\" name=\"check\" small />\n <span v-else class=\"e-rule-dot\" aria-hidden=\"true\" />\n {{ r.label }}\n <span class=\"e-sr\"> ({{ t(r.test(model) ? \"ruleMet\" : \"ruleNotMet\") }})</span>\n </li>\n </ul>\n </template>\n </EField>\n</template>\n\n<style>\n@layer e.composites {\n /* The hidden-character dots keep the size of plain text so the caret matches when they are shown. */\n .e-input-wrap .e-input[type=\"password\"] {\n letter-spacing: 0.12em;\n }\n\n .e-rules {\n display: grid;\n gap: var(--e-space-1);\n margin: 0;\n padding: 0;\n list-style: none;\n font: 400 var(--e-text-sm)/1.4 var(--e-font-sans);\n }\n\n .e-rule {\n display: flex;\n align-items: center;\n gap: var(--e-space-2);\n color: var(--e-muted);\n }\n\n .e-rule[data-met] {\n color: var(--e-secondary);\n }\n\n .e-rule .e-icon {\n flex: none;\n }\n\n .e-rule-dot {\n flex: none;\n width: 14px;\n height: 14px;\n border: var(--e-stroke-edge) solid var(--e-border-strong);\n\n --e-bc: var(--e-border-strong);\n\n outline: var(--e-stroke-edge) solid var(--e-bc);\n outline-offset: calc(-1 * var(--e-stroke-edge));\n border-radius: 50%;\n }\n}\n</style>\n"],"mappings":""}
@@ -7,26 +7,28 @@ export interface PasswordRule {
7
7
  declare const _default: typeof __VLS_export;
8
8
  export default _default;
9
9
  declare const __VLS_export: import('vue').DefineComponent<{
10
- /** The visible label, a mono kicker above the field. Default "Password". */
10
+ /** The visible label, a mono kicker above the field. @default "Password" */
11
11
  label?: string;
12
12
  /** Keep the label for screen readers and remove it from the page. */
13
13
  hideLabel?: boolean;
14
- /** `current` for signing in, `new` for choosing one. Sets the autocomplete token so a password manager can fill or suggest. */
14
+ /** `current` for signing in, `new` for choosing one. Sets `autocomplete` (`current-password` or `new-password`) so a password manager can fill or suggest. */
15
15
  mode?: "current" | "new";
16
- /** A checklist that updates as the person types. Each rule shows a tick or an empty circle and says "met" or "not met yet". */
16
+ /** `{ label, test(value) }`. A checklist under the field that updates as the person types. Each rule shows a tick or an empty circle and says "met" or "not met yet". */
17
17
  rules?: PasswordRule[];
18
18
  /** Help that stays under the field. */
19
19
  hint?: string;
20
20
  /** What to fix. Replaces the hint, marks the input invalid and is announced. */
21
21
  error?: string;
22
- /** A word beside the label. */
22
+ /** The `required` attribute and a word beside the label. */
23
23
  required?: boolean;
24
24
  /** A word beside the label. Flag whichever is rarer. */
25
25
  optional?: boolean;
26
+ /** Disables the input and the toggle. */
26
27
  disabled?: boolean;
27
- /** The id of the input; the label points at it. Generated when left out. */
28
+ /** The id of the input; the label points at it. @default generated */
28
29
  id?: string;
29
30
  } & {
31
+ /** The password. */
30
32
  modelValue?: string;
31
33
  }, {
32
34
  input: import('vue').Ref<HTMLInputElement | null, HTMLInputElement | null>;
@@ -34,26 +36,28 @@ declare const __VLS_export: import('vue').DefineComponent<{
34
36
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
35
37
  "update:modelValue": (value: string) => any;
36
38
  }, string, import('vue').PublicProps, Readonly<{
37
- /** The visible label, a mono kicker above the field. Default "Password". */
39
+ /** The visible label, a mono kicker above the field. @default "Password" */
38
40
  label?: string;
39
41
  /** Keep the label for screen readers and remove it from the page. */
40
42
  hideLabel?: boolean;
41
- /** `current` for signing in, `new` for choosing one. Sets the autocomplete token so a password manager can fill or suggest. */
43
+ /** `current` for signing in, `new` for choosing one. Sets `autocomplete` (`current-password` or `new-password`) so a password manager can fill or suggest. */
42
44
  mode?: "current" | "new";
43
- /** A checklist that updates as the person types. Each rule shows a tick or an empty circle and says "met" or "not met yet". */
45
+ /** `{ label, test(value) }`. A checklist under the field that updates as the person types. Each rule shows a tick or an empty circle and says "met" or "not met yet". */
44
46
  rules?: PasswordRule[];
45
47
  /** Help that stays under the field. */
46
48
  hint?: string;
47
49
  /** What to fix. Replaces the hint, marks the input invalid and is announced. */
48
50
  error?: string;
49
- /** A word beside the label. */
51
+ /** The `required` attribute and a word beside the label. */
50
52
  required?: boolean;
51
53
  /** A word beside the label. Flag whichever is rarer. */
52
54
  optional?: boolean;
55
+ /** Disables the input and the toggle. */
53
56
  disabled?: boolean;
54
- /** The id of the input; the label points at it. Generated when left out. */
57
+ /** The id of the input; the label points at it. @default generated */
55
58
  id?: string;
56
59
  } & {
60
+ /** The password. */
57
61
  modelValue?: string;
58
62
  }> & Readonly<{
59
63
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"EPasswordField.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createBlock","EField","_mergeProps","_unref","_withCtx","_createElementVNode","_createVNode","EIcon","_createElementBlock","_Fragment","_renderList","_createTextVNode","_toDisplayString","_createCommentVNode","EIcon_default","EField_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","EPasswordField_vue_vue_type_script_setup_true_lang_default","\"modelValue\"","\"modelModifiers\"","__expose","props","__props","model","useModel","t","useMessages","attrs","useFieldAttrs","input","ref","shown","list","computed","inputBind","describedby","field","openBlock","createBlock","mergeProps","unref","withCtx","createElementVNode","_cache","args","focusInside","$event","createVNode","createElementBlock","Fragment","renderList","r","createTextVNode","toDisplayString","createCommentVNode"],"sources":["../../../src/components/PasswordField/EPasswordField.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface PasswordRule {\n /** What the password needs, such as \"At least 10 characters\". */\n label: string;\n /** Whether the password meets the rule. */\n test: (value: string) => boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from \"vue\";\nimport EIcon from \"../Icon/EIcon.vue\";\nimport EField from \"../Field/EField.vue\";\nimport { useMessages } from \"../../config.js\";\nimport { focusInside } from \"../../composables/focusInside.js\";\nimport { useFieldAttrs } from \"../../composables/useFieldAttrs.js\";\nimport \"../../styles/base.css\";\nimport \"../TextField/input.css\";\nimport \"../Combobox/combo.css\";\n\ndefineOptions({ inheritAttrs: false });\n\nconst props = defineProps<{\n /** The visible label, a mono kicker above the field. Default \"Password\". */\n label?: string;\n /** Keep the label for screen readers and remove it from the page. */\n hideLabel?: boolean;\n /** `current` for signing in, `new` for choosing one. Sets the autocomplete token so a password manager can fill or suggest. */\n mode?: \"current\" | \"new\";\n /** A checklist that updates as the person types. Each rule shows a tick or an empty circle and says \"met\" or \"not met yet\". */\n rules?: PasswordRule[];\n /** Help that stays under the field. */\n hint?: string;\n /** What to fix. Replaces the hint, marks the input invalid and is announced. */\n error?: string;\n /** A word beside the label. */\n required?: boolean;\n /** A word beside the label. Flag whichever is rarer. */\n optional?: boolean;\n disabled?: boolean;\n /** The id of the input; the label points at it. Generated when left out. */\n id?: string;\n}>();\n\nconst model = defineModel<string>({ default: \"\" });\n\nconst t = useMessages();\nconst attrs = useFieldAttrs();\nconst input = ref<HTMLInputElement | null>(null);\nconst shown = ref(false);\n\nconst list = computed(() => props.rules ?? []);\n\nfunction inputBind(field: { id: string; ariaInvalid: \"true\" | undefined; ariaDescribedby: string | undefined }) {\n const describedby = [field.ariaDescribedby, list.value.length ? `${field.id}-rules` : \"\"].filter(Boolean).join(\" \");\n return {\n id: field.id,\n class: \"e-input\",\n type: shown.value ? \"text\" : \"password\",\n value: model.value,\n disabled: props.disabled,\n required: props.required,\n autocomplete: props.mode === \"new\" ? \"new-password\" : \"current-password\",\n autocapitalize: \"none\",\n spellcheck: false,\n \"aria-invalid\": field.ariaInvalid,\n ...attrs.input(describedby || undefined),\n };\n}\n\ndefineExpose({\n input,\n focus: () => input.value?.focus(),\n});\n</script>\n\n<template>\n <EField\n v-bind=\"attrs.wrapper()\"\n :id=\"id\"\n :label=\"label || t('password')\"\n :hide-label=\"hideLabel\"\n :hint=\"hint\"\n :error=\"error\"\n :required=\"required\"\n :optional=\"optional\"\n >\n <template #default=\"field\">\n <!-- eslint-disable-next-line vuejs-accessibility/click-events-have-key-events, vuejs-accessibility/no-static-element-interactions -->\n <div\n class=\"e-input-wrap\"\n :data-invalid=\"error ? '' : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n @click=\"focusInside\"\n >\n <input ref=\"input\" v-bind=\"inputBind(field)\" @input=\"model = ($event.target as HTMLInputElement).value\" />\n <button\n type=\"button\"\n class=\"e-combo-btn\"\n :aria-pressed=\"shown ? 'true' : 'false'\"\n :aria-label=\"shown ? t('hidePassword') : t('showPassword')\"\n :disabled=\"disabled\"\n @click=\"shown = !shown\"\n >\n <EIcon :name=\"shown ? 'eye-slash' : 'eye'\" />\n </button>\n </div>\n <ul v-if=\"list.length\" :id=\"`${field.id}-rules`\" class=\"e-rules\" :aria-label=\"t('passwordRules')\">\n <li v-for=\"r in list\" :key=\"r.label\" class=\"e-rule\" :data-met=\"r.test(model) ? '' : undefined\">\n <EIcon v-if=\"r.test(model)\" name=\"check\" small />\n <span v-else class=\"e-rule-dot\" aria-hidden=\"true\" />\n {{ r.label }}\n <span class=\"e-sr\"> ({{ t(r.test(model) ? \"ruleMet\" : \"ruleNotMet\") }})</span>\n </li>\n </ul>\n </template>\n </EField>\n</template>\n\n<style>\n@layer e.composites {\n .e-rules {\n display: grid;\n gap: var(--e-space-1);\n margin: 0;\n padding: 0;\n list-style: none;\n font: 400 var(--e-text-sm)/1.4 var(--e-font-sans);\n }\n\n .e-rule {\n display: flex;\n align-items: center;\n gap: var(--e-space-2);\n color: var(--e-muted);\n }\n\n .e-rule[data-met] {\n color: var(--e-secondary);\n }\n\n .e-rule .e-icon {\n flex: none;\n }\n\n .e-rule-dot {\n flex: none;\n width: 14px;\n height: 14px;\n border: var(--e-stroke-edge) solid var(--e-border-strong);\n border-radius: 50%;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsBA,IAAM4B,IAAQC,GAsBRC,IAAQ9B,EAAmB6B,GAAA,YAAgB,GAE3CG,IAAIC,EAAY,GAChBC,IAAQC,EAAc,GACtBC,IAAQC,EAA6B,IAAI,GACzCC,IAAQD,EAAI,EAAK,GAEjBE,IAAOC,QAAeZ,EAAM,SAAS,CAAC,CAAC;EAE7C,SAASa,EAAU,GAA6F;GAC9G,IAAMC,IAAc,CAACC,EAAM,iBAAiBJ,EAAK,MAAM,SAAS,GAAGI,EAAM,GAAG,UAAU,EAAE,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;GAClH,OAAO;IACL,IAAIA,EAAM;IACV,OAAO;IACP,MAAML,EAAM,QAAQ,SAAS;IAC7B,OAAOR,EAAM;IACb,UAAUF,EAAM;IAChB,UAAUA,EAAM;IAChB,cAAcA,EAAM,SAAS,QAAQ,iBAAiB;IACtD,gBAAgB;IAChB,YAAY;IACZ,gBAAgBe,EAAM;IACtB,GAAGT,EAAM,MAAMQ,KAAe,KAAA,CAAS;GACzC;EACF;E,OAEAf,EAAa;GACX;GACA,aAAaS,EAAM,OAAO,MAAM;EAClC,CAAC,I,UAICnC,EAAA,GAAAC,EAuCSC,GAvCTC,EACUC,EAsCD6B,CAAA,CAtCM,CAAC,QAAO,GAAA;GACpB,IAAIL,EAAA;GACJ,OAAOA,EAAA,SAASxB,EAAA2B,CAAA,CAAC,CAAA,UAAA;GACjB,cAAYH,EAAA;GACZ,MAAMA,EAAA;GACN,OAAOA,EAAA;GACP,UAAUA,EAAA;GACV,UAAUA,EAAA;;GAEA,SAAOvB,GAAE,MAAK,CAEvBC,EAiBM,OAAA;IAhBJ,OAAM;IACL,gBAAcsB,EAAA,QAAK,KAAQ,KAAA;IAC3B,iBAAeA,EAAA,WAAQ,KAAQ,KAAA;IAC/B,SAAK,AAAAqB,EAAA,QAAE,GAAAC,MAAA9C,EAAA+C,CAAA,KAAA/C,EAAA+C,CAAA,CAAA,CAAA,GAAAD,CAAA;G,IAER5C,EAA0G,SAA1GH,EAA0G;IAA/F,SAAA;IAAJ,KAAIgC;GAAgB,GAAAK,EAAUE,CAAK,GAAA,EAAI,SAAK,AAAAO,EAAA,QAAA,MAAE,EAAA,QAASG,EAAO,OAA4B,M,eACjG9C,EASS,UAAA;IARP,MAAK;IACL,OAAM;IACL,gBAAc+B,EAAA,QAAK,SAAA;IACnB,cAAYA,EAAA,QAAQjC,EAAA2B,CAAA,CAAC,CAAA,cAAA,IAAmB3B,EAAA2B,CAAA,CAAC,CAAA,cAAA;IACzC,UAAUH,EAAA;IACV,SAAK,AAAAqB,EAAA,QAAA,MAAE,EAAA,QAAK,CAAIZ,EAAA;G,IAEjB9B,EAA6CC,GAAA,EAArC,MAAM6B,EAAA,QAAK,cAAA,M,uCAGbC,EAAA,MAAK,UAAftC,EAAA,GAAAS,EAOK,MAAA;;IAPmB,IAAE,GAAKiC,EAAM,GAAE;IAAU,OAAM;IAAW,cAAYtC,EAAA2B,CAAA,CAAC,CAAA,eAAA;G,KAC7E/B,EAAA,EAAA,GAAAS,EAKKC,GAAA,MAAAC,EALW2B,EAAA,QAAL,OAAXtC,EAAA,GAAAS,EAKK,MAAA;IALkB,KAAKgD,EAAE;IAAO,OAAM;IAAU,YAAUA,EAAE,KAAK5B,EAAA,KAAK,IAAA,KAAS,KAAA;;IACrE4B,EAAE,KAAK5B,EAAA,KAAK,KAAzB7B,EAAA,GAAAC,EAAiDO,GAAA;;KAArB,MAAK;KAAQ,OAAA;I,OACzCR,EAAA,GAAAS,EAAqD,QAArDY,CAAqD;IAAAT,EAAA,MACrDC,EAAG4C,EAAE,KAAK,IAAG,KACb,CAAA;IAAAnD,EAA8E,QAA9EgB,GAAmB,OAAET,EAAGT,EAAA2B,CAAA,CAAC,CAAC0B,EAAE,KAAK5B,EAAA,KAAK,IAAA,YAAA,YAAA,CAAA,IAAgC,KAAC,CAAA"}
1
+ {"version":3,"file":"EPasswordField.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createBlock","EField","_mergeProps","_unref","_withCtx","_createElementVNode","_createVNode","EIcon","_createElementBlock","_Fragment","_renderList","_createTextVNode","_toDisplayString","_createCommentVNode","EIcon_default","EField_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","EPasswordField_vue_vue_type_script_setup_true_lang_default","\"modelValue\"","\"modelModifiers\"","__expose","props","__props","model","useModel","t","useMessages","attrs","useFieldAttrs","input","ref","shown","list","computed","inputBind","describedby","field","openBlock","createBlock","mergeProps","unref","withCtx","createElementVNode","_cache","args","focusInside","$event","createVNode","createElementBlock","Fragment","renderList","r","createTextVNode","toDisplayString","createCommentVNode"],"sources":["../../../src/components/PasswordField/EPasswordField.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface PasswordRule {\n /** What the password needs, such as \"At least 10 characters\". */\n label: string;\n /** Whether the password meets the rule. */\n test: (value: string) => boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from \"vue\";\nimport EIcon from \"../Icon/EIcon.vue\";\nimport EField from \"../Field/EField.vue\";\nimport { useMessages } from \"../../config.js\";\nimport { focusInside } from \"../../composables/focusInside.js\";\nimport { useFieldAttrs } from \"../../composables/useFieldAttrs.js\";\nimport \"../../styles/base.css\";\nimport \"../TextField/input.css\";\nimport \"../Combobox/combo.css\";\n\ndefineOptions({ inheritAttrs: false });\n\nconst props = defineProps<{\n /** The visible label, a mono kicker above the field. @default \"Password\" */\n label?: string;\n /** Keep the label for screen readers and remove it from the page. */\n hideLabel?: boolean;\n /** `current` for signing in, `new` for choosing one. Sets `autocomplete` (`current-password` or `new-password`) so a password manager can fill or suggest. */\n mode?: \"current\" | \"new\";\n /** `{ label, test(value) }`. A checklist under the field that updates as the person types. Each rule shows a tick or an empty circle and says \"met\" or \"not met yet\". */\n rules?: PasswordRule[];\n /** Help that stays under the field. */\n hint?: string;\n /** What to fix. Replaces the hint, marks the input invalid and is announced. */\n error?: string;\n /** The `required` attribute and a word beside the label. */\n required?: boolean;\n /** A word beside the label. Flag whichever is rarer. */\n optional?: boolean;\n /** Disables the input and the toggle. */\n disabled?: boolean;\n /** The id of the input; the label points at it. @default generated */\n id?: string;\n}>();\n\n/** The password. */\nconst model = defineModel<string>({ default: \"\" });\n\nconst t = useMessages();\nconst attrs = useFieldAttrs();\nconst input = ref<HTMLInputElement | null>(null);\nconst shown = ref(false);\n\nconst list = computed(() => props.rules ?? []);\n\nfunction inputBind(field: { id: string; ariaInvalid: \"true\" | undefined; ariaDescribedby: string | undefined }) {\n const describedby = [field.ariaDescribedby, list.value.length ? `${field.id}-rules` : \"\"].filter(Boolean).join(\" \");\n return {\n id: field.id,\n class: \"e-input\",\n type: shown.value ? \"text\" : \"password\",\n value: model.value,\n disabled: props.disabled,\n required: props.required,\n autocomplete: props.mode === \"new\" ? \"new-password\" : \"current-password\",\n autocapitalize: \"none\",\n spellcheck: false,\n \"aria-invalid\": field.ariaInvalid,\n ...attrs.input(describedby || undefined),\n };\n}\n\ndefineExpose({\n input,\n focus: () => input.value?.focus(),\n});\n</script>\n\n<template>\n <EField\n v-bind=\"attrs.wrapper()\"\n :id=\"id\"\n :label=\"label || t('password')\"\n :hide-label=\"hideLabel\"\n :hint=\"hint\"\n :error=\"error\"\n :required=\"required\"\n :optional=\"optional\"\n >\n <template #default=\"field\">\n <!-- eslint-disable-next-line vuejs-accessibility/click-events-have-key-events, vuejs-accessibility/no-static-element-interactions -->\n <div\n class=\"e-input-wrap\"\n :data-invalid=\"error ? '' : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n @click=\"focusInside\"\n >\n <input ref=\"input\" v-bind=\"inputBind(field)\" @input=\"model = ($event.target as HTMLInputElement).value\" />\n <button\n type=\"button\"\n class=\"e-combo-btn\"\n :aria-pressed=\"shown ? 'true' : 'false'\"\n :aria-label=\"shown ? t('hidePassword') : t('showPassword')\"\n :disabled=\"disabled\"\n @click=\"shown = !shown\"\n >\n <EIcon :name=\"shown ? 'eye-slash' : 'eye'\" />\n </button>\n </div>\n <ul v-if=\"list.length\" :id=\"`${field.id}-rules`\" class=\"e-rules\" :aria-label=\"t('passwordRules')\">\n <li v-for=\"r in list\" :key=\"r.label\" class=\"e-rule\" :data-met=\"r.test(model) ? '' : undefined\">\n <EIcon v-if=\"r.test(model)\" name=\"check\" small />\n <span v-else class=\"e-rule-dot\" aria-hidden=\"true\" />\n {{ r.label }}\n <span class=\"e-sr\"> ({{ t(r.test(model) ? \"ruleMet\" : \"ruleNotMet\") }})</span>\n </li>\n </ul>\n </template>\n </EField>\n</template>\n\n<style>\n@layer e.composites {\n /* The hidden-character dots keep the size of plain text so the caret matches when they are shown. */\n .e-input-wrap .e-input[type=\"password\"] {\n letter-spacing: 0.12em;\n }\n\n .e-rules {\n display: grid;\n gap: var(--e-space-1);\n margin: 0;\n padding: 0;\n list-style: none;\n font: 400 var(--e-text-sm)/1.4 var(--e-font-sans);\n }\n\n .e-rule {\n display: flex;\n align-items: center;\n gap: var(--e-space-2);\n color: var(--e-muted);\n }\n\n .e-rule[data-met] {\n color: var(--e-secondary);\n }\n\n .e-rule .e-icon {\n flex: none;\n }\n\n .e-rule-dot {\n flex: none;\n width: 14px;\n height: 14px;\n border: var(--e-stroke-edge) solid var(--e-border-strong);\n\n --e-bc: var(--e-border-strong);\n\n outline: var(--e-stroke-edge) solid var(--e-bc);\n outline-offset: calc(-1 * var(--e-stroke-edge));\n border-radius: 50%;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsBA,IAAM4B,IAAQC,GAwBRC,IAAQ9B,EAAmB6B,GAAA,YAAgB,GAE3CG,IAAIC,EAAY,GAChBC,IAAQC,EAAc,GACtBC,IAAQC,EAA6B,IAAI,GACzCC,IAAQD,EAAI,EAAK,GAEjBE,IAAOC,QAAeZ,EAAM,SAAS,CAAC,CAAC;EAE7C,SAASa,EAAU,GAA6F;GAC9G,IAAMC,IAAc,CAACC,EAAM,iBAAiBJ,EAAK,MAAM,SAAS,GAAGI,EAAM,GAAG,UAAU,EAAE,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;GAClH,OAAO;IACL,IAAIA,EAAM;IACV,OAAO;IACP,MAAML,EAAM,QAAQ,SAAS;IAC7B,OAAOR,EAAM;IACb,UAAUF,EAAM;IAChB,UAAUA,EAAM;IAChB,cAAcA,EAAM,SAAS,QAAQ,iBAAiB;IACtD,gBAAgB;IAChB,YAAY;IACZ,gBAAgBe,EAAM;IACtB,GAAGT,EAAM,MAAMQ,KAAe,KAAA,CAAS;GACzC;EACF;E,OAEAf,EAAa;GACX;GACA,aAAaS,EAAM,OAAO,MAAM;EAClC,CAAC,I,UAICnC,EAAA,GAAAC,EAuCSC,GAvCTC,EACUC,EAsCD6B,CAAA,CAtCM,CAAC,QAAO,GAAA;GACpB,IAAIL,EAAA;GACJ,OAAOA,EAAA,SAASxB,EAAA2B,CAAA,CAAC,CAAA,UAAA;GACjB,cAAYH,EAAA;GACZ,MAAMA,EAAA;GACN,OAAOA,EAAA;GACP,UAAUA,EAAA;GACV,UAAUA,EAAA;;GAEA,SAAOvB,GAAE,MAAK,CAEvBC,EAiBM,OAAA;IAhBJ,OAAM;IACL,gBAAcsB,EAAA,QAAK,KAAQ,KAAA;IAC3B,iBAAeA,EAAA,WAAQ,KAAQ,KAAA;IAC/B,SAAK,AAAAqB,EAAA,QAAE,GAAAC,MAAA9C,EAAA+C,CAAA,KAAA/C,EAAA+C,CAAA,CAAA,CAAA,GAAAD,CAAA;G,IAER5C,EAA0G,SAA1GH,EAA0G;IAA/F,SAAA;IAAJ,KAAIgC;GAAgB,GAAAK,EAAUE,CAAK,GAAA,EAAI,SAAK,AAAAO,EAAA,QAAA,MAAE,EAAA,QAASG,EAAO,OAA4B,M,eACjG9C,EASS,UAAA;IARP,MAAK;IACL,OAAM;IACL,gBAAc+B,EAAA,QAAK,SAAA;IACnB,cAAYA,EAAA,QAAQjC,EAAA2B,CAAA,CAAC,CAAA,cAAA,IAAmB3B,EAAA2B,CAAA,CAAC,CAAA,cAAA;IACzC,UAAUH,EAAA;IACV,SAAK,AAAAqB,EAAA,QAAA,MAAE,EAAA,QAAK,CAAIZ,EAAA;G,IAEjB9B,EAA6CC,GAAA,EAArC,MAAM6B,EAAA,QAAK,cAAA,M,uCAGbC,EAAA,MAAK,UAAftC,EAAA,GAAAS,EAOK,MAAA;;IAPmB,IAAE,GAAKiC,EAAM,GAAE;IAAU,OAAM;IAAW,cAAYtC,EAAA2B,CAAA,CAAC,CAAA,eAAA;G,KAC7E/B,EAAA,EAAA,GAAAS,EAKKC,GAAA,MAAAC,EALW2B,EAAA,QAAL,OAAXtC,EAAA,GAAAS,EAKK,MAAA;IALkB,KAAKgD,EAAE;IAAO,OAAM;IAAU,YAAUA,EAAE,KAAK5B,EAAA,KAAK,IAAA,KAAS,KAAA;;IACrE4B,EAAE,KAAK5B,EAAA,KAAK,KAAzB7B,EAAA,GAAAC,EAAiDO,GAAA;;KAArB,MAAK;KAAQ,OAAA;I,OACzCR,EAAA,GAAAS,EAAqD,QAArDY,CAAqD;IAAAT,EAAA,MACrDC,EAAG4C,EAAE,KAAK,IAAG,KACb,CAAA;IAAAnD,EAA8E,QAA9EgB,GAAmB,OAAET,EAAGT,EAAA2B,CAAA,CAAC,CAAC0B,EAAE,KAAK5B,EAAA,KAAK,IAAA,YAAA,YAAA,CAAA,IAAgC,KAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"EPhoneField.js","names":["_sfc_main","EPhoneField_vue_vue_type_script_setup_true_lang_default","EPhoneField_default"],"sources":["../../../src/components/PhoneField/EPhoneField.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, nextTick, ref } from \"vue\";\nimport ETextField from \"../TextField/ETextField.vue\";\nimport { useConfig, useMessages } from \"../../config.js\";\nimport \"../../styles/base.css\";\n\nconst props = defineProps<{\n /** The visible label, a mono kicker above the input. Default \"Phone number\". */\n label?: string;\n /** Keep the label for screen readers and remove it from the page. */\n hideLabel?: boolean;\n /** `us` groups the digits as you type, (555) 123-4567; `none` leaves them alone. Default `us` for the en-US locale, `none` otherwise. */\n format?: \"us\" | \"none\";\n /** Help that stays under the input. */\n hint?: string;\n /** What to fix. Replaces the hint, marks the input invalid and is announced. */\n error?: string;\n /** An example, never the label. */\n placeholder?: string;\n /** A word beside the label. */\n required?: boolean;\n /** A word beside the label. Flag whichever is rarer. */\n optional?: boolean;\n disabled?: boolean;\n /** The name submitted with a form. */\n name?: string;\n /** The id of the input; the label points at it. Generated when left out. */\n id?: string;\n}>();\n\nconst model = defineModel<string>({ default: \"\" });\n\nconst t = useMessages();\nconst config = useConfig();\nconst field = ref<InstanceType<typeof ETextField> | null>(null);\n\nconst style = computed(() => props.format || (/^en-US/i.test(config.locale) ? \"us\" : \"none\"));\n\nfunction formatPhone(raw: string | null | undefined): string {\n let digits = String(raw || \"\").replace(/\\D/g, \"\");\n if (style.value !== \"us\") return String(raw || \"\");\n if (digits.length > 10 && digits.charAt(0) === \"1\") digits = digits.slice(1);\n digits = digits.slice(0, 10);\n if (digits.length < 4) return digits;\n if (digits.length < 7) return `(${digits.slice(0, 3)}) ${digits.slice(3)}`;\n return `(${digits.slice(0, 3)}) ${digits.slice(3, 6)}-${digits.slice(6)}`;\n}\n\nconst shown = computed(() => formatPhone(model.value));\n\nasync function onInput(value: string) {\n model.value = formatPhone(value);\n await nextTick();\n const el = field.value?.input;\n if (el && el.value !== shown.value) el.value = shown.value;\n}\n\ndefineExpose({\n input: computed(() => field.value?.input ?? null),\n focus: () => field.value?.focus(),\n});\n</script>\n\n<template>\n <ETextField\n :id=\"id\"\n ref=\"field\"\n class=\"e-phone\"\n type=\"tel\"\n inputmode=\"tel\"\n autocomplete=\"tel\"\n :label=\"label || t('phone')\"\n :hide-label=\"hideLabel\"\n :hint=\"hint\"\n :error=\"error\"\n :placeholder=\"placeholder\"\n :required=\"required\"\n :optional=\"optional\"\n :disabled=\"disabled\"\n :name=\"name\"\n :model-value=\"shown\"\n @update:model-value=\"onInput\"\n />\n</template>\n\n<style>\n@layer e.composites {\n .e-phone .e-input {\n font-variant-numeric: tabular-nums;\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"EPhoneField.js","names":["_sfc_main","EPhoneField_vue_vue_type_script_setup_true_lang_default","EPhoneField_default"],"sources":["../../../src/components/PhoneField/EPhoneField.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, nextTick, ref } from \"vue\";\nimport ETextField from \"../TextField/ETextField.vue\";\nimport { useConfig, useMessages } from \"../../config.js\";\nimport \"../../styles/base.css\";\n\nconst props = defineProps<{\n /** The field's label. @default \"Phone number\" */\n label?: string;\n /** Keep the label for screen readers and remove it from the page. */\n hideLabel?: boolean;\n /** `us` gives (555) 123-4567, drops a leading 1 and keeps ten digits. No validation. @default us for the en-US locale, else none */\n format?: \"us\" | \"none\";\n /** Help that stays under the input. */\n hint?: string;\n /** What to fix. Replaces the hint, marks the input invalid and is announced. */\n error?: string;\n /** An example, never the label. */\n placeholder?: string;\n /** The `required` attribute and a word beside the label. */\n required?: boolean;\n /** A word beside the label. Flag whichever is rarer. */\n optional?: boolean;\n /** Disables the field. */\n disabled?: boolean;\n /** The name submitted with a form. */\n name?: string;\n /** The id of the input; the label points at it. @default generated */\n id?: string;\n}>();\n\n/** The formatted number. */\nconst model = defineModel<string>({ default: \"\" });\n\nconst t = useMessages();\nconst config = useConfig();\nconst field = ref<InstanceType<typeof ETextField> | null>(null);\n\nconst style = computed(() => props.format || (/^en-US/i.test(config.locale) ? \"us\" : \"none\"));\n\nfunction formatPhone(raw: string | null | undefined): string {\n let digits = String(raw || \"\").replace(/\\D/g, \"\");\n if (style.value !== \"us\") return String(raw || \"\");\n if (digits.length > 10 && digits.charAt(0) === \"1\") digits = digits.slice(1);\n digits = digits.slice(0, 10);\n if (digits.length < 4) return digits;\n if (digits.length < 7) return `(${digits.slice(0, 3)}) ${digits.slice(3)}`;\n return `(${digits.slice(0, 3)}) ${digits.slice(3, 6)}-${digits.slice(6)}`;\n}\n\nconst shown = computed(() => formatPhone(model.value));\n\nasync function onInput(value: string) {\n model.value = formatPhone(value);\n await nextTick();\n const el = field.value?.input;\n if (el && el.value !== shown.value) el.value = shown.value;\n}\n\ndefineExpose({\n input: computed(() => field.value?.input ?? null),\n focus: () => field.value?.focus(),\n});\n</script>\n\n<template>\n <ETextField\n :id=\"id\"\n ref=\"field\"\n class=\"e-phone\"\n type=\"tel\"\n inputmode=\"tel\"\n autocomplete=\"tel\"\n :label=\"label || t('phone')\"\n :hide-label=\"hideLabel\"\n :hint=\"hint\"\n :error=\"error\"\n :placeholder=\"placeholder\"\n :required=\"required\"\n :optional=\"optional\"\n :disabled=\"disabled\"\n :name=\"name\"\n :model-value=\"shown\"\n @update:model-value=\"onInput\"\n />\n</template>\n\n<style>\n@layer e.composites {\n .e-phone .e-input {\n font-variant-numeric: tabular-nums;\n }\n}\n</style>\n"],"mappings":""}
@@ -1,9 +1,9 @@
1
1
  type __VLS_Props = {
2
- /** The visible label, a mono kicker above the input. Default "Phone number". */
2
+ /** The field's label. @default "Phone number" */
3
3
  label?: string;
4
4
  /** Keep the label for screen readers and remove it from the page. */
5
5
  hideLabel?: boolean;
6
- /** `us` groups the digits as you type, (555) 123-4567; `none` leaves them alone. Default `us` for the en-US locale, `none` otherwise. */
6
+ /** `us` gives (555) 123-4567, drops a leading 1 and keeps ten digits. No validation. @default us for the en-US locale, else none */
7
7
  format?: "us" | "none";
8
8
  /** Help that stays under the input. */
9
9
  hint?: string;
@@ -11,17 +11,19 @@ type __VLS_Props = {
11
11
  error?: string;
12
12
  /** An example, never the label. */
13
13
  placeholder?: string;
14
- /** A word beside the label. */
14
+ /** The `required` attribute and a word beside the label. */
15
15
  required?: boolean;
16
16
  /** A word beside the label. Flag whichever is rarer. */
17
17
  optional?: boolean;
18
+ /** Disables the field. */
18
19
  disabled?: boolean;
19
20
  /** The name submitted with a form. */
20
21
  name?: string;
21
- /** The id of the input; the label points at it. Generated when left out. */
22
+ /** The id of the input; the label points at it. @default generated */
22
23
  id?: string;
23
24
  };
24
25
  type __VLS_ModelProps = {
26
+ /** The formatted number. */
25
27
  modelValue?: string;
26
28
  };
27
29
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
@@ -1 +1 @@
1
- {"version":3,"file":"EPhoneField.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createBlock","ETextField","_unref","ETextField_default","EPhoneField_vue_vue_type_script_setup_true_lang_default","\"modelValue\"","\"modelModifiers\"","__expose","props","__props","model","useModel","t","useMessages","config","useConfig","field","ref","style","computed","formatPhone","digits","raw","shown","onInput","value","nextTick","el","openBlock","createBlock","unref"],"sources":["../../../src/components/PhoneField/EPhoneField.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, nextTick, ref } from \"vue\";\nimport ETextField from \"../TextField/ETextField.vue\";\nimport { useConfig, useMessages } from \"../../config.js\";\nimport \"../../styles/base.css\";\n\nconst props = defineProps<{\n /** The visible label, a mono kicker above the input. Default \"Phone number\". */\n label?: string;\n /** Keep the label for screen readers and remove it from the page. */\n hideLabel?: boolean;\n /** `us` groups the digits as you type, (555) 123-4567; `none` leaves them alone. Default `us` for the en-US locale, `none` otherwise. */\n format?: \"us\" | \"none\";\n /** Help that stays under the input. */\n hint?: string;\n /** What to fix. Replaces the hint, marks the input invalid and is announced. */\n error?: string;\n /** An example, never the label. */\n placeholder?: string;\n /** A word beside the label. */\n required?: boolean;\n /** A word beside the label. Flag whichever is rarer. */\n optional?: boolean;\n disabled?: boolean;\n /** The name submitted with a form. */\n name?: string;\n /** The id of the input; the label points at it. Generated when left out. */\n id?: string;\n}>();\n\nconst model = defineModel<string>({ default: \"\" });\n\nconst t = useMessages();\nconst config = useConfig();\nconst field = ref<InstanceType<typeof ETextField> | null>(null);\n\nconst style = computed(() => props.format || (/^en-US/i.test(config.locale) ? \"us\" : \"none\"));\n\nfunction formatPhone(raw: string | null | undefined): string {\n let digits = String(raw || \"\").replace(/\\D/g, \"\");\n if (style.value !== \"us\") return String(raw || \"\");\n if (digits.length > 10 && digits.charAt(0) === \"1\") digits = digits.slice(1);\n digits = digits.slice(0, 10);\n if (digits.length < 4) return digits;\n if (digits.length < 7) return `(${digits.slice(0, 3)}) ${digits.slice(3)}`;\n return `(${digits.slice(0, 3)}) ${digits.slice(3, 6)}-${digits.slice(6)}`;\n}\n\nconst shown = computed(() => formatPhone(model.value));\n\nasync function onInput(value: string) {\n model.value = formatPhone(value);\n await nextTick();\n const el = field.value?.input;\n if (el && el.value !== shown.value) el.value = shown.value;\n}\n\ndefineExpose({\n input: computed(() => field.value?.input ?? null),\n focus: () => field.value?.focus(),\n});\n</script>\n\n<template>\n <ETextField\n :id=\"id\"\n ref=\"field\"\n class=\"e-phone\"\n type=\"tel\"\n inputmode=\"tel\"\n autocomplete=\"tel\"\n :label=\"label || t('phone')\"\n :hide-label=\"hideLabel\"\n :hint=\"hint\"\n :error=\"error\"\n :placeholder=\"placeholder\"\n :required=\"required\"\n :optional=\"optional\"\n :disabled=\"disabled\"\n :name=\"name\"\n :model-value=\"shown\"\n @update:model-value=\"onInput\"\n />\n</template>\n\n<style>\n@layer e.composites {\n .e-phone .e-input {\n font-variant-numeric: tabular-nums;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EAMA,IAAMU,IAAQC,GAwBRC,IAAQZ,EAAmBW,GAAA,YAAgB,GAE3CG,IAAIC,EAAY,GAChBC,IAASC,EAAU,GACnBC,IAAQC,EAA4C,IAAI,GAExDC,IAAQC,QAAeX,EAAM,WAAW,UAAU,KAAKM,EAAO,MAAM,IAAI,OAAO,OAAO;EAE5F,SAASM,EAAY,GAAwC;GAC3D,IAAIC,IAAS,OAAOC,KAAO,EAAE,CAAC,CAAC,QAAQ,OAAO,EAAE;GAMhD,OALIJ,EAAM,UAAU,QAChBG,EAAO,SAAS,MAAMA,EAAO,OAAO,CAAC,MAAM,QAAK,IAASA,EAAO,MAAM,CAAC,IAC3E,IAASA,EAAO,MAAM,GAAG,EAAE,GACvBA,EAAO,SAAS,IAAUA,IAC1BA,EAAO,SAAS,IAAU,IAAIA,EAAO,MAAM,GAAG,CAAC,EAAE,IAAIA,EAAO,MAAM,CAAC,MAChE,IAAIA,EAAO,MAAM,GAAG,CAAC,EAAE,IAAIA,EAAO,MAAM,GAAG,CAAC,EAAE,GAAGA,EAAO,MAAM,CAAC,OALrC,OAAOC,KAAO,EAAE;EAMnD;EAEA,IAAMC,IAAQJ,QAAeC,EAAYV,EAAM,KAAK,CAAC;EAErD,eAAec,EAAQ,GAAe;GAEpC,AADA,EAAM,QAAQJ,EAAYK,CAAK,GAC/B,MAAMC,EAAS;GACf,IAAMC,IAAKX,EAAM,OAAO;GACxB,AAAIW,KAAMA,EAAG,UAAUJ,EAAM,UAAO,EAAG,QAAQA,EAAM;EACvD;E,OAEAhB,EAAa;GACX,OAAOY,QAAeH,EAAM,OAAO,SAAS,IAAI;GAChD,aAAaA,EAAM,OAAO,MAAM;EAClC,CAAC,I,UAICjB,EAAA,GAAAC,EAkBEC,GAAA;GAjBC,IAAIQ,EAAA;GACD,SAAA;GAAJ,KAAIO;GACJ,OAAM;GACN,MAAK;GACL,WAAU;GACV,cAAa;GACZ,OAAOP,EAAA,SAASP,EAAAU,CAAA,CAAC,CAAA,OAAA;GACjB,cAAYH,EAAA;GACZ,MAAMA,EAAA;GACN,OAAOA,EAAA;GACP,aAAaA,EAAA;GACb,UAAUA,EAAA;GACV,UAAUA,EAAA;GACV,UAAUA,EAAA;GACV,MAAMA,EAAA;GACN,eAAac,EAAA;GACb,uBAAoBC"}
1
+ {"version":3,"file":"EPhoneField.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createBlock","ETextField","_unref","ETextField_default","EPhoneField_vue_vue_type_script_setup_true_lang_default","\"modelValue\"","\"modelModifiers\"","__expose","props","__props","model","useModel","t","useMessages","config","useConfig","field","ref","style","computed","formatPhone","digits","raw","shown","onInput","value","nextTick","el","openBlock","createBlock","unref"],"sources":["../../../src/components/PhoneField/EPhoneField.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, nextTick, ref } from \"vue\";\nimport ETextField from \"../TextField/ETextField.vue\";\nimport { useConfig, useMessages } from \"../../config.js\";\nimport \"../../styles/base.css\";\n\nconst props = defineProps<{\n /** The field's label. @default \"Phone number\" */\n label?: string;\n /** Keep the label for screen readers and remove it from the page. */\n hideLabel?: boolean;\n /** `us` gives (555) 123-4567, drops a leading 1 and keeps ten digits. No validation. @default us for the en-US locale, else none */\n format?: \"us\" | \"none\";\n /** Help that stays under the input. */\n hint?: string;\n /** What to fix. Replaces the hint, marks the input invalid and is announced. */\n error?: string;\n /** An example, never the label. */\n placeholder?: string;\n /** The `required` attribute and a word beside the label. */\n required?: boolean;\n /** A word beside the label. Flag whichever is rarer. */\n optional?: boolean;\n /** Disables the field. */\n disabled?: boolean;\n /** The name submitted with a form. */\n name?: string;\n /** The id of the input; the label points at it. @default generated */\n id?: string;\n}>();\n\n/** The formatted number. */\nconst model = defineModel<string>({ default: \"\" });\n\nconst t = useMessages();\nconst config = useConfig();\nconst field = ref<InstanceType<typeof ETextField> | null>(null);\n\nconst style = computed(() => props.format || (/^en-US/i.test(config.locale) ? \"us\" : \"none\"));\n\nfunction formatPhone(raw: string | null | undefined): string {\n let digits = String(raw || \"\").replace(/\\D/g, \"\");\n if (style.value !== \"us\") return String(raw || \"\");\n if (digits.length > 10 && digits.charAt(0) === \"1\") digits = digits.slice(1);\n digits = digits.slice(0, 10);\n if (digits.length < 4) return digits;\n if (digits.length < 7) return `(${digits.slice(0, 3)}) ${digits.slice(3)}`;\n return `(${digits.slice(0, 3)}) ${digits.slice(3, 6)}-${digits.slice(6)}`;\n}\n\nconst shown = computed(() => formatPhone(model.value));\n\nasync function onInput(value: string) {\n model.value = formatPhone(value);\n await nextTick();\n const el = field.value?.input;\n if (el && el.value !== shown.value) el.value = shown.value;\n}\n\ndefineExpose({\n input: computed(() => field.value?.input ?? null),\n focus: () => field.value?.focus(),\n});\n</script>\n\n<template>\n <ETextField\n :id=\"id\"\n ref=\"field\"\n class=\"e-phone\"\n type=\"tel\"\n inputmode=\"tel\"\n autocomplete=\"tel\"\n :label=\"label || t('phone')\"\n :hide-label=\"hideLabel\"\n :hint=\"hint\"\n :error=\"error\"\n :placeholder=\"placeholder\"\n :required=\"required\"\n :optional=\"optional\"\n :disabled=\"disabled\"\n :name=\"name\"\n :model-value=\"shown\"\n @update:model-value=\"onInput\"\n />\n</template>\n\n<style>\n@layer e.composites {\n .e-phone .e-input {\n font-variant-numeric: tabular-nums;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EAMA,IAAMU,IAAQC,GA0BRC,IAAQZ,EAAmBW,GAAA,YAAgB,GAE3CG,IAAIC,EAAY,GAChBC,IAASC,EAAU,GACnBC,IAAQC,EAA4C,IAAI,GAExDC,IAAQC,QAAeX,EAAM,WAAW,UAAU,KAAKM,EAAO,MAAM,IAAI,OAAO,OAAO;EAE5F,SAASM,EAAY,GAAwC;GAC3D,IAAIC,IAAS,OAAOC,KAAO,EAAE,CAAC,CAAC,QAAQ,OAAO,EAAE;GAMhD,OALIJ,EAAM,UAAU,QAChBG,EAAO,SAAS,MAAMA,EAAO,OAAO,CAAC,MAAM,QAAK,IAASA,EAAO,MAAM,CAAC,IAC3E,IAASA,EAAO,MAAM,GAAG,EAAE,GACvBA,EAAO,SAAS,IAAUA,IAC1BA,EAAO,SAAS,IAAU,IAAIA,EAAO,MAAM,GAAG,CAAC,EAAE,IAAIA,EAAO,MAAM,CAAC,MAChE,IAAIA,EAAO,MAAM,GAAG,CAAC,EAAE,IAAIA,EAAO,MAAM,GAAG,CAAC,EAAE,GAAGA,EAAO,MAAM,CAAC,OALrC,OAAOC,KAAO,EAAE;EAMnD;EAEA,IAAMC,IAAQJ,QAAeC,EAAYV,EAAM,KAAK,CAAC;EAErD,eAAec,EAAQ,GAAe;GAEpC,AADA,EAAM,QAAQJ,EAAYK,CAAK,GAC/B,MAAMC,EAAS;GACf,IAAMC,IAAKX,EAAM,OAAO;GACxB,AAAIW,KAAMA,EAAG,UAAUJ,EAAM,UAAO,EAAG,QAAQA,EAAM;EACvD;E,OAEAhB,EAAa;GACX,OAAOY,QAAeH,EAAM,OAAO,SAAS,IAAI;GAChD,aAAaA,EAAM,OAAO,MAAM;EAClC,CAAC,I,UAICjB,EAAA,GAAAC,EAkBEC,GAAA;GAjBC,IAAIQ,EAAA;GACD,SAAA;GAAJ,KAAIO;GACJ,OAAM;GACN,MAAK;GACL,WAAU;GACV,cAAa;GACZ,OAAOP,EAAA,SAASP,EAAAU,CAAA,CAAC,CAAA,OAAA;GACjB,cAAYH,EAAA;GACZ,MAAMA,EAAA;GACN,OAAOA,EAAA;GACP,aAAaA,EAAA;GACb,UAAUA,EAAA;GACV,UAAUA,EAAA;GACV,UAAUA,EAAA;GACV,MAAMA,EAAA;GACN,eAAac,EAAA;GACb,uBAAoBC"}
@@ -1 +1 @@
1
- {"version":3,"file":"EProgress.js","names":["_sfc_main","EProgress_vue_vue_type_script_setup_true_lang_default","EProgress_default"],"sources":["../../../src/components/Progress/EProgress.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport \"../../styles/base.css\";\n\nconst props = withDefaults(\n defineProps<{\n /** What is progressing. Also the bar's accessible name. */\n label: string;\n /** How far along, from 0 to `max`. */\n value: number;\n /** The value that means finished. */\n max?: number;\n /** Text shown at the end of the row. Defaults to a percentage. */\n valueText?: string;\n }>(),\n { max: 100 },\n);\n\nconst percent = computed(() => Math.max(0, Math.min(100, (props.value / (props.max || 100)) * 100)));\n</script>\n\n<template>\n <div class=\"e-progress\">\n <div class=\"e-progress-head\">\n <span class=\"e-progress-label\">{{ label }}</span>\n <span class=\"e-progress-value\">{{ valueText || Math.round(percent) + \"%\" }}</span>\n </div>\n <div\n class=\"e-progress-track\"\n role=\"progressbar\"\n :aria-label=\"label\"\n aria-valuemin=\"0\"\n :aria-valuemax=\"max || 100\"\n :aria-valuenow=\"value\"\n >\n <div class=\"e-progress-fill\" :style=\"{ width: percent + '%' }\"></div>\n </div>\n </div>\n</template>\n\n<style>\n@layer e.primitives {\n .e-progress {\n display: grid;\n gap: var(--e-space-2);\n }\n\n .e-progress-head {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--e-space-3);\n }\n\n .e-progress-label {\n font: 500 var(--e-text-md) / 1.3 var(--e-font-sans);\n }\n\n .e-progress-value {\n font: 500 var(--e-text-sm) / 1.3 var(--e-font-mono);\n font-variant-numeric: tabular-nums;\n color: var(--e-muted);\n }\n\n .e-progress-track {\n height: 10px;\n border-radius: var(--e-radius-pill);\n background: var(--e-surface-tint);\n box-shadow: inset 0 0 0 1px var(--e-border-strong);\n overflow: hidden;\n }\n\n .e-progress-fill {\n height: 100%;\n border-radius: var(--e-radius-pill);\n background: var(--e-primary);\n box-shadow: inset 0 0 0 1px var(--e-primary);\n transition: width var(--e-duration-move) var(--e-easing-out);\n }\n\n @media (prefers-reduced-motion: reduce) {\n .e-progress-fill {\n transition: none;\n }\n }\n\n @media (forced-colors: active) {\n .e-progress-fill {\n forced-color-adjust: none;\n background: Highlight;\n }\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"EProgress.js","names":["_sfc_main","EProgress_vue_vue_type_script_setup_true_lang_default","EProgress_default"],"sources":["../../../src/components/Progress/EProgress.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { useMessages } from \"../../config.js\";\nimport \"../../styles/base.css\";\n\nconst props = withDefaults(\n defineProps<{\n /** What is progressing. Also the bar's accessible name. @default \"Loading\" */\n label?: string;\n /** How far along, from 0 to `max`; the fill is clamped. Leave it out while the length is unknown: the bar slides back and forth instead (indeterminate). */\n value?: number;\n /** The value that means finished. */\n max?: number;\n /** Text shown at the end of the row. @default percent */\n valueText?: string;\n }>(),\n { max: 100 },\n);\n\nconst t = useMessages();\nconst indeterminate = computed(() => props.value === undefined);\nconst percent = computed(() => Math.max(0, Math.min(100, ((props.value ?? 0) / (props.max || 100)) * 100)));\nconst showHead = computed(() => !!props.label || !indeterminate.value || !!props.valueText);\n</script>\n\n<template>\n <div class=\"e-progress\" :class=\"indeterminate && 'e-progress--indeterminate'\">\n <div v-if=\"showHead\" class=\"e-progress-head\">\n <span class=\"e-progress-label\">{{ label || t(\"loading\") }}</span>\n <span class=\"e-progress-value\">{{ valueText || (indeterminate ? \"\" : Math.round(percent) + \"%\") }}</span>\n </div>\n <div\n class=\"e-progress-track\"\n role=\"progressbar\"\n :aria-label=\"label || t('loading')\"\n aria-valuemin=\"0\"\n :aria-valuemax=\"indeterminate ? undefined : max || 100\"\n :aria-valuenow=\"indeterminate ? undefined : value\"\n :aria-busy=\"indeterminate ? 'true' : undefined\"\n >\n <div class=\"e-progress-fill\" :style=\"indeterminate ? undefined : { width: percent + '%' }\"></div>\n </div>\n </div>\n</template>\n\n<style>\n@layer e.primitives {\n .e-progress {\n display: grid;\n gap: var(--e-space-2);\n }\n\n .e-progress-head {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--e-space-3);\n }\n\n .e-progress-label {\n font: 500 var(--e-text-md) / 1.3 var(--e-font-sans);\n }\n\n .e-progress-value {\n font: 500 var(--e-text-sm) / 1.3 var(--e-font-mono);\n font-variant-numeric: tabular-nums;\n color: var(--e-muted);\n }\n\n .e-progress-track {\n position: relative;\n height: 10px;\n border-radius: var(--e-radius-pill);\n background: var(--e-surface-tint);\n box-shadow: inset 0 0 0 var(--e-stroke-card) var(--e-border-strong);\n outline: var(--e-stroke-card) solid var(--e-border-strong);\n outline-offset: calc(-1 * var(--e-stroke-card));\n overflow: hidden;\n }\n\n .e-progress-fill {\n height: 100%;\n border-radius: var(--e-radius-pill);\n background: var(--e-primary);\n box-shadow: inset 0 0 0 var(--e-stroke-card) var(--e-primary);\n outline: var(--e-stroke-card) solid var(--e-primary);\n outline-offset: calc(-1 * var(--e-stroke-card));\n transition: width var(--e-duration-move) var(--e-easing-out);\n }\n\n .e-progress--indeterminate .e-progress-fill {\n position: absolute;\n inset: 0 auto 0 0;\n width: 40%;\n transition: none;\n animation: e-progress-slide 1.5s cubic-bezier(0.4, 0, 0.2, 1) infinite;\n }\n\n @keyframes e-progress-slide {\n from {\n transform: translateX(-100%);\n }\n\n to {\n transform: translateX(250%);\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .e-progress-fill {\n transition: none;\n }\n\n .e-progress--indeterminate .e-progress-fill {\n width: 100%;\n animation: none;\n background: repeating-linear-gradient(\n 135deg,\n var(--e-primary) 0 var(--e-space-2),\n transparent var(--e-space-2) calc(2 * var(--e-space-2))\n );\n }\n }\n\n @media (forced-colors: active) {\n .e-progress-track {\n border: var(--e-stroke-card) solid CanvasText;\n }\n\n .e-progress-fill {\n forced-color-adjust: none;\n background: Highlight;\n }\n\n .e-progress--indeterminate .e-progress-fill {\n background: Highlight;\n }\n }\n}\n</style>\n"],"mappings":""}
@@ -1,11 +1,11 @@
1
1
  type __VLS_Props = {
2
- /** What is progressing. Also the bar's accessible name. */
3
- label: string;
4
- /** How far along, from 0 to `max`. */
5
- value: number;
2
+ /** What is progressing. Also the bar's accessible name. @default "Loading" */
3
+ label?: string;
4
+ /** How far along, from 0 to `max`; the fill is clamped. Leave it out while the length is unknown: the bar slides back and forth instead (indeterminate). */
5
+ value?: number;
6
6
  /** The value that means finished. */
7
7
  max?: number;
8
- /** Text shown at the end of the row. Defaults to a percentage. */
8
+ /** Text shown at the end of the row. @default percent */
9
9
  valueText?: string;
10
10
  };
11
11
  declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
@@ -1,11 +1,16 @@
1
1
  /* empty css */
2
- import { computed as e, createElementBlock as t, createElementVNode as n, defineComponent as r, normalizeStyle as i, openBlock as a, toDisplayString as o } from "vue";
2
+ import { useMessages as e } from "../../config.js";
3
+ import { computed as t, createCommentVNode as n, createElementBlock as r, createElementVNode as i, defineComponent as a, normalizeClass as o, normalizeStyle as s, openBlock as c, toDisplayString as l, unref as u } from "vue";
3
4
  //#region src/components/Progress/EProgress.vue?vue&type=script&setup=true&lang.ts
4
- var s = { class: "e-progress" }, c = { class: "e-progress-head" }, l = { class: "e-progress-label" }, u = { class: "e-progress-value" }, d = [
5
+ var d = {
6
+ key: 0,
7
+ class: "e-progress-head"
8
+ }, f = { class: "e-progress-label" }, p = { class: "e-progress-value" }, m = [
5
9
  "aria-label",
6
10
  "aria-valuemax",
7
- "aria-valuenow"
8
- ], f = /*@__PURE__*/ r({
11
+ "aria-valuenow",
12
+ "aria-busy"
13
+ ], h = /*@__PURE__*/ a({
9
14
  __name: "EProgress",
10
15
  props: {
11
16
  label: {},
@@ -13,22 +18,23 @@ var s = { class: "e-progress" }, c = { class: "e-progress-head" }, l = { class:
13
18
  max: { default: 100 },
14
19
  valueText: {}
15
20
  },
16
- setup(r) {
17
- let f = r, p = e(() => Math.max(0, Math.min(100, f.value / (f.max || 100) * 100)));
18
- return (e, f) => (a(), t("div", s, [n("div", c, [n("span", l, o(r.label), 1), n("span", u, o(r.valueText || Math.round(p.value) + "%"), 1)]), n("div", {
21
+ setup(a) {
22
+ let h = a, g = e(), _ = t(() => h.value === void 0), v = t(() => Math.max(0, Math.min(100, (h.value ?? 0) / (h.max || 100) * 100))), y = t(() => !!h.label || !_.value || !!h.valueText);
23
+ return (e, t) => (c(), r("div", { class: o(["e-progress", _.value && "e-progress--indeterminate"]) }, [y.value ? (c(), r("div", d, [i("span", f, l(a.label || u(g)("loading")), 1), i("span", p, l(a.valueText || (_.value ? "" : Math.round(v.value) + "%")), 1)])) : n("", !0), i("div", {
19
24
  class: "e-progress-track",
20
25
  role: "progressbar",
21
- "aria-label": r.label,
26
+ "aria-label": a.label || u(g)("loading"),
22
27
  "aria-valuemin": "0",
23
- "aria-valuemax": r.max || 100,
24
- "aria-valuenow": r.value
25
- }, [n("div", {
28
+ "aria-valuemax": _.value ? void 0 : a.max || 100,
29
+ "aria-valuenow": _.value ? void 0 : a.value,
30
+ "aria-busy": _.value ? "true" : void 0
31
+ }, [i("div", {
26
32
  class: "e-progress-fill",
27
- style: i({ width: p.value + "%" })
28
- }, null, 4)], 8, d)]));
33
+ style: s(_.value ? void 0 : { width: v.value + "%" })
34
+ }, null, 4)], 8, m)], 2));
29
35
  }
30
36
  });
31
37
  //#endregion
32
- export { f as default };
38
+ export { h as default };
33
39
 
34
40
  //# sourceMappingURL=EProgress.vue_vue_type_script_setup_true_lang.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EProgress.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_normalizeStyle","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","EProgress_vue_vue_type_script_setup_true_lang_default","props","__props","percent","computed","openBlock","createElementBlock","createElementVNode","toDisplayString","normalizeStyle"],"sources":["../../../src/components/Progress/EProgress.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport \"../../styles/base.css\";\n\nconst props = withDefaults(\n defineProps<{\n /** What is progressing. Also the bar's accessible name. */\n label: string;\n /** How far along, from 0 to `max`. */\n value: number;\n /** The value that means finished. */\n max?: number;\n /** Text shown at the end of the row. Defaults to a percentage. */\n valueText?: string;\n }>(),\n { max: 100 },\n);\n\nconst percent = computed(() => Math.max(0, Math.min(100, (props.value / (props.max || 100)) * 100)));\n</script>\n\n<template>\n <div class=\"e-progress\">\n <div class=\"e-progress-head\">\n <span class=\"e-progress-label\">{{ label }}</span>\n <span class=\"e-progress-value\">{{ valueText || Math.round(percent) + \"%\" }}</span>\n </div>\n <div\n class=\"e-progress-track\"\n role=\"progressbar\"\n :aria-label=\"label\"\n aria-valuemin=\"0\"\n :aria-valuemax=\"max || 100\"\n :aria-valuenow=\"value\"\n >\n <div class=\"e-progress-fill\" :style=\"{ width: percent + '%' }\"></div>\n </div>\n </div>\n</template>\n\n<style>\n@layer e.primitives {\n .e-progress {\n display: grid;\n gap: var(--e-space-2);\n }\n\n .e-progress-head {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--e-space-3);\n }\n\n .e-progress-label {\n font: 500 var(--e-text-md) / 1.3 var(--e-font-sans);\n }\n\n .e-progress-value {\n font: 500 var(--e-text-sm) / 1.3 var(--e-font-mono);\n font-variant-numeric: tabular-nums;\n color: var(--e-muted);\n }\n\n .e-progress-track {\n height: 10px;\n border-radius: var(--e-radius-pill);\n background: var(--e-surface-tint);\n box-shadow: inset 0 0 0 1px var(--e-border-strong);\n overflow: hidden;\n }\n\n .e-progress-fill {\n height: 100%;\n border-radius: var(--e-radius-pill);\n background: var(--e-primary);\n box-shadow: inset 0 0 0 1px var(--e-primary);\n transition: width var(--e-duration-move) var(--e-easing-out);\n }\n\n @media (prefers-reduced-motion: reduce) {\n .e-progress-fill {\n transition: none;\n }\n }\n\n @media (forced-colors: active) {\n .e-progress-fill {\n forced-color-adjust: none;\n background: Highlight;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;EAIA,IAAMW,IAAQC,GAcRC,IAAUC,QAAe,KAAK,IAAI,GAAG,KAAK,IAAI,KAAMH,EAAM,SAASA,EAAM,OAAO,OAAQ,GAAG,CAAC,CAAC;E,kBAIjGX,EAAA,GAAAC,EAeM,OAfNI,GAeM,CAdJH,EAGM,OAHNI,GAGM,CAFJJ,EAAiD,QAAjDK,GAAiDJ,EAAfS,EAAA,KAAK,GAAA,CAAA,GACvCV,EAAkF,QAAlFM,GAAkFL,EAAhDS,EAAA,aAAa,KAAK,MAAMC,EAAA,KAAO,IAAA,GAAA,GAAA,CAAA,C,IAEnEX,EASM,OAAA;GARJ,OAAM;GACN,MAAK;GACJ,cAAYU,EAAA;GACb,iBAAc;GACb,iBAAeA,EAAA,OAAG;GAClB,iBAAeA,EAAA;E,IAEhBV,EAAqE,OAAA;GAAhE,OAAM;GAAmB,OAAKE,EAAA,EAAA,OAAWS,EAAA,QAAO,IAAA,CAAA"}
1
+ {"version":3,"file":"EProgress.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_toDisplayString","_unref","_createCommentVNode","_normalizeStyle","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","EProgress_vue_vue_type_script_setup_true_lang_default","props","__props","t","useMessages","indeterminate","computed","percent","showHead","openBlock","createElementBlock","normalizeClass","createElementVNode","toDisplayString","unref","createCommentVNode","normalizeStyle"],"sources":["../../../src/components/Progress/EProgress.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { useMessages } from \"../../config.js\";\nimport \"../../styles/base.css\";\n\nconst props = withDefaults(\n defineProps<{\n /** What is progressing. Also the bar's accessible name. @default \"Loading\" */\n label?: string;\n /** How far along, from 0 to `max`; the fill is clamped. Leave it out while the length is unknown: the bar slides back and forth instead (indeterminate). */\n value?: number;\n /** The value that means finished. */\n max?: number;\n /** Text shown at the end of the row. @default percent */\n valueText?: string;\n }>(),\n { max: 100 },\n);\n\nconst t = useMessages();\nconst indeterminate = computed(() => props.value === undefined);\nconst percent = computed(() => Math.max(0, Math.min(100, ((props.value ?? 0) / (props.max || 100)) * 100)));\nconst showHead = computed(() => !!props.label || !indeterminate.value || !!props.valueText);\n</script>\n\n<template>\n <div class=\"e-progress\" :class=\"indeterminate && 'e-progress--indeterminate'\">\n <div v-if=\"showHead\" class=\"e-progress-head\">\n <span class=\"e-progress-label\">{{ label || t(\"loading\") }}</span>\n <span class=\"e-progress-value\">{{ valueText || (indeterminate ? \"\" : Math.round(percent) + \"%\") }}</span>\n </div>\n <div\n class=\"e-progress-track\"\n role=\"progressbar\"\n :aria-label=\"label || t('loading')\"\n aria-valuemin=\"0\"\n :aria-valuemax=\"indeterminate ? undefined : max || 100\"\n :aria-valuenow=\"indeterminate ? undefined : value\"\n :aria-busy=\"indeterminate ? 'true' : undefined\"\n >\n <div class=\"e-progress-fill\" :style=\"indeterminate ? undefined : { width: percent + '%' }\"></div>\n </div>\n </div>\n</template>\n\n<style>\n@layer e.primitives {\n .e-progress {\n display: grid;\n gap: var(--e-space-2);\n }\n\n .e-progress-head {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--e-space-3);\n }\n\n .e-progress-label {\n font: 500 var(--e-text-md) / 1.3 var(--e-font-sans);\n }\n\n .e-progress-value {\n font: 500 var(--e-text-sm) / 1.3 var(--e-font-mono);\n font-variant-numeric: tabular-nums;\n color: var(--e-muted);\n }\n\n .e-progress-track {\n position: relative;\n height: 10px;\n border-radius: var(--e-radius-pill);\n background: var(--e-surface-tint);\n box-shadow: inset 0 0 0 var(--e-stroke-card) var(--e-border-strong);\n outline: var(--e-stroke-card) solid var(--e-border-strong);\n outline-offset: calc(-1 * var(--e-stroke-card));\n overflow: hidden;\n }\n\n .e-progress-fill {\n height: 100%;\n border-radius: var(--e-radius-pill);\n background: var(--e-primary);\n box-shadow: inset 0 0 0 var(--e-stroke-card) var(--e-primary);\n outline: var(--e-stroke-card) solid var(--e-primary);\n outline-offset: calc(-1 * var(--e-stroke-card));\n transition: width var(--e-duration-move) var(--e-easing-out);\n }\n\n .e-progress--indeterminate .e-progress-fill {\n position: absolute;\n inset: 0 auto 0 0;\n width: 40%;\n transition: none;\n animation: e-progress-slide 1.5s cubic-bezier(0.4, 0, 0.2, 1) infinite;\n }\n\n @keyframes e-progress-slide {\n from {\n transform: translateX(-100%);\n }\n\n to {\n transform: translateX(250%);\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .e-progress-fill {\n transition: none;\n }\n\n .e-progress--indeterminate .e-progress-fill {\n width: 100%;\n animation: none;\n background: repeating-linear-gradient(\n 135deg,\n var(--e-primary) 0 var(--e-space-2),\n transparent var(--e-space-2) calc(2 * var(--e-space-2))\n );\n }\n }\n\n @media (forced-colors: active) {\n .e-progress-track {\n border: var(--e-stroke-card) solid CanvasText;\n }\n\n .e-progress-fill {\n forced-color-adjust: none;\n background: Highlight;\n }\n\n .e-progress--indeterminate .e-progress-fill {\n background: Highlight;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAKA,IAAMa,IAAQC,GAcRC,IAAIC,EAAY,GAChBC,IAAgBC,QAAeL,EAAM,UAAU,KAAA,CAAS,GACxDM,IAAUD,QAAe,KAAK,IAAI,GAAG,KAAK,IAAI,MAAOL,EAAM,SAAS,MAAMA,EAAM,OAAO,OAAQ,GAAG,CAAC,CAAC,GACpGO,IAAWF,QAAe,CAAC,CAACL,EAAM,SAAS,CAACI,EAAc,SAAS,CAAC,CAACJ,EAAM,SAAS;E,kBAIxFb,EAAA,GAAAC,EAgBM,OAAA,EAhBD,OAAKC,EAAA,CAAC,cAAqBe,EAAA,SAAa,2BAAA,CAAA,E,IAChCG,EAAA,SAAXpB,EAAA,GAAAC,EAGM,OAHNO,GAGM,CAFJL,EAAiE,QAAjEM,GAAiEL,EAA/BU,EAAA,SAAST,EAAAU,CAAA,CAAC,CAAA,SAAA,CAAA,GAAA,CAAA,GAC5CZ,EAAyG,QAAzGO,GAAyGN,EAAvEU,EAAA,cAAcG,EAAA,QAAa,KAAQ,KAAK,MAAME,EAAA,KAAO,IAAA,IAAA,GAAA,CAAA,C,iBAEzFhB,EAUM,OAAA;GATJ,OAAM;GACN,MAAK;GACJ,cAAYW,EAAA,SAAST,EAAAU,CAAA,CAAC,CAAA,SAAA;GACvB,iBAAc;GACb,iBAAeE,EAAA,QAAgB,KAAA,IAAYH,EAAA,OAAG;GAC9C,iBAAeG,EAAA,QAAgB,KAAA,IAAYH,EAAA;GAC3C,aAAWG,EAAA,QAAa,SAAY,KAAA;E,IAErCd,EAAiG,OAAA;GAA5F,OAAM;GAAmB,OAAKI,EAAEU,EAAA,QAAgB,KAAA,IAAS,EAAA,OAAYE,EAAA,QAAO,IAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ERadioGroup.js","names":["_sfc_main","ERadioGroup_vue_vue_type_script_setup_true_lang_default","ERadioGroup_default"],"sources":["../../../src/components/RadioGroup/ERadioGroup.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface RadioOption {\n value: string;\n label: string;\n /** A line of detail under the label. */\n description?: string;\n disabled?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { Comment, Fragment, useSlots, type FunctionalComponent, type VNode } from \"vue\";\nimport EFieldset from \"../Fieldset/EFieldset.vue\";\nimport { useUid } from \"../../composables/useUid.js\";\nimport \"../../styles/base.css\";\nimport \"../Checkbox/choice.css\";\n\nconst props = defineProps<{\n /** The question, as the group's legend. */\n label: string;\n /** Keep the legend for screen readers and remove it from the page. */\n hideLabel?: boolean;\n /** Five or fewer. A string is both value and label. */\n options: (string | RadioOption)[];\n /** Help that is announced with the group. */\n hint?: string;\n /** What to fix. Replaces the hint and is announced with the group. */\n error?: string;\n required?: boolean;\n /** A word beside the legend. Flag whichever is rarer. */\n optional?: boolean;\n /** Disables every option. */\n disabled?: boolean;\n /** The name the radios share, submitted with a form. Generated when left out. */\n name?: string;\n}>();\n\ndefineSlots<{\n /** A control shown under its option while that option is chosen, such as an amount field under \"Another amount\". Render nothing for an option that has none. */\n reveal(props: { option: RadioOption }): unknown;\n}>();\n\nconst model = defineModel<string>();\n\nconst name = useUid(() => props.name);\nconst slots = useSlots();\n\nconst normalised = (): RadioOption[] => props.options.map((o) => (typeof o === \"string\" ? { value: o, label: o } : o));\n\nfunction hasContent(nodes: VNode[]): boolean {\n return nodes.some((n) =>\n n.type === Comment ? false : n.type === Fragment ? hasContent((n.children as VNode[] | null) ?? []) : true,\n );\n}\n\nfunction rows() {\n return normalised().map((option) => {\n const chosen = model.value === option.value;\n const nodes = chosen ? slots.reveal?.({ option }) : undefined;\n return { option, chosen, reveal: nodes && hasContent(nodes) ? nodes : null };\n });\n}\n\nconst Nodes: FunctionalComponent<{ nodes: VNode[] }> = (p) => p.nodes;\nNodes.props = [\"nodes\"];\n</script>\n\n<template>\n <EFieldset\n :id=\"`${name}-fs`\"\n class=\"e-radiogroup\"\n legend-class=\"e-radiogroup-legend\"\n bare\n :legend=\"label\"\n :hide-legend=\"hideLabel\"\n :hint=\"hint\"\n :error=\"error\"\n :required=\"required\"\n :optional=\"optional\"\n :disabled=\"disabled\"\n >\n <template v-for=\"row in rows()\" :key=\"row.option.value\">\n <label class=\"e-choice\" :class=\"{ 'e-choice--disabled': row.option.disabled, 'e-choice--open': row.reveal }\">\n <input\n type=\"radio\"\n class=\"e-radio\"\n :name=\"name\"\n :value=\"row.option.value\"\n :required=\"required\"\n :checked=\"row.chosen\"\n :disabled=\"row.option.disabled\"\n @change=\"model = row.option.value\"\n />\n <span class=\"e-choice-text\">\n {{ row.option.label }}\n <span v-if=\"row.option.description\" class=\"e-choice-desc\">{{ row.option.description }}</span>\n </span>\n </label>\n <div v-if=\"row.reveal\" class=\"e-choice-reveal\"><Nodes :nodes=\"row.reveal\" /></div>\n </template>\n </EFieldset>\n</template>\n\n<style>\n@layer e.controls {\n .e-radiogroup {\n display: grid;\n gap: 0;\n min-width: 0;\n margin: 0;\n padding: 0;\n border: 0;\n }\n\n .e-radiogroup-legend {\n padding: 0;\n }\n\n .e-radiogroup > .e-field-hint,\n .e-radiogroup > .e-field-error {\n margin-top: -6px;\n }\n\n .e-choice--open {\n min-height: 0;\n padding-bottom: var(--e-space-1);\n }\n\n .e-choice-reveal {\n padding: var(--e-space-1) 0 var(--e-space-2);\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"ERadioGroup.js","names":["_sfc_main","ERadioGroup_vue_vue_type_script_setup_true_lang_default","ERadioGroup_default"],"sources":["../../../src/components/RadioGroup/ERadioGroup.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface RadioOption {\n value: string;\n label: string;\n /** A line of detail under the label. */\n description?: string;\n disabled?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { Comment, Fragment, useSlots, type FunctionalComponent, type VNode } from \"vue\";\nimport EFieldset from \"../Fieldset/EFieldset.vue\";\nimport { useUid } from \"../../composables/useUid.js\";\nimport \"../../styles/base.css\";\nimport \"../Checkbox/choice.css\";\n\nconst props = defineProps<{\n /** The question, as the group's legend. */\n label: string;\n /** Keep the legend for screen readers and remove it from the page. */\n hideLabel?: boolean;\n /** Five or fewer. A string is both value and label. `RadioOption`: `{ value, label, description?, disabled? }`. */\n options: (string | RadioOption)[];\n /** Help that is announced with the group. */\n hint?: string;\n /** What to fix. Replaces the hint and is announced with the group. */\n error?: string;\n /** A word beside the legend, and `required` on the radios. */\n required?: boolean;\n /** A word beside the legend. Flag whichever is rarer. */\n optional?: boolean;\n /** Disables every option. */\n disabled?: boolean;\n /** Shared by the radios, submitted with a form. @default generated */\n name?: string;\n}>();\n\ndefineSlots<{\n /** A control shown under its option while that option is chosen, such as an amount field under \"Another amount\". Render nothing for an option that has none. */\n reveal(props: { option: RadioOption }): unknown;\n}>();\n\n/** The chosen value. */\nconst model = defineModel<string>();\n\nconst name = useUid(() => props.name);\nconst slots = useSlots();\n\nconst normalised = (): RadioOption[] => props.options.map((o) => (typeof o === \"string\" ? { value: o, label: o } : o));\n\nfunction hasContent(nodes: VNode[]): boolean {\n return nodes.some((n) =>\n n.type === Comment ? false : n.type === Fragment ? hasContent((n.children as VNode[] | null) ?? []) : true,\n );\n}\n\nfunction rows() {\n return normalised().map((option) => {\n const chosen = model.value === option.value;\n const nodes = chosen ? slots.reveal?.({ option }) : undefined;\n return { option, chosen, reveal: nodes && hasContent(nodes) ? nodes : null };\n });\n}\n\nconst Nodes: FunctionalComponent<{ nodes: VNode[] }> = (p) => p.nodes;\nNodes.props = [\"nodes\"];\n</script>\n\n<template>\n <EFieldset\n :id=\"`${name}-fs`\"\n class=\"e-radiogroup\"\n legend-class=\"e-radiogroup-legend\"\n bare\n :legend=\"label\"\n :hide-legend=\"hideLabel\"\n :hint=\"hint\"\n :error=\"error\"\n :required=\"required\"\n :optional=\"optional\"\n :disabled=\"disabled\"\n >\n <template v-for=\"row in rows()\" :key=\"row.option.value\">\n <label class=\"e-choice\" :class=\"{ 'e-choice--disabled': row.option.disabled, 'e-choice--open': row.reveal }\">\n <input\n type=\"radio\"\n class=\"e-radio\"\n :name=\"name\"\n :value=\"row.option.value\"\n :required=\"required\"\n :checked=\"row.chosen\"\n :disabled=\"row.option.disabled\"\n @change=\"model = row.option.value\"\n />\n <span class=\"e-choice-text\">\n {{ row.option.label }}\n <span v-if=\"row.option.description\" class=\"e-choice-desc\">{{ row.option.description }}</span>\n </span>\n </label>\n <div v-if=\"row.reveal\" class=\"e-choice-reveal\"><Nodes :nodes=\"row.reveal\" /></div>\n </template>\n </EFieldset>\n</template>\n\n<style>\n@layer e.controls {\n .e-radiogroup {\n display: grid;\n gap: 0;\n min-width: 0;\n margin: 0;\n padding: 0;\n border: 0;\n }\n\n .e-radiogroup-legend {\n padding: 0;\n }\n\n .e-radiogroup > .e-field-hint,\n .e-radiogroup > .e-field-error {\n margin-top: calc(var(--e-space-1) - var(--e-space-2) - var(--e-focus-gap));\n }\n\n .e-choice--open {\n min-height: 0;\n padding-bottom: var(--e-space-1);\n }\n\n .e-choice-reveal {\n padding: var(--e-space-1) 0 var(--e-space-2);\n }\n}\n</style>\n"],"mappings":""}
@@ -12,20 +12,22 @@ declare const __VLS_export: __VLS_WithSlots<import('vue').DefineComponent<{
12
12
  label: string;
13
13
  /** Keep the legend for screen readers and remove it from the page. */
14
14
  hideLabel?: boolean;
15
- /** Five or fewer. A string is both value and label. */
15
+ /** Five or fewer. A string is both value and label. `RadioOption`: `{ value, label, description?, disabled? }`. */
16
16
  options: (string | RadioOption)[];
17
17
  /** Help that is announced with the group. */
18
18
  hint?: string;
19
19
  /** What to fix. Replaces the hint and is announced with the group. */
20
20
  error?: string;
21
+ /** A word beside the legend, and `required` on the radios. */
21
22
  required?: boolean;
22
23
  /** A word beside the legend. Flag whichever is rarer. */
23
24
  optional?: boolean;
24
25
  /** Disables every option. */
25
26
  disabled?: boolean;
26
- /** The name the radios share, submitted with a form. Generated when left out. */
27
+ /** Shared by the radios, submitted with a form. @default generated */
27
28
  name?: string;
28
29
  } & {
30
+ /** The chosen value. */
29
31
  modelValue?: string;
30
32
  }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
31
33
  "update:modelValue": (value: string | undefined) => any;
@@ -34,20 +36,22 @@ declare const __VLS_export: __VLS_WithSlots<import('vue').DefineComponent<{
34
36
  label: string;
35
37
  /** Keep the legend for screen readers and remove it from the page. */
36
38
  hideLabel?: boolean;
37
- /** Five or fewer. A string is both value and label. */
39
+ /** Five or fewer. A string is both value and label. `RadioOption`: `{ value, label, description?, disabled? }`. */
38
40
  options: (string | RadioOption)[];
39
41
  /** Help that is announced with the group. */
40
42
  hint?: string;
41
43
  /** What to fix. Replaces the hint and is announced with the group. */
42
44
  error?: string;
45
+ /** A word beside the legend, and `required` on the radios. */
43
46
  required?: boolean;
44
47
  /** A word beside the legend. Flag whichever is rarer. */
45
48
  optional?: boolean;
46
49
  /** Disables every option. */
47
50
  disabled?: boolean;
48
- /** The name the radios share, submitted with a form. Generated when left out. */
51
+ /** Shared by the radios, submitted with a form. @default generated */
49
52
  name?: string;
50
53
  } & {
54
+ /** The chosen value. */
51
55
  modelValue?: string;
52
56
  }> & Readonly<{
53
57
  "onUpdate:modelValue"?: ((value: string | undefined) => any) | undefined;
@@ -1,7 +1,7 @@
1
1
  /* empty css */
2
2
  import { useUid as e } from "../../composables/useUid.js";
3
- import t from "../Fieldset/EFieldset.js";
4
3
  /* empty css */
4
+ import t from "../Fieldset/EFieldset.js";
5
5
  import { Comment as n, Fragment as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createTextVNode as c, createVNode as l, defineComponent as u, mergeModels as d, normalizeClass as f, openBlock as p, renderList as m, toDisplayString as h, unref as g, useModel as _, useSlots as v, withCtx as y } from "vue";
6
6
  //#region src/components/RadioGroup/ERadioGroup.vue?vue&type=script&setup=true&lang.ts
7
7
  var b = [