native-document 1.0.165 → 1.0.168

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 (488) hide show
  1. package/.vitepress/config.js +166 -0
  2. package/CHANGELOG.md +153 -0
  3. package/components.d.ts +2 -0
  4. package/components.js +2 -1
  5. package/devtools/widget.js +1 -1
  6. package/dist/native-document.components.min.js +11589 -2983
  7. package/dist/native-document.dev.js +2280 -396
  8. package/dist/native-document.dev.js.map +1 -1
  9. package/dist/native-document.min.js +1 -1
  10. package/docs/advanced-components.md +213 -608
  11. package/docs/anchor.md +173 -312
  12. package/docs/cache.md +95 -803
  13. package/docs/cli.md +179 -0
  14. package/docs/components/accordion.md +172 -0
  15. package/docs/components/alert.md +99 -0
  16. package/docs/components/avatar.md +160 -0
  17. package/docs/components/badge.md +102 -0
  18. package/docs/components/breadcrumb.md +89 -0
  19. package/docs/components/button.md +183 -0
  20. package/docs/components/card.md +69 -0
  21. package/docs/components/context-menu.md +118 -0
  22. package/docs/components/data-table.md +345 -0
  23. package/docs/components/dropdown.md +214 -0
  24. package/docs/components/form/autocomplete-field.md +81 -0
  25. package/docs/components/form/checkbox-field.md +41 -0
  26. package/docs/components/form/checkbox-group-field.md +54 -0
  27. package/docs/components/form/color-field.md +64 -0
  28. package/docs/components/form/date-field.md +92 -0
  29. package/docs/components/form/field-collection.md +63 -0
  30. package/docs/components/form/file-field.md +203 -0
  31. package/docs/components/form/form-control.md +87 -0
  32. package/docs/components/form/image-field.md +90 -0
  33. package/docs/components/form/index.md +115 -0
  34. package/docs/components/form/number-field.md +65 -0
  35. package/docs/components/form/radio-field.md +51 -0
  36. package/docs/components/form/select-field.md +123 -0
  37. package/docs/components/form/slider.md +136 -0
  38. package/docs/components/form/string-field.md +134 -0
  39. package/docs/components/form/textarea-field.md +65 -0
  40. package/docs/components/form-fields.md +372 -0
  41. package/docs/components/getting-started.md +264 -0
  42. package/docs/components/index.md +337 -0
  43. package/docs/components/layout.md +279 -0
  44. package/docs/components/list.md +73 -0
  45. package/docs/components/menu.md +215 -0
  46. package/docs/components/modal.md +156 -0
  47. package/docs/components/pagination.md +95 -0
  48. package/docs/components/popover.md +131 -0
  49. package/docs/components/progress.md +111 -0
  50. package/docs/components/shortcut-manager.md +221 -0
  51. package/docs/components/simple-table.md +107 -0
  52. package/docs/components/skeleton.md +155 -0
  53. package/docs/components/spinner.md +100 -0
  54. package/docs/components/splitter.md +133 -0
  55. package/docs/components/stepper.md +163 -0
  56. package/docs/components/switch.md +113 -0
  57. package/docs/components/tabs.md +153 -0
  58. package/docs/components/toast.md +119 -0
  59. package/docs/components/tooltip.md +151 -0
  60. package/docs/components/traits.md +261 -0
  61. package/docs/conditional-rendering.md +170 -588
  62. package/docs/contributing.md +300 -25
  63. package/docs/core-concepts.md +205 -374
  64. package/docs/elements.md +251 -367
  65. package/docs/extending-native-document-element.md +192 -207
  66. package/docs/filters.md +153 -1122
  67. package/docs/getting-started.md +193 -267
  68. package/docs/i18n.md +241 -0
  69. package/docs/index.md +76 -0
  70. package/docs/lifecycle-events.md +143 -75
  71. package/docs/list-rendering.md +227 -852
  72. package/docs/memory-management.md +134 -47
  73. package/docs/native-document-element.md +337 -186
  74. package/docs/native-fetch.md +99 -630
  75. package/docs/observable-resource.md +364 -0
  76. package/docs/observables.md +592 -526
  77. package/docs/routing.md +244 -653
  78. package/docs/state-management.md +134 -241
  79. package/docs/svg-elements.md +231 -0
  80. package/docs/theming.md +409 -0
  81. package/docs/validation.md +95 -97
  82. package/docs/vitepress-conventions.md +219 -0
  83. package/eslint.config.js +28 -33
  84. package/i18n.js +1 -1
  85. package/i18n.ts +2 -0
  86. package/index.js +3 -0
  87. package/package.json +36 -14
  88. package/readme.md +269 -89
  89. package/src/components/$traits/has-draggable/HasDraggable.d.ts +4 -0
  90. package/src/components/$traits/has-draggable/HasDraggable.js +13 -0
  91. package/src/components/$traits/has-items/HasItems.d.ts +9 -0
  92. package/src/components/$traits/has-items/HasItems.js +6 -6
  93. package/src/components/$traits/has-position/HasFullPosition.d.ts +14 -0
  94. package/src/components/$traits/has-position/HasFullPosition.js +44 -0
  95. package/src/components/$traits/has-position/HasPosition.d.ts +7 -0
  96. package/src/components/$traits/has-position/HasPosition.js +23 -1
  97. package/src/components/$traits/has-resizable/HasResizable.d.ts +13 -0
  98. package/src/components/$traits/has-resizable/HasResizable.js +9 -0
  99. package/src/components/$traits/has-validation/HasValidation.d.ts +17 -0
  100. package/src/components/$traits/has-validation/HasValidation.js +54 -7
  101. package/src/components/BaseComponent.d.ts +32 -0
  102. package/src/components/BaseComponent.js +65 -9
  103. package/src/components/accordion/Accordion.js +39 -14
  104. package/src/components/accordion/AccordionItem.js +45 -14
  105. package/src/components/accordion/index.js +2 -2
  106. package/src/components/accordion/types/Accordion.d.ts +47 -0
  107. package/src/components/accordion/types/AccordionItem.d.ts +48 -0
  108. package/src/components/alert/Alert.js +70 -38
  109. package/src/components/alert/index.js +2 -2
  110. package/src/components/alert/types/Alert.d.ts +62 -0
  111. package/src/components/avatar/Avatar.js +49 -12
  112. package/src/components/avatar/AvatarGroup.js +50 -2
  113. package/src/components/avatar/index.js +2 -2
  114. package/src/components/avatar/types/Avatar.d.ts +74 -0
  115. package/src/components/avatar/types/AvatarGroup.d.ts +32 -0
  116. package/src/components/badge/Badge.js +125 -5
  117. package/src/components/badge/index.js +2 -2
  118. package/src/components/badge/types/Badge.d.ts +51 -0
  119. package/src/components/breadcrumb/BreadCrumb.js +61 -5
  120. package/src/components/breadcrumb/index.js +2 -2
  121. package/src/components/breadcrumb/types/BreadCrumb.d.ts +42 -0
  122. package/src/components/button/Button.js +164 -9
  123. package/src/components/button/index.js +1 -1
  124. package/src/components/button/types/Button.d.ts +62 -0
  125. package/src/components/card/Card.js +204 -32
  126. package/src/components/card/index.js +4 -4
  127. package/src/components/card/types/Card.d.ts +42 -0
  128. package/src/components/context-menu/ContextMenu.js +49 -5
  129. package/src/components/context-menu/ContextMenuGroup.js +15 -2
  130. package/src/components/context-menu/ContextMenuItem.js +14 -2
  131. package/src/components/context-menu/index.js +5 -5
  132. package/src/components/context-menu/types/ContextMenu.d.ts +30 -0
  133. package/src/components/context-menu/types/ContextMenuGroup.d.ts +18 -0
  134. package/src/components/context-menu/types/ContextMenuItem.d.ts +18 -0
  135. package/src/components/divider/Divider.js +120 -4
  136. package/src/components/divider/index.js +3 -3
  137. package/src/components/divider/types/Divider.d.ts +55 -0
  138. package/src/components/dropdown/Dropdown.js +239 -16
  139. package/src/components/dropdown/DropdownDivider.js +22 -2
  140. package/src/components/dropdown/DropdownGroup.js +44 -5
  141. package/src/components/dropdown/DropdownItem.js +76 -3
  142. package/src/components/dropdown/DropdownTrigger.js +49 -20
  143. package/src/components/dropdown/helpers.js +1 -1
  144. package/src/components/dropdown/index.js +6 -6
  145. package/src/components/dropdown/types/Dropdown.d.ts +88 -0
  146. package/src/components/dropdown/types/DropdownDivider.d.ts +20 -0
  147. package/src/components/dropdown/types/DropdownGroup.d.ts +25 -0
  148. package/src/components/dropdown/types/DropdownItem.d.ts +41 -0
  149. package/src/components/dropdown/types/DropdownTrigger.d.ts +32 -0
  150. package/src/components/form/FormControl.js +156 -13
  151. package/src/components/form/field/Field.js +172 -9
  152. package/src/components/form/field/FieldCollection.js +116 -12
  153. package/src/components/form/field/types/AutocompleteField.js +92 -2
  154. package/src/components/form/field/types/CheckboxField.js +43 -2
  155. package/src/components/form/field/types/CheckboxGroupField.js +83 -6
  156. package/src/components/form/field/types/ColorField.js +56 -3
  157. package/src/components/form/field/types/DateField.js +155 -4
  158. package/src/components/form/field/types/EmailField.js +54 -4
  159. package/src/components/form/field/types/FileField.js +140 -6
  160. package/src/components/form/field/types/HiddenField.js +27 -1
  161. package/src/components/form/field/types/ImageField.js +82 -3
  162. package/src/components/form/field/types/NumberField.js +97 -4
  163. package/src/components/form/field/types/PasswordField.js +103 -7
  164. package/src/components/form/field/types/RadioField.js +75 -4
  165. package/src/components/form/field/types/RangeField.js +67 -1
  166. package/src/components/form/field/types/SearchField.js +41 -2
  167. package/src/components/form/field/types/SelectField.js +133 -4
  168. package/src/components/form/field/types/StringField.js +91 -2
  169. package/src/components/form/field/types/TelField.js +55 -4
  170. package/src/components/form/field/types/TextAreaField.js +76 -2
  171. package/src/components/form/field/types/TimeField.js +120 -5
  172. package/src/components/form/field/types/UrlField.js +59 -4
  173. package/src/components/form/field/types/file-field-mode/FileAvatarMode.js +83 -4
  174. package/src/components/form/field/types/file-field-mode/FileDropzoneMode.js +61 -3
  175. package/src/components/form/field/types/file-field-mode/FileItemPreview.js +79 -3
  176. package/src/components/form/field/types/file-field-mode/FileNativeMode.js +24 -2
  177. package/src/components/form/field/types/file-field-mode/FileUploadButtonMode.js +64 -3
  178. package/src/components/form/field/types/file-field-mode/FileWallMode.js +56 -3
  179. package/src/components/form/index.js +28 -28
  180. package/src/components/form/types/Field.d.ts +73 -0
  181. package/src/components/form/types/FieldCollection.d.ts +53 -0
  182. package/src/components/form/types/FormControl.d.ts +64 -0
  183. package/src/components/form/types/fields/AutocompleteField.d.ts +48 -0
  184. package/src/components/form/types/fields/CheckboxField.d.ts +33 -0
  185. package/src/components/form/types/fields/CheckboxGroupField.d.ts +49 -0
  186. package/src/components/form/types/fields/ColorField.d.ts +37 -0
  187. package/src/components/form/types/fields/DateField.d.ts +70 -0
  188. package/src/components/form/types/fields/EmailField.d.ts +35 -0
  189. package/src/components/form/types/fields/FileAvatarMode.d.ts +46 -0
  190. package/src/components/form/types/fields/FileDropzoneMode.d.ts +28 -0
  191. package/src/components/form/types/fields/FileField.d.ts +56 -0
  192. package/src/components/form/types/fields/FileItemPreview.d.ts +35 -0
  193. package/src/components/form/types/fields/FileNativeMode.d.ts +21 -0
  194. package/src/components/form/types/fields/FileUploadButtonMode.d.ts +34 -0
  195. package/src/components/form/types/fields/FileWallMode.d.ts +32 -0
  196. package/src/components/form/types/fields/HiddenField.d.ts +26 -0
  197. package/src/components/form/types/fields/ImageField.d.ts +45 -0
  198. package/src/components/form/types/fields/NumberField.d.ts +48 -0
  199. package/src/components/form/types/fields/PasswordField.d.ts +46 -0
  200. package/src/components/form/types/fields/RadioField.d.ts +48 -0
  201. package/src/components/form/types/fields/RangeField.d.ts +44 -0
  202. package/src/components/form/types/fields/SearchField.d.ts +34 -0
  203. package/src/components/form/types/fields/SelectField.d.ts +71 -0
  204. package/src/components/form/types/fields/StringField.d.ts +48 -0
  205. package/src/components/form/types/fields/TelField.d.ts +37 -0
  206. package/src/components/form/types/fields/TextAreaField.d.ts +44 -0
  207. package/src/components/form/types/fields/TimeField.d.ts +51 -0
  208. package/src/components/form/types/fields/UrlField.d.ts +35 -0
  209. package/src/components/form/validation/Validation.js +54 -54
  210. package/src/components/index.d.ts +160 -0
  211. package/src/components/list/HasListItem.js +171 -0
  212. package/src/components/list/List.js +85 -67
  213. package/src/components/list/ListDivider.js +39 -0
  214. package/src/components/list/ListGroup.js +105 -38
  215. package/src/components/list/ListItem.js +158 -49
  216. package/src/components/list/index.js +8 -6
  217. package/src/components/list/types/List.d.ts +43 -0
  218. package/src/components/list/types/ListGroup.d.ts +37 -0
  219. package/src/components/list/types/ListItem.d.ts +53 -0
  220. package/src/components/menu/HasMenuItem.js +55 -6
  221. package/src/components/menu/Menu.js +113 -22
  222. package/src/components/menu/MenuDivider.js +18 -2
  223. package/src/components/menu/MenuGroup.js +61 -6
  224. package/src/components/menu/MenuItem.js +95 -11
  225. package/src/components/menu/MenuLink.js +27 -2
  226. package/src/components/menu/index.js +6 -6
  227. package/src/components/menu/types/Menu.d.ts +60 -0
  228. package/src/components/menu/types/MenuDivider.d.ts +19 -0
  229. package/src/components/menu/types/MenuGroup.d.ts +44 -0
  230. package/src/components/menu/types/MenuItem.d.ts +46 -0
  231. package/src/components/menu/types/MenuLink.d.ts +16 -0
  232. package/src/components/modal/Modal.js +258 -17
  233. package/src/components/modal/index.js +3 -3
  234. package/src/components/modal/types/Modal.d.ts +94 -0
  235. package/src/components/pagination/Pagination.js +155 -7
  236. package/src/components/pagination/index.js +3 -3
  237. package/src/components/pagination/types/Pagination.d.ts +68 -0
  238. package/src/components/popover/Popover.js +198 -11
  239. package/src/components/popover/PopoverFooter.js +33 -9
  240. package/src/components/popover/PopoverHeader.js +33 -8
  241. package/src/components/popover/index.js +4 -4
  242. package/src/components/popover/types/Popover.d.ts +83 -0
  243. package/src/components/popover/types/PopoverFooter.d.ts +24 -0
  244. package/src/components/popover/types/PopoverHeader.d.ts +26 -0
  245. package/src/components/progress/Progress.js +182 -13
  246. package/src/components/progress/index.js +3 -3
  247. package/src/components/progress/types/Progress.d.ts +77 -0
  248. package/src/components/skeleton/Skeleton.js +117 -49
  249. package/src/components/skeleton/index.js +3 -3
  250. package/src/components/skeleton/types/Skeleton.d.ts +55 -0
  251. package/src/components/slider/Slider.js +207 -10
  252. package/src/components/slider/index.js +2 -2
  253. package/src/components/slider/types/Slider.d.ts +82 -0
  254. package/src/components/spacer/Spacer.js +12 -3
  255. package/src/components/spacer/index.js +2 -2
  256. package/src/components/spacer/types/Spacer.d.ts +19 -0
  257. package/src/components/spinner/Spinner.js +180 -9
  258. package/src/components/spinner/index.js +3 -3
  259. package/src/components/spinner/types/Spinner.d.ts +71 -0
  260. package/src/components/splitter/Splitter.js +76 -13
  261. package/src/components/splitter/SplitterGutter.js +67 -5
  262. package/src/components/splitter/SplitterPanel.js +69 -2
  263. package/src/components/splitter/index.js +5 -5
  264. package/src/components/splitter/types/Splitter.d.ts +38 -0
  265. package/src/components/splitter/types/SplitterGutter.d.ts +38 -0
  266. package/src/components/splitter/types/SplitterPanel.d.ts +41 -0
  267. package/src/components/stacks/AbsoluteStack.js +23 -3
  268. package/src/components/stacks/FixedStack.js +23 -3
  269. package/src/components/stacks/HStack.js +24 -3
  270. package/src/components/stacks/PositionStack.js +111 -3
  271. package/src/components/stacks/RelativeStack.js +23 -3
  272. package/src/components/stacks/Stack.js +73 -2
  273. package/src/components/stacks/VStack.js +24 -4
  274. package/src/components/stacks/index.js +7 -7
  275. package/src/components/stacks/types/AbsoluteStack.d.ts +16 -0
  276. package/src/components/stacks/types/FixedStack.d.ts +16 -0
  277. package/src/components/stacks/types/HStack.d.ts +16 -0
  278. package/src/components/stacks/types/PositionStack.d.ts +54 -0
  279. package/src/components/stacks/types/RelativeStack.d.ts +17 -0
  280. package/src/components/stacks/types/Stack.d.ts +39 -0
  281. package/src/components/stacks/types/VStack.d.ts +16 -0
  282. package/src/components/stepper/Stepper.js +152 -12
  283. package/src/components/stepper/StepperStep.js +104 -3
  284. package/src/components/stepper/index.js +4 -4
  285. package/src/components/stepper/types/Stepper.d.ts +68 -0
  286. package/src/components/stepper/types/StepperStep.d.ts +54 -0
  287. package/src/components/switch/Switch.js +143 -6
  288. package/src/components/switch/index.js +1 -1
  289. package/src/components/switch/types/Switch.d.ts +55 -0
  290. package/src/components/table/Column.js +105 -6
  291. package/src/components/table/ColumnGroup.js +48 -3
  292. package/src/components/table/DataTable.js +256 -19
  293. package/src/components/table/SimpleTable.js +58 -4
  294. package/src/components/table/index.js +2 -2
  295. package/src/components/table/types/Column.d.ts +49 -0
  296. package/src/components/table/types/ColumnGroup.d.ts +28 -0
  297. package/src/components/table/types/DataTable.d.ts +97 -0
  298. package/src/components/table/types/SimpleTable.d.ts +40 -0
  299. package/src/components/tabs/Tabs.js +192 -5
  300. package/src/components/tabs/index.js +3 -3
  301. package/src/components/tabs/types/Tabs.d.ts +78 -0
  302. package/src/components/toast/Toast.js +133 -5
  303. package/src/components/toast/index.js +3 -3
  304. package/src/components/toast/types/Toast.d.ts +57 -0
  305. package/src/components/toast/types/ToastError.d.ts +7 -0
  306. package/src/components/toast/types/ToastInfo.d.ts +7 -0
  307. package/src/components/toast/types/ToastSuccess.d.ts +7 -0
  308. package/src/components/toast/types/ToastWarning.d.ts +7 -0
  309. package/src/components/tooltip/Tooltip.js +157 -13
  310. package/src/components/tooltip/index.js +2 -2
  311. package/src/components/tooltip/prototypes.js +1 -1
  312. package/src/components/tooltip/types/Tooltip.d.ts +65 -0
  313. package/src/core/data/MemoryManager.js +2 -2
  314. package/src/core/data/Observable.js +15 -18
  315. package/src/core/data/ObservableArray.js +118 -46
  316. package/src/core/data/ObservableChecker.js +2 -2
  317. package/src/core/data/ObservableItem.js +135 -21
  318. package/src/core/data/ObservableObject.js +126 -35
  319. package/src/core/data/ObservableResource.js +118 -3
  320. package/src/core/data/Store.js +142 -26
  321. package/src/core/data/observable-helpers/observable.is-to.js +196 -1
  322. package/src/core/data/observable-helpers/observable.prototypes.js +35 -8
  323. package/src/core/elements/anchor/anchor-with-sentinel.js +23 -2
  324. package/src/core/elements/anchor/anchor.js +16 -7
  325. package/src/core/elements/anchor/one-child-anchor-overwriting.js +2 -2
  326. package/src/core/elements/content-formatter.js +1 -1
  327. package/src/core/elements/control/for-each-array.js +9 -9
  328. package/src/core/elements/control/for-each.js +14 -14
  329. package/src/core/elements/control/show-if.js +11 -11
  330. package/src/core/elements/control/show-when.js +5 -5
  331. package/src/core/elements/control/switch.js +14 -14
  332. package/src/core/elements/description-list.js +1 -1
  333. package/src/core/elements/form.js +2 -2
  334. package/src/core/elements/fragment.js +1 -1
  335. package/src/core/elements/html5-semantics.js +1 -1
  336. package/src/core/elements/img.js +3 -3
  337. package/src/core/elements/interactive.js +1 -1
  338. package/src/core/elements/list.js +1 -1
  339. package/src/core/elements/medias.js +1 -1
  340. package/src/core/elements/meta-data.js +1 -1
  341. package/src/core/elements/svg.js +1 -1
  342. package/src/core/elements/table.js +1 -1
  343. package/src/core/errors/ArgTypesError.js +1 -1
  344. package/src/core/utils/HasEventEmitter.js +36 -2
  345. package/src/core/utils/args-types.js +9 -9
  346. package/src/core/utils/cache.js +1 -1
  347. package/src/core/utils/callback-handler.js +29 -0
  348. package/src/core/utils/debug-manager.js +6 -6
  349. package/src/core/utils/events.js +139 -139
  350. package/src/core/utils/filters/date.js +84 -3
  351. package/src/core/utils/filters/standard.js +136 -11
  352. package/src/core/utils/filters/strings.js +34 -2
  353. package/src/core/utils/filters/utils.js +40 -4
  354. package/src/core/utils/formatters.js +4 -4
  355. package/src/core/utils/helpers.js +39 -7
  356. package/src/core/utils/localstorage.js +11 -11
  357. package/src/core/utils/memoize.js +56 -3
  358. package/src/core/utils/plugins-manager.js +3 -3
  359. package/src/core/utils/property-accumulator.js +6 -6
  360. package/src/core/utils/prototypes.js +26 -1
  361. package/src/core/utils/shortcut-manager.js +2 -2
  362. package/src/core/utils/validator.js +8 -8
  363. package/src/core/wrappers/AttributesWrapper.js +32 -22
  364. package/src/core/wrappers/DocumentObserver.js +3 -3
  365. package/src/core/wrappers/ElementCreator.js +5 -5
  366. package/src/core/wrappers/HtmlElementWrapper.js +38 -12
  367. package/src/core/wrappers/NDElement.js +328 -22
  368. package/src/core/wrappers/NdPrototype.js +60 -16
  369. package/src/core/wrappers/SingletonView.js +50 -2
  370. package/src/core/wrappers/SvgElementWrapper.js +1 -1
  371. package/src/core/wrappers/constants.js +35 -2
  372. package/src/core/wrappers/prototypes/attributes-extensions.js +7 -7
  373. package/src/core/wrappers/prototypes/nd-element-extensions.js +72 -6
  374. package/src/core/wrappers/prototypes/nd-element.transition.extensions.js +42 -2
  375. package/src/core/wrappers/template-cloner/NodeCloner.js +53 -8
  376. package/src/core/wrappers/template-cloner/TemplateCloner.js +75 -6
  377. package/src/core/wrappers/template-cloner/attributes-hydrator.js +58 -2
  378. package/src/core/wrappers/template-cloner/utils.js +42 -6
  379. package/src/fetch/NativeFetch.js +3 -3
  380. package/src/i18n/bin/scan.js +6 -6
  381. package/src/i18n/index.d.ts +2 -0
  382. package/src/i18n/service/I18nService.d.ts +27 -0
  383. package/src/i18n/service/I18nService.js +5 -5
  384. package/src/i18n/service/functions.d.ts +22 -0
  385. package/src/i18n/service/functions.js +2 -2
  386. package/src/router/Route.js +3 -3
  387. package/src/router/RouteGroupHelper.js +2 -2
  388. package/src/router/Router.js +15 -15
  389. package/src/router/RouterComponent.js +33 -7
  390. package/src/router/link.js +4 -4
  391. package/src/router/modes/HashRouter.js +2 -2
  392. package/src/router/modes/HistoryRouter.js +2 -2
  393. package/src/router/modes/MemoryRouter.js +1 -1
  394. package/src/ui/components/accordion/AccordionItemRender.js +3 -3
  395. package/src/ui/components/accordion/AccordionRender.js +1 -1
  396. package/src/ui/components/alert/AlertRender.js +10 -10
  397. package/src/ui/components/avatar/avata-group/AvatarGroupRender.js +1 -1
  398. package/src/ui/components/avatar/avatar/AvatarRender.js +1 -1
  399. package/src/ui/components/breadcrumb/BreadcrumbRender.js +2 -2
  400. package/src/ui/components/button/ButtonRender.js +1 -1
  401. package/src/ui/components/card/CardRender.js +133 -0
  402. package/src/ui/components/card/card.css +169 -0
  403. package/src/ui/components/contextmenu/ContextmenuRender.js +6 -6
  404. package/src/ui/components/dropdown/DropdownRender.js +8 -8
  405. package/src/ui/components/dropdown/group/DropdownGroupRender.js +2 -2
  406. package/src/ui/components/dropdown/item/DropdownItemRender.js +1 -1
  407. package/src/ui/components/form/FieldCollectionRender.js +2 -2
  408. package/src/ui/components/form/FormControlRender.js +5 -5
  409. package/src/ui/components/form/fields/AutocompleteFieldRender.js +3 -3
  410. package/src/ui/components/form/fields/CheckboxFieldRender.js +1 -1
  411. package/src/ui/components/form/fields/CheckboxGroupFieldRender.js +1 -1
  412. package/src/ui/components/form/fields/DateFieldRender.js +7 -7
  413. package/src/ui/components/form/fields/EmailFieldRender.js +1 -1
  414. package/src/ui/components/form/fields/FieldRender.js +4 -4
  415. package/src/ui/components/form/fields/FileFieldRender.js +1 -1
  416. package/src/ui/components/form/fields/PasswordFieldRender.js +2 -2
  417. package/src/ui/components/form/fields/RadioFieldRender.js +1 -1
  418. package/src/ui/components/form/fields/RangeFieldRender.js +1 -1
  419. package/src/ui/components/form/fields/SelectFieldRender.js +2 -2
  420. package/src/ui/components/form/fields/SliderFieldRender.js +6 -6
  421. package/src/ui/components/form/fields/StringFieldRender.js +1 -1
  422. package/src/ui/components/form/fields/TelFieldRender.js +1 -1
  423. package/src/ui/components/form/fields/TextAreaFieldRender.js +1 -1
  424. package/src/ui/components/form/fields/TimeFieldRender.js +3 -3
  425. package/src/ui/components/form/fields/UrlFieldRender.js +1 -1
  426. package/src/ui/components/form/file-upload-mode/FileAvatarModeRender.js +1 -1
  427. package/src/ui/components/form/file-upload-mode/FileDropzoneModeRender.js +2 -2
  428. package/src/ui/components/form/file-upload-mode/FileUploadButtonModeRender.js +2 -2
  429. package/src/ui/components/form/file-upload-mode/FileWallModeRender.js +1 -1
  430. package/src/ui/components/form/helpers.js +8 -8
  431. package/src/ui/components/form/index.js +27 -27
  432. package/src/ui/components/list/ListRender.js +18 -0
  433. package/src/ui/components/list/divider/ListDividerRender.js +10 -0
  434. package/src/ui/components/list/divider/list-divider.css +12 -0
  435. package/src/ui/components/list/group/ListGroupRender.js +61 -0
  436. package/src/ui/components/list/group/list-group.css +62 -0
  437. package/src/ui/components/list/item/ListItemRender.js +238 -0
  438. package/src/ui/components/list/item/list-item.css +191 -0
  439. package/src/ui/components/list/list.css +24 -0
  440. package/src/ui/components/menu/MenuDividerRender.js +1 -1
  441. package/src/ui/components/menu/MenuGroupRender.js +3 -3
  442. package/src/ui/components/menu/MenuItemRender.js +2 -2
  443. package/src/ui/components/menu/MenuLinkRender.js +3 -3
  444. package/src/ui/components/menu/helpers.js +4 -4
  445. package/src/ui/components/modal/ModalRender.js +4 -4
  446. package/src/ui/components/pagination/PaginationRender.js +9 -9
  447. package/src/ui/components/popover/PopoverRender.js +7 -7
  448. package/src/ui/components/progress/ProgressRender.js +12 -12
  449. package/src/ui/components/skeleton/SkeletonRender.js +56 -0
  450. package/src/ui/components/spacer/SpacerRender.js +10 -0
  451. package/src/ui/components/splitter/SplitterGutterRender.js +1 -1
  452. package/src/ui/components/splitter/SplitterPanelRender.js +2 -2
  453. package/src/ui/components/stacks/PositionStackRender.js +1 -1
  454. package/src/ui/components/stacks/StackRender.js +1 -1
  455. package/src/ui/components/stacks/absolute-stack/AbsoluteStackRender.js +1 -1
  456. package/src/ui/components/stacks/fixed-stack/FixedStackRender.js +1 -1
  457. package/src/ui/components/stacks/h-stack/HStackRender.js +1 -1
  458. package/src/ui/components/stacks/index.js +5 -5
  459. package/src/ui/components/stacks/relative-stack/RelativeStackRender.js +1 -1
  460. package/src/ui/components/stacks/v-stack/VStackRender.js +1 -1
  461. package/src/ui/components/stepper/StepperRender.js +2 -2
  462. package/src/ui/components/stepper/StepperStepRender.js +4 -4
  463. package/src/ui/components/switch/SwitchRender.js +4 -4
  464. package/src/ui/components/table/data-table/DataTableRender.js +5 -5
  465. package/src/ui/components/table/data-table/bulk-actions.js +7 -7
  466. package/src/ui/components/table/data-table/pagination.js +6 -6
  467. package/src/ui/components/table/data-table/tables.js +25 -25
  468. package/src/ui/components/table/data-table/toolbar.js +3 -3
  469. package/src/ui/components/table/simple-table/SimpleTableRender.js +8 -8
  470. package/src/ui/components/tabs/TabsRender.js +11 -11
  471. package/src/ui/components/toast/ToastRender.js +3 -3
  472. package/src/ui/components/tooltip/TooltipRender.js +1 -1
  473. package/src/ui/index.js +44 -36
  474. package/types/elements.d.ts +163 -1037
  475. package/types/forms.d.ts +16 -20
  476. package/types/globals.d.ts +543 -0
  477. package/types/images.d.ts +2 -2
  478. package/types/observable-resource.d.ts +3 -0
  479. package/types/property-accumulator.d.ts +4 -4
  480. package/types/store.d.ts +26 -2
  481. package/types/validator.ts +3 -3
  482. package/ui.js +1 -0
  483. package/src/components/form/field/DefaultRender.js +0 -77
  484. package/src/components/form/field/FieldFactory.js +0 -107
  485. package/src/components/skeleton/SkeletonList.js +0 -0
  486. package/src/components/skeleton/SkeletonParagraph.js +0 -0
  487. package/src/components/skeleton/SkeletonTable.js +0 -0
  488. /package/{src/components/skeleton/SkeletonCard.js → docs/tutorials/.gitkeep} +0 -0
