payload-intl 1.2.2 → 1.2.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/README.md +21 -18
- package/dist/components/MessageFormField.d.ts +15 -0
- package/dist/components/MessageFormField.d.ts.map +1 -0
- package/dist/components/{MessageController.js → MessageFormField.js} +5 -3
- package/dist/components/MessageFormField.js.map +1 -0
- package/dist/components/MessagesForm.d.ts +3 -1
- package/dist/components/MessagesForm.d.ts.map +1 -1
- package/dist/components/MessagesForm.js +25 -36
- package/dist/components/MessagesForm.js.map +1 -1
- package/dist/components/{MessageFormContext.d.ts → MessagesFormProvider.d.ts} +6 -2
- package/dist/components/MessagesFormProvider.d.ts.map +1 -0
- package/dist/components/{MessageFormContext.js → MessagesFormProvider.js} +8 -4
- package/dist/components/MessagesFormProvider.js.map +1 -0
- package/dist/components/MessagesLink.js +5 -2
- package/dist/components/MessagesLink.js.map +1 -1
- package/dist/components/MessagesView.d.ts +1 -1
- package/dist/components/MessagesView.d.ts.map +1 -1
- package/dist/components/MessagesView.js +13 -4
- package/dist/components/MessagesView.js.map +1 -1
- package/dist/components/actions/CopyMessages.d.ts +2 -0
- package/dist/components/actions/CopyMessages.d.ts.map +1 -0
- package/dist/components/actions/{Move.js → CopyMessages.js} +6 -6
- package/dist/components/actions/CopyMessages.js.map +1 -0
- package/dist/components/actions/JsonImport.d.ts +4 -1
- package/dist/components/actions/JsonImport.d.ts.map +1 -1
- package/dist/components/actions/JsonImport.js +7 -25
- package/dist/components/actions/JsonImport.js.map +1 -1
- package/dist/components/hooks/useHtmlLexicalAdapter.d.ts +12 -0
- package/dist/components/hooks/useHtmlLexicalAdapter.d.ts.map +1 -0
- package/dist/components/hooks/useHtmlLexicalAdapter.js +63 -0
- package/dist/components/hooks/useHtmlLexicalAdapter.js.map +1 -0
- package/dist/components/hooks/useMessagesFormSubmit.d.ts +11 -0
- package/dist/components/hooks/useMessagesFormSubmit.d.ts.map +1 -0
- package/dist/components/hooks/useMessagesFormSubmit.js +44 -0
- package/dist/components/hooks/useMessagesFormSubmit.js.map +1 -0
- package/dist/components/inputs/FieldWrapper.d.ts +9 -0
- package/dist/components/inputs/FieldWrapper.d.ts.map +1 -0
- package/dist/components/inputs/FieldWrapper.js +24 -0
- package/dist/components/inputs/FieldWrapper.js.map +1 -0
- package/dist/components/inputs/{InputWrapper.module.css → FieldWrapper.module.css} +2 -12
- package/dist/components/inputs/LexicalInput.d.ts +2 -13
- package/dist/components/inputs/LexicalInput.d.ts.map +1 -1
- package/dist/components/inputs/LexicalInput.js +4 -63
- package/dist/components/inputs/LexicalInput.js.map +1 -1
- package/dist/components/inputs/MessageInput.d.ts +6 -3
- package/dist/components/inputs/MessageInput.d.ts.map +1 -1
- package/dist/components/inputs/MessageInput.js +47 -43
- package/dist/components/inputs/MessageInput.js.map +1 -1
- package/dist/components/inputs/MessageInput.module.css +23 -4
- package/dist/components/inputs/ReferencePopover.d.ts +7 -0
- package/dist/components/inputs/ReferencePopover.d.ts.map +1 -0
- package/dist/components/inputs/ReferencePopover.js +42 -0
- package/dist/components/inputs/ReferencePopover.js.map +1 -0
- package/dist/components/inputs/ReferencePopover.module.css +70 -0
- package/dist/components/inputs/SingleLinePlugin.d.ts +2 -0
- package/dist/components/inputs/SingleLinePlugin.d.ts.map +1 -0
- package/dist/components/inputs/SingleLinePlugin.js +24 -0
- package/dist/components/inputs/SingleLinePlugin.js.map +1 -0
- package/dist/components/inputs/variables/VariableChip.d.ts.map +1 -1
- package/dist/components/inputs/variables/VariableChip.js +31 -32
- package/dist/components/inputs/variables/VariableChip.js.map +1 -1
- package/dist/components/inputs/variables/VariableChip.module.css +3 -3
- package/dist/components/inputs/variables/VariableSuggestion.d.ts +4 -0
- package/dist/components/inputs/variables/VariableSuggestion.d.ts.map +1 -0
- package/dist/components/inputs/variables/VariableSuggestion.js +24 -0
- package/dist/components/inputs/variables/VariableSuggestion.js.map +1 -0
- package/dist/components/inputs/variables/editors/PluralVariableEditor.d.ts.map +1 -1
- package/dist/components/inputs/variables/editors/PluralVariableEditor.js +62 -60
- package/dist/components/inputs/variables/editors/PluralVariableEditor.js.map +1 -1
- package/dist/components/inputs/variables/editors/PluralVariableEditor.module.css +4 -4
- package/dist/components/inputs/variables/editors/TemporalVariableEditor.d.ts +11 -0
- package/dist/components/inputs/variables/editors/TemporalVariableEditor.d.ts.map +1 -0
- package/dist/components/inputs/variables/editors/{DateVariableEditor.js → TemporalVariableEditor.js} +3 -3
- package/dist/components/inputs/variables/editors/TemporalVariableEditor.js.map +1 -0
- package/dist/components/inputs/variables/pickers/NumericVariableEditor.d.ts +7 -0
- package/dist/components/inputs/variables/pickers/{NumericVariablePicker.d.ts.map → NumericVariableEditor.d.ts.map} +1 -1
- package/dist/components/inputs/variables/pickers/{NumericVariablePicker.js → NumericVariableEditor.js} +15 -9
- package/dist/components/inputs/variables/pickers/NumericVariableEditor.js.map +1 -0
- package/dist/components/inputs/variables/pickers/{NumericVariablePicker.module.css → NumericVariableEditor.module.css} +3 -3
- package/dist/components/inputs/variables/pickers/TemporalVariablePicker.d.ts +7 -0
- package/dist/components/inputs/variables/pickers/TemporalVariablePicker.d.ts.map +1 -0
- package/dist/components/inputs/variables/pickers/TemporalVariablePicker.js +57 -0
- package/dist/components/inputs/variables/pickers/TemporalVariablePicker.js.map +1 -0
- package/dist/components/inputs/variables/pickers/{TemporalElementEditor.module.css → TemporalVariablePicker.module.css} +3 -3
- package/dist/components/layout/GroupStatusDot.d.ts +6 -0
- package/dist/components/layout/GroupStatusDot.d.ts.map +1 -0
- package/dist/components/layout/GroupStatusDot.js +24 -0
- package/dist/components/layout/GroupStatusDot.js.map +1 -0
- package/dist/components/layout/MessageField.d.ts +2 -1
- package/dist/components/layout/MessageField.d.ts.map +1 -1
- package/dist/components/layout/MessageField.js +52 -33
- package/dist/components/layout/MessageField.js.map +1 -1
- package/dist/components/layout/MessageField.module.css +21 -10
- package/dist/components/layout/MessagesTabs.d.ts.map +1 -1
- package/dist/components/layout/MessagesTabs.js +3 -5
- package/dist/components/layout/MessagesTabs.js.map +1 -1
- package/dist/components/layout/MessagesTree.d.ts +1 -1
- package/dist/components/layout/MessagesTree.d.ts.map +1 -1
- package/dist/components/layout/MessagesTree.js +33 -43
- package/dist/components/layout/MessagesTree.js.map +1 -1
- package/dist/components/layout/MessagesTree.module.css +10 -5
- package/dist/components/layout/StatusDot.d.ts +7 -0
- package/dist/components/layout/StatusDot.d.ts.map +1 -0
- package/dist/components/layout/StatusDot.js +12 -0
- package/dist/components/layout/StatusDot.js.map +1 -0
- package/dist/components/layout/StatusDot.module.css +16 -0
- package/dist/const.d.ts +2 -2
- package/dist/const.js +1 -1
- package/dist/entities.d.ts +1 -1
- package/dist/entities.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internals/index.d.ts +30 -0
- package/dist/internals/index.d.ts.map +1 -0
- package/dist/internals/index.js +81 -0
- package/dist/internals/index.js.map +1 -0
- package/dist/internals/procedure.d.ts.map +1 -0
- package/dist/{_common → internals}/procedure.js +1 -0
- package/dist/internals/procedure.js.map +1 -0
- package/dist/internals/urls.d.ts.map +1 -0
- package/dist/internals/urls.js.map +1 -0
- package/dist/internals/utils.d.ts +8 -0
- package/dist/internals/utils.d.ts.map +1 -0
- package/dist/{_common → internals}/utils.js +20 -5
- package/dist/internals/utils.js.map +1 -0
- package/dist/utils/sanitize.d.ts +7 -6
- package/dist/utils/sanitize.d.ts.map +1 -1
- package/dist/utils/sanitize.js +11 -8
- package/dist/utils/sanitize.js.map +1 -1
- package/package.json +4 -3
- package/dist/_common/index.d.ts +0 -17
- package/dist/_common/index.d.ts.map +0 -1
- package/dist/_common/index.js +0 -27
- package/dist/_common/index.js.map +0 -1
- package/dist/_common/procedure.d.ts.map +0 -1
- package/dist/_common/procedure.js.map +0 -1
- package/dist/_common/urls.d.ts.map +0 -1
- package/dist/_common/urls.js.map +0 -1
- package/dist/_common/utils.d.ts +0 -5
- package/dist/_common/utils.d.ts.map +0 -1
- package/dist/_common/utils.js.map +0 -1
- package/dist/components/MessageController.d.ts +0 -13
- package/dist/components/MessageController.d.ts.map +0 -1
- package/dist/components/MessageController.js.map +0 -1
- package/dist/components/MessageFormContext.d.ts.map +0 -1
- package/dist/components/MessageFormContext.js.map +0 -1
- package/dist/components/actions/Move.d.ts +0 -2
- package/dist/components/actions/Move.d.ts.map +0 -1
- package/dist/components/actions/Move.js.map +0 -1
- package/dist/components/inputs/InputWrapper.d.ts +0 -8
- package/dist/components/inputs/InputWrapper.d.ts.map +0 -1
- package/dist/components/inputs/InputWrapper.js +0 -34
- package/dist/components/inputs/InputWrapper.js.map +0 -1
- package/dist/components/inputs/variables/editors/DateVariableEditor.d.ts +0 -10
- package/dist/components/inputs/variables/editors/DateVariableEditor.d.ts.map +0 -1
- package/dist/components/inputs/variables/editors/DateVariableEditor.js.map +0 -1
- package/dist/components/inputs/variables/editors/TimeVariableEditor.d.ts +0 -10
- package/dist/components/inputs/variables/editors/TimeVariableEditor.d.ts.map +0 -1
- package/dist/components/inputs/variables/editors/TimeVariableEditor.js +0 -15
- package/dist/components/inputs/variables/editors/TimeVariableEditor.js.map +0 -1
- package/dist/components/inputs/variables/pickers/NumericVariablePicker.d.ts +0 -7
- package/dist/components/inputs/variables/pickers/NumericVariablePicker.js.map +0 -1
- package/dist/components/inputs/variables/pickers/TemporalElementEditor.d.ts +0 -7
- package/dist/components/inputs/variables/pickers/TemporalElementEditor.d.ts.map +0 -1
- package/dist/components/inputs/variables/pickers/TemporalElementEditor.js +0 -58
- package/dist/components/inputs/variables/pickers/TemporalElementEditor.js.map +0 -1
- /package/dist/components/actions/{Move.module.css → CopyMessages.module.css} +0 -0
- /package/dist/{_common → internals}/procedure.d.ts +0 -0
- /package/dist/{_common → internals}/urls.d.ts +0 -0
- /package/dist/{_common → internals}/urls.js +0 -0
|
@@ -1,25 +1,44 @@
|
|
|
1
1
|
.editor {
|
|
2
2
|
position: relative;
|
|
3
|
+
display: grid;
|
|
4
|
+
align-items: center;
|
|
3
5
|
min-height: 2rem;
|
|
4
6
|
font-size: var(--font-size-large);
|
|
5
7
|
}
|
|
6
8
|
|
|
9
|
+
.readOnly {
|
|
10
|
+
opacity: 0.7;
|
|
11
|
+
cursor: default;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.multiline {
|
|
15
|
+
min-height: 4rem;
|
|
16
|
+
}
|
|
17
|
+
|
|
7
18
|
.menuAnchor {
|
|
8
19
|
z-index: 50;
|
|
9
20
|
}
|
|
10
21
|
|
|
11
22
|
.contentEditable {
|
|
12
23
|
outline: none;
|
|
24
|
+
border-radius: var(--style-radius-m);
|
|
25
|
+
background-color: var(--theme-elevation-0);
|
|
26
|
+
border: 1px solid var(--theme-elevation-300);
|
|
27
|
+
padding-block: 0.25rem;
|
|
28
|
+
padding-inline: 0.75rem;
|
|
29
|
+
height: 100%;
|
|
13
30
|
}
|
|
14
31
|
|
|
15
32
|
.contentEditable:focus {
|
|
16
33
|
outline: none;
|
|
34
|
+
border-color: var(--theme-elevation-600);
|
|
17
35
|
}
|
|
18
36
|
|
|
19
|
-
.
|
|
20
|
-
|
|
37
|
+
.contentEditableError {
|
|
38
|
+
border-color: var(--theme-error-400);
|
|
39
|
+
background-color: var(--theme-error-100);
|
|
21
40
|
}
|
|
22
41
|
|
|
23
|
-
.contentEditable
|
|
24
|
-
margin
|
|
42
|
+
.contentEditable p {
|
|
43
|
+
margin: 0;
|
|
25
44
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
|
+
export interface ReferencePopoverProps {
|
|
3
|
+
reference?: string;
|
|
4
|
+
children: ReactElement;
|
|
5
|
+
}
|
|
6
|
+
export declare function ReferencePopover({ reference, children, }: ReferencePopoverProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=ReferencePopover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReferencePopover.d.ts","sourceRoot":"","sources":["../../../src/components/inputs/ReferencePopover.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAI1C,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,QAAQ,GACT,EAAE,qBAAqB,2CAqBvB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Popover } from '@base-ui/react/popover';
|
|
3
|
+
import { IconX } from '@tabler/icons-react';
|
|
4
|
+
import styles from './ReferencePopover.module.css';
|
|
5
|
+
export function ReferencePopover({ reference, children }) {
|
|
6
|
+
if (!reference) return children;
|
|
7
|
+
return /*#__PURE__*/ _jsxs(Popover.Root, {
|
|
8
|
+
children: [
|
|
9
|
+
/*#__PURE__*/ _jsx(Popover.Trigger, {
|
|
10
|
+
nativeButton: false,
|
|
11
|
+
render: children
|
|
12
|
+
}),
|
|
13
|
+
/*#__PURE__*/ _jsx(Popover.Portal, {
|
|
14
|
+
children: /*#__PURE__*/ _jsx(Popover.Positioner, {
|
|
15
|
+
align: "start",
|
|
16
|
+
side: "top",
|
|
17
|
+
sideOffset: 4,
|
|
18
|
+
children: /*#__PURE__*/ _jsxs(Popover.Popup, {
|
|
19
|
+
className: styles.popup,
|
|
20
|
+
initialFocus: false,
|
|
21
|
+
onMouseDown: (e)=>e.preventDefault(),
|
|
22
|
+
children: [
|
|
23
|
+
/*#__PURE__*/ _jsx(Popover.Close, {
|
|
24
|
+
className: styles.dismiss,
|
|
25
|
+
type: "button",
|
|
26
|
+
children: /*#__PURE__*/ _jsx(IconX, {
|
|
27
|
+
size: 14
|
|
28
|
+
})
|
|
29
|
+
}),
|
|
30
|
+
/*#__PURE__*/ _jsx("p", {
|
|
31
|
+
className: styles.text,
|
|
32
|
+
children: reference
|
|
33
|
+
})
|
|
34
|
+
]
|
|
35
|
+
})
|
|
36
|
+
})
|
|
37
|
+
})
|
|
38
|
+
]
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=ReferencePopover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/inputs/ReferencePopover.tsx"],"sourcesContent":["import { Popover } from '@base-ui/react/popover';\n\nimport { IconX } from '@tabler/icons-react';\nimport type { ReactElement } from 'react';\n\nimport styles from './ReferencePopover.module.css';\n\nexport interface ReferencePopoverProps {\n reference?: string;\n children: ReactElement;\n}\n\nexport function ReferencePopover({\n reference,\n children,\n}: ReferencePopoverProps) {\n if (!reference) return children;\n return (\n <Popover.Root>\n <Popover.Trigger nativeButton={false} render={children} />\n <Popover.Portal>\n <Popover.Positioner align=\"start\" side=\"top\" sideOffset={4}>\n <Popover.Popup\n className={styles.popup}\n initialFocus={false}\n onMouseDown={(e) => e.preventDefault()}\n >\n <Popover.Close className={styles.dismiss} type=\"button\">\n <IconX size={14} />\n </Popover.Close>\n <p className={styles.text}>{reference}</p>\n </Popover.Popup>\n </Popover.Positioner>\n </Popover.Portal>\n </Popover.Root>\n );\n}\n"],"names":["Popover","IconX","styles","ReferencePopover","reference","children","Root","Trigger","nativeButton","render","Portal","Positioner","align","side","sideOffset","Popup","className","popup","initialFocus","onMouseDown","e","preventDefault","Close","dismiss","type","size","p","text"],"mappings":";AAAA,SAASA,OAAO,QAAQ,yBAAyB;AAEjD,SAASC,KAAK,QAAQ,sBAAsB;AAG5C,OAAOC,YAAY,gCAAgC;AAOnD,OAAO,SAASC,iBAAiB,EAC/BC,SAAS,EACTC,QAAQ,EACc;IACtB,IAAI,CAACD,WAAW,OAAOC;IACvB,qBACE,MAACL,QAAQM,IAAI;;0BACX,KAACN,QAAQO,OAAO;gBAACC,cAAc;gBAAOC,QAAQJ;;0BAC9C,KAACL,QAAQU,MAAM;0BACb,cAAA,KAACV,QAAQW,UAAU;oBAACC,OAAM;oBAAQC,MAAK;oBAAMC,YAAY;8BACvD,cAAA,MAACd,QAAQe,KAAK;wBACZC,WAAWd,OAAOe,KAAK;wBACvBC,cAAc;wBACdC,aAAa,CAACC,IAAMA,EAAEC,cAAc;;0CAEpC,KAACrB,QAAQsB,KAAK;gCAACN,WAAWd,OAAOqB,OAAO;gCAAEC,MAAK;0CAC7C,cAAA,KAACvB;oCAAMwB,MAAM;;;0CAEf,KAACC;gCAAEV,WAAWd,OAAOyB,IAAI;0CAAGvB;;;;;;;;AAMxC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
.popup {
|
|
2
|
+
z-index: 50;
|
|
3
|
+
position: relative;
|
|
4
|
+
max-height: 8rem;
|
|
5
|
+
overflow-y: auto;
|
|
6
|
+
border-radius: var(--style-radius-m);
|
|
7
|
+
border: 1px solid var(--theme-border-color);
|
|
8
|
+
background-color: var(--theme-elevation-50);
|
|
9
|
+
padding: 0.5rem 2rem 0.5rem 0.75rem;
|
|
10
|
+
box-shadow:
|
|
11
|
+
0 4px 6px -1px rgb(0 0 0 / 0.1),
|
|
12
|
+
0 2px 4px -2px rgb(0 0 0 / 0.1);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.popup[data-open] {
|
|
16
|
+
animation: popoverIn 150ms ease-out;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.popup[data-closed] {
|
|
20
|
+
animation: popoverOut 100ms ease-in;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@keyframes popoverIn {
|
|
24
|
+
from {
|
|
25
|
+
opacity: 0;
|
|
26
|
+
transform: translateY(4px);
|
|
27
|
+
}
|
|
28
|
+
to {
|
|
29
|
+
opacity: 1;
|
|
30
|
+
transform: translateY(0);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@keyframes popoverOut {
|
|
35
|
+
from {
|
|
36
|
+
opacity: 1;
|
|
37
|
+
transform: translateY(0);
|
|
38
|
+
}
|
|
39
|
+
to {
|
|
40
|
+
opacity: 0;
|
|
41
|
+
transform: translateY(4px);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.dismiss {
|
|
46
|
+
position: absolute;
|
|
47
|
+
top: 0.25rem;
|
|
48
|
+
right: 0.25rem;
|
|
49
|
+
display: flex;
|
|
50
|
+
align-items: center;
|
|
51
|
+
justify-content: center;
|
|
52
|
+
cursor: pointer;
|
|
53
|
+
border: none;
|
|
54
|
+
background: transparent;
|
|
55
|
+
padding: 0.125rem;
|
|
56
|
+
border-radius: var(--style-radius-s);
|
|
57
|
+
color: var(--theme-elevation-500);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.dismiss:hover {
|
|
61
|
+
color: var(--theme-elevation-800);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.text {
|
|
65
|
+
margin: 0;
|
|
66
|
+
font-size: var(--font-size-small);
|
|
67
|
+
color: var(--theme-elevation-500);
|
|
68
|
+
white-space: pre-wrap;
|
|
69
|
+
word-break: break-word;
|
|
70
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SingleLinePlugin.d.ts","sourceRoot":"","sources":["../../../src/components/inputs/SingleLinePlugin.tsx"],"names":[],"mappings":"AASA,wBAAgB,gBAAgB,SA2B/B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { COMMAND_PRIORITY_HIGH, INSERT_LINE_BREAK_COMMAND, INSERT_PARAGRAPH_COMMAND, LineBreakNode } from '@payloadcms/richtext-lexical/lexical';
|
|
2
|
+
import { useLexicalComposerContext } from '@payloadcms/richtext-lexical/lexical/react/LexicalComposerContext';
|
|
3
|
+
import { useEffect } from 'react';
|
|
4
|
+
export function SingleLinePlugin() {
|
|
5
|
+
const [editor] = useLexicalComposerContext();
|
|
6
|
+
useEffect(()=>{
|
|
7
|
+
const unregisterLineBreak = editor.registerCommand(INSERT_LINE_BREAK_COMMAND, ()=>true, COMMAND_PRIORITY_HIGH);
|
|
8
|
+
const unregisterParagraph = editor.registerCommand(INSERT_PARAGRAPH_COMMAND, ()=>true, COMMAND_PRIORITY_HIGH);
|
|
9
|
+
// Catch line breaks inserted via paste or other means
|
|
10
|
+
const unregisterTransform = editor.registerNodeTransform(LineBreakNode, (node)=>{
|
|
11
|
+
node.remove();
|
|
12
|
+
});
|
|
13
|
+
return ()=>{
|
|
14
|
+
unregisterLineBreak();
|
|
15
|
+
unregisterParagraph();
|
|
16
|
+
unregisterTransform();
|
|
17
|
+
};
|
|
18
|
+
}, [
|
|
19
|
+
editor
|
|
20
|
+
]);
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=SingleLinePlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/inputs/SingleLinePlugin.tsx"],"sourcesContent":["import {\n COMMAND_PRIORITY_HIGH,\n INSERT_LINE_BREAK_COMMAND,\n INSERT_PARAGRAPH_COMMAND,\n LineBreakNode,\n} from '@payloadcms/richtext-lexical/lexical';\nimport { useLexicalComposerContext } from '@payloadcms/richtext-lexical/lexical/react/LexicalComposerContext';\nimport { useEffect } from 'react';\n\nexport function SingleLinePlugin() {\n const [editor] = useLexicalComposerContext();\n useEffect(() => {\n const unregisterLineBreak = editor.registerCommand(\n INSERT_LINE_BREAK_COMMAND,\n () => true,\n COMMAND_PRIORITY_HIGH,\n );\n const unregisterParagraph = editor.registerCommand(\n INSERT_PARAGRAPH_COMMAND,\n () => true,\n COMMAND_PRIORITY_HIGH,\n );\n // Catch line breaks inserted via paste or other means\n const unregisterTransform = editor.registerNodeTransform(\n LineBreakNode,\n (node) => {\n node.remove();\n },\n );\n return () => {\n unregisterLineBreak();\n unregisterParagraph();\n unregisterTransform();\n };\n }, [editor]);\n return null;\n}\n"],"names":["COMMAND_PRIORITY_HIGH","INSERT_LINE_BREAK_COMMAND","INSERT_PARAGRAPH_COMMAND","LineBreakNode","useLexicalComposerContext","useEffect","SingleLinePlugin","editor","unregisterLineBreak","registerCommand","unregisterParagraph","unregisterTransform","registerNodeTransform","node","remove"],"mappings":"AAAA,SACEA,qBAAqB,EACrBC,yBAAyB,EACzBC,wBAAwB,EACxBC,aAAa,QACR,uCAAuC;AAC9C,SAASC,yBAAyB,QAAQ,oEAAoE;AAC9G,SAASC,SAAS,QAAQ,QAAQ;AAElC,OAAO,SAASC;IACd,MAAM,CAACC,OAAO,GAAGH;IACjBC,UAAU;QACR,MAAMG,sBAAsBD,OAAOE,eAAe,CAChDR,2BACA,IAAM,MACND;QAEF,MAAMU,sBAAsBH,OAAOE,eAAe,CAChDP,0BACA,IAAM,MACNF;QAEF,sDAAsD;QACtD,MAAMW,sBAAsBJ,OAAOK,qBAAqB,CACtDT,eACA,CAACU;YACCA,KAAKC,MAAM;QACb;QAEF,OAAO;YACLN;YACAE;YACAC;QACF;IACF,GAAG;QAACJ;KAAO;IACX,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VariableChip.d.ts","sourceRoot":"","sources":["../../../../src/components/inputs/variables/VariableChip.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"VariableChip.d.ts","sourceRoot":"","sources":["../../../../src/components/inputs/variables/VariableChip.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAwBpE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;CAClB;AAID,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,iBAAiB,2CAqE5E"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Popover } from '@base-ui/react/popover';
|
|
3
4
|
import { $getNodeByKey } from '@payloadcms/richtext-lexical/lexical';
|
|
4
5
|
import { useLexicalComposerContext } from '@payloadcms/richtext-lexical/lexical/react/LexicalComposerContext';
|
|
5
|
-
import
|
|
6
|
+
import clsx from 'clsx';
|
|
6
7
|
import { useMemo } from 'react';
|
|
7
8
|
import { isArgumentElement, isNumericElement, isSelectElement, isTagElement, isTemporalElement } from '../../../utils/guards';
|
|
8
9
|
import { parseICUMessage } from '../../../utils/icu-tranform';
|
|
9
10
|
import { SelectVariableEditor } from './editors/SelectVariableEditor';
|
|
10
11
|
import { TagVariableEditor } from './editors/TagVariableEditor';
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
12
|
+
import { NumericVariableEditor } from './pickers/NumericVariableEditor';
|
|
13
|
+
import { TemporalVariablePicker } from './pickers/TemporalVariablePicker';
|
|
13
14
|
import styles from './VariableChip.module.css';
|
|
14
15
|
const TEMPORAL_ELEMENTS_FLAG = false;
|
|
15
16
|
// TODO replace popover with portal below input field
|
|
@@ -44,42 +45,40 @@ export function VariableChip({ name, label, icu, nodeKey }) {
|
|
|
44
45
|
return /*#__PURE__*/ _jsxs(Popover.Root, {
|
|
45
46
|
children: [
|
|
46
47
|
/*#__PURE__*/ _jsx(Popover.Trigger, {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
className: [
|
|
50
|
-
styles.chip,
|
|
51
|
-
isDisabled ? styles.chipDisabled : undefined
|
|
52
|
-
].filter(Boolean).join(' '),
|
|
48
|
+
render: /*#__PURE__*/ _jsx("button", {
|
|
49
|
+
className: clsx(styles.chip, isDisabled && styles.chipDisabled),
|
|
53
50
|
"data-icu": icu,
|
|
54
51
|
"data-variable": name,
|
|
55
|
-
type: "button"
|
|
56
|
-
|
|
57
|
-
|
|
52
|
+
type: "button"
|
|
53
|
+
}),
|
|
54
|
+
children: label
|
|
58
55
|
}),
|
|
59
56
|
/*#__PURE__*/ _jsx(Popover.Portal, {
|
|
60
|
-
children: /*#__PURE__*/
|
|
57
|
+
children: /*#__PURE__*/ _jsx(Popover.Positioner, {
|
|
61
58
|
align: "start",
|
|
62
|
-
className: styles.popoverContent,
|
|
63
59
|
side: "bottom",
|
|
64
60
|
sideOffset: 5,
|
|
65
|
-
children:
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
61
|
+
children: /*#__PURE__*/ _jsxs(Popover.Popup, {
|
|
62
|
+
className: styles.popoverContent,
|
|
63
|
+
children: [
|
|
64
|
+
isNumericElement(element) && /*#__PURE__*/ _jsx(NumericVariableEditor, {
|
|
65
|
+
element: element,
|
|
66
|
+
onUpdate: handleUpdate
|
|
67
|
+
}),
|
|
68
|
+
isSelectElement(element) && /*#__PURE__*/ _jsx(SelectVariableEditor, {
|
|
69
|
+
element: element,
|
|
70
|
+
onUpdate: handleUpdate
|
|
71
|
+
}),
|
|
72
|
+
TEMPORAL_ELEMENTS_FLAG && isTemporalElement(element) && /*#__PURE__*/ _jsx(TemporalVariablePicker, {
|
|
73
|
+
element: element,
|
|
74
|
+
onUpdate: handleUpdate
|
|
75
|
+
}),
|
|
76
|
+
isTagElement(element) && /*#__PURE__*/ _jsx(TagVariableEditor, {
|
|
77
|
+
element: element,
|
|
78
|
+
onUpdate: handleUpdate
|
|
79
|
+
})
|
|
80
|
+
]
|
|
81
|
+
})
|
|
83
82
|
})
|
|
84
83
|
})
|
|
85
84
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/inputs/variables/VariableChip.tsx"],"sourcesContent":["'use client';\n\nimport type { NodeKey } from '@payloadcms/richtext-lexical/lexical';\nimport { $getNodeByKey } from '@payloadcms/richtext-lexical/lexical';\nimport { useLexicalComposerContext } from '@payloadcms/richtext-lexical/lexical/react/LexicalComposerContext';\nimport
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/inputs/variables/VariableChip.tsx"],"sourcesContent":["'use client';\n\nimport { Popover } from '@base-ui/react/popover';\nimport type { NodeKey } from '@payloadcms/richtext-lexical/lexical';\nimport { $getNodeByKey } from '@payloadcms/richtext-lexical/lexical';\nimport { useLexicalComposerContext } from '@payloadcms/richtext-lexical/lexical/react/LexicalComposerContext';\nimport clsx from 'clsx';\nimport type { BeautifulMentionNode } from 'lexical-beautiful-mentions';\nimport { useMemo } from 'react';\n\nimport {\n isArgumentElement,\n isNumericElement,\n isSelectElement,\n isTagElement,\n isTemporalElement,\n} from '@/utils/guards';\nimport { parseICUMessage } from '@/utils/icu-tranform';\n\nimport { SelectVariableEditor } from './editors/SelectVariableEditor';\nimport { TagVariableEditor } from './editors/TagVariableEditor';\nimport { NumericVariableEditor } from './pickers/NumericVariableEditor';\nimport { TemporalVariablePicker } from './pickers/TemporalVariablePicker';\nimport styles from './VariableChip.module.css';\n\nconst TEMPORAL_ELEMENTS_FLAG = false;\n\nexport interface VariableChipProps {\n name: string;\n label: string;\n icu: string;\n nodeKey: NodeKey;\n}\n\n// TODO replace popover with portal below input field\n\nexport function VariableChip({ name, label, icu, nodeKey }: VariableChipProps) {\n const [editor] = useLexicalComposerContext();\n\n const handleUpdate = (value: string) => {\n editor.update(() => {\n const node = $getNodeByKey(nodeKey) as BeautifulMentionNode | null;\n if (node) {\n node.setData({ ...node.getData(), icu: value });\n }\n });\n };\n\n const element = useMemo(() => {\n try {\n const [part] = parseICUMessage(icu);\n if (!part) throw new Error('No part found');\n return part;\n } catch (error) {\n console.error(error);\n throw new Error(`Invalid ICU: ${icu}`, { cause: error });\n }\n }, [icu]);\n\n const isDisabled =\n isArgumentElement(element) ||\n (isTemporalElement(element) && !TEMPORAL_ELEMENTS_FLAG);\n\n return (\n <Popover.Root>\n <Popover.Trigger\n render={\n <button\n className={clsx(styles.chip, isDisabled && styles.chipDisabled)}\n data-icu={icu}\n data-variable={name}\n type=\"button\"\n />\n }\n >\n {/* <VariableIcon type={element.type} className=\"size-4\" /> */}\n {label}\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Positioner align=\"start\" side=\"bottom\" sideOffset={5}>\n <Popover.Popup className={styles.popoverContent}>\n {isNumericElement(element) && (\n <NumericVariableEditor\n element={element}\n onUpdate={handleUpdate}\n />\n )}\n {isSelectElement(element) && (\n <SelectVariableEditor element={element} onUpdate={handleUpdate} />\n )}\n {TEMPORAL_ELEMENTS_FLAG && isTemporalElement(element) && (\n <TemporalVariablePicker\n element={element}\n onUpdate={handleUpdate}\n />\n )}\n\n {isTagElement(element) && (\n <TagVariableEditor element={element} onUpdate={handleUpdate} />\n )}\n </Popover.Popup>\n </Popover.Positioner>\n </Popover.Portal>\n </Popover.Root>\n );\n}\n"],"names":["Popover","$getNodeByKey","useLexicalComposerContext","clsx","useMemo","isArgumentElement","isNumericElement","isSelectElement","isTagElement","isTemporalElement","parseICUMessage","SelectVariableEditor","TagVariableEditor","NumericVariableEditor","TemporalVariablePicker","styles","TEMPORAL_ELEMENTS_FLAG","VariableChip","name","label","icu","nodeKey","editor","handleUpdate","value","update","node","setData","getData","element","part","Error","error","console","cause","isDisabled","Root","Trigger","render","button","className","chip","chipDisabled","data-icu","data-variable","type","Portal","Positioner","align","side","sideOffset","Popup","popoverContent","onUpdate"],"mappings":"AAAA;;AAEA,SAASA,OAAO,QAAQ,yBAAyB;AAEjD,SAASC,aAAa,QAAQ,uCAAuC;AACrE,SAASC,yBAAyB,QAAQ,oEAAoE;AAC9G,OAAOC,UAAU,OAAO;AAExB,SAASC,OAAO,QAAQ,QAAQ;AAEhC,SACEC,iBAAiB,EACjBC,gBAAgB,EAChBC,eAAe,EACfC,YAAY,EACZC,iBAAiB,QACZ,iBAAiB;AACxB,SAASC,eAAe,QAAQ,uBAAuB;AAEvD,SAASC,oBAAoB,QAAQ,iCAAiC;AACtE,SAASC,iBAAiB,QAAQ,8BAA8B;AAChE,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,sBAAsB,QAAQ,mCAAmC;AAC1E,OAAOC,YAAY,4BAA4B;AAE/C,MAAMC,yBAAyB;AAS/B,qDAAqD;AAErD,OAAO,SAASC,aAAa,EAAEC,IAAI,EAAEC,KAAK,EAAEC,GAAG,EAAEC,OAAO,EAAqB;IAC3E,MAAM,CAACC,OAAO,GAAGpB;IAEjB,MAAMqB,eAAe,CAACC;QACpBF,OAAOG,MAAM,CAAC;YACZ,MAAMC,OAAOzB,cAAcoB;YAC3B,IAAIK,MAAM;gBACRA,KAAKC,OAAO,CAAC;oBAAE,GAAGD,KAAKE,OAAO,EAAE;oBAAER,KAAKI;gBAAM;YAC/C;QACF;IACF;IAEA,MAAMK,UAAUzB,QAAQ;QACtB,IAAI;YACF,MAAM,CAAC0B,KAAK,GAAGpB,gBAAgBU;YAC/B,IAAI,CAACU,MAAM,MAAM,IAAIC,MAAM;YAC3B,OAAOD;QACT,EAAE,OAAOE,OAAO;YACdC,QAAQD,KAAK,CAACA;YACd,MAAM,IAAID,MAAM,CAAC,aAAa,EAAEX,KAAK,EAAE;gBAAEc,OAAOF;YAAM;QACxD;IACF,GAAG;QAACZ;KAAI;IAER,MAAMe,aACJ9B,kBAAkBwB,YACjBpB,kBAAkBoB,YAAY,CAACb;IAElC,qBACE,MAAChB,QAAQoC,IAAI;;0BACX,KAACpC,QAAQqC,OAAO;gBACdC,sBACE,KAACC;oBACCC,WAAWrC,KAAKY,OAAO0B,IAAI,EAAEN,cAAcpB,OAAO2B,YAAY;oBAC9DC,YAAUvB;oBACVwB,iBAAe1B;oBACf2B,MAAK;;0BAKR1B;;0BAEH,KAACnB,QAAQ8C,MAAM;0BACb,cAAA,KAAC9C,QAAQ+C,UAAU;oBAACC,OAAM;oBAAQC,MAAK;oBAASC,YAAY;8BAC1D,cAAA,MAAClD,QAAQmD,KAAK;wBAACX,WAAWzB,OAAOqC,cAAc;;4BAC5C9C,iBAAiBuB,0BAChB,KAAChB;gCACCgB,SAASA;gCACTwB,UAAU9B;;4BAGbhB,gBAAgBsB,0BACf,KAAClB;gCAAqBkB,SAASA;gCAASwB,UAAU9B;;4BAEnDP,0BAA0BP,kBAAkBoB,0BAC3C,KAACf;gCACCe,SAASA;gCACTwB,UAAU9B;;4BAIbf,aAAaqB,0BACZ,KAACjB;gCAAkBiB,SAASA;gCAASwB,UAAU9B;;;;;;;;AAO7D"}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
.popoverContent {
|
|
21
21
|
z-index: 50;
|
|
22
22
|
display: grid;
|
|
23
|
-
transform-origin: var(--
|
|
23
|
+
transform-origin: var(--transform-origin);
|
|
24
24
|
overflow: clip;
|
|
25
25
|
border-radius: var(--style-radius-m);
|
|
26
26
|
border: 1px solid var(--theme-border-color);
|
|
@@ -35,11 +35,11 @@
|
|
|
35
35
|
display: none;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
.popoverContent[data-
|
|
38
|
+
.popoverContent[data-open] {
|
|
39
39
|
animation: popoverIn 150ms ease-out;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
.popoverContent[data-
|
|
42
|
+
.popoverContent[data-closed] {
|
|
43
43
|
animation: popoverOut 150ms ease-in;
|
|
44
44
|
}
|
|
45
45
|
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { BeautifulMentionsMenuItemProps, BeautifulMentionsMenuProps } from 'lexical-beautiful-mentions';
|
|
2
|
+
export declare const MentionMenu: import("react").ForwardRefExoticComponent<Omit<BeautifulMentionsMenuProps, "ref"> & import("react").RefAttributes<HTMLUListElement>>;
|
|
3
|
+
export declare const MentionMenuItem: import("react").ForwardRefExoticComponent<Omit<BeautifulMentionsMenuItemProps, "ref"> & import("react").RefAttributes<HTMLLIElement>>;
|
|
4
|
+
//# sourceMappingURL=VariableSuggestion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VariableSuggestion.d.ts","sourceRoot":"","sources":["../../../../src/components/inputs/variables/VariableSuggestion.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,8BAA8B,EAC9B,0BAA0B,EAC3B,MAAM,4BAA4B,CAAC;AAKpC,eAAO,MAAM,WAAW,sIAKtB,CAAC;AAEH,eAAO,MAAM,eAAe,uIAoB1B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import styles from './VariableSuggestion.module.css';
|
|
5
|
+
export const MentionMenu = /*#__PURE__*/ forwardRef(({ loading: _, ...props }, ref)=>/*#__PURE__*/ _jsx("ul", {
|
|
6
|
+
...props,
|
|
7
|
+
className: styles.list,
|
|
8
|
+
ref: ref
|
|
9
|
+
}));
|
|
10
|
+
export const MentionMenuItem = /*#__PURE__*/ forwardRef((props, ref)=>/*#__PURE__*/ _jsx("li", {
|
|
11
|
+
"aria-selected": props.selected,
|
|
12
|
+
className: clsx(styles.item, props.selected && styles.itemSelected),
|
|
13
|
+
onClick: props.onClick,
|
|
14
|
+
onKeyDown: props.onKeyDown,
|
|
15
|
+
onMouseDown: props.onMouseDown,
|
|
16
|
+
onMouseEnter: props.onMouseEnter,
|
|
17
|
+
ref: ref,
|
|
18
|
+
// biome-ignore lint/a11y/noNoninteractiveElementToInteractiveRole: standard WAI-ARIA listbox/option pattern
|
|
19
|
+
role: "option",
|
|
20
|
+
tabIndex: -1,
|
|
21
|
+
children: typeof props.item.data?.label === 'string' ? props.item.data.label : props.item.displayValue
|
|
22
|
+
}));
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=VariableSuggestion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/inputs/variables/VariableSuggestion.tsx"],"sourcesContent":["import clsx from 'clsx';\nimport type {\n BeautifulMentionsMenuItemProps,\n BeautifulMentionsMenuProps,\n} from 'lexical-beautiful-mentions';\nimport { forwardRef } from 'react';\n\nimport styles from './VariableSuggestion.module.css';\n\nexport const MentionMenu = forwardRef<\n HTMLUListElement,\n BeautifulMentionsMenuProps\n>(({ loading: _, ...props }, ref) => (\n <ul {...props} className={styles.list} ref={ref} />\n));\n\nexport const MentionMenuItem = forwardRef<\n HTMLLIElement,\n BeautifulMentionsMenuItemProps\n>((props, ref) => (\n <li\n aria-selected={props.selected}\n className={clsx(styles.item, props.selected && styles.itemSelected)}\n onClick={props.onClick}\n onKeyDown={props.onKeyDown}\n onMouseDown={props.onMouseDown}\n onMouseEnter={props.onMouseEnter}\n ref={ref}\n // biome-ignore lint/a11y/noNoninteractiveElementToInteractiveRole: standard WAI-ARIA listbox/option pattern\n role=\"option\"\n tabIndex={-1}\n >\n {typeof props.item.data?.label === 'string'\n ? props.item.data.label\n : props.item.displayValue}\n </li>\n));\n"],"names":["clsx","forwardRef","styles","MentionMenu","loading","_","props","ref","ul","className","list","MentionMenuItem","li","aria-selected","selected","item","itemSelected","onClick","onKeyDown","onMouseDown","onMouseEnter","role","tabIndex","data","label","displayValue"],"mappings":";AAAA,OAAOA,UAAU,OAAO;AAKxB,SAASC,UAAU,QAAQ,QAAQ;AAEnC,OAAOC,YAAY,kCAAkC;AAErD,OAAO,MAAMC,4BAAcF,WAGzB,CAAC,EAAEG,SAASC,CAAC,EAAE,GAAGC,OAAO,EAAEC,oBAC3B,KAACC;QAAI,GAAGF,KAAK;QAAEG,WAAWP,OAAOQ,IAAI;QAAEH,KAAKA;QAC3C;AAEH,OAAO,MAAMI,gCAAkBV,WAG7B,CAACK,OAAOC,oBACR,KAACK;QACCC,iBAAeP,MAAMQ,QAAQ;QAC7BL,WAAWT,KAAKE,OAAOa,IAAI,EAAET,MAAMQ,QAAQ,IAAIZ,OAAOc,YAAY;QAClEC,SAASX,MAAMW,OAAO;QACtBC,WAAWZ,MAAMY,SAAS;QAC1BC,aAAab,MAAMa,WAAW;QAC9BC,cAAcd,MAAMc,YAAY;QAChCb,KAAKA;QACL,4GAA4G;QAC5Gc,MAAK;QACLC,UAAU,CAAC;kBAEV,OAAOhB,MAAMS,IAAI,CAACQ,IAAI,EAAEC,UAAU,WAC/BlB,MAAMS,IAAI,CAACQ,IAAI,CAACC,KAAK,GACrBlB,MAAMS,IAAI,CAACU,YAAY;QAE5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluralVariableEditor.d.ts","sourceRoot":"","sources":["../../../../../src/components/inputs/variables/editors/PluralVariableEditor.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAQ7C,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,aAAa,GAAG,SAAS,CAAC;IACnC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;QAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5C;AAID,wBAAgB,oBAAoB,CAAC,EACnC,YAAY,EACZ,OAAO,EACP,GAAG,GACJ,EAAE,yBAAyB,
|
|
1
|
+
{"version":3,"file":"PluralVariableEditor.d.ts","sourceRoot":"","sources":["../../../../../src/components/inputs/variables/editors/PluralVariableEditor.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAQ7C,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,aAAa,GAAG,SAAS,CAAC;IACnC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;QAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5C;AAID,wBAAgB,oBAAoB,CAAC,EACnC,YAAY,EACZ,OAAO,EACP,GAAG,GACJ,EAAE,yBAAyB,2CAyK3B"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Popover } from '@base-ui/react/popover';
|
|
2
3
|
import { TYPE } from '@formatjs/icu-messageformat-parser';
|
|
3
4
|
import { IconX } from '@tabler/icons-react';
|
|
4
|
-
import { Popover } from 'radix-ui';
|
|
5
5
|
import { Fragment, useImperativeHandle, useMemo } from 'react';
|
|
6
6
|
import { Controller, useFieldArray, useForm } from 'react-hook-form';
|
|
7
7
|
import { parseICUMessage, serializeICUMessage } from '../../../../utils/icu-tranform';
|
|
@@ -121,66 +121,68 @@ export function PluralVariableEditor({ variableName, element, ref }) {
|
|
|
121
121
|
children: "Add Option"
|
|
122
122
|
}),
|
|
123
123
|
/*#__PURE__*/ _jsx(Popover.Portal, {
|
|
124
|
-
children: /*#__PURE__*/
|
|
125
|
-
className: styles.popoverContent,
|
|
124
|
+
children: /*#__PURE__*/ _jsx(Popover.Positioner, {
|
|
126
125
|
sideOffset: 4,
|
|
127
|
-
children:
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
126
|
+
children: /*#__PURE__*/ _jsxs(Popover.Popup, {
|
|
127
|
+
className: styles.popoverContent,
|
|
128
|
+
children: [
|
|
129
|
+
/*#__PURE__*/ _jsx("div", {
|
|
130
|
+
className: styles.optionsList,
|
|
131
|
+
children: NAMED_PLURAL_OPTIONS.filter((option)=>options.fields.every((field)=>field.name !== option)).map((option)=>/*#__PURE__*/ _jsx(Popover.Close, {
|
|
132
|
+
className: styles.optionItem,
|
|
133
|
+
onClick: ()=>{
|
|
134
|
+
// TODO ensure the fields are always in the same order as staticPluralOptions
|
|
135
|
+
options.append({
|
|
136
|
+
name: option,
|
|
137
|
+
content: ''
|
|
138
|
+
}, {
|
|
139
|
+
shouldFocus: true
|
|
140
|
+
});
|
|
141
|
+
},
|
|
142
|
+
children: option
|
|
143
|
+
}, option))
|
|
144
|
+
}),
|
|
145
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
146
|
+
className: styles.customInputGroup,
|
|
147
|
+
children: [
|
|
148
|
+
/*#__PURE__*/ _jsx("label", {
|
|
149
|
+
htmlFor: "customValue",
|
|
150
|
+
children: "custom"
|
|
151
|
+
}),
|
|
152
|
+
/*#__PURE__*/ _jsx(Controller, {
|
|
153
|
+
control: control,
|
|
154
|
+
name: "customValue",
|
|
155
|
+
render: ({ field })=>/*#__PURE__*/ _jsx("input", {
|
|
156
|
+
className: styles.customInput,
|
|
157
|
+
min: 0,
|
|
158
|
+
onChange: ({ currentTarget: { value } })=>{
|
|
159
|
+
const number = Number(value);
|
|
160
|
+
if (Number.isNaN(number)) return;
|
|
161
|
+
if (number < 0) return;
|
|
162
|
+
field.onChange(number);
|
|
163
|
+
},
|
|
164
|
+
onKeyDown: (e)=>{
|
|
165
|
+
if (e.key !== 'Enter') return;
|
|
166
|
+
if (field.value === undefined) return;
|
|
167
|
+
const isUnique = !options.fields.some((existingField)=>existingField.name === `=${field.value}`);
|
|
168
|
+
if (!isUnique) return; // TODO maybe show error?
|
|
169
|
+
options.append({
|
|
170
|
+
name: `=${field.value}`,
|
|
171
|
+
content: ''
|
|
172
|
+
}, {
|
|
173
|
+
shouldFocus: true
|
|
174
|
+
});
|
|
175
|
+
field.onChange(undefined);
|
|
176
|
+
},
|
|
177
|
+
placeholder: "=0",
|
|
178
|
+
type: "numeric",
|
|
179
|
+
value: field.value ?? ''
|
|
180
|
+
})
|
|
181
|
+
})
|
|
182
|
+
]
|
|
183
|
+
})
|
|
184
|
+
]
|
|
185
|
+
})
|
|
184
186
|
})
|
|
185
187
|
})
|
|
186
188
|
]
|