@genesislcap/pbc-notify-ui 14.484.2 → 14.486.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -89,7 +89,7 @@
89
89
  "type": {
90
90
  "text": "array"
91
91
  },
92
- "default": "[\n {\n label: 'Equals',\n operator: 'EQUALS',\n },\n {\n label: 'Not Equals',\n operator: 'NOT_EQUALS',\n },\n {\n label: 'Greater Than',\n operator: 'GREATER_THAN',\n },\n {\n label: 'Less Than',\n operator: 'LESS_THAN',\n },\n {\n label: 'Null',\n operator: 'NULL',\n },\n {\n label: 'Not Null',\n operator: 'NOT_NULL',\n },\n {\n label: 'Blank',\n operator: 'BLANK',\n },\n {\n label: 'Not Blank',\n operator: 'NOT_BLANK',\n },\n]"
92
+ "default": "[\n {\n label: 'Equals',\n operator: 'EQUALS',\n },\n {\n label: 'Not Equals',\n operator: 'NOT_EQUALS',\n },\n {\n label: 'Greater Than',\n operator: 'GREATER_THAN',\n },\n {\n label: 'Less Than',\n operator: 'LESS_THAN',\n },\n {\n label: 'Starts With',\n operator: 'STARTS_WITH',\n },\n {\n label: 'Ends With',\n operator: 'ENDS_WITH',\n },\n {\n label: 'Null',\n operator: 'NULL',\n },\n {\n label: 'Not Null',\n operator: 'NOT_NULL',\n },\n {\n label: 'Blank',\n operator: 'BLANK',\n },\n {\n label: 'Not Blank',\n operator: 'NOT_BLANK',\n },\n]"
93
93
  },
94
94
  {
95
95
  "kind": "variable",
@@ -379,6 +379,27 @@
379
379
  }
380
380
  ]
381
381
  },
382
+ {
383
+ "kind": "javascript-module",
384
+ "path": "src/styles/scrollbar.styles.ts",
385
+ "declarations": [
386
+ {
387
+ "kind": "variable",
388
+ "name": "scrollbarStyles",
389
+ "default": "css`\n ::-webkit-scrollbar {\n width: calc((var(--base-height-multiplier) + var(--design-unit)) * 1px);\n }\n\n ::-webkit-scrollbar-track {\n background: var(--neutral-layer-1);\n }\n\n ::-webkit-scrollbar-thumb {\n background: var(--neutral-fill-rest);\n }\n`"
390
+ }
391
+ ],
392
+ "exports": [
393
+ {
394
+ "kind": "js",
395
+ "name": "scrollbarStyles",
396
+ "declaration": {
397
+ "name": "scrollbarStyles",
398
+ "module": "src/styles/scrollbar.styles.ts"
399
+ }
400
+ }
401
+ ]
402
+ },
382
403
  {
383
404
  "kind": "javascript-module",
384
405
  "path": "src/utils/eventDetail.ts",
@@ -700,27 +721,6 @@
700
721
  }
701
722
  ]
702
723
  },
703
- {
704
- "kind": "javascript-module",
705
- "path": "src/styles/scrollbar.styles.ts",
706
- "declarations": [
707
- {
708
- "kind": "variable",
709
- "name": "scrollbarStyles",
710
- "default": "css`\n ::-webkit-scrollbar {\n width: calc((var(--base-height-multiplier) + var(--design-unit)) * 1px);\n }\n\n ::-webkit-scrollbar-track {\n background: var(--neutral-layer-1);\n }\n\n ::-webkit-scrollbar-thumb {\n background: var(--neutral-fill-rest);\n }\n`"
711
- }
712
- ],
713
- "exports": [
714
- {
715
- "kind": "js",
716
- "name": "scrollbarStyles",
717
- "declaration": {
718
- "name": "scrollbarStyles",
719
- "module": "src/styles/scrollbar.styles.ts"
720
- }
721
- }
722
- ]
723
- },
724
724
  {
725
725
  "kind": "javascript-module",
726
726
  "path": "src/components/foundation-inbox/inbox.styles.ts",
@@ -1831,6 +1831,24 @@
1831
1831
  }
1832
1832
  ]
1833
1833
  },
1834
+ {
1835
+ "kind": "method",
1836
+ "name": "hasUnsupportedOperator",
1837
+ "static": true,
1838
+ "return": {
1839
+ "type": {
1840
+ "text": "boolean"
1841
+ }
1842
+ },
1843
+ "parameters": [
1844
+ {
1845
+ "name": "conditions",
1846
+ "type": {
1847
+ "text": "ConditionNode[]"
1848
+ }
1849
+ }
1850
+ ]
1851
+ },
1834
1852
  {
1835
1853
  "kind": "method",
1836
1854
  "name": "flattenConditions",
@@ -6082,220 +6100,6 @@
6082
6100
  }
6083
6101
  ]
6084
6102
  },
