@praxisui/files-upload 9.0.0-beta.85 → 9.0.0-beta.86
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/ai/component-registry.json +2 -2
- package/fesm2022/praxisui-files-upload.mjs +144 -145
- package/package.json +5 -5
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-07-
|
|
3
|
+
"generatedAt": "2026-07-22T03:01:56.888Z",
|
|
4
4
|
"packageName": "@praxisui/files-upload",
|
|
5
|
-
"packageVersion": "9.0.0-beta.
|
|
5
|
+
"packageVersion": "9.0.0-beta.86",
|
|
6
6
|
"sourceRegistry": "praxis-component-registry-ingestion",
|
|
7
7
|
"sourceRegistryVersion": "1.0.0",
|
|
8
8
|
"componentCount": 1,
|
|
@@ -7,7 +7,7 @@ import * as i1$1 from '@angular/forms';
|
|
|
7
7
|
import { ReactiveFormsModule, FormsModule, FormControl } from '@angular/forms';
|
|
8
8
|
import * as i10 from '@angular/material/button';
|
|
9
9
|
import { MatButtonModule } from '@angular/material/button';
|
|
10
|
-
import * as
|
|
10
|
+
import * as i8 from '@angular/material/icon';
|
|
11
11
|
import { MatIconModule } from '@angular/material/icon';
|
|
12
12
|
import * as i12 from '@angular/material/progress-bar';
|
|
13
13
|
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
@@ -16,7 +16,7 @@ import { MatMenuModule } from '@angular/material/menu';
|
|
|
16
16
|
import * as i1 from '@angular/common/http';
|
|
17
17
|
import { HttpHeaders, HttpEventType, HttpResponse, HttpErrorResponse } from '@angular/common/http';
|
|
18
18
|
import * as i1$2 from '@praxisui/core';
|
|
19
|
-
import { providePraxisI18n, PraxisI18nService, ComponentKeyService, ASYNC_CONFIG_STORAGE, PraxisIconDirective, ComponentMetadataRegistry } from '@praxisui/core';
|
|
19
|
+
import { providePraxisI18n, PraxisI18nService, PraxisIconButtonComponent, ComponentKeyService, ASYNC_CONFIG_STORAGE, PraxisIconDirective, ComponentMetadataRegistry } from '@praxisui/core';
|
|
20
20
|
import * as i3 from '@angular/material/tabs';
|
|
21
21
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
22
22
|
import * as i4 from '@angular/material/form-field';
|
|
@@ -27,7 +27,7 @@ import * as i6 from '@angular/material/checkbox';
|
|
|
27
27
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
28
28
|
import * as i7 from '@angular/material/select';
|
|
29
29
|
import { MatSelectModule } from '@angular/material/select';
|
|
30
|
-
import * as
|
|
30
|
+
import * as i9 from '@angular/material/tooltip';
|
|
31
31
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
32
32
|
import * as i2 from '@angular/material/snack-bar';
|
|
33
33
|
import { MatSnackBarModule } from '@angular/material/snack-bar';
|
|
@@ -1635,14 +1635,14 @@ class PraxisFilesUploadConfigEditor {
|
|
|
1635
1635
|
>
|
|
1636
1636
|
</mat-select>
|
|
1637
1637
|
<button
|
|
1638
|
-
|
|
1638
|
+
praxisIconButton="help_outline"
|
|
1639
|
+
size="dense"
|
|
1639
1640
|
matSuffix
|
|
1640
1641
|
class="help-icon-button"
|
|
1641
1642
|
type="button"
|
|
1642
1643
|
[matTooltip]="tx('editor.behavior.strategy.hint', 'How files will be sent to the server.')"
|
|
1643
1644
|
matTooltipPosition="above"
|
|
1644
1645
|
>
|
|
1645
|
-
<mat-icon>help_outline</mat-icon>
|
|
1646
1646
|
</button>
|
|
1647
1647
|
</mat-form-field>
|
|
1648
1648
|
</form>
|
|
@@ -1660,42 +1660,42 @@ class PraxisFilesUploadConfigEditor {
|
|
|
1660
1660
|
<mat-label>{{ tx('editor.behavior.bulk.parallel', 'Parallel uploads') }} <span class="opt-tag">{{ tx('editor.shared.optionalTag', 'optional') }}</span></mat-label>
|
|
1661
1661
|
<input matInput type="number" formControlName="parallelUploads" />
|
|
1662
1662
|
<button
|
|
1663
|
-
|
|
1663
|
+
praxisIconButton="help_outline"
|
|
1664
|
+
size="dense"
|
|
1664
1665
|
matSuffix
|
|
1665
1666
|
class="help-icon-button"
|
|
1666
1667
|
type="button"
|
|
1667
1668
|
[matTooltip]="tx('editor.behavior.bulk.parallelHint', 'How many files to send at the same time.')"
|
|
1668
1669
|
matTooltipPosition="above"
|
|
1669
1670
|
>
|
|
1670
|
-
<mat-icon>help_outline</mat-icon>
|
|
1671
1671
|
</button>
|
|
1672
1672
|
</mat-form-field>
|
|
1673
1673
|
<mat-form-field appearance="fill">
|
|
1674
1674
|
<mat-label>{{ tx('editor.behavior.bulk.retryCount', 'Retry count') }} <span class="opt-tag">{{ tx('editor.shared.optionalTag', 'optional') }}</span></mat-label>
|
|
1675
1675
|
<input matInput type="number" formControlName="retryCount" />
|
|
1676
1676
|
<button
|
|
1677
|
-
|
|
1677
|
+
praxisIconButton="help_outline"
|
|
1678
|
+
size="dense"
|
|
1678
1679
|
matSuffix
|
|
1679
1680
|
class="help-icon-button"
|
|
1680
1681
|
type="button"
|
|
1681
1682
|
[matTooltip]="tx('editor.behavior.bulk.retryCountHint', 'Automatic attempts in case of failure.')"
|
|
1682
1683
|
matTooltipPosition="above"
|
|
1683
1684
|
>
|
|
1684
|
-
<mat-icon>help_outline</mat-icon>
|
|
1685
1685
|
</button>
|
|
1686
1686
|
</mat-form-field>
|
|
1687
1687
|
<mat-form-field appearance="fill">
|
|
1688
1688
|
<mat-label>{{ tx('editor.behavior.bulk.retryBackoff', 'Retry interval (ms)') }} <span class="opt-tag">{{ tx('editor.shared.optionalTag', 'optional') }}</span></mat-label>
|
|
1689
1689
|
<input matInput type="number" formControlName="retryBackoffMs" />
|
|
1690
1690
|
<button
|
|
1691
|
-
|
|
1691
|
+
praxisIconButton="help_outline"
|
|
1692
|
+
size="dense"
|
|
1692
1693
|
matSuffix
|
|
1693
1694
|
class="help-icon-button"
|
|
1694
1695
|
type="button"
|
|
1695
1696
|
[matTooltip]="tx('editor.behavior.bulk.retryBackoffHint', 'Wait time between attempts.')"
|
|
1696
1697
|
matTooltipPosition="above"
|
|
1697
1698
|
>
|
|
1698
|
-
<mat-icon>help_outline</mat-icon>
|
|
1699
1699
|
</button>
|
|
1700
1700
|
</mat-form-field>
|
|
1701
1701
|
</form>
|
|
@@ -1739,14 +1739,14 @@ class PraxisFilesUploadConfigEditor {
|
|
|
1739
1739
|
[placeholder]="tx('editor.placeholders.accept', 'e.g.: pdf,jpg,png')"
|
|
1740
1740
|
/>
|
|
1741
1741
|
<button
|
|
1742
|
-
|
|
1742
|
+
praxisIconButton="help_outline"
|
|
1743
|
+
size="dense"
|
|
1743
1744
|
matSuffix
|
|
1744
1745
|
class="help-icon-button"
|
|
1745
1746
|
type="button"
|
|
1746
1747
|
[matTooltip]="tx('editor.shared.csvOptional', 'Comma-separated list (optional).')"
|
|
1747
1748
|
matTooltipPosition="above"
|
|
1748
1749
|
>
|
|
1749
|
-
<mat-icon>help_outline</mat-icon>
|
|
1750
1750
|
</button>
|
|
1751
1751
|
</mat-form-field>
|
|
1752
1752
|
<mat-checkbox formControlName="showMetadataForm"
|
|
@@ -1812,14 +1812,14 @@ class PraxisFilesUploadConfigEditor {
|
|
|
1812
1812
|
<mat-label>{{ tx('editor.interface.list.detailsFields', 'Metadata fields (whitelist)') }} <span class="opt-tag">{{ tx('editor.shared.optionalTag', 'optional') }}</span></mat-label>
|
|
1813
1813
|
<input matInput formControlName="detailsFields" [placeholder]="tx('editor.placeholders.detailsFields', 'e.g.: id,fileName,contentType')" />
|
|
1814
1814
|
<button
|
|
1815
|
-
|
|
1815
|
+
praxisIconButton="help_outline"
|
|
1816
|
+
size="dense"
|
|
1816
1817
|
matSuffix
|
|
1817
1818
|
class="help-icon-button"
|
|
1818
1819
|
type="button"
|
|
1819
1820
|
[matTooltip]="tx('editor.interface.list.detailsFieldsHint', 'Comma-separated list; empty = all.')"
|
|
1820
1821
|
matTooltipPosition="above"
|
|
1821
1822
|
>
|
|
1822
|
-
<mat-icon>help_outline</mat-icon>
|
|
1823
1823
|
</button>
|
|
1824
1824
|
</mat-form-field>
|
|
1825
1825
|
<mat-form-field appearance="fill">
|
|
@@ -1855,14 +1855,14 @@ class PraxisFilesUploadConfigEditor {
|
|
|
1855
1855
|
<mat-label>{{ tx('editor.validation.local.maxFileSize', 'Maximum file size (bytes)') }} <span class="opt-tag">{{ tx('editor.shared.optionalTag', 'optional') }}</span></mat-label>
|
|
1856
1856
|
<input matInput type="number" formControlName="maxFileSizeBytes" />
|
|
1857
1857
|
<button
|
|
1858
|
-
|
|
1858
|
+
praxisIconButton="help_outline"
|
|
1859
|
+
size="dense"
|
|
1859
1860
|
matSuffix
|
|
1860
1861
|
class="help-icon-button"
|
|
1861
1862
|
type="button"
|
|
1862
1863
|
[matTooltip]="tx('editor.validation.local.maxFileSizeHint', 'Client-side validation limit (optional).')"
|
|
1863
1864
|
matTooltipPosition="above"
|
|
1864
1865
|
>
|
|
1865
|
-
<mat-icon>help_outline</mat-icon>
|
|
1866
1866
|
</button>
|
|
1867
1867
|
</mat-form-field>
|
|
1868
1868
|
<mat-form-field appearance="fill">
|
|
@@ -1894,14 +1894,14 @@ class PraxisFilesUploadConfigEditor {
|
|
|
1894
1894
|
<mat-option value="ERROR">{{ tx('editor.validation.backend.conflictPolicy.error', 'Fail (error)') }}</mat-option>
|
|
1895
1895
|
</mat-select>
|
|
1896
1896
|
<button
|
|
1897
|
-
|
|
1897
|
+
praxisIconButton="help_outline"
|
|
1898
|
+
size="dense"
|
|
1898
1899
|
matSuffix
|
|
1899
1900
|
class="help-icon-button"
|
|
1900
1901
|
type="button"
|
|
1901
1902
|
[matTooltip]="tx('editor.validation.backend.conflictPolicyHint', 'What to do when the file name already exists.')"
|
|
1902
1903
|
matTooltipPosition="above"
|
|
1903
1904
|
>
|
|
1904
|
-
<mat-icon>help_outline</mat-icon>
|
|
1905
1905
|
</button>
|
|
1906
1906
|
@if (optionsGroup.get('defaultConflictPolicy')?.value === 'OVERWRITE') {
|
|
1907
1907
|
<div class="warn">
|
|
@@ -1917,14 +1917,14 @@ class PraxisFilesUploadConfigEditor {
|
|
|
1917
1917
|
<mat-label>{{ tx('editor.validation.backend.maxUploadSizeMb', 'Maximum size per file (MB)') }} <span class="req-tag">mandatório</span></mat-label>
|
|
1918
1918
|
<input matInput type="number" formControlName="maxUploadSizeMb" required />
|
|
1919
1919
|
<button
|
|
1920
|
-
|
|
1920
|
+
praxisIconButton="help_outline"
|
|
1921
|
+
size="dense"
|
|
1921
1922
|
matSuffix
|
|
1922
1923
|
class="help-icon-button"
|
|
1923
1924
|
type="button"
|
|
1924
1925
|
[matTooltip]="tx('editor.validation.backend.maxUploadSizeMbHint', 'Validated by the backend (1–500 MB).')"
|
|
1925
1926
|
matTooltipPosition="above"
|
|
1926
1927
|
>
|
|
1927
|
-
<mat-icon>help_outline</mat-icon>
|
|
1928
1928
|
</button>
|
|
1929
1929
|
</mat-form-field>
|
|
1930
1930
|
<mat-form-field appearance="fill">
|
|
@@ -1935,14 +1935,14 @@ class PraxisFilesUploadConfigEditor {
|
|
|
1935
1935
|
[placeholder]="tx('editor.placeholders.allowedExtensions', 'e.g.: pdf,docx,xlsx')"
|
|
1936
1936
|
/>
|
|
1937
1937
|
<button
|
|
1938
|
-
|
|
1938
|
+
praxisIconButton="help_outline"
|
|
1939
|
+
size="dense"
|
|
1939
1940
|
matSuffix
|
|
1940
1941
|
class="help-icon-button"
|
|
1941
1942
|
type="button"
|
|
1942
1943
|
[matTooltip]="tx('editor.shared.csvOptional', 'Comma-separated list (optional).')"
|
|
1943
1944
|
matTooltipPosition="above"
|
|
1944
1945
|
>
|
|
1945
|
-
<mat-icon>help_outline</mat-icon>
|
|
1946
1946
|
</button>
|
|
1947
1947
|
</mat-form-field>
|
|
1948
1948
|
<mat-form-field appearance="fill">
|
|
@@ -1953,14 +1953,14 @@ class PraxisFilesUploadConfigEditor {
|
|
|
1953
1953
|
[placeholder]="tx('editor.placeholders.acceptMimeTypes', 'e.g.: application/pdf,image/png')"
|
|
1954
1954
|
/>
|
|
1955
1955
|
<button
|
|
1956
|
-
|
|
1956
|
+
praxisIconButton="help_outline"
|
|
1957
|
+
size="dense"
|
|
1957
1958
|
matSuffix
|
|
1958
1959
|
class="help-icon-button"
|
|
1959
1960
|
type="button"
|
|
1960
1961
|
[matTooltip]="tx('editor.shared.csvOptional', 'Comma-separated list (optional).')"
|
|
1961
1962
|
matTooltipPosition="above"
|
|
1962
1963
|
>
|
|
1963
|
-
<mat-icon>help_outline</mat-icon>
|
|
1964
1964
|
</button>
|
|
1965
1965
|
</mat-form-field>
|
|
1966
1966
|
<mat-form-field appearance="fill">
|
|
@@ -2210,13 +2210,13 @@ class PraxisFilesUploadConfigEditor {
|
|
|
2210
2210
|
<details>
|
|
2211
2211
|
<summary>{{ tx('editor.server.viewJson', 'View JSON') }}</summary>
|
|
2212
2212
|
<button
|
|
2213
|
-
|
|
2213
|
+
praxisIconButton="content_copy"
|
|
2214
|
+
size="compact"
|
|
2214
2215
|
[attr.aria-label]="tx('editor.server.copyJson', 'Copy JSON')"
|
|
2215
2216
|
(click)="copyServerConfig()"
|
|
2216
2217
|
type="button"
|
|
2217
2218
|
[title]="tx('editor.server.copyJson', 'Copy JSON')"
|
|
2218
2219
|
>
|
|
2219
|
-
<mat-icon>content_copy</mat-icon>
|
|
2220
2220
|
</button>
|
|
2221
2221
|
<pre>{{ serverData() | json }}</pre>
|
|
2222
2222
|
</details>
|
|
@@ -2256,7 +2256,7 @@ class PraxisFilesUploadConfigEditor {
|
|
|
2256
2256
|
</mat-tab-group>
|
|
2257
2257
|
</div>
|
|
2258
2258
|
</div>
|
|
2259
|
-
`, isInline: true, styles: [".editor-layout{display:grid;grid-template-columns:minmax(260px,320px) minmax(0,1fr);gap:16px;align-items:start}.summary-panel{position:sticky;top:0;display:flex;flex-direction:column;gap:12px;padding:16px;border:1px solid var(--pfx-surface-border, #d8d8d8);border-radius:16px;background:linear-gradient(180deg,#fafbfc,#fff)}.summary-panel h3{margin:0;font-size:1rem;font-weight:600}.summary-panel .summary-intro{margin:0;color:#000000a6;line-height:1.4;font-size:.88rem}.summary-grid{display:grid;gap:10px}.summary-card{padding:12px;border-radius:12px;background:#fff;border:1px solid #e7e9ee}.summary-card .eyebrow{display:block;margin-bottom:4px;font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#5f6b7a}.summary-card strong{display:block;margin-bottom:4px;font-size:.95rem}.summary-card p{margin:0;font-size:.85rem;line-height:1.45;color:#000000b8}.risk-panel{padding:12px;border-radius:12px;background:#fff8e8;border:1px solid #f0d29a}.risk-panel.safe{background:#f4fbf6;border-color:#b8ddc1}.risk-panel h4{display:flex;align-items:center;gap:6px;margin:0 0 8px;font-size:.92rem}.risk-list{display:grid;gap:8px}.risk-item{padding:10px;border-radius:10px;background:#ffffffb8}.risk-item strong{display:block;margin-bottom:2px;font-size:.84rem}.risk-item p,.risk-panel .safe-copy{margin:0;font-size:.82rem;line-height:1.4;color:#000000b8}.editor-main{min-width:0}.tab-panel{display:grid;gap:16px;padding-top:8px}.tab-intro{padding:16px 18px;border:1px solid #e5e8ef;border-radius:16px;background:linear-gradient(180deg,#fff,#f7f9fc)}.tab-intro h3{margin:0 0 6px;font-size:1rem;font-weight:600}.tab-intro p{margin:0;font-size:.9rem;line-height:1.5;color:#000000b8}.config-section{padding:18px;border:1px solid #e5e8ef;border-radius:16px;background:#fff}.config-section+.config-section{margin-top:0}.section-note{margin:0 0 16px;color:#000000b3;font-size:.88rem;line-height:1.45}.advanced-note{padding:14px 16px;border-radius:14px;border:1px solid #f0d29a;background:#fff8e8;color:#000000c7;font-size:.88rem;line-height:1.45}.json-textarea{width:100%;min-height:280px;padding:14px 16px;border-radius:14px;border:1px solid #d7dce5;background:#0f172a;color:#e5eefc;font:500 .84rem/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;resize:vertical}.server-tab{display:grid;gap:16px}.toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.summary{display:grid;gap:8px;padding-left:18px}.summary li{line-height:1.45}details{margin-top:12px;padding:14px 16px;border:1px solid #e5e8ef;border-radius:14px;background:#fbfcfe}details pre{white-space:pre-wrap;word-break:break-word}@media(max-width:1100px){.editor-layout{grid-template-columns:1fr}.summary-panel{position:static}}.
|
|
2259
|
+
`, isInline: true, styles: [".editor-layout{display:grid;grid-template-columns:minmax(260px,320px) minmax(0,1fr);gap:16px;align-items:start}.summary-panel{position:sticky;top:0;display:flex;flex-direction:column;gap:12px;padding:16px;border:1px solid var(--pfx-surface-border, #d8d8d8);border-radius:16px;background:linear-gradient(180deg,#fafbfc,#fff)}.summary-panel h3{margin:0;font-size:1rem;font-weight:600}.summary-panel .summary-intro{margin:0;color:#000000a6;line-height:1.4;font-size:.88rem}.summary-grid{display:grid;gap:10px}.summary-card{padding:12px;border-radius:12px;background:#fff;border:1px solid #e7e9ee}.summary-card .eyebrow{display:block;margin-bottom:4px;font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#5f6b7a}.summary-card strong{display:block;margin-bottom:4px;font-size:.95rem}.summary-card p{margin:0;font-size:.85rem;line-height:1.45;color:#000000b8}.risk-panel{padding:12px;border-radius:12px;background:#fff8e8;border:1px solid #f0d29a}.risk-panel.safe{background:#f4fbf6;border-color:#b8ddc1}.risk-panel h4{display:flex;align-items:center;gap:6px;margin:0 0 8px;font-size:.92rem}.risk-list{display:grid;gap:8px}.risk-item{padding:10px;border-radius:10px;background:#ffffffb8}.risk-item strong{display:block;margin-bottom:2px;font-size:.84rem}.risk-item p,.risk-panel .safe-copy{margin:0;font-size:.82rem;line-height:1.4;color:#000000b8}.editor-main{min-width:0}.tab-panel{display:grid;gap:16px;padding-top:8px}.tab-intro{padding:16px 18px;border:1px solid #e5e8ef;border-radius:16px;background:linear-gradient(180deg,#fff,#f7f9fc)}.tab-intro h3{margin:0 0 6px;font-size:1rem;font-weight:600}.tab-intro p{margin:0;font-size:.9rem;line-height:1.5;color:#000000b8}.config-section{padding:18px;border:1px solid #e5e8ef;border-radius:16px;background:#fff}.config-section+.config-section{margin-top:0}.section-note{margin:0 0 16px;color:#000000b3;font-size:.88rem;line-height:1.45}.advanced-note{padding:14px 16px;border-radius:14px;border:1px solid #f0d29a;background:#fff8e8;color:#000000c7;font-size:.88rem;line-height:1.45}.json-textarea{width:100%;min-height:280px;padding:14px 16px;border-radius:14px;border:1px solid #d7dce5;background:#0f172a;color:#e5eefc;font:500 .84rem/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;resize:vertical}.server-tab{display:grid;gap:16px}.toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.summary{display:grid;gap:8px;padding-left:18px}.summary li{line-height:1.45}details{margin-top:12px;padding:14px 16px;border:1px solid #e5e8ef;border-radius:14px;background:#fbfcfe}details pre{white-space:pre-wrap;word-break:break-word}@media(max-width:1100px){.editor-layout{grid-template-columns:1fr}.summary-panel{position:static}}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "pipe", type: i15.JsonPipe, name: "json" }] });
|
|
2260
2260
|
}
|
|
2261
2261
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisFilesUploadConfigEditor, decorators: [{
|
|
2262
2262
|
type: Component,
|
|
@@ -2273,6 +2273,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2273
2273
|
MatTooltipModule,
|
|
2274
2274
|
MatSnackBarModule,
|
|
2275
2275
|
FormsModule,
|
|
2276
|
+
PraxisIconButtonComponent,
|
|
2276
2277
|
], template: `
|
|
2277
2278
|
<div class="editor-layout">
|
|
2278
2279
|
<aside class="summary-panel" [attr.aria-label]="tx('editor.summary.ariaLabel', 'Executive summary for the current configuration')">
|
|
@@ -2353,14 +2354,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2353
2354
|
>
|
|
2354
2355
|
</mat-select>
|
|
2355
2356
|
<button
|
|
2356
|
-
|
|
2357
|
+
praxisIconButton="help_outline"
|
|
2358
|
+
size="dense"
|
|
2357
2359
|
matSuffix
|
|
2358
2360
|
class="help-icon-button"
|
|
2359
2361
|
type="button"
|
|
2360
2362
|
[matTooltip]="tx('editor.behavior.strategy.hint', 'How files will be sent to the server.')"
|
|
2361
2363
|
matTooltipPosition="above"
|
|
2362
2364
|
>
|
|
2363
|
-
<mat-icon>help_outline</mat-icon>
|
|
2364
2365
|
</button>
|
|
2365
2366
|
</mat-form-field>
|
|
2366
2367
|
</form>
|
|
@@ -2378,42 +2379,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2378
2379
|
<mat-label>{{ tx('editor.behavior.bulk.parallel', 'Parallel uploads') }} <span class="opt-tag">{{ tx('editor.shared.optionalTag', 'optional') }}</span></mat-label>
|
|
2379
2380
|
<input matInput type="number" formControlName="parallelUploads" />
|
|
2380
2381
|
<button
|
|
2381
|
-
|
|
2382
|
+
praxisIconButton="help_outline"
|
|
2383
|
+
size="dense"
|
|
2382
2384
|
matSuffix
|
|
2383
2385
|
class="help-icon-button"
|
|
2384
2386
|
type="button"
|
|
2385
2387
|
[matTooltip]="tx('editor.behavior.bulk.parallelHint', 'How many files to send at the same time.')"
|
|
2386
2388
|
matTooltipPosition="above"
|
|
2387
2389
|
>
|
|
2388
|
-
<mat-icon>help_outline</mat-icon>
|
|
2389
2390
|
</button>
|
|
2390
2391
|
</mat-form-field>
|
|
2391
2392
|
<mat-form-field appearance="fill">
|
|
2392
2393
|
<mat-label>{{ tx('editor.behavior.bulk.retryCount', 'Retry count') }} <span class="opt-tag">{{ tx('editor.shared.optionalTag', 'optional') }}</span></mat-label>
|
|
2393
2394
|
<input matInput type="number" formControlName="retryCount" />
|
|
2394
2395
|
<button
|
|
2395
|
-
|
|
2396
|
+
praxisIconButton="help_outline"
|
|
2397
|
+
size="dense"
|
|
2396
2398
|
matSuffix
|
|
2397
2399
|
class="help-icon-button"
|
|
2398
2400
|
type="button"
|
|
2399
2401
|
[matTooltip]="tx('editor.behavior.bulk.retryCountHint', 'Automatic attempts in case of failure.')"
|
|
2400
2402
|
matTooltipPosition="above"
|
|
2401
2403
|
>
|
|
2402
|
-
<mat-icon>help_outline</mat-icon>
|
|
2403
2404
|
</button>
|
|
2404
2405
|
</mat-form-field>
|
|
2405
2406
|
<mat-form-field appearance="fill">
|
|
2406
2407
|
<mat-label>{{ tx('editor.behavior.bulk.retryBackoff', 'Retry interval (ms)') }} <span class="opt-tag">{{ tx('editor.shared.optionalTag', 'optional') }}</span></mat-label>
|
|
2407
2408
|
<input matInput type="number" formControlName="retryBackoffMs" />
|
|
2408
2409
|
<button
|
|
2409
|
-
|
|
2410
|
+
praxisIconButton="help_outline"
|
|
2411
|
+
size="dense"
|
|
2410
2412
|
matSuffix
|
|
2411
2413
|
class="help-icon-button"
|
|
2412
2414
|
type="button"
|
|
2413
2415
|
[matTooltip]="tx('editor.behavior.bulk.retryBackoffHint', 'Wait time between attempts.')"
|
|
2414
2416
|
matTooltipPosition="above"
|
|
2415
2417
|
>
|
|
2416
|
-
<mat-icon>help_outline</mat-icon>
|
|
2417
2418
|
</button>
|
|
2418
2419
|
</mat-form-field>
|
|
2419
2420
|
</form>
|
|
@@ -2457,14 +2458,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2457
2458
|
[placeholder]="tx('editor.placeholders.accept', 'e.g.: pdf,jpg,png')"
|
|
2458
2459
|
/>
|
|
2459
2460
|
<button
|
|
2460
|
-
|
|
2461
|
+
praxisIconButton="help_outline"
|
|
2462
|
+
size="dense"
|
|
2461
2463
|
matSuffix
|
|
2462
2464
|
class="help-icon-button"
|
|
2463
2465
|
type="button"
|
|
2464
2466
|
[matTooltip]="tx('editor.shared.csvOptional', 'Comma-separated list (optional).')"
|
|
2465
2467
|
matTooltipPosition="above"
|
|
2466
2468
|
>
|
|
2467
|
-
<mat-icon>help_outline</mat-icon>
|
|
2468
2469
|
</button>
|
|
2469
2470
|
</mat-form-field>
|
|
2470
2471
|
<mat-checkbox formControlName="showMetadataForm"
|
|
@@ -2530,14 +2531,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2530
2531
|
<mat-label>{{ tx('editor.interface.list.detailsFields', 'Metadata fields (whitelist)') }} <span class="opt-tag">{{ tx('editor.shared.optionalTag', 'optional') }}</span></mat-label>
|
|
2531
2532
|
<input matInput formControlName="detailsFields" [placeholder]="tx('editor.placeholders.detailsFields', 'e.g.: id,fileName,contentType')" />
|
|
2532
2533
|
<button
|
|
2533
|
-
|
|
2534
|
+
praxisIconButton="help_outline"
|
|
2535
|
+
size="dense"
|
|
2534
2536
|
matSuffix
|
|
2535
2537
|
class="help-icon-button"
|
|
2536
2538
|
type="button"
|
|
2537
2539
|
[matTooltip]="tx('editor.interface.list.detailsFieldsHint', 'Comma-separated list; empty = all.')"
|
|
2538
2540
|
matTooltipPosition="above"
|
|
2539
2541
|
>
|
|
2540
|
-
<mat-icon>help_outline</mat-icon>
|
|
2541
2542
|
</button>
|
|
2542
2543
|
</mat-form-field>
|
|
2543
2544
|
<mat-form-field appearance="fill">
|
|
@@ -2573,14 +2574,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2573
2574
|
<mat-label>{{ tx('editor.validation.local.maxFileSize', 'Maximum file size (bytes)') }} <span class="opt-tag">{{ tx('editor.shared.optionalTag', 'optional') }}</span></mat-label>
|
|
2574
2575
|
<input matInput type="number" formControlName="maxFileSizeBytes" />
|
|
2575
2576
|
<button
|
|
2576
|
-
|
|
2577
|
+
praxisIconButton="help_outline"
|
|
2578
|
+
size="dense"
|
|
2577
2579
|
matSuffix
|
|
2578
2580
|
class="help-icon-button"
|
|
2579
2581
|
type="button"
|
|
2580
2582
|
[matTooltip]="tx('editor.validation.local.maxFileSizeHint', 'Client-side validation limit (optional).')"
|
|
2581
2583
|
matTooltipPosition="above"
|
|
2582
2584
|
>
|
|
2583
|
-
<mat-icon>help_outline</mat-icon>
|
|
2584
2585
|
</button>
|
|
2585
2586
|
</mat-form-field>
|
|
2586
2587
|
<mat-form-field appearance="fill">
|
|
@@ -2612,14 +2613,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2612
2613
|
<mat-option value="ERROR">{{ tx('editor.validation.backend.conflictPolicy.error', 'Fail (error)') }}</mat-option>
|
|
2613
2614
|
</mat-select>
|
|
2614
2615
|
<button
|
|
2615
|
-
|
|
2616
|
+
praxisIconButton="help_outline"
|
|
2617
|
+
size="dense"
|
|
2616
2618
|
matSuffix
|
|
2617
2619
|
class="help-icon-button"
|
|
2618
2620
|
type="button"
|
|
2619
2621
|
[matTooltip]="tx('editor.validation.backend.conflictPolicyHint', 'What to do when the file name already exists.')"
|
|
2620
2622
|
matTooltipPosition="above"
|
|
2621
2623
|
>
|
|
2622
|
-
<mat-icon>help_outline</mat-icon>
|
|
2623
2624
|
</button>
|
|
2624
2625
|
@if (optionsGroup.get('defaultConflictPolicy')?.value === 'OVERWRITE') {
|
|
2625
2626
|
<div class="warn">
|
|
@@ -2635,14 +2636,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2635
2636
|
<mat-label>{{ tx('editor.validation.backend.maxUploadSizeMb', 'Maximum size per file (MB)') }} <span class="req-tag">mandatório</span></mat-label>
|
|
2636
2637
|
<input matInput type="number" formControlName="maxUploadSizeMb" required />
|
|
2637
2638
|
<button
|
|
2638
|
-
|
|
2639
|
+
praxisIconButton="help_outline"
|
|
2640
|
+
size="dense"
|
|
2639
2641
|
matSuffix
|
|
2640
2642
|
class="help-icon-button"
|
|
2641
2643
|
type="button"
|
|
2642
2644
|
[matTooltip]="tx('editor.validation.backend.maxUploadSizeMbHint', 'Validated by the backend (1–500 MB).')"
|
|
2643
2645
|
matTooltipPosition="above"
|
|
2644
2646
|
>
|
|
2645
|
-
<mat-icon>help_outline</mat-icon>
|
|
2646
2647
|
</button>
|
|
2647
2648
|
</mat-form-field>
|
|
2648
2649
|
<mat-form-field appearance="fill">
|
|
@@ -2653,14 +2654,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2653
2654
|
[placeholder]="tx('editor.placeholders.allowedExtensions', 'e.g.: pdf,docx,xlsx')"
|
|
2654
2655
|
/>
|
|
2655
2656
|
<button
|
|
2656
|
-
|
|
2657
|
+
praxisIconButton="help_outline"
|
|
2658
|
+
size="dense"
|
|
2657
2659
|
matSuffix
|
|
2658
2660
|
class="help-icon-button"
|
|
2659
2661
|
type="button"
|
|
2660
2662
|
[matTooltip]="tx('editor.shared.csvOptional', 'Comma-separated list (optional).')"
|
|
2661
2663
|
matTooltipPosition="above"
|
|
2662
2664
|
>
|
|
2663
|
-
<mat-icon>help_outline</mat-icon>
|
|
2664
2665
|
</button>
|
|
2665
2666
|
</mat-form-field>
|
|
2666
2667
|
<mat-form-field appearance="fill">
|
|
@@ -2671,14 +2672,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2671
2672
|
[placeholder]="tx('editor.placeholders.acceptMimeTypes', 'e.g.: application/pdf,image/png')"
|
|
2672
2673
|
/>
|
|
2673
2674
|
<button
|
|
2674
|
-
|
|
2675
|
+
praxisIconButton="help_outline"
|
|
2676
|
+
size="dense"
|
|
2675
2677
|
matSuffix
|
|
2676
2678
|
class="help-icon-button"
|
|
2677
2679
|
type="button"
|
|
2678
2680
|
[matTooltip]="tx('editor.shared.csvOptional', 'Comma-separated list (optional).')"
|
|
2679
2681
|
matTooltipPosition="above"
|
|
2680
2682
|
>
|
|
2681
|
-
<mat-icon>help_outline</mat-icon>
|
|
2682
2683
|
</button>
|
|
2683
2684
|
</mat-form-field>
|
|
2684
2685
|
<mat-form-field appearance="fill">
|
|
@@ -2928,13 +2929,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2928
2929
|
<details>
|
|
2929
2930
|
<summary>{{ tx('editor.server.viewJson', 'View JSON') }}</summary>
|
|
2930
2931
|
<button
|
|
2931
|
-
|
|
2932
|
+
praxisIconButton="content_copy"
|
|
2933
|
+
size="compact"
|
|
2932
2934
|
[attr.aria-label]="tx('editor.server.copyJson', 'Copy JSON')"
|
|
2933
2935
|
(click)="copyServerConfig()"
|
|
2934
2936
|
type="button"
|
|
2935
2937
|
[title]="tx('editor.server.copyJson', 'Copy JSON')"
|
|
2936
2938
|
>
|
|
2937
|
-
<mat-icon>content_copy</mat-icon>
|
|
2938
2939
|
</button>
|
|
2939
2940
|
<pre>{{ serverData() | json }}</pre>
|
|
2940
2941
|
</details>
|
|
@@ -2974,7 +2975,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2974
2975
|
</mat-tab-group>
|
|
2975
2976
|
</div>
|
|
2976
2977
|
</div>
|
|
2977
|
-
`, styles: [".editor-layout{display:grid;grid-template-columns:minmax(260px,320px) minmax(0,1fr);gap:16px;align-items:start}.summary-panel{position:sticky;top:0;display:flex;flex-direction:column;gap:12px;padding:16px;border:1px solid var(--pfx-surface-border, #d8d8d8);border-radius:16px;background:linear-gradient(180deg,#fafbfc,#fff)}.summary-panel h3{margin:0;font-size:1rem;font-weight:600}.summary-panel .summary-intro{margin:0;color:#000000a6;line-height:1.4;font-size:.88rem}.summary-grid{display:grid;gap:10px}.summary-card{padding:12px;border-radius:12px;background:#fff;border:1px solid #e7e9ee}.summary-card .eyebrow{display:block;margin-bottom:4px;font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#5f6b7a}.summary-card strong{display:block;margin-bottom:4px;font-size:.95rem}.summary-card p{margin:0;font-size:.85rem;line-height:1.45;color:#000000b8}.risk-panel{padding:12px;border-radius:12px;background:#fff8e8;border:1px solid #f0d29a}.risk-panel.safe{background:#f4fbf6;border-color:#b8ddc1}.risk-panel h4{display:flex;align-items:center;gap:6px;margin:0 0 8px;font-size:.92rem}.risk-list{display:grid;gap:8px}.risk-item{padding:10px;border-radius:10px;background:#ffffffb8}.risk-item strong{display:block;margin-bottom:2px;font-size:.84rem}.risk-item p,.risk-panel .safe-copy{margin:0;font-size:.82rem;line-height:1.4;color:#000000b8}.editor-main{min-width:0}.tab-panel{display:grid;gap:16px;padding-top:8px}.tab-intro{padding:16px 18px;border:1px solid #e5e8ef;border-radius:16px;background:linear-gradient(180deg,#fff,#f7f9fc)}.tab-intro h3{margin:0 0 6px;font-size:1rem;font-weight:600}.tab-intro p{margin:0;font-size:.9rem;line-height:1.5;color:#000000b8}.config-section{padding:18px;border:1px solid #e5e8ef;border-radius:16px;background:#fff}.config-section+.config-section{margin-top:0}.section-note{margin:0 0 16px;color:#000000b3;font-size:.88rem;line-height:1.45}.advanced-note{padding:14px 16px;border-radius:14px;border:1px solid #f0d29a;background:#fff8e8;color:#000000c7;font-size:.88rem;line-height:1.45}.json-textarea{width:100%;min-height:280px;padding:14px 16px;border-radius:14px;border:1px solid #d7dce5;background:#0f172a;color:#e5eefc;font:500 .84rem/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;resize:vertical}.server-tab{display:grid;gap:16px}.toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.summary{display:grid;gap:8px;padding-left:18px}.summary li{line-height:1.45}details{margin-top:12px;padding:14px 16px;border:1px solid #e5e8ef;border-radius:14px;background:#fbfcfe}details pre{white-space:pre-wrap;word-break:break-word}@media(max-width:1100px){.editor-layout{grid-template-columns:1fr}.summary-panel{position:static}}.
|
|
2978
|
+
`, styles: [".editor-layout{display:grid;grid-template-columns:minmax(260px,320px) minmax(0,1fr);gap:16px;align-items:start}.summary-panel{position:sticky;top:0;display:flex;flex-direction:column;gap:12px;padding:16px;border:1px solid var(--pfx-surface-border, #d8d8d8);border-radius:16px;background:linear-gradient(180deg,#fafbfc,#fff)}.summary-panel h3{margin:0;font-size:1rem;font-weight:600}.summary-panel .summary-intro{margin:0;color:#000000a6;line-height:1.4;font-size:.88rem}.summary-grid{display:grid;gap:10px}.summary-card{padding:12px;border-radius:12px;background:#fff;border:1px solid #e7e9ee}.summary-card .eyebrow{display:block;margin-bottom:4px;font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#5f6b7a}.summary-card strong{display:block;margin-bottom:4px;font-size:.95rem}.summary-card p{margin:0;font-size:.85rem;line-height:1.45;color:#000000b8}.risk-panel{padding:12px;border-radius:12px;background:#fff8e8;border:1px solid #f0d29a}.risk-panel.safe{background:#f4fbf6;border-color:#b8ddc1}.risk-panel h4{display:flex;align-items:center;gap:6px;margin:0 0 8px;font-size:.92rem}.risk-list{display:grid;gap:8px}.risk-item{padding:10px;border-radius:10px;background:#ffffffb8}.risk-item strong{display:block;margin-bottom:2px;font-size:.84rem}.risk-item p,.risk-panel .safe-copy{margin:0;font-size:.82rem;line-height:1.4;color:#000000b8}.editor-main{min-width:0}.tab-panel{display:grid;gap:16px;padding-top:8px}.tab-intro{padding:16px 18px;border:1px solid #e5e8ef;border-radius:16px;background:linear-gradient(180deg,#fff,#f7f9fc)}.tab-intro h3{margin:0 0 6px;font-size:1rem;font-weight:600}.tab-intro p{margin:0;font-size:.9rem;line-height:1.5;color:#000000b8}.config-section{padding:18px;border:1px solid #e5e8ef;border-radius:16px;background:#fff}.config-section+.config-section{margin-top:0}.section-note{margin:0 0 16px;color:#000000b3;font-size:.88rem;line-height:1.45}.advanced-note{padding:14px 16px;border-radius:14px;border:1px solid #f0d29a;background:#fff8e8;color:#000000c7;font-size:.88rem;line-height:1.45}.json-textarea{width:100%;min-height:280px;padding:14px 16px;border-radius:14px;border:1px solid #d7dce5;background:#0f172a;color:#e5eefc;font:500 .84rem/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;resize:vertical}.server-tab{display:grid;gap:16px}.toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.summary{display:grid;gap:8px;padding-left:18px}.summary li{line-height:1.45}details{margin-top:12px;padding:14px 16px;border:1px solid #e5e8ef;border-radius:14px;background:#fbfcfe}details pre{white-space:pre-wrap;word-break:break-word}@media(max-width:1100px){.editor-layout{grid-template-columns:1fr}.summary-panel{position:static}}.mat-mdc-form-field-icon-suffix{align-self:center}\n"] }]
|
|
2978
2979
|
}], ctorParameters: () => [{ type: i1$1.FormBuilder }, { type: undefined, decorators: [{
|
|
2979
2980
|
type: Inject,
|
|
2980
2981
|
args: [SETTINGS_PANEL_DATA]
|
|
@@ -4687,25 +4688,25 @@ class PraxisFilesUpload {
|
|
|
4687
4688
|
</div>
|
|
4688
4689
|
</div>
|
|
4689
4690
|
<button
|
|
4690
|
-
|
|
4691
|
+
praxisIconButton="close"
|
|
4692
|
+
size="compact"
|
|
4693
|
+
type="button"
|
|
4691
4694
|
class="remove-btn"
|
|
4692
4695
|
[matTooltip]="t('remove', 'Remover')"
|
|
4693
4696
|
(click)="removePendingFile(f)"
|
|
4694
4697
|
[attr.aria-label]="pendingFileRemoveAriaLabel(f)"
|
|
4695
|
-
|
|
4696
|
-
<mat-icon [praxisIcon]="'close'"></mat-icon>
|
|
4697
|
-
</button>
|
|
4698
|
+
></button>
|
|
4698
4699
|
<button
|
|
4699
|
-
|
|
4700
|
+
praxisIconButton="more_horiz"
|
|
4701
|
+
size="compact"
|
|
4702
|
+
type="button"
|
|
4700
4703
|
class="more-btn"
|
|
4701
4704
|
[matMenuTriggerFor]="fileMenu"
|
|
4702
4705
|
[matMenuTriggerData]="{ file: f }"
|
|
4703
4706
|
aria-haspopup="menu"
|
|
4704
4707
|
[matTooltip]="t('moreActions', 'Mais ações')"
|
|
4705
4708
|
[attr.aria-label]="pendingFileMoreActionsAriaLabel(f)"
|
|
4706
|
-
|
|
4707
|
-
<mat-icon [praxisIcon]="'more_horiz'"></mat-icon>
|
|
4708
|
-
</button>
|
|
4709
|
+
></button>
|
|
4709
4710
|
<mat-menu
|
|
4710
4711
|
#fileMenu="matMenu"
|
|
4711
4712
|
xPosition="before"
|
|
@@ -4734,13 +4735,12 @@ class PraxisFilesUpload {
|
|
|
4734
4735
|
@if (enableCustomization) {
|
|
4735
4736
|
<button
|
|
4736
4737
|
type="button"
|
|
4737
|
-
|
|
4738
|
+
praxisIconButton="settings"
|
|
4739
|
+
size="compact"
|
|
4738
4740
|
class="settings-btn"
|
|
4739
4741
|
(click)="openSettings()"
|
|
4740
4742
|
[attr.aria-label]="texts.settingsAriaLabel"
|
|
4741
|
-
|
|
4742
|
-
<mat-icon [praxisIcon]="'settings'"></mat-icon>
|
|
4743
|
-
</button>
|
|
4743
|
+
></button>
|
|
4744
4744
|
}
|
|
4745
4745
|
@if (rateLimit && config?.rateLimit?.showBannerOn429 !== false) {
|
|
4746
4746
|
<div
|
|
@@ -4809,23 +4809,23 @@ class PraxisFilesUpload {
|
|
|
4809
4809
|
<!-- Ações internas (ícones) -->
|
|
4810
4810
|
<div class="field-actions" aria-hidden="false">
|
|
4811
4811
|
<button
|
|
4812
|
-
|
|
4812
|
+
praxisIconButton="attach_file"
|
|
4813
|
+
size="dense"
|
|
4814
|
+
type="button"
|
|
4813
4815
|
[matTooltip]="t('selectFiles', 'Select file(s)')"
|
|
4814
4816
|
[attr.aria-label]="selectFilesAriaLabel"
|
|
4815
4817
|
(click)="$event.stopPropagation(); openFile(fileInput)"
|
|
4816
4818
|
[disabled]="!baseUrl || isUploading"
|
|
4817
|
-
|
|
4818
|
-
<mat-icon [praxisIcon]="'attach_file'"></mat-icon>
|
|
4819
|
-
</button>
|
|
4819
|
+
></button>
|
|
4820
4820
|
<button
|
|
4821
|
-
|
|
4821
|
+
praxisIconButton="info"
|
|
4822
|
+
size="dense"
|
|
4823
|
+
type="button"
|
|
4822
4824
|
[matTooltip]="policiesSummary"
|
|
4823
4825
|
[attr.aria-label]="policySummaryAriaLabel"
|
|
4824
4826
|
(click)="$event.stopPropagation()"
|
|
4825
4827
|
[disabled]="false"
|
|
4826
|
-
|
|
4827
|
-
<mat-icon [praxisIcon]="'info'"></mat-icon>
|
|
4828
|
-
</button>
|
|
4828
|
+
></button>
|
|
4829
4829
|
</div>
|
|
4830
4830
|
<mat-icon class="dz-icon" aria-hidden="true" [praxisIcon]="'cloud_upload'"></mat-icon>
|
|
4831
4831
|
<p class="dz-title">{{ texts.dropzoneLabel }}</p>
|
|
@@ -5019,48 +5019,48 @@ class PraxisFilesUpload {
|
|
|
5019
5019
|
</div>
|
|
5020
5020
|
<div class="item-actions">
|
|
5021
5021
|
<button
|
|
5022
|
-
|
|
5022
|
+
praxisIconButton="info"
|
|
5023
|
+
size="compact"
|
|
5024
|
+
type="button"
|
|
5023
5025
|
[matTooltip]="t('details', 'Detalhes')"
|
|
5024
5026
|
[attr.aria-label]="resultActionAriaLabel('details', 'Detalhes', r.fileName)"
|
|
5025
5027
|
(click)="toggleDetailsFor(r)"
|
|
5026
|
-
|
|
5027
|
-
<mat-icon [praxisIcon]="'info'"></mat-icon>
|
|
5028
|
-
</button>
|
|
5028
|
+
></button>
|
|
5029
5029
|
<button
|
|
5030
|
-
|
|
5030
|
+
praxisIconButton="refresh"
|
|
5031
|
+
size="compact"
|
|
5032
|
+
type="button"
|
|
5031
5033
|
[matTooltip]="t('retry', 'Reenviar')"
|
|
5032
5034
|
[attr.aria-label]="resultActionAriaLabel('retry', 'Reenviar', r.fileName)"
|
|
5033
5035
|
(click)="onRetry(r)"
|
|
5034
5036
|
[disabled]="isUploading"
|
|
5035
|
-
|
|
5036
|
-
<mat-icon [praxisIcon]="'refresh'"></mat-icon>
|
|
5037
|
-
</button>
|
|
5037
|
+
></button>
|
|
5038
5038
|
<button
|
|
5039
|
-
|
|
5039
|
+
praxisIconButton="download"
|
|
5040
|
+
size="compact"
|
|
5041
|
+
type="button"
|
|
5040
5042
|
[matTooltip]="t('download', 'Baixar')"
|
|
5041
5043
|
[attr.aria-label]="resultActionAriaLabel('download', 'Baixar', r.fileName)"
|
|
5042
5044
|
(click)="onDownload(r)"
|
|
5043
5045
|
[disabled]="r.status !== BulkUploadResultStatus.SUCCESS"
|
|
5044
|
-
|
|
5045
|
-
<mat-icon [praxisIcon]="'download'"></mat-icon>
|
|
5046
|
-
</button>
|
|
5046
|
+
></button>
|
|
5047
5047
|
<button
|
|
5048
|
-
|
|
5048
|
+
praxisIconButton="link"
|
|
5049
|
+
size="compact"
|
|
5050
|
+
type="button"
|
|
5049
5051
|
[matTooltip]="t('copyLink', 'Copiar link')"
|
|
5050
5052
|
[attr.aria-label]="resultActionAriaLabel('copyLink', 'Copiar link', r.fileName)"
|
|
5051
5053
|
(click)="onCopyLink(r)"
|
|
5052
5054
|
[disabled]="r.status !== BulkUploadResultStatus.SUCCESS"
|
|
5053
|
-
|
|
5054
|
-
<mat-icon [praxisIcon]="'link'"></mat-icon>
|
|
5055
|
-
</button>
|
|
5055
|
+
></button>
|
|
5056
5056
|
<button
|
|
5057
|
-
|
|
5057
|
+
praxisIconButton="close"
|
|
5058
|
+
size="compact"
|
|
5059
|
+
type="button"
|
|
5058
5060
|
[matTooltip]="t('remove', 'Remover')"
|
|
5059
5061
|
[attr.aria-label]="resultActionAriaLabel('remove', 'Remover', r.fileName)"
|
|
5060
5062
|
(click)="removeResult(r)"
|
|
5061
|
-
|
|
5062
|
-
<mat-icon [praxisIcon]="'close'"></mat-icon>
|
|
5063
|
-
</button>
|
|
5063
|
+
></button>
|
|
5064
5064
|
</div>
|
|
5065
5065
|
</li>
|
|
5066
5066
|
}
|
|
@@ -5097,7 +5097,7 @@ class PraxisFilesUpload {
|
|
|
5097
5097
|
|
|
5098
5098
|
<ng-content></ng-content>
|
|
5099
5099
|
</div>
|
|
5100
|
-
`, isInline: true, styles: ["@charset \"UTF-8\";.praxis-files-upload{position:relative}.praxis-files-upload .settings-btn{position:absolute;top:.5rem;right:.5rem}.praxis-files-upload .rate-limit-banner,.praxis-files-upload .quota-banner,.praxis-files-upload .error{margin:.5rem 0;padding:.5rem 1rem;border-radius:var(--md-sys-shape-corner-small, 4px)}.praxis-files-upload .rate-limit-banner{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.praxis-files-upload .quota-banner{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.praxis-files-upload .dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;border:2px dashed var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-medium, 4px);background:var(--md-sys-color-surface-container-low);color:var(--md-sys-color-on-surface);text-align:center;transition:background-color .2s;width:100%;min-height:160px;margin:.5rem 0;gap:.5rem;position:relative}.praxis-files-upload .dropzone:hover{outline:none;background:var(--md-sys-color-surface-container-high);border-color:var(--md-sys-color-primary)}.praxis-files-upload .dropzone.dragover{background:var(--md-sys-color-surface-container-high);border-color:var(--md-sys-color-primary)}.praxis-files-upload .dropzone.disabled{opacity:.6;cursor:not-allowed;pointer-events:none}.praxis-files-upload .dropzone p{margin:0 0 .5rem}.praxis-files-upload .dropzone .dz-icon{font-size:40px;color:var(--md-sys-color-primary);margin-bottom:.25rem}.praxis-files-upload .dropzone .dz-title{font-weight:600}.praxis-files-upload .dropzone .dz-hint{margin:0;opacity:.8;font-size:.9rem}.praxis-files-upload .dropzone .field-actions{position:absolute;top:.25rem;right:.25rem;display:flex;gap:.25rem;pointer-events:auto}.praxis-files-upload .dropzone .field-actions button[mat-icon-button]{width:32px;height:32px}.praxis-files-upload .dropzone .field-actions mat-icon{font-size:20px}.praxis-files-upload .progress{margin-top:1rem}.praxis-files-upload .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.praxis-files-upload .bulk-results{margin-top:1rem}.praxis-files-upload .bulk-results .bulk-summary{display:flex;gap:1rem;align-items:center;margin-bottom:.5rem}.praxis-files-upload .bulk-results .bulk-summary .stat{display:flex;align-items:center;gap:.35rem;padding:.25rem .5rem;border-radius:6px;background:var(--md-sys-color-surface-container-low)}.praxis-files-upload .bulk-results .bulk-summary .stat.success{color:var(--md-sys-color-primary)}.praxis-files-upload .bulk-results .bulk-summary .stat.failed{color:var(--md-sys-color-error)}.praxis-files-upload .bulk-results .bulk-summary .stat .label{opacity:.9}.praxis-files-upload .bulk-results .bulk-summary .stat .value{font-weight:600}.praxis-files-upload .bulk-results .results-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.praxis-files-upload .bulk-results .result-item{display:flex;gap:.75rem;padding:.5rem .75rem;border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;background:var(--md-sys-color-surface-container-lowest)}.praxis-files-upload .bulk-results .result-item.ok{border-color:var(--md-sys-color-primary)}.praxis-files-upload .bulk-results .result-item.err{border-color:var(--md-sys-color-error)}.praxis-files-upload .bulk-results .result-item .status-icon{align-self:flex-start;color:currentColor}.praxis-files-upload .bulk-results .result-item .main{flex:1;min-width:0}.praxis-files-upload .bulk-results .result-item .title{display:flex;align-items:center;gap:.5rem}.praxis-files-upload .bulk-results .result-item .name{font-weight:600}.praxis-files-upload .bulk-results .result-item .badge{font-size:.75rem;padding:.1rem .4rem;border-radius:999px;background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}.praxis-files-upload .bulk-results .result-item .badge.err{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.praxis-files-upload .bulk-results .result-item .meta,.praxis-files-upload .bulk-results .result-item .error{display:flex;flex-wrap:wrap;gap:.5rem 1rem;margin-top:.25rem}.praxis-files-upload .bulk-results .result-item .error .code{font-weight:600}.praxis-files-upload .bulk-results .result-item .extra{margin-top:.25rem}.praxis-files-upload .bulk-results .result-item .item-actions{display:flex;align-items:center;gap:.25rem}.praxis-files-upload .bulk-results .list-footer{margin-top:.5rem;display:flex;justify-content:center}.praxis-files-upload .proximity-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;border:2px dashed var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-medium, 4px);background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface);text-align:center;z-index:2;pointer-events:none}.praxis-files-upload .proximity-overlay .dz-icon{font-size:40px;color:var(--md-sys-color-primary)}.praxis-files-upload .proximity-overlay .dz-title{font-weight:600}.praxis-files-upload .proximity-overlay .dz-hint{opacity:.85}.praxis-files-upload .selected-overlay{background:var(--md-sys-color-surface);color:var(--md-sys-color-on-surface);border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;box-shadow:var(--md-sys-elevation-level2, 0 2px 6px rgba(0, 0, 0, .15));max-height:260px;overflow:auto;padding:.5rem}.praxis-files-upload .selected-overlay .sel-header{position:sticky;top:0;z-index:1;background:var(--md-sys-color-surface);display:flex;align-items:center;gap:.5rem;padding-bottom:.25rem;margin-bottom:.25rem}.praxis-files-upload .selected-overlay .sel-header .title{font-weight:600}.praxis-files-upload .selected-overlay .sel-header .spacer{flex:1}.praxis-files-upload .selected-overlay .sel-list{list-style:none;margin:0;padding:0}.praxis-files-upload .selected-overlay .sel-list .sel-item{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem;border-bottom:1px solid var(--md-sys-color-outline-variant, #ccc);transition:background-color .12s ease}.praxis-files-upload .selected-overlay .sel-list .sel-item .file-icon{opacity:.9;color:var(--md-sys-color-primary, #1976d2)}.praxis-files-upload .selected-overlay .sel-list .sel-item .info{flex:1;min-width:0}.praxis-files-upload .selected-overlay .sel-list .sel-item .info .name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.praxis-files-upload .selected-overlay .sel-list .sel-item .info .meta{font-size:.8rem;opacity:.7}.praxis-files-upload .selected-overlay .sel-list .sel-item .remove-btn{color:var(--md-sys-color-error, #b00020)}.praxis-files-upload .selected-overlay .sel-list .sel-item .more-btn{margin-left:.25rem}.praxis-files-upload .selected-overlay .sel-list .sel-item:hover{background:var(--md-sys-color-surface-container-low)}:host ::ng-deep .praxis-files-upload-overlay-panel{pointer-events:none}:host ::ng-deep .praxis-files-selected-overlay-panel{pointer-events:auto;z-index:3}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i10.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i10.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i12.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i13.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i13.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i13.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i10$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i15.JsonPipe, name: "json" }, { kind: "pipe", type: i15.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5100
|
+
`, isInline: true, styles: ["@charset \"UTF-8\";.praxis-files-upload{position:relative}.praxis-files-upload .settings-btn{position:absolute;top:.5rem;right:.5rem}.praxis-files-upload .rate-limit-banner,.praxis-files-upload .quota-banner,.praxis-files-upload .error{margin:.5rem 0;padding:.5rem 1rem;border-radius:var(--md-sys-shape-corner-small, 4px)}.praxis-files-upload .rate-limit-banner{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.praxis-files-upload .quota-banner{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.praxis-files-upload .dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;border:2px dashed var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-medium, 4px);background:var(--md-sys-color-surface-container-low);color:var(--md-sys-color-on-surface);text-align:center;transition:background-color .2s;width:100%;min-height:160px;margin:.5rem 0;gap:.5rem;position:relative}.praxis-files-upload .dropzone:hover{outline:none;background:var(--md-sys-color-surface-container-high);border-color:var(--md-sys-color-primary)}.praxis-files-upload .dropzone.dragover{background:var(--md-sys-color-surface-container-high);border-color:var(--md-sys-color-primary)}.praxis-files-upload .dropzone.disabled{opacity:.6;cursor:not-allowed;pointer-events:none}.praxis-files-upload .dropzone p{margin:0 0 .5rem}.praxis-files-upload .dropzone .dz-icon{font-size:40px;color:var(--md-sys-color-primary);margin-bottom:.25rem}.praxis-files-upload .dropzone .dz-title{font-weight:600}.praxis-files-upload .dropzone .dz-hint{margin:0;opacity:.8;font-size:.9rem}.praxis-files-upload .dropzone .field-actions{position:absolute;top:.25rem;right:.25rem;display:flex;gap:.25rem;pointer-events:auto}.praxis-files-upload .progress{margin-top:1rem}.praxis-files-upload .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.praxis-files-upload .bulk-results{margin-top:1rem}.praxis-files-upload .bulk-results .bulk-summary{display:flex;gap:1rem;align-items:center;margin-bottom:.5rem}.praxis-files-upload .bulk-results .bulk-summary .stat{display:flex;align-items:center;gap:.35rem;padding:.25rem .5rem;border-radius:6px;background:var(--md-sys-color-surface-container-low)}.praxis-files-upload .bulk-results .bulk-summary .stat.success{color:var(--md-sys-color-primary)}.praxis-files-upload .bulk-results .bulk-summary .stat.failed{color:var(--md-sys-color-error)}.praxis-files-upload .bulk-results .bulk-summary .stat .label{opacity:.9}.praxis-files-upload .bulk-results .bulk-summary .stat .value{font-weight:600}.praxis-files-upload .bulk-results .results-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.praxis-files-upload .bulk-results .result-item{display:flex;gap:.75rem;padding:.5rem .75rem;border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;background:var(--md-sys-color-surface-container-lowest)}.praxis-files-upload .bulk-results .result-item.ok{border-color:var(--md-sys-color-primary)}.praxis-files-upload .bulk-results .result-item.err{border-color:var(--md-sys-color-error)}.praxis-files-upload .bulk-results .result-item .status-icon{align-self:flex-start;color:currentColor}.praxis-files-upload .bulk-results .result-item .main{flex:1;min-width:0}.praxis-files-upload .bulk-results .result-item .title{display:flex;align-items:center;gap:.5rem}.praxis-files-upload .bulk-results .result-item .name{font-weight:600}.praxis-files-upload .bulk-results .result-item .badge{font-size:.75rem;padding:.1rem .4rem;border-radius:999px;background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}.praxis-files-upload .bulk-results .result-item .badge.err{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.praxis-files-upload .bulk-results .result-item .meta,.praxis-files-upload .bulk-results .result-item .error{display:flex;flex-wrap:wrap;gap:.5rem 1rem;margin-top:.25rem}.praxis-files-upload .bulk-results .result-item .error .code{font-weight:600}.praxis-files-upload .bulk-results .result-item .extra{margin-top:.25rem}.praxis-files-upload .bulk-results .result-item .item-actions{display:flex;align-items:center;gap:.25rem}.praxis-files-upload .bulk-results .list-footer{margin-top:.5rem;display:flex;justify-content:center}.praxis-files-upload .proximity-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;border:2px dashed var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-medium, 4px);background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface);text-align:center;z-index:2;pointer-events:none}.praxis-files-upload .proximity-overlay .dz-icon{font-size:40px;color:var(--md-sys-color-primary)}.praxis-files-upload .proximity-overlay .dz-title{font-weight:600}.praxis-files-upload .proximity-overlay .dz-hint{opacity:.85}.praxis-files-upload .selected-overlay{background:var(--md-sys-color-surface);color:var(--md-sys-color-on-surface);border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;box-shadow:var(--md-sys-elevation-level2, 0 2px 6px rgba(0, 0, 0, .15));max-height:260px;overflow:auto;padding:.5rem}.praxis-files-upload .selected-overlay .sel-header{position:sticky;top:0;z-index:1;background:var(--md-sys-color-surface);display:flex;align-items:center;gap:.5rem;padding-bottom:.25rem;margin-bottom:.25rem}.praxis-files-upload .selected-overlay .sel-header .title{font-weight:600}.praxis-files-upload .selected-overlay .sel-header .spacer{flex:1}.praxis-files-upload .selected-overlay .sel-list{list-style:none;margin:0;padding:0}.praxis-files-upload .selected-overlay .sel-list .sel-item{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem;border-bottom:1px solid var(--md-sys-color-outline-variant, #ccc);transition:background-color .12s ease}.praxis-files-upload .selected-overlay .sel-list .sel-item .file-icon{opacity:.9;color:var(--md-sys-color-primary, #1976d2)}.praxis-files-upload .selected-overlay .sel-list .sel-item .info{flex:1;min-width:0}.praxis-files-upload .selected-overlay .sel-list .sel-item .info .name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.praxis-files-upload .selected-overlay .sel-list .sel-item .info .meta{font-size:.8rem;opacity:.7}.praxis-files-upload .selected-overlay .sel-list .sel-item .remove-btn{color:var(--md-sys-color-error, #b00020)}.praxis-files-upload .selected-overlay .sel-list .sel-item .more-btn{margin-left:.25rem}.praxis-files-upload .selected-overlay .sel-list .sel-item:hover{background:var(--md-sys-color-surface-container-low)}:host ::ng-deep .praxis-files-upload-overlay-panel{pointer-events:none}:host ::ng-deep .praxis-files-selected-overlay-panel{pointer-events:auto;z-index:3}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i10.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i12.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i13.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i13.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i13.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i15.JsonPipe, name: "json" }, { kind: "pipe", type: i15.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5101
5101
|
}
|
|
5102
5102
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisFilesUpload, decorators: [{
|
|
5103
5103
|
type: Component,
|
|
@@ -5107,6 +5107,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
5107
5107
|
MatButtonModule,
|
|
5108
5108
|
MatIconModule,
|
|
5109
5109
|
PraxisIconDirective,
|
|
5110
|
+
PraxisIconButtonComponent,
|
|
5110
5111
|
MatProgressBarModule,
|
|
5111
5112
|
MatMenuModule,
|
|
5112
5113
|
MatTooltipModule,
|
|
@@ -5182,25 +5183,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
5182
5183
|
</div>
|
|
5183
5184
|
</div>
|
|
5184
5185
|
<button
|
|
5185
|
-
|
|
5186
|
+
praxisIconButton="close"
|
|
5187
|
+
size="compact"
|
|
5188
|
+
type="button"
|
|
5186
5189
|
class="remove-btn"
|
|
5187
5190
|
[matTooltip]="t('remove', 'Remover')"
|
|
5188
5191
|
(click)="removePendingFile(f)"
|
|
5189
5192
|
[attr.aria-label]="pendingFileRemoveAriaLabel(f)"
|
|
5190
|
-
|
|
5191
|
-
<mat-icon [praxisIcon]="'close'"></mat-icon>
|
|
5192
|
-
</button>
|
|
5193
|
+
></button>
|
|
5193
5194
|
<button
|
|
5194
|
-
|
|
5195
|
+
praxisIconButton="more_horiz"
|
|
5196
|
+
size="compact"
|
|
5197
|
+
type="button"
|
|
5195
5198
|
class="more-btn"
|
|
5196
5199
|
[matMenuTriggerFor]="fileMenu"
|
|
5197
5200
|
[matMenuTriggerData]="{ file: f }"
|
|
5198
5201
|
aria-haspopup="menu"
|
|
5199
5202
|
[matTooltip]="t('moreActions', 'Mais ações')"
|
|
5200
5203
|
[attr.aria-label]="pendingFileMoreActionsAriaLabel(f)"
|
|
5201
|
-
|
|
5202
|
-
<mat-icon [praxisIcon]="'more_horiz'"></mat-icon>
|
|
5203
|
-
</button>
|
|
5204
|
+
></button>
|
|
5204
5205
|
<mat-menu
|
|
5205
5206
|
#fileMenu="matMenu"
|
|
5206
5207
|
xPosition="before"
|
|
@@ -5229,13 +5230,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
5229
5230
|
@if (enableCustomization) {
|
|
5230
5231
|
<button
|
|
5231
5232
|
type="button"
|
|
5232
|
-
|
|
5233
|
+
praxisIconButton="settings"
|
|
5234
|
+
size="compact"
|
|
5233
5235
|
class="settings-btn"
|
|
5234
5236
|
(click)="openSettings()"
|
|
5235
5237
|
[attr.aria-label]="texts.settingsAriaLabel"
|
|
5236
|
-
|
|
5237
|
-
<mat-icon [praxisIcon]="'settings'"></mat-icon>
|
|
5238
|
-
</button>
|
|
5238
|
+
></button>
|
|
5239
5239
|
}
|
|
5240
5240
|
@if (rateLimit && config?.rateLimit?.showBannerOn429 !== false) {
|
|
5241
5241
|
<div
|
|
@@ -5304,23 +5304,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
5304
5304
|
<!-- Ações internas (ícones) -->
|
|
5305
5305
|
<div class="field-actions" aria-hidden="false">
|
|
5306
5306
|
<button
|
|
5307
|
-
|
|
5307
|
+
praxisIconButton="attach_file"
|
|
5308
|
+
size="dense"
|
|
5309
|
+
type="button"
|
|
5308
5310
|
[matTooltip]="t('selectFiles', 'Select file(s)')"
|
|
5309
5311
|
[attr.aria-label]="selectFilesAriaLabel"
|
|
5310
5312
|
(click)="$event.stopPropagation(); openFile(fileInput)"
|
|
5311
5313
|
[disabled]="!baseUrl || isUploading"
|
|
5312
|
-
|
|
5313
|
-
<mat-icon [praxisIcon]="'attach_file'"></mat-icon>
|
|
5314
|
-
</button>
|
|
5314
|
+
></button>
|
|
5315
5315
|
<button
|
|
5316
|
-
|
|
5316
|
+
praxisIconButton="info"
|
|
5317
|
+
size="dense"
|
|
5318
|
+
type="button"
|
|
5317
5319
|
[matTooltip]="policiesSummary"
|
|
5318
5320
|
[attr.aria-label]="policySummaryAriaLabel"
|
|
5319
5321
|
(click)="$event.stopPropagation()"
|
|
5320
5322
|
[disabled]="false"
|
|
5321
|
-
|
|
5322
|
-
<mat-icon [praxisIcon]="'info'"></mat-icon>
|
|
5323
|
-
</button>
|
|
5323
|
+
></button>
|
|
5324
5324
|
</div>
|
|
5325
5325
|
<mat-icon class="dz-icon" aria-hidden="true" [praxisIcon]="'cloud_upload'"></mat-icon>
|
|
5326
5326
|
<p class="dz-title">{{ texts.dropzoneLabel }}</p>
|
|
@@ -5514,48 +5514,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
5514
5514
|
</div>
|
|
5515
5515
|
<div class="item-actions">
|
|
5516
5516
|
<button
|
|
5517
|
-
|
|
5517
|
+
praxisIconButton="info"
|
|
5518
|
+
size="compact"
|
|
5519
|
+
type="button"
|
|
5518
5520
|
[matTooltip]="t('details', 'Detalhes')"
|
|
5519
5521
|
[attr.aria-label]="resultActionAriaLabel('details', 'Detalhes', r.fileName)"
|
|
5520
5522
|
(click)="toggleDetailsFor(r)"
|
|
5521
|
-
|
|
5522
|
-
<mat-icon [praxisIcon]="'info'"></mat-icon>
|
|
5523
|
-
</button>
|
|
5523
|
+
></button>
|
|
5524
5524
|
<button
|
|
5525
|
-
|
|
5525
|
+
praxisIconButton="refresh"
|
|
5526
|
+
size="compact"
|
|
5527
|
+
type="button"
|
|
5526
5528
|
[matTooltip]="t('retry', 'Reenviar')"
|
|
5527
5529
|
[attr.aria-label]="resultActionAriaLabel('retry', 'Reenviar', r.fileName)"
|
|
5528
5530
|
(click)="onRetry(r)"
|
|
5529
5531
|
[disabled]="isUploading"
|
|
5530
|
-
|
|
5531
|
-
<mat-icon [praxisIcon]="'refresh'"></mat-icon>
|
|
5532
|
-
</button>
|
|
5532
|
+
></button>
|
|
5533
5533
|
<button
|
|
5534
|
-
|
|
5534
|
+
praxisIconButton="download"
|
|
5535
|
+
size="compact"
|
|
5536
|
+
type="button"
|
|
5535
5537
|
[matTooltip]="t('download', 'Baixar')"
|
|
5536
5538
|
[attr.aria-label]="resultActionAriaLabel('download', 'Baixar', r.fileName)"
|
|
5537
5539
|
(click)="onDownload(r)"
|
|
5538
5540
|
[disabled]="r.status !== BulkUploadResultStatus.SUCCESS"
|
|
5539
|
-
|
|
5540
|
-
<mat-icon [praxisIcon]="'download'"></mat-icon>
|
|
5541
|
-
</button>
|
|
5541
|
+
></button>
|
|
5542
5542
|
<button
|
|
5543
|
-
|
|
5543
|
+
praxisIconButton="link"
|
|
5544
|
+
size="compact"
|
|
5545
|
+
type="button"
|
|
5544
5546
|
[matTooltip]="t('copyLink', 'Copiar link')"
|
|
5545
5547
|
[attr.aria-label]="resultActionAriaLabel('copyLink', 'Copiar link', r.fileName)"
|
|
5546
5548
|
(click)="onCopyLink(r)"
|
|
5547
5549
|
[disabled]="r.status !== BulkUploadResultStatus.SUCCESS"
|
|
5548
|
-
|
|
5549
|
-
<mat-icon [praxisIcon]="'link'"></mat-icon>
|
|
5550
|
-
</button>
|
|
5550
|
+
></button>
|
|
5551
5551
|
<button
|
|
5552
|
-
|
|
5552
|
+
praxisIconButton="close"
|
|
5553
|
+
size="compact"
|
|
5554
|
+
type="button"
|
|
5553
5555
|
[matTooltip]="t('remove', 'Remover')"
|
|
5554
5556
|
[attr.aria-label]="resultActionAriaLabel('remove', 'Remover', r.fileName)"
|
|
5555
5557
|
(click)="removeResult(r)"
|
|
5556
|
-
|
|
5557
|
-
<mat-icon [praxisIcon]="'close'"></mat-icon>
|
|
5558
|
-
</button>
|
|
5558
|
+
></button>
|
|
5559
5559
|
</div>
|
|
5560
5560
|
</li>
|
|
5561
5561
|
}
|
|
@@ -5592,7 +5592,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
5592
5592
|
|
|
5593
5593
|
<ng-content></ng-content>
|
|
5594
5594
|
</div>
|
|
5595
|
-
`, styles: ["@charset \"UTF-8\";.praxis-files-upload{position:relative}.praxis-files-upload .settings-btn{position:absolute;top:.5rem;right:.5rem}.praxis-files-upload .rate-limit-banner,.praxis-files-upload .quota-banner,.praxis-files-upload .error{margin:.5rem 0;padding:.5rem 1rem;border-radius:var(--md-sys-shape-corner-small, 4px)}.praxis-files-upload .rate-limit-banner{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.praxis-files-upload .quota-banner{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.praxis-files-upload .dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;border:2px dashed var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-medium, 4px);background:var(--md-sys-color-surface-container-low);color:var(--md-sys-color-on-surface);text-align:center;transition:background-color .2s;width:100%;min-height:160px;margin:.5rem 0;gap:.5rem;position:relative}.praxis-files-upload .dropzone:hover{outline:none;background:var(--md-sys-color-surface-container-high);border-color:var(--md-sys-color-primary)}.praxis-files-upload .dropzone.dragover{background:var(--md-sys-color-surface-container-high);border-color:var(--md-sys-color-primary)}.praxis-files-upload .dropzone.disabled{opacity:.6;cursor:not-allowed;pointer-events:none}.praxis-files-upload .dropzone p{margin:0 0 .5rem}.praxis-files-upload .dropzone .dz-icon{font-size:40px;color:var(--md-sys-color-primary);margin-bottom:.25rem}.praxis-files-upload .dropzone .dz-title{font-weight:600}.praxis-files-upload .dropzone .dz-hint{margin:0;opacity:.8;font-size:.9rem}.praxis-files-upload .dropzone .field-actions{position:absolute;top:.25rem;right:.25rem;display:flex;gap:.25rem;pointer-events:auto}.praxis-files-upload .
|
|
5595
|
+
`, styles: ["@charset \"UTF-8\";.praxis-files-upload{position:relative}.praxis-files-upload .settings-btn{position:absolute;top:.5rem;right:.5rem}.praxis-files-upload .rate-limit-banner,.praxis-files-upload .quota-banner,.praxis-files-upload .error{margin:.5rem 0;padding:.5rem 1rem;border-radius:var(--md-sys-shape-corner-small, 4px)}.praxis-files-upload .rate-limit-banner{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.praxis-files-upload .quota-banner{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.praxis-files-upload .dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;border:2px dashed var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-medium, 4px);background:var(--md-sys-color-surface-container-low);color:var(--md-sys-color-on-surface);text-align:center;transition:background-color .2s;width:100%;min-height:160px;margin:.5rem 0;gap:.5rem;position:relative}.praxis-files-upload .dropzone:hover{outline:none;background:var(--md-sys-color-surface-container-high);border-color:var(--md-sys-color-primary)}.praxis-files-upload .dropzone.dragover{background:var(--md-sys-color-surface-container-high);border-color:var(--md-sys-color-primary)}.praxis-files-upload .dropzone.disabled{opacity:.6;cursor:not-allowed;pointer-events:none}.praxis-files-upload .dropzone p{margin:0 0 .5rem}.praxis-files-upload .dropzone .dz-icon{font-size:40px;color:var(--md-sys-color-primary);margin-bottom:.25rem}.praxis-files-upload .dropzone .dz-title{font-weight:600}.praxis-files-upload .dropzone .dz-hint{margin:0;opacity:.8;font-size:.9rem}.praxis-files-upload .dropzone .field-actions{position:absolute;top:.25rem;right:.25rem;display:flex;gap:.25rem;pointer-events:auto}.praxis-files-upload .progress{margin-top:1rem}.praxis-files-upload .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.praxis-files-upload .bulk-results{margin-top:1rem}.praxis-files-upload .bulk-results .bulk-summary{display:flex;gap:1rem;align-items:center;margin-bottom:.5rem}.praxis-files-upload .bulk-results .bulk-summary .stat{display:flex;align-items:center;gap:.35rem;padding:.25rem .5rem;border-radius:6px;background:var(--md-sys-color-surface-container-low)}.praxis-files-upload .bulk-results .bulk-summary .stat.success{color:var(--md-sys-color-primary)}.praxis-files-upload .bulk-results .bulk-summary .stat.failed{color:var(--md-sys-color-error)}.praxis-files-upload .bulk-results .bulk-summary .stat .label{opacity:.9}.praxis-files-upload .bulk-results .bulk-summary .stat .value{font-weight:600}.praxis-files-upload .bulk-results .results-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.praxis-files-upload .bulk-results .result-item{display:flex;gap:.75rem;padding:.5rem .75rem;border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;background:var(--md-sys-color-surface-container-lowest)}.praxis-files-upload .bulk-results .result-item.ok{border-color:var(--md-sys-color-primary)}.praxis-files-upload .bulk-results .result-item.err{border-color:var(--md-sys-color-error)}.praxis-files-upload .bulk-results .result-item .status-icon{align-self:flex-start;color:currentColor}.praxis-files-upload .bulk-results .result-item .main{flex:1;min-width:0}.praxis-files-upload .bulk-results .result-item .title{display:flex;align-items:center;gap:.5rem}.praxis-files-upload .bulk-results .result-item .name{font-weight:600}.praxis-files-upload .bulk-results .result-item .badge{font-size:.75rem;padding:.1rem .4rem;border-radius:999px;background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}.praxis-files-upload .bulk-results .result-item .badge.err{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.praxis-files-upload .bulk-results .result-item .meta,.praxis-files-upload .bulk-results .result-item .error{display:flex;flex-wrap:wrap;gap:.5rem 1rem;margin-top:.25rem}.praxis-files-upload .bulk-results .result-item .error .code{font-weight:600}.praxis-files-upload .bulk-results .result-item .extra{margin-top:.25rem}.praxis-files-upload .bulk-results .result-item .item-actions{display:flex;align-items:center;gap:.25rem}.praxis-files-upload .bulk-results .list-footer{margin-top:.5rem;display:flex;justify-content:center}.praxis-files-upload .proximity-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;border:2px dashed var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-medium, 4px);background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface);text-align:center;z-index:2;pointer-events:none}.praxis-files-upload .proximity-overlay .dz-icon{font-size:40px;color:var(--md-sys-color-primary)}.praxis-files-upload .proximity-overlay .dz-title{font-weight:600}.praxis-files-upload .proximity-overlay .dz-hint{opacity:.85}.praxis-files-upload .selected-overlay{background:var(--md-sys-color-surface);color:var(--md-sys-color-on-surface);border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;box-shadow:var(--md-sys-elevation-level2, 0 2px 6px rgba(0, 0, 0, .15));max-height:260px;overflow:auto;padding:.5rem}.praxis-files-upload .selected-overlay .sel-header{position:sticky;top:0;z-index:1;background:var(--md-sys-color-surface);display:flex;align-items:center;gap:.5rem;padding-bottom:.25rem;margin-bottom:.25rem}.praxis-files-upload .selected-overlay .sel-header .title{font-weight:600}.praxis-files-upload .selected-overlay .sel-header .spacer{flex:1}.praxis-files-upload .selected-overlay .sel-list{list-style:none;margin:0;padding:0}.praxis-files-upload .selected-overlay .sel-list .sel-item{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem;border-bottom:1px solid var(--md-sys-color-outline-variant, #ccc);transition:background-color .12s ease}.praxis-files-upload .selected-overlay .sel-list .sel-item .file-icon{opacity:.9;color:var(--md-sys-color-primary, #1976d2)}.praxis-files-upload .selected-overlay .sel-list .sel-item .info{flex:1;min-width:0}.praxis-files-upload .selected-overlay .sel-list .sel-item .info .name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.praxis-files-upload .selected-overlay .sel-list .sel-item .info .meta{font-size:.8rem;opacity:.7}.praxis-files-upload .selected-overlay .sel-list .sel-item .remove-btn{color:var(--md-sys-color-error, #b00020)}.praxis-files-upload .selected-overlay .sel-list .sel-item .more-btn{margin-left:.25rem}.praxis-files-upload .selected-overlay .sel-list .sel-item:hover{background:var(--md-sys-color-surface-container-low)}:host ::ng-deep .praxis-files-upload-overlay-panel{pointer-events:none}:host ::ng-deep .praxis-files-selected-overlay-panel{pointer-events:auto;z-index:3}\n"] }]
|
|
5596
5596
|
}], ctorParameters: () => [{ type: i1$3.SettingsPanelService }, { type: DragProximityService }, { type: i3$1.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
5597
5597
|
type: Inject,
|
|
5598
5598
|
args: [ASYNC_CONFIG_STORAGE]
|
|
@@ -6081,13 +6081,12 @@ class PdxFilesUploadFieldComponent extends SimpleBaseInputComponent {
|
|
|
6081
6081
|
<span class="spacer"></span>
|
|
6082
6082
|
<button
|
|
6083
6083
|
type="button"
|
|
6084
|
-
|
|
6084
|
+
praxisIconButton="close"
|
|
6085
|
+
size="compact"
|
|
6085
6086
|
class="remove-pending-btn"
|
|
6086
6087
|
(click)="onRemovePendingFile(file, $event)"
|
|
6087
6088
|
[attr.aria-label]="t('removePendingFile','Remove selected file') + ': ' + file.name"
|
|
6088
|
-
|
|
6089
|
-
<mat-icon>close</mat-icon>
|
|
6090
|
-
</button>
|
|
6089
|
+
></button>
|
|
6091
6090
|
</div>
|
|
6092
6091
|
}
|
|
6093
6092
|
</div>
|
|
@@ -6169,7 +6168,7 @@ class PdxFilesUploadFieldComponent extends SimpleBaseInputComponent {
|
|
|
6169
6168
|
(proximityChange)="onProximityChange($event)"
|
|
6170
6169
|
(pendingStateChange)="handlePendingState($event)"
|
|
6171
6170
|
/>
|
|
6172
|
-
`, isInline: true, styles: [":host{position:relative}.pdx-upload-field-shell{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border:1px solid var(--pfx-surface-border, #ccc);border-radius:8px;background:var(--pfx-surface, var(--md-sys-color-surface));color:var(--md-sys-color-on-surface);min-height:40px}.pdx-upload-field-shell:focus-within{outline:2px solid var(--md-sys-color-primary,#1976d2);outline-offset:2px}.pdx-upload-field-shell.error{border-color:var(--md-sys-color-error,#b00020)}.pdx-upload-field-shell.disabled{opacity:.6;cursor:not-allowed}.pdx-upload-field-shell .prefix{color:var(--md-sys-color-primary,#1976d2)}.pdx-upload-field-shell .content{flex:1;min-width:0;display:flex;align-items:center;gap:.5rem}.pdx-upload-field-shell .shell-main-btn{display:flex;align-items:center;gap:.75rem;flex:1;min-width:0;padding:0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.pdx-upload-field-shell .shell-main-btn:disabled{cursor:not-allowed}.pdx-upload-field-shell .text-stack{display:flex;flex-direction:column;min-width:0;gap:.125rem}.pdx-upload-field-shell .placeholder{color:var(--md-sys-color-on-surface-variant)}.pdx-upload-field-shell .value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-upload-field-shell .meta{font-size:.78rem;color:var(--md-sys-color-on-surface-variant);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-upload-field-shell .chip{font-size:.75rem;padding:0 .4rem;border-radius:999px;background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}.pdx-upload-field-shell .suffixes{display:flex;align-items:center;gap:.375rem}.pdx-upload-field-shell .action-btn{display:inline-flex;align-items:center;gap:.35rem;border:1px solid var(--pfx-surface-border, #ccc);background:transparent;padding:.35rem .6rem;border-radius:999px;cursor:pointer;color:var(--md-sys-color-on-surface);font:inherit}.pdx-upload-field-shell .action-btn.primary{background:var(--md-sys-color-primary);border-color:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}.pdx-upload-field-shell .action-btn mat-icon{font-size:18px;width:18px;height:18px}.pdx-upload-field-shell .icon-btn{border:0;background:transparent;padding:.25rem;border-radius:6px;cursor:pointer;color:var(--md-sys-color-on-surface-variant)}.pdx-upload-field-shell .icon-btn:hover{background:#ffffff0d}.pdx-upload-field-shell.disabled .icon-btn,.pdx-upload-field-shell.disabled .action-btn{cursor:not-allowed}.field-messages{font-size:.82rem;margin-top:.25rem}.field-messages .hint{opacity:.8}.field-messages .error{color:var(--md-sys-color-error,#b00020)}.pending-text-btn{display:flex;align-items:center;gap:.5rem;background:0;border:0;color:var(--md-sys-color-on-surface);font-family:inherit;font-size:inherit;padding:0;margin:0;cursor:pointer;min-width:0;text-align:left}.pending-text-btn span,.pending-text-btn mat-icon{color:inherit}.pending-files-overlay{display:flex;flex-direction:column;min-width:min(320px,calc(100vw - 32px));max-width:min(480px,calc(100vw - 32px));max-height:240px;overflow:auto;padding:.25rem 0;border:1px solid var(--pfx-surface-border, #ccc);border-radius:12px;background:var(--pfx-surface, var(--md-sys-color-surface));box-shadow:0 12px 30px #0000002e;outline:none}.pending-file-item{display:flex;align-items:center;width:100%;gap:.5rem;padding:8px 16px}.pending-file-item .file-info{flex:1;min-width:0;text-align:left}.pending-file-item .file-name{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pending-file-item .file-size{font-size:.8rem;opacity:.7}.pending-file-item .spacer{flex:1 1 auto}.pending-file-item .remove-pending-btn{color:var(--md-sys-color-on-surface-variant)}.pdx-upload-field-shell.proximity-active{border-style:dashed;border-color:var(--md-sys-color-primary);transform:scale(1.02);background:var(--md-sys-color-surface-container-low);transition:all .2s ease-in-out}\n"], dependencies: [{ kind: "component", type: PraxisFilesUpload, selector: "praxis-files-upload", inputs: ["config", "filesUploadId", "componentInstanceId", "baseUrl", "displayMode", "context", "enableCustomization"], outputs: ["uploadSuccess", "bulkComplete", "error", "rateLimited", "uploadStart", "uploadProgress", "retry", "download", "copyLink", "detailsOpened", "detailsClosed", "pendingStateChange", "proximityChange", "readinessChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type:
|
|
6171
|
+
`, isInline: true, styles: [":host{position:relative}.pdx-upload-field-shell{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border:1px solid var(--pfx-surface-border, #ccc);border-radius:8px;background:var(--pfx-surface, var(--md-sys-color-surface));color:var(--md-sys-color-on-surface);min-height:40px}.pdx-upload-field-shell:focus-within{outline:2px solid var(--md-sys-color-primary,#1976d2);outline-offset:2px}.pdx-upload-field-shell.error{border-color:var(--md-sys-color-error,#b00020)}.pdx-upload-field-shell.disabled{opacity:.6;cursor:not-allowed}.pdx-upload-field-shell .prefix{color:var(--md-sys-color-primary,#1976d2)}.pdx-upload-field-shell .content{flex:1;min-width:0;display:flex;align-items:center;gap:.5rem}.pdx-upload-field-shell .shell-main-btn{display:flex;align-items:center;gap:.75rem;flex:1;min-width:0;padding:0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.pdx-upload-field-shell .shell-main-btn:disabled{cursor:not-allowed}.pdx-upload-field-shell .text-stack{display:flex;flex-direction:column;min-width:0;gap:.125rem}.pdx-upload-field-shell .placeholder{color:var(--md-sys-color-on-surface-variant)}.pdx-upload-field-shell .value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-upload-field-shell .meta{font-size:.78rem;color:var(--md-sys-color-on-surface-variant);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-upload-field-shell .chip{font-size:.75rem;padding:0 .4rem;border-radius:999px;background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}.pdx-upload-field-shell .suffixes{display:flex;align-items:center;gap:.375rem}.pdx-upload-field-shell .action-btn{display:inline-flex;align-items:center;gap:.35rem;border:1px solid var(--pfx-surface-border, #ccc);background:transparent;padding:.35rem .6rem;border-radius:999px;cursor:pointer;color:var(--md-sys-color-on-surface);font:inherit}.pdx-upload-field-shell .action-btn.primary{background:var(--md-sys-color-primary);border-color:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}.pdx-upload-field-shell .action-btn mat-icon{font-size:18px;width:18px;height:18px}.pdx-upload-field-shell .icon-btn{border:0;background:transparent;padding:.25rem;border-radius:6px;cursor:pointer;color:var(--md-sys-color-on-surface-variant)}.pdx-upload-field-shell .icon-btn:hover{background:#ffffff0d}.pdx-upload-field-shell.disabled .icon-btn,.pdx-upload-field-shell.disabled .action-btn{cursor:not-allowed}.field-messages{font-size:.82rem;margin-top:.25rem}.field-messages .hint{opacity:.8}.field-messages .error{color:var(--md-sys-color-error,#b00020)}.pending-text-btn{display:flex;align-items:center;gap:.5rem;background:0;border:0;color:var(--md-sys-color-on-surface);font-family:inherit;font-size:inherit;padding:0;margin:0;cursor:pointer;min-width:0;text-align:left}.pending-text-btn span,.pending-text-btn mat-icon{color:inherit}.pending-files-overlay{display:flex;flex-direction:column;min-width:min(320px,calc(100vw - 32px));max-width:min(480px,calc(100vw - 32px));max-height:240px;overflow:auto;padding:.25rem 0;border:1px solid var(--pfx-surface-border, #ccc);border-radius:12px;background:var(--pfx-surface, var(--md-sys-color-surface));box-shadow:0 12px 30px #0000002e;outline:none}.pending-file-item{display:flex;align-items:center;width:100%;gap:.5rem;padding:8px 16px}.pending-file-item .file-info{flex:1;min-width:0;text-align:left}.pending-file-item .file-name{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pending-file-item .file-size{font-size:.8rem;opacity:.7}.pending-file-item .spacer{flex:1 1 auto}.pending-file-item .remove-pending-btn{color:var(--md-sys-color-on-surface-variant)}.pdx-upload-field-shell.proximity-active{border-style:dashed;border-color:var(--md-sys-color-primary);transform:scale(1.02);background:var(--md-sys-color-surface-container-low);transition:all .2s ease-in-out}\n"], dependencies: [{ kind: "component", type: PraxisFilesUpload, selector: "praxis-files-upload", inputs: ["config", "filesUploadId", "componentInstanceId", "baseUrl", "displayMode", "context", "enableCustomization"], outputs: ["uploadSuccess", "bulkComplete", "error", "rateLimited", "uploadStart", "uploadProgress", "retry", "download", "copyLink", "detailsOpened", "detailsClosed", "pendingStateChange", "proximityChange", "readinessChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i13.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i13.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i13.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }] });
|
|
6173
6172
|
}
|
|
6174
6173
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PdxFilesUploadFieldComponent, decorators: [{
|
|
6175
6174
|
type: Component,
|
|
@@ -6179,7 +6178,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
6179
6178
|
MatMenuModule,
|
|
6180
6179
|
MatTooltipModule,
|
|
6181
6180
|
CdkConnectedOverlay,
|
|
6182
|
-
CdkOverlayOrigin
|
|
6181
|
+
CdkOverlayOrigin,
|
|
6182
|
+
PraxisIconButtonComponent,
|
|
6183
6183
|
], template: `
|
|
6184
6184
|
<!-- Casca compacta tipo input -->
|
|
6185
6185
|
<div class="pdx-upload-field-shell"
|
|
@@ -6268,13 +6268,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
6268
6268
|
<span class="spacer"></span>
|
|
6269
6269
|
<button
|
|
6270
6270
|
type="button"
|
|
6271
|
-
|
|
6271
|
+
praxisIconButton="close"
|
|
6272
|
+
size="compact"
|
|
6272
6273
|
class="remove-pending-btn"
|
|
6273
6274
|
(click)="onRemovePendingFile(file, $event)"
|
|
6274
6275
|
[attr.aria-label]="t('removePendingFile','Remove selected file') + ': ' + file.name"
|
|
6275
|
-
|
|
6276
|
-
<mat-icon>close</mat-icon>
|
|
6277
|
-
</button>
|
|
6276
|
+
></button>
|
|
6278
6277
|
</div>
|
|
6279
6278
|
}
|
|
6280
6279
|
</div>
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/files-upload",
|
|
3
|
-
"version": "9.0.0-beta.
|
|
3
|
+
"version": "9.0.0-beta.86",
|
|
4
4
|
"description": "File upload components and services for Praxis UI with presigned and direct strategies, quotas and rate-limit handling.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^21.0.0",
|
|
7
7
|
"@angular/cdk": "^21.0.0",
|
|
8
8
|
"@angular/core": "^21.0.0",
|
|
9
9
|
"@angular/material": "^21.0.0",
|
|
10
|
-
"@praxisui/core": "^9.0.0-beta.
|
|
11
|
-
"@praxisui/dynamic-fields": "^9.0.0-beta.
|
|
12
|
-
"@praxisui/settings-panel": "^9.0.0-beta.
|
|
10
|
+
"@praxisui/core": "^9.0.0-beta.86",
|
|
11
|
+
"@praxisui/dynamic-fields": "^9.0.0-beta.86",
|
|
12
|
+
"@praxisui/settings-panel": "^9.0.0-beta.86",
|
|
13
13
|
"@angular/forms": "^21.0.0",
|
|
14
14
|
"@angular/router": "^21.0.0",
|
|
15
|
-
"@praxisui/ai": "^9.0.0-beta.
|
|
15
|
+
"@praxisui/ai": "^9.0.0-beta.86",
|
|
16
16
|
"rxjs": "~7.8.0"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|