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,27 @@
1
1
  // ColorField.js
2
- import Field from "../Field";
3
- import {Validation} from "../../validation/Validation";
2
+ import Field from '../../field/Field';
3
+ import {Validation} from '../../validation/Validation';
4
4
 
5
+ /**
6
+ * Color picker field supporting hex, RGB, and HSL formats.
7
+ * Optionally displays a preset color palette.
8
+ * @example
9
+ * const field = new ColorField('brandColor')
10
+ * .label(Span('Brand color'))
11
+ * .format('hex')
12
+ * .presets(['#FF0000', '#00FF00', '#0000FF'])
13
+ * .hex('Must be a valid hex color')
14
+ * .required();
15
+ *
16
+ * ColorField.use((description, instance) => {
17
+ * // description.format, description.presets
18
+ * return Input({ type: 'color' });
19
+ * });
20
+ *
21
+ * @constructor
22
+ * @param {string} name
23
+ * @param {GlobalAttributes} [props]
24
+ */
5
25
  export default function ColorField(name, props) {
6
26
  if(!(this instanceof ColorField)) {
7
27
  return new ColorField(name, props);
@@ -11,12 +31,29 @@ export default function ColorField(name, props) {
11
31
 
12
32
  Object.assign(this.$description, {
13
33
  format: 'hex',
14
- presets: null
34
+ presets: null,
15
35
  });
16
36
  }
17
37
 
18
38
  ColorField.defaultTemplate = null;
19
39
 
40
+ /**
41
+ * Registers the render template for ColorField.
42
+ * @param {(description: {
43
+ * name: string,
44
+ * type: 'color',
45
+ * label: NdChild|null,
46
+ * value: Observable<string>|null,
47
+ * format: 'hex'|'rgb'|'hsl',
48
+ * presets: string[]|null,
49
+ * disabled: boolean|Observable<boolean>,
50
+ * readonly: boolean|Observable<boolean>,
51
+ * hasErrors: Observable<boolean>,
52
+ * errors: Observable<string[]>,
53
+ * showErrors: Observable<boolean>,
54
+ * props: GlobalAttributes
55
+ * }, instance: ColorField) => NdChild} template
56
+ */
20
57
  ColorField.use = function(template) {
21
58
  ColorField.defaultTemplate = template;
22
59
  };
@@ -24,6 +61,10 @@ ColorField.use = function(template) {
24
61
  ColorField.prototype = Object.create(Field.prototype);
25
62
  ColorField.prototype.constructor = ColorField;
26
63
 
64
+ /**
65
+ * @param {'hex'|'rgb'|'hsl'} formatType
66
+ * @returns {this}
67
+ */
27
68
  ColorField.prototype.format = function(formatType) {
28
69
  const allowedFormats = ['hex', 'rgb', 'hsl'];
29
70
 
@@ -35,15 +76,27 @@ ColorField.prototype.format = function(formatType) {
35
76
  return this;
36
77
  };
37
78
 
79
+ /**
80
+ * @param {string[]} colors
81
+ * @returns {this}
82
+ */
38
83
  ColorField.prototype.presets = function(colors) {
39
84
  this.$description.presets = colors;
40
85
  return this;
41
86
  };
42
87
 
88
+ /**
89
+ * @param {string} [message]
90
+ * @returns {this}
91
+ */
43
92
  ColorField.prototype.hex = function(message) {
44
93
  return this.addRule(Validation.hexColor, [], message);
45
94
  };
46
95
 
96
+ /**
97
+ * @param {string} [message]
98
+ * @returns {this}
99
+ */
47
100
  ColorField.prototype.rgb = function(message) {
48
101
  return this.addRule(Validation.rgbColor, [], message);
49
102
  };
@@ -1,7 +1,36 @@
1
- import Field from "../Field";
2
- import {Validation} from "../../validation/Validation";
3
- import BaseComponent from "../../../BaseComponent";
1
+ import Field from '../../field/Field';
2
+ import {Validation} from '../../validation/Validation';
3
+ import BaseComponent from '../../../BaseComponent';
4
4
 
5
+ /**
6
+ * Date picker field with format, min/max, disabled dates, range mode, timezone,
7
+ * and locale support. Use modelStart/modelEnd for range mode.
8
+ * @example
9
+ * const field = new DateField('birthdate')
10
+ * .label(Span('Date of birth'))
11
+ * .format('DD/MM/YYYY')
12
+ * .untilToday()
13
+ * .required();
14
+ *
15
+ * // Date range
16
+ * const range = new DateField('period')
17
+ * .range(true)
18
+ * .modelStart(startObs)
19
+ * .modelEnd(endObs)
20
+ * .rangeSeparator(' to ');
21
+ *
22
+ * DateField.use((description, instance) => {
23
+ * // description.format, description.minDate, description.maxDate,
24
+ * // description.disabledDates, description.range, description.withTime,
25
+ * // description.firstDayOfWeek, description.locale, description.timezone,
26
+ * // description.valueStart, description.valueEnd, description.rangeSeparator...
27
+ * return Input({ type: 'text', placeholder: description.format });
28
+ * });
29
+ *
30
+ * @constructor
31
+ * @param {string} name
32
+ * @param {GlobalAttributes} [props={}]
33
+ */
5
34
  export default function DateField(name, props = {}) {
6
35
  if(!(this instanceof DateField)) {
7
36
  return new DateField(name, props);
@@ -24,12 +53,41 @@ export default function DateField(name, props = {}) {
24
53
  valueStart: null,
25
54
  valueEnd: null,
26
55
  rangeSeparator: null,
27
- props
56
+ props,
28
57
  });
29
58
  }
30
59
 
31
60
  DateField.defaultTemplate = null;
32
61
 
62
+ /**
63
+ * Registers the render template for DateField.
64
+ * @param {(description: {
65
+ * name: string,
66
+ * type: 'date',
67
+ * label: NdChild|null,
68
+ * format: string,
69
+ * minDate: Observable<string|Date>|null,
70
+ * maxDate: Observable<string|Date>|null,
71
+ * disabledDates: Observable<(string|Date)[]>|null,
72
+ * clearable: boolean,
73
+ * withTime: Observable<boolean>,
74
+ * range: Observable<boolean>,
75
+ * firstDayOfWeek: 'monday'|'sunday',
76
+ * locale: string|null,
77
+ * timeStep: number|null,
78
+ * timezone: string|null,
79
+ * valueStart: Observable<*>|null,
80
+ * valueEnd: Observable<*>|null,
81
+ * rangeSeparator: string|null,
82
+ * value: Observable<*>|null,
83
+ * disabled: boolean|Observable<boolean>,
84
+ * readonly: boolean|Observable<boolean>,
85
+ * hasErrors: Observable<boolean>,
86
+ * errors: Observable<string[]>,
87
+ * showErrors: Observable<boolean>,
88
+ * props: GlobalAttributes
89
+ * }, instance: DateField) => NdChild} template
90
+ */
33
91
  DateField.use = function(template) {
34
92
  DateField.defaultTemplate = template;
35
93
  };
@@ -37,81 +95,131 @@ DateField.use = function(template) {
37
95
  DateField.prototype = Object.create(Field.prototype);
38
96
  DateField.prototype.constructor = DateField;
39
97
 
98
+ /**
99
+ * @param {string} rangeSeparator
100
+ * @returns {this}
101
+ */
40
102
  DateField.prototype.rangeSeparator = function(rangeSeparator) {
41
103
  this.$description.rangeSeparator = rangeSeparator;
42
104
  return this;
43
105
  };
44
106
 
107
+ /**
108
+ * @param {string} formatString - e.g. 'YYYY-MM-DD', 'DD/MM/YYYY'
109
+ * @returns {this}
110
+ */
45
111
  DateField.prototype.format = function(formatString) {
46
112
  this.$description.format = formatString;
47
113
  return this;
48
114
  };
49
115
 
116
+ /**
117
+ * @param {Date|string} date
118
+ * @returns {this}
119
+ */
50
120
  DateField.prototype.minDate = function(date) {
51
121
  this.$description.minDate = BaseComponent.obs(date);
52
122
  return this;
53
123
  };
54
124
 
125
+ /**
126
+ * @param {Date|string} date
127
+ * @returns {this}
128
+ */
55
129
  DateField.prototype.maxDate = function(date) {
56
130
  this.$description.maxDate = BaseComponent.obs(date);
57
131
  return this;
58
132
  };
59
133
 
134
+ /**
135
+ * @param {(Date|string)[]} dates
136
+ * @returns {this}
137
+ */
60
138
  DateField.prototype.disabledDates = function(dates) {
61
139
  this.$description.disabledDates = BaseComponent.obs(dates);
62
140
  return this;
63
141
  };
64
142
 
143
+ /**
144
+ * @param {boolean} [enabled=true]
145
+ * @returns {this}
146
+ */
65
147
  DateField.prototype.withTime = function(enabled = true) {
66
148
  this.$description.withTime = BaseComponent.obs(enabled);
67
149
  return this;
68
150
  };
69
151
 
152
+ /**
153
+ * @param {boolean} [enabled=true]
154
+ * @returns {this}
155
+ */
70
156
  DateField.prototype.range = function(enabled = true) {
71
157
  this.$description.range = BaseComponent.obs(enabled);
72
158
  return this;
73
159
  };
74
160
 
161
+ /** @returns {this} */
75
162
  DateField.prototype.mondayAsFirstDay = function() {
76
163
  this.$description.firstDayOfWeek = 'monday';
77
164
  return this;
78
165
  };
79
166
 
167
+ /** @returns {this} */
80
168
  DateField.prototype.sundayAsFirstDay = function() {
81
169
  this.$description.firstDayOfWeek = 'sunday';
82
170
  return this;
83
171
  };
84
172
 
173
+ /**
174
+ * @param {string} locale - BCP 47 locale tag (e.g. 'fr-FR', 'en-US')
175
+ * @returns {this}
176
+ */
85
177
  DateField.prototype.locale = function(locale) {
86
178
  this.$description.locale = locale;
87
179
  return this;
88
180
  };
89
181
 
182
+ /**
183
+ * @param {number} secondes - Step in seconds for time picker
184
+ * @returns {this}
185
+ */
90
186
  DateField.prototype.timeStep = function(secondes) {
91
187
  this.$description.timeStep = secondes;
92
188
  return this;
93
189
  };
94
190
 
191
+ /** Sets minDate to today. @returns {this} */
95
192
  DateField.prototype.fromToday = function() {
96
193
  this.$description.minDate = BaseComponent.obs(new Date().toISOString().split('T')[0]);
97
194
  return this;
98
195
  };
99
196
 
197
+ /** Sets maxDate to today. @returns {this} */
100
198
  DateField.prototype.untilToday = function() {
101
199
  this.$description.maxDate = BaseComponent.obs(new Date().toISOString().split('T')[0]);
102
200
  return this;
103
201
  };
104
202
 
203
+ /**
204
+ * @param {string} tz - IANA timezone (e.g. 'Europe/Paris')
205
+ * @returns {this}
206
+ */
105
207
  DateField.prototype.timezone = function(tz) {
106
208
  this.$description.timezone = tz;
107
209
  return this;
108
210
  };
109
211
 
212
+ /** Uses the browser's local timezone. @returns {this} */
110
213
  DateField.prototype.useLocalTimezone = function() {
111
214
  this.$description.timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
112
215
  return this;
113
216
  };
114
217
 
218
+ /**
219
+ * Binds the start date in range mode to an observable.
220
+ * @param {Observable<*>} observable
221
+ * @returns {this}
222
+ */
115
223
  DateField.prototype.modelStart = function(observable) {
116
224
  if(!this.$description.range) {
117
225
  console.warn('DateField: modelStart is only available in range mode');
@@ -120,6 +228,11 @@ DateField.prototype.modelStart = function(observable) {
120
228
  return this;
121
229
  };
122
230
 
231
+ /**
232
+ * Binds the end date in range mode to an observable.
233
+ * @param {Observable<*>} observable
234
+ * @returns {this}
235
+ */
123
236
  DateField.prototype.modelEnd = function(observable) {
124
237
  if(!this.$description.range) {
125
238
  console.warn('DateField: modelEnd is only available in range mode');
@@ -128,37 +241,75 @@ DateField.prototype.modelEnd = function(observable) {
128
241
  return this;
129
242
  };
130
243
 
244
+ /**
245
+ * @param {(date: *) => void} handler
246
+ * @returns {this}
247
+ */
131
248
  DateField.prototype.onChange = function(handler) {
132
249
  this.on('change', handler);
133
250
  return this;
134
251
  };
135
252
 
253
+ /**
254
+ * @param {() => void} handler
255
+ * @returns {this}
256
+ */
136
257
  DateField.prototype.onClear = function(handler) {
137
258
  this.on('clear', handler);
138
259
  return this;
139
260
  };
140
261
 
141
262
  // Validation
263
+ /**
264
+ * @param {Date|string} date
265
+ * @param {string} [message]
266
+ * @returns {this}
267
+ */
142
268
  DateField.prototype.min = function(date, message) {
143
269
  return this.addRule(Validation.afterDate, [date], message);
144
270
  };
145
271
 
272
+ /**
273
+ * @param {Date|string} date
274
+ * @param {string} [message]
275
+ * @returns {this}
276
+ */
146
277
  DateField.prototype.max = function(date, message) {
147
278
  return this.addRule(Validation.beforeDate, [date], message);
148
279
  };
149
280
 
281
+ /**
282
+ * @param {Date|string} startDate
283
+ * @param {Date|string} endDate
284
+ * @param {string} [message]
285
+ * @returns {this}
286
+ */
150
287
  DateField.prototype.between = function(startDate, endDate, message) {
151
288
  return this.addRule(Validation.betweenDates, [startDate, endDate], message);
152
289
  };
153
290
 
291
+ /**
292
+ * @param {Date|string} date
293
+ * @param {string} [message]
294
+ * @returns {this}
295
+ */
154
296
  DateField.prototype.before = function(date, message) {
155
297
  return this.addRule(Validation.beforeDate, [date], message);
156
298
  };
157
299
 
300
+ /**
301
+ * @param {string} [message]
302
+ * @returns {this}
303
+ */
158
304
  DateField.prototype.weekday = function(message) {
159
305
  return this.addRule(Validation.weekday, [], message);
160
306
  };
161
307
 
308
+ /**
309
+ * @param {Date|string} date
310
+ * @param {string} [message]
311
+ * @returns {this}
312
+ */
162
313
  DateField.prototype.after = function(date, message) {
163
314
  return this.addRule(Validation.afterDate, [date], message);
164
315
  };
@@ -1,6 +1,25 @@
1
- import Field from "../Field";
2
- import {Validation} from "../../validation/Validation";
1
+ import Field from '../../field/Field';
2
+ import {Validation} from '../../validation/Validation';
3
3
 
4
+ /**
5
+ * Email input field. Automatically applies email format validation on creation.
6
+ * Supports domain allowlist/blocklist rules.
7
+ * @example
8
+ * const field = new EmailField('email')
9
+ * .label(Span('Email'))
10
+ * .allowedDomain(['company.com'], 'Only company emails allowed')
11
+ * .required();
12
+ *
13
+ * EmailField.use((description, instance) => {
14
+ * // description.name, description.value, description.errors,
15
+ * // description.label, description.placeholder...
16
+ * return Input({ type: 'email', placeholder: description.placeholder });
17
+ * });
18
+ *
19
+ * @constructor
20
+ * @param {string} name
21
+ * @param {GlobalAttributes} [defaultConfig]
22
+ */
4
23
  export default function EmailField(name, defaultConfig) {
5
24
  if(!(this instanceof EmailField)) {
6
25
  return new EmailField(name, defaultConfig);
@@ -14,6 +33,22 @@ export default function EmailField(name, defaultConfig) {
14
33
 
15
34
  EmailField.defaultTemplate = null;
16
35
 
36
+ /**
37
+ * Registers the render template for EmailField.
38
+ * @param {(description: {
39
+ * name: string,
40
+ * type: 'email',
41
+ * label: NdChild|null,
42
+ * placeholder: NdChild|null,
43
+ * value: Observable<string>|null,
44
+ * disabled: boolean|Observable<boolean>,
45
+ * readonly: boolean|Observable<boolean>,
46
+ * hasErrors: Observable<boolean>,
47
+ * errors: Observable<string[]>,
48
+ * showErrors: Observable<boolean>,
49
+ * props: GlobalAttributes
50
+ * }, instance: EmailField) => NdChild} template
51
+ */
17
52
  EmailField.use = function(template) {
18
53
  EmailField.defaultTemplate = template;
19
54
  };
@@ -21,6 +56,11 @@ EmailField.use = function(template) {
21
56
  EmailField.prototype = Object.create(Field.prototype);
22
57
  EmailField.prototype.constructor = EmailField;
23
58
 
59
+ /**
60
+ * Customises the email format validation message.
61
+ * @param {string} [message]
62
+ * @returns {this}
63
+ */
24
64
  EmailField.prototype.email = function(message) {
25
65
  const existingRule = this.$description.rules.find(r => r.fn === Validation.email);
26
66
  if (existingRule && message) {
@@ -29,6 +69,11 @@ EmailField.prototype.email = function(message) {
29
69
  return this;
30
70
  };
31
71
 
72
+ /**
73
+ * @param {string[]} allowedDomains
74
+ * @param {string} [message]
75
+ * @returns {this}
76
+ */
32
77
  EmailField.prototype.allowedDomain = function(allowedDomains, message) {
33
78
  this.$description.rules.push({
34
79
  validate: (value) => {
@@ -36,11 +81,16 @@ EmailField.prototype.allowedDomain = function(allowedDomains, message) {
36
81
  const domain = value.split('@')[1];
37
82
  return allowedDomains.includes(domain);
38
83
  },
39
- message: message || `Allowed domains: ${allowedDomains.join(', ')}`
84
+ message: message || `Allowed domains: ${allowedDomains.join(', ')}`,
40
85
  });
41
86
  return this;
42
87
  };
43
88
 
89
+ /**
90
+ * @param {string[]} blockedDomains
91
+ * @param {string} [message]
92
+ * @returns {this}
93
+ */
44
94
  EmailField.prototype.notAllowedDomain = function(blockedDomains, message) {
45
95
  this.$description.rules.push({
46
96
  validate: (value) => {
@@ -48,7 +98,7 @@ EmailField.prototype.notAllowedDomain = function(blockedDomains, message) {
48
98
  const domain = value.split('@')[1];
49
99
  return !blockedDomains.includes(domain);
50
100
  },
51
- message: message || `Domain not allowed`
101
+ message: message || 'Domain not allowed',
52
102
  });
53
103
  return this;
54
104
  };