@sd-angular/core 19.0.0-beta.98 → 19.0.3

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 (368) hide show
  1. package/README.md +720 -716
  2. package/assets/images/coming-soon.svg +23 -0
  3. package/assets/images/data-empty.svg +21 -0
  4. package/assets/images/expired.svg +22 -0
  5. package/assets/images/file-error.svg +28 -0
  6. package/assets/images/filter-empty.svg +20 -0
  7. package/assets/images/filter-required.svg +21 -0
  8. package/assets/images/forbidden.svg +15 -0
  9. package/assets/images/image-error.svg +27 -0
  10. package/assets/images/maintenance.svg +23 -0
  11. package/assets/images/not-found.svg +20 -0
  12. package/assets/images/offline.svg +20 -0
  13. package/assets/images/submitted.svg +18 -0
  14. package/assets/images/success.svg +18 -0
  15. package/assets/images/unauthorized.svg +22 -0
  16. package/assets/images/unknown-error.svg +18 -0
  17. package/assets/scss/README.md +433 -353
  18. package/assets/scss/core/_inline-edit.scss +105 -0
  19. package/assets/scss/core/form.scss +58 -1
  20. package/assets/scss/core/image.scss +35 -0
  21. package/assets/scss/core/utilities/_base.scss +6 -6
  22. package/assets/scss/core/utilities/_grid.scss +4 -3
  23. package/assets/scss/core/utilities/_index.scss +1 -1
  24. package/assets/scss/core/utilities/_sizing.scss +2 -2
  25. package/assets/scss/sd-core.scss +1 -2
  26. package/components/anchor/src/components/anchor/anchor.component.d.ts +5 -5
  27. package/components/anchor/src/components/anchor-nav/anchor-nav.component.d.ts +21 -0
  28. package/components/autoid-inspector/src/autoid-inspector.component.d.ts +18 -0
  29. package/components/autoid-inspector/src/models/autoid-element.model.d.ts +45 -1
  30. package/components/autoid-inspector/src/models/autoid-export-format.model.d.ts +19 -0
  31. package/components/autoid-inspector/src/services/autoid-export.service.d.ts +10 -2
  32. package/components/autoid-inspector/src/services/autoid-scanner.service.d.ts +26 -3
  33. package/components/badge/src/badge.component.d.ts +20 -3
  34. package/components/button/src/button.component.d.ts +2 -1
  35. package/components/ckeditor-styles/index.d.ts +1 -0
  36. package/components/ckeditor-styles/src/ckeditor-styles.component.d.ts +25 -0
  37. package/components/editor/src/editor.component.d.ts +2 -0
  38. package/components/form-generic/src/components/form-builder/form-builder.component.d.ts +12 -13
  39. package/components/form-generic/src/models/form-generic-component.model.d.ts +5 -6
  40. package/components/form-generic/src/models/form-generic-expression.model.d.ts +1 -1
  41. package/components/history/models/history.model.d.ts +2 -2
  42. package/components/index.d.ts +2 -0
  43. package/components/inform/index.d.ts +2 -0
  44. package/components/inform/src/inform-action.directive.d.ts +9 -0
  45. package/components/inform/src/inform.component.d.ts +59 -0
  46. package/components/modal/src/modal.component.d.ts +3 -1
  47. package/components/modal-resizable/index.d.ts +1 -0
  48. package/components/modal-resizable/src/modal-resizable.component.d.ts +29 -0
  49. package/components/operator/index.d.ts +1 -0
  50. package/components/operator/src/operator.component.d.ts +34 -0
  51. package/components/query-bar/index.d.ts +2 -0
  52. package/components/query-bar/src/components/actions-bar/actions-bar.component.d.ts +28 -0
  53. package/components/query-bar/src/components/build-chip/build-chip.component.d.ts +67 -0
  54. package/components/query-bar/src/components/chip-popover/chip-popover.component.d.ts +73 -0
  55. package/components/query-bar/src/components/field-picker/field-picker.component.d.ts +37 -0
  56. package/components/query-bar/src/components/inline-chip/inline-chip.component.d.ts +76 -0
  57. package/components/query-bar/src/components/inline-value-chip/inline-value-chip.component.d.ts +67 -0
  58. package/components/query-bar/src/components/popover-chip/popover-chip.component.d.ts +35 -0
  59. package/components/query-bar/src/components/saved-filters-menu/saved-filters-menu.component.d.ts +39 -0
  60. package/components/query-bar/src/query-bar.component.d.ts +137 -0
  61. package/components/query-bar/src/query-bar.model.d.ts +136 -0
  62. package/components/section/src/section.component.d.ts +2 -1
  63. package/components/side-drawer/src/side-drawer.component.d.ts +7 -3
  64. package/components/stepper/index.d.ts +2 -0
  65. package/components/stepper/src/step.component.d.ts +17 -0
  66. package/components/stepper/src/stepper.component.d.ts +33 -0
  67. package/components/tab/index.d.ts +2 -0
  68. package/components/tab/src/tab-group.component.d.ts +37 -0
  69. package/components/tab/src/tab.component.d.ts +13 -0
  70. package/components/tab-router/src/decorators/tab.decorator.d.ts +2 -2
  71. package/components/tab-router/src/models/tab-router.model.d.ts +2 -2
  72. package/components/table/index.d.ts +1 -0
  73. package/components/table/src/components/column-title/column-title.component.d.ts +1 -1
  74. package/components/table/src/components/command/desktop-command.component.d.ts +14 -0
  75. package/components/table/src/components/command/pipes/command.pipe.d.ts +30 -0
  76. package/components/table/src/components/command/pipes/filter.pipe.d.ts +35 -0
  77. package/components/table/src/components/config/config.component.d.ts +9 -14
  78. package/components/table/src/components/desktop-cell/desktop-cell.component.d.ts +4 -4
  79. package/components/table/src/components/filter/column-filter/column-filter.component.d.ts +32 -0
  80. package/components/table/src/components/filter/external-filter/external-filter.component.d.ts +27 -0
  81. package/components/table/src/components/filter/index.d.ts +3 -0
  82. package/components/table/src/components/filter/mobile-filter/mobile-filter.component.d.ts +42 -0
  83. package/components/table/src/components/index.d.ts +1 -2
  84. package/components/table/src/components/selector-action/selector-action.component.d.ts +5 -5
  85. package/components/table/src/configurations/table.configuration.d.ts +3 -3
  86. package/components/table/src/directives/index.d.ts +1 -0
  87. package/components/table/src/directives/sd-table-cell-def.directive.d.ts +13 -5
  88. package/components/table/src/directives/sd-table-column-filter-def.directive.d.ts +13 -5
  89. package/components/table/src/directives/sd-table-expand-def.directive.d.ts +10 -4
  90. package/components/table/src/directives/sd-table-filter-def.directive.d.ts +5 -5
  91. package/components/table/src/directives/sd-table-footer-def.directive.d.ts +13 -5
  92. package/components/table/src/directives/sd-table-group-def.directive.d.ts +44 -0
  93. package/components/table/src/directives/sd-table-title-def.directive.d.ts +11 -5
  94. package/components/table/src/models/index.d.ts +1 -0
  95. package/components/table/src/models/table-column.model.d.ts +13 -13
  96. package/components/table/src/models/table-command.model.d.ts +3 -2
  97. package/components/table/src/models/table-item.model.d.ts +19 -4
  98. package/components/table/src/models/table-option-export.model.d.ts +3 -3
  99. package/components/table/src/models/table-option-group.model.d.ts +19 -2
  100. package/components/table/src/models/table-option-selector.model.d.ts +17 -1
  101. package/components/table/src/models/table-option-tree.model.d.ts +96 -8
  102. package/components/table/src/models/table-option.model.d.ts +24 -2
  103. package/components/table/src/pipes/sd-group.pipe.d.ts +15 -1
  104. package/components/table/src/services/table-filter/table-filter.model.d.ts +9 -9
  105. package/components/table/src/services/table-filter/table-filter.service.d.ts +2 -2
  106. package/components/table/src/services/tree/tree.util.d.ts +43 -2
  107. package/components/table/src/table.component.d.ts +42 -14
  108. package/components/upload-file/src/upload-file.component.d.ts +3 -0
  109. package/components/view/src/view.component.d.ts +35 -1
  110. package/directives/src/sd-desktop.directive.d.ts +2 -4
  111. package/directives/src/sd-mobile.directive.d.ts +2 -4
  112. package/fesm2022/sd-angular-core-components-anchor.mjs +95 -62
  113. package/fesm2022/sd-angular-core-components-anchor.mjs.map +1 -1
  114. package/fesm2022/sd-angular-core-components-autoid-inspector.mjs +254 -29
  115. package/fesm2022/sd-angular-core-components-autoid-inspector.mjs.map +1 -1
  116. package/fesm2022/sd-angular-core-components-avatar.mjs +2 -2
  117. package/fesm2022/sd-angular-core-components-avatar.mjs.map +1 -1
  118. package/fesm2022/sd-angular-core-components-badge.mjs +18 -3
  119. package/fesm2022/sd-angular-core-components-badge.mjs.map +1 -1
  120. package/fesm2022/sd-angular-core-components-button.mjs +2 -2
  121. package/fesm2022/sd-angular-core-components-button.mjs.map +1 -1
  122. package/fesm2022/sd-angular-core-components-ckeditor-styles.mjs +38 -0
  123. package/fesm2022/sd-angular-core-components-ckeditor-styles.mjs.map +1 -0
  124. package/fesm2022/sd-angular-core-components-document-builder.mjs +10 -8
  125. package/fesm2022/sd-angular-core-components-document-builder.mjs.map +1 -1
  126. package/fesm2022/sd-angular-core-components-editor.mjs +6 -2
  127. package/fesm2022/sd-angular-core-components-editor.mjs.map +1 -1
  128. package/fesm2022/sd-angular-core-components-form-generic.mjs +151 -237
  129. package/fesm2022/sd-angular-core-components-form-generic.mjs.map +1 -1
  130. package/fesm2022/sd-angular-core-components-history.mjs +3 -2
  131. package/fesm2022/sd-angular-core-components-history.mjs.map +1 -1
  132. package/fesm2022/sd-angular-core-components-inform.mjs +190 -0
  133. package/fesm2022/sd-angular-core-components-inform.mjs.map +1 -0
  134. package/fesm2022/sd-angular-core-components-mini-editor.mjs +4 -3
  135. package/fesm2022/sd-angular-core-components-mini-editor.mjs.map +1 -1
  136. package/fesm2022/sd-angular-core-components-modal-resizable.mjs +158 -0
  137. package/fesm2022/sd-angular-core-components-modal-resizable.mjs.map +1 -0
  138. package/fesm2022/sd-angular-core-components-modal.mjs +5 -4
  139. package/fesm2022/sd-angular-core-components-modal.mjs.map +1 -1
  140. package/fesm2022/sd-angular-core-components-operator.mjs +77 -0
  141. package/fesm2022/sd-angular-core-components-operator.mjs.map +1 -0
  142. package/fesm2022/sd-angular-core-components-preview.mjs +4 -4
  143. package/fesm2022/sd-angular-core-components-preview.mjs.map +1 -1
  144. package/fesm2022/sd-angular-core-components-query-bar.mjs +1384 -0
  145. package/fesm2022/sd-angular-core-components-query-bar.mjs.map +1 -0
  146. package/fesm2022/sd-angular-core-components-quick-action.mjs +2 -2
  147. package/fesm2022/sd-angular-core-components-quick-action.mjs.map +1 -1
  148. package/fesm2022/sd-angular-core-components-section.mjs.map +1 -1
  149. package/fesm2022/sd-angular-core-components-side-drawer.mjs +17 -11
  150. package/fesm2022/sd-angular-core-components-side-drawer.mjs.map +1 -1
  151. package/fesm2022/sd-angular-core-components-splitter.mjs +5 -2
  152. package/fesm2022/sd-angular-core-components-splitter.mjs.map +1 -1
  153. package/fesm2022/sd-angular-core-components-stepper.mjs +140 -0
  154. package/fesm2022/sd-angular-core-components-stepper.mjs.map +1 -0
  155. package/fesm2022/sd-angular-core-components-tab-router.mjs +3 -3
  156. package/fesm2022/sd-angular-core-components-tab-router.mjs.map +1 -1
  157. package/fesm2022/sd-angular-core-components-tab.mjs +145 -0
  158. package/fesm2022/sd-angular-core-components-tab.mjs.map +1 -0
  159. package/fesm2022/sd-angular-core-components-table.mjs +1138 -725
  160. package/fesm2022/sd-angular-core-components-table.mjs.map +1 -1
  161. package/fesm2022/sd-angular-core-components-upload-file.mjs +28 -23
  162. package/fesm2022/sd-angular-core-components-upload-file.mjs.map +1 -1
  163. package/fesm2022/sd-angular-core-components-view.mjs +44 -9
  164. package/fesm2022/sd-angular-core-components-view.mjs.map +1 -1
  165. package/fesm2022/sd-angular-core-components.mjs +2 -0
  166. package/fesm2022/sd-angular-core-components.mjs.map +1 -1
  167. package/fesm2022/sd-angular-core-directives.mjs +19 -21
  168. package/fesm2022/sd-angular-core-directives.mjs.map +1 -1
  169. package/fesm2022/sd-angular-core-forms-autocomplete.mjs +46 -14
  170. package/fesm2022/sd-angular-core-forms-autocomplete.mjs.map +1 -1
  171. package/fesm2022/sd-angular-core-forms-checkbox.mjs +101 -85
  172. package/fesm2022/sd-angular-core-forms-checkbox.mjs.map +1 -1
  173. package/fesm2022/sd-angular-core-forms-chip-calendar.mjs +101 -61
  174. package/fesm2022/sd-angular-core-forms-chip-calendar.mjs.map +1 -1
  175. package/fesm2022/sd-angular-core-forms-chip.mjs +98 -52
  176. package/fesm2022/sd-angular-core-forms-chip.mjs.map +1 -1
  177. package/fesm2022/sd-angular-core-forms-date-range.mjs +73 -10
  178. package/fesm2022/sd-angular-core-forms-date-range.mjs.map +1 -1
  179. package/fesm2022/sd-angular-core-forms-date.mjs +45 -15
  180. package/fesm2022/sd-angular-core-forms-date.mjs.map +1 -1
  181. package/fesm2022/sd-angular-core-forms-datetime.mjs +39 -14
  182. package/fesm2022/sd-angular-core-forms-datetime.mjs.map +1 -1
  183. package/fesm2022/sd-angular-core-forms-directives.mjs +18 -24
  184. package/fesm2022/sd-angular-core-forms-directives.mjs.map +1 -1
  185. package/fesm2022/sd-angular-core-forms-inline-text.mjs +167 -0
  186. package/fesm2022/sd-angular-core-forms-inline-text.mjs.map +1 -0
  187. package/fesm2022/sd-angular-core-forms-input-color.mjs +119 -0
  188. package/fesm2022/sd-angular-core-forms-input-color.mjs.map +1 -0
  189. package/fesm2022/sd-angular-core-forms-input-number.mjs +72 -14
  190. package/fesm2022/sd-angular-core-forms-input-number.mjs.map +1 -1
  191. package/fesm2022/sd-angular-core-forms-input.mjs +96 -29
  192. package/fesm2022/sd-angular-core-forms-input.mjs.map +1 -1
  193. package/fesm2022/sd-angular-core-forms-models.mjs +107 -2
  194. package/fesm2022/sd-angular-core-forms-models.mjs.map +1 -1
  195. package/fesm2022/sd-angular-core-forms-radio.mjs +134 -174
  196. package/fesm2022/sd-angular-core-forms-radio.mjs.map +1 -1
  197. package/fesm2022/sd-angular-core-forms-select.mjs +74 -23
  198. package/fesm2022/sd-angular-core-forms-select.mjs.map +1 -1
  199. package/fesm2022/sd-angular-core-forms-switch.mjs +98 -96
  200. package/fesm2022/sd-angular-core-forms-switch.mjs.map +1 -1
  201. package/fesm2022/sd-angular-core-forms-textarea.mjs +39 -12
  202. package/fesm2022/sd-angular-core-forms-textarea.mjs.map +1 -1
  203. package/fesm2022/sd-angular-core-i18n.mjs +270 -20
  204. package/fesm2022/sd-angular-core-i18n.mjs.map +1 -1
  205. package/fesm2022/sd-angular-core-modules-auth.mjs +4 -4
  206. package/fesm2022/sd-angular-core-modules-auth.mjs.map +1 -1
  207. package/fesm2022/sd-angular-core-modules-authom.mjs +1 -1
  208. package/fesm2022/sd-angular-core-modules-authom.mjs.map +1 -1
  209. package/fesm2022/sd-angular-core-modules-layout.mjs +23 -23
  210. package/fesm2022/sd-angular-core-modules-layout.mjs.map +1 -1
  211. package/fesm2022/sd-angular-core-modules-permission.mjs +3 -3
  212. package/fesm2022/sd-angular-core-modules-permission.mjs.map +1 -1
  213. package/fesm2022/sd-angular-core-pipes.mjs +2 -2
  214. package/fesm2022/sd-angular-core-pipes.mjs.map +1 -1
  215. package/fesm2022/sd-angular-core-services-api.mjs +3 -3
  216. package/fesm2022/sd-angular-core-services-api.mjs.map +1 -1
  217. package/fesm2022/sd-angular-core-services-cache.mjs +3 -2
  218. package/fesm2022/sd-angular-core-services-cache.mjs.map +1 -1
  219. package/fesm2022/sd-angular-core-services-confirm.mjs +1 -1
  220. package/fesm2022/sd-angular-core-services-confirm.mjs.map +1 -1
  221. package/fesm2022/sd-angular-core-services-excel.mjs +6 -5
  222. package/fesm2022/sd-angular-core-services-excel.mjs.map +1 -1
  223. package/fesm2022/sd-angular-core-services-notify.mjs +18 -5
  224. package/fesm2022/sd-angular-core-services-notify.mjs.map +1 -1
  225. package/fesm2022/sd-angular-core-services-storage.mjs +2 -2
  226. package/fesm2022/sd-angular-core-services-storage.mjs.map +1 -1
  227. package/fesm2022/sd-angular-core-utilities-data-state.mjs +38 -0
  228. package/fesm2022/sd-angular-core-utilities-data-state.mjs.map +1 -0
  229. package/fesm2022/sd-angular-core-utilities-models.mjs.map +1 -1
  230. package/fesm2022/sd-angular-core-utilities.mjs +1 -0
  231. package/fesm2022/sd-angular-core-utilities.mjs.map +1 -1
  232. package/forms/autocomplete/src/autocomplete.component.d.ts +29 -10
  233. package/forms/checkbox/src/checkbox.component.d.ts +24 -20
  234. package/forms/chip/src/chip.component.d.ts +29 -20
  235. package/forms/chip-calendar/src/chip-calendar.component.d.ts +31 -22
  236. package/forms/date/src/date.component.d.ts +27 -9
  237. package/forms/date-range/src/date-range.component.d.ts +32 -5
  238. package/forms/datetime/src/datetime.component.d.ts +25 -8
  239. package/forms/directives/src/item-def.directive.d.ts +10 -5
  240. package/forms/directives/src/label-def.directive.d.ts +3 -2
  241. package/forms/directives/src/suffix-def.directive.d.ts +3 -2
  242. package/forms/directives/src/view-def.directive.d.ts +9 -9
  243. package/forms/inline-text/index.d.ts +1 -0
  244. package/forms/inline-text/src/inline-text.component.d.ts +76 -0
  245. package/forms/input/src/input.component.d.ts +35 -13
  246. package/forms/input-color/index.d.ts +1 -0
  247. package/forms/input-color/src/input-color.component.d.ts +34 -0
  248. package/forms/input-number/src/input-number.component.d.ts +31 -11
  249. package/forms/models/index.d.ts +2 -0
  250. package/forms/models/src/form-control-state.d.ts +23 -0
  251. package/forms/models/src/sd-custom-validator.model.d.ts +13 -1
  252. package/forms/models/src/sd-viewed.d.ts +38 -0
  253. package/forms/radio/src/radio.component.d.ts +37 -35
  254. package/forms/select/src/select.component.d.ts +41 -14
  255. package/forms/switch/src/switch.component.d.ts +25 -23
  256. package/forms/textarea/src/textarea.component.d.ts +22 -8
  257. package/i18n/src/en.d.ts +50 -3
  258. package/modules/auth/configurations/auth.configuration.d.ts +4 -4
  259. package/modules/layout/configurations/layout.configuration.d.ts +3 -3
  260. package/modules/permission/src/configurations/permission.configuration.d.ts +3 -3
  261. package/package.json +89 -49
  262. package/sd-angular-core-19.0.3.tgz +0 -0
  263. package/services/confirm/src/lib/components/dialog-confirm/dialog-confirm.component.d.ts +3 -3
  264. package/services/confirm/src/lib/confirm.service.d.ts +9 -9
  265. package/services/notify/src/components/toast/toast.component.d.ts +4 -0
  266. package/utilities/data-state/index.d.ts +1 -0
  267. package/utilities/data-state/src/data-state.d.ts +11 -0
  268. package/utilities/index.d.ts +1 -0
  269. package/utilities/models/src/icon.model.d.ts +1 -1
  270. package/assets/scss/bootstrap-4.6.2/_alert.scss +0 -52
  271. package/assets/scss/bootstrap-4.6.2/_badge.scss +0 -54
  272. package/assets/scss/bootstrap-4.6.2/_breadcrumb.scss +0 -42
  273. package/assets/scss/bootstrap-4.6.2/_button-group.scss +0 -163
  274. package/assets/scss/bootstrap-4.6.2/_buttons.scss +0 -142
  275. package/assets/scss/bootstrap-4.6.2/_card.scss +0 -286
  276. package/assets/scss/bootstrap-4.6.2/_carousel.scss +0 -200
  277. package/assets/scss/bootstrap-4.6.2/_close.scss +0 -40
  278. package/assets/scss/bootstrap-4.6.2/_code.scss +0 -48
  279. package/assets/scss/bootstrap-4.6.2/_custom-forms.scss +0 -526
  280. package/assets/scss/bootstrap-4.6.2/_dropdown.scss +0 -192
  281. package/assets/scss/bootstrap-4.6.2/_forms.scss +0 -347
  282. package/assets/scss/bootstrap-4.6.2/_functions.scss +0 -190
  283. package/assets/scss/bootstrap-4.6.2/_grid.scss +0 -73
  284. package/assets/scss/bootstrap-4.6.2/_images.scss +0 -42
  285. package/assets/scss/bootstrap-4.6.2/_input-group.scss +0 -211
  286. package/assets/scss/bootstrap-4.6.2/_jumbotron.scss +0 -17
  287. package/assets/scss/bootstrap-4.6.2/_list-group.scss +0 -154
  288. package/assets/scss/bootstrap-4.6.2/_media.scss +0 -8
  289. package/assets/scss/bootstrap-4.6.2/_mixins.scss +0 -47
  290. package/assets/scss/bootstrap-4.6.2/_modal.scss +0 -240
  291. package/assets/scss/bootstrap-4.6.2/_nav.scss +0 -125
  292. package/assets/scss/bootstrap-4.6.2/_navbar.scss +0 -332
  293. package/assets/scss/bootstrap-4.6.2/_pagination.scss +0 -74
  294. package/assets/scss/bootstrap-4.6.2/_popover.scss +0 -170
  295. package/assets/scss/bootstrap-4.6.2/_print.scss +0 -132
  296. package/assets/scss/bootstrap-4.6.2/_progress.scss +0 -47
  297. package/assets/scss/bootstrap-4.6.2/_reboot.scss +0 -484
  298. package/assets/scss/bootstrap-4.6.2/_root.scss +0 -19
  299. package/assets/scss/bootstrap-4.6.2/_spinners.scss +0 -65
  300. package/assets/scss/bootstrap-4.6.2/_tables.scss +0 -185
  301. package/assets/scss/bootstrap-4.6.2/_toasts.scss +0 -46
  302. package/assets/scss/bootstrap-4.6.2/_tooltip.scss +0 -115
  303. package/assets/scss/bootstrap-4.6.2/_transitions.scss +0 -26
  304. package/assets/scss/bootstrap-4.6.2/_type.scss +0 -125
  305. package/assets/scss/bootstrap-4.6.2/_utilities.scss +0 -18
  306. package/assets/scss/bootstrap-4.6.2/_variables.scss +0 -1150
  307. package/assets/scss/bootstrap-4.6.2/bootstrap-grid.scss +0 -30
  308. package/assets/scss/bootstrap-4.6.2/bootstrap-reboot.scss +0 -12
  309. package/assets/scss/bootstrap-4.6.2/bootstrap.scss +0 -44
  310. package/assets/scss/bootstrap-4.6.2/mixins/_alert.scss +0 -13
  311. package/assets/scss/bootstrap-4.6.2/mixins/_background-variant.scss +0 -23
  312. package/assets/scss/bootstrap-4.6.2/mixins/_badge.scss +0 -17
  313. package/assets/scss/bootstrap-4.6.2/mixins/_border-radius.scss +0 -76
  314. package/assets/scss/bootstrap-4.6.2/mixins/_box-shadow.scss +0 -20
  315. package/assets/scss/bootstrap-4.6.2/mixins/_breakpoints.scss +0 -123
  316. package/assets/scss/bootstrap-4.6.2/mixins/_buttons.scss +0 -110
  317. package/assets/scss/bootstrap-4.6.2/mixins/_caret.scss +0 -62
  318. package/assets/scss/bootstrap-4.6.2/mixins/_clearfix.scss +0 -7
  319. package/assets/scss/bootstrap-4.6.2/mixins/_deprecate.scss +0 -10
  320. package/assets/scss/bootstrap-4.6.2/mixins/_float.scss +0 -14
  321. package/assets/scss/bootstrap-4.6.2/mixins/_forms.scss +0 -195
  322. package/assets/scss/bootstrap-4.6.2/mixins/_gradients.scss +0 -45
  323. package/assets/scss/bootstrap-4.6.2/mixins/_grid-framework.scss +0 -80
  324. package/assets/scss/bootstrap-4.6.2/mixins/_grid.scss +0 -69
  325. package/assets/scss/bootstrap-4.6.2/mixins/_hover.scss +0 -37
  326. package/assets/scss/bootstrap-4.6.2/mixins/_image.scss +0 -36
  327. package/assets/scss/bootstrap-4.6.2/mixins/_list-group.scss +0 -21
  328. package/assets/scss/bootstrap-4.6.2/mixins/_lists.scss +0 -7
  329. package/assets/scss/bootstrap-4.6.2/mixins/_nav-divider.scss +0 -11
  330. package/assets/scss/bootstrap-4.6.2/mixins/_pagination.scss +0 -22
  331. package/assets/scss/bootstrap-4.6.2/mixins/_reset-text.scss +0 -17
  332. package/assets/scss/bootstrap-4.6.2/mixins/_resize.scss +0 -6
  333. package/assets/scss/bootstrap-4.6.2/mixins/_screen-reader.scss +0 -34
  334. package/assets/scss/bootstrap-4.6.2/mixins/_size.scss +0 -7
  335. package/assets/scss/bootstrap-4.6.2/mixins/_table-row.scss +0 -39
  336. package/assets/scss/bootstrap-4.6.2/mixins/_text-emphasis.scss +0 -17
  337. package/assets/scss/bootstrap-4.6.2/mixins/_text-hide.scss +0 -11
  338. package/assets/scss/bootstrap-4.6.2/mixins/_text-truncate.scss +0 -8
  339. package/assets/scss/bootstrap-4.6.2/mixins/_transition.scss +0 -26
  340. package/assets/scss/bootstrap-4.6.2/mixins/_visibility.scss +0 -8
  341. package/assets/scss/bootstrap-4.6.2/utilities/_align.scss +0 -8
  342. package/assets/scss/bootstrap-4.6.2/utilities/_background.scss +0 -19
  343. package/assets/scss/bootstrap-4.6.2/utilities/_borders.scss +0 -75
  344. package/assets/scss/bootstrap-4.6.2/utilities/_clearfix.scss +0 -3
  345. package/assets/scss/bootstrap-4.6.2/utilities/_display.scss +0 -26
  346. package/assets/scss/bootstrap-4.6.2/utilities/_embed.scss +0 -39
  347. package/assets/scss/bootstrap-4.6.2/utilities/_flex.scss +0 -51
  348. package/assets/scss/bootstrap-4.6.2/utilities/_float.scss +0 -11
  349. package/assets/scss/bootstrap-4.6.2/utilities/_interactions.scss +0 -5
  350. package/assets/scss/bootstrap-4.6.2/utilities/_overflow.scss +0 -5
  351. package/assets/scss/bootstrap-4.6.2/utilities/_position.scss +0 -32
  352. package/assets/scss/bootstrap-4.6.2/utilities/_screenreaders.scss +0 -11
  353. package/assets/scss/bootstrap-4.6.2/utilities/_shadows.scss +0 -6
  354. package/assets/scss/bootstrap-4.6.2/utilities/_sizing.scss +0 -20
  355. package/assets/scss/bootstrap-4.6.2/utilities/_spacing.scss +0 -73
  356. package/assets/scss/bootstrap-4.6.2/utilities/_stretched-link.scss +0 -19
  357. package/assets/scss/bootstrap-4.6.2/utilities/_text.scss +0 -72
  358. package/assets/scss/bootstrap-4.6.2/utilities/_visibility.scss +0 -13
  359. package/assets/scss/bootstrap-4.6.2/vendor/_rfs.scss +0 -228
  360. package/assets/scss/core/bootstrap.scss +0 -13
  361. package/components/anchor/src/components/anchor-vertical/anchor-vertical-list.component.d.ts +0 -18
  362. package/components/table/src/components/column-filter/column-filter.component.d.ts +0 -40
  363. package/components/table/src/components/desktop-command/desktop-command.component.d.ts +0 -15
  364. package/components/table/src/components/external-filter/external-filter.component.d.ts +0 -36
  365. package/components/table/src/pipes/command-disable.pipe.d.ts +0 -9
  366. package/components/table/src/pipes/command-filter.pipe.d.ts +0 -25
  367. package/components/table/src/pipes/command-title.pipe.d.ts +0 -9
  368. package/sd-angular-core-19.0.0-beta.98.tgz +0 -0