6085
- {
6086
- "kind": "javascript-module",
6087
- "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.styles.ts",
6088
- "declarations": [
6089
- {
6090
- "kind": "variable",
6091
- "name": "ParameterBuilderStyles",
6092
- "default": "css`\n .parameter-builder {\n display: flex;\n gap: calc(var(--design-unit) * 2px);\n margin-bottom: calc(var(--design-unit) * 2px);\n }\n\n rapid-button {\n margin: 0;\n }\n\n .delete {\n margin: 0;\n display: flex;\n justify-content: center;\n height: calc(var(--design-unit) * 9px);\n }\n\n .delete:hover {\n background-color: color-mix(in srgb, var(--neutral-foreground-rest), transparent 89%);\n }\n\n rapid-text-field {\n width: 100%;\n margin-bottom: 0;\n }\n\n rapid-text-field::part(root) {\n height: calc(var(--design-unit) * 9px);\n }\n\n rapid-select {\n min-width: auto;\n }\n\n rapid-select.param-type::part(control) {\n width: 115px;\n }\n\n rapid-select.param-source-type::part(control) {\n width: 160px;\n }\n\n rapid-select.param-source::part(control) {\n width: ${PARAM_SOURCE_WIDTH}px;\n }\n\n rapid-text-field.param-source::part(root) {\n width: calc(${PARAM_SOURCE_WIDTH}px + 2px);\n }\n\n rapid-select::part(listbox) {\n max-height: 160px;\n }\n`"
6093
- }
6094
- ],
6095
- "exports": [
6096
- {
6097
- "kind": "js",
6098
- "name": "ParameterBuilderStyles",
6099
- "declaration": {
6100
- "name": "ParameterBuilderStyles",
6101
- "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.styles.ts"
6102
- }
6103
- }
6104
- ]
6105
- },
6106
- {
6107
- "kind": "javascript-module",
6108
- "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.template.ts",
6109
- "declarations": [
6110
- {
6111
- "kind": "variable",
6112
- "name": "ParameterBuilderTemplate",
6113
- "default": "html<ParameterBuilder>`\n <div class=\"parameter-builder\">\n <rapid-text-field\n id=\"param-name\"\n placeholder=\"Name\"\n :value=${sync((x) => x.name)}\n ></rapid-text-field>\n\n <rapid-text-field\n id=\"param-label\"\n placeholder=\"Label\"\n :value=${sync((x) => x.label)}\n ></rapid-text-field>\n\n <rapid-select\n id=\"param-source-type\"\n :value=${sync((x) => x.sourceType)}\n class=\"param-source-type\"\n >\n ${repeat(\n (x) => ALL_PARAM_SOURCE_TYPES,\n html`\n <rapid-option value=${(x) => x}>${(x) => x}</rapid-option>\n `,\n )}\n </rapid-select>\n\n ${when(\n (x) => x.sourceType === PARAM_SOURCE_TYPE_USER_TEXT,\n html<ParameterBuilder>`\n <rapid-text-field class=\"param-source\" disabled></rapid-text-field>\n `,\n )}\n ${when(\n (x) => x.sourceType === PARAM_SOURCE_TYPE_REQ_REP,\n html<ParameterBuilder>`\n <rapid-select\n ${ref('sourceSelect')}\n id=\"param-source\"\n :value=${sync((x) => x.sourceSelected)}\n class=\"param-source\"\n ?disabled=${(x) => x.sourceType !== PARAM_SOURCE_TYPE_REQ_REP}\n >\n ${repeat(\n (x) => x.reqRepItems,\n html`\n <rapid-option value=${(x) => x}>${(x) => x}</rapid-option>\n `,\n )}\n </rapid-select>\n `,\n )}\n ${when(\n (x) => x.sourceType === PARAM_SOURCE_TYPE_DEFINED_GROUP,\n html<ParameterBuilder>`\n <rapid-text-field\n ${ref('sourceTextField')}\n class=\"param-source\"\n placeholder=\"item1,item2,item3\"\n :value=${sync((x) => x.sourceTyped)}\n ></rapid-text-field>\n `,\n )}\n\n <rapid-select id=\"param-type\" :value=${sync((x) => x.type)} class=\"param-type\">\n ${repeat(\n (x) => ALL_PARAM_TYPES,\n html`\n <rapid-option value=${(x) => x}>${(x) => x}</rapid-option>\n `,\n )}\n </rapid-select>\n\n <rapid-button appearance=\"icon\" class=\"delete\" @click=${(x) => x.deleteParameter()}>\n <rapid-icon\n style=\"opacity: 0.5\"\n variant=\"regular\"\n name=\"trash-alt\"\n size=\"lg\"\n part=\"icon\"\n ></rapid-icon>\n </rapid-button>\n </div>\n`"
6114
- }
6115
- ],
6116
- "exports": [
6117
- {
6118
- "kind": "js",
6119
- "name": "ParameterBuilderTemplate",
6120
- "declaration": {
6121
- "name": "ParameterBuilderTemplate",
6122
- "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.template.ts"
6123
- }
6124
- }
6125
- ]
6126
- },
6127
- {
6128
- "kind": "javascript-module",
6129
- "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.ts",
6130
- "declarations": [
6131
- {
6132
- "kind": "class",
6133
- "description": "Parameter builder for notification templates.",
6134
- "name": "ParameterBuilder",
6135
- "members": [
6136
- {
6137
- "kind": "field",
6138
- "name": "parameter",
6139
- "type": {
6140
- "text": "ParameterBuilderEntity"
6141
- }
6142
- },
6143
- {
6144
- "kind": "field",
6145
- "name": "name",
6146
- "type": {
6147
- "text": "string"
6148
- }
6149
- },
6150
- {
6151
- "kind": "field",
6152
- "name": "label",
6153
- "type": {
6154
- "text": "string"
6155
- }
6156
- },
6157
- {
6158
- "kind": "field",
6159
- "name": "type",
6160
- "type": {
6161
- "text": "string"
6162
- }
6163
- },
6164
- {
6165
- "kind": "field",
6166
- "name": "sourceType",
6167
- "type": {
6168
- "text": "string"
6169
- }
6170
- },
6171
- {
6172
- "kind": "field",
6173
- "name": "sourceSelected",
6174
- "type": {
6175
- "text": "string"
6176
- }
6177
- },
6178
- {
6179
- "kind": "field",
6180
- "name": "sourceTyped",
6181
- "type": {
6182
- "text": "string"
6183
- }
6184
- },
6185
- {
6186
- "kind": "field",
6187
- "name": "sourceTextField",
6188
- "type": {
6189
- "text": "TextField"
6190
- }
6191
- },
6192
- {
6193
- "kind": "field",
6194
- "name": "sourceSelect",
6195
- "type": {
6196
- "text": "Select"
6197
- }
6198
- },
6199
- {
6200
- "kind": "field",
6201
- "name": "reqRepItems",
6202
- "type": {
6203
- "text": "array"
6204
- },
6205
- "default": "['REQUEST_1', 'REQUEST_2', 'REQUEST_3']"
6206
- },
6207
- {
6208
- "kind": "method",
6209
- "name": "deleteParameter"
6210
- },
6211
- {
6212
- "kind": "method",
6213
- "name": "parameterChanged"
6214
- },
6215
- {
6216
- "kind": "method",
6217
- "name": "nameChanged"
6218
- },
6219
- {
6220
- "kind": "method",
6221
- "name": "labelChanged"
6222
- },
6223
- {
6224
- "kind": "method",
6225
- "name": "typeChanged"
6226
- },
6227
- {
6228
- "kind": "method",
6229
- "name": "sourceTypeChanged"
6230
- },
6231
- {
6232
- "kind": "method",
6233
- "name": "sourceSelectedChanged"
6234
- },
6235
- {
6236
- "kind": "method",
6237
- "name": "sourceTypedChanged"
6238
- },
6239
- {
6240
- "kind": "method",
6241
- "name": "genericChanged",
6242
- "privacy": "private",
6243
- "parameters": [
6244
- {
6245
- "name": "parameterAttribute"
6246
- },
6247
- {
6248
- "name": "value"
6249
- }
6250
- ]
6251
- }
6252
- ],
6253
- "events": [
6254
- {
6255
- "description": "Fired when a parameter is deleted. detail: `ParameterBuilderEntity`",
6256
- "name": "delete"
6257
- },
6258
- {
6259
- "description": "Fired when a parameter is edited. detail: `ParameterBuilderEntity`",
6260
- "name": "edit"
6261
- }
6262
- ],
6263
- "attributes": [
6264
- {
6265
- "name": "parameter",
6266
- "type": {
6267
- "text": "ParameterBuilderEntity"
6268
- },
6269
- "fieldName": "parameter"
6270
- }
6271
- ],
6272
- "superclass": {
6273
- "name": "GenesisElement",
6274
- "package": "@genesislcap/web-core"
6275
- },
6276
- "tagName": "parameter-builder",
6277
- "customElement": true
6278
- }
6279
- ],
6280
- "exports": [
6281
- {
6282
- "kind": "js",
6283
- "name": "ParameterBuilder",
6284
- "declaration": {
6285
- "name": "ParameterBuilder",
6286
- "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.ts"
6287
- }
6288
- },
6289
- {
6290
- "kind": "custom-element-definition",
6291
- "name": "parameter-builder",
6292
- "declaration": {
6293
- "name": "ParameterBuilder",
6294
- "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.ts"
6295
- }
6296
- }
6297
- ]
6298
- },
6299
6103
  {
6300
6104
  "kind": "javascript-module",
6301
6105
  "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-builder/template-condition-builder.template.ts",
@@ -6588,6 +6392,220 @@
6588
6392
  }
6589
6393
  ]
6590
6394
  },
