native-document 1.0.164 → 1.0.166

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 (398) hide show
  1. package/components.d.ts +2 -0
  2. package/devtools/widget.js +1 -1
  3. package/dist/native-document.components.min.js +11074 -2735
  4. package/dist/native-document.dev.js +2269 -392
  5. package/dist/native-document.dev.js.map +1 -1
  6. package/dist/native-document.min.js +1 -1
  7. package/eslint.config.js +28 -33
  8. package/i18n.js +1 -1
  9. package/i18n.ts +2 -0
  10. package/index.js +4 -1
  11. package/package.json +3 -2
  12. package/src/components/$traits/has-draggable/HasDraggable.d.ts +4 -0
  13. package/src/components/$traits/has-draggable/HasDraggable.js +13 -0
  14. package/src/components/$traits/has-items/HasItems.d.ts +9 -0
  15. package/src/components/$traits/has-items/HasItems.js +6 -6
  16. package/src/components/$traits/has-position/HasFullPosition.d.ts +14 -0
  17. package/src/components/$traits/has-position/HasFullPosition.js +44 -0
  18. package/src/components/$traits/has-position/HasPosition.d.ts +7 -0
  19. package/src/components/$traits/has-position/HasPosition.js +23 -1
  20. package/src/components/$traits/has-resizable/HasResizable.d.ts +13 -0
  21. package/src/components/$traits/has-resizable/HasResizable.js +9 -0
  22. package/src/components/$traits/has-validation/HasValidation.d.ts +17 -0
  23. package/src/components/$traits/has-validation/HasValidation.js +54 -7
  24. package/src/components/BaseComponent.d.ts +32 -0
  25. package/src/components/BaseComponent.js +65 -9
  26. package/src/components/accordion/Accordion.js +39 -14
  27. package/src/components/accordion/AccordionItem.js +45 -14
  28. package/src/components/accordion/index.js +2 -2
  29. package/src/components/accordion/types/Accordion.d.ts +47 -0
  30. package/src/components/accordion/types/AccordionItem.d.ts +48 -0
  31. package/src/components/alert/Alert.js +70 -38
  32. package/src/components/alert/index.js +2 -2
  33. package/src/components/alert/types/Alert.d.ts +62 -0
  34. package/src/components/avatar/Avatar.js +49 -12
  35. package/src/components/avatar/AvatarGroup.js +50 -2
  36. package/src/components/avatar/index.js +2 -2
  37. package/src/components/avatar/types/Avatar.d.ts +74 -0
  38. package/src/components/avatar/types/AvatarGroup.d.ts +32 -0
  39. package/src/components/badge/Badge.js +125 -5
  40. package/src/components/badge/index.js +2 -2
  41. package/src/components/badge/types/Badge.d.ts +51 -0
  42. package/src/components/breadcrumb/BreadCrumb.js +61 -5
  43. package/src/components/breadcrumb/index.js +2 -2
  44. package/src/components/breadcrumb/types/BreadCrumb.d.ts +42 -0
  45. package/src/components/button/Button.js +164 -9
  46. package/src/components/button/index.js +1 -1
  47. package/src/components/button/types/Button.d.ts +62 -0
  48. package/src/components/card/Card.js +128 -10
  49. package/src/components/card/index.js +3 -3
  50. package/src/components/card/types/Card.d.ts +42 -0
  51. package/src/components/context-menu/ContextMenu.js +49 -5
  52. package/src/components/context-menu/ContextMenuGroup.js +15 -2
  53. package/src/components/context-menu/ContextMenuItem.js +14 -2
  54. package/src/components/context-menu/index.js +5 -5
  55. package/src/components/context-menu/types/ContextMenu.d.ts +30 -0
  56. package/src/components/context-menu/types/ContextMenuGroup.d.ts +18 -0
  57. package/src/components/context-menu/types/ContextMenuItem.d.ts +18 -0
  58. package/src/components/divider/Divider.js +120 -4
  59. package/src/components/divider/index.js +3 -3
  60. package/src/components/divider/types/Divider.d.ts +55 -0
  61. package/src/components/dropdown/Dropdown.js +239 -16
  62. package/src/components/dropdown/DropdownDivider.js +22 -2
  63. package/src/components/dropdown/DropdownGroup.js +44 -5
  64. package/src/components/dropdown/DropdownItem.js +76 -3
  65. package/src/components/dropdown/DropdownTrigger.js +49 -20
  66. package/src/components/dropdown/helpers.js +1 -1
  67. package/src/components/dropdown/index.js +6 -6
  68. package/src/components/dropdown/types/Dropdown.d.ts +88 -0
  69. package/src/components/dropdown/types/DropdownDivider.d.ts +20 -0
  70. package/src/components/dropdown/types/DropdownGroup.d.ts +25 -0
  71. package/src/components/dropdown/types/DropdownItem.d.ts +41 -0
  72. package/src/components/dropdown/types/DropdownTrigger.d.ts +32 -0
  73. package/src/components/form/FormControl.js +156 -13
  74. package/src/components/form/field/Field.js +172 -9
  75. package/src/components/form/field/FieldCollection.js +116 -12
  76. package/src/components/form/field/types/AutocompleteField.js +92 -2
  77. package/src/components/form/field/types/CheckboxField.js +43 -2
  78. package/src/components/form/field/types/CheckboxGroupField.js +83 -6
  79. package/src/components/form/field/types/ColorField.js +56 -3
  80. package/src/components/form/field/types/DateField.js +155 -4
  81. package/src/components/form/field/types/EmailField.js +54 -4
  82. package/src/components/form/field/types/FileField.js +140 -6
  83. package/src/components/form/field/types/HiddenField.js +27 -1
  84. package/src/components/form/field/types/ImageField.js +82 -3
  85. package/src/components/form/field/types/NumberField.js +97 -4
  86. package/src/components/form/field/types/PasswordField.js +103 -7
  87. package/src/components/form/field/types/RadioField.js +75 -4
  88. package/src/components/form/field/types/RangeField.js +67 -1
  89. package/src/components/form/field/types/SearchField.js +41 -2
  90. package/src/components/form/field/types/SelectField.js +133 -4
  91. package/src/components/form/field/types/StringField.js +91 -2
  92. package/src/components/form/field/types/TelField.js +55 -4
  93. package/src/components/form/field/types/TextAreaField.js +76 -2
  94. package/src/components/form/field/types/TimeField.js +120 -5
  95. package/src/components/form/field/types/UrlField.js +59 -4
  96. package/src/components/form/field/types/file-field-mode/FileAvatarMode.js +83 -4
  97. package/src/components/form/field/types/file-field-mode/FileDropzoneMode.js +61 -3
  98. package/src/components/form/field/types/file-field-mode/FileItemPreview.js +79 -3
  99. package/src/components/form/field/types/file-field-mode/FileNativeMode.js +24 -2
  100. package/src/components/form/field/types/file-field-mode/FileUploadButtonMode.js +64 -3
  101. package/src/components/form/field/types/file-field-mode/FileWallMode.js +56 -3
  102. package/src/components/form/index.js +28 -28
  103. package/src/components/form/types/Field.d.ts +73 -0
  104. package/src/components/form/types/FieldCollection.d.ts +53 -0
  105. package/src/components/form/types/FormControl.d.ts +64 -0
  106. package/src/components/form/types/fields/AutocompleteField.d.ts +48 -0
  107. package/src/components/form/types/fields/CheckboxField.d.ts +33 -0
  108. package/src/components/form/types/fields/CheckboxGroupField.d.ts +49 -0
  109. package/src/components/form/types/fields/ColorField.d.ts +37 -0
  110. package/src/components/form/types/fields/DateField.d.ts +70 -0
  111. package/src/components/form/types/fields/EmailField.d.ts +35 -0
  112. package/src/components/form/types/fields/FileAvatarMode.d.ts +46 -0
  113. package/src/components/form/types/fields/FileDropzoneMode.d.ts +28 -0
  114. package/src/components/form/types/fields/FileField.d.ts +56 -0
  115. package/src/components/form/types/fields/FileItemPreview.d.ts +35 -0
  116. package/src/components/form/types/fields/FileNativeMode.d.ts +21 -0
  117. package/src/components/form/types/fields/FileUploadButtonMode.d.ts +34 -0
  118. package/src/components/form/types/fields/FileWallMode.d.ts +32 -0
  119. package/src/components/form/types/fields/HiddenField.d.ts +26 -0
  120. package/src/components/form/types/fields/ImageField.d.ts +45 -0
  121. package/src/components/form/types/fields/NumberField.d.ts +48 -0
  122. package/src/components/form/types/fields/PasswordField.d.ts +46 -0
  123. package/src/components/form/types/fields/RadioField.d.ts +48 -0
  124. package/src/components/form/types/fields/RangeField.d.ts +44 -0
  125. package/src/components/form/types/fields/SearchField.d.ts +34 -0
  126. package/src/components/form/types/fields/SelectField.d.ts +71 -0
  127. package/src/components/form/types/fields/StringField.d.ts +48 -0
  128. package/src/components/form/types/fields/TelField.d.ts +37 -0
  129. package/src/components/form/types/fields/TextAreaField.d.ts +44 -0
  130. package/src/components/form/types/fields/TimeField.d.ts +51 -0
  131. package/src/components/form/types/fields/UrlField.d.ts +35 -0
  132. package/src/components/form/validation/Validation.js +54 -54
  133. package/src/components/index.d.ts +160 -0
  134. package/src/components/list/List.js +99 -15
  135. package/src/components/list/ListGroup.js +58 -8
  136. package/src/components/list/ListItem.js +79 -18
  137. package/src/components/list/index.js +5 -5
  138. package/src/components/list/types/List.d.ts +43 -0
  139. package/src/components/list/types/ListGroup.d.ts +37 -0
  140. package/src/components/list/types/ListItem.d.ts +42 -0
  141. package/src/components/menu/HasMenuItem.js +55 -6
  142. package/src/components/menu/Menu.js +113 -22
  143. package/src/components/menu/MenuDivider.js +18 -2
  144. package/src/components/menu/MenuGroup.js +61 -6
  145. package/src/components/menu/MenuItem.js +95 -11
  146. package/src/components/menu/MenuLink.js +27 -2
  147. package/src/components/menu/index.js +6 -6
  148. package/src/components/menu/types/Menu.d.ts +60 -0
  149. package/src/components/menu/types/MenuDivider.d.ts +19 -0
  150. package/src/components/menu/types/MenuGroup.d.ts +44 -0
  151. package/src/components/menu/types/MenuItem.d.ts +46 -0
  152. package/src/components/menu/types/MenuLink.d.ts +16 -0
  153. package/src/components/modal/Modal.js +258 -17
  154. package/src/components/modal/index.js +3 -3
  155. package/src/components/modal/types/Modal.d.ts +94 -0
  156. package/src/components/pagination/Pagination.js +155 -7
  157. package/src/components/pagination/index.js +3 -3
  158. package/src/components/pagination/types/Pagination.d.ts +68 -0
  159. package/src/components/popover/Popover.js +198 -11
  160. package/src/components/popover/PopoverFooter.js +33 -9
  161. package/src/components/popover/PopoverHeader.js +33 -8
  162. package/src/components/popover/index.js +4 -4
  163. package/src/components/popover/types/Popover.d.ts +83 -0
  164. package/src/components/popover/types/PopoverFooter.d.ts +24 -0
  165. package/src/components/popover/types/PopoverHeader.d.ts +26 -0
  166. package/src/components/progress/Progress.js +182 -13
  167. package/src/components/progress/index.js +3 -3
  168. package/src/components/progress/types/Progress.d.ts +77 -0
  169. package/src/components/skeleton/Skeleton.js +117 -49
  170. package/src/components/skeleton/index.js +3 -3
  171. package/src/components/skeleton/types/Skeleton.d.ts +55 -0
  172. package/src/components/slider/Slider.js +207 -10
  173. package/src/components/slider/index.js +2 -2
  174. package/src/components/slider/types/Slider.d.ts +82 -0
  175. package/src/components/spacer/Spacer.js +11 -2
  176. package/src/components/spacer/index.js +2 -2
  177. package/src/components/spacer/types/Spacer.d.ts +19 -0
  178. package/src/components/spinner/Spinner.js +180 -9
  179. package/src/components/spinner/index.js +3 -3
  180. package/src/components/spinner/types/Spinner.d.ts +71 -0
  181. package/src/components/splitter/Splitter.js +76 -13
  182. package/src/components/splitter/SplitterGutter.js +67 -5
  183. package/src/components/splitter/SplitterPanel.js +69 -2
  184. package/src/components/splitter/index.js +5 -5
  185. package/src/components/splitter/types/Splitter.d.ts +38 -0
  186. package/src/components/splitter/types/SplitterGutter.d.ts +38 -0
  187. package/src/components/splitter/types/SplitterPanel.d.ts +41 -0
  188. package/src/components/stacks/AbsoluteStack.js +23 -3
  189. package/src/components/stacks/FixedStack.js +23 -3
  190. package/src/components/stacks/HStack.js +24 -3
  191. package/src/components/stacks/PositionStack.js +111 -3
  192. package/src/components/stacks/RelativeStack.js +23 -3
  193. package/src/components/stacks/Stack.js +73 -2
  194. package/src/components/stacks/VStack.js +24 -4
  195. package/src/components/stacks/index.js +7 -7
  196. package/src/components/stacks/types/AbsoluteStack.d.ts +16 -0
  197. package/src/components/stacks/types/FixedStack.d.ts +16 -0
  198. package/src/components/stacks/types/HStack.d.ts +16 -0
  199. package/src/components/stacks/types/PositionStack.d.ts +54 -0
  200. package/src/components/stacks/types/RelativeStack.d.ts +17 -0
  201. package/src/components/stacks/types/Stack.d.ts +39 -0
  202. package/src/components/stacks/types/VStack.d.ts +16 -0
  203. package/src/components/stepper/Stepper.js +152 -12
  204. package/src/components/stepper/StepperStep.js +104 -3
  205. package/src/components/stepper/index.js +4 -4
  206. package/src/components/stepper/types/Stepper.d.ts +68 -0
  207. package/src/components/stepper/types/StepperStep.d.ts +54 -0
  208. package/src/components/switch/Switch.js +143 -6
  209. package/src/components/switch/index.js +1 -1
  210. package/src/components/switch/types/Switch.d.ts +55 -0
  211. package/src/components/table/Column.js +105 -6
  212. package/src/components/table/ColumnGroup.js +48 -3
  213. package/src/components/table/DataTable.js +256 -19
  214. package/src/components/table/SimpleTable.js +58 -4
  215. package/src/components/table/index.js +2 -2
  216. package/src/components/table/types/Column.d.ts +49 -0
  217. package/src/components/table/types/ColumnGroup.d.ts +28 -0
  218. package/src/components/table/types/DataTable.d.ts +97 -0
  219. package/src/components/table/types/SimpleTable.d.ts +40 -0
  220. package/src/components/tabs/Tabs.js +192 -5
  221. package/src/components/tabs/index.js +3 -3
  222. package/src/components/tabs/types/Tabs.d.ts +78 -0
  223. package/src/components/toast/Toast.js +133 -5
  224. package/src/components/toast/index.js +3 -3
  225. package/src/components/toast/types/Toast.d.ts +57 -0
  226. package/src/components/toast/types/ToastError.d.ts +7 -0
  227. package/src/components/toast/types/ToastInfo.d.ts +7 -0
  228. package/src/components/toast/types/ToastSuccess.d.ts +7 -0
  229. package/src/components/toast/types/ToastWarning.d.ts +7 -0
  230. package/src/components/tooltip/Tooltip.js +157 -13
  231. package/src/components/tooltip/index.js +2 -2
  232. package/src/components/tooltip/prototypes.js +1 -1
  233. package/src/components/tooltip/types/Tooltip.d.ts +65 -0
  234. package/src/core/data/MemoryManager.js +2 -2
  235. package/src/core/data/Observable.js +15 -18
  236. package/src/core/data/ObservableArray.js +118 -46
  237. package/src/core/data/ObservableChecker.js +2 -2
  238. package/src/core/data/ObservableItem.js +135 -21
  239. package/src/core/data/ObservableObject.js +126 -35
  240. package/src/core/data/ObservableResource.js +113 -3
  241. package/src/core/data/Store.js +142 -26
  242. package/src/core/data/observable-helpers/observable.is-to.js +196 -1
  243. package/src/core/data/observable-helpers/observable.prototypes.js +33 -8
  244. package/src/core/elements/anchor/anchor-with-sentinel.js +23 -2
  245. package/src/core/elements/anchor/anchor.js +16 -7
  246. package/src/core/elements/anchor/one-child-anchor-overwriting.js +2 -2
  247. package/src/core/elements/content-formatter.js +1 -1
  248. package/src/core/elements/control/for-each-array.js +9 -9
  249. package/src/core/elements/control/for-each.js +14 -14
  250. package/src/core/elements/control/show-if.js +11 -11
  251. package/src/core/elements/control/show-when.js +5 -5
  252. package/src/core/elements/control/switch.js +14 -14
  253. package/src/core/elements/description-list.js +1 -1
  254. package/src/core/elements/form.js +2 -2
  255. package/src/core/elements/fragment.js +1 -1
  256. package/src/core/elements/html5-semantics.js +1 -1
  257. package/src/core/elements/img.js +3 -3
  258. package/src/core/elements/interactive.js +1 -1
  259. package/src/core/elements/list.js +1 -1
  260. package/src/core/elements/medias.js +1 -1
  261. package/src/core/elements/meta-data.js +1 -1
  262. package/src/core/elements/svg.js +1 -1
  263. package/src/core/elements/table.js +1 -1
  264. package/src/core/errors/ArgTypesError.js +1 -1
  265. package/src/core/utils/HasEventEmitter.js +36 -2
  266. package/src/core/utils/args-types.js +9 -9
  267. package/src/core/utils/cache.js +1 -1
  268. package/src/core/utils/callback-handler.js +29 -0
  269. package/src/core/utils/debug-manager.js +6 -6
  270. package/src/core/utils/events.js +139 -139
  271. package/src/core/utils/filters/date.js +84 -3
  272. package/src/core/utils/filters/standard.js +136 -11
  273. package/src/core/utils/filters/strings.js +34 -2
  274. package/src/core/utils/filters/utils.js +40 -4
  275. package/src/core/utils/formatters.js +4 -4
  276. package/src/core/utils/helpers.js +39 -7
  277. package/src/core/utils/localstorage.js +11 -11
  278. package/src/core/utils/memoize.js +56 -3
  279. package/src/core/utils/plugins-manager.js +3 -3
  280. package/src/core/utils/property-accumulator.js +6 -6
  281. package/src/core/utils/prototypes.js +26 -1
  282. package/src/core/utils/shortcut-manager.js +2 -2
  283. package/src/core/utils/validator.js +8 -8
  284. package/src/core/wrappers/AttributesWrapper.js +32 -22
  285. package/src/core/wrappers/DocumentObserver.js +3 -3
  286. package/src/core/wrappers/ElementCreator.js +5 -5
  287. package/src/core/wrappers/HtmlElementWrapper.js +38 -12
  288. package/src/core/wrappers/NDElement.js +328 -22
  289. package/src/core/wrappers/NdPrototype.js +60 -16
  290. package/src/core/wrappers/SingletonView.js +50 -2
  291. package/src/core/wrappers/SvgElementWrapper.js +1 -1
  292. package/src/core/wrappers/constants.js +35 -2
  293. package/src/core/wrappers/prototypes/attributes-extensions.js +7 -7
  294. package/src/core/wrappers/prototypes/nd-element-extensions.js +72 -6
  295. package/src/core/wrappers/prototypes/nd-element.transition.extensions.js +42 -2
  296. package/src/core/wrappers/template-cloner/NodeCloner.js +53 -8
  297. package/src/core/wrappers/template-cloner/TemplateCloner.js +75 -6
  298. package/src/core/wrappers/template-cloner/attributes-hydrator.js +58 -2
  299. package/src/core/wrappers/template-cloner/utils.js +42 -6
  300. package/src/fetch/NativeFetch.js +3 -3
  301. package/src/i18n/bin/scan.js +6 -6
  302. package/src/i18n/index.d.ts +2 -0
  303. package/src/i18n/service/I18nService.d.ts +27 -0
  304. package/src/i18n/service/I18nService.js +5 -5
  305. package/src/i18n/service/functions.d.ts +22 -0
  306. package/src/i18n/service/functions.js +2 -2
  307. package/src/router/Route.js +3 -3
  308. package/src/router/RouteGroupHelper.js +2 -2
  309. package/src/router/Router.js +15 -15
  310. package/src/router/RouterComponent.js +33 -7
  311. package/src/router/link.js +4 -4
  312. package/src/router/modes/HashRouter.js +2 -2
  313. package/src/router/modes/HistoryRouter.js +2 -2
  314. package/src/router/modes/MemoryRouter.js +1 -1
  315. package/src/ui/components/accordion/AccordionItemRender.js +3 -3
  316. package/src/ui/components/accordion/AccordionRender.js +1 -1
  317. package/src/ui/components/alert/AlertRender.js +10 -10
  318. package/src/ui/components/avatar/avata-group/AvatarGroupRender.js +1 -1
  319. package/src/ui/components/avatar/avatar/AvatarRender.js +1 -1
  320. package/src/ui/components/breadcrumb/BreadcrumbRender.js +2 -2
  321. package/src/ui/components/button/ButtonRender.js +1 -1
  322. package/src/ui/components/contextmenu/ContextmenuRender.js +5 -5
  323. package/src/ui/components/dropdown/DropdownRender.js +8 -8
  324. package/src/ui/components/dropdown/group/DropdownGroupRender.js +2 -2
  325. package/src/ui/components/dropdown/item/DropdownItemRender.js +1 -1
  326. package/src/ui/components/form/FieldCollectionRender.js +2 -2
  327. package/src/ui/components/form/FormControlRender.js +5 -5
  328. package/src/ui/components/form/fields/AutocompleteFieldRender.js +3 -3
  329. package/src/ui/components/form/fields/CheckboxFieldRender.js +1 -1
  330. package/src/ui/components/form/fields/CheckboxGroupFieldRender.js +1 -1
  331. package/src/ui/components/form/fields/DateFieldRender.js +7 -7
  332. package/src/ui/components/form/fields/EmailFieldRender.js +1 -1
  333. package/src/ui/components/form/fields/FieldRender.js +4 -4
  334. package/src/ui/components/form/fields/FileFieldRender.js +1 -1
  335. package/src/ui/components/form/fields/PasswordFieldRender.js +2 -2
  336. package/src/ui/components/form/fields/RadioFieldRender.js +1 -1
  337. package/src/ui/components/form/fields/RangeFieldRender.js +1 -1
  338. package/src/ui/components/form/fields/SelectFieldRender.js +2 -2
  339. package/src/ui/components/form/fields/SliderFieldRender.js +6 -6
  340. package/src/ui/components/form/fields/StringFieldRender.js +1 -1
  341. package/src/ui/components/form/fields/TelFieldRender.js +1 -1
  342. package/src/ui/components/form/fields/TextAreaFieldRender.js +1 -1
  343. package/src/ui/components/form/fields/TimeFieldRender.js +3 -3
  344. package/src/ui/components/form/fields/UrlFieldRender.js +1 -1
  345. package/src/ui/components/form/file-upload-mode/FileAvatarModeRender.js +1 -1
  346. package/src/ui/components/form/file-upload-mode/FileDropzoneModeRender.js +2 -2
  347. package/src/ui/components/form/file-upload-mode/FileUploadButtonModeRender.js +2 -2
  348. package/src/ui/components/form/file-upload-mode/FileWallModeRender.js +1 -1
  349. package/src/ui/components/form/helpers.js +8 -8
  350. package/src/ui/components/form/index.js +27 -27
  351. package/src/ui/components/menu/MenuDividerRender.js +1 -1
  352. package/src/ui/components/menu/MenuGroupRender.js +3 -3
  353. package/src/ui/components/menu/MenuItemRender.js +2 -2
  354. package/src/ui/components/menu/MenuLinkRender.js +3 -3
  355. package/src/ui/components/menu/helpers.js +4 -4
  356. package/src/ui/components/modal/ModalRender.js +4 -4
  357. package/src/ui/components/pagination/PaginationRender.js +9 -9
  358. package/src/ui/components/popover/PopoverRender.js +7 -7
  359. package/src/ui/components/progress/ProgressRender.js +12 -12
  360. package/src/ui/components/skeleton/SkeletonRender.js +56 -0
  361. package/src/ui/components/splitter/SplitterGutterRender.js +1 -1
  362. package/src/ui/components/splitter/SplitterPanelRender.js +2 -2
  363. package/src/ui/components/stacks/PositionStackRender.js +1 -1
  364. package/src/ui/components/stacks/StackRender.js +1 -1
  365. package/src/ui/components/stacks/absolute-stack/AbsoluteStackRender.js +1 -1
  366. package/src/ui/components/stacks/fixed-stack/FixedStackRender.js +1 -1
  367. package/src/ui/components/stacks/h-stack/HStackRender.js +1 -1
  368. package/src/ui/components/stacks/index.js +5 -5
  369. package/src/ui/components/stacks/relative-stack/RelativeStackRender.js +1 -1
  370. package/src/ui/components/stacks/v-stack/VStackRender.js +1 -1
  371. package/src/ui/components/stepper/StepperRender.js +2 -2
  372. package/src/ui/components/stepper/StepperStepRender.js +4 -4
  373. package/src/ui/components/switch/SwitchRender.js +4 -4
  374. package/src/ui/components/table/data-table/DataTableRender.js +5 -5
  375. package/src/ui/components/table/data-table/bulk-actions.js +7 -7
  376. package/src/ui/components/table/data-table/pagination.js +6 -6
  377. package/src/ui/components/table/data-table/tables.js +25 -25
  378. package/src/ui/components/table/data-table/toolbar.js +3 -3
  379. package/src/ui/components/table/simple-table/SimpleTableRender.js +8 -8
  380. package/src/ui/components/tabs/TabsRender.js +11 -11
  381. package/src/ui/components/toast/ToastRender.js +3 -3
  382. package/src/ui/components/tooltip/TooltipRender.js +1 -1
  383. package/src/ui/index.js +36 -36
  384. package/types/elements.d.ts +163 -1037
  385. package/types/forms.d.ts +16 -20
  386. package/types/globals.d.ts +543 -0
  387. package/types/images.d.ts +2 -2
  388. package/types/observable-resource.d.ts +3 -0
  389. package/types/property-accumulator.d.ts +4 -4
  390. package/types/store.d.ts +26 -2
  391. package/types/validator.ts +3 -3
  392. package/ui.js +1 -0
  393. package/src/components/form/field/DefaultRender.js +0 -77
  394. package/src/components/form/field/FieldFactory.js +0 -107
  395. package/src/components/skeleton/SkeletonCard.js +0 -0
  396. package/src/components/skeleton/SkeletonList.js +0 -0
  397. package/src/components/skeleton/SkeletonParagraph.js +0 -0
  398. package/src/components/skeleton/SkeletonTable.js +0 -0
