@nxgt/material 3.68.0 → 3.71.0
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/CHANGELOG.md +84 -0
- package/README.md +13 -9
- package/dist/{alert-dialog-BhARh_qC.js → alert-dialog-y2pbowVh.js} +1 -1
- package/dist/{async-slice-CHyRU5V3.js → async-slice-CGfWBOaV.js} +1 -1
- package/dist/{button-Du7fJ9i_.js → button-D54Hrjo0.js} +1 -1
- package/dist/charts.js +3 -3
- package/dist/{chip-BVB6UYl-.js → chip-B5MhXBfm.js} +2 -2
- package/dist/{code-editor-D-GBs2yu.js → code-editor-mULs4SL8.js} +5 -5
- package/dist/code-editor.js +5 -5
- package/dist/{code-language-items-xrgq1Am0.js → code-language-items-BWDnqUqn.js} +2 -2
- package/dist/components/ui/collections/server-table/server-table-phone-row.css +6 -0
- package/dist/components/ui/display/code/code-moonlight.css +37 -0
- package/dist/{components-iNCh4A6M.js → components-B_taYVcd.js} +19740 -18682
- package/dist/components.js +28 -28
- package/dist/{dialog-DFY_nsqF.js → dialog-AjCYZ2Vz.js} +4 -4
- package/dist/dnd.js +1 -1
- package/dist/{dropdown-menu-B6Yh4XJu.js → dropdown-menu-LN60hu_3.js} +1 -1
- package/dist/editor.js +673 -673
- package/dist/{empty-state-DGtwE50c.js → empty-state-Bo8G8W8G.js} +2 -2
- package/dist/{field-blur-Br7ij-a1.js → field-blur-Cnd6FfCH.js} +1 -1
- package/dist/{field-blur-context-CucMAZLj.js → field-blur-context-bUFZj8iN.js} +1 -1
- package/dist/{hooks-CYQJkKGc.js → hooks-Dt4PkQiZ.js} +2 -2
- package/dist/hooks.js +3 -3
- package/dist/{hover-card-C2J0GwWf.js → hover-card-QtGnvsnc.js} +1 -1
- package/dist/i18n.js +3 -3
- package/dist/{icon-badge-LzO5K6Wu.js → icon-badge-DLbpCQIm.js} +3 -3
- package/dist/{icon-button-vLJ4YrEW.js → icon-button-C59DqL7L.js} +1 -1
- package/dist/lib/components/ui/actions/fab/fab-dock-inset.d.ts +29 -0
- package/dist/lib/components/ui/actions/fab/fab-dock.d.ts +6 -1
- package/dist/lib/components/ui/collections/data-table/select-checkbox.d.ts +3 -2
- package/dist/lib/components/ui/collections/filter/use-filter-field-config.d.ts +3 -3
- package/dist/lib/components/ui/collections/index.d.ts +1 -0
- package/dist/lib/components/ui/collections/record-actions-menu/index.d.ts +2 -0
- package/dist/lib/components/ui/collections/record-actions-menu/record-actions-dialogs.d.ts +15 -0
- package/dist/lib/components/ui/collections/record-actions-menu/record-actions-menu.d.ts +72 -0
- package/dist/lib/components/ui/collections/record-actions-menu/record-actions-rules.d.ts +68 -0
- package/dist/lib/components/ui/collections/record-actions-menu/record-actions-words.d.ts +52 -0
- package/dist/lib/components/ui/collections/record-actions-menu/use-record-actions.d.ts +51 -0
- package/dist/lib/components/ui/collections/record-actions-menu/use-record-flight.d.ts +16 -0
- package/dist/lib/components/ui/collections/row-menu/row-menu-column.d.ts +4 -0
- package/dist/lib/components/ui/collections/row-menu/row-menu.d.ts +1 -1
- package/dist/lib/components/ui/collections/server-table/partials/server-table-band-classes.d.ts +7 -5
- package/dist/lib/components/ui/collections/server-table/partials/server-table-column-sorting.d.ts +7 -0
- package/dist/lib/components/ui/collections/server-table/types.d.ts +3 -1
- package/dist/lib/components/ui/display/markdown/markdown.d.ts +12 -1
- package/dist/lib/components/ui/display/markdown/markdown.utils.d.ts +2 -0
- package/dist/lib/components/ui/display/markdown/mermaid-csp-scope.d.ts +8 -0
- package/dist/lib/components/ui/display/markdown/mermaid-markup.d.ts +20 -0
- package/dist/lib/components/ui/display/markdown/partials/markdown-code.d.ts +5 -1
- package/dist/lib/components/ui/feedback/confirm-dialog/action-refusal.d.ts +24 -0
- package/dist/lib/components/ui/feedback/confirm-dialog/confirm-alert.d.ts +17 -0
- package/dist/lib/components/ui/feedback/confirm-dialog/confirm-description.d.ts +10 -0
- package/dist/lib/components/ui/feedback/confirm-dialog/confirm-dialog.d.ts +24 -2
- package/dist/lib/components/ui/feedback/confirm-dialog/confirm-refusal.d.ts +7 -0
- package/dist/lib/components/ui/feedback/confirm-dialog/index.d.ts +1 -0
- package/dist/lib/components/ui/feedback/confirm-dialog/use-confirm-action.d.ts +6 -0
- package/dist/lib/components/ui/feedback/index.d.ts +1 -0
- package/dist/lib/components/ui/feedback/stale-notice/index.d.ts +1 -0
- package/dist/lib/components/ui/feedback/stale-notice/stale-notice.d.ts +15 -0
- package/dist/lib/components/ui/fields/contacts/placeholders.d.ts +1 -1
- package/dist/lib/components/ui/fields/country-field/index.d.ts +2 -0
- package/dist/lib/components/ui/fields/country-field/iso-countries.d.ts +2 -0
- package/dist/lib/components/ui/fields/index.d.ts +1 -0
- package/dist/lib/components/ui/fields/phone-field/index.d.ts +1 -1
- package/dist/lib/components/ui/fields/phone-field/parse-phone.d.ts +2 -0
- package/dist/lib/components/ui/fields/phone-field/phone-field.d.ts +8 -1
- package/dist/lib/components/ui/fields/phone-field/phone-form-field.d.ts +8 -1
- package/dist/lib/components/ui/fields/phone-field/use-phone-value.d.ts +2 -1
- package/dist/lib/components/ui/fields/postal-address/utils.d.ts +15 -0
- package/dist/lib/components/ui/fields/quantity-field/index.d.ts +3 -0
- package/dist/lib/components/ui/fields/quantity-field/quantity-field.d.ts +8 -0
- package/dist/lib/components/ui/fields/quantity-field/quantity-form-field.d.ts +8 -0
- package/dist/lib/components/ui/fields/quantity-field/quantity-row.d.ts +13 -0
- package/dist/lib/components/ui/fields/quantity-field/quantity-unit.d.ts +12 -0
- package/dist/lib/components/ui/fields/quantity-field/quantity-value.d.ts +9 -0
- package/dist/lib/components/ui/fields/quantity-field/types.d.ts +45 -0
- package/dist/lib/components/ui/forms/index.d.ts +1 -0
- package/dist/lib/components/ui/forms/use-server-field-errors.d.ts +21 -0
- package/dist/lib/components/ui/layout/index.d.ts +1 -0
- package/dist/lib/components/ui/layout/record-page/index.d.ts +2 -0
- package/dist/lib/components/ui/layout/record-page/record-details.d.ts +40 -0
- package/dist/lib/components/ui/layout/record-page/record-page.d.ts +27 -0
- package/dist/lib/components/ui/media/upload/index.d.ts +1 -0
- package/dist/lib/components/ui/media/upload/network-upload-field/network-upload-field.d.ts +6 -1
- package/dist/lib/components/ui/media/upload/network-upload-field/network-upload-field.errors.d.ts +8 -0
- package/dist/lib/components/ui/media/upload/network-upload-field/network-upload-field.utils.d.ts +2 -7
- package/dist/lib/components/ui/media/upload/network-upload-field/use-start-upload.d.ts +7 -3
- package/dist/lib/components/ui/media/upload/network-upload-field/use-upload-item-handlers.d.ts +2 -1
- package/dist/lib/components/ui/media/upload/s3-upload-field/s3-upload-field.d.ts +2 -5
- package/dist/lib/components/ui/media/upload/s3-upload-field/s3-upload-field.utils.d.ts +26 -1
- package/dist/lib/components/ui/media/upload/upload-error.d.ts +33 -0
- package/dist/lib/components/ui/selection/autocomplete/autocomplete-enter.d.ts +18 -0
- package/dist/lib/components/ui/selection/autocomplete/partials/autocomplete-chip-input.d.ts +2 -1
- package/dist/lib/components/ui/selection/autocomplete/partials/autocomplete-text-input.d.ts +2 -1
- package/dist/lib/components/ui/selection/autocomplete/types.d.ts +3 -1
- package/dist/lib/components/ui/widgets/chat/chat-conversation-item.d.ts +8 -2
- package/dist/lib/components/ui/widgets/chat/chat-markdown.d.ts +4 -0
- package/dist/lib/components/ui/widgets/chat/chat-message-list.d.ts +8 -1
- package/dist/lib/components/ui/widgets/chat/index.d.ts +2 -0
- package/dist/lib/components/ui/widgets/chat/partials/chat-conversation-item-text.d.ts +2 -1
- package/dist/lib/components/ui/widgets/chat/partials/chat-empty-thread.d.ts +2 -0
- package/dist/lib/components/ui/widgets/chat/proposal/chat-action-proposal-parts.d.ts +24 -0
- package/dist/lib/components/ui/widgets/chat/proposal/chat-action-proposal.d.ts +39 -0
- package/dist/lib/components/ui/widgets/chat/proposal/chat-action-proposal.rules.d.ts +17 -0
- package/dist/lib/components/ui/widgets/chat/proposal/chat-tool-activity.d.ts +16 -0
- package/dist/lib/components/ui/widgets/education/questions/partials/question-content.d.ts +1 -1
- package/dist/lib/components/ui/widgets/education/questions/question-text.d.ts +1 -1
- package/dist/lib/components/ui/widgets/education/questions/question.d.ts +1 -1
- package/dist/lib/components/ui/widgets/education/questions/types.d.ts +10 -0
- package/dist/lib/i18n/resources/en/en.d.ts +49 -0
- package/dist/lib/i18n/resources/en/material.json.d.ts +50 -1
- package/dist/lib/i18n/resources/fr/fr.d.ts +49 -0
- package/dist/lib/i18n/resources/fr/material.json.d.ts +50 -1
- package/dist/lib/i18n/resources/resources.d.ts +98 -0
- package/dist/lib/i18n/translator.d.ts +1 -1
- package/dist/lib/print/output/to-pdf-element.d.ts +6 -0
- package/dist/lib.js +1 -1
- package/dist/main.js +42 -42
- package/dist/map.js +8 -8
- package/dist/material.css +1 -1
- package/dist/pdf-reader.js +1 -1
- package/dist/print.js +135 -131
- package/dist/{public-BHthpdpe.js → public-BSaSCwy7.js} +9 -9
- package/dist/{rich-code-block-DoW7l2ND.js → rich-code-block-BFVj1GWz.js} +5 -5
- package/dist/{sortable-provider-FLNMfr0o.js → sortable-provider-REwyjiOZ.js} +2 -2
- package/dist/{spinner-DCgDw8eq.js → spinner-BFZxqdWC.js} +1 -1
- package/dist/theme-picker.js +2 -2
- package/dist/{theme-toggle-BMDAwMLh.js → theme-toggle-BHi6miz-.js} +1 -1
- package/dist/{toolbar-items-CkPEhQq7.js → toolbar-items-BTtoKVlx.js} +3 -3
- package/dist/{translate-material-DkcuQBNr.js → translate-material-R-uLthBy.js} +1 -1
- package/dist/{translator-DXdVRdMm.js → translator-ClbXOGQO.js} +100 -2
- package/dist/{typography-BNS_IbFI.js → typography-v-PJ4Zco.js} +1 -1
- package/dist/{use-chat-composer-B-tGRLkI.js → use-chat-composer-Rhan4Xv0.js} +2463 -2405
- package/dist/{use-heading-spy-DaqibCCm.js → use-heading-spy-CJnBkCY0.js} +179 -87
- package/dist/{use-material-translation-Bxl8sv1n.js → use-material-translation-CCWUeiEn.js} +1 -1
- package/dist/{use-return-focus-Y_Kx0QlW.js → use-return-focus-Duk40DZI.js} +1 -1
- package/docs/components/buttons-and-actions.md +24 -0
- package/docs/components/data-display.md +33 -0
- package/docs/components/data-table-filter-and-lists.md +117 -5
- package/docs/components/feedback-and-status.md +58 -2
- package/docs/components/form-fields.md +97 -3
- package/docs/components/media-and-files.md +55 -9
- package/docs/components/navigation-and-layout.md +58 -0
- package/docs/components/rich-widgets.md +37 -3
- package/docs/components/selection-and-choice.md +10 -3
- package/docs/guides/cards-and-tiles.md +4 -2
- package/docs/guides/csp.md +44 -6
- package/docs/guides/forms.md +55 -7
- package/docs/guides/i18n.md +6 -5
- package/docs/guides/printing.md +17 -7
- package/docs/previews/data-table-filter-lists-recordactionsmenu.webp +0 -0
- package/docs/previews/feedback-status-stalenotice.webp +0 -0
- package/docs/previews/form-fields-quantityfield.webp +0 -0
- package/docs/previews/media-files-networkuploadfield.webp +0 -0
- package/docs/previews/media-files-s3uploadfield.webp +0 -0
- package/docs/previews/media-files-uploadfield.webp +0 -0
- package/docs/previews/navigation-layout-recordpage.webp +0 -0
- package/docs/previews/rich-widgets-chat-action-proposal.webp +0 -0
- package/docs/roadmap.md +14 -1
- package/docs/troubleshooting.md +58 -11
- package/lib/components/ui/collections/server-table/server-table-phone-row.css +6 -0
- package/lib/components/ui/display/code/code-moonlight.css +37 -0
- package/package.json +2 -2
package/docs/troubleshooting.md
CHANGED
|
@@ -66,6 +66,7 @@ words in your error.
|
|
|
66
66
|
- [A Button's label overflows a card on a phone](#a-buttons-label-overflows-a-card-on-a-phone)
|
|
67
67
|
- [A ResponsiveButton no longer shows its tooltip next to its visible label](#a-responsivebutton-no-longer-shows-its-tooltip-next-to-its-visible-label)
|
|
68
68
|
- [An input now has `placeholder=" "` in the DOM](#an-input-now-has-placeholder--in-the-dom)
|
|
69
|
+
- ["Select all" runs under the sort, "Filters" or the actions in a cards or tiles list on a phone](#select-all-runs-under-the-sort-filters-or-the-actions-in-a-cards-or-tiles-list-on-a-phone)
|
|
69
70
|
- [A dialog or sheet scrolls, or clips a child, after upgrading](#a-dialog-or-sheet-scrolls-or-clips-a-child-after-upgrading)
|
|
70
71
|
- [A form's fields no longer scroll in their own box after upgrading](#a-forms-fields-no-longer-scroll-in-their-own-box-after-upgrading)
|
|
71
72
|
- [My activity content lost its side padding, or the rail's entries moved up](#my-activity-content-lost-its-side-padding-or-the-rails-entries-moved-up)
|
|
@@ -1427,6 +1428,18 @@ your own through `className`. With `asChild`, put the label in a `<span>` (on a
|
|
|
1427
1428
|
</Button>
|
|
1428
1429
|
```
|
|
1429
1430
|
|
|
1431
|
+
### "Select all" runs under the sort, "Filters" or the actions in a cards or tiles list on a phone
|
|
1432
|
+
|
|
1433
|
+
**When:** below 768px, a `ServerTable` in `cards` or `tiles` with `filter` and
|
|
1434
|
+
`actions` draws "Select all" over the sort menu and "Filters (N)" when an action
|
|
1435
|
+
has a long label ("Add a measurement unit").
|
|
1436
|
+
**Why:** up to 3.70.0, the label of row 2 neither shrank nor truncated, and the
|
|
1437
|
+
end group (sort, "Filters (N)", actions) never gave up its width.
|
|
1438
|
+
**Fix:** update. The "Select all" text now ends in "…" (the box keeps its name,
|
|
1439
|
+
"Select all on this page"), and an end group too wide for the row wraps to its
|
|
1440
|
+
own line under it. Until then, use a `Fab` for the create action on phones, or
|
|
1441
|
+
a short or icon-only label.
|
|
1442
|
+
|
|
1430
1443
|
### A dialog or sheet scrolls, or clips a child, after upgrading
|
|
1431
1444
|
|
|
1432
1445
|
**When:** after upgrading, a tall `DialogContent`, `AlertDialogContent` or
|
|
@@ -2128,6 +2141,12 @@ settles, with `focusRef` on the table. It matches the row by id, not by label.
|
|
|
2128
2141
|
See "Handing the focus back to a row" in
|
|
2129
2142
|
[RowMenu](components/data-table-filter-and-lists.md#handing-the-focus-back-to-a-row).
|
|
2130
2143
|
|
|
2144
|
+
### A `RecordActionsMenu` or `ConfirmDialog` refusal shows no action, or its link reloads the page
|
|
2145
|
+
|
|
2146
|
+
**When:** `send` rejects (or a `ConfirmDialog`'s `onConfirm` throws) with an error that should offer a link, but the dialog or toast shows only the message; or the link of a toast action reloads the whole app.
|
|
2147
|
+
**Why:** only an `ActionRefusal` carries an action (a plain `Error`, or a rethrown copy of its message, does not). A toast's `href` is a plain navigation (`window.location.assign`), since a toast is outside your router.
|
|
2148
|
+
**Fix:** reject with `new ActionRefusal(message, { action: { label, href } })` and keep it as thrown (do not wrap it in another `Error`). For a client-side navigation use `action: { label, onAction: () => navigate(...) }`. A `ConfirmDialog` renders it by default; a `refusal` prop of your own replaces that rendering, so it must show the details and the action itself. See [ConfirmDialog](components/feedback-and-status.md#confirmdialog) and [RecordActionsMenu](components/data-table-filter-and-lists.md#recordactionsmenu).
|
|
2149
|
+
|
|
2131
2150
|
### A `ConfirmationDialog` reopened with new content blocks clicks
|
|
2132
2151
|
|
|
2133
2152
|
**When:** a `ConfirmationDialog` or a `ConfirmDialog` (or a `Dialog`,
|
|
@@ -3649,6 +3668,26 @@ fill is now left empty, and the title stays centred.
|
|
|
3649
3668
|
<PrintHeader title="Invoice" logoText="LOGO" />
|
|
3650
3669
|
```
|
|
3651
3670
|
|
|
3671
|
+
### A `keepTogether` block is cut off at the bottom of the page
|
|
3672
|
+
|
|
3673
|
+
**When:** the console shows `Node of type VIEW can't wrap between pages and
|
|
3674
|
+
it's bigger than available page height` and the rows of a `PrintSection` or
|
|
3675
|
+
a `section` / `stack` with `keepTogether` run past the page edge.
|
|
3676
|
+
**Why:** react-pdf keeps a block whole with `wrap={false}` and cannot split
|
|
3677
|
+
one taller than a page, nor measure it ahead.
|
|
3678
|
+
**Fix:** for a document as data, render it with `renderPdfBuffer`,
|
|
3679
|
+
`renderPdfBlob`, `renderPdfStream`, `downloadPdf` or `pdfResponse`: they
|
|
3680
|
+
measure each `keepTogether` block and let a too-tall one break normally. For a
|
|
3681
|
+
`<PrintSection keepTogether>` in a `PrintDocument`, or your own call to
|
|
3682
|
+
`renderPdfElement`, remove `keepTogether` from blocks that can outgrow a page,
|
|
3683
|
+
or resolve the document first:
|
|
3684
|
+
|
|
3685
|
+
```ts
|
|
3686
|
+
import { resolveKeepTogether } from '@nxgt/material-core/pdf/render';
|
|
3687
|
+
|
|
3688
|
+
const element = renderPdfElement(await resolveKeepTogether(doc));
|
|
3689
|
+
```
|
|
3690
|
+
|
|
3652
3691
|
### French amounts print with a slash, as in `1/234,50`
|
|
3653
3692
|
|
|
3654
3693
|
**When:** before 2.2.0, `formatAmount(1234.5, 'EUR', { locale: 'fr-FR' })`
|
|
@@ -4675,7 +4714,12 @@ expect(await within(button.parentElement!).findByRole('status')).toHaveTextConte
|
|
|
4675
4714
|
error)`. The status may be any non-2xx.
|
|
4676
4715
|
**Why:** the storage rejected the `PUT` to the presigned URL. For `403` the
|
|
4677
4716
|
usual causes are an expired URL, or a `Content-Type` that differs from the
|
|
4678
|
-
one the URL was signed with.
|
|
4717
|
+
one the URL was signed with. With a presigned POST target, the policy refused
|
|
4718
|
+
the file (size, content type, expiry) and the message names the S3 code when
|
|
4719
|
+
it is readable, such as `Upload failed with status 400 (EntityTooLarge)`.
|
|
4720
|
+
The field shows it translated (`material.upload.error-status`, `error-status-code`);
|
|
4721
|
+
`error.message` in `onError` stays English, and `error` is an `UploadError`
|
|
4722
|
+
(`kind`, `status`, `code`).
|
|
4679
4723
|
**Fix:**
|
|
4680
4724
|
|
|
4681
4725
|
```ts
|
|
@@ -4690,12 +4734,14 @@ const getPresignedUrl = async (file: File) => {
|
|
|
4690
4734
|
|
|
4691
4735
|
**When:** an `S3UploadField` upload fails immediately. The browser console
|
|
4692
4736
|
shows a CORS error for the storage host.
|
|
4693
|
-
**Why:** the browser blocked the cross-origin `PUT
|
|
4694
|
-
do not allow your origin, the
|
|
4737
|
+
**Why:** the browser blocked the cross-origin `PUT` (or `POST` with a presigned
|
|
4738
|
+
POST target). The bucket's CORS rules do not allow your origin, the method, or
|
|
4739
|
+
the headers you send; a `Content-Security-Policy` without the bucket host in
|
|
4740
|
+
`connect-src` fails the same way.
|
|
4695
4741
|
**Fix:**
|
|
4696
4742
|
|
|
4697
4743
|
```json
|
|
4698
|
-
[{ "AllowedOrigins": ["https://app.example.com"], "AllowedMethods": ["PUT"], "AllowedHeaders": ["*"] }]
|
|
4744
|
+
[{ "AllowedOrigins": ["https://app.example.com"], "AllowedMethods": ["PUT", "POST"], "AllowedHeaders": ["*"] }]
|
|
4699
4745
|
```
|
|
4700
4746
|
|
|
4701
4747
|
Apply it on the bucket, with your own origin.
|
|
@@ -5135,7 +5181,7 @@ such as `getByRole('navigation', { name: 'pagination' })`,
|
|
|
5135
5181
|
| `No filters available`, `+2 more` | `Aucun filtre disponible`, `+2 de plus` | `filter.empty`, `filter.more` |
|
|
5136
5182
|
| `Yes` / `No`, `From 5`, `Until …`, `Up to 9` (filter chips) | `Oui` / `Non`, `À partir de 5`, `Jusqu'au …`, `Jusqu'à 9` | `filter.value.*` |
|
|
5137
5183
|
| `Unread` (`MessageCard`) | `Non lu` | `cards.unread` |
|
|
5138
|
-
| `Replace {name}`, `Upload failed` | `Remplacer {name}`, `Échec de l'envoi` | `upload.replace-named`, `upload.failed` |
|
|
5184
|
+
| `Replace {name}`, `Remove {name}`, `Upload failed` | `Remplacer {name}`, `Supprimer {name}`, `Échec de l'envoi` | `upload.replace-named`, `upload.remove-named`, `upload.failed` |
|
|
5139
5185
|
| `File type not accepted`, `File exceeds maximum size of …`, `Maximum of 3 files reached` | `Type de fichier non accepté`, `Le fichier dépasse la taille maximale de …`, `Maximum de 3 fichiers atteint` | `upload.invalid-type`, `upload.too-large`, `upload.max-files` |
|
|
5140
5186
|
| `Write something …`, `Insert {name} emoji` (editor) | `Écrire quelque chose…`, `Insérer l'emoji {name}` | `rich-text-editor.placeholder`, `rich-text-editor.insert-emoji` |
|
|
5141
5187
|
| `Progress: 40%` | `Progression : 40 %` | `circular-progress.label` |
|
|
@@ -7741,8 +7787,13 @@ one. The usual sources are the components listed in
|
|
|
7741
7787
|
[the guide](guides/csp.md#style-elements-the-components-inject).
|
|
7742
7788
|
`ScrollArea`, `Select`, `RichTextEditor` and the scroll lock of dialogs and
|
|
7743
7789
|
sheets take the nonce from `NonceProvider`, and report this when the app has
|
|
7744
|
-
none (or gives it another nonce than the header's).
|
|
7745
|
-
|
|
7790
|
+
none (or gives it another nonce than the header's). Mermaid and KaTeX
|
|
7791
|
+
need none of this on a client render
|
|
7792
|
+
([Markdown under a strict CSP](guides/csp.md#markdown-katex-mermaid-and-code-under-a-strict-csp));
|
|
7793
|
+
the two left are a server-rendered page with math (KaTeX's `style` attributes
|
|
7794
|
+
need `style-src-attr 'unsafe-inline'`) and the `<style>` cytoscape adds to
|
|
7795
|
+
`<head>` for mermaid's mindmap and architecture diagrams.
|
|
7796
|
+
`Toaster`, `Drawer`,
|
|
7746
7797
|
`InputOTP`, `ImageCropper`, `Spinner` and `PdfReader` create none: their CSS is in the stylesheet, so if one of them looks unstyled, the
|
|
7747
7798
|
app imports neither `styles.css` nor `dist/material.css`.
|
|
7748
7799
|
**Fix:** for `style-src-attr`, allow attributes: they cannot be nonced.
|
|
@@ -7763,10 +7814,6 @@ import { NonceProvider } from '@nxgt/material';
|
|
|
7763
7814
|
</NonceProvider>;
|
|
7764
7815
|
```
|
|
7765
7816
|
|
|
7766
|
-
For a mermaid diagram, serve that route with `'unsafe-inline'` in
|
|
7767
|
-
`style-src-elem` instead of the nonce (a nonce in the same directive makes
|
|
7768
|
-
browsers ignore `'unsafe-inline'`).
|
|
7769
|
-
|
|
7770
7817
|
Once a page has a header-delivered CSP, browsers blank the `nonce` attribute, so React's development build may warn of an attribute mismatch when it hydrates a server-rendered `<style nonce>`. The warning is harmless.
|
|
7771
7818
|
|
|
7772
7819
|
### `Refused to load the font 'data:font/woff2…' because it violates the following Content Security Policy directive: "font-src 'self'"`
|
|
@@ -187,3 +187,9 @@
|
|
|
187
187
|
gap: 0.75rem;
|
|
188
188
|
}
|
|
189
189
|
}
|
|
190
|
+
/* A wide action (#2168): the actions may shrink within the row, so a long
|
|
191
|
+
* label ends in "..." (the button's own ellipsis) instead of overflowing. */
|
|
192
|
+
[data-slot="server-table-phone-row-end"] > [data-slot="server-table-actions"] {
|
|
193
|
+
flex-shrink: 1;
|
|
194
|
+
min-width: 0;
|
|
195
|
+
}
|
|
@@ -1,3 +1,40 @@
|
|
|
1
|
+
/* The scheme's colours as custom properties on the block: classes of the
|
|
2
|
+
stylesheet, never an inline `style` (strict CSP). Same values as
|
|
3
|
+
moonlight-tokens.ts; code-block-scheme.test.ts keeps them equal. */
|
|
4
|
+
[data-slot="code-block"][data-scheme="dark"] {
|
|
5
|
+
--code-bg: #222436;
|
|
6
|
+
--code-fg: #c8d3f5;
|
|
7
|
+
--code-comment: #7a88cf;
|
|
8
|
+
--code-blue: #82aaff;
|
|
9
|
+
--code-cyan: #86e1fc;
|
|
10
|
+
--code-green: #c3e88d;
|
|
11
|
+
--code-orange: #ff966c;
|
|
12
|
+
--code-yellow: #ffc777;
|
|
13
|
+
--code-red: #ff757f;
|
|
14
|
+
--code-magenta: #c099ff;
|
|
15
|
+
--code-pink: #fca7ea;
|
|
16
|
+
--code-selection: #2f334d;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
[data-slot="code-block"][data-scheme="light"] {
|
|
20
|
+
--code-bg: #f5f7ff;
|
|
21
|
+
--code-fg: #383a51;
|
|
22
|
+
--code-comment: #7a88cf;
|
|
23
|
+
--code-blue: #3e68d7;
|
|
24
|
+
--code-cyan: #0b8ec2;
|
|
25
|
+
--code-green: #4db380;
|
|
26
|
+
--code-orange: #c44c22;
|
|
27
|
+
--code-yellow: #ac8300;
|
|
28
|
+
--code-red: #c53b40;
|
|
29
|
+
--code-magenta: #7a5af5;
|
|
30
|
+
--code-pink: #b04d9a;
|
|
31
|
+
--code-selection: #d4daf0;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
[data-slot="code-block"] [data-code-scroll] {
|
|
35
|
+
max-height: var(--code-max-height, none);
|
|
36
|
+
}
|
|
37
|
+
|
|
1
38
|
[data-slot="code-block"] {
|
|
2
39
|
background: var(--code-bg);
|
|
3
40
|
color: var(--code-fg);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nxgt/material",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.71.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"bugs": {
|
|
6
6
|
"email": "stevegires@gmail.com"
|
|
@@ -372,7 +372,7 @@
|
|
|
372
372
|
"docs:previews": "rm -rf node_modules/.cache/nxgt-preview-free/missing && NXGT_PREVIEW_FREE=1 vitest run --project previews && bun .storybook/preview-free-report.ts"
|
|
373
373
|
},
|
|
374
374
|
"dependencies": {
|
|
375
|
-
"@nxgt/material-core": "^0.
|
|
375
|
+
"@nxgt/material-core": "^0.46.0",
|
|
376
376
|
"@base-ui/react": "^1.6.0",
|
|
377
377
|
"@dnd-kit/core": "^6.3.1",
|
|
378
378
|
"@dnd-kit/sortable": "^10.0.0",
|