@wordpress/dataviews 14.0.0 → 14.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 +21 -0
- package/README.md +16 -5
- package/build/components/dataform-controls/array.cjs +2 -0
- package/build/components/dataform-controls/array.cjs.map +2 -2
- package/build/components/dataform-controls/checkbox.cjs +3 -1
- package/build/components/dataform-controls/checkbox.cjs.map +2 -2
- package/build/components/dataform-controls/color.cjs +8 -2
- package/build/components/dataform-controls/color.cjs.map +2 -2
- package/build/components/dataform-controls/date.cjs +31 -9
- package/build/components/dataform-controls/date.cjs.map +3 -3
- package/build/components/dataform-controls/datetime.cjs +9 -2
- package/build/components/dataform-controls/datetime.cjs.map +3 -3
- package/build/components/dataform-controls/password.cjs +4 -1
- package/build/components/dataform-controls/password.cjs.map +2 -2
- package/build/components/dataform-controls/radio.cjs +3 -1
- package/build/components/dataform-controls/radio.cjs.map +2 -2
- package/build/components/dataform-controls/select.cjs +3 -1
- package/build/components/dataform-controls/select.cjs.map +2 -2
- package/build/components/dataform-controls/textarea.cjs +2 -0
- package/build/components/dataform-controls/textarea.cjs.map +2 -2
- package/build/components/dataform-controls/toggle-group.cjs +3 -1
- package/build/components/dataform-controls/toggle-group.cjs.map +2 -2
- package/build/components/dataform-controls/toggle.cjs +3 -1
- package/build/components/dataform-controls/toggle.cjs.map +2 -2
- package/build/components/dataform-controls/utils/relative-date-control.cjs +5 -2
- package/build/components/dataform-controls/utils/relative-date-control.cjs.map +2 -2
- package/build/components/dataform-controls/utils/use-disabled-date-matchers.cjs +48 -0
- package/build/components/dataform-controls/utils/use-disabled-date-matchers.cjs.map +7 -0
- package/build/components/dataform-controls/utils/validated-input.cjs +2 -0
- package/build/components/dataform-controls/utils/validated-input.cjs.map +2 -2
- package/build/components/dataform-controls/utils/validated-number.cjs +3 -1
- package/build/components/dataform-controls/utils/validated-number.cjs.map +2 -2
- package/build/components/dataform-layouts/panel/summary-button.cjs +0 -1
- package/build/components/dataform-layouts/panel/summary-button.cjs.map +2 -2
- package/build/components/dataviews-context/index.cjs.map +1 -1
- package/build/components/dataviews-filters/input-widget.cjs +4 -0
- package/build/components/dataviews-filters/input-widget.cjs.map +2 -2
- package/build/components/dataviews-layouts/picker-grid/index.cjs +1 -4
- package/build/components/dataviews-layouts/picker-grid/index.cjs.map +2 -2
- package/build/components/dataviews-layouts/picker-table/index.cjs +15 -12
- package/build/components/dataviews-layouts/picker-table/index.cjs.map +2 -2
- package/build/components/dataviews-layouts/table/index.cjs +0 -1
- package/build/components/dataviews-layouts/table/index.cjs.map +2 -2
- package/build/components/dataviews-pagination/index.cjs +1 -0
- package/build/components/dataviews-pagination/index.cjs.map +2 -2
- package/build/dataviews/index.cjs +10 -8
- package/build/dataviews/index.cjs.map +2 -2
- package/build/dataviews-picker/index.cjs +16 -9
- package/build/dataviews-picker/index.cjs.map +2 -2
- package/build/field-types/date.cjs +4 -1
- package/build/field-types/date.cjs.map +2 -2
- package/build/field-types/datetime.cjs +4 -1
- package/build/field-types/datetime.cjs.map +2 -2
- package/build/field-types/index.cjs +1 -0
- package/build/field-types/index.cjs.map +2 -2
- package/build/field-types/utils/get-is-valid.cjs +29 -24
- package/build/field-types/utils/get-is-valid.cjs.map +2 -2
- package/build/field-types/utils/is-valid-date-boundary.cjs +64 -0
- package/build/field-types/utils/is-valid-date-boundary.cjs.map +7 -0
- package/build/types/dataviews.cjs.map +1 -1
- package/build/types/field-api.cjs.map +1 -1
- package/build-module/components/dataform-controls/array.mjs +2 -0
- package/build-module/components/dataform-controls/array.mjs.map +2 -2
- package/build-module/components/dataform-controls/checkbox.mjs +3 -1
- package/build-module/components/dataform-controls/checkbox.mjs.map +2 -2
- package/build-module/components/dataform-controls/color.mjs +8 -2
- package/build-module/components/dataform-controls/color.mjs.map +2 -2
- package/build-module/components/dataform-controls/date.mjs +31 -9
- package/build-module/components/dataform-controls/date.mjs.map +2 -2
- package/build-module/components/dataform-controls/datetime.mjs +9 -2
- package/build-module/components/dataform-controls/datetime.mjs.map +2 -2
- package/build-module/components/dataform-controls/password.mjs +4 -1
- package/build-module/components/dataform-controls/password.mjs.map +2 -2
- package/build-module/components/dataform-controls/radio.mjs +3 -1
- package/build-module/components/dataform-controls/radio.mjs.map +2 -2
- package/build-module/components/dataform-controls/select.mjs +3 -1
- package/build-module/components/dataform-controls/select.mjs.map +2 -2
- package/build-module/components/dataform-controls/textarea.mjs +2 -0
- package/build-module/components/dataform-controls/textarea.mjs.map +2 -2
- package/build-module/components/dataform-controls/toggle-group.mjs +3 -1
- package/build-module/components/dataform-controls/toggle-group.mjs.map +2 -2
- package/build-module/components/dataform-controls/toggle.mjs +3 -1
- package/build-module/components/dataform-controls/toggle.mjs.map +2 -2
- package/build-module/components/dataform-controls/utils/relative-date-control.mjs +5 -2
- package/build-module/components/dataform-controls/utils/relative-date-control.mjs.map +2 -2
- package/build-module/components/dataform-controls/utils/use-disabled-date-matchers.mjs +27 -0
- package/build-module/components/dataform-controls/utils/use-disabled-date-matchers.mjs.map +7 -0
- package/build-module/components/dataform-controls/utils/validated-input.mjs +2 -0
- package/build-module/components/dataform-controls/utils/validated-input.mjs.map +2 -2
- package/build-module/components/dataform-controls/utils/validated-number.mjs +3 -1
- package/build-module/components/dataform-controls/utils/validated-number.mjs.map +2 -2
- package/build-module/components/dataform-layouts/panel/summary-button.mjs +0 -1
- package/build-module/components/dataform-layouts/panel/summary-button.mjs.map +2 -2
- package/build-module/components/dataviews-context/index.mjs.map +1 -1
- package/build-module/components/dataviews-filters/input-widget.mjs +4 -0
- package/build-module/components/dataviews-filters/input-widget.mjs.map +2 -2
- package/build-module/components/dataviews-layouts/picker-grid/index.mjs +1 -4
- package/build-module/components/dataviews-layouts/picker-grid/index.mjs.map +2 -2
- package/build-module/components/dataviews-layouts/picker-table/index.mjs +15 -12
- package/build-module/components/dataviews-layouts/picker-table/index.mjs.map +2 -2
- package/build-module/components/dataviews-layouts/table/index.mjs +0 -1
- package/build-module/components/dataviews-layouts/table/index.mjs.map +2 -2
- package/build-module/components/dataviews-pagination/index.mjs +1 -0
- package/build-module/components/dataviews-pagination/index.mjs.map +2 -2
- package/build-module/dataviews/index.mjs +10 -8
- package/build-module/dataviews/index.mjs.map +2 -2
- package/build-module/dataviews-picker/index.mjs +16 -9
- package/build-module/dataviews-picker/index.mjs.map +2 -2
- package/build-module/field-types/date.mjs +4 -1
- package/build-module/field-types/date.mjs.map +2 -2
- package/build-module/field-types/datetime.mjs +4 -1
- package/build-module/field-types/datetime.mjs.map +2 -2
- package/build-module/field-types/index.mjs +1 -0
- package/build-module/field-types/index.mjs.map +2 -2
- package/build-module/field-types/utils/get-is-valid.mjs +29 -24
- package/build-module/field-types/utils/get-is-valid.mjs.map +2 -2
- package/build-module/field-types/utils/is-valid-date-boundary.mjs +38 -0
- package/build-module/field-types/utils/is-valid-date-boundary.mjs.map +7 -0
- package/build-style/style-rtl.css +14 -15
- package/build-style/style.css +14 -15
- package/build-types/components/dataform-controls/array.d.ts.map +1 -1
- package/build-types/components/dataform-controls/checkbox.d.ts.map +1 -1
- package/build-types/components/dataform-controls/color.d.ts.map +1 -1
- package/build-types/components/dataform-controls/date.d.ts.map +1 -1
- package/build-types/components/dataform-controls/datetime.d.ts.map +1 -1
- package/build-types/components/dataform-controls/password.d.ts.map +1 -1
- package/build-types/components/dataform-controls/radio.d.ts.map +1 -1
- package/build-types/components/dataform-controls/select.d.ts.map +1 -1
- package/build-types/components/dataform-controls/textarea.d.ts.map +1 -1
- package/build-types/components/dataform-controls/toggle-group.d.ts.map +1 -1
- package/build-types/components/dataform-controls/toggle.d.ts.map +1 -1
- package/build-types/components/dataform-controls/utils/relative-date-control.d.ts.map +1 -1
- package/build-types/components/dataform-controls/utils/use-disabled-date-matchers.d.ts +16 -0
- package/build-types/components/dataform-controls/utils/use-disabled-date-matchers.d.ts.map +1 -0
- package/build-types/components/dataform-controls/utils/validated-input.d.ts.map +1 -1
- package/build-types/components/dataform-controls/utils/validated-number.d.ts.map +1 -1
- package/build-types/components/dataform-layouts/panel/summary-button.d.ts.map +1 -1
- package/build-types/components/dataviews-context/index.d.ts +2 -2
- package/build-types/components/dataviews-context/index.d.ts.map +1 -1
- package/build-types/components/dataviews-filters/input-widget.d.ts.map +1 -1
- package/build-types/components/dataviews-layouts/index.d.ts +6 -6
- package/build-types/components/dataviews-layouts/picker-grid/index.d.ts.map +1 -1
- package/build-types/components/dataviews-layouts/picker-table/index.d.ts.map +1 -1
- package/build-types/components/dataviews-layouts/table/index.d.ts.map +1 -1
- package/build-types/components/dataviews-pagination/index.d.ts.map +1 -1
- package/build-types/components/dataviews-search/index.d.ts +1 -1
- package/build-types/components/dataviews-search/index.d.ts.map +1 -1
- package/build-types/constants.d.ts +2 -2
- package/build-types/dataform/stories/index.story.d.ts +11 -1
- package/build-types/dataform/stories/index.story.d.ts.map +1 -1
- package/build-types/dataform/stories/layout-regular.d.ts +2 -1
- package/build-types/dataform/stories/layout-regular.d.ts.map +1 -1
- package/build-types/dataform/stories/validation.d.ts.map +1 -1
- package/build-types/dataviews/index.d.ts +1 -1
- package/build-types/dataviews/index.d.ts.map +1 -1
- package/build-types/dataviews-picker/index.d.ts +3 -2
- package/build-types/dataviews-picker/index.d.ts.map +1 -1
- package/build-types/dataviews-picker/stories/index.story.d.ts.map +1 -1
- package/build-types/field-types/array.d.ts +1 -1
- package/build-types/field-types/array.d.ts.map +1 -1
- package/build-types/field-types/boolean.d.ts +1 -1
- package/build-types/field-types/boolean.d.ts.map +1 -1
- package/build-types/field-types/color.d.ts +1 -1
- package/build-types/field-types/color.d.ts.map +1 -1
- package/build-types/field-types/date.d.ts +3 -0
- package/build-types/field-types/date.d.ts.map +1 -1
- package/build-types/field-types/datetime.d.ts +3 -0
- package/build-types/field-types/datetime.d.ts.map +1 -1
- package/build-types/field-types/email.d.ts +1 -1
- 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 +1 -1
- package/build-types/field-types/integer.d.ts.map +1 -1
- package/build-types/field-types/number.d.ts +1 -1
- package/build-types/field-types/number.d.ts.map +1 -1
- package/build-types/field-types/stories/index.story.d.ts +37 -15
- package/build-types/field-types/stories/index.story.d.ts.map +1 -1
- package/build-types/field-types/utils/get-is-valid.d.ts.map +1 -1
- package/build-types/field-types/utils/is-valid-date-boundary.d.ts +7 -0
- package/build-types/field-types/utils/is-valid-date-boundary.d.ts.map +1 -0
- package/build-types/types/dataviews.d.ts +8 -0
- package/build-types/types/dataviews.d.ts.map +1 -1
- package/build-types/types/field-api.d.ts +24 -9
- package/build-types/types/field-api.d.ts.map +1 -1
- package/build-wp/index.js +1141 -990
- package/package.json +16 -16
- package/src/components/dataform-controls/array.tsx +2 -0
- package/src/components/dataform-controls/checkbox.tsx +2 -0
- package/src/components/dataform-controls/color.tsx +7 -0
- package/src/components/dataform-controls/date.tsx +30 -4
- package/src/components/dataform-controls/datetime.tsx +17 -0
- package/src/components/dataform-controls/password.tsx +3 -0
- package/src/components/dataform-controls/radio.tsx +2 -0
- package/src/components/dataform-controls/select.tsx +2 -0
- package/src/components/dataform-controls/textarea.tsx +2 -0
- package/src/components/dataform-controls/toggle-group.tsx +2 -0
- package/src/components/dataform-controls/toggle.tsx +2 -0
- package/src/components/dataform-controls/utils/relative-date-control.tsx +3 -0
- package/src/components/dataform-controls/utils/use-disabled-date-matchers.ts +48 -0
- package/src/components/dataform-controls/utils/validated-input.tsx +2 -0
- package/src/components/dataform-controls/utils/validated-number.tsx +2 -0
- package/src/components/dataform-layouts/panel/style.scss +4 -5
- package/src/components/dataform-layouts/panel/summary-button.tsx +0 -1
- package/src/components/dataviews-context/index.ts +2 -2
- package/src/components/dataviews-filters/input-widget.tsx +4 -0
- package/src/components/dataviews-filters/style.scss +2 -2
- package/src/components/dataviews-layouts/activity/style.scss +3 -3
- package/src/components/dataviews-layouts/grid/style.scss +1 -1
- package/src/components/dataviews-layouts/list/style.scss +1 -1
- package/src/components/dataviews-layouts/picker-grid/index.tsx +2 -6
- package/src/components/dataviews-layouts/picker-grid/style.scss +1 -1
- package/src/components/dataviews-layouts/picker-table/index.tsx +9 -7
- package/src/components/dataviews-layouts/picker-table/style.scss +1 -1
- package/src/components/dataviews-layouts/table/index.tsx +0 -2
- package/src/components/dataviews-pagination/index.tsx +1 -0
- package/src/dataform/stories/content.story.tsx +1 -1
- package/src/dataform/stories/data-adapter.tsx +6 -6
- package/src/dataform/stories/index.story.tsx +7 -0
- package/src/dataform/stories/layout-card.tsx +5 -5
- package/src/dataform/stories/layout-details.tsx +5 -5
- package/src/dataform/stories/layout-panel.tsx +9 -9
- package/src/dataform/stories/layout-regular.tsx +31 -10
- package/src/dataform/stories/layout-row.tsx +9 -9
- package/src/dataform/stories/validation.tsx +25 -10
- package/src/dataviews/index.tsx +11 -7
- package/src/dataviews/stories/empty.tsx +4 -4
- package/src/dataviews/stories/free-composition.tsx +2 -2
- package/src/dataviews/stories/infinite-scroll.tsx +4 -4
- package/src/dataviews/stories/layout-custom.tsx +1 -1
- package/src/dataviews/stories/layout-grid.tsx +1 -1
- package/src/dataviews/stories/layout-list.tsx +1 -1
- package/src/dataviews/stories/layout-table.tsx +1 -1
- package/src/dataviews/stories/minimal-ui.tsx +1 -1
- package/src/dataviews/stories/with-card.tsx +4 -4
- package/src/dataviews/style.scss +1 -1
- package/src/dataviews/test/dataviews.tsx +73 -6
- package/src/dataviews-picker/index.tsx +17 -7
- package/src/dataviews-picker/stories/index.story.tsx +1 -5
- package/src/dataviews-picker/test/dataviews-picker.tsx +79 -2
- package/src/field-types/date.tsx +3 -0
- package/src/field-types/datetime.tsx +3 -0
- package/src/field-types/index.tsx +4 -0
- package/src/field-types/stories/index.story.tsx +67 -6
- package/src/field-types/test/normalize-fields.ts +44 -0
- package/src/field-types/utils/get-is-valid.ts +44 -31
- package/src/field-types/utils/is-valid-date-boundary.ts +80 -0
- package/src/hooks/test/use-form-validity.ts +479 -0
- package/src/types/dataviews.ts +9 -0
- package/src/types/field-api.ts +27 -9
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/dataviews-pagination/index.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { Button, SelectControl } from '@wordpress/components';\nimport { createInterpolateElement, memo, useContext } from '@wordpress/element';\nimport { sprintf, __, _x, isRTL } from '@wordpress/i18n';\nimport { next, previous } from '@wordpress/icons';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\n\nexport function DataViewsPagination() {\n\tconst {\n\t\tview,\n\t\tonChangeView,\n\t\tpaginationInfo: { totalItems = 0, totalPages },\n\t} = useContext( DataViewsContext );\n\n\tif ( ! totalItems || ! totalPages || view.infiniteScrollEnabled ) {\n\t\treturn null;\n\t}\n\n\tconst currentPage = view.page ?? 1;\n\tconst pageSelectOptions = Array.from( Array( totalPages ) ).map(\n\t\t( _, i ) => {\n\t\t\tconst page = i + 1;\n\t\t\treturn {\n\t\t\t\tvalue: page.toString(),\n\t\t\t\tlabel: page.toString(),\n\t\t\t\t'aria-label':\n\t\t\t\t\tcurrentPage === page\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: 1: current page number. 2: total number of pages.\n\t\t\t\t\t\t\t\t__( 'Page %1$d of %2$d' ),\n\t\t\t\t\t\t\t\tcurrentPage,\n\t\t\t\t\t\t\t\ttotalPages\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: page.toString(),\n\t\t\t};\n\t\t}\n\t);\n\n\treturn (\n\t\t!! totalItems &&\n\t\ttotalPages !== 1 && (\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tclassName=\"dataviews-pagination\"\n\t\t\t\tjustify=\"end\"\n\t\t\t\talign=\"center\"\n\t\t\t\tgap=\"xl\"\n\t\t\t>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\tclassName=\"dataviews-pagination__page-select\"\n\t\t\t\t>\n\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t// translators: 1: Current page number, 2: Total number of pages.\n\t\t\t\t\t\t\t_x(\n\t\t\t\t\t\t\t\t'<div>Page</div>%1$s<div>of %2$d</div>',\n\t\t\t\t\t\t\t\t'paging'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t'<CurrentPage />',\n\t\t\t\t\t\t\ttotalPages\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdiv: <div aria-hidden />,\n\t\t\t\t\t\t\tCurrentPage: (\n\t\t\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t\t\taria-label={ __( 'Current page' ) }\n\t\t\t\t\t\t\t\t\tvalue={ currentPage.toString() }\n\t\t\t\t\t\t\t\t\toptions={ pageSelectOptions }\n\t\t\t\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\tpage: +newValue,\n\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tvariant=\"minimal\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t</Stack>\n\t\t\t\t<Stack direction=\"row\" gap=\"xs\" align=\"center\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\tpage: currentPage - 1,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdisabled={ currentPage === 1 }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\tlabel={ __( 'Previous page' ) }\n\t\t\t\t\t\ticon={ isRTL() ? next : previous }\n\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t/>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\tonChangeView( { ...view, page: currentPage + 1 } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdisabled={ currentPage >= totalPages }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\tlabel={ __( 'Next page' ) }\n\t\t\t\t\t\ticon={ isRTL() ? previous : next }\n\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t/>\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t)\n\t);\n}\n\nexport default memo( DataViewsPagination );\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAAsC;AACtC,qBAA2D;AAC3D,kBAAuC;AACvC,mBAA+B;AAC/B,gBAAsB;AAKtB,+BAA6B;AA6DjB;AA3DL,SAAS,sBAAsB;AACrC,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA,gBAAgB,EAAE,aAAa,GAAG,WAAW;AAAA,EAC9C,QAAI,2BAAY,yBAAAA,OAAiB;AAEjC,MAAK,CAAE,cAAc,CAAE,cAAc,KAAK,uBAAwB;AACjE,WAAO;AAAA,EACR;AAEA,QAAM,cAAc,KAAK,QAAQ;AACjC,QAAM,oBAAoB,MAAM,KAAM,MAAO,UAAW,CAAE,EAAE;AAAA,IAC3D,CAAE,GAAG,MAAO;AACX,YAAM,OAAO,IAAI;AACjB,aAAO;AAAA,QACN,OAAO,KAAK,SAAS;AAAA,QACrB,OAAO,KAAK,SAAS;AAAA,QACrB,cACC,gBAAgB,WACb;AAAA;AAAA,cAEA,gBAAI,mBAAoB;AAAA,UACxB;AAAA,UACA;AAAA,QACA,IACA,KAAK,SAAS;AAAA,MACnB;AAAA,IACD;AAAA,EACD;AAEA,SACC,CAAC,CAAE,cACH,eAAe,KACd;AAAA,IAAC;AAAA;AAAA,MACA,WAAU;AAAA,MACV,WAAU;AAAA,MACV,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,KAAI;AAAA,MAEJ;AAAA;AAAA,UAAC;AAAA;AAAA,YACA,WAAU;AAAA,YACV,SAAQ;AAAA,YACR,OAAM;AAAA,YACN,KAAI;AAAA,YACJ,WAAU;AAAA,YAER;AAAA,kBACD;AAAA;AAAA,oBAEC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACD;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAAA,cACA;AAAA,gBACC,KAAK,4CAAC,SAAI,eAAW,MAAC;AAAA,
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { Button, SelectControl } from '@wordpress/components';\nimport { createInterpolateElement, memo, useContext } from '@wordpress/element';\nimport { sprintf, __, _x, isRTL } from '@wordpress/i18n';\nimport { next, previous } from '@wordpress/icons';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\n\nexport function DataViewsPagination() {\n\tconst {\n\t\tview,\n\t\tonChangeView,\n\t\tpaginationInfo: { totalItems = 0, totalPages },\n\t} = useContext( DataViewsContext );\n\n\tif ( ! totalItems || ! totalPages || view.infiniteScrollEnabled ) {\n\t\treturn null;\n\t}\n\n\tconst currentPage = view.page ?? 1;\n\tconst pageSelectOptions = Array.from( Array( totalPages ) ).map(\n\t\t( _, i ) => {\n\t\t\tconst page = i + 1;\n\t\t\treturn {\n\t\t\t\tvalue: page.toString(),\n\t\t\t\tlabel: page.toString(),\n\t\t\t\t'aria-label':\n\t\t\t\t\tcurrentPage === page\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: 1: current page number. 2: total number of pages.\n\t\t\t\t\t\t\t\t__( 'Page %1$d of %2$d' ),\n\t\t\t\t\t\t\t\tcurrentPage,\n\t\t\t\t\t\t\t\ttotalPages\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: page.toString(),\n\t\t\t};\n\t\t}\n\t);\n\n\treturn (\n\t\t!! totalItems &&\n\t\ttotalPages !== 1 && (\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tclassName=\"dataviews-pagination\"\n\t\t\t\tjustify=\"end\"\n\t\t\t\talign=\"center\"\n\t\t\t\tgap=\"xl\"\n\t\t\t>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\tclassName=\"dataviews-pagination__page-select\"\n\t\t\t\t>\n\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t// translators: 1: Current page number, 2: Total number of pages.\n\t\t\t\t\t\t\t_x(\n\t\t\t\t\t\t\t\t'<div>Page</div>%1$s<div>of %2$d</div>',\n\t\t\t\t\t\t\t\t'paging'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t'<CurrentPage />',\n\t\t\t\t\t\t\ttotalPages\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdiv: <div aria-hidden />,\n\t\t\t\t\t\t\t// @ts-expect-error \u2014 Tag injected via sprintf argument, not visible in format string.\n\t\t\t\t\t\t\tCurrentPage: (\n\t\t\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t\t\taria-label={ __( 'Current page' ) }\n\t\t\t\t\t\t\t\t\tvalue={ currentPage.toString() }\n\t\t\t\t\t\t\t\t\toptions={ pageSelectOptions }\n\t\t\t\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\tpage: +newValue,\n\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tvariant=\"minimal\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t</Stack>\n\t\t\t\t<Stack direction=\"row\" gap=\"xs\" align=\"center\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\tpage: currentPage - 1,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdisabled={ currentPage === 1 }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\tlabel={ __( 'Previous page' ) }\n\t\t\t\t\t\ticon={ isRTL() ? next : previous }\n\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t/>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\tonChangeView( { ...view, page: currentPage + 1 } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdisabled={ currentPage >= totalPages }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\tlabel={ __( 'Next page' ) }\n\t\t\t\t\t\ticon={ isRTL() ? previous : next }\n\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t/>\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t)\n\t);\n}\n\nexport default memo( DataViewsPagination );\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAAsC;AACtC,qBAA2D;AAC3D,kBAAuC;AACvC,mBAA+B;AAC/B,gBAAsB;AAKtB,+BAA6B;AA6DjB;AA3DL,SAAS,sBAAsB;AACrC,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA,gBAAgB,EAAE,aAAa,GAAG,WAAW;AAAA,EAC9C,QAAI,2BAAY,yBAAAA,OAAiB;AAEjC,MAAK,CAAE,cAAc,CAAE,cAAc,KAAK,uBAAwB;AACjE,WAAO;AAAA,EACR;AAEA,QAAM,cAAc,KAAK,QAAQ;AACjC,QAAM,oBAAoB,MAAM,KAAM,MAAO,UAAW,CAAE,EAAE;AAAA,IAC3D,CAAE,GAAG,MAAO;AACX,YAAM,OAAO,IAAI;AACjB,aAAO;AAAA,QACN,OAAO,KAAK,SAAS;AAAA,QACrB,OAAO,KAAK,SAAS;AAAA,QACrB,cACC,gBAAgB,WACb;AAAA;AAAA,cAEA,gBAAI,mBAAoB;AAAA,UACxB;AAAA,UACA;AAAA,QACA,IACA,KAAK,SAAS;AAAA,MACnB;AAAA,IACD;AAAA,EACD;AAEA,SACC,CAAC,CAAE,cACH,eAAe,KACd;AAAA,IAAC;AAAA;AAAA,MACA,WAAU;AAAA,MACV,WAAU;AAAA,MACV,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,KAAI;AAAA,MAEJ;AAAA;AAAA,UAAC;AAAA;AAAA,YACA,WAAU;AAAA,YACV,SAAQ;AAAA,YACR,OAAM;AAAA,YACN,KAAI;AAAA,YACJ,WAAU;AAAA,YAER;AAAA,kBACD;AAAA;AAAA,oBAEC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACD;AAAA,gBACA;AAAA,gBACA;AAAA,cACD;AAAA,cACA;AAAA,gBACC,KAAK,4CAAC,SAAI,eAAW,MAAC;AAAA;AAAA,gBAEtB,aACC;AAAA,kBAAC;AAAA;AAAA,oBACA,kBAAa,gBAAI,cAAe;AAAA,oBAChC,OAAQ,YAAY,SAAS;AAAA,oBAC7B,SAAU;AAAA,oBACV,UAAW,CAAE,aAAc;AAC1B,mCAAc;AAAA,wBACb,GAAG;AAAA,wBACH,MAAM,CAAC;AAAA,sBACR,CAAE;AAAA,oBACH;AAAA,oBACA,MAAK;AAAA,oBACL,SAAQ;AAAA;AAAA,gBACT;AAAA,cAEF;AAAA,YACD;AAAA;AAAA,QACD;AAAA,QACA,6CAAC,mBAAM,WAAU,OAAM,KAAI,MAAK,OAAM,UACrC;AAAA;AAAA,YAAC;AAAA;AAAA,cACA,SAAU,MACT,aAAc;AAAA,gBACb,GAAG;AAAA,gBACH,MAAM,cAAc;AAAA,cACrB,CAAE;AAAA,cAEH,UAAW,gBAAgB;AAAA,cAC3B,wBAAsB;AAAA,cACtB,WAAQ,gBAAI,eAAgB;AAAA,cAC5B,UAAO,mBAAM,IAAI,oBAAO;AAAA,cACxB,aAAW;AAAA,cACX,MAAK;AAAA,cACL,iBAAgB;AAAA;AAAA,UACjB;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACA,SAAU,MACT,aAAc,EAAE,GAAG,MAAM,MAAM,cAAc,EAAE,CAAE;AAAA,cAElD,UAAW,eAAe;AAAA,cAC1B,wBAAsB;AAAA,cACtB,WAAQ,gBAAI,WAAY;AAAA,cACxB,UAAO,mBAAM,IAAI,wBAAW;AAAA,cAC5B,aAAW;AAAA,cACX,MAAK;AAAA,cACL,iBAAgB;AAAA;AAAA,UACjB;AAAA,WACD;AAAA;AAAA;AAAA,EACD;AAGH;AAEA,IAAO,mCAAQ,qBAAM,mBAAoB;",
|
|
6
6
|
"names": ["DataViewsContext"]
|
|
7
7
|
}
|
|
@@ -53,6 +53,7 @@ var import_jsx_runtime = require("react/jsx-runtime");
|
|
|
53
53
|
var defaultGetItemId = (item) => item.id;
|
|
54
54
|
var defaultIsItemClickable = () => true;
|
|
55
55
|
var EMPTY_ARRAY = [];
|
|
56
|
+
var DEFAULT_LAYOUTS = { table: {}, grid: {}, list: {} };
|
|
56
57
|
var dataViewsLayouts = import_dataviews_layouts.VIEW_LAYOUTS.filter(
|
|
57
58
|
(viewLayout) => !viewLayout.isPicker
|
|
58
59
|
);
|
|
@@ -112,7 +113,7 @@ function DataViews({
|
|
|
112
113
|
getItemLevel,
|
|
113
114
|
isLoading = false,
|
|
114
115
|
paginationInfo,
|
|
115
|
-
defaultLayouts: defaultLayoutsProperty,
|
|
116
|
+
defaultLayouts: defaultLayoutsProperty = DEFAULT_LAYOUTS,
|
|
116
117
|
selection: selectionProperty,
|
|
117
118
|
onChangeSelection,
|
|
118
119
|
onClickItem,
|
|
@@ -194,13 +195,14 @@ function DataViews({
|
|
|
194
195
|
}, [hasPrimaryOrLockedFilters, isShowingFilter]);
|
|
195
196
|
const defaultLayouts = (0, import_element.useMemo)(
|
|
196
197
|
() => Object.fromEntries(
|
|
197
|
-
Object.entries(defaultLayoutsProperty).filter(
|
|
198
|
-
(
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
198
|
+
Object.entries(defaultLayoutsProperty).filter(([layoutType]) => {
|
|
199
|
+
return dataViewsLayouts.some(
|
|
200
|
+
(viewLayout) => viewLayout.type === layoutType
|
|
201
|
+
);
|
|
202
|
+
}).map(([key, value]) => [
|
|
203
|
+
key,
|
|
204
|
+
value === true ? {} : value
|
|
205
|
+
])
|
|
204
206
|
),
|
|
205
207
|
[defaultLayoutsProperty]
|
|
206
208
|
);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/dataviews/index.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * External dependencies\n */\nimport type { ReactNode, ComponentProps, ReactElement } from 'react';\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { useResizeObserver } from '@wordpress/compose';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../components/dataviews-context';\nimport { VIEW_LAYOUTS } from '../components/dataviews-layouts';\nimport {\n\tFilters,\n\tFiltersToggled,\n\tuseFilters,\n\tFiltersToggle,\n} from '../components/dataviews-filters';\nimport DataViewsLayout from '../components/dataviews-layout';\nimport DataViewsFooter from '../components/dataviews-footer';\nimport DataViewsSearch from '../components/dataviews-search';\nimport { BulkActionsFooter } from '../components/dataviews-bulk-actions';\nimport { DataViewsPagination } from '../components/dataviews-pagination';\nimport DataViewsViewConfig, {\n\tDataviewsViewConfigDropdown,\n\tViewTypeMenu,\n} from '../components/dataviews-view-config';\nimport normalizeFields from '../field-types';\nimport useData from '../hooks/use-data';\nimport { useInfiniteScroll } from '../hooks/use-infinite-scroll';\nimport type { Action, Field, View, SupportedLayouts } from '../types';\nimport type { SelectionOrUpdater } from '../types/private';\ntype ItemWithId = { id: string };\n\ntype DataViewsProps< Item > = {\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tfields: Field< Item >[];\n\tsearch?: boolean;\n\tsearchLabel?: string;\n\tactions?: Action< Item >[];\n\tdata: Item[];\n\tisLoading?: boolean;\n\tpaginationInfo: {\n\t\ttotalItems: number;\n\t\ttotalPages: number;\n\t};\n\tdefaultLayouts: SupportedLayouts;\n\tselection?: string[];\n\tonChangeSelection?: ( items: string[] ) => void;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tisItemClickable?: ( item: Item ) => boolean;\n\theader?: ReactNode;\n\tgetItemLevel?: ( item: Item ) => number;\n\tchildren?: ReactNode;\n\tconfig?: {\n\t\tperPageSizes: number[];\n\t};\n\tempty?: ReactNode;\n\tonReset?: ( () => void ) | false;\n} & ( Item extends ItemWithId\n\t? { getItemId?: ( item: Item ) => string }\n\t: { getItemId: ( item: Item ) => string } );\n\nconst defaultGetItemId = ( item: ItemWithId ) => item.id;\nconst defaultIsItemClickable = () => true;\nconst EMPTY_ARRAY: any[] = [];\n\nconst dataViewsLayouts = VIEW_LAYOUTS.filter(\n\t( viewLayout ) => ! viewLayout.isPicker\n);\n\ntype DefaultUIProps = Pick<\n\tDataViewsProps< any >,\n\t'header' | 'search' | 'searchLabel'\n>;\n\nfunction DefaultUI( {\n\theader,\n\tsearch = true,\n\tsearchLabel = undefined,\n}: DefaultUIProps ) {\n\tconst { view } = useContext( DataViewsContext );\n\tconst isInfiniteScroll = view.infiniteScrollEnabled;\n\treturn (\n\t\t<>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\talign=\"top\"\n\t\t\t\tjustify=\"space-between\"\n\t\t\t\tclassName={ clsx( 'dataviews__view-actions', {\n\t\t\t\t\t'dataviews__view-actions--infinite-scroll':\n\t\t\t\t\t\tisInfiniteScroll,\n\t\t\t\t} ) }\n\t\t\t\tgap=\"xs\"\n\t\t\t>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\tgap=\"sm\"\n\t\t\t\t\tclassName=\"dataviews__search\"\n\t\t\t\t>\n\t\t\t\t\t{ search && <DataViewsSearch label={ searchLabel } /> }\n\t\t\t\t\t<FiltersToggle />\n\t\t\t\t</Stack>\n\t\t\t\t<Stack direction=\"row\" gap=\"xs\" style={ { flexShrink: 0 } }>\n\t\t\t\t\t<DataViewsViewConfig />\n\t\t\t\t\t{ header }\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t\t<FiltersToggled className=\"dataviews-filters__container\" />\n\t\t\t<DataViewsLayout />\n\t\t\t<DataViewsFooter />\n\t\t</>\n\t);\n}\n\nfunction DataViews< Item >( {\n\tview,\n\tonChangeView,\n\tfields,\n\tsearch = true,\n\tsearchLabel = undefined,\n\tactions = EMPTY_ARRAY,\n\tdata,\n\tgetItemId = defaultGetItemId,\n\tgetItemLevel,\n\tisLoading = false,\n\tpaginationInfo,\n\tdefaultLayouts: defaultLayoutsProperty,\n\tselection: selectionProperty,\n\tonChangeSelection,\n\tonClickItem,\n\trenderItemLink,\n\tisItemClickable = defaultIsItemClickable,\n\theader,\n\tchildren,\n\tconfig = { perPageSizes: [ 10, 20, 50, 100 ] },\n\tempty,\n\tonReset,\n}: DataViewsProps< Item > ) {\n\tconst [ selectionState, setSelectionState ] = useState< string[] >( [] );\n\tconst isUncontrolled =\n\t\tselectionProperty === undefined || onChangeSelection === undefined;\n\tconst selection = isUncontrolled ? selectionState : selectionProperty;\n\n\t// useData handles both infinite scroll and standard pagination paths,\n\t// preserving previous data while loading and tracking initial load state.\n\tconst {\n\t\tdata: displayData,\n\t\tpaginationInfo: displayPaginationInfo,\n\t\thasInitiallyLoaded,\n\t\tsetVisibleEntries,\n\t} = useData( {\n\t\tview,\n\t\tdata: data as any,\n\t\tgetItemId: getItemId as any,\n\t\tisLoading,\n\t\tselection,\n\t\tpaginationInfo,\n\t} ) as {\n\t\tdata: ( Item & { position?: number } )[];\n\t\tpaginationInfo: { totalItems: number; totalPages: number };\n\t\thasInitiallyLoaded: boolean;\n\t\tsetVisibleEntries?: React.Dispatch< React.SetStateAction< number[] > >;\n\t};\n\tconst containerRef = useRef< HTMLDivElement >( null );\n\tconst [ containerWidth, setContainerWidth ] = useState( 0 );\n\tconst resizeObserverRef = useResizeObserver(\n\t\t( resizeObserverEntries: any ) => {\n\t\t\tsetContainerWidth(\n\t\t\t\tresizeObserverEntries[ 0 ].borderBoxSize[ 0 ].inlineSize\n\t\t\t);\n\t\t},\n\t\t{ box: 'border-box' }\n\t);\n\tconst [ openedFilter, setOpenedFilter ] = useState< string | null >( null );\n\tfunction setSelectionWithChange( value: SelectionOrUpdater ) {\n\t\tconst newValue =\n\t\t\ttypeof value === 'function' ? value( selection ) : value;\n\t\tif ( isUncontrolled ) {\n\t\t\tsetSelectionState( newValue );\n\t\t}\n\t\tif ( onChangeSelection ) {\n\t\t\tonChangeSelection( newValue );\n\t\t}\n\t}\n\tconst _fields = useMemo( () => normalizeFields( fields ), [ fields ] );\n\t// When infinite scroll is enabled, don't filter selection by current data\n\t// because items may be scrolled out of view but still selected.\n\tconst _selection = useMemo( () => {\n\t\tif ( view.infiniteScrollEnabled ) {\n\t\t\treturn selection;\n\t\t}\n\t\treturn selection.filter( ( id ) =>\n\t\t\tdata.some( ( item ) => getItemId( item ) === id )\n\t\t);\n\t}, [ selection, data, getItemId, view.infiniteScrollEnabled ] );\n\n\tconst filters = useFilters( _fields, view );\n\tconst hasPrimaryOrLockedFilters = useMemo(\n\t\t() =>\n\t\t\t( filters || [] ).some(\n\t\t\t\t( filter ) => filter.isPrimary || filter.isLocked\n\t\t\t),\n\t\t[ filters ]\n\t);\n\tconst [ isShowingFilter, setIsShowingFilter ] = useState< boolean >(\n\t\thasPrimaryOrLockedFilters\n\t);\n\n\tconst { intersectionObserver } = useInfiniteScroll( {\n\t\tview,\n\t\tonChangeView,\n\t\tisLoading,\n\t\tpaginationInfo,\n\t\tcontainerRef,\n\t\tsetVisibleEntries,\n\t} );\n\n\tuseEffect( () => {\n\t\tif ( hasPrimaryOrLockedFilters && ! isShowingFilter ) {\n\t\t\tsetIsShowingFilter( true );\n\t\t}\n\t}, [ hasPrimaryOrLockedFilters, isShowingFilter ] );\n\n\t// Filter out DataViewsPicker layouts.\n\tconst defaultLayouts = useMemo(\n\t\t() =>\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries( defaultLayoutsProperty ).filter(\n\t\t\t\t\t( [ layoutType ] ) => {\n\t\t\t\t\t\treturn dataViewsLayouts.some(\n\t\t\t\t\t\t\t( viewLayout ) => viewLayout.type === layoutType\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t),\n\t\t[ defaultLayoutsProperty ]\n\t);\n\n\tif ( ! defaultLayouts[ view.type ] ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<DataViewsContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tview,\n\t\t\t\tonChangeView,\n\t\t\t\tfields: _fields,\n\t\t\t\tactions,\n\t\t\t\tdata: displayData,\n\t\t\t\tisLoading,\n\t\t\t\tpaginationInfo: displayPaginationInfo,\n\t\t\t\tselection: _selection,\n\t\t\t\tonChangeSelection: setSelectionWithChange,\n\t\t\t\topenedFilter,\n\t\t\t\tsetOpenedFilter,\n\t\t\t\tgetItemId,\n\t\t\t\tgetItemLevel,\n\t\t\t\tisItemClickable,\n\t\t\t\tonClickItem,\n\t\t\t\trenderItemLink,\n\t\t\t\tcontainerWidth,\n\t\t\t\tcontainerRef,\n\t\t\t\tresizeObserverRef,\n\t\t\t\tdefaultLayouts,\n\t\t\t\tfilters,\n\t\t\t\tisShowingFilter,\n\t\t\t\tsetIsShowingFilter,\n\t\t\t\tconfig,\n\t\t\t\tempty,\n\t\t\t\thasInitiallyLoaded,\n\t\t\t\tonReset,\n\t\t\t\tintersectionObserver,\n\t\t\t} }\n\t\t>\n\t\t\t<div className=\"dataviews-wrapper\">\n\t\t\t\t{ children ?? (\n\t\t\t\t\t<DefaultUI\n\t\t\t\t\t\theader={ header }\n\t\t\t\t\t\tsearch={ search }\n\t\t\t\t\t\tsearchLabel={ searchLabel }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</DataViewsContext.Provider>\n\t);\n}\n\n// Populate the DataViews sub components\nconst DataViewsSubComponents = DataViews as typeof DataViews & {\n\tBulkActionToolbar: typeof BulkActionsFooter;\n\tFilters: typeof Filters;\n\tFiltersToggle: typeof FiltersToggle;\n\tFiltersToggled: typeof FiltersToggled;\n\tLayout: typeof DataViewsLayout;\n\tLayoutSwitcher: typeof ViewTypeMenu;\n\tPagination: typeof DataViewsPagination;\n\tSearch: typeof DataViewsSearch;\n\tViewConfig: typeof DataviewsViewConfigDropdown;\n\tFooter: typeof DataViewsFooter;\n};\n\nDataViewsSubComponents.BulkActionToolbar = BulkActionsFooter;\nDataViewsSubComponents.Filters = Filters;\nDataViewsSubComponents.FiltersToggled = FiltersToggled;\nDataViewsSubComponents.FiltersToggle = FiltersToggle;\nDataViewsSubComponents.Layout = DataViewsLayout;\nDataViewsSubComponents.LayoutSwitcher = ViewTypeMenu;\nDataViewsSubComponents.Pagination = DataViewsPagination;\nDataViewsSubComponents.Search = DataViewsSearch;\nDataViewsSubComponents.ViewConfig = DataviewsViewConfigDropdown;\nDataViewsSubComponents.Footer = DataViewsFooter;\n\nexport default DataViewsSubComponents;\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,kBAAiB;AAKjB,qBAMO;AACP,qBAAkC;AAClC,gBAAsB;AAKtB,+BAA6B;AAC7B,+BAA6B;AAC7B,+BAKO;AACP,8BAA4B;AAC5B,8BAA4B;AAC5B,8BAA4B;AAC5B,oCAAkC;AAClC,kCAAoC;AACpC,mCAGO;AACP,yBAA4B;AAC5B,sBAAoB;AACpB,iCAAkC;
|
|
4
|
+
"sourcesContent": ["/**\n * External dependencies\n */\nimport type { ReactNode, ComponentProps, ReactElement } from 'react';\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { useResizeObserver } from '@wordpress/compose';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../components/dataviews-context';\nimport { VIEW_LAYOUTS } from '../components/dataviews-layouts';\nimport {\n\tFilters,\n\tFiltersToggled,\n\tuseFilters,\n\tFiltersToggle,\n} from '../components/dataviews-filters';\nimport DataViewsLayout from '../components/dataviews-layout';\nimport DataViewsFooter from '../components/dataviews-footer';\nimport DataViewsSearch from '../components/dataviews-search';\nimport { BulkActionsFooter } from '../components/dataviews-bulk-actions';\nimport { DataViewsPagination } from '../components/dataviews-pagination';\nimport DataViewsViewConfig, {\n\tDataviewsViewConfigDropdown,\n\tViewTypeMenu,\n} from '../components/dataviews-view-config';\nimport normalizeFields from '../field-types';\nimport useData from '../hooks/use-data';\nimport { useInfiniteScroll } from '../hooks/use-infinite-scroll';\nimport type { Action, Field, View, SupportedLayouts } from '../types';\nimport type { SelectionOrUpdater } from '../types/private';\ntype ItemWithId = { id: string };\n\ntype DataViewsProps< Item > = {\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tfields: Field< Item >[];\n\tsearch?: boolean;\n\tsearchLabel?: string;\n\tactions?: Action< Item >[];\n\tdata: Item[];\n\tisLoading?: boolean;\n\tpaginationInfo: {\n\t\ttotalItems: number;\n\t\ttotalPages: number;\n\t};\n\tdefaultLayouts?: SupportedLayouts;\n\tselection?: string[];\n\tonChangeSelection?: ( items: string[] ) => void;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tisItemClickable?: ( item: Item ) => boolean;\n\theader?: ReactNode;\n\tgetItemLevel?: ( item: Item ) => number;\n\tchildren?: ReactNode;\n\tconfig?: {\n\t\tperPageSizes: number[];\n\t};\n\tempty?: ReactNode;\n\tonReset?: ( () => void ) | false;\n} & ( Item extends ItemWithId\n\t? { getItemId?: ( item: Item ) => string }\n\t: { getItemId: ( item: Item ) => string } );\n\nconst defaultGetItemId = ( item: ItemWithId ) => item.id;\nconst defaultIsItemClickable = () => true;\nconst EMPTY_ARRAY: any[] = [];\nconst DEFAULT_LAYOUTS: SupportedLayouts = { table: {}, grid: {}, list: {} };\n\nconst dataViewsLayouts = VIEW_LAYOUTS.filter(\n\t( viewLayout ) => ! viewLayout.isPicker\n);\n\ntype DefaultUIProps = Pick<\n\tDataViewsProps< any >,\n\t'header' | 'search' | 'searchLabel'\n>;\n\nfunction DefaultUI( {\n\theader,\n\tsearch = true,\n\tsearchLabel = undefined,\n}: DefaultUIProps ) {\n\tconst { view } = useContext( DataViewsContext );\n\tconst isInfiniteScroll = view.infiniteScrollEnabled;\n\treturn (\n\t\t<>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\talign=\"top\"\n\t\t\t\tjustify=\"space-between\"\n\t\t\t\tclassName={ clsx( 'dataviews__view-actions', {\n\t\t\t\t\t'dataviews__view-actions--infinite-scroll':\n\t\t\t\t\t\tisInfiniteScroll,\n\t\t\t\t} ) }\n\t\t\t\tgap=\"xs\"\n\t\t\t>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\tgap=\"sm\"\n\t\t\t\t\tclassName=\"dataviews__search\"\n\t\t\t\t>\n\t\t\t\t\t{ search && <DataViewsSearch label={ searchLabel } /> }\n\t\t\t\t\t<FiltersToggle />\n\t\t\t\t</Stack>\n\t\t\t\t<Stack direction=\"row\" gap=\"xs\" style={ { flexShrink: 0 } }>\n\t\t\t\t\t<DataViewsViewConfig />\n\t\t\t\t\t{ header }\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t\t<FiltersToggled className=\"dataviews-filters__container\" />\n\t\t\t<DataViewsLayout />\n\t\t\t<DataViewsFooter />\n\t\t</>\n\t);\n}\n\nfunction DataViews< Item >( {\n\tview,\n\tonChangeView,\n\tfields,\n\tsearch = true,\n\tsearchLabel = undefined,\n\tactions = EMPTY_ARRAY,\n\tdata,\n\tgetItemId = defaultGetItemId,\n\tgetItemLevel,\n\tisLoading = false,\n\tpaginationInfo,\n\tdefaultLayouts: defaultLayoutsProperty = DEFAULT_LAYOUTS,\n\tselection: selectionProperty,\n\tonChangeSelection,\n\tonClickItem,\n\trenderItemLink,\n\tisItemClickable = defaultIsItemClickable,\n\theader,\n\tchildren,\n\tconfig = { perPageSizes: [ 10, 20, 50, 100 ] },\n\tempty,\n\tonReset,\n}: DataViewsProps< Item > ) {\n\tconst [ selectionState, setSelectionState ] = useState< string[] >( [] );\n\tconst isUncontrolled =\n\t\tselectionProperty === undefined || onChangeSelection === undefined;\n\tconst selection = isUncontrolled ? selectionState : selectionProperty;\n\n\t// useData handles both infinite scroll and standard pagination paths,\n\t// preserving previous data while loading and tracking initial load state.\n\tconst {\n\t\tdata: displayData,\n\t\tpaginationInfo: displayPaginationInfo,\n\t\thasInitiallyLoaded,\n\t\tsetVisibleEntries,\n\t} = useData( {\n\t\tview,\n\t\tdata: data as any,\n\t\tgetItemId: getItemId as any,\n\t\tisLoading,\n\t\tselection,\n\t\tpaginationInfo,\n\t} ) as {\n\t\tdata: ( Item & { position?: number } )[];\n\t\tpaginationInfo: { totalItems: number; totalPages: number };\n\t\thasInitiallyLoaded: boolean;\n\t\tsetVisibleEntries?: React.Dispatch< React.SetStateAction< number[] > >;\n\t};\n\tconst containerRef = useRef< HTMLDivElement >( null );\n\tconst [ containerWidth, setContainerWidth ] = useState( 0 );\n\tconst resizeObserverRef = useResizeObserver(\n\t\t( resizeObserverEntries: any ) => {\n\t\t\tsetContainerWidth(\n\t\t\t\tresizeObserverEntries[ 0 ].borderBoxSize[ 0 ].inlineSize\n\t\t\t);\n\t\t},\n\t\t{ box: 'border-box' }\n\t);\n\tconst [ openedFilter, setOpenedFilter ] = useState< string | null >( null );\n\tfunction setSelectionWithChange( value: SelectionOrUpdater ) {\n\t\tconst newValue =\n\t\t\ttypeof value === 'function' ? value( selection ) : value;\n\t\tif ( isUncontrolled ) {\n\t\t\tsetSelectionState( newValue );\n\t\t}\n\t\tif ( onChangeSelection ) {\n\t\t\tonChangeSelection( newValue );\n\t\t}\n\t}\n\tconst _fields = useMemo( () => normalizeFields( fields ), [ fields ] );\n\t// When infinite scroll is enabled, don't filter selection by current data\n\t// because items may be scrolled out of view but still selected.\n\tconst _selection = useMemo( () => {\n\t\tif ( view.infiniteScrollEnabled ) {\n\t\t\treturn selection;\n\t\t}\n\t\treturn selection.filter( ( id ) =>\n\t\t\tdata.some( ( item ) => getItemId( item ) === id )\n\t\t);\n\t}, [ selection, data, getItemId, view.infiniteScrollEnabled ] );\n\n\tconst filters = useFilters( _fields, view );\n\tconst hasPrimaryOrLockedFilters = useMemo(\n\t\t() =>\n\t\t\t( filters || [] ).some(\n\t\t\t\t( filter ) => filter.isPrimary || filter.isLocked\n\t\t\t),\n\t\t[ filters ]\n\t);\n\tconst [ isShowingFilter, setIsShowingFilter ] = useState< boolean >(\n\t\thasPrimaryOrLockedFilters\n\t);\n\n\tconst { intersectionObserver } = useInfiniteScroll( {\n\t\tview,\n\t\tonChangeView,\n\t\tisLoading,\n\t\tpaginationInfo,\n\t\tcontainerRef,\n\t\tsetVisibleEntries,\n\t} );\n\n\tuseEffect( () => {\n\t\tif ( hasPrimaryOrLockedFilters && ! isShowingFilter ) {\n\t\t\tsetIsShowingFilter( true );\n\t\t}\n\t}, [ hasPrimaryOrLockedFilters, isShowingFilter ] );\n\n\t// Filter out DataViewsPicker layouts and normalize `true` to `{}`.\n\tconst defaultLayouts = useMemo(\n\t\t() =>\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries( defaultLayoutsProperty )\n\t\t\t\t\t.filter( ( [ layoutType ] ) => {\n\t\t\t\t\t\treturn dataViewsLayouts.some(\n\t\t\t\t\t\t\t( viewLayout ) => viewLayout.type === layoutType\n\t\t\t\t\t\t);\n\t\t\t\t\t} )\n\t\t\t\t\t.map( ( [ key, value ] ) => [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue === true ? {} : value,\n\t\t\t\t\t] )\n\t\t\t),\n\t\t[ defaultLayoutsProperty ]\n\t);\n\n\tif ( ! defaultLayouts[ view.type ] ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<DataViewsContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tview,\n\t\t\t\tonChangeView,\n\t\t\t\tfields: _fields,\n\t\t\t\tactions,\n\t\t\t\tdata: displayData,\n\t\t\t\tisLoading,\n\t\t\t\tpaginationInfo: displayPaginationInfo,\n\t\t\t\tselection: _selection,\n\t\t\t\tonChangeSelection: setSelectionWithChange,\n\t\t\t\topenedFilter,\n\t\t\t\tsetOpenedFilter,\n\t\t\t\tgetItemId,\n\t\t\t\tgetItemLevel,\n\t\t\t\tisItemClickable,\n\t\t\t\tonClickItem,\n\t\t\t\trenderItemLink,\n\t\t\t\tcontainerWidth,\n\t\t\t\tcontainerRef,\n\t\t\t\tresizeObserverRef,\n\t\t\t\tdefaultLayouts,\n\t\t\t\tfilters,\n\t\t\t\tisShowingFilter,\n\t\t\t\tsetIsShowingFilter,\n\t\t\t\tconfig,\n\t\t\t\tempty,\n\t\t\t\thasInitiallyLoaded,\n\t\t\t\tonReset,\n\t\t\t\tintersectionObserver,\n\t\t\t} }\n\t\t>\n\t\t\t<div className=\"dataviews-wrapper\">\n\t\t\t\t{ children ?? (\n\t\t\t\t\t<DefaultUI\n\t\t\t\t\t\theader={ header }\n\t\t\t\t\t\tsearch={ search }\n\t\t\t\t\t\tsearchLabel={ searchLabel }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</DataViewsContext.Provider>\n\t);\n}\n\n// Populate the DataViews sub components\nconst DataViewsSubComponents = DataViews as typeof DataViews & {\n\tBulkActionToolbar: typeof BulkActionsFooter;\n\tFilters: typeof Filters;\n\tFiltersToggle: typeof FiltersToggle;\n\tFiltersToggled: typeof FiltersToggled;\n\tLayout: typeof DataViewsLayout;\n\tLayoutSwitcher: typeof ViewTypeMenu;\n\tPagination: typeof DataViewsPagination;\n\tSearch: typeof DataViewsSearch;\n\tViewConfig: typeof DataviewsViewConfigDropdown;\n\tFooter: typeof DataViewsFooter;\n};\n\nDataViewsSubComponents.BulkActionToolbar = BulkActionsFooter;\nDataViewsSubComponents.Filters = Filters;\nDataViewsSubComponents.FiltersToggled = FiltersToggled;\nDataViewsSubComponents.FiltersToggle = FiltersToggle;\nDataViewsSubComponents.Layout = DataViewsLayout;\nDataViewsSubComponents.LayoutSwitcher = ViewTypeMenu;\nDataViewsSubComponents.Pagination = DataViewsPagination;\nDataViewsSubComponents.Search = DataViewsSearch;\nDataViewsSubComponents.ViewConfig = DataviewsViewConfigDropdown;\nDataViewsSubComponents.Footer = DataViewsFooter;\n\nexport default DataViewsSubComponents;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,kBAAiB;AAKjB,qBAMO;AACP,qBAAkC;AAClC,gBAAsB;AAKtB,+BAA6B;AAC7B,+BAA6B;AAC7B,+BAKO;AACP,8BAA4B;AAC5B,8BAA4B;AAC5B,8BAA4B;AAC5B,oCAAkC;AAClC,kCAAoC;AACpC,mCAGO;AACP,yBAA4B;AAC5B,sBAAoB;AACpB,iCAAkC;AA8DhC;AAtBF,IAAM,mBAAmB,CAAE,SAAsB,KAAK;AACtD,IAAM,yBAAyB,MAAM;AACrC,IAAM,cAAqB,CAAC;AAC5B,IAAM,kBAAoC,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE;AAE1E,IAAM,mBAAmB,sCAAa;AAAA,EACrC,CAAE,eAAgB,CAAE,WAAW;AAChC;AAOA,SAAS,UAAW;AAAA,EACnB;AAAA,EACA,SAAS;AAAA,EACT,cAAc;AACf,GAAoB;AACnB,QAAM,EAAE,KAAK,QAAI,2BAAY,yBAAAA,OAAiB;AAC9C,QAAM,mBAAmB,KAAK;AAC9B,SACC,4EACC;AAAA;AAAA,MAAC;AAAA;AAAA,QACA,WAAU;AAAA,QACV,OAAM;AAAA,QACN,SAAQ;AAAA,QACR,eAAY,YAAAC,SAAM,2BAA2B;AAAA,UAC5C,4CACC;AAAA,QACF,CAAE;AAAA,QACF,KAAI;AAAA,QAEJ;AAAA;AAAA,YAAC;AAAA;AAAA,cACA,WAAU;AAAA,cACV,SAAQ;AAAA,cACR,KAAI;AAAA,cACJ,WAAU;AAAA,cAER;AAAA,0BAAU,4CAAC,wBAAAC,SAAA,EAAgB,OAAQ,aAAc;AAAA,gBACnD,4CAAC,0CAAc;AAAA;AAAA;AAAA,UAChB;AAAA,UACA,6CAAC,mBAAM,WAAU,OAAM,KAAI,MAAK,OAAQ,EAAE,YAAY,EAAE,GACvD;AAAA,wDAAC,6BAAAC,SAAA,EAAoB;AAAA,YACnB;AAAA,aACH;AAAA;AAAA;AAAA,IACD;AAAA,IACA,4CAAC,2CAAe,WAAU,gCAA+B;AAAA,IACzD,4CAAC,wBAAAC,SAAA,EAAgB;AAAA,IACjB,4CAAC,wBAAAC,SAAA,EAAgB;AAAA,KAClB;AAEF;AAEA,SAAS,UAAmB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,cAAc;AAAA,EACd,UAAU;AAAA,EACV;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,gBAAgB,yBAAyB;AAAA,EACzC,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB;AAAA,EACA;AAAA,EACA,SAAS,EAAE,cAAc,CAAE,IAAI,IAAI,IAAI,GAAI,EAAE;AAAA,EAC7C;AAAA,EACA;AACD,GAA4B;AAC3B,QAAM,CAAE,gBAAgB,iBAAkB,QAAI,yBAAsB,CAAC,CAAE;AACvE,QAAM,iBACL,sBAAsB,UAAa,sBAAsB;AAC1D,QAAM,YAAY,iBAAiB,iBAAiB;AAIpD,QAAM;AAAA,IACL,MAAM;AAAA,IACN,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,EACD,QAAI,gBAAAC,SAAS;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAE;AAMF,QAAM,mBAAe,uBAA0B,IAAK;AACpD,QAAM,CAAE,gBAAgB,iBAAkB,QAAI,yBAAU,CAAE;AAC1D,QAAM,wBAAoB;AAAA,IACzB,CAAE,0BAAgC;AACjC;AAAA,QACC,sBAAuB,CAAE,EAAE,cAAe,CAAE,EAAE;AAAA,MAC/C;AAAA,IACD;AAAA,IACA,EAAE,KAAK,aAAa;AAAA,EACrB;AACA,QAAM,CAAE,cAAc,eAAgB,QAAI,yBAA2B,IAAK;AAC1E,WAAS,uBAAwB,OAA4B;AAC5D,UAAM,WACL,OAAO,UAAU,aAAa,MAAO,SAAU,IAAI;AACpD,QAAK,gBAAiB;AACrB,wBAAmB,QAAS;AAAA,IAC7B;AACA,QAAK,mBAAoB;AACxB,wBAAmB,QAAS;AAAA,IAC7B;AAAA,EACD;AACA,QAAM,cAAU,wBAAS,UAAM,mBAAAC,SAAiB,MAAO,GAAG,CAAE,MAAO,CAAE;AAGrE,QAAM,iBAAa,wBAAS,MAAM;AACjC,QAAK,KAAK,uBAAwB;AACjC,aAAO;AAAA,IACR;AACA,WAAO,UAAU;AAAA,MAAQ,CAAE,OAC1B,KAAK,KAAM,CAAE,SAAU,UAAW,IAAK,MAAM,EAAG;AAAA,IACjD;AAAA,EACD,GAAG,CAAE,WAAW,MAAM,WAAW,KAAK,qBAAsB,CAAE;AAE9D,QAAM,cAAU,qCAAY,SAAS,IAAK;AAC1C,QAAM,gCAA4B;AAAA,IACjC,OACG,WAAW,CAAC,GAAI;AAAA,MACjB,CAAE,WAAY,OAAO,aAAa,OAAO;AAAA,IAC1C;AAAA,IACD,CAAE,OAAQ;AAAA,EACX;AACA,QAAM,CAAE,iBAAiB,kBAAmB,QAAI;AAAA,IAC/C;AAAA,EACD;AAEA,QAAM,EAAE,qBAAqB,QAAI,8CAAmB;AAAA,IACnD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAE;AAEF,gCAAW,MAAM;AAChB,QAAK,6BAA6B,CAAE,iBAAkB;AACrD,yBAAoB,IAAK;AAAA,IAC1B;AAAA,EACD,GAAG,CAAE,2BAA2B,eAAgB,CAAE;AAGlD,QAAM,qBAAiB;AAAA,IACtB,MACC,OAAO;AAAA,MACN,OAAO,QAAS,sBAAuB,EACrC,OAAQ,CAAE,CAAE,UAAW,MAAO;AAC9B,eAAO,iBAAiB;AAAA,UACvB,CAAE,eAAgB,WAAW,SAAS;AAAA,QACvC;AAAA,MACD,CAAE,EACD,IAAK,CAAE,CAAE,KAAK,KAAM,MAAO;AAAA,QAC3B;AAAA,QACA,UAAU,OAAO,CAAC,IAAI;AAAA,MACvB,CAAE;AAAA,IACJ;AAAA,IACD,CAAE,sBAAuB;AAAA,EAC1B;AAEA,MAAK,CAAE,eAAgB,KAAK,IAAK,GAAI;AACpC,WAAO;AAAA,EACR;AAEA,SACC;AAAA,IAAC,yBAAAP,QAAiB;AAAA,IAAjB;AAAA,MACA,OAAQ;AAAA,QACP;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,QACR;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA,gBAAgB;AAAA,QAChB,WAAW;AAAA,QACX,mBAAmB;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,MAEA,sDAAC,SAAI,WAAU,qBACZ,sBACD;AAAA,QAAC;AAAA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA;AAAA,MACD,GAEF;AAAA;AAAA,EACD;AAEF;AAGA,IAAM,yBAAyB;AAa/B,uBAAuB,oBAAoB;AAC3C,uBAAuB,UAAU;AACjC,uBAAuB,iBAAiB;AACxC,uBAAuB,gBAAgB;AACvC,uBAAuB,SAAS,wBAAAI;AAChC,uBAAuB,iBAAiB;AACxC,uBAAuB,aAAa;AACpC,uBAAuB,SAAS,wBAAAF;AAChC,uBAAuB,aAAa;AACpC,uBAAuB,SAAS,wBAAAG;AAEhC,IAAO,oBAAQ;",
|
|
6
6
|
"names": ["DataViewsContext", "clsx", "DataViewsSearch", "DataViewsViewConfig", "DataViewsLayout", "DataViewsFooter", "useData", "normalizeFields"]
|
|
7
7
|
}
|
|
@@ -55,6 +55,10 @@ var dataViewsPickerLayouts = import_dataviews_layouts.VIEW_LAYOUTS.filter(
|
|
|
55
55
|
);
|
|
56
56
|
var defaultGetItemId = (item) => item.id;
|
|
57
57
|
var EMPTY_ARRAY = [];
|
|
58
|
+
var DEFAULT_PICKER_LAYOUTS = {
|
|
59
|
+
pickerGrid: true,
|
|
60
|
+
pickerTable: true
|
|
61
|
+
};
|
|
58
62
|
function DefaultUI({
|
|
59
63
|
search = true,
|
|
60
64
|
searchLabel = void 0
|
|
@@ -106,13 +110,14 @@ function DataViewsPicker({
|
|
|
106
110
|
getItemId = defaultGetItemId,
|
|
107
111
|
isLoading = false,
|
|
108
112
|
paginationInfo,
|
|
109
|
-
defaultLayouts: defaultLayoutsProperty,
|
|
113
|
+
defaultLayouts: defaultLayoutsProperty = DEFAULT_PICKER_LAYOUTS,
|
|
110
114
|
selection,
|
|
111
115
|
onChangeSelection,
|
|
112
116
|
children,
|
|
113
117
|
config = { perPageSizes: [10, 20, 50, 100] },
|
|
114
118
|
itemListLabel,
|
|
115
|
-
empty
|
|
119
|
+
empty,
|
|
120
|
+
onReset
|
|
116
121
|
}) {
|
|
117
122
|
const { data: displayData, setVisibleEntries } = (0, import_use_data.default)({
|
|
118
123
|
view,
|
|
@@ -164,13 +169,14 @@ function DataViewsPicker({
|
|
|
164
169
|
}, [hasPrimaryOrLockedFilters, isShowingFilter]);
|
|
165
170
|
const defaultLayouts = (0, import_element.useMemo)(
|
|
166
171
|
() => Object.fromEntries(
|
|
167
|
-
Object.entries(defaultLayoutsProperty).filter(
|
|
168
|
-
(
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
172
|
+
Object.entries(defaultLayoutsProperty).filter(([layoutType]) => {
|
|
173
|
+
return dataViewsPickerLayouts.some(
|
|
174
|
+
(viewLayout) => viewLayout.type === layoutType
|
|
175
|
+
);
|
|
176
|
+
}).map(([key, value]) => [
|
|
177
|
+
key,
|
|
178
|
+
value === true ? {} : value
|
|
179
|
+
])
|
|
174
180
|
),
|
|
175
181
|
[defaultLayoutsProperty]
|
|
176
182
|
);
|
|
@@ -204,6 +210,7 @@ function DataViewsPicker({
|
|
|
204
210
|
config,
|
|
205
211
|
itemListLabel,
|
|
206
212
|
empty,
|
|
213
|
+
onReset,
|
|
207
214
|
hasInitiallyLoaded: true,
|
|
208
215
|
intersectionObserver
|
|
209
216
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/dataviews-picker/index.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * External dependencies\n */\nimport type { ReactNode } from 'react';\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { useResizeObserver } from '@wordpress/compose';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../components/dataviews-context';\nimport { VIEW_LAYOUTS } from '../components/dataviews-layouts';\nimport {\n\tFilters,\n\tFiltersToggled,\n\tuseFilters,\n\tFiltersToggle,\n} from '../components/dataviews-filters';\nimport DataViewsLayout from '../components/dataviews-layout';\nimport { DataViewsPickerFooter } from '../components/dataviews-picker-footer';\nimport DataViewsSearch from '../components/dataviews-search';\nimport { DataViewsPagination } from '../components/dataviews-pagination';\nimport DataViewsViewConfig, {\n\tDataviewsViewConfigDropdown,\n\tViewTypeMenu,\n} from '../components/dataviews-view-config';\nimport normalizeFields from '../field-types';\nimport useData from '../hooks/use-data';\nimport { useInfiniteScroll } from '../hooks/use-infinite-scroll';\nimport type { ActionButton, Field, View, SupportedLayouts } from '../types';\nimport type { SelectionOrUpdater } from '../types/private';\ntype ItemWithId = { id: string };\n\nconst isItemClickable = () => false;\n\nconst dataViewsPickerLayouts = VIEW_LAYOUTS.filter(\n\t( viewLayout ) => viewLayout.isPicker\n);\n\ntype DataViewsPickerProps< Item > = {\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tfields: Field< Item >[];\n\tactions?: ActionButton< Item >[];\n\tsearch?: boolean;\n\tsearchLabel?: string;\n\tdata: Item[];\n\tisLoading?: boolean;\n\tpaginationInfo: {\n\t\ttotalItems: number;\n\t\ttotalPages: number;\n\t};\n\tdefaultLayouts
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,kBAAiB;AAKjB,qBAMO;AACP,qBAAkC;AAClC,gBAAsB;AAKtB,+BAA6B;AAC7B,+BAA6B;AAC7B,+BAKO;AACP,8BAA4B;AAC5B,qCAAsC;AACtC,8BAA4B;AAC5B,kCAAoC;AACpC,mCAGO;AACP,yBAA4B;AAC5B,sBAAoB;AACpB,iCAAkC;
|
|
4
|
+
"sourcesContent": ["/**\n * External dependencies\n */\nimport type { ReactNode } from 'react';\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { useResizeObserver } from '@wordpress/compose';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../components/dataviews-context';\nimport { VIEW_LAYOUTS } from '../components/dataviews-layouts';\nimport {\n\tFilters,\n\tFiltersToggled,\n\tuseFilters,\n\tFiltersToggle,\n} from '../components/dataviews-filters';\nimport DataViewsLayout from '../components/dataviews-layout';\nimport { DataViewsPickerFooter } from '../components/dataviews-picker-footer';\nimport DataViewsSearch from '../components/dataviews-search';\nimport { DataViewsPagination } from '../components/dataviews-pagination';\nimport DataViewsViewConfig, {\n\tDataviewsViewConfigDropdown,\n\tViewTypeMenu,\n} from '../components/dataviews-view-config';\nimport normalizeFields from '../field-types';\nimport useData from '../hooks/use-data';\nimport { useInfiniteScroll } from '../hooks/use-infinite-scroll';\nimport type { ActionButton, Field, View, SupportedLayouts } from '../types';\nimport type { SelectionOrUpdater } from '../types/private';\ntype ItemWithId = { id: string };\n\nconst isItemClickable = () => false;\n\nconst dataViewsPickerLayouts = VIEW_LAYOUTS.filter(\n\t( viewLayout ) => viewLayout.isPicker\n);\n\ntype DataViewsPickerProps< Item > = {\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tfields: Field< Item >[];\n\tactions?: ActionButton< Item >[];\n\tsearch?: boolean;\n\tsearchLabel?: string;\n\tdata: Item[];\n\tisLoading?: boolean;\n\tpaginationInfo: {\n\t\ttotalItems: number;\n\t\ttotalPages: number;\n\t};\n\tdefaultLayouts?: SupportedLayouts;\n\tselection: string[];\n\tonChangeSelection: ( items: string[] ) => void;\n\tchildren?: ReactNode;\n\tconfig?: {\n\t\tperPageSizes: number[];\n\t};\n\titemListLabel?: string;\n\tempty?: ReactNode;\n\tonReset?: ( () => void ) | false;\n} & ( Item extends ItemWithId\n\t? { getItemId?: ( item: Item ) => string }\n\t: { getItemId: ( item: Item ) => string } );\n\nconst defaultGetItemId = ( item: ItemWithId ) => item.id;\nconst EMPTY_ARRAY: any[] = [];\nconst DEFAULT_PICKER_LAYOUTS: SupportedLayouts = {\n\tpickerGrid: true,\n\tpickerTable: true,\n};\n\ntype DefaultUIProps = Pick<\n\tDataViewsPickerProps< any >,\n\t'search' | 'searchLabel'\n>;\n\nfunction DefaultUI( {\n\tsearch = true,\n\tsearchLabel = undefined,\n}: DefaultUIProps ) {\n\tconst { view } = useContext( DataViewsContext );\n\tconst isInfiniteScroll = view.infiniteScrollEnabled;\n\treturn (\n\t\t<>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\talign=\"top\"\n\t\t\t\tjustify=\"space-between\"\n\t\t\t\tclassName={ clsx( 'dataviews__view-actions', {\n\t\t\t\t\t'dataviews__view-actions--infinite-scroll':\n\t\t\t\t\t\tisInfiniteScroll,\n\t\t\t\t} ) }\n\t\t\t\tgap=\"xs\"\n\t\t\t>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tgap=\"sm\"\n\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\tclassName=\"dataviews__search\"\n\t\t\t\t>\n\t\t\t\t\t{ search && <DataViewsSearch label={ searchLabel } /> }\n\t\t\t\t\t<FiltersToggle />\n\t\t\t\t</Stack>\n\t\t\t\t<Stack direction=\"row\" gap=\"xs\" style={ { flexShrink: 0 } }>\n\t\t\t\t\t<DataViewsViewConfig />\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t\t<FiltersToggled className=\"dataviews-filters__container\" />\n\t\t\t<DataViewsLayout />\n\t\t\t<DataViewsPickerFooter />\n\t\t</>\n\t);\n}\n\nfunction DataViewsPicker< Item >( {\n\tview,\n\tonChangeView,\n\tfields,\n\tsearch = true,\n\tsearchLabel = undefined,\n\tactions = EMPTY_ARRAY,\n\tdata,\n\tgetItemId = defaultGetItemId,\n\tisLoading = false,\n\tpaginationInfo,\n\tdefaultLayouts: defaultLayoutsProperty = DEFAULT_PICKER_LAYOUTS,\n\tselection,\n\tonChangeSelection,\n\tchildren,\n\tconfig = { perPageSizes: [ 10, 20, 50, 100 ] },\n\titemListLabel,\n\tempty,\n\tonReset,\n}: DataViewsPickerProps< Item > ) {\n\t// useData ensures data loading is correct whether infinite scroll is enabled or pagination is used.\n\tconst { data: displayData, setVisibleEntries } = useData( {\n\t\tview,\n\t\tdata: data as any,\n\t\tgetItemId: getItemId as any,\n\t\tselection,\n\t\tpaginationInfo,\n\t} ) as {\n\t\tdata: ( Item & { position?: number } )[];\n\t\tsetVisibleEntries?: React.Dispatch< React.SetStateAction< number[] > >;\n\t};\n\tconst containerRef = useRef< HTMLDivElement >( null );\n\tconst [ containerWidth, setContainerWidth ] = useState( 0 );\n\tconst resizeObserverRef = useResizeObserver(\n\t\t( resizeObserverEntries: any ) => {\n\t\t\tsetContainerWidth(\n\t\t\t\tresizeObserverEntries[ 0 ].borderBoxSize[ 0 ].inlineSize\n\t\t\t);\n\t\t},\n\t\t{ box: 'border-box' }\n\t);\n\tconst [ openedFilter, setOpenedFilter ] = useState< string | null >( null );\n\tfunction setSelectionWithChange( value: SelectionOrUpdater ) {\n\t\tconst newValue =\n\t\t\ttypeof value === 'function' ? value( selection ) : value;\n\t\tif ( onChangeSelection ) {\n\t\t\tonChangeSelection( newValue );\n\t\t}\n\t}\n\tconst _fields = useMemo( () => normalizeFields( fields ), [ fields ] );\n\tconst filters = useFilters( _fields, view );\n\n\tconst hasPrimaryOrLockedFilters = useMemo(\n\t\t() =>\n\t\t\t( filters || [] ).some(\n\t\t\t\t( filter ) => filter.isPrimary || filter.isLocked\n\t\t\t),\n\t\t[ filters ]\n\t);\n\tconst [ isShowingFilter, setIsShowingFilter ] = useState< boolean >(\n\t\thasPrimaryOrLockedFilters\n\t);\n\n\tconst { intersectionObserver } = useInfiniteScroll( {\n\t\tview,\n\t\tonChangeView,\n\t\tisLoading,\n\t\tpaginationInfo,\n\t\tcontainerRef,\n\t\tsetVisibleEntries,\n\t} );\n\n\tuseEffect( () => {\n\t\tif ( hasPrimaryOrLockedFilters && ! isShowingFilter ) {\n\t\t\tsetIsShowingFilter( true );\n\t\t}\n\t}, [ hasPrimaryOrLockedFilters, isShowingFilter ] );\n\n\t// Filter out non-picker layouts and normalize `true` to `{}`.\n\tconst defaultLayouts = useMemo(\n\t\t() =>\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries( defaultLayoutsProperty )\n\t\t\t\t\t.filter( ( [ layoutType ] ) => {\n\t\t\t\t\t\treturn dataViewsPickerLayouts.some(\n\t\t\t\t\t\t\t( viewLayout ) => viewLayout.type === layoutType\n\t\t\t\t\t\t);\n\t\t\t\t\t} )\n\t\t\t\t\t.map( ( [ key, value ] ) => [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue === true ? {} : value,\n\t\t\t\t\t] )\n\t\t\t),\n\t\t[ defaultLayoutsProperty ]\n\t);\n\n\tif ( ! defaultLayouts[ view.type ] ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<DataViewsContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tview,\n\t\t\t\tonChangeView,\n\t\t\t\tfields: _fields,\n\t\t\t\tactions,\n\t\t\t\tdata: displayData,\n\t\t\t\tisLoading,\n\t\t\t\tpaginationInfo,\n\t\t\t\tisItemClickable,\n\t\t\t\tselection,\n\t\t\t\tonChangeSelection: setSelectionWithChange,\n\t\t\t\topenedFilter,\n\t\t\t\tsetOpenedFilter,\n\t\t\t\tgetItemId,\n\t\t\t\tcontainerWidth,\n\t\t\t\tcontainerRef,\n\t\t\t\tresizeObserverRef,\n\t\t\t\tdefaultLayouts,\n\t\t\t\tfilters,\n\t\t\t\tisShowingFilter,\n\t\t\t\tsetIsShowingFilter,\n\t\t\t\tconfig,\n\t\t\t\titemListLabel,\n\t\t\t\tempty,\n\t\t\t\tonReset,\n\t\t\t\thasInitiallyLoaded: true,\n\t\t\t\tintersectionObserver,\n\t\t\t} }\n\t\t>\n\t\t\t<div className=\"dataviews-picker-wrapper\">\n\t\t\t\t{ children ?? (\n\t\t\t\t\t<DefaultUI search={ search } searchLabel={ searchLabel } />\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</DataViewsContext.Provider>\n\t);\n}\n\n// Populate the DataViews sub components\nconst DataViewsPickerSubComponents =\n\tDataViewsPicker as typeof DataViewsPicker & {\n\t\tBulkActionToolbar: typeof DataViewsPickerFooter;\n\t\tFilters: typeof Filters;\n\t\tFiltersToggled: typeof FiltersToggled;\n\t\tFiltersToggle: typeof FiltersToggle;\n\t\tLayout: typeof DataViewsLayout;\n\t\tLayoutSwitcher: typeof ViewTypeMenu;\n\t\tPagination: typeof DataViewsPagination;\n\t\tSearch: typeof DataViewsSearch;\n\t\tViewConfig: typeof DataviewsViewConfigDropdown;\n\t};\n\nDataViewsPickerSubComponents.BulkActionToolbar = DataViewsPickerFooter;\nDataViewsPickerSubComponents.Filters = Filters;\nDataViewsPickerSubComponents.FiltersToggled = FiltersToggled;\nDataViewsPickerSubComponents.FiltersToggle = FiltersToggle;\nDataViewsPickerSubComponents.Layout = DataViewsLayout;\nDataViewsPickerSubComponents.LayoutSwitcher = ViewTypeMenu;\nDataViewsPickerSubComponents.Pagination = DataViewsPagination;\nDataViewsPickerSubComponents.Search = DataViewsSearch;\nDataViewsPickerSubComponents.ViewConfig = DataviewsViewConfigDropdown;\n\nexport default DataViewsPickerSubComponents;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["DataViewsContext", "clsx", "DataViewsSearch", "DataViewsViewConfig", "DataViewsLayout", "useData", "normalizeFields"]
|
|
7
7
|
}
|
|
@@ -37,6 +37,7 @@ var import_date = require("@wordpress/date");
|
|
|
37
37
|
var import_is_valid_elements = __toESM(require("./utils/is-valid-elements.cjs"));
|
|
38
38
|
var import_constants = require("../constants.cjs");
|
|
39
39
|
var import_is_valid_required = __toESM(require("./utils/is-valid-required.cjs"));
|
|
40
|
+
var import_is_valid_date_boundary = require("./utils/is-valid-date-boundary.cjs");
|
|
40
41
|
var import_render_default = __toESM(require("./utils/render-default.cjs"));
|
|
41
42
|
var format = {
|
|
42
43
|
date: (0, import_date.getSettings)().formats.date,
|
|
@@ -96,7 +97,9 @@ var date_default = {
|
|
|
96
97
|
getValueFormatted,
|
|
97
98
|
validate: {
|
|
98
99
|
required: import_is_valid_required.default,
|
|
99
|
-
elements: import_is_valid_elements.default
|
|
100
|
+
elements: import_is_valid_elements.default,
|
|
101
|
+
min: import_is_valid_date_boundary.isValidMinDate,
|
|
102
|
+
max: import_is_valid_date_boundary.isValidMaxDate
|
|
100
103
|
}
|
|
101
104
|
};
|
|
102
105
|
//# sourceMappingURL=date.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/field-types/date.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { dateI18n, getDate, getSettings } from '@wordpress/date';\n\n/**\n * Internal dependencies\n */\nimport type { FormatDate, NormalizedField, SortDirection } from '../types';\nimport type { FieldType } from '../types/private';\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\tOPERATOR_BETWEEN,\n} from '../constants';\nimport isValidRequired from './utils/is-valid-required';\nimport render from './utils/render-default';\n\nconst format = {\n\tdate: getSettings().formats.date,\n\tweekStartsOn: getSettings().l10n.startOfWeek,\n};\n\nfunction getValueFormatted< Item >( {\n\titem,\n\tfield,\n}: {\n\titem: Item;\n\tfield: NormalizedField< Item >;\n} ): string {\n\tconst value = field.getValue( { item } );\n\tif ( [ '', undefined, null ].includes( value ) ) {\n\t\treturn '';\n\t}\n\n\tlet formatDate: Required< FormatDate >;\n\tif ( field.type !== 'date' ) {\n\t\tformatDate = format;\n\t} else {\n\t\tformatDate = field.format as Required< FormatDate >;\n\t}\n\n\treturn dateI18n( formatDate.date, getDate( value ) );\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: 'date',\n\trender,\n\tEdit: 'date',\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\tOPERATOR_BETWEEN,\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\tOPERATOR_BETWEEN,\n\t],\n\tformat,\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\telements: isValidElements,\n\t},\n} satisfies FieldType< any >;\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAA+C;AAO/C,+BAA4B;AAC5B,uBAUO;AACP,+BAA4B;AAC5B,4BAAmB;AAEnB,IAAM,SAAS;AAAA,EACd,UAAM,yBAAY,EAAE,QAAQ;AAAA,EAC5B,kBAAc,yBAAY,EAAE,KAAK;AAClC;AAEA,SAAS,kBAA2B;AAAA,EACnC;AAAA,EACA;AACD,GAGY;AACX,QAAM,QAAQ,MAAM,SAAU,EAAE,KAAK,CAAE;AACvC,MAAK,CAAE,IAAI,QAAW,IAAK,EAAE,SAAU,KAAM,GAAI;AAChD,WAAO;AAAA,EACR;AAEA,MAAI;AACJ,MAAK,MAAM,SAAS,QAAS;AAC5B,iBAAa;AAAA,EACd,OAAO;AACN,iBAAa,MAAM;AAAA,EACpB;AAEA,aAAO,sBAAU,WAAW,UAAM,qBAAS,KAAM,CAAE;AACpD;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,eAAQ;AAAA,EACd,MAAM;AAAA,EACN,8BAAAA;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,IACA;AAAA,EACD;AAAA,EACA,gBAAgB;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,IACT,UAAU,yBAAAC;AAAA,IACV,UAAU,yBAAAC;AAAA,
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { dateI18n, getDate, getSettings } from '@wordpress/date';\n\n/**\n * Internal dependencies\n */\nimport type { FormatDate, NormalizedField, SortDirection } from '../types';\nimport type { FieldType } from '../types/private';\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\tOPERATOR_BETWEEN,\n} from '../constants';\nimport isValidRequired from './utils/is-valid-required';\nimport { isValidMaxDate, isValidMinDate } from './utils/is-valid-date-boundary';\nimport render from './utils/render-default';\n\nconst format = {\n\tdate: getSettings().formats.date,\n\tweekStartsOn: getSettings().l10n.startOfWeek,\n};\n\nfunction getValueFormatted< Item >( {\n\titem,\n\tfield,\n}: {\n\titem: Item;\n\tfield: NormalizedField< Item >;\n} ): string {\n\tconst value = field.getValue( { item } );\n\tif ( [ '', undefined, null ].includes( value ) ) {\n\t\treturn '';\n\t}\n\n\tlet formatDate: Required< FormatDate >;\n\tif ( field.type !== 'date' ) {\n\t\tformatDate = format;\n\t} else {\n\t\tformatDate = field.format as Required< FormatDate >;\n\t}\n\n\treturn dateI18n( formatDate.date, getDate( value ) );\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: 'date',\n\trender,\n\tEdit: 'date',\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\tOPERATOR_BETWEEN,\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\tOPERATOR_BETWEEN,\n\t],\n\tformat,\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\telements: isValidElements,\n\t\tmin: isValidMinDate,\n\t\tmax: isValidMaxDate,\n\t},\n} satisfies FieldType< any >;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAA+C;AAO/C,+BAA4B;AAC5B,uBAUO;AACP,+BAA4B;AAC5B,oCAA+C;AAC/C,4BAAmB;AAEnB,IAAM,SAAS;AAAA,EACd,UAAM,yBAAY,EAAE,QAAQ;AAAA,EAC5B,kBAAc,yBAAY,EAAE,KAAK;AAClC;AAEA,SAAS,kBAA2B;AAAA,EACnC;AAAA,EACA;AACD,GAGY;AACX,QAAM,QAAQ,MAAM,SAAU,EAAE,KAAK,CAAE;AACvC,MAAK,CAAE,IAAI,QAAW,IAAK,EAAE,SAAU,KAAM,GAAI;AAChD,WAAO;AAAA,EACR;AAEA,MAAI;AACJ,MAAK,MAAM,SAAS,QAAS;AAC5B,iBAAa;AAAA,EACd,OAAO;AACN,iBAAa,MAAM;AAAA,EACpB;AAEA,aAAO,sBAAU,WAAW,UAAM,qBAAS,KAAM,CAAE;AACpD;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,eAAQ;AAAA,EACd,MAAM;AAAA,EACN,8BAAAA;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,IACA;AAAA,EACD;AAAA,EACA,gBAAgB;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,IACT,UAAU,yBAAAC;AAAA,IACV,UAAU,yBAAAC;AAAA,IACV,KAAK;AAAA,IACL,KAAK;AAAA,EACN;AACD;",
|
|
6
6
|
"names": ["render", "isValidRequired", "isValidElements"]
|
|
7
7
|
}
|
|
@@ -37,6 +37,7 @@ var import_date = require("@wordpress/date");
|
|
|
37
37
|
var import_is_valid_elements = __toESM(require("./utils/is-valid-elements.cjs"));
|
|
38
38
|
var import_constants = require("../constants.cjs");
|
|
39
39
|
var import_is_valid_required = __toESM(require("./utils/is-valid-required.cjs"));
|
|
40
|
+
var import_is_valid_date_boundary = require("./utils/is-valid-date-boundary.cjs");
|
|
40
41
|
var import_render_default = __toESM(require("./utils/render-default.cjs"));
|
|
41
42
|
var format = {
|
|
42
43
|
datetime: (0, import_date.getSettings)().formats.datetime,
|
|
@@ -94,7 +95,9 @@ var datetime_default = {
|
|
|
94
95
|
getValueFormatted,
|
|
95
96
|
validate: {
|
|
96
97
|
required: import_is_valid_required.default,
|
|
97
|
-
elements: import_is_valid_elements.default
|
|
98
|
+
elements: import_is_valid_elements.default,
|
|
99
|
+
min: import_is_valid_date_boundary.isValidMinDate,
|
|
100
|
+
max: import_is_valid_date_boundary.isValidMaxDate
|
|
98
101
|
}
|
|
99
102
|
};
|
|
100
103
|
//# sourceMappingURL=datetime.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/field-types/datetime.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { dateI18n, getDate, getSettings } from '@wordpress/date';\n\n/**\n * Internal dependencies\n */\nimport type { FormatDatetime, NormalizedField, SortDirection } from '../types';\nimport type { FieldType } from '../types/private';\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';\nimport render from './utils/render-default';\n\nconst format = {\n\tdatetime: getSettings().formats.datetime,\n\tweekStartsOn: getSettings().l10n.startOfWeek,\n};\n\nfunction getValueFormatted< Item >( {\n\titem,\n\tfield,\n}: {\n\titem: Item;\n\tfield: NormalizedField< Item >;\n} ): string {\n\tconst value = field.getValue( { item } );\n\tif ( [ '', undefined, null ].includes( value ) ) {\n\t\treturn '';\n\t}\n\n\tlet formatDatetime: Required< FormatDatetime >;\n\tif ( field.type !== 'datetime' ) {\n\t\tformatDatetime = format;\n\t} else {\n\t\tformatDatetime = field.format as Required< FormatDatetime >;\n\t}\n\n\treturn dateI18n( formatDatetime.datetime, getDate( value ) );\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\tformat,\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\telements: isValidElements,\n\t},\n} satisfies FieldType< any >;\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAA+C;AAO/C,+BAA4B;AAC5B,uBASO;AACP,+BAA4B;AAC5B,4BAAmB;AAEnB,IAAM,SAAS;AAAA,EACd,cAAU,yBAAY,EAAE,QAAQ;AAAA,EAChC,kBAAc,yBAAY,EAAE,KAAK;AAClC;AAEA,SAAS,kBAA2B;AAAA,EACnC;AAAA,EACA;AACD,GAGY;AACX,QAAM,QAAQ,MAAM,SAAU,EAAE,KAAK,CAAE;AACvC,MAAK,CAAE,IAAI,QAAW,IAAK,EAAE,SAAU,KAAM,GAAI;AAChD,WAAO;AAAA,EACR;AAEA,MAAI;AACJ,MAAK,MAAM,SAAS,YAAa;AAChC,qBAAiB;AAAA,EAClB,OAAO;AACN,qBAAiB,MAAM;AAAA,EACxB;AAEA,aAAO,sBAAU,eAAe,cAAU,qBAAS,KAAM,CAAE;AAC5D;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,8BAAAA;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;AAAA,EACA;AAAA,EACA,UAAU;AAAA,IACT,UAAU,yBAAAC;AAAA,IACV,UAAU,yBAAAC;AAAA,
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { dateI18n, getDate, getSettings } from '@wordpress/date';\n\n/**\n * Internal dependencies\n */\nimport type { FormatDatetime, NormalizedField, SortDirection } from '../types';\nimport type { FieldType } from '../types/private';\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';\nimport { isValidMaxDate, isValidMinDate } from './utils/is-valid-date-boundary';\nimport render from './utils/render-default';\n\nconst format = {\n\tdatetime: getSettings().formats.datetime,\n\tweekStartsOn: getSettings().l10n.startOfWeek,\n};\n\nfunction getValueFormatted< Item >( {\n\titem,\n\tfield,\n}: {\n\titem: Item;\n\tfield: NormalizedField< Item >;\n} ): string {\n\tconst value = field.getValue( { item } );\n\tif ( [ '', undefined, null ].includes( value ) ) {\n\t\treturn '';\n\t}\n\n\tlet formatDatetime: Required< FormatDatetime >;\n\tif ( field.type !== 'datetime' ) {\n\t\tformatDatetime = format;\n\t} else {\n\t\tformatDatetime = field.format as Required< FormatDatetime >;\n\t}\n\n\treturn dateI18n( formatDatetime.datetime, getDate( value ) );\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\tformat,\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\telements: isValidElements,\n\t\tmin: isValidMinDate,\n\t\tmax: isValidMaxDate,\n\t},\n} satisfies FieldType< any >;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAA+C;AAO/C,+BAA4B;AAC5B,uBASO;AACP,+BAA4B;AAC5B,oCAA+C;AAC/C,4BAAmB;AAEnB,IAAM,SAAS;AAAA,EACd,cAAU,yBAAY,EAAE,QAAQ;AAAA,EAChC,kBAAc,yBAAY,EAAE,KAAK;AAClC;AAEA,SAAS,kBAA2B;AAAA,EACnC;AAAA,EACA;AACD,GAGY;AACX,QAAM,QAAQ,MAAM,SAAU,EAAE,KAAK,CAAE;AACvC,MAAK,CAAE,IAAI,QAAW,IAAK,EAAE,SAAU,KAAM,GAAI;AAChD,WAAO;AAAA,EACR;AAEA,MAAI;AACJ,MAAK,MAAM,SAAS,YAAa;AAChC,qBAAiB;AAAA,EAClB,OAAO;AACN,qBAAiB,MAAM;AAAA,EACxB;AAEA,aAAO,sBAAU,eAAe,cAAU,qBAAS,KAAM,CAAE;AAC5D;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,8BAAAA;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;AAAA,EACA;AAAA,EACA,UAAU;AAAA,IACT,UAAU,yBAAAC;AAAA,IACV,UAAU,yBAAAC;AAAA,IACV,KAAK;AAAA,IACL,KAAK;AAAA,EACN;AACD;",
|
|
6
6
|
"names": ["render", "isValidRequired", "isValidElements"]
|
|
7
7
|
}
|
|
@@ -97,6 +97,7 @@ function normalizeFields(fields) {
|
|
|
97
97
|
getElements: field.getElements,
|
|
98
98
|
hasElements: (0, import_has_elements.default)(field),
|
|
99
99
|
isVisible: field.isVisible,
|
|
100
|
+
isDisabled: typeof field.isDisabled === "function" ? field.isDisabled : () => !!field.isDisabled,
|
|
100
101
|
enableHiding: field.enableHiding ?? true,
|
|
101
102
|
readOnly: field.readOnly ?? false,
|
|
102
103
|
// The type provides defaults for the following props
|
|
@@ -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 '../components/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';\nimport getFilter from './utils/get-filter';\nimport getFormat from './utils/get-format';\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\tfilter: getFilter( fieldType ),\n\t\t\tformat: getFormat( field, fieldType ),\n\t\t\tgetValueFormatted:\n\t\t\t\tfield.getValueFormatted ?? fieldType.getValueFormatted,\n\t\t};\n\t} );\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA,+BAA2B;AAC3B,2BAAwB;AACxB,+BAA2B;AAC3B,0BAAwB;AACxB,+BAA2B;AAC3B,mBAAiC;AACjC,qBAAmC;AACnC,oBAAkC;AAClC,kBAAgC;AAChC,sBAAoC;AACpC,kBAAgC;AAChC,qBAAmC;AACnC,mBAAiC;AACjC,mBAAiC;AACjC,sBAAoC;AACpC,uBAAqC;AACrC,mBAAiC;AACjC,iBAA+B;AAC/B,qBAAkC;AAClC,0BAAuB;AACvB,wBAAsB;AACtB,wBAAsB;AAQtB,SAAS,mBAA4B,MAA0C;AAC9E,QAAM,QAAQ;AAAA,IACb,aAAAA;AAAA,IACA,eAAAC;AAAA,IACA,cAAAC;AAAA,IACA,YAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,YAAAC;AAAA,IACA,eAAAC;AAAA,IACA,aAAAC;AAAA,IACA,aAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,WAAAC;AAAA,EACD,EAAE,KAAM,CAAE,cAAe,WAAW,SAAS,IAAK;AAElD,MAAK,CAAC,CAAE,OAAQ;AACf,WAAO;AAAA,EACR;AAIA,SAAO,eAAAC;AACR;AAQe,SAAR,gBACN,QAC4B;AAC5B,SAAO,OAAO,IAAK,CAAE,UAAW;AAC/B,UAAM,YAAY,mBAA4B,MAAM,IAAK;AAEzD,UAAM,WAAW,MAAM,gBAAY,yBAAAC,SAAgB,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,gBAAY,yBAAAC,SAAgB,MAAM,EAAG;AAAA,MACrD,UAAU,MAAM;AAAA,MAChB,aAAa,MAAM;AAAA,MACnB,iBAAa,oBAAAC,SAAa,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,UAAM,qCAAY,OAAO,UAAU,IAAK;AAAA,MACxC;AAAA,MACA,eAAe,MAAM,iBAAiB,UAAU;AAAA,MAChD,oBACC,MAAM,sBAAsB,UAAU;AAAA,MACvC,aAAS,oBAAAC,SAAY,OAAO,SAAU;AAAA,MACtC,cAAU,qBAAAC;AAAA,QACT;AAAA,QACA,UAAU;AAAA,QACV,UAAU;AAAA,MACX;AAAA,MACA,YAAQ,kBAAAC,SAAW,SAAU;AAAA,MAC7B,YAAQ,kBAAAC,SAAW,OAAO,SAAU;AAAA,MACpC,mBACC,MAAM,qBAAqB,UAAU;AAAA,IACvC;AAAA,EACD,CAAE;AACH;",
|
|
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 '../components/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';\nimport getFilter from './utils/get-filter';\nimport getFormat from './utils/get-format';\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\tisDisabled:\n\t\t\t\ttypeof field.isDisabled === 'function'\n\t\t\t\t\t? field.isDisabled\n\t\t\t\t\t: () => !! field.isDisabled,\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\tfilter: getFilter( fieldType ),\n\t\t\tformat: getFormat( field, fieldType ),\n\t\t\tgetValueFormatted:\n\t\t\t\tfield.getValueFormatted ?? fieldType.getValueFormatted,\n\t\t};\n\t} );\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA,+BAA2B;AAC3B,2BAAwB;AACxB,+BAA2B;AAC3B,0BAAwB;AACxB,+BAA2B;AAC3B,mBAAiC;AACjC,qBAAmC;AACnC,oBAAkC;AAClC,kBAAgC;AAChC,sBAAoC;AACpC,kBAAgC;AAChC,qBAAmC;AACnC,mBAAiC;AACjC,mBAAiC;AACjC,sBAAoC;AACpC,uBAAqC;AACrC,mBAAiC;AACjC,iBAA+B;AAC/B,qBAAkC;AAClC,0BAAuB;AACvB,wBAAsB;AACtB,wBAAsB;AAQtB,SAAS,mBAA4B,MAA0C;AAC9E,QAAM,QAAQ;AAAA,IACb,aAAAA;AAAA,IACA,eAAAC;AAAA,IACA,cAAAC;AAAA,IACA,YAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,YAAAC;AAAA,IACA,eAAAC;AAAA,IACA,aAAAC;AAAA,IACA,aAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,WAAAC;AAAA,EACD,EAAE,KAAM,CAAE,cAAe,WAAW,SAAS,IAAK;AAElD,MAAK,CAAC,CAAE,OAAQ;AACf,WAAO;AAAA,EACR;AAIA,SAAO,eAAAC;AACR;AAQe,SAAR,gBACN,QAC4B;AAC5B,SAAO,OAAO,IAAK,CAAE,UAAW;AAC/B,UAAM,YAAY,mBAA4B,MAAM,IAAK;AAEzD,UAAM,WAAW,MAAM,gBAAY,yBAAAC,SAAgB,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,gBAAY,yBAAAC,SAAgB,MAAM,EAAG;AAAA,MACrD,UAAU,MAAM;AAAA,MAChB,aAAa,MAAM;AAAA,MACnB,iBAAa,oBAAAC,SAAa,KAAM;AAAA,MAChC,WAAW,MAAM;AAAA,MACjB,YACC,OAAO,MAAM,eAAe,aACzB,MAAM,aACN,MAAM,CAAC,CAAE,MAAM;AAAA,MACnB,cAAc,MAAM,gBAAgB;AAAA,MACpC,UAAU,MAAM,YAAY;AAAA;AAAA,MAE5B,MAAM,UAAU;AAAA,MAChB,QAAQ,MAAM,UAAU,UAAU;AAAA,MAClC,UAAM,qCAAY,OAAO,UAAU,IAAK;AAAA,MACxC;AAAA,MACA,eAAe,MAAM,iBAAiB,UAAU;AAAA,MAChD,oBACC,MAAM,sBAAsB,UAAU;AAAA,MACvC,aAAS,oBAAAC,SAAY,OAAO,SAAU;AAAA,MACtC,cAAU,qBAAAC;AAAA,QACT;AAAA,QACA,UAAU;AAAA,QACV,UAAU;AAAA,MACX;AAAA,MACA,YAAQ,kBAAAC,SAAW,SAAU;AAAA,MAC7B,YAAQ,kBAAAC,SAAW,OAAO,SAAU;AAAA,MACpC,mBACC,MAAM,qBAAqB,UAAU;AAAA,IACvC;AAAA,EACD,CAAE;AACH;",
|
|
6
6
|
"names": ["email", "integer", "number", "text", "datetime", "date", "boolean", "media", "array", "password", "telephone", "color", "url", "noType", "getValueFromId", "setValueFromId", "hasElements", "getIsValid", "getFilterBy", "getFilter", "getFormat"]
|
|
7
7
|
}
|
|
@@ -23,58 +23,63 @@ __export(get_is_valid_exports, {
|
|
|
23
23
|
default: () => getIsValid
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(get_is_valid_exports);
|
|
26
|
+
function supportsNumericRangeConstraint(type) {
|
|
27
|
+
return type === "integer" || type === "number";
|
|
28
|
+
}
|
|
29
|
+
function supportsDateRangeConstraint(type) {
|
|
30
|
+
return type === "date" || type === "datetime";
|
|
31
|
+
}
|
|
32
|
+
function normalizeRangeRule(value, fieldType, key) {
|
|
33
|
+
const validator = fieldType.validate[key];
|
|
34
|
+
if (validator && (typeof value === "number" && supportsNumericRangeConstraint(fieldType.type) || typeof value === "string" && supportsDateRangeConstraint(fieldType.type))) {
|
|
35
|
+
return { constraint: value, validate: validator };
|
|
36
|
+
}
|
|
37
|
+
return void 0;
|
|
38
|
+
}
|
|
26
39
|
function getIsValid(field, fieldType) {
|
|
40
|
+
const rules = field.isValid;
|
|
27
41
|
let required;
|
|
28
|
-
if (
|
|
42
|
+
if (rules?.required === true && fieldType.validate.required !== void 0) {
|
|
29
43
|
required = {
|
|
30
44
|
constraint: true,
|
|
31
45
|
validate: fieldType.validate.required
|
|
32
46
|
};
|
|
33
47
|
}
|
|
34
48
|
let elements;
|
|
35
|
-
if ((
|
|
36
|
-
|
|
49
|
+
if ((rules?.elements === true || // elements is enabled unless the field opts-out
|
|
50
|
+
rules?.elements === void 0 && (!!field.elements || !!field.getElements)) && fieldType.validate.elements !== void 0) {
|
|
37
51
|
elements = {
|
|
38
52
|
constraint: true,
|
|
39
53
|
validate: fieldType.validate.elements
|
|
40
54
|
};
|
|
41
55
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
constraint: field.isValid.min,
|
|
46
|
-
validate: fieldType.validate.min
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
let max;
|
|
50
|
-
if (typeof field.isValid?.max === "number" && fieldType.validate.max !== void 0) {
|
|
51
|
-
max = {
|
|
52
|
-
constraint: field.isValid.max,
|
|
53
|
-
validate: fieldType.validate.max
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
+
const min = normalizeRangeRule(rules?.min, fieldType, "min");
|
|
57
|
+
const max = normalizeRangeRule(rules?.max, fieldType, "max");
|
|
58
|
+
const minLengthValue = rules?.minLength;
|
|
56
59
|
let minLength;
|
|
57
|
-
if (typeof
|
|
60
|
+
if (typeof minLengthValue === "number" && fieldType.validate.minLength !== void 0) {
|
|
58
61
|
minLength = {
|
|
59
|
-
constraint:
|
|
62
|
+
constraint: minLengthValue,
|
|
60
63
|
validate: fieldType.validate.minLength
|
|
61
64
|
};
|
|
62
65
|
}
|
|
66
|
+
const maxLengthValue = rules?.maxLength;
|
|
63
67
|
let maxLength;
|
|
64
|
-
if (typeof
|
|
68
|
+
if (typeof maxLengthValue === "number" && fieldType.validate.maxLength !== void 0) {
|
|
65
69
|
maxLength = {
|
|
66
|
-
constraint:
|
|
70
|
+
constraint: maxLengthValue,
|
|
67
71
|
validate: fieldType.validate.maxLength
|
|
68
72
|
};
|
|
69
73
|
}
|
|
74
|
+
const patternValue = rules?.pattern;
|
|
70
75
|
let pattern;
|
|
71
|
-
if (
|
|
76
|
+
if (patternValue !== void 0 && fieldType.validate.pattern !== void 0) {
|
|
72
77
|
pattern = {
|
|
73
|
-
constraint:
|
|
78
|
+
constraint: patternValue,
|
|
74
79
|
validate: fieldType.validate.pattern
|
|
75
80
|
};
|
|
76
81
|
}
|
|
77
|
-
const custom =
|
|
82
|
+
const custom = rules?.custom ?? fieldType.validate.custom;
|
|
78
83
|
return {
|
|
79
84
|
required,
|
|
80
85
|
elements,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/field-types/utils/get-is-valid.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport type { Field, NormalizedRules } from '../../types';\nimport type { FieldType } from '../../types/private';\n\nexport default function getIsValid< Item >(\n\tfield: Field< Item >,\n\tfieldType: FieldType< Item >\n): NormalizedRules< Item > {\n\tlet required;\n\tif (\n\t\
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport type { Field, NormalizedRules } from '../../types';\nimport type { FieldType } from '../../types/private';\n\nfunction supportsNumericRangeConstraint( type?: string ) {\n\treturn type === 'integer' || type === 'number';\n}\n\nfunction supportsDateRangeConstraint( type?: string ) {\n\treturn type === 'date' || type === 'datetime';\n}\n\nfunction normalizeRangeRule< Item >(\n\tvalue: number | string | undefined,\n\tfieldType: FieldType< Item >,\n\tkey: 'min' | 'max'\n): NormalizedRules< Item >[ 'min' ] {\n\tconst validator = fieldType.validate[ key ];\n\tif (\n\t\tvalidator &&\n\t\t( ( typeof value === 'number' &&\n\t\t\tsupportsNumericRangeConstraint( fieldType.type ) ) ||\n\t\t\t( typeof value === 'string' &&\n\t\t\t\tsupportsDateRangeConstraint( fieldType.type ) ) )\n\t) {\n\t\treturn { constraint: value, validate: validator } as NonNullable<\n\t\t\tNormalizedRules< Item >[ typeof key ]\n\t\t>;\n\t}\n\treturn undefined;\n}\n\nexport default function getIsValid< Item >(\n\tfield: Field< Item >,\n\tfieldType: FieldType< Item >\n): NormalizedRules< Item > {\n\tconst rules = field.isValid;\n\tlet required;\n\tif (\n\t\trules?.required === true &&\n\t\tfieldType.validate.required !== undefined\n\t) {\n\t\trequired = {\n\t\t\tconstraint: true,\n\t\t\tvalidate: fieldType.validate.required,\n\t\t};\n\t}\n\n\tlet elements;\n\tif (\n\t\t( rules?.elements === true ||\n\t\t\t// elements is enabled unless the field opts-out\n\t\t\t( rules?.elements === undefined &&\n\t\t\t\t( !! field.elements || !! field.getElements ) ) ) &&\n\t\tfieldType.validate.elements !== undefined\n\t) {\n\t\telements = {\n\t\t\tconstraint: true,\n\t\t\tvalidate: fieldType.validate.elements,\n\t\t};\n\t}\n\n\tconst min = normalizeRangeRule( rules?.min, fieldType, 'min' );\n\tconst max = normalizeRangeRule( rules?.max, fieldType, 'max' );\n\n\tconst minLengthValue = rules?.minLength;\n\tlet minLength;\n\tif (\n\t\ttypeof minLengthValue === 'number' &&\n\t\tfieldType.validate.minLength !== undefined\n\t) {\n\t\tminLength = {\n\t\t\tconstraint: minLengthValue,\n\t\t\tvalidate: fieldType.validate.minLength,\n\t\t};\n\t}\n\n\tconst maxLengthValue = rules?.maxLength;\n\tlet maxLength;\n\tif (\n\t\ttypeof maxLengthValue === 'number' &&\n\t\tfieldType.validate.maxLength !== undefined\n\t) {\n\t\tmaxLength = {\n\t\t\tconstraint: maxLengthValue,\n\t\t\tvalidate: fieldType.validate.maxLength,\n\t\t};\n\t}\n\n\tconst patternValue = rules?.pattern;\n\tlet pattern;\n\tif (\n\t\tpatternValue !== undefined &&\n\t\tfieldType.validate.pattern !== undefined\n\t) {\n\t\tpattern = {\n\t\t\tconstraint: patternValue,\n\t\t\tvalidate: fieldType.validate.pattern,\n\t\t};\n\t}\n\n\tconst custom = rules?.custom ?? fieldType.validate.custom;\n\n\treturn {\n\t\trequired,\n\t\telements,\n\t\tmin,\n\t\tmax,\n\t\tminLength,\n\t\tmaxLength,\n\t\tpattern,\n\t\tcustom,\n\t};\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,+BAAgC,MAAgB;AACxD,SAAO,SAAS,aAAa,SAAS;AACvC;AAEA,SAAS,4BAA6B,MAAgB;AACrD,SAAO,SAAS,UAAU,SAAS;AACpC;AAEA,SAAS,mBACR,OACA,WACA,KACmC;AACnC,QAAM,YAAY,UAAU,SAAU,GAAI;AAC1C,MACC,cACI,OAAO,UAAU,YACpB,+BAAgC,UAAU,IAAK,KAC7C,OAAO,UAAU,YAClB,4BAA6B,UAAU,IAAK,IAC7C;AACD,WAAO,EAAE,YAAY,OAAO,UAAU,UAAU;AAAA,EAGjD;AACA,SAAO;AACR;AAEe,SAAR,WACN,OACA,WAC0B;AAC1B,QAAM,QAAQ,MAAM;AACpB,MAAI;AACJ,MACC,OAAO,aAAa,QACpB,UAAU,SAAS,aAAa,QAC/B;AACD,eAAW;AAAA,MACV,YAAY;AAAA,MACZ,UAAU,UAAU,SAAS;AAAA,IAC9B;AAAA,EACD;AAEA,MAAI;AACJ,OACG,OAAO,aAAa;AAAA,EAEnB,OAAO,aAAa,WACnB,CAAC,CAAE,MAAM,YAAY,CAAC,CAAE,MAAM,iBAClC,UAAU,SAAS,aAAa,QAC/B;AACD,eAAW;AAAA,MACV,YAAY;AAAA,MACZ,UAAU,UAAU,SAAS;AAAA,IAC9B;AAAA,EACD;AAEA,QAAM,MAAM,mBAAoB,OAAO,KAAK,WAAW,KAAM;AAC7D,QAAM,MAAM,mBAAoB,OAAO,KAAK,WAAW,KAAM;AAE7D,QAAM,iBAAiB,OAAO;AAC9B,MAAI;AACJ,MACC,OAAO,mBAAmB,YAC1B,UAAU,SAAS,cAAc,QAChC;AACD,gBAAY;AAAA,MACX,YAAY;AAAA,MACZ,UAAU,UAAU,SAAS;AAAA,IAC9B;AAAA,EACD;AAEA,QAAM,iBAAiB,OAAO;AAC9B,MAAI;AACJ,MACC,OAAO,mBAAmB,YAC1B,UAAU,SAAS,cAAc,QAChC;AACD,gBAAY;AAAA,MACX,YAAY;AAAA,MACZ,UAAU,UAAU,SAAS;AAAA,IAC9B;AAAA,EACD;AAEA,QAAM,eAAe,OAAO;AAC5B,MAAI;AACJ,MACC,iBAAiB,UACjB,UAAU,SAAS,YAAY,QAC9B;AACD,cAAU;AAAA,MACT,YAAY;AAAA,MACZ,UAAU,UAAU,SAAS;AAAA,IAC9B;AAAA,EACD;AAEA,QAAM,SAAS,OAAO,UAAU,UAAU,SAAS;AAEnD,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// packages/dataviews/src/field-types/utils/is-valid-date-boundary.ts
|
|
21
|
+
var is_valid_date_boundary_exports = {};
|
|
22
|
+
__export(is_valid_date_boundary_exports, {
|
|
23
|
+
isValidMaxDate: () => isValidMaxDate,
|
|
24
|
+
isValidMinDate: () => isValidMinDate
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(is_valid_date_boundary_exports);
|
|
27
|
+
var import_date_fns = require("date-fns");
|
|
28
|
+
var import_date = require("@wordpress/date");
|
|
29
|
+
function parseDateLike(value) {
|
|
30
|
+
if (!value) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
if (!(0, import_date_fns.isValid)(new Date(value))) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
const parsed = (0, import_date.getDate)(value);
|
|
37
|
+
return parsed && (0, import_date_fns.isValid)(parsed) ? parsed : null;
|
|
38
|
+
}
|
|
39
|
+
function validateDateLikeBoundary(item, field, boundary) {
|
|
40
|
+
const constraint = field.isValid[boundary]?.constraint;
|
|
41
|
+
if (typeof constraint !== "string") {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
const value = field.getValue({ item });
|
|
45
|
+
const boundaryValue = Array.isArray(value) ? value[boundary === "min" ? 0 : value.length - 1] : value;
|
|
46
|
+
if (boundaryValue === void 0 || boundaryValue === null || boundaryValue === "") {
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
const parsedConstraint = parseDateLike(constraint);
|
|
50
|
+
const parsedValue = parseDateLike(String(boundaryValue));
|
|
51
|
+
return !!parsedConstraint && !!parsedValue && (boundary === "min" ? parsedValue.getTime() >= parsedConstraint.getTime() : parsedValue.getTime() <= parsedConstraint.getTime());
|
|
52
|
+
}
|
|
53
|
+
function isValidMinDate(item, field) {
|
|
54
|
+
return validateDateLikeBoundary(item, field, "min");
|
|
55
|
+
}
|
|
56
|
+
function isValidMaxDate(item, field) {
|
|
57
|
+
return validateDateLikeBoundary(item, field, "max");
|
|
58
|
+
}
|
|
59
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
60
|
+
0 && (module.exports = {
|
|
61
|
+
isValidMaxDate,
|
|
62
|
+
isValidMinDate
|
|
63
|
+
});
|
|
64
|
+
//# sourceMappingURL=is-valid-date-boundary.cjs.map
|