@@ -1,10 +1,33 @@
1
- import Column from "./Column";
2
- import ColumnGroup from "./ColumnGroup";
3
- import BaseComponent from "../BaseComponent";
4
- import {Observable as $} from "../../core/data/Observable";
5
- import HasEventEmitter from "../../core/utils/HasEventEmitter";
6
- import DebugManager from "../../core/utils/debug-manager";
7
-
1
+ import Column from './Column';
2
+ import ColumnGroup from './ColumnGroup';
3
+ import BaseComponent from '../BaseComponent';
4
+ import {Observable as $} from '../../core/data/Observable';
5
+ import HasEventEmitter from '../../core/utils/HasEventEmitter';
6
+ import DebugManager from '../../core/utils/debug-manager';
7
+
8
+ /**
9
+ * Full-featured data table with sorting, searching, filtering, pagination, selection, editing, expandable rows, bulk actions, and server-side support.
10
+ *
11
+ *
12
+ * @example
13
+ * const table = new DataTable()
14
+ * .column('id', 'ID').column('name', 'Name').column('email', 'Email')
15
+ * .data(users)
16
+ * .pagination(20)
17
+ * .searchable(true)
18
+ * .selectable(true)
19
+ * .onSort((col, dir) => loadData({ sort: col, dir }))
20
+ * .onPage((page, size) => loadData({ page, size }))
21
+ * .onSelect((rows) => console.log('selected', rows));
22
+ *
23
+ * DataTable.use((description, instance) => {
24
+ * // description.columns, description.data, description.loading...
25
+ * return Div({ class: 'data-table-wrapper' });
26
+ * });
27
+ *
28
+ * @constructor
29
+ * @param {GlobalAttributes} [props]
30
+ */
8
31
  export default function DataTable(props = {}) {
9
32
  if(!(this instanceof DataTable)) {
10
33
  return new DataTable(props);
@@ -99,10 +122,39 @@ BaseComponent.use(DataTable, HasEventEmitter);
99
122
 
100
123
  DataTable.defaultTemplate = null;
101
124
 
125
+ /**
126
+ * Registers the render template for DataTable.
127
+ * @param {(description: {
128
+ * header: Array<Column|ColumnGroup>,
129
+ * columns: Column[],
130
+ * data: *[]|Observable<*[]>|null,
131
+ * total: number|Observable<number>|null,
132
+ * mode: 'client'|'server',
133
+ * loading: Observable<boolean>|boolean|null,
134
+ * error: NdChild|null,
135
+ * searchable: boolean,
136
+ * filterable: boolean,
137
+ * pageSize: number|null,
138
+ * selectable: boolean,
139
+ * multiSelect: boolean,
140
+ * editable: boolean,
141
+ * expandable: ((row: *) => NdChild)|null,
142
+ * bulkActions: Array<{ label: NdChild, action: (rows: *[]) => void }>|null,
143
+ * rowProps: ((row: *) => GlobalAttributes)|null,
144
+ * empty: NdChild|null,
145
+ * layout: ((desc: *, instance: DataTable) => NdChild)|null,
146
+ * labels: Record<string, string>,
147
+ * props: GlobalAttributes,
148
+ * }, instance: DataTable) => NdChild} template
149
+ */
102
150
  DataTable.use = function(template) {
103
151
  DataTable.defaultTemplate = template;
104
152
  };
105
153
 
154
+ /**
155
+ * @param {GlobalAttributes} [props]
156
+ * @returns {DataTable}
157
+ */
106
158
  DataTable.create = function(props) {
107
159
  return new DataTable(props);
108
160
  };
@@ -153,7 +205,7 @@ DataTable.prototype.$beforeRender = function() {
153
205
  for(const optionKey in optionsKeys) {
154
206
  const source = optionsKeys[optionKey];
155
207
  if(options.include.includes(optionKey)) {
156
- state[optionKey] = source.val()
208
+ state[optionKey] = source.val();
157
209
  }
158
210
  }
159
211
 
@@ -171,16 +223,23 @@ DataTable.prototype.$beforeRender = function() {
171
223
  for(const optionKey in optionsKeys) {
172
224
  const source = optionsKeys[optionKey];
173
225
  if(options.include.includes(optionKey)) {
174
- source.subscribe(save)
226
+ source.subscribe(save);
175
227
  }
176
228
  }
177
229
  };
178
230
 
179
231
  // ---------------------------------------------
180
- // COLONNES
232
+ // Columns
181
233
  // ---------------------------------------------
182
234
 
183
235
 
236
+ /**
237
+ * @param {string} key
238
+ * @param {NdChild} title
239
+ * @param {GlobalAttributes} [props]
240
+ * @param {((col: Column) => void)} [callback]
241
+ * @returns {this}
242
+ */
184
243
  DataTable.prototype.column = function(key, title, props, callback) {
185
244
  if(typeof props === 'function') {
186
245
  callback = props;
@@ -188,13 +247,18 @@ DataTable.prototype.column = function(key, title, props, callback) {
188
247
  }
189
248
  const column = new Column(key);
190
249
  column.title(title);
191
- column.props(props)
250
+ column.props(props);
192
251
  callback && callback(column);
193
252
  this.$description.columns.push(column);
194
253
  this.$description.header.push(column);
195
254
  return this;
196
255
  };
197
256
 
257
+ /**
258
+ * @param {NdChild} title
259
+ * @param {(group: ColumnGroup) => void} callback
260
+ * @returns {this}
261
+ */
198
262
  DataTable.prototype.group = function(title, callback) {
199
263
  const group = new ColumnGroup(title);
200
264
  callback && callback(group);
@@ -205,129 +269,212 @@ DataTable.prototype.group = function(title, callback) {
205
269
  };
206
270
 
207
271
  // ---------------------------------------------
208
- // DONNÉES
272
+ // Data
209
273
  // ---------------------------------------------
210
274
 
275
+ /**
276
+ * @param {*[]|Observable<*[]>} data
277
+ * @returns {this}
278
+ */
211
279
  DataTable.prototype.data = function(data) {
212
280
  this.$description.data = data;
213
281
  return this;
214
282
  };
215
283
 
284
+ /**
285
+ * @param {number|Observable<number>} total
286
+ * @returns {this}
287
+ */
216
288
  DataTable.prototype.total = function(total) {
217
289
  this.$description.$total = BaseComponent.obs(total);
218
290
  return this;
219
291
  };
220
292
 
293
+ /**
294
+ * @returns {this}
295
+ */
221
296
  DataTable.prototype.clientSide = function() {
222
297
  this.$description.mode = 'client';
223
298
  return this;
224
299
  };
225
300
 
301
+ /**
302
+ * @returns {this}
303
+ */
226
304
  DataTable.prototype.serverSide = function() {
227
305
  this.$description.mode = 'server';
228
306
  return this;
229
307
  };
230
308
 
309
+ /**
310
+ * @param {boolean|Observable<boolean>} loading
311
+ * @returns {this}
312
+ */
231
313
  DataTable.prototype.loading = function(loading) {
232
314
  this.$description.loading = loading;
233
315
  return this;
234
316
  };
235
317
 
318
+ /**
319
+ * @param {*} error
320
+ * @returns {this}
321
+ */
236
322
  DataTable.prototype.error = function(error) {
237
323
  this.$description.error = error;
238
324
  return this;
239
325
  };
240
326
 
241
327
  // ---------------------------------------------
242
- // TRI
328
+ // Order
243
329
  // ---------------------------------------------
244
330
 
331
+ /**
332
+ * @param {*} col
333
+ * @param {*} [dir]
334
+ * @returns {this}
335
+ */
245
336
  DataTable.prototype.defaultSort = function(col, dir = 'asc') {
246
337
  this.$description.defaultSort = {col, dir};
247
338
  this.$description.$sort.push({col, dir});
248
339
  return this;
249
340
  };
250
341
 
342
+ /**
343
+ * @param {*} [enabled]
344
+ * @returns {this}
345
+ */
251
346
  DataTable.prototype.multiSort = function(enabled = true) {
252
347
  this.$description.multiSort = enabled;
253
348
  return this;
254
349
  };
255
350
 
351
+ /**
352
+ * @param {(col: string, dir: 'asc'|'desc') => void} handler
353
+ * @returns {this}
354
+ */
256
355
  DataTable.prototype.onSort = function(handler) {
257
356
  this.on('sort', handler);
258
357
  return this;
259
358
  };
260
359
 
261
360
  // ---------------------------------------------
262
- // RECHERCHE & FILTRES
361
+ // Filters & Search
263
362
  // ---------------------------------------------
264
363
 
364
+ /**
365
+ * @param {*} [enabled]
366
+ * @returns {this}
367
+ */
265
368
  DataTable.prototype.searchable = function(enabled = true) {
266
369
  this.$description.searchable = enabled;
267
370
  return this;
268
371
  };
269
372
 
373
+ /**
374
+ * @param {*} [enabled]
375
+ * @returns {this}
376
+ */
270
377
  DataTable.prototype.filterable = function(enabled = true) {
271
378
  this.$description.filterable = enabled;
272
379
  return this;
273
380
  };
274
381
 
382
+ /**
383
+ * @param {Record<string, *>} filters
384
+ * @returns {this}
385
+ */
275
386
  DataTable.prototype.defaultFilters = function(filters) {
276
387
  this.$description.defaultFilters = filters;
277
388
  this.$description.$filters.set(filters);
278
389
  return this;
279
390
  };
280
391
 
392
+ /**
393
+ * @param {Function} handler
394
+ * @returns {this}
395
+ */
281
396
  DataTable.prototype.onSearch = function(handler) {
282
397
  this.on('search', handler);
283
398
  return this;
284
399
  };
285
400
 
401
+ /**
402
+ * @param {Function} handler
403
+ * @returns {this}
404
+ */
286
405
  DataTable.prototype.onFilter = function(handler) {
287
406
  this.on('filter', handler);
288
407
  return this;
289
408
  };
290
409
 
291
410
  // ---------------------------------------------
292
- // PAGINATION
411
+ // Pagination
293
412
  // ---------------------------------------------
294
413
 
414
+ /**
415
+ * @param {number} pageSize
416
+ * @returns {this}
417
+ */
295
418
  DataTable.prototype.pagination = function(pageSize) {
296
419
  this.$description.pagination = true;
297
420
  this.$description.$pageSize.set(pageSize);
298
421
  return this;
299
422
  };
300
423
 
424
+ /**
425
+ * @param {number[]} sizes
426
+ * @returns {this}
427
+ */
301
428
  DataTable.prototype.pageSizes = function(sizes) {
302
429
  this.$description.pageSizes = sizes;
303
430
  return this;
304
431
  };
305
432
 
433
+ /**
434
+ * @param {number} page
435
+ * @returns {this}
436
+ */
306
437
  DataTable.prototype.defaultPage = function(page) {
307
438
  this.$description.defaultPage = page;
308
439
  this.$description.$currentPage.set(page);
309
440
  return this;
310
441
  };
311
442
 
443
+ /**
444
+ * @param {(page: number, pageSize: number) => void} handler
445
+ * @returns {this}
446
+ */
312
447
  DataTable.prototype.onPage = function(handler) {
313
448
  this.on('page', handler);
314
449
  return this;
315
450
  };
316
451
 
317
452
  // ---------------------------------------------
318
- // SÉLECTION
453
+ // Selection
319
454
  // ---------------------------------------------
320
455
 
456
+ /**
457
+ * @param {*} [enabled]
458
+ * @returns {this}
459
+ */
321
460
  DataTable.prototype.selectable = function(enabled = true) {
322
461
  this.$description.selectable = enabled;
323
462
  return this;
324
463
  };
325
464
 
465
+ /**
466
+ * @param {*} [enabled]
467
+ * @returns {this}
468
+ */
326
469
  DataTable.prototype.multiSelect = function(enabled = true) {
327
470
  this.$description.multiSelect = enabled;
328
471
  return this;
329
472
  };
330
473
 
474
+ /**
475
+ * @param {ObservableArray} $obs
476
+ * @returns {this}
477
+ */
331
478
  DataTable.prototype.selectedRows = function($obs) {
332
479
  if(!$obs.__$isObservableArray) {
333
480
  DebugManager.warn('Database', 'selectedRow should take an Observable array');
@@ -336,25 +483,41 @@ DataTable.prototype.selectedRows = function($obs) {
336
483
  return this;
337
484
  };
338
485
 
486
+ /**
487
+ * @param {Function} handler
488
+ * @returns {this}
489
+ */
339
490
  DataTable.prototype.onSelect = function(handler) {
340
491
  this.on('select', handler);
341
492
  return this;
342
493
  };
343
494
 
344
495
  // ---------------------------------------------
345
- // ÉDITION
496
+ // Edition
346
497
  // ---------------------------------------------
347
498
 
499
+ /**
500
+ * @param {*} [enabled]
501
+ * @returns {this}
502
+ */
348
503
  DataTable.prototype.editable = function(enabled = true) {
349
504
  this.$description.editable = enabled;
350
505
  return this;
351
506
  };
352
507
 
508
+ /**
509
+ * @param {Function} handler
510
+ * @returns {this}
511
+ */
353
512
  DataTable.prototype.onEdit = function(handler) {
354
513
  this.on('edit', handler);
355
514
  return this;
356
515
  };
357
516
 
517
+ /**
518
+ * @param {Function} handler
519
+ * @returns {this}
520
+ */
358
521
  DataTable.prototype.onEditCancel = function(handler) {
359
522
  this.on('editCancel', handler);
360
523
  return this;
@@ -364,25 +527,45 @@ DataTable.prototype.onEditCancel = function(handler) {
364
527
  // EXPORT
365
528
  // ---------------------------------------------
366
529
 
530
+ /**
531
+ * @param {NdChild} label
532
+ * @param {'csv'|'xlsx'|string} format
533
+ * @param {string} [filename]
534
+ * @returns {this}
535
+ */
367
536
  DataTable.prototype.export = function(label, format, filename) {
368
537
  this.$description.exports.push({ label, format, filename });
369
538
  return this;
370
539
  };
371
540
 
541
+ /**
542
+ * @param {string} name
543
+ * @returns {this}
544
+ */
372
545
  DataTable.prototype.exportFileName = function(name) {
373
546
  this.$description.exportFileName = name;
374
547
  return this;
375
548
  };
376
549
 
550
+ /**
551
+ * @param {Function} handler
552
+ * @returns {this}
553
+ */
377
554
  DataTable.prototype.onExport = function(handler) {
378
555
  this.on('export', handler);
379
556
  return this;
380
557
  };
381
558
 
382
559
  // ---------------------------------------------
383
- // LIGNES
560
+ // Rows
384
561
  // ---------------------------------------------
385
562
 
563
+ /**
564
+ * @param {(row: *) => NdChild} renderFn
565
+ * @param {NdChild} [isExpandedIcon='▼']
566
+ * @param {NdChild} [isNotExpandedIcon='▶']
567
+ * @returns {this}
568
+ */
386
569
  DataTable.prototype.expandable = function(renderFn, isExpandedIcon = '▼', isNotExpandedIcon = '▶') {
387
570
  this.$description.expandable = renderFn;
388
571
  this.$description.isExpandedIcon = isExpandedIcon;
@@ -390,31 +573,55 @@ DataTable.prototype.expandable = function(renderFn, isExpandedIcon = '▼', isNo
390
573
  return this;
391
574
  };
392
575
 
576
+ /**
577
+ * @param {(desc: *, instance: *) => NdChild} renderFn
578
+ * @returns {this}
579
+ */
393
580
  DataTable.prototype.masterDetail = function(renderFn) {
394
581
  this.$description.masterDetail = renderFn;
395
582
  return this;
396
583
  };
397
584
 
585
+ /**
586
+ * @param {{ label: NdChild, action: (rows: *[]) => void }[]} actions
587
+ * @returns {this}
588
+ */
398
589
  DataTable.prototype.bulkActions = function(actions) {
399
590
  this.$description.bulkActions = actions;
400
591
  return this;
401
592
  };
402
593
 
594
+ /**
595
+ * @param {(row: *) => GlobalAttributes} fn
596
+ * @returns {this}
597
+ */
403
598
  DataTable.prototype.rowProps = function(fn) {
404
599
  this.$description.rowProps = fn;
405
600
  return this;
406
601
  };
407
602
 
603
+ /**
604
+ * @param {(row: *, event: MouseEvent) => void} handler
605
+ * @returns {this}
606
+ */
408
607
  DataTable.prototype.onRowClick = function(handler) {
409
608
  this.$description.onRowClick = handler;
410
609
  return this;
411
610
  };
412
611
 
612
+ /**
613
+ * @param {(row: *, event: MouseEvent) => void} handler
614
+ * @returns {this}
615
+ */
413
616
  DataTable.prototype.onRowDoubleClick = function(handler) {
414
617
  this.$description.onRowDoubleClick = handler;
415
618
  return this;
416
619
  };
417
620
 
621
+ /**
622
+ * @param {(row: *, event: MouseEvent) => void} handler
623
+ * @returns {this}
624
+ */
418
625
  DataTable.prototype.onRowHover = function(handler) {
419
626
  this.$description.onRowHover = handler;
420
627
  return this;
@@ -424,11 +631,19 @@ DataTable.prototype.onRowHover = function(handler) {
424
631
  // EMPTY & ERROR
425
632
  // ---------------------------------------------
426
633
 
634
+ /**
635
+ * @param {(desc: *, instance: *) => NdChild} layoutFn
636
+ * @returns {this}
637
+ */
427
638
  DataTable.prototype.layout = function(layoutFn) {
428
639
  this.$description.layout = layoutFn;
429
640
  return this;
430
641
  };
431
642
 
643
+ /**
644
+ * @param {Record<string, string>} labels
645
+ * @returns {this}
646
+ */
432
647
  DataTable.prototype.labels = function(labels) {
433
648
  this.$description.labels = {
434
649
  ...this.$description.labels,
@@ -441,6 +656,11 @@ DataTable.prototype.labels = function(labels) {
441
656
  // PERSISTANCE
442
657
  // ---------------------------------------------
443
658
 
659
+ /**
660
+ * @param {string} key
661
+ * @param {Record<string, *>} [options]
662
+ * @returns {this}
663
+ */
444
664
  DataTable.prototype.persist = function(key, options = {}) {
445
665
  this.$description.persistKey = key;
446
666
  this.$description.persistOptions = {
@@ -451,19 +671,28 @@ DataTable.prototype.persist = function(key, options = {}) {
451
671
  };
452
672
 
453
673
  // ---------------------------------------------
454
- // ACTIONS PUBLIQUES
674
+ // Public Actions
455
675
  // ---------------------------------------------
456
676
 
677
+ /**
678
+ * @returns {this}
679
+ */
457
680
  DataTable.prototype.refresh = function() {
458
681
  this.emit('refresh');
459
682
  return this;
460
683
  };
461
684
 
685
+ /**
686
+ * @returns {this}
687
+ */
462
688
  DataTable.prototype.clearSelection = function() {
463
689
  this.$description.$selectedRows.clear();
464
690
  return this;
465
691
  };
466
692
 
693
+ /**
694
+ * @returns {this}
695
+ */
467
696
  DataTable.prototype.clearFilters = function() {
468
697
  this.$description.$filters.set({});
469
698
  this.$description.$search.set('');
@@ -471,12 +700,20 @@ DataTable.prototype.clearFilters = function() {
471
700
  return this;
472
701
  };
473
702
 
703
+ /**
704
+ * @param {number} page
705
+ * @returns {this}
706
+ */
474
707
  DataTable.prototype.goToPage = function(page) {
475
708
  this.$description.$currentPage.set(page);
476
709
  this.emit('page', page, this.$description.$pageSize.val());
477
710
  return this;
478
711
  };
479
712
 
713
+ /**
714
+ * @param {NdChild} content
715
+ * @returns {this}
716
+ */
480
717
  DataTable.prototype.empty = function(content) {
481
718
  this.$description.empty = content;
482
719
  return this;
@@ -1,7 +1,13 @@
1
- import Column from "./Column";
2
- import ColumnGroup from "./ColumnGroup";
3
- import BaseComponent from "../BaseComponent";
1
+ import Column from './Column';
2
+ import ColumnGroup from './ColumnGroup';
3
+ import BaseComponent from '../BaseComponent';
4
4
 
5
+ /**
6
+ *
7
+ *
8
+ * @constructor
9
+ * @param {GlobalAttributes} [props]
10
+ */
5
11
  export default function SimpleTable(props = {}) {
6
12
  if(!(this instanceof SimpleTable)) {
7
13
  return new SimpleTable(props);
@@ -20,7 +26,7 @@ export default function SimpleTable(props = {}) {
20
26
  noHeader: null,
21
27
  cellProps: null,
22
28
  headerProps: null,
23
- props
29
+ props,
24
30
  };
25
31
  }
26
32
 
@@ -28,14 +34,38 @@ BaseComponent.extends(SimpleTable);
28
34
 
29
35
  SimpleTable.defaultTemplate = null;
30
36
 
37
+ /**
38
+ * Registers the render template for SimpleTable.
39
+ * @param {(description: {
40
+ * header: Array<Column|ColumnGroup>,
41
+ * columns: Column[],
42
+ * data: *[]|Observable<*[]>|null,
43
+ * empty: NdChild|null,
44
+ * onRowClick: ((row: *, event: MouseEvent) => void)|null,
45
+ * rowProps: ((row: *) => GlobalAttributes)|null,
46
+ * noHeader: boolean|null,
47
+ * props: GlobalAttributes,
48
+ * }, instance: SimpleTable) => NdChild} template
49
+ */
31
50
  SimpleTable.use = function(template) {
32
51
  SimpleTable.defaultTemplate = template;
33
52
  };
34
53
 
54
+ /**
55
+ * @param {GlobalAttributes} [props]
56
+ * @returns {SimpleTable}
57
+ */
35
58
  SimpleTable.create = function(props) {
36
59
  return new SimpleTable(props);
37
60
  };
38
61
 
62
+ /**
63
+ * @param {string} key
64
+ * @param {NdChild} title
65
+ * @param {GlobalAttributes} [props]
66
+ * @param {((col: Column) => void)} [callback]
67
+ * @returns {this}
68
+ */
39
69
  SimpleTable.prototype.column = function(key, title, props, callback) {
40
70
  if(typeof props === 'function') {
41
71
  callback = props;
@@ -50,6 +80,11 @@ SimpleTable.prototype.column = function(key, title, props, callback) {
50
80
  return this;
51
81
  };
52
82
 
83
+ /**
84
+ * @param {NdChild} title
85
+ * @param {(group: ColumnGroup) => void} callback
86
+ * @returns {this}
87
+ */
53
88
  SimpleTable.prototype.group = function(title, callback) {
54
89
  const group = new ColumnGroup(title);
55
90
  callback && callback(group);
@@ -59,26 +94,45 @@ SimpleTable.prototype.group = function(title, callback) {
59
94
  return this;
60
95
  };
61
96
 
97
+ /**
98
+ * @param {*} data
99
+ * @returns {this}
100
+ */
62
101
  SimpleTable.prototype.data = function(data) {
63
102
  this.$description.data = data;
64
103
  return this;
65
104
  };
66
105
 
106
+ /**
107
+ * @param {NdChild} content
108
+ * @returns {this}
109
+ */
67
110
  SimpleTable.prototype.empty = function(content) {
68
111
  this.$description.empty = content;
69
112
  return this;
70
113
  };
71
114
 
115
+ /**
116
+ * @returns {this}
117
+ */
72
118
  SimpleTable.prototype.noHeader = function() {
73
119
  this.$description.noHeader = true;
74
120
  return this;
75
121
  };
76
122
 
123
+ /**
124
+ * @param {(row: *, event: MouseEvent) => void} handler
125
+ * @returns {this}
126
+ */
77
127
  SimpleTable.prototype.onRowClick = function(handler) {
78
128
  this.$description.onRowClick = handler;
79
129
  return this;
80
130
  };
81
131
 
132
+ /**
133
+ * @param {(row: *) => GlobalAttributes} fn
134
+ * @returns {this}
135
+ */
82
136
  SimpleTable.prototype.rowProps = function(fn) {
83
137
  this.$description.rowProps = fn;
84
138
  return this;
@@ -3,5 +3,5 @@ import DataTable from './DataTable';
3
3
 
4
4
  export {
5
5
  SimpleTable,
6
- DataTable
7
- }
6
+ DataTable,
7
+ };