6395
+ {
6396
+ "kind": "javascript-module",
6397
+ "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.styles.ts",
6398
+ "declarations": [
6399
+ {
6400
+ "kind": "variable",
6401
+ "name": "ParameterBuilderStyles",
6402
+ "default": "css`\n .parameter-builder {\n display: flex;\n gap: calc(var(--design-unit) * 2px);\n margin-bottom: calc(var(--design-unit) * 2px);\n }\n\n rapid-button {\n margin: 0;\n }\n\n .delete {\n margin: 0;\n display: flex;\n justify-content: center;\n height: calc(var(--design-unit) * 9px);\n }\n\n .delete:hover {\n background-color: color-mix(in srgb, var(--neutral-foreground-rest), transparent 89%);\n }\n\n rapid-text-field {\n width: 100%;\n margin-bottom: 0;\n }\n\n rapid-text-field::part(root) {\n height: calc(var(--design-unit) * 9px);\n }\n\n rapid-select {\n min-width: auto;\n }\n\n rapid-select.param-type::part(control) {\n width: 115px;\n }\n\n rapid-select.param-source-type::part(control) {\n width: 160px;\n }\n\n rapid-select.param-source::part(control) {\n width: ${PARAM_SOURCE_WIDTH}px;\n }\n\n rapid-text-field.param-source::part(root) {\n width: calc(${PARAM_SOURCE_WIDTH}px + 2px);\n }\n\n rapid-select::part(listbox) {\n max-height: 160px;\n }\n`"
6403
+ }
6404
+ ],
6405
+ "exports": [
6406
+ {
6407
+ "kind": "js",
6408
+ "name": "ParameterBuilderStyles",
6409
+ "declaration": {
6410
+ "name": "ParameterBuilderStyles",
6411
+ "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.styles.ts"
6412
+ }
6413
+ }
6414
+ ]
6415
+ },
6416
+ {
6417
+ "kind": "javascript-module",
6418
+ "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.template.ts",
6419
+ "declarations": [
6420
+ {
6421
+ "kind": "variable",
6422
+ "name": "ParameterBuilderTemplate",
6423
+ "default": "html<ParameterBuilder>`\n <div class=\"parameter-builder\">\n <rapid-text-field\n id=\"param-name\"\n placeholder=\"Name\"\n :value=${sync((x) => x.name)}\n ></rapid-text-field>\n\n <rapid-text-field\n id=\"param-label\"\n placeholder=\"Label\"\n :value=${sync((x) => x.label)}\n ></rapid-text-field>\n\n <rapid-select\n id=\"param-source-type\"\n :value=${sync((x) => x.sourceType)}\n class=\"param-source-type\"\n >\n ${repeat(\n (x) => ALL_PARAM_SOURCE_TYPES,\n html`\n <rapid-option value=${(x) => x}>${(x) => x}</rapid-option>\n `,\n )}\n </rapid-select>\n\n ${when(\n (x) => x.sourceType === PARAM_SOURCE_TYPE_USER_TEXT,\n html<ParameterBuilder>`\n <rapid-text-field class=\"param-source\" disabled></rapid-text-field>\n `,\n )}\n ${when(\n (x) => x.sourceType === PARAM_SOURCE_TYPE_REQ_REP,\n html<ParameterBuilder>`\n <rapid-select\n ${ref('sourceSelect')}\n id=\"param-source\"\n :value=${sync((x) => x.sourceSelected)}\n class=\"param-source\"\n ?disabled=${(x) => x.sourceType !== PARAM_SOURCE_TYPE_REQ_REP}\n >\n ${repeat(\n (x) => x.reqRepItems,\n html`\n <rapid-option value=${(x) => x}>${(x) => x}</rapid-option>\n `,\n )}\n </rapid-select>\n `,\n )}\n ${when(\n (x) => x.sourceType === PARAM_SOURCE_TYPE_DEFINED_GROUP,\n html<ParameterBuilder>`\n <rapid-text-field\n ${ref('sourceTextField')}\n class=\"param-source\"\n placeholder=\"item1,item2,item3\"\n :value=${sync((x) => x.sourceTyped)}\n ></rapid-text-field>\n `,\n )}\n\n <rapid-select id=\"param-type\" :value=${sync((x) => x.type)} class=\"param-type\">\n ${repeat(\n (x) => ALL_PARAM_TYPES,\n html`\n <rapid-option value=${(x) => x}>${(x) => x}</rapid-option>\n `,\n )}\n </rapid-select>\n\n <rapid-button appearance=\"icon\" class=\"delete\" @click=${(x) => x.deleteParameter()}>\n <rapid-icon\n style=\"opacity: 0.5\"\n variant=\"regular\"\n name=\"trash-alt\"\n size=\"lg\"\n part=\"icon\"\n ></rapid-icon>\n </rapid-button>\n </div>\n`"
6424
+ }
6425
+ ],
6426
+ "exports": [
6427
+ {
6428
+ "kind": "js",
6429
+ "name": "ParameterBuilderTemplate",
6430
+ "declaration": {
6431
+ "name": "ParameterBuilderTemplate",
6432
+ "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.template.ts"
6433
+ }
6434
+ }
6435
+ ]
6436
+ },
6437
+ {
6438
+ "kind": "javascript-module",
6439
+ "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.ts",
6440
+ "declarations": [
6441
+ {
6442
+ "kind": "class",
6443
+ "description": "Parameter builder for notification templates.",
6444
+ "name": "ParameterBuilder",
6445
+ "members": [
6446
+ {
6447
+ "kind": "field",
6448
+ "name": "parameter",
6449
+ "type": {
6450
+ "text": "ParameterBuilderEntity"
6451
+ }
6452
+ },
6453
+ {
6454
+ "kind": "field",
6455
+ "name": "name",
6456
+ "type": {
6457
+ "text": "string"
6458
+ }
6459
+ },
6460
+ {
6461
+ "kind": "field",
6462
+ "name": "label",
6463
+ "type": {
6464
+ "text": "string"
6465
+ }
6466
+ },
6467
+ {
6468
+ "kind": "field",
6469
+ "name": "type",
6470
+ "type": {
6471
+ "text": "string"
6472
+ }
6473
+ },
6474
+ {
6475
+ "kind": "field",
6476
+ "name": "sourceType",
6477
+ "type": {
6478
+ "text": "string"
6479
+ }
6480
+ },
6481
+ {
6482
+ "kind": "field",
6483
+ "name": "sourceSelected",
6484
+ "type": {
6485
+ "text": "string"
6486
+ }
6487
+ },
6488
+ {
6489
+ "kind": "field",
6490
+ "name": "sourceTyped",
6491
+ "type": {
6492
+ "text": "string"
6493
+ }
6494
+ },
6495
+ {
6496
+ "kind": "field",
6497
+ "name": "sourceTextField",
6498
+ "type": {
6499
+ "text": "TextField"
6500
+ }
6501
+ },
6502
+ {
6503
+ "kind": "field",
6504
+ "name": "sourceSelect",
6505
+ "type": {
6506
+ "text": "Select"
6507
+ }
6508
+ },
6509
+ {
6510
+ "kind": "field",
6511
+ "name": "reqRepItems",
6512
+ "type": {
6513
+ "text": "array"
6514
+ },
6515
+ "default": "['REQUEST_1', 'REQUEST_2', 'REQUEST_3']"
6516
+ },
6517
+ {
6518
+ "kind": "method",
6519
+ "name": "deleteParameter"
6520
+ },
6521
+ {
6522
+ "kind": "method",
6523
+ "name": "parameterChanged"
6524
+ },
6525
+ {
6526
+ "kind": "method",
6527
+ "name": "nameChanged"
6528
+ },
6529
+ {
6530
+ "kind": "method",
6531
+ "name": "labelChanged"
6532
+ },
6533
+ {
6534
+ "kind": "method",
6535
+ "name": "typeChanged"
6536
+ },
6537
+ {
6538
+ "kind": "method",
6539
+ "name": "sourceTypeChanged"
6540
+ },
6541
+ {
6542
+ "kind": "method",
6543
+ "name": "sourceSelectedChanged"
6544
+ },
6545
+ {
6546
+ "kind": "method",
6547
+ "name": "sourceTypedChanged"
6548
+ },
6549
+ {
6550
+ "kind": "method",
6551
+ "name": "genericChanged",
6552
+ "privacy": "private",
6553
+ "parameters": [
6554
+ {
6555
+ "name": "parameterAttribute"
6556
+ },
6557
+ {
6558
+ "name": "value"
6559
+ }
6560
+ ]
6561
+ }
6562
+ ],
6563
+ "events": [
6564
+ {
6565
+ "description": "Fired when a parameter is deleted. detail: `ParameterBuilderEntity`",
6566
+ "name": "delete"
6567
+ },
6568
+ {
6569
+ "description": "Fired when a parameter is edited. detail: `ParameterBuilderEntity`",
6570
+ "name": "edit"
6571
+ }
6572
+ ],
6573
+ "attributes": [
6574
+ {
6575
+ "name": "parameter",
6576
+ "type": {
6577
+ "text": "ParameterBuilderEntity"
6578
+ },
6579
+ "fieldName": "parameter"
6580
+ }
6581
+ ],
6582
+ "superclass": {
6583
+ "name": "GenesisElement",
6584
+ "package": "@genesislcap/web-core"
6585
+ },
6586
+ "tagName": "parameter-builder",
6587
+ "customElement": true
6588
+ }
6589
+ ],
6590
+ "exports": [
6591
+ {
6592
+ "kind": "js",
6593
+ "name": "ParameterBuilder",
6594
+ "declaration": {
6595
+ "name": "ParameterBuilder",
6596
+ "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.ts"
6597
+ }
6598
+ },
6599
+ {
6600
+ "kind": "custom-element-definition",
6601
+ "name": "parameter-builder",
6602
+ "declaration": {
6603
+ "name": "ParameterBuilder",
6604
+ "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.ts"
6605
+ }
6606
+ }
6607
+ ]
6608
+ },
6591
6609
  {
6592
6610
  "kind": "javascript-module",
6593
6611
  "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.template.ts",
@@ -1 +1 @@
1
- {"version":3,"file":"rule-dialog.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAiB,cAAc,EAAc,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAEL,aAAa,EAGb,UAAU,EACX,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAU9E,OAAO,EAAQ,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE7E;;;;;GAKG;AACH,qBAKa,UAAW,SAAQ,cAAc;IAC/B,WAAW,EAAE,WAAW,CAAC;IACvB,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,aAAa,CAAC;IAE5C,MAAM,EAAE,KAAK,CAAC;IACF,cAAc,EAAE,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;IAEjF,OAAO,CAAC,MAAM,CAAgB;IAClB,IAAI,EAAE,MAAM,CAAM;IAClB,WAAW,EAAE,MAAM,CAAM;IACzB,QAAQ,EAAE,MAAM,CAAM;IACtB,KAAK,EAAE,MAAM,CAAM;IACnB,QAAQ,EAAE,MAAM,CAAM;IACtB,UAAU,EAAE,UAAU,EAAE,CAAqB;IAC7C,MAAM,EAAE,MAAM,CAAM;IACpB,OAAO,EAAE,MAAM,CAAM;IACrB,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC,CAAM;IACtC,cAAc,EAAE,OAAO,CAAC;IAIxB,oBAAoB,EAAE,MAAM,CAAM;IAElC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAM;IAC9B,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAM;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAM;IAErB,UAAU,CAAC,MAAM,EAAE,gBAAgB;IAmBhD,KAAK;YAsBS,UAAU;YAUV,QAAQ;IAuBtB,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,oBAAoB;IAc5B,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,MAAM;IAaN,OAAO,CAAC,gBAAgB;IAiCxB,gBAAgB,CAAC,QAAQ,KAAA;IASnB,eAAe;IAOrB,YAAY;IAKZ,QAAQ;IAKR,aAAa,CAAC,eAAe,EAAE,aAAa;IAI5C,eAAe,CAAC,gBAAgB,EAAE,aAAa;IAUxC,sBAAsB;CAK9B"}
1
+ {"version":3,"file":"rule-dialog.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAiB,cAAc,EAAc,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAEL,aAAa,EAGb,UAAU,EACX,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAU9E,OAAO,EAAQ,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE7E;;;;;GAKG;AACH,qBAKa,UAAW,SAAQ,cAAc;IAC/B,WAAW,EAAE,WAAW,CAAC;IACvB,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,aAAa,CAAC;IAE5C,MAAM,EAAE,KAAK,CAAC;IACF,cAAc,EAAE,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;IAEjF,OAAO,CAAC,MAAM,CAAgB;IAClB,IAAI,EAAE,MAAM,CAAM;IAClB,WAAW,EAAE,MAAM,CAAM;IACzB,QAAQ,EAAE,MAAM,CAAM;IACtB,KAAK,EAAE,MAAM,CAAM;IACnB,QAAQ,EAAE,MAAM,CAAM;IACtB,UAAU,EAAE,UAAU,EAAE,CAAqB;IAC7C,MAAM,EAAE,MAAM,CAAM;IACpB,OAAO,EAAE,MAAM,CAAM;IACrB,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC,CAAM;IACtC,cAAc,EAAE,OAAO,CAAC;IAIxB,oBAAoB,EAAE,MAAM,CAAM;IAElC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAM;IAC9B,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAM;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAM;IAErB,UAAU,CAAC,MAAM,EAAE,gBAAgB;IAmBhD,KAAK;YAsBS,UAAU;YAUV,QAAQ;IAuBtB,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,oBAAoB;IAc5B,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,MAAM;IAaN,OAAO,CAAC,gBAAgB;IAkCxB,gBAAgB,CAAC,QAAQ,KAAA;IASnB,eAAe;IAOrB,YAAY;IAKZ,QAAQ;IAKR,aAAa,CAAC,eAAe,EAAE,aAAa;IAI5C,eAAe,CAAC,gBAAgB,EAAE,aAAa;IAUxC,sBAAsB;CAK9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"template-dialog.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAiB,cAAc,EAAwB,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAEL,aAAa,EAGb,UAAU,EACX,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAU3E,OAAO,EAAE,sBAAsB,EAAY,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE/F;;;;;GAKG;AACH,qBAKa,cAAe,SAAQ,cAAc;IAC/B,eAAe,EAAE,eAAe,CAAC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,aAAa,CAAC;IAE5C,MAAM,EAAE,KAAK,CAAC;IACF,kBAAkB,EAAE,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CACrF;IAEP,OAAO,CAAC,UAAU,CAAgB;IACtB,IAAI,EAAE,MAAM,CAAQ;IACpB,WAAW,EAAE,MAAM,CAAQ;IAC3B,MAAM,MAAQ;IACd,OAAO,MAAQ;IACf,QAAQ,EAAE,MAAM,CAAM;IACtB,KAAK,EAAE,MAAM,CAAM;IACnB,QAAQ,EAAE,MAAM,CAAM;IACtB,UAAU,EAAE,UAAU,EAAE,CAAqB;IAE7C,UAAU,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAM;IAC/C,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC,CAAM;IAItC,oBAAoB,EAAE,MAAM,CAAM;IAElC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAM;IAC9B,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAM;IAC1B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAM;IAEvC,OAAO,CAAC,cAAc,CAAkE;IAE3E,UAAU,CAAC,MAAM,EAAE,GAAG;IAoBnC,KAAK;YAuBS,cAAc;YAUd,YAAY;IAwB1B,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,oBAAoB;IAc5B,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,MAAM;IAwBN,OAAO,CAAC,oBAAoB;IAqC5B,gBAAgB,CAAC,QAAQ,KAAA;IASnB,eAAe;IAOrB,YAAY;IAKZ,QAAQ;IAKR,aAAa,CAAC,eAAe,EAAE,aAAa;IAI5C,eAAe,CAAC,gBAAgB,EAAE,aAAa;IAW/C,YAAY;IAIZ,aAAa,CAAC,eAAe,EAAE,sBAAsB;IAIrD,eAAe,CAAC,gBAAgB,EAAE,sBAAsB;IAYxD,IACW,sBAAsB,IAAI,OAAO,CAE3C;CACF"}
1
+ {"version":3,"file":"template-dialog.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAiB,cAAc,EAAwB,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAEL,aAAa,EAGb,UAAU,EACX,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAU3E,OAAO,EAAE,sBAAsB,EAAY,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE/F;;;;;GAKG;AACH,qBAKa,cAAe,SAAQ,cAAc;IAC/B,eAAe,EAAE,eAAe,CAAC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,aAAa,CAAC;IAE5C,MAAM,EAAE,KAAK,CAAC;IACF,kBAAkB,EAAE,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CACrF;IAEP,OAAO,CAAC,UAAU,CAAgB;IACtB,IAAI,EAAE,MAAM,CAAQ;IACpB,WAAW,EAAE,MAAM,CAAQ;IAC3B,MAAM,MAAQ;IACd,OAAO,MAAQ;IACf,QAAQ,EAAE,MAAM,CAAM;IACtB,KAAK,EAAE,MAAM,CAAM;IACnB,QAAQ,EAAE,MAAM,CAAM;IACtB,UAAU,EAAE,UAAU,EAAE,CAAqB;IAE7C,UAAU,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAM;IAC/C,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC,CAAM;IAItC,oBAAoB,EAAE,MAAM,CAAM;IAElC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAM;IAC9B,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAM;IAC1B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAM;IAEvC,OAAO,CAAC,cAAc,CAAkE;IAE3E,UAAU,CAAC,MAAM,EAAE,GAAG;IAoBnC,KAAK;YAuBS,cAAc;YAUd,YAAY;IAwB1B,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,oBAAoB;IAc5B,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,MAAM;IAwBN,OAAO,CAAC,oBAAoB;IAsC5B,gBAAgB,CAAC,QAAQ,KAAA;IASnB,eAAe;IAOrB,YAAY;IAKZ,QAAQ;IAKR,aAAa,CAAC,eAAe,EAAE,aAAa;IAI5C,eAAe,CAAC,gBAAgB,EAAE,aAAa;IAW/C,YAAY;IAIZ,aAAa,CAAC,eAAe,EAAE,sBAAsB;IAIrD,eAAe,CAAC,gBAAgB,EAAE,sBAAsB;IAYxD,IACW,sBAAsB,IAAI,OAAO,CAE3C;CACF"}
@@ -32,6 +32,7 @@ export declare class DynamicRuleUtils {
32
32
  static hasMultiValueCondition(conditions: ConditionNode[]): boolean;
33
33
  static hasOrJoin(conditions: ConditionNode[]): boolean;
34
34
  static hasGroup(conditions: ConditionNode[]): boolean;
35
+ static hasUnsupportedOperator(conditions: ConditionNode[]): boolean;
35
36
  static flattenConditions(conditions: ConditionNode[]): ConditionBuilderEntity[];
36
37
  static resolveLeftValues(conditions: ConditionNode[], fields: any[]): ConditionNode[];
37
38
  static createEmptyGroup: () => ConditionGroupEntity;
@@ -1 +1 @@
1
- {"version":3,"file":"notification-dashboard.utils.d.ts","sourceRoot":"","sources":["../../../../src/components/foundation-notification-dashboard/notification-dashboard.utils.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,aAAa,EASd,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,8DAA8D,CAAC;AAEtG,qBAAa,aAAa;IAClB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAO;IAChC,MAAM,CAAC,UAAU,QAAO,MAAM,CAAyB;CACxD;AAED,eAAO,MAAM,OAAO,GAAI,UAAK,YAC8C,CAAC;AAkH5E,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,oBAAoB,QAAO,sBAAsB,CAOrD;IAEH,MAAM,CAAC,gBAAgB,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM;;;;;;;;;MASpD;IAQH,MAAM,CAAC,oBAAoB,GACzB,OAAO,MAAM,EACb,MAAM,MAAM,EACZ,SAAQ;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,EAAO;;;;;;MAOpC;IAEH,MAAM,CAAC,kBAAkB,GAAI,aAAa,GAAG,EAAE,EAAE,OAAO,MAAM,KAAG,MAAM,CACS;IAIhF,MAAM,CAAC,iBAAiB,GAAI,aAAa,GAAG,EAAE,EAAE,OAAO,MAAM,KAAG,MAAM,CAGpE;IAKF,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,aAAa,EAAE,EAAE,UAAU,CAAC,KAAA,GAAG,GAAG;IAkBtE,MAAM,CAAC,sBAAsB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,OAAO;IAUnE,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,OAAO;IAWtD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,OAAO;IAOrD,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,sBAAsB,EAAE;IAa/E,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,aAAa,EAAE;IAcrF,MAAM,CAAC,gBAAgB,QAAO,oBAAoB,CAI/C;IAWH,MAAM,CAAC,kBAAkB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,MAAM;IAiB9D,MAAM,CAAC,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa,EAAE,GAAG,IAAI;CAazE;AAqRD,qBAAa,aAAa;IACxB,MAAM,CAAC,oBAAoB,QAAO,sBAAsB,CAOrD;IAEH,MAAM,CAAC,aAAa,CAAC,UAAU,KAAA;;;;;;;;IAe/B,OAAO,CAAC,MAAM,CAAC,eAAe;IAe9B,MAAM,CAAC,aAAa,CAAC,UAAU,KAAA,EAAE,UAAU,CAAC,KAAA;IAgB5C,MAAM,CAAC,sBAAsB,CAAC,UAAU,KAAA;CAmBzC;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,eAAe;IAe9B,MAAM,CAAC,aAAa,CAAC,UAAU,KAAA;CAYhC;AAID,wBAAgB,qBAAqB,CAAC,KAAK,KAAA,QAa1C"}
1
+ {"version":3,"file":"notification-dashboard.utils.d.ts","sourceRoot":"","sources":["../../../../src/components/foundation-notification-dashboard/notification-dashboard.utils.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,aAAa,EASd,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,8DAA8D,CAAC;AAEtG,qBAAa,aAAa;IAClB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAO;IAChC,MAAM,CAAC,UAAU,QAAO,MAAM,CAAyB;CACxD;AAED,eAAO,MAAM,OAAO,GAAI,UAAK,YAC8C,CAAC;AAkH5E,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,oBAAoB,QAAO,sBAAsB,CAOrD;IAEH,MAAM,CAAC,gBAAgB,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM;;;;;;;;;MASpD;IAQH,MAAM,CAAC,oBAAoB,GACzB,OAAO,MAAM,EACb,MAAM,MAAM,EACZ,SAAQ;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,EAAO;;;;;;MAOpC;IAEH,MAAM,CAAC,kBAAkB,GAAI,aAAa,GAAG,EAAE,EAAE,OAAO,MAAM,KAAG,MAAM,CACS;IAIhF,MAAM,CAAC,iBAAiB,GAAI,aAAa,GAAG,EAAE,EAAE,OAAO,MAAM,KAAG,MAAM,CAGpE;IAKF,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,aAAa,EAAE,EAAE,UAAU,CAAC,KAAA,GAAG,GAAG;IAkBtE,MAAM,CAAC,sBAAsB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,OAAO;IAUnE,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,OAAO;IAWtD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,OAAO;IAUrD,MAAM,CAAC,sBAAsB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,OAAO;IAYnE,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,sBAAsB,EAAE;IAa/E,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,aAAa,EAAE;IAcrF,MAAM,CAAC,gBAAgB,QAAO,oBAAoB,CAI/C;IAWH,MAAM,CAAC,kBAAkB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,MAAM;IAiB9D,MAAM,CAAC,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa,EAAE,GAAG,IAAI;CAazE;AAqUD,qBAAa,aAAa;IACxB,MAAM,CAAC,oBAAoB,QAAO,sBAAsB,CAOrD;IAEH,MAAM,CAAC,aAAa,CAAC,UAAU,KAAA;;;;;;;;IAe/B,OAAO,CAAC,MAAM,CAAC,eAAe;IAe9B,MAAM,CAAC,aAAa,CAAC,UAAU,KAAA,EAAE,UAAU,CAAC,KAAA;IAgB5C,MAAM,CAAC,sBAAsB,CAAC,UAAU,KAAA;CAmBzC;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,eAAe;IAe9B,MAAM,CAAC,aAAa,CAAC,UAAU,KAAA;CAYhC;AAID,wBAAgB,qBAAqB,CAAC,KAAK,KAAA,QAa1C"}
@@ -3,6 +3,8 @@ export declare enum LogicalOperator {
3
3
  NOT_EQUALS = "NOT_EQUALS",
4
4
  GREATER_THAN = "GREATER_THAN",
5
5
  LESS_THAN = "LESS_THAN",
6
+ STARTS_WITH = "STARTS_WITH",
7
+ ENDS_WITH = "ENDS_WITH",
6
8
  NULL = "NULL",
7
9
  NOT_NULL = "NOT_NULL",
8
10
  BLANK = "BLANK",
@@ -1 +1 @@
1
- {"version":3,"file":"notify.types.d.ts","sourceRoot":"","sources":["../../src/notify.types.ts"],"names":[],"mappings":"AACA,oBAAY,eAAe;IACzB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,YAAY,iBAAiB;IAC7B,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,SAAS,cAAc;CACxB;AAED,eAAO,MAAM,gBAAgB;;;GAiC5B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;GAyBhC,CAAC;AAEF,eAAO,MAAM,iCAAiC,mBAK7C,CAAC;AAEF,oBAAY,aAAa;IACvB,KAAK,UAAU;IACf,UAAU,eAAe;CAC1B;AAED,oBAAY,SAAS;IAEnB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAED,oBAAY,eAAe;IACzB,SAAS,cAAc;IACvB,aAAa,kBAAkB;IAC/B,OAAO,YAAY;CACpB;AAED,oBAAY,QAAQ;IAClB,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,oBAAY,cAAc;IACxB,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,WAAW,gBAAgB;CAC5B;AAED,oBAAY,UAAU;IACpB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,eAAe,oBAAoB;IACnC,KAAK,UAAU;CAChB;AAED,oBAAY,UAAU;IACpB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED,eAAO,MAAM,iBAAiB,cAAsB,CAAC;AAErD,oBAAY,UAAU;IACpB,KAAK,KAAK;IACV,IAAI,SAAS;CACd;AAID,oBAAY,YAAY;IACtB,GAAG,QAAQ;IACX,EAAE,OAAO;CACV;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,GAAG,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IAGpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAOF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,sBAAsB,GAAG,oBAAoB,CAAC"}
1
+ {"version":3,"file":"notify.types.d.ts","sourceRoot":"","sources":["../../src/notify.types.ts"],"names":[],"mappings":"AACA,oBAAY,eAAe;IACzB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,YAAY,iBAAiB;IAC7B,SAAS,cAAc;IAKvB,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,SAAS,cAAc;CACxB;AAED,eAAO,MAAM,gBAAgB;;;GAyC5B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;GAyBhC,CAAC;AAEF,eAAO,MAAM,iCAAiC,mBAK7C,CAAC;AAEF,oBAAY,aAAa;IACvB,KAAK,UAAU;IACf,UAAU,eAAe;CAC1B;AAED,oBAAY,SAAS;IAEnB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAED,oBAAY,eAAe;IACzB,SAAS,cAAc;IACvB,aAAa,kBAAkB;IAC/B,OAAO,YAAY;CACpB;AAED,oBAAY,QAAQ;IAClB,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,oBAAY,cAAc;IACxB,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,WAAW,gBAAgB;CAC5B;AAED,oBAAY,UAAU;IACpB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,eAAe,oBAAoB;IACnC,KAAK,UAAU;CAChB;AAED,oBAAY,UAAU;IACpB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED,eAAO,MAAM,iBAAiB,cAAsB,CAAC;AAErD,oBAAY,UAAU;IACpB,KAAK,KAAK;IACV,IAAI,SAAS;CACd;AAID,oBAAY,YAAY;IACtB,GAAG,QAAQ;IACX,EAAE,OAAO;CACV;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,GAAG,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IAGpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAOF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,sBAAsB,GAAG,oBAAoB,CAAC"}
@@ -247,17 +247,6 @@ export declare const RuleConditionGroup: React.ForwardRefExoticComponent<
247
247
  >;
248
248
  export type RuleConditionGroupRef = RuleConditionGroupWC;
249
249
 
250
- export declare const ParameterBuilder: React.ForwardRefExoticComponent<
251
- React.PropsWithChildren<
252
- Omit<PublicOf<ParameterBuilderWC>, 'children' | 'style'> &
253
- HTMLWCProps & {
254
- onDelete?: (event: CustomEvent<ParameterBuilderEntity>) => void;
255
- onEdit?: (event: CustomEvent<ParameterBuilderEntity>) => void;
256
- }
257
- > & React.RefAttributes<ParameterBuilderWC>
258
- >;
259
- export type ParameterBuilderRef = ParameterBuilderWC;
260
-
261
250
  export declare const TemplateConditionBuilder: React.ForwardRefExoticComponent<
262
251
  React.PropsWithChildren<
263
252
  Omit<PublicOf<TemplateConditionBuilderWC>, 'children' | 'style'> &
@@ -269,6 +258,17 @@ export declare const TemplateConditionBuilder: React.ForwardRefExoticComponent<
269
258
  >;
270
259
  export type TemplateConditionBuilderRef = TemplateConditionBuilderWC;
271
260
 
261
+ export declare const ParameterBuilder: React.ForwardRefExoticComponent<
262
+ React.PropsWithChildren<
263
+ Omit<PublicOf<ParameterBuilderWC>, 'children' | 'style'> &
264
+ HTMLWCProps & {
265
+ onDelete?: (event: CustomEvent<ParameterBuilderEntity>) => void;
266
+ onEdit?: (event: CustomEvent<ParameterBuilderEntity>) => void;
267
+ }
268
+ > & React.RefAttributes<ParameterBuilderWC>
269
+ >;
270
+ export type ParameterBuilderRef = ParameterBuilderWC;
271
+
272
272
  export declare const TemplateConditionGroup: React.ForwardRefExoticComponent<
273
273
  React.PropsWithChildren<
274
274
  Omit<PublicOf<TemplateConditionGroupWC>, 'children' | 'style'> &
@@ -149,7 +149,8 @@ let RuleDialog = class RuleDialog extends GenesisElement {
149
149
  // structured CONDITIONS. The server branches on which one is non-null.
150
150
  const useRaw = DynamicRuleUtils.hasMultiValueCondition(this.conditions) ||
151
151
  DynamicRuleUtils.hasOrJoin(this.conditions) ||
152
- DynamicRuleUtils.hasGroup(this.conditions);
152
+ DynamicRuleUtils.hasGroup(this.conditions) ||
153
+ DynamicRuleUtils.hasUnsupportedOperator(this.conditions);
153
154
  return Object.assign(Object.assign({}, (this.ruleDialogMode === RuleDialogMode.EDIT && { DYNAMIC_RULE_ID: this.ruleId })), { RULE_NAME: this.name, RULE_DESCRIPTION: this.description, RULE_TABLE: this.resource, TABLE_OPERATIONS: this.updateType, RULE_EXPRESSION: useRaw
154
155
  ? null
155
156
  : {
@@ -166,7 +166,8 @@ let TemplateDialog = class TemplateDialog extends GenesisElement {
166
166
  // excluded automatically.
167
167
  const useRaw = DynamicRuleUtils.hasMultiValueCondition(this.conditions) ||
168
168
  DynamicRuleUtils.hasOrJoin(this.conditions) ||
169
- DynamicRuleUtils.hasGroup(this.conditions);
169
+ DynamicRuleUtils.hasGroup(this.conditions) ||
170
+ DynamicRuleUtils.hasUnsupportedOperator(this.conditions);
170
171
  return Object.assign(Object.assign({}, (this.templateDialogMode === TemplateDialogMode.EDIT && {
171
172
  DYNAMIC_RULE_ID: this.templateId,
172
173
  })), { RULE_NAME: this.name, RULE_DESCRIPTION: this.description, RULE_TABLE: this.resource, TABLE_OPERATIONS: this.updateType, RULE_EXPRESSION: useRaw
@@ -156,6 +156,18 @@ export class DynamicRuleUtils {
156
156
  static hasGroup(conditions) {
157
157
  return conditions.some(isGroupNode);
158
158
  }
159
+ // STARTS_WITH/ENDS_WITH compile to a Groovy method-call clause
160
+ // (`FIELD.startsWith("value")`), which the structured CONDITIONS format
161
+ // cannot express - genesis-criteria's server-side Operation enum only has
162
+ // ==, !=, >, < (see EvaluatorExpressionParser). Any condition using one of
163
+ // these always forces RAW_RULE_EXPRESSION, same as a group or multi-value
164
+ // condition.
165
+ static hasUnsupportedOperator(conditions) {
166
+ return conditions.some((node) => isGroupNode(node)
167
+ ? DynamicRuleUtils.hasUnsupportedOperator(node.CHILDREN)
168
+ : node.LOGICAL_OPERATOR === LogicalOperator.STARTS_WITH ||
169
+ node.LOGICAL_OPERATOR === LogicalOperator.ENDS_WITH);
170
+ }
159
171
  // Flattens a condition/group tree into just its leaf conditions, at any
160
172
  // depth - for callers that only care about "is this parameter used
161
173
  // anywhere" and don't need to know the group structure.
@@ -329,6 +341,17 @@ const resolveTemplateTextExpression = (expr) => {
329
341
  return (_b = expr.VALUE) !== null && _b !== void 0 ? _b : '';
330
342
  }
331
343
  };
344
+ // Escapes a value for safe interpolation into a double-quoted Groovy string
345
+ // literal, guarding both injection routes double-quoted Groovy strings allow:
346
+ // 1. Breaking out of the literal, e.g. RIGHT_VALUE = `x") || (1==1` - closed
347
+ // off by escaping `"`.
348
+ // 2. GString interpolation, e.g. RIGHT_VALUE = `${1==1}` or `$foo` - Groovy
349
+ // evaluates `${...}`/`$identifier` as live code INSIDE a double-quoted
350
+ // string even without breaking out of it, so `"` alone is not enough;
351
+ // escaping `$` as `\$` forces it to stay a literal dollar sign.
352
+ // Order matters: backslash must be escaped first, before the other two
353
+ // replacements introduce new backslashes of their own.
354
+ const escapeGroovyStringLiteral = (value) => value.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\$/g, '\\$');
332
355
  const buildConditionClause = (condition) => {
333
356
  var _b;
334
357
  const name = condition.LEFT_VALUE.FIELD_NAME;
@@ -340,6 +363,21 @@ const buildConditionClause = (condition) => {
340
363
  if (logicalOperator === LogicalOperator.BLANK || logicalOperator === LogicalOperator.NOT_BLANK) {
341
364
  return `(${name} ${logicalOperator === LogicalOperator.BLANK ? '==' : '!='} "")`;
342
365
  }
366
+ if (logicalOperator === LogicalOperator.STARTS_WITH ||
367
+ logicalOperator === LogicalOperator.ENDS_WITH) {
368
+ // No structured-CONDITIONS representation - compiled as a Groovy method
369
+ // call, evaluated at runtime via the platform's Groovy-backed
370
+ // EvaluatorPool (confirmed: RAW_RULE_EXPRESSION is stored verbatim and
371
+ // never re-validated by the structured-expression parser at load/eval
372
+ // time, only at create/edit-time in the dashboard itself). Unlike the
373
+ // ==/>/< path below, the argument is always a String literal regardless
374
+ // of the field's own type - String.startsWith/endsWith takes a
375
+ // CharSequence, so UNQUOTED_FIELD_TYPES (which exists for bare numeric/
376
+ // boolean comparisons) doesn't apply here.
377
+ const method = logicalOperator === LogicalOperator.STARTS_WITH ? 'startsWith' : 'endsWith';
378
+ const value = escapeGroovyStringLiteral(String(condition.RIGHT_VALUE));
379
+ return `(${name}.${method}("${value}"))`;
380
+ }
343
381
  const op = (_b = OPERATOR_SYMBOLS[logicalOperator]) !== null && _b !== void 0 ? _b : '==';
344
382
  // Rules support a "FIELD" RIGHT_CRITERIA (compare to another field) via a
345
383
  // separate RightCriteria enum (rule-condition-builder.types.ts) that this
@@ -384,6 +422,22 @@ const parseAtom = (atom) => {
384
422
  value: '',
385
423
  };
386
424
  }
425
+ // FIELD.startsWith("value") / FIELD.endsWith("value") - the method-call
426
+ // clause buildConditionClause emits for STARTS_WITH/ENDS_WITH. Reverses
427
+ // escapeGroovyStringLiteral so the value round-trips through edit unchanged.
428
+ const methodMatch = inner.match(/^([A-Za-z0-9_]+)\.(startsWith|endsWith)\("(.*)"\)$/);
429
+ if (methodMatch) {
430
+ return {
431
+ name: methodMatch[1].trim(),
432
+ operator: methodMatch[2] === 'startsWith' ? LogicalOperator.STARTS_WITH : LogicalOperator.ENDS_WITH,
433
+ // Single combined-pattern pass (not sequential independent replaces) so
434
+ // an escaped backslash immediately followed by an escaped quote/dollar
435
+ // can't be misinterpreted - each `\` in the raw text is always followed
436
+ // by exactly one of \, ", or $ (escapeGroovyStringLiteral's output),
437
+ // and this consumes both characters together in one match.
438
+ value: methodMatch[3].replace(/\\([\\"$])/g, '$1'),
439
+ };
440
+ }
387
441
  const symbol = ['==', '!=', '>', '<'].find((s) => inner.includes(` ${s} `));
388
442
  if (!symbol)
389
443
  return null;
@@ -5,6 +5,12 @@ export var LogicalOperator;
5
5
  LogicalOperator["NOT_EQUALS"] = "NOT_EQUALS";
6
6
  LogicalOperator["GREATER_THAN"] = "GREATER_THAN";
7
7
  LogicalOperator["LESS_THAN"] = "LESS_THAN";
8
+ // No structured-CONDITIONS representation server-side (genesis-criteria's
9
+ // Operation enum has no string-method operator) - a condition using either
10
+ // of these always compiles to RAW_RULE_EXPRESSION. See
11
+ // DynamicRuleUtils.hasUnsupportedOperator.
12
+ LogicalOperator["STARTS_WITH"] = "STARTS_WITH";
13
+ LogicalOperator["ENDS_WITH"] = "ENDS_WITH";
8
14
  LogicalOperator["NULL"] = "NULL";
9
15
  LogicalOperator["NOT_NULL"] = "NOT_NULL";
10
16
  LogicalOperator["BLANK"] = "BLANK";
@@ -27,6 +33,14 @@ export const LogicalOperators = [
27
33
  label: 'Less Than',
28
34
  operator: 'LESS_THAN',
29
35
  },
36
+ {
37
+ label: 'Starts With',
38
+ operator: 'STARTS_WITH',
39
+ },
40
+ {
41
+ label: 'Ends With',
42
+ operator: 'ENDS_WITH',
43
+ },
30
44
  {
31
45
  label: 'Null',
32
46
  operator: 'NULL',
package/dist/react.cjs CHANGED
@@ -226,7 +226,7 @@ const RuleConditionGroup = React.forwardRef(function RuleConditionGroup(props, r
226
226
  return React.createElement(customElements.getName(RuleConditionGroupWC) ?? 'rule-condition-group', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
227
227
  });
228
228
 
229
- const ParameterBuilder = React.forwardRef(function ParameterBuilder(props, ref) {
229
+ const TemplateConditionBuilder = React.forwardRef(function TemplateConditionBuilder(props, ref) {
230
230
  const { onDelete, onEdit, children, ...rest } = props;
231
231
  const _innerRef = React.useRef(null);
232
232
  const _onDeleteRef = React.useRef(onDelete);
@@ -245,10 +245,10 @@ const ParameterBuilder = React.forwardRef(function ParameterBuilder(props, ref)
245
245
  el.removeEventListener('edit', _onEditFn);
246
246
  };
247
247
  }, []);
248
- return React.createElement(customElements.getName(ParameterBuilderWC) ?? 'parameter-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
248
+ return React.createElement(customElements.getName(TemplateConditionBuilderWC) ?? 'template-condition-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
249
249
  });
250
250
 
251
- const TemplateConditionBuilder = React.forwardRef(function TemplateConditionBuilder(props, ref) {
251
+ const ParameterBuilder = React.forwardRef(function ParameterBuilder(props, ref) {
252
252
  const { onDelete, onEdit, children, ...rest } = props;
253
253
  const _innerRef = React.useRef(null);
254
254
  const _onDeleteRef = React.useRef(onDelete);
@@ -267,7 +267,7 @@ const TemplateConditionBuilder = React.forwardRef(function TemplateConditionBuil
267
267
  el.removeEventListener('edit', _onEditFn);
268
268
  };
269
269
  }, []);
270
- return React.createElement(customElements.getName(TemplateConditionBuilderWC) ?? 'template-condition-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
270
+ return React.createElement(customElements.getName(ParameterBuilderWC) ?? 'parameter-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
271
271
  });
272
272
 
273
273
  const TemplateConditionGroup = React.forwardRef(function TemplateConditionGroup(props, ref) {
@@ -313,7 +313,7 @@ module.exports = {
313
313
  TemplateDialog,
314
314
  RuleConditionBuilder,
315
315
  RuleConditionGroup,
316
- ParameterBuilder,
317
316
  TemplateConditionBuilder,
317
+ ParameterBuilder,
318
318
  TemplateConditionGroup,
319
319
  };
package/dist/react.mjs CHANGED
@@ -224,7 +224,7 @@ export const RuleConditionGroup = React.forwardRef(function RuleConditionGroup(p
224
224
  return React.createElement(customElements.getName(RuleConditionGroupWC) ?? 'rule-condition-group', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
225
225
  });
226
226
 
227
- export const ParameterBuilder = React.forwardRef(function ParameterBuilder(props, ref) {
227
+ export const TemplateConditionBuilder = React.forwardRef(function TemplateConditionBuilder(props, ref) {
228
228
  const { onDelete, onEdit, children, ...rest } = props;
229
229
  const _innerRef = React.useRef(null);
230
230
  const _onDeleteRef = React.useRef(onDelete);
@@ -243,10 +243,10 @@ export const ParameterBuilder = React.forwardRef(function ParameterBuilder(props
243
243
  el.removeEventListener('edit', _onEditFn);
244
244
  };
245
245
  }, []);
246
- return React.createElement(customElements.getName(ParameterBuilderWC) ?? 'parameter-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
246
+ return React.createElement(customElements.getName(TemplateConditionBuilderWC) ?? 'template-condition-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
247
247
  });
248
248
 
249
- export const TemplateConditionBuilder = React.forwardRef(function TemplateConditionBuilder(props, ref) {
249
+ export const ParameterBuilder = React.forwardRef(function ParameterBuilder(props, ref) {
250
250
  const { onDelete, onEdit, children, ...rest } = props;
251
251
  const _innerRef = React.useRef(null);
252
252
  const _onDeleteRef = React.useRef(onDelete);
@@ -265,7 +265,7 @@ export const TemplateConditionBuilder = React.forwardRef(function TemplateCondit
265
265
  el.removeEventListener('edit', _onEditFn);
266
266
  };
267
267
  }, []);
268
- return React.createElement(customElements.getName(TemplateConditionBuilderWC) ?? 'template-condition-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
268
+ return React.createElement(customElements.getName(ParameterBuilderWC) ?? 'parameter-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
269
269
  });
270
270
 
271
271
  export const TemplateConditionGroup = React.forwardRef(function TemplateConditionGroup(props, ref) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@genesislcap/pbc-notify-ui",
3
3
  "description": "Genesis PBC Notify UI",
4
- "version": "14.484.2",
4
+ "version": "14.486.0",
5
5
  "license": "SEE LICENSE IN license.txt",
6
6
  "workspaces": [
7
7
  "client"
@@ -83,30 +83,30 @@
83
83
  "@commitlint/format": "^19.0.3",
84
84
  "@genesiscommunitysuccess/cep-fast-plugin": "5.0.3",
85
85
  "@genesiscommunitysuccess/custom-elements-lsp": "5.0.3",
86
- "@genesislcap/design-system-configurator": "14.484.2",
87
- "@genesislcap/eslint-config": "14.484.2",
88
- "@genesislcap/eslint-stylelint-builder": "14.484.2",
89
- "@genesislcap/foundation-testing": "14.484.2",
90
- "@genesislcap/genx": "14.484.2",
91
- "@genesislcap/prettier-config": "14.484.2",
92
- "@genesislcap/stylelint-config": "14.484.2",
93
- "@genesislcap/vite-builder": "14.484.2",
94
- "@genesislcap/webpack-builder": "14.484.2",
86
+ "@genesislcap/design-system-configurator": "14.486.0",
87
+ "@genesislcap/eslint-config": "14.486.0",
88
+ "@genesislcap/eslint-stylelint-builder": "14.486.0",
89
+ "@genesislcap/foundation-testing": "14.486.0",
90
+ "@genesislcap/genx": "14.486.0",
91
+ "@genesislcap/prettier-config": "14.486.0",
92
+ "@genesislcap/stylelint-config": "14.486.0",
93
+ "@genesislcap/vite-builder": "14.486.0",
94
+ "@genesislcap/webpack-builder": "14.486.0",
95
95
  "dayjs": "^1.11.7"
96
96
  },
97
97
  "dependencies": {
98
- "@genesislcap/foundation-comms": "14.484.2",
99
- "@genesislcap/foundation-criteria": "14.484.2",
100
- "@genesislcap/foundation-entity-management": "14.484.2",
101
- "@genesislcap/foundation-forms": "14.484.2",
102
- "@genesislcap/foundation-layout": "14.484.2",
103
- "@genesislcap/foundation-logger": "14.484.2",
104
- "@genesislcap/foundation-notifications": "14.484.2",
105
- "@genesislcap/foundation-ui": "14.484.2",
106
- "@genesislcap/foundation-utils": "14.484.2",
107
- "@genesislcap/rapid-design-system": "14.484.2",
108
- "@genesislcap/rapid-grid-pro": "14.484.2",
109
- "@genesislcap/web-core": "14.484.2",
98
+ "@genesislcap/foundation-comms": "14.486.0",
99
+ "@genesislcap/foundation-criteria": "14.486.0",
100
+ "@genesislcap/foundation-entity-management": "14.486.0",
101
+ "@genesislcap/foundation-forms": "14.486.0",
102
+ "@genesislcap/foundation-layout": "14.486.0",
103
+ "@genesislcap/foundation-logger": "14.486.0",
104
+ "@genesislcap/foundation-notifications": "14.486.0",
105
+ "@genesislcap/foundation-ui": "14.486.0",
106
+ "@genesislcap/foundation-utils": "14.486.0",
107
+ "@genesislcap/rapid-design-system": "14.486.0",
108
+ "@genesislcap/rapid-grid-pro": "14.486.0",
109
+ "@genesislcap/web-core": "14.486.0",
110
110
  "lodash.debounce": "^4.0.8",
111
111
  "rxjs": "^7.5.4"
112
112
  },
@@ -114,5 +114,5 @@
114
114
  "access": "public"
115
115
  },
116
116
  "customElements": "dist/custom-elements.json",
117
- "gitHead": "a7740b909c78ff2335e44ecd9d9d61d9ecb0f557"
117
+ "gitHead": "5de11f8989291fe8aaf19a7048dd6be68c0be9c8"
118
118
  }
@@ -182,7 +182,8 @@ export class RuleDialog extends GenesisElement {
182
182
  const useRaw =
183
183
  DynamicRuleUtils.hasMultiValueCondition(this.conditions) ||
184
184
  DynamicRuleUtils.hasOrJoin(this.conditions) ||
185
- DynamicRuleUtils.hasGroup(this.conditions);
185
+ DynamicRuleUtils.hasGroup(this.conditions) ||
186
+ DynamicRuleUtils.hasUnsupportedOperator(this.conditions);
186
187
  return {
187
188
  ...(this.ruleDialogMode === RuleDialogMode.EDIT && { DYNAMIC_RULE_ID: this.ruleId }),
188
189
  RULE_NAME: this.name,
@@ -201,7 +201,8 @@ export class TemplateDialog extends GenesisElement {
201
201
  const useRaw =
202
202
  DynamicRuleUtils.hasMultiValueCondition(this.conditions) ||
203
203
  DynamicRuleUtils.hasOrJoin(this.conditions) ||
204
- DynamicRuleUtils.hasGroup(this.conditions);
204
+ DynamicRuleUtils.hasGroup(this.conditions) ||
205
+ DynamicRuleUtils.hasUnsupportedOperator(this.conditions);
205
206
  return {
206
207
  ...(this.templateDialogMode === TemplateDialogMode.EDIT && {
207
208
  DYNAMIC_RULE_ID: this.templateId,
@@ -232,6 +232,21 @@ export class DynamicRuleUtils {
232
232
  return conditions.some(isGroupNode);
233
233
  }
234
234
 
235
+ // STARTS_WITH/ENDS_WITH compile to a Groovy method-call clause
236
+ // (`FIELD.startsWith("value")`), which the structured CONDITIONS format
237
+ // cannot express - genesis-criteria's server-side Operation enum only has
238
+ // ==, !=, >, < (see EvaluatorExpressionParser). Any condition using one of
239
+ // these always forces RAW_RULE_EXPRESSION, same as a group or multi-value
240
+ // condition.
241
+ static hasUnsupportedOperator(conditions: ConditionNode[]): boolean {
242
+ return conditions.some((node) =>
243
+ isGroupNode(node)
244
+ ? DynamicRuleUtils.hasUnsupportedOperator(node.CHILDREN)
245
+ : node.LOGICAL_OPERATOR === LogicalOperator.STARTS_WITH ||
246
+ node.LOGICAL_OPERATOR === LogicalOperator.ENDS_WITH,
247
+ );
248
+ }
249
+
235
250
  // Flattens a condition/group tree into just its leaf conditions, at any
236
251
  // depth - for callers that only care about "is this parameter used
237
252
  // anywhere" and don't need to know the group structure.
@@ -383,6 +398,19 @@ const resolveTemplateTextExpression = (expr: any): string => {
383
398
  }
384
399
  };
385
400
 
401
+ // Escapes a value for safe interpolation into a double-quoted Groovy string
402
+ // literal, guarding both injection routes double-quoted Groovy strings allow:
403
+ // 1. Breaking out of the literal, e.g. RIGHT_VALUE = `x") || (1==1` - closed
404
+ // off by escaping `"`.
405
+ // 2. GString interpolation, e.g. RIGHT_VALUE = `${1==1}` or `$foo` - Groovy
406
+ // evaluates `${...}`/`$identifier` as live code INSIDE a double-quoted
407
+ // string even without breaking out of it, so `"` alone is not enough;
408
+ // escaping `$` as `\$` forces it to stay a literal dollar sign.
409
+ // Order matters: backslash must be escaped first, before the other two
410
+ // replacements introduce new backslashes of their own.
411
+ const escapeGroovyStringLiteral = (value: string): string =>
412
+ value.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\$/g, '\\$');
413
+
386
414
  const buildConditionClause = (condition: ConditionBuilderEntity): string => {
387
415
  const name = condition.LEFT_VALUE.FIELD_NAME;
388
416
  const type = condition.LEFT_VALUE.FIELD_TYPE;
@@ -394,6 +422,23 @@ const buildConditionClause = (condition: ConditionBuilderEntity): string => {
394
422
  if (logicalOperator === LogicalOperator.BLANK || logicalOperator === LogicalOperator.NOT_BLANK) {
395
423
  return `(${name} ${logicalOperator === LogicalOperator.BLANK ? '==' : '!='} "")`;
396
424
  }
425
+ if (
426
+ logicalOperator === LogicalOperator.STARTS_WITH ||
427
+ logicalOperator === LogicalOperator.ENDS_WITH
428
+ ) {
429
+ // No structured-CONDITIONS representation - compiled as a Groovy method
430
+ // call, evaluated at runtime via the platform's Groovy-backed
431
+ // EvaluatorPool (confirmed: RAW_RULE_EXPRESSION is stored verbatim and
432
+ // never re-validated by the structured-expression parser at load/eval
433
+ // time, only at create/edit-time in the dashboard itself). Unlike the
434
+ // ==/>/< path below, the argument is always a String literal regardless
435
+ // of the field's own type - String.startsWith/endsWith takes a
436
+ // CharSequence, so UNQUOTED_FIELD_TYPES (which exists for bare numeric/
437
+ // boolean comparisons) doesn't apply here.
438
+ const method = logicalOperator === LogicalOperator.STARTS_WITH ? 'startsWith' : 'endsWith';
439
+ const value = escapeGroovyStringLiteral(String(condition.RIGHT_VALUE));
440
+ return `(${name}.${method}("${value}"))`;
441
+ }
397
442
 
398
443
  const op = OPERATOR_SYMBOLS[logicalOperator] ?? '==';
399
444
 
@@ -449,6 +494,24 @@ const parseAtom = (atom: string): { name: string; operator: string; value: strin
449
494
  };
450
495
  }
451
496
 
497
+ // FIELD.startsWith("value") / FIELD.endsWith("value") - the method-call
498
+ // clause buildConditionClause emits for STARTS_WITH/ENDS_WITH. Reverses
499
+ // escapeGroovyStringLiteral so the value round-trips through edit unchanged.
500
+ const methodMatch = inner.match(/^([A-Za-z0-9_]+)\.(startsWith|endsWith)\("(.*)"\)$/);
501
+ if (methodMatch) {
502
+ return {
503
+ name: methodMatch[1].trim(),
504
+ operator:
505
+ methodMatch[2] === 'startsWith' ? LogicalOperator.STARTS_WITH : LogicalOperator.ENDS_WITH,
506
+ // Single combined-pattern pass (not sequential independent replaces) so
507
+ // an escaped backslash immediately followed by an escaped quote/dollar
508
+ // can't be misinterpreted - each `\` in the raw text is always followed
509
+ // by exactly one of \, ", or $ (escapeGroovyStringLiteral's output),
510
+ // and this consumes both characters together in one match.
511
+ value: methodMatch[3].replace(/\\([\\"$])/g, '$1'),
512
+ };
513
+ }
514
+
452
515
  const symbol = ['==', '!=', '>', '<'].find((s) => inner.includes(` ${s} `));
453
516
  if (!symbol) return null;
454
517
  // Split on the FIRST occurrence only - a quoted value may itself contain
@@ -4,6 +4,12 @@ export enum LogicalOperator {
4
4
  NOT_EQUALS = 'NOT_EQUALS',
5
5
  GREATER_THAN = 'GREATER_THAN',
6
6
  LESS_THAN = 'LESS_THAN',
7
+ // No structured-CONDITIONS representation server-side (genesis-criteria's
8
+ // Operation enum has no string-method operator) - a condition using either
9
+ // of these always compiles to RAW_RULE_EXPRESSION. See
10
+ // DynamicRuleUtils.hasUnsupportedOperator.
11
+ STARTS_WITH = 'STARTS_WITH',
12
+ ENDS_WITH = 'ENDS_WITH',
7
13
  NULL = 'NULL',
8
14
  NOT_NULL = 'NOT_NULL',
9
15
  BLANK = 'BLANK',
@@ -27,6 +33,14 @@ export const LogicalOperators = [
27
33
  label: 'Less Than',
28
34
  operator: 'LESS_THAN',
29
35
  },
36
+ {
37
+ label: 'Starts With',
38
+ operator: 'STARTS_WITH',
39
+ },
40
+ {
41
+ label: 'Ends With',
42
+ operator: 'ENDS_WITH',
43
+ },
30
44
  {
31
45
  label: 'Null',
32
46
  operator: 'NULL',