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,13 +1,34 @@
1
- import BaseComponent from "../BaseComponent";
2
- import HasEventEmitter from "../../core/utils/HasEventEmitter";
3
- import DropdownGroup from "./DropdownGroup";
4
- import DropdownDivider from "./DropdownDivider";
5
- import DebugManager from "../../core/utils/debug-manager";
6
- import HasFullPosition from "../$traits/has-position/HasFullPosition";
7
- import { $ } from "../../core/data/Observable";
8
- import {normalizeDropdownItem} from "./helpers";
9
- import {NDElement} from "../../core/wrappers/NDElement";
10
-
1
+ import BaseComponent from '../BaseComponent';
2
+ import HasEventEmitter from '../../core/utils/HasEventEmitter';
3
+ import DropdownGroup from './DropdownGroup';
4
+ import DropdownDivider from './DropdownDivider';
5
+ import DebugManager from '../../core/utils/debug-manager';
6
+ import HasFullPosition from '../$traits/has-position/HasFullPosition';
7
+ import { $ } from '../../core/data/Observable';
8
+ import {normalizeDropdownItem} from './helpers';
9
+ import {NDElement} from '../../core/wrappers/NDElement';
10
+
11
+ /**
12
+ * Floating dropdown list anchored to a trigger element. Supports searchable, multiple selection, reactive data binding, grouping, and item rendering.
13
+ *
14
+ *
15
+ * @example
16
+ * const dropdown = new Dropdown()
17
+ * .trigger(triggerEl)
18
+ * .from(items, (item) => new DropdownItem().value(item.id).content(Span(item.name)))
19
+ * .searchable(true)
20
+ * .closeOnSelect(true)
21
+ * .onOpen(() => console.log('opened'))
22
+ * .onChange((value, item) => console.log(value));
23
+ *
24
+ * Dropdown.use((description, instance) => {
25
+ * // description.items, description.isOpen, description.searchable...
26
+ * return Div({ class: 'dropdown' });
27
+ * });
28
+ *
29
+ * @constructor
30
+ * @param {GlobalAttributes} [props]
31
+ */
11
32
  export default function Dropdown(props = {}) {
12
33
  if (!(this instanceof Dropdown)) {
13
34
  return new Dropdown(props);
@@ -52,6 +73,31 @@ BaseComponent.use(Dropdown, HasEventEmitter, HasFullPosition);
52
73
 
53
74
  Dropdown.defaultTemplate = null;
54
75
 
76
+ /**
77
+ * Registers the render template for Dropdown.
78
+ * @param {(description: {
79
+ * trigger: HTMLElement|null,
80
+ * items: Observable<DropdownItem[]>,
81
+ * interaction: 'click'|'hover'|'focus',
82
+ * disabled: Observable<boolean>,
83
+ * isOpen: Observable<boolean>,
84
+ * maxHeight: string|number|null,
85
+ * searchable: boolean,
86
+ * searchValue: Observable<string>|null,
87
+ * searchPlaceholder: string,
88
+ * loopOnKeyboard: boolean,
89
+ * renderItem: ((item: DropdownItem, instance: Dropdown) => NdChild)|null,
90
+ * renderHeader: ((desc: *, instance: Dropdown) => NdChild)|null,
91
+ * renderFooter: ((desc: *, instance: Dropdown) => NdChild)|null,
92
+ * render: ((desc: *, instance: Dropdown) => NdChild)|null,
93
+ * filter: ((item: DropdownItem, query: string) => boolean)|null,
94
+ * mapper: ((item: *) => DropdownItem)|null,
95
+ * matchTriggerWidth: boolean|null,
96
+ * updatePositionOn: Observable<*>|null,
97
+ * includeTriggerIntoGhost: boolean,
98
+ * props: GlobalAttributes,
99
+ * }, instance: Dropdown) => NdChild} template
100
+ */
55
101
  Dropdown.use = function(template) {
56
102
  Dropdown.defaultTemplate = template;
57
103
 
@@ -73,11 +119,15 @@ Dropdown.use = function(template) {
73
119
  this.ghostDom(dropdown.trigger(this.$element));
74
120
  });
75
121
  return this;
76
- }
122
+ };
77
123
  }
78
124
 
79
125
  };
80
126
 
