@wordpress/dataviews 11.0.0 → 11.1.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/CHANGELOG.md +20 -0
- package/README.md +140 -93
- package/build/components/dataviews-filters/filter.js +25 -267
- package/build/components/dataviews-filters/filter.js.map +2 -2
- package/build/components/dataviews-filters/input-widget.js +1 -4
- package/build/components/dataviews-filters/input-widget.js.map +2 -2
- package/build/components/dataviews-filters/use-filters.js +3 -3
- package/build/components/dataviews-filters/use-filters.js.map +2 -2
- package/build/constants.js +5 -142
- package/build/constants.js.map +2 -2
- package/build/dataform-controls/number.js +2 -1
- package/build/dataform-controls/number.js.map +2 -2
- package/build/dataform-controls/textarea.js +3 -1
- package/build/dataform-controls/textarea.js.map +2 -2
- package/build/dataform-controls/utils/get-custom-validity.js +8 -0
- package/build/dataform-controls/utils/get-custom-validity.js.map +2 -2
- package/build/dataform-controls/utils/validated-input.js +4 -2
- package/build/dataform-controls/utils/validated-input.js.map +2 -2
- package/build/dataform-controls/utils/validated-number.js +4 -2
- package/build/dataform-controls/utils/validated-number.js.map +2 -2
- package/build/dataform-layouts/panel/modal.js +14 -5
- package/build/dataform-layouts/panel/modal.js.map +2 -2
- package/build/dataviews-layouts/grid/composite-grid.js +39 -37
- package/build/dataviews-layouts/grid/composite-grid.js.map +3 -3
- package/build/dataviews-layouts/table/index.js +8 -3
- package/build/dataviews-layouts/table/index.js.map +2 -2
- package/build/field-types/array.js +27 -14
- package/build/field-types/array.js.map +3 -3
- package/build/field-types/boolean.js +13 -10
- package/build/field-types/boolean.js.map +3 -3
- package/build/field-types/color.js +14 -11
- package/build/field-types/color.js.map +3 -3
- package/build/field-types/date.js +11 -8
- package/build/field-types/date.js.map +3 -3
- package/build/field-types/datetime.js +7 -5
- package/build/field-types/datetime.js.map +3 -3
- package/build/field-types/email.js +20 -11
- package/build/field-types/email.js.map +3 -3
- package/build/field-types/index.js +12 -14
- package/build/field-types/index.js.map +3 -3
- package/build/field-types/integer.js +63 -14
- package/build/field-types/integer.js.map +3 -3
- package/build/field-types/media.js +5 -5
- package/build/field-types/media.js.map +2 -2
- package/build/field-types/no-type.js +9 -6
- package/build/field-types/no-type.js.map +3 -3
- package/build/field-types/number.js +51 -15
- package/build/field-types/number.js.map +3 -3
- package/build/field-types/password.js +13 -5
- package/build/field-types/password.js.map +3 -3
- package/build/field-types/telephone.js +13 -5
- package/build/field-types/telephone.js.map +3 -3
- package/build/field-types/text.js +13 -5
- package/build/field-types/text.js.map +3 -3
- package/build/field-types/url.js +13 -5
- package/build/field-types/url.js.map +3 -3
- package/build/field-types/utils/get-is-valid.js +89 -0
- package/build/field-types/utils/get-is-valid.js.map +7 -0
- package/build/field-types/utils/is-valid-elements.js +35 -0
- package/build/field-types/utils/is-valid-elements.js.map +7 -0
- package/build/field-types/utils/is-valid-max-length.js +36 -0
- package/build/field-types/utils/is-valid-max-length.js.map +7 -0
- package/build/field-types/utils/is-valid-max.js +36 -0
- package/build/field-types/utils/is-valid-max.js.map +7 -0
- package/build/field-types/utils/is-valid-min-length.js +36 -0
- package/build/field-types/utils/is-valid-min-length.js.map +7 -0
- package/build/field-types/utils/is-valid-min.js +36 -0
- package/build/field-types/utils/is-valid-min.js.map +7 -0
- package/build/field-types/utils/is-valid-pattern.js +41 -0
- package/build/field-types/utils/is-valid-pattern.js.map +7 -0
- package/build/field-types/utils/is-valid-required-for-array.js +32 -0
- package/build/field-types/utils/is-valid-required-for-array.js.map +7 -0
- package/build/field-types/utils/is-valid-required-for-bool.js +30 -0
- package/build/field-types/utils/is-valid-required-for-bool.js.map +7 -0
- package/build/field-types/utils/is-valid-required.js +30 -0
- package/build/field-types/utils/is-valid-required.js.map +7 -0
- package/build/hooks/use-form-validity.js +52 -102
- package/build/hooks/use-form-validity.js.map +2 -2
- package/build/types/field-api.js.map +1 -1
- package/build/types/private.js.map +1 -1
- package/build/utils/filter-sort-and-paginate.js +5 -0
- package/build/utils/filter-sort-and-paginate.js.map +3 -3
- package/build/utils/operators.js +399 -0
- package/build/utils/operators.js.map +7 -0
- package/build-module/components/dataviews-filters/filter.js +26 -292
- package/build-module/components/dataviews-filters/filter.js.map +2 -2
- package/build-module/components/dataviews-filters/input-widget.js +1 -4
- package/build-module/components/dataviews-filters/input-widget.js.map +2 -2
- package/build-module/components/dataviews-filters/use-filters.js +6 -3
- package/build-module/components/dataviews-filters/use-filters.js.map +2 -2
- package/build-module/constants.js +5 -139
- package/build-module/constants.js.map +2 -2
- package/build-module/dataform-controls/number.js +2 -1
- package/build-module/dataform-controls/number.js.map +2 -2
- package/build-module/dataform-controls/textarea.js +3 -1
- package/build-module/dataform-controls/textarea.js.map +2 -2
- package/build-module/dataform-controls/utils/get-custom-validity.js +8 -0
- package/build-module/dataform-controls/utils/get-custom-validity.js.map +2 -2
- package/build-module/dataform-controls/utils/validated-input.js +4 -2
- package/build-module/dataform-controls/utils/validated-input.js.map +2 -2
- package/build-module/dataform-controls/utils/validated-number.js +4 -2
- package/build-module/dataform-controls/utils/validated-number.js.map +2 -2
- package/build-module/dataform-layouts/panel/modal.js +14 -5
- package/build-module/dataform-layouts/panel/modal.js.map +2 -2
- package/build-module/dataviews-layouts/grid/composite-grid.js +40 -38
- package/build-module/dataviews-layouts/grid/composite-grid.js.map +3 -3
- package/build-module/dataviews-layouts/table/index.js +8 -3
- package/build-module/dataviews-layouts/table/index.js.map +2 -2
- package/build-module/field-types/array.js +17 -14
- package/build-module/field-types/array.js.map +2 -2
- package/build-module/field-types/boolean.js +13 -10
- package/build-module/field-types/boolean.js.map +2 -2
- package/build-module/field-types/color.js +14 -11
- package/build-module/field-types/color.js.map +2 -2
- package/build-module/field-types/date.js +11 -8
- package/build-module/field-types/date.js.map +2 -2
- package/build-module/field-types/datetime.js +7 -5
- package/build-module/field-types/datetime.js.map +2 -2
- package/build-module/field-types/email.js +20 -11
- package/build-module/field-types/email.js.map +2 -2
- package/build-module/field-types/index.js +12 -14
- package/build-module/field-types/index.js.map +2 -2
- package/build-module/field-types/integer.js +58 -13
- package/build-module/field-types/integer.js.map +2 -2
- package/build-module/field-types/media.js +5 -5
- package/build-module/field-types/media.js.map +2 -2
- package/build-module/field-types/no-type.js +10 -7
- package/build-module/field-types/no-type.js.map +2 -2
- package/build-module/field-types/number.js +47 -15
- package/build-module/field-types/number.js.map +2 -2
- package/build-module/field-types/password.js +13 -5
- package/build-module/field-types/password.js.map +2 -2
- package/build-module/field-types/telephone.js +13 -5
- package/build-module/field-types/telephone.js.map +2 -2
- package/build-module/field-types/text.js +13 -5
- package/build-module/field-types/text.js.map +2 -2
- package/build-module/field-types/url.js +13 -5
- package/build-module/field-types/url.js.map +2 -2
- package/build-module/field-types/utils/get-is-valid.js +68 -0
- package/build-module/field-types/utils/get-is-valid.js.map +7 -0
- package/build-module/field-types/utils/is-valid-elements.js +14 -0
- package/build-module/field-types/utils/is-valid-elements.js.map +7 -0
- package/build-module/field-types/utils/is-valid-max-length.js +15 -0
- package/build-module/field-types/utils/is-valid-max-length.js.map +7 -0
- package/build-module/field-types/utils/is-valid-max.js +15 -0
- package/build-module/field-types/utils/is-valid-max.js.map +7 -0
- package/build-module/field-types/utils/is-valid-min-length.js +15 -0
- package/build-module/field-types/utils/is-valid-min-length.js.map +7 -0
- package/build-module/field-types/utils/is-valid-min.js +15 -0
- package/build-module/field-types/utils/is-valid-min.js.map +7 -0
- package/build-module/field-types/utils/is-valid-pattern.js +20 -0
- package/build-module/field-types/utils/is-valid-pattern.js.map +7 -0
- package/build-module/field-types/utils/is-valid-required-for-array.js +11 -0
- package/build-module/field-types/utils/is-valid-required-for-array.js.map +7 -0
- package/build-module/field-types/utils/is-valid-required-for-bool.js +9 -0
- package/build-module/field-types/utils/is-valid-required-for-bool.js.map +7 -0
- package/build-module/field-types/utils/is-valid-required.js +9 -0
- package/build-module/field-types/utils/is-valid-required.js.map +7 -0
- package/build-module/hooks/use-form-validity.js +52 -102
- package/build-module/hooks/use-form-validity.js.map +2 -2
- package/build-module/utils/filter-sort-and-paginate.js +5 -0
- package/build-module/utils/filter-sort-and-paginate.js.map +2 -2
- package/build-module/utils/operators.js +394 -0
- package/build-module/utils/operators.js.map +7 -0
- package/build-style/style-rtl.css +13 -80
- package/build-style/style.css +13 -80
- package/build-types/components/dataviews-filters/filter.d.ts.map +1 -1
- package/build-types/components/dataviews-filters/input-widget.d.ts.map +1 -1
- package/build-types/components/dataviews-filters/use-filters.d.ts.map +1 -1
- package/build-types/constants.d.ts +6 -12
- package/build-types/constants.d.ts.map +1 -1
- package/build-types/dataform-controls/number.d.ts.map +1 -1
- package/build-types/dataform-controls/textarea.d.ts.map +1 -1
- package/build-types/dataform-controls/utils/get-custom-validity.d.ts +2 -2
- package/build-types/dataform-controls/utils/get-custom-validity.d.ts.map +1 -1
- package/build-types/dataform-controls/utils/validated-input.d.ts.map +1 -1
- package/build-types/dataform-controls/utils/validated-number.d.ts.map +1 -1
- package/build-types/dataform-layouts/panel/modal.d.ts.map +1 -1
- package/build-types/dataviews-layouts/grid/composite-grid.d.ts.map +1 -1
- package/build-types/dataviews-layouts/table/index.d.ts.map +1 -1
- package/build-types/field-types/array.d.ts +9 -2
- package/build-types/field-types/array.d.ts.map +1 -1
- package/build-types/field-types/boolean.d.ts +9 -2
- package/build-types/field-types/boolean.d.ts.map +1 -1
- package/build-types/field-types/color.d.ts +9 -2
- package/build-types/field-types/color.d.ts.map +1 -1
- package/build-types/field-types/date.d.ts +6 -4
- package/build-types/field-types/date.d.ts.map +1 -1
- package/build-types/field-types/datetime.d.ts +6 -4
- package/build-types/field-types/datetime.d.ts.map +1 -1
- package/build-types/field-types/email.d.ts +15 -2
- package/build-types/field-types/email.d.ts.map +1 -1
- package/build-types/field-types/index.d.ts.map +1 -1
- package/build-types/field-types/integer.d.ts +17 -4
- package/build-types/field-types/integer.d.ts.map +1 -1
- package/build-types/field-types/media.d.ts +1 -4
- package/build-types/field-types/media.d.ts.map +1 -1
- package/build-types/field-types/no-type.d.ts +6 -4
- package/build-types/field-types/no-type.d.ts.map +1 -1
- package/build-types/field-types/number.d.ts +17 -4
- package/build-types/field-types/number.d.ts.map +1 -1
- package/build-types/field-types/password.d.ts +12 -4
- package/build-types/field-types/password.d.ts.map +1 -1
- package/build-types/field-types/telephone.d.ts +12 -4
- package/build-types/field-types/telephone.d.ts.map +1 -1
- package/build-types/field-types/text.d.ts +12 -4
- package/build-types/field-types/text.d.ts.map +1 -1
- package/build-types/field-types/url.d.ts +12 -4
- package/build-types/field-types/url.d.ts.map +1 -1
- package/build-types/field-types/utils/get-is-valid.d.ts +7 -0
- package/build-types/field-types/utils/get-is-valid.d.ts.map +1 -0
- package/build-types/field-types/utils/is-valid-elements.d.ts +6 -0
- package/build-types/field-types/utils/is-valid-elements.d.ts.map +1 -0
- package/build-types/field-types/utils/is-valid-max-length.d.ts +6 -0
- package/build-types/field-types/utils/is-valid-max-length.d.ts.map +1 -0
- package/build-types/field-types/utils/is-valid-max.d.ts +6 -0
- package/build-types/field-types/utils/is-valid-max.d.ts.map +1 -0
- package/build-types/field-types/utils/is-valid-min-length.d.ts +6 -0
- package/build-types/field-types/utils/is-valid-min-length.d.ts.map +1 -0
- package/build-types/field-types/utils/is-valid-min.d.ts +6 -0
- package/build-types/field-types/utils/is-valid-min.d.ts.map +1 -0
- package/build-types/field-types/utils/is-valid-pattern.d.ts +6 -0
- package/build-types/field-types/utils/is-valid-pattern.d.ts.map +1 -0
- package/build-types/field-types/utils/is-valid-required-for-array.d.ts +6 -0
- package/build-types/field-types/utils/is-valid-required-for-array.d.ts.map +1 -0
- package/build-types/field-types/utils/is-valid-required-for-bool.d.ts +6 -0
- package/build-types/field-types/utils/is-valid-required-for-bool.d.ts.map +1 -0
- package/build-types/field-types/utils/is-valid-required.d.ts +6 -0
- package/build-types/field-types/utils/is-valid-required.d.ts.map +1 -0
- package/build-types/hooks/use-form-validity.d.ts.map +1 -1
- package/build-types/stories/dataform.story.d.ts +9 -1
- package/build-types/stories/dataform.story.d.ts.map +1 -1
- package/build-types/stories/dataviews-picker.story.d.ts.map +1 -1
- package/build-types/stories/dataviews.story.d.ts +27 -2
- package/build-types/stories/dataviews.story.d.ts.map +1 -1
- package/build-types/stories/field-types.story.d.ts +39 -2
- package/build-types/stories/field-types.story.d.ts.map +1 -1
- package/build-types/types/field-api.d.ts +72 -4
- package/build-types/types/field-api.d.ts.map +1 -1
- package/build-types/types/private.d.ts +13 -3
- package/build-types/types/private.d.ts.map +1 -1
- package/build-types/utils/filter-sort-and-paginate.d.ts.map +1 -1
- package/build-types/utils/operators.d.ts +16 -0
- package/build-types/utils/operators.d.ts.map +1 -0
- package/build-wp/index.js +1548 -1452
- package/package.json +17 -16
- package/src/components/dataviews/style.scss +3 -28
- package/src/components/dataviews-filters/filter.tsx +34 -321
- package/src/components/dataviews-filters/input-widget.tsx +7 -5
- package/src/components/dataviews-filters/use-filters.ts +6 -3
- package/src/components/dataviews-footer/style.scss +1 -7
- package/src/constants.ts +6 -140
- package/src/dataform-controls/number.tsx +3 -3
- package/src/dataform-controls/textarea.tsx +7 -1
- package/src/dataform-controls/utils/get-custom-validity.ts +10 -2
- package/src/dataform-controls/utils/validated-input.tsx +8 -2
- package/src/dataform-controls/utils/validated-number.tsx +3 -1
- package/src/dataform-layouts/panel/modal.tsx +14 -5
- package/src/dataviews-layouts/activity/style.scss +1 -1
- package/src/dataviews-layouts/grid/composite-grid.tsx +64 -57
- package/src/dataviews-layouts/grid/style.scss +3 -12
- package/src/dataviews-layouts/table/index.tsx +9 -3
- package/src/dataviews-layouts/table/style.scss +4 -15
- package/src/dataviews-layouts/utils/grid-items.scss +1 -9
- package/src/field-types/array.tsx +26 -19
- package/src/field-types/boolean.tsx +22 -15
- package/src/field-types/color.tsx +22 -15
- package/src/field-types/date.tsx +14 -11
- package/src/field-types/datetime.tsx +6 -4
- package/src/field-types/email.tsx +24 -15
- package/src/field-types/index.tsx +12 -14
- package/src/field-types/integer.tsx +83 -17
- package/src/field-types/media.tsx +4 -4
- package/src/field-types/no-type.tsx +9 -6
- package/src/field-types/number.tsx +82 -16
- package/src/field-types/password.tsx +12 -4
- package/src/field-types/telephone.tsx +12 -4
- package/src/field-types/text.tsx +12 -4
- package/src/field-types/url.tsx +12 -4
- package/src/field-types/utils/get-is-valid.ts +103 -0
- package/src/field-types/utils/is-valid-elements.ts +20 -0
- package/src/field-types/utils/is-valid-max-length.ts +23 -0
- package/src/field-types/utils/is-valid-max.ts +23 -0
- package/src/field-types/utils/is-valid-min-length.ts +23 -0
- package/src/field-types/utils/is-valid-min.ts +23 -0
- package/src/field-types/utils/is-valid-pattern.ts +29 -0
- package/src/field-types/utils/is-valid-required-for-array.ts +18 -0
- package/src/field-types/utils/is-valid-required-for-bool.ts +13 -0
- package/src/field-types/utils/is-valid-required.ts +13 -0
- package/src/hooks/use-form-validity.ts +78 -156
- package/src/stories/dataform.story.tsx +126 -30
- package/src/stories/dataviews-picker.story.tsx +27 -17
- package/src/stories/dataviews.story.tsx +79 -30
- package/src/stories/field-types.story.tsx +86 -4
- package/src/test/filter-sort-and-paginate.js +2 -1
- package/src/test/normalize-fields.ts +87 -11
- package/src/test/use-form-validity.ts +796 -31
- package/src/types/field-api.ts +90 -4
- package/src/types/private.ts +26 -8
- package/src/utils/filter-sort-and-paginate.ts +5 -0
- package/src/utils/operators.tsx +448 -0
- package/tsconfig.json +1 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// packages/dataviews/src/field-types/datetime.tsx
|
|
2
2
|
import RenderFromElements from "./utils/render-from-elements";
|
|
3
3
|
import parseDateTime from "./utils/parse-date-time";
|
|
4
|
+
import isValidElements from "./utils/is-valid-elements";
|
|
4
5
|
import {
|
|
5
6
|
OPERATOR_ON,
|
|
6
7
|
OPERATOR_NOT_ON,
|
|
@@ -11,6 +12,7 @@ import {
|
|
|
11
12
|
OPERATOR_IN_THE_PAST,
|
|
12
13
|
OPERATOR_OVER
|
|
13
14
|
} from "../constants";
|
|
15
|
+
import isValidRequired from "./utils/is-valid-required";
|
|
14
16
|
import { jsx } from "react/jsx-runtime";
|
|
15
17
|
function render({ item, field }) {
|
|
16
18
|
if (field.elements) {
|
|
@@ -37,10 +39,6 @@ var datetime_default = {
|
|
|
37
39
|
render,
|
|
38
40
|
Edit: "datetime",
|
|
39
41
|
sort,
|
|
40
|
-
isValid: {
|
|
41
|
-
elements: true,
|
|
42
|
-
custom: () => null
|
|
43
|
-
},
|
|
44
42
|
enableSorting: true,
|
|
45
43
|
enableGlobalSearch: false,
|
|
46
44
|
defaultOperators: [
|
|
@@ -63,7 +61,11 @@ var datetime_default = {
|
|
|
63
61
|
OPERATOR_IN_THE_PAST,
|
|
64
62
|
OPERATOR_OVER
|
|
65
63
|
],
|
|
66
|
-
getFormat: () => ({})
|
|
64
|
+
getFormat: () => ({}),
|
|
65
|
+
validate: {
|
|
66
|
+
required: isValidRequired,
|
|
67
|
+
elements: isValidElements
|
|
68
|
+
}
|
|
67
69
|
};
|
|
68
70
|
export {
|
|
69
71
|
datetime_default as default
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/field-types/datetime.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport type { DataViewRenderFieldProps, SortDirection } from '../types';\nimport type { FieldType } from '../types/private';\nimport RenderFromElements from './utils/render-from-elements';\nimport parseDateTime from './utils/parse-date-time';\nimport {\n\tOPERATOR_ON,\n\tOPERATOR_NOT_ON,\n\tOPERATOR_BEFORE,\n\tOPERATOR_AFTER,\n\tOPERATOR_BEFORE_INC,\n\tOPERATOR_AFTER_INC,\n\tOPERATOR_IN_THE_PAST,\n\tOPERATOR_OVER,\n} from '../constants';\n\nfunction render( { item, field }: DataViewRenderFieldProps< any > ) {\n\tif ( field.elements ) {\n\t\treturn <RenderFromElements item={ item } field={ field } />;\n\t}\n\n\tconst value = field.getValue( { item } );\n\tif ( [ '', undefined, null ].includes( value ) ) {\n\t\treturn null;\n\t}\n\n\ttry {\n\t\tconst dateValue = parseDateTime( value );\n\t\treturn dateValue?.toLocaleString();\n\t} catch ( error ) {\n\t\treturn null;\n\t}\n}\n\nconst sort = ( a: any, b: any, direction: SortDirection ) => {\n\tconst timeA = new Date( a ).getTime();\n\tconst timeB = new Date( b ).getTime();\n\n\treturn direction === 'asc' ? timeA - timeB : timeB - timeA;\n};\n\nexport default {\n\ttype: 'datetime',\n\trender,\n\tEdit: 'datetime',\n\tsort,\n\
|
|
5
|
-
"mappings": ";AAKA,OAAO,wBAAwB;AAC/B,OAAO,mBAAmB;AAC1B;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;
|
|
4
|
+
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport type { DataViewRenderFieldProps, SortDirection } from '../types';\nimport type { FieldType } from '../types/private';\nimport RenderFromElements from './utils/render-from-elements';\nimport parseDateTime from './utils/parse-date-time';\nimport isValidElements from './utils/is-valid-elements';\nimport {\n\tOPERATOR_ON,\n\tOPERATOR_NOT_ON,\n\tOPERATOR_BEFORE,\n\tOPERATOR_AFTER,\n\tOPERATOR_BEFORE_INC,\n\tOPERATOR_AFTER_INC,\n\tOPERATOR_IN_THE_PAST,\n\tOPERATOR_OVER,\n} from '../constants';\nimport isValidRequired from './utils/is-valid-required';\n\nfunction render( { item, field }: DataViewRenderFieldProps< any > ) {\n\tif ( field.elements ) {\n\t\treturn <RenderFromElements item={ item } field={ field } />;\n\t}\n\n\tconst value = field.getValue( { item } );\n\tif ( [ '', undefined, null ].includes( value ) ) {\n\t\treturn null;\n\t}\n\n\ttry {\n\t\tconst dateValue = parseDateTime( value );\n\t\treturn dateValue?.toLocaleString();\n\t} catch ( error ) {\n\t\treturn null;\n\t}\n}\n\nconst sort = ( a: any, b: any, direction: SortDirection ) => {\n\tconst timeA = new Date( a ).getTime();\n\tconst timeB = new Date( b ).getTime();\n\n\treturn direction === 'asc' ? timeA - timeB : timeB - timeA;\n};\n\nexport default {\n\ttype: 'datetime',\n\trender,\n\tEdit: 'datetime',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [\n\t\tOPERATOR_ON,\n\t\tOPERATOR_NOT_ON,\n\t\tOPERATOR_BEFORE,\n\t\tOPERATOR_AFTER,\n\t\tOPERATOR_BEFORE_INC,\n\t\tOPERATOR_AFTER_INC,\n\t\tOPERATOR_IN_THE_PAST,\n\t\tOPERATOR_OVER,\n\t],\n\tvalidOperators: [\n\t\tOPERATOR_ON,\n\t\tOPERATOR_NOT_ON,\n\t\tOPERATOR_BEFORE,\n\t\tOPERATOR_AFTER,\n\t\tOPERATOR_BEFORE_INC,\n\t\tOPERATOR_AFTER_INC,\n\t\tOPERATOR_IN_THE_PAST,\n\t\tOPERATOR_OVER,\n\t],\n\tgetFormat: () => ( {} ),\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\telements: isValidElements,\n\t},\n} satisfies FieldType< any >;\n"],
|
|
5
|
+
"mappings": ";AAKA,OAAO,wBAAwB;AAC/B,OAAO,mBAAmB;AAC1B,OAAO,qBAAqB;AAC5B;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,OAAO,qBAAqB;AAInB;AAFT,SAAS,OAAQ,EAAE,MAAM,MAAM,GAAqC;AACnE,MAAK,MAAM,UAAW;AACrB,WAAO,oBAAC,sBAAmB,MAAc,OAAgB;AAAA,EAC1D;AAEA,QAAM,QAAQ,MAAM,SAAU,EAAE,KAAK,CAAE;AACvC,MAAK,CAAE,IAAI,QAAW,IAAK,EAAE,SAAU,KAAM,GAAI;AAChD,WAAO;AAAA,EACR;AAEA,MAAI;AACH,UAAM,YAAY,cAAe,KAAM;AACvC,WAAO,WAAW,eAAe;AAAA,EAClC,SAAU,OAAQ;AACjB,WAAO;AAAA,EACR;AACD;AAEA,IAAM,OAAO,CAAE,GAAQ,GAAQ,cAA8B;AAC5D,QAAM,QAAQ,IAAI,KAAM,CAAE,EAAE,QAAQ;AACpC,QAAM,QAAQ,IAAI,KAAM,CAAE,EAAE,QAAQ;AAEpC,SAAO,cAAc,QAAQ,QAAQ,QAAQ,QAAQ;AACtD;AAEA,IAAO,mBAAQ;AAAA,EACd,MAAM;AAAA,EACN;AAAA,EACA,MAAM;AAAA,EACN;AAAA,EACA,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,gBAAgB;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,WAAW,OAAQ,CAAC;AAAA,EACpB,UAAU;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,EACX;AACD;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -13,23 +13,24 @@ import {
|
|
|
13
13
|
} from "../constants";
|
|
14
14
|
import render from "./utils/render-default";
|
|
15
15
|
import sort from "./utils/sort-text";
|
|
16
|
+
import isValidRequired from "./utils/is-valid-required";
|
|
17
|
+
import isValidMinLength from "./utils/is-valid-min-length";
|
|
18
|
+
import isValidMaxLength from "./utils/is-valid-max-length";
|
|
19
|
+
import isValidPattern from "./utils/is-valid-pattern";
|
|
20
|
+
import isValidElements from "./utils/is-valid-elements";
|
|
16
21
|
var emailRegex = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
if (![void 0, "", null].includes(value) && !emailRegex.test(value)) {
|
|
22
|
-
return __("Value must be a valid email address.");
|
|
23
|
-
}
|
|
24
|
-
return null;
|
|
22
|
+
function isValidCustom(item, field) {
|
|
23
|
+
const value = field.getValue({ item });
|
|
24
|
+
if (![void 0, "", null].includes(value) && !emailRegex.test(value)) {
|
|
25
|
+
return __("Value must be a valid email address.");
|
|
25
26
|
}
|
|
26
|
-
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
27
29
|
var email_default = {
|
|
28
30
|
type: "email",
|
|
29
31
|
render,
|
|
30
32
|
Edit: "email",
|
|
31
33
|
sort,
|
|
32
|
-
isValid,
|
|
33
34
|
enableSorting: true,
|
|
34
35
|
enableGlobalSearch: false,
|
|
35
36
|
defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE],
|
|
@@ -45,7 +46,15 @@ var email_default = {
|
|
|
45
46
|
OPERATOR_IS_ALL,
|
|
46
47
|
OPERATOR_IS_NOT_ALL
|
|
47
48
|
],
|
|
48
|
-
getFormat: () => ({})
|
|
49
|
+
getFormat: () => ({}),
|
|
50
|
+
validate: {
|
|
51
|
+
required: isValidRequired,
|
|
52
|
+
pattern: isValidPattern,
|
|
53
|
+
minLength: isValidMinLength,
|
|
54
|
+
maxLength: isValidMaxLength,
|
|
55
|
+
elements: isValidElements,
|
|
56
|
+
custom: isValidCustom
|
|
57
|
+
}
|
|
49
58
|
};
|
|
50
59
|
export {
|
|
51
60
|
email_default as default
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/field-types/email.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type {
|
|
5
|
-
"mappings": ";AAGA,SAAS,UAAU;AAOnB;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,OAAO,YAAY;AACnB,OAAO,UAAU;
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../types';\nimport type { FieldType } from '../types/private';\nimport {\n\tOPERATOR_IS,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_CONTAINS,\n\tOPERATOR_NOT_CONTAINS,\n\tOPERATOR_STARTS_WITH,\n} from '../constants';\nimport render from './utils/render-default';\nimport sort from './utils/sort-text';\nimport isValidRequired from './utils/is-valid-required';\nimport isValidMinLength from './utils/is-valid-min-length';\nimport isValidMaxLength from './utils/is-valid-max-length';\nimport isValidPattern from './utils/is-valid-pattern';\nimport isValidElements from './utils/is-valid-elements';\n\n// Email validation regex based on HTML5 spec\n// https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address\nconst emailRegex =\n\t/^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n\nfunction isValidCustom< Item >( item: Item, field: NormalizedField< Item > ) {\n\tconst value = field.getValue( { item } );\n\n\tif (\n\t\t! [ undefined, '', null ].includes( value ) &&\n\t\t! emailRegex.test( value )\n\t) {\n\t\treturn __( 'Value must be a valid email address.' );\n\t}\n\n\treturn null;\n}\n\nexport default {\n\ttype: 'email',\n\trender,\n\tEdit: 'email',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [ OPERATOR_IS_ANY, OPERATOR_IS_NONE ],\n\tvalidOperators: [\n\t\tOPERATOR_IS,\n\t\tOPERATOR_IS_NOT,\n\t\tOPERATOR_CONTAINS,\n\t\tOPERATOR_NOT_CONTAINS,\n\t\tOPERATOR_STARTS_WITH,\n\t\t// Multiple selection\n\t\tOPERATOR_IS_ANY,\n\t\tOPERATOR_IS_NONE,\n\t\tOPERATOR_IS_ALL,\n\t\tOPERATOR_IS_NOT_ALL,\n\t],\n\tgetFormat: () => ( {} ),\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\tpattern: isValidPattern,\n\t\tminLength: isValidMinLength,\n\t\tmaxLength: isValidMaxLength,\n\t\telements: isValidElements,\n\t\tcustom: isValidCustom,\n\t},\n} satisfies FieldType< any >;\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,UAAU;AAOnB;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,OAAO,YAAY;AACnB,OAAO,UAAU;AACjB,OAAO,qBAAqB;AAC5B,OAAO,sBAAsB;AAC7B,OAAO,sBAAsB;AAC7B,OAAO,oBAAoB;AAC3B,OAAO,qBAAqB;AAI5B,IAAM,aACL;AAED,SAAS,cAAuB,MAAY,OAAiC;AAC5E,QAAM,QAAQ,MAAM,SAAU,EAAE,KAAK,CAAE;AAEvC,MACC,CAAE,CAAE,QAAW,IAAI,IAAK,EAAE,SAAU,KAAM,KAC1C,CAAE,WAAW,KAAM,KAAM,GACxB;AACD,WAAO,GAAI,sCAAuC;AAAA,EACnD;AAEA,SAAO;AACR;AAEA,IAAO,gBAAQ;AAAA,EACd,MAAM;AAAA,EACN;AAAA,EACA,MAAM;AAAA,EACN;AAAA,EACA,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,kBAAkB,CAAE,iBAAiB,gBAAiB;AAAA,EACtD,gBAAgB;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,WAAW,OAAQ,CAAC;AAAA,EACpB,UAAU;AAAA,IACT,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,UAAU;AAAA,IACV,QAAQ;AAAA,EACT;AACD;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -18,6 +18,7 @@ import { default as telephone } from "./telephone";
|
|
|
18
18
|
import { default as color } from "./color";
|
|
19
19
|
import { default as url } from "./url";
|
|
20
20
|
import { default as noType } from "./no-type";
|
|
21
|
+
import getIsValid from "./utils/get-is-valid";
|
|
21
22
|
function getFieldTypeByName(type) {
|
|
22
23
|
const found = [
|
|
23
24
|
email,
|
|
@@ -41,12 +42,12 @@ function getFieldTypeByName(type) {
|
|
|
41
42
|
}
|
|
42
43
|
function normalizeFields(fields) {
|
|
43
44
|
return fields.map((field) => {
|
|
44
|
-
const
|
|
45
|
+
const fieldType = getFieldTypeByName(field.type);
|
|
45
46
|
const getValue = field.getValue || getValueFromId(field.id);
|
|
46
47
|
const sort = function(a, b, direction) {
|
|
47
48
|
const aValue = getValue({ item: a });
|
|
48
49
|
const bValue = getValue({ item: b });
|
|
49
|
-
return field.sort ? field.sort(aValue, bValue, direction) :
|
|
50
|
+
return field.sort ? field.sort(aValue, bValue, direction) : fieldType.sort(aValue, bValue, direction);
|
|
50
51
|
};
|
|
51
52
|
return {
|
|
52
53
|
id: field.id,
|
|
@@ -63,22 +64,19 @@ function normalizeFields(fields) {
|
|
|
63
64
|
enableHiding: field.enableHiding ?? true,
|
|
64
65
|
readOnly: field.readOnly ?? false,
|
|
65
66
|
// The type provides defaults for the following props
|
|
66
|
-
type:
|
|
67
|
-
render: field.render ??
|
|
68
|
-
Edit: getControl(field,
|
|
67
|
+
type: fieldType.type,
|
|
68
|
+
render: field.render ?? fieldType.render,
|
|
69
|
+
Edit: getControl(field, fieldType.Edit),
|
|
69
70
|
sort,
|
|
70
|
-
enableSorting: field.enableSorting ??
|
|
71
|
-
enableGlobalSearch: field.enableGlobalSearch ??
|
|
72
|
-
isValid:
|
|
73
|
-
...defaultProps.isValid,
|
|
74
|
-
...field.isValid
|
|
75
|
-
},
|
|
71
|
+
enableSorting: field.enableSorting ?? fieldType.enableSorting,
|
|
72
|
+
enableGlobalSearch: field.enableGlobalSearch ?? fieldType.enableGlobalSearch,
|
|
73
|
+
isValid: getIsValid(field, fieldType),
|
|
76
74
|
filterBy: getFilterBy(
|
|
77
75
|
field,
|
|
78
|
-
|
|
79
|
-
|
|
76
|
+
fieldType.defaultOperators,
|
|
77
|
+
fieldType.validOperators
|
|
80
78
|
),
|
|
81
|
-
format:
|
|
79
|
+
format: fieldType.getFormat(field)
|
|
82
80
|
};
|
|
83
81
|
});
|
|
84
82
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/field-types/index.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport type {\n\tField,\n\tFieldTypeName,\n\tNormalizedField,\n\tSortDirection,\n} from '../types';\nimport type { FieldType } from '../types/private';\nimport { getControl } from '../dataform-controls';\nimport getFilterBy from './utils/get-filter-by';\nimport getValueFromId from './utils/get-value-from-id';\nimport hasElements from './utils/has-elements';\nimport setValueFromId from './utils/set-value-from-id';\nimport { default as email } from './email';\nimport { default as integer } from './integer';\nimport { default as number } from './number';\nimport { default as text } from './text';\nimport { default as datetime } from './datetime';\nimport { default as date } from './date';\nimport { default as boolean } from './boolean';\nimport { default as media } from './media';\nimport { default as array } from './array';\nimport { default as password } from './password';\nimport { default as telephone } from './telephone';\nimport { default as color } from './color';\nimport { default as url } from './url';\nimport { default as noType } from './no-type';\n\n/**\n *\n * @param {FieldTypeName} type The field type definition to get.\n *\n * @return A field type definition.\n */\nfunction getFieldTypeByName< Item >( type?: FieldTypeName ): FieldType< Item > {\n\tconst found = [\n\t\temail,\n\t\tinteger,\n\t\tnumber,\n\t\ttext,\n\t\tdatetime,\n\t\tdate,\n\t\tboolean,\n\t\tmedia,\n\t\tarray,\n\t\tpassword,\n\t\ttelephone,\n\t\tcolor,\n\t\turl,\n\t].find( ( fieldType ) => fieldType?.type === type );\n\n\tif ( !! found ) {\n\t\treturn found;\n\t}\n\n\t// This is a fallback for fields that don't provide a type.\n\t// It can be removed when/if the field.type becomes mandatory.\n\treturn noType;\n}\n\n/**\n * Apply default values and normalize the fields config.\n *\n * @param fields Fields config.\n * @return Normalized fields config.\n */\nexport default function normalizeFields< Item >(\n\tfields: Field< Item >[]\n): NormalizedField< Item >[] {\n\treturn fields.map( ( field ) => {\n\t\tconst
|
|
5
|
-
"mappings": ";AAUA,SAAS,kBAAkB;AAC3B,OAAO,iBAAiB;AACxB,OAAO,oBAAoB;AAC3B,OAAO,iBAAiB;AACxB,OAAO,oBAAoB;AAC3B,SAAS,WAAW,aAAa;AACjC,SAAS,WAAW,eAAe;AACnC,SAAS,WAAW,cAAc;AAClC,SAAS,WAAW,YAAY;AAChC,SAAS,WAAW,gBAAgB;AACpC,SAAS,WAAW,YAAY;AAChC,SAAS,WAAW,eAAe;AACnC,SAAS,WAAW,aAAa;AACjC,SAAS,WAAW,aAAa;AACjC,SAAS,WAAW,gBAAgB;AACpC,SAAS,WAAW,iBAAiB;AACrC,SAAS,WAAW,aAAa;AACjC,SAAS,WAAW,WAAW;AAC/B,SAAS,WAAW,cAAc;
|
|
4
|
+
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport type {\n\tField,\n\tFieldTypeName,\n\tNormalizedField,\n\tSortDirection,\n} from '../types';\nimport type { FieldType } from '../types/private';\nimport { getControl } from '../dataform-controls';\nimport getFilterBy from './utils/get-filter-by';\nimport getValueFromId from './utils/get-value-from-id';\nimport hasElements from './utils/has-elements';\nimport setValueFromId from './utils/set-value-from-id';\nimport { default as email } from './email';\nimport { default as integer } from './integer';\nimport { default as number } from './number';\nimport { default as text } from './text';\nimport { default as datetime } from './datetime';\nimport { default as date } from './date';\nimport { default as boolean } from './boolean';\nimport { default as media } from './media';\nimport { default as array } from './array';\nimport { default as password } from './password';\nimport { default as telephone } from './telephone';\nimport { default as color } from './color';\nimport { default as url } from './url';\nimport { default as noType } from './no-type';\nimport getIsValid from './utils/get-is-valid';\n\n/**\n *\n * @param {FieldTypeName} type The field type definition to get.\n *\n * @return A field type definition.\n */\nfunction getFieldTypeByName< Item >( type?: FieldTypeName ): FieldType< Item > {\n\tconst found = [\n\t\temail,\n\t\tinteger,\n\t\tnumber,\n\t\ttext,\n\t\tdatetime,\n\t\tdate,\n\t\tboolean,\n\t\tmedia,\n\t\tarray,\n\t\tpassword,\n\t\ttelephone,\n\t\tcolor,\n\t\turl,\n\t].find( ( fieldType ) => fieldType?.type === type );\n\n\tif ( !! found ) {\n\t\treturn found;\n\t}\n\n\t// This is a fallback for fields that don't provide a type.\n\t// It can be removed when/if the field.type becomes mandatory.\n\treturn noType;\n}\n\n/**\n * Apply default values and normalize the fields config.\n *\n * @param fields Fields config.\n * @return Normalized fields config.\n */\nexport default function normalizeFields< Item >(\n\tfields: Field< Item >[]\n): NormalizedField< Item >[] {\n\treturn fields.map( ( field ) => {\n\t\tconst fieldType = getFieldTypeByName< Item >( field.type );\n\n\t\tconst getValue = field.getValue || getValueFromId( field.id );\n\t\tconst sort = function ( a: any, b: any, direction: SortDirection ) {\n\t\t\tconst aValue = getValue( { item: a } );\n\t\t\tconst bValue = getValue( { item: b } );\n\t\t\treturn field.sort\n\t\t\t\t? field.sort( aValue, bValue, direction )\n\t\t\t\t: fieldType.sort( aValue, bValue, direction );\n\t\t};\n\n\t\treturn {\n\t\t\tid: field.id,\n\t\t\tlabel: field.label || field.id,\n\t\t\theader: field.header || field.label || field.id,\n\t\t\tdescription: field.description,\n\t\t\tplaceholder: field.placeholder,\n\t\t\tgetValue,\n\t\t\tsetValue: field.setValue || setValueFromId( field.id ),\n\t\t\telements: field.elements,\n\t\t\tgetElements: field.getElements,\n\t\t\thasElements: hasElements( field ),\n\t\t\tisVisible: field.isVisible,\n\t\t\tenableHiding: field.enableHiding ?? true,\n\t\t\treadOnly: field.readOnly ?? false,\n\t\t\t// The type provides defaults for the following props\n\t\t\ttype: fieldType.type,\n\t\t\trender: field.render ?? fieldType.render,\n\t\t\tEdit: getControl( field, fieldType.Edit ),\n\t\t\tsort,\n\t\t\tenableSorting: field.enableSorting ?? fieldType.enableSorting,\n\t\t\tenableGlobalSearch:\n\t\t\t\tfield.enableGlobalSearch ?? fieldType.enableGlobalSearch,\n\t\t\tisValid: getIsValid( field, fieldType ),\n\t\t\tfilterBy: getFilterBy(\n\t\t\t\tfield,\n\t\t\t\tfieldType.defaultOperators,\n\t\t\t\tfieldType.validOperators\n\t\t\t),\n\t\t\tformat: fieldType.getFormat( field ),\n\t\t};\n\t} );\n}\n"],
|
|
5
|
+
"mappings": ";AAUA,SAAS,kBAAkB;AAC3B,OAAO,iBAAiB;AACxB,OAAO,oBAAoB;AAC3B,OAAO,iBAAiB;AACxB,OAAO,oBAAoB;AAC3B,SAAS,WAAW,aAAa;AACjC,SAAS,WAAW,eAAe;AACnC,SAAS,WAAW,cAAc;AAClC,SAAS,WAAW,YAAY;AAChC,SAAS,WAAW,gBAAgB;AACpC,SAAS,WAAW,YAAY;AAChC,SAAS,WAAW,eAAe;AACnC,SAAS,WAAW,aAAa;AACjC,SAAS,WAAW,aAAa;AACjC,SAAS,WAAW,gBAAgB;AACpC,SAAS,WAAW,iBAAiB;AACrC,SAAS,WAAW,aAAa;AACjC,SAAS,WAAW,WAAW;AAC/B,SAAS,WAAW,cAAc;AAClC,OAAO,gBAAgB;AAQvB,SAAS,mBAA4B,MAA0C;AAC9E,QAAM,QAAQ;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,EAAE,KAAM,CAAE,cAAe,WAAW,SAAS,IAAK;AAElD,MAAK,CAAC,CAAE,OAAQ;AACf,WAAO;AAAA,EACR;AAIA,SAAO;AACR;AAQe,SAAR,gBACN,QAC4B;AAC5B,SAAO,OAAO,IAAK,CAAE,UAAW;AAC/B,UAAM,YAAY,mBAA4B,MAAM,IAAK;AAEzD,UAAM,WAAW,MAAM,YAAY,eAAgB,MAAM,EAAG;AAC5D,UAAM,OAAO,SAAW,GAAQ,GAAQ,WAA2B;AAClE,YAAM,SAAS,SAAU,EAAE,MAAM,EAAE,CAAE;AACrC,YAAM,SAAS,SAAU,EAAE,MAAM,EAAE,CAAE;AACrC,aAAO,MAAM,OACV,MAAM,KAAM,QAAQ,QAAQ,SAAU,IACtC,UAAU,KAAM,QAAQ,QAAQ,SAAU;AAAA,IAC9C;AAEA,WAAO;AAAA,MACN,IAAI,MAAM;AAAA,MACV,OAAO,MAAM,SAAS,MAAM;AAAA,MAC5B,QAAQ,MAAM,UAAU,MAAM,SAAS,MAAM;AAAA,MAC7C,aAAa,MAAM;AAAA,MACnB,aAAa,MAAM;AAAA,MACnB;AAAA,MACA,UAAU,MAAM,YAAY,eAAgB,MAAM,EAAG;AAAA,MACrD,UAAU,MAAM;AAAA,MAChB,aAAa,MAAM;AAAA,MACnB,aAAa,YAAa,KAAM;AAAA,MAChC,WAAW,MAAM;AAAA,MACjB,cAAc,MAAM,gBAAgB;AAAA,MACpC,UAAU,MAAM,YAAY;AAAA;AAAA,MAE5B,MAAM,UAAU;AAAA,MAChB,QAAQ,MAAM,UAAU,UAAU;AAAA,MAClC,MAAM,WAAY,OAAO,UAAU,IAAK;AAAA,MACxC;AAAA,MACA,eAAe,MAAM,iBAAiB,UAAU;AAAA,MAChD,oBACC,MAAM,sBAAsB,UAAU;AAAA,MACvC,SAAS,WAAY,OAAO,SAAU;AAAA,MACtC,UAAU;AAAA,QACT;AAAA,QACA,UAAU;AAAA,QACV,UAAU;AAAA,MACX;AAAA,MACA,QAAQ,UAAU,UAAW,KAAM;AAAA,IACpC;AAAA,EACD,CAAE;AACH;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -13,24 +13,61 @@ import {
|
|
|
13
13
|
OPERATOR_IS_NOT_ALL,
|
|
14
14
|
OPERATOR_BETWEEN
|
|
15
15
|
} from "../constants";
|
|
16
|
-
import
|
|
16
|
+
import RenderFromElements from "./utils/render-from-elements";
|
|
17
17
|
import sort from "./utils/sort-number";
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
import isValidRequired from "./utils/is-valid-required";
|
|
19
|
+
import isValidMin from "./utils/is-valid-min";
|
|
20
|
+
import isValidMax from "./utils/is-valid-max";
|
|
21
|
+
import isValidElements from "./utils/is-valid-elements";
|
|
22
|
+
import { jsx } from "react/jsx-runtime";
|
|
23
|
+
function getFormat(field) {
|
|
24
|
+
const fieldFormat = field.format;
|
|
25
|
+
return {
|
|
26
|
+
separatorThousand: fieldFormat?.separatorThousand !== void 0 && typeof fieldFormat.separatorThousand === "string" ? fieldFormat.separatorThousand : ","
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function formatInteger(value, format) {
|
|
30
|
+
if (!Number.isFinite(value)) {
|
|
31
|
+
return String(value);
|
|
26
32
|
}
|
|
27
|
-
};
|
|
33
|
+
const { separatorThousand } = format;
|
|
34
|
+
const integerValue = Math.trunc(value);
|
|
35
|
+
if (!separatorThousand) {
|
|
36
|
+
return String(integerValue);
|
|
37
|
+
}
|
|
38
|
+
return String(integerValue).replace(
|
|
39
|
+
/\B(?=(\d{3})+(?!\d))/g,
|
|
40
|
+
separatorThousand
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
function render({ item, field }) {
|
|
44
|
+
if (field.hasElements) {
|
|
45
|
+
return /* @__PURE__ */ jsx(RenderFromElements, { item, field });
|
|
46
|
+
}
|
|
47
|
+
const value = field.getValue({ item });
|
|
48
|
+
if ([null, void 0].includes(value)) {
|
|
49
|
+
return "";
|
|
50
|
+
}
|
|
51
|
+
let format;
|
|
52
|
+
if (field.type !== "integer") {
|
|
53
|
+
format = getFormat(field);
|
|
54
|
+
} else {
|
|
55
|
+
format = field.format;
|
|
56
|
+
}
|
|
57
|
+
return formatInteger(Number(value), format);
|
|
58
|
+
}
|
|
59
|
+
function isValidCustom(item, field) {
|
|
60
|
+
const value = field.getValue({ item });
|
|
61
|
+
if (![void 0, "", null].includes(value) && !Number.isInteger(value)) {
|
|
62
|
+
return __("Value must be an integer.");
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
28
66
|
var integer_default = {
|
|
29
67
|
type: "integer",
|
|
30
68
|
render,
|
|
31
69
|
Edit: "integer",
|
|
32
70
|
sort,
|
|
33
|
-
isValid,
|
|
34
71
|
enableSorting: true,
|
|
35
72
|
enableGlobalSearch: false,
|
|
36
73
|
defaultOperators: [
|
|
@@ -57,9 +94,17 @@ var integer_default = {
|
|
|
57
94
|
OPERATOR_IS_ALL,
|
|
58
95
|
OPERATOR_IS_NOT_ALL
|
|
59
96
|
],
|
|
60
|
-
getFormat
|
|
97
|
+
getFormat,
|
|
98
|
+
validate: {
|
|
99
|
+
required: isValidRequired,
|
|
100
|
+
min: isValidMin,
|
|
101
|
+
max: isValidMax,
|
|
102
|
+
elements: isValidElements,
|
|
103
|
+
custom: isValidCustom
|
|
104
|
+
}
|
|
61
105
|
};
|
|
62
106
|
export {
|
|
63
|
-
integer_default as default
|
|
107
|
+
integer_default as default,
|
|
108
|
+
formatInteger
|
|
64
109
|
};
|
|
65
110
|
//# sourceMappingURL=integer.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/field-types/integer.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type {
|
|
5
|
-
"mappings": ";AAGA,SAAS,UAAU;
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tDataViewRenderFieldProps,\n\tField,\n\tFormatInteger,\n\tNormalizedField,\n} from '../types';\nimport type { FieldType } from '../types/private';\nimport {\n\tOPERATOR_IS,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_LESS_THAN,\n\tOPERATOR_GREATER_THAN,\n\tOPERATOR_LESS_THAN_OR_EQUAL,\n\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n\tOPERATOR_BETWEEN,\n} from '../constants';\nimport RenderFromElements from './utils/render-from-elements';\nimport sort from './utils/sort-number';\nimport isValidRequired from './utils/is-valid-required';\nimport isValidMin from './utils/is-valid-min';\nimport isValidMax from './utils/is-valid-max';\nimport isValidElements from './utils/is-valid-elements';\n\nfunction getFormat< Item >( field: Field< Item > ): Required< FormatInteger > {\n\tconst fieldFormat = field.format as FormatInteger | undefined;\n\treturn {\n\t\tseparatorThousand:\n\t\t\tfieldFormat?.separatorThousand !== undefined &&\n\t\t\ttypeof fieldFormat.separatorThousand === 'string'\n\t\t\t\t? fieldFormat.separatorThousand\n\t\t\t\t: ',',\n\t};\n}\n\nexport function formatInteger(\n\tvalue: number,\n\tformat: Required< FormatInteger >\n): string {\n\tif ( ! Number.isFinite( value ) ) {\n\t\treturn String( value );\n\t}\n\tconst { separatorThousand } = format;\n\tconst integerValue = Math.trunc( value );\n\tif ( ! separatorThousand ) {\n\t\treturn String( integerValue );\n\t}\n\t// Add thousand separators.\n\treturn String( integerValue ).replace(\n\t\t/\\B(?=(\\d{3})+(?!\\d))/g,\n\t\tseparatorThousand\n\t);\n}\n\nfunction render( { item, field }: DataViewRenderFieldProps< any > ) {\n\tif ( field.hasElements ) {\n\t\treturn <RenderFromElements item={ item } field={ field } />;\n\t}\n\n\tconst value = field.getValue( { item } );\n\tif ( [ null, undefined ].includes( value ) ) {\n\t\treturn '';\n\t}\n\n\t// If the field type is integer, we've already normalized the format,\n\t// and so it's safe to tell TypeScript to trust us (\"as Required<FormatInteger>\").\n\t//\n\t// There're no runtime paths where this render function is called with a non-integer field,\n\t// but TypeScript is unable to infer this, hence the type assertion.\n\tlet format: Required< FormatInteger >;\n\tif ( field.type !== 'integer' ) {\n\t\tformat = getFormat( field as Field< any > );\n\t} else {\n\t\tformat = field.format as Required< FormatInteger >;\n\t}\n\n\treturn formatInteger( Number( value ), format );\n}\n\nfunction isValidCustom< Item >( item: Item, field: NormalizedField< Item > ) {\n\tconst value = field.getValue( { item } );\n\tif (\n\t\t! [ undefined, '', null ].includes( value ) &&\n\t\t! Number.isInteger( value )\n\t) {\n\t\treturn __( 'Value must be an integer.' );\n\t}\n\treturn null;\n}\n\nexport default {\n\ttype: 'integer',\n\trender,\n\tEdit: 'integer',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [\n\t\tOPERATOR_IS,\n\t\tOPERATOR_IS_NOT,\n\t\tOPERATOR_LESS_THAN,\n\t\tOPERATOR_GREATER_THAN,\n\t\tOPERATOR_LESS_THAN_OR_EQUAL,\n\t\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\t\tOPERATOR_BETWEEN,\n\t],\n\tvalidOperators: [\n\t\t// Single-selection\n\t\tOPERATOR_IS,\n\t\tOPERATOR_IS_NOT,\n\t\tOPERATOR_LESS_THAN,\n\t\tOPERATOR_GREATER_THAN,\n\t\tOPERATOR_LESS_THAN_OR_EQUAL,\n\t\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\t\tOPERATOR_BETWEEN,\n\t\t// Multiple-selection\n\t\tOPERATOR_IS_ANY,\n\t\tOPERATOR_IS_NONE,\n\t\tOPERATOR_IS_ALL,\n\t\tOPERATOR_IS_NOT_ALL,\n\t],\n\tgetFormat,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\tmin: isValidMin,\n\t\tmax: isValidMax,\n\t\telements: isValidElements,\n\t\tcustom: isValidCustom,\n\t},\n} satisfies FieldType< any >;\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,UAAU;AAYnB;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,OAAO,wBAAwB;AAC/B,OAAO,UAAU;AACjB,OAAO,qBAAqB;AAC5B,OAAO,gBAAgB;AACvB,OAAO,gBAAgB;AACvB,OAAO,qBAAqB;AAkCnB;AAhCT,SAAS,UAAmB,OAAkD;AAC7E,QAAM,cAAc,MAAM;AAC1B,SAAO;AAAA,IACN,mBACC,aAAa,sBAAsB,UACnC,OAAO,YAAY,sBAAsB,WACtC,YAAY,oBACZ;AAAA,EACL;AACD;AAEO,SAAS,cACf,OACA,QACS;AACT,MAAK,CAAE,OAAO,SAAU,KAAM,GAAI;AACjC,WAAO,OAAQ,KAAM;AAAA,EACtB;AACA,QAAM,EAAE,kBAAkB,IAAI;AAC9B,QAAM,eAAe,KAAK,MAAO,KAAM;AACvC,MAAK,CAAE,mBAAoB;AAC1B,WAAO,OAAQ,YAAa;AAAA,EAC7B;AAEA,SAAO,OAAQ,YAAa,EAAE;AAAA,IAC7B;AAAA,IACA;AAAA,EACD;AACD;AAEA,SAAS,OAAQ,EAAE,MAAM,MAAM,GAAqC;AACnE,MAAK,MAAM,aAAc;AACxB,WAAO,oBAAC,sBAAmB,MAAc,OAAgB;AAAA,EAC1D;AAEA,QAAM,QAAQ,MAAM,SAAU,EAAE,KAAK,CAAE;AACvC,MAAK,CAAE,MAAM,MAAU,EAAE,SAAU,KAAM,GAAI;AAC5C,WAAO;AAAA,EACR;AAOA,MAAI;AACJ,MAAK,MAAM,SAAS,WAAY;AAC/B,aAAS,UAAW,KAAsB;AAAA,EAC3C,OAAO;AACN,aAAS,MAAM;AAAA,EAChB;AAEA,SAAO,cAAe,OAAQ,KAAM,GAAG,MAAO;AAC/C;AAEA,SAAS,cAAuB,MAAY,OAAiC;AAC5E,QAAM,QAAQ,MAAM,SAAU,EAAE,KAAK,CAAE;AACvC,MACC,CAAE,CAAE,QAAW,IAAI,IAAK,EAAE,SAAU,KAAM,KAC1C,CAAE,OAAO,UAAW,KAAM,GACzB;AACD,WAAO,GAAI,2BAA4B;AAAA,EACxC;AACA,SAAO;AACR;AAEA,IAAO,kBAAQ;AAAA,EACd,MAAM;AAAA,EACN;AAAA,EACA,MAAM;AAAA,EACN;AAAA,EACA,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,gBAAgB;AAAA;AAAA,IAEf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,EACA,UAAU;AAAA,IACT,UAAU;AAAA,IACV,KAAK;AAAA,IACL,KAAK;AAAA,IACL,UAAU;AAAA,IACV,QAAQ;AAAA,EACT;AACD;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -4,15 +4,15 @@ var media_default = {
|
|
|
4
4
|
render: () => null,
|
|
5
5
|
Edit: null,
|
|
6
6
|
sort: () => 0,
|
|
7
|
-
isValid: {
|
|
8
|
-
elements: true,
|
|
9
|
-
custom: () => null
|
|
10
|
-
},
|
|
11
7
|
enableSorting: false,
|
|
12
8
|
enableGlobalSearch: false,
|
|
13
9
|
defaultOperators: [],
|
|
14
10
|
validOperators: [],
|
|
15
|
-
getFormat: () => ({})
|
|
11
|
+
getFormat: () => ({}),
|
|
12
|
+
// cannot validate any constraint, so
|
|
13
|
+
// the only available validation for the field author
|
|
14
|
+
// would be providing a custom validator.
|
|
15
|
+
validate: {}
|
|
16
16
|
};
|
|
17
17
|
export {
|
|
18
18
|
media_default as default
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/field-types/media.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport type { FieldType } from '../types/private';\n\nexport default {\n\ttype: 'media',\n\trender: () => null,\n\tEdit: null,\n\tsort: () => 0,\n\
|
|
5
|
-
"mappings": ";AAKA,IAAO,gBAAQ;AAAA,EACd,MAAM;AAAA,EACN,QAAQ,MAAM;AAAA,EACd,MAAM;AAAA,EACN,MAAM,MAAM;AAAA,EACZ,
|
|
4
|
+
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport type { FieldType } from '../types/private';\n\nexport default {\n\ttype: 'media',\n\trender: () => null,\n\tEdit: null,\n\tsort: () => 0,\n\tenableSorting: false,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [],\n\tvalidOperators: [],\n\tgetFormat: () => ( {} ),\n\t// cannot validate any constraint, so\n\t// the only available validation for the field author\n\t// would be providing a custom validator.\n\tvalidate: {},\n} satisfies FieldType< any >;\n"],
|
|
5
|
+
"mappings": ";AAKA,IAAO,gBAAQ;AAAA,EACd,MAAM;AAAA,EACN,QAAQ,MAAM;AAAA,EACd,MAAM;AAAA,EACN,MAAM,MAAM;AAAA,EACZ,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,kBAAkB,CAAC;AAAA,EACnB,gBAAgB,CAAC;AAAA,EACjB,WAAW,OAAQ,CAAC;AAAA;AAAA;AAAA;AAAA,EAIpB,UAAU,CAAC;AACZ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
// packages/dataviews/src/field-types/no-type.tsx
|
|
2
|
-
import {
|
|
2
|
+
import { OPERATOR_IS, OPERATOR_IS_NOT } from "../constants";
|
|
3
|
+
import { getAllOperatorNames } from "../utils/operators";
|
|
3
4
|
import render from "./utils/render-default";
|
|
4
5
|
import sortText from "./utils/sort-text";
|
|
5
6
|
import sortNumber from "./utils/sort-number";
|
|
7
|
+
import isValidRequired from "./utils/is-valid-required";
|
|
8
|
+
import isValidElements from "./utils/is-valid-elements";
|
|
6
9
|
var sort = (a, b, direction) => {
|
|
7
10
|
if (typeof a === "number" && typeof b === "number") {
|
|
8
11
|
return sortNumber(a, b, direction);
|
|
@@ -14,15 +17,15 @@ var no_type_default = {
|
|
|
14
17
|
render,
|
|
15
18
|
Edit: null,
|
|
16
19
|
sort,
|
|
17
|
-
isValid: {
|
|
18
|
-
elements: true,
|
|
19
|
-
custom: () => null
|
|
20
|
-
},
|
|
21
20
|
enableSorting: true,
|
|
22
21
|
enableGlobalSearch: false,
|
|
23
22
|
defaultOperators: [OPERATOR_IS, OPERATOR_IS_NOT],
|
|
24
|
-
validOperators:
|
|
25
|
-
getFormat: () => ({})
|
|
23
|
+
validOperators: getAllOperatorNames(),
|
|
24
|
+
getFormat: () => ({}),
|
|
25
|
+
validate: {
|
|
26
|
+
required: isValidRequired,
|
|
27
|
+
elements: isValidElements
|
|
28
|
+
}
|
|
26
29
|
};
|
|
27
30
|
export {
|
|
28
31
|
no_type_default as default
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/field-types/no-type.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport type { SortDirection } from '../types';\nimport type { FieldType } from '../types/private';\nimport {
|
|
5
|
-
"mappings": ";AAKA,SAAS,
|
|
4
|
+
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport type { SortDirection } from '../types';\nimport type { FieldType } from '../types/private';\nimport { OPERATOR_IS, OPERATOR_IS_NOT } from '../constants';\nimport { getAllOperatorNames } from '../utils/operators';\nimport render from './utils/render-default';\nimport sortText from './utils/sort-text';\nimport sortNumber from './utils/sort-number';\nimport isValidRequired from './utils/is-valid-required';\nimport isValidElements from './utils/is-valid-elements';\n\nconst sort = ( a: any, b: any, direction: SortDirection ) => {\n\tif ( typeof a === 'number' && typeof b === 'number' ) {\n\t\treturn sortNumber( a, b, direction );\n\t}\n\n\treturn sortText( a, b, direction );\n};\n\nexport default {\n\t// type: no type for this one\n\trender,\n\tEdit: null,\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [ OPERATOR_IS, OPERATOR_IS_NOT ],\n\tvalidOperators: getAllOperatorNames(),\n\tgetFormat: () => ( {} ),\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\telements: isValidElements,\n\t},\n} satisfies FieldType< any >;\n"],
|
|
5
|
+
"mappings": ";AAKA,SAAS,aAAa,uBAAuB;AAC7C,SAAS,2BAA2B;AACpC,OAAO,YAAY;AACnB,OAAO,cAAc;AACrB,OAAO,gBAAgB;AACvB,OAAO,qBAAqB;AAC5B,OAAO,qBAAqB;AAE5B,IAAM,OAAO,CAAE,GAAQ,GAAQ,cAA8B;AAC5D,MAAK,OAAO,MAAM,YAAY,OAAO,MAAM,UAAW;AACrD,WAAO,WAAY,GAAG,GAAG,SAAU;AAAA,EACpC;AAEA,SAAO,SAAU,GAAG,GAAG,SAAU;AAClC;AAEA,IAAO,kBAAQ;AAAA;AAAA,EAEd;AAAA,EACA,MAAM;AAAA,EACN;AAAA,EACA,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,kBAAkB,CAAE,aAAa,eAAgB;AAAA,EACjD,gBAAgB,oBAAoB;AAAA,EACpC,WAAW,OAAQ,CAAC;AAAA,EACpB,UAAU;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,EACX;AACD;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -15,7 +15,29 @@ import {
|
|
|
15
15
|
} from "../constants";
|
|
16
16
|
import RenderFromElements from "./utils/render-from-elements";
|
|
17
17
|
import sort from "./utils/sort-number";
|
|
18
|
+
import isValidRequired from "./utils/is-valid-required";
|
|
19
|
+
import isValidMin from "./utils/is-valid-min";
|
|
20
|
+
import isValidMax from "./utils/is-valid-max";
|
|
21
|
+
import isValidElements from "./utils/is-valid-elements";
|
|
18
22
|
import { jsx } from "react/jsx-runtime";
|
|
23
|
+
function getFormat(field) {
|
|
24
|
+
const fieldFormat = field.format;
|
|
25
|
+
return {
|
|
26
|
+
separatorThousand: fieldFormat?.separatorThousand !== void 0 && typeof fieldFormat.separatorThousand === "string" ? fieldFormat.separatorThousand : ",",
|
|
27
|
+
separatorDecimal: fieldFormat?.separatorDecimal !== void 0 && typeof fieldFormat.separatorDecimal === "string" ? fieldFormat.separatorDecimal : ".",
|
|
28
|
+
decimals: fieldFormat?.decimals !== void 0 && typeof fieldFormat.decimals === "number" && fieldFormat.decimals >= 0 && fieldFormat.decimals <= 100 && Number.isInteger(fieldFormat.decimals) ? fieldFormat.decimals : 2
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function formatNumber(value, format) {
|
|
32
|
+
if (!Number.isFinite(value)) {
|
|
33
|
+
return String(value);
|
|
34
|
+
}
|
|
35
|
+
const { separatorThousand, separatorDecimal, decimals } = format;
|
|
36
|
+
const fixedValue = value.toFixed(decimals);
|
|
37
|
+
const [integerPart, decimalPart] = fixedValue.split(".");
|
|
38
|
+
const formattedInteger = separatorThousand ? integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, separatorThousand) : integerPart;
|
|
39
|
+
return decimals === 0 ? formattedInteger : formattedInteger + separatorDecimal + decimalPart;
|
|
40
|
+
}
|
|
19
41
|
function isEmpty(value) {
|
|
20
42
|
return value === "" || value === void 0 || value === null;
|
|
21
43
|
}
|
|
@@ -24,27 +46,29 @@ function render({ item, field }) {
|
|
|
24
46
|
return /* @__PURE__ */ jsx(RenderFromElements, { item, field });
|
|
25
47
|
}
|
|
26
48
|
const value = field.getValue({ item });
|
|
27
|
-
if (
|
|
28
|
-
return
|
|
49
|
+
if ([null, void 0].includes(value)) {
|
|
50
|
+
return "";
|
|
29
51
|
}
|
|
30
|
-
|
|
52
|
+
let format;
|
|
53
|
+
if (field.type !== "number") {
|
|
54
|
+
format = getFormat(field);
|
|
55
|
+
} else {
|
|
56
|
+
format = field.format;
|
|
57
|
+
}
|
|
58
|
+
return formatNumber(Number(value), format);
|
|
31
59
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (!isEmpty(value) && !Number.isFinite(value)) {
|
|
37
|
-
return __("Value must be a number.");
|
|
38
|
-
}
|
|
39
|
-
return null;
|
|
60
|
+
function isValidCustom(item, field) {
|
|
61
|
+
const value = field.getValue({ item });
|
|
62
|
+
if (!isEmpty(value) && !Number.isFinite(value)) {
|
|
63
|
+
return __("Value must be a number.");
|
|
40
64
|
}
|
|
41
|
-
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
42
67
|
var number_default = {
|
|
43
68
|
type: "number",
|
|
44
69
|
render,
|
|
45
70
|
Edit: "number",
|
|
46
71
|
sort,
|
|
47
|
-
isValid,
|
|
48
72
|
enableSorting: true,
|
|
49
73
|
enableGlobalSearch: false,
|
|
50
74
|
defaultOperators: [
|
|
@@ -71,9 +95,17 @@ var number_default = {
|
|
|
71
95
|
OPERATOR_IS_ALL,
|
|
72
96
|
OPERATOR_IS_NOT_ALL
|
|
73
97
|
],
|
|
74
|
-
getFormat
|
|
98
|
+
getFormat,
|
|
99
|
+
validate: {
|
|
100
|
+
required: isValidRequired,
|
|
101
|
+
min: isValidMin,
|
|
102
|
+
max: isValidMax,
|
|
103
|
+
elements: isValidElements,
|
|
104
|
+
custom: isValidCustom
|
|
105
|
+
}
|
|
75
106
|
};
|
|
76
107
|
export {
|
|
77
|
-
number_default as default
|
|
108
|
+
number_default as default,
|
|
109
|
+
formatNumber
|
|
78
110
|
};
|
|
79
111
|
//# sourceMappingURL=number.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/field-types/number.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type {
|
|
5
|
-
"mappings": ";AAGA,SAAS,UAAU;
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tDataViewRenderFieldProps,\n\tField,\n\tFormatNumber,\n\tNormalizedField,\n} from '../types';\nimport type { FieldType } from '../types/private';\nimport {\n\tOPERATOR_IS,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_LESS_THAN,\n\tOPERATOR_GREATER_THAN,\n\tOPERATOR_LESS_THAN_OR_EQUAL,\n\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n\tOPERATOR_BETWEEN,\n} from '../constants';\nimport RenderFromElements from './utils/render-from-elements';\nimport sort from './utils/sort-number';\nimport isValidRequired from './utils/is-valid-required';\nimport isValidMin from './utils/is-valid-min';\nimport isValidMax from './utils/is-valid-max';\nimport isValidElements from './utils/is-valid-elements';\n\nfunction getFormat< Item >( field: Field< Item > ): Required< FormatNumber > {\n\tconst fieldFormat = field.format as FormatNumber | undefined;\n\treturn {\n\t\tseparatorThousand:\n\t\t\tfieldFormat?.separatorThousand !== undefined &&\n\t\t\ttypeof fieldFormat.separatorThousand === 'string'\n\t\t\t\t? fieldFormat.separatorThousand\n\t\t\t\t: ',',\n\t\tseparatorDecimal:\n\t\t\tfieldFormat?.separatorDecimal !== undefined &&\n\t\t\ttypeof fieldFormat.separatorDecimal === 'string'\n\t\t\t\t? fieldFormat.separatorDecimal\n\t\t\t\t: '.',\n\t\tdecimals:\n\t\t\tfieldFormat?.decimals !== undefined &&\n\t\t\ttypeof fieldFormat.decimals === 'number' &&\n\t\t\tfieldFormat.decimals >= 0 &&\n\t\t\tfieldFormat.decimals <= 100 &&\n\t\t\tNumber.isInteger( fieldFormat.decimals )\n\t\t\t\t? fieldFormat.decimals\n\t\t\t\t: 2,\n\t};\n}\n\nexport function formatNumber(\n\tvalue: number,\n\tformat: Required< FormatNumber >\n): string {\n\tif ( ! Number.isFinite( value ) ) {\n\t\treturn String( value );\n\t}\n\tconst { separatorThousand, separatorDecimal, decimals } = format;\n\tconst fixedValue = value.toFixed( decimals );\n\tconst [ integerPart, decimalPart ] = fixedValue.split( '.' );\n\tconst formattedInteger = separatorThousand\n\t\t? integerPart.replace( /\\B(?=(\\d{3})+(?!\\d))/g, separatorThousand )\n\t\t: integerPart;\n\treturn decimals === 0\n\t\t? formattedInteger\n\t\t: formattedInteger + separatorDecimal + decimalPart;\n}\n\nfunction isEmpty( value: unknown ): value is '' | undefined | null {\n\treturn value === '' || value === undefined || value === null;\n}\n\nfunction render( { item, field }: DataViewRenderFieldProps< any > ) {\n\tif ( field.hasElements ) {\n\t\treturn <RenderFromElements item={ item } field={ field } />;\n\t}\n\n\tconst value = field.getValue( { item } );\n\tif ( [ null, undefined ].includes( value ) ) {\n\t\treturn '';\n\t}\n\n\t// If the field type is number, we've already normalized the format,\n\t// and so it's safe to tell TypeScript to trust us (\"as Required<FormatNumber>\").\n\t//\n\t// There're no runtime paths where this render function is called with a non-number field,\n\t// but TypeScript is unable to infer this, hence the type assertion.\n\tlet format: Required< FormatNumber >;\n\tif ( field.type !== 'number' ) {\n\t\tformat = getFormat( field as Field< any > );\n\t} else {\n\t\tformat = field.format as Required< FormatNumber >;\n\t}\n\n\treturn formatNumber( Number( value ), format );\n}\n\nfunction isValidCustom< Item >( item: Item, field: NormalizedField< Item > ) {\n\tconst value = field.getValue( { item } );\n\n\tif ( ! isEmpty( value ) && ! Number.isFinite( value ) ) {\n\t\treturn __( 'Value must be a number.' );\n\t}\n\n\treturn null;\n}\n\nexport default {\n\ttype: 'number',\n\trender,\n\tEdit: 'number',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [\n\t\tOPERATOR_IS,\n\t\tOPERATOR_IS_NOT,\n\t\tOPERATOR_LESS_THAN,\n\t\tOPERATOR_GREATER_THAN,\n\t\tOPERATOR_LESS_THAN_OR_EQUAL,\n\t\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\t\tOPERATOR_BETWEEN,\n\t],\n\tvalidOperators: [\n\t\t// Single-selection\n\t\tOPERATOR_IS,\n\t\tOPERATOR_IS_NOT,\n\t\tOPERATOR_LESS_THAN,\n\t\tOPERATOR_GREATER_THAN,\n\t\tOPERATOR_LESS_THAN_OR_EQUAL,\n\t\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\t\tOPERATOR_BETWEEN,\n\t\t// Multiple-selection\n\t\tOPERATOR_IS_ANY,\n\t\tOPERATOR_IS_NONE,\n\t\tOPERATOR_IS_ALL,\n\t\tOPERATOR_IS_NOT_ALL,\n\t],\n\tgetFormat,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\tmin: isValidMin,\n\t\tmax: isValidMax,\n\t\telements: isValidElements,\n\t\tcustom: isValidCustom,\n\t},\n} satisfies FieldType< any >;\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,UAAU;AAYnB;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,OAAO,wBAAwB;AAC/B,OAAO,UAAU;AACjB,OAAO,qBAAqB;AAC5B,OAAO,gBAAgB;AACvB,OAAO,gBAAgB;AACvB,OAAO,qBAAqB;AAkDnB;AAhDT,SAAS,UAAmB,OAAiD;AAC5E,QAAM,cAAc,MAAM;AAC1B,SAAO;AAAA,IACN,mBACC,aAAa,sBAAsB,UACnC,OAAO,YAAY,sBAAsB,WACtC,YAAY,oBACZ;AAAA,IACJ,kBACC,aAAa,qBAAqB,UAClC,OAAO,YAAY,qBAAqB,WACrC,YAAY,mBACZ;AAAA,IACJ,UACC,aAAa,aAAa,UAC1B,OAAO,YAAY,aAAa,YAChC,YAAY,YAAY,KACxB,YAAY,YAAY,OACxB,OAAO,UAAW,YAAY,QAAS,IACpC,YAAY,WACZ;AAAA,EACL;AACD;AAEO,SAAS,aACf,OACA,QACS;AACT,MAAK,CAAE,OAAO,SAAU,KAAM,GAAI;AACjC,WAAO,OAAQ,KAAM;AAAA,EACtB;AACA,QAAM,EAAE,mBAAmB,kBAAkB,SAAS,IAAI;AAC1D,QAAM,aAAa,MAAM,QAAS,QAAS;AAC3C,QAAM,CAAE,aAAa,WAAY,IAAI,WAAW,MAAO,GAAI;AAC3D,QAAM,mBAAmB,oBACtB,YAAY,QAAS,yBAAyB,iBAAkB,IAChE;AACH,SAAO,aAAa,IACjB,mBACA,mBAAmB,mBAAmB;AAC1C;AAEA,SAAS,QAAS,OAAiD;AAClE,SAAO,UAAU,MAAM,UAAU,UAAa,UAAU;AACzD;AAEA,SAAS,OAAQ,EAAE,MAAM,MAAM,GAAqC;AACnE,MAAK,MAAM,aAAc;AACxB,WAAO,oBAAC,sBAAmB,MAAc,OAAgB;AAAA,EAC1D;AAEA,QAAM,QAAQ,MAAM,SAAU,EAAE,KAAK,CAAE;AACvC,MAAK,CAAE,MAAM,MAAU,EAAE,SAAU,KAAM,GAAI;AAC5C,WAAO;AAAA,EACR;AAOA,MAAI;AACJ,MAAK,MAAM,SAAS,UAAW;AAC9B,aAAS,UAAW,KAAsB;AAAA,EAC3C,OAAO;AACN,aAAS,MAAM;AAAA,EAChB;AAEA,SAAO,aAAc,OAAQ,KAAM,GAAG,MAAO;AAC9C;AAEA,SAAS,cAAuB,MAAY,OAAiC;AAC5E,QAAM,QAAQ,MAAM,SAAU,EAAE,KAAK,CAAE;AAEvC,MAAK,CAAE,QAAS,KAAM,KAAK,CAAE,OAAO,SAAU,KAAM,GAAI;AACvD,WAAO,GAAI,yBAA0B;AAAA,EACtC;AAEA,SAAO;AACR;AAEA,IAAO,iBAAQ;AAAA,EACd,MAAM;AAAA,EACN;AAAA,EACA,MAAM;AAAA,EACN;AAAA,EACA,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,gBAAgB;AAAA;AAAA,IAEf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,EACA,UAAU;AAAA,IACT,UAAU;AAAA,IACV,KAAK;AAAA,IACL,KAAK;AAAA,IACL,UAAU;AAAA,IACV,QAAQ;AAAA,EACT;AACD;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
// packages/dataviews/src/field-types/password.tsx
|
|
2
2
|
import RenderFromElements from "./utils/render-from-elements";
|
|
3
|
+
import isValidRequired from "./utils/is-valid-required";
|
|
4
|
+
import isValidMinLength from "./utils/is-valid-min-length";
|
|
5
|
+
import isValidMaxLength from "./utils/is-valid-max-length";
|
|
6
|
+
import isValidPattern from "./utils/is-valid-pattern";
|
|
7
|
+
import isValidElements from "./utils/is-valid-elements";
|
|
3
8
|
import { jsx } from "react/jsx-runtime";
|
|
4
9
|
function render({ item, field }) {
|
|
5
10
|
return field.hasElements ? /* @__PURE__ */ jsx(RenderFromElements, { item, field }) : "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022";
|
|
@@ -10,15 +15,18 @@ var password_default = {
|
|
|
10
15
|
Edit: "password",
|
|
11
16
|
sort: () => 0,
|
|
12
17
|
// Passwords should not be sortable for security reasons
|
|
13
|
-
isValid: {
|
|
14
|
-
elements: true,
|
|
15
|
-
custom: () => null
|
|
16
|
-
},
|
|
17
18
|
enableSorting: false,
|
|
18
19
|
enableGlobalSearch: false,
|
|
19
20
|
defaultOperators: [],
|
|
20
21
|
validOperators: [],
|
|
21
|
-
getFormat: () => ({})
|
|
22
|
+
getFormat: () => ({}),
|
|
23
|
+
validate: {
|
|
24
|
+
required: isValidRequired,
|
|
25
|
+
pattern: isValidPattern,
|
|
26
|
+
minLength: isValidMinLength,
|
|
27
|
+
maxLength: isValidMaxLength,
|
|
28
|
+
elements: isValidElements
|
|
29
|
+
}
|
|
22
30
|
};
|
|
23
31
|
export {
|
|
24
32
|
password_default as default
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/field-types/password.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport type { DataViewRenderFieldProps } from '../types';\nimport type { FieldType } from '../types/private';\nimport RenderFromElements from './utils/render-from-elements';\n\nfunction render( { item, field }: DataViewRenderFieldProps< any > ) {\n\treturn field.hasElements ? (\n\t\t<RenderFromElements item={ item } field={ field } />\n\t) : (\n\t\t'\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022'\n\t);\n}\n\nexport default {\n\ttype: 'password',\n\trender,\n\tEdit: 'password',\n\tsort: () => 0, // Passwords should not be sortable for security reasons\n\
|
|
5
|
-
"mappings": ";AAKA,OAAO,wBAAwB;
|
|
4
|
+
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport type { DataViewRenderFieldProps } from '../types';\nimport type { FieldType } from '../types/private';\nimport RenderFromElements from './utils/render-from-elements';\nimport isValidRequired from './utils/is-valid-required';\nimport isValidMinLength from './utils/is-valid-min-length';\nimport isValidMaxLength from './utils/is-valid-max-length';\nimport isValidPattern from './utils/is-valid-pattern';\nimport isValidElements from './utils/is-valid-elements';\n\nfunction render( { item, field }: DataViewRenderFieldProps< any > ) {\n\treturn field.hasElements ? (\n\t\t<RenderFromElements item={ item } field={ field } />\n\t) : (\n\t\t'\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022'\n\t);\n}\n\nexport default {\n\ttype: 'password',\n\trender,\n\tEdit: 'password',\n\tsort: () => 0, // Passwords should not be sortable for security reasons\n\tenableSorting: false,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [],\n\tvalidOperators: [],\n\tgetFormat: () => ( {} ),\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\tpattern: isValidPattern,\n\t\tminLength: isValidMinLength,\n\t\tmaxLength: isValidMaxLength,\n\t\telements: isValidElements,\n\t},\n} satisfies FieldType< any >;\n"],
|
|
5
|
+
"mappings": ";AAKA,OAAO,wBAAwB;AAC/B,OAAO,qBAAqB;AAC5B,OAAO,sBAAsB;AAC7B,OAAO,sBAAsB;AAC7B,OAAO,oBAAoB;AAC3B,OAAO,qBAAqB;AAI1B;AAFF,SAAS,OAAQ,EAAE,MAAM,MAAM,GAAqC;AACnE,SAAO,MAAM,cACZ,oBAAC,sBAAmB,MAAc,OAAgB,IAElD;AAEF;AAEA,IAAO,mBAAQ;AAAA,EACd,MAAM;AAAA,EACN;AAAA,EACA,MAAM;AAAA,EACN,MAAM,MAAM;AAAA;AAAA,EACZ,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,kBAAkB,CAAC;AAAA,EACnB,gBAAgB,CAAC;AAAA,EACjB,WAAW,OAAQ,CAAC;AAAA,EACpB,UAAU;AAAA,IACT,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,UAAU;AAAA,EACX;AACD;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|