@wix/patterns-fields 1.99.0 → 1.100.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.
Files changed (181) hide show
  1. package/dist/cjs/components/address/input/address-input.st.css.js +3 -3
  2. package/dist/cjs/components/address/input/address-input.st.css.js.map +1 -1
  3. package/dist/cjs/components/audio/actions/actions-menu/actions-menu.st.css.js +3 -3
  4. package/dist/cjs/components/audio/actions/actions-menu/actions-menu.st.css.js.map +1 -1
  5. package/dist/cjs/components/audio/audio-field/form-audio-field.st.css.js +4 -4
  6. package/dist/cjs/components/audio/audio-field/form-audio-field.st.css.js.map +1 -1
  7. package/dist/cjs/components/audio/audio-player/audio-player.st.css.js +2 -2
  8. package/dist/cjs/components/audio/audio-player/audio-player.st.css.js.map +1 -1
  9. package/dist/cjs/components/color-view/cell-color-view.st.css.js +3 -3
  10. package/dist/cjs/components/color-view/cell-color-view.st.css.js.map +1 -1
  11. package/dist/cjs/components/color-view/color-view.st.css.js +4 -4
  12. package/dist/cjs/components/color-view/color-view.st.css.js.map +1 -1
  13. package/dist/cjs/components/delete-dialog/delete-dialog.st.css.js +3 -3
  14. package/dist/cjs/components/delete-dialog/delete-dialog.st.css.js.map +1 -1
  15. package/dist/cjs/components/document/form-document-field.st.css.js +7 -7
  16. package/dist/cjs/components/document/form-document-field.st.css.js.map +1 -1
  17. package/dist/cjs/components/exclamation/exclamation.st.css.js +5 -5
  18. package/dist/cjs/components/exclamation/exclamation.st.css.js.map +1 -1
  19. package/dist/cjs/components/field-validation-settings/field-validation-settings-input.js +49 -38
  20. package/dist/cjs/components/field-validation-settings/field-validation-settings-input.js.map +1 -1
  21. package/dist/cjs/components/highlighted-text/highlighted-text.st.css.js +5 -5
  22. package/dist/cjs/components/highlighted-text/highlighted-text.st.css.js.map +1 -1
  23. package/dist/cjs/components/image/thumbnail-replace-overlay.st.css.js +3 -3
  24. package/dist/cjs/components/image/thumbnail-replace-overlay.st.css.js.map +1 -1
  25. package/dist/cjs/components/media-control/cell-media-edit-shell.st.css.js +2 -2
  26. package/dist/cjs/components/media-control/cell-media-edit-shell.st.css.js.map +1 -1
  27. package/dist/cjs/components/media-control/paste-url-button.st.css.js +4 -4
  28. package/dist/cjs/components/media-control/paste-url-button.st.css.js.map +1 -1
  29. package/dist/cjs/components/media-gallery/form-media-gallery-field.st.css.js +10 -10
  30. package/dist/cjs/components/media-gallery/form-media-gallery-field.st.css.js.map +1 -1
  31. package/dist/cjs/components/media-image/media-image.st.css.js +4 -4
  32. package/dist/cjs/components/media-image/media-image.st.css.js.map +1 -1
  33. package/dist/cjs/components/media-image/overlays/overlay.st.css.js +3 -3
  34. package/dist/cjs/components/media-image/overlays/overlay.st.css.js.map +1 -1
  35. package/dist/cjs/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
  36. package/dist/cjs/components/media-tag/web-media-tag/media-tag.st.css.js.map +1 -1
  37. package/dist/cjs/components/multi-document/cell-multi-document-edit.st.css.js +3 -3
  38. package/dist/cjs/components/multi-document/cell-multi-document-edit.st.css.js.map +1 -1
  39. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.st.css.js +5 -5
  40. package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.st.css.js.map +1 -1
  41. package/dist/cjs/components/reference/cell-multi-reference-input.st.css.js +2 -2
  42. package/dist/cjs/components/reference/cell-multi-reference-input.st.css.js.map +1 -1
  43. package/dist/cjs/components/reference/cell-reference-input.st.css.js +3 -3
  44. package/dist/cjs/components/reference/cell-reference-input.st.css.js.map +1 -1
  45. package/dist/cjs/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +4 -4
  46. package/dist/cjs/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js.map +1 -1
  47. package/dist/cjs/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +3 -3
  48. package/dist/cjs/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js.map +1 -1
  49. package/dist/cjs/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
  50. package/dist/cjs/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js.map +1 -1
  51. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +3 -3
  52. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js.map +1 -1
  53. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +3 -3
  54. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js.map +1 -1
  55. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
  56. package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js.map +1 -1
  57. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +7 -7
  58. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js.map +1 -1
  59. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +5 -5
  60. package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js.map +1 -1
  61. package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +4 -4
  62. package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js.map +1 -1
  63. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +18 -18
  64. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js.map +1 -1
  65. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +4 -4
  66. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js.map +1 -1
  67. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +18 -18
  68. package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js.map +1 -1
  69. package/dist/cjs/components/text/text-view.st.css.js +3 -3
  70. package/dist/cjs/components/text/text-view.st.css.js.map +1 -1
  71. package/dist/cjs/styles.global.css +1 -1
  72. package/dist/esm/components/address/input/address-input.st.css.js +2 -2
  73. package/dist/esm/components/audio/actions/actions-menu/actions-menu.st.css.js +2 -2
  74. package/dist/esm/components/audio/actions/actions-menu/actions-menu.st.css.js.map +1 -1
  75. package/dist/esm/components/audio/audio-field/form-audio-field.st.css.js +2 -2
  76. package/dist/esm/components/audio/audio-player/audio-player.st.css.js +2 -2
  77. package/dist/esm/components/audio/audio-player/audio-player.st.css.js.map +1 -1
  78. package/dist/esm/components/color-view/cell-color-view.st.css.js +2 -2
  79. package/dist/esm/components/color-view/color-view.st.css.js +2 -2
  80. package/dist/esm/components/color-view/color-view.st.css.js.map +1 -1
  81. package/dist/esm/components/delete-dialog/delete-dialog.st.css.js +2 -2
  82. package/dist/esm/components/delete-dialog/delete-dialog.st.css.js.map +1 -1
  83. package/dist/esm/components/document/form-document-field.st.css.js +2 -2
  84. package/dist/esm/components/exclamation/exclamation.st.css.js +2 -2
  85. package/dist/esm/components/exclamation/exclamation.st.css.js.map +1 -1
  86. package/dist/esm/components/field-validation-settings/field-validation-settings-input.js +20 -9
  87. package/dist/esm/components/field-validation-settings/field-validation-settings-input.js.map +1 -1
  88. package/dist/esm/components/highlighted-text/highlighted-text.st.css.js +3 -3
  89. package/dist/esm/components/image/thumbnail-replace-overlay.st.css.js +2 -2
  90. package/dist/esm/components/image/thumbnail-replace-overlay.st.css.js.map +1 -1
  91. package/dist/esm/components/media-control/cell-media-edit-shell.st.css.js +2 -2
  92. package/dist/esm/components/media-control/cell-media-edit-shell.st.css.js.map +1 -1
  93. package/dist/esm/components/media-control/paste-url-button.st.css.js +2 -2
  94. package/dist/esm/components/media-gallery/form-media-gallery-field.st.css.js +2 -2
  95. package/dist/esm/components/media-image/media-image.st.css.js +3 -3
  96. package/dist/esm/components/media-image/overlays/overlay.st.css.js +2 -2
  97. package/dist/esm/components/media-image/overlays/overlay.st.css.js.map +1 -1
  98. package/dist/esm/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
  99. package/dist/esm/components/multi-document/cell-multi-document-edit.st.css.js +2 -2
  100. package/dist/esm/components/multi-document/multi-document-input/form-multi-document.st.css.js +2 -2
  101. package/dist/esm/components/reference/cell-multi-reference-input.st.css.js +2 -2
  102. package/dist/esm/components/reference/cell-multi-reference-input.st.css.js.map +1 -1
  103. package/dist/esm/components/reference/cell-reference-input.st.css.js +2 -2
  104. package/dist/esm/components/reference/cell-reference-input.st.css.js.map +1 -1
  105. package/dist/esm/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +2 -2
  106. package/dist/esm/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js.map +1 -1
  107. package/dist/esm/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +2 -2
  108. package/dist/esm/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js.map +1 -1
  109. package/dist/esm/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
  110. package/dist/esm/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js.map +1 -1
  111. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +2 -2
  112. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +2 -2
  113. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js.map +1 -1
  114. package/dist/esm/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
  115. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +2 -2
  116. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js.map +1 -1
  117. package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +2 -2
  118. package/dist/esm/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +2 -2
  119. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +2 -2
  120. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js.map +1 -1
  121. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +2 -2
  122. package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +2 -2
  123. package/dist/esm/components/text/text-view.st.css.js +2 -2
  124. package/dist/esm/components/text/text-view.st.css.js.map +1 -1
  125. package/dist/esm/styles.global.css +1 -1
  126. package/dist/types/components/audio/actions/actions-menu/actions-menu.st.css.d.ts.map +1 -1
  127. package/dist/types/components/audio/audio-player/audio-player.st.css.d.ts.map +1 -1
  128. package/dist/types/components/color-view/color-view.st.css.d.ts.map +1 -1
  129. package/dist/types/components/delete-dialog/delete-dialog.st.css.d.ts.map +1 -1
  130. package/dist/types/components/exclamation/exclamation.st.css.d.ts.map +1 -1
  131. package/dist/types/components/field-validation-settings/field-validation-settings-input.d.ts.map +1 -1
  132. package/dist/types/components/image/thumbnail-replace-overlay.st.css.d.ts.map +1 -1
  133. package/dist/types/components/media-control/cell-media-edit-shell.st.css.d.ts.map +1 -1
  134. package/dist/types/components/media-image/overlays/overlay.st.css.d.ts.map +1 -1
  135. package/dist/types/components/reference/cell-multi-reference-input.st.css.d.ts.map +1 -1
  136. package/dist/types/components/reference/cell-reference-input.st.css.d.ts.map +1 -1
  137. package/dist/types/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.d.ts.map +1 -1
  138. package/dist/types/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.d.ts.map +1 -1
  139. package/dist/types/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.d.ts.map +1 -1
  140. package/dist/types/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.d.ts.map +1 -1
  141. package/dist/types/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.d.ts.map +1 -1
  142. package/dist/types/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.d.ts.map +1 -1
  143. package/dist/types/components/text/text-view.st.css.d.ts.map +1 -1
  144. package/package.json +4 -4
  145. package/src/__tests__/components/field-validation-settings/field-validation-settings-input.spec.tsx +144 -0
  146. package/src/components/address/input/address-input.st.css.ts +2 -2
  147. package/src/components/audio/actions/actions-menu/actions-menu.st.css.ts +2 -2
  148. package/src/components/audio/audio-field/form-audio-field.st.css.ts +2 -2
  149. package/src/components/audio/audio-player/audio-player.st.css.ts +2 -2
  150. package/src/components/color-view/cell-color-view.st.css.ts +2 -2
  151. package/src/components/color-view/color-view.st.css.ts +2 -2
  152. package/src/components/delete-dialog/delete-dialog.st.css.ts +2 -2
  153. package/src/components/document/form-document-field.st.css.ts +2 -2
  154. package/src/components/exclamation/exclamation.st.css.ts +2 -2
  155. package/src/components/field-validation-settings/field-validation-settings-input.tsx +28 -9
  156. package/src/components/highlighted-text/highlighted-text.st.css.ts +3 -3
  157. package/src/components/image/thumbnail-replace-overlay.st.css.ts +2 -2
  158. package/src/components/media-control/cell-media-edit-shell.st.css.ts +2 -2
  159. package/src/components/media-control/paste-url-button.st.css.ts +2 -2
  160. package/src/components/media-gallery/form-media-gallery-field.st.css.ts +2 -2
  161. package/src/components/media-image/media-image.st.css.ts +3 -3
  162. package/src/components/media-image/overlays/overlay.st.css.ts +2 -2
  163. package/src/components/media-tag/web-media-tag/media-tag.st.css.ts +2 -2
  164. package/src/components/multi-document/cell-multi-document-edit.st.css.ts +2 -2
  165. package/src/components/multi-document/multi-document-input/form-multi-document.st.css.ts +2 -2
  166. package/src/components/reference/cell-multi-reference-input.st.css.ts +2 -2
  167. package/src/components/reference/cell-reference-input.st.css.ts +2 -2
  168. package/src/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.ts +2 -2
  169. package/src/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.ts +2 -2
  170. package/src/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.ts +2 -2
  171. package/src/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.ts +2 -2
  172. package/src/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.ts +2 -2
  173. package/src/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.ts +2 -2
  174. package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.ts +2 -2
  175. package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.ts +2 -2
  176. package/src/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.ts +2 -2
  177. package/src/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.ts +2 -2
  178. package/src/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.ts +2 -2
  179. package/src/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.ts +2 -2
  180. package/src/components/text/text-view.st.css.ts +2 -2
  181. package/src/styles.global.css +1 -1
