@wordpress/dataviews 10.3.1-next.2f1c7c01b.0 → 10.4.1-next.dc3f6d3c1.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 +23 -5
- package/README.md +413 -148
- package/build/components/dataviews-filters/filter.js +11 -1
- package/build/components/dataviews-filters/filter.js.map +2 -2
- package/build/components/dataviews-view-config/index.js +11 -396
- package/build/components/dataviews-view-config/index.js.map +3 -3
- package/build/components/dataviews-view-config/properties-section.js +177 -0
- package/build/components/dataviews-view-config/properties-section.js.map +7 -0
- package/build/constants.js +3 -0
- package/build/constants.js.map +2 -2
- package/build/dataform-controls/date.js +23 -7
- package/build/dataform-controls/date.js.map +2 -2
- package/build/dataform-controls/email.js +1 -1
- package/build/dataform-controls/email.js.map +1 -1
- package/build/dataform-layouts/details/index.js +78 -0
- package/build/dataform-layouts/details/index.js.map +7 -0
- package/build/dataform-layouts/index.js +5 -0
- package/build/dataform-layouts/index.js.map +3 -3
- package/build/dataform-layouts/normalize-form.js +5 -0
- package/build/dataform-layouts/normalize-form.js.map +2 -2
- package/build/dataviews-layouts/index.js +9 -0
- package/build/dataviews-layouts/index.js.map +3 -3
- package/build/dataviews-layouts/picker-table/index.js +422 -0
- package/build/dataviews-layouts/picker-table/index.js.map +7 -0
- package/build/dataviews-layouts/table/column-header-menu.js.map +2 -2
- package/build/dataviews-layouts/table/column-primary.js +1 -6
- package/build/dataviews-layouts/table/column-primary.js.map +2 -2
- package/build/dataviews-layouts/table/index.js +47 -2
- package/build/dataviews-layouts/table/index.js.map +2 -2
- package/build/field-types/date.js +4 -2
- package/build/field-types/date.js.map +2 -2
- package/build/types/dataform.js.map +1 -1
- package/build/types/dataviews.js.map +1 -1
- package/build/types/field-api.js.map +1 -1
- package/build/utils/normalize-fields.js +23 -3
- package/build/utils/normalize-fields.js.map +2 -2
- package/build/utils/week-starts-on.js +59 -0
- package/build/utils/week-starts-on.js.map +7 -0
- package/build-module/components/dataviews-filters/filter.js +11 -1
- package/build-module/components/dataviews-filters/filter.js.map +2 -2
- package/build-module/components/dataviews-view-config/index.js +15 -412
- package/build-module/components/dataviews-view-config/index.js.map +2 -2
- package/build-module/components/dataviews-view-config/properties-section.js +149 -0
- package/build-module/components/dataviews-view-config/properties-section.js.map +7 -0
- package/build-module/constants.js +2 -0
- package/build-module/constants.js.map +2 -2
- package/build-module/dataform-controls/date.js +23 -7
- package/build-module/dataform-controls/date.js.map +2 -2
- package/build-module/dataform-controls/email.js +2 -2
- package/build-module/dataform-controls/email.js.map +1 -1
- package/build-module/dataform-layouts/details/index.js +47 -0
- package/build-module/dataform-layouts/details/index.js.map +7 -0
- package/build-module/dataform-layouts/index.js +5 -0
- package/build-module/dataform-layouts/index.js.map +2 -2
- package/build-module/dataform-layouts/normalize-form.js +5 -0
- package/build-module/dataform-layouts/normalize-form.js.map +2 -2
- package/build-module/dataviews-layouts/index.js +11 -1
- package/build-module/dataviews-layouts/index.js.map +2 -2
- package/build-module/dataviews-layouts/picker-table/index.js +397 -0
- package/build-module/dataviews-layouts/picker-table/index.js.map +7 -0
- package/build-module/dataviews-layouts/table/column-header-menu.js.map +2 -2
- package/build-module/dataviews-layouts/table/column-primary.js +1 -6
- package/build-module/dataviews-layouts/table/column-primary.js.map +2 -2
- package/build-module/dataviews-layouts/table/index.js +48 -3
- package/build-module/dataviews-layouts/table/index.js.map +2 -2
- package/build-module/field-types/date.js +5 -3
- package/build-module/field-types/date.js.map +2 -2
- package/build-module/utils/normalize-fields.js +23 -3
- package/build-module/utils/normalize-fields.js.map +2 -2
- package/build-module/utils/week-starts-on.js +32 -0
- package/build-module/utils/week-starts-on.js.map +7 -0
- package/build-style/style-rtl.css +58 -54
- package/build-style/style.css +58 -54
- package/build-types/components/dataviews-filters/filter.d.ts.map +1 -1
- package/build-types/components/dataviews-filters/utils.d.ts.map +1 -1
- package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
- package/build-types/components/dataviews-view-config/properties-section.d.ts +4 -0
- package/build-types/components/dataviews-view-config/properties-section.d.ts.map +1 -0
- package/build-types/constants.d.ts +1 -0
- package/build-types/constants.d.ts.map +1 -1
- package/build-types/dataform-controls/date.d.ts.map +1 -1
- package/build-types/dataform-layouts/details/index.d.ts +6 -0
- package/build-types/dataform-layouts/details/index.d.ts.map +1 -0
- package/build-types/dataform-layouts/get-summary-fields.d.ts.map +1 -1
- package/build-types/dataform-layouts/index.d.ts +5 -0
- package/build-types/dataform-layouts/index.d.ts.map +1 -1
- package/build-types/dataform-layouts/normalize-form.d.ts.map +1 -1
- package/build-types/dataviews-layouts/index.d.ts +8 -0
- package/build-types/dataviews-layouts/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/picker-table/index.d.ts +4 -0
- package/build-types/dataviews-layouts/picker-table/index.d.ts.map +1 -0
- package/build-types/dataviews-layouts/table/column-header-menu.d.ts +3 -3
- package/build-types/dataviews-layouts/table/column-header-menu.d.ts.map +1 -1
- package/build-types/dataviews-layouts/table/column-primary.d.ts.map +1 -1
- package/build-types/dataviews-layouts/table/index.d.ts.map +1 -1
- package/build-types/field-types/date.d.ts.map +1 -1
- package/build-types/stories/dataform.story.d.ts +3 -0
- package/build-types/stories/dataform.story.d.ts.map +1 -1
- package/build-types/stories/dataviews-picker.story.d.ts +2 -0
- package/build-types/stories/dataviews-picker.story.d.ts.map +1 -1
- package/build-types/stories/dataviews.story.d.ts +7 -1
- package/build-types/stories/dataviews.story.d.ts.map +1 -1
- package/build-types/stories/field-types.story.d.ts +27 -1
- package/build-types/stories/field-types.story.d.ts.map +1 -1
- package/build-types/types/dataform.d.ts +11 -3
- package/build-types/types/dataform.d.ts.map +1 -1
- package/build-types/types/dataviews.d.ts +23 -2
- package/build-types/types/dataviews.d.ts.map +1 -1
- package/build-types/types/field-api.d.ts +28 -1
- package/build-types/types/field-api.d.ts.map +1 -1
- package/build-types/utils/normalize-fields.d.ts.map +1 -1
- package/build-types/utils/week-starts-on.d.ts +20 -0
- package/build-types/utils/week-starts-on.d.ts.map +1 -0
- package/build-wp/index.js +1497 -1188
- package/package.json +15 -15
- package/src/components/dataviews/style.scss +2 -0
- package/src/components/dataviews-filters/filter.tsx +11 -1
- package/src/components/dataviews-footer/style.scss +1 -1
- package/src/components/dataviews-view-config/index.tsx +8 -504
- package/src/components/dataviews-view-config/properties-section.tsx +201 -0
- package/src/components/dataviews-view-config/style.scss +2 -39
- package/src/constants.ts +1 -0
- package/src/dataform-controls/date.tsx +24 -6
- package/src/dataform-controls/email.tsx +2 -2
- package/src/dataform-layouts/details/index.tsx +71 -0
- package/src/dataform-layouts/details/style.scss +5 -0
- package/src/dataform-layouts/index.tsx +5 -0
- package/src/dataform-layouts/normalize-form.ts +6 -0
- package/src/dataviews-layouts/index.ts +10 -0
- package/src/dataviews-layouts/list/style.scss +1 -0
- package/src/dataviews-layouts/picker-table/index.tsx +487 -0
- package/src/dataviews-layouts/picker-table/style.scss +47 -0
- package/src/dataviews-layouts/table/column-header-menu.tsx +3 -2
- package/src/dataviews-layouts/table/column-primary.tsx +4 -7
- package/src/dataviews-layouts/table/index.tsx +55 -2
- package/src/dataviews-layouts/table/style.scss +36 -19
- package/src/field-types/date.tsx +11 -5
- package/src/stories/dataform.story.tsx +84 -0
- package/src/stories/dataviews-picker.story.tsx +11 -6
- package/src/stories/dataviews.story.tsx +10 -2
- package/src/stories/field-types.story.tsx +67 -2
- package/src/style.scss +2 -0
- package/src/test/normalize-fields.ts +53 -0
- package/src/types/dataform.ts +18 -3
- package/src/types/dataviews.ts +36 -2
- package/src/types/field-api.ts +42 -1
- package/src/utils/normalize-fields.ts +51 -2
- package/src/utils/week-starts-on.ts +46 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
Icon,
|
|
4
4
|
__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper
|
|
5
5
|
} from "@wordpress/components";
|
|
6
|
-
import {
|
|
6
|
+
import { envelope } from "@wordpress/icons";
|
|
7
7
|
import ValidatedText from "./utils/validated-input";
|
|
8
8
|
import { jsx } from "react/jsx-runtime";
|
|
9
9
|
function Email({
|
|
@@ -23,7 +23,7 @@ function Email({
|
|
|
23
23
|
hideLabelFromVision,
|
|
24
24
|
validity,
|
|
25
25
|
type: "email",
|
|
26
|
-
prefix: /* @__PURE__ */ jsx(InputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ jsx(Icon, { icon:
|
|
26
|
+
prefix: /* @__PURE__ */ jsx(InputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ jsx(Icon, { icon: envelope }) })
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/dataform-controls/email.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n} from '@wordpress/components';\nimport {
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n} from '@wordpress/components';\nimport { envelope } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../types';\nimport ValidatedText from './utils/validated-input';\n\nexport default function Email< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\treturn (\n\t\t<ValidatedText\n\t\t\t{ ...{\n\t\t\t\tdata,\n\t\t\t\tfield,\n\t\t\t\tonChange,\n\t\t\t\thideLabelFromVision,\n\t\t\t\tvalidity,\n\t\t\t\ttype: 'email',\n\t\t\t\tprefix: (\n\t\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t\t<Icon icon={ envelope } />\n\t\t\t\t\t</InputControlPrefixWrapper>\n\t\t\t\t),\n\t\t\t} }\n\t\t/>\n\t);\n}\n"],
|
|
5
5
|
"mappings": ";AAGA;AAAA,EACC;AAAA,EACA,2CAA2C;AAAA,OACrC;AACP,SAAS,gBAAgB;AAMzB,OAAO,mBAAmB;AAoBpB;AAlBS,SAAR,MAAgC;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAkC;AACjC,SACC;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN,QACC,oBAAC,6BAA0B,SAAQ,QAClC,8BAAC,QAAK,MAAO,UAAW,GACzB;AAAA,MAEF;AAAA;AAAA,EACD;AAEF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// packages/dataviews/src/dataform-layouts/details/index.tsx
|
|
2
|
+
import { useContext, useMemo } from "@wordpress/element";
|
|
3
|
+
import { __ } from "@wordpress/i18n";
|
|
4
|
+
import DataFormContext from "../../components/dataform-context";
|
|
5
|
+
import { DataFormLayout } from "../data-form-layout";
|
|
6
|
+
import { DEFAULT_LAYOUT } from "../normalize-form";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
function FormDetailsField({
|
|
9
|
+
data,
|
|
10
|
+
field,
|
|
11
|
+
onChange
|
|
12
|
+
}) {
|
|
13
|
+
const { fields } = useContext(DataFormContext);
|
|
14
|
+
const form = useMemo(
|
|
15
|
+
() => ({
|
|
16
|
+
layout: DEFAULT_LAYOUT,
|
|
17
|
+
fields: field.children ?? []
|
|
18
|
+
}),
|
|
19
|
+
[field]
|
|
20
|
+
);
|
|
21
|
+
if (!field.children) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
const summaryFieldId = field.layout.summary ?? "";
|
|
25
|
+
const summaryField = summaryFieldId ? fields.find((fieldDef) => fieldDef.id === summaryFieldId) : void 0;
|
|
26
|
+
let summaryContent;
|
|
27
|
+
if (summaryField && summaryField.render) {
|
|
28
|
+
summaryContent = /* @__PURE__ */ jsx(summaryField.render, { item: data, field: summaryField });
|
|
29
|
+
} else {
|
|
30
|
+
summaryContent = field.label || __("More details");
|
|
31
|
+
}
|
|
32
|
+
return /* @__PURE__ */ jsxs("details", { className: "dataforms-layouts-details__details", children: [
|
|
33
|
+
/* @__PURE__ */ jsx("summary", { className: "dataforms-layouts-details__summary", children: summaryContent }),
|
|
34
|
+
/* @__PURE__ */ jsx("div", { className: "dataforms-layouts-details__content", children: /* @__PURE__ */ jsx(
|
|
35
|
+
DataFormLayout,
|
|
36
|
+
{
|
|
37
|
+
data,
|
|
38
|
+
form,
|
|
39
|
+
onChange
|
|
40
|
+
}
|
|
41
|
+
) })
|
|
42
|
+
] });
|
|
43
|
+
}
|
|
44
|
+
export {
|
|
45
|
+
FormDetailsField as default
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/dataform-layouts/details/index.tsx"],
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useContext, useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tNormalizedForm,\n\tNormalizedDetailsLayout,\n\tFieldLayoutProps,\n} from '../../types';\nimport DataFormContext from '../../components/dataform-context';\nimport { DataFormLayout } from '../data-form-layout';\nimport { DEFAULT_LAYOUT } from '../normalize-form';\n\nexport default function FormDetailsField< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n}: FieldLayoutProps< Item > ) {\n\tconst { fields } = useContext( DataFormContext );\n\n\tconst form: NormalizedForm = useMemo(\n\t\t() => ( {\n\t\t\tlayout: DEFAULT_LAYOUT,\n\t\t\tfields: field.children ?? [],\n\t\t} ),\n\t\t[ field ]\n\t);\n\n\tif ( ! field.children ) {\n\t\treturn null;\n\t}\n\n\t// Find the summary field definition if specified\n\tconst summaryFieldId =\n\t\t( field.layout as NormalizedDetailsLayout ).summary ?? '';\n\tconst summaryField = summaryFieldId\n\t\t? fields.find( ( fieldDef ) => fieldDef.id === summaryFieldId )\n\t\t: undefined;\n\n\t// Render the summary content\n\tlet summaryContent;\n\tif ( summaryField && summaryField.render ) {\n\t\t// Use the field's render function to display the current value\n\t\tsummaryContent = (\n\t\t\t<summaryField.render item={ data } field={ summaryField } />\n\t\t);\n\t} else {\n\t\t// Fall back to the label\n\t\tsummaryContent = field.label || __( 'More details' );\n\t}\n\n\treturn (\n\t\t<details className=\"dataforms-layouts-details__details\">\n\t\t\t<summary className=\"dataforms-layouts-details__summary\">\n\t\t\t\t{ summaryContent }\n\t\t\t</summary>\n\t\t\t<div className=\"dataforms-layouts-details__content\">\n\t\t\t\t<DataFormLayout\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tform={ form }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</details>\n\t);\n}\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,YAAY,eAAe;AACpC,SAAS,UAAU;AAUnB,OAAO,qBAAqB;AAC5B,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB;AAiC5B,cAQD,YARC;AA/BY,SAAR,iBAA2C;AAAA,EACjD;AAAA,EACA;AAAA,EACA;AACD,GAA8B;AAC7B,QAAM,EAAE,OAAO,IAAI,WAAY,eAAgB;AAE/C,QAAM,OAAuB;AAAA,IAC5B,OAAQ;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ,MAAM,YAAY,CAAC;AAAA,IAC5B;AAAA,IACA,CAAE,KAAM;AAAA,EACT;AAEA,MAAK,CAAE,MAAM,UAAW;AACvB,WAAO;AAAA,EACR;AAGA,QAAM,iBACH,MAAM,OAAoC,WAAW;AACxD,QAAM,eAAe,iBAClB,OAAO,KAAM,CAAE,aAAc,SAAS,OAAO,cAAe,IAC5D;AAGH,MAAI;AACJ,MAAK,gBAAgB,aAAa,QAAS;AAE1C,qBACC,oBAAC,aAAa,QAAb,EAAoB,MAAO,MAAO,OAAQ,cAAe;AAAA,EAE5D,OAAO;AAEN,qBAAiB,MAAM,SAAS,GAAI,cAAe;AAAA,EACpD;AAEA,SACC,qBAAC,aAAQ,WAAU,sCAClB;AAAA,wBAAC,aAAQ,WAAU,sCAChB,0BACH;AAAA,IACA,oBAAC,SAAI,WAAU,sCACd;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACD,GACD;AAAA,KACD;AAEF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -7,6 +7,7 @@ import FormRegularField from "./regular";
|
|
|
7
7
|
import FormPanelField from "./panel";
|
|
8
8
|
import FormCardField from "./card";
|
|
9
9
|
import FormRowField from "./row";
|
|
10
|
+
import FormDetailsField from "./details";
|
|
10
11
|
import { jsx } from "react/jsx-runtime";
|
|
11
12
|
var FORM_FIELD_LAYOUTS = [
|
|
12
13
|
{
|
|
@@ -38,6 +39,10 @@ var FORM_FIELD_LAYOUTS = [
|
|
|
38
39
|
children
|
|
39
40
|
}
|
|
40
41
|
) }) })
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
type: "details",
|
|
45
|
+
component: FormDetailsField
|
|
41
46
|
}
|
|
42
47
|
];
|
|
43
48
|
function getFormFieldLayout(type) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/dataform-layouts/index.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedLayout, NormalizedRowLayout } from '../types';\nimport FormRegularField from './regular';\nimport FormPanelField from './panel';\nimport FormCardField from './card';\nimport FormRowField from './row';\n\nconst FORM_FIELD_LAYOUTS = [\n\t{\n\t\ttype: 'regular',\n\t\tcomponent: FormRegularField,\n\t\twrapper: ( { children }: { children: React.ReactNode } ) => (\n\t\t\t<VStack className=\"dataforms-layouts__wrapper\" spacing={ 4 }>\n\t\t\t\t{ children }\n\t\t\t</VStack>\n\t\t),\n\t},\n\t{\n\t\ttype: 'panel',\n\t\tcomponent: FormPanelField,\n\t\twrapper: ( { children }: { children: React.ReactNode } ) => (\n\t\t\t<VStack className=\"dataforms-layouts__wrapper\" spacing={ 2 }>\n\t\t\t\t{ children }\n\t\t\t</VStack>\n\t\t),\n\t},\n\t{\n\t\ttype: 'card',\n\t\tcomponent: FormCardField,\n\t\twrapper: ( { children }: { children: React.ReactNode } ) => (\n\t\t\t<VStack className=\"dataforms-layouts__wrapper\" spacing={ 6 }>\n\t\t\t\t{ children }\n\t\t\t</VStack>\n\t\t),\n\t},\n\t{\n\t\ttype: 'row',\n\t\tcomponent: FormRowField,\n\t\twrapper: ( {\n\t\t\tchildren,\n\t\t\tlayout,\n\t\t}: {\n\t\t\tchildren: React.ReactNode;\n\t\t\tlayout: NormalizedLayout;\n\t\t} ) => (\n\t\t\t<VStack className=\"dataforms-layouts__wrapper\" spacing={ 4 }>\n\t\t\t\t<div className=\"dataforms-layouts-row__field\">\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tspacing={ 4 }\n\t\t\t\t\t\talignment={\n\t\t\t\t\t\t\t( layout as NormalizedRowLayout ).alignment\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</HStack>\n\t\t\t\t</div>\n\t\t\t</VStack>\n\t\t),\n\t},\n];\n\nexport function getFormFieldLayout( type: string ) {\n\treturn FORM_FIELD_LAYOUTS.find( ( layout ) => layout.type === type );\n}\n"],
|
|
5
|
-
"mappings": ";AAGA;AAAA,EACC,wBAAwB;AAAA,EACxB,wBAAwB;AAAA,OAClB;AAMP,OAAO,sBAAsB;AAC7B,OAAO,oBAAoB;AAC3B,OAAO,mBAAmB;AAC1B,OAAO,kBAAkB;
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedLayout, NormalizedRowLayout } from '../types';\nimport FormRegularField from './regular';\nimport FormPanelField from './panel';\nimport FormCardField from './card';\nimport FormRowField from './row';\nimport FormDetailsField from './details';\n\nconst FORM_FIELD_LAYOUTS = [\n\t{\n\t\ttype: 'regular',\n\t\tcomponent: FormRegularField,\n\t\twrapper: ( { children }: { children: React.ReactNode } ) => (\n\t\t\t<VStack className=\"dataforms-layouts__wrapper\" spacing={ 4 }>\n\t\t\t\t{ children }\n\t\t\t</VStack>\n\t\t),\n\t},\n\t{\n\t\ttype: 'panel',\n\t\tcomponent: FormPanelField,\n\t\twrapper: ( { children }: { children: React.ReactNode } ) => (\n\t\t\t<VStack className=\"dataforms-layouts__wrapper\" spacing={ 2 }>\n\t\t\t\t{ children }\n\t\t\t</VStack>\n\t\t),\n\t},\n\t{\n\t\ttype: 'card',\n\t\tcomponent: FormCardField,\n\t\twrapper: ( { children }: { children: React.ReactNode } ) => (\n\t\t\t<VStack className=\"dataforms-layouts__wrapper\" spacing={ 6 }>\n\t\t\t\t{ children }\n\t\t\t</VStack>\n\t\t),\n\t},\n\t{\n\t\ttype: 'row',\n\t\tcomponent: FormRowField,\n\t\twrapper: ( {\n\t\t\tchildren,\n\t\t\tlayout,\n\t\t}: {\n\t\t\tchildren: React.ReactNode;\n\t\t\tlayout: NormalizedLayout;\n\t\t} ) => (\n\t\t\t<VStack className=\"dataforms-layouts__wrapper\" spacing={ 4 }>\n\t\t\t\t<div className=\"dataforms-layouts-row__field\">\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tspacing={ 4 }\n\t\t\t\t\t\talignment={\n\t\t\t\t\t\t\t( layout as NormalizedRowLayout ).alignment\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</HStack>\n\t\t\t\t</div>\n\t\t\t</VStack>\n\t\t),\n\t},\n\t{\n\t\ttype: 'details',\n\t\tcomponent: FormDetailsField,\n\t},\n];\n\nexport function getFormFieldLayout( type: string ) {\n\treturn FORM_FIELD_LAYOUTS.find( ( layout ) => layout.type === type );\n}\n"],
|
|
5
|
+
"mappings": ";AAGA;AAAA,EACC,wBAAwB;AAAA,EACxB,wBAAwB;AAAA,OAClB;AAMP,OAAO,sBAAsB;AAC7B,OAAO,oBAAoB;AAC3B,OAAO,mBAAmB;AAC1B,OAAO,kBAAkB;AACzB,OAAO,sBAAsB;AAO1B;AALH,IAAM,qBAAqB;AAAA,EAC1B;AAAA,IACC,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS,CAAE,EAAE,SAAS,MACrB,oBAAC,UAAO,WAAU,8BAA6B,SAAU,GACtD,UACH;AAAA,EAEF;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS,CAAE,EAAE,SAAS,MACrB,oBAAC,UAAO,WAAU,8BAA6B,SAAU,GACtD,UACH;AAAA,EAEF;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS,CAAE,EAAE,SAAS,MACrB,oBAAC,UAAO,WAAU,8BAA6B,SAAU,GACtD,UACH;AAAA,EAEF;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS,CAAE;AAAA,MACV;AAAA,MACA;AAAA,IACD,MAIC,oBAAC,UAAO,WAAU,8BAA6B,SAAU,GACxD,8BAAC,SAAI,WAAU,gCACd;AAAA,MAAC;AAAA;AAAA,QACA,SAAU;AAAA,QACV,WACG,OAAgC;AAAA,QAGjC;AAAA;AAAA,IACH,GACD,GACD;AAAA,EAEF;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAW;AAAA,EACZ;AACD;AAEO,SAAS,mBAAoB,MAAe;AAClD,SAAO,mBAAmB,KAAM,CAAE,WAAY,OAAO,SAAS,IAAK;AACpE;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -55,6 +55,11 @@ function normalizeLayout(layout) {
|
|
|
55
55
|
alignment: layout?.alignment ?? "center",
|
|
56
56
|
styles: layout?.styles ?? {}
|
|
57
57
|
};
|
|
58
|
+
} else if (layout?.type === "details") {
|
|
59
|
+
normalizedLayout = {
|
|
60
|
+
type: "details",
|
|
61
|
+
summary: layout?.summary ?? ""
|
|
62
|
+
};
|
|
58
63
|
}
|
|
59
64
|
return normalizedLayout;
|
|
60
65
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/dataform-layouts/normalize-form.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport type {\n\tForm,\n\tLayout,\n\tNormalizedForm,\n\tNormalizedFormField,\n\tNormalizedLayout,\n\tNormalizedRegularLayout,\n\tNormalizedPanelLayout,\n\tNormalizedCardLayout,\n\tNormalizedRowLayout,\n\tNormalizedCardSummaryField,\n\tCardSummaryField,\n} from '../types';\n\nexport const DEFAULT_LAYOUT: NormalizedLayout = {\n\ttype: 'regular',\n\tlabelPosition: 'top',\n} as NormalizedRegularLayout;\n\nconst normalizeCardSummaryField = (\n\tsum: CardSummaryField\n): NormalizedCardSummaryField => {\n\tif ( typeof sum === 'string' ) {\n\t\treturn [ { id: sum, visibility: 'when-collapsed' } ];\n\t}\n\treturn sum.map( ( item ) => {\n\t\tif ( typeof item === 'string' ) {\n\t\t\treturn { id: item, visibility: 'when-collapsed' };\n\t\t}\n\t\treturn { id: item.id, visibility: item.visibility };\n\t} );\n};\n\n/**\n * Normalizes a layout configuration based on its type.\n *\n * @param layout The layout object to normalize.\n * @return The normalized layout object.\n */\nfunction normalizeLayout( layout?: Layout ): NormalizedLayout {\n\tlet normalizedLayout = DEFAULT_LAYOUT;\n\n\tif ( layout?.type === 'regular' ) {\n\t\tnormalizedLayout = {\n\t\t\ttype: 'regular',\n\t\t\tlabelPosition: layout?.labelPosition ?? 'top',\n\t\t} satisfies NormalizedRegularLayout;\n\t} else if ( layout?.type === 'panel' ) {\n\t\tconst summary = layout.summary ?? [];\n\t\tconst normalizedSummary = Array.isArray( summary )\n\t\t\t? summary\n\t\t\t: [ summary ];\n\n\t\tnormalizedLayout = {\n\t\t\ttype: 'panel',\n\t\t\tlabelPosition: layout?.labelPosition ?? 'side',\n\t\t\topenAs: layout?.openAs ?? 'dropdown',\n\t\t\tsummary: normalizedSummary,\n\t\t} satisfies NormalizedPanelLayout;\n\t} else if ( layout?.type === 'card' ) {\n\t\tif ( layout.withHeader === false ) {\n\t\t\t// Don't let isOpened be false if withHeader is false.\n\t\t\t// Otherwise, the card will not be visible.\n\t\t\tnormalizedLayout = {\n\t\t\t\ttype: 'card',\n\t\t\t\twithHeader: false,\n\t\t\t\tisOpened: true,\n\t\t\t\tsummary: [],\n\t\t\t\tisCollapsible: false,\n\t\t\t} satisfies NormalizedCardLayout;\n\t\t} else {\n\t\t\tconst summary = layout.summary ?? [];\n\n\t\t\tnormalizedLayout = {\n\t\t\t\ttype: 'card',\n\t\t\t\twithHeader: true,\n\t\t\t\tisOpened:\n\t\t\t\t\ttypeof layout.isOpened === 'boolean'\n\t\t\t\t\t\t? layout.isOpened\n\t\t\t\t\t\t: true,\n\t\t\t\tsummary: normalizeCardSummaryField( summary ),\n\t\t\t\tisCollapsible:\n\t\t\t\t\tlayout.isCollapsible === undefined\n\t\t\t\t\t\t? true\n\t\t\t\t\t\t: layout.isCollapsible,\n\t\t\t} satisfies NormalizedCardLayout;\n\t\t}\n\t} else if ( layout?.type === 'row' ) {\n\t\tnormalizedLayout = {\n\t\t\ttype: 'row',\n\t\t\talignment: layout?.alignment ?? 'center',\n\t\t\tstyles: layout?.styles ?? {},\n\t\t} satisfies NormalizedRowLayout;\n\t}\n\n\treturn normalizedLayout;\n}\n\nfunction normalizeForm( form: Form ): NormalizedForm {\n\tconst normalizedFormLayout = normalizeLayout( form?.layout );\n\n\tconst normalizedFields: NormalizedFormField[] = ( form.fields ?? [] ).map(\n\t\t( field ) => {\n\t\t\tif ( typeof field === 'string' ) {\n\t\t\t\treturn {\n\t\t\t\t\tid: field,\n\t\t\t\t\tlayout: normalizedFormLayout,\n\t\t\t\t} satisfies NormalizedFormField;\n\t\t\t}\n\n\t\t\tconst fieldLayout = field.layout\n\t\t\t\t? normalizeLayout( field.layout )\n\t\t\t\t: normalizedFormLayout;\n\n\t\t\treturn {\n\t\t\t\tid: field.id,\n\t\t\t\tlayout: fieldLayout,\n\t\t\t\t...( !! field.label && { label: field.label } ),\n\t\t\t\t...( !! field.description && {\n\t\t\t\t\tdescription: field.description,\n\t\t\t\t} ),\n\t\t\t\t...( 'children' in field &&\n\t\t\t\t\tArray.isArray( field.children ) && {\n\t\t\t\t\t\tchildren: normalizeForm( {\n\t\t\t\t\t\t\tfields: field.children,\n\t\t\t\t\t\t\tlayout: DEFAULT_LAYOUT,\n\t\t\t\t\t\t} ).fields,\n\t\t\t\t\t} ),\n\t\t\t} satisfies NormalizedFormField;\n\t\t}\n\t);\n\n\treturn {\n\t\tlayout: normalizedFormLayout,\n\t\tfields: normalizedFields,\n\t};\n}\n\nexport default normalizeForm;\n"],
|
|
5
|
-
"mappings": ";
|
|
4
|
+
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport type {\n\tForm,\n\tLayout,\n\tNormalizedForm,\n\tNormalizedFormField,\n\tNormalizedLayout,\n\tNormalizedRegularLayout,\n\tNormalizedPanelLayout,\n\tNormalizedCardLayout,\n\tNormalizedRowLayout,\n\tNormalizedDetailsLayout,\n\tNormalizedCardSummaryField,\n\tCardSummaryField,\n} from '../types';\n\nexport const DEFAULT_LAYOUT: NormalizedLayout = {\n\ttype: 'regular',\n\tlabelPosition: 'top',\n} as NormalizedRegularLayout;\n\nconst normalizeCardSummaryField = (\n\tsum: CardSummaryField\n): NormalizedCardSummaryField => {\n\tif ( typeof sum === 'string' ) {\n\t\treturn [ { id: sum, visibility: 'when-collapsed' } ];\n\t}\n\treturn sum.map( ( item ) => {\n\t\tif ( typeof item === 'string' ) {\n\t\t\treturn { id: item, visibility: 'when-collapsed' };\n\t\t}\n\t\treturn { id: item.id, visibility: item.visibility };\n\t} );\n};\n\n/**\n * Normalizes a layout configuration based on its type.\n *\n * @param layout The layout object to normalize.\n * @return The normalized layout object.\n */\nfunction normalizeLayout( layout?: Layout ): NormalizedLayout {\n\tlet normalizedLayout = DEFAULT_LAYOUT;\n\n\tif ( layout?.type === 'regular' ) {\n\t\tnormalizedLayout = {\n\t\t\ttype: 'regular',\n\t\t\tlabelPosition: layout?.labelPosition ?? 'top',\n\t\t} satisfies NormalizedRegularLayout;\n\t} else if ( layout?.type === 'panel' ) {\n\t\tconst summary = layout.summary ?? [];\n\t\tconst normalizedSummary = Array.isArray( summary )\n\t\t\t? summary\n\t\t\t: [ summary ];\n\n\t\tnormalizedLayout = {\n\t\t\ttype: 'panel',\n\t\t\tlabelPosition: layout?.labelPosition ?? 'side',\n\t\t\topenAs: layout?.openAs ?? 'dropdown',\n\t\t\tsummary: normalizedSummary,\n\t\t} satisfies NormalizedPanelLayout;\n\t} else if ( layout?.type === 'card' ) {\n\t\tif ( layout.withHeader === false ) {\n\t\t\t// Don't let isOpened be false if withHeader is false.\n\t\t\t// Otherwise, the card will not be visible.\n\t\t\tnormalizedLayout = {\n\t\t\t\ttype: 'card',\n\t\t\t\twithHeader: false,\n\t\t\t\tisOpened: true,\n\t\t\t\tsummary: [],\n\t\t\t\tisCollapsible: false,\n\t\t\t} satisfies NormalizedCardLayout;\n\t\t} else {\n\t\t\tconst summary = layout.summary ?? [];\n\n\t\t\tnormalizedLayout = {\n\t\t\t\ttype: 'card',\n\t\t\t\twithHeader: true,\n\t\t\t\tisOpened:\n\t\t\t\t\ttypeof layout.isOpened === 'boolean'\n\t\t\t\t\t\t? layout.isOpened\n\t\t\t\t\t\t: true,\n\t\t\t\tsummary: normalizeCardSummaryField( summary ),\n\t\t\t\tisCollapsible:\n\t\t\t\t\tlayout.isCollapsible === undefined\n\t\t\t\t\t\t? true\n\t\t\t\t\t\t: layout.isCollapsible,\n\t\t\t} satisfies NormalizedCardLayout;\n\t\t}\n\t} else if ( layout?.type === 'row' ) {\n\t\tnormalizedLayout = {\n\t\t\ttype: 'row',\n\t\t\talignment: layout?.alignment ?? 'center',\n\t\t\tstyles: layout?.styles ?? {},\n\t\t} satisfies NormalizedRowLayout;\n\t} else if ( layout?.type === 'details' ) {\n\t\tnormalizedLayout = {\n\t\t\ttype: 'details',\n\t\t\tsummary: layout?.summary ?? '',\n\t\t} satisfies NormalizedDetailsLayout;\n\t}\n\n\treturn normalizedLayout;\n}\n\nfunction normalizeForm( form: Form ): NormalizedForm {\n\tconst normalizedFormLayout = normalizeLayout( form?.layout );\n\n\tconst normalizedFields: NormalizedFormField[] = ( form.fields ?? [] ).map(\n\t\t( field ) => {\n\t\t\tif ( typeof field === 'string' ) {\n\t\t\t\treturn {\n\t\t\t\t\tid: field,\n\t\t\t\t\tlayout: normalizedFormLayout,\n\t\t\t\t} satisfies NormalizedFormField;\n\t\t\t}\n\n\t\t\tconst fieldLayout = field.layout\n\t\t\t\t? normalizeLayout( field.layout )\n\t\t\t\t: normalizedFormLayout;\n\n\t\t\treturn {\n\t\t\t\tid: field.id,\n\t\t\t\tlayout: fieldLayout,\n\t\t\t\t...( !! field.label && { label: field.label } ),\n\t\t\t\t...( !! field.description && {\n\t\t\t\t\tdescription: field.description,\n\t\t\t\t} ),\n\t\t\t\t...( 'children' in field &&\n\t\t\t\t\tArray.isArray( field.children ) && {\n\t\t\t\t\t\tchildren: normalizeForm( {\n\t\t\t\t\t\t\tfields: field.children,\n\t\t\t\t\t\t\tlayout: DEFAULT_LAYOUT,\n\t\t\t\t\t\t} ).fields,\n\t\t\t\t\t} ),\n\t\t\t} satisfies NormalizedFormField;\n\t\t}\n\t);\n\n\treturn {\n\t\tlayout: normalizedFormLayout,\n\t\tfields: normalizedFields,\n\t};\n}\n\nexport default normalizeForm;\n"],
|
|
5
|
+
"mappings": ";AAkBO,IAAM,iBAAmC;AAAA,EAC/C,MAAM;AAAA,EACN,eAAe;AAChB;AAEA,IAAM,4BAA4B,CACjC,QACgC;AAChC,MAAK,OAAO,QAAQ,UAAW;AAC9B,WAAO,CAAE,EAAE,IAAI,KAAK,YAAY,iBAAiB,CAAE;AAAA,EACpD;AACA,SAAO,IAAI,IAAK,CAAE,SAAU;AAC3B,QAAK,OAAO,SAAS,UAAW;AAC/B,aAAO,EAAE,IAAI,MAAM,YAAY,iBAAiB;AAAA,IACjD;AACA,WAAO,EAAE,IAAI,KAAK,IAAI,YAAY,KAAK,WAAW;AAAA,EACnD,CAAE;AACH;AAQA,SAAS,gBAAiB,QAAoC;AAC7D,MAAI,mBAAmB;AAEvB,MAAK,QAAQ,SAAS,WAAY;AACjC,uBAAmB;AAAA,MAClB,MAAM;AAAA,MACN,eAAe,QAAQ,iBAAiB;AAAA,IACzC;AAAA,EACD,WAAY,QAAQ,SAAS,SAAU;AACtC,UAAM,UAAU,OAAO,WAAW,CAAC;AACnC,UAAM,oBAAoB,MAAM,QAAS,OAAQ,IAC9C,UACA,CAAE,OAAQ;AAEb,uBAAmB;AAAA,MAClB,MAAM;AAAA,MACN,eAAe,QAAQ,iBAAiB;AAAA,MACxC,QAAQ,QAAQ,UAAU;AAAA,MAC1B,SAAS;AAAA,IACV;AAAA,EACD,WAAY,QAAQ,SAAS,QAAS;AACrC,QAAK,OAAO,eAAe,OAAQ;AAGlC,yBAAmB;AAAA,QAClB,MAAM;AAAA,QACN,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,SAAS,CAAC;AAAA,QACV,eAAe;AAAA,MAChB;AAAA,IACD,OAAO;AACN,YAAM,UAAU,OAAO,WAAW,CAAC;AAEnC,yBAAmB;AAAA,QAClB,MAAM;AAAA,QACN,YAAY;AAAA,QACZ,UACC,OAAO,OAAO,aAAa,YACxB,OAAO,WACP;AAAA,QACJ,SAAS,0BAA2B,OAAQ;AAAA,QAC5C,eACC,OAAO,kBAAkB,SACtB,OACA,OAAO;AAAA,MACZ;AAAA,IACD;AAAA,EACD,WAAY,QAAQ,SAAS,OAAQ;AACpC,uBAAmB;AAAA,MAClB,MAAM;AAAA,MACN,WAAW,QAAQ,aAAa;AAAA,MAChC,QAAQ,QAAQ,UAAU,CAAC;AAAA,IAC5B;AAAA,EACD,WAAY,QAAQ,SAAS,WAAY;AACxC,uBAAmB;AAAA,MAClB,MAAM;AAAA,MACN,SAAS,QAAQ,WAAW;AAAA,IAC7B;AAAA,EACD;AAEA,SAAO;AACR;AAEA,SAAS,cAAe,MAA6B;AACpD,QAAM,uBAAuB,gBAAiB,MAAM,MAAO;AAE3D,QAAM,oBAA4C,KAAK,UAAU,CAAC,GAAI;AAAA,IACrE,CAAE,UAAW;AACZ,UAAK,OAAO,UAAU,UAAW;AAChC,eAAO;AAAA,UACN,IAAI;AAAA,UACJ,QAAQ;AAAA,QACT;AAAA,MACD;AAEA,YAAM,cAAc,MAAM,SACvB,gBAAiB,MAAM,MAAO,IAC9B;AAEH,aAAO;AAAA,QACN,IAAI,MAAM;AAAA,QACV,QAAQ;AAAA,QACR,GAAK,CAAC,CAAE,MAAM,SAAS,EAAE,OAAO,MAAM,MAAM;AAAA,QAC5C,GAAK,CAAC,CAAE,MAAM,eAAe;AAAA,UAC5B,aAAa,MAAM;AAAA,QACpB;AAAA,QACA,GAAK,cAAc,SAClB,MAAM,QAAS,MAAM,QAAS,KAAK;AAAA,UAClC,UAAU,cAAe;AAAA,YACxB,QAAQ,MAAM;AAAA,YACd,QAAQ;AAAA,UACT,CAAE,EAAE;AAAA,QACL;AAAA,MACF;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,EACT;AACD;AAEA,IAAO,yBAAQ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -10,11 +10,13 @@ import ViewTable from "./table";
|
|
|
10
10
|
import ViewGrid from "./grid";
|
|
11
11
|
import ViewList from "./list";
|
|
12
12
|
import ViewPickerGrid from "./picker-grid";
|
|
13
|
+
import ViewPickerTable from "./picker-table";
|
|
13
14
|
import {
|
|
14
15
|
LAYOUT_GRID,
|
|
15
16
|
LAYOUT_LIST,
|
|
16
17
|
LAYOUT_TABLE,
|
|
17
|
-
LAYOUT_PICKER_GRID
|
|
18
|
+
LAYOUT_PICKER_GRID,
|
|
19
|
+
LAYOUT_PICKER_TABLE
|
|
18
20
|
} from "../constants";
|
|
19
21
|
import PreviewSizePicker from "./utils/preview-size-picker";
|
|
20
22
|
import DensityPicker from "./table/density-picker";
|
|
@@ -46,6 +48,14 @@ var VIEW_LAYOUTS = [
|
|
|
46
48
|
icon: category,
|
|
47
49
|
viewConfigOptions: PreviewSizePicker,
|
|
48
50
|
isPicker: true
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
type: LAYOUT_PICKER_TABLE,
|
|
54
|
+
label: __("Table"),
|
|
55
|
+
component: ViewPickerTable,
|
|
56
|
+
icon: blockTable,
|
|
57
|
+
viewConfigOptions: DensityPicker,
|
|
58
|
+
isPicker: true
|
|
49
59
|
}
|
|
50
60
|
];
|
|
51
61
|
export {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/dataviews-layouts/index.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport {\n\tblockTable,\n\tcategory,\n\tformatListBullets,\n\tformatListBulletsRTL,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ViewTable from './table';\nimport ViewGrid from './grid';\nimport ViewList from './list';\nimport ViewPickerGrid from './picker-grid';\nimport {\n\tLAYOUT_GRID,\n\tLAYOUT_LIST,\n\tLAYOUT_TABLE,\n\tLAYOUT_PICKER_GRID,\n} from '../constants';\nimport PreviewSizePicker from './utils/preview-size-picker';\nimport DensityPicker from './table/density-picker';\n\nexport const VIEW_LAYOUTS = [\n\t{\n\t\ttype: LAYOUT_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewTable,\n\t\ticon: blockTable,\n\t\tviewConfigOptions: DensityPicker,\n\t},\n\t{\n\t\ttype: LAYOUT_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewGrid,\n\t\ticon: category,\n\t\tviewConfigOptions: PreviewSizePicker,\n\t},\n\t{\n\t\ttype: LAYOUT_LIST,\n\t\tlabel: __( 'List' ),\n\t\tcomponent: ViewList,\n\t\ticon: isRTL() ? formatListBulletsRTL : formatListBullets,\n\t},\n\t{\n\t\ttype: LAYOUT_PICKER_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewPickerGrid,\n\t\ticon: category,\n\t\tviewConfigOptions: PreviewSizePicker,\n\t\tisPicker: true,\n\t},\n];\n"],
|
|
5
|
-
"mappings": ";AAGA,SAAS,IAAI,aAAa;AAC1B;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAKP,OAAO,eAAe;AACtB,OAAO,cAAc;AACrB,OAAO,cAAc;AACrB,OAAO,oBAAoB;AAC3B;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,OAAO,uBAAuB;AAC9B,OAAO,mBAAmB;AAEnB,IAAM,eAAe;AAAA,EAC3B;AAAA,IACC,MAAM;AAAA,IACN,OAAO,GAAI,OAAQ;AAAA,IACnB,WAAW;AAAA,IACX,MAAM;AAAA,IACN,mBAAmB;AAAA,EACpB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,OAAO,GAAI,MAAO;AAAA,IAClB,WAAW;AAAA,IACX,MAAM;AAAA,IACN,mBAAmB;AAAA,EACpB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,OAAO,GAAI,MAAO;AAAA,IAClB,WAAW;AAAA,IACX,MAAM,MAAM,IAAI,uBAAuB;AAAA,EACxC;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,OAAO,GAAI,MAAO;AAAA,IAClB,WAAW;AAAA,IACX,MAAM;AAAA,IACN,mBAAmB;AAAA,IACnB,UAAU;AAAA,EACX;AACD;",
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport {\n\tblockTable,\n\tcategory,\n\tformatListBullets,\n\tformatListBulletsRTL,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ViewTable from './table';\nimport ViewGrid from './grid';\nimport ViewList from './list';\nimport ViewPickerGrid from './picker-grid';\nimport ViewPickerTable from './picker-table';\nimport {\n\tLAYOUT_GRID,\n\tLAYOUT_LIST,\n\tLAYOUT_TABLE,\n\tLAYOUT_PICKER_GRID,\n\tLAYOUT_PICKER_TABLE,\n} from '../constants';\nimport PreviewSizePicker from './utils/preview-size-picker';\nimport DensityPicker from './table/density-picker';\n\nexport const VIEW_LAYOUTS = [\n\t{\n\t\ttype: LAYOUT_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewTable,\n\t\ticon: blockTable,\n\t\tviewConfigOptions: DensityPicker,\n\t},\n\t{\n\t\ttype: LAYOUT_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewGrid,\n\t\ticon: category,\n\t\tviewConfigOptions: PreviewSizePicker,\n\t},\n\t{\n\t\ttype: LAYOUT_LIST,\n\t\tlabel: __( 'List' ),\n\t\tcomponent: ViewList,\n\t\ticon: isRTL() ? formatListBulletsRTL : formatListBullets,\n\t},\n\t{\n\t\ttype: LAYOUT_PICKER_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewPickerGrid,\n\t\ticon: category,\n\t\tviewConfigOptions: PreviewSizePicker,\n\t\tisPicker: true,\n\t},\n\t{\n\t\ttype: LAYOUT_PICKER_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewPickerTable,\n\t\ticon: blockTable,\n\t\tviewConfigOptions: DensityPicker,\n\t\tisPicker: true,\n\t},\n];\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,IAAI,aAAa;AAC1B;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAKP,OAAO,eAAe;AACtB,OAAO,cAAc;AACrB,OAAO,cAAc;AACrB,OAAO,oBAAoB;AAC3B,OAAO,qBAAqB;AAC5B;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,OAAO,uBAAuB;AAC9B,OAAO,mBAAmB;AAEnB,IAAM,eAAe;AAAA,EAC3B;AAAA,IACC,MAAM;AAAA,IACN,OAAO,GAAI,OAAQ;AAAA,IACnB,WAAW;AAAA,IACX,MAAM;AAAA,IACN,mBAAmB;AAAA,EACpB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,OAAO,GAAI,MAAO;AAAA,IAClB,WAAW;AAAA,IACX,MAAM;AAAA,IACN,mBAAmB;AAAA,EACpB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,OAAO,GAAI,MAAO;AAAA,IAClB,WAAW;AAAA,IACX,MAAM,MAAM,IAAI,uBAAuB;AAAA,EACxC;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,OAAO,GAAI,MAAO;AAAA,IAClB,WAAW;AAAA,IACX,MAAM;AAAA,IACN,mBAAmB;AAAA,IACnB,UAAU;AAAA,EACX;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,OAAO,GAAI,OAAQ;AAAA,IACnB,WAAW;AAAA,IACX,MAAM;AAAA,IACN,mBAAmB;AAAA,IACnB,UAAU;AAAA,EACX;AACD;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
// packages/dataviews/src/dataviews-layouts/picker-table/index.tsx
|
|
2
|
+
import clsx from "clsx";
|
|
3
|
+
import { __, sprintf } from "@wordpress/i18n";
|
|
4
|
+
import { Spinner, Composite } from "@wordpress/components";
|
|
5
|
+
import {
|
|
6
|
+
useContext,
|
|
7
|
+
useEffect,
|
|
8
|
+
useId,
|
|
9
|
+
useRef,
|
|
10
|
+
useState
|
|
11
|
+
} from "@wordpress/element";
|
|
12
|
+
import DataViewsContext from "../../components/dataviews-context";
|
|
13
|
+
import DataViewsSelectionCheckbox from "../../components/dataviews-selection-checkbox";
|
|
14
|
+
import { useIsMultiselectPicker } from "../../components/dataviews-picker/footer";
|
|
15
|
+
import { BulkSelectionCheckbox } from "../../components/dataviews-bulk-actions";
|
|
16
|
+
import { sortValues } from "../../constants";
|
|
17
|
+
import ColumnHeaderMenu from "../table/column-header-menu";
|
|
18
|
+
import ColumnPrimary from "../table/column-primary";
|
|
19
|
+
import getDataByGroup from "../utils/get-data-by-group";
|
|
20
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
21
|
+
function TableColumnField({
|
|
22
|
+
item,
|
|
23
|
+
fields,
|
|
24
|
+
column,
|
|
25
|
+
align
|
|
26
|
+
}) {
|
|
27
|
+
const field = fields.find((f) => f.id === column);
|
|
28
|
+
if (!field) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
const className = clsx("dataviews-view-table__cell-content-wrapper", {
|
|
32
|
+
"dataviews-view-table__cell-align-end": align === "end",
|
|
33
|
+
"dataviews-view-table__cell-align-center": align === "center"
|
|
34
|
+
});
|
|
35
|
+
return /* @__PURE__ */ jsx("div", { className, children: /* @__PURE__ */ jsx(field.render, { item, field }) });
|
|
36
|
+
}
|
|
37
|
+
function TableRow({
|
|
38
|
+
item,
|
|
39
|
+
fields,
|
|
40
|
+
id,
|
|
41
|
+
view,
|
|
42
|
+
titleField,
|
|
43
|
+
mediaField,
|
|
44
|
+
descriptionField,
|
|
45
|
+
selection,
|
|
46
|
+
getItemId,
|
|
47
|
+
onChangeSelection,
|
|
48
|
+
multiselect,
|
|
49
|
+
posinset
|
|
50
|
+
}) {
|
|
51
|
+
const { paginationInfo } = useContext(DataViewsContext);
|
|
52
|
+
const isSelected = selection.includes(id);
|
|
53
|
+
const [isHovered, setIsHovered] = useState(false);
|
|
54
|
+
const {
|
|
55
|
+
showTitle = true,
|
|
56
|
+
showMedia = true,
|
|
57
|
+
showDescription = true,
|
|
58
|
+
infiniteScrollEnabled
|
|
59
|
+
} = view;
|
|
60
|
+
const handleMouseEnter = () => {
|
|
61
|
+
setIsHovered(true);
|
|
62
|
+
};
|
|
63
|
+
const handleMouseLeave = () => {
|
|
64
|
+
setIsHovered(false);
|
|
65
|
+
};
|
|
66
|
+
const columns = view.fields ?? [];
|
|
67
|
+
const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField && showDescription;
|
|
68
|
+
return /* @__PURE__ */ jsxs(
|
|
69
|
+
Composite.Item,
|
|
70
|
+
{
|
|
71
|
+
render: ({ children, ...props }) => /* @__PURE__ */ jsx(
|
|
72
|
+
"tr",
|
|
73
|
+
{
|
|
74
|
+
className: clsx("dataviews-view-table__row", {
|
|
75
|
+
"is-selected": isSelected,
|
|
76
|
+
"is-hovered": isHovered
|
|
77
|
+
}),
|
|
78
|
+
onMouseEnter: handleMouseEnter,
|
|
79
|
+
onMouseLeave: handleMouseLeave,
|
|
80
|
+
children,
|
|
81
|
+
...props
|
|
82
|
+
}
|
|
83
|
+
),
|
|
84
|
+
"aria-selected": isSelected,
|
|
85
|
+
"aria-setsize": paginationInfo.totalItems || void 0,
|
|
86
|
+
"aria-posinset": posinset,
|
|
87
|
+
role: infiniteScrollEnabled ? "article" : "option",
|
|
88
|
+
onClick: () => {
|
|
89
|
+
if (isSelected) {
|
|
90
|
+
onChangeSelection(
|
|
91
|
+
selection.filter((itemId) => id !== itemId)
|
|
92
|
+
);
|
|
93
|
+
} else {
|
|
94
|
+
const newSelection = multiselect ? [...selection, id] : [id];
|
|
95
|
+
onChangeSelection(newSelection);
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
children: [
|
|
99
|
+
/* @__PURE__ */ jsx(
|
|
100
|
+
"td",
|
|
101
|
+
{
|
|
102
|
+
className: "dataviews-view-table__checkbox-column",
|
|
103
|
+
role: "presentation",
|
|
104
|
+
children: /* @__PURE__ */ jsx("div", { className: "dataviews-view-table__cell-content-wrapper", children: /* @__PURE__ */ jsx(
|
|
105
|
+
DataViewsSelectionCheckbox,
|
|
106
|
+
{
|
|
107
|
+
item,
|
|
108
|
+
selection,
|
|
109
|
+
onChangeSelection,
|
|
110
|
+
getItemId,
|
|
111
|
+
titleField,
|
|
112
|
+
disabled: false,
|
|
113
|
+
"aria-hidden": true,
|
|
114
|
+
tabIndex: -1
|
|
115
|
+
}
|
|
116
|
+
) })
|
|
117
|
+
}
|
|
118
|
+
),
|
|
119
|
+
hasPrimaryColumn && /* @__PURE__ */ jsx("td", { role: "presentation", children: /* @__PURE__ */ jsx(
|
|
120
|
+
ColumnPrimary,
|
|
121
|
+
{
|
|
122
|
+
item,
|
|
123
|
+
titleField: showTitle ? titleField : void 0,
|
|
124
|
+
mediaField: showMedia ? mediaField : void 0,
|
|
125
|
+
descriptionField: showDescription ? descriptionField : void 0,
|
|
126
|
+
isItemClickable: () => false
|
|
127
|
+
}
|
|
128
|
+
) }),
|
|
129
|
+
columns.map((column) => {
|
|
130
|
+
const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {};
|
|
131
|
+
return /* @__PURE__ */ jsx(
|
|
132
|
+
"td",
|
|
133
|
+
{
|
|
134
|
+
style: {
|
|
135
|
+
width,
|
|
136
|
+
maxWidth,
|
|
137
|
+
minWidth
|
|
138
|
+
},
|
|
139
|
+
role: "presentation",
|
|
140
|
+
children: /* @__PURE__ */ jsx(
|
|
141
|
+
TableColumnField,
|
|
142
|
+
{
|
|
143
|
+
fields,
|
|
144
|
+
item,
|
|
145
|
+
column,
|
|
146
|
+
align
|
|
147
|
+
}
|
|
148
|
+
)
|
|
149
|
+
},
|
|
150
|
+
column
|
|
151
|
+
);
|
|
152
|
+
})
|
|
153
|
+
]
|
|
154
|
+
},
|
|
155
|
+
id
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
function ViewPickerTable({
|
|
159
|
+
actions,
|
|
160
|
+
data,
|
|
161
|
+
fields,
|
|
162
|
+
getItemId,
|
|
163
|
+
isLoading = false,
|
|
164
|
+
onChangeView,
|
|
165
|
+
onChangeSelection,
|
|
166
|
+
selection,
|
|
167
|
+
setOpenedFilter,
|
|
168
|
+
view,
|
|
169
|
+
className,
|
|
170
|
+
empty
|
|
171
|
+
}) {
|
|
172
|
+
const headerMenuRefs = useRef(/* @__PURE__ */ new Map());
|
|
173
|
+
const headerMenuToFocusRef = useRef();
|
|
174
|
+
const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = useState();
|
|
175
|
+
const isMultiselect = useIsMultiselectPicker(actions) ?? false;
|
|
176
|
+
useEffect(() => {
|
|
177
|
+
if (headerMenuToFocusRef.current) {
|
|
178
|
+
headerMenuToFocusRef.current.focus();
|
|
179
|
+
headerMenuToFocusRef.current = void 0;
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
const tableNoticeId = useId();
|
|
183
|
+
if (nextHeaderMenuToFocus) {
|
|
184
|
+
headerMenuToFocusRef.current = nextHeaderMenuToFocus;
|
|
185
|
+
setNextHeaderMenuToFocus(void 0);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
const onHide = (field) => {
|
|
189
|
+
const hidden = headerMenuRefs.current.get(field.id);
|
|
190
|
+
const fallback = hidden ? headerMenuRefs.current.get(hidden.fallback) : void 0;
|
|
191
|
+
setNextHeaderMenuToFocus(fallback?.node);
|
|
192
|
+
};
|
|
193
|
+
const hasData = !!data?.length;
|
|
194
|
+
const titleField = fields.find((field) => field.id === view.titleField);
|
|
195
|
+
const mediaField = fields.find((field) => field.id === view.mediaField);
|
|
196
|
+
const descriptionField = fields.find(
|
|
197
|
+
(field) => field.id === view.descriptionField
|
|
198
|
+
);
|
|
199
|
+
const groupField = view.groupByField ? fields.find((f) => f.id === view.groupByField) : null;
|
|
200
|
+
const dataByGroup = groupField ? getDataByGroup(data, groupField) : null;
|
|
201
|
+
const { showTitle = true, showMedia = true, showDescription = true } = view;
|
|
202
|
+
const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField && showDescription;
|
|
203
|
+
const columns = view.fields ?? [];
|
|
204
|
+
const headerMenuRef = (column, index) => (node) => {
|
|
205
|
+
if (node) {
|
|
206
|
+
headerMenuRefs.current.set(column, {
|
|
207
|
+
node,
|
|
208
|
+
fallback: columns[index > 0 ? index - 1 : 1]
|
|
209
|
+
});
|
|
210
|
+
} else {
|
|
211
|
+
headerMenuRefs.current.delete(column);
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup;
|
|
215
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
216
|
+
/* @__PURE__ */ jsxs(
|
|
217
|
+
"table",
|
|
218
|
+
{
|
|
219
|
+
className: clsx(
|
|
220
|
+
"dataviews-view-table",
|
|
221
|
+
"dataviews-view-picker-table",
|
|
222
|
+
className,
|
|
223
|
+
{
|
|
224
|
+
[`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes(
|
|
225
|
+
view.layout.density
|
|
226
|
+
)
|
|
227
|
+
}
|
|
228
|
+
),
|
|
229
|
+
"aria-busy": isLoading,
|
|
230
|
+
"aria-describedby": tableNoticeId,
|
|
231
|
+
role: isInfiniteScroll ? "feed" : "listbox",
|
|
232
|
+
children: [
|
|
233
|
+
/* @__PURE__ */ jsx("thead", { role: "presentation", children: /* @__PURE__ */ jsxs(
|
|
234
|
+
"tr",
|
|
235
|
+
{
|
|
236
|
+
className: "dataviews-view-table__row",
|
|
237
|
+
role: "presentation",
|
|
238
|
+
children: [
|
|
239
|
+
/* @__PURE__ */ jsx("th", { className: "dataviews-view-table__checkbox-column", children: isMultiselect && /* @__PURE__ */ jsx(
|
|
240
|
+
BulkSelectionCheckbox,
|
|
241
|
+
{
|
|
242
|
+
selection,
|
|
243
|
+
onChangeSelection,
|
|
244
|
+
data,
|
|
245
|
+
actions,
|
|
246
|
+
getItemId
|
|
247
|
+
}
|
|
248
|
+
) }),
|
|
249
|
+
hasPrimaryColumn && /* @__PURE__ */ jsx("th", { children: titleField && /* @__PURE__ */ jsx(
|
|
250
|
+
ColumnHeaderMenu,
|
|
251
|
+
{
|
|
252
|
+
ref: headerMenuRef(
|
|
253
|
+
titleField.id,
|
|
254
|
+
0
|
|
255
|
+
),
|
|
256
|
+
fieldId: titleField.id,
|
|
257
|
+
view,
|
|
258
|
+
fields,
|
|
259
|
+
onChangeView,
|
|
260
|
+
onHide,
|
|
261
|
+
setOpenedFilter,
|
|
262
|
+
canMove: false
|
|
263
|
+
}
|
|
264
|
+
) }),
|
|
265
|
+
columns.map((column, index) => {
|
|
266
|
+
const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {};
|
|
267
|
+
return /* @__PURE__ */ jsx(
|
|
268
|
+
"th",
|
|
269
|
+
{
|
|
270
|
+
style: {
|
|
271
|
+
width,
|
|
272
|
+
maxWidth,
|
|
273
|
+
minWidth,
|
|
274
|
+
textAlign: align
|
|
275
|
+
},
|
|
276
|
+
"aria-sort": view.sort?.direction && view.sort?.field === column ? sortValues[view.sort.direction] : void 0,
|
|
277
|
+
scope: "col",
|
|
278
|
+
children: /* @__PURE__ */ jsx(
|
|
279
|
+
ColumnHeaderMenu,
|
|
280
|
+
{
|
|
281
|
+
ref: headerMenuRef(column, index),
|
|
282
|
+
fieldId: column,
|
|
283
|
+
view,
|
|
284
|
+
fields,
|
|
285
|
+
onChangeView,
|
|
286
|
+
onHide,
|
|
287
|
+
setOpenedFilter,
|
|
288
|
+
canMove: view.layout?.enableMoving ?? true
|
|
289
|
+
}
|
|
290
|
+
)
|
|
291
|
+
},
|
|
292
|
+
column
|
|
293
|
+
);
|
|
294
|
+
})
|
|
295
|
+
]
|
|
296
|
+
}
|
|
297
|
+
) }),
|
|
298
|
+
hasData && groupField && dataByGroup ? Array.from(dataByGroup.entries()).map(
|
|
299
|
+
([groupName, groupItems]) => /* @__PURE__ */ jsxs(
|
|
300
|
+
Composite,
|
|
301
|
+
{
|
|
302
|
+
virtualFocus: true,
|
|
303
|
+
orientation: "vertical",
|
|
304
|
+
render: /* @__PURE__ */ jsx("tbody", { role: "group" }),
|
|
305
|
+
children: [
|
|
306
|
+
/* @__PURE__ */ jsx(
|
|
307
|
+
"tr",
|
|
308
|
+
{
|
|
309
|
+
className: "dataviews-view-table__group-header-row",
|
|
310
|
+
role: "presentation",
|
|
311
|
+
children: /* @__PURE__ */ jsx(
|
|
312
|
+
"td",
|
|
313
|
+
{
|
|
314
|
+
colSpan: columns.length + (hasPrimaryColumn ? 1 : 0) + 1,
|
|
315
|
+
className: "dataviews-view-table__group-header-cell",
|
|
316
|
+
role: "presentation",
|
|
317
|
+
children: sprintf(
|
|
318
|
+
// translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022".
|
|
319
|
+
__("%1$s: %2$s"),
|
|
320
|
+
groupField.label,
|
|
321
|
+
groupName
|
|
322
|
+
)
|
|
323
|
+
}
|
|
324
|
+
)
|
|
325
|
+
}
|
|
326
|
+
),
|
|
327
|
+
groupItems.map((item, index) => /* @__PURE__ */ jsx(
|
|
328
|
+
TableRow,
|
|
329
|
+
{
|
|
330
|
+
item,
|
|
331
|
+
fields,
|
|
332
|
+
id: getItemId(item) || index.toString(),
|
|
333
|
+
view,
|
|
334
|
+
titleField,
|
|
335
|
+
mediaField,
|
|
336
|
+
descriptionField,
|
|
337
|
+
selection,
|
|
338
|
+
getItemId,
|
|
339
|
+
onChangeSelection,
|
|
340
|
+
multiselect: isMultiselect
|
|
341
|
+
},
|
|
342
|
+
getItemId(item)
|
|
343
|
+
))
|
|
344
|
+
]
|
|
345
|
+
},
|
|
346
|
+
`group-${groupName}`
|
|
347
|
+
)
|
|
348
|
+
) : /* @__PURE__ */ jsx(
|
|
349
|
+
Composite,
|
|
350
|
+
{
|
|
351
|
+
render: /* @__PURE__ */ jsx("tbody", { role: "presentation" }),
|
|
352
|
+
virtualFocus: true,
|
|
353
|
+
orientation: "vertical",
|
|
354
|
+
children: hasData && data.map((item, index) => /* @__PURE__ */ jsx(
|
|
355
|
+
TableRow,
|
|
356
|
+
{
|
|
357
|
+
item,
|
|
358
|
+
fields,
|
|
359
|
+
id: getItemId(item) || index.toString(),
|
|
360
|
+
view,
|
|
361
|
+
titleField,
|
|
362
|
+
mediaField,
|
|
363
|
+
descriptionField,
|
|
364
|
+
selection,
|
|
365
|
+
getItemId,
|
|
366
|
+
onChangeSelection,
|
|
367
|
+
multiselect: isMultiselect,
|
|
368
|
+
posinset: index + 1
|
|
369
|
+
},
|
|
370
|
+
getItemId(item)
|
|
371
|
+
))
|
|
372
|
+
}
|
|
373
|
+
)
|
|
374
|
+
]
|
|
375
|
+
}
|
|
376
|
+
),
|
|
377
|
+
/* @__PURE__ */ jsxs(
|
|
378
|
+
"div",
|
|
379
|
+
{
|
|
380
|
+
className: clsx({
|
|
381
|
+
"dataviews-loading": isLoading,
|
|
382
|
+
"dataviews-no-results": !hasData && !isLoading
|
|
383
|
+
}),
|
|
384
|
+
id: tableNoticeId,
|
|
385
|
+
children: [
|
|
386
|
+
!hasData && (isLoading ? /* @__PURE__ */ jsx("p", { children: /* @__PURE__ */ jsx(Spinner, {}) }) : empty),
|
|
387
|
+
hasData && isLoading && /* @__PURE__ */ jsx("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ jsx(Spinner, {}) })
|
|
388
|
+
]
|
|
389
|
+
}
|
|
390
|
+
)
|
|
391
|
+
] });
|
|
392
|
+
}
|
|
393
|
+
var picker_table_default = ViewPickerTable;
|
|
394
|
+
export {
|
|
395
|
+
picker_table_default as default
|
|
396
|
+
};
|
|
397
|
+
//# sourceMappingURL=index.js.map
|