@@ -1,7 +1,35 @@
1
- import Field from "../Field";
2
- import {Validation} from "../../validation/Validation";
3
- import BaseComponent from "../../../BaseComponent";
4
-
1
+ import Field from '../../field/Field';
2
+ import {Validation} from '../../validation/Validation';
3
+ import BaseComponent from '../../../BaseComponent';
4
+
5
+ /**
6
+ * Time picker field with format, step, range mode, and time validation.
7
+ * @example
8
+ * const field = new TimeField('meetingTime')
9
+ * .label(Span('Meeting time'))
10
+ * .format('HH:mm')
11
+ * .step(900) // 15 minute steps
12
+ * .between('08:00', '18:00', 'Business hours only')
13
+ * .required();
14
+ *
15
+ * // Time range
16
+ * const range = new TimeField('workingHours')
17
+ * .range(true)
18
+ * .modelStart(startObs)
19
+ * .modelEnd(endObs)
20
+ * .rangeSeparator(' - ');
21
+ *
22
+ * TimeField.use((description, instance) => {
23
+ * // description.format, description.step, description.range,
24
+ * // description.clearable, description.valueStart, description.valueEnd,
25
+ * // description.rangeSeparator...
26
+ * return Input({ type: 'time', step: description.step ?? undefined });
27
+ * });
28
+ *
29
+ * @constructor
30
+ * @param {string} name
31
+ * @param {GlobalAttributes} [props={}]
32
+ */
5
33
  export default function TimeField(name, props = {}) {
6
34
  if(!(this instanceof TimeField)) {
7
35
  return new TimeField(name, props);
@@ -17,12 +45,35 @@ export default function TimeField(name, props = {}) {
17
45
  valueStart: null,
18
46
  valueEnd: null,
19
47
  rangeSeparator: null,
20
- props
48
+ props,
21
49
  });
22
50
  }
