@besaitech/ng-design-system-mcp 0.0.9 → 0.0.11
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/data/docs.json +449 -20
- package/package.json +1 -1
package/data/docs.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"libraryVersion": "0.0.
|
|
3
|
+
"libraryVersion": "0.0.41",
|
|
4
4
|
"packageName": "@besaitech/ng-design-system",
|
|
5
5
|
"devImport": "saitech-design-system",
|
|
6
|
-
"generatedAt": "2026-09-
|
|
7
|
-
"componentCount":
|
|
6
|
+
"generatedAt": "2026-09-15T12:45:18.055Z",
|
|
7
|
+
"componentCount": 33,
|
|
8
8
|
"components": [
|
|
9
9
|
{
|
|
10
10
|
"className": "SdsAccordion",
|
|
@@ -625,6 +625,60 @@
|
|
|
625
625
|
"alias": null,
|
|
626
626
|
"jsdoc": null
|
|
627
627
|
},
|
|
628
|
+
{
|
|
629
|
+
"name": "showTime",
|
|
630
|
+
"type": "boolean",
|
|
631
|
+
"default": "false",
|
|
632
|
+
"required": false,
|
|
633
|
+
"transform": "booleanAttribute",
|
|
634
|
+
"alias": null,
|
|
635
|
+
"jsdoc": "When true, a time editor (HH:mm, 24h) is shown and the value keeps its time-of-day."
|
|
636
|
+
},
|
|
637
|
+
{
|
|
638
|
+
"name": "showDone",
|
|
639
|
+
"type": "boolean",
|
|
640
|
+
"default": "false",
|
|
641
|
+
"required": false,
|
|
642
|
+
"transform": "booleanAttribute",
|
|
643
|
+
"alias": null,
|
|
644
|
+
"jsdoc": "When true, a \"done\" action is shown (used by the overlay picker to close the panel)."
|
|
645
|
+
},
|
|
646
|
+
{
|
|
647
|
+
"name": "timeLabel",
|
|
648
|
+
"type": "string",
|
|
649
|
+
"default": "'Heure'",
|
|
650
|
+
"required": false,
|
|
651
|
+
"transform": null,
|
|
652
|
+
"alias": null,
|
|
653
|
+
"jsdoc": "Visible label of the time editor. Translate it in the consuming app."
|
|
654
|
+
},
|
|
655
|
+
{
|
|
656
|
+
"name": "hoursLabel",
|
|
657
|
+
"type": "string",
|
|
658
|
+
"default": "'Heures'",
|
|
659
|
+
"required": false,
|
|
660
|
+
"transform": null,
|
|
661
|
+
"alias": null,
|
|
662
|
+
"jsdoc": "Accessible name of the hours field (it is a bare numeric input)."
|
|
663
|
+
},
|
|
664
|
+
{
|
|
665
|
+
"name": "minutesLabel",
|
|
666
|
+
"type": "string",
|
|
667
|
+
"default": "'Minutes'",
|
|
668
|
+
"required": false,
|
|
669
|
+
"transform": null,
|
|
670
|
+
"alias": null,
|
|
671
|
+
"jsdoc": "Accessible name of the minutes field."
|
|
672
|
+
},
|
|
673
|
+
{
|
|
674
|
+
"name": "doneLabel",
|
|
675
|
+
"type": "string",
|
|
676
|
+
"default": "'Terminé'",
|
|
677
|
+
"required": false,
|
|
678
|
+
"transform": null,
|
|
679
|
+
"alias": null,
|
|
680
|
+
"jsdoc": "Visible text of the \"done\" action (shown when {@link showDone} is true)."
|
|
681
|
+
},
|
|
628
682
|
{
|
|
629
683
|
"name": "calendarLabel",
|
|
630
684
|
"type": "string",
|
|
@@ -681,6 +735,11 @@
|
|
|
681
735
|
"name": "dateSelect",
|
|
682
736
|
"type": "Date",
|
|
683
737
|
"fromModel": false
|
|
738
|
+
},
|
|
739
|
+
{
|
|
740
|
+
"name": "done",
|
|
741
|
+
"type": "void",
|
|
742
|
+
"fromModel": false
|
|
684
743
|
}
|
|
685
744
|
],
|
|
686
745
|
"exportedTypes": [],
|
|
@@ -973,6 +1032,15 @@
|
|
|
973
1032
|
"alias": null,
|
|
974
1033
|
"jsdoc": null
|
|
975
1034
|
},
|
|
1035
|
+
{
|
|
1036
|
+
"name": "showTime",
|
|
1037
|
+
"type": "boolean",
|
|
1038
|
+
"default": "false",
|
|
1039
|
+
"required": false,
|
|
1040
|
+
"transform": "booleanAttribute",
|
|
1041
|
+
"alias": null,
|
|
1042
|
+
"jsdoc": "When true, the calendar shows a time editor (HH:mm, 24h), the value keeps its time-of-day, and\nthe field displays date + time. The overlay stays open on day-select so the time can be set;\na \"done\" action (and click-away / Escape) closes it."
|
|
1043
|
+
},
|
|
976
1044
|
{
|
|
977
1045
|
"name": "format",
|
|
978
1046
|
"type": "(d: Date) => string",
|
|
@@ -980,7 +1048,43 @@
|
|
|
980
1048
|
"required": false,
|
|
981
1049
|
"transform": null,
|
|
982
1050
|
"alias": null,
|
|
983
|
-
"jsdoc": "Custom display formatter (default dd/MM/yyyy)."
|
|
1051
|
+
"jsdoc": "Custom display formatter for the DATE part (default dd/MM/yyyy). The time is appended as HH:mm."
|
|
1052
|
+
},
|
|
1053
|
+
{
|
|
1054
|
+
"name": "timeLabel",
|
|
1055
|
+
"type": "string",
|
|
1056
|
+
"default": "'Heure'",
|
|
1057
|
+
"required": false,
|
|
1058
|
+
"transform": null,
|
|
1059
|
+
"alias": null,
|
|
1060
|
+
"jsdoc": "Visible label of the time editor (forwarded to the calendar). See {@link showTime}."
|
|
1061
|
+
},
|
|
1062
|
+
{
|
|
1063
|
+
"name": "hoursLabel",
|
|
1064
|
+
"type": "string",
|
|
1065
|
+
"default": "'Heures'",
|
|
1066
|
+
"required": false,
|
|
1067
|
+
"transform": null,
|
|
1068
|
+
"alias": null,
|
|
1069
|
+
"jsdoc": "Accessible name of the hours field (forwarded to the calendar)."
|
|
1070
|
+
},
|
|
1071
|
+
{
|
|
1072
|
+
"name": "minutesLabel",
|
|
1073
|
+
"type": "string",
|
|
1074
|
+
"default": "'Minutes'",
|
|
1075
|
+
"required": false,
|
|
1076
|
+
"transform": null,
|
|
1077
|
+
"alias": null,
|
|
1078
|
+
"jsdoc": "Accessible name of the minutes field (forwarded to the calendar)."
|
|
1079
|
+
},
|
|
1080
|
+
{
|
|
1081
|
+
"name": "doneLabel",
|
|
1082
|
+
"type": "string",
|
|
1083
|
+
"default": "'Terminé'",
|
|
1084
|
+
"required": false,
|
|
1085
|
+
"transform": null,
|
|
1086
|
+
"alias": null,
|
|
1087
|
+
"jsdoc": "Visible text of the calendar's \"done\" action, shown in the overlay when {@link showTime}."
|
|
984
1088
|
},
|
|
985
1089
|
{
|
|
986
1090
|
"name": "clearLabel",
|
|
@@ -1076,7 +1180,7 @@
|
|
|
1076
1180
|
"hostBindings": {
|
|
1077
1181
|
"class": "block",
|
|
1078
1182
|
"(document:click)": "onDocumentClick($event)",
|
|
1079
|
-
"(keydown.escape)": "
|
|
1183
|
+
"(keydown.escape)": "onEscape($event)"
|
|
1080
1184
|
},
|
|
1081
1185
|
"examples": [
|
|
1082
1186
|
{
|
|
@@ -1103,6 +1207,14 @@
|
|
|
1103
1207
|
"stack": true,
|
|
1104
1208
|
"dark": false
|
|
1105
1209
|
},
|
|
1210
|
+
{
|
|
1211
|
+
"sectionTitle": "Date et heure (showTime)",
|
|
1212
|
+
"sectionDescription": "Ajoute un éditeur d'heure (HH:mm, 24h) ; la valeur conserve son heure. La surimpression reste ouverte après le choix du jour pour régler l'heure.",
|
|
1213
|
+
"code": "<sds-date-picker label=\"Ouverture des inscriptions\" showTime [(ngModel)]=\"dateTime\" />\n<p>Sélection : {{ dateTime ? displayTime(dateTime) : '—' }}</p>\n\n// dateTime: Date | null = null;",
|
|
1214
|
+
"runnableExample": "<sds-date-picker label=\"Ouverture des inscriptions\" showTime [(ngModel)]=\"dateTime\" />\n <p class=\"text-sm text-ink-soft\">\n Sélection :\n <span class=\"font-medium text-ink\">{{ dateTime ? displayTime(dateTime) : '—' }}</span>\n </p>",
|
|
1215
|
+
"stack": true,
|
|
1216
|
+
"dark": false
|
|
1217
|
+
},
|
|
1106
1218
|
{
|
|
1107
1219
|
"sectionTitle": "Calendrier en ligne (inline)",
|
|
1108
1220
|
"sectionDescription": null,
|
|
@@ -1464,6 +1576,179 @@
|
|
|
1464
1576
|
}
|
|
1465
1577
|
]
|
|
1466
1578
|
},
|
|
1579
|
+
{
|
|
1580
|
+
"className": "SdsLocalizedInput",
|
|
1581
|
+
"selector": "sds-localized-input",
|
|
1582
|
+
"kind": "component",
|
|
1583
|
+
"group": "primitive",
|
|
1584
|
+
"importName": "SdsLocalizedInput",
|
|
1585
|
+
"description": "Un seul champ pour saisir un texte traduit (titre, libellé, description) dans plusieurs langues. Un sélecteur compact bascule la traduction éditée ; une pastille marque les langues déjà renseignées. Le champ s'ouvre sur currentLanguage (sinon la première langue). Implémente ControlValueAccessor sur la map { langue: texte }.",
|
|
1586
|
+
"overviewDescription": null,
|
|
1587
|
+
"jsdoc": "One language-aware text field for editing a translated value (a {@link SdsLocalizedValue} — a title,\nlabel or description in several languages). Only one language is edited at a time; a compact switcher\nsitting **inside the field** flips which translation you are editing, and a dot marks the languages that\nalready have content, so a partially-translated value is obvious at a glance.\n\nThe active language defaults to {@link currentLanguage} when it is one of {@link languages}, otherwise the\nfirst accepted language — so the field \"opens on the language you are working in\". Empty translations are\npruned from the emitted value, keeping the stored map clean.\n\nImplements ControlValueAccessor over the map — use with reactive forms or `[(ngModel)]`:\n`<sds-localized-input [languages]=\"['fr','nl','en']\" [(ngModel)]=\"title\" />`.",
|
|
1588
|
+
"example": null,
|
|
1589
|
+
"cva": true,
|
|
1590
|
+
"usesNgModel": true,
|
|
1591
|
+
"inputs": [
|
|
1592
|
+
{
|
|
1593
|
+
"name": "label",
|
|
1594
|
+
"type": "string",
|
|
1595
|
+
"default": "''",
|
|
1596
|
+
"required": false,
|
|
1597
|
+
"transform": null,
|
|
1598
|
+
"alias": null,
|
|
1599
|
+
"jsdoc": null
|
|
1600
|
+
},
|
|
1601
|
+
{
|
|
1602
|
+
"name": "hint",
|
|
1603
|
+
"type": "string",
|
|
1604
|
+
"default": "''",
|
|
1605
|
+
"required": false,
|
|
1606
|
+
"transform": null,
|
|
1607
|
+
"alias": null,
|
|
1608
|
+
"jsdoc": null
|
|
1609
|
+
},
|
|
1610
|
+
{
|
|
1611
|
+
"name": "placeholder",
|
|
1612
|
+
"type": "string",
|
|
1613
|
+
"default": "''",
|
|
1614
|
+
"required": false,
|
|
1615
|
+
"transform": null,
|
|
1616
|
+
"alias": null,
|
|
1617
|
+
"jsdoc": null
|
|
1618
|
+
},
|
|
1619
|
+
{
|
|
1620
|
+
"name": "languages",
|
|
1621
|
+
"type": "string[]",
|
|
1622
|
+
"default": "[]",
|
|
1623
|
+
"required": false,
|
|
1624
|
+
"transform": null,
|
|
1625
|
+
"alias": null,
|
|
1626
|
+
"jsdoc": "The accepted language codes, in display order (e.g. `['fr','nl','en']`)."
|
|
1627
|
+
},
|
|
1628
|
+
{
|
|
1629
|
+
"name": "currentLanguage",
|
|
1630
|
+
"type": "string | null",
|
|
1631
|
+
"default": "null",
|
|
1632
|
+
"required": false,
|
|
1633
|
+
"transform": null,
|
|
1634
|
+
"alias": null,
|
|
1635
|
+
"jsdoc": "Language to pre-select; used when it is one of {@link languages}, else the first accepted language."
|
|
1636
|
+
},
|
|
1637
|
+
{
|
|
1638
|
+
"name": "multiline",
|
|
1639
|
+
"type": "boolean",
|
|
1640
|
+
"default": "false",
|
|
1641
|
+
"required": false,
|
|
1642
|
+
"transform": "booleanAttribute",
|
|
1643
|
+
"alias": null,
|
|
1644
|
+
"jsdoc": null
|
|
1645
|
+
},
|
|
1646
|
+
{
|
|
1647
|
+
"name": "rows",
|
|
1648
|
+
"type": "number",
|
|
1649
|
+
"default": "3",
|
|
1650
|
+
"required": false,
|
|
1651
|
+
"transform": "numberAttribute",
|
|
1652
|
+
"alias": null,
|
|
1653
|
+
"jsdoc": null
|
|
1654
|
+
},
|
|
1655
|
+
{
|
|
1656
|
+
"name": "size",
|
|
1657
|
+
"type": "SdsLocalizedInputSize",
|
|
1658
|
+
"default": "'md'",
|
|
1659
|
+
"required": false,
|
|
1660
|
+
"transform": null,
|
|
1661
|
+
"alias": null,
|
|
1662
|
+
"jsdoc": null
|
|
1663
|
+
},
|
|
1664
|
+
{
|
|
1665
|
+
"name": "disabled",
|
|
1666
|
+
"type": "boolean",
|
|
1667
|
+
"default": "false",
|
|
1668
|
+
"required": false,
|
|
1669
|
+
"transform": "booleanAttribute",
|
|
1670
|
+
"alias": null,
|
|
1671
|
+
"jsdoc": null
|
|
1672
|
+
},
|
|
1673
|
+
{
|
|
1674
|
+
"name": "languageSwitcherLabel",
|
|
1675
|
+
"type": "string",
|
|
1676
|
+
"default": "'Langue'",
|
|
1677
|
+
"required": false,
|
|
1678
|
+
"transform": null,
|
|
1679
|
+
"alias": null,
|
|
1680
|
+
"jsdoc": "Accessible name for the in-field language switcher, and the \"no translation yet\" title suffix on each\nlanguage button. French defaults so existing consumers are unchanged; translate them in a multi-language\napp (the buttons are letter-only, so the title carries their meaning)."
|
|
1681
|
+
},
|
|
1682
|
+
{
|
|
1683
|
+
"name": "untranslatedLabel",
|
|
1684
|
+
"type": "string",
|
|
1685
|
+
"default": "'à traduire'",
|
|
1686
|
+
"required": false,
|
|
1687
|
+
"transform": null,
|
|
1688
|
+
"alias": null,
|
|
1689
|
+
"jsdoc": null
|
|
1690
|
+
}
|
|
1691
|
+
],
|
|
1692
|
+
"outputs": [],
|
|
1693
|
+
"exportedTypes": [
|
|
1694
|
+
{
|
|
1695
|
+
"name": "SdsLocalizedValue",
|
|
1696
|
+
"kind": "type",
|
|
1697
|
+
"body": "Record<string, string>"
|
|
1698
|
+
},
|
|
1699
|
+
{
|
|
1700
|
+
"name": "SdsLocalizedInputSize",
|
|
1701
|
+
"kind": "union",
|
|
1702
|
+
"body": "'sm' | 'md' | 'lg'"
|
|
1703
|
+
}
|
|
1704
|
+
],
|
|
1705
|
+
"projectionSlots": [],
|
|
1706
|
+
"hostBindings": {
|
|
1707
|
+
"class": "block"
|
|
1708
|
+
},
|
|
1709
|
+
"examples": [
|
|
1710
|
+
{
|
|
1711
|
+
"sectionTitle": "Basique",
|
|
1712
|
+
"sectionDescription": "Passez les langues acceptées ; le champ s'ouvre sur la langue courante et n'édite qu'une langue à la fois.",
|
|
1713
|
+
"code": "<sds-localized-input\n label=\"Titre\"\n [languages]=\"['fr', 'nl', 'en']\"\n [(ngModel)]=\"title\"\n/>\n\n// title: SdsLocalizedValue = {}; // e.g. { fr: 'Signaler un incident' }",
|
|
1714
|
+
"runnableExample": "<sds-localized-input label=\"Titre\" [languages]=\"['fr', 'nl', 'en']\" [(ngModel)]=\"title\" />",
|
|
1715
|
+
"stack": true,
|
|
1716
|
+
"dark": false
|
|
1717
|
+
},
|
|
1718
|
+
{
|
|
1719
|
+
"sectionTitle": "Valeur partiellement traduite",
|
|
1720
|
+
"sectionDescription": "Une pastille pleine marque les langues renseignées, une pastille creuse celles qui restent à traduire.",
|
|
1721
|
+
"code": "label = { fr: 'Applications & logiciels', en: 'Applications & software' };\n\n<sds-localized-input\n label=\"Libellé de catégorie\"\n [languages]=\"['fr', 'nl', 'en']\"\n [(ngModel)]=\"label\"\n/>",
|
|
1722
|
+
"runnableExample": "<sds-localized-input\n label=\"Libellé de catégorie\"\n [languages]=\"['fr', 'nl', 'en']\"\n [(ngModel)]=\"label\"\n />",
|
|
1723
|
+
"stack": true,
|
|
1724
|
+
"dark": false
|
|
1725
|
+
},
|
|
1726
|
+
{
|
|
1727
|
+
"sectionTitle": "Langue pré-sélectionnée",
|
|
1728
|
+
"sectionDescription": "currentLanguage ouvre le champ sur une langue précise quand elle fait partie des langues acceptées.",
|
|
1729
|
+
"code": "<sds-localized-input\n label=\"Titre\"\n [languages]=\"['fr', 'nl', 'en']\"\n currentLanguage=\"nl\"\n [(ngModel)]=\"title\"\n/>",
|
|
1730
|
+
"runnableExample": "<sds-localized-input\n label=\"Titre\"\n [languages]=\"['fr', 'nl', 'en']\"\n currentLanguage=\"nl\"\n [(ngModel)]=\"titleNl\"\n />",
|
|
1731
|
+
"stack": true,
|
|
1732
|
+
"dark": false
|
|
1733
|
+
},
|
|
1734
|
+
{
|
|
1735
|
+
"sectionTitle": "Multiligne",
|
|
1736
|
+
"sectionDescription": "multiline rend une zone de texte au lieu d'un champ simple.",
|
|
1737
|
+
"code": "<sds-localized-input\n label=\"Description\"\n [languages]=\"['fr', 'nl', 'en']\"\n multiline\n [rows]=\"3\"\n [(ngModel)]=\"description\"\n/>",
|
|
1738
|
+
"runnableExample": "<sds-localized-input\n label=\"Description\"\n [languages]=\"['fr', 'nl', 'en']\"\n multiline\n [rows]=\"3\"\n [(ngModel)]=\"description\"\n />",
|
|
1739
|
+
"stack": true,
|
|
1740
|
+
"dark": false
|
|
1741
|
+
},
|
|
1742
|
+
{
|
|
1743
|
+
"sectionTitle": "Désactivé",
|
|
1744
|
+
"sectionDescription": null,
|
|
1745
|
+
"code": "<sds-localized-input\n label=\"Titre\"\n [languages]=\"['fr', 'nl', 'en']\"\n [(ngModel)]=\"value\"\n disabled\n/>",
|
|
1746
|
+
"runnableExample": "<sds-localized-input\n label=\"Titre\"\n [languages]=\"['fr', 'nl', 'en']\"\n [ngModel]=\"label\"\n disabled\n />",
|
|
1747
|
+
"stack": true,
|
|
1748
|
+
"dark": false
|
|
1749
|
+
}
|
|
1750
|
+
]
|
|
1751
|
+
},
|
|
1467
1752
|
{
|
|
1468
1753
|
"className": "SdsMultiSelect",
|
|
1469
1754
|
"selector": "sds-multi-select",
|
|
@@ -2125,7 +2410,7 @@
|
|
|
2125
2410
|
{
|
|
2126
2411
|
"name": "currentPageReportTemplate",
|
|
2127
2412
|
"type": "string",
|
|
2128
|
-
"default": "'{first} – {last}
|
|
2413
|
+
"default": "'{first} – {last} of {totalRecords}'",
|
|
2129
2414
|
"required": false,
|
|
2130
2415
|
"transform": null,
|
|
2131
2416
|
"alias": null,
|
|
@@ -2143,7 +2428,7 @@
|
|
|
2143
2428
|
{
|
|
2144
2429
|
"name": "rowsPerPageLabel",
|
|
2145
2430
|
"type": "string",
|
|
2146
|
-
"default": "'
|
|
2431
|
+
"default": "'Rows per page'",
|
|
2147
2432
|
"required": false,
|
|
2148
2433
|
"transform": null,
|
|
2149
2434
|
"alias": null,
|
|
@@ -2152,7 +2437,7 @@
|
|
|
2152
2437
|
{
|
|
2153
2438
|
"name": "jumpToPageLabel",
|
|
2154
2439
|
"type": "string",
|
|
2155
|
-
"default": "'
|
|
2440
|
+
"default": "'Go to'",
|
|
2156
2441
|
"required": false,
|
|
2157
2442
|
"transform": null,
|
|
2158
2443
|
"alias": null,
|
|
@@ -2165,12 +2450,12 @@
|
|
|
2165
2450
|
"required": false,
|
|
2166
2451
|
"transform": null,
|
|
2167
2452
|
"alias": null,
|
|
2168
|
-
"jsdoc": "Accessible name for the <nav> wrapping the page controls, and for the four icon-only\nfirst/prev/next/last buttons. Those buttons have no text, so these strings are their ONLY\naccessible names — the
|
|
2453
|
+
"jsdoc": "Accessible name for the <nav> wrapping the page controls, and for the four icon-only\nfirst/prev/next/last buttons. Those buttons have no text, so these strings are their ONLY\naccessible names — the English defaults suit an English-first app, but an app serving more than\none language MUST pass translated values."
|
|
2169
2454
|
},
|
|
2170
2455
|
{
|
|
2171
2456
|
"name": "firstPageLabel",
|
|
2172
2457
|
"type": "string",
|
|
2173
|
-
"default": "'
|
|
2458
|
+
"default": "'First page'",
|
|
2174
2459
|
"required": false,
|
|
2175
2460
|
"transform": null,
|
|
2176
2461
|
"alias": null,
|
|
@@ -2179,7 +2464,7 @@
|
|
|
2179
2464
|
{
|
|
2180
2465
|
"name": "previousPageLabel",
|
|
2181
2466
|
"type": "string",
|
|
2182
|
-
"default": "'
|
|
2467
|
+
"default": "'Previous page'",
|
|
2183
2468
|
"required": false,
|
|
2184
2469
|
"transform": null,
|
|
2185
2470
|
"alias": null,
|
|
@@ -2188,7 +2473,7 @@
|
|
|
2188
2473
|
{
|
|
2189
2474
|
"name": "nextPageLabel",
|
|
2190
2475
|
"type": "string",
|
|
2191
|
-
"default": "'
|
|
2476
|
+
"default": "'Next page'",
|
|
2192
2477
|
"required": false,
|
|
2193
2478
|
"transform": null,
|
|
2194
2479
|
"alias": null,
|
|
@@ -2197,7 +2482,7 @@
|
|
|
2197
2482
|
{
|
|
2198
2483
|
"name": "lastPageLabel",
|
|
2199
2484
|
"type": "string",
|
|
2200
|
-
"default": "'
|
|
2485
|
+
"default": "'Last page'",
|
|
2201
2486
|
"required": false,
|
|
2202
2487
|
"transform": null,
|
|
2203
2488
|
"alias": null,
|
|
@@ -2215,11 +2500,11 @@
|
|
|
2215
2500
|
{
|
|
2216
2501
|
"name": "jumpToPageAriaLabel",
|
|
2217
2502
|
"type": "string",
|
|
2218
|
-
"default": "'
|
|
2503
|
+
"default": "'Go to page'",
|
|
2219
2504
|
"required": false,
|
|
2220
2505
|
"transform": null,
|
|
2221
2506
|
"alias": null,
|
|
2222
|
-
"jsdoc": "Accessible name of the jump-to-page field. Separate from the visible {@link jumpToPageLabel}\n(\"
|
|
2507
|
+
"jsdoc": "Accessible name of the jump-to-page field. Separate from the visible {@link jumpToPageLabel}\n(\"Go to\") on purpose: the visible text is terse because it sits next to the field, while the\naccessible name has to stand alone."
|
|
2223
2508
|
},
|
|
2224
2509
|
{
|
|
2225
2510
|
"name": "size",
|
|
@@ -2722,6 +3007,15 @@
|
|
|
2722
3007
|
"alias": null,
|
|
2723
3008
|
"jsdoc": null
|
|
2724
3009
|
},
|
|
3010
|
+
{
|
|
3011
|
+
"name": "appearance",
|
|
3012
|
+
"type": "SdsSelectAppearance",
|
|
3013
|
+
"default": "'default'",
|
|
3014
|
+
"required": false,
|
|
3015
|
+
"transform": null,
|
|
3016
|
+
"alias": null,
|
|
3017
|
+
"jsdoc": null
|
|
3018
|
+
},
|
|
2725
3019
|
{
|
|
2726
3020
|
"name": "disabled",
|
|
2727
3021
|
"type": "boolean",
|
|
@@ -2774,6 +3068,11 @@
|
|
|
2774
3068
|
"name": "SdsSelectSize",
|
|
2775
3069
|
"kind": "union",
|
|
2776
3070
|
"body": "'sm' | 'md' | 'lg'"
|
|
3071
|
+
},
|
|
3072
|
+
{
|
|
3073
|
+
"name": "SdsSelectAppearance",
|
|
3074
|
+
"kind": "union",
|
|
3075
|
+
"body": "'default' | 'filled' | 'on-brand'"
|
|
2777
3076
|
}
|
|
2778
3077
|
],
|
|
2779
3078
|
"projectionSlots": [],
|
|
@@ -2927,7 +3226,7 @@
|
|
|
2927
3226
|
"sectionTitle": "Navigation",
|
|
2928
3227
|
"sectionDescription": "Les items acceptent [link] (routerLink avec état actif automatique) ; ici active est défini manuellement pour la démo.",
|
|
2929
3228
|
"code": "<sds-sidebar>\n <sds-nav-group>\n <sds-nav-item icon=\"home\" label=\"Accueil\" link=\"/\" exact />\n </sds-nav-group>\n\n <sds-nav-group label=\"Membres\">\n <sds-nav-item icon=\"user-plus\" label=\"Créer un membre\" link=\"/membres/creer\" />\n <sds-nav-item icon=\"building-2\" label=\"Recherche Occupants\" link=\"/membres/occupants\" />\n </sds-nav-group>\n\n <div sdsFooter>\n <sds-badge variant=\"warning\" dot>TEST V.1.0.0</sds-badge>\n </div>\n</sds-sidebar>",
|
|
2930
|
-
"runnableExample": "<div class=\"h-[460px] w-fit overflow-hidden rounded-card border border-border\">\n <sds-sidebar>\n <sds-nav-group>\n <sds-nav-item icon=\"home\" label=\"Accueil\" active />\n </sds-nav-group>\n\n <sds-nav-group label=\"Membres\">\n <sds-nav-item icon=\"user-plus\" label=\"Créer un membre\" />\n <sds-nav-item icon=\"building-2\" label=\"Recherche Occupants\" />\n </sds-nav-group>\n\n <sds-nav-group label=\"Dotations\">\n <sds-nav-item icon=\"package-plus\" label=\"Créer une dotation\" />\n <sds-nav-item icon=\"rotate-ccw\" label=\"Retour de dotation\" />\n </sds-nav-group>\n\n <div sdsFooter>\n <
|
|
3229
|
+
"runnableExample": "<div class=\"h-[460px] w-fit overflow-hidden rounded-card border border-border\">\n <sds-sidebar>\n <sds-nav-group>\n <sds-nav-item icon=\"home\" label=\"Accueil\" active />\n </sds-nav-group>\n\n <sds-nav-group label=\"Membres\">\n <sds-nav-item icon=\"user-plus\" label=\"Créer un membre\" />\n <sds-nav-item icon=\"building-2\" label=\"Recherche Occupants\" />\n </sds-nav-group>\n\n <sds-nav-group label=\"Dotations\">\n <sds-nav-item icon=\"package-plus\" label=\"Créer une dotation\" />\n <sds-nav-item icon=\"rotate-ccw\" label=\"Retour de dotation\" />\n </sds-nav-group>\n\n <div sdsFooter class=\"text-[0.68rem] text-white/40 flex justify-center items-center\">\n <div class=\"font-mono\">Saitech Design System v{{ version }}</div>\n </div>\n </sds-sidebar>\n </div>",
|
|
2931
3230
|
"stack": true,
|
|
2932
3231
|
"dark": false
|
|
2933
3232
|
}
|
|
@@ -3094,6 +3393,78 @@
|
|
|
3094
3393
|
"alias": null,
|
|
3095
3394
|
"jsdoc": null
|
|
3096
3395
|
},
|
|
3396
|
+
{
|
|
3397
|
+
"name": "currentPageReportTemplate",
|
|
3398
|
+
"type": "string",
|
|
3399
|
+
"default": "'{first} – {last} of {totalRecords}'",
|
|
3400
|
+
"required": false,
|
|
3401
|
+
"transform": null,
|
|
3402
|
+
"alias": null,
|
|
3403
|
+
"jsdoc": "Paginator labels, forwarded to the inner <sds-paginator>. English defaults suit an English-first\napp; an app serving more than one language MUST pass translated values (the four nav labels and\n{@link pageLinkLabel} name icon-only controls, so they are their ONLY accessible name).\n{@link currentPageReportTemplate} tokens: {first} {last} {totalRecords} {currentPage} {totalPages} {rows}."
|
|
3404
|
+
},
|
|
3405
|
+
{
|
|
3406
|
+
"name": "rowsPerPageLabel",
|
|
3407
|
+
"type": "string",
|
|
3408
|
+
"default": "'Rows per page'",
|
|
3409
|
+
"required": false,
|
|
3410
|
+
"transform": null,
|
|
3411
|
+
"alias": null,
|
|
3412
|
+
"jsdoc": null
|
|
3413
|
+
},
|
|
3414
|
+
{
|
|
3415
|
+
"name": "paginationLabel",
|
|
3416
|
+
"type": "string",
|
|
3417
|
+
"default": "'Pagination'",
|
|
3418
|
+
"required": false,
|
|
3419
|
+
"transform": null,
|
|
3420
|
+
"alias": null,
|
|
3421
|
+
"jsdoc": null
|
|
3422
|
+
},
|
|
3423
|
+
{
|
|
3424
|
+
"name": "firstPageLabel",
|
|
3425
|
+
"type": "string",
|
|
3426
|
+
"default": "'First page'",
|
|
3427
|
+
"required": false,
|
|
3428
|
+
"transform": null,
|
|
3429
|
+
"alias": null,
|
|
3430
|
+
"jsdoc": null
|
|
3431
|
+
},
|
|
3432
|
+
{
|
|
3433
|
+
"name": "previousPageLabel",
|
|
3434
|
+
"type": "string",
|
|
3435
|
+
"default": "'Previous page'",
|
|
3436
|
+
"required": false,
|
|
3437
|
+
"transform": null,
|
|
3438
|
+
"alias": null,
|
|
3439
|
+
"jsdoc": null
|
|
3440
|
+
},
|
|
3441
|
+
{
|
|
3442
|
+
"name": "nextPageLabel",
|
|
3443
|
+
"type": "string",
|
|
3444
|
+
"default": "'Next page'",
|
|
3445
|
+
"required": false,
|
|
3446
|
+
"transform": null,
|
|
3447
|
+
"alias": null,
|
|
3448
|
+
"jsdoc": null
|
|
3449
|
+
},
|
|
3450
|
+
{
|
|
3451
|
+
"name": "lastPageLabel",
|
|
3452
|
+
"type": "string",
|
|
3453
|
+
"default": "'Last page'",
|
|
3454
|
+
"required": false,
|
|
3455
|
+
"transform": null,
|
|
3456
|
+
"alias": null,
|
|
3457
|
+
"jsdoc": null
|
|
3458
|
+
},
|
|
3459
|
+
{
|
|
3460
|
+
"name": "pageLinkLabel",
|
|
3461
|
+
"type": "string",
|
|
3462
|
+
"default": "'Page {page}'",
|
|
3463
|
+
"required": false,
|
|
3464
|
+
"transform": null,
|
|
3465
|
+
"alias": null,
|
|
3466
|
+
"jsdoc": "Accessible name of a numbered page link; `{page}` is the 1-based page number."
|
|
3467
|
+
},
|
|
3097
3468
|
{
|
|
3098
3469
|
"name": "globalFilter",
|
|
3099
3470
|
"type": "boolean",
|
|
@@ -3106,7 +3477,7 @@
|
|
|
3106
3477
|
{
|
|
3107
3478
|
"name": "globalFilterPlaceholder",
|
|
3108
3479
|
"type": "string",
|
|
3109
|
-
"default": "'
|
|
3480
|
+
"default": "'Search…'",
|
|
3110
3481
|
"required": false,
|
|
3111
3482
|
"transform": null,
|
|
3112
3483
|
"alias": null,
|
|
@@ -3115,7 +3486,7 @@
|
|
|
3115
3486
|
{
|
|
3116
3487
|
"name": "globalFilterAriaLabel",
|
|
3117
3488
|
"type": "string",
|
|
3118
|
-
"default": "'
|
|
3489
|
+
"default": "'Search the table'",
|
|
3119
3490
|
"required": false,
|
|
3120
3491
|
"transform": null,
|
|
3121
3492
|
"alias": null,
|
|
@@ -3160,7 +3531,7 @@
|
|
|
3160
3531
|
{
|
|
3161
3532
|
"name": "emptyMessage",
|
|
3162
3533
|
"type": "string",
|
|
3163
|
-
"default": "'
|
|
3534
|
+
"default": "'No data'",
|
|
3164
3535
|
"required": false,
|
|
3165
3536
|
"transform": null,
|
|
3166
3537
|
"alias": null,
|
|
@@ -3178,7 +3549,7 @@
|
|
|
3178
3549
|
{
|
|
3179
3550
|
"name": "ariaLabel",
|
|
3180
3551
|
"type": "string",
|
|
3181
|
-
"default": "'
|
|
3552
|
+
"default": "'Data table'",
|
|
3182
3553
|
"required": false,
|
|
3183
3554
|
"transform": null,
|
|
3184
3555
|
"alias": null,
|
|
@@ -3815,6 +4186,52 @@
|
|
|
3815
4186
|
}
|
|
3816
4187
|
]
|
|
3817
4188
|
},
|
|
4189
|
+
{
|
|
4190
|
+
"className": "SdsToastHost",
|
|
4191
|
+
"selector": "sds-toast-host",
|
|
4192
|
+
"kind": "component",
|
|
4193
|
+
"group": "primitive",
|
|
4194
|
+
"importName": "SdsToastService, SdsToastHost",
|
|
4195
|
+
"description": "Notifications transitoires. Le code applicatif appelle SdsToastService.success / error / info après une action ; un unique <sds-toast-host> monté dans le shell affiche la file et chaque toast disparaît tout seul. Régions live accessibles : les erreurs interrompent (assertive), les succès/infos patientent (polite).",
|
|
4196
|
+
"overviewDescription": null,
|
|
4197
|
+
"jsdoc": "Renders the {@link SdsToastService} queue, fixed bottom-centre. Mount it once, in the app shell:\n`<sds-toast-host />`. Application code pushes toasts through the injected service.\n\nAccessibility: the two live regions are ALWAYS in the DOM (even when empty), because a live region must\npre-exist for its later content changes to be announced. Errors go to an assertive `role=\"alert\"` region\nso a failure interrupts; success/info go to a polite region so they queue.",
|
|
4198
|
+
"example": null,
|
|
4199
|
+
"cva": false,
|
|
4200
|
+
"usesNgModel": false,
|
|
4201
|
+
"inputs": [
|
|
4202
|
+
{
|
|
4203
|
+
"name": "closeLabel",
|
|
4204
|
+
"type": "string",
|
|
4205
|
+
"default": "'Fermer'",
|
|
4206
|
+
"required": false,
|
|
4207
|
+
"transform": null,
|
|
4208
|
+
"alias": null,
|
|
4209
|
+
"jsdoc": "Accessible name for each toast's close button. French default so existing consumers are unchanged; the\nbutton is icon-only, so an app serving more than one language MUST translate it."
|
|
4210
|
+
}
|
|
4211
|
+
],
|
|
4212
|
+
"outputs": [],
|
|
4213
|
+
"exportedTypes": [],
|
|
4214
|
+
"projectionSlots": [],
|
|
4215
|
+
"hostBindings": {},
|
|
4216
|
+
"examples": [
|
|
4217
|
+
{
|
|
4218
|
+
"sectionTitle": "Déclencher",
|
|
4219
|
+
"sectionDescription": "Injectez SdsToastService et appelez success / error / info. Les erreurs restent affichées plus longtemps.",
|
|
4220
|
+
"code": "private readonly toasts = inject(SdsToastService);\n\nsave(): void {\n this.api.save(form).subscribe({\n next: () => this.toasts.success('Formulaire enregistré.'),\n error: () => this.toasts.error('Échec de l’enregistrement.'),\n });\n}",
|
|
4221
|
+
"runnableExample": "<div class=\"flex flex-wrap gap-2\">\n <sds-button variant=\"secondary\" (click)=\"toasts.success('Formulaire enregistré.')\">\n Succès\n </sds-button>\n <sds-button variant=\"secondary\" (click)=\"toasts.error('Échec de l’enregistrement.')\">\n Erreur\n </sds-button>\n <sds-button variant=\"secondary\" (click)=\"toasts.info('Synchronisation en cours…')\">\n Info\n </sds-button>\n </div>",
|
|
4222
|
+
"stack": true,
|
|
4223
|
+
"dark": false
|
|
4224
|
+
},
|
|
4225
|
+
{
|
|
4226
|
+
"sectionTitle": "Mise en place",
|
|
4227
|
+
"sectionDescription": "Montez l'hôte une seule fois (dans le shell de l'application), puis poussez des toasts depuis n'importe quel service ou composant.",
|
|
4228
|
+
"code": "// Shell / app root — mount the host once:\n@Component({\n imports: [SdsToastHost /* … */],\n template: `\n <sds-shell> … </sds-shell>\n <sds-toast-host />\n `,\n})\nexport class AppShell {}",
|
|
4229
|
+
"runnableExample": "<p class=\"text-sm text-ink-soft\">\n <code class=\"rounded bg-muted px-1.5 py-0.5 text-xs\"><sds-toast-host /></code>\n est monté une fois en haut de l'application ; il n'a pas de rendu propre tant qu'aucun toast n'est\n actif.\n </p>",
|
|
4230
|
+
"stack": true,
|
|
4231
|
+
"dark": false
|
|
4232
|
+
}
|
|
4233
|
+
]
|
|
4234
|
+
},
|
|
3818
4235
|
{
|
|
3819
4236
|
"className": "SdsToggleSwitch",
|
|
3820
4237
|
"selector": "sds-toggle-switch",
|
|
@@ -4197,6 +4614,18 @@
|
|
|
4197
4614
|
],
|
|
4198
4615
|
"jsdoc": "Coordinates a single <sds-tabs> instance: holds the active value (shared from\nthe host's two-way model), tracks registered tabs for default selection and\ngenerates the ARIA ids that link each tab to its panel.\n\nProvided at the <sds-tabs> component level so every tab set is isolated."
|
|
4199
4616
|
},
|
|
4617
|
+
{
|
|
4618
|
+
"className": "SdsToastService",
|
|
4619
|
+
"providedIn": "root",
|
|
4620
|
+
"exports": [
|
|
4621
|
+
"toasts",
|
|
4622
|
+
"success()",
|
|
4623
|
+
"error()",
|
|
4624
|
+
"info()",
|
|
4625
|
+
"dismiss()"
|
|
4626
|
+
],
|
|
4627
|
+
"jsdoc": "A tiny transient-notification bus. Application code calls {@link success} / {@link error} / {@link info}\nafter an action; a single {@link SdsToastHost} mounted in the app shell renders the queue and each toast\nauto-dismisses. Deliberately minimal — no positions, no actions-in-toast — because it exists to confirm\nan action, not to be a notification centre.\n\n`providedIn: 'root'`, so injecting it anywhere shares one queue:\n\n```ts\nprivate readonly toasts = inject(SdsToastService);\nthis.toasts.success('Enregistré.');\n```\n\nMount the host once (e.g. in the shell): `<sds-toast-host />`."
|
|
4628
|
+
},
|
|
4200
4629
|
{
|
|
4201
4630
|
"className": "SidebarStore",
|
|
4202
4631
|
"providedIn": "root",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@besaitech/ng-design-system-mcp",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.11",
|
|
4
4
|
"description": "MCP server that exposes the @besaitech/ng-design-system Angular component library documentation (API, examples, tokens, icons, setup) to AI coding tools.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|