@sdcorejs/angular 20.0.9 → 20.0.10
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.
- package/README.md +270 -140
- package/assets/scss/core/utilities/_grid.scss +25 -19
- package/components/document-builder/index.d.ts +2 -2
- package/components/form-generic/index.d.ts +45 -23
- package/components/import-excel/index.d.ts +2 -2
- package/components/mini-editor/index.d.ts +4 -4
- package/components/modal/index.d.ts +1 -1
- package/components/query-builder/index.d.ts +4 -4
- package/components/tab-router/index.d.ts +3 -3
- package/components/table/index.d.ts +3 -2
- package/components/view/index.d.ts +1 -1
- package/fesm2022/sdcorejs-angular-components-anchor.mjs +15 -18
- package/fesm2022/sdcorejs-angular-components-anchor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-avatar.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-badge.mjs +0 -1
- package/fesm2022/sdcorejs-angular-components-badge.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-button.mjs +11 -12
- package/fesm2022/sdcorejs-angular-components-button.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-chart.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-ckeditor-styles.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-code-editor.mjs +1 -1
- package/fesm2022/sdcorejs-angular-components-code-editor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-document-builder.mjs +17 -26
- package/fesm2022/sdcorejs-angular-components-document-builder.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-editor.mjs +7 -2
- package/fesm2022/sdcorejs-angular-components-editor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs +712 -427
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-import-excel.mjs +35 -18
- package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-inform.mjs +0 -1
- package/fesm2022/sdcorejs-angular-components-inform.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-mini-editor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-modal.mjs +25 -14
- package/fesm2022/sdcorejs-angular-components-modal.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-operator.mjs +1 -1
- package/fesm2022/sdcorejs-angular-components-operator.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-org-chart.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-preview.mjs +33 -29
- package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs +15 -28
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs +2 -3
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-quick-action.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-section.mjs +0 -1
- package/fesm2022/sdcorejs-angular-components-section.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +3 -3
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-splitter.mjs +5 -5
- package/fesm2022/sdcorejs-angular-components-splitter.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-stepper.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tab-router.mjs +31 -31
- package/fesm2022/sdcorejs-angular-components-tab-router.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-table.mjs +66 -84
- package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs +6 -6
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-view.mjs +3 -9
- package/fesm2022/sdcorejs-angular-components-view.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-configurations.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-directives.mjs +2 -7
- package/fesm2022/sdcorejs-angular-directives.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +0 -3
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +2 -2
- package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-chip.mjs +2 -2
- package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-date-range.mjs +1 -3
- package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-date.mjs +2 -4
- package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-datetime.mjs +2 -6
- package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input-color.mjs +4 -4
- package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs +1 -1
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-label.mjs +0 -1
- package/fesm2022/sdcorejs-angular-forms-label.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-models.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-radio.mjs +12 -2
- package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-select.mjs +45 -14
- package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-textarea.mjs +3 -3
- package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-handlers.mjs +3 -6
- package/fesm2022/sdcorejs-angular-handlers.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-i18n.mjs +11 -7
- package/fesm2022/sdcorejs-angular-i18n.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-interceptors.mjs +0 -2
- package/fesm2022/sdcorejs-angular-interceptors.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-auth.mjs +14 -38
- package/fesm2022/sdcorejs-angular-modules-auth.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-authom.mjs +14 -14
- package/fesm2022/sdcorejs-angular-modules-authom.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-keycloak.mjs +22 -11
- package/fesm2022/sdcorejs-angular-modules-keycloak.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-layout.mjs +30 -27
- package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-permission.mjs +5 -12
- package/fesm2022/sdcorejs-angular-modules-permission.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-pipes.mjs +71 -17
- package/fesm2022/sdcorejs-angular-pipes.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-api.mjs +0 -2
- package/fesm2022/sdcorejs-angular-services-api.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-cache.mjs +5 -11
- package/fesm2022/sdcorejs-angular-services-cache.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-confirm.mjs +16 -21
- package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-docx.mjs +2 -8
- package/fesm2022/sdcorejs-angular-services-docx.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-excel.mjs +2 -2
- package/fesm2022/sdcorejs-angular-services-excel.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-license.mjs +5 -12
- package/fesm2022/sdcorejs-angular-services-license.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-notify.mjs +70 -87
- package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-storage.mjs +6 -15
- package/fesm2022/sdcorejs-angular-services-storage.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-utilities-data-state.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-utilities-extensions.mjs +47 -5
- package/fesm2022/sdcorejs-angular-utilities-extensions.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-utilities-models.mjs +18 -3
- package/fesm2022/sdcorejs-angular-utilities-models.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular.mjs.map +1 -1
- package/forms/chip/index.d.ts +2 -2
- package/forms/chip-calendar/index.d.ts +2 -2
- package/forms/input-color/index.d.ts +2 -1
- package/forms/select/index.d.ts +10 -2
- package/modules/auth/index.d.ts +7 -9
- package/modules/permission/index.d.ts +5 -6
- package/package.json +2 -2
- package/pipes/index.d.ts +22 -4
- package/services/confirm/index.d.ts +3 -3
- package/services/license/index.d.ts +2 -3
- package/services/notify/index.d.ts +4 -5
- package/services/storage/index.d.ts +2 -3
- package/utilities/extensions/index.d.ts +9 -1
|
@@ -218,7 +218,7 @@ class SdPreviewImage {
|
|
|
218
218
|
rotate(direction) {
|
|
219
219
|
const delta = direction === 'right' ? 90 : -90;
|
|
220
220
|
// Wrap về [0, 360) cho gọn — không strictly cần thiết về mặt visual.
|
|
221
|
-
this.#rotation.update(r => ((r + delta) % 360 + 360) % 360);
|
|
221
|
+
this.#rotation.update(r => (((r + delta) % 360) + 360) % 360);
|
|
222
222
|
}
|
|
223
223
|
downloadCurrent() {
|
|
224
224
|
if (!this.downloadable())
|
|
@@ -667,9 +667,7 @@ const SD_PDFJS_LIB = new InjectionToken('SD_PDFJS_LIB', {
|
|
|
667
667
|
// import.meta.url can't be resolved or the worker bundle isn't shipped.
|
|
668
668
|
try {
|
|
669
669
|
if (pdfjsLib?.GlobalWorkerOptions && !pdfjsLib.GlobalWorkerOptions.workerSrc) {
|
|
670
|
-
pdfjsLib.GlobalWorkerOptions.workerSrc = new URL(
|
|
671
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
672
|
-
'pdfjs-dist/build/pdf.worker.min.mjs', import.meta.url).toString();
|
|
670
|
+
pdfjsLib.GlobalWorkerOptions.workerSrc = new URL('pdfjs-dist/build/pdf.worker.min.mjs', import.meta.url).toString();
|
|
673
671
|
}
|
|
674
672
|
}
|
|
675
673
|
catch {
|
|
@@ -935,9 +933,8 @@ class SdPreviewPdf {
|
|
|
935
933
|
// Continuous scroll is deferred — warn once if requested but keep the
|
|
936
934
|
// input value so consumer code is forward-compatible.
|
|
937
935
|
if (m === 'continuous') {
|
|
938
|
-
console.warn(
|
|
939
|
-
|
|
940
|
-
'[sd-preview-pdf] scrollMode="continuous" is deferred; falling back to single-page rendering.');
|
|
936
|
+
console.warn('[sd-preview-pdf] scrollMode="continuous" is deferred; falling back to single-page rendering.' // @i18n-ignore
|
|
937
|
+
);
|
|
941
938
|
}
|
|
942
939
|
this.#scrollModeInternal.set(m);
|
|
943
940
|
});
|
|
@@ -1029,10 +1026,18 @@ class SdPreviewPdf {
|
|
|
1029
1026
|
this.pageChange.emit(target);
|
|
1030
1027
|
this.#renderActivePage();
|
|
1031
1028
|
}
|
|
1032
|
-
nextPage() {
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1029
|
+
nextPage() {
|
|
1030
|
+
this.goToPage(this.#activePage() + 1);
|
|
1031
|
+
}
|
|
1032
|
+
prevPage() {
|
|
1033
|
+
this.goToPage(this.#activePage() - 1);
|
|
1034
|
+
}
|
|
1035
|
+
firstPage() {
|
|
1036
|
+
this.goToPage(1);
|
|
1037
|
+
}
|
|
1038
|
+
lastPage() {
|
|
1039
|
+
this.goToPage(this.numPages());
|
|
1040
|
+
}
|
|
1036
1041
|
zoomIn() {
|
|
1037
1042
|
this.#zoomMode.set(this.#zoom() + _a.ZOOM_STEP);
|
|
1038
1043
|
this.#setZoom(this.#zoom() + _a.ZOOM_STEP);
|
|
@@ -1054,7 +1059,7 @@ class SdPreviewPdf {
|
|
|
1054
1059
|
}
|
|
1055
1060
|
rotate(direction) {
|
|
1056
1061
|
const delta = direction === 'right' ? 90 : -90;
|
|
1057
|
-
this.#rotation.update(r => ((r + delta) % 360 + 360) % 360);
|
|
1062
|
+
this.#rotation.update(r => (((r + delta) % 360) + 360) % 360);
|
|
1058
1063
|
this.#renderActivePage();
|
|
1059
1064
|
}
|
|
1060
1065
|
toggleSidebar() {
|
|
@@ -1076,9 +1081,8 @@ class SdPreviewPdf {
|
|
|
1076
1081
|
// warning when consumer asks for the deferred 'continuous' mode.
|
|
1077
1082
|
setScrollMode(mode) {
|
|
1078
1083
|
if (mode === 'continuous') {
|
|
1079
|
-
console.warn(
|
|
1080
|
-
|
|
1081
|
-
'[sd-preview-pdf] setScrollMode("continuous") is deferred; staying in single-page mode.');
|
|
1084
|
+
console.warn('[sd-preview-pdf] setScrollMode("continuous") is deferred; staying in single-page mode.' // @i18n-ignore
|
|
1085
|
+
);
|
|
1082
1086
|
}
|
|
1083
1087
|
this.#scrollModeInternal.set(mode);
|
|
1084
1088
|
}
|
|
@@ -1137,7 +1141,8 @@ class SdPreviewPdf {
|
|
|
1137
1141
|
// TODO(preview-pdf): printFile + scroll-mode continuous remain deferred.
|
|
1138
1142
|
// Search is now implemented below.
|
|
1139
1143
|
printFile() {
|
|
1140
|
-
console.warn('[sd-preview-pdf] printFile() is deferred to a follow-up commit.'
|
|
1144
|
+
console.warn('[sd-preview-pdf] printFile() is deferred to a follow-up commit.' // @i18n-ignore
|
|
1145
|
+
);
|
|
1141
1146
|
}
|
|
1142
1147
|
/**
|
|
1143
1148
|
* Run a full-document search for `term`. Returns the result count.
|
|
@@ -1283,11 +1288,7 @@ class SdPreviewPdf {
|
|
|
1283
1288
|
onKeyDown(event) {
|
|
1284
1289
|
const target = event.target;
|
|
1285
1290
|
const isSearchInput = !!target && target === this.searchInputRef()?.nativeElement;
|
|
1286
|
-
const isOtherEditable = !!target &&
|
|
1287
|
-
!isSearchInput &&
|
|
1288
|
-
(target.tagName === 'INPUT' ||
|
|
1289
|
-
target.tagName === 'TEXTAREA' ||
|
|
1290
|
-
target.isContentEditable);
|
|
1291
|
+
const isOtherEditable = !!target && !isSearchInput && (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable);
|
|
1291
1292
|
// Ctrl/Cmd+F: open the search bar from anywhere (even when input has
|
|
1292
1293
|
// focus, e.g. re-focus the search bar from the page input). Handled
|
|
1293
1294
|
// before the input-target guard so it always works.
|
|
@@ -1504,7 +1505,9 @@ class SdPreviewPdf {
|
|
|
1504
1505
|
try {
|
|
1505
1506
|
await pdfDoc.destroy();
|
|
1506
1507
|
}
|
|
1507
|
-
catch {
|
|
1508
|
+
catch {
|
|
1509
|
+
/* ignore */
|
|
1510
|
+
}
|
|
1508
1511
|
return;
|
|
1509
1512
|
}
|
|
1510
1513
|
let meta;
|
|
@@ -1607,7 +1610,9 @@ class SdPreviewPdf {
|
|
|
1607
1610
|
try {
|
|
1608
1611
|
this.#currentRenderTask.cancel();
|
|
1609
1612
|
}
|
|
1610
|
-
catch {
|
|
1613
|
+
catch {
|
|
1614
|
+
/* ignore */
|
|
1615
|
+
}
|
|
1611
1616
|
this.#currentRenderTask = null;
|
|
1612
1617
|
}
|
|
1613
1618
|
}
|
|
@@ -1619,7 +1624,9 @@ class SdPreviewPdf {
|
|
|
1619
1624
|
try {
|
|
1620
1625
|
await doc.destroy();
|
|
1621
1626
|
}
|
|
1622
|
-
catch {
|
|
1627
|
+
catch {
|
|
1628
|
+
/* ignore */
|
|
1629
|
+
}
|
|
1623
1630
|
}
|
|
1624
1631
|
#setZoom(value) {
|
|
1625
1632
|
const clamped = Math.min(_a.MAX_ZOOM, Math.max(_a.MIN_ZOOM, value));
|
|
@@ -1810,17 +1817,14 @@ class SdPreviewPdf {
|
|
|
1810
1817
|
const activePage = this.activePage();
|
|
1811
1818
|
if (!term || results.length === 0)
|
|
1812
1819
|
return;
|
|
1813
|
-
const pageHits = results
|
|
1814
|
-
.map((r, i) => ({ r, i }))
|
|
1815
|
-
.filter(({ r }) => r.page === activePage);
|
|
1820
|
+
const pageHits = results.map((r, i) => ({ r, i })).filter(({ r }) => r.page === activePage);
|
|
1816
1821
|
if (pageHits.length === 0)
|
|
1817
1822
|
return;
|
|
1818
1823
|
const overlay = document.createElement('div');
|
|
1819
1824
|
overlay.className = 'sd-pdf-search-overlay';
|
|
1820
1825
|
for (const { r, i } of pageHits) {
|
|
1821
1826
|
const m = document.createElement('mark');
|
|
1822
|
-
m.className =
|
|
1823
|
-
i === activeIdx ? 'sd-pdf-search-hi sd-pdf-search-hi--active' : 'sd-pdf-search-hi';
|
|
1827
|
+
m.className = i === activeIdx ? 'sd-pdf-search-hi sd-pdf-search-hi--active' : 'sd-pdf-search-hi';
|
|
1824
1828
|
m.textContent = r.term;
|
|
1825
1829
|
overlay.appendChild(m);
|
|
1826
1830
|
}
|