@@ -18,6 +18,12 @@ export interface SdTableMetaTree<T = any> {
18
18
  parentId?: string;
19
19
  /** Cached formatted child SdTableItem[] — populated on first expand/format */
20
20
  childItems?: SdTableItem<T>[];
21
+ /**
22
+ * Hierarchical index path từ root tới row hiện tại — sibling-index (1-based) per level.
23
+ * Vd root thứ nhất = [1], child thứ 2 của root đó = [1, 2], grandchild thứ 1 = [1, 2, 1].
24
+ * Template STT join('.') → "1", "1.2", "1.2.1". Populate trong `flattenTree`.
25
+ */
26
+ indexPath?: number[];
21
27
  }
22
28
  export interface SdTableDisplay {
23
29
  tooltip?: string;
@@ -32,15 +38,24 @@ export interface SdTableDisplay {
32
38
  isHtml: boolean;
33
39
  click?: () => void;
34
40
  }
41
+ export interface SdTableMetaGroup<T = any> {
42
+ /** Children items thuộc group này (chỉ set trên group header row). */
43
+ items?: SdTableItem<T>[];
44
+ /** true = row này là synthetic group header (sinh bởi SdGroupPipe). */
45
+ isGroupHeader?: boolean;
46
+ /** Hash key của group (= Utilities.hash(values)). */
47
+ key?: string;
48
+ /** Resolved group-field values (vd `{ customerId: 1, customerName: 'A' }`). */
49
+ values?: Record<string, any>;
50
+ /** Trạng thái expand. Chỉ ý nghĩa khi `option.group.collapsible = true`. */
51
+ isExpanded?: boolean;
52
+ }
35
53
  export interface SdTableMeta<T> {
36
54
  id: string;
37
55
  display: Record<string, SdTableDisplay>;
38
56
  selector?: SdTableMetaSelector;
39
57
  expand?: SdTableMetaExpand;
40
- group?: {
41
- htmlTemplate?: string;
42
- items?: SdTableItem<T>[];
43
- };
58
+ group?: SdTableMetaGroup<T>;
44
59
  tree?: SdTableMetaTree<T>;
45
60
  }
46
61
  export interface SdTableItem<T = any> {
@@ -1,4 +1,4 @@
1
- import { SdNestedKeyOf } from '@sd-angular/core/utilities';
1
+ import { NestedKeyOf } from '@sdcorejs/utils/models';
2
2
  import { SdTableFilterRequest } from '../services/table-filter/table-filter.model';
3
3
  export type SdTableOptionExport<T = any> = SdTableOptionExportDefault<T> | SdTableOptionExportCustom;
4
4
  export interface SdTableOptionExportDefault<T = any> {
@@ -23,7 +23,7 @@ export interface SdTableOptionExportCustom {
23
23
  onExport: (filterRequest: SdTableFilterRequest) => Promise<void>;
24
24
  }
25
25
  export interface SdTableOptionExportColumn<T = any> {
26
- field: SdNestedKeyOf<T>;
26
+ field: NestedKeyOf<T>;
27
27
  title: string;
28
28
  description?: string;
29
29
  width?: string;
@@ -36,7 +36,7 @@ export interface SdTableOptionExportSheet<T = any> {
36
36
  name: string;
37
37
  items: T[] | (() => T[] | Promise<T[]>);
38
38
  headers: {
39
- value: SdNestedKeyOf<T>;
39
+ value: NestedKeyOf<T>;
40
40
  display: string;
41
41
  }[];
42
42
  }
@@ -1,4 +1,21 @@
1
+ import { NestedKeyOf } from '@sdcorejs/utils/models';
1
2
  export interface SdTableOptionGroup<T = any> {
2
- fields: string[];
3
- htmlTemplate: (rowDatas: T[]) => string;
3
+ /**
4
+ * Danh sách field dùng để nhóm. Item có cùng giá trị tất cả `fields` sẽ vào cùng group.
5
+ * Ví dụ `['customerId']` group orders theo khách hàng.
6
+ * Type-safe qua `NestedKeyOf<T>` — hỗ trợ dot-notation cho nested object (vd `'customer.id'`).
7
+ */
8
+ fields: NestedKeyOf<T>[];
9
+ /**
10
+ * Mặc định group có collapse được không. true = render với UI có thể expand/collapse;
11
+ * false = luôn show toàn bộ children (mặc định).
12
+ */
13
+ collapsible?: boolean;
14
+ /** Nếu collapsible, mặc định trạng thái ban đầu: true = collapsed, false = expanded (default). */
15
+ defaultCollapsed?: boolean;
16
+ /**
17
+ * Predicate tùy chọn cho selection. Khi check `selectable` của group header.
18
+ * Mặc định: chỉ nhóm có >=1 child `selectable` mới hiển thị checkbox.
19
+ */
20
+ selectable?: (children: T[]) => boolean;
4
21
  }
@@ -21,6 +21,22 @@ export interface SdTableOptionSelector<T = any> {
21
21
  * Dùng khi cần programmatically set selected items từ bên ngoài.
22
22
  */
23
23
  defaultSelected?: (rowData: T) => boolean;
24
+ /**
25
+ * Giữ lại selection khi user chuyển trang / filter / sort / reload.
26
+ * Selection chỉ bị clear khi user bấm nút X (onClearSelection) hoặc bỏ chọn từng item.
27
+ *
28
+ * - Default (false): selection bị mất khi data items được re-fetch (server-side) hoặc
29
+ * item references thay đổi. Action bar chỉ hiển thị số item selected ở page hiện tại.
30
+ * - Enabled (true): table giữ map nội bộ selectedItems theo `meta.id` (hash của data).
31
+ * Sau mỗi #render, restore `isSelected` cho item nào id đã có trong map.
32
+ * `selectedTableItems()` trả về TOÀN BỘ item đã chọn xuyên trang (kể cả off-page),
33
+ * nên action bar + callback `click(items)` nhận đầy đủ data đang được chọn.
34
+ *
35
+ * Lưu ý: matching dựa trên `Utilities.hash(data)` — hai item có cùng data shape sẽ
36
+ * trùng id (mong muốn). Nếu data có timestamp/random field thay đổi giữa các lần fetch,
37
+ * id sẽ khác và selection không restore được.
38
+ */
39
+ preserveSelection?: boolean;
24
40
  }
25
41
  export type SdTableAction<T = any> = SdTableActionNormal<T> | SdTableActionChildren<T>;
26
42
  export interface SdTableActionNormal<T = any> {
@@ -34,7 +50,7 @@ export interface SdTableActionNormal<T = any> {
34
50
  * Font set của Material icon.
35
51
  * Kiểu thực tế lấy từ `SdButton['fontSet']` và chỉ hỗ trợ các giá trị thuộc `MaterialIconFontSet`,
36
52
  * ví dụ: `material-icons`, `material-icons-outlined`, `material-icons-round`,
37
- * `material-icons-sharp`, `material-symbols-outlined`.
53
+ * `material-icons-sharp`.
38
54
  * Nếu không truyền, `SdButton` sẽ dùng font set mặc định của nó.
39
55
  */
40
56
  fontSet?: SdUnwrapSignal<SdButton['fontSet']>;
@@ -1,12 +1,100 @@
1
- export interface SdTableOptionTree<T = any> {
2
- /** Key trên object row chứa mảng children. Mặc định: 'children' */
3
- childrenKey?: string;
4
- /** Giới hạn độ sâu cây. undefined = không giới hạn. */
1
+ import { NestedKeyOf } from '@sdcorejs/utils/models';
2
+ /**
3
+ * Cấu hình tree-rows cho `<sd-table>` — render dòng con inline dưới dòng cha
4
+ * kèm expand/collapse.
5
+ *
6
+ * Đây là discriminated union theo `loadType`:
7
+ * - `'static'` ({@link TableOptionTreeStatic}) — children đã nằm sẵn trong data
8
+ * (embedded array tại `childrenKey`). Không gọi API khi bung.
9
+ * - `'lazy'` ({@link TableOptionTreeLazy}) — children nạp theo yêu cầu qua
10
+ * `onExpandChildren` khi người dùng bung dòng lần đầu.
11
+ *
12
+ * `loadType` là discriminant: TypeScript dựa vào nó để narrow union (vd chỉ
13
+ * `static` mới có `childrenKey`/`defaultExpanded`, chỉ `lazy` mới có
14
+ * `onExpandChildren`). Dùng type-guard `isLazyTree()` trong `tree.util.ts` để
15
+ * narrow an toàn thay vì truy cập field trực tiếp trên union.
16
+ *
17
+ * @example Static (children embedded)
18
+ * ```ts
19
+ * tree: { loadType: 'static', childrenKey: 'children', defaultExpanded: 1 }
20
+ * ```
21
+ * @example Lazy (nạp theo yêu cầu)
22
+ * ```ts
23
+ * tree: { loadType: 'lazy', onExpandChildren: row => api.getChildren(row.id) }
24
+ * ```
25
+ */
26
+ export type SdTableOptionTree<T = any> = TableOptionTreeStatic<T> | TableOptionTreeLazy<T>;
27
+ /**
28
+ * Tree với dữ liệu children **embedded** sẵn trong mỗi row.
29
+ *
30
+ * Table đọc mảng con tại `childrenKey` ngay trên object data; không có lời gọi
31
+ * bất đồng bộ nào khi bung dòng. Đây cũng là chế độ hỗ trợ **search ở cấp con**
32
+ * cho table `type: 'local'` (xem `tree.util.ts#subtreeMatches` /
33
+ * `filterMatchingChildren`): khi lọc, một nhánh được giữ lại nếu chính nó hoặc
34
+ * bất kỳ hậu duệ nào khớp từ khoá, và nhánh khớp sẽ tự bung.
35
+ */
36
+ export interface TableOptionTreeStatic<T = any> {
37
+ /** Chế độ nạp children: dữ liệu đã embedded sẵn trong row. */
38
+ loadType: 'static';
39
+ /**
40
+ * Key trên object row chứa mảng children.
41
+ * Mặc định: `'children'`.
42
+ */
43
+ childrenKey?: NestedKeyOf<T> | 'children';
44
+ /**
45
+ * Giới hạn độ sâu cây (level gốc = 0).
46
+ * `undefined` = không giới hạn.
47
+ */
5
48
  maxDepth?: number;
6
- /** false | true | number (mở tới cấp N) */
49
+ /**
50
+ * Trạng thái bung mặc định khi load:
51
+ * - `false` — thu gọn hết (mặc định)
52
+ * - `true` — bung toàn bộ
53
+ * - `number N` — bung tới cấp `N` (row có `level < N` được bung)
54
+ */
7
55
  defaultExpanded?: boolean | number;
8
- /** Lazy load khi row chưa có children embedded */
9
- onExpandChildren?: (rowData: T) => Promise<T[]> | T[];
10
- /** Pixel indent mỗi cấp. Mặc định: 20 */
56
+ /**
57
+ * Số pixel thụt lề (indent) cho mỗi cấp sâu.
58
+ * Mặc định: `20`.
59
+ */
60
+ indentSize?: number;
61
+ }
62
+ /**
63
+ * Tree với children **nạp lười (lazy)** theo yêu cầu.
64
+ *
65
+ * Khi người dùng bung một dòng lần đầu mà dòng đó chưa có children embedded,
66
+ * table gọi `onExpandChildren(row)` để nạp; kết quả được cache lại trên row
67
+ * (ghi vào key `'children'`) nên các lần bung sau không gọi lại.
68
+ *
69
+ * Lazy tree **không hỗ trợ** `childrenKey` tuỳ biến (luôn dùng `'children'` làm
70
+ * nơi lưu kết quả) và **không hỗ trợ** `defaultExpanded` (không thể bung mặc
71
+ * định nhánh chưa nạp).
72
+ */
73
+ export interface TableOptionTreeLazy<T = any> {
74
+ /** Chế độ nạp children: nạp lười theo yêu cầu khi bung. */
75
+ loadType: 'lazy';
76
+ /**
77
+ * Giới hạn độ sâu cây (level gốc = 0).
78
+ * `undefined` = không giới hạn.
79
+ */
80
+ maxDepth?: number;
81
+ /**
82
+ * Hàm nạp children khi bung dòng chưa có children embedded.
83
+ * Trả về `Promise<T[]>`; kết quả được ghi vào key `'children'` của row data
84
+ * và cache cho các lần bung sau.
85
+ */
86
+ onExpandChildren: (rowData: T) => Promise<T[]>;
87
+ /**
88
+ * Xác định một row có con hay không — để quyết định có hiển thị icon expand.
89
+ * - Không truyền: MỌI lazy node đều hiện icon expand (không biết trước được).
90
+ * - Truyền: chỉ hiện icon khi trả `true`; trả `false` ⇒ row là lá (ẩn icon,
91
+ * không gọi `onExpandChildren`).
92
+ * Lưu ý: nếu row đã có children embedded sẵn thì luôn coi là có con (bỏ qua hàm này).
93
+ */
94
+ hasChildren?: (rowData: T) => boolean;
95
+ /**
96
+ * Số pixel thụt lề (indent) cho mỗi cấp sâu.
97
+ * Mặc định: `20`.
98
+ */
11
99
  indentSize?: number;
12
100
  }
@@ -1,4 +1,4 @@
1
- import { SdPagingReq } from '@sd-angular/core/utilities';
1
+ import { PagingReq } from '@sdcorejs/utils/models';
2
2
  import { SdTableFilterRequest, SdTableOptionFilter } from '../services/table-filter/table-filter.model';
3
3
  import { SdTableColumn } from './table-column.model';
4
4
  import { SdTableCommand, SdTableCommandOption } from './table-command.model';
@@ -73,6 +73,28 @@ interface SdTableBaseOption<T = any> {
73
73
  * manual filter, cacheable và callback clear filter.
74
74
  */
75
75
  filter?: SdTableOptionFilter;
76
+ /**
77
+ * Cấu hình cột đánh số thứ tự (STT) ở đầu mỗi dòng.
78
+ * Khi enabled = true, table render thêm 1 cột STT (sticky đầu, sau selector).
79
+ * Số thứ tự tính theo global index (pageIndex * pageSize + i + 1) để tương thích phân trang.
80
+ */
81
+ index?: {
82
+ /** Bật/tắt cột STT. */
83
+ enabled?: boolean;
84
+ /** Tiêu đề header (mặc định '#'). */
85
+ title?: string;
86
+ /** Width của cột (mặc định '50px'). */
87
+ width?: string;
88
+ };
89
+ /**
90
+ * Bật cột filler ở cuối row để hấp thụ leftover width khi tổng width các cột data < container.
91
+ * Khi enabled = true, các cột utility (selection / STT / command) không bị browser stretch trên màn rộng.
92
+ * Mặc định off — table tự stretch cột data theo `width: 100%` như cũ.
93
+ */
94
+ filler?: {
95
+ /** Bật/tắt cột filler. */
96
+ enabled?: boolean;
97
+ };
76
98
  /**
77
99
  * Cấu hình kéo-thả đổi thứ tự dòng.
78
100
  * Chỉ bật khi table cho phép reorder dữ liệu phía client.
@@ -142,7 +164,7 @@ interface SdTableServerOption<T = any> extends SdTableBaseOption<T> {
142
164
  * `pagingReq` là dữ liệu paging đã được chuẩn hóa để dễ map sang API backend.
143
165
  * Hàm cần trả về `{ items, total }` để table render và tính phân trang.
144
166
  */
145
- items: (filterRequest: SdTableFilterRequest<T>, pagingReq: SdPagingReq<T>) => Promise<{
167
+ items: (filterRequest: SdTableFilterRequest<T>, pagingReq: PagingReq<T>) => Promise<{
146
168
  items: T[];
147
169
  total: number;
148
170
  }>;
@@ -3,7 +3,21 @@ import { SdTableOption } from '../models/table-option.model';
3
3
  import { SdTableItem } from '../models/table-item.model';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class SdGroupPipe implements PipeTransform {
6
- transform(items: SdTableItem[], gridOption: SdTableOption): SdTableItem[];
6
+ /**
7
+ * Nhóm items theo `option.group.fields`. Mỗi group sinh ra 1 synthetic SdTableItem
8
+ * (group header) đặt trước children. Header có `meta.group.isGroupHeader = true` + `key`
9
+ * + `values` + `items` + `isExpanded` để template + table consume.
10
+ *
11
+ * Khi `option.group.collapsible = true` + group đang collapse → children bị lọc khỏi output.
12
+ *
13
+ * `expandState` (optional, owned by component) — Map<key, expanded> giữ trạng thái
14
+ * expand/collapse qua các lần transform. Pipe đọc state từ Map; nếu key chưa tồn tại,
15
+ * dùng `!option.group.defaultCollapsed`. Pipe ghi state về Map cho lần read sau.
16
+ *
17
+ * @example
18
+ * `_items | sdGroup: _tableOption : groupExpandState`
19
+ */
20
+ transform(items: SdTableItem[], gridOption: SdTableOption, expandState?: Map<string, boolean>): SdTableItem[];
7
21
  static ɵfac: i0.ɵɵFactoryDeclaration<SdGroupPipe, never>;
8
22
  static ɵpipe: i0.ɵɵPipeDeclaration<SdGroupPipe, "sdGroup", true>;
9
23
  }
@@ -1,6 +1,6 @@
1
1
  import { TemplateRef } from '@angular/core';
2
2
  import { SdSearch } from '@sd-angular/core/forms';
3
- import { SdNestedKeyOf, SdOperator, SdOrder, SdPagingReq } from '@sd-angular/core/utilities';
3
+ import { NestedKeyOf, Operator, Order, PagingReq } from '@sdcorejs/utils/models';
4
4
  import { Observable } from 'rxjs';
5
5
  import { SdTableColumn } from '../../models/table-column.model';
6
6
  export interface SdTableQuickFilter {
@@ -12,20 +12,20 @@ export interface TableFilterConfiguration {
12
12
  inlineExternal: Record<string, boolean>;
13
13
  }
14
14
  export interface TableFilterValue {
15
- columnOperator?: Record<string, SdOperator>;
15
+ columnOperator?: Record<string, Operator>;
16
16
  columnFilter?: Record<string, any>;
17
17
  externalFilter?: Record<string, any>;
18
18
  notReload?: boolean;
19
19
  filtered?: boolean;
20
20
  }
21
21
  export interface SdTableFilterRequest<T = any> {
22
- columnOperator: Record<SdNestedKeyOf<T>, SdOperator>;
23
- rawColumnFilter: Record<SdNestedKeyOf<T>, any>;
22
+ columnOperator: Record<NestedKeyOf<T>, Operator>;
23
+ rawColumnFilter: Record<NestedKeyOf<T>, any>;
24
24
  rawExternalFilter: Record<string, any>;
25
25
  pageNumber: number;
26
26
  pageSize: number;
27
27
  orderBy?: string;
28
- orderDirection?: SdOrder['direction'];
28
+ orderDirection?: Order['direction'];
29
29
  isExported?: boolean;
30
30
  visibledColumns?: SdTableColumn[];
31
31
  }
@@ -39,7 +39,7 @@ export interface SdTableOptionFilter<T = any> {
39
39
  /** Ẩn tất cả inline filter (chỉ còn external), nếu chọn auto thì sẽ ẩn khi total row <= 10, phù hợp cho các màn detail có ít dữ liệu */
40
40
  hideInlineFilter?: boolean | 'auto';
41
41
  /** Hàm xử lý khi đổi Operator của filter column */
42
- operatorChange?: (column?: SdTableColumn, operator?: SdOperator) => void;
42
+ operatorChange?: (column?: SdTableColumn, operator?: Operator) => void;
43
43
  /** Danh sách external filter */
44
44
  externalFilters?: SdTableExternalFilter[];
45
45
  /** Số lượng cột external filter trên mỗi hàng (mặc định: 6) */
@@ -57,8 +57,8 @@ export declare const SdConvertToPagingReq: (filterRequest: SdTableFilterRequest,
57
57
  columns?: SdTableColumn[];
58
58
  externalFilters?: SdTableExternalFilter[];
59
59
  fieldMapping?: Record<string, string>;
60
- orders?: SdOrder[];
61
- }) => SdPagingReq;
60
+ orders?: Order[];
61
+ }) => PagingReq;
62
62
  export declare type SdTableExternalFilter<TData = any> = TextFilter<TData> | DateFilter<TData> | DateTimeFilter<TData> | DateRangeFilter<TData> | NumberFilter<TData> | ValuesFilter<TData> | LazyValuesFilter<TData> | BooleanFilter<TData> | CustomFilter<TData>;
63
63
  interface BaseFilter<TData = any> {
64
64
  field: string;
@@ -66,7 +66,7 @@ interface BaseFilter<TData = any> {
66
66
  defaultShowing?: boolean;
67
67
  required?: boolean;
68
68
  hidden?: boolean;
69
- defaultOperator?: SdOperator;
69
+ defaultOperator?: Operator;
70
70
  data?: TData;
71
71
  onChange?: (value: any) => void;
72
72
  }
@@ -1,5 +1,5 @@
1
1
  import { SdStorageService } from '@sd-angular/core/services';
2
- import { SdOperator } from '@sd-angular/core/utilities/models';
2
+ import { Operator } from '@sdcorejs/utils/models';
3
3
  import { SdTableFilterDefDirective } from '../../directives/sd-table-filter-def.directive';
4
4
  import { SdTableColumn } from '../../models/table-column.model';
5
5
  import { SdTableExternalFilter, SdTableOptionFilter, TableFilterRegister } from './table-filter.model';
@@ -13,7 +13,7 @@ export declare class SdTableFilterService {
13
13
  columns: SdTableColumn[] | undefined;
14
14
  externalFilters: SdTableExternalFilter[] | undefined;
15
15
  filterDefs: SdTableFilterDefDirective[] | undefined;
16
- columnOperator?: Record<string, SdOperator>;
16
+ columnOperator?: Record<string, Operator>;
17
17
  }) => TableFilterRegister;
18
18
  static ɵfac: i0.ɵɵFactoryDeclaration<SdTableFilterService, never>;
19
19
  static ɵprov: i0.ɵɵInjectableDeclaration<SdTableFilterService>;
@@ -1,10 +1,51 @@
1
- import { SdTableOptionTree } from '../../models/table-option-tree.model';
1
+ import { SdTableOptionTree, TableOptionTreeLazy } from '../../models/table-option-tree.model';
2
2
  import { SdTableItem } from '../../models/table-item.model';
3
+ /**
4
+ * Type-guard: tree có nạp children lười (lazy) hay không.
5
+ * Dùng để narrow discriminated union `SdTableOptionTree` một cách an toàn —
6
+ * thay vì truy cập `option.onExpandChildren` trực tiếp trên union (chỉ tồn tại
7
+ * ở nhánh lazy).
8
+ */
9
+ export declare const isLazyTree: <T = any>(option?: SdTableOptionTree<T>) => option is TableOptionTreeLazy<T>;
10
+ /**
11
+ * Key chứa mảng children trên object row.
12
+ * - `static`: lấy `childrenKey` đã cấu hình, mặc định `'children'`.
13
+ * - `lazy`: không có `childrenKey` riêng → luôn dùng `'children'` làm nơi lưu
14
+ * kết quả nạp lười.
15
+ */
3
16
  export declare const getChildrenKey: (option?: SdTableOptionTree) => string;
4
17
  export declare const getChildrenFromData: <T>(data: T, option?: SdTableOptionTree) => T[];
18
+ /**
19
+ * Trạng thái bung mặc định cho một cấp.
20
+ * Chỉ `static` mới có `defaultExpanded`; lazy luôn trả `false` (không thể bung
21
+ * mặc định nhánh chưa nạp).
22
+ */
5
23
  export declare const resolveDefaultExpanded: (level: number, option?: SdTableOptionTree) => boolean;
6
- export declare const resolveHasChildren: <T>(row: SdTableItem<T>, option?: SdTableOptionTree) => boolean;
24
+ /**
25
+ * Row có khả năng có children hay không (để hiện nút bung).
26
+ * - Có children embedded → true.
27
+ * - Lazy tree: dùng `hasChildren(row.data)` nếu được cấu hình; không thì luôn
28
+ * true (chưa biết cho tới khi nạp).
29
+ */
30
+ export declare const resolveHasChildren: <T>(row: SdTableItem<T>, option?: SdTableOptionTree<T>) => boolean;
31
+ /** Row cần nạp lười (lazy) khi bung: là lazy tree và chưa có children embedded. */
7
32
  export declare const hasLazyChildren: <T>(row: SdTableItem<T>, option?: SdTableOptionTree) => boolean;
33
+ /**
34
+ * True nếu `data` HOẶC bất kỳ hậu duệ nào (theo `childrenKey`) thoả `predicate`.
35
+ *
36
+ * Dùng cho search ở cấp con (static tree, table `type: 'local'`): một nhánh
37
+ * gốc được giữ lại trong kết quả lọc nếu subtree của nó có ít nhất một node
38
+ * khớp từ khoá. `visited` chống đệ quy vô hạn khi data có circular reference.
39
+ */
40
+ export declare const subtreeMatches: <T>(data: T, predicate: (data: T) => boolean, option?: SdTableOptionTree, visited?: Set<unknown>) => boolean;
41
+ /**
42
+ * Lọc mảng children: chỉ giữ child có subtree khớp `predicate`.
43
+ *
44
+ * Trả về MẢNG MỚI nhưng GIỮ NGUYÊN object reference của từng child (không clone)
45
+ * — nhờ vậy `meta.id` (hash từ data) ổn định, selection / trạng thái bung không
46
+ * bị mất khi từ khoá search đổi. Đây là bước "prune" của tính năng search-con.
47
+ */
48
+ export declare const filterMatchingChildren: <T>(children: T[], predicate: (data: T) => boolean, option?: SdTableOptionTree) => T[];
8
49
  export declare const flattenTree: <T>(roots: SdTableItem<T>[], option?: SdTableOptionTree, visited?: Set<string>) => SdTableItem<T>[];
9
50
  /** Thu thập mọi SdTableItem đã format trong cây (kể cả node đang collapse). */
10
51
  export declare const collectFormattedTreeRows: <T>(roots: SdTableItem<T>[]) => SdTableItem<T>[];
@@ -3,8 +3,9 @@ import { MatPaginator, MatPaginatorIntl } from '@angular/material/paginator';
3
3
  import { MatSort } from '@angular/material/sort';
4
4
  import { MatTable } from '@angular/material/table';
5
5
  import { SdExcelColumn } from '@sd-angular/core/services';
6
- import { SdTabelCellDefDirective } from './directives/sd-table-cell-def.directive';
7
- import { SdMaterialSubInformationDefDirective } from './directives/sd-table-expand-def.directive';
6
+ import { SdTableCellDefDirective } from './directives/sd-table-cell-def.directive';
7
+ import { SdTableExpandDefDirective } from './directives/sd-table-expand-def.directive';
8
+ import { SdTableGroupDefDirective, SdTableGroupDefContext } from './directives/sd-table-group-def.directive';
8
9
  import { SdTableFilterDefDirective } from './directives/sd-table-filter-def.directive';
9
10
  import { SdMaterialFooterDefDirective } from './directives/sd-table-footer-def.directive';
10
11
  import { SdTableTitleDefDirective } from './directives/sd-table-title-def.directive';
@@ -15,8 +16,8 @@ import { CdkDrag, CdkDragDrop, CdkDropList } from '@angular/cdk/drag-drop';
15
16
  import { SdBaseSecureComponent } from '@sd-angular/core/components/base';
16
17
  import { SdQuickAction } from '@sd-angular/core/components/quick-action';
17
18
  import { SdScrollDirective } from '@sd-angular/core/directives';
18
- import { SdOperator } from '@sd-angular/core/utilities';
19
- import { ExternalFilterComponent } from './components';
19
+ import { Operator } from '@sdcorejs/utils/models';
20
+ import { ExternalFilterComponent, MobileFilterComponent } from './components';
20
21
  import { ConfigComponent } from './components/config/config.component';
21
22
  import { SdPopupExport } from './components/popup-export/popup-export.component';
22
23
  import { ISdTableConfiguration } from './configurations';
@@ -45,17 +46,19 @@ export declare class SdTable<T = unknown> extends SdBaseSecureComponent implemen
45
46
  scroll: import("@angular/core").Signal<SdScrollDirective | undefined>;
46
47
  quickAction: import("@angular/core").Signal<SdQuickAction | undefined>;
47
48
  externalFilter: import("@angular/core").Signal<ExternalFilterComponent | undefined>;
49
+ mobileFilter: import("@angular/core").Signal<MobileFilterComponent | undefined>;
48
50
  paginator: import("@angular/core").Signal<MatPaginator | undefined>;
49
51
  sort: import("@angular/core").Signal<MatSort | undefined>;
50
- sdSubInformation: import("@angular/core").Signal<SdMaterialSubInformationDefDirective | undefined>;
51
- sdCellDefs: import("@angular/core").Signal<readonly SdTabelCellDefDirective[]>;
52
- sdFooterDefs: import("@angular/core").Signal<readonly SdMaterialFooterDefDirective[]>;
52
+ sdSubInformation: import("@angular/core").Signal<SdTableExpandDefDirective<any> | undefined>;
53
+ sdGroupDef: import("@angular/core").Signal<SdTableGroupDefDirective<any> | undefined>;
54
+ sdCellDefs: import("@angular/core").Signal<readonly SdTableCellDefDirective<any>[]>;
55
+ sdFooterDefs: import("@angular/core").Signal<readonly SdMaterialFooterDefDirective<any>[]>;
53
56
  sdFilterDefs: import("@angular/core").Signal<readonly SdTableFilterDefDirective[]>;
54
- sdTitleDefs: import("@angular/core").Signal<readonly SdTableTitleDefDirective[]>;
55
- cellDef: import("@angular/core").Signal<Record<string, SdTabelCellDefDirective>>;
56
- footerDef: import("@angular/core").Signal<Record<string, SdMaterialFooterDefDirective>>;
57
+ sdTitleDefs: import("@angular/core").Signal<readonly SdTableTitleDefDirective<any>[]>;
58
+ cellDef: import("@angular/core").Signal<Record<string, SdTableCellDefDirective<any>>>;
59
+ footerDef: import("@angular/core").Signal<Record<string, SdMaterialFooterDefDirective<any>>>;
57
60
  hasFooter: import("@angular/core").Signal<boolean>;
58
- titleDef: import("@angular/core").Signal<Record<string, SdTableTitleDefDirective>>;
61
+ titleDef: import("@angular/core").Signal<Record<string, SdTableTitleDefDirective<any>>>;
59
62
  tableOption: import("@angular/core").WritableSignal<SdTableOption<T> | undefined>;
60
63
  configuration: import("@angular/core").WritableSignal<ConfiguredTableResult | undefined>;
61
64
  items: import("@angular/core").WritableSignal<SdTableItem<T>[]>;
@@ -67,7 +70,7 @@ export declare class SdTable<T = unknown> extends SdBaseSecureComponent implemen
67
70
  requireFiltered: import("@angular/core").WritableSignal<boolean>;
68
71
  filterRegister: TableFilterRegister;
69
72
  key: string;
70
- columnOperator: Record<string, SdOperator>;
73
+ columnOperator: Record<string, Operator>;
71
74
  columnFilter?: Record<string, any>;
72
75
  cacheValues: Record<string, any[]>;
73
76
  treeRevision: import("@angular/core").WritableSignal<number>;
@@ -85,10 +88,34 @@ export declare class SdTable<T = unknown> extends SdBaseSecureComponent implemen
85
88
  exportCustom: () => void;
86
89
  onTreeToggle: (row: SdTableItem<T>) => Promise<void>;
87
90
  onFilterChange: () => void;
91
+ onFilterCommit: () => void;
88
92
  onExpand: (rowData: SdTableItem<T>) => Promise<void>;
89
93
  onSelect: (rowData: SdTableItem<T>) => void;
90
94
  onSelectAll: () => void;
91
95
  onClearSelection: (items?: SdTableItem<T>[]) => void;
96
+ /** true nếu MỌI selectable child trong group đều selected. Group rỗng (không child) → false. */
97
+ isGroupAllSelected: (header: SdTableItem<T>) => boolean;
98
+ /** true nếu CÓ MỘT VÀI selectable child selected nhưng KHÔNG phải tất cả. */
99
+ isGroupIndeterminate: (header: SdTableItem<T>) => boolean;
100
+ /** Toggle select-all cho 1 group: set isSelected cho mọi selectable child, sync state. */
101
+ onSelectGroup: (header: SdTableItem<T>, checked: boolean) => void;
102
+ groupExpandState: Map<string, boolean>;
103
+ /** Toggle expand/collapse cho 1 group (chỉ ý nghĩa khi option.group.collapsible). */
104
+ toggleGroupExpand: (header: SdTableItem<T>) => void;
105
+ /**
106
+ * Predicate cho matRowDef.when — phân biệt group header row vs data row.
107
+ * Group header row dùng matRowDef riêng với column list ['sdGroupHeader'] (1 cell duy nhất).
108
+ * Data row dùng displayedColumns nguyên vẹn.
109
+ */
110
+ isGroupHeaderRow: (_idx: number, row: SdTableItem<T>) => boolean;
111
+ isDataRow: (_idx: number, row: SdTableItem<T>) => boolean;
112
+ /**
113
+ * Colspan cho cell sdGroupHeader trên group row = displayedColumns.length.
114
+ * Span TOÀN BỘ width data row vì group row chỉ có 1 cell.
115
+ */
116
+ sdGroupColspan: import("@angular/core").Signal<number>;
117
+ /** Build context object truyền vào SdTableGroupDefDirective template. */
118
+ groupContext: (header: SdTableItem<T>) => SdTableGroupDefContext<T>;
92
119
  rowStyle: (row: SdTableItem<T>, index?: number) => Record<string, string> | null;
93
120
  clearFilter: () => void;
94
121
  setFilter: (args: {
@@ -99,11 +126,12 @@ export declare class SdTable<T = unknown> extends SdBaseSecureComponent implemen
99
126
  get selectedItems(): T[];
100
127
  detectChanges: () => void;
101
128
  onColumnResize: (field: string, width: string) => void;
102
- onOperatorChange: (column: SdTableColumn, operator: SdOperator) => void;
129
+ onOperatorChange: (column: SdTableColumn, operator: Operator | undefined) => void;
103
130
  trackBy: (index: number, item: SdTableItem) => string;
131
+ pageOffset: import("@angular/core").Signal<number>;
104
132
  isReorderDisabled(item: SdTableItem<T>): boolean;
105
133
  reorderSortPredicate: (index: number, drag: CdkDrag<SdTableItem<T>>, drop: CdkDropList<SdTableItem<T>[]>) => boolean;
106
134
  onReorderDrop(event: CdkDragDrop<SdTableItem<T>[]>): void;
107
135
  static ɵfac: i0.ɵɵFactoryDeclaration<SdTable<any>, never>;
108
- static ɵcmp: i0.ɵɵComponentDeclaration<SdTable<any>, "sd-table", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "option": { "alias": "option"; "required": true; "isSignal": true; }; }, {}, ["sdSubInformation", "sdCellDefs", "sdFooterDefs", "sdFilterDefs", "sdTitleDefs"], ["[sdTableTop]"], true, never>;
136
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdTable<any>, "sd-table", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "option": { "alias": "option"; "required": true; "isSignal": true; }; }, {}, ["sdSubInformation", "sdGroupDef", "sdCellDefs", "sdFooterDefs", "sdFilterDefs", "sdTitleDefs"], ["[sdTableTop]"], true, never>;
109
137
  }
@@ -19,6 +19,9 @@ export declare class SdUploadFile<TArgs = any> {
19
19
  readonly autoIdInput: import("@angular/core").InputSignal<string | null | undefined>;
20
20
  readonly autoId: import("@angular/core").Signal<string | undefined>;
21
21
  readonly removeAutoId: (index: number) => string | undefined;
22
+ readonly dataDisabled: import("@angular/core").Signal<"true" | "false">;
23
+ readonly dataEmpty: import("@angular/core").Signal<"true" | "false">;
24
+ readonly dataCount: import("@angular/core").Signal<string>;
22
25
  readonly args: import("@angular/core").InputSignal<TArgs | undefined>;
23
26
  readonly label: import("@angular/core").InputSignal<string | undefined>;
24
27
  readonly key: import("@angular/core").InputSignal<string | undefined>;
@@ -1,16 +1,50 @@
1
1
  import { TemplateRef } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
+ /**
4
+ * `<sd-view>` — pure read-only display of a value (text, hyperlink, or a custom template).
5
+ *
6
+ * Presentational proxy with no state of its own: the parent form control (`<sd-select>`,
7
+ * `<sd-input>`, …) computes the display string + resolved selection and passes them in;
8
+ * `<sd-view>` only decides WHICH template renders. It is the single rendering path for every
9
+ * "viewed" state across the form controls (DETAIL `viewed=true` and the `viewed='inline'`
10
+ * text face), so a custom `valueTemplate` (e.g. `sdViewDef` / `#sdValue`) looks identical in
11
+ * both. OnPush — re-renders only when an input signal changes.
12
+ */
3
13
  export declare class SdView {
14
+ /** Optional label rendered above the value (omitted when a parent supplies its own label). */
4
15
  label: import("@angular/core").InputSignal<string | null | undefined>;
16
+ /** Raw selected value — NOT rendered directly; only exposed in the `valueTemplate` context as `value`. */
5
17
  value: import("@angular/core").InputSignal<any>;
18
+ /**
19
+ * Display string — what shows when no custom value template is bound.
20
+ * why: `input.required()` forces the parent to bind `[display]` (compile error otherwise),
21
+ * so the component never has to guess a fallback string from `value`.
22
+ */
6
23
  display: import("@angular/core").InputSignal<string | null | undefined>;
24
+ /** When set, the value renders as a link (`<a [sdHref]>`) instead of plain text. */
7
25
  hyperlink: import("@angular/core").InputSignal<string | null | undefined>;
26
+ /** Label template handed down by a parent control (wins over `label` + `#sdLabel`). */
8
27
  labelTemplate: import("@angular/core").InputSignal<TemplateRef<any> | undefined>;
28
+ /** Value template handed down by a parent control (wins over `display` + `#sdValue`). */
9
29
  valueTemplate: import("@angular/core").InputSignal<TemplateRef<any> | undefined>;
30
+ /**
31
+ * Resolved selected-item objects passed by the parent (e.g. `<sd-select>`).
32
+ * why: the parent owns option/lazy resolution — `<sd-view>` is a proxy and must NOT rebuild
33
+ * the list. Exposed in the value-template context so a "head +N" template can read `displayField`.
34
+ */
35
+ selectedItems: import("@angular/core").InputSignal<any[] | undefined>;
36
+ /** `#sdLabel` template projected directly into `<sd-view>` (fallback when no `[labelTemplate]`). */
10
37
  contentLabelTemplate: import("@angular/core").Signal<TemplateRef<any> | undefined>;
38
+ /** `#sdValue` template projected directly into `<sd-view>` (fallback when no `[valueTemplate]`). */
11
39
  contentValueTemplate: import("@angular/core").Signal<TemplateRef<any> | undefined>;
40
+ /**
41
+ * Effective label template: input from parent wins, else the projected `#sdLabel`.
42
+ * why: `computed` caches the choice so the template's `@if (activeLabelTemplate())` doesn't
43
+ * re-evaluate two content-child reads on every change-detection pass.
44
+ */
12
45
  activeLabelTemplate: import("@angular/core").Signal<TemplateRef<any> | undefined>;
46
+ /** Effective value template: input from parent wins, else the projected `#sdValue`. Cached for the same reason. */
13
47
  activeValueTemplate: import("@angular/core").Signal<TemplateRef<any> | undefined>;
14
48
  static ɵfac: i0.ɵɵFactoryDeclaration<SdView, never>;
15
- static ɵcmp: i0.ɵɵComponentDeclaration<SdView, "sd-view", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "display": { "alias": "display"; "required": true; "isSignal": true; }; "hyperlink": { "alias": "hyperlink"; "required": false; "isSignal": true; }; "labelTemplate": { "alias": "labelTemplate"; "required": false; "isSignal": true; }; "valueTemplate": { "alias": "valueTemplate"; "required": false; "isSignal": true; }; }, {}, ["contentLabelTemplate", "contentValueTemplate"], never, true, never>;
49
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdView, "sd-view", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "display": { "alias": "display"; "required": true; "isSignal": true; }; "hyperlink": { "alias": "hyperlink"; "required": false; "isSignal": true; }; "labelTemplate": { "alias": "labelTemplate"; "required": false; "isSignal": true; }; "valueTemplate": { "alias": "valueTemplate"; "required": false; "isSignal": true; }; "selectedItems": { "alias": "selectedItems"; "required": false; "isSignal": true; }; }, {}, ["contentLabelTemplate", "contentValueTemplate"], never, true, never>;
16
50
  }
@@ -1,9 +1,7 @@
1
- import { ViewContainerRef, TemplateRef } from '@angular/core';
2
1
  import * as i0 from "@angular/core";
3
2
  export declare class SdDesktopDirective {
4
- private templateRef;
5
- private viewContainerRef;
6
- constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef);
3
+ #private;
4
+ constructor();
7
5
  static ɵfac: i0.ɵɵFactoryDeclaration<SdDesktopDirective, never>;
8
6
  static ɵdir: i0.ɵɵDirectiveDeclaration<SdDesktopDirective, "[sdDesktop]", never, {}, {}, never, never, true, never>;
9
7
  }
@@ -1,9 +1,7 @@
1
- import { TemplateRef, ViewContainerRef } from '@angular/core';
2
1
  import * as i0 from "@angular/core";
3
2
  export declare class SdMobileDirective {
4
- private templateRef;
5
- private viewContainerRef;
6
- constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef);
3
+ #private;
4
+ constructor();
7
5
  static ɵfac: i0.ɵɵFactoryDeclaration<SdMobileDirective, never>;
8
6
  static ɵdir: i0.ɵɵDirectiveDeclaration<SdMobileDirective, "[sdMobile]", never, {}, {}, never, never, true, never>;
9
7
  }