@dxos/react-ui-form 0.8.1-main.ae460ac → 0.8.1-staging.391c573
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/lib/browser/index.mjs +51 -2
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +51 -2
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +51 -2
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/components/FieldEditor/FieldEditor.d.ts +2 -1
- package/dist/types/src/components/FieldEditor/FieldEditor.d.ts.map +1 -1
- package/dist/types/src/components/Form/ArrayField.d.ts +2 -1
- package/dist/types/src/components/Form/ArrayField.d.ts.map +1 -1
- package/dist/types/src/components/Form/Defaults.d.ts +6 -5
- package/dist/types/src/components/Form/Defaults.d.ts.map +1 -1
- package/dist/types/src/components/Form/Form.d.ts +2 -2
- package/dist/types/src/components/Form/Form.d.ts.map +1 -1
- package/dist/types/src/components/Form/Form.stories.d.ts +7 -7
- package/dist/types/src/components/Form/FormActions.d.ts +2 -1
- package/dist/types/src/components/Form/FormActions.d.ts.map +1 -1
- package/dist/types/src/components/Form/FormContent.d.ts +3 -2
- package/dist/types/src/components/Form/FormContent.d.ts.map +1 -1
- package/dist/types/src/components/Form/FormContext.d.ts +1 -1
- package/dist/types/src/components/Form/FormContext.d.ts.map +1 -1
- package/dist/types/src/components/Form/Input.d.ts +2 -2
- package/dist/types/src/components/Form/Input.d.ts.map +1 -1
- package/dist/types/src/components/Form/custom/GeoPointInput.d.ts +2 -1
- package/dist/types/src/components/Form/custom/GeoPointInput.d.ts.map +1 -1
- package/dist/types/src/components/Form/custom/SelectOptionsInput.d.ts +2 -1
- package/dist/types/src/components/Form/custom/SelectOptionsInput.d.ts.map +1 -1
- package/dist/types/src/components/Form/custom/TupleInput.d.ts +2 -1
- package/dist/types/src/components/Form/custom/TupleInput.d.ts.map +1 -1
- package/dist/types/src/components/ViewEditor/Test.stories.d.ts +2 -1
- package/dist/types/src/components/ViewEditor/Test.stories.d.ts.map +1 -1
- package/dist/types/src/components/ViewEditor/ViewEditor.d.ts +2 -1
- package/dist/types/src/components/ViewEditor/ViewEditor.d.ts.map +1 -1
- package/dist/types/src/components/deprecated/Form.d.ts +2 -1
- package/dist/types/src/components/deprecated/Form.d.ts.map +1 -1
- package/dist/types/src/components/deprecated/Form.stories.d.ts +2 -1
- package/dist/types/src/components/deprecated/Form.stories.d.ts.map +1 -1
- package/dist/types/src/components/deprecated/FormInput.d.ts +2 -2
- package/dist/types/src/components/deprecated/FormInput.d.ts.map +1 -1
- package/dist/types/src/components/testing.d.ts +3 -3
- package/dist/types/src/components/testing.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +1 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/package.json +26 -26
- package/src/components/ViewEditor/ViewEditor.tsx +71 -2
- package/src/translations.ts +1 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/react-ui-form",
|
|
3
|
-
"version": "0.8.1-
|
|
3
|
+
"version": "0.8.1-staging.391c573",
|
|
4
4
|
"description": "Data components.",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -28,46 +28,46 @@
|
|
|
28
28
|
"@radix-ui/react-context": "1.1.1",
|
|
29
29
|
"date-fns": "^3.3.1",
|
|
30
30
|
"jsonpath": "^1.1.1",
|
|
31
|
-
"@dxos/async": "0.8.1-
|
|
32
|
-
"@dxos/echo-
|
|
33
|
-
"@dxos/debug": "0.8.1-
|
|
34
|
-
"@dxos/
|
|
35
|
-
"@dxos/invariant": "0.8.1-
|
|
36
|
-
"@dxos/keys": "0.8.1-
|
|
37
|
-
"@dxos/
|
|
38
|
-
"@dxos/log": "0.8.1-
|
|
39
|
-
"@dxos/
|
|
40
|
-
"@dxos/react-
|
|
41
|
-
"@dxos/
|
|
42
|
-
"@dxos/react-ui-
|
|
43
|
-
"@dxos/react-
|
|
44
|
-
"@dxos/schema": "0.8.1-
|
|
45
|
-
"@dxos/util": "0.8.1-
|
|
31
|
+
"@dxos/async": "0.8.1-staging.391c573",
|
|
32
|
+
"@dxos/echo-schema": "0.8.1-staging.391c573",
|
|
33
|
+
"@dxos/debug": "0.8.1-staging.391c573",
|
|
34
|
+
"@dxos/effect": "0.8.1-staging.391c573",
|
|
35
|
+
"@dxos/invariant": "0.8.1-staging.391c573",
|
|
36
|
+
"@dxos/keys": "0.8.1-staging.391c573",
|
|
37
|
+
"@dxos/echo-db": "0.8.1-staging.391c573",
|
|
38
|
+
"@dxos/log": "0.8.1-staging.391c573",
|
|
39
|
+
"@dxos/live-object": "0.8.1-staging.391c573",
|
|
40
|
+
"@dxos/react-client": "0.8.1-staging.391c573",
|
|
41
|
+
"@dxos/react-ui-list": "0.8.1-staging.391c573",
|
|
42
|
+
"@dxos/react-ui-pickers": "0.8.1-staging.391c573",
|
|
43
|
+
"@dxos/react-ui-types": "0.8.1-staging.391c573",
|
|
44
|
+
"@dxos/schema": "0.8.1-staging.391c573",
|
|
45
|
+
"@dxos/util": "0.8.1-staging.391c573"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@phosphor-icons/react": "^2.1.5",
|
|
49
49
|
"@types/jsonpath": "^0.2.4",
|
|
50
50
|
"@types/react": "~18.2.0",
|
|
51
51
|
"@types/react-dom": "~18.2.0",
|
|
52
|
-
"effect": "
|
|
52
|
+
"effect": "3.13.3",
|
|
53
53
|
"fast-check": "^3.19.0",
|
|
54
54
|
"react": "~18.2.0",
|
|
55
55
|
"react-dom": "~18.2.0",
|
|
56
56
|
"vite": "5.4.7",
|
|
57
|
-
"@dxos/
|
|
58
|
-
"@dxos/
|
|
59
|
-
"@dxos/react-ui-syntax-highlighter": "0.8.1-
|
|
60
|
-
"@dxos/react-ui": "0.8.1-
|
|
61
|
-
"@dxos/react-ui-theme": "0.8.1-
|
|
62
|
-
"@dxos/storybook-utils": "0.8.1-
|
|
57
|
+
"@dxos/random": "0.8.1-staging.391c573",
|
|
58
|
+
"@dxos/echo-signals": "0.8.1-staging.391c573",
|
|
59
|
+
"@dxos/react-ui-syntax-highlighter": "0.8.1-staging.391c573",
|
|
60
|
+
"@dxos/react-ui": "0.8.1-staging.391c573",
|
|
61
|
+
"@dxos/react-ui-theme": "0.8.1-staging.391c573",
|
|
62
|
+
"@dxos/storybook-utils": "0.8.1-staging.391c573"
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|
|
65
65
|
"@phosphor-icons/react": "^2.1.5",
|
|
66
|
-
"effect": "
|
|
66
|
+
"effect": "3.13.3",
|
|
67
67
|
"react": "~18.2.0",
|
|
68
68
|
"react-dom": "~18.2.0",
|
|
69
|
-
"@dxos/react-ui": "0.8.1-
|
|
70
|
-
"@dxos/react-ui-theme": "0.8.1-
|
|
69
|
+
"@dxos/react-ui": "0.8.1-staging.391c573",
|
|
70
|
+
"@dxos/react-ui-theme": "0.8.1-staging.391c573"
|
|
71
71
|
},
|
|
72
72
|
"publishConfig": {
|
|
73
73
|
"access": "public"
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import React, { useCallback, useMemo, useState } from 'react';
|
|
6
6
|
|
|
7
7
|
import { type SchemaRegistry } from '@dxos/echo-db';
|
|
8
|
-
import { AST, Format, type EchoSchema, S } from '@dxos/echo-schema';
|
|
8
|
+
import { AST, Format, type EchoSchema, S, type JsonProp } from '@dxos/echo-schema';
|
|
9
9
|
import { IconButton, type ThemedClassName, useTranslation } from '@dxos/react-ui';
|
|
10
10
|
import { List } from '@dxos/react-ui-list';
|
|
11
11
|
import { ghostHover, inputTextLabel, mx } from '@dxos/react-ui-theme';
|
|
@@ -88,6 +88,16 @@ export const ViewEditor = ({
|
|
|
88
88
|
setField(field);
|
|
89
89
|
}, [view]);
|
|
90
90
|
|
|
91
|
+
const handleDelete = useCallback(
|
|
92
|
+
(fieldId: string) => {
|
|
93
|
+
if (fieldId === field?.id) {
|
|
94
|
+
setField(undefined);
|
|
95
|
+
}
|
|
96
|
+
onDelete(fieldId);
|
|
97
|
+
},
|
|
98
|
+
[onDelete, field],
|
|
99
|
+
);
|
|
100
|
+
|
|
91
101
|
const handleMove = useCallback(
|
|
92
102
|
(fromIndex: number, toIndex: number) => {
|
|
93
103
|
// NOTE(ZaymonFC): Using arrayMove here causes a race condition with the kanban model.
|
|
@@ -101,6 +111,24 @@ export const ViewEditor = ({
|
|
|
101
111
|
|
|
102
112
|
const handleClose = useCallback(() => setField(undefined), []);
|
|
103
113
|
|
|
114
|
+
const hiddenProperties = projection.getHiddenProperties();
|
|
115
|
+
|
|
116
|
+
const handleHide = useCallback(
|
|
117
|
+
(fieldId: string) => {
|
|
118
|
+
setField(undefined);
|
|
119
|
+
projection.hideFieldProjection(fieldId);
|
|
120
|
+
},
|
|
121
|
+
[projection],
|
|
122
|
+
);
|
|
123
|
+
|
|
124
|
+
const handleShow = useCallback(
|
|
125
|
+
(property: string) => {
|
|
126
|
+
setField(undefined);
|
|
127
|
+
projection.showFieldProjection(property as JsonProp);
|
|
128
|
+
},
|
|
129
|
+
[projection],
|
|
130
|
+
);
|
|
131
|
+
|
|
104
132
|
return (
|
|
105
133
|
<div role='none' className={mx('flex flex-col w-full divide-y divide-separator', classNames)}>
|
|
106
134
|
<Form<ViewMetaType> autoSave schema={ViewMetaSchema} values={viewValues} onSave={handleViewUpdate} />
|
|
@@ -131,13 +159,54 @@ export const ViewEditor = ({
|
|
|
131
159
|
<List.Item<FieldType> key={field.id} item={field} classNames={mx(grid, ghostHover, 'cursor-pointer')}>
|
|
132
160
|
<List.ItemDragHandle />
|
|
133
161
|
<List.ItemTitle onClick={() => handleSelect(field)}>{field.path}</List.ItemTitle>
|
|
134
|
-
<
|
|
162
|
+
<div className='flex items-center gap-2 -ml-4'>
|
|
163
|
+
<List.ItemButton
|
|
164
|
+
icon='ph--eye-slash--regular'
|
|
165
|
+
disabled={view.fields.length <= 1}
|
|
166
|
+
onClick={() => handleHide(field.id)}
|
|
167
|
+
/>
|
|
168
|
+
<List.ItemDeleteButton
|
|
169
|
+
icon='ph--trash--regular'
|
|
170
|
+
disabled={view.fields.length <= 1}
|
|
171
|
+
onClick={() => handleDelete(field.id)}
|
|
172
|
+
/>
|
|
173
|
+
</div>
|
|
135
174
|
</List.Item>
|
|
136
175
|
))}
|
|
137
176
|
</div>
|
|
138
177
|
</>
|
|
139
178
|
)}
|
|
140
179
|
</List.Root>
|
|
180
|
+
|
|
181
|
+
{hiddenProperties.length > 0 && (
|
|
182
|
+
<div>
|
|
183
|
+
<div role='none' className='p-2'>
|
|
184
|
+
<label className={mx(inputTextLabel)}>{t('hidden fields label')}</label>
|
|
185
|
+
</div>
|
|
186
|
+
|
|
187
|
+
<List.Root<string>
|
|
188
|
+
items={hiddenProperties}
|
|
189
|
+
isItem={(item): item is string => typeof item === 'string'}
|
|
190
|
+
getId={(property) => property}
|
|
191
|
+
>
|
|
192
|
+
{({ items: properties }) => (
|
|
193
|
+
<div role='list' className='flex flex-col w-full'>
|
|
194
|
+
{properties?.map((property) => (
|
|
195
|
+
<List.Item<string>
|
|
196
|
+
key={property}
|
|
197
|
+
item={property}
|
|
198
|
+
classNames={mx(grid, ghostHover, 'cursor-pointer')}
|
|
199
|
+
>
|
|
200
|
+
<div />
|
|
201
|
+
<List.ItemTitle>{property}</List.ItemTitle>
|
|
202
|
+
<List.ItemButton icon='ph--eye--regular' onClick={() => handleShow(property)} />
|
|
203
|
+
</List.Item>
|
|
204
|
+
))}
|
|
205
|
+
</div>
|
|
206
|
+
)}
|
|
207
|
+
</List.Root>
|
|
208
|
+
</div>
|
|
209
|
+
)}
|
|
141
210
|
</div>
|
|
142
211
|
|
|
143
212
|
{field && (
|