127
+ /**
128
+ * @param {string} name
129
+ * @param {(d: Dropdown) => Dropdown} callback
130
+ */
81
131
  Dropdown.preset = function(name, callback) {
82
132
  if (Dropdown.prototype[name] || Dropdown[name]) {
83
133
  DebugManager.warn(`Warning: the ${name} method already exist in Dropdown.`);
@@ -86,58 +136,106 @@ Dropdown.preset = function(name, callback) {
86
136
  Dropdown[name] = (props) => callback(new Dropdown(props));
87
137
  };
88
138
 
139
+ /**
140
+ * @param {Record<string, (d: Dropdown) => Dropdown>} presets
141
+ */
89
142
  Dropdown.presets = function(presets) {
90
143
  for (const name in presets) {
91
144
  Dropdown.preset(name, presets[name]);
92
145
  }
93
146
  };
94
147
 
148
+ /**
149
+ * @returns {this}
150
+ */
95
151
  Dropdown.prototype.open = function() {
96
152
  this.$description.isOpen.set(true);
97
153
  return this;
98
154
  };
99
155
 
156
+ /**
157
+ * @param {Observable<*[]>|*[]} source
158
+ * @param {((item: *) => DropdownItem)|null} [mapper]
159
+ * @returns {this}
160
+ */
100
161
  Dropdown.prototype.bind = function(source, mapper) {
101
162
  this.$description.items = source.__$Observable ? source : $.array(source);
102
163
  this.$description.mapper = mapper;
103
164
  return this;
104
165
  };
166
+
167
+ /**
168
+ * Alias for {@link Dropdown.prototype.bind}
169
+ */
105
170
  Dropdown.prototype.source = Dropdown.prototype.bind;
171
+ /**
172
+ * Alias for {@link Dropdown.prototype.bind}
173
+ */
106
174
  Dropdown.prototype.from = Dropdown.prototype.bind;
107
175
 
176
+ /**
177
+ * @returns {this}
178
+ */
108
179
  Dropdown.prototype.close = function() {
109
180
  this.$description.isOpen.set(false);
110
181
  return this;
111
182
  };
112
183
 
184
+ /**
185
+ * @returns {this}
186
+ */
113
187
  Dropdown.prototype.toggle = function() {
114
188
  return this.$description.isOpen.val() ? this.close() : this.open();
115
189
  };
116
190
 
191
+ /**
192
+ * @param {boolean|Observable<boolean>} [disabled]
193
+ * @returns {this}
194
+ */
117
195
  Dropdown.prototype.disabled = function(disabled = true) {
118
196
  this.$description.disabled = BaseComponent.obs(disabled);
119
197
  return this;
120
198
  };
121
199
 
200
+ /**
201
+ * @returns {this}
202
+ */
122
203
  Dropdown.prototype.enable = function() {
123
204
  this.$description.disabled.set(false);
124
205
  return this;
125
206
  };
207
+
208
+ /**
209
+ * @returns {this}
210
+ */
126
211
  Dropdown.prototype.disable = function() {
127
212
  this.$description.disabled.set(true);
128
213
  return this;
129
- }
214
+ };
130
215
 
216
+ /**
217
+ * @param {number} value
218
+ * @returns {*}
219
+ */
131
220
  Dropdown.prototype.value = function(value) {
132
221
  this.$description.value = value;
133
222
  return this;
134
223
  };
135
224
 
225
+ /**
226
+ * @param {*} placeholder
227
+ * @returns {this}
228
+ */
136
229
  Dropdown.prototype.placeholder = function(placeholder) {
137
230
  this.$description.placeholder = placeholder;
138
231
  return this;
139
232
  };
140
233
 
234
+ /**
235
+ * @param {*} [searchable]
236
+ * @param {*} [placeholder]
237
+ * @returns {this}
238
+ */
141
239
  Dropdown.prototype.searchable = function(searchable = true, placeholder = null) {
142
240
  this.$description.searchable = searchable;
143
241
  if (placeholder) {
@@ -147,44 +245,87 @@ Dropdown.prototype.searchable = function(searchable = true, placeholder = null)
147
245
  return this;
148
246
  };
149
247
 
248
+ /**
249
+ * @param {*} placeholder
250
+ * @returns {this}
251
+ */
150
252
  Dropdown.prototype.searchPlaceholder = function(placeholder) {
151
253
  this.$description.searchPlaceholder = placeholder;
152
254
  return this;
153
255
  };
154
256
 
257
+ /**
258
+ * @param {*} closeOnClickOutside
259
+ * @returns {this}
260
+ */
155
261
  Dropdown.prototype.closeOnClickOutside = function(closeOnClickOutside) {
156
262
  this.$description.closeOnClickOutside = closeOnClickOutside;
157
263
  return this;
158
264
  };
159
265
 
266
+ /**
267
+ * @param {*} closeOnEscape
268
+ * @returns {this}
269
+ */
160
270
  Dropdown.prototype.closeOnEscape = function(closeOnEscape) {
161
271
  this.$description.closeOnEscape = closeOnEscape;
162
272
  return this;
163
273
  };
164
274
 
275
+ /**
276
+ * @param {*} closeOnSelect
277
+ * @returns {this}
278
+ */
165
279
  Dropdown.prototype.closeOnSelect = function(closeOnSelect) {
166
280
  this.$description.closeOnSelect = closeOnSelect;
167
281
  return this;
168
282
  };
169
283
 
284
+ /**
285
+ * @param {*} maxHeight
286
+ * @returns {this}
287
+ */
170
288
  Dropdown.prototype.maxHeight = function(maxHeight) {
171
289
  this.$description.maxHeight = maxHeight;
172
290
  return this;
173
291
  };
174
292
 
293
+ /**
294
+ * @param {HTMLElement|NDElement} trigger
295
+ * @param {boolean} [includeTriggerIntoGhost=true]
296
+ * @returns {this}
297
+ */
175
298
  Dropdown.prototype.trigger = function(trigger, includeTriggerIntoGhost = true) {
176
299
  this.$description.trigger = trigger;
177
300
  this.$description.includeTriggerIntoGhost = includeTriggerIntoGhost;
178
301
  return this;
179
302
  };
180
303
 
304
+ /**
305
+ * @param {DropdownItem|NdChild|*} item
306
+ * @param {GlobalAttributes} [props={}]
307
+ * @returns {this}
308
+ */
181
309
  Dropdown.prototype.add = function(item, props = {}) {
182
310
  this.$description.items.push(normalizeDropdownItem(item, null, props));
183
311
  return this;
184
312
  };
313
+
314
+ /**
315
+ * Alias for {@link Dropdown.prototype.add}
316
+ */
185
317
  Dropdown.prototype.menu = Dropdown.prototype.add;
318
+
319
+ /**
320
+ * Alias for {@link Dropdown.prototype.add}
321
+ */
186
322
  Dropdown.prototype.item = Dropdown.prototype.add;
187
323
 
324
+ /**
325
+ * @param {*[]} items
326
+ * @param {((item: *) => DropdownItem)|null} [mapper=null]
327
+ * @returns {this}
328
+ */
188
329
  Dropdown.prototype.from = function(items, mapper = null) {
189
330
  if(items.__$isObservableArray) {
190
331
  this.$description.items.set(items.map((item) => normalizeDropdownItem(item, mapper)));
@@ -198,6 +339,10 @@ Dropdown.prototype.from = function(items, mapper = null) {
198
339
  return this;
199
340
  };
200
341
 
342
+ /**
343
+ * @param {(group: DropdownGroup) => void} groupBuilder
344
+ * @returns {this}
345
+ */
201
346
  Dropdown.prototype.group = function(groupBuilder) {
202
347
  const group = new DropdownGroup();
203
348
  groupBuilder && groupBuilder(group);
@@ -205,24 +350,43 @@ Dropdown.prototype.group = function(groupBuilder) {
205
350
  return this;
206
351
  };
207
352
 
353
+ /**
354
+ * @returns {this}
355
+ */
208
356
  Dropdown.prototype.divider = function() {
209
357
  this.$description.items.push(new DropdownDivider());
210
358
  return this;
211
359
  };
212
360
 
361
+ /**
362
+ * @param {number} value
363
+ * @returns {this}
364
+ */
213
365
  Dropdown.prototype.select = function(value) {
214
366
  this.$description.value?.set(value);
215
367
  return this;
216
368
  };
217
369
 
370
+ /**
371
+ * @returns {this}
372
+ */
218
373
  Dropdown.prototype.next = function() {
219
-
374
+ // TODO : to implement
375
+ return this;
220
376
  };
221
377
 
378
+ /**
379
+ * @returns {this}
380
+ */
222
381
  Dropdown.prototype.preview = function() {
223
-
382
+ // TODO : to implement
383
+ return this;
224
384
  };
225
385
 
386
+ /**
387
+ * @param {*} loopOnKeyboard
388
+ * @returns {this}
389
+ */
226
390
  Dropdown.prototype.loopOnKeyboard = function(loopOnKeyboard) {
227
391
  this.$description.loopOnKeyboard = loopOnKeyboard;
228
392
  return this;
@@ -233,75 +397,134 @@ Dropdown.prototype.onChange= function(handler) {
233
397
  return this;
234
398
  };
235
399
 
400
+ /**
401
+ * @param {Function} handler
402
+ * @returns {this}
403
+ */
236
404
  Dropdown.prototype.onOpen = function(handler) {
237
405
  this.on('open', handler);
238
406
  return this;
239
407
  };
240
408
 
409
+ /**
410
+ * @param {Function} handler
411
+ * @returns {this}
412
+ */
241
413
  Dropdown.prototype.onClose = function(handler) {
242
414
  this.on('close', handler);
243
415
  return this;
244
416
  };
245
417
 
418
+ /**
419
+ * @param {(desc: *, instance: *) => NdChild} renderFn
420
+ * @returns {this}
421
+ */
246
422
  Dropdown.prototype.renderSearch = function(renderFn) {
247
423
  this.$description.renderSearch = renderFn;
248
424
  return this;
249
425
  };
250
426
 
251
-
427
+ /**
428
+ * @param {'click'|'hover'|'focus'} interaction
429
+ * @returns {this}
430
+ */
252
431
  Dropdown.prototype.interaction = function(interaction) {
253
432
  this.$description.interaction = interaction;
254
433
  return this;
255
434
  };
256
435
 
257
-
436
+ /**
437
+ * @param {(item: DropdownItem, query: string) => boolean} filter
438
+ * @param {Observable<*>[]} [dependencies]
439
+ * @returns {this}
440
+ */
258
441
  Dropdown.prototype.filter = function(filter, dependencies) {
259
442
  this.$description.filter = filter;
260
443
  this.$description.filterDependencies = dependencies;
261
444
  return this;
262
445
  };
263
446
 
447
+ /**
448
+ * @returns {this}
449
+ */
264
450
  Dropdown.prototype.onClicked = function() {
265
451
  this.$description.interaction = 'click';
266
452
  return this;
267
453
  };
268
454
 
455
+ /**
456
+ * @returns {this}
457
+ */
269
458
  Dropdown.prototype.onHovered = function() {
270
459
  this.$description.interaction = 'hover';
271
460
  return this;
272
461
  };
273
462
 
463
+ /**
464
+ * @returns {this}
465
+ */
274
466
  Dropdown.prototype.onFocused = function() {
275
467
  this.$description.interaction = 'focus';
276
468
  return this;
277
469
  };
278
470
 
471
+ /**
472
+ * @param {(desc: *, instance: *) => NdChild} renderFn
473
+ * @returns {this}
474
+ */
279
475
  Dropdown.prototype.renderHeader = function(renderFn) {
280
476
  this.$description.renderHeader = renderFn;
281
477
  return this;
282
478
  };
283
479
 
480
+ /**
481
+ * @param {(desc: *, instance: *) => NdChild} renderFn
482
+ * @returns {this}
483
+ */
284
484
  Dropdown.prototype.renderFooter = function(renderFn) {
285
485
  this.$description.renderFooter = renderFn;
286
486
  return this;
287
487
  };
288
488
 
489
+ /**
490
+ * @param {(desc: *, instance: *) => NdChild} renderFn
491
+ * @returns {this}
492
+ */
289
493
  Dropdown.prototype.renderContent = function(renderFn) {
290
494
  this.$description.renderContent = renderFn;
291
495
  return this;
292
496
  };
497
+
498
+ /**
499
+ * @returns {this}
500
+ */
293
501
  Dropdown.prototype.matchTriggerWidth = function() {
294
502
  this.$description.matchTriggerWidth = true;
295
503
  return this;
296
504
  };
505
+
506
+ /**
507
+ * @param {HTMLElement|NDElement} target
508
+ * @returns {this}
509
+ */
297
510
  Dropdown.prototype.matchTargetWidth = function(target) {
298
511
  this.$description.matchTargetWidth = target;
299
512
  return this;
300
513
  };
514
+
515
+ /**
516
+ * @param {Function} callback
517
+ * @returns {this}
518
+ */
301
519
  Dropdown.prototype.renderItem = function(callback) {
302
520
  this.$description.renderItem = callback;
303
521
  return this;
304
522
  };
523
+
524
+ /**
525
+ * @param {*} updatePositionOn
526
+ * @returns {this}
527
+ */
305
528
  Dropdown.prototype.updatePositionOn = function(updatePositionOn) {
306
529
  this.$description.updatePositionOn = updatePositionOn;
307
530
  return this;
@@ -1,12 +1,22 @@
1
- import BaseComponent from "../BaseComponent";
1
+ import BaseComponent from '../BaseComponent';
2
2
 
3
+ /**
4
+ * Visual separator between groups or items inside a Dropdown.
5
+ *
6
+ *
7
+ * @example
8
+ * dropdown.add(item1).divider().add(item2);
9
+ *
10
+ * @constructor
11
+ * @param {GlobalAttributes} [props]
12
+ */
3
13
  export default function DropdownDivider(props = {}) {
4
14
  if(!(this instanceof DropdownDivider)) {
5
15
  return new DropdownDivider();
6
16
  }
7
17
  this.$description = {
8
18
  type: 'divider',
9
- props
19
+ props,
10
20
  };
11
21
  }
12
22
 
@@ -14,11 +24,21 @@ BaseComponent.extends(DropdownDivider);
14
24
 
15
25
  DropdownDivider.defaultTemplate = null;
16
26
 
27
+ /**
28
+ * Registers the render template for DropdownDivider.
29
+ * @param {(description: {
30
+ * [key: string]: *
31
+ * }, instance: DropdownDivider) => NdChild} template
32
+ */
17
33
  DropdownDivider.use = function(template) {
18
34
  DropdownDivider.defaultTemplate = template;
19
35
  };
20
36
 
21
37
 
38
+ /**
39
+ * @param {(desc: *, instance: *) => NdChild} renderFn
40
+ * @returns {this}
41
+ */
22
42
  DropdownDivider.prototype.render = function(renderFn) {
23
43
  this.$description.render = renderFn;
24
44
  return this;
@@ -1,9 +1,22 @@
1
- import DropdownItem from "./DropdownItem";
2
- import BaseComponent from "../BaseComponent";
3
- import DropdownDivider from "./DropdownDivider";
4
- import { $ } from "../../core/data/Observable";
5
- import {normalizeDropdownItem} from "./helpers";
1
+ import DropdownItem from './DropdownItem';
2
+ import BaseComponent from '../BaseComponent';
3
+ import DropdownDivider from './DropdownDivider';
4
+ import { $ } from '../../core/data/Observable';
5
+ import {normalizeDropdownItem} from './helpers';
6
6
 
7
+ /**
8
+ * Groups DropdownItem instances under a heading inside a Dropdown.
9
+ *
10
+ *
11
+ * @example
12
+ * dropdown.group((group) => {
13
+ * group.add(new DropdownItem().value('en').content(Span('English')))
14
+ * .add(new DropdownItem().value('fr').content(Span('French')));
15
+ * });
16
+ *
17
+ * @constructor
18
+ * @param {GlobalAttributes} [props]
19
+ */
7
20
  export default function DropdownGroup(props) {
8
21
  if(!(this instanceof DropdownGroup)) {
9
22
  return new DropdownGroup(props);
@@ -19,18 +32,41 @@ export default function DropdownGroup(props) {
19
32
  BaseComponent.extends(DropdownGroup, DropdownItem);
20
33
 
21
34
  DropdownGroup.defaultTemplate = null;
35
+
36
+ /**
37
+ * Registers the render template for DropdownGroup.
38
+ * @param {(description: {
39
+ * [key: string]: *
40
+ * }, instance: DropdownGroup) => NdChild} template
41
+ */
22
42
  DropdownGroup.use = function(template) {
23
43
  DropdownGroup.defaultTemplate = template;
24
44
  };
25
45
 
46
+ /**
47
+ * @param {DropdownItem|NdChild|*} item
48
+ * @param {GlobalAttributes} [props]
49
+ * @returns {this}
50
+ */
26
51
  DropdownGroup.prototype.add = function(item, props) {
27
52
  this.$description.items.push(normalizeDropdownItem(item, null, props));
28
53
  return this;
29
54
  };
30
55
 
56
+ /**
57
+ * Alias for {@link DropdownGroup.prototype.add}
58
+ */
31
59
  DropdownGroup.prototype.menu = DropdownGroup.prototype.add;
60
+
61
+ /**
62
+ * Alias for {@link DropdownGroup.prototype.add}
63
+ */
32
64
  DropdownGroup.prototype.item = DropdownGroup.prototype.add;
33
65
 
66
+ /**
67
+ * @param {(group: DropdownGroup) => void} groupBuilder
68
+ * @returns {this}
69
+ */
34
70
  DropdownGroup.prototype.group = function(groupBuilder) {
35
71
  const item = new DropdownGroup();
36
72
  groupBuilder && groupBuilder(item);
@@ -38,6 +74,9 @@ DropdownGroup.prototype.group = function(groupBuilder) {
38
74
  return this;
39
75
  };
40
76
 
77
+ /**
78
+ * @returns {this}
79
+ */
41
80
  DropdownGroup.prototype.divider = function() {
42
81
  this.$description.items.push(new DropdownDivider());
43
82
  return this;