23
51
 
24
52
  TimeField.defaultTemplate = null;
25
53
 
54
+
55
+ /**
56
+ * Registers the render template for TimeField.
57
+ * @param {(description: {
58
+ * name: string,
59
+ * type: 'time',
60
+ * label: NdChild|null,
61
+ * format: string,
62
+ * step: number|null,
63
+ * clearable: Observable<boolean>,
64
+ * range: Observable<boolean>,
65
+ * valueStart: Observable<*>|null,
66
+ * valueEnd: Observable<*>|null,
67
+ * rangeSeparator: string|null,
68
+ * value: Observable<*>|null,
69
+ * disabled: boolean|Observable<boolean>,
70
+ * readonly: boolean|Observable<boolean>,
71
+ * hasErrors: Observable<boolean>,
72
+ * errors: Observable<string[]>,
73
+ * showErrors: Observable<boolean>,
74
+ * props: GlobalAttributes
75
+ * }, instance: TimeField) => NdChild} template
76
+ */
26
77
  TimeField.use = function(template) {
27
78
  TimeField.defaultTemplate = template;
28
79
  };
@@ -30,26 +81,47 @@ TimeField.use = function(template) {
30
81
  TimeField.prototype = Object.create(Field.prototype);
31
82
  TimeField.prototype.constructor = TimeField;
32
83
 
84
+ /**
85
+ * @param {string} formatString - e.g. 'HH:mm', 'HH:mm:ss'
86
+ * @returns {this}
87
+ */
33
88
  TimeField.prototype.format = function(formatString) {
34
89
  this.$description.format = formatString;
35
90
  return this;
36
91
  };
37
92
 
93
+ /**
94
+ * @param {number} seconds - Step in seconds (e.g. 900 = 15 min)
95
+ * @returns {this}
96
+ */
38
97
  TimeField.prototype.step = function(seconds) {
39
98
  this.$description.step = seconds;
40
99
  return this;
41
100
  };
42
101
 
102
+ /**
103
+ * @param {boolean} [enabled=true]
104
+ * @returns {this}
105
+ */
43
106
  TimeField.prototype.clearable = function(enabled = true) {
44
107
  this.$description.clearable = BaseComponent.obs(enabled);
45
108
  return this;
46
109
  };
47
110
 
111
+ /**
112
+ * @param {boolean} [enabled=true]
113
+ * @returns {this}
114
+ */
48
115
  TimeField.prototype.range = function(enabled = true) {
49
116
  this.$description.range = BaseComponent.obs(enabled);
50
117
  return this;
51
118
  };
52
119
 
120
+ /**
121
+ * Binds the start time in range mode to an observable.
122
+ * @param {Observable<*>} observable
123
+ * @returns {this}
124
+ */
53
125
  TimeField.prototype.modelStart = function(observable) {
54
126
  if(!this.$description.range) {
55
127
  console.warn('TimeField: modelStart is only available in range mode');
@@ -58,43 +130,86 @@ TimeField.prototype.modelStart = function(observable) {
58
130
  return this;
59
131
  };
60
132
 
133
+ /**
134
+ * Binds the end time in range mode to an observable.
135
+ * @param {Observable<*>} observable
136
+ * @returns {this}
137
+ */
61
138
  TimeField.prototype.modelEnd = function(observable) {
62
139
  this.$description.valueEnd = observable;
63
140
  return this;
64
141
  };
65
142
 
143
+ /**
144
+ * @param {string} sep
145
+ * @returns {this}
146
+ */
66
147
  TimeField.prototype.rangeSeparator = function(sep) {
67
148
  this.$description.rangeSeparator = sep;
68
149
  return this;
69
150
  };
70
151
 
152
+ /**
153
+ * @param {(value: *) => void} handler
154
+ * @returns {this}
155
+ */
71
156
  TimeField.prototype.onChange = function(handler) {
72
157
  this.on('change', handler);
73
158
  return this;
74
159
  };
75
160
 
161
+ /**
162
+ * @param {() => void} handler
163
+ * @returns {this}
164
+ */
76
165
  TimeField.prototype.onClear = function(handler) {
77
166
  this.on('clear', handler);
78
167
  return this;
79
168
  };
80
169
 
81
170
  // Validation
171
+ /**
172
+ * @param {string} time - e.g. '08:00'
173
+ * @param {string} [message]
174
+ * @returns {this}
175
+ */
82
176
  TimeField.prototype.min = function(time, message) {
83
177
  return this.addRule(Validation.afterTime, [time], message);
84
178
  };
85
179
 
180
+ /**
181
+ * @param {string} time
182
+ * @param {string} [message]
183
+ * @returns {this}
184
+ */
86
185
  TimeField.prototype.max = function(time, message) {
87
186
  return this.addRule(Validation.beforeTime, [time], message);
88
187
  };
89
188
 
189
+ /**
190
+ * @param {string} startTime
191
+ * @param {string} endTime
192
+ * @param {string} [message]
193
+ * @returns {this}
194
+ */
90
195
  TimeField.prototype.between = function(startTime, endTime, message) {
91
196
  return this.addRule(Validation.betweenTimes, [startTime, endTime], message);
92
197
  };
93
198
 
199
+ /**
200
+ * @param {string} time
201
+ * @param {string} [message]
202
+ * @returns {this}
203
+ */
94
204
  TimeField.prototype.after = function(time, message) {
95
205
  return this.addRule(Validation.afterTime, [time], message);
96
206
  };
97
207
 
208
+ /**
209
+ * @param {string} time
210
+ * @param {string} [message]
211
+ * @returns {this}
212
+ */
98
213
  TimeField.prototype.before = function(time, message) {
99
214
  return this.addRule(Validation.beforeTime, [time], message);
100
215
  };
@@ -1,6 +1,27 @@
1
- import StringField from "./StringField";
2
- import {Validation} from "../../validation/Validation";
1
+ import StringField from '../../field/types/StringField';
2
+ import {Validation} from '../../validation/Validation';
3
3
 
4
+ /**
5
+ * URL input field. Automatically validates URL format on creation.
6
+ * Supports protocol and domain allowlist rules.
7
+ * @example
8
+ * const field = new UrlField('website')
9
+ * .label(Span('Website'))
10
+ * .protocol(['https'], 'HTTPS only')
11
+ * .domain(['example.com', 'example.org'])
12
+ * .required();
13
+ *
14
+ * UrlField.use((description, instance) => {
15
+ * // description.value, description.errors, description.label...
16
+ * return Input({ type: 'url', placeholder: 'https://' });
17
+ * });
18
+ */
19
+
20
+ /**
21
+ * @constructor
22
+ * @param {string} name
23
+ * @param {GlobalAttributes} [props]
24
+ */
4
25
  export default function UrlField(name, props) {
5
26
  if(!(this instanceof UrlField)) {
6
27
  return new UrlField(name, props);
@@ -12,6 +33,23 @@ export default function UrlField(name, props) {
12
33
 
13
34
  UrlField.defaultTemplate = null;
14
35
 
36
+
37
+ /**
38
+ * Registers the render template for UrlField.
39
+ * @param {(description: {
40
+ * name: string,
41
+ * type: 'url',
42
+ * label: NdChild|null,
43
+ * placeholder: NdChild|null,
44
+ * value: Observable<string>|null,
45
+ * disabled: boolean|Observable<boolean>,
46
+ * readonly: boolean|Observable<boolean>,
47
+ * hasErrors: Observable<boolean>,
48
+ * errors: Observable<string[]>,
49
+ * showErrors: Observable<boolean>,
50
+ * props: GlobalAttributes
51
+ * }, instance: UrlField) => NdChild} template
52
+ */
15
53
  UrlField.use = function(template) {
16
54
  UrlField.defaultTemplate = template;
17
55
  };
@@ -19,6 +57,12 @@ UrlField.use = function(template) {
19
57
  UrlField.prototype = Object.create(StringField.prototype);
20
58
  UrlField.prototype.constructor = UrlField;
21
59
 
60
+
61
+ /**
62
+ * Customises the URL validation message.
63
+ * @param {string} message
64
+ * @returns {this}
65
+ */
22
66
  UrlField.prototype.url = function(message) {
23
67
  const existingRule = this.$description.rules.find(r => r.fn === Validation.url);
24
68
  if (existingRule && message) {
@@ -27,6 +71,12 @@ UrlField.prototype.url = function(message) {
27
71
  return this;
28
72
  };
29
73
 
74
+
75
+ /**
76
+ * @param {string[]} allowedProtocols - e.g. ['https', 'http']
77
+ * @param {string} message
78
+ * @returns {this}
79
+ */
30
80
  UrlField.prototype.protocol = function(allowedProtocols, message) {
31
81
  this.$description.rules.push({
32
82
  validate: (value) => {
@@ -38,11 +88,16 @@ UrlField.prototype.protocol = function(allowedProtocols, message) {
38
88
  return false;
39
89
  }
40
90
  },
41
- message: message || `Allowed protocols: ${allowedProtocols.join(', ')}`
91
+ message: message || `Allowed protocols: ${allowedProtocols.join(', ')}`,
42
92
  });
43
93
  return this;
44
94
  };
45
95
 
96
+ /**
97
+ * @param {string[]} allowedDomains
98
+ * @param {string} message
99
+ * @returns {this}
100
+ */
46
101
  UrlField.prototype.domain = function(allowedDomains, message) {
47
102
  this.$description.rules.push({
48
103
  validate: (value) => {
@@ -54,7 +109,7 @@ UrlField.prototype.domain = function(allowedDomains, message) {
54
109
  return false;
55
110
  }
56
111
  },
57
- message: message || `Allowed domains: ${allowedDomains.join(', ')}`
112
+ message: message || `Allowed domains: ${allowedDomains.join(', ')}`,
58
113
  });
59
114
  return this;
60
115
  };
@@ -1,6 +1,27 @@
1
- import BaseComponent from "../../../../BaseComponent";
2
- import HasEventEmitter from "../../../../../core/utils/HasEventEmitter";
3
-
1
+ import BaseComponent from '../../../../BaseComponent';
2
+ import HasEventEmitter from '../../../../../core/utils/HasEventEmitter';
3
+
4
+ /**
5
+ * Avatar-style single file upload mode for FileField.
6
+ * Displays a circular or square avatar with hover/badge/button interaction variants.
7
+ * Ideal for profile picture uploads.
8
+ * @example
9
+ * new FileField('avatar')
10
+ * .mode('avatar');
11
+ *
12
+ * FileAvatarMode.use((description, instance) => {
13
+ * // description.variant — 'hover-overlay' | 'corner-badge' | 'action-buttons'
14
+ * // description.shape — 'circle' | 'square'
15
+ * // description.size, description.placeholderIcon, description.overlayIcon,
16
+ * // description.editImageIcon, description.changeLabel, description.removeLabel,
17
+ * // description.renderAvatar, description.renderOverlay, description.renderActions
18
+ * return Div({ class: \`avatar-upload avatar-upload--\${description.variant}\`,
19
+ * style: { width: description.size, height: description.size } });
20
+ * });
21
+ *
22
+ * @constructor
23
+ * @param {GlobalAttributes} [props={}]
24
+ */
4
25
  export default function FileAvatarMode(props = {}) {
5
26
  if(!(this instanceof FileAvatarMode)) {
6
27
  return new FileAvatarMode(props);
@@ -20,7 +41,7 @@ export default function FileAvatarMode(props = {}) {
20
41
  renderAvatar: null,
21
42
  renderOverlay: null,
22
43
  renderActions: null,
23
- props
44
+ props,
24
45
  };
25
46
  }
26
47
 
@@ -29,75 +50,133 @@ BaseComponent.use(FileAvatarMode, HasEventEmitter);
29
50
 
30
51
  FileAvatarMode.defaultTemplate = null;
31
52
 
53
+ /**
54
+ * Registers the render template for FileAvatarMode.
55
+ * @param {(description: {
56
+ * variant: 'hover-overlay'|'corner-badge'|'action-buttons',
57
+ * shape: 'circle'|'square',
58
+ * size: number|string,
59
+ * placeholderIcon: NdChild|null,
60
+ * overlayIcon: NdChild|null,
61
+ * editImageIcon: NdChild|null,
62
+ * changeLabel: NdChild,
63
+ * removeLabel: NdChild,
64
+ * renderAvatar: ((desc: *, instance: FileAvatarMode) => NdChild)|null,
65
+ * renderOverlay: ((desc: *, instance: FileAvatarMode) => NdChild)|null,
66
+ * renderActions: ((desc: *, instance: FileAvatarMode) => NdChild)|null,
67
+ * props: GlobalAttributes
68
+ * }, instance: FileAvatarMode) => NdChild} template
69
+ */
32
70
  FileAvatarMode.use = function(template) {
33
71
  FileAvatarMode.defaultTemplate = template;
34
72
  };
35
73
 
74
+ /** @returns {this} */
36
75
  FileAvatarMode.prototype.hoverOverlay = function() {
37
76
  this.$description.variant = 'hover-overlay';
38
77
  return this;
39
78
  };
40
79
 
80
+ /** @returns {this} */
41
81
  FileAvatarMode.prototype.cornerBadge = function() {
42
82
  this.$description.variant = 'corner-badge';
43
83
  return this;
44
84
  };
45
85
 
86
+ /** @returns {this} */
46
87
  FileAvatarMode.prototype.actionButtons = function() {
47
88
  this.$description.variant = 'action-buttons';
48
89
  return this;
49
90
  };
50
91
 
92
+ /** @returns {this} */
51
93
  FileAvatarMode.prototype.circle = function() {
52
94
  this.$description.shape = 'circle';
53
95
  return this;
54
96
  };
55
97
 
98
+ /** @returns {this} */
56
99
  FileAvatarMode.prototype.square = function() {
57
100
  this.$description.shape = 'square';
58
101
  return this;
59
102
  };
60
103
 
104
+ /**
105
+ * @param {number|string} size - Size in pixels or CSS value
106
+ * @returns {this}
107
+ */
61
108
  FileAvatarMode.prototype.size = function(size) {
62
109
  this.$description.size = size;
63
110
  return this;
64
111
  };
65
112
 
113
+ /**
114
+ * @param {NdChild} icon
115
+ * @returns {this}
116
+ */
66
117
  FileAvatarMode.prototype.placeholderIcon = function(icon) {
67
118
  this.$description.placeholderIcon = icon;
68
119
  return this;
69
120
  };
70
121
 
122
+ /**
123
+ * @param {NdChild} icon
124
+ * @returns {this}
125
+ */
71
126
  FileAvatarMode.prototype.overlayIcon = function(icon) {
72
127
  this.$description.overlayIcon = icon;
73
128
  return this;
74
129
  };
75
130
 
131
+ /**
132
+ * @param {NdChild} icon
133
+ * @returns {this}
134
+ */
76
135
  FileAvatarMode.prototype.editImageIcon = function(icon) {
77
136
  this.$description.editImageIcon = icon;
78
137
  return this;
79
138
  };
80
139
 
140
+ /**
141
+ * @param {NdChild} label
142
+ * @returns {this}
143
+ */
81
144
  FileAvatarMode.prototype.changeLabel = function(label) {
82
145
  this.$description.changeLabel = label;
83
146
  return this;
84
147
  };
85
148
 
149
+ /**
150
+ * @param {NdChild} label
151
+ * @returns {this}
152
+ */
86
153
  FileAvatarMode.prototype.removeLabel = function(label) {
87
154
  this.$description.removeLabel = label;
88
155
  return this;
89
156
  };
90
157
 
158
+ /**
159
+ * @param {(desc: *, instance: FileAvatarMode) => NdChild} fn
160
+ * @returns {this}
161
+ */
91
162
  FileAvatarMode.prototype.renderAvatar = function(fn) {
92
163
  this.$description.renderAvatar = fn;
93
164
  return this;
94
165
  };
95
166
 
167
+ /**
168
+ * @param {(desc: *, instance: FileAvatarMode) => NdChild} fn
169
+ * @returns {this}
170
+ */
96
171
  FileAvatarMode.prototype.renderOverlay = function(fn) {
97
172
  this.$description.renderOverlay = fn;
98
173
  return this;
99
174
  };
100
175
 
176
+ /**
177
+ * @param {(desc: *, instance: FileAvatarMode) => NdChild} fn
178
+ * @returns {this}
179
+ */
101
180
  FileAvatarMode.prototype.renderActions = function(fn) {
102
181
  this.$description.renderActions = fn;
103
182
  return this;
@@ -1,6 +1,28 @@
1
- import BaseComponent from "../../../../BaseComponent";
2
- import HasEventEmitter from "../../../../../core/utils/HasEventEmitter";
1
+ import BaseComponent from '../../../../BaseComponent';
2
+ import HasEventEmitter from '../../../../../core/utils/HasEventEmitter';
3
3
 
4
+ /**
5
+ * Drag-and-drop zone mode for FileField.
6
+ * Renders a clickable dropzone with configurable icon, text, hint, and height.
7
+ * @example
8
+ * new FileField('documents')
9
+ * .mode('dropzone');
10
+ *
11
+ * FileDropzoneMode.use((description, instance) => {
12
+ * // description.icon, description.text, description.hint,
13
+ * // description.height, description.removeIcon
14
+ * return Div({ class: 'dropzone', style: { height: description.height } },
15
+ * description.icon,
16
+ * Span(description.text),
17
+ * ShowIf(description.hint, () => Span({ class: 'hint' }, description.hint)),
18
+ * );
19
+ * });
20
+ */
21
+
22
+ /**
23
+ * @constructor
24
+ * @param {GlobalAttributes} [props={}]
25
+ */
4
26
  export default function FileDropzoneMode(props = {}) {
5
27
  if(!(this instanceof FileDropzoneMode)) {
6
28
  return new FileDropzoneMode(props);
@@ -15,7 +37,7 @@ export default function FileDropzoneMode(props = {}) {
15
37
  height: null,
16
38
  renderZone: null,
17
39
  removeIcon: null,
18
- props
40
+ props,
19
41
  };
20
42
  }
21
43
 
@@ -24,35 +46,71 @@ BaseComponent.use(FileDropzoneMode, HasEventEmitter);
24
46
 
25
47
  FileDropzoneMode.defaultTemplate = null;
26
48
 
49
+ /**
50
+ * Registers the render template for FileDropzoneMode.
51
+ * @param {(description: {
52
+ * icon: NdChild|null,
53
+ * text: NdChild,
54
+ * hint: NdChild|null,
55
+ * height: string|number|null,
56
+ * renderZone: ((desc: *, instance: FileDropzoneMode) => NdChild)|null,
57
+ * removeIcon: NdChild|null,
58
+ * props: GlobalAttributes
59
+ * }, instance: FileDropzoneMode) => NdChild} template
60
+ */
27
61
  FileDropzoneMode.use = function(template) {
28
62
  FileDropzoneMode.defaultTemplate = template;
29
63
  };
30
64
 
65
+ /**
66
+ * @param {NdChild} icon
67
+ * @returns {this}
68
+ */
31
69
  FileDropzoneMode.prototype.icon = function(icon) {
32
70
  this.$description.icon = icon;
33
71
  return this;
34
72
  };
35
73
 
74
+ /**
75
+ * @param {NdChild} text
76
+ * @returns {this}
77
+ */
36
78
  FileDropzoneMode.prototype.text = function(text) {
37
79
  this.$description.text = text;
38
80
  return this;
39
81
  };
40
82
 
83
+ /**
84
+ * @param {NdChild} hint
85
+ * @returns {this}
86
+ */
41
87
  FileDropzoneMode.prototype.hint = function(hint) {
42
88
  this.$description.hint = hint;
43
89
  return this;
44
90
  };
45
91
 
92
+ /**
93
+ * @param {string|number} value
94
+ * @returns {this}
95
+ */
46
96
  FileDropzoneMode.prototype.height = function(value) {
47
97
  this.$description.height = value;
48
98
  return this;
49
99
  };
50
100
 
101
+ /**
102
+ * @param {(desc: *, instance: FileDropzoneMode) => NdChild} fn
103
+ * @returns {this}
104
+ */
51
105
  FileDropzoneMode.prototype.renderZone = function(fn) {
52
106
  this.$description.renderZone = fn;
53
107
  return this;
54
108
  };
55
109
 
110
+ /**
111
+ * @param {NdChild} icon
112
+ * @returns {this}
113
+ */
56
114
  FileDropzoneMode.prototype.removeIcon = function(icon) {
57
115
  this.$description.removeIcon = icon;
58
116
  return this;