@sd-angular/core 19.0.0-beta.3 → 19.0.0-beta.31

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 (154) hide show
  1. package/assets/scss/ckeditor5.scss +60 -2
  2. package/components/avatar/index.d.ts +1 -0
  3. package/components/avatar/src/avatar.component.d.ts +14 -0
  4. package/components/document-builder/src/document-builder.component.d.ts +29 -7
  5. package/components/document-builder/src/document-builder.config.d.ts +21 -0
  6. package/components/document-builder/src/document-builder.model.d.ts +14 -2
  7. package/components/document-builder/src/document-builder.utils.d.ts +10 -0
  8. package/components/document-builder/src/plugins/block-space/block-space.plugin.d.ts +9 -0
  9. package/components/document-builder/src/plugins/heading/heading.plugin.d.ts +5 -0
  10. package/components/document-builder/src/plugins/highlight-range/highlight-range.plugin.d.ts +4 -0
  11. package/components/document-builder/src/plugins/image-custom/image-custom.plugin.d.ts +31 -0
  12. package/components/document-builder/src/plugins/{image-upload.plugin.d.ts → image-upload/image-upload.plugin.d.ts} +0 -4
  13. package/components/document-builder/src/plugins/index.d.ts +10 -5
  14. package/components/document-builder/src/plugins/{page-orientation.plugin.d.ts → page-orientation/page-orientation.plugin.d.ts} +2 -2
  15. package/components/document-builder/src/plugins/paste-handler/filters/bookmark.d.ts +14 -0
  16. package/components/document-builder/src/plugins/paste-handler/filters/br.d.ts +15 -0
  17. package/components/document-builder/src/plugins/paste-handler/filters/image.d.ts +25 -0
  18. package/components/document-builder/src/plugins/paste-handler/filters/list.d.ts +29 -0
  19. package/components/document-builder/src/plugins/paste-handler/filters/parse.d.ts +35 -0
  20. package/components/document-builder/src/plugins/paste-handler/filters/removeboldwrapper.d.ts +15 -0
  21. package/components/document-builder/src/plugins/paste-handler/filters/removegooglesheetstag.d.ts +15 -0
  22. package/components/document-builder/src/plugins/paste-handler/filters/removeinvalidtablewidth.d.ts +15 -0
  23. package/components/document-builder/src/plugins/paste-handler/filters/removemsattributes.d.ts +15 -0
  24. package/components/document-builder/src/plugins/paste-handler/filters/removestyleblock.d.ts +15 -0
  25. package/components/document-builder/src/plugins/paste-handler/filters/removexmlns.d.ts +15 -0
  26. package/components/document-builder/src/plugins/paste-handler/filters/replacemsfootnotes.d.ts +54 -0
  27. package/components/document-builder/src/plugins/paste-handler/filters/replacetabswithinprewithspaces.d.ts +24 -0
  28. package/components/document-builder/src/plugins/paste-handler/filters/space.d.ts +27 -0
  29. package/components/document-builder/src/plugins/paste-handler/filters/table.d.ts +16 -0
  30. package/components/document-builder/src/plugins/paste-handler/filters/utils.d.ts +25 -0
  31. package/components/document-builder/src/plugins/paste-handler/index.d.ts +35 -0
  32. package/components/document-builder/src/plugins/paste-handler/normalizers/googledocsnormalizer.d.ts +31 -0
  33. package/components/document-builder/src/plugins/paste-handler/normalizers/googlesheetsnormalizer.d.ts +31 -0
  34. package/components/document-builder/src/plugins/paste-handler/normalizers/mswordnormalizer.d.ts +29 -0
  35. package/components/document-builder/src/plugins/paste-handler/types.d.ts +30 -0
  36. package/components/document-builder/src/plugins/table-custom/index.d.ts +34 -0
  37. package/components/index.d.ts +3 -0
  38. package/components/mini-editor/index.d.ts +2 -0
  39. package/components/mini-editor/src/mini-editor.component.d.ts +90 -0
  40. package/components/mini-editor/src/mini-editor.model.d.ts +42 -0
  41. package/components/table/src/directives/index.d.ts +2 -0
  42. package/components/table/src/directives/sd-table-column-filter-def.directive.d.ts +9 -0
  43. package/components/table/src/directives/sticky-shadow.directive.d.ts +17 -0
  44. package/components/table/src/models/table-column.model.d.ts +7 -7
  45. package/components/table/src/models/table-command.model.d.ts +4 -0
  46. package/components/table/src/models/table-item.model.d.ts +2 -1
  47. package/components/table/src/models/table-option-export.model.d.ts +3 -2
  48. package/components/table/src/models/table-option.model.d.ts +10 -8
  49. package/components/table/src/services/table-filter/table-filter.model.d.ts +2 -2
  50. package/components/view/index.d.ts +1 -0
  51. package/components/view/src/view.component.d.ts +16 -0
  52. package/components/workflow/src/models/index.d.ts +1 -0
  53. package/directives/index.d.ts +1 -0
  54. package/directives/src/sd-href.directive.d.ts +9 -0
  55. package/fesm2022/sd-angular-core-components-avatar.mjs +88 -0
  56. package/fesm2022/sd-angular-core-components-avatar.mjs.map +1 -0
  57. package/fesm2022/sd-angular-core-components-badge.mjs +2 -2
  58. package/fesm2022/sd-angular-core-components-badge.mjs.map +1 -1
  59. package/fesm2022/sd-angular-core-components-document-builder.mjs +3187 -552
  60. package/fesm2022/sd-angular-core-components-document-builder.mjs.map +1 -1
  61. package/fesm2022/sd-angular-core-components-mini-editor.mjs +326 -0
  62. package/fesm2022/sd-angular-core-components-mini-editor.mjs.map +1 -0
  63. package/fesm2022/sd-angular-core-components-table.mjs +513 -87
  64. package/fesm2022/sd-angular-core-components-table.mjs.map +1 -1
  65. package/fesm2022/sd-angular-core-components-view.mjs +57 -0
  66. package/fesm2022/sd-angular-core-components-view.mjs.map +1 -0
  67. package/fesm2022/sd-angular-core-components-workflow.mjs +33 -43
  68. package/fesm2022/sd-angular-core-components-workflow.mjs.map +1 -1
  69. package/fesm2022/sd-angular-core-components.mjs +3 -0
  70. package/fesm2022/sd-angular-core-components.mjs.map +1 -1
  71. package/fesm2022/sd-angular-core-directives.mjs +80 -27
  72. package/fesm2022/sd-angular-core-directives.mjs.map +1 -1
  73. package/fesm2022/sd-angular-core-forms-autocomplete.mjs +35 -9
  74. package/fesm2022/sd-angular-core-forms-autocomplete.mjs.map +1 -1
  75. package/fesm2022/sd-angular-core-forms-date.mjs +24 -4
  76. package/fesm2022/sd-angular-core-forms-date.mjs.map +1 -1
  77. package/fesm2022/sd-angular-core-forms-datetime.mjs +27 -9
  78. package/fesm2022/sd-angular-core-forms-datetime.mjs.map +1 -1
  79. package/fesm2022/sd-angular-core-forms-input-number.mjs +37 -10
  80. package/fesm2022/sd-angular-core-forms-input-number.mjs.map +1 -1
  81. package/fesm2022/sd-angular-core-forms-input.mjs +29 -11
  82. package/fesm2022/sd-angular-core-forms-input.mjs.map +1 -1
  83. package/fesm2022/sd-angular-core-forms-radio.mjs +18 -2
  84. package/fesm2022/sd-angular-core-forms-radio.mjs.map +1 -1
  85. package/fesm2022/sd-angular-core-forms-select.mjs +27 -9
  86. package/fesm2022/sd-angular-core-forms-select.mjs.map +1 -1
  87. package/fesm2022/sd-angular-core-forms-textarea.mjs +21 -2
  88. package/fesm2022/sd-angular-core-forms-textarea.mjs.map +1 -1
  89. package/fesm2022/sd-angular-core-modules-auth.mjs +5 -5
  90. package/fesm2022/sd-angular-core-modules-auth.mjs.map +1 -1
  91. package/fesm2022/sd-angular-core-modules-keycloak.mjs +126 -0
  92. package/fesm2022/sd-angular-core-modules-keycloak.mjs.map +1 -0
  93. package/fesm2022/sd-angular-core-modules-layout.mjs +52 -17
  94. package/fesm2022/sd-angular-core-modules-layout.mjs.map +1 -1
  95. package/fesm2022/sd-angular-core-modules.mjs +1 -1
  96. package/fesm2022/sd-angular-core-pipes.mjs +21 -1
  97. package/fesm2022/sd-angular-core-pipes.mjs.map +1 -1
  98. package/fesm2022/sd-angular-core-services-confirm.mjs +2 -2
  99. package/fesm2022/sd-angular-core-services-confirm.mjs.map +1 -1
  100. package/fesm2022/sd-angular-core-services-docx.mjs +173 -0
  101. package/fesm2022/sd-angular-core-services-docx.mjs.map +1 -0
  102. package/fesm2022/sd-angular-core-services-notify.mjs +2 -2
  103. package/fesm2022/sd-angular-core-services-notify.mjs.map +1 -1
  104. package/fesm2022/sd-angular-core-services.mjs +1 -0
  105. package/fesm2022/sd-angular-core-services.mjs.map +1 -1
  106. package/fesm2022/sd-angular-core-utilities-extensions.mjs +74 -7
  107. package/fesm2022/sd-angular-core-utilities-extensions.mjs.map +1 -1
  108. package/fesm2022/sd-angular-core-utilities-models.mjs +8 -2
  109. package/fesm2022/sd-angular-core-utilities-models.mjs.map +1 -1
  110. package/forms/autocomplete/src/autocomplete.component.d.ts +9 -4
  111. package/forms/date/src/date.component.d.ts +7 -2
  112. package/forms/datetime/src/datetime.component.d.ts +8 -4
  113. package/forms/input/src/input.component.d.ts +10 -7
  114. package/forms/input-number/src/input-number.component.d.ts +10 -6
  115. package/forms/radio/src/radio.component.d.ts +5 -1
  116. package/forms/select/src/select.component.d.ts +9 -4
  117. package/forms/textarea/src/textarea.component.d.ts +3 -1
  118. package/modules/auth/guards/portal.guard.d.ts +3 -3
  119. package/modules/index.d.ts +1 -1
  120. package/modules/keycloak/index.d.ts +4 -0
  121. package/modules/keycloak/keycloak.configuration.d.ts +11 -0
  122. package/modules/keycloak/keycloak.interceptor.d.ts +2 -0
  123. package/modules/keycloak/keycloak.module.d.ts +18 -0
  124. package/modules/keycloak/keycloak.service.d.ts +14 -0
  125. package/modules/layout/components/sidebar-v1/components/sidebar/sidebar.component.d.ts +1 -0
  126. package/modules/layout/components/sidebar-v1/components/user/user.component.d.ts +5 -2
  127. package/modules/layout/configurations/layout.configuration.d.ts +3 -0
  128. package/modules/layout/services/storage/storage.service.d.ts +1 -0
  129. package/package.json +80 -62
  130. package/pipes/index.d.ts +1 -0
  131. package/pipes/src/empty.pipe.d.ts +7 -0
  132. package/sd-angular-core-19.0.0-beta.31.tgz +0 -0
  133. package/services/confirm/src/lib/confirm.service.d.ts +1 -0
  134. package/services/docx/index.d.ts +1 -0
  135. package/services/docx/src/lib/docx.model.d.ts +9 -0
  136. package/services/docx/src/lib/docx.service.d.ts +13 -0
  137. package/services/docx/src/public-api.d.ts +2 -0
  138. package/services/index.d.ts +1 -0
  139. package/utilities/extensions/index.d.ts +1 -0
  140. package/utilities/extensions/src/color.extension.d.ts +20 -0
  141. package/utilities/extensions/src/string.extension.d.ts +1 -0
  142. package/utilities/models/index.d.ts +1 -0
  143. package/utilities/models/src/filter.model.d.ts +10 -2
  144. package/utilities/models/src/nested-key-of.model.d.ts +5 -0
  145. package/utilities/models/src/pattern.model.d.ts +3 -3
  146. package/components/document-builder/src/plugins/table-fit.plugin.d.ts +0 -4
  147. package/fesm2022/sd-angular-core-modules-oidc.mjs +0 -127
  148. package/fesm2022/sd-angular-core-modules-oidc.mjs.map +0 -1
  149. package/modules/oidc/dynamic-sts.loader.d.ts +0 -11
  150. package/modules/oidc/index.d.ts +0 -2
  151. package/modules/oidc/oidc.configuration.d.ts +0 -11
  152. package/modules/oidc/oidc.module.d.ts +0 -14
  153. /package/components/document-builder/src/plugins/{comment.plugin.d.ts → comment/comment.plugin.d.ts} +0 -0
  154. /package/components/document-builder/src/plugins/{variable.plugin.d.ts → variable/variable.plugin.d.ts} +0 -0
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
+ */
5
+ /**
6
+ * @module paste-from-office/filters/space
7
+ */
8
+ /**
9
+ * Replaces last space preceding elements closing tag with ` `. Such operation prevents spaces from being removed
10
+ * during further DOM/View processing (see especially {@link module:engine/view/domconverter~ViewDomConverter#_processDomInlineNodes}).
11
+ * This method also takes into account Word specific `<o:p></o:p>` empty tags.
12
+ * Additionally multiline sequences of spaces and new lines between tags are removed (see #39 and #40).
13
+ *
14
+ * @param htmlString HTML string in which spacing should be normalized.
15
+ * @returns Input HTML with spaces normalized.
16
+ * @internal
17
+ */
18
+ export declare function normalizeSpacing(htmlString: string): string;
19
+ /**
20
+ * Normalizes spacing in special Word `spacerun spans` (`<span style='mso-spacerun:yes'>\s+</span>`) by replacing
21
+ * all spaces with `&nbsp; ` pairs. This prevents spaces from being removed during further DOM/View processing
22
+ * (see especially {@link module:engine/view/domconverter~ViewDomConverter#_processDomInlineNodes}).
23
+ *
24
+ * @param htmlDocument Native `Document` object in which spacing should be normalized.
25
+ * @internal
26
+ */
27
+ export declare function normalizeSpacerunSpans(htmlDocument: Document): void;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
+ */
5
+ /**
6
+ * @module paste-from-office/filters/table
7
+ */
8
+ import { type ViewUpcastWriter, type ViewDocumentFragment } from 'ckeditor5';
9
+ /**
10
+ * Applies border none for table and cells without a border specified.
11
+ * Normalizes style length units to px.
12
+ * Handles left block table alignment.
13
+ *
14
+ * @internal
15
+ */
16
+ export declare function transformTables(documentFragment: ViewDocumentFragment, writer: ViewUpcastWriter, hasTablePropertiesPlugin?: boolean, hasExtendedTableBlockAlignment?: boolean): void;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
+ */
5
+ /**
6
+ * @module paste-from-office/filters/utils
7
+ */
8
+ /**
9
+ * Normalizes CSS length value to 'px'.
10
+ *
11
+ * @internal
12
+ */
13
+ export declare function convertCssLengthToPx(value: string): string;
14
+ /**
15
+ * Returns true for value with 'px' unit.
16
+ *
17
+ * @internal
18
+ */
19
+ export declare function isPx(value?: string): value is string;
20
+ /**
21
+ * Returns a rounded 'px' value.
22
+ *
23
+ * @internal
24
+ */
25
+ export declare function toPx(value: number): string;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
+ */
5
+ /**
6
+ * @module paste-from-office/pastefromoffice
7
+ */
8
+ import { Plugin, ClipboardPipeline } from 'ckeditor5';
9
+ /**
10
+ * The Paste from Office plugin.
11
+ *
12
+ * This plugin handles content pasted from Office apps and transforms it (if necessary)
13
+ * to a valid structure which can then be understood by the editor features.
14
+ *
15
+ * Transformation is made by a set of predefined {@link module:paste-from-office/normalizer~PasteFromOfficeNormalizer normalizers}.
16
+ * This plugin includes following normalizers:
17
+ * * {@link module:paste-from-office/normalizers/mswordnormalizer~PasteFromOfficeMSWordNormalizer Microsoft Word normalizer}
18
+ * * {@link module:paste-from-office/normalizers/googledocsnormalizer~GoogleDocsNormalizer Google Docs normalizer}
19
+ *
20
+ * For more information about this feature check the {@glink api/paste-from-office package page}.
21
+ */
22
+ export declare class PasteHandler extends Plugin {
23
+ /**
24
+ * @inheritDoc
25
+ */
26
+ static get pluginName(): "PasteHandler";
27
+ /**
28
+ * @inheritDoc
29
+ */
30
+ static get requires(): readonly [typeof ClipboardPipeline];
31
+ /**
32
+ * @inheritDoc
33
+ */
34
+ init(): void;
35
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
+ */
5
+ /**
6
+ * @module paste-from-office/normalizers/googledocsnormalizer
7
+ */
8
+ import { type ViewDocument } from 'ckeditor5';
9
+ import type { PasteFromOfficeNormalizer, PasteFromOfficeNormalizerData } from '../types';
10
+ /**
11
+ * Normalizer for the content pasted from Google Docs.
12
+ *
13
+ * @internal
14
+ */
15
+ export declare class GoogleDocsNormalizer implements PasteFromOfficeNormalizer {
16
+ readonly document: ViewDocument;
17
+ /**
18
+ * Creates a new `GoogleDocsNormalizer` instance.
19
+ *
20
+ * @param document View document.
21
+ */
22
+ constructor(document: ViewDocument);
23
+ /**
24
+ * @inheritDoc
25
+ */
26
+ isActive(htmlString: string): boolean;
27
+ /**
28
+ * @inheritDoc
29
+ */
30
+ execute(data: PasteFromOfficeNormalizerData): void;
31
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
+ */
5
+ /**
6
+ * @module paste-from-office/normalizers/googlesheetsnormalizer
7
+ */
8
+ import { type ViewDocument } from 'ckeditor5';
9
+ import type { PasteFromOfficeNormalizer, PasteFromOfficeNormalizerData } from '../types';
10
+ /**
11
+ * Normalizer for the content pasted from Google Sheets.
12
+ *
13
+ * @internal
14
+ */
15
+ export declare class GoogleSheetsNormalizer implements PasteFromOfficeNormalizer {
16
+ readonly document: ViewDocument;
17
+ /**
18
+ * Creates a new `GoogleSheetsNormalizer` instance.
19
+ *
20
+ * @param document View document.
21
+ */
22
+ constructor(document: ViewDocument);
23
+ /**
24
+ * @inheritDoc
25
+ */
26
+ isActive(htmlString: string): boolean;
27
+ /**
28
+ * @inheritDoc
29
+ */
30
+ execute(data: PasteFromOfficeNormalizerData): void;
31
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
+ */
5
+ import { type ViewDocument } from 'ckeditor5';
6
+ import type { PasteFromOfficeNormalizer, PasteFromOfficeNormalizerData } from '../types';
7
+ /**
8
+ * Normalizer for the content pasted from Microsoft Word.
9
+ */
10
+ export declare class PasteFromOfficeMSWordNormalizer implements PasteFromOfficeNormalizer {
11
+ readonly document: ViewDocument;
12
+ readonly hasMultiLevelListPlugin: boolean;
13
+ readonly hasTablePropertiesPlugin: boolean;
14
+ readonly hasExtendedTableBlockAlignment: boolean;
15
+ /**
16
+ * Creates a new `PasteFromOfficeMSWordNormalizer` instance.
17
+ *
18
+ * @param document View document.
19
+ */
20
+ constructor(document: ViewDocument, hasMultiLevelListPlugin?: boolean, hasTablePropertiesPlugin?: boolean, hasExtendedTableBlockAlignment?: boolean);
21
+ /**
22
+ * @inheritDoc
23
+ */
24
+ isActive(htmlString: string): boolean;
25
+ /**
26
+ * @inheritDoc
27
+ */
28
+ execute(data: PasteFromOfficeNormalizerData): void;
29
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
+ */
5
+ /**
6
+ * @module paste-from-office/normalizer
7
+ */
8
+ import type { ClipboardInputTransformationData } from 'ckeditor5';
9
+ import type { PasteOfficeHtmlParseResult } from './filters/parse';
10
+ /**
11
+ * Interface defining a content transformation pasted from an external editor.
12
+ *
13
+ * Normalizers are registered by the {@link module:paste-from-office/pastefromoffice~PasteFromOffice} plugin and run on
14
+ * {@link module:clipboard/clipboardpipeline~ClipboardPipeline#event:inputTransformation inputTransformation event}.
15
+ * They detect environment-specific quirks and transform it into a form compatible with other CKEditor features.
16
+ */
17
+ export interface PasteFromOfficeNormalizer {
18
+ /**
19
+ * Must return `true` if the `htmlString` contains content which this normalizer can transform.
20
+ */
21
+ isActive(htmlString: string): boolean;
22
+ /**
23
+ * Executes the normalization of a given data.
24
+ */
25
+ execute(data: PasteFromOfficeNormalizerData): void;
26
+ }
27
+ export interface PasteFromOfficeNormalizerData extends ClipboardInputTransformationData {
28
+ _isTransformedWithPasteFromOffice?: boolean;
29
+ _parsedData: PasteOfficeHtmlParseResult;
30
+ }
@@ -0,0 +1,34 @@
1
+ import { Plugin } from 'ckeditor5';
2
+ export declare class TableCustom extends Plugin {
3
+ init(): void;
4
+ /**
5
+ * Parse border style from CSS shorthand (e.g., "1px solid red" or "none")
6
+ */
7
+ private _parseBorderStyleFromShorthand;
8
+ /**
9
+ * Apply default table width
10
+ */
11
+ private _applyTableDefaults;
12
+ /**
13
+ * Apply default borders to all cells in a table
14
+ * Nếu cell đã có border rồi thì bỏ qua
15
+ */
16
+ private _applyCellBorders;
17
+ /**
18
+ * Setup listener to preserve cell/table styles when model changes
19
+ */
20
+ private _setupStylePreservationOnModelChange;
21
+ /**
22
+ * Find tables that need border fixes from model changes
23
+ */
24
+ private _findTablesNeedingFix;
25
+ /**
26
+ * Find parent table element
27
+ */
28
+ private _findParentTable;
29
+ /**
30
+ * Cleanup listeners when plugin is destroyed
31
+ * Note: this.listenTo() listeners are automatically cleaned up by super.destroy()
32
+ */
33
+ destroy(): void;
34
+ }
@@ -1,3 +1,4 @@
1
+ export * from '@sd-angular/core/components/avatar';
1
2
  export * from '@sd-angular/core/components/button';
2
3
  export * from '@sd-angular/core/components/badge';
3
4
  export * from '@sd-angular/core/components/tab-router';
@@ -13,3 +14,5 @@ export * from '@sd-angular/core/components/anchor-v2';
13
14
  export * from '@sd-angular/core/components/query-builder';
14
15
  export * from '@sd-angular/core/components/import-excel';
15
16
  export * from '@sd-angular/core/components/document-builder';
17
+ export * from '@sd-angular/core/components/mini-editor';
18
+ export * from '@sd-angular/core/components/view';
@@ -0,0 +1,2 @@
1
+ export * from './src/mini-editor.model';
2
+ export * from './src/mini-editor.component';
@@ -0,0 +1,90 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { ClassicEditor } from 'ckeditor5';
3
+ import { ControlValueAccessor } from '@angular/forms';
4
+ import { SdMiniEditorOption, SdMiniEditorConfig } from './mini-editor.model';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Component sd-mini-editor - Editor đơn giản cho comment input
8
+ * Sử dụng CKEditor với chế độ đơn giản (bold, italic, link)
9
+ * Hỗ trợ mention và output format (html/markdown)
10
+ *
11
+ * @example
12
+ * ```html
13
+ * <sd-mini-editor
14
+ * [option]="editorOption"
15
+ * [(ngModel)]="content"
16
+ * (contentChange)="onContentChange($event)"
17
+ * >
18
+ * </sd-mini-editor>
19
+ * ```
20
+ */
21
+ export declare class SdMiniEditor implements ControlValueAccessor {
22
+ #private;
23
+ /** Cấu hình option cho editor */
24
+ option: SdMiniEditorOption;
25
+ /** NgModel binding - nội dung HTML/Markdown */
26
+ value: string;
27
+ valueChange: EventEmitter<string>;
28
+ /** Event emitter khi content thay đổi */
29
+ contentChange: EventEmitter<string>;
30
+ /** Event emitter khi blur */
31
+ blur: EventEmitter<FocusEvent>;
32
+ /** Event emitter khi focus */
33
+ focus: EventEmitter<FocusEvent>;
34
+ /** Disabled state */
35
+ disabled: boolean;
36
+ Editor: typeof ClassicEditor;
37
+ get editorConfig(): SdMiniEditorConfig;
38
+ constructor();
39
+ ngOnDestroy(): void;
40
+ /**
41
+ * Xử lý khi editor ready
42
+ */
43
+ onReady(editor: ClassicEditor): void;
44
+ /**
45
+ * Set nội dung cho editor
46
+ */
47
+ setContent(content: string): void;
48
+ /**
49
+ * Get nội dung từ editor
50
+ */
51
+ getContent(): string;
52
+ /**
53
+ * Get nội dung HTML gốc (không convert)
54
+ */
55
+ getHtmlContent(): string;
56
+ /**
57
+ * Focus vào editor
58
+ */
59
+ focusEditor(): void;
60
+ /**
61
+ * Insert mention vào vị trí con trỏ hiện tại
62
+ */
63
+ insertMention(item: {
64
+ id: string;
65
+ name: string;
66
+ marker?: string;
67
+ }): void;
68
+ /**
69
+ * Get danh sách mentions trong nội dung
70
+ */
71
+ getMentions(): Array<{
72
+ id: string;
73
+ name: string;
74
+ marker: string;
75
+ }>;
76
+ /**
77
+ * ControlValueAccessor: Write value
78
+ */
79
+ writeValue(value: string): void;
80
+ /**
81
+ * ControlValueAccessor: Register change callback
82
+ */
83
+ registerOnChange(fn: (value: string) => void): void;
84
+ /**
85
+ * ControlValueAccessor: Register touched callback
86
+ */
87
+ registerOnTouched(fn: () => void): void;
88
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdMiniEditor, never>;
89
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdMiniEditor, "sd-mini-editor", never, { "option": { "alias": "option"; "required": true; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "valueChange": "valueChange"; "contentChange": "contentChange"; "blur": "blur"; "focus": "focus"; }, never, never, true, never>;
90
+ }
@@ -0,0 +1,42 @@
1
+ import { EditorConfig, MentionFeed, MentionFeedObjectItem } from 'ckeditor5';
2
+ export type { MentionFeedObjectItem };
3
+ export type SdMiniEditorOutputFormat = 'html' | 'markdown';
4
+ export interface SdMiniEditorMentionConfig {
5
+ /** Feed data cho mention - có thể là array hoặc function trả về Promise
6
+ * CKEditor MentionFeed đã hỗ trợ: marker, minChars, dropdownLimit, itemRenderer
7
+ */
8
+ feeds?: MentionFeed[];
9
+ /** Custom render function cho giá trị mention khi chèn vào editor
10
+ * Trả về object với text và các attributes tùy chỉnh
11
+ */
12
+ valueRender?: (item: MentionFeedObjectItem) => {
13
+ text: string;
14
+ attributes?: Record<string, string>;
15
+ };
16
+ }
17
+ export type SdMiniEditorMentionItem<T = any> = MentionFeedObjectItem & {
18
+ data?: T;
19
+ };
20
+ export interface SdMiniEditorOption {
21
+ /** Output format: 'html' hoặc 'markdown' (mặc định: 'html') */
22
+ outputFormat?: SdMiniEditorOutputFormat;
23
+ /** Placeholder text */
24
+ placeholder?: string;
25
+ /** Chiều cao editor (mặc định: auto) */
26
+ height?: string;
27
+ /** Bật/tắt mention plugin */
28
+ enableMention?: boolean;
29
+ /** Cấu hình mention */
30
+ mentionConfig?: SdMiniEditorMentionConfig;
31
+ /** Callback khi nội dung thay đổi */
32
+ onChange?: (content: string) => void;
33
+ /** Callback khi blur */
34
+ onBlur?: (event: FocusEvent) => void;
35
+ /** Callback khi focus */
36
+ onFocus?: (event: FocusEvent) => void;
37
+ /** Callback khi mention được chọn */
38
+ onMentionSelect?: (item: SdMiniEditorMentionItem) => void;
39
+ }
40
+ export type SdMiniEditorConfig = EditorConfig & {
41
+ getOption?: () => SdMiniEditorOption;
42
+ };
@@ -0,0 +1,2 @@
1
+ export * from './sd-table-column-filter-def.directive';
2
+ export * from './sticky-shadow.directive';
@@ -0,0 +1,9 @@
1
+ import { TemplateRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class SdTableColumnFilterDefDirective {
4
+ templateRef: TemplateRef<any>;
5
+ sdTableColumnFilterDef?: string;
6
+ constructor(templateRef: TemplateRef<any>);
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdTableColumnFilterDefDirective, never>;
8
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SdTableColumnFilterDefDirective, "[sdTableColumnFilterDef]", never, { "sdTableColumnFilterDef": { "alias": "sdTableColumnFilterDef"; "required": false; }; }, {}, never, never, true, never>;
9
+ }
@@ -0,0 +1,17 @@
1
+ import * as i0 from "@angular/core";
2
+ /**
3
+ * Directive thêm hiệu ứng đổ bóng (elevation-2) vào cột sticky cuối cùng bên trái
4
+ * và cột sticky đầu tiên bên phải, tạo ngăn cách trực quan với phần được scroll.
5
+ *
6
+ * Chỉ dùng nội bộ trong sd-table, không chìa ra ngoài.
7
+ *
8
+ * Gắn vào scroll container của table:
9
+ * @example
10
+ * <div class="c-table" stickyShadow>...</div>
11
+ */
12
+ export declare class StickyShadowDirective {
13
+ #private;
14
+ constructor();
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<StickyShadowDirective, never>;
16
+ static ɵdir: i0.ɵɵDirectiveDeclaration<StickyShadowDirective, "[stickyShadow]", never, {}, {}, never, never, true, never>;
17
+ }
@@ -1,7 +1,7 @@
1
1
  import { TemplateRef } from '@angular/core';
2
2
  import { SdBadge } from '@sd-angular/core/components/badge';
3
3
  import { SdSearch } from '@sd-angular/core/forms';
4
- import { SdColor, SdOperator } from '@sd-angular/core/utilities';
4
+ import { SdColor, SdNestedKeyOf, SdOperator } from '@sd-angular/core/utilities';
5
5
  export type SdTableColumn<T = any> = SdTableColumnText<T> | SdTableColumnNumber<T> | SdTableColumnBool<T> | SdTableColumnDate<T> | SdTableColumnValues<T> | SdTableColumnLazyValues<T> | SdTableColumnChildren<T>;
6
6
  export type SdTableColumnTransformFunc<T = any> = (value: any, rowData: T, args?: {
7
7
  isExport?: boolean;
@@ -45,14 +45,14 @@ interface SdTableColumnBase<T = any> {
45
45
  copiable?: boolean;
46
46
  }
47
47
  interface SdTableColumnText<T = any> extends SdTableColumnBase<T> {
48
- field: Extract<keyof T, string>;
48
+ field: SdNestedKeyOf<T>;
49
49
  type: 'string';
50
50
  badge?: (value: any, rowData: T) => SdColor;
51
51
  badgeIcon?: (value: any, rowData: T) => string;
52
52
  badgeType?: SdBadge['type'];
53
53
  }
54
54
  interface SdTableColumnNumber<T = any> extends SdTableColumnBase<T> {
55
- field: Extract<keyof T, string>;
55
+ field: SdNestedKeyOf<T>;
56
56
  type: 'number';
57
57
  badge?: (value: any, rowData: T) => SdColor;
58
58
  badgeIcon?: (value: any, rowData: T) => string;
@@ -62,7 +62,7 @@ interface SdTableColumnNumber<T = any> extends SdTableColumnBase<T> {
62
62
  };
63
63
  }
64
64
  interface SdTableColumnBool<T = any> extends SdTableColumnBase<T> {
65
- field: Extract<keyof T, string>;
65
+ field: SdNestedKeyOf<T>;
66
66
  type: 'boolean';
67
67
  option?: {
68
68
  displayOnTrue?: string;
@@ -70,14 +70,14 @@ interface SdTableColumnBool<T = any> extends SdTableColumnBase<T> {
70
70
  };
71
71
  }
72
72
  interface SdTableColumnDate<T = any> extends SdTableColumnBase<T> {
73
- field: Extract<keyof T, string>;
73
+ field: SdNestedKeyOf<T>;
74
74
  type: 'date' | 'datetime' | 'time';
75
75
  filter?: SdTableColumnBase['filter'] & {
76
76
  type?: 'daterange' | 'date' | 'split-date';
77
77
  };
78
78
  }
79
79
  export interface SdTableColumnValues<T = any> extends SdTableColumnBase<T> {
80
- field: Extract<keyof T, string>;
80
+ field: SdNestedKeyOf<T>;
81
81
  type: 'values';
82
82
  badge?: (value: any, rowData: T) => SdColor;
83
83
  badgeIcon?: (value: any, rowData: T) => string;
@@ -90,7 +90,7 @@ export interface SdTableColumnValues<T = any> extends SdTableColumnBase<T> {
90
90
  };
91
91
  }
92
92
  export interface SdTableColumnLazyValues<T = any> extends SdTableColumnBase<T> {
93
- field: Extract<keyof T, string>;
93
+ field: SdNestedKeyOf<T>;
94
94
  type: 'lazy-values';
95
95
  option: {
96
96
  valueField: string;
@@ -1,4 +1,8 @@
1
1
  import { SdColor } from '@sd-angular/core/utilities/models';
2
+ export interface SdTableCommandOption<T = any> {
3
+ align?: 'left' | 'right';
4
+ commands?: SdTableCommand<T>[];
5
+ }
2
6
  export type SdTableCommand<T = any> = SdTableCommandNormal<T> | SdTableCommandChildren<T>;
3
7
  export interface SdTableCommandNormal<T = any> {
4
8
  color?: SdColor;
@@ -14,7 +14,8 @@ export interface SdTableDisplay {
14
14
  badge?: {
15
15
  type: SdBadge['type'] | undefined | null;
16
16
  color: SdBadge['color'] | undefined | null;
17
- icon: string | undefined | null;
17
+ icon?: string | undefined | null;
18
+ title?: string | number | null | undefined;
18
19
  };
19
20
  cellStyle?: Record<string, string>;
20
21
  data: string | number | undefined | null;
@@ -1,3 +1,4 @@
1
+ import { SdNestedKeyOf } from '@sd-angular/core/utilities';
1
2
  import { SdTableFilterRequest } from '../services/table-filter/table-filter.model';
2
3
  export type SdTableOptionExport<T = any> = SdTableOptionExportDefault<T> | SdTableOptionExportCustom;
3
4
  export interface SdTableOptionExportDefault<T = any> {
@@ -22,7 +23,7 @@ export interface SdTableOptionExportCustom {
22
23
  onExport: (filterRequest: SdTableFilterRequest) => Promise<void>;
23
24
  }
24
25
  export interface SdTableOptionExportColumn<T = any> {
25
- field: Extract<keyof T, string>;
26
+ field: SdNestedKeyOf<T>;
26
27
  title: string;
27
28
  description?: string;
28
29
  width?: string;
@@ -35,7 +36,7 @@ export interface SdTableOptionExportSheet<T = any> {
35
36
  name: string;
36
37
  items: T[] | (() => T[] | Promise<T[]>);
37
38
  headers: {
38
- value: Extract<keyof T, string>;
39
+ value: SdNestedKeyOf<T>;
39
40
  display: string;
40
41
  }[];
41
42
  }
@@ -1,15 +1,16 @@
1
- import { SdTableColumn } from './table-column.model';
2
- import { SdTableCommand } from './table-command.model';
1
+ import { SdPagingReq } from '@sd-angular/core/utilities';
3
2
  import { SdTableFilterRequest, SdTableOptionFilter } from '../services/table-filter/table-filter.model';
3
+ import { SdTableColumn } from './table-column.model';
4
+ import { SdTableCommand, SdTableCommandOption } from './table-command.model';
5
+ import { TableOptionConfig } from './table-option-config.model';
6
+ import { SdTableOptionExpand } from './table-option-expand.model';
4
7
  import { SdTableOptionExport } from './table-option-export.model';
8
+ import { SdTableOptionGroup } from './table-option-group.model';
9
+ import { SdTableOptionPaginate } from './table-option-paginate.model';
5
10
  import { SdTableOptionReload } from './table-option-reload.model';
6
- import { SdTableOptionExpand } from './table-option-expand.model';
7
11
  import { SdTableOptionSelector } from './table-option-selector.model';
8
- import { SdTableOptionStyle } from './table-option-style.model';
9
- import { SdTableOptionGroup } from './table-option-group.model';
10
12
  import { SdTableOptionSort } from './table-option-sort.model';
11
- import { SdTableOptionPaginate } from './table-option-paginate.model';
12
- import { TableOptionConfig } from './table-option-config.model';
13
+ import { SdTableOptionStyle } from './table-option-style.model';
13
14
  export type SdTableOption<T = any> = SdTableLocalOption<T> | SdTableServerOption<T>;
14
15
  interface SdTableBaseOption<T = any> {
15
16
  key?: string;
@@ -23,6 +24,7 @@ interface SdTableBaseOption<T = any> {
23
24
  group?: SdTableOptionGroup<T>;
24
25
  filter?: SdTableOptionFilter;
25
26
  commands?: SdTableCommand<T>[];
27
+ command?: SdTableCommandOption<T>;
26
28
  columns: SdTableColumn<T>[];
27
29
  style?: SdTableOptionStyle<T>;
28
30
  }
@@ -32,7 +34,7 @@ interface SdTableLocalOption<T = any> extends SdTableBaseOption<T> {
32
34
  }
33
35
  interface SdTableServerOption<T = any> extends SdTableBaseOption<T> {
34
36
  type: 'server';
35
- items: (filterRequest: SdTableFilterRequest<T>) => Promise<{
37
+ items: (filterRequest: SdTableFilterRequest<T>, pagingReq: SdPagingReq<T>) => Promise<{
36
38
  items: T[];
37
39
  total: number;
38
40
  }>;
@@ -2,7 +2,7 @@ import { Observable } from 'rxjs';
2
2
  import { SdTableColumn } from '../../models/table-column.model';
3
3
  import { TemplateRef } from '@angular/core';
4
4
  import { SdSearch } from '@sd-angular/core/forms';
5
- import { SdOperator, SdOrder, SdPagingReq } from '@sd-angular/core/utilities';
5
+ import { SdNestedKeyOf, SdOperator, SdOrder, SdPagingReq } from '@sd-angular/core/utilities';
6
6
  export interface SdTableQuickFilter {
7
7
  code: string;
8
8
  columnFilter: Record<string, any>;
@@ -20,7 +20,7 @@ export interface TableFilterValue {
20
20
  }
21
21
  export interface SdTableFilterRequest<T = any> {
22
22
  columnOperator: Record<string, SdOperator>;
23
- rawColumnFilter: Record<keyof T, any>;
23
+ rawColumnFilter: Record<SdNestedKeyOf<T>, any>;
24
24
  rawExternalFilter: Record<string, any>;
25
25
  pageNumber: number;
26
26
  pageSize: number;
@@ -0,0 +1 @@
1
+ export * from './src/view.component';
@@ -0,0 +1,16 @@
1
+ import { TemplateRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class SdView {
4
+ label?: string | null;
5
+ value?: string | null;
6
+ display?: string | null;
7
+ hyperlink?: string | null;
8
+ labelTemplate?: TemplateRef<any>;
9
+ valueTemplate?: TemplateRef<any>;
10
+ contentLabelTemplate?: TemplateRef<any>;
11
+ contentValueTemplate?: TemplateRef<any>;
12
+ get activeLabelTemplate(): TemplateRef<any> | undefined;
13
+ get activeValueTemplate(): TemplateRef<any> | undefined;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdView, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdView, "sd-view", never, { "label": { "alias": "label"; "required": false; }; "value": { "alias": "value"; "required": false; }; "display": { "alias": "display"; "required": true; }; "hyperlink": { "alias": "hyperlink"; "required": false; }; "labelTemplate": { "alias": "labelTemplate"; "required": false; }; "valueTemplate": { "alias": "valueTemplate"; "required": false; }; }, {}, ["contentLabelTemplate", "contentValueTemplate"], never, true, never>;
16
+ }
@@ -1,4 +1,5 @@
1
1
  export * from './form-render';
2
+ export * from './form-generic.model';
2
3
  export * from './form-generic-component.model';
3
4
  export * from './form-generic-template.model';
4
5
  export * from './form-generic-definition-selection.model';
@@ -2,3 +2,4 @@ export * from './src/sd-scroll.directive';
2
2
  export * from './src/sd-desktop.directive';
3
3
  export * from './src/sd-mobile.directive';
4
4
  export * from './src/sd-hover-copy.directive';
5
+ export * from './src/sd-href.directive';