@pure-ds/core 0.7.57 → 0.7.59
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/.cursorrules +63 -589
- package/.github/copilot-instructions.md +63 -598
- package/custom-elements.json +110 -5
- package/dist/types/pds.d.ts +65 -0
- package/dist/types/src/js/common/common.d.ts +7 -0
- package/dist/types/src/js/common/common.d.ts.map +1 -1
- package/dist/types/src/js/pds-autocomplete.d.ts +74 -1
- package/dist/types/src/js/pds-autocomplete.d.ts.map +1 -1
- package/dist/types/src/js/pds-core/pds-start-helpers.d.ts.map +1 -1
- package/dist/types/src/js/pds-reactive.d.ts +101 -0
- package/dist/types/src/js/pds-reactive.d.ts.map +1 -0
- package/dist/types/src/js/pds.d.ts +4 -1
- package/dist/types/src/js/pds.d.ts.map +1 -1
- package/package.json +1 -2
- package/packages/pds-cli/lib/pds-mcp-core.js +436 -1
- package/public/assets/js/app.js +7 -6
- package/public/assets/js/pds-ask.js +4 -4
- package/public/assets/js/pds-autocomplete.js +7 -7
- package/public/assets/js/pds-manager.js +144 -143
- package/public/assets/js/pds.js +3 -2
- package/public/assets/pds/core/pds-ask.js +4 -4
- package/public/assets/pds/core/pds-autocomplete.js +7 -7
- package/public/assets/pds/core/pds-manager.js +144 -143
- package/public/assets/pds/core.js +3 -2
- package/public/assets/pds/custom-elements.json +382 -28
- package/public/assets/pds/pds-css-complete.json +1 -1
- package/public/assets/pds/vscode-custom-data.json +29 -1
- package/src/js/common/common.js +74 -0
- package/src/js/pds-core/pds-start-helpers.js +17 -2
- package/src/js/pds.d.ts +65 -0
- package/src/js/pds.js +13 -0
|
@@ -224,6 +224,18 @@
|
|
|
224
224
|
"text": "CustomEvent"
|
|
225
225
|
}
|
|
226
226
|
},
|
|
227
|
+
{
|
|
228
|
+
"name": "day-click",
|
|
229
|
+
"type": {
|
|
230
|
+
"text": "CustomEvent"
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"name": "task-click",
|
|
235
|
+
"type": {
|
|
236
|
+
"text": "CustomEvent"
|
|
237
|
+
}
|
|
238
|
+
},
|
|
227
239
|
{
|
|
228
240
|
"name": "month-rendered",
|
|
229
241
|
"type": {
|
|
@@ -237,6 +249,14 @@
|
|
|
237
249
|
{
|
|
238
250
|
"description": "Dispatched when the visible month/year changes",
|
|
239
251
|
"name": "pds-calendar#month-change"
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
"description": "Dispatched when a day cell is selected from the calendar grid",
|
|
255
|
+
"name": "pds-calendar#day-click"
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
"description": "Dispatched when a task item is clicked",
|
|
259
|
+
"name": "pds-calendar#task-click"
|
|
240
260
|
}
|
|
241
261
|
],
|
|
242
262
|
"attributes": [
|
|
@@ -1145,6 +1165,10 @@
|
|
|
1145
1165
|
{
|
|
1146
1166
|
"description": "Animation duration (default: 420ms)",
|
|
1147
1167
|
"name": "--transition-duration"
|
|
1168
|
+
},
|
|
1169
|
+
{
|
|
1170
|
+
"description": "FAB z-index when used inside pds-drawer (default: var(--z-popover))",
|
|
1171
|
+
"name": "--z-fab-in-drawer"
|
|
1148
1172
|
}
|
|
1149
1173
|
],
|
|
1150
1174
|
"cssParts": [
|
|
@@ -1204,19 +1228,48 @@
|
|
|
1204
1228
|
{
|
|
1205
1229
|
"kind": "field",
|
|
1206
1230
|
"name": "startAngle",
|
|
1207
|
-
"description": "Starting angle in degrees (0=right, 90=down, 180=left, 270=up)\r\nIf not specified, the angle is auto-detected based on the FAB's corner position:\r\n- Bottom-right: 180
|
|
1231
|
+
"description": "Starting angle in degrees (0=right, 90=down, 180=left, 270=up)\r\nIf not specified, the angle is auto-detected based on the FAB's corner position:\r\n- Bottom-right: 180-� (fly left/up)\r\n- Bottom-left: 315-� (fly right/up)\r\n- Top-right: 225-� (fly left/down)\r\n- Top-left: 45-� (fly right/down)",
|
|
1208
1232
|
"type": {
|
|
1209
1233
|
"text": "number"
|
|
1210
1234
|
},
|
|
1211
1235
|
"default": "180 (or auto-detected)",
|
|
1212
1236
|
"attribute": "start-angle"
|
|
1213
1237
|
},
|
|
1238
|
+
{
|
|
1239
|
+
"kind": "field",
|
|
1240
|
+
"name": "behavior",
|
|
1241
|
+
"description": "Interaction mode for satellite menu.\r\n- click: toggles satellites when main FAB is clicked\r\n- hover: opens on hover/focus and closes when pointer leaves safe area",
|
|
1242
|
+
"type": {
|
|
1243
|
+
"text": "'click'|'hover'"
|
|
1244
|
+
},
|
|
1245
|
+
"default": "click",
|
|
1246
|
+
"attribute": "behavior"
|
|
1247
|
+
},
|
|
1248
|
+
{
|
|
1249
|
+
"kind": "field",
|
|
1250
|
+
"name": "mode",
|
|
1251
|
+
"description": "Layout mode for host positioning.\r\n- fixed: FAB is anchored to viewport bottom-right\r\n- inline: FAB participates in normal document flow",
|
|
1252
|
+
"type": {
|
|
1253
|
+
"text": "'fixed'|'inline'"
|
|
1254
|
+
},
|
|
1255
|
+
"default": "fixed",
|
|
1256
|
+
"attribute": "mode"
|
|
1257
|
+
},
|
|
1258
|
+
{
|
|
1259
|
+
"kind": "field",
|
|
1260
|
+
"name": "fabClass",
|
|
1261
|
+
"description": "Space-separated class list forwarded to the internal button.\r\nUse this instead of host classes for btn-* and icon-only.",
|
|
1262
|
+
"type": {
|
|
1263
|
+
"text": "string"
|
|
1264
|
+
},
|
|
1265
|
+
"attribute": "fab-class"
|
|
1266
|
+
},
|
|
1214
1267
|
{
|
|
1215
1268
|
"kind": "field",
|
|
1216
1269
|
"name": "satellites",
|
|
1217
1270
|
"description": "Array of satellite button configurations",
|
|
1218
1271
|
"type": {
|
|
1219
|
-
"text": "Array<{key: string, icon?: string, label?: string, action?: string}>"
|
|
1272
|
+
"text": "Array<{key: string, icon?: string, iconColor?: string, bgColor?: string, iconSize?: string, label?: string, action?: string}>"
|
|
1220
1273
|
}
|
|
1221
1274
|
}
|
|
1222
1275
|
],
|
|
@@ -1258,12 +1311,38 @@
|
|
|
1258
1311
|
},
|
|
1259
1312
|
{
|
|
1260
1313
|
"name": "start-angle",
|
|
1261
|
-
"description": "Starting angle in degrees (0=right, 90=down, 180=left, 270=up)\r\nIf not specified, the angle is auto-detected based on the FAB's corner position:\r\n- Bottom-right: 180
|
|
1314
|
+
"description": "Starting angle in degrees (0=right, 90=down, 180=left, 270=up)\r\nIf not specified, the angle is auto-detected based on the FAB's corner position:\r\n- Bottom-right: 180-� (fly left/up)\r\n- Bottom-left: 315-� (fly right/up)\r\n- Top-right: 225-� (fly left/down)\r\n- Top-left: 45-� (fly right/down)",
|
|
1262
1315
|
"type": {
|
|
1263
1316
|
"text": "number"
|
|
1264
1317
|
},
|
|
1265
1318
|
"default": "180 (or auto-detected)",
|
|
1266
1319
|
"fieldName": "startAngle"
|
|
1320
|
+
},
|
|
1321
|
+
{
|
|
1322
|
+
"name": "behavior",
|
|
1323
|
+
"description": "Interaction mode for opening satellites (default: click)",
|
|
1324
|
+
"type": {
|
|
1325
|
+
"text": "\"click\"|\"hover\""
|
|
1326
|
+
},
|
|
1327
|
+
"default": "click",
|
|
1328
|
+
"fieldName": "behavior"
|
|
1329
|
+
},
|
|
1330
|
+
{
|
|
1331
|
+
"name": "mode",
|
|
1332
|
+
"description": "Layout mode for FAB positioning (default: fixed)",
|
|
1333
|
+
"type": {
|
|
1334
|
+
"text": "\"fixed\"|\"inline\""
|
|
1335
|
+
},
|
|
1336
|
+
"default": "fixed",
|
|
1337
|
+
"fieldName": "mode"
|
|
1338
|
+
},
|
|
1339
|
+
{
|
|
1340
|
+
"name": "fab-class",
|
|
1341
|
+
"description": "Space-separated class list forwarded to the internal button.\r\nUse this instead of host classes for btn-* and icon-only.",
|
|
1342
|
+
"type": {
|
|
1343
|
+
"text": "string"
|
|
1344
|
+
},
|
|
1345
|
+
"fieldName": "fabClass"
|
|
1267
1346
|
}
|
|
1268
1347
|
],
|
|
1269
1348
|
"superclass": {
|
|
@@ -1405,7 +1484,6 @@
|
|
|
1405
1484
|
"type": {
|
|
1406
1485
|
"text": "string"
|
|
1407
1486
|
},
|
|
1408
|
-
"default": "\"Submit\"",
|
|
1409
1487
|
"attribute": "submit-label"
|
|
1410
1488
|
},
|
|
1411
1489
|
{
|
|
@@ -1415,7 +1493,6 @@
|
|
|
1415
1493
|
"type": {
|
|
1416
1494
|
"text": "string"
|
|
1417
1495
|
},
|
|
1418
|
-
"default": "\"Reset\"",
|
|
1419
1496
|
"attribute": "reset-label"
|
|
1420
1497
|
},
|
|
1421
1498
|
{
|
|
@@ -1543,7 +1620,6 @@
|
|
|
1543
1620
|
"type": {
|
|
1544
1621
|
"text": "string"
|
|
1545
1622
|
},
|
|
1546
|
-
"default": "\"Submit\"",
|
|
1547
1623
|
"fieldName": "submitLabel"
|
|
1548
1624
|
},
|
|
1549
1625
|
{
|
|
@@ -1551,7 +1627,6 @@
|
|
|
1551
1627
|
"type": {
|
|
1552
1628
|
"text": "string"
|
|
1553
1629
|
},
|
|
1554
|
-
"default": "\"Reset\"",
|
|
1555
1630
|
"fieldName": "resetLabel"
|
|
1556
1631
|
},
|
|
1557
1632
|
{
|
|
@@ -2812,6 +2887,274 @@
|
|
|
2812
2887
|
}
|
|
2813
2888
|
]
|
|
2814
2889
|
},
|
|
2890
|
+
{
|
|
2891
|
+
"kind": "javascript-module",
|
|
2892
|
+
"path": "public/assets/pds/components/pds-locale.js",
|
|
2893
|
+
"declarations": [
|
|
2894
|
+
{
|
|
2895
|
+
"kind": "class",
|
|
2896
|
+
"description": "Locale switcher component.\r\n\r\nThe component only persists canonical 5-letter locale tags (`xx-YY`),\r\nfor example `en-US` and `nl-NL`.",
|
|
2897
|
+
"name": "PdsLocale",
|
|
2898
|
+
"members": [
|
|
2899
|
+
{
|
|
2900
|
+
"kind": "field",
|
|
2901
|
+
"name": "formAssociated",
|
|
2902
|
+
"type": {
|
|
2903
|
+
"text": "boolean"
|
|
2904
|
+
},
|
|
2905
|
+
"static": true,
|
|
2906
|
+
"default": "true"
|
|
2907
|
+
},
|
|
2908
|
+
{
|
|
2909
|
+
"kind": "method",
|
|
2910
|
+
"name": "formAssociatedCallback"
|
|
2911
|
+
},
|
|
2912
|
+
{
|
|
2913
|
+
"kind": "method",
|
|
2914
|
+
"name": "formDisabledCallback",
|
|
2915
|
+
"parameters": [
|
|
2916
|
+
{
|
|
2917
|
+
"name": "disabled"
|
|
2918
|
+
}
|
|
2919
|
+
]
|
|
2920
|
+
},
|
|
2921
|
+
{
|
|
2922
|
+
"kind": "method",
|
|
2923
|
+
"name": "formResetCallback"
|
|
2924
|
+
},
|
|
2925
|
+
{
|
|
2926
|
+
"kind": "method",
|
|
2927
|
+
"name": "formStateRestoreCallback",
|
|
2928
|
+
"parameters": [
|
|
2929
|
+
{
|
|
2930
|
+
"name": "state"
|
|
2931
|
+
}
|
|
2932
|
+
]
|
|
2933
|
+
},
|
|
2934
|
+
{
|
|
2935
|
+
"kind": "method",
|
|
2936
|
+
"name": "checkValidity"
|
|
2937
|
+
},
|
|
2938
|
+
{
|
|
2939
|
+
"kind": "method",
|
|
2940
|
+
"name": "reportValidity"
|
|
2941
|
+
},
|
|
2942
|
+
{
|
|
2943
|
+
"kind": "field",
|
|
2944
|
+
"name": "form",
|
|
2945
|
+
"readonly": true,
|
|
2946
|
+
"type": {
|
|
2947
|
+
"text": "HTMLFormElement|null"
|
|
2948
|
+
},
|
|
2949
|
+
"description": "Associated form element."
|
|
2950
|
+
},
|
|
2951
|
+
{
|
|
2952
|
+
"kind": "field",
|
|
2953
|
+
"name": "labels",
|
|
2954
|
+
"readonly": true,
|
|
2955
|
+
"type": {
|
|
2956
|
+
"text": "NodeListOf<HTMLLabelElement>|null"
|
|
2957
|
+
},
|
|
2958
|
+
"description": "Associated labels."
|
|
2959
|
+
},
|
|
2960
|
+
{
|
|
2961
|
+
"kind": "field",
|
|
2962
|
+
"name": "type",
|
|
2963
|
+
"readonly": true,
|
|
2964
|
+
"type": {
|
|
2965
|
+
"text": "string"
|
|
2966
|
+
},
|
|
2967
|
+
"description": "Form control type."
|
|
2968
|
+
},
|
|
2969
|
+
{
|
|
2970
|
+
"kind": "field",
|
|
2971
|
+
"name": "validity",
|
|
2972
|
+
"readonly": true,
|
|
2973
|
+
"type": {
|
|
2974
|
+
"text": "ValidityState|null"
|
|
2975
|
+
},
|
|
2976
|
+
"description": "Current validity state."
|
|
2977
|
+
},
|
|
2978
|
+
{
|
|
2979
|
+
"kind": "field",
|
|
2980
|
+
"name": "validationMessage",
|
|
2981
|
+
"readonly": true,
|
|
2982
|
+
"type": {
|
|
2983
|
+
"text": "string"
|
|
2984
|
+
},
|
|
2985
|
+
"description": "Current validation message."
|
|
2986
|
+
},
|
|
2987
|
+
{
|
|
2988
|
+
"kind": "field",
|
|
2989
|
+
"name": "willValidate",
|
|
2990
|
+
"readonly": true,
|
|
2991
|
+
"type": {
|
|
2992
|
+
"text": "boolean"
|
|
2993
|
+
},
|
|
2994
|
+
"description": "Whether the control participates in validation."
|
|
2995
|
+
},
|
|
2996
|
+
{
|
|
2997
|
+
"kind": "field",
|
|
2998
|
+
"name": "name",
|
|
2999
|
+
"type": {
|
|
3000
|
+
"text": "string"
|
|
3001
|
+
},
|
|
3002
|
+
"description": "Form field name."
|
|
3003
|
+
},
|
|
3004
|
+
{
|
|
3005
|
+
"kind": "field",
|
|
3006
|
+
"name": "value",
|
|
3007
|
+
"type": {
|
|
3008
|
+
"text": "string"
|
|
3009
|
+
},
|
|
3010
|
+
"description": "Selected canonical locale tag (`xx-YY`)."
|
|
3011
|
+
},
|
|
3012
|
+
{
|
|
3013
|
+
"kind": "field",
|
|
3014
|
+
"name": "required",
|
|
3015
|
+
"type": {
|
|
3016
|
+
"text": "boolean"
|
|
3017
|
+
},
|
|
3018
|
+
"description": "Whether a value is required."
|
|
3019
|
+
},
|
|
3020
|
+
{
|
|
3021
|
+
"kind": "field",
|
|
3022
|
+
"name": "disabled",
|
|
3023
|
+
"type": {
|
|
3024
|
+
"text": "boolean"
|
|
3025
|
+
},
|
|
3026
|
+
"description": "Whether interaction is disabled."
|
|
3027
|
+
},
|
|
3028
|
+
{
|
|
3029
|
+
"kind": "field",
|
|
3030
|
+
"name": "mode",
|
|
3031
|
+
"type": {
|
|
3032
|
+
"text": "\"compact\"|\"full\""
|
|
3033
|
+
},
|
|
3034
|
+
"description": "Label display mode."
|
|
3035
|
+
},
|
|
3036
|
+
{
|
|
3037
|
+
"kind": "method",
|
|
3038
|
+
"name": "whenReady",
|
|
3039
|
+
"description": "Resolves once the first availability check is complete.",
|
|
3040
|
+
"return": {
|
|
3041
|
+
"type": {
|
|
3042
|
+
"text": "Promise<boolean>"
|
|
3043
|
+
}
|
|
3044
|
+
}
|
|
3045
|
+
},
|
|
3046
|
+
{
|
|
3047
|
+
"kind": "field",
|
|
3048
|
+
"name": "available",
|
|
3049
|
+
"description": "Whether locale switching is currently available.",
|
|
3050
|
+
"return": {
|
|
3051
|
+
"type": {
|
|
3052
|
+
"text": "boolean"
|
|
3053
|
+
}
|
|
3054
|
+
},
|
|
3055
|
+
"readonly": true
|
|
3056
|
+
},
|
|
3057
|
+
{
|
|
3058
|
+
"kind": "method",
|
|
3059
|
+
"name": "refresh",
|
|
3060
|
+
"description": "Re-detect available locales and re-render.",
|
|
3061
|
+
"return": {
|
|
3062
|
+
"type": {
|
|
3063
|
+
"text": "Promise<boolean>"
|
|
3064
|
+
}
|
|
3065
|
+
}
|
|
3066
|
+
}
|
|
3067
|
+
],
|
|
3068
|
+
"events": [
|
|
3069
|
+
{
|
|
3070
|
+
"name": "input",
|
|
3071
|
+
"type": {
|
|
3072
|
+
"text": "Event"
|
|
3073
|
+
},
|
|
3074
|
+
"description": "Native-like input event when user selection changes."
|
|
3075
|
+
},
|
|
3076
|
+
{
|
|
3077
|
+
"name": "change",
|
|
3078
|
+
"type": {
|
|
3079
|
+
"text": "Event"
|
|
3080
|
+
},
|
|
3081
|
+
"description": "Native-like change event when user selection changes."
|
|
3082
|
+
},
|
|
3083
|
+
{
|
|
3084
|
+
"name": "pds-locale:ready",
|
|
3085
|
+
"type": {
|
|
3086
|
+
"text": "CustomEvent"
|
|
3087
|
+
},
|
|
3088
|
+
"description": "Emitted after locale availability is resolved."
|
|
3089
|
+
},
|
|
3090
|
+
{
|
|
3091
|
+
"description": "Emitted after a new locale is selected.",
|
|
3092
|
+
"name": "pds:locale:changed"
|
|
3093
|
+
}
|
|
3094
|
+
],
|
|
3095
|
+
"attributes": [
|
|
3096
|
+
{
|
|
3097
|
+
"name": "name",
|
|
3098
|
+
"type": {
|
|
3099
|
+
"text": "string"
|
|
3100
|
+
},
|
|
3101
|
+
"description": "Form field name used during submit."
|
|
3102
|
+
},
|
|
3103
|
+
{
|
|
3104
|
+
"name": "value",
|
|
3105
|
+
"type": {
|
|
3106
|
+
"text": "string"
|
|
3107
|
+
},
|
|
3108
|
+
"description": "Selected canonical locale tag (`xx-YY`)."
|
|
3109
|
+
},
|
|
3110
|
+
{
|
|
3111
|
+
"name": "required",
|
|
3112
|
+
"type": {
|
|
3113
|
+
"text": "boolean"
|
|
3114
|
+
},
|
|
3115
|
+
"description": "Requires a locale value for validity."
|
|
3116
|
+
},
|
|
3117
|
+
{
|
|
3118
|
+
"name": "disabled",
|
|
3119
|
+
"type": {
|
|
3120
|
+
"text": "boolean"
|
|
3121
|
+
},
|
|
3122
|
+
"description": "Disables interaction and omits form value."
|
|
3123
|
+
},
|
|
3124
|
+
{
|
|
3125
|
+
"name": "mode",
|
|
3126
|
+
"type": {
|
|
3127
|
+
"text": "\"compact\"|\"full\""
|
|
3128
|
+
},
|
|
3129
|
+
"description": "Label display mode. In `compact`, the UI shows 2-letter aliases and puts the full Intl language name in the `title` attribute. In `full`, it renders the full Intl language name as the visible label.",
|
|
3130
|
+
"default": "\"compact\""
|
|
3131
|
+
},
|
|
3132
|
+
{
|
|
3133
|
+
"name": "data-label",
|
|
3134
|
+
"type": {
|
|
3135
|
+
"text": "string"
|
|
3136
|
+
},
|
|
3137
|
+
"description": "Accessible label for the locale radio group."
|
|
3138
|
+
}
|
|
3139
|
+
],
|
|
3140
|
+
"superclass": {
|
|
3141
|
+
"name": "HTMLElement"
|
|
3142
|
+
},
|
|
3143
|
+
"tagName": "pds-locale",
|
|
3144
|
+
"customElement": true
|
|
3145
|
+
}
|
|
3146
|
+
],
|
|
3147
|
+
"exports": [
|
|
3148
|
+
{
|
|
3149
|
+
"kind": "custom-element-definition",
|
|
3150
|
+
"name": "pds-locale",
|
|
3151
|
+
"declaration": {
|
|
3152
|
+
"name": "PdsLocale",
|
|
3153
|
+
"module": "public/assets/pds/components/pds-locale.js"
|
|
3154
|
+
}
|
|
3155
|
+
}
|
|
3156
|
+
]
|
|
3157
|
+
},
|
|
2815
3158
|
{
|
|
2816
3159
|
"kind": "javascript-module",
|
|
2817
3160
|
"path": "public/assets/pds/components/pds-omnibox.js",
|
|
@@ -4206,7 +4549,7 @@
|
|
|
4206
4549
|
"declarations": [
|
|
4207
4550
|
{
|
|
4208
4551
|
"kind": "class",
|
|
4209
|
-
"description": "Form-associated multi-select tags control built on top of `pds-omnibox`.\r\n\r\nUsers select suggestions from the omnibox and each selection is rendered as a removable\r\nchip. The component keeps selection state synchronized across:\r\n- the `value` attribute (comma-separated ids)\r\n- the `value` property (`string[]`)\r\n- form value via ElementInternals\r\n\r\
|
|
4552
|
+
"description": "Form-associated multi-select tags control built on top of `pds-omnibox`.\r\n\r\nUsers select suggestions from the omnibox and each selection is rendered as a removable\r\nchip. The component keeps selection state synchronized across:\r\n- the `value` attribute (comma-separated ids)\r\n- the `value` property (`string[]`)\r\n- form value via ElementInternals\r\n\r\nThe `options` object uses the same structure as `pds-omnibox.settings`.\r\nSee `pds-omnibox` JSDoc for the full options schema.\r\nBefore applying it, the component deep-merges internal defaults:\r\n- `hideCategory: true`\r\n- `itemGrid: \"0 1fr 0\"`\r\n- `iconHandler: () => \"\"`\r\n\r\nWhen `required` is set, at least one selected value is required for validity.",
|
|
4210
4553
|
"name": "PdsTags",
|
|
4211
4554
|
"members": [
|
|
4212
4555
|
{
|
|
@@ -4230,17 +4573,9 @@
|
|
|
4230
4573
|
"kind": "field",
|
|
4231
4574
|
"name": "options",
|
|
4232
4575
|
"type": {
|
|
4233
|
-
"text": "
|
|
4234
|
-
},
|
|
4235
|
-
"description": "Option source used to build omnibox suggestions"
|
|
4236
|
-
},
|
|
4237
|
-
{
|
|
4238
|
-
"kind": "field",
|
|
4239
|
-
"name": "settings",
|
|
4240
|
-
"type": {
|
|
4241
|
-
"text": "Object|null"
|
|
4576
|
+
"text": "PdsOmniboxSettings|null"
|
|
4242
4577
|
},
|
|
4243
|
-
"description": "Omnibox-
|
|
4578
|
+
"description": "Omnibox options object (see `pds-omnibox.js` typedef)"
|
|
4244
4579
|
},
|
|
4245
4580
|
{
|
|
4246
4581
|
"kind": "field",
|
|
@@ -4332,14 +4667,7 @@
|
|
|
4332
4667
|
"type": {
|
|
4333
4668
|
"text": "string"
|
|
4334
4669
|
},
|
|
4335
|
-
"description": "JSON
|
|
4336
|
-
},
|
|
4337
|
-
{
|
|
4338
|
-
"name": "settings",
|
|
4339
|
-
"type": {
|
|
4340
|
-
"text": "string"
|
|
4341
|
-
},
|
|
4342
|
-
"description": "JSON omnibox settings; takes precedence over derived options settings"
|
|
4670
|
+
"description": "JSON object with the same shape as `pds-omnibox.settings`"
|
|
4343
4671
|
},
|
|
4344
4672
|
{
|
|
4345
4673
|
"name": "disabled",
|
|
@@ -4443,7 +4771,7 @@
|
|
|
4443
4771
|
"description": "Toast configuration",
|
|
4444
4772
|
"optional": true,
|
|
4445
4773
|
"type": {
|
|
4446
|
-
"text": "@param {\"information\"|\"success\"|\"warning\"|\"error\"} [options.type=\"information\"] - Toast type\n * @param {number} [options.duration] - Duration in ms (auto-calculated if not provided)\n * @param {boolean} [options.closable=true] - Whether toast can be closed manually\n * @param {boolean} [options.persistent=false] - If true, toast doesn't auto-dismiss\n * "
|
|
4774
|
+
"text": "@param {\"information\"|\"success\"|\"warning\"|\"error\"} [options.type=\"information\"] - Toast type\n * @param {string} [options.title] - Optional heading text (falls back to type-based title when empty)\n * @param {number} [options.duration] - Duration in ms (auto-calculated if not provided)\n * @param {boolean} [options.closable=true] - Whether toast can be closed manually\n * @param {boolean} [options.persistent=false] - If true, toast doesn't auto-dismiss\n * @param {boolean} [options.returnToastElement=false] - If true, return the toast element instead of toast ID\n * "
|
|
4447
4775
|
}
|
|
4448
4776
|
}
|
|
4449
4777
|
],
|
|
@@ -4451,7 +4779,27 @@
|
|
|
4451
4779
|
"privacy": "public",
|
|
4452
4780
|
"return": {
|
|
4453
4781
|
"type": {
|
|
4454
|
-
"text": "string"
|
|
4782
|
+
"text": "string|HTMLElement|null"
|
|
4783
|
+
}
|
|
4784
|
+
}
|
|
4785
|
+
},
|
|
4786
|
+
{
|
|
4787
|
+
"kind": "method",
|
|
4788
|
+
"name": "getToastElement",
|
|
4789
|
+
"parameters": [
|
|
4790
|
+
{
|
|
4791
|
+
"name": "toastId",
|
|
4792
|
+
"description": "Toast ID",
|
|
4793
|
+
"type": {
|
|
4794
|
+
"text": "string"
|
|
4795
|
+
}
|
|
4796
|
+
}
|
|
4797
|
+
],
|
|
4798
|
+
"description": "Get toast element by ID.",
|
|
4799
|
+
"privacy": "public",
|
|
4800
|
+
"return": {
|
|
4801
|
+
"type": {
|
|
4802
|
+
"text": "HTMLElement|null"
|
|
4455
4803
|
}
|
|
4456
4804
|
}
|
|
4457
4805
|
},
|
|
@@ -4477,6 +4825,12 @@
|
|
|
4477
4825
|
"text": "\"information\"|\"success\"|\"warning\"|\"error\""
|
|
4478
4826
|
}
|
|
4479
4827
|
},
|
|
4828
|
+
{
|
|
4829
|
+
"name": "title",
|
|
4830
|
+
"type": {
|
|
4831
|
+
"text": "string|null|undefined"
|
|
4832
|
+
}
|
|
4833
|
+
},
|
|
4480
4834
|
{
|
|
4481
4835
|
"name": "closable",
|
|
4482
4836
|
"type": {
|
|
@@ -2786,7 +2786,7 @@
|
|
|
2786
2786
|
],
|
|
2787
2787
|
"metadata": {
|
|
2788
2788
|
"generator": "PDS CSS Data Generator",
|
|
2789
|
-
"generatedAt": "2026-03-
|
|
2789
|
+
"generatedAt": "2026-03-26T08:26:11.693Z",
|
|
2790
2790
|
"totalProperties": 183,
|
|
2791
2791
|
"totalClasses": 170,
|
|
2792
2792
|
"totalAttributes": 6
|
|
@@ -144,7 +144,35 @@
|
|
|
144
144
|
},
|
|
145
145
|
{
|
|
146
146
|
"name": "start-angle",
|
|
147
|
-
"description": "Starting angle in degrees (0=right, 90=down, 180=left, 270=up)\r\nIf not specified, the angle is auto-detected based on the FAB's corner position:\r\n- Bottom-right: 180
|
|
147
|
+
"description": "Starting angle in degrees (0=right, 90=down, 180=left, 270=up)\r\nIf not specified, the angle is auto-detected based on the FAB's corner position:\r\n- Bottom-right: 180-� (fly left/up)\r\n- Bottom-left: 315-� (fly right/up)\r\n- Top-right: 225-� (fly left/down)\r\n- Top-left: 45-� (fly right/down)"
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"name": "behavior",
|
|
151
|
+
"description": "Interaction mode for opening satellites (default: click)",
|
|
152
|
+
"values": [
|
|
153
|
+
{
|
|
154
|
+
"name": "click"
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"name": "hover"
|
|
158
|
+
}
|
|
159
|
+
]
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"name": "mode",
|
|
163
|
+
"description": "Layout mode for FAB positioning (default: fixed)",
|
|
164
|
+
"values": [
|
|
165
|
+
{
|
|
166
|
+
"name": "fixed"
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"name": "inline"
|
|
170
|
+
}
|
|
171
|
+
]
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"name": "fab-class",
|
|
175
|
+
"description": "Space-separated class list forwarded to the internal button.\r\nUse this instead of host classes for btn-* and icon-only."
|
|
148
176
|
}
|
|
149
177
|
]
|
|
150
178
|
},
|
package/src/js/common/common.js
CHANGED
|
@@ -233,3 +233,77 @@ export function parseFragment(html, ...values) {
|
|
|
233
233
|
export function parseHTML(html, ...values) {
|
|
234
234
|
return parseFragment(html, ...values).childNodes;
|
|
235
235
|
}
|
|
236
|
+
|
|
237
|
+
export function throttle(fn, timeoutMs = 100) {
|
|
238
|
+
let handle;
|
|
239
|
+
return function throttled(...args) {
|
|
240
|
+
const fire = () => {
|
|
241
|
+
clearTimeout(handle);
|
|
242
|
+
fn(...args);
|
|
243
|
+
};
|
|
244
|
+
clearTimeout(handle);
|
|
245
|
+
handle = setTimeout(fire, timeoutMs);
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
export function enQueue(fn) {
|
|
250
|
+
setTimeout(fn, 0);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
export function isUrl(str) {
|
|
254
|
+
try {
|
|
255
|
+
if (typeof str !== "string") return false;
|
|
256
|
+
if (str.indexOf("\n") !== -1 || str.indexOf(" ") !== -1) return false;
|
|
257
|
+
if (str.startsWith("#/")) return false;
|
|
258
|
+
const newUrl = new URL(str, window.location.origin);
|
|
259
|
+
return newUrl.protocol === "http:" || newUrl.protocol === "https:";
|
|
260
|
+
} catch {
|
|
261
|
+
return false;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
export function withTimeout(promise, timeoutMs, label = "Operation") {
|
|
266
|
+
if (!timeoutMs || timeoutMs <= 0) return promise;
|
|
267
|
+
|
|
268
|
+
return new Promise((resolve, reject) => {
|
|
269
|
+
const timeout = setTimeout(() => {
|
|
270
|
+
reject(new Error(`${label} timed out after ${timeoutMs}ms`));
|
|
271
|
+
}, timeoutMs);
|
|
272
|
+
|
|
273
|
+
Promise.resolve(promise)
|
|
274
|
+
.then((value) => {
|
|
275
|
+
clearTimeout(timeout);
|
|
276
|
+
resolve(value);
|
|
277
|
+
})
|
|
278
|
+
.catch((error) => {
|
|
279
|
+
clearTimeout(timeout);
|
|
280
|
+
reject(error);
|
|
281
|
+
});
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
export function escapeForRegExp(value) {
|
|
286
|
+
return String(value).replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
export function openCenteredWindow(url, width, height) {
|
|
290
|
+
const left = window.screen.width / 2 - width / 2;
|
|
291
|
+
const top = window.screen.height / 2 - height / 2;
|
|
292
|
+
return window.open(
|
|
293
|
+
url,
|
|
294
|
+
"",
|
|
295
|
+
`toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=${width}, height=${height}, top=${top}, left=${left}`,
|
|
296
|
+
);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
export function humanizeIdentifier(value) {
|
|
300
|
+
if (value == null) return "";
|
|
301
|
+
const input = String(value).trim();
|
|
302
|
+
if (!input) return "";
|
|
303
|
+
|
|
304
|
+
return input
|
|
305
|
+
.replace(/([a-z0-9])([A-Z])/g, "$1 $2")
|
|
306
|
+
.replace(/[_-]+/g, " ")
|
|
307
|
+
.replace(/\s+/g, " ")
|
|
308
|
+
.trim();
|
|
309
|
+
}
|