lightning-base-components 1.13.6-alpha → 1.13.10-alpha
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/metadata/raptor.json +104 -2
- package/package.json +37 -1
- package/scopedImports/@salesforce-label-LightningAlert.defaultLabel.js +1 -0
- package/scopedImports/@salesforce-label-LightningConfirm.defaultLabel.js +1 -0
- package/scopedImports/@salesforce-label-LightningDateTimePicker.selectDateFor.js +1 -0
- package/scopedImports/@salesforce-label-LightningInteractiveDialogBase.cancel.js +1 -0
- package/scopedImports/@salesforce-label-LightningInteractiveDialogBase.ok.js +1 -0
- package/scopedImports/@salesforce-label-LightningLookup.recentItems.js +1 -0
- package/scopedImports/@salesforce-label-LightningModalBase.close.js +1 -0
- package/scopedImports/@salesforce-label-LightningModalBase.waitstate.js +1 -0
- package/scopedImports/@salesforce-label-LightningPrompt.defaultLabel.js +1 -0
- package/src/lightning/baseCombobox/baseCombobox.html +50 -24
- package/src/lightning/baseCombobox/baseCombobox.js +53 -28
- package/src/lightning/card/card.html +7 -1
- package/src/lightning/card/card.js +30 -2
- package/src/lightning/card/utils.js +14 -0
- package/src/lightning/combobox/combobox.css +12 -0
- package/src/lightning/combobox/combobox.html +1 -0
- package/src/lightning/datatable/__docs__/datatable.md +40 -13
- package/src/lightning/datatable/columnWidthManager.js +8 -4
- package/src/lightning/datatable/columns-shared.js +8 -7
- package/src/lightning/datatable/columns.js +38 -4
- package/src/lightning/datatable/datatable.js +932 -727
- package/src/lightning/datatable/datatableResizeObserver.js +1 -1
- package/src/lightning/datatable/inlineEdit.js +15 -3
- package/src/lightning/datatable/keyboard.js +1078 -935
- package/src/lightning/datatable/resizer.js +92 -109
- package/src/lightning/datatable/rows.js +245 -59
- package/src/lightning/datatable/sort.js +83 -28
- package/src/lightning/datatable/{normalizer.js → state.js} +16 -28
- package/src/lightning/datatable/templates/div/div.css +53 -0
- package/src/lightning/datatable/templates/div/div.html +272 -0
- package/src/lightning/datatable/{datatable.css → templates/table/table.css} +0 -0
- package/src/lightning/datatable/templates/table/table.html +260 -0
- package/src/lightning/datatable/widthManagerShared.js +1 -1
- package/src/lightning/datepicker/datepicker.html +3 -3
- package/src/lightning/datepicker/datepicker.js +6 -2
- package/src/lightning/datetimepicker/datetimepicker.html +3 -4
- package/src/lightning/datetimepicker/datetimepicker.js +0 -2
- package/src/lightning/formattedRichText/__docs__/formattedRichText.md +1 -0
- package/src/lightning/helptext/helptext.js +8 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/asset_audit.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/attach.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/contract_payment.html +10 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/field_sales.html +8 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/historical_adherence.html +9 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/med_rec_recommendation.html +8 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/med_rec_statement_recommendation.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/medication_dispense.html +11 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/medication_reconciliation.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/report_type.html +9 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/story.html +2 -4
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/tour.html +9 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/tour_check.html +8 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/travel_mode.html +2 -2
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/unified_health_score.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/workforce_engagement.html +8 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/templates.js +26 -1
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/asset_audit.html +9 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/collection_alt.html +8 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/contract_doc.html +8 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/contract_payment.html +10 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/einstein.html +2 -1
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/entitlement.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/field_sales.html +8 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/signature.html +9 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/tour.html +9 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/tour_check.html +8 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/truck.html +10 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/workforce_engagement.html +8 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/asset_audit.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/attach.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/contract_payment.html +10 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/field_sales.html +8 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/historical_adherence.html +9 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/med_rec_recommendation.html +8 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/med_rec_statement_recommendation.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/medication_dispense.html +11 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/medication_reconciliation.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/report_type.html +9 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/story.html +2 -4
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/tour.html +9 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/tour_check.html +8 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/travel_mode.html +2 -2
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/unified_health_score.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/workforce_engagement.html +8 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/templates.js +26 -1
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/asset_audit.html +9 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/collection_alt.html +8 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/contract_doc.html +8 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/contract_payment.html +10 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/einstein.html +2 -1
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/entitlement.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/field_sales.html +8 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/signature.html +9 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/tour.html +9 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/tour_check.html +8 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/truck.html +10 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/workforce_engagement.html +8 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/asset_audit.html +7 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/attach.html +7 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/contract_payment.html +10 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/field_sales.html +8 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/historical_adherence.html +9 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/med_rec_recommendation.html +8 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/med_rec_statement_recommendation.html +7 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/medication_dispense.html +11 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/medication_reconciliation.html +7 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/report_type.html +9 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/story.html +2 -4
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/tour.html +9 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/tour_check.html +8 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/travel_mode.html +2 -2
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/unified_health_score.html +7 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/workforce_engagement.html +8 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/templates.js +15 -1
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/asset_audit.html +7 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/attach.html +7 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/contract_payment.html +10 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/field_sales.html +8 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/historical_adherence.html +9 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/med_rec_recommendation.html +8 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/med_rec_statement_recommendation.html +7 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/medication_dispense.html +11 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/medication_reconciliation.html +7 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/report_type.html +9 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/story.html +2 -4
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/tour.html +9 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/tour_check.html +8 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/travel_mode.html +2 -2
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/unified_health_score.html +7 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/workforce_engagement.html +8 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/templates.js +15 -1
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/templates.js +12 -1
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/asset_audit.html +9 -0
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/collection_alt.html +8 -0
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/contract_doc.html +8 -0
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/contract_payment.html +10 -0
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/einstein.html +2 -1
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/entitlement.html +7 -0
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/field_sales.html +8 -0
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/signature.html +9 -0
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/tour.html +9 -0
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/tour_check.html +8 -0
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/truck.html +10 -0
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/workforce_engagement.html +8 -0
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/templates.js +12 -1
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/asset_audit.html +9 -0
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/collection_alt.html +8 -0
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/contract_doc.html +8 -0
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/contract_payment.html +10 -0
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/einstein.html +2 -1
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/entitlement.html +7 -0
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/field_sales.html +8 -0
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/signature.html +9 -0
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/tour.html +9 -0
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/tour_check.html +8 -0
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/truck.html +10 -0
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/workforce_engagement.html +8 -0
- package/src/lightning/input/__docs__/input.md +4 -0
- package/src/lightning/input/input.js +11 -6
- package/src/lightning/pill/link.html +1 -1
- package/src/lightning/pill/pill.js +18 -0
- package/src/lightning/pill/plainLink.html +2 -0
- package/src/lightning/pillContainer/barePillContainer.html +5 -5
- package/src/lightning/pillContainer/pillContainer.js +5 -4
- package/src/lightning/pillContainer/standardPillContainer.html +5 -5
- package/src/lightning/positionLibrary/__component__/positionLibraryBounding.spec.js +8 -6
- package/src/lightning/positionLibrary/__component__/x/bounding/bounding.html +1 -1
- package/src/lightning/positionLibrary/__component__/x/bounding/bounding.js +6 -9
- package/src/lightning/positionLibrary/direction.js +17 -5
- package/src/lightning/primitiveDatatableIeditPanel/primitiveDatatableIeditPanel.js +20 -0
- package/src/lightning/primitiveDatatableIeditTypeFactory/primitiveDatatableIeditTypeFactory.js +10 -0
- package/src/lightning/primitiveDatatableStatusBar/primitiveDatatableStatusBar.js +17 -3
- package/src/lightning/primitiveDatatableTooltip/primitiveDatatableTooltip.js +1 -0
- package/src/lightning/primitiveHeaderFactory/nonsortableHeader.html +5 -4
- package/src/lightning/primitiveHeaderFactory/primitiveHeaderFactory.js +255 -94
- package/src/lightning/primitiveHeaderFactory/selectableHeader.html +25 -23
- package/src/lightning/primitiveHeaderFactory/sortableHeader.html +13 -9
- package/src/lightning/progressIndicator/progressIndicator.js +30 -9
- package/src/lightning/progressRing/progressRing.html +6 -0
- package/src/lightning/progressRing/progressRing.js +98 -3
- package/src/lightning/progressStep/progressStep.js +6 -3
- package/src/lightning/timepicker/timepicker.html +1 -0
- package/src/lightning/utilsPrivate/aria.js +30 -0
- package/src/lightning/utilsPrivate/contentMutation.js +24 -2
- package/src/lightning/utilsPrivate/utilsPrivate.js +1 -1
- package/src/lightning/datatable/datatable.html +0 -237
- package/src/lightning/datatable/keys.js +0 -32
package/metadata/raptor.json
CHANGED
|
@@ -31,6 +31,27 @@
|
|
|
31
31
|
"actions": {
|
|
32
32
|
"minVersion": "50.0"
|
|
33
33
|
},
|
|
34
|
+
"alert": {
|
|
35
|
+
"minVersion": "54.0",
|
|
36
|
+
"slotNames": [],
|
|
37
|
+
"properties": [
|
|
38
|
+
{
|
|
39
|
+
"name": "label"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"name": "message"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"name": "theme"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "variant"
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
"analyticsDataServiceApi": {
|
|
53
|
+
"minVersion": "52.0"
|
|
54
|
+
},
|
|
34
55
|
"analyticsWaveApi": {
|
|
35
56
|
"minVersion": "52.0"
|
|
36
57
|
},
|
|
@@ -343,6 +364,9 @@
|
|
|
343
364
|
"title"
|
|
344
365
|
],
|
|
345
366
|
"properties": [
|
|
367
|
+
{
|
|
368
|
+
"name": "headingLevel"
|
|
369
|
+
},
|
|
346
370
|
{
|
|
347
371
|
"name": "iconName"
|
|
348
372
|
},
|
|
@@ -538,11 +562,30 @@
|
|
|
538
562
|
]
|
|
539
563
|
},
|
|
540
564
|
"commerceApi": {},
|
|
565
|
+
"communityMicrobatchingApi": {},
|
|
541
566
|
"communityNavigationMenuApi": {},
|
|
542
567
|
"communityRecordSeoPropertiesApi": {},
|
|
543
568
|
"configProvider": {
|
|
544
569
|
"minVersion": "0.0"
|
|
545
570
|
},
|
|
571
|
+
"confirm": {
|
|
572
|
+
"minVersion": "54.0",
|
|
573
|
+
"slotNames": [],
|
|
574
|
+
"properties": [
|
|
575
|
+
{
|
|
576
|
+
"name": "label"
|
|
577
|
+
},
|
|
578
|
+
{
|
|
579
|
+
"name": "message"
|
|
580
|
+
},
|
|
581
|
+
{
|
|
582
|
+
"name": "theme"
|
|
583
|
+
},
|
|
584
|
+
{
|
|
585
|
+
"name": "variant"
|
|
586
|
+
}
|
|
587
|
+
]
|
|
588
|
+
},
|
|
546
589
|
"context": {
|
|
547
590
|
"slotNames": [
|
|
548
591
|
""
|
|
@@ -600,6 +643,9 @@
|
|
|
600
643
|
{
|
|
601
644
|
"name": "renderConfig"
|
|
602
645
|
},
|
|
646
|
+
{
|
|
647
|
+
"name": "renderMode"
|
|
648
|
+
},
|
|
603
649
|
{
|
|
604
650
|
"name": "resizeColumnDisabled"
|
|
605
651
|
},
|
|
@@ -777,7 +823,9 @@
|
|
|
777
823
|
"empApi": {
|
|
778
824
|
"minVersion": "44.0"
|
|
779
825
|
},
|
|
780
|
-
"experienceMarketingIntegrationApi": {
|
|
826
|
+
"experienceMarketingIntegrationApi": {
|
|
827
|
+
"minVersion": "54.0"
|
|
828
|
+
},
|
|
781
829
|
"fieldDependencyManager": {},
|
|
782
830
|
"fieldUtils": {},
|
|
783
831
|
"fileUpload": {
|
|
@@ -1236,6 +1284,11 @@
|
|
|
1236
1284
|
{
|
|
1237
1285
|
"name": "iconVariant"
|
|
1238
1286
|
}
|
|
1287
|
+
],
|
|
1288
|
+
"methods": [
|
|
1289
|
+
{
|
|
1290
|
+
"name": "focus"
|
|
1291
|
+
}
|
|
1239
1292
|
]
|
|
1240
1293
|
},
|
|
1241
1294
|
"icon": {
|
|
@@ -1296,8 +1349,18 @@
|
|
|
1296
1349
|
"slotNames": []
|
|
1297
1350
|
},
|
|
1298
1351
|
"iconUtils": {},
|
|
1352
|
+
"industriesCibApi": {},
|
|
1299
1353
|
"industriesDecisionMatrixDesignerApi": {},
|
|
1354
|
+
"industriesExplainabilityApi": {},
|
|
1355
|
+
"industriesIdentityVerificationApi": {},
|
|
1356
|
+
"industriesInterestTaggingApi": {},
|
|
1357
|
+
"industriesLoyaltyEngineApi": {},
|
|
1358
|
+
"industriesRcgTenantmanagementApi": {},
|
|
1300
1359
|
"industriesRuleBuilderApi": {},
|
|
1360
|
+
"industriesSustainabilityRecalculateApi": {},
|
|
1361
|
+
"industriesSustainabilityRecordLockUnlockApi": {},
|
|
1362
|
+
"industriesSustainabilityReferenceDataApi": {},
|
|
1363
|
+
"industriesVideoVisitsApi": {},
|
|
1301
1364
|
"input": {
|
|
1302
1365
|
"minVersion": "0.0",
|
|
1303
1366
|
"slotNames": [],
|
|
@@ -2277,6 +2340,12 @@
|
|
|
2277
2340
|
"modal": {
|
|
2278
2341
|
"slotNames": [],
|
|
2279
2342
|
"properties": [
|
|
2343
|
+
{
|
|
2344
|
+
"name": "description"
|
|
2345
|
+
},
|
|
2346
|
+
{
|
|
2347
|
+
"name": "disableClose"
|
|
2348
|
+
},
|
|
2280
2349
|
{
|
|
2281
2350
|
"name": "label"
|
|
2282
2351
|
},
|
|
@@ -2586,6 +2655,27 @@
|
|
|
2586
2655
|
}
|
|
2587
2656
|
]
|
|
2588
2657
|
},
|
|
2658
|
+
"prompt": {
|
|
2659
|
+
"minVersion": "54.0",
|
|
2660
|
+
"slotNames": [],
|
|
2661
|
+
"properties": [
|
|
2662
|
+
{
|
|
2663
|
+
"name": "defaultValue"
|
|
2664
|
+
},
|
|
2665
|
+
{
|
|
2666
|
+
"name": "label"
|
|
2667
|
+
},
|
|
2668
|
+
{
|
|
2669
|
+
"name": "message"
|
|
2670
|
+
},
|
|
2671
|
+
{
|
|
2672
|
+
"name": "theme"
|
|
2673
|
+
},
|
|
2674
|
+
{
|
|
2675
|
+
"name": "variant"
|
|
2676
|
+
}
|
|
2677
|
+
]
|
|
2678
|
+
},
|
|
2589
2679
|
"purifyLib": {},
|
|
2590
2680
|
"quickActionPanel": {
|
|
2591
2681
|
"minVersion": "52.0",
|
|
@@ -3319,8 +3409,20 @@
|
|
|
3319
3409
|
"minVersion": "45.0"
|
|
3320
3410
|
},
|
|
3321
3411
|
"uiRecordAvatarApi": {},
|
|
3322
|
-
"uiRelatedListApi": {
|
|
3412
|
+
"uiRelatedListApi": {
|
|
3413
|
+
"minVersion": "53.0"
|
|
3414
|
+
},
|
|
3415
|
+
"unstable_uiActionsApi": {},
|
|
3416
|
+
"unstable_uiAppsApi": {},
|
|
3417
|
+
"unstable_uiDuplicatesApi": {},
|
|
3418
|
+
"unstable_uiLayoutApi": {},
|
|
3419
|
+
"unstable_uiListApi": {},
|
|
3420
|
+
"unstable_uiListsApi": {},
|
|
3421
|
+
"unstable_uiLookupsApi": {},
|
|
3422
|
+
"unstable_uiObjectInfoApi": {},
|
|
3423
|
+
"unstable_uiRecordActionsApi": {},
|
|
3323
3424
|
"unstable_uiRecordApi": {},
|
|
3425
|
+
"unstable_uiRecordAvatarApi": {},
|
|
3324
3426
|
"unstable_uiRelatedListApi": {},
|
|
3325
3427
|
"userConsentCookie": {
|
|
3326
3428
|
"minVersion": "53.0"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lightning-base-components",
|
|
3
|
-
"version": "1.13.
|
|
3
|
+
"version": "1.13.10-alpha",
|
|
4
4
|
"engines": {
|
|
5
5
|
"node": ">=12.18.3"
|
|
6
6
|
},
|
|
@@ -641,6 +641,10 @@
|
|
|
641
641
|
"name": "@salesforce/label/LightningDateTimePicker.selectDate",
|
|
642
642
|
"path": "scopedImports/@salesforce-label-LightningDateTimePicker.selectDate.js"
|
|
643
643
|
},
|
|
644
|
+
{
|
|
645
|
+
"name": "@salesforce/label/LightningDateTimePicker.selectDateFor",
|
|
646
|
+
"path": "scopedImports/@salesforce-label-LightningDateTimePicker.selectDateFor.js"
|
|
647
|
+
},
|
|
644
648
|
{
|
|
645
649
|
"name": "@salesforce/label/LightningDateTimePicker.dateLabel",
|
|
646
650
|
"path": "scopedImports/@salesforce-label-LightningDateTimePicker.dateLabel.js"
|
|
@@ -789,6 +793,10 @@
|
|
|
789
793
|
"name": "@salesforce/label/LightningLookup.recentObject",
|
|
790
794
|
"path": "scopedImports/@salesforce-label-LightningLookup.recentObject.js"
|
|
791
795
|
},
|
|
796
|
+
{
|
|
797
|
+
"name": "@salesforce/label/LightningLookup.recentItems",
|
|
798
|
+
"path": "scopedImports/@salesforce-label-LightningLookup.recentItems.js"
|
|
799
|
+
},
|
|
792
800
|
{
|
|
793
801
|
"name": "@salesforce/label/LightningLookup.resultsListHeaderMobile",
|
|
794
802
|
"path": "scopedImports/@salesforce-label-LightningLookup.resultsListHeaderMobile.js"
|
|
@@ -933,6 +941,34 @@
|
|
|
933
941
|
"name": "@salesforce/label/LightningRating.nStars",
|
|
934
942
|
"path": "scopedImports/@salesforce-label-LightningRating.nStars.js"
|
|
935
943
|
},
|
|
944
|
+
{
|
|
945
|
+
"name": "@salesforce/label/LightningModalBase.close",
|
|
946
|
+
"path": "scopedImports/@salesforce-label-LightningModalBase.close.js"
|
|
947
|
+
},
|
|
948
|
+
{
|
|
949
|
+
"name": "@salesforce/label/LightningModalBase.waitstate",
|
|
950
|
+
"path": "scopedImports/@salesforce-label-LightningModalBase.waitstate.js"
|
|
951
|
+
},
|
|
952
|
+
{
|
|
953
|
+
"name": "@salesforce/label/LightningInteractiveDialogBase.ok",
|
|
954
|
+
"path": "scopedImports/@salesforce-label-LightningInteractiveDialogBase.ok.js"
|
|
955
|
+
},
|
|
956
|
+
{
|
|
957
|
+
"name": "@salesforce/label/LightningInteractiveDialogBase.cancel",
|
|
958
|
+
"path": "scopedImports/@salesforce-label-LightningInteractiveDialogBase.cancel.js"
|
|
959
|
+
},
|
|
960
|
+
{
|
|
961
|
+
"name": "@salesforce/label/LightningAlert.defaultLabel",
|
|
962
|
+
"path": "scopedImports/@salesforce-label-LightningAlert.defaultLabel.js"
|
|
963
|
+
},
|
|
964
|
+
{
|
|
965
|
+
"name": "@salesforce/label/LightningConfirm.defaultLabel",
|
|
966
|
+
"path": "scopedImports/@salesforce-label-LightningConfirm.defaultLabel.js"
|
|
967
|
+
},
|
|
968
|
+
{
|
|
969
|
+
"name": "@salesforce/label/LightningPrompt.defaultLabel",
|
|
970
|
+
"path": "scopedImports/@salesforce-label-LightningPrompt.defaultLabel.js"
|
|
971
|
+
},
|
|
936
972
|
{
|
|
937
973
|
"name": "@salesforce/i18n/lang",
|
|
938
974
|
"path": "scopedImports/@salesforce-i18n-lang.js"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default 'Alert';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default 'Confirm';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default 'Select a date for {0}';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default 'Cancel';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default 'OK';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default 'Recent Items';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default 'Close';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default 'Processing';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default 'Prompt';
|
|
@@ -10,30 +10,56 @@
|
|
|
10
10
|
specifically it may be problematic for cases when a selection has already been made say via pills and then the validation hint
|
|
11
11
|
is no longer correct/relevant
|
|
12
12
|
-->
|
|
13
|
-
<
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
13
|
+
<template if:false={isUserInputDisabled}>
|
|
14
|
+
<input id="combobox-input"
|
|
15
|
+
class={computedInputClass}
|
|
16
|
+
type="text"
|
|
17
|
+
role="combobox"
|
|
18
|
+
aria-expanded={computedAriaExpanded}
|
|
19
|
+
aria-haspopup="listbox"
|
|
20
|
+
required={required}
|
|
21
|
+
readonly={_inputAriaReadOnly}
|
|
22
|
+
autocomplete={autocomplete}
|
|
23
|
+
value={computedInputValue}
|
|
24
|
+
data-value={computedInputValue}
|
|
25
|
+
name={name}
|
|
26
|
+
placeholder={computedPlaceholder}
|
|
27
|
+
maxlength={inputMaxlength}
|
|
28
|
+
disabled={disabled}
|
|
29
|
+
aria-readonly={_inputAriaReadOnly}
|
|
30
|
+
aria-autocomplete={computedAriaAutocomplete}
|
|
31
|
+
aria-owns="dropdown-element"
|
|
32
|
+
aria-label={inputLabel}
|
|
33
|
+
onfocus={handleFocus}
|
|
34
|
+
onselect={handleInputSelect}
|
|
35
|
+
onchange={handleTextChange}
|
|
36
|
+
oninput={handleInput}
|
|
37
|
+
onkeydown={handleInputKeyDown}
|
|
38
|
+
onblur={handleBlur}>
|
|
39
|
+
</template>
|
|
40
|
+
<template if:true={isUserInputDisabled}>
|
|
41
|
+
<button id="combobox-button"
|
|
42
|
+
type="button"
|
|
43
|
+
class={computedInputClass}
|
|
44
|
+
aria-expanded={computedAriaExpanded}
|
|
45
|
+
aria-haspopup="listbox"
|
|
46
|
+
name={name}
|
|
47
|
+
data-value={computedInputValue}
|
|
48
|
+
disabled={disabled}
|
|
49
|
+
aria-label={computedButtonTriggerAriaLabel}
|
|
50
|
+
onfocus={handleFocus}
|
|
51
|
+
onkeydown={handleInputKeyDown}
|
|
52
|
+
onblur={handleBlur}>
|
|
53
|
+
<span class="slds-truncate">
|
|
54
|
+
<template if:true={computedInputValue}>
|
|
55
|
+
{computedInputValue}
|
|
56
|
+
</template>
|
|
57
|
+
<template if:false={computedInputValue}>
|
|
58
|
+
{computedPlaceholder}
|
|
59
|
+
</template>
|
|
60
|
+
</span>
|
|
61
|
+
</button>
|
|
62
|
+
</template>
|
|
37
63
|
<template if:true={hasInputPill}>
|
|
38
64
|
<div class="slds-input__icon-group slds-input__icon-group_right">
|
|
39
65
|
<button onclick={handlePillRemove} type="button"
|
|
@@ -162,7 +162,7 @@ export default class LightningBaseCombobox extends LightningElement {
|
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
get inputId() {
|
|
165
|
-
return getRealDOMId(this.
|
|
165
|
+
return getRealDOMId(this.inputElement);
|
|
166
166
|
}
|
|
167
167
|
|
|
168
168
|
get computedAriaDescribedBy() {
|
|
@@ -319,7 +319,7 @@ export default class LightningBaseCombobox extends LightningElement {
|
|
|
319
319
|
}
|
|
320
320
|
|
|
321
321
|
synchronizeA11y() {
|
|
322
|
-
const input = this.
|
|
322
|
+
const input = this.inputElement;
|
|
323
323
|
if (!input) {
|
|
324
324
|
return;
|
|
325
325
|
}
|
|
@@ -328,7 +328,9 @@ export default class LightningBaseCombobox extends LightningElement {
|
|
|
328
328
|
[ARIA_DESCRIBEDBY]: this.computedAriaDescribedBy,
|
|
329
329
|
[ARIA_ACTIVEDESCENDANT]: this._activeElementDomId,
|
|
330
330
|
[ARIA_CONTROLS]: this.computedInputControls,
|
|
331
|
-
[ARIA_LABEL]: this.
|
|
331
|
+
[ARIA_LABEL]: this.isUserInputDisabled
|
|
332
|
+
? this.computedButtonTriggerAriaLabel
|
|
333
|
+
: this.inputLabel,
|
|
332
334
|
});
|
|
333
335
|
}
|
|
334
336
|
|
|
@@ -387,24 +389,40 @@ export default class LightningBaseCombobox extends LightningElement {
|
|
|
387
389
|
return itemCopy;
|
|
388
390
|
}
|
|
389
391
|
|
|
390
|
-
get
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
392
|
+
get isAutocompleteEnabled() {
|
|
393
|
+
return this.autocomplete && this.autocomplete !== 'off';
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
get isStandardVariant() {
|
|
397
|
+
return this.variant === VARIANT.STANDARD;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
get isDefaultReadOnlyTypes() {
|
|
401
|
+
return this.isStandardVariant || this.hasInputPill;
|
|
402
|
+
}
|
|
395
403
|
|
|
404
|
+
/**
|
|
405
|
+
* Returns true for comboboxes that never allow user input
|
|
406
|
+
* Used to determine if input or button should be rendered
|
|
407
|
+
*/
|
|
408
|
+
get isUserInputDisabled() {
|
|
409
|
+
return this.isStandardVariant && !this.isAutocompleteEnabled;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
get _inputAriaReadOnly() {
|
|
396
413
|
// For standard combobox, if the dropdown is open, we must make the input readonly,
|
|
397
414
|
// so the user can type and search in the dropdown list
|
|
398
415
|
// For grouped combobox, the input must remain editable because the search is done through
|
|
399
416
|
// the input.
|
|
400
|
-
if (this._dropdownVisible && isStandardVariant) {
|
|
417
|
+
if (this._dropdownVisible && this.isStandardVariant) {
|
|
401
418
|
return true;
|
|
402
419
|
}
|
|
403
420
|
|
|
404
421
|
return (
|
|
405
422
|
// we want Autocomplete to override the "default assumptions"
|
|
406
423
|
// UNLESS the parent component deliberately determines it is readOnly
|
|
407
|
-
this._readonly ||
|
|
424
|
+
this._readonly ||
|
|
425
|
+
(!this.isAutocompleteEnabled && this.isDefaultReadOnlyTypes)
|
|
408
426
|
);
|
|
409
427
|
}
|
|
410
428
|
|
|
@@ -425,6 +443,17 @@ export default class LightningBaseCombobox extends LightningElement {
|
|
|
425
443
|
return this.hasInputPill ? this.inputPill.label : this.inputText;
|
|
426
444
|
}
|
|
427
445
|
|
|
446
|
+
get computedButtonTriggerAriaLabel() {
|
|
447
|
+
const label = this.inputLabel;
|
|
448
|
+
const value = this.computedInputValue || this.computedPlaceholder;
|
|
449
|
+
|
|
450
|
+
if (!label) {
|
|
451
|
+
return value;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
return `${label}, ${value}`;
|
|
455
|
+
}
|
|
456
|
+
|
|
428
457
|
handleListboxScroll(event) {
|
|
429
458
|
// We don't want this to bubble up to the modal which due to event retargeting wouldn't be able
|
|
430
459
|
// to know what is actually being scrolled and thus may lead to the scrolling of the modal
|
|
@@ -518,15 +547,15 @@ export default class LightningBaseCombobox extends LightningElement {
|
|
|
518
547
|
}
|
|
519
548
|
|
|
520
549
|
get computedInputClass() {
|
|
521
|
-
const classes = classSet('slds-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
}
|
|
550
|
+
const classes = classSet('slds-combobox__input');
|
|
551
|
+
classes.add({
|
|
552
|
+
'slds-input_faux': this.isUserInputDisabled, //rendering button
|
|
553
|
+
'slds-input': !this.isUserInputDisabled, //rendering input
|
|
554
|
+
'slds-is-disabled': this.disabled,
|
|
555
|
+
'slds-combobox__input-value': this.computedInputValue,
|
|
556
|
+
'slds-input-has-icon_group-right':
|
|
557
|
+
!this.computedInputValue && this.showInputActivityIndicator,
|
|
558
|
+
});
|
|
530
559
|
return classes.toString();
|
|
531
560
|
}
|
|
532
561
|
|
|
@@ -548,7 +577,6 @@ export default class LightningBaseCombobox extends LightningElement {
|
|
|
548
577
|
if (event.target.hasAttribute('aria-selected')) {
|
|
549
578
|
event.stopPropagation();
|
|
550
579
|
event.preventDefault();
|
|
551
|
-
|
|
552
580
|
this.selectOptionAndCloseDropdown(event.target);
|
|
553
581
|
}
|
|
554
582
|
}
|
|
@@ -807,7 +835,7 @@ export default class LightningBaseCombobox extends LightningElement {
|
|
|
807
835
|
}
|
|
808
836
|
|
|
809
837
|
get inputElement() {
|
|
810
|
-
return this.template.querySelector('
|
|
838
|
+
return this.template.querySelector('.slds-combobox__input');
|
|
811
839
|
}
|
|
812
840
|
|
|
813
841
|
// remove-next-line-for-c-namespace
|
|
@@ -821,7 +849,7 @@ export default class LightningBaseCombobox extends LightningElement {
|
|
|
821
849
|
}
|
|
822
850
|
|
|
823
851
|
this._autoPosition.start({
|
|
824
|
-
target: () => this.
|
|
852
|
+
target: () => this.inputElement,
|
|
825
853
|
element: () => this.template.querySelector('div.slds-dropdown'),
|
|
826
854
|
align: {
|
|
827
855
|
horizontal: Direction.Left,
|
|
@@ -932,12 +960,9 @@ export default class LightningBaseCombobox extends LightningElement {
|
|
|
932
960
|
return that._inputAriaReadOnly;
|
|
933
961
|
},
|
|
934
962
|
shouldPreventInputDeletion() {
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
isDefaultReadOnlyTypes =
|
|
939
|
-
isStandardVariant || that.hasInputPill;
|
|
940
|
-
return isAutocompleteEnabled && isDefaultReadOnlyTypes;
|
|
963
|
+
return (
|
|
964
|
+
that.isAutocompleteEnabled && that.isDefaultReadOnlyTypes
|
|
965
|
+
);
|
|
941
966
|
},
|
|
942
967
|
highlightOptionWithText(currentIndex, text) {
|
|
943
968
|
// This only supports a flat structure, groups are not supported
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
</template>
|
|
10
10
|
<div class="slds-media__body">
|
|
11
11
|
<template if:true={hasTitle}>
|
|
12
|
-
<h2 class="slds-card__header-title">
|
|
12
|
+
<h2 aria-level={privateHeadingAriaLevel} class="slds-card__header-title">
|
|
13
13
|
<span class="slds-text-heading_small slds-truncate">
|
|
14
14
|
<template if:true={hasStringTitle}>
|
|
15
15
|
{title}
|
|
@@ -20,6 +20,12 @@
|
|
|
20
20
|
</span>
|
|
21
21
|
</h2>
|
|
22
22
|
</template>
|
|
23
|
+
<!-- This dummy placeholder slot is required because
|
|
24
|
+
a slot's presence is verified by assignedElements count
|
|
25
|
+
and not whether the slot itself is present or not -->
|
|
26
|
+
<template if:false={hasTitle}>
|
|
27
|
+
<slot name="title" class="slds-hide"></slot>
|
|
28
|
+
</template>
|
|
23
29
|
</div>
|
|
24
30
|
<div class="slds-no-flex">
|
|
25
31
|
<slot name="actions"></slot>
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { LightningElement, api, track } from 'lwc';
|
|
2
2
|
import { classSet } from 'lightning/utils';
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
isNarrow,
|
|
5
|
+
isBase,
|
|
6
|
+
isHeadingLevelValid,
|
|
7
|
+
DEFAULT_HEADING_LEVEL,
|
|
8
|
+
} from './utils';
|
|
4
9
|
|
|
5
10
|
/**
|
|
6
11
|
* Cards apply a container around a related grouping of information.
|
|
@@ -68,13 +73,36 @@ export default class LightningCard extends LightningElement {
|
|
|
68
73
|
this.showFooter = this.footerSlot.assignedElements().length !== 0;
|
|
69
74
|
}
|
|
70
75
|
|
|
71
|
-
//
|
|
76
|
+
// real title slot will be null if a string title is present
|
|
72
77
|
if (this.titleSlot) {
|
|
73
78
|
const hasSlotTitle = this.titleSlot.assignedElements().length !== 0;
|
|
74
79
|
this.hasTitle = hasSlotTitle || this.hasStringTitle;
|
|
75
80
|
}
|
|
76
81
|
}
|
|
77
82
|
|
|
83
|
+
privateHeadingAriaLevel = DEFAULT_HEADING_LEVEL;
|
|
84
|
+
|
|
85
|
+
set headingLevel(value) {
|
|
86
|
+
if (isHeadingLevelValid(value)) {
|
|
87
|
+
this.privateHeadingAriaLevel = value;
|
|
88
|
+
} else {
|
|
89
|
+
this.privateHeadingAriaLevel = DEFAULT_HEADING_LEVEL;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* The headingLevel changes the 'aria-level' attribute value of
|
|
95
|
+
* <h2> tag in the markup for the card's title element. It can take
|
|
96
|
+
* values of (1, 2, 3, 4, 5, 6)
|
|
97
|
+
*
|
|
98
|
+
* @type {string | number}
|
|
99
|
+
* @default 2
|
|
100
|
+
*/
|
|
101
|
+
@api
|
|
102
|
+
get headingLevel() {
|
|
103
|
+
return this.privateHeadingAriaLevel;
|
|
104
|
+
}
|
|
105
|
+
|
|
78
106
|
get titleSlot() {
|
|
79
107
|
return this.template.querySelector('slot[name=title]');
|
|
80
108
|
}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* These are all values that can be set to "aria-level" attribute of h2 tag for the card's title.
|
|
3
|
+
*/
|
|
4
|
+
export const VALID_HEADING_LEVELS = ['1', '2', '3', '4', '5', '6'];
|
|
5
|
+
|
|
6
|
+
export const DEFAULT_HEADING_LEVEL = '2';
|
|
7
|
+
|
|
1
8
|
export function isNarrow(variant) {
|
|
2
9
|
return typeof variant === 'string' && variant.toLowerCase() === 'narrow';
|
|
3
10
|
}
|
|
@@ -5,3 +12,10 @@ export function isNarrow(variant) {
|
|
|
5
12
|
export function isBase(variant) {
|
|
6
13
|
return typeof variant === 'string' && variant.toLowerCase() === 'base';
|
|
7
14
|
}
|
|
15
|
+
|
|
16
|
+
export function isHeadingLevelValid(level) {
|
|
17
|
+
return (
|
|
18
|
+
(typeof level === 'string' || typeof level === 'number') &&
|
|
19
|
+
VALID_HEADING_LEVELS.includes(String(level))
|
|
20
|
+
);
|
|
21
|
+
}
|
|
@@ -1,3 +1,15 @@
|
|
|
1
1
|
:host {
|
|
2
2
|
display: block;
|
|
3
3
|
}
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
This is adding the red border around the combobox input when there's an error
|
|
7
|
+
Should be removed once SLDS has added support for this (@W-9240038)
|
|
8
|
+
*/
|
|
9
|
+
:host.slds-has-error {
|
|
10
|
+
--slds-c-input-color-border:#ea001e;
|
|
11
|
+
--slds-c-input-shadow:#ea001e 0 0 0 1px inset;
|
|
12
|
+
--slds-c-input-color-background:var(--slds-c-input-color-background, var(--sds-c-input-color-background, white));
|
|
13
|
+
--slds-c-input-text-color:var(--slds-c-input-text-color, var(--sds-c-input-text-color), #74747);
|
|
14
|
+
}
|
|
15
|
+
|