@contember/react-select 1.3.0-alpha.20 → 1.3.0-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/development/components/MultiSelect.cjs +15 -8
- package/dist/development/components/MultiSelect.cjs.map +1 -1
- package/dist/development/components/MultiSelect.js +16 -9
- package/dist/development/components/MultiSelect.js.map +1 -1
- package/dist/development/components/Select.cjs +15 -8
- package/dist/development/components/Select.cjs.map +1 -1
- package/dist/development/components/Select.js +16 -9
- package/dist/development/components/Select.js.map +1 -1
- package/dist/development/components/SelectDataView.cjs +23 -5
- package/dist/development/components/SelectDataView.cjs.map +1 -1
- package/dist/development/components/SelectDataView.js +24 -6
- package/dist/development/components/SelectDataView.js.map +1 -1
- package/dist/development/components/SortableMultiSelect.cjs +30 -10
- package/dist/development/components/SortableMultiSelect.cjs.map +1 -1
- package/dist/development/components/SortableMultiSelect.js +32 -12
- package/dist/development/components/SortableMultiSelect.js.map +1 -1
- package/dist/development/contexts.cjs +5 -0
- package/dist/development/contexts.cjs.map +1 -1
- package/dist/development/contexts.js +6 -1
- package/dist/development/contexts.js.map +1 -1
- package/dist/development/hooks/useSelectFilter.cjs +31 -0
- package/dist/development/hooks/useSelectFilter.cjs.map +1 -0
- package/dist/development/hooks/useSelectFilter.js +31 -0
- package/dist/development/hooks/useSelectFilter.js.map +1 -0
- package/dist/development/index.cjs +4 -0
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js +6 -2
- package/dist/development/index.js.map +1 -1
- package/dist/production/components/MultiSelect.cjs +6 -3
- package/dist/production/components/MultiSelect.cjs.map +1 -1
- package/dist/production/components/MultiSelect.js +7 -4
- package/dist/production/components/MultiSelect.js.map +1 -1
- package/dist/production/components/Select.cjs +6 -3
- package/dist/production/components/Select.cjs.map +1 -1
- package/dist/production/components/Select.js +7 -4
- package/dist/production/components/Select.js.map +1 -1
- package/dist/production/components/SelectDataView.cjs +15 -1
- package/dist/production/components/SelectDataView.cjs.map +1 -1
- package/dist/production/components/SelectDataView.js +16 -2
- package/dist/production/components/SelectDataView.js.map +1 -1
- package/dist/production/components/SortableMultiSelect.cjs +19 -3
- package/dist/production/components/SortableMultiSelect.cjs.map +1 -1
- package/dist/production/components/SortableMultiSelect.js +21 -5
- package/dist/production/components/SortableMultiSelect.js.map +1 -1
- package/dist/production/contexts.cjs +5 -0
- package/dist/production/contexts.cjs.map +1 -1
- package/dist/production/contexts.js +6 -1
- package/dist/production/contexts.js.map +1 -1
- package/dist/production/hooks/useSelectFilter.cjs +31 -0
- package/dist/production/hooks/useSelectFilter.cjs.map +1 -0
- package/dist/production/hooks/useSelectFilter.js +31 -0
- package/dist/production/hooks/useSelectFilter.js.map +1 -0
- package/dist/production/index.cjs +4 -0
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.js +6 -2
- package/dist/production/index.js.map +1 -1
- package/dist/types/components/MultiSelect.d.ts +5 -4
- package/dist/types/components/MultiSelect.d.ts.map +1 -1
- package/dist/types/components/Select.d.ts +5 -4
- package/dist/types/components/Select.d.ts.map +1 -1
- package/dist/types/components/SelectDataView.d.ts.map +1 -1
- package/dist/types/components/SortableMultiSelect.d.ts +5 -4
- package/dist/types/components/SortableMultiSelect.d.ts.map +1 -1
- package/dist/types/contexts.d.ts +4 -0
- package/dist/types/contexts.d.ts.map +1 -1
- package/dist/types/hooks/index.d.ts +2 -0
- package/dist/types/hooks/index.d.ts.map +1 -0
- package/dist/types/hooks/useSelectFilter.d.ts +8 -0
- package/dist/types/hooks/useSelectFilter.d.ts.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/src/components/MultiSelect.tsx +11 -5
- package/src/components/Select.tsx +12 -5
- package/src/components/SelectDataView.tsx +15 -4
- package/src/components/SortableMultiSelect.tsx +41 -6
- package/src/contexts.ts +6 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useSelectFilter.ts +35 -0
- package/src/index.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectDataView.js","sources":["../../../src/components/SelectDataView.tsx"],"sourcesContent":["import React, { ReactNode } from 'react'\nimport { useSelectHandleSelect, useSelectOptions } from '../contexts'\nimport { DataViewProps, DataView } from '@contember/react-dataview'\n\nexport type SelectDataViewProps =\n\t& Omit<DataViewProps, 'entities'>\n\t& {\n\t\tchildren: ReactNode\n\t}\n\nexport const SelectDataView = (props: SelectDataViewProps) => {\n\tconst handleSelect = useSelectHandleSelect()\n\tconst entities = useSelectOptions()\n\treturn (\n\t\t<DataView
|
|
1
|
+
{"version":3,"file":"SelectDataView.js","sources":["../../../src/components/SelectDataView.tsx"],"sourcesContent":["import React, { ReactNode, useMemo } from 'react'\nimport { useSelectHandleSelect, useSelectOptions, useSelectOptionsFilter } from '../contexts'\nimport { DataViewProps, DataView, DataViewFilterHandlerRegistry } from '@contember/react-dataview'\n\nexport type SelectDataViewProps =\n\t& Omit<DataViewProps, 'entities'>\n\t& {\n\t\tchildren: ReactNode\n\t}\n\nexport const SelectDataView = (props: SelectDataViewProps) => {\n\tconst handleSelect = useSelectHandleSelect()\n\tconst entities = useSelectOptions()\n\tconst filter = useSelectOptionsFilter()\n\tconst defaultFilterTypes = useMemo((): DataViewFilterHandlerRegistry => filter ? { query: filter } : {}, [filter])\n\n\treturn (\n\t\t<DataView\n\t\t\tfilterTypes={defaultFilterTypes}\n\t\t\t{...props}\n\t\t\tonSelectHighlighted={handleSelect}\n\t\t\tentities={entities}\n\t\t\tfilteringStateStorage=\"null\"\n\t\t\tsortingStateStorage=\"null\"\n\t\t\tcurrentPageStateStorage=\"null\"\n\t\t/>\n\t)\n}\n"],"names":[],"mappings":";;;;AAUa,MAAA,iBAAiB,CAAC,UAA+B;AAC7D,QAAM,eAAe;AACrB,QAAM,WAAW;AACjB,QAAM,SAAS;AACf,QAAM,qBAAqB,QAAQ,MAAqC,SAAS,EAAE,OAAO,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AAGhH,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,aAAa;AAAA,MACZ,GAAG;AAAA,MACJ,qBAAqB;AAAA,MACrB;AAAA,MACA,uBAAsB;AAAA,MACtB,qBAAoB;AAAA,MACpB,yBAAwB;AAAA,IAAA;AAAA,EAAA;AAG3B;"}
|
|
@@ -6,9 +6,25 @@ const contexts = require("../contexts.cjs");
|
|
|
6
6
|
const reactBinding = require("@contember/react-binding");
|
|
7
7
|
const reactUtils = require("@contember/react-utils");
|
|
8
8
|
const reactRepeater = require("@contember/react-repeater");
|
|
9
|
-
const
|
|
9
|
+
const useSelectFilter = require("../hooks/useSelectFilter.cjs");
|
|
10
|
+
const SortableMultiSelect = reactBinding.Component(({ field, children, sortableBy, connectAt, options, onSelect, onUnselect, filterField }) => {
|
|
10
11
|
const list = reactBinding.useEntityList({ field });
|
|
11
12
|
const entitiesArr = react.useMemo(() => Array.from(list), [list]);
|
|
13
|
+
const optionsMarker = react.useMemo(() => {
|
|
14
|
+
const desugared = reactBinding.QueryLanguage.desugarRelativeSingleEntity({ field: connectAt }, list.environment);
|
|
15
|
+
let marker = list.getMarker();
|
|
16
|
+
for (let relation of desugared.hasOneRelationPath) {
|
|
17
|
+
const placeholder = reactBinding.PlaceholderGenerator.getHasOneRelationPlaceholder(relation);
|
|
18
|
+
const relationMarker = marker.fields.markers.get(placeholder);
|
|
19
|
+
if (!relationMarker || relationMarker instanceof reactBinding.FieldMarker) {
|
|
20
|
+
throw new Error("Invalid marker");
|
|
21
|
+
}
|
|
22
|
+
marker = relationMarker;
|
|
23
|
+
}
|
|
24
|
+
return marker;
|
|
25
|
+
}, [connectAt, list]);
|
|
26
|
+
options ?? (options = optionsMarker.environment.getSubTreeNode().entity.name);
|
|
27
|
+
const filter = useSelectFilter.useSelectFilter({ filterField, marker: optionsMarker });
|
|
12
28
|
const selectedEntities = react.useMemo(() => Array.from(list).map((it) => it.getEntity({ field: connectAt }).id), [connectAt, list]);
|
|
13
29
|
const handler = reactUtils.useReferentiallyStableCallback((entity, action = "toggle") => {
|
|
14
30
|
const isSelected2 = selectedEntities.includes(entity.id);
|
|
@@ -28,9 +44,9 @@ const SortableMultiSelect = reactBinding.Component(({ field, children, sortableB
|
|
|
28
44
|
const isSelected = react.useCallback((entity) => {
|
|
29
45
|
return selectedEntities.includes(entity.id);
|
|
30
46
|
}, [selectedEntities]);
|
|
31
|
-
return /* @__PURE__ */ jsxRuntime.jsx(reactRepeater.Repeater, { field, sortableBy, initialEntityCount: 0, children: /* @__PURE__ */ jsxRuntime.jsx(contexts.SelectCurrentEntitiesContext.Provider, { value: entitiesArr, children: /* @__PURE__ */ jsxRuntime.jsx(contexts.SelectIsSelectedContext.Provider, { value: isSelected, children: /* @__PURE__ */ jsxRuntime.jsx(contexts.SelectHandleSelectContext.Provider, { value: handler, children: /* @__PURE__ */ jsxRuntime.jsx(contexts.SelectOptionsContext.Provider, { value: options, children }) }) }) }) });
|
|
47
|
+
return /* @__PURE__ */ jsxRuntime.jsx(reactRepeater.Repeater, { field, sortableBy, initialEntityCount: 0, children: /* @__PURE__ */ jsxRuntime.jsx(contexts.SelectCurrentEntitiesContext.Provider, { value: entitiesArr, children: /* @__PURE__ */ jsxRuntime.jsx(contexts.SelectIsSelectedContext.Provider, { value: isSelected, children: /* @__PURE__ */ jsxRuntime.jsx(contexts.SelectHandleSelectContext.Provider, { value: handler, children: /* @__PURE__ */ jsxRuntime.jsx(contexts.SelectOptionsContext.Provider, { value: options, children: /* @__PURE__ */ jsxRuntime.jsx(contexts.SelectOptionsFilterContext.Provider, { value: filter, children }) }) }) }) }) });
|
|
32
48
|
}, ({ children, field, sortableBy, connectAt }) => {
|
|
33
|
-
return /* @__PURE__ */ jsxRuntime.jsx(reactRepeater.Repeater, { field, sortableBy, initialEntityCount: 0, children: /* @__PURE__ */ jsxRuntime.jsx(reactBinding.HasOne, { field: connectAt, children }) });
|
|
49
|
+
return /* @__PURE__ */ jsxRuntime.jsx(reactRepeater.Repeater, { field, sortableBy, initialEntityCount: 0, children: /* @__PURE__ */ jsxRuntime.jsx(reactBinding.HasOne, { field: connectAt, expectedMutation: "connectOrDisconnect", children }) });
|
|
34
50
|
});
|
|
35
51
|
exports.SortableMultiSelect = SortableMultiSelect;
|
|
36
52
|
//# sourceMappingURL=SortableMultiSelect.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SortableMultiSelect.cjs","sources":["../../../src/components/SortableMultiSelect.tsx"],"sourcesContent":["import React, { ReactNode, useCallback, useMemo } from 'react'\nimport { SelectCurrentEntitiesContext, SelectHandler, SelectHandleSelectContext, SelectIsSelectedContext, SelectOptionsContext } from '../contexts'\nimport {
|
|
1
|
+
{"version":3,"file":"SortableMultiSelect.cjs","sources":["../../../src/components/SortableMultiSelect.tsx"],"sourcesContent":["import React, { ReactNode, useCallback, useMemo } from 'react'\nimport { SelectCurrentEntitiesContext, SelectHandler, SelectHandleSelectContext, SelectIsSelectedContext, SelectOptionsContext, SelectOptionsFilterContext } from '../contexts'\nimport {\n\tComponent,\n\tEntityAccessor,\n\tFieldMarker,\n\tHasOne,\n\tMeaningfulMarker,\n\tPlaceholderGenerator,\n\tQueryLanguage,\n\tSugaredQualifiedEntityList,\n\tSugaredRelativeEntityList,\n\tSugaredRelativeSingleEntity,\n\tSugaredRelativeSingleField,\n\tuseEntityList,\n} from '@contember/react-binding'\nimport { useReferentiallyStableCallback } from '@contember/react-utils'\nimport { Repeater } from '@contember/react-repeater'\nimport { SelectEvents } from '../types'\nimport { SelectFilterFieldProps, useSelectFilter } from '../hooks'\n\nexport type SortableMultiSelectProps =\n\t& {\n\t\tchildren: ReactNode\n\t\tfield: SugaredRelativeEntityList['field']\n\t\toptions?: SugaredQualifiedEntityList['entities']\n\t\tsortableBy: SugaredRelativeSingleField['field']\n\t\tconnectAt: SugaredRelativeSingleEntity['field']\n\t}\n\t& SelectFilterFieldProps\n\t& SelectEvents\n\nexport const SortableMultiSelect = Component(({ field, children, sortableBy, connectAt, options, onSelect, onUnselect, filterField }: SortableMultiSelectProps) => {\n\tconst list = useEntityList({ field })\n\tconst entitiesArr = useMemo(() => Array.from(list), [list])\n\n\tconst optionsMarker = useMemo(() => {\n\t\tconst desugared = QueryLanguage.desugarRelativeSingleEntity({ field: connectAt }, list.environment)\n\t\tlet marker: Exclude<MeaningfulMarker, FieldMarker> = list.getMarker()\n\t\tfor (let relation of desugared.hasOneRelationPath) {\n\t\t\tconst placeholder = PlaceholderGenerator.getHasOneRelationPlaceholder(relation)\n\t\t\tconst relationMarker = marker.fields.markers.get(placeholder)\n\t\t\tif (!relationMarker || relationMarker instanceof FieldMarker) {\n\t\t\t\tthrow new Error('Invalid marker')\n\t\t\t}\n\t\t\tmarker = relationMarker\n\t\t}\n\t\treturn marker\n\t}, [connectAt, list])\n\n\toptions ??= optionsMarker.environment.getSubTreeNode().entity.name\n\n\tconst filter = useSelectFilter({ filterField, marker: optionsMarker })\n\n\tconst selectedEntities = useMemo(() => Array.from(list).map(it => it.getEntity({ field: connectAt }).id), [connectAt, list])\n\n\tconst handler = useReferentiallyStableCallback<SelectHandler>((entity, action = 'toggle') => {\n\t\tconst isSelected = selectedEntities.includes(entity.id)\n\t\tif (action === 'toggle') {\n\t\t\taction = isSelected ? 'unselect' : 'select'\n\t\t}\n\t\tif (action === 'unselect' && isSelected) {\n\t\t\tArray.from(list).find(it => it.getEntity({ field: connectAt }).id === entity.id)?.deleteEntity()\n\t\t\tonUnselect?.(entity)\n\t\t} else if (action === 'select' && !isSelected) {\n\t\t\tlist.createNewEntity(getEntity => {\n\t\t\t\tgetEntity().connectEntityAtField({ field: connectAt }, entity)\n\t\t\t\tonSelect?.(entity)\n\t\t\t})\n\t\t}\n\t})\n\tconst isSelected = useCallback((entity: EntityAccessor) => {\n\t\treturn selectedEntities.includes(entity.id)\n\t}, [selectedEntities])\n\n\treturn (\n\t\t<Repeater field={field} sortableBy={sortableBy} initialEntityCount={0}>\n\t\t\t<SelectCurrentEntitiesContext.Provider value={entitiesArr}>\n\t\t\t\t<SelectIsSelectedContext.Provider value={isSelected}>\n\t\t\t\t\t<SelectHandleSelectContext.Provider value={handler}>\n\t\t\t\t\t\t<SelectOptionsContext.Provider value={options}>\n\t\t\t\t\t\t\t<SelectOptionsFilterContext.Provider value={filter}>\n\t\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\t</SelectOptionsFilterContext.Provider>\n\t\t\t\t\t\t</SelectOptionsContext.Provider>\n\t\t\t\t\t</SelectHandleSelectContext.Provider>\n\t\t\t\t</SelectIsSelectedContext.Provider>\n\t\t\t</SelectCurrentEntitiesContext.Provider>\n\t\t</Repeater>\n\t)\n}, ({ children, field, sortableBy, connectAt }) => {\n\treturn (\n\t\t<Repeater field={field} sortableBy={sortableBy} initialEntityCount={0}>\n\t\t\t<HasOne field={connectAt} expectedMutation=\"connectOrDisconnect\">\n\t\t\t\t{children}\n\t\t\t</HasOne>\n\t\t</Repeater>\n\t)\n})\n\n"],"names":["Component","useEntityList","useMemo","QueryLanguage","PlaceholderGenerator","FieldMarker","useSelectFilter","useReferentiallyStableCallback","isSelected","useCallback","Repeater","SelectCurrentEntitiesContext","jsx","SelectIsSelectedContext","SelectHandleSelectContext","SelectOptionsContext","SelectOptionsFilterContext","HasOne"],"mappings":";;;;;;;;;AAgCO,MAAM,sBAAsBA,aAAA,UAAU,CAAC,EAAE,OAAO,UAAU,YAAY,WAAW,SAAS,UAAU,YAAY,YAAA,MAA4C;AAClK,QAAM,OAAOC,aAAAA,cAAc,EAAE,MAAO,CAAA;AAC9B,QAAA,cAAcC,cAAQ,MAAM,MAAM,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC;AAEpD,QAAA,gBAAgBA,MAAAA,QAAQ,MAAM;AAC7B,UAAA,YAAYC,2BAAc,4BAA4B,EAAE,OAAO,UAAU,GAAG,KAAK,WAAW;AAC9F,QAAA,SAAiD,KAAK;AACjD,aAAA,YAAY,UAAU,oBAAoB;AAC5C,YAAA,cAAcC,aAAAA,qBAAqB,6BAA6B,QAAQ;AAC9E,YAAM,iBAAiB,OAAO,OAAO,QAAQ,IAAI,WAAW;AACxD,UAAA,CAAC,kBAAkB,0BAA0BC,0BAAa;AACvD,cAAA,IAAI,MAAM,gBAAgB;AAAA,MACjC;AACS,eAAA;AAAA,IACV;AACO,WAAA;AAAA,EAAA,GACL,CAAC,WAAW,IAAI,CAAC;AAEpB,wBAAY,cAAc,YAAY,eAAe,EAAE,OAAO;AAE9D,QAAM,SAASC,gBAAAA,gBAAgB,EAAE,aAAa,QAAQ,eAAe;AAE/D,QAAA,mBAAmBJ,cAAQ,MAAM,MAAM,KAAK,IAAI,EAAE,IAAI,CAAM,OAAA,GAAG,UAAU,EAAE,OAAO,WAAW,EAAE,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC;AAE3H,QAAM,UAAUK,WAAA,+BAA8C,CAAC,QAAQ,SAAS,aAAa;AAC5F,UAAMC,cAAa,iBAAiB,SAAS,OAAO,EAAE;AACtD,QAAI,WAAW,UAAU;AACxB,eAASA,cAAa,aAAa;AAAA,IACpC;AACI,QAAA,WAAW,cAAcA,aAAY;AACxC,YAAM,KAAK,IAAI,EAAE,KAAK,CAAA,OAAM,GAAG,UAAU,EAAE,OAAO,UAAW,CAAA,EAAE,OAAO,OAAO,EAAE,GAAG;AAClF,mBAAa,MAAM;AAAA,IACT,WAAA,WAAW,YAAY,CAACA,aAAY;AAC9C,WAAK,gBAAgB,CAAa,cAAA;AACjC,kBAAA,EAAY,qBAAqB,EAAE,OAAO,UAAA,GAAa,MAAM;AAC7D,mBAAW,MAAM;AAAA,MAAA,CACjB;AAAA,IACF;AAAA,EAAA,CACA;AACK,QAAA,aAAaC,kBAAY,CAAC,WAA2B;AACnD,WAAA,iBAAiB,SAAS,OAAO,EAAE;AAAA,EAAA,GACxC,CAAC,gBAAgB,CAAC;AAErB,wCACEC,cAAAA,UAAS,EAAA,OAAc,YAAwB,oBAAoB,GACnE,yCAACC,SAAAA,6BAA6B,UAA7B,EAAsC,OAAO,aAC7C,UAACC,2BAAA,IAAAC,iCAAwB,UAAxB,EAAiC,OAAO,YACxC,UAACD,2BAAAA,IAAAE,SAAA,0BAA0B,UAA1B,EAAmC,OAAO,SAC1C,UAAAF,+BAACG,SAAAA,qBAAqB,UAArB,EAA8B,OAAO,SACrC,UAAAH,2BAAA,IAACI,oCAA2B,UAA3B,EAAoC,OAAO,QAC1C,SACF,CAAA,GACD,EACD,CAAA,EACD,CAAA,GACD,EACD,CAAA;AAEF,GAAG,CAAC,EAAE,UAAU,OAAO,YAAY,gBAAgB;AAClD,SACEJ,2BAAAA,IAAAF,cAAAA,UAAA,EAAS,OAAc,YAAwB,oBAAoB,GACnE,UAACE,2BAAAA,IAAAK,aAAAA,QAAA,EAAO,OAAO,WAAW,kBAAiB,uBACzC,UACF,EACD,CAAA;AAEF,CAAC;;"}
|
|
@@ -1,12 +1,28 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useMemo, useCallback } from "react";
|
|
3
|
-
import { SelectCurrentEntitiesContext, SelectIsSelectedContext, SelectHandleSelectContext, SelectOptionsContext } from "../contexts.js";
|
|
4
|
-
import { Component, useEntityList, HasOne } from "@contember/react-binding";
|
|
3
|
+
import { SelectCurrentEntitiesContext, SelectIsSelectedContext, SelectHandleSelectContext, SelectOptionsContext, SelectOptionsFilterContext } from "../contexts.js";
|
|
4
|
+
import { Component, useEntityList, QueryLanguage, PlaceholderGenerator, FieldMarker, HasOne } from "@contember/react-binding";
|
|
5
5
|
import { useReferentiallyStableCallback } from "@contember/react-utils";
|
|
6
6
|
import { Repeater } from "@contember/react-repeater";
|
|
7
|
-
|
|
7
|
+
import { useSelectFilter } from "../hooks/useSelectFilter.js";
|
|
8
|
+
const SortableMultiSelect = Component(({ field, children, sortableBy, connectAt, options, onSelect, onUnselect, filterField }) => {
|
|
8
9
|
const list = useEntityList({ field });
|
|
9
10
|
const entitiesArr = useMemo(() => Array.from(list), [list]);
|
|
11
|
+
const optionsMarker = useMemo(() => {
|
|
12
|
+
const desugared = QueryLanguage.desugarRelativeSingleEntity({ field: connectAt }, list.environment);
|
|
13
|
+
let marker = list.getMarker();
|
|
14
|
+
for (let relation of desugared.hasOneRelationPath) {
|
|
15
|
+
const placeholder = PlaceholderGenerator.getHasOneRelationPlaceholder(relation);
|
|
16
|
+
const relationMarker = marker.fields.markers.get(placeholder);
|
|
17
|
+
if (!relationMarker || relationMarker instanceof FieldMarker) {
|
|
18
|
+
throw new Error("Invalid marker");
|
|
19
|
+
}
|
|
20
|
+
marker = relationMarker;
|
|
21
|
+
}
|
|
22
|
+
return marker;
|
|
23
|
+
}, [connectAt, list]);
|
|
24
|
+
options ?? (options = optionsMarker.environment.getSubTreeNode().entity.name);
|
|
25
|
+
const filter = useSelectFilter({ filterField, marker: optionsMarker });
|
|
10
26
|
const selectedEntities = useMemo(() => Array.from(list).map((it) => it.getEntity({ field: connectAt }).id), [connectAt, list]);
|
|
11
27
|
const handler = useReferentiallyStableCallback((entity, action = "toggle") => {
|
|
12
28
|
const isSelected2 = selectedEntities.includes(entity.id);
|
|
@@ -26,9 +42,9 @@ const SortableMultiSelect = Component(({ field, children, sortableBy, connectAt,
|
|
|
26
42
|
const isSelected = useCallback((entity) => {
|
|
27
43
|
return selectedEntities.includes(entity.id);
|
|
28
44
|
}, [selectedEntities]);
|
|
29
|
-
return /* @__PURE__ */ jsx(Repeater, { field, sortableBy, initialEntityCount: 0, children: /* @__PURE__ */ jsx(SelectCurrentEntitiesContext.Provider, { value: entitiesArr, children: /* @__PURE__ */ jsx(SelectIsSelectedContext.Provider, { value: isSelected, children: /* @__PURE__ */ jsx(SelectHandleSelectContext.Provider, { value: handler, children: /* @__PURE__ */ jsx(SelectOptionsContext.Provider, { value: options, children }) }) }) }) });
|
|
45
|
+
return /* @__PURE__ */ jsx(Repeater, { field, sortableBy, initialEntityCount: 0, children: /* @__PURE__ */ jsx(SelectCurrentEntitiesContext.Provider, { value: entitiesArr, children: /* @__PURE__ */ jsx(SelectIsSelectedContext.Provider, { value: isSelected, children: /* @__PURE__ */ jsx(SelectHandleSelectContext.Provider, { value: handler, children: /* @__PURE__ */ jsx(SelectOptionsContext.Provider, { value: options, children: /* @__PURE__ */ jsx(SelectOptionsFilterContext.Provider, { value: filter, children }) }) }) }) }) });
|
|
30
46
|
}, ({ children, field, sortableBy, connectAt }) => {
|
|
31
|
-
return /* @__PURE__ */ jsx(Repeater, { field, sortableBy, initialEntityCount: 0, children: /* @__PURE__ */ jsx(HasOne, { field: connectAt, children }) });
|
|
47
|
+
return /* @__PURE__ */ jsx(Repeater, { field, sortableBy, initialEntityCount: 0, children: /* @__PURE__ */ jsx(HasOne, { field: connectAt, expectedMutation: "connectOrDisconnect", children }) });
|
|
32
48
|
});
|
|
33
49
|
export {
|
|
34
50
|
SortableMultiSelect
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SortableMultiSelect.js","sources":["../../../src/components/SortableMultiSelect.tsx"],"sourcesContent":["import React, { ReactNode, useCallback, useMemo } from 'react'\nimport { SelectCurrentEntitiesContext, SelectHandler, SelectHandleSelectContext, SelectIsSelectedContext, SelectOptionsContext } from '../contexts'\nimport {
|
|
1
|
+
{"version":3,"file":"SortableMultiSelect.js","sources":["../../../src/components/SortableMultiSelect.tsx"],"sourcesContent":["import React, { ReactNode, useCallback, useMemo } from 'react'\nimport { SelectCurrentEntitiesContext, SelectHandler, SelectHandleSelectContext, SelectIsSelectedContext, SelectOptionsContext, SelectOptionsFilterContext } from '../contexts'\nimport {\n\tComponent,\n\tEntityAccessor,\n\tFieldMarker,\n\tHasOne,\n\tMeaningfulMarker,\n\tPlaceholderGenerator,\n\tQueryLanguage,\n\tSugaredQualifiedEntityList,\n\tSugaredRelativeEntityList,\n\tSugaredRelativeSingleEntity,\n\tSugaredRelativeSingleField,\n\tuseEntityList,\n} from '@contember/react-binding'\nimport { useReferentiallyStableCallback } from '@contember/react-utils'\nimport { Repeater } from '@contember/react-repeater'\nimport { SelectEvents } from '../types'\nimport { SelectFilterFieldProps, useSelectFilter } from '../hooks'\n\nexport type SortableMultiSelectProps =\n\t& {\n\t\tchildren: ReactNode\n\t\tfield: SugaredRelativeEntityList['field']\n\t\toptions?: SugaredQualifiedEntityList['entities']\n\t\tsortableBy: SugaredRelativeSingleField['field']\n\t\tconnectAt: SugaredRelativeSingleEntity['field']\n\t}\n\t& SelectFilterFieldProps\n\t& SelectEvents\n\nexport const SortableMultiSelect = Component(({ field, children, sortableBy, connectAt, options, onSelect, onUnselect, filterField }: SortableMultiSelectProps) => {\n\tconst list = useEntityList({ field })\n\tconst entitiesArr = useMemo(() => Array.from(list), [list])\n\n\tconst optionsMarker = useMemo(() => {\n\t\tconst desugared = QueryLanguage.desugarRelativeSingleEntity({ field: connectAt }, list.environment)\n\t\tlet marker: Exclude<MeaningfulMarker, FieldMarker> = list.getMarker()\n\t\tfor (let relation of desugared.hasOneRelationPath) {\n\t\t\tconst placeholder = PlaceholderGenerator.getHasOneRelationPlaceholder(relation)\n\t\t\tconst relationMarker = marker.fields.markers.get(placeholder)\n\t\t\tif (!relationMarker || relationMarker instanceof FieldMarker) {\n\t\t\t\tthrow new Error('Invalid marker')\n\t\t\t}\n\t\t\tmarker = relationMarker\n\t\t}\n\t\treturn marker\n\t}, [connectAt, list])\n\n\toptions ??= optionsMarker.environment.getSubTreeNode().entity.name\n\n\tconst filter = useSelectFilter({ filterField, marker: optionsMarker })\n\n\tconst selectedEntities = useMemo(() => Array.from(list).map(it => it.getEntity({ field: connectAt }).id), [connectAt, list])\n\n\tconst handler = useReferentiallyStableCallback<SelectHandler>((entity, action = 'toggle') => {\n\t\tconst isSelected = selectedEntities.includes(entity.id)\n\t\tif (action === 'toggle') {\n\t\t\taction = isSelected ? 'unselect' : 'select'\n\t\t}\n\t\tif (action === 'unselect' && isSelected) {\n\t\t\tArray.from(list).find(it => it.getEntity({ field: connectAt }).id === entity.id)?.deleteEntity()\n\t\t\tonUnselect?.(entity)\n\t\t} else if (action === 'select' && !isSelected) {\n\t\t\tlist.createNewEntity(getEntity => {\n\t\t\t\tgetEntity().connectEntityAtField({ field: connectAt }, entity)\n\t\t\t\tonSelect?.(entity)\n\t\t\t})\n\t\t}\n\t})\n\tconst isSelected = useCallback((entity: EntityAccessor) => {\n\t\treturn selectedEntities.includes(entity.id)\n\t}, [selectedEntities])\n\n\treturn (\n\t\t<Repeater field={field} sortableBy={sortableBy} initialEntityCount={0}>\n\t\t\t<SelectCurrentEntitiesContext.Provider value={entitiesArr}>\n\t\t\t\t<SelectIsSelectedContext.Provider value={isSelected}>\n\t\t\t\t\t<SelectHandleSelectContext.Provider value={handler}>\n\t\t\t\t\t\t<SelectOptionsContext.Provider value={options}>\n\t\t\t\t\t\t\t<SelectOptionsFilterContext.Provider value={filter}>\n\t\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\t</SelectOptionsFilterContext.Provider>\n\t\t\t\t\t\t</SelectOptionsContext.Provider>\n\t\t\t\t\t</SelectHandleSelectContext.Provider>\n\t\t\t\t</SelectIsSelectedContext.Provider>\n\t\t\t</SelectCurrentEntitiesContext.Provider>\n\t\t</Repeater>\n\t)\n}, ({ children, field, sortableBy, connectAt }) => {\n\treturn (\n\t\t<Repeater field={field} sortableBy={sortableBy} initialEntityCount={0}>\n\t\t\t<HasOne field={connectAt} expectedMutation=\"connectOrDisconnect\">\n\t\t\t\t{children}\n\t\t\t</HasOne>\n\t\t</Repeater>\n\t)\n})\n\n"],"names":["isSelected"],"mappings":";;;;;;;AAgCO,MAAM,sBAAsB,UAAU,CAAC,EAAE,OAAO,UAAU,YAAY,WAAW,SAAS,UAAU,YAAY,YAAA,MAA4C;AAClK,QAAM,OAAO,cAAc,EAAE,MAAO,CAAA;AAC9B,QAAA,cAAc,QAAQ,MAAM,MAAM,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC;AAEpD,QAAA,gBAAgB,QAAQ,MAAM;AAC7B,UAAA,YAAY,cAAc,4BAA4B,EAAE,OAAO,UAAU,GAAG,KAAK,WAAW;AAC9F,QAAA,SAAiD,KAAK;AACjD,aAAA,YAAY,UAAU,oBAAoB;AAC5C,YAAA,cAAc,qBAAqB,6BAA6B,QAAQ;AAC9E,YAAM,iBAAiB,OAAO,OAAO,QAAQ,IAAI,WAAW;AACxD,UAAA,CAAC,kBAAkB,0BAA0B,aAAa;AACvD,cAAA,IAAI,MAAM,gBAAgB;AAAA,MACjC;AACS,eAAA;AAAA,IACV;AACO,WAAA;AAAA,EAAA,GACL,CAAC,WAAW,IAAI,CAAC;AAEpB,wBAAY,cAAc,YAAY,eAAe,EAAE,OAAO;AAE9D,QAAM,SAAS,gBAAgB,EAAE,aAAa,QAAQ,eAAe;AAE/D,QAAA,mBAAmB,QAAQ,MAAM,MAAM,KAAK,IAAI,EAAE,IAAI,CAAM,OAAA,GAAG,UAAU,EAAE,OAAO,WAAW,EAAE,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC;AAE3H,QAAM,UAAU,+BAA8C,CAAC,QAAQ,SAAS,aAAa;AAC5F,UAAMA,cAAa,iBAAiB,SAAS,OAAO,EAAE;AACtD,QAAI,WAAW,UAAU;AACxB,eAASA,cAAa,aAAa;AAAA,IACpC;AACI,QAAA,WAAW,cAAcA,aAAY;AACxC,YAAM,KAAK,IAAI,EAAE,KAAK,CAAA,OAAM,GAAG,UAAU,EAAE,OAAO,UAAW,CAAA,EAAE,OAAO,OAAO,EAAE,GAAG;AAClF,mBAAa,MAAM;AAAA,IACT,WAAA,WAAW,YAAY,CAACA,aAAY;AAC9C,WAAK,gBAAgB,CAAa,cAAA;AACjC,kBAAA,EAAY,qBAAqB,EAAE,OAAO,UAAA,GAAa,MAAM;AAC7D,mBAAW,MAAM;AAAA,MAAA,CACjB;AAAA,IACF;AAAA,EAAA,CACA;AACK,QAAA,aAAa,YAAY,CAAC,WAA2B;AACnD,WAAA,iBAAiB,SAAS,OAAO,EAAE;AAAA,EAAA,GACxC,CAAC,gBAAgB,CAAC;AAErB,6BACE,UAAS,EAAA,OAAc,YAAwB,oBAAoB,GACnE,8BAAC,6BAA6B,UAA7B,EAAsC,OAAO,aAC7C,UAAC,oBAAA,wBAAwB,UAAxB,EAAiC,OAAO,YACxC,UAAC,oBAAA,0BAA0B,UAA1B,EAAmC,OAAO,SAC1C,UAAA,oBAAC,qBAAqB,UAArB,EAA8B,OAAO,SACrC,UAAA,oBAAC,2BAA2B,UAA3B,EAAoC,OAAO,QAC1C,SACF,CAAA,GACD,EACD,CAAA,EACD,CAAA,GACD,EACD,CAAA;AAEF,GAAG,CAAC,EAAE,UAAU,OAAO,YAAY,gBAAgB;AAClD,SACE,oBAAA,UAAA,EAAS,OAAc,YAAwB,oBAAoB,GACnE,UAAC,oBAAA,QAAA,EAAO,OAAO,WAAW,kBAAiB,uBACzC,UACF,EACD,CAAA;AAEF,CAAC;"}
|
|
@@ -13,12 +13,17 @@ const useSelectHandleSelect = _SelectHandleSelectContext[1];
|
|
|
13
13
|
const _SelectOptionsContext = reactUtils.createRequiredContext("SelectOptionsContext");
|
|
14
14
|
const SelectOptionsContext = _SelectOptionsContext[0];
|
|
15
15
|
const useSelectOptions = _SelectOptionsContext[1];
|
|
16
|
+
const _SelectOptionsFilterContext = reactUtils.createRequiredContext("SelectOptionsFilterContext");
|
|
17
|
+
const SelectOptionsFilterContext = _SelectOptionsFilterContext[0];
|
|
18
|
+
const useSelectOptionsFilter = _SelectOptionsFilterContext[1];
|
|
16
19
|
exports.SelectCurrentEntitiesContext = SelectCurrentEntitiesContext;
|
|
17
20
|
exports.SelectHandleSelectContext = SelectHandleSelectContext;
|
|
18
21
|
exports.SelectIsSelectedContext = SelectIsSelectedContext;
|
|
19
22
|
exports.SelectOptionsContext = SelectOptionsContext;
|
|
23
|
+
exports.SelectOptionsFilterContext = SelectOptionsFilterContext;
|
|
20
24
|
exports.useSelectCurrentEntities = useSelectCurrentEntities;
|
|
21
25
|
exports.useSelectHandleSelect = useSelectHandleSelect;
|
|
22
26
|
exports.useSelectIsSelected = useSelectIsSelected;
|
|
23
27
|
exports.useSelectOptions = useSelectOptions;
|
|
28
|
+
exports.useSelectOptionsFilter = useSelectOptionsFilter;
|
|
24
29
|
//# sourceMappingURL=contexts.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contexts.cjs","sources":["../../src/contexts.ts"],"sourcesContent":["import { createRequiredContext } from '@contember/react-utils'\nimport { EntityAccessor, SugaredQualifiedEntityList } from '@contember/react-binding'\n\nconst _SelectCurrentEntitiesContext = createRequiredContext<EntityAccessor[]>('SelectCurrentEntitiesContext')\n/** @internal */\nexport const SelectCurrentEntitiesContext = _SelectCurrentEntitiesContext[0]\nexport const useSelectCurrentEntities = _SelectCurrentEntitiesContext[1]\n\n\n\nconst _SelectIsSelectedContext = createRequiredContext<(entity: EntityAccessor) => boolean>('SelectIsSelectedContext')\n/** @internal */\nexport const SelectIsSelectedContext = _SelectIsSelectedContext[0]\nexport const useSelectIsSelected = _SelectIsSelectedContext[1]\n\nexport type SelectHandler = (entity: EntityAccessor, action?: 'select' | 'unselect' | 'toggle') => void\nconst _SelectHandleSelectContext = createRequiredContext<SelectHandler>('SelectHandleSelectContext')\n/** @internal */\nexport const SelectHandleSelectContext = _SelectHandleSelectContext[0]\nexport const useSelectHandleSelect = _SelectHandleSelectContext[1]\n\nconst _SelectOptionsContext = createRequiredContext<SugaredQualifiedEntityList['entities']>('SelectOptionsContext')\n/** @internal */\nexport const SelectOptionsContext = _SelectOptionsContext[0]\nexport const useSelectOptions = _SelectOptionsContext[1]\n"],"names":["createRequiredContext"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"contexts.cjs","sources":["../../src/contexts.ts"],"sourcesContent":["import { createRequiredContext } from '@contember/react-utils'\nimport { EntityAccessor, SugaredQualifiedEntityList } from '@contember/react-binding'\nimport { DataViewFilterHandler, TextFilterArtifacts } from '@contember/react-dataview'\n\nconst _SelectCurrentEntitiesContext = createRequiredContext<EntityAccessor[]>('SelectCurrentEntitiesContext')\n/** @internal */\nexport const SelectCurrentEntitiesContext = _SelectCurrentEntitiesContext[0]\nexport const useSelectCurrentEntities = _SelectCurrentEntitiesContext[1]\n\n\n\nconst _SelectIsSelectedContext = createRequiredContext<(entity: EntityAccessor) => boolean>('SelectIsSelectedContext')\n/** @internal */\nexport const SelectIsSelectedContext = _SelectIsSelectedContext[0]\nexport const useSelectIsSelected = _SelectIsSelectedContext[1]\n\nexport type SelectHandler = (entity: EntityAccessor, action?: 'select' | 'unselect' | 'toggle') => void\nconst _SelectHandleSelectContext = createRequiredContext<SelectHandler>('SelectHandleSelectContext')\n/** @internal */\nexport const SelectHandleSelectContext = _SelectHandleSelectContext[0]\nexport const useSelectHandleSelect = _SelectHandleSelectContext[1]\n\nconst _SelectOptionsContext = createRequiredContext<SugaredQualifiedEntityList['entities']>('SelectOptionsContext')\n/** @internal */\nexport const SelectOptionsContext = _SelectOptionsContext[0]\nexport const useSelectOptions = _SelectOptionsContext[1]\n\nconst _SelectOptionsFilterContext = createRequiredContext<DataViewFilterHandler<TextFilterArtifacts> | undefined>('SelectOptionsFilterContext')\n/** @internal */\nexport const SelectOptionsFilterContext = _SelectOptionsFilterContext[0]\nexport const useSelectOptionsFilter = _SelectOptionsFilterContext[1]\n"],"names":["createRequiredContext"],"mappings":";;;AAIA,MAAM,gCAAgCA,WAAAA,sBAAwC,8BAA8B;AAE/F,MAAA,+BAA+B,8BAA8B,CAAC;AAC9D,MAAA,2BAA2B,8BAA8B,CAAC;AAIvE,MAAM,2BAA2BA,WAAAA,sBAA2D,yBAAyB;AAExG,MAAA,0BAA0B,yBAAyB,CAAC;AACpD,MAAA,sBAAsB,yBAAyB,CAAC;AAG7D,MAAM,6BAA6BA,WAAAA,sBAAqC,2BAA2B;AAEtF,MAAA,4BAA4B,2BAA2B,CAAC;AACxD,MAAA,wBAAwB,2BAA2B,CAAC;AAEjE,MAAM,wBAAwBA,WAAAA,sBAA8D,sBAAsB;AAErG,MAAA,uBAAuB,sBAAsB,CAAC;AAC9C,MAAA,mBAAmB,sBAAsB,CAAC;AAEvD,MAAM,8BAA8BA,WAAAA,sBAA8E,4BAA4B;AAEjI,MAAA,6BAA6B,4BAA4B,CAAC;AAC1D,MAAA,yBAAyB,4BAA4B,CAAC;;;;;;;;;;;"}
|
|
@@ -11,14 +11,19 @@ const useSelectHandleSelect = _SelectHandleSelectContext[1];
|
|
|
11
11
|
const _SelectOptionsContext = createRequiredContext("SelectOptionsContext");
|
|
12
12
|
const SelectOptionsContext = _SelectOptionsContext[0];
|
|
13
13
|
const useSelectOptions = _SelectOptionsContext[1];
|
|
14
|
+
const _SelectOptionsFilterContext = createRequiredContext("SelectOptionsFilterContext");
|
|
15
|
+
const SelectOptionsFilterContext = _SelectOptionsFilterContext[0];
|
|
16
|
+
const useSelectOptionsFilter = _SelectOptionsFilterContext[1];
|
|
14
17
|
export {
|
|
15
18
|
SelectCurrentEntitiesContext,
|
|
16
19
|
SelectHandleSelectContext,
|
|
17
20
|
SelectIsSelectedContext,
|
|
18
21
|
SelectOptionsContext,
|
|
22
|
+
SelectOptionsFilterContext,
|
|
19
23
|
useSelectCurrentEntities,
|
|
20
24
|
useSelectHandleSelect,
|
|
21
25
|
useSelectIsSelected,
|
|
22
|
-
useSelectOptions
|
|
26
|
+
useSelectOptions,
|
|
27
|
+
useSelectOptionsFilter
|
|
23
28
|
};
|
|
24
29
|
//# sourceMappingURL=contexts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contexts.js","sources":["../../src/contexts.ts"],"sourcesContent":["import { createRequiredContext } from '@contember/react-utils'\nimport { EntityAccessor, SugaredQualifiedEntityList } from '@contember/react-binding'\n\nconst _SelectCurrentEntitiesContext = createRequiredContext<EntityAccessor[]>('SelectCurrentEntitiesContext')\n/** @internal */\nexport const SelectCurrentEntitiesContext = _SelectCurrentEntitiesContext[0]\nexport const useSelectCurrentEntities = _SelectCurrentEntitiesContext[1]\n\n\n\nconst _SelectIsSelectedContext = createRequiredContext<(entity: EntityAccessor) => boolean>('SelectIsSelectedContext')\n/** @internal */\nexport const SelectIsSelectedContext = _SelectIsSelectedContext[0]\nexport const useSelectIsSelected = _SelectIsSelectedContext[1]\n\nexport type SelectHandler = (entity: EntityAccessor, action?: 'select' | 'unselect' | 'toggle') => void\nconst _SelectHandleSelectContext = createRequiredContext<SelectHandler>('SelectHandleSelectContext')\n/** @internal */\nexport const SelectHandleSelectContext = _SelectHandleSelectContext[0]\nexport const useSelectHandleSelect = _SelectHandleSelectContext[1]\n\nconst _SelectOptionsContext = createRequiredContext<SugaredQualifiedEntityList['entities']>('SelectOptionsContext')\n/** @internal */\nexport const SelectOptionsContext = _SelectOptionsContext[0]\nexport const useSelectOptions = _SelectOptionsContext[1]\n"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"contexts.js","sources":["../../src/contexts.ts"],"sourcesContent":["import { createRequiredContext } from '@contember/react-utils'\nimport { EntityAccessor, SugaredQualifiedEntityList } from '@contember/react-binding'\nimport { DataViewFilterHandler, TextFilterArtifacts } from '@contember/react-dataview'\n\nconst _SelectCurrentEntitiesContext = createRequiredContext<EntityAccessor[]>('SelectCurrentEntitiesContext')\n/** @internal */\nexport const SelectCurrentEntitiesContext = _SelectCurrentEntitiesContext[0]\nexport const useSelectCurrentEntities = _SelectCurrentEntitiesContext[1]\n\n\n\nconst _SelectIsSelectedContext = createRequiredContext<(entity: EntityAccessor) => boolean>('SelectIsSelectedContext')\n/** @internal */\nexport const SelectIsSelectedContext = _SelectIsSelectedContext[0]\nexport const useSelectIsSelected = _SelectIsSelectedContext[1]\n\nexport type SelectHandler = (entity: EntityAccessor, action?: 'select' | 'unselect' | 'toggle') => void\nconst _SelectHandleSelectContext = createRequiredContext<SelectHandler>('SelectHandleSelectContext')\n/** @internal */\nexport const SelectHandleSelectContext = _SelectHandleSelectContext[0]\nexport const useSelectHandleSelect = _SelectHandleSelectContext[1]\n\nconst _SelectOptionsContext = createRequiredContext<SugaredQualifiedEntityList['entities']>('SelectOptionsContext')\n/** @internal */\nexport const SelectOptionsContext = _SelectOptionsContext[0]\nexport const useSelectOptions = _SelectOptionsContext[1]\n\nconst _SelectOptionsFilterContext = createRequiredContext<DataViewFilterHandler<TextFilterArtifacts> | undefined>('SelectOptionsFilterContext')\n/** @internal */\nexport const SelectOptionsFilterContext = _SelectOptionsFilterContext[0]\nexport const useSelectOptionsFilter = _SelectOptionsFilterContext[1]\n"],"names":[],"mappings":";AAIA,MAAM,gCAAgC,sBAAwC,8BAA8B;AAE/F,MAAA,+BAA+B,8BAA8B,CAAC;AAC9D,MAAA,2BAA2B,8BAA8B,CAAC;AAIvE,MAAM,2BAA2B,sBAA2D,yBAAyB;AAExG,MAAA,0BAA0B,yBAAyB,CAAC;AACpD,MAAA,sBAAsB,yBAAyB,CAAC;AAG7D,MAAM,6BAA6B,sBAAqC,2BAA2B;AAEtF,MAAA,4BAA4B,2BAA2B,CAAC;AACxD,MAAA,wBAAwB,2BAA2B,CAAC;AAEjE,MAAM,wBAAwB,sBAA8D,sBAAsB;AAErG,MAAA,uBAAuB,sBAAsB,CAAC;AAC9C,MAAA,mBAAmB,sBAAsB,CAAC;AAEvD,MAAM,8BAA8B,sBAA8E,4BAA4B;AAEjI,MAAA,6BAA6B,4BAA4B,CAAC;AAC1D,MAAA,yBAAyB,4BAA4B,CAAC;"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const reactBinding = require("@contember/react-binding");
|
|
4
|
+
const reactDataview = require("@contember/react-dataview");
|
|
5
|
+
const react = require("react");
|
|
6
|
+
const useSelectFilter = ({ filterField, marker }) => {
|
|
7
|
+
return react.useMemo(() => {
|
|
8
|
+
const filter = filterField ?? extractStringFields(marker);
|
|
9
|
+
if (!filter || Array.isArray(filter) && filter.length === 0) {
|
|
10
|
+
return void 0;
|
|
11
|
+
}
|
|
12
|
+
return reactDataview.createUnionTextFilter(Array.isArray(filter) ? filter : [filter]);
|
|
13
|
+
}, [filterField, marker]);
|
|
14
|
+
};
|
|
15
|
+
const extractStringFields = (marker) => {
|
|
16
|
+
const node = marker.environment.getSubTreeNode();
|
|
17
|
+
const textFields = [];
|
|
18
|
+
for (const field of marker.fields.markers.values()) {
|
|
19
|
+
if (field instanceof reactBinding.FieldMarker) {
|
|
20
|
+
const columnInfo = node.entity.fields.get(field.fieldName);
|
|
21
|
+
if (columnInfo?.type === "String") {
|
|
22
|
+
textFields.push(field.fieldName);
|
|
23
|
+
}
|
|
24
|
+
} else if (field instanceof reactBinding.HasOneRelationMarker) {
|
|
25
|
+
textFields.push(...extractStringFields(field).map((it) => `${field.parameters.field}.${it}`));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return textFields;
|
|
29
|
+
};
|
|
30
|
+
exports.useSelectFilter = useSelectFilter;
|
|
31
|
+
//# sourceMappingURL=useSelectFilter.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSelectFilter.cjs","sources":["../../../src/hooks/useSelectFilter.ts"],"sourcesContent":["import { FieldMarker, HasOneRelationMarker, MeaningfulMarker, SugaredRelativeSingleField } from '@contember/react-binding'\nimport { createUnionTextFilter } from '@contember/react-dataview'\nimport { useMemo } from 'react'\n\nexport type SelectFilterFieldProps = {\n\tfilterField?: SugaredRelativeSingleField['field'] | SugaredRelativeSingleField['field'][]\n}\n\nexport const useSelectFilter = ({ filterField, marker }: SelectFilterFieldProps & {\n\tmarker: Exclude<MeaningfulMarker, FieldMarker>\n}) => {\n\treturn useMemo(() => {\n\t\tconst filter = filterField ?? extractStringFields(marker)\n\t\tif (!filter || (Array.isArray(filter) && filter.length === 0)) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn createUnionTextFilter(Array.isArray(filter) ? filter : [filter])\n\t}, [filterField, marker])\n}\n\nconst extractStringFields = (marker: Exclude<MeaningfulMarker, FieldMarker>): string[] => {\n\tconst node = marker.environment.getSubTreeNode()\n\tconst textFields = []\n\tfor (const field of marker.fields.markers.values()) {\n\t\tif (field instanceof FieldMarker) {\n\t\t\tconst columnInfo = node.entity.fields.get(field.fieldName)\n\t\t\tif (columnInfo?.type === 'String') {\n\t\t\t\ttextFields.push(field.fieldName)\n\t\t\t}\n\t\t} else if (field instanceof HasOneRelationMarker) {\n\t\t\ttextFields.push(...extractStringFields(field).map(it => `${field.parameters.field}.${it}`))\n\t\t}\n\t}\n\treturn textFields\n}\n"],"names":["useMemo","createUnionTextFilter","FieldMarker","HasOneRelationMarker"],"mappings":";;;;;AAQO,MAAM,kBAAkB,CAAC,EAAE,aAAa,aAEzC;AACL,SAAOA,cAAQ,MAAM;AACd,UAAA,SAAS,eAAe,oBAAoB,MAAM;AACpD,QAAA,CAAC,UAAW,MAAM,QAAQ,MAAM,KAAK,OAAO,WAAW,GAAI;AACvD,aAAA;AAAA,IACR;AACO,WAAAC,cAAA,sBAAsB,MAAM,QAAQ,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC;AAAA,EAAA,GACpE,CAAC,aAAa,MAAM,CAAC;AACzB;AAEA,MAAM,sBAAsB,CAAC,WAA6D;AACnF,QAAA,OAAO,OAAO,YAAY,eAAe;AAC/C,QAAM,aAAa,CAAA;AACnB,aAAW,SAAS,OAAO,OAAO,QAAQ,UAAU;AACnD,QAAI,iBAAiBC,aAAAA,aAAa;AACjC,YAAM,aAAa,KAAK,OAAO,OAAO,IAAI,MAAM,SAAS;AACrD,UAAA,YAAY,SAAS,UAAU;AACvB,mBAAA,KAAK,MAAM,SAAS;AAAA,MAChC;AAAA,IAAA,WACU,iBAAiBC,mCAAsB;AACjD,iBAAW,KAAK,GAAG,oBAAoB,KAAK,EAAE,IAAI,CAAA,OAAM,GAAG,MAAM,WAAW,KAAK,IAAI,EAAE,EAAE,CAAC;AAAA,IAC3F;AAAA,EACD;AACO,SAAA;AACR;;"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { FieldMarker, HasOneRelationMarker } from "@contember/react-binding";
|
|
2
|
+
import { createUnionTextFilter } from "@contember/react-dataview";
|
|
3
|
+
import { useMemo } from "react";
|
|
4
|
+
const useSelectFilter = ({ filterField, marker }) => {
|
|
5
|
+
return useMemo(() => {
|
|
6
|
+
const filter = filterField ?? extractStringFields(marker);
|
|
7
|
+
if (!filter || Array.isArray(filter) && filter.length === 0) {
|
|
8
|
+
return void 0;
|
|
9
|
+
}
|
|
10
|
+
return createUnionTextFilter(Array.isArray(filter) ? filter : [filter]);
|
|
11
|
+
}, [filterField, marker]);
|
|
12
|
+
};
|
|
13
|
+
const extractStringFields = (marker) => {
|
|
14
|
+
const node = marker.environment.getSubTreeNode();
|
|
15
|
+
const textFields = [];
|
|
16
|
+
for (const field of marker.fields.markers.values()) {
|
|
17
|
+
if (field instanceof FieldMarker) {
|
|
18
|
+
const columnInfo = node.entity.fields.get(field.fieldName);
|
|
19
|
+
if (columnInfo?.type === "String") {
|
|
20
|
+
textFields.push(field.fieldName);
|
|
21
|
+
}
|
|
22
|
+
} else if (field instanceof HasOneRelationMarker) {
|
|
23
|
+
textFields.push(...extractStringFields(field).map((it) => `${field.parameters.field}.${it}`));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return textFields;
|
|
27
|
+
};
|
|
28
|
+
export {
|
|
29
|
+
useSelectFilter
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=useSelectFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSelectFilter.js","sources":["../../../src/hooks/useSelectFilter.ts"],"sourcesContent":["import { FieldMarker, HasOneRelationMarker, MeaningfulMarker, SugaredRelativeSingleField } from '@contember/react-binding'\nimport { createUnionTextFilter } from '@contember/react-dataview'\nimport { useMemo } from 'react'\n\nexport type SelectFilterFieldProps = {\n\tfilterField?: SugaredRelativeSingleField['field'] | SugaredRelativeSingleField['field'][]\n}\n\nexport const useSelectFilter = ({ filterField, marker }: SelectFilterFieldProps & {\n\tmarker: Exclude<MeaningfulMarker, FieldMarker>\n}) => {\n\treturn useMemo(() => {\n\t\tconst filter = filterField ?? extractStringFields(marker)\n\t\tif (!filter || (Array.isArray(filter) && filter.length === 0)) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn createUnionTextFilter(Array.isArray(filter) ? filter : [filter])\n\t}, [filterField, marker])\n}\n\nconst extractStringFields = (marker: Exclude<MeaningfulMarker, FieldMarker>): string[] => {\n\tconst node = marker.environment.getSubTreeNode()\n\tconst textFields = []\n\tfor (const field of marker.fields.markers.values()) {\n\t\tif (field instanceof FieldMarker) {\n\t\t\tconst columnInfo = node.entity.fields.get(field.fieldName)\n\t\t\tif (columnInfo?.type === 'String') {\n\t\t\t\ttextFields.push(field.fieldName)\n\t\t\t}\n\t\t} else if (field instanceof HasOneRelationMarker) {\n\t\t\ttextFields.push(...extractStringFields(field).map(it => `${field.parameters.field}.${it}`))\n\t\t}\n\t}\n\treturn textFields\n}\n"],"names":[],"mappings":";;;AAQO,MAAM,kBAAkB,CAAC,EAAE,aAAa,aAEzC;AACL,SAAO,QAAQ,MAAM;AACd,UAAA,SAAS,eAAe,oBAAoB,MAAM;AACpD,QAAA,CAAC,UAAW,MAAM,QAAQ,MAAM,KAAK,OAAO,WAAW,GAAI;AACvD,aAAA;AAAA,IACR;AACO,WAAA,sBAAsB,MAAM,QAAQ,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC;AAAA,EAAA,GACpE,CAAC,aAAa,MAAM,CAAC;AACzB;AAEA,MAAM,sBAAsB,CAAC,WAA6D;AACnF,QAAA,OAAO,OAAO,YAAY,eAAe;AAC/C,QAAM,aAAa,CAAA;AACnB,aAAW,SAAS,OAAO,OAAO,QAAQ,UAAU;AACnD,QAAI,iBAAiB,aAAa;AACjC,YAAM,aAAa,KAAK,OAAO,OAAO,IAAI,MAAM,SAAS;AACrD,UAAA,YAAY,SAAS,UAAU;AACvB,mBAAA,KAAK,MAAM,SAAS;AAAA,MAChC;AAAA,IAAA,WACU,iBAAiB,sBAAsB;AACjD,iBAAW,KAAK,GAAG,oBAAoB,KAAK,EAAE,IAAI,CAAA,OAAM,GAAG,MAAM,WAAW,KAAK,IAAI,EAAE,EAAE,CAAC;AAAA,IAC3F;AAAA,EACD;AACO,SAAA;AACR;"}
|
|
@@ -10,14 +10,17 @@ const SelectItemTrigger = require("./components/SelectItemTrigger.cjs");
|
|
|
10
10
|
const SelectOption = require("./components/SelectOption.cjs");
|
|
11
11
|
const SelectPlaceholder = require("./components/SelectPlaceholder.cjs");
|
|
12
12
|
const SortableMultiSelect = require("./components/SortableMultiSelect.cjs");
|
|
13
|
+
const useSelectFilter = require("./hooks/useSelectFilter.cjs");
|
|
13
14
|
exports.SelectCurrentEntitiesContext = contexts.SelectCurrentEntitiesContext;
|
|
14
15
|
exports.SelectHandleSelectContext = contexts.SelectHandleSelectContext;
|
|
15
16
|
exports.SelectIsSelectedContext = contexts.SelectIsSelectedContext;
|
|
16
17
|
exports.SelectOptionsContext = contexts.SelectOptionsContext;
|
|
18
|
+
exports.SelectOptionsFilterContext = contexts.SelectOptionsFilterContext;
|
|
17
19
|
exports.useSelectCurrentEntities = contexts.useSelectCurrentEntities;
|
|
18
20
|
exports.useSelectHandleSelect = contexts.useSelectHandleSelect;
|
|
19
21
|
exports.useSelectIsSelected = contexts.useSelectIsSelected;
|
|
20
22
|
exports.useSelectOptions = contexts.useSelectOptions;
|
|
23
|
+
exports.useSelectOptionsFilter = contexts.useSelectOptionsFilter;
|
|
21
24
|
exports.MultiSelect = MultiSelect.MultiSelect;
|
|
22
25
|
exports.Select = Select.Select;
|
|
23
26
|
exports.SelectNewItem = SelectNewItem.SelectNewItem;
|
|
@@ -27,4 +30,5 @@ exports.SelectItemTrigger = SelectItemTrigger.SelectItemTrigger;
|
|
|
27
30
|
exports.SelectOption = SelectOption.SelectOption;
|
|
28
31
|
exports.SelectPlaceholder = SelectPlaceholder.SelectPlaceholder;
|
|
29
32
|
exports.SortableMultiSelect = SortableMultiSelect.SortableMultiSelect;
|
|
33
|
+
exports.useSelectFilter = useSelectFilter.useSelectFilter;
|
|
30
34
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/production/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SelectCurrentEntitiesContext, SelectHandleSelectContext, SelectIsSelectedContext, SelectOptionsContext, useSelectCurrentEntities, useSelectHandleSelect, useSelectIsSelected, useSelectOptions } from "./contexts.js";
|
|
1
|
+
import { SelectCurrentEntitiesContext, SelectHandleSelectContext, SelectIsSelectedContext, SelectOptionsContext, SelectOptionsFilterContext, useSelectCurrentEntities, useSelectHandleSelect, useSelectIsSelected, useSelectOptions, useSelectOptionsFilter } from "./contexts.js";
|
|
2
2
|
import { MultiSelect } from "./components/MultiSelect.js";
|
|
3
3
|
import { Select } from "./components/Select.js";
|
|
4
4
|
import { SelectNewItem } from "./components/SelectNewItem.js";
|
|
@@ -8,6 +8,7 @@ import { SelectItemTrigger } from "./components/SelectItemTrigger.js";
|
|
|
8
8
|
import { SelectOption } from "./components/SelectOption.js";
|
|
9
9
|
import { SelectPlaceholder } from "./components/SelectPlaceholder.js";
|
|
10
10
|
import { SortableMultiSelect } from "./components/SortableMultiSelect.js";
|
|
11
|
+
import { useSelectFilter } from "./hooks/useSelectFilter.js";
|
|
11
12
|
export {
|
|
12
13
|
MultiSelect,
|
|
13
14
|
Select,
|
|
@@ -20,11 +21,14 @@ export {
|
|
|
20
21
|
SelectNewItem,
|
|
21
22
|
SelectOption,
|
|
22
23
|
SelectOptionsContext,
|
|
24
|
+
SelectOptionsFilterContext,
|
|
23
25
|
SelectPlaceholder,
|
|
24
26
|
SortableMultiSelect,
|
|
25
27
|
useSelectCurrentEntities,
|
|
28
|
+
useSelectFilter,
|
|
26
29
|
useSelectHandleSelect,
|
|
27
30
|
useSelectIsSelected,
|
|
28
|
-
useSelectOptions
|
|
31
|
+
useSelectOptions,
|
|
32
|
+
useSelectOptionsFilter
|
|
29
33
|
};
|
|
30
34
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import React, { ReactNode } from 'react';
|
|
2
2
|
import { SugaredQualifiedEntityList, SugaredRelativeEntityList } from '@contember/react-binding';
|
|
3
3
|
import { SelectEvents } from '../types';
|
|
4
|
+
import { SelectFilterFieldProps } from '../hooks';
|
|
4
5
|
export type MultiSelectProps = {
|
|
5
6
|
children: ReactNode;
|
|
6
7
|
field: SugaredRelativeEntityList['field'];
|
|
7
|
-
options
|
|
8
|
-
} & SelectEvents;
|
|
8
|
+
options?: SugaredQualifiedEntityList['entities'];
|
|
9
|
+
} & SelectFilterFieldProps & SelectEvents;
|
|
9
10
|
export declare const MultiSelect: React.NamedExoticComponent<{
|
|
10
11
|
children: ReactNode;
|
|
11
12
|
field: SugaredRelativeEntityList['field'];
|
|
12
|
-
options
|
|
13
|
-
} & SelectEvents>;
|
|
13
|
+
options?: string | import("@contember/react-binding").SugarableQualifiedEntityList | undefined;
|
|
14
|
+
} & SelectFilterFieldProps & SelectEvents>;
|
|
14
15
|
//# sourceMappingURL=MultiSelect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSelect.d.ts","sourceRoot":"","sources":["../../../src/components/MultiSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAwB,MAAM,OAAO,CAAA;AAE9D,OAAO,EAAsC,0BAA0B,EAAE,yBAAyB,EAAiB,MAAM,0BAA0B,CAAA;AAEnJ,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"MultiSelect.d.ts","sourceRoot":"","sources":["../../../src/components/MultiSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAwB,MAAM,OAAO,CAAA;AAE9D,OAAO,EAAsC,0BAA0B,EAAE,yBAAyB,EAAiB,MAAM,0BAA0B,CAAA;AAEnJ,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,sBAAsB,EAAmB,MAAM,UAAU,CAAA;AAElE,MAAM,MAAM,gBAAgB,GACzB;IACD,QAAQ,EAAE,SAAS,CAAA;IACnB,KAAK,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAA;IACzC,OAAO,CAAC,EAAE,0BAA0B,CAAC,UAAU,CAAC,CAAA;CAChD,GACC,sBAAsB,GACtB,YAAY,CAAA;AAEf,eAAO,MAAM,WAAW;cAPZ,SAAS;WACZ,yBAAyB,CAAC,OAAO,CAAC;;0CAiDzC,CAAA"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import React, { ReactNode } from 'react';
|
|
2
2
|
import { SugaredQualifiedEntityList, SugaredRelativeSingleEntity } from '@contember/react-binding';
|
|
3
3
|
import { SelectEvents } from '../types';
|
|
4
|
+
import { SelectFilterFieldProps } from '../hooks';
|
|
4
5
|
export type SelectProps = {
|
|
5
6
|
children: ReactNode;
|
|
6
7
|
field: SugaredRelativeSingleEntity['field'];
|
|
7
|
-
options
|
|
8
|
-
} & SelectEvents;
|
|
8
|
+
options?: SugaredQualifiedEntityList['entities'];
|
|
9
|
+
} & SelectFilterFieldProps & SelectEvents;
|
|
9
10
|
export declare const Select: React.NamedExoticComponent<{
|
|
10
11
|
children: ReactNode;
|
|
11
12
|
field: SugaredRelativeSingleEntity['field'];
|
|
12
|
-
options
|
|
13
|
-
} & SelectEvents>;
|
|
13
|
+
options?: string | import("@contember/react-binding").SugarableQualifiedEntityList | undefined;
|
|
14
|
+
} & SelectFilterFieldProps & SelectEvents>;
|
|
14
15
|
//# sourceMappingURL=Select.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../src/components/Select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAwB,MAAM,OAAO,CAAA;AAE9D,OAAO,EAAqC,0BAA0B,EAAE,2BAA2B,EAAa,MAAM,0BAA0B,CAAA;AAEhJ,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../src/components/Select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAwB,MAAM,OAAO,CAAA;AAE9D,OAAO,EAAqC,0BAA0B,EAAE,2BAA2B,EAAa,MAAM,0BAA0B,CAAA;AAEhJ,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,sBAAsB,EAAmB,MAAM,UAAU,CAAA;AAElE,MAAM,MAAM,WAAW,GACpB;IACD,QAAQ,EAAE,SAAS,CAAA;IACnB,KAAK,EAAE,2BAA2B,CAAC,OAAO,CAAC,CAAA;IAC3C,OAAO,CAAC,EAAE,0BAA0B,CAAC,UAAU,CAAC,CAAA;CAChD,GACC,sBAAsB,GACtB,YAAY,CAAA;AAEf,eAAO,MAAM,MAAM;cAPP,SAAS;WACZ,2BAA2B,CAAC,OAAO,CAAC;;0CAgD3C,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectDataView.d.ts","sourceRoot":"","sources":["../../../src/components/SelectDataView.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"SelectDataView.d.ts","sourceRoot":"","sources":["../../../src/components/SelectDataView.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAW,MAAM,OAAO,CAAA;AAEjD,OAAO,EAAE,aAAa,EAA2C,MAAM,2BAA2B,CAAA;AAElG,MAAM,MAAM,mBAAmB,GAC5B,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,GAC/B;IACD,QAAQ,EAAE,SAAS,CAAA;CACnB,CAAA;AAEF,eAAO,MAAM,cAAc,UAAW,mBAAmB,4CAiBxD,CAAA"}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import React, { ReactNode } from 'react';
|
|
2
2
|
import { SugaredQualifiedEntityList, SugaredRelativeEntityList, SugaredRelativeSingleEntity, SugaredRelativeSingleField } from '@contember/react-binding';
|
|
3
3
|
import { SelectEvents } from '../types';
|
|
4
|
+
import { SelectFilterFieldProps } from '../hooks';
|
|
4
5
|
export type SortableMultiSelectProps = {
|
|
5
6
|
children: ReactNode;
|
|
6
7
|
field: SugaredRelativeEntityList['field'];
|
|
7
|
-
options
|
|
8
|
+
options?: SugaredQualifiedEntityList['entities'];
|
|
8
9
|
sortableBy: SugaredRelativeSingleField['field'];
|
|
9
10
|
connectAt: SugaredRelativeSingleEntity['field'];
|
|
10
|
-
} & SelectEvents;
|
|
11
|
+
} & SelectFilterFieldProps & SelectEvents;
|
|
11
12
|
export declare const SortableMultiSelect: React.NamedExoticComponent<{
|
|
12
13
|
children: ReactNode;
|
|
13
14
|
field: SugaredRelativeEntityList['field'];
|
|
14
|
-
options
|
|
15
|
+
options?: string | import("@contember/react-binding").SugarableQualifiedEntityList | undefined;
|
|
15
16
|
sortableBy: SugaredRelativeSingleField['field'];
|
|
16
17
|
connectAt: SugaredRelativeSingleEntity['field'];
|
|
17
|
-
} & SelectEvents>;
|
|
18
|
+
} & SelectFilterFieldProps & SelectEvents>;
|
|
18
19
|
//# sourceMappingURL=SortableMultiSelect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SortableMultiSelect.d.ts","sourceRoot":"","sources":["../../../src/components/SortableMultiSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAwB,MAAM,OAAO,CAAA;AAE9D,OAAO,
|
|
1
|
+
{"version":3,"file":"SortableMultiSelect.d.ts","sourceRoot":"","sources":["../../../src/components/SortableMultiSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAwB,MAAM,OAAO,CAAA;AAE9D,OAAO,EAQN,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAE1B,MAAM,0BAA0B,CAAA;AAGjC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,sBAAsB,EAAmB,MAAM,UAAU,CAAA;AAElE,MAAM,MAAM,wBAAwB,GACjC;IACD,QAAQ,EAAE,SAAS,CAAA;IACnB,KAAK,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAA;IACzC,OAAO,CAAC,EAAE,0BAA0B,CAAC,UAAU,CAAC,CAAA;IAChD,UAAU,EAAE,0BAA0B,CAAC,OAAO,CAAC,CAAA;IAC/C,SAAS,EAAE,2BAA2B,CAAC,OAAO,CAAC,CAAA;CAC/C,GACC,sBAAsB,GACtB,YAAY,CAAA;AAEf,eAAO,MAAM,mBAAmB;cATpB,SAAS;WACZ,yBAAyB,CAAC,OAAO,CAAC;;gBAE7B,0BAA0B,CAAC,OAAO,CAAC;eACpC,2BAA2B,CAAC,OAAO,CAAC;0CAuE/C,CAAA"}
|
package/dist/types/contexts.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { EntityAccessor } from '@contember/react-binding';
|
|
2
|
+
import { DataViewFilterHandler, TextFilterArtifacts } from '@contember/react-dataview';
|
|
2
3
|
/** @internal */
|
|
3
4
|
export declare const SelectCurrentEntitiesContext: import("react").Context<EntityAccessor[]>;
|
|
4
5
|
export declare const useSelectCurrentEntities: () => EntityAccessor[];
|
|
@@ -12,4 +13,7 @@ export declare const useSelectHandleSelect: () => SelectHandler;
|
|
|
12
13
|
/** @internal */
|
|
13
14
|
export declare const SelectOptionsContext: import("react").Context<string | import("@contember/react-binding").SugarableQualifiedEntityList>;
|
|
14
15
|
export declare const useSelectOptions: () => string | import("@contember/react-binding").SugarableQualifiedEntityList;
|
|
16
|
+
/** @internal */
|
|
17
|
+
export declare const SelectOptionsFilterContext: import("react").Context<DataViewFilterHandler<TextFilterArtifacts> | undefined>;
|
|
18
|
+
export declare const useSelectOptionsFilter: () => DataViewFilterHandler<TextFilterArtifacts> | undefined;
|
|
15
19
|
//# sourceMappingURL=contexts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contexts.d.ts","sourceRoot":"","sources":["../../src/contexts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAA8B,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"contexts.d.ts","sourceRoot":"","sources":["../../src/contexts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAA8B,MAAM,0BAA0B,CAAA;AACrF,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAGtF,gBAAgB;AAChB,eAAO,MAAM,4BAA4B,2CAAmC,CAAA;AAC5E,eAAO,MAAM,wBAAwB,wBAAmC,CAAA;AAKxE,gBAAgB;AAChB,eAAO,MAAM,uBAAuB,mCAF4B,cAAc,KAAK,OAAO,CAExB,CAAA;AAClE,eAAO,MAAM,mBAAmB,iBAHgC,cAAc,KAAK,OAGrB,CAAA;AAE9D,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,KAAK,IAAI,CAAA;AAEvG,gBAAgB;AAChB,eAAO,MAAM,yBAAyB,wCAAgC,CAAA;AACtE,eAAO,MAAM,qBAAqB,qBAAgC,CAAA;AAGlE,gBAAgB;AAChB,eAAO,MAAM,oBAAoB,mGAA2B,CAAA;AAC5D,eAAO,MAAM,gBAAgB,gFAA2B,CAAA;AAGxD,gBAAgB;AAChB,eAAO,MAAM,0BAA0B,iFAAiC,CAAA;AACxE,eAAO,MAAM,sBAAsB,8DAAiC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FieldMarker, MeaningfulMarker, SugaredRelativeSingleField } from '@contember/react-binding';
|
|
2
|
+
export type SelectFilterFieldProps = {
|
|
3
|
+
filterField?: SugaredRelativeSingleField['field'] | SugaredRelativeSingleField['field'][];
|
|
4
|
+
};
|
|
5
|
+
export declare const useSelectFilter: ({ filterField, marker }: SelectFilterFieldProps & {
|
|
6
|
+
marker: Exclude<MeaningfulMarker, FieldMarker>;
|
|
7
|
+
}) => import("@contember/react-dataview").DataViewFilterHandler<import("@contember/react-dataview").TextFilterArtifacts> | undefined;
|
|
8
|
+
//# sourceMappingURL=useSelectFilter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSelectFilter.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSelectFilter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAwB,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAA;AAI1H,MAAM,MAAM,sBAAsB,GAAG;IACpC,WAAW,CAAC,EAAE,0BAA0B,CAAC,OAAO,CAAC,GAAG,0BAA0B,CAAC,OAAO,CAAC,EAAE,CAAA;CACzF,CAAA;AAED,eAAO,MAAM,eAAe;YACnB,QAAQ,gBAAgB,EAAE,WAAW,CAAC;oIAS9C,CAAA"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA"}
|