@sanity/orderable-document-list 0.0.3 → 0.0.4
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/lib/Document.js +13 -13
- package/lib/Document.js.map +1 -1
- package/lib/DocumentListQuery.js +0 -3
- package/lib/DocumentListQuery.js.map +1 -1
- package/lib/DraggableList.js +2 -2
- package/lib/desk-structure/orderableDocumentListDeskItem.js +11 -1
- package/lib/desk-structure/orderableDocumentListDeskItem.js.map +1 -1
- package/lib/fields/orderRankField.js +2 -2
- package/package.json +1 -1
- package/src/Document.js +18 -18
- package/src/DocumentListQuery.js +0 -2
- package/src/desk-structure/orderableDocumentListDeskItem.js +7 -1
package/lib/Document.js
CHANGED
|
@@ -50,23 +50,13 @@ function Document(_ref) {
|
|
|
50
50
|
}
|
|
51
51
|
}, /*#__PURE__*/_react.default.createElement(_ui.Text, {
|
|
52
52
|
fontSize: 4
|
|
53
|
-
}, /*#__PURE__*/_react.default.createElement(_icons.DragHandleIcon, null))), /*#__PURE__*/_react.default.createElement(_ui.
|
|
54
|
-
style: {
|
|
55
|
-
width: "100%"
|
|
56
|
-
},
|
|
57
|
-
padding: 2,
|
|
58
|
-
mode: "bleed",
|
|
59
|
-
onClick: e => handleSelect(doc._id, index, e.nativeEvent)
|
|
60
|
-
}, /*#__PURE__*/_react.default.createElement(_ui.Flex, {
|
|
61
|
-
flex: 1,
|
|
62
|
-
align: "center"
|
|
63
|
-
}, showIncrements && /*#__PURE__*/_react.default.createElement(_ui.Flex, {
|
|
53
|
+
}, /*#__PURE__*/_react.default.createElement(_icons.DragHandleIcon, null))), showIncrements && /*#__PURE__*/_react.default.createElement(_ui.Flex, {
|
|
64
54
|
style: {
|
|
65
55
|
flexShrink: 0
|
|
66
56
|
},
|
|
67
57
|
align: "center",
|
|
68
58
|
gap: 1,
|
|
69
|
-
paddingRight:
|
|
59
|
+
paddingRight: 1
|
|
70
60
|
}, /*#__PURE__*/_react.default.createElement(_ui.Button, {
|
|
71
61
|
padding: 2,
|
|
72
62
|
mode: "ghost",
|
|
@@ -79,7 +69,17 @@ function Document(_ref) {
|
|
|
79
69
|
disabled: isLast,
|
|
80
70
|
onClick: () => increment(index, index + 1, doc._id, entities),
|
|
81
71
|
icon: _icons.ChevronDownIcon
|
|
82
|
-
})), /*#__PURE__*/_react.default.createElement(_ui.
|
|
72
|
+
})), /*#__PURE__*/_react.default.createElement(_ui.Button, {
|
|
73
|
+
style: {
|
|
74
|
+
width: "100%"
|
|
75
|
+
},
|
|
76
|
+
padding: 2,
|
|
77
|
+
mode: "bleed",
|
|
78
|
+
onClick: e => handleSelect(doc._id, index, e.nativeEvent)
|
|
79
|
+
}, /*#__PURE__*/_react.default.createElement(_ui.Flex, {
|
|
80
|
+
flex: 1,
|
|
81
|
+
align: "center"
|
|
82
|
+
}, /*#__PURE__*/_react.default.createElement(_ui.Box, {
|
|
83
83
|
flex: 1
|
|
84
84
|
}, /*#__PURE__*/_react.default.createElement(_preview.default, {
|
|
85
85
|
value: doc,
|
package/lib/Document.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Document.js"],"names":["Document","doc","increment","entities","handleSelect","index","isFirst","isLast","OrderableContext","showIncrements","flexShrink","
|
|
1
|
+
{"version":3,"sources":["../src/Document.js"],"names":["Document","doc","increment","entities","handleSelect","index","isFirst","isLast","OrderableContext","showIncrements","flexShrink","_id","ChevronUpIcon","ChevronDownIcon","width","e","nativeEvent","schema","get","_type","startsWith","propTypes","PropTypes","shape","string","isRequired","arrayOf","func","number","bool","ChildEditLink","id","children","router","ChildLink","routerPanesState","isOpen","some","pane","replace","Link","linkProps","node"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types'\n// eslint-disable-next-line no-unused-vars\nimport React, {useCallback, useContext, useMemo} from 'react'\nimport {\n DragHandleIcon,\n ChevronUpIcon,\n ChevronDownIcon,\n ChevronRightIcon,\n EditIcon,\n} from '@sanity/icons'\nimport {Text, Flex, Box, Button} from '@sanity/ui'\nimport {usePaneRouter} from '@sanity/desk-tool'\nimport Preview from 'part:@sanity/base/preview'\nimport schema from 'part:@sanity/base/schema'\n\nimport {OrderableContext} from './OrderableContext'\n\nexport default function Document({doc, increment, entities, handleSelect, index, isFirst, isLast}) {\n const {showIncrements} = useContext(OrderableContext)\n\n return (\n <Flex align=\"center\">\n <Box paddingX={3} style={{flexShrink: 0}}>\n <Text fontSize={4}>\n <DragHandleIcon />\n </Text>\n </Box>\n {showIncrements && (\n <Flex style={{flexShrink: 0}} align=\"center\" gap={1} paddingRight={1}>\n <Button\n padding={2}\n mode=\"ghost\"\n onClick={() => increment(index, index + -1, doc._id, entities)}\n disabled={isFirst}\n icon={ChevronUpIcon}\n />\n <Button\n padding={2}\n mode=\"ghost\"\n disabled={isLast}\n onClick={() => increment(index, index + 1, doc._id, entities)}\n icon={ChevronDownIcon}\n />\n </Flex>\n )}\n <Button\n style={{width: `100%`}}\n padding={2}\n mode=\"bleed\"\n onClick={(e) => handleSelect(doc._id, index, e.nativeEvent)}\n >\n <Flex flex={1} align=\"center\">\n <Box flex={1}>\n <Preview value={doc} type={schema.get(doc._type)} />\n </Box>\n </Flex>\n </Button>\n <Box paddingX={3} style={{flexShrink: 0}}>\n <ChildEditLink id={doc._id}>\n <Text fontSize={4}>\n {doc._id.startsWith(`drafts.`) ? <EditIcon /> : <ChevronRightIcon />}\n </Text>\n </ChildEditLink>\n </Box>\n </Flex>\n )\n}\n\nDocument.propTypes = {\n doc: PropTypes.shape({\n _id: PropTypes.string,\n _type: PropTypes.string,\n }).isRequired,\n entities: PropTypes.arrayOf(\n PropTypes.shape({\n _id: PropTypes.string,\n }).isRequired\n ).isRequired,\n handleSelect: PropTypes.func.isRequired,\n increment: PropTypes.func.isRequired,\n index: PropTypes.number.isRequired,\n isFirst: PropTypes.bool.isRequired,\n isLast: PropTypes.bool.isRequired,\n}\n\nconst ChildEditLink = ({id, children}) => {\n const router = usePaneRouter()\n const {ChildLink, routerPanesState} = router\n\n // Is this document currently being edited\n const isOpen = useMemo(\n () => routerPanesState.some((pane) => pane[0]?.id === id.replace(`drafts.`, ``)),\n [id, routerPanesState]\n )\n\n const Link = useCallback(\n (linkProps) => <ChildLink {...linkProps} childId={id.replace(`drafts.`, ``)} />,\n [ChildLink, id]\n )\n\n return (\n <Button\n as={Link}\n mode={isOpen ? `default` : `ghost`}\n tone={isOpen ? `primary` : `transparent`}\n padding={2}\n >\n {children}\n </Button>\n )\n}\n\nChildEditLink.propTypes = {\n id: PropTypes.string.isRequired,\n children: PropTypes.node.isRequired,\n}\n"],"file":"Document.js"}
|
package/lib/DocumentListQuery.js
CHANGED
|
@@ -13,8 +13,6 @@ var _client = _interopRequireDefault(require("part:@sanity/base/client"));
|
|
|
13
13
|
|
|
14
14
|
var _ui = require("@sanity/ui");
|
|
15
15
|
|
|
16
|
-
var _deskTool = require("@sanity/desk-tool");
|
|
17
|
-
|
|
18
16
|
var _DraggableList = _interopRequireDefault(require("./DraggableList"));
|
|
19
17
|
|
|
20
18
|
var _constants = require("./helpers/constants");
|
|
@@ -65,7 +63,6 @@ function DocumentListQuery(_ref) {
|
|
|
65
63
|
data = _useState6[0],
|
|
66
64
|
setData = _useState6[1];
|
|
67
65
|
|
|
68
|
-
var router = (0, _deskTool.usePaneRouter)();
|
|
69
66
|
(0, _react.useEffect)(() => {
|
|
70
67
|
var query = "*[_type == $type]|order(@[$order] asc)";
|
|
71
68
|
var queryParams = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/DocumentListQuery.js"],"names":["client","sanityClient","withConfig","apiVersion","DocumentListQuery","type","isLoading","setIsLoading","isUpdating","setIsUpdating","data","setData","
|
|
1
|
+
{"version":3,"sources":["../src/DocumentListQuery.js"],"names":["client","sanityClient","withConfig","apiVersion","DocumentListQuery","type","isLoading","setIsLoading","isUpdating","setIsUpdating","data","setData","query","queryParams","order","ORDER_FIELD_NAME","subscription","fetchData","fetch","then","documents","filteredDocuments","reduce","acc","cur","_id","startsWith","alsoHasDraft","some","doc","prepareData","listen","subscribe","length","unsubscribe","unorderedDataCount","filter","width","height","overflow","propTypes","PropTypes","string","isRequired"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types'\nimport React, {useEffect, useState, useMemo} from 'react'\nimport sanityClient from 'part:@sanity/base/client'\nimport {Stack, Box, Flex, Spinner} from '@sanity/ui'\n\nimport DraggableList from './DraggableList'\nimport {ORDER_FIELD_NAME} from './helpers/constants'\nimport Feedback from './Feedback'\n\nconst client = sanityClient.withConfig({\n apiVersion: '2021-09-01',\n})\n\nexport default function DocumentListQuery({type}) {\n const [isLoading, setIsLoading] = useState(true)\n const [isUpdating, setIsUpdating] = useState(false)\n const [data, setData] = useState([])\n\n useEffect(() => {\n const query = `*[_type == $type]|order(@[$order] asc)`\n const queryParams = {type, order: ORDER_FIELD_NAME}\n let subscription = null\n\n // eslint-disable-next-line require-await\n const fetchData = async () => {\n client.fetch(query, queryParams).then((documents) => {\n // Remove published document from list if draft also exists\n const filteredDocuments = documents.reduce((acc, cur) => {\n if (!cur._id.startsWith(`drafts.`)) {\n // eslint-disable-next-line max-nested-callbacks\n const alsoHasDraft = documents.some((doc) => doc._id === `drafts.${cur._id}`)\n\n return alsoHasDraft ? acc : [...acc, cur]\n }\n\n return [...acc, cur]\n }, [])\n\n setData(filteredDocuments)\n\n if (isLoading) {\n setIsLoading(false)\n }\n })\n }\n\n const prepareData = async () => {\n setIsLoading(true)\n\n await fetchData()\n\n if (!subscription) {\n subscription = client.listen(query, queryParams).subscribe(() => fetchData())\n }\n }\n\n // Get data but only if a document isn't being patched or we don't yet have data\n if (!isUpdating && !data.length) {\n prepareData()\n }\n\n return () => subscription?.unsubscribe()\n /* eslint-disable-next-line react-hooks/exhaustive-deps */\n }, [type])\n\n const unorderedDataCount = useMemo(\n () => (data.length ? data.filter((doc) => !doc[ORDER_FIELD_NAME]).length : 0),\n [data]\n )\n\n if (isLoading)\n return (\n <Flex style={{width: `100%`, height: `100%`}} align=\"center\" justify=\"center\">\n <Spinner />\n </Flex>\n )\n\n return (\n <Stack space={1} style={{overflow: `scroll`, height: `100%`}}>\n {unorderedDataCount > 0 && (\n <Feedback>\n {unorderedDataCount}/{data.length} Documents have no Order. Select{' '}\n <strong>Reset Order</strong> from the Menu above to fix.\n </Feedback>\n )}\n <Box padding={1}>\n <DraggableList data={data} isUpdating={isUpdating} setIsUpdating={setIsUpdating} />\n </Box>\n </Stack>\n )\n}\n\nDocumentListQuery.propTypes = {\n type: PropTypes.string.isRequired,\n}\n"],"file":"DocumentListQuery.js"}
|
package/lib/DraggableList.js
CHANGED
|
@@ -45,9 +45,9 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
|
|
|
45
45
|
|
|
46
46
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
47
47
|
|
|
48
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
48
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
49
49
|
|
|
50
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
50
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
51
51
|
|
|
52
52
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
53
53
|
|
|
@@ -9,11 +9,15 @@ var _structureBuilder = _interopRequireDefault(require("@sanity/desk-tool/struct
|
|
|
9
9
|
|
|
10
10
|
var _icons = require("@sanity/icons");
|
|
11
11
|
|
|
12
|
+
var _schema = _interopRequireDefault(require("part:@sanity/base/schema"));
|
|
13
|
+
|
|
12
14
|
var _OrderableDocumentList = _interopRequireDefault(require("../OrderableDocumentList"));
|
|
13
15
|
|
|
14
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
17
|
|
|
16
18
|
function orderableDocumentListDeskItem() {
|
|
19
|
+
var _schema$get$title, _schema$get;
|
|
20
|
+
|
|
17
21
|
var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
18
22
|
|
|
19
23
|
if (!(config !== null && config !== void 0 && config.type)) {
|
|
@@ -26,6 +30,7 @@ function orderableDocumentListDeskItem() {
|
|
|
26
30
|
var listTitle = title !== null && title !== void 0 ? title : "Orderable ".concat(type);
|
|
27
31
|
var listId = "orderable-".concat(type);
|
|
28
32
|
var listIcon = icon !== null && icon !== void 0 ? icon : _icons.SortIcon;
|
|
33
|
+
var typeTitle = (_schema$get$title = (_schema$get = _schema.default.get(type)) === null || _schema$get === void 0 ? void 0 : _schema$get.title) !== null && _schema$get$title !== void 0 ? _schema$get$title : type;
|
|
29
34
|
return _structureBuilder.default.listItem(type).title(listTitle).id(listId).icon(listIcon).child( // This appears to be the only way to have a custom component in a list AND have a "compose" button that works
|
|
30
35
|
Object.assign(_structureBuilder.default.documentTypeList(type).serialize(), {
|
|
31
36
|
type: 'component',
|
|
@@ -33,7 +38,12 @@ function orderableDocumentListDeskItem() {
|
|
|
33
38
|
options: {
|
|
34
39
|
type
|
|
35
40
|
},
|
|
36
|
-
menuItems: [
|
|
41
|
+
menuItems: [_structureBuilder.default.menuItem().title("Create new ".concat(typeTitle)).intent({
|
|
42
|
+
type: 'create',
|
|
43
|
+
params: {
|
|
44
|
+
type
|
|
45
|
+
}
|
|
46
|
+
}).serialize(), _structureBuilder.default.menuItem().title("Reset Order").icon(_icons.GenerateIcon).action("resetOrder").serialize(), _structureBuilder.default.menuItem().title("Show Increments").icon(_icons.SortIcon).action("showIncrements").serialize()]
|
|
37
47
|
})).serialize();
|
|
38
48
|
}
|
|
39
49
|
//# sourceMappingURL=orderableDocumentListDeskItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/desk-structure/orderableDocumentListDeskItem.js"],"names":["orderableDocumentListDeskItem","config","type","Error","title","icon","listTitle","listId","listIcon","SortIcon","S","listItem","id","child","Object","assign","documentTypeList","serialize","component","OrderableDocumentList","options","menuItems","menuItem","GenerateIcon","action"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;AAEO,SAASA,6BAAT,GAAoD;AAAA,MAAbC,MAAa,uEAAJ,EAAI;;AACzD,MAAI,EAACA,MAAD,aAACA,MAAD,eAACA,MAAM,CAAEC,IAAT,CAAJ,EAAmB;AACjB,UAAM,IAAIC,KAAJ,2JAAN;AAKD;;AAED,MAAOD,IAAP,GAA4BD,MAA5B,CAAOC,IAAP;AAAA,MAAaE,KAAb,GAA4BH,MAA5B,CAAaG,KAAb;AAAA,MAAoBC,IAApB,GAA4BJ,MAA5B,CAAoBI,IAApB;AAEA,MAAMC,SAAS,GAAGF,KAAH,aAAGA,KAAH,cAAGA,KAAH,uBAAyBF,IAAzB,CAAf;AACA,MAAMK,MAAM,uBAAgBL,IAAhB,CAAZ;AACA,MAAMM,QAAQ,GAAGH,IAAH,aAAGA,IAAH,cAAGA,IAAH,GAAWI,eAAzB;AAEA,
|
|
1
|
+
{"version":3,"sources":["../../src/desk-structure/orderableDocumentListDeskItem.js"],"names":["orderableDocumentListDeskItem","config","type","Error","title","icon","listTitle","listId","listIcon","SortIcon","typeTitle","schema","get","S","listItem","id","child","Object","assign","documentTypeList","serialize","component","OrderableDocumentList","options","menuItems","menuItem","intent","params","GenerateIcon","action"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;;;AAEO,SAASA,6BAAT,GAAoD;AAAA;;AAAA,MAAbC,MAAa,uEAAJ,EAAI;;AACzD,MAAI,EAACA,MAAD,aAACA,MAAD,eAACA,MAAM,CAAEC,IAAT,CAAJ,EAAmB;AACjB,UAAM,IAAIC,KAAJ,2JAAN;AAKD;;AAED,MAAOD,IAAP,GAA4BD,MAA5B,CAAOC,IAAP;AAAA,MAAaE,KAAb,GAA4BH,MAA5B,CAAaG,KAAb;AAAA,MAAoBC,IAApB,GAA4BJ,MAA5B,CAAoBI,IAApB;AAEA,MAAMC,SAAS,GAAGF,KAAH,aAAGA,KAAH,cAAGA,KAAH,uBAAyBF,IAAzB,CAAf;AACA,MAAMK,MAAM,uBAAgBL,IAAhB,CAAZ;AACA,MAAMM,QAAQ,GAAGH,IAAH,aAAGA,IAAH,cAAGA,IAAH,GAAWI,eAAzB;AACA,MAAMC,SAAS,uCAAGC,gBAAOC,GAAP,CAAWV,IAAX,CAAH,gDAAG,YAAkBE,KAArB,iEAA8BF,IAA7C;AAEA,SAAOW,0BAAEC,QAAF,CAAWZ,IAAX,EACJE,KADI,CACEE,SADF,EAEJS,EAFI,CAEDR,MAFC,EAGJF,IAHI,CAGCG,QAHD,EAIJQ,KAJI,EAKH;AACAC,EAAAA,MAAM,CAACC,MAAP,CAAcL,0BAAEM,gBAAF,CAAmBjB,IAAnB,EAAyBkB,SAAzB,EAAd,EAAoD;AAClDlB,IAAAA,IAAI,EAAE,WAD4C;AAElDmB,IAAAA,SAAS,EAAEC,8BAFuC;AAGlDC,IAAAA,OAAO,EAAE;AAACrB,MAAAA;AAAD,KAHyC;AAIlDsB,IAAAA,SAAS,EAAE,CACTX,0BAAEY,QAAF,GACGrB,KADH,sBACuBM,SADvB,GAEGgB,MAFH,CAEU;AAACxB,MAAAA,IAAI,EAAE,QAAP;AAAiByB,MAAAA,MAAM,EAAE;AAACzB,QAAAA;AAAD;AAAzB,KAFV,EAGGkB,SAHH,EADS,EAKTP,0BAAEY,QAAF,GAAarB,KAAb,gBAAkCC,IAAlC,CAAuCuB,mBAAvC,EAAqDC,MAArD,eAA0ET,SAA1E,EALS,EAMTP,0BAAEY,QAAF,GAAarB,KAAb,oBAAsCC,IAAtC,CAA2CI,eAA3C,EAAqDoB,MAArD,mBAA8ET,SAA9E,EANS;AAJuC,GAApD,CANG,EAoBJA,SApBI,EAAP;AAqBD","sourcesContent":["import S from '@sanity/desk-tool/structure-builder'\nimport {SortIcon, GenerateIcon} from '@sanity/icons'\nimport schema from 'part:@sanity/base/schema'\n\nimport OrderableDocumentList from '../OrderableDocumentList'\n\nexport function orderableDocumentListDeskItem(config = {}) {\n if (!config?.type) {\n throw new Error(`\n \"type\" not defined in orderableDocumentListDeskItem parameters.\n \\n\\n\n Example: orderableDocumentListDeskItem({type: 'category'})\n `)\n }\n\n const {type, title, icon} = config\n\n const listTitle = title ?? `Orderable ${type}`\n const listId = `orderable-${type}`\n const listIcon = icon ?? SortIcon\n const typeTitle = schema.get(type)?.title ?? type\n\n return S.listItem(type)\n .title(listTitle)\n .id(listId)\n .icon(listIcon)\n .child(\n // This appears to be the only way to have a custom component in a list AND have a \"compose\" button that works\n Object.assign(S.documentTypeList(type).serialize(), {\n type: 'component',\n component: OrderableDocumentList,\n options: {type},\n menuItems: [\n S.menuItem()\n .title(`Create new ${typeTitle}`)\n .intent({type: 'create', params: {type}})\n .serialize(),\n S.menuItem().title(`Reset Order`).icon(GenerateIcon).action(`resetOrder`).serialize(),\n S.menuItem().title(`Show Increments`).icon(SortIcon).action(`showIncrements`).serialize(),\n ],\n })\n )\n .serialize()\n}\n"],"file":"orderableDocumentListDeskItem.js"}
|
|
@@ -17,9 +17,9 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try
|
|
|
17
17
|
|
|
18
18
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
19
19
|
|
|
20
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
20
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
21
21
|
|
|
22
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
22
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
23
23
|
|
|
24
24
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
25
25
|
|
package/package.json
CHANGED
package/src/Document.js
CHANGED
|
@@ -25,6 +25,24 @@ export default function Document({doc, increment, entities, handleSelect, index,
|
|
|
25
25
|
<DragHandleIcon />
|
|
26
26
|
</Text>
|
|
27
27
|
</Box>
|
|
28
|
+
{showIncrements && (
|
|
29
|
+
<Flex style={{flexShrink: 0}} align="center" gap={1} paddingRight={1}>
|
|
30
|
+
<Button
|
|
31
|
+
padding={2}
|
|
32
|
+
mode="ghost"
|
|
33
|
+
onClick={() => increment(index, index + -1, doc._id, entities)}
|
|
34
|
+
disabled={isFirst}
|
|
35
|
+
icon={ChevronUpIcon}
|
|
36
|
+
/>
|
|
37
|
+
<Button
|
|
38
|
+
padding={2}
|
|
39
|
+
mode="ghost"
|
|
40
|
+
disabled={isLast}
|
|
41
|
+
onClick={() => increment(index, index + 1, doc._id, entities)}
|
|
42
|
+
icon={ChevronDownIcon}
|
|
43
|
+
/>
|
|
44
|
+
</Flex>
|
|
45
|
+
)}
|
|
28
46
|
<Button
|
|
29
47
|
style={{width: `100%`}}
|
|
30
48
|
padding={2}
|
|
@@ -32,24 +50,6 @@ export default function Document({doc, increment, entities, handleSelect, index,
|
|
|
32
50
|
onClick={(e) => handleSelect(doc._id, index, e.nativeEvent)}
|
|
33
51
|
>
|
|
34
52
|
<Flex flex={1} align="center">
|
|
35
|
-
{showIncrements && (
|
|
36
|
-
<Flex style={{flexShrink: 0}} align="center" gap={1} paddingRight={2}>
|
|
37
|
-
<Button
|
|
38
|
-
padding={2}
|
|
39
|
-
mode="ghost"
|
|
40
|
-
onClick={() => increment(index, index + -1, doc._id, entities)}
|
|
41
|
-
disabled={isFirst}
|
|
42
|
-
icon={ChevronUpIcon}
|
|
43
|
-
/>
|
|
44
|
-
<Button
|
|
45
|
-
padding={2}
|
|
46
|
-
mode="ghost"
|
|
47
|
-
disabled={isLast}
|
|
48
|
-
onClick={() => increment(index, index + 1, doc._id, entities)}
|
|
49
|
-
icon={ChevronDownIcon}
|
|
50
|
-
/>
|
|
51
|
-
</Flex>
|
|
52
|
-
)}
|
|
53
53
|
<Box flex={1}>
|
|
54
54
|
<Preview value={doc} type={schema.get(doc._type)} />
|
|
55
55
|
</Box>
|
package/src/DocumentListQuery.js
CHANGED
|
@@ -2,7 +2,6 @@ import PropTypes from 'prop-types'
|
|
|
2
2
|
import React, {useEffect, useState, useMemo} from 'react'
|
|
3
3
|
import sanityClient from 'part:@sanity/base/client'
|
|
4
4
|
import {Stack, Box, Flex, Spinner} from '@sanity/ui'
|
|
5
|
-
import {usePaneRouter} from '@sanity/desk-tool'
|
|
6
5
|
|
|
7
6
|
import DraggableList from './DraggableList'
|
|
8
7
|
import {ORDER_FIELD_NAME} from './helpers/constants'
|
|
@@ -16,7 +15,6 @@ export default function DocumentListQuery({type}) {
|
|
|
16
15
|
const [isLoading, setIsLoading] = useState(true)
|
|
17
16
|
const [isUpdating, setIsUpdating] = useState(false)
|
|
18
17
|
const [data, setData] = useState([])
|
|
19
|
-
const router = usePaneRouter()
|
|
20
18
|
|
|
21
19
|
useEffect(() => {
|
|
22
20
|
const query = `*[_type == $type]|order(@[$order] asc)`
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import S from '@sanity/desk-tool/structure-builder'
|
|
2
2
|
import {SortIcon, GenerateIcon} from '@sanity/icons'
|
|
3
|
+
import schema from 'part:@sanity/base/schema'
|
|
4
|
+
|
|
3
5
|
import OrderableDocumentList from '../OrderableDocumentList'
|
|
4
6
|
|
|
5
7
|
export function orderableDocumentListDeskItem(config = {}) {
|
|
@@ -16,6 +18,7 @@ export function orderableDocumentListDeskItem(config = {}) {
|
|
|
16
18
|
const listTitle = title ?? `Orderable ${type}`
|
|
17
19
|
const listId = `orderable-${type}`
|
|
18
20
|
const listIcon = icon ?? SortIcon
|
|
21
|
+
const typeTitle = schema.get(type)?.title ?? type
|
|
19
22
|
|
|
20
23
|
return S.listItem(type)
|
|
21
24
|
.title(listTitle)
|
|
@@ -28,7 +31,10 @@ export function orderableDocumentListDeskItem(config = {}) {
|
|
|
28
31
|
component: OrderableDocumentList,
|
|
29
32
|
options: {type},
|
|
30
33
|
menuItems: [
|
|
31
|
-
|
|
34
|
+
S.menuItem()
|
|
35
|
+
.title(`Create new ${typeTitle}`)
|
|
36
|
+
.intent({type: 'create', params: {type}})
|
|
37
|
+
.serialize(),
|
|
32
38
|
S.menuItem().title(`Reset Order`).icon(GenerateIcon).action(`resetOrder`).serialize(),
|
|
33
39
|
S.menuItem().title(`Show Increments`).icon(SortIcon).action(`showIncrements`).serialize(),
|
|
34
40
|
],
|