@@ -443,6 +443,150 @@ describe('FieldValidationSettingsInput', () => {
443
443
  });
444
444
  });
445
445
 
446
+ it('explains the conflict under every rule a both-on field carries', async () => {
447
+ const { driver } = renderInput({
448
+ charactersLimit: { min: 2, max: 20 },
449
+ specificValues: [{ id: 'one', value: 'One' }],
450
+ });
451
+
452
+ expect(
453
+ await driver.getExclusiveRulesExplanation('specific-values').text(),
454
+ ).toBe('Disable the active rule first.');
455
+ expect(
456
+ await driver.getExclusiveRulesExplanation('characters-limit').text(),
457
+ ).toBe("You can't limit character count for specific values.");
458
+ expect(await driver.getExclusiveRulesExplanation('pattern').text()).toBe(
459
+ "You can't add pattern validation for specific values.",
460
+ );
461
+ });
462
+
463
+ it('freezes the inputs a both-on field cannot save while leaving toggles live', async () => {
464
+ const { driver } = renderInput({
465
+ charactersLimit: { min: 2, max: 20 },
466
+ specificValues: [{ id: 'one', value: 'One' }],
467
+ });
468
+
469
+ expect(await driver.getMinCharactersInput().isDisabled()).toBe(true);
470
+ expect(await driver.getMaxCharactersInput().isDisabled()).toBe(true);
471
+ expect(await driver.getSpecificValueInput(0).isDisabled()).toBe(false);
472
+ expect(await driver.getCharactersLimitToggle().isDisabled()).toBe(false);
473
+ expect(await driver.getSpecificValuesToggle().isDisabled()).toBe(false);
474
+ });
475
+
476
+ it('freezes the pattern input when pattern is the conflicting rule', async () => {
477
+ const { driver } = renderInput({
478
+ pattern: '^value$',
479
+ specificValues: [{ id: 'one', value: 'One' }],
480
+ });
481
+
482
+ expect(await driver.getPatternInput().isDisabled()).toBe(true);
483
+ expect(await driver.getPatternToggle().isDisabled()).toBe(false);
484
+ expect(await driver.getExclusiveRulesExplanation('pattern').text()).toBe(
485
+ "You can't add pattern validation for specific values.",
486
+ );
487
+ });
488
+
489
+ it('stops explaining and unfreezes the limit once the conflict is resolved', async () => {
490
+ const { driver } = renderInput({
491
+ charactersLimit: { min: 2, max: 20 },
492
+ specificValues: [{ id: 'one', value: 'One' }],
493
+ });
494
+
495
+ await driver.getSpecificValuesToggle().click();
496
+
497
+ expect(await driver.getMinCharactersInput().isDisabled()).toBe(false);
498
+ expect(await driver.getMaxCharactersInput().isDisabled()).toBe(false);
499
+ expect(
500
+ await driver.getExclusiveRulesExplanation('characters-limit').exists(),
501
+ ).toBe(false);
502
+ expect(
503
+ await driver.getExclusiveRulesExplanation('specific-values').text(),
504
+ ).toBe('Disable the active rule first.');
505
+ });
506
+
507
+ it('leaves a both-on field alone when specific values are not exclusive', async () => {
508
+ const { driver } = renderInput(
509
+ {
510
+ charactersLimit: { min: 2, max: 20 },
511
+ specificValues: [{ id: 'one', value: 'One' }],
512
+ },
513
+ { exclusiveSpecificValues: false },
514
+ );
515
+
516
+ expect(await driver.getMinCharactersInput().isDisabled()).toBe(false);
517
+ expect(await driver.getMaxCharactersInput().isDisabled()).toBe(false);
518
+ expect(await driver.hasExclusiveRulesExplanation()).toBe(false);
519
+ });
520
+
521
+ it('keeps the unattributed invalid styling while rules conflict', async () => {
522
+ const { driver } = renderInput(
523
+ {
524
+ charactersLimit: { min: 2, max: 20 },
525
+ specificValues: [{ id: 'one', value: 'One' }],
526
+ },
527
+ { invalid: true },
528
+ );
529
+
530
+ expect(await driver.getMinCharactersInput().hasStatus('error')).toBe(true);
531
+ expect(await driver.getMaxCharactersInput().hasStatus('error')).toBe(true);
532
+ });
533
+
534
+ it('drops the blanket highlight once a control owns an error of its own', async () => {
535
+ const { driver } = renderInput(
536
+ {
537
+ charactersLimit: { min: -1 },
538
+ specificValues: [{ id: 'one', value: 'One' }],
539
+ },
540
+ { invalid: true },
541
+ );
542
+
543
+ expect(await driver.getMinCharactersInput().hasStatus('error')).toBe(true);
544
+ expect(await driver.getMaxCharactersInput().hasStatus('error')).toBe(false);
545
+ });
546
+
547
+ it('freezes both conflicting rules when a field carries all three', async () => {
548
+ const { driver } = renderInput({
549
+ charactersLimit: { min: 2, max: 20 },
550
+ pattern: '^value$',
551
+ specificValues: [{ id: 'one', value: 'One' }],
552
+ });
553
+
554
+ expect(await driver.getMinCharactersInput().isDisabled()).toBe(true);
555
+ expect(await driver.getMaxCharactersInput().isDisabled()).toBe(true);
556
+ expect(await driver.getPatternInput().isDisabled()).toBe(true);
557
+ expect(
558
+ await driver.getExclusiveRulesExplanation('specific-values').text(),
559
+ ).toBe('Disable the active rule first.');
560
+ expect(
561
+ await driver.getExclusiveRulesExplanation('characters-limit').text(),
562
+ ).toBe("You can't limit character count for specific values.");
563
+ expect(await driver.getExclusiveRulesExplanation('pattern').text()).toBe(
564
+ "You can't add pattern validation for specific values.",
565
+ );
566
+ });
567
+
568
+ it('shows a legacy shared explanation once when both rules are on', async () => {
569
+ const { container } = renderInput(
570
+ {
571
+ charactersLimit: { min: 2, max: 20 },
572
+ specificValues: [{ id: 'one', value: 'One' }],
573
+ },
574
+ {
575
+ rules: [
576
+ { ...charactersLimitRule, exclusiveRulesExplanation: undefined },
577
+ specificValuesRule,
578
+ { ...patternRule, exclusiveRulesExplanation: undefined },
579
+ ],
580
+ },
581
+ );
582
+
583
+ expect(
584
+ Array.from(
585
+ container.querySelectorAll('[data-hook$="exclusive-help"]'),
586
+ ).map((node) => node.textContent),
587
+ ).toEqual(['Disable the active rule first.']);
588
+ });
589
+
446
590
  it('enables, edits, validates, and disables a string pattern', async () => {
447
591
  const { driver, onChange } = renderInput({});
448
592
 
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../../stylable-esm-runtime.js"
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "addressinput1842615891";
8
+ var _namespace_ = "addressinput3751855153";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"addressinput1842615891__root","tableAddressInput":"addressinput1842615891__tableAddressInput"};
16
+ export var classes = {"root":"addressinput3751855153__root","tableAddressInput":"addressinput3751855153__tableAddressInput"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../../../stylable-esm-runtime.
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "actionsmenu488835272";
8
+ var _namespace_ = "actionsmenu2253053106";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"actionsmenu488835272__root","action":"actionsmenu488835272__action"};
16
+ export var classes = {"root":"actionsmenu2253053106__root","action":"actionsmenu2253053106__action"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../../stylable-esm-runtime.js"
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "formaudiofield3428099532";
8
+ var _namespace_ = "formaudiofield2277610689";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"formaudiofield3428099532__root","addItem":"formaudiofield3428099532__addItem","mediaTitle":"formaudiofield3428099532__mediaTitle"};
16
+ export var classes = {"root":"formaudiofield2277610689__root","addItem":"formaudiofield2277610689__addItem","mediaTitle":"formaudiofield2277610689__mediaTitle"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../../stylable-esm-runtime.js"
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "audioplayer843647744";
8
+ var _namespace_ = "audioplayer4170845744";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"audioplayer843647744__root"};
16
+ export var classes = {"root":"audioplayer4170845744__root"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "cellcolorview1406342887";
8
+ var _namespace_ = "cellcolorview2441473951";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"cellcolorview1406342887__root","hashPrefix":"cellcolorview1406342887__hashPrefix"};
16
+ export var classes = {"root":"cellcolorview2441473951__root","hashPrefix":"cellcolorview2441473951__hashPrefix"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "colorview3558273599";
8
+ var _namespace_ = "colorview957129943";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"colorview3558273599__root","view":"colorview3558273599__view","fillPreview":"colorview3558273599__fillPreview"};
16
+ export var classes = {"root":"colorview957129943__root","view":"colorview957129943__view","fillPreview":"colorview957129943__fillPreview"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "deletedialog3397577809";
8
+ var _namespace_ = "deletedialog181712075";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"deletedialog3397577809__root","layout":"deletedialog3397577809__layout"};
16
+ export var classes = {"root":"deletedialog181712075__root","layout":"deletedialog181712075__layout"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "formdocumentfield3898225755";
8
+ var _namespace_ = "formdocumentfield2106294429";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"formdocumentfield3898225755__root","viewWrapper":"formdocumentfield3898225755__viewWrapper","textWidth":"formdocumentfield3898225755__textWidth","documentLoader":"formdocumentfield3898225755__documentLoader","addDocument":"formdocumentfield3898225755__addDocument","addItemWrapper":"formdocumentfield3898225755__addItemWrapper"};
16
+ export var classes = {"root":"formdocumentfield2106294429__root","viewWrapper":"formdocumentfield2106294429__viewWrapper","textWidth":"formdocumentfield2106294429__textWidth","documentLoader":"formdocumentfield2106294429__documentLoader","addDocument":"formdocumentfield2106294429__addDocument","addItemWrapper":"formdocumentfield2106294429__addItemWrapper"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "exclamation2088445520";
8
+ var _namespace_ = "exclamation319191963";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"exclamation2088445520__root","exclamation":"exclamation2088445520__exclamation","actions":"exclamation2088445520__actions","action":"exclamation2088445520__action"};
16
+ export var classes = {"root":"exclamation319191963__root","exclamation":"exclamation319191963__exclamation","actions":"exclamation319191963__actions","action":"exclamation319191963__action"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -104,8 +104,11 @@ export const FieldValidationSettingsInput = ({
104
104
  const hasCharactersLimit =
105
105
  supportsCharactersLimit && data.charactersLimit !== undefined;
106
106
  const hasPattern = supportsPattern && data.pattern !== undefined;
107
+ // Other violations put an error on a control; `exclusiveRules` renders only as
108
+ // text under the rule, so it leaves `invalid` unattributed.
107
109
  const hasUnattributedInvalidState =
108
- Boolean(invalid) && violations.length === 0;
110
+ Boolean(invalid) &&
111
+ violations.every(({ type }) => type === 'exclusiveRules');
109
112
  const isBlockedByExclusivity = (rule: FieldValidationRule) => {
110
113
  if (!exclusiveSpecificValues) {
111
114
  return false;
@@ -121,29 +124,40 @@ export const FieldValidationSettingsInput = ({
121
124
  return false;
122
125
  }
123
126
  };
127
+ // Widening `isBlockedByExclusivity` to cover the both-on state instead would
128
+ // disable both toggles at once, leaving no way to switch either rule off.
129
+ const isInExclusiveConflict = (rule: FieldValidationRule) =>
130
+ violations.some(
131
+ (violation) =>
132
+ violation.rule === rule && violation.type === 'exclusiveRules',
133
+ );
124
134
  const specificValuesExplanation = rules.find(
125
135
  (rule): rule is SpecificValuesFieldValidationRuleConfig =>
126
136
  rule.type === 'specificValues',
127
137
  )?.exclusiveRulesExplanation;
128
138
  // Callers written before the note moved under the blocked rule put a single
129
- // explanation on `specificValues`. Show it once rather than dropping it.
139
+ // explanation on `specificValues`. Show it once rather than dropping it —
140
+ // `specificValues` renders that same copy as its own, so both paths count.
130
141
  let hasRenderedSharedExplanation = false;
131
142
  const renderExclusiveRulesExplanation = (
132
143
  rule: FieldValidationRule,
133
144
  hook: string,
134
145
  explanation?: string,
135
146
  ) => {
136
- if (!isBlockedByExclusivity(rule)) {
147
+ if (!isBlockedByExclusivity(rule) && !isInExclusiveConflict(rule)) {
137
148
  return null;
138
149
  }
139
150
 
140
- let text = explanation;
151
+ const text = explanation ?? specificValuesExplanation;
141
152
 
142
153
  if (!text) {
143
- if (hasRenderedSharedExplanation || !specificValuesExplanation) {
154
+ return null;
155
+ }
156
+
157
+ if (text === specificValuesExplanation) {
158
+ if (hasRenderedSharedExplanation) {
144
159
  return null;
145
160
  }
146
- text = specificValuesExplanation;
147
161
  hasRenderedSharedExplanation = true;
148
162
  }
149
163
 
@@ -189,6 +203,9 @@ export const FieldValidationSettingsInput = ({
189
203
  violation.rule === 'charactersLimit' &&
190
204
  violation.type === 'maxBelowMin',
191
205
  );
206
+ const isInputDisabled =
207
+ isRuleDisabled('charactersLimit') ||
208
+ isInExclusiveConflict('charactersLimit');
192
209
 
193
210
  return (
194
211
  <Box key="charactersLimit" direction="vertical" gap="SP2">
@@ -213,7 +230,7 @@ export const FieldValidationSettingsInput = ({
213
230
  dataHook="field-validation-min-characters"
214
231
  size="small"
215
232
  value={data.charactersLimit?.min}
216
- disabled={isRuleDisabled('charactersLimit')}
233
+ disabled={isInputDisabled}
217
234
  status={
218
235
  hasUnattributedInvalidState || minViolation
219
236
  ? 'error'
@@ -247,7 +264,7 @@ export const FieldValidationSettingsInput = ({
247
264
  dataHook="field-validation-max-characters"
248
265
  size="small"
249
266
  value={data.charactersLimit?.max}
250
- disabled={isRuleDisabled('charactersLimit')}
267
+ disabled={isInputDisabled}
251
268
  status={
252
269
  hasUnattributedInvalidState ||
253
270
  maxOutOfBoundsViolation ||
@@ -423,7 +440,9 @@ export const FieldValidationSettingsInput = ({
423
440
  dataHook="field-validation-pattern-input"
424
441
  size="small"
425
442
  value={data.pattern}
426
- disabled={isRuleDisabled('pattern')}
443
+ disabled={
444
+ isRuleDisabled('pattern') || isInExclusiveConflict('pattern')
445
+ }
427
446
  status={
428
447
  hasUnattributedInvalidState || patternViolation
429
448
  ? 'error'
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "highlightedtext2205306294";
8
+ var _namespace_ = "highlightedtext1183810410";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,8 +13,8 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"highlightedtext2205306294__root","substring":"highlightedtext2205306294__substring"};
17
- export var keyframes = {"highlighted":"highlightedtext2205306294__highlighted","highlighted-match":"highlightedtext2205306294__highlighted-match"};
16
+ export var classes = {"root":"highlightedtext1183810410__root","substring":"highlightedtext1183810410__substring"};
17
+ export var keyframes = {"highlighted":"highlightedtext1183810410__highlighted","highlighted-match":"highlightedtext1183810410__highlighted-match"};
18
18
  export var layers = {};
19
19
  export var containers = {};
20
20
  export var stVars = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "thumbnailreplaceoverlay3810574377";
8
+ var _namespace_ = "thumbnailreplaceoverlay142596445";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"thumbnailreplaceoverlay3810574377__root","icon":"thumbnailreplaceoverlay3810574377__icon"};
16
+ export var classes = {"root":"thumbnailreplaceoverlay142596445__root","icon":"thumbnailreplaceoverlay142596445__icon"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "cellmediaeditshell1576869378";
8
+ var _namespace_ = "cellmediaeditshell937768104";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"cellmediaeditshell1576869378__root"};
16
+ export var classes = {"root":"cellmediaeditshell937768104__root"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "pasteurlbutton2410213275";
8
+ var _namespace_ = "pasteurlbutton1414539464";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"pasteurlbutton2410213275__root","iconButtonTooltip":"pasteurlbutton2410213275__iconButtonTooltip","iconButton":"pasteurlbutton2410213275__iconButton"};
16
+ export var classes = {"root":"pasteurlbutton1414539464__root","iconButtonTooltip":"pasteurlbutton1414539464__iconButtonTooltip","iconButton":"pasteurlbutton1414539464__iconButton"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "formmediagalleryfield4067745930";
8
+ var _namespace_ = "formmediagalleryfield1202900369";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"formmediagalleryfield4067745930__root","container":"formmediagalleryfield4067745930__container","viewBox":"formmediagalleryfield4067745930__viewBox","addItemWrapper":"formmediagalleryfield4067745930__addItemWrapper","addItem":"formmediagalleryfield4067745930__addItem","overlay":"formmediagalleryfield4067745930__overlay","image":"formmediagalleryfield4067745930__image","previewImage":"formmediagalleryfield4067745930__previewImage","previewVideo":"formmediagalleryfield4067745930__previewVideo"};
16
+ export var classes = {"root":"formmediagalleryfield1202900369__root","container":"formmediagalleryfield1202900369__container","viewBox":"formmediagalleryfield1202900369__viewBox","addItemWrapper":"formmediagalleryfield1202900369__addItemWrapper","addItem":"formmediagalleryfield1202900369__addItem","overlay":"formmediagalleryfield1202900369__overlay","image":"formmediagalleryfield1202900369__image","previewImage":"formmediagalleryfield1202900369__previewImage","previewVideo":"formmediagalleryfield1202900369__previewVideo"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "mediaimage751937972";
8
+ var _namespace_ = "mediaimage553009223";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,12 +13,12 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"mediaimage751937972__root"};
16
+ export var classes = {"root":"mediaimage553009223__root"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
20
20
  export var stVars = {};
21
- export var vars = {"wds-color-red-200":"--wds-color-red-200","wsr-color-R20":"--wsr-color-R20","wds-color-black-550":"--wds-color-black-550","wsr-color-D55":"--wsr-color-D55","from":"--mediaimage751937972-from","to":"--mediaimage751937972-to"};
21
+ export var vars = {"wds-color-red-200":"--wds-color-red-200","wsr-color-R20":"--wsr-color-R20","wds-color-black-550":"--wds-color-black-550","wsr-color-D55":"--wsr-color-D55","from":"--mediaimage553009223-from","to":"--mediaimage553009223-to"};
22
22
 
23
23
 
24
24
 
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../../stylable-esm-runtime.js"
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "overlay2541288109";
8
+ var _namespace_ = "overlay732625331";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"overlay2541288109__root","iconOverlay":"overlay2541288109__iconOverlay"};
16
+ export var classes = {"root":"overlay732625331__root","iconOverlay":"overlay732625331__iconOverlay"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../../stylable-esm-runtime.js"
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "mediatag2984310725";
8
+ var _namespace_ = "mediatag2827893615";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"mediatag2984310725__root"};
16
+ export var classes = {"root":"mediatag2827893615__root"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "cellmultidocumentedit2069921304";
8
+ var _namespace_ = "cellmultidocumentedit1559378976";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"cellmultidocumentedit2069921304__root","chipTrigger":"cellmultidocumentedit2069921304__chipTrigger"};
16
+ export var classes = {"root":"cellmultidocumentedit1559378976__root","chipTrigger":"cellmultidocumentedit1559378976__chipTrigger"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../../stylable-esm-runtime.js"
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "formmultidocument3200037661";
8
+ var _namespace_ = "formmultidocument1172689394";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"formmultidocument3200037661__root","viewRoot":"formmultidocument3200037661__viewRoot","singleViewWrapper":"formmultidocument3200037661__singleViewWrapper","addDocumentButton":"formmultidocument3200037661__addDocumentButton"};
16
+ export var classes = {"root":"formmultidocument1172689394__root","viewRoot":"formmultidocument1172689394__viewRoot","singleViewWrapper":"formmultidocument1172689394__singleViewWrapper","addDocumentButton":"formmultidocument1172689394__addDocumentButton"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "cellmultireferenceinput29376945";
8
+ var _namespace_ = "cellmultireferenceinput3368755835";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style: import("@stylable/runtime").STFunction = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"cellmultireferenceinput29376945__root"};
16
+ export var classes = {"root":"cellmultireferenceinput3368755835__root"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};