@qoretechnologies/reqraft 0.10.65 → 0.10.66-pr.145.g26dce00
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/components/form/engine/CompactRow.d.ts.map +1 -1
- package/dist/components/form/engine/CompactRow.js +130 -25
- package/dist/components/form/engine/CompactRow.js.map +1 -1
- package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
- package/dist/components/form/engine/CompactToolbar.js +78 -15
- package/dist/components/form/engine/CompactToolbar.js.map +1 -1
- package/dist/components/form/engine/FormEngine.d.ts +48 -1
- package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
- package/dist/components/form/engine/FormEngine.js +260 -99
- package/dist/components/form/engine/FormEngine.js.map +1 -1
- package/dist/components/form/engine/OptionFieldMessages.d.ts +18 -2
- package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
- package/dist/components/form/engine/OptionFieldMessages.js +22 -3
- package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
- package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
- package/dist/components/form/engine/_structuredData/SchemaDataView.js +27 -1
- package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
- package/dist/components/form/engine/compactRowContext.d.ts +5 -0
- package/dist/components/form/engine/compactRowContext.d.ts.map +1 -1
- package/dist/components/form/engine/compactRowContext.js.map +1 -1
- package/dist/components/form/engine/compactRowStyles.d.ts +12 -0
- package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
- package/dist/components/form/engine/compactRowStyles.js +72 -39
- package/dist/components/form/engine/compactRowStyles.js.map +1 -1
- package/dist/components/form/engine/compactToolbarContext.d.ts +3 -0
- package/dist/components/form/engine/compactToolbarContext.d.ts.map +1 -1
- package/dist/components/form/engine/compactToolbarContext.js.map +1 -1
- package/dist/components/form/engine/formAppearance.d.ts +48 -0
- package/dist/components/form/engine/formAppearance.d.ts.map +1 -0
- package/dist/components/form/engine/formAppearance.js +50 -0
- package/dist/components/form/engine/formAppearance.js.map +1 -0
- package/dist/components/form/engine/readFirst.d.ts +14 -2
- package/dist/components/form/engine/readFirst.d.ts.map +1 -1
- package/dist/components/form/engine/readFirst.js +6 -2
- package/dist/components/form/engine/readFirst.js.map +1 -1
- package/dist/components/form/engine/rowFocus.d.ts +9 -1
- package/dist/components/form/engine/rowFocus.d.ts.map +1 -1
- package/dist/components/form/engine/rowFocus.js +17 -5
- package/dist/components/form/engine/rowFocus.js.map +1 -1
- package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
- package/dist/components/form/expressions/renderExpressionToText.js +21 -0
- package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
- package/dist/components/form/fields/ChoiceGroupHeading.d.ts +21 -0
- package/dist/components/form/fields/ChoiceGroupHeading.d.ts.map +1 -0
- package/dist/components/form/fields/ChoiceGroupHeading.js +33 -0
- package/dist/components/form/fields/ChoiceGroupHeading.js.map +1 -0
- package/dist/components/form/fields/Field.d.ts.map +1 -1
- package/dist/components/form/fields/Field.js +13 -11
- package/dist/components/form/fields/Field.js.map +1 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.js +20 -7
- package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
- package/dist/components/form/fields/allowed-values/savedValues.d.ts +30 -0
- package/dist/components/form/fields/allowed-values/savedValues.d.ts.map +1 -0
- package/dist/components/form/fields/allowed-values/savedValues.js +39 -0
- package/dist/components/form/fields/allowed-values/savedValues.js.map +1 -0
- package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
- package/dist/components/form/fields/auto/AutoFormField.js +18 -8
- package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
- package/dist/components/form/fields/long-string/LongString.d.ts +7 -1
- package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
- package/dist/components/form/fields/long-string/LongString.js +9 -5
- package/dist/components/form/fields/long-string/LongString.js.map +1 -1
- package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
- package/dist/components/form/fields/multi-select/MultiSelectFormField.js +6 -5
- package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
- package/dist/components/form/fields/number/Number.d.ts +4 -1
- package/dist/components/form/fields/number/Number.d.ts.map +1 -1
- package/dist/components/form/fields/number/Number.js +13 -5
- package/dist/components/form/fields/number/Number.js.map +1 -1
- package/dist/components/form/fields/radio-group/RadioGroup.d.ts.map +1 -1
- package/dist/components/form/fields/radio-group/RadioGroup.js +13 -7
- package/dist/components/form/fields/radio-group/RadioGroup.js.map +1 -1
- package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
- package/dist/components/form/fields/template/TemplateField.js +86 -53
- package/dist/components/form/fields/template/TemplateField.js.map +1 -1
- package/dist/components/form/index.d.ts +2 -0
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/index.js +2 -0
- package/dist/components/form/index.js.map +1 -1
- package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -1
- package/dist/components/imageLightbox/ImageLightbox.js +2 -0
- package/dist/components/imageLightbox/ImageLightbox.js.map +1 -1
- package/dist/components/supportTicket/InterfaceReferenceTags.d.ts +3 -2
- package/dist/components/supportTicket/InterfaceReferenceTags.d.ts.map +1 -1
- package/dist/components/supportTicket/InterfaceReferenceTags.js.map +1 -1
- package/dist/components/supportTicket/ReferencePicker.d.ts +2 -1
- package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
- package/dist/components/supportTicket/ReferencePicker.js +19 -13
- package/dist/components/supportTicket/ReferencePicker.js.map +1 -1
- package/dist/components/supportTicket/TicketHeader.d.ts.map +1 -1
- package/dist/components/supportTicket/TicketHeader.js +4 -1
- package/dist/components/supportTicket/TicketHeader.js.map +1 -1
- package/dist/components/supportTicket/TicketReplyBox.d.ts.map +1 -1
- package/dist/components/supportTicket/TicketReplyBox.js +29 -10
- package/dist/components/supportTicket/TicketReplyBox.js.map +1 -1
- package/dist/components/supportTicket/useLoadedImages.d.ts +10 -0
- package/dist/components/supportTicket/useLoadedImages.d.ts.map +1 -1
- package/dist/components/supportTicket/useLoadedImages.js +63 -1
- package/dist/components/supportTicket/useLoadedImages.js.map +1 -1
- package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
- package/dist/components/ticketReferences/TicketReferences.js +6 -2
- package/dist/components/ticketReferences/TicketReferences.js.map +1 -1
- package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
- package/dist/components/ticketThread/TicketThread.js +10 -16
- package/dist/components/ticketThread/TicketThread.js.map +1 -1
- package/dist/helpers/allowedValues.d.ts +12 -0
- package/dist/helpers/allowedValues.d.ts.map +1 -1
- package/dist/helpers/allowedValues.js +20 -1
- package/dist/helpers/allowedValues.js.map +1 -1
- package/dist/helpers/fieldDescription.d.ts +16 -0
- package/dist/helpers/fieldDescription.d.ts.map +1 -0
- package/dist/helpers/fieldDescription.js +40 -0
- package/dist/helpers/fieldDescription.js.map +1 -0
- package/dist/helpers/singleLineString.d.ts.map +1 -1
- package/dist/helpers/singleLineString.js +1 -0
- package/dist/helpers/singleLineString.js.map +1 -1
- package/package.json +1 -1
- package/src/components/form/engine/CompactRow.tsx +143 -23
- package/src/components/form/engine/CompactToolbar.tsx +85 -16
- package/src/components/form/engine/FormEngine.stories.tsx +25 -13
- package/src/components/form/engine/FormEngine.tsx +367 -81
- package/src/components/form/engine/FormEngineAppearance.stories.tsx +540 -0
- package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +5 -1
- package/src/components/form/engine/OptionFieldMessages.tsx +73 -2
- package/src/components/form/engine/_structuredData/SchemaDataView.tsx +17 -4
- package/src/components/form/engine/compactRowContext.ts +5 -0
- package/src/components/form/engine/compactRowStyles.ts +218 -38
- package/src/components/form/engine/compactToolbarContext.ts +3 -0
- package/src/components/form/engine/formAppearance.ts +78 -0
- package/src/components/form/engine/readFirst.ts +16 -3
- package/src/components/form/engine/rowFocus.ts +17 -6
- package/src/components/form/expressions/renderExpressionToText.ts +15 -0
- package/src/components/form/fields/ChoiceGroupHeading.tsx +38 -0
- package/src/components/form/fields/Field.tsx +11 -9
- package/src/components/form/fields/allowed-values/AllowedValues.tsx +21 -9
- package/src/components/form/fields/allowed-values/savedValues.ts +64 -0
- package/src/components/form/fields/auto/AutoFormField.tsx +17 -4
- package/src/components/form/fields/long-string/LongString.stories.tsx +27 -0
- package/src/components/form/fields/long-string/LongString.tsx +14 -3
- package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +5 -4
- package/src/components/form/fields/number/Number.tsx +19 -4
- package/src/components/form/fields/radio-group/RadioGroup.tsx +13 -7
- package/src/components/form/fields/template/TemplateField.tsx +49 -17
- package/src/components/form/index.tsx +2 -0
- package/src/components/imageLightbox/ImageLightbox.tsx +2 -0
- package/src/components/supportTicket/InterfaceReferenceTags.tsx +3 -2
- package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -4
- package/src/components/supportTicket/ReferencePicker.tsx +22 -12
- package/src/components/supportTicket/TicketConversation.stories.tsx +0 -1
- package/src/components/supportTicket/TicketHeader.tsx +2 -1
- package/src/components/supportTicket/TicketReplyBox.stories.tsx +24 -21
- package/src/components/supportTicket/TicketReplyBox.tsx +27 -5
- package/src/components/supportTicket/useLoadedImages.ts +20 -0
- package/src/components/ticketReferences/TicketReferences.stories.tsx +26 -0
- package/src/components/ticketReferences/TicketReferences.tsx +12 -4
- package/src/components/ticketThread/TicketThread.stories.tsx +71 -2
- package/src/components/ticketThread/TicketThread.tsx +15 -28
- package/src/helpers/allowedValues.ts +19 -0
- package/src/helpers/fieldDescription.ts +39 -0
- package/src/helpers/singleLineString.ts +1 -0
|
@@ -41,6 +41,12 @@ import {
|
|
|
41
41
|
import { basicFormValue, getBasicFormOptions as getOptions } from './__fixtures__/basicFormOptions';
|
|
42
42
|
import { chromeFieldBases, metaFieldBases } from './__fixtures__/fieldChromeOptions';
|
|
43
43
|
|
|
44
|
+
/** The first status box: "To fill in" while nothing in it is a fault (a new form),
|
|
45
|
+
* "Needs attention" once something is. Stories about which box a field lands in find
|
|
46
|
+
* it under either name. */
|
|
47
|
+
const FIRST_BOX = /^(Needs attention|To fill in)$/;
|
|
48
|
+
const FIRST_BOX_PREFIX = /^(Needs attention|To fill in)/;
|
|
49
|
+
|
|
44
50
|
// schema data
|
|
45
51
|
|
|
46
52
|
const TestOptionsWithRequiredGroups: IOptionsSchema = {
|
|
@@ -2243,6 +2249,7 @@ export const CompactLockedRequiredNeedsNoAttention: Story = {
|
|
|
2243
2249
|
await expect(document.querySelector('[data-field="min"]')).toBeTruthy();
|
|
2244
2250
|
await expect(document.querySelector('[data-field="max"]')).toBeTruthy();
|
|
2245
2251
|
await _testsWaitForTextToNotExist('Needs attention');
|
|
2252
|
+
await _testsWaitForTextToNotExist('To fill in');
|
|
2246
2253
|
// Nothing the author can fill in is missing, so the form is Ready — the
|
|
2247
2254
|
// locked fields do not apply until a kind is picked.
|
|
2248
2255
|
await _testsWaitForText('Ready');
|
|
@@ -2266,11 +2273,11 @@ export const CompactUnlockedRequiredNeedsAttention: Story = {
|
|
|
2266
2273
|
value: { kind: { type: 'string', value: 'between' } } as IOptions,
|
|
2267
2274
|
},
|
|
2268
2275
|
play: async () => {
|
|
2269
|
-
await _testsWaitForText(
|
|
2276
|
+
await _testsWaitForText(FIRST_BOX);
|
|
2270
2277
|
await _testsWaitForText('Incomplete');
|
|
2271
2278
|
await _testsWaitForTextToNotExist('Draft');
|
|
2272
2279
|
const attention = [...document.querySelectorAll('.options-readfirst-group')].find((group) =>
|
|
2273
|
-
(group.textContent || '')
|
|
2280
|
+
FIRST_BOX_PREFIX.test(group.textContent || '')
|
|
2274
2281
|
);
|
|
2275
2282
|
await expect(attention).toBeTruthy();
|
|
2276
2283
|
for (const field of ['expected', 'min', 'max']) {
|
|
@@ -3070,6 +3077,7 @@ export const CompactReadOnly: Story = {
|
|
|
3070
3077
|
await _testsWaitForTextToNotExist('Incomplete');
|
|
3071
3078
|
await _testsWaitForTextToNotExist('Draft');
|
|
3072
3079
|
await _testsWaitForTextToNotExist('Needs attention');
|
|
3080
|
+
await _testsWaitForTextToNotExist('To fill in');
|
|
3073
3081
|
await _testsWaitForTextToNotExist('Optional');
|
|
3074
3082
|
// A required field nobody set is listed, unset, with no amber dot.
|
|
3075
3083
|
await _testsWaitForText('Description');
|
|
@@ -3551,6 +3559,7 @@ export const CompactReadOnlyValues: Story = {
|
|
|
3551
3559
|
expect(document.querySelector('.options-readfirst-completion')).toBeNull();
|
|
3552
3560
|
expect(document.querySelector('.options-readfirst-group')).toBeNull();
|
|
3553
3561
|
await _testsWaitForTextToNotExist('Needs attention');
|
|
3562
|
+
await _testsWaitForTextToNotExist('To fill in');
|
|
3554
3563
|
await _testsWaitForTextToNotExist('Optional');
|
|
3555
3564
|
// An optional field nobody set is not listed at all…
|
|
3556
3565
|
await _testsWaitForTextToNotExist('Notes');
|
|
@@ -3932,7 +3941,7 @@ export const CompactValidIdentifierRule: Story = {
|
|
|
3932
3941
|
// The rules-driven validation marks the form as needing attention — the
|
|
3933
3942
|
// dedicated "Needs attention" box (and the header link) signal it.
|
|
3934
3943
|
await _testsWaitForText('Incomplete');
|
|
3935
|
-
await _testsWaitForText(
|
|
3944
|
+
await _testsWaitForText(FIRST_BOX);
|
|
3936
3945
|
},
|
|
3937
3946
|
};
|
|
3938
3947
|
|
|
@@ -6764,7 +6773,7 @@ export const CompactShowcase: Story = {
|
|
|
6764
6773
|
// Optional box's fold, which scrolls, so the frame is put back afterwards:
|
|
6765
6774
|
// this story's snapshot is the form's top.
|
|
6766
6775
|
const attentionBox = Array.from(document.querySelectorAll('.options-readfirst-group')).find(
|
|
6767
|
-
(group) => (group.textContent || '')
|
|
6776
|
+
(group) => FIRST_BOX_PREFIX.test(group.textContent || '')
|
|
6768
6777
|
);
|
|
6769
6778
|
await expect(
|
|
6770
6779
|
attentionBox?.querySelector('[data-field="optionWithShortDescription"]')
|
|
@@ -8092,9 +8101,11 @@ export const CompactExpressionWithoutCatalogue: Story = {
|
|
|
8092
8101
|
* A collapsed ReqorePanel unmounts its content, so "has no
|
|
8093
8102
|
* `.reqore-panel-content`" IS the collapsed assertion. */
|
|
8094
8103
|
const findStatusBox = (title: string) =>
|
|
8095
|
-
Array.from(document.querySelectorAll('.options-readfirst-group')).find((panel) =>
|
|
8096
|
-
panel.querySelector('.reqore-panel-title')?.textContent
|
|
8097
|
-
|
|
8104
|
+
Array.from(document.querySelectorAll('.options-readfirst-group')).find((panel) => {
|
|
8105
|
+
const heading = panel.querySelector('.reqore-panel-title')?.textContent ?? '';
|
|
8106
|
+
// The first box is "To fill in" until something in it is a fault.
|
|
8107
|
+
return title === 'Needs attention' ? FIRST_BOX_PREFIX.test(heading) : heading.includes(title);
|
|
8108
|
+
});
|
|
8098
8109
|
|
|
8099
8110
|
const expectBoxCollapsed = async (title: string) => {
|
|
8100
8111
|
await waitFor(
|
|
@@ -9417,7 +9428,7 @@ export const ANewFormSaysWhatIsRequired: Story = {
|
|
|
9417
9428
|
docs: {
|
|
9418
9429
|
description: {
|
|
9419
9430
|
story:
|
|
9420
|
-
'A brand-new form with two empty required fields. Each says "This field is required" from the start, including the first one, which opens for editing, without waiting for the author to visit it.',
|
|
9431
|
+
'A brand-new form with two empty required fields. Each says "This field is required" from the start, including the first one, which opens for editing, without waiting for the author to visit it. Saying what is required is not saying something is wrong: the first box reads "To fill in", in the quiet colour, until a field has been visited and left empty.',
|
|
9421
9432
|
},
|
|
9422
9433
|
},
|
|
9423
9434
|
},
|
|
@@ -9429,7 +9440,8 @@ export const ANewFormSaysWhatIsRequired: Story = {
|
|
|
9429
9440
|
expandFirstRequired: true,
|
|
9430
9441
|
},
|
|
9431
9442
|
play: async ({ canvasElement }) => {
|
|
9432
|
-
await _testsWaitForText('
|
|
9443
|
+
await _testsWaitForText('To fill in');
|
|
9444
|
+
await _testsWaitForTextToNotExist('Needs attention');
|
|
9433
9445
|
await waitFor(() => {
|
|
9434
9446
|
const title = canvasElement.querySelector('[data-field="title"]');
|
|
9435
9447
|
const owner = canvasElement.querySelector('[data-field="owner"]');
|
|
@@ -9551,7 +9563,7 @@ export const AMovedRowInViewIsNotScrolled: Story = {
|
|
|
9551
9563
|
options: MovedRowSchema,
|
|
9552
9564
|
},
|
|
9553
9565
|
play: async () => {
|
|
9554
|
-
await _testsWaitForText(
|
|
9566
|
+
await _testsWaitForText(FIRST_BOX);
|
|
9555
9567
|
const watch = watchRowScrolls();
|
|
9556
9568
|
try {
|
|
9557
9569
|
const scroller = movedRowScroller();
|
|
@@ -9610,7 +9622,7 @@ export const AMovedRowLandsClearOfThePinnedHeader: Story = {
|
|
|
9610
9622
|
await scrolled;
|
|
9611
9623
|
const row = document.querySelector<HTMLElement>('.readfirst-row[data-field="owner"]')!;
|
|
9612
9624
|
const attention = [...document.querySelectorAll<HTMLElement>('.options-readfirst-group')].find(
|
|
9613
|
-
(group) => (group.textContent || '')
|
|
9625
|
+
(group) => FIRST_BOX_PREFIX.test(group.textContent || '')
|
|
9614
9626
|
)!;
|
|
9615
9627
|
const header = attention.querySelector<HTMLElement>(':scope > .reqore-panel-title')!;
|
|
9616
9628
|
const rowRect = row.getBoundingClientRect();
|
|
@@ -9634,12 +9646,12 @@ export const AMovedRowLandsClearOfThePinnedHeader: Story = {
|
|
|
9634
9646
|
* slide UNDER the toolbar, never over it. Each step waits on `scrollend`.
|
|
9635
9647
|
*/
|
|
9636
9648
|
const assertBoxHeaderSlidesUnderToolbar = async (scroller: HTMLElement) => {
|
|
9637
|
-
await _testsWaitForText(
|
|
9649
|
+
await _testsWaitForText(FIRST_BOX);
|
|
9638
9650
|
const toolbar = document.querySelector<HTMLElement>(
|
|
9639
9651
|
'.options-readfirst-scroll > .reqore-panel > .reqore-panel-title'
|
|
9640
9652
|
)!;
|
|
9641
9653
|
const box = [...document.querySelectorAll<HTMLElement>('.options-readfirst-group')].find(
|
|
9642
|
-
(group) => (group.textContent || '')
|
|
9654
|
+
(group) => FIRST_BOX_PREFIX.test(group.textContent || '')
|
|
9643
9655
|
)!;
|
|
9644
9656
|
const header = box.querySelector<HTMLElement>(':scope > .reqore-panel-title')!;
|
|
9645
9657
|
const scrollBy = async (delta: number) => {
|