@wix/patterns-fields 1.111.0 → 1.112.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.
- package/dist/cjs/components/address/input/address-input.st.css.js +3 -3
- package/dist/cjs/components/address/input/address-input.st.css.js.map +1 -1
- package/dist/cjs/components/audio/actions/actions-menu/actions-menu.st.css.js +3 -3
- package/dist/cjs/components/audio/actions/actions-menu/actions-menu.st.css.js.map +1 -1
- package/dist/cjs/components/audio/audio-field/form-audio-field.st.css.js +4 -4
- package/dist/cjs/components/audio/audio-field/form-audio-field.st.css.js.map +1 -1
- package/dist/cjs/components/audio/audio-player/audio-player.st.css.js +2 -2
- package/dist/cjs/components/audio/audio-player/audio-player.st.css.js.map +1 -1
- package/dist/cjs/components/color-view/cell-color-view.st.css.js +3 -3
- package/dist/cjs/components/color-view/cell-color-view.st.css.js.map +1 -1
- package/dist/cjs/components/color-view/color-view.st.css.js +4 -4
- package/dist/cjs/components/color-view/color-view.st.css.js.map +1 -1
- package/dist/cjs/components/delete-dialog/delete-dialog.st.css.js +3 -3
- package/dist/cjs/components/delete-dialog/delete-dialog.st.css.js.map +1 -1
- package/dist/cjs/components/document/form-document-field.st.css.js +7 -7
- package/dist/cjs/components/document/form-document-field.st.css.js.map +1 -1
- package/dist/cjs/components/exclamation/exclamation.st.css.js +5 -5
- package/dist/cjs/components/exclamation/exclamation.st.css.js.map +1 -1
- package/dist/cjs/components/field-validation-settings/field-validation-settings-input.js +80 -132
- package/dist/cjs/components/field-validation-settings/field-validation-settings-input.js.map +1 -1
- package/dist/cjs/components/field-validation-settings/field-validation-settings-input.st.css +10 -0
- package/dist/cjs/components/field-validation-settings/field-validation-settings-input.st.css.js +23 -0
- package/dist/cjs/components/field-validation-settings/field-validation-settings-input.st.css.js.map +1 -0
- package/dist/cjs/components/field-validation-settings/field-validation-settings.uni.driver.js +21 -3
- package/dist/cjs/components/field-validation-settings/field-validation-settings.uni.driver.js.map +1 -1
- package/dist/cjs/components/highlighted-text/highlighted-text.st.css.js +5 -5
- package/dist/cjs/components/highlighted-text/highlighted-text.st.css.js.map +1 -1
- package/dist/cjs/components/image/thumbnail-replace-overlay.st.css.js +3 -3
- package/dist/cjs/components/image/thumbnail-replace-overlay.st.css.js.map +1 -1
- package/dist/cjs/components/media-control/cell-media-edit-shell.st.css.js +2 -2
- package/dist/cjs/components/media-control/cell-media-edit-shell.st.css.js.map +1 -1
- package/dist/cjs/components/media-control/paste-url-button.st.css.js +4 -4
- package/dist/cjs/components/media-control/paste-url-button.st.css.js.map +1 -1
- package/dist/cjs/components/media-gallery/form-media-gallery-field.st.css.js +10 -10
- package/dist/cjs/components/media-gallery/form-media-gallery-field.st.css.js.map +1 -1
- package/dist/cjs/components/media-image/media-image.st.css.js +4 -4
- package/dist/cjs/components/media-image/media-image.st.css.js.map +1 -1
- package/dist/cjs/components/media-image/overlays/overlay.st.css.js +3 -3
- package/dist/cjs/components/media-image/overlays/overlay.st.css.js.map +1 -1
- package/dist/cjs/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
- package/dist/cjs/components/media-tag/web-media-tag/media-tag.st.css.js.map +1 -1
- package/dist/cjs/components/multi-document/cell-multi-document-edit.st.css.js +3 -3
- package/dist/cjs/components/multi-document/cell-multi-document-edit.st.css.js.map +1 -1
- package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.st.css.js +5 -5
- package/dist/cjs/components/multi-document/multi-document-input/form-multi-document.st.css.js.map +1 -1
- package/dist/cjs/components/reference/cell-multi-reference-input.st.css.js +2 -2
- package/dist/cjs/components/reference/cell-multi-reference-input.st.css.js.map +1 -1
- package/dist/cjs/components/reference/cell-reference-input.st.css.js +3 -3
- package/dist/cjs/components/reference/cell-reference-input.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +4 -4
- package/dist/cjs/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +3 -3
- package/dist/cjs/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
- 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
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +3 -3
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +3 -3
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +7 -7
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +5 -5
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js.map +1 -1
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +4 -4
- package/dist/cjs/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js.map +1 -1
- package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +18 -18
- package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js.map +1 -1
- package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +4 -4
- package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js.map +1 -1
- package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +18 -18
- package/dist/cjs/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js.map +1 -1
- package/dist/cjs/components/text/text-view.st.css.js +3 -3
- package/dist/cjs/components/text/text-view.st.css.js.map +1 -1
- package/dist/cjs/styles.global.css +1 -1
- package/dist/cjs/types/validation.js.map +1 -1
- package/dist/cjs/validations/field-validation-settings.js +6 -0
- package/dist/cjs/validations/field-validation-settings.js.map +1 -1
- package/dist/cjs/validations/field-validation-settings.spec.js +16 -1
- package/dist/cjs/validations/field-validation-settings.spec.js.map +1 -1
- package/dist/esm/components/address/input/address-input.st.css.js +2 -2
- package/dist/esm/components/audio/actions/actions-menu/actions-menu.st.css.js +2 -2
- package/dist/esm/components/audio/audio-field/form-audio-field.st.css.js +2 -2
- package/dist/esm/components/audio/audio-field/form-audio-field.st.css.js.map +1 -1
- package/dist/esm/components/audio/audio-player/audio-player.st.css.js +2 -2
- package/dist/esm/components/color-view/cell-color-view.st.css.js +2 -2
- package/dist/esm/components/color-view/cell-color-view.st.css.js.map +1 -1
- package/dist/esm/components/color-view/color-view.st.css.js +2 -2
- package/dist/esm/components/color-view/color-view.st.css.js.map +1 -1
- package/dist/esm/components/delete-dialog/delete-dialog.st.css.js +2 -2
- package/dist/esm/components/document/form-document-field.st.css.js +2 -2
- package/dist/esm/components/document/form-document-field.st.css.js.map +1 -1
- package/dist/esm/components/exclamation/exclamation.st.css.js +2 -2
- package/dist/esm/components/exclamation/exclamation.st.css.js.map +1 -1
- package/dist/esm/components/field-validation-settings/field-validation-settings-input.js +45 -37
- package/dist/esm/components/field-validation-settings/field-validation-settings-input.js.map +1 -1
- package/dist/esm/components/field-validation-settings/field-validation-settings-input.st.css +10 -0
- package/dist/esm/components/field-validation-settings/field-validation-settings-input.st.css.js +15 -0
- package/dist/esm/components/field-validation-settings/field-validation-settings-input.st.css.js.map +1 -0
- package/dist/esm/components/field-validation-settings/field-validation-settings.uni.driver.js +18 -4
- package/dist/esm/components/field-validation-settings/field-validation-settings.uni.driver.js.map +1 -1
- package/dist/esm/components/highlighted-text/highlighted-text.st.css.js +3 -3
- package/dist/esm/components/highlighted-text/highlighted-text.st.css.js.map +1 -1
- package/dist/esm/components/image/thumbnail-replace-overlay.st.css.js +2 -2
- package/dist/esm/components/media-control/cell-media-edit-shell.st.css.js +2 -2
- package/dist/esm/components/media-control/paste-url-button.st.css.js +2 -2
- package/dist/esm/components/media-gallery/form-media-gallery-field.st.css.js +2 -2
- package/dist/esm/components/media-gallery/form-media-gallery-field.st.css.js.map +1 -1
- package/dist/esm/components/media-image/media-image.st.css.js +3 -3
- package/dist/esm/components/media-image/overlays/overlay.st.css.js +2 -2
- package/dist/esm/components/media-image/overlays/overlay.st.css.js.map +1 -1
- package/dist/esm/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
- package/dist/esm/components/multi-document/cell-multi-document-edit.st.css.js +2 -2
- package/dist/esm/components/multi-document/cell-multi-document-edit.st.css.js.map +1 -1
- package/dist/esm/components/multi-document/multi-document-input/form-multi-document.st.css.js +2 -2
- package/dist/esm/components/reference/cell-multi-reference-input.st.css.js +2 -2
- package/dist/esm/components/reference/cell-multi-reference-input.st.css.js.map +1 -1
- package/dist/esm/components/reference/cell-reference-input.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js.map +1 -1
- package/dist/esm/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js.map +1 -1
- package/dist/esm/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +2 -2
- package/dist/esm/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js.map +1 -1
- package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +2 -2
- package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js.map +1 -1
- package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +2 -2
- package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js.map +1 -1
- package/dist/esm/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +2 -2
- package/dist/esm/components/text/text-view.st.css.js +2 -2
- package/dist/esm/styles.global.css +1 -1
- package/dist/esm/validations/field-validation-settings.js +3 -0
- package/dist/esm/validations/field-validation-settings.js.map +1 -1
- package/dist/esm/validations/field-validation-settings.spec.js +9 -1
- package/dist/esm/validations/field-validation-settings.spec.js.map +1 -1
- package/dist/types/components/audio/audio-field/form-audio-field.st.css.d.ts.map +1 -1
- package/dist/types/components/color-view/cell-color-view.st.css.d.ts.map +1 -1
- package/dist/types/components/color-view/color-view.st.css.d.ts.map +1 -1
- package/dist/types/components/document/form-document-field.st.css.d.ts.map +1 -1
- package/dist/types/components/exclamation/exclamation.st.css.d.ts.map +1 -1
- package/dist/types/components/field-validation-settings/field-validation-settings-input.d.ts.map +1 -1
- package/dist/types/components/field-validation-settings/field-validation-settings-input.st.css.d.ts +14 -0
- package/dist/types/components/field-validation-settings/field-validation-settings-input.st.css.d.ts.map +1 -0
- package/dist/types/components/field-validation-settings/field-validation-settings.uni.driver.d.ts +18 -69
- package/dist/types/components/field-validation-settings/field-validation-settings.uni.driver.d.ts.map +1 -1
- package/dist/types/components/highlighted-text/highlighted-text.st.css.d.ts.map +1 -1
- package/dist/types/components/media-gallery/form-media-gallery-field.st.css.d.ts.map +1 -1
- package/dist/types/components/media-image/overlays/overlay.st.css.d.ts.map +1 -1
- package/dist/types/components/multi-document/cell-multi-document-edit.st.css.d.ts.map +1 -1
- package/dist/types/components/reference/cell-multi-reference-input.st.css.d.ts.map +1 -1
- package/dist/types/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.d.ts.map +1 -1
- package/dist/types/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.d.ts.map +1 -1
- package/dist/types/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.d.ts.map +1 -1
- package/dist/types/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.d.ts.map +1 -1
- package/dist/types/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.d.ts.map +1 -1
- package/dist/types/types/validation.d.ts +14 -4
- package/dist/types/types/validation.d.ts.map +1 -1
- package/dist/types/validations/field-validation-settings.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/__tests__/components/field-validation-settings/field-validation-settings-input.spec.tsx +106 -35
- package/src/components/address/input/address-input.st.css.ts +2 -2
- package/src/components/audio/actions/actions-menu/actions-menu.st.css.ts +2 -2
- package/src/components/audio/audio-field/form-audio-field.st.css.ts +2 -2
- package/src/components/audio/audio-player/audio-player.st.css.ts +2 -2
- package/src/components/color-view/cell-color-view.st.css.ts +2 -2
- package/src/components/color-view/color-view.st.css.ts +2 -2
- package/src/components/delete-dialog/delete-dialog.st.css.ts +2 -2
- package/src/components/document/form-document-field.st.css.ts +2 -2
- package/src/components/exclamation/exclamation.st.css.ts +2 -2
- package/src/components/field-validation-settings/field-validation-settings-input.st.css +10 -0
- package/src/components/field-validation-settings/field-validation-settings-input.st.css.ts +25 -0
- package/src/components/field-validation-settings/field-validation-settings-input.tsx +88 -103
- package/src/components/field-validation-settings/field-validation-settings.uni.driver.ts +29 -15
- package/src/components/highlighted-text/highlighted-text.st.css.ts +3 -3
- package/src/components/image/thumbnail-replace-overlay.st.css.ts +2 -2
- package/src/components/media-control/cell-media-edit-shell.st.css.ts +2 -2
- package/src/components/media-control/paste-url-button.st.css.ts +2 -2
- package/src/components/media-gallery/form-media-gallery-field.st.css.ts +2 -2
- package/src/components/media-image/media-image.st.css.ts +3 -3
- package/src/components/media-image/overlays/overlay.st.css.ts +2 -2
- package/src/components/media-tag/web-media-tag/media-tag.st.css.ts +2 -2
- package/src/components/multi-document/cell-multi-document-edit.st.css.ts +2 -2
- package/src/components/multi-document/multi-document-input/form-multi-document.st.css.ts +2 -2
- package/src/components/reference/cell-multi-reference-input.st.css.ts +2 -2
- package/src/components/reference/cell-reference-input.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.ts +2 -2
- package/src/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.ts +2 -2
- package/src/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.ts +2 -2
- package/src/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.ts +2 -2
- package/src/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.ts +2 -2
- package/src/components/text/text-view.st.css.ts +2 -2
- package/src/styles.global.css +1 -1
- package/src/types/validation.ts +12 -4
- package/src/validations/field-validation-settings.spec.ts +12 -1
- package/src/validations/field-validation-settings.ts +4 -0
|
@@ -5,9 +5,9 @@ exports.__esModule = true;
|
|
|
5
5
|
exports.FieldValidationSettingsInput = void 0;
|
|
6
6
|
var _react = _interopRequireDefault(require("react"));
|
|
7
7
|
var _designSystem = require("@wix/design-system");
|
|
8
|
-
var _lazy = require("@wix/wix-ui-icons-common/lazy");
|
|
9
8
|
var _uuid = require("uuid");
|
|
10
9
|
var _fieldValidationSettings = require("../../validations/field-validation-settings");
|
|
10
|
+
var _fieldValidationSettingsInputStCss = require("./field-validation-settings-input.st.css.js");
|
|
11
11
|
var _jsxFileName = "/home/builduser/work/843658b9f44192f0/packages/fields/dist/cjs/components/field-validation-settings/field-validation-settings-input.tsx";
|
|
12
12
|
const RuleToggle = ({
|
|
13
13
|
dataHook,
|
|
@@ -26,7 +26,7 @@ const RuleToggle = ({
|
|
|
26
26
|
__self: void 0,
|
|
27
27
|
__source: {
|
|
28
28
|
fileName: _jsxFileName,
|
|
29
|
-
lineNumber:
|
|
29
|
+
lineNumber: 58,
|
|
30
30
|
columnNumber: 3
|
|
31
31
|
}
|
|
32
32
|
}, /*#__PURE__*/_react.default.createElement(_designSystem.ToggleSwitch, {
|
|
@@ -38,7 +38,7 @@ const RuleToggle = ({
|
|
|
38
38
|
__self: void 0,
|
|
39
39
|
__source: {
|
|
40
40
|
fileName: _jsxFileName,
|
|
41
|
-
lineNumber:
|
|
41
|
+
lineNumber: 66,
|
|
42
42
|
columnNumber: 5
|
|
43
43
|
}
|
|
44
44
|
}));
|
|
@@ -123,7 +123,7 @@ const FieldValidationSettingsInput = ({
|
|
|
123
123
|
__self: void 0,
|
|
124
124
|
__source: {
|
|
125
125
|
fileName: _jsxFileName,
|
|
126
|
-
lineNumber:
|
|
126
|
+
lineNumber: 169,
|
|
127
127
|
columnNumber: 7
|
|
128
128
|
}
|
|
129
129
|
}, text);
|
|
@@ -145,7 +145,7 @@ const FieldValidationSettingsInput = ({
|
|
|
145
145
|
__self: void 0,
|
|
146
146
|
__source: {
|
|
147
147
|
fileName: _jsxFileName,
|
|
148
|
-
lineNumber:
|
|
148
|
+
lineNumber: 179,
|
|
149
149
|
columnNumber: 5
|
|
150
150
|
}
|
|
151
151
|
});
|
|
@@ -162,7 +162,7 @@ const FieldValidationSettingsInput = ({
|
|
|
162
162
|
__self: void 0,
|
|
163
163
|
__source: {
|
|
164
164
|
fileName: _jsxFileName,
|
|
165
|
-
lineNumber:
|
|
165
|
+
lineNumber: 215,
|
|
166
166
|
columnNumber: 7
|
|
167
167
|
}
|
|
168
168
|
}, /*#__PURE__*/_react.default.createElement(RuleToggle, {
|
|
@@ -177,7 +177,7 @@ const FieldValidationSettingsInput = ({
|
|
|
177
177
|
__self: void 0,
|
|
178
178
|
__source: {
|
|
179
179
|
fileName: _jsxFileName,
|
|
180
|
-
lineNumber:
|
|
180
|
+
lineNumber: 216,
|
|
181
181
|
columnNumber: 9
|
|
182
182
|
}
|
|
183
183
|
}), hasCharactersLimit && /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
@@ -186,7 +186,7 @@ const FieldValidationSettingsInput = ({
|
|
|
186
186
|
__self: void 0,
|
|
187
187
|
__source: {
|
|
188
188
|
fileName: _jsxFileName,
|
|
189
|
-
lineNumber:
|
|
189
|
+
lineNumber: 230,
|
|
190
190
|
columnNumber: 11
|
|
191
191
|
}
|
|
192
192
|
}, /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
@@ -194,7 +194,7 @@ const FieldValidationSettingsInput = ({
|
|
|
194
194
|
__self: void 0,
|
|
195
195
|
__source: {
|
|
196
196
|
fileName: _jsxFileName,
|
|
197
|
-
lineNumber:
|
|
197
|
+
lineNumber: 231,
|
|
198
198
|
columnNumber: 13
|
|
199
199
|
}
|
|
200
200
|
}, /*#__PURE__*/_react.default.createElement(_designSystem.FormField, {
|
|
@@ -203,7 +203,7 @@ const FieldValidationSettingsInput = ({
|
|
|
203
203
|
__self: void 0,
|
|
204
204
|
__source: {
|
|
205
205
|
fileName: _jsxFileName,
|
|
206
|
-
lineNumber:
|
|
206
|
+
lineNumber: 232,
|
|
207
207
|
columnNumber: 15
|
|
208
208
|
}
|
|
209
209
|
}, /*#__PURE__*/_react.default.createElement(_designSystem.NumberInput, {
|
|
@@ -222,7 +222,7 @@ const FieldValidationSettingsInput = ({
|
|
|
222
222
|
__self: void 0,
|
|
223
223
|
__source: {
|
|
224
224
|
fileName: _jsxFileName,
|
|
225
|
-
lineNumber:
|
|
225
|
+
lineNumber: 233,
|
|
226
226
|
columnNumber: 17
|
|
227
227
|
}
|
|
228
228
|
}))), /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
@@ -231,7 +231,7 @@ const FieldValidationSettingsInput = ({
|
|
|
231
231
|
__self: void 0,
|
|
232
232
|
__source: {
|
|
233
233
|
fileName: _jsxFileName,
|
|
234
|
-
lineNumber:
|
|
234
|
+
lineNumber: 262,
|
|
235
235
|
columnNumber: 13
|
|
236
236
|
}
|
|
237
237
|
}, /*#__PURE__*/_react.default.createElement(_designSystem.Text, {
|
|
@@ -240,7 +240,7 @@ const FieldValidationSettingsInput = ({
|
|
|
240
240
|
__self: void 0,
|
|
241
241
|
__source: {
|
|
242
242
|
fileName: _jsxFileName,
|
|
243
|
-
lineNumber:
|
|
243
|
+
lineNumber: 263,
|
|
244
244
|
columnNumber: 15
|
|
245
245
|
}
|
|
246
246
|
}, rule.separator)), /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
@@ -248,7 +248,7 @@ const FieldValidationSettingsInput = ({
|
|
|
248
248
|
__self: void 0,
|
|
249
249
|
__source: {
|
|
250
250
|
fileName: _jsxFileName,
|
|
251
|
-
lineNumber:
|
|
251
|
+
lineNumber: 267,
|
|
252
252
|
columnNumber: 13
|
|
253
253
|
}
|
|
254
254
|
}, /*#__PURE__*/_react.default.createElement(_designSystem.FormField, {
|
|
@@ -257,7 +257,7 @@ const FieldValidationSettingsInput = ({
|
|
|
257
257
|
__self: void 0,
|
|
258
258
|
__source: {
|
|
259
259
|
fileName: _jsxFileName,
|
|
260
|
-
lineNumber:
|
|
260
|
+
lineNumber: 268,
|
|
261
261
|
columnNumber: 15
|
|
262
262
|
}
|
|
263
263
|
}, /*#__PURE__*/_react.default.createElement(_designSystem.NumberInput, {
|
|
@@ -276,13 +276,43 @@ const FieldValidationSettingsInput = ({
|
|
|
276
276
|
__self: void 0,
|
|
277
277
|
__source: {
|
|
278
278
|
fileName: _jsxFileName,
|
|
279
|
-
lineNumber:
|
|
279
|
+
lineNumber: 269,
|
|
280
280
|
columnNumber: 17
|
|
281
281
|
}
|
|
282
282
|
})))), renderExclusiveRulesExplanation('charactersLimit', 'field-validation-characters-limit', rule.exclusiveRulesExplanation));
|
|
283
283
|
};
|
|
284
284
|
const renderSpecificValues = rule => {
|
|
285
|
-
|
|
285
|
+
const valuesViolation = errorViolations.find(violation => violation.rule === 'specificValues' && violation.type !== 'exclusiveRules');
|
|
286
|
+
const hasValuesError = Boolean(valuesViolation || hasUnattributedInvalidState);
|
|
287
|
+
let valuesError;
|
|
288
|
+
if ((valuesViolation == null ? void 0 : valuesViolation.type) === 'empty') {
|
|
289
|
+
valuesError = rule.emptyError;
|
|
290
|
+
} else if ((valuesViolation == null ? void 0 : valuesViolation.type) === 'blank') {
|
|
291
|
+
valuesError = rule.blankError;
|
|
292
|
+
} else if ((valuesViolation == null ? void 0 : valuesViolation.type) === 'duplicate') {
|
|
293
|
+
valuesError = rule.duplicateError;
|
|
294
|
+
}
|
|
295
|
+
const specificValues = data.specificValues ?? [];
|
|
296
|
+
const addValues = inputValues => {
|
|
297
|
+
const knownValues = new Set(specificValues.map(({
|
|
298
|
+
value
|
|
299
|
+
}) => value.trim()));
|
|
300
|
+
const addedValues = inputValues.map(value => value.trim()).filter(value => {
|
|
301
|
+
if (!value || knownValues.has(value)) {
|
|
302
|
+
return false;
|
|
303
|
+
}
|
|
304
|
+
knownValues.add(value);
|
|
305
|
+
return true;
|
|
306
|
+
}).map(value => ({
|
|
307
|
+
id: (0, _uuid.v4)(),
|
|
308
|
+
value
|
|
309
|
+
}));
|
|
310
|
+
if (addedValues.length > 0) {
|
|
311
|
+
update({
|
|
312
|
+
specificValues: [...specificValues, ...addedValues]
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
};
|
|
286
316
|
return /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
287
317
|
key: "specificValues",
|
|
288
318
|
direction: "vertical",
|
|
@@ -290,8 +320,8 @@ const FieldValidationSettingsInput = ({
|
|
|
290
320
|
__self: void 0,
|
|
291
321
|
__source: {
|
|
292
322
|
fileName: _jsxFileName,
|
|
293
|
-
lineNumber:
|
|
294
|
-
columnNumber:
|
|
323
|
+
lineNumber: 355,
|
|
324
|
+
columnNumber: 7
|
|
295
325
|
}
|
|
296
326
|
}, /*#__PURE__*/_react.default.createElement(RuleToggle, {
|
|
297
327
|
dataHook: "field-validation-specific-values",
|
|
@@ -305,128 +335,46 @@ const FieldValidationSettingsInput = ({
|
|
|
305
335
|
__self: void 0,
|
|
306
336
|
__source: {
|
|
307
337
|
fileName: _jsxFileName,
|
|
308
|
-
lineNumber:
|
|
309
|
-
columnNumber: 7
|
|
310
|
-
}
|
|
311
|
-
}), hasSpecificValues && /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
312
|
-
direction: "vertical",
|
|
313
|
-
gap: "SP2",
|
|
314
|
-
__self: void 0,
|
|
315
|
-
__source: {
|
|
316
|
-
fileName: _jsxFileName,
|
|
317
|
-
lineNumber: 333,
|
|
338
|
+
lineNumber: 356,
|
|
318
339
|
columnNumber: 9
|
|
319
340
|
}
|
|
320
|
-
},
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
__source: {
|
|
328
|
-
fileName: _jsxFileName,
|
|
329
|
-
lineNumber: 342,
|
|
330
|
-
columnNumber: 15
|
|
331
|
-
}
|
|
332
|
-
}, /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
333
|
-
width: "100%",
|
|
334
|
-
__self: void 0,
|
|
335
|
-
__source: {
|
|
336
|
-
fileName: _jsxFileName,
|
|
337
|
-
lineNumber: 343,
|
|
338
|
-
columnNumber: 17
|
|
339
|
-
}
|
|
340
|
-
}, /*#__PURE__*/_react.default.createElement(_designSystem.Input, {
|
|
341
|
-
dataHook: `field-validation-specific-value-${index}`,
|
|
342
|
-
size: "small",
|
|
343
|
-
value: option.value,
|
|
344
|
-
disabled: isRuleDisabled('specificValues'),
|
|
345
|
-
status: optionViolation || hasUnattributedInvalidState ? 'error' : undefined,
|
|
346
|
-
statusMessage: (optionViolation == null ? void 0 : optionViolation.type) === 'blank' ? rule.blankError : (optionViolation == null ? void 0 : optionViolation.type) === 'duplicate' ? rule.duplicateError : undefined,
|
|
347
|
-
onChange: event => {
|
|
348
|
-
var _data$specificValues2;
|
|
349
|
-
return update({
|
|
350
|
-
specificValues: (_data$specificValues2 = data.specificValues) == null ? void 0 : _data$specificValues2.map(item => item.id === option.id ? {
|
|
351
|
-
...item,
|
|
352
|
-
value: event.target.value
|
|
353
|
-
} : item)
|
|
354
|
-
});
|
|
355
|
-
},
|
|
356
|
-
__self: void 0,
|
|
357
|
-
__source: {
|
|
358
|
-
fileName: _jsxFileName,
|
|
359
|
-
lineNumber: 344,
|
|
360
|
-
columnNumber: 19
|
|
361
|
-
}
|
|
362
|
-
})), /*#__PURE__*/_react.default.createElement(_designSystem.Tooltip, {
|
|
363
|
-
content: rule.removeButton,
|
|
364
|
-
__self: void 0,
|
|
365
|
-
__source: {
|
|
366
|
-
fileName: _jsxFileName,
|
|
367
|
-
lineNumber: 372,
|
|
368
|
-
columnNumber: 17
|
|
369
|
-
}
|
|
370
|
-
}, /*#__PURE__*/_react.default.createElement(_designSystem.IconButton, {
|
|
371
|
-
dataHook: `field-validation-specific-value-remove-${index}`,
|
|
372
|
-
size: "tiny",
|
|
373
|
-
priority: "secondary",
|
|
374
|
-
disabled: isRuleDisabled('specificValues'),
|
|
375
|
-
ariaLabel: rule.removeButton,
|
|
376
|
-
onClick: () => {
|
|
377
|
-
var _data$specificValues3;
|
|
378
|
-
return update({
|
|
379
|
-
specificValues: (_data$specificValues3 = data.specificValues) == null ? void 0 : _data$specificValues3.filter(({
|
|
380
|
-
id
|
|
381
|
-
}) => id !== option.id)
|
|
382
|
-
});
|
|
383
|
-
},
|
|
384
|
-
__self: void 0,
|
|
385
|
-
__source: {
|
|
386
|
-
fileName: _jsxFileName,
|
|
387
|
-
lineNumber: 373,
|
|
388
|
-
columnNumber: 19
|
|
389
|
-
}
|
|
390
|
-
}, /*#__PURE__*/_react.default.createElement(_lazy.DeleteSmall, {
|
|
391
|
-
__self: void 0,
|
|
392
|
-
__source: {
|
|
393
|
-
fileName: _jsxFileName,
|
|
394
|
-
lineNumber: 387,
|
|
395
|
-
columnNumber: 21
|
|
396
|
-
}
|
|
397
|
-
}))));
|
|
398
|
-
}), /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
|
|
341
|
+
}), hasSpecificValues && /*#__PURE__*/_react.default.createElement(_designSystem.FormField, {
|
|
342
|
+
dataHook: "field-validation-specific-values-field",
|
|
343
|
+
label: rule.optionsLabel,
|
|
344
|
+
labelSize: "small",
|
|
345
|
+
stretchContent: true,
|
|
346
|
+
status: hasValuesError ? 'error' : undefined,
|
|
347
|
+
statusMessage: hasValuesError ? valuesError : rule.optionsHint,
|
|
399
348
|
__self: void 0,
|
|
400
349
|
__source: {
|
|
401
350
|
fileName: _jsxFileName,
|
|
402
|
-
lineNumber:
|
|
351
|
+
lineNumber: 370,
|
|
403
352
|
columnNumber: 11
|
|
404
353
|
}
|
|
405
|
-
}, /*#__PURE__*/_react.default.createElement(_designSystem.
|
|
406
|
-
dataHook: "field-validation-specific-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
}),
|
|
354
|
+
}, /*#__PURE__*/_react.default.createElement(_designSystem.MultiSelect, {
|
|
355
|
+
dataHook: "field-validation-specific-values-input",
|
|
356
|
+
className: _fieldValidationSettingsInputStCss.classes.specificValuesInput,
|
|
357
|
+
tags: specificValues.map(({
|
|
358
|
+
id,
|
|
359
|
+
value
|
|
360
|
+
}) => ({
|
|
361
|
+
id,
|
|
362
|
+
label: value
|
|
363
|
+
})),
|
|
416
364
|
disabled: isRuleDisabled('specificValues'),
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
}
|
|
365
|
+
onManuallyInput: addValues,
|
|
366
|
+
onRemoveTag: tagId => update({
|
|
367
|
+
specificValues: specificValues.filter(({
|
|
368
|
+
id
|
|
369
|
+
}) => id !== tagId)
|
|
422
370
|
}),
|
|
423
371
|
__self: void 0,
|
|
424
372
|
__source: {
|
|
425
373
|
fileName: _jsxFileName,
|
|
426
|
-
lineNumber:
|
|
374
|
+
lineNumber: 378,
|
|
427
375
|
columnNumber: 13
|
|
428
376
|
}
|
|
429
|
-
}
|
|
377
|
+
})), renderExclusiveRulesExplanation('specificValues', 'field-validation-specific-values', rule.exclusiveRulesExplanation));
|
|
430
378
|
};
|
|
431
379
|
const renderPattern = rule => {
|
|
432
380
|
const patternViolation = errorViolations.find(violation => violation.rule === 'pattern' && (violation.type === 'invalidPattern' || violation.type === 'unsafePattern'));
|
|
@@ -438,7 +386,7 @@ const FieldValidationSettingsInput = ({
|
|
|
438
386
|
__self: void 0,
|
|
439
387
|
__source: {
|
|
440
388
|
fileName: _jsxFileName,
|
|
441
|
-
lineNumber:
|
|
389
|
+
lineNumber: 419,
|
|
442
390
|
columnNumber: 7
|
|
443
391
|
}
|
|
444
392
|
}, /*#__PURE__*/_react.default.createElement(RuleToggle, {
|
|
@@ -453,7 +401,7 @@ const FieldValidationSettingsInput = ({
|
|
|
453
401
|
__self: void 0,
|
|
454
402
|
__source: {
|
|
455
403
|
fileName: _jsxFileName,
|
|
456
|
-
lineNumber:
|
|
404
|
+
lineNumber: 420,
|
|
457
405
|
columnNumber: 9
|
|
458
406
|
}
|
|
459
407
|
}), hasPattern && /*#__PURE__*/_react.default.createElement(_designSystem.FormField, {
|
|
@@ -462,7 +410,7 @@ const FieldValidationSettingsInput = ({
|
|
|
462
410
|
__self: void 0,
|
|
463
411
|
__source: {
|
|
464
412
|
fileName: _jsxFileName,
|
|
465
|
-
lineNumber:
|
|
413
|
+
lineNumber: 431,
|
|
466
414
|
columnNumber: 11
|
|
467
415
|
}
|
|
468
416
|
}, /*#__PURE__*/_react.default.createElement(_designSystem.Input, {
|
|
@@ -478,7 +426,7 @@ const FieldValidationSettingsInput = ({
|
|
|
478
426
|
__self: void 0,
|
|
479
427
|
__source: {
|
|
480
428
|
fileName: _jsxFileName,
|
|
481
|
-
lineNumber:
|
|
429
|
+
lineNumber: 432,
|
|
482
430
|
columnNumber: 13
|
|
483
431
|
}
|
|
484
432
|
})), renderExclusiveRulesExplanation('pattern', 'field-validation-pattern', rule.exclusiveRulesExplanation));
|
|
@@ -502,7 +450,7 @@ const FieldValidationSettingsInput = ({
|
|
|
502
450
|
__self: void 0,
|
|
503
451
|
__source: {
|
|
504
452
|
fileName: _jsxFileName,
|
|
505
|
-
lineNumber:
|
|
453
|
+
lineNumber: 472,
|
|
506
454
|
columnNumber: 5
|
|
507
455
|
}
|
|
508
456
|
}, rules.map(renderRule));
|
package/dist/cjs/components/field-validation-settings/field-validation-settings-input.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_designSystem","_lazy","_uuid","_fieldValidationSettings","_jsxFileName","RuleToggle","dataHook","checked","disabled","label","infoContent","onChange","default","createElement","FormField","labelPlacement","labelSize","stretchContent","__self","__source","fileName","lineNumber","columnNumber","ToggleSwitch","size","FieldValidationSettingsInput","data","readOnly","invalid","rules","disabledRules","exclusiveSpecificValues","showValidationErrors","_rules$find","isRuleDisabled","rule","Boolean","includes","supportedRules","map","type","violations","getFieldValidationSettingsViolations","errorViolations","supportsSpecificValues","some","supportsCharactersLimit","supportsPattern","hasSpecificValues","specificValues","undefined","hasCharactersLimit","charactersLimit","hasPattern","pattern","hasUnattributedInvalidState","every","isBlockedByExclusivity","isInExclusiveConflict","violation","specificValuesExplanation","find","exclusiveRulesExplanation","hasRenderedSharedExplanation","renderExclusiveRulesExplanation","hook","explanation","text","Text","secondary","update","next","renderRequired","key","required","tooltip","renderCharactersLimit","_data$charactersLimit","_data$charactersLimit2","minViolation","bound","maxOutOfBoundsViolation","maxBelowMinViolation","isInputDisabled","Box","direction","gap","verticalAlign","width","minLabel","NumberInput","value","min","status","statusMessage","outOfBoundsError","max","height","separator","maxLabel","maxBelowMinError","renderSpecificValues","_data$specificValues","option","index","optionViolation","optionId","id","Input","blankError","duplicateError","event","_data$specificValues2","item","target","Tooltip","content","removeButton","IconButton","priority","ariaLabel","onClick","_data$specificValues3","filter","DeleteSmall","TextButton","prefixIcon","AddSmall","uuid","addButton","renderPattern","patternViolation","patternError","unsafeError","invalidError","inputLabel","renderRule","exports"],"sources":["../../../../src/components/field-validation-settings/field-validation-settings-input.tsx"],"sourcesContent":["import React from 'react';\nimport {\n Box,\n FormField,\n IconButton,\n Input,\n NumberInput,\n Text,\n TextButton,\n ToggleSwitch,\n Tooltip,\n} from '@wix/design-system';\nimport { AddSmall, DeleteSmall } from '@wix/wix-ui-icons-common/lazy';\nimport { v4 as uuid } from 'uuid';\nimport type { ControlledInputProps } from '../../types/controlled-input';\nimport type {\n CharactersLimitFieldValidationRuleConfig,\n FieldValidationRule,\n FieldValidationRuleConfig,\n FieldValidationSettingsValue,\n PatternFieldValidationRuleConfig,\n RequiredFieldValidationRuleConfig,\n SpecificValuesFieldValidationRuleConfig,\n} from '../../types/validation';\nimport { getFieldValidationSettingsViolations } from '../../validations/field-validation-settings';\n\nexport interface FieldValidationSettingsInputProps\n extends Omit<\n ControlledInputProps<FieldValidationSettingsValue>,\n 'autoFocus' | 'onBlur'\n > {\n rules: readonly FieldValidationRuleConfig[];\n /** Show error styling/messages, including caller-supplied `invalid` state.\n * Defaults to true. Does not alter validity or rule availability. */\n showValidationErrors?: boolean;\n /** Rules the caller has fixed and the user can't toggle, independent of `readOnly`. */\n disabledRules?: readonly FieldValidationRule[];\n /** Whether `specificValues` rejects `charactersLimit`/`pattern` on the same\n * field. Pass `false` for callers that let a field carry both. */\n exclusiveSpecificValues?: boolean;\n}\n\ninterface RuleToggleProps {\n dataHook: string;\n checked: boolean;\n disabled?: boolean;\n label: string;\n infoContent: string;\n onChange(): void;\n}\n\nconst RuleToggle = ({\n dataHook,\n checked,\n disabled,\n label,\n infoContent,\n onChange,\n}: RuleToggleProps) => (\n <FormField\n dataHook={dataHook}\n label={label}\n labelPlacement=\"right\"\n labelSize=\"small\"\n stretchContent={false}\n infoContent={infoContent}\n >\n <ToggleSwitch\n dataHook={`${dataHook}-toggle`}\n size=\"medium\"\n checked={checked}\n disabled={disabled}\n onChange={onChange}\n />\n </FormField>\n);\n\nexport const FieldValidationSettingsInput = ({\n data,\n onChange,\n readOnly,\n invalid,\n dataHook = 'field-validation-settings',\n rules,\n disabledRules,\n exclusiveSpecificValues = true,\n showValidationErrors = true,\n}: FieldValidationSettingsInputProps) => {\n const isRuleDisabled = (rule: FieldValidationRule) =>\n Boolean(readOnly) || Boolean(disabledRules?.includes(rule));\n const supportedRules = rules.map(({ type }) => type);\n const violations = getFieldValidationSettingsViolations(\n data,\n supportedRules,\n {\n exclusiveSpecificValues,\n },\n );\n const errorViolations = showValidationErrors ? violations : [];\n const supportsSpecificValues = rules.some(\n ({ type }) => type === 'specificValues',\n );\n const supportsCharactersLimit = rules.some(\n ({ type }) => type === 'charactersLimit',\n );\n const supportsPattern = rules.some(({ type }) => type === 'pattern');\n const hasSpecificValues =\n supportsSpecificValues && data.specificValues !== undefined;\n const hasCharactersLimit =\n supportsCharactersLimit && data.charactersLimit !== undefined;\n const hasPattern = supportsPattern && data.pattern !== undefined;\n // Other violations put an error on a control; `exclusiveRules` renders only as\n // text under the rule, so it leaves `invalid` unattributed.\n const hasUnattributedInvalidState =\n showValidationErrors &&\n Boolean(invalid) &&\n violations.every(({ type }) => type === 'exclusiveRules');\n const isBlockedByExclusivity = (rule: FieldValidationRule) => {\n if (!exclusiveSpecificValues) {\n return false;\n }\n switch (rule) {\n case 'charactersLimit':\n return hasSpecificValues && !hasCharactersLimit;\n case 'pattern':\n return hasSpecificValues && !hasPattern;\n case 'specificValues':\n return (hasCharactersLimit || hasPattern) && !hasSpecificValues;\n default:\n return false;\n }\n };\n // Widening `isBlockedByExclusivity` to cover the both-on state instead would\n // disable both toggles at once, leaving no way to switch either rule off.\n const isInExclusiveConflict = (rule: FieldValidationRule) =>\n violations.some(\n (violation) =>\n violation.rule === rule && violation.type === 'exclusiveRules',\n );\n const specificValuesExplanation = rules.find(\n (rule): rule is SpecificValuesFieldValidationRuleConfig =>\n rule.type === 'specificValues',\n )?.exclusiveRulesExplanation;\n // Callers written before the note moved under the blocked rule put a single\n // explanation on `specificValues`. Show it once rather than dropping it —\n // `specificValues` renders that same copy as its own, so both paths count.\n let hasRenderedSharedExplanation = false;\n const renderExclusiveRulesExplanation = (\n rule: FieldValidationRule,\n hook: string,\n explanation?: string,\n ) => {\n if (!isBlockedByExclusivity(rule) && !isInExclusiveConflict(rule)) {\n return null;\n }\n\n const text = explanation ?? specificValuesExplanation;\n\n if (!text) {\n return null;\n }\n\n if (text === specificValuesExplanation) {\n if (hasRenderedSharedExplanation) {\n return null;\n }\n hasRenderedSharedExplanation = true;\n }\n\n return (\n <Text size=\"tiny\" secondary dataHook={`${hook}-exclusive-help`}>\n {text}\n </Text>\n );\n };\n\n const update = (next: Partial<FieldValidationSettingsValue>) =>\n onChange({ ...data, ...next });\n\n const renderRequired = (rule: RequiredFieldValidationRuleConfig) => (\n <RuleToggle\n key=\"required\"\n dataHook=\"field-validation-required\"\n checked={Boolean(data.required)}\n disabled={isRuleDisabled('required')}\n label={rule.label}\n infoContent={rule.tooltip}\n onChange={() => update({ required: !data.required })}\n />\n );\n\n const renderCharactersLimit = (\n rule: CharactersLimitFieldValidationRuleConfig,\n ) => {\n const minViolation = errorViolations.find(\n (violation) =>\n violation.rule === 'charactersLimit' &&\n violation.type === 'outOfBounds' &&\n violation.bound === 'min',\n );\n const maxOutOfBoundsViolation = errorViolations.find(\n (violation) =>\n violation.rule === 'charactersLimit' &&\n violation.type === 'outOfBounds' &&\n violation.bound === 'max',\n );\n const maxBelowMinViolation = errorViolations.find(\n (violation) =>\n violation.rule === 'charactersLimit' &&\n violation.type === 'maxBelowMin',\n );\n const isInputDisabled =\n isRuleDisabled('charactersLimit') ||\n isInExclusiveConflict('charactersLimit');\n\n return (\n <Box key=\"charactersLimit\" direction=\"vertical\" gap=\"SP2\">\n <RuleToggle\n dataHook=\"field-validation-characters-limit\"\n checked={hasCharactersLimit}\n disabled={\n isRuleDisabled('charactersLimit') ||\n isBlockedByExclusivity('charactersLimit')\n }\n label={rule.label}\n infoContent={rule.tooltip}\n onChange={() =>\n update({ charactersLimit: hasCharactersLimit ? undefined : {} })\n }\n />\n {hasCharactersLimit && (\n <Box verticalAlign=\"bottom\" gap=\"SP2\">\n <Box width=\"100px\">\n <FormField stretchContent label={rule.minLabel}>\n <NumberInput\n dataHook=\"field-validation-min-characters\"\n size=\"medium\"\n value={data.charactersLimit?.min}\n disabled={isInputDisabled}\n status={\n hasUnattributedInvalidState || minViolation\n ? 'error'\n : undefined\n }\n statusMessage={\n minViolation?.type === 'outOfBounds'\n ? rule.outOfBoundsError(\n minViolation.min,\n minViolation.max,\n )\n : undefined\n }\n onChange={(value) =>\n update({\n charactersLimit: {\n ...data.charactersLimit,\n min: value ?? undefined,\n },\n })\n }\n />\n </FormField>\n </Box>\n <Box height=\"36px\" verticalAlign=\"middle\">\n <Text size=\"small\" secondary>\n {rule.separator}\n </Text>\n </Box>\n <Box width=\"100px\">\n <FormField stretchContent label={rule.maxLabel}>\n <NumberInput\n dataHook=\"field-validation-max-characters\"\n size=\"medium\"\n value={data.charactersLimit?.max}\n disabled={isInputDisabled}\n status={\n hasUnattributedInvalidState ||\n maxOutOfBoundsViolation ||\n maxBelowMinViolation\n ? 'error'\n : undefined\n }\n statusMessage={\n maxOutOfBoundsViolation?.type === 'outOfBounds'\n ? rule.outOfBoundsError(\n maxOutOfBoundsViolation.min,\n maxOutOfBoundsViolation.max,\n )\n : maxBelowMinViolation\n ? rule.maxBelowMinError\n : undefined\n }\n onChange={(value) =>\n update({\n charactersLimit: {\n ...data.charactersLimit,\n max: value ?? undefined,\n },\n })\n }\n />\n </FormField>\n </Box>\n </Box>\n )}\n {renderExclusiveRulesExplanation(\n 'charactersLimit',\n 'field-validation-characters-limit',\n rule.exclusiveRulesExplanation,\n )}\n </Box>\n );\n };\n\n const renderSpecificValues = (\n rule: SpecificValuesFieldValidationRuleConfig,\n ) => (\n <Box key=\"specificValues\" direction=\"vertical\" gap=\"SP2\">\n <RuleToggle\n dataHook=\"field-validation-specific-values\"\n checked={hasSpecificValues}\n disabled={\n isRuleDisabled('specificValues') ||\n isBlockedByExclusivity('specificValues')\n }\n label={rule.label}\n infoContent={rule.tooltip}\n onChange={() =>\n update({ specificValues: hasSpecificValues ? undefined : [] })\n }\n />\n {hasSpecificValues && (\n <Box direction=\"vertical\" gap=\"SP2\">\n {data.specificValues?.map((option, index) => {\n const optionViolation = errorViolations.find(\n (violation) =>\n violation.rule === 'specificValues' &&\n 'optionId' in violation &&\n violation.optionId === option.id,\n );\n return (\n <Box key={option.id} verticalAlign=\"middle\" gap=\"SP1\">\n <Box width=\"100%\">\n <Input\n dataHook={`field-validation-specific-value-${index}`}\n size=\"small\"\n value={option.value}\n disabled={isRuleDisabled('specificValues')}\n status={\n optionViolation || hasUnattributedInvalidState\n ? 'error'\n : undefined\n }\n statusMessage={\n optionViolation?.type === 'blank'\n ? rule.blankError\n : optionViolation?.type === 'duplicate'\n ? rule.duplicateError\n : undefined\n }\n onChange={(event) =>\n update({\n specificValues: data.specificValues?.map((item) =>\n item.id === option.id\n ? { ...item, value: event.target.value }\n : item,\n ),\n })\n }\n />\n </Box>\n <Tooltip content={rule.removeButton}>\n <IconButton\n dataHook={`field-validation-specific-value-remove-${index}`}\n size=\"tiny\"\n priority=\"secondary\"\n disabled={isRuleDisabled('specificValues')}\n ariaLabel={rule.removeButton}\n onClick={() =>\n update({\n specificValues: data.specificValues?.filter(\n ({ id }) => id !== option.id,\n ),\n })\n }\n >\n <DeleteSmall />\n </IconButton>\n </Tooltip>\n </Box>\n );\n })}\n <Box>\n <TextButton\n dataHook=\"field-validation-specific-value-add\"\n size=\"small\"\n prefixIcon={<AddSmall />}\n disabled={isRuleDisabled('specificValues')}\n onClick={() =>\n update({\n specificValues: [\n ...(data.specificValues ?? []),\n { id: uuid(), value: '' },\n ],\n })\n }\n >\n {rule.addButton}\n </TextButton>\n </Box>\n </Box>\n )}\n {renderExclusiveRulesExplanation(\n 'specificValues',\n 'field-validation-specific-values',\n rule.exclusiveRulesExplanation,\n )}\n </Box>\n );\n\n const renderPattern = (rule: PatternFieldValidationRuleConfig) => {\n const patternViolation = errorViolations.find(\n (violation) =>\n violation.rule === 'pattern' &&\n (violation.type === 'invalidPattern' ||\n violation.type === 'unsafePattern'),\n );\n const patternError =\n patternViolation?.type === 'unsafePattern'\n ? rule.unsafeError ?? rule.invalidError\n : rule.invalidError;\n\n return (\n <Box key=\"pattern\" direction=\"vertical\" gap=\"SP2\">\n <RuleToggle\n dataHook=\"field-validation-pattern\"\n checked={hasPattern}\n disabled={\n isRuleDisabled('pattern') || isBlockedByExclusivity('pattern')\n }\n label={rule.label}\n infoContent={rule.tooltip}\n onChange={() => update({ pattern: hasPattern ? undefined : '' })}\n />\n {hasPattern && (\n <FormField stretchContent label={rule.inputLabel}>\n <Input\n dataHook=\"field-validation-pattern-input\"\n size=\"small\"\n value={data.pattern}\n disabled={\n isRuleDisabled('pattern') || isInExclusiveConflict('pattern')\n }\n status={\n hasUnattributedInvalidState || patternViolation\n ? 'error'\n : undefined\n }\n statusMessage={patternViolation ? patternError : undefined}\n onChange={(event) => update({ pattern: event.target.value })}\n />\n </FormField>\n )}\n {renderExclusiveRulesExplanation(\n 'pattern',\n 'field-validation-pattern',\n rule.exclusiveRulesExplanation,\n )}\n </Box>\n );\n };\n\n const renderRule = (rule: FieldValidationRuleConfig) => {\n switch (rule.type) {\n case 'required':\n return renderRequired(rule);\n case 'charactersLimit':\n return renderCharactersLimit(rule);\n case 'specificValues':\n return renderSpecificValues(rule);\n case 'pattern':\n return renderPattern(rule);\n }\n };\n\n return (\n <Box dataHook={dataHook} direction=\"vertical\" gap=\"SP3\">\n {rules.map(renderRule)}\n </Box>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_designSystem","_uuid","_fieldValidationSettings","_fieldValidationSettingsInputStCss","_jsxFileName","RuleToggle","dataHook","checked","disabled","label","infoContent","onChange","default","createElement","FormField","labelPlacement","labelSize","stretchContent","__self","__source","fileName","lineNumber","columnNumber","ToggleSwitch","size","FieldValidationSettingsInput","data","readOnly","invalid","rules","disabledRules","exclusiveSpecificValues","showValidationErrors","_rules$find","isRuleDisabled","rule","Boolean","includes","supportedRules","map","type","violations","getFieldValidationSettingsViolations","errorViolations","supportsSpecificValues","some","supportsCharactersLimit","supportsPattern","hasSpecificValues","specificValues","undefined","hasCharactersLimit","charactersLimit","hasPattern","pattern","hasUnattributedInvalidState","every","isBlockedByExclusivity","isInExclusiveConflict","violation","specificValuesExplanation","find","exclusiveRulesExplanation","hasRenderedSharedExplanation","renderExclusiveRulesExplanation","hook","explanation","text","Text","secondary","update","next","renderRequired","key","required","tooltip","renderCharactersLimit","_data$charactersLimit","_data$charactersLimit2","minViolation","bound","maxOutOfBoundsViolation","maxBelowMinViolation","isInputDisabled","Box","direction","gap","verticalAlign","width","minLabel","NumberInput","value","min","status","statusMessage","outOfBoundsError","max","height","separator","maxLabel","maxBelowMinError","renderSpecificValues","valuesViolation","hasValuesError","valuesError","emptyError","blankError","duplicateError","addValues","inputValues","knownValues","Set","trim","addedValues","filter","has","add","id","uuid","length","optionsLabel","optionsHint","MultiSelect","className","classes","specificValuesInput","tags","onManuallyInput","onRemoveTag","tagId","renderPattern","patternViolation","patternError","unsafeError","invalidError","inputLabel","Input","event","target","renderRule","exports"],"sources":["../../../../src/components/field-validation-settings/field-validation-settings-input.tsx"],"sourcesContent":["import React from 'react';\nimport {\n Box,\n FormField,\n Input,\n MultiSelect,\n NumberInput,\n Text,\n ToggleSwitch,\n} from '@wix/design-system';\nimport { v4 as uuid } from 'uuid';\nimport type { ControlledInputProps } from '../../types/controlled-input';\nimport type {\n CharactersLimitFieldValidationRuleConfig,\n FieldValidationRule,\n FieldValidationRuleConfig,\n FieldValidationSettingsValue,\n PatternFieldValidationRuleConfig,\n RequiredFieldValidationRuleConfig,\n SpecificValuesFieldValidationRuleConfig,\n} from '../../types/validation';\nimport { getFieldValidationSettingsViolations } from '../../validations/field-validation-settings';\nimport { classes } from './field-validation-settings-input.st.css.js';\n\nexport interface FieldValidationSettingsInputProps\n extends Omit<\n ControlledInputProps<FieldValidationSettingsValue>,\n 'autoFocus' | 'onBlur'\n > {\n rules: readonly FieldValidationRuleConfig[];\n /** Show error styling/messages, including caller-supplied `invalid` state.\n * Defaults to true. Does not alter validity or rule availability. */\n showValidationErrors?: boolean;\n /** Rules the caller has fixed and the user can't toggle, independent of `readOnly`. */\n disabledRules?: readonly FieldValidationRule[];\n /** Whether `specificValues` rejects `charactersLimit`/`pattern` on the same\n * field. Pass `false` for callers that let a field carry both. */\n exclusiveSpecificValues?: boolean;\n}\n\ninterface RuleToggleProps {\n dataHook: string;\n checked: boolean;\n disabled?: boolean;\n label: string;\n infoContent: string;\n onChange(): void;\n}\n\nconst RuleToggle = ({\n dataHook,\n checked,\n disabled,\n label,\n infoContent,\n onChange,\n}: RuleToggleProps) => (\n <FormField\n dataHook={dataHook}\n label={label}\n labelPlacement=\"right\"\n labelSize=\"small\"\n stretchContent={false}\n infoContent={infoContent}\n >\n <ToggleSwitch\n dataHook={`${dataHook}-toggle`}\n size=\"medium\"\n checked={checked}\n disabled={disabled}\n onChange={onChange}\n />\n </FormField>\n);\n\nexport const FieldValidationSettingsInput = ({\n data,\n onChange,\n readOnly,\n invalid,\n dataHook = 'field-validation-settings',\n rules,\n disabledRules,\n exclusiveSpecificValues = true,\n showValidationErrors = true,\n}: FieldValidationSettingsInputProps) => {\n const isRuleDisabled = (rule: FieldValidationRule) =>\n Boolean(readOnly) || Boolean(disabledRules?.includes(rule));\n const supportedRules = rules.map(({ type }) => type);\n const violations = getFieldValidationSettingsViolations(\n data,\n supportedRules,\n {\n exclusiveSpecificValues,\n },\n );\n const errorViolations = showValidationErrors ? violations : [];\n const supportsSpecificValues = rules.some(\n ({ type }) => type === 'specificValues',\n );\n const supportsCharactersLimit = rules.some(\n ({ type }) => type === 'charactersLimit',\n );\n const supportsPattern = rules.some(({ type }) => type === 'pattern');\n const hasSpecificValues =\n supportsSpecificValues && data.specificValues !== undefined;\n const hasCharactersLimit =\n supportsCharactersLimit && data.charactersLimit !== undefined;\n const hasPattern = supportsPattern && data.pattern !== undefined;\n // Other violations put an error on a control; `exclusiveRules` renders only as\n // text under the rule, so it leaves `invalid` unattributed.\n const hasUnattributedInvalidState =\n showValidationErrors &&\n Boolean(invalid) &&\n violations.every(({ type }) => type === 'exclusiveRules');\n const isBlockedByExclusivity = (rule: FieldValidationRule) => {\n if (!exclusiveSpecificValues) {\n return false;\n }\n switch (rule) {\n case 'charactersLimit':\n return hasSpecificValues && !hasCharactersLimit;\n case 'pattern':\n return hasSpecificValues && !hasPattern;\n case 'specificValues':\n return (hasCharactersLimit || hasPattern) && !hasSpecificValues;\n default:\n return false;\n }\n };\n // Widening `isBlockedByExclusivity` to cover the both-on state instead would\n // disable both toggles at once, leaving no way to switch either rule off.\n const isInExclusiveConflict = (rule: FieldValidationRule) =>\n violations.some(\n (violation) =>\n violation.rule === rule && violation.type === 'exclusiveRules',\n );\n const specificValuesExplanation = rules.find(\n (rule): rule is SpecificValuesFieldValidationRuleConfig =>\n rule.type === 'specificValues',\n )?.exclusiveRulesExplanation;\n // Callers written before the note moved under the blocked rule put a single\n // explanation on `specificValues`. Show it once rather than dropping it —\n // `specificValues` renders that same copy as its own, so both paths count.\n let hasRenderedSharedExplanation = false;\n const renderExclusiveRulesExplanation = (\n rule: FieldValidationRule,\n hook: string,\n explanation?: string,\n ) => {\n if (!isBlockedByExclusivity(rule) && !isInExclusiveConflict(rule)) {\n return null;\n }\n\n const text = explanation ?? specificValuesExplanation;\n\n if (!text) {\n return null;\n }\n\n if (text === specificValuesExplanation) {\n if (hasRenderedSharedExplanation) {\n return null;\n }\n hasRenderedSharedExplanation = true;\n }\n\n return (\n <Text size=\"tiny\" secondary dataHook={`${hook}-exclusive-help`}>\n {text}\n </Text>\n );\n };\n\n const update = (next: Partial<FieldValidationSettingsValue>) =>\n onChange({ ...data, ...next });\n\n const renderRequired = (rule: RequiredFieldValidationRuleConfig) => (\n <RuleToggle\n key=\"required\"\n dataHook=\"field-validation-required\"\n checked={Boolean(data.required)}\n disabled={isRuleDisabled('required')}\n label={rule.label}\n infoContent={rule.tooltip}\n onChange={() => update({ required: !data.required })}\n />\n );\n\n const renderCharactersLimit = (\n rule: CharactersLimitFieldValidationRuleConfig,\n ) => {\n const minViolation = errorViolations.find(\n (violation) =>\n violation.rule === 'charactersLimit' &&\n violation.type === 'outOfBounds' &&\n violation.bound === 'min',\n );\n const maxOutOfBoundsViolation = errorViolations.find(\n (violation) =>\n violation.rule === 'charactersLimit' &&\n violation.type === 'outOfBounds' &&\n violation.bound === 'max',\n );\n const maxBelowMinViolation = errorViolations.find(\n (violation) =>\n violation.rule === 'charactersLimit' &&\n violation.type === 'maxBelowMin',\n );\n const isInputDisabled =\n isRuleDisabled('charactersLimit') ||\n isInExclusiveConflict('charactersLimit');\n\n return (\n <Box key=\"charactersLimit\" direction=\"vertical\" gap=\"SP2\">\n <RuleToggle\n dataHook=\"field-validation-characters-limit\"\n checked={hasCharactersLimit}\n disabled={\n isRuleDisabled('charactersLimit') ||\n isBlockedByExclusivity('charactersLimit')\n }\n label={rule.label}\n infoContent={rule.tooltip}\n onChange={() =>\n update({ charactersLimit: hasCharactersLimit ? undefined : {} })\n }\n />\n {hasCharactersLimit && (\n <Box verticalAlign=\"bottom\" gap=\"SP2\">\n <Box width=\"100px\">\n <FormField stretchContent label={rule.minLabel}>\n <NumberInput\n dataHook=\"field-validation-min-characters\"\n size=\"medium\"\n value={data.charactersLimit?.min}\n disabled={isInputDisabled}\n status={\n hasUnattributedInvalidState || minViolation\n ? 'error'\n : undefined\n }\n statusMessage={\n minViolation?.type === 'outOfBounds'\n ? rule.outOfBoundsError(\n minViolation.min,\n minViolation.max,\n )\n : undefined\n }\n onChange={(value) =>\n update({\n charactersLimit: {\n ...data.charactersLimit,\n min: value ?? undefined,\n },\n })\n }\n />\n </FormField>\n </Box>\n <Box height=\"36px\" verticalAlign=\"middle\">\n <Text size=\"small\" secondary>\n {rule.separator}\n </Text>\n </Box>\n <Box width=\"100px\">\n <FormField stretchContent label={rule.maxLabel}>\n <NumberInput\n dataHook=\"field-validation-max-characters\"\n size=\"medium\"\n value={data.charactersLimit?.max}\n disabled={isInputDisabled}\n status={\n hasUnattributedInvalidState ||\n maxOutOfBoundsViolation ||\n maxBelowMinViolation\n ? 'error'\n : undefined\n }\n statusMessage={\n maxOutOfBoundsViolation?.type === 'outOfBounds'\n ? rule.outOfBoundsError(\n maxOutOfBoundsViolation.min,\n maxOutOfBoundsViolation.max,\n )\n : maxBelowMinViolation\n ? rule.maxBelowMinError\n : undefined\n }\n onChange={(value) =>\n update({\n charactersLimit: {\n ...data.charactersLimit,\n max: value ?? undefined,\n },\n })\n }\n />\n </FormField>\n </Box>\n </Box>\n )}\n {renderExclusiveRulesExplanation(\n 'charactersLimit',\n 'field-validation-characters-limit',\n rule.exclusiveRulesExplanation,\n )}\n </Box>\n );\n };\n\n const renderSpecificValues = (\n rule: SpecificValuesFieldValidationRuleConfig,\n ) => {\n const valuesViolation = errorViolations.find(\n (violation) =>\n violation.rule === 'specificValues' &&\n violation.type !== 'exclusiveRules',\n );\n const hasValuesError = Boolean(\n valuesViolation || hasUnattributedInvalidState,\n );\n let valuesError: string | undefined;\n if (valuesViolation?.type === 'empty') {\n valuesError = rule.emptyError;\n } else if (valuesViolation?.type === 'blank') {\n valuesError = rule.blankError;\n } else if (valuesViolation?.type === 'duplicate') {\n valuesError = rule.duplicateError;\n }\n const specificValues = data.specificValues ?? [];\n\n const addValues = (inputValues: string[]) => {\n const knownValues = new Set(\n specificValues.map(({ value }) => value.trim()),\n );\n const addedValues = inputValues\n .map((value) => value.trim())\n .filter((value) => {\n if (!value || knownValues.has(value)) {\n return false;\n }\n knownValues.add(value);\n return true;\n })\n .map((value) => ({ id: uuid(), value }));\n\n if (addedValues.length > 0) {\n update({ specificValues: [...specificValues, ...addedValues] });\n }\n };\n\n return (\n <Box key=\"specificValues\" direction=\"vertical\" gap=\"SP2\">\n <RuleToggle\n dataHook=\"field-validation-specific-values\"\n checked={hasSpecificValues}\n disabled={\n isRuleDisabled('specificValues') ||\n isBlockedByExclusivity('specificValues')\n }\n label={rule.label}\n infoContent={rule.tooltip}\n onChange={() =>\n update({ specificValues: hasSpecificValues ? undefined : [] })\n }\n />\n {hasSpecificValues && (\n <FormField\n dataHook=\"field-validation-specific-values-field\"\n label={rule.optionsLabel}\n labelSize=\"small\"\n stretchContent\n status={hasValuesError ? 'error' : undefined}\n statusMessage={hasValuesError ? valuesError : rule.optionsHint}\n >\n <MultiSelect\n dataHook=\"field-validation-specific-values-input\"\n className={classes.specificValuesInput}\n tags={specificValues.map(({ id, value }) => ({\n id,\n label: value,\n }))}\n disabled={isRuleDisabled('specificValues')}\n onManuallyInput={addValues}\n onRemoveTag={(tagId) =>\n update({\n specificValues: specificValues.filter(\n ({ id }) => id !== tagId,\n ),\n })\n }\n />\n </FormField>\n )}\n {renderExclusiveRulesExplanation(\n 'specificValues',\n 'field-validation-specific-values',\n rule.exclusiveRulesExplanation,\n )}\n </Box>\n );\n };\n\n const renderPattern = (rule: PatternFieldValidationRuleConfig) => {\n const patternViolation = errorViolations.find(\n (violation) =>\n violation.rule === 'pattern' &&\n (violation.type === 'invalidPattern' ||\n violation.type === 'unsafePattern'),\n );\n const patternError =\n patternViolation?.type === 'unsafePattern'\n ? rule.unsafeError ?? rule.invalidError\n : rule.invalidError;\n\n return (\n <Box key=\"pattern\" direction=\"vertical\" gap=\"SP2\">\n <RuleToggle\n dataHook=\"field-validation-pattern\"\n checked={hasPattern}\n disabled={\n isRuleDisabled('pattern') || isBlockedByExclusivity('pattern')\n }\n label={rule.label}\n infoContent={rule.tooltip}\n onChange={() => update({ pattern: hasPattern ? undefined : '' })}\n />\n {hasPattern && (\n <FormField stretchContent label={rule.inputLabel}>\n <Input\n dataHook=\"field-validation-pattern-input\"\n size=\"small\"\n value={data.pattern}\n disabled={\n isRuleDisabled('pattern') || isInExclusiveConflict('pattern')\n }\n status={\n hasUnattributedInvalidState || patternViolation\n ? 'error'\n : undefined\n }\n statusMessage={patternViolation ? patternError : undefined}\n onChange={(event) => update({ pattern: event.target.value })}\n />\n </FormField>\n )}\n {renderExclusiveRulesExplanation(\n 'pattern',\n 'field-validation-pattern',\n rule.exclusiveRulesExplanation,\n )}\n </Box>\n );\n };\n\n const renderRule = (rule: FieldValidationRuleConfig) => {\n switch (rule.type) {\n case 'required':\n return renderRequired(rule);\n case 'charactersLimit':\n return renderCharactersLimit(rule);\n case 'specificValues':\n return renderSpecificValues(rule);\n case 'pattern':\n return renderPattern(rule);\n }\n };\n\n return (\n <Box dataHook={dataHook} direction=\"vertical\" gap=\"SP3\">\n {rules.map(renderRule)}\n </Box>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/* These invisible WDS elements overflow the tags box and give it a horizontal scrollbar. */
|
|
2
|
+
/* The border layer sticks out 1px. */
|
|
3
|
+
.specificValuesInput :global(.wds-input-with-tags__input)::after {
|
|
4
|
+
inset: 0;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/* The width sizer keeps the last typed text after it becomes tags, so a long comma list stays one unbreakable line. */
|
|
8
|
+
.specificValuesInput :global(.wds-input-with-tags__hidden-div) {
|
|
9
|
+
overflow: hidden;
|
|
10
|
+
}
|
package/dist/cjs/components/field-validation-settings/field-validation-settings-input.st.css.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.vars = exports.style = exports.stVars = exports.st = exports.namespace = exports.layers = exports.keyframes = exports.cssStates = exports.containers = exports.classes = void 0;
|
|
5
|
+
var _stylableEsmRuntime = require("../../stylable-esm-runtime.js");
|
|
6
|
+
// @ts-nocheck
|
|
7
|
+
|
|
8
|
+
var _namespace_ = "fieldvalidationsettingsinput2294766599";
|
|
9
|
+
var _style_ = _stylableEsmRuntime.classesRuntime.bind(null, _namespace_);
|
|
10
|
+
var cssStates = exports.cssStates = _stylableEsmRuntime.statesRuntime.bind(null, _namespace_);
|
|
11
|
+
var style = exports.style = _style_;
|
|
12
|
+
var st = exports.st = _style_;
|
|
13
|
+
var namespace = exports.namespace = _namespace_;
|
|
14
|
+
var classes = exports.classes = {
|
|
15
|
+
"root": "fieldvalidationsettingsinput2294766599__root",
|
|
16
|
+
"specificValuesInput": "fieldvalidationsettingsinput2294766599__specificValuesInput"
|
|
17
|
+
};
|
|
18
|
+
var keyframes = exports.keyframes = {};
|
|
19
|
+
var layers = exports.layers = {};
|
|
20
|
+
var containers = exports.containers = {};
|
|
21
|
+
var stVars = exports.stVars = {};
|
|
22
|
+
var vars = exports.vars = {};
|
|
23
|
+
//# sourceMappingURL=field-validation-settings-input.st.css.js.map
|
package/dist/cjs/components/field-validation-settings/field-validation-settings-input.st.css.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_stylableEsmRuntime","require","_namespace_","_style_","classesRuntime","bind","cssStates","exports","statesRuntime","style","st","namespace","classes","keyframes","layers","containers","stVars","vars"],"sources":["../../../../src/components/field-validation-settings/field-validation-settings-input.st.css.ts"],"sourcesContent":["// @ts-nocheck\n\n\nimport { classesRuntime, statesRuntime } from \"../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"fieldvalidationsettingsinput2294766599\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style: import(\"@stylable/runtime\").STFunction = _style_;\nexport var st: import(\"@stylable/runtime\").STFunction = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"fieldvalidationsettingsinput2294766599__root\",\"specificValuesInput\":\"fieldvalidationsettingsinput2294766599__specificValuesInput\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {}; \n\n\n\n\n"],"mappings":";;;;AAGA,IAAAA,mBAAA,GAAAC,OAAA;AAHA;;AAOA,IAAIC,WAAW,GAAG,wCAAwC;AAC1D,IAAIC,OAAO,GAAGC,kCAAc,CAACC,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AAE7C,IAAII,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,iCAAa,CAACH,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AACrD,IAAIO,KAA6C,GAAAF,OAAA,CAAAE,KAAA,GAAGN,OAAO;AAC3D,IAAIO,EAA0C,GAAAH,OAAA,CAAAG,EAAA,GAAGP,OAAO;AAExD,IAAIQ,SAAS,GAAAJ,OAAA,CAAAI,SAAA,GAAGT,WAAW;AAC3B,IAAIU,OAAO,GAAAL,OAAA,CAAAK,OAAA,GAAG;EAAC,MAAM,EAAC,8CAA8C;EAAC,qBAAqB,EAAC;AAA6D,CAAC;AACzJ,IAAIC,SAAS,GAAAN,OAAA,CAAAM,SAAA,GAAG,CAAC,CAAC;AAClB,IAAIC,MAAM,GAAAP,OAAA,CAAAO,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,UAAU,GAAAR,OAAA,CAAAQ,UAAA,GAAG,CAAC,CAAC;AACnB,IAAIC,MAAM,GAAAT,OAAA,CAAAS,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,IAAI,GAAAV,OAAA,CAAAU,IAAA,GAAG,CAAC,CAAC","ignoreList":[]}
|
package/dist/cjs/components/field-validation-settings/field-validation-settings.uni.driver.js
CHANGED
|
@@ -6,6 +6,7 @@ var _unidriver = require("@wix/design-system/dist/testkit/unidriver");
|
|
|
6
6
|
var _baseDriver = require("../../testkit/base-driver");
|
|
7
7
|
function FieldValidationSettingsUniDriver(base, body) {
|
|
8
8
|
const getToggle = rule => (0, _unidriver.ToggleSwitchUniDriver)(base.$(`[data-hook="field-validation-${rule}-toggle"]`), body);
|
|
9
|
+
const getSpecificValuesInput = () => (0, _unidriver.MultiSelectUniDriver)(base.$('[data-hook="field-validation-specific-values-input"]'), body);
|
|
9
10
|
return {
|
|
10
11
|
...(0, _baseDriver.baseUniDriverFactory)(base),
|
|
11
12
|
getRequiredToggle: () => getToggle('required'),
|
|
@@ -14,9 +15,26 @@ function FieldValidationSettingsUniDriver(base, body) {
|
|
|
14
15
|
getPatternToggle: () => getToggle('pattern'),
|
|
15
16
|
getMinCharactersInput: () => (0, _unidriver.NumberInputUniDriver)(base.$('[data-hook="field-validation-min-characters"]'), body),
|
|
16
17
|
getMaxCharactersInput: () => (0, _unidriver.NumberInputUniDriver)(base.$('[data-hook="field-validation-max-characters"]'), body),
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
getSpecificValuesField: () => (0, _unidriver.FormFieldUniDriver)(base.$('[data-hook="field-validation-specific-values-field"]'), body),
|
|
19
|
+
getSpecificValuesInput,
|
|
20
|
+
addSpecificValues: async text => {
|
|
21
|
+
const input = getSpecificValuesInput();
|
|
22
|
+
await input.inputDriver.enterText(text);
|
|
23
|
+
await input.driver.pressKey('Enter');
|
|
24
|
+
},
|
|
25
|
+
getSpecificValueLabels: async () => {
|
|
26
|
+
const {
|
|
27
|
+
driver
|
|
28
|
+
} = getSpecificValuesInput();
|
|
29
|
+
const count = await driver.numberOfTags();
|
|
30
|
+
return Promise.all(Array.from({
|
|
31
|
+
length: count
|
|
32
|
+
}, (_tag, index) => driver.getTagLabelAt(index)));
|
|
33
|
+
},
|
|
34
|
+
removeSpecificValue: async id => {
|
|
35
|
+
const tag = await getSpecificValuesInput().driver.getTagDriverByTagId(id);
|
|
36
|
+
await tag.removeTag();
|
|
37
|
+
},
|
|
20
38
|
getPatternInput: () => (0, _unidriver.InputUniDriver)(base.$('[data-hook="field-validation-pattern-input"]'), body),
|
|
21
39
|
getExclusiveRulesExplanation: rule => base.$(`[data-hook="field-validation-${rule}-exclusive-help"]`),
|
|
22
40
|
hasExclusiveRulesExplanation: () => base.$('[data-hook$="exclusive-help"]').exists()
|