@box/metadata-editor 0.45.0
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/LICENSE +379 -0
- package/chunks/filter-dropdown-menu.module.js +18 -0
- package/chunks/types.js +6 -0
- package/esm/index.js +33 -0
- package/esm/lib/components/add-metadata-template-dropdown/add-metadata-template-dropdown.js +44 -0
- package/esm/lib/components/add-metadata-template-dropdown/index.js +4 -0
- package/esm/lib/components/add-metadata-template-dropdown/messages.js +18 -0
- package/esm/lib/components/filter-dropdown-menu/filter-dropdown-menu-content.js +19 -0
- package/esm/lib/components/filter-dropdown-menu/filter-dropdown-menu-empty-state.js +20 -0
- package/esm/lib/components/filter-dropdown-menu/filter-dropdown-menu-item.js +20 -0
- package/esm/lib/components/filter-dropdown-menu/filter-dropdown-menu-list.js +22 -0
- package/esm/lib/components/filter-dropdown-menu/filter-dropdown-menu-root.js +19 -0
- package/esm/lib/components/filter-dropdown-menu/filter-dropdown-menu-search.js +44 -0
- package/esm/lib/components/filter-dropdown-menu/filter-dropdown-menu-trigger.js +13 -0
- package/esm/lib/components/filter-dropdown-menu/index.js +19 -0
- package/esm/lib/components/filter-dropdown-menu/messages.js +14 -0
- package/esm/lib/components/interactive-text/interactive-text.js +22 -0
- package/esm/lib/components/metadata-editor-fields/components/constants.js +6 -0
- package/esm/lib/components/metadata-editor-fields/components/metadata-date-field/date-conversion-utils.js +16 -0
- package/esm/lib/components/metadata-editor-fields/components/metadata-date-field/metadata-date-field.js +60 -0
- package/esm/lib/components/metadata-editor-fields/components/metadata-date-field/use-date-internationalization.js +13 -0
- package/esm/lib/components/metadata-editor-fields/components/metadata-enum-field/metadata-enum-field.js +55 -0
- package/esm/lib/components/metadata-editor-fields/components/metadata-float-field/metadata-float-field.js +47 -0
- package/esm/lib/components/metadata-editor-fields/components/metadata-float-field/use-float-validation.js +15 -0
- package/esm/lib/components/metadata-editor-fields/components/metadata-multi-select-field/metadata-multi-select-field.js +51 -0
- package/esm/lib/components/metadata-editor-fields/components/metadata-string-field/metadata-string-field.js +35 -0
- package/esm/lib/components/metadata-editor-fields/components/update-mode-field-wrapper/messages.js +30 -0
- package/esm/lib/components/metadata-editor-fields/components/update-mode-field-wrapper/update-mode-field-wrapper.js +90 -0
- package/esm/lib/components/metadata-editor-fields/editor-field-types.js +26 -0
- package/esm/lib/components/metadata-editor-fields/metadata-editor-fields.js +52 -0
- package/esm/lib/components/metadata-empty-state/messages.js +46 -0
- package/esm/lib/components/metadata-empty-state/metadata-empty-state.js +63 -0
- package/esm/lib/components/metadata-instance-editor/index.js +10 -0
- package/esm/lib/components/metadata-instance-editor/subcomponents/custom-instance/custom-instance.js +76 -0
- package/esm/lib/components/metadata-instance-editor/subcomponents/custom-instance/messages.js +18 -0
- package/esm/lib/components/metadata-instance-editor/subcomponents/custom-instance-new-field/custom-instance-new-field.js +58 -0
- package/esm/lib/components/metadata-instance-editor/subcomponents/custom-instance-new-field/messages.js +42 -0
- package/esm/lib/components/metadata-instance-editor/subcomponents/delete-confirmation-modal/delete-confirmation-modal.js +81 -0
- package/esm/lib/components/metadata-instance-editor/subcomponents/delete-confirmation-modal/messages.js +38 -0
- package/esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form/messages.js +1 -0
- package/esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form/metadata-instance-form.js +79 -0
- package/esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form/utils.js +33 -0
- package/esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-footer/messages.js +22 -0
- package/esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-footer/metadata-instance-form-footer.js +50 -0
- package/esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-header/messages.js +18 -0
- package/esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-header/metadata-instance-form-header.js +40 -0
- package/esm/lib/components/metadata-instance-list/index.js +8 -0
- package/esm/lib/components/metadata-instance-list/metadata-instance-list.js +22 -0
- package/esm/lib/components/metadata-instance-list/subcomponents/metadata-instance/metadata-instance.js +51 -0
- package/esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-content/metadata-instance-content.js +26 -0
- package/esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-entry/convertDate.js +25 -0
- package/esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-entry/metadata-instance-entry.js +56 -0
- package/esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-footer/messages.js +14 -0
- package/esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-footer/metadata-instance-footer.js +30 -0
- package/esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-header/messages.js +10 -0
- package/esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-header/metadata-instance-header.js +46 -0
- package/esm/lib/components/metadata-taxonomy-field/combobox-with-api-pagination.js +188 -0
- package/esm/lib/components/metadata-taxonomy-field/index.js +4 -0
- package/esm/lib/components/metadata-taxonomy-field/messages.js +34 -0
- package/esm/lib/components/metadata-taxonomy-field/request.js +6 -0
- package/esm/lib/components/metadata-taxonomy-field/single-level-taxonomy-field.js +19 -0
- package/esm/lib/components/metadata-taxonomy-field/use-async-list.js +124 -0
- package/esm/lib/components/metadata-taxonomy-field/utils/use-intersection-observer.js +87 -0
- package/esm/lib/components/unsaved-changes-modal/index.js +4 -0
- package/esm/lib/components/unsaved-changes-modal/messages.js +26 -0
- package/esm/lib/components/unsaved-changes-modal/unsaved-changes-modal.js +55 -0
- package/esm/lib/components/unsaved-changes-modal/utils.js +6 -0
- package/esm/lib/constants.js +4 -0
- package/esm/lib/defaults.js +18 -0
- package/esm/lib/mappers.js +28 -0
- package/esm/lib/messages.js +94 -0
- package/esm/lib/metadata-editor.js +15 -0
- package/esm/lib/test-utils/formik-wrapper.js +26 -0
- package/esm/lib/test-utils/index.js +31 -0
- package/esm/lib/test-utils/sample-data.js +281 -0
- package/esm/lib/test-utils/test-utils.js +13 -0
- package/i18n/bn-IN.js +88 -0
- package/i18n/bn-IN.properties +164 -0
- package/i18n/da-DK.js +88 -0
- package/i18n/da-DK.properties +164 -0
- package/i18n/de-DE.js +88 -0
- package/i18n/de-DE.properties +164 -0
- package/i18n/en-AU.js +88 -0
- package/i18n/en-AU.properties +164 -0
- package/i18n/en-CA.js +88 -0
- package/i18n/en-CA.properties +164 -0
- package/i18n/en-GB.js +88 -0
- package/i18n/en-GB.properties +164 -0
- package/i18n/en-US.js +87 -0
- package/i18n/en-US.properties +170 -0
- package/i18n/en-x-pseudo.js +88 -0
- package/i18n/en-x-pseudo.properties +164 -0
- package/i18n/es-419.js +88 -0
- package/i18n/es-419.properties +164 -0
- package/i18n/es-ES.js +88 -0
- package/i18n/es-ES.properties +164 -0
- package/i18n/fi-FI.js +88 -0
- package/i18n/fi-FI.properties +164 -0
- package/i18n/fr-CA.js +88 -0
- package/i18n/fr-CA.properties +164 -0
- package/i18n/fr-FR.js +88 -0
- package/i18n/fr-FR.properties +164 -0
- package/i18n/hi-IN.js +88 -0
- package/i18n/hi-IN.properties +164 -0
- package/i18n/it-IT.js +88 -0
- package/i18n/it-IT.properties +164 -0
- package/i18n/ja-JP.js +88 -0
- package/i18n/ja-JP.properties +164 -0
- package/i18n/json/src/lib/components/add-metadata-template-dropdown/messages.json +1 -0
- package/i18n/json/src/lib/components/filter-dropdown-menu/messages.json +1 -0
- package/i18n/json/src/lib/components/metadata-editor-fields/components/update-mode-field-wrapper/messages.json +1 -0
- package/i18n/json/src/lib/components/metadata-empty-state/messages.json +1 -0
- package/i18n/json/src/lib/components/metadata-instance-editor/subcomponents/custom-instance/messages.json +1 -0
- package/i18n/json/src/lib/components/metadata-instance-editor/subcomponents/custom-instance-new-field/messages.json +1 -0
- package/i18n/json/src/lib/components/metadata-instance-editor/subcomponents/delete-confirmation-modal/messages.json +1 -0
- package/i18n/json/src/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-footer/messages.json +1 -0
- package/i18n/json/src/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-header/messages.json +1 -0
- package/i18n/json/src/lib/components/metadata-instance-list/subcomponents/metadata-instance-footer/messages.json +1 -0
- package/i18n/json/src/lib/components/metadata-instance-list/subcomponents/metadata-instance-header/messages.json +1 -0
- package/i18n/json/src/lib/components/metadata-taxonomy-field/messages.json +1 -0
- package/i18n/json/src/lib/components/unsaved-changes-modal/messages.json +1 -0
- package/i18n/json/src/lib/messages.json +1 -0
- package/i18n/ko-KR.js +88 -0
- package/i18n/ko-KR.properties +164 -0
- package/i18n/nb-NO.js +88 -0
- package/i18n/nb-NO.properties +164 -0
- package/i18n/nl-NL.js +88 -0
- package/i18n/nl-NL.properties +164 -0
- package/i18n/pl-PL.js +88 -0
- package/i18n/pl-PL.properties +164 -0
- package/i18n/pt-BR.js +88 -0
- package/i18n/pt-BR.properties +164 -0
- package/i18n/ru-RU.js +88 -0
- package/i18n/ru-RU.properties +164 -0
- package/i18n/sv-SE.js +88 -0
- package/i18n/sv-SE.properties +164 -0
- package/i18n/tr-TR.js +88 -0
- package/i18n/tr-TR.properties +164 -0
- package/i18n/zh-CN.js +88 -0
- package/i18n/zh-CN.properties +164 -0
- package/i18n/zh-TW.js +88 -0
- package/i18n/zh-TW.properties +164 -0
- package/package.json +55 -0
- package/styles/combobox-with-api-pagination.css +1 -0
- package/styles/custom-instance-new-field.css +1 -0
- package/styles/custom-instance.css +1 -0
- package/styles/delete-confirmation-modal.css +1 -0
- package/styles/filter-dropdown-menu.css +1 -0
- package/styles/metadata-editor-fields.css +1 -0
- package/styles/metadata-editor.css +0 -0
- package/styles/metadata-instance-content.css +1 -0
- package/styles/metadata-instance-entry.css +1 -0
- package/styles/metadata-instance-footer.css +1 -0
- package/styles/metadata-instance-form-footer.css +1 -0
- package/styles/metadata-instance-form-header.css +1 -0
- package/styles/metadata-instance-form.css +1 -0
- package/styles/metadata-instance-header.css +1 -0
- package/styles/metadata-instance-list.css +1 -0
- package/styles/metadata-instance.css +1 -0
- package/styles/update-mode-field-wrapper.css +1 -0
- package/types/index.d.ts +10 -0
- package/types/lib/components/add-metadata-template-dropdown/add-metadata-template-dropdown.d.ts +2 -0
- package/types/lib/components/add-metadata-template-dropdown/index.d.ts +2 -0
- package/types/lib/components/add-metadata-template-dropdown/messages.d.ts +18 -0
- package/types/lib/components/add-metadata-template-dropdown/types.d.ts +6 -0
- package/types/lib/components/filter-dropdown-menu/filter-dropdown-menu-content.d.ts +9 -0
- package/types/lib/components/filter-dropdown-menu/filter-dropdown-menu-empty-state.d.ts +8 -0
- package/types/lib/components/filter-dropdown-menu/filter-dropdown-menu-item.d.ts +9 -0
- package/types/lib/components/filter-dropdown-menu/filter-dropdown-menu-list.d.ts +9 -0
- package/types/lib/components/filter-dropdown-menu/filter-dropdown-menu-root.d.ts +9 -0
- package/types/lib/components/filter-dropdown-menu/filter-dropdown-menu-search.d.ts +9 -0
- package/types/lib/components/filter-dropdown-menu/filter-dropdown-menu-trigger.d.ts +11 -0
- package/types/lib/components/filter-dropdown-menu/index.d.ts +36 -0
- package/types/lib/components/filter-dropdown-menu/messages.d.ts +13 -0
- package/types/lib/components/interactive-text/interactive-text.d.ts +10 -0
- package/types/lib/components/metadata-editor-fields/components/constants.d.ts +3 -0
- package/types/lib/components/metadata-editor-fields/components/metadata-date-field/date-conversion-utils.d.ts +3 -0
- package/types/lib/components/metadata-editor-fields/components/metadata-date-field/metadata-date-field.d.ts +3 -0
- package/types/lib/components/metadata-editor-fields/components/metadata-date-field/types.d.ts +4 -0
- package/types/lib/components/metadata-editor-fields/components/metadata-date-field/use-date-internationalization.d.ts +6 -0
- package/types/lib/components/metadata-editor-fields/components/metadata-enum-field/metadata-enum-field.d.ts +3 -0
- package/types/lib/components/metadata-editor-fields/components/metadata-float-field/metadata-float-field.d.ts +3 -0
- package/types/lib/components/metadata-editor-fields/components/metadata-float-field/use-float-validation.d.ts +4 -0
- package/types/lib/components/metadata-editor-fields/components/metadata-multi-select-field/metadata-multi-select-field.d.ts +3 -0
- package/types/lib/components/metadata-editor-fields/components/metadata-string-field/metadata-string-field.d.ts +6 -0
- package/types/lib/components/metadata-editor-fields/components/update-mode-field-wrapper/messages.d.ts +32 -0
- package/types/lib/components/metadata-editor-fields/components/update-mode-field-wrapper/update-mode-field-wrapper.d.ts +12 -0
- package/types/lib/components/metadata-editor-fields/editor-field-types.d.ts +8 -0
- package/types/lib/components/metadata-editor-fields/metadata-editor-fields.d.ts +3 -0
- package/types/lib/components/metadata-editor-fields/types.d.ts +12 -0
- package/types/lib/components/metadata-empty-state/messages.d.ts +53 -0
- package/types/lib/components/metadata-empty-state/metadata-empty-state.d.ts +3 -0
- package/types/lib/components/metadata-instance-editor/index.d.ts +4 -0
- package/types/lib/components/metadata-instance-editor/subcomponents/custom-instance/custom-instance.d.ts +2 -0
- package/types/lib/components/metadata-instance-editor/subcomponents/custom-instance/messages.d.ts +18 -0
- package/types/lib/components/metadata-instance-editor/subcomponents/custom-instance/types.d.ts +3 -0
- package/types/lib/components/metadata-instance-editor/subcomponents/custom-instance-new-field/custom-instance-new-field.d.ts +2 -0
- package/types/lib/components/metadata-instance-editor/subcomponents/custom-instance-new-field/messages.d.ts +48 -0
- package/types/lib/components/metadata-instance-editor/subcomponents/custom-instance-new-field/types.d.ts +5 -0
- package/types/lib/components/metadata-instance-editor/subcomponents/delete-confirmation-modal/delete-confirmation-modal.d.ts +2 -0
- package/types/lib/components/metadata-instance-editor/subcomponents/delete-confirmation-modal/messages.d.ts +43 -0
- package/types/lib/components/metadata-instance-editor/subcomponents/delete-confirmation-modal/types.d.ts +6 -0
- package/types/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form/messages.d.ts +0 -0
- package/types/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form/metadata-instance-form.d.ts +2 -0
- package/types/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form/types.d.ts +26 -0
- package/types/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form/utils.d.ts +12 -0
- package/types/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-footer/messages.d.ts +23 -0
- package/types/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-footer/metadata-instance-form-footer.d.ts +2 -0
- package/types/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-footer/types.d.ts +5 -0
- package/types/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-header/messages.d.ts +18 -0
- package/types/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-header/metadata-instance-form-header.d.ts +2 -0
- package/types/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-header/types.d.ts +6 -0
- package/types/lib/components/metadata-instance-editor/types.d.ts +6 -0
- package/types/lib/components/metadata-instance-list/index.d.ts +2 -0
- package/types/lib/components/metadata-instance-list/metadata-instance-list.d.ts +2 -0
- package/types/lib/components/metadata-instance-list/subcomponents/metadata-instance/metadata-instance.d.ts +2 -0
- package/types/lib/components/metadata-instance-list/subcomponents/metadata-instance/types.d.ts +7 -0
- package/types/lib/components/metadata-instance-list/subcomponents/metadata-instance-content/metadata-instance-content.d.ts +2 -0
- package/types/lib/components/metadata-instance-list/subcomponents/metadata-instance-content/types.d.ts +5 -0
- package/types/lib/components/metadata-instance-list/subcomponents/metadata-instance-entry/convertDate.d.ts +30 -0
- package/types/lib/components/metadata-instance-list/subcomponents/metadata-instance-entry/metadata-instance-entry.d.ts +2 -0
- package/types/lib/components/metadata-instance-list/subcomponents/metadata-instance-entry/types.d.ts +8 -0
- package/types/lib/components/metadata-instance-list/subcomponents/metadata-instance-footer/messages.d.ts +13 -0
- package/types/lib/components/metadata-instance-list/subcomponents/metadata-instance-footer/metadata-instance-footer.d.ts +2 -0
- package/types/lib/components/metadata-instance-list/subcomponents/metadata-instance-footer/types.d.ts +5 -0
- package/types/lib/components/metadata-instance-list/subcomponents/metadata-instance-header/messages.d.ts +8 -0
- package/types/lib/components/metadata-instance-list/subcomponents/metadata-instance-header/metadata-instance-header.d.ts +4 -0
- package/types/lib/components/metadata-instance-list/subcomponents/metadata-instance-header/types.d.ts +7 -0
- package/types/lib/components/metadata-instance-list/types.d.ts +7 -0
- package/types/lib/components/metadata-taxonomy-field/combobox-with-api-pagination.d.ts +15 -0
- package/types/lib/components/metadata-taxonomy-field/index.d.ts +2 -0
- package/types/lib/components/metadata-taxonomy-field/messages.d.ts +38 -0
- package/types/lib/components/metadata-taxonomy-field/request.d.ts +7 -0
- package/types/lib/components/metadata-taxonomy-field/single-level-taxonomy-field.d.ts +5 -0
- package/types/lib/components/metadata-taxonomy-field/types.d.ts +41 -0
- package/types/lib/components/metadata-taxonomy-field/use-async-list.d.ts +63 -0
- package/types/lib/components/metadata-taxonomy-field/utils/use-intersection-observer.d.ts +28 -0
- package/types/lib/components/unsaved-changes-modal/index.d.ts +1 -0
- package/types/lib/components/unsaved-changes-modal/messages.d.ts +28 -0
- package/types/lib/components/unsaved-changes-modal/types.d.ts +19 -0
- package/types/lib/components/unsaved-changes-modal/unsaved-changes-modal.d.ts +2 -0
- package/types/lib/components/unsaved-changes-modal/utils.d.ts +1 -0
- package/types/lib/constants.d.ts +1 -0
- package/types/lib/defaults.d.ts +13 -0
- package/types/lib/mappers.d.ts +16 -0
- package/types/lib/messages.d.ts +113 -0
- package/types/lib/metadata-editor.d.ts +4 -0
- package/types/lib/test-utils/formik-wrapper.d.ts +11 -0
- package/types/lib/test-utils/index.d.ts +3 -0
- package/types/lib/test-utils/sample-data.d.ts +24 -0
- package/types/lib/test-utils/test-utils.d.ts +3 -0
- package/types/lib/types.d.ts +63 -0
@@ -0,0 +1,51 @@
|
|
1
|
+
import "../../../../../../styles/metadata-instance.css";
|
2
|
+
import { useState as f } from "react";
|
3
|
+
import { Card as h, Divider as m } from "@box/blueprint-web";
|
4
|
+
import { MetadataInstanceHeader as E } from "../metadata-instance-header/metadata-instance-header.js";
|
5
|
+
import { MetadataInstanceContent as D } from "../metadata-instance-content/metadata-instance-content.js";
|
6
|
+
import { MetadataInstanceFooter as V } from "../metadata-instance-footer/metadata-instance-footer.js";
|
7
|
+
import { MetadataEmptyState as b } from "../../../metadata-empty-state/metadata-empty-state.js";
|
8
|
+
import { jsxs as s, jsx as t, Fragment as l } from "react/jsx-runtime";
|
9
|
+
const H = "_topDivider_tzhlb_1", S = "_bottomDivider_tzhlb_5", n = {
|
10
|
+
topDivider: H,
|
11
|
+
bottomDivider: S
|
12
|
+
}, w = ({
|
13
|
+
isAiSuggestionsFeatureEnabled: d,
|
14
|
+
onEdit: p,
|
15
|
+
onEditWithAutofill: u,
|
16
|
+
templateInstance: e
|
17
|
+
}) => {
|
18
|
+
const o = e.fields, y = o.every((r) => !r.value), c = o.some((r) => !r.value), v = o.length > 0, [i, a] = f(!0);
|
19
|
+
return /* @__PURE__ */ s(h, {
|
20
|
+
children: [/* @__PURE__ */ t(E, {
|
21
|
+
canEdit: !0,
|
22
|
+
isAiSuggestionsFeatureEnabled: d,
|
23
|
+
onAutofill: u,
|
24
|
+
onEdit: p,
|
25
|
+
templateName: e == null ? void 0 : e.displayName
|
26
|
+
}), /* @__PURE__ */ t(m, {
|
27
|
+
className: n.topDivider
|
28
|
+
}), i && y ? /* @__PURE__ */ t(b, {
|
29
|
+
isAnyEmptyValueHidden: v,
|
30
|
+
isBoxAiSuggestionsFeatureEnabled: d,
|
31
|
+
level: "instance",
|
32
|
+
onShowEmptyValues: () => a(!1)
|
33
|
+
}) : /* @__PURE__ */ s(l, {
|
34
|
+
children: [/* @__PURE__ */ t(D, {
|
35
|
+
shouldHideEmptyValues: i,
|
36
|
+
templateInstance: e
|
37
|
+
}), c && /* @__PURE__ */ s(l, {
|
38
|
+
children: [/* @__PURE__ */ t(m, {
|
39
|
+
className: n.bottomDivider
|
40
|
+
}), /* @__PURE__ */ t(V, {
|
41
|
+
isAnyEmptyValueHidden: i,
|
42
|
+
onHideEmptyValues: () => a(!0),
|
43
|
+
onShowEmptyValues: () => a(!1)
|
44
|
+
})]
|
45
|
+
})]
|
46
|
+
})]
|
47
|
+
});
|
48
|
+
};
|
49
|
+
export {
|
50
|
+
w as MetadataInstance
|
51
|
+
};
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import "../../../../../../styles/metadata-instance-content.css";
|
2
|
+
import { MetadataInstanceEntry as o } from "../metadata-instance-entry/metadata-instance-entry.js";
|
3
|
+
import { jsx as a } from "react/jsx-runtime";
|
4
|
+
const c = "_metadataInstanceContent_1a9zf_1", m = {
|
5
|
+
metadataInstanceContent: c
|
6
|
+
}, i = ({
|
7
|
+
shouldHideEmptyValues: n,
|
8
|
+
templateInstance: e
|
9
|
+
}) => {
|
10
|
+
const {
|
11
|
+
fields: s = []
|
12
|
+
} = e;
|
13
|
+
return /* @__PURE__ */ a("div", {
|
14
|
+
className: m.metadataInstanceContent,
|
15
|
+
children: s.filter((t) => !t.hidden).map((t) => /* @__PURE__ */ a(o, {
|
16
|
+
description: t.description,
|
17
|
+
name: t.displayName || t.key,
|
18
|
+
shouldHideEmptyValues: n,
|
19
|
+
type: t.type,
|
20
|
+
value: t.value
|
21
|
+
}, t.id))
|
22
|
+
});
|
23
|
+
};
|
24
|
+
export {
|
25
|
+
i as MetadataInstanceContent
|
26
|
+
};
|
@@ -0,0 +1,25 @@
|
|
1
|
+
const O = /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,3})?/, E = /(Z$)/, T = /(?:[+-](?:([0-2]\d$)|([0-2]\d(?:00|30)$)|([0-2]\d:(?:00|30)$)))/, I = new RegExp(`^(${O.source})?(${E.source}|${T.source})$`), _ = 1, M = 2, S = 3, i = 4, r = 5, f = 6, D = 7;
|
2
|
+
function u(n) {
|
3
|
+
if (I.test(n)) {
|
4
|
+
const t = n.split(I);
|
5
|
+
let e = t[_];
|
6
|
+
const o = t[M], s = t[S];
|
7
|
+
if (o || (e += ".000"), t[i])
|
8
|
+
return n;
|
9
|
+
if (t[r])
|
10
|
+
return `${e + s}:00`;
|
11
|
+
if (t[f])
|
12
|
+
return `${e + s.substring(0, 3)}:${s.substring(3)}`;
|
13
|
+
if (t[D])
|
14
|
+
return n;
|
15
|
+
}
|
16
|
+
return n;
|
17
|
+
}
|
18
|
+
function N(n) {
|
19
|
+
const t = new Date(u(n)), e = t.getTime(), s = t.getTimezoneOffset() * 6e4, c = e + s;
|
20
|
+
return new Date(c);
|
21
|
+
}
|
22
|
+
export {
|
23
|
+
N as convertISOStringToUTCDate,
|
24
|
+
u as convertISOStringtoRFC3339String
|
25
|
+
};
|
@@ -0,0 +1,56 @@
|
|
1
|
+
import "../../../../../../styles/metadata-instance-entry.css";
|
2
|
+
import { Text as o } from "@box/blueprint-web";
|
3
|
+
import { FormattedDate as d } from "react-intl";
|
4
|
+
import { convertISOStringToUTCDate as l } from "./convertDate.js";
|
5
|
+
import y from "../../../interactive-text/interactive-text.js";
|
6
|
+
import { jsxs as f, jsx as a } from "react/jsx-runtime";
|
7
|
+
const I = "_metadataInstanceEntry_1qhk8_1", u = "_metadataInstanceEntryInteractiveLabel_1qhk8_7", c = {
|
8
|
+
metadataInstanceEntry: I,
|
9
|
+
metadataInstanceEntryInteractiveLabel: u
|
10
|
+
}, _ = ({
|
11
|
+
description: r,
|
12
|
+
name: e,
|
13
|
+
shouldHideEmptyValues: i,
|
14
|
+
type: m,
|
15
|
+
value: t
|
16
|
+
}) => {
|
17
|
+
const n = (() => {
|
18
|
+
if (typeof t == "number")
|
19
|
+
return t.toString();
|
20
|
+
if (!t)
|
21
|
+
return null;
|
22
|
+
if (Array.isArray(t))
|
23
|
+
return t.join(", ");
|
24
|
+
if (m === "date" && typeof t == "string") {
|
25
|
+
const s = l(t);
|
26
|
+
return /* @__PURE__ */ a(d, {
|
27
|
+
day: "numeric",
|
28
|
+
month: "long",
|
29
|
+
value: s,
|
30
|
+
year: "numeric"
|
31
|
+
});
|
32
|
+
}
|
33
|
+
return t;
|
34
|
+
})();
|
35
|
+
return i && !n ? null : /* @__PURE__ */ f("div", {
|
36
|
+
className: c.metadataInstanceEntry,
|
37
|
+
children: [/* @__PURE__ */ a(o, {
|
38
|
+
as: "p",
|
39
|
+
color: "textOnLightSecondary",
|
40
|
+
variant: "bodyDefaultBold",
|
41
|
+
children: r ? /* @__PURE__ */ a(y, {
|
42
|
+
className: c.metadataInstanceEntryInteractiveLabel,
|
43
|
+
color: "textOnLightSecondary",
|
44
|
+
tooltipText: r,
|
45
|
+
variant: "bodyDefaultBold",
|
46
|
+
children: e
|
47
|
+
}) : e
|
48
|
+
}), n && /* @__PURE__ */ a(o, {
|
49
|
+
as: "p",
|
50
|
+
children: n
|
51
|
+
})]
|
52
|
+
});
|
53
|
+
};
|
54
|
+
export {
|
55
|
+
_ as MetadataInstanceEntry
|
56
|
+
};
|
package/esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-footer/messages.js
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
import { defineMessages as e } from "react-intl";
|
2
|
+
const t = e({
|
3
|
+
showEmptyValuesCTA: {
|
4
|
+
id: "metadataEditor.viewInstance.metadataInstanceFooter.showEmptyValuesCTA",
|
5
|
+
defaultMessage: "Show empty values"
|
6
|
+
},
|
7
|
+
hideEmptyValuesCTA: {
|
8
|
+
id: "metadataEditor.viewInstance.metadataInstanceFooter.hideEmptyValuesCTA",
|
9
|
+
defaultMessage: "Hide empty values"
|
10
|
+
}
|
11
|
+
});
|
12
|
+
export {
|
13
|
+
t as default
|
14
|
+
};
|
@@ -0,0 +1,30 @@
|
|
1
|
+
import "../../../../../../styles/metadata-instance-footer.css";
|
2
|
+
import { TextButton as e } from "@box/blueprint-web";
|
3
|
+
import { useIntl as c } from "react-intl";
|
4
|
+
import s from "./messages.js";
|
5
|
+
import { jsx as t } from "react/jsx-runtime";
|
6
|
+
const i = "_metadataInstanceFooter_6auqo_1", l = "_button_6auqo_5", o = {
|
7
|
+
metadataInstanceFooter: i,
|
8
|
+
button: l
|
9
|
+
}, _ = ({
|
10
|
+
isAnyEmptyValueHidden: n,
|
11
|
+
onHideEmptyValues: r,
|
12
|
+
onShowEmptyValues: m
|
13
|
+
}) => {
|
14
|
+
const a = c();
|
15
|
+
return /* @__PURE__ */ t("div", {
|
16
|
+
className: o.metadataInstanceFooter,
|
17
|
+
children: n ? /* @__PURE__ */ t(e, {
|
18
|
+
className: o.button,
|
19
|
+
onClick: m,
|
20
|
+
children: a.formatMessage(s.showEmptyValuesCTA)
|
21
|
+
}) : /* @__PURE__ */ t(e, {
|
22
|
+
className: o.button,
|
23
|
+
onClick: r,
|
24
|
+
children: a.formatMessage(s.hideEmptyValuesCTA)
|
25
|
+
})
|
26
|
+
});
|
27
|
+
};
|
28
|
+
export {
|
29
|
+
_ as MetadataInstanceFooter
|
30
|
+
};
|
@@ -0,0 +1,46 @@
|
|
1
|
+
import "../../../../../../styles/metadata-instance-header.css";
|
2
|
+
import { Text as u, IconButton as a } from "@box/blueprint-web";
|
3
|
+
import { Pencil as b } from "@box/blueprint-web-assets/icons/Line";
|
4
|
+
import { BoxAiLogo as B } from "@box/blueprint-web-assets/icons/Logo";
|
5
|
+
import { useIntl as f } from "react-intl";
|
6
|
+
import I from "./messages.js";
|
7
|
+
import { jsxs as e, jsx as t } from "react/jsx-runtime";
|
8
|
+
const _ = "_metadataInstanceHeader_1vbbg_1", g = "_iconButtonsContainer_1vbbg_7", p = "_title_1vbbg_15", n = {
|
9
|
+
metadataInstanceHeader: _,
|
10
|
+
iconButtonsContainer: g,
|
11
|
+
title: p
|
12
|
+
}, v = "Autofill with Box AI", h = "Edit", k = ({
|
13
|
+
canEdit: i,
|
14
|
+
isAiSuggestionsFeatureEnabled: s,
|
15
|
+
onEdit: r,
|
16
|
+
onAutofill: c,
|
17
|
+
templateName: o
|
18
|
+
}) => {
|
19
|
+
const l = f(), m = o || l.formatMessage(I.customInstanceTitle), d = s && o;
|
20
|
+
return /* @__PURE__ */ e("div", {
|
21
|
+
className: n.metadataInstanceHeader,
|
22
|
+
children: [/* @__PURE__ */ t(u, {
|
23
|
+
as: "h1",
|
24
|
+
className: n.title,
|
25
|
+
variant: "titleMedium",
|
26
|
+
children: m
|
27
|
+
}), i && /* @__PURE__ */ e("div", {
|
28
|
+
className: n.iconButtonsContainer,
|
29
|
+
children: [d && /* @__PURE__ */ t(a, {
|
30
|
+
"aria-label": v,
|
31
|
+
icon: B,
|
32
|
+
onClick: c,
|
33
|
+
variant: "icon-logo"
|
34
|
+
}), /* @__PURE__ */ t(a, {
|
35
|
+
"aria-label": h,
|
36
|
+
icon: b,
|
37
|
+
onClick: r
|
38
|
+
})]
|
39
|
+
})]
|
40
|
+
});
|
41
|
+
};
|
42
|
+
export {
|
43
|
+
k as MetadataInstanceHeader,
|
44
|
+
v as autofillButtonAriaLabel,
|
45
|
+
h as editButtonAriaLabel
|
46
|
+
};
|
@@ -0,0 +1,188 @@
|
|
1
|
+
import "../../../../styles/combobox-with-api-pagination.css";
|
2
|
+
import { ComboboxItemValue as q } from "@ariakit/react";
|
3
|
+
import { Combobox as u, LoadingIndicator as H, InlineNotice as J, Text as K } from "@box/blueprint-web";
|
4
|
+
import { Search as Q, Loader as X } from "@box/blueprint-web-assets/icons/Fill";
|
5
|
+
import { IconIconOnLightSecondary as Y, Size6 as C, Size1 as Z } from "@box/blueprint-web-assets/tokens/tokens";
|
6
|
+
import { useRef as I, useCallback as $, useState as oo, useMemo as y, useEffect as M, forwardRef as eo } from "react";
|
7
|
+
import { useIntl as V, FormattedMessage as T } from "react-intl";
|
8
|
+
import i from "./messages.js";
|
9
|
+
import { useAsyncList as to } from "./use-async-list.js";
|
10
|
+
import { useTrackVisibility as ro } from "./utils/use-intersection-observer.js";
|
11
|
+
import { jsx as r, jsxs as N, Fragment as no } from "react/jsx-runtime";
|
12
|
+
const io = "_container_16dlc_1", so = "_highlightOptionText_16dlc_7", ao = "_option_16dlc_20", lo = "_errorComboboxOption_16dlc_24", co = "_errorComboboxOptionText_16dlc_29", d = {
|
13
|
+
container: io,
|
14
|
+
highlightOptionText: so,
|
15
|
+
option: ao,
|
16
|
+
errorComboboxOption: lo,
|
17
|
+
errorComboboxOptionText: co
|
18
|
+
}, S = /* @__PURE__ */ eo(({
|
19
|
+
onTryAgain: p
|
20
|
+
}, m) => {
|
21
|
+
const {
|
22
|
+
formatMessage: h
|
23
|
+
} = V();
|
24
|
+
return /* @__PURE__ */ N(no, {
|
25
|
+
children: [/* @__PURE__ */ r(J, {
|
26
|
+
variant: "error",
|
27
|
+
variantIconAriaLabel: h(i.loadingResultsErrorIconLabel),
|
28
|
+
children: /* @__PURE__ */ r(T, {
|
29
|
+
...i.loadingResultsErrorMessage
|
30
|
+
})
|
31
|
+
}), /* @__PURE__ */ r(u.Option, {
|
32
|
+
ref: m,
|
33
|
+
className: d.errorComboboxOption,
|
34
|
+
onClick: p,
|
35
|
+
children: /* @__PURE__ */ N(K, {
|
36
|
+
as: "span",
|
37
|
+
className: d.errorComboboxOptionText,
|
38
|
+
color: "textOnLightLink",
|
39
|
+
variant: "bodyDefaultBold",
|
40
|
+
children: [/* @__PURE__ */ r(T, {
|
41
|
+
...i.loadingResultsErrorAction
|
42
|
+
}), /* @__PURE__ */ r(X, {
|
43
|
+
color: "currentColor",
|
44
|
+
height: "12px",
|
45
|
+
width: "12px"
|
46
|
+
})]
|
47
|
+
})
|
48
|
+
})]
|
49
|
+
});
|
50
|
+
}), _ = "__LOADING__", R = "__LOADING_ERROR__", uo = "0px 0px 20px 0px", po = /* @__PURE__ */ r(Q, {
|
51
|
+
color: Y,
|
52
|
+
height: C,
|
53
|
+
role: "presentation",
|
54
|
+
style: {
|
55
|
+
padding: Z,
|
56
|
+
boxSizing: "border-box"
|
57
|
+
},
|
58
|
+
width: C
|
59
|
+
}), Eo = (p) => {
|
60
|
+
const {
|
61
|
+
defaultFetcher: m,
|
62
|
+
searchFetcher: h,
|
63
|
+
onInputValueChange: f,
|
64
|
+
value: D,
|
65
|
+
noResultMessage: F,
|
66
|
+
loadingAriaLabel: k,
|
67
|
+
multiselect: g = !1,
|
68
|
+
...P
|
69
|
+
} = p, {
|
70
|
+
formatMessage: a
|
71
|
+
} = V(), b = I(null), o = to({
|
72
|
+
async load({
|
73
|
+
marker: t,
|
74
|
+
searchInput: e,
|
75
|
+
signal: v
|
76
|
+
}) {
|
77
|
+
const c = await (e === "" ? m : h)({
|
78
|
+
signal: v,
|
79
|
+
marker: t,
|
80
|
+
searchInput: e
|
81
|
+
});
|
82
|
+
return {
|
83
|
+
items: c.options,
|
84
|
+
marker: c.marker
|
85
|
+
};
|
86
|
+
}
|
87
|
+
}), A = I(!1), w = $(() => {
|
88
|
+
A.current || (o.reload(), A.current = !0);
|
89
|
+
}, []), [n, L] = oo(D), x = y(() => Array.isArray(n) ? n.filter((t) => !o.items.some((e) => e.value === t.value)) : [], [n, o.items]), B = (t) => {
|
90
|
+
const {
|
91
|
+
value: e,
|
92
|
+
level: v,
|
93
|
+
...O
|
94
|
+
} = t;
|
95
|
+
if (e === _)
|
96
|
+
return o.hasNextPage ? /* @__PURE__ */ r(u.Option, {
|
97
|
+
...O,
|
98
|
+
ref: W,
|
99
|
+
disabled: !0,
|
100
|
+
value: e,
|
101
|
+
children: /* @__PURE__ */ r(H, {
|
102
|
+
"aria-label": a(i.loadingMoreAriaLabel),
|
103
|
+
style: {
|
104
|
+
position: "unset"
|
105
|
+
}
|
106
|
+
})
|
107
|
+
}) : null;
|
108
|
+
if (e === R && o.hasError && !o.isEmpty)
|
109
|
+
return /* @__PURE__ */ r(S, {
|
110
|
+
onTryAgain: () => {
|
111
|
+
var s;
|
112
|
+
o.loadMore(), (s = b.current) == null || s.focus();
|
113
|
+
}
|
114
|
+
});
|
115
|
+
if (x.some((s) => s.value === e))
|
116
|
+
return null;
|
117
|
+
const c = () => n ? Array.isArray(n) ? n.some((s) => s.value === e) : n.value === e : !1;
|
118
|
+
return /* @__PURE__ */ r(u.Option, {
|
119
|
+
...O,
|
120
|
+
className: d.option,
|
121
|
+
disabled: c(),
|
122
|
+
value: e,
|
123
|
+
children: /* @__PURE__ */ r(q, {
|
124
|
+
className: d.highlightOptionText,
|
125
|
+
value: e
|
126
|
+
})
|
127
|
+
});
|
128
|
+
}, z = (t) => {
|
129
|
+
f == null || f(t), o.search(t);
|
130
|
+
}, G = () => {
|
131
|
+
var t;
|
132
|
+
o.reload(), (t = b.current) == null || t.focus();
|
133
|
+
};
|
134
|
+
let l;
|
135
|
+
o.hasError && !o.isLoading ? l = /* @__PURE__ */ r(S, {
|
136
|
+
onTryAgain: G
|
137
|
+
}) : o.isEmpty && !o.isLoading ? l = F || a(i.noResults) : l = void 0;
|
138
|
+
const [W, {
|
139
|
+
rootRef: j,
|
140
|
+
isVisible: E
|
141
|
+
}] = ro({
|
142
|
+
rootMargin: uo
|
143
|
+
});
|
144
|
+
M(() => {
|
145
|
+
o.searchInput === "" && !g && L(void 0);
|
146
|
+
}, [o.searchInput, g]), M(() => {
|
147
|
+
if (!(E && o.hasNextPage))
|
148
|
+
return;
|
149
|
+
const e = setTimeout(() => {
|
150
|
+
o.loadMore();
|
151
|
+
}, 100);
|
152
|
+
return () => {
|
153
|
+
clearTimeout(e);
|
154
|
+
};
|
155
|
+
}, [E]);
|
156
|
+
const U = y(() => {
|
157
|
+
const t = o.hasNextPage ? {
|
158
|
+
id: _,
|
159
|
+
value: _
|
160
|
+
} : null, e = !t && o.hasError && !o.isEmpty ? {
|
161
|
+
id: R,
|
162
|
+
value: R
|
163
|
+
} : null;
|
164
|
+
return [...o.items, ...x, t, e].filter(Boolean);
|
165
|
+
}, [o.hasNextPage, o.hasError, o.isEmpty, o.items, x]);
|
166
|
+
return /* @__PURE__ */ r(u, {
|
167
|
+
as: "input",
|
168
|
+
...P,
|
169
|
+
ref: b,
|
170
|
+
clearButtonAriaLabel: a(i.clearButtonAriaLabel),
|
171
|
+
endComboboxIcon: po,
|
172
|
+
focusLoop: !1,
|
173
|
+
getPopoverRef: j,
|
174
|
+
loading: o.isReloading,
|
175
|
+
loadingAriaLabel: k || a(i.loadingAriaLabel),
|
176
|
+
multiselect: g,
|
177
|
+
noResultMessage: l,
|
178
|
+
onFocus: w,
|
179
|
+
onInputValueChange: z,
|
180
|
+
onValueChange: L,
|
181
|
+
options: U,
|
182
|
+
renderOption: B,
|
183
|
+
value: n
|
184
|
+
});
|
185
|
+
};
|
186
|
+
export {
|
187
|
+
Eo as ComboboxWithApiPagination
|
188
|
+
};
|
@@ -0,0 +1,34 @@
|
|
1
|
+
import { defineMessages as o } from "react-intl";
|
2
|
+
const e = o({
|
3
|
+
loadingResultsErrorAction: {
|
4
|
+
id: "comboboxWithApiPagination.errorAction",
|
5
|
+
defaultMessage: "Reload"
|
6
|
+
},
|
7
|
+
loadingResultsErrorMessage: {
|
8
|
+
id: "comboboxWithApiPagination.errorMessage",
|
9
|
+
defaultMessage: "Failed to load options"
|
10
|
+
},
|
11
|
+
loadingResultsErrorIconLabel: {
|
12
|
+
id: "comboboxWithApiPagination.errorIconLabel",
|
13
|
+
defaultMessage: "Error"
|
14
|
+
},
|
15
|
+
loadingAriaLabel: {
|
16
|
+
id: "comboboxWithApiPagination.loadingAriaLabel",
|
17
|
+
defaultMessage: "Loading..."
|
18
|
+
},
|
19
|
+
loadingMoreAriaLabel: {
|
20
|
+
id: "comboboxWithApiPagination.loadingMoreAriaLabel",
|
21
|
+
defaultMessage: "Loading more..."
|
22
|
+
},
|
23
|
+
noResults: {
|
24
|
+
id: "comboboxWithApiPagination.noResults",
|
25
|
+
defaultMessage: "No results found"
|
26
|
+
},
|
27
|
+
clearButtonAriaLabel: {
|
28
|
+
id: "comboboxWithApiPagination.clearButtonAriaLabel",
|
29
|
+
defaultMessage: "Clear input and selection"
|
30
|
+
}
|
31
|
+
});
|
32
|
+
export {
|
33
|
+
e as default
|
34
|
+
};
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import { ComboboxWithApiPagination as n } from "./combobox-with-api-pagination.js";
|
2
|
+
import { jsx as a } from "react/jsx-runtime";
|
3
|
+
const c = (e) => {
|
4
|
+
const {
|
5
|
+
label: o,
|
6
|
+
defaultFetcher: t,
|
7
|
+
searchFetcher: r,
|
8
|
+
...i
|
9
|
+
} = e;
|
10
|
+
return /* @__PURE__ */ a(n, {
|
11
|
+
...i,
|
12
|
+
defaultFetcher: t,
|
13
|
+
label: o,
|
14
|
+
searchFetcher: r
|
15
|
+
});
|
16
|
+
};
|
17
|
+
export {
|
18
|
+
c as SingleLevelTaxonomyField
|
19
|
+
};
|
@@ -0,0 +1,124 @@
|
|
1
|
+
import { useReducer as I } from "react";
|
2
|
+
import { RequestStates as u } from "./request.js";
|
3
|
+
var s = /* @__PURE__ */ function(r) {
|
4
|
+
return r.LOAD_MORE = "LOAD_MORE", r.RELOAD = "RELOAD", r.SEARCH = "SEARCH", r.SET_ERROR = "SET_ERROR", r.SET_LOADING = "SET_LOADING", r;
|
5
|
+
}(s || {});
|
6
|
+
function i(r, e) {
|
7
|
+
switch (e.type) {
|
8
|
+
case s.LOAD_MORE:
|
9
|
+
return {
|
10
|
+
...r,
|
11
|
+
abortController: e.abortController,
|
12
|
+
error: null,
|
13
|
+
items: [...r.items, ...e.items],
|
14
|
+
marker: e.marker,
|
15
|
+
requestState: u.SUCCESS
|
16
|
+
};
|
17
|
+
case s.RELOAD:
|
18
|
+
return e.abortController !== r.abortController ? r : {
|
19
|
+
...r,
|
20
|
+
abortController: null,
|
21
|
+
error: null,
|
22
|
+
items: [...e.items],
|
23
|
+
marker: e.marker,
|
24
|
+
requestState: u.SUCCESS,
|
25
|
+
searchInput: ""
|
26
|
+
};
|
27
|
+
case s.SEARCH:
|
28
|
+
return {
|
29
|
+
...r,
|
30
|
+
abortController: e.abortController,
|
31
|
+
error: null,
|
32
|
+
items: [...e.items],
|
33
|
+
marker: e.marker,
|
34
|
+
requestState: u.SUCCESS,
|
35
|
+
searchInput: e.searchInput ?? r.searchInput
|
36
|
+
};
|
37
|
+
case s.SET_ERROR:
|
38
|
+
return {
|
39
|
+
...r,
|
40
|
+
items: s.LOAD_MORE ? r.items : [],
|
41
|
+
error: e.error,
|
42
|
+
requestState: u.ERROR
|
43
|
+
};
|
44
|
+
case s.SET_LOADING:
|
45
|
+
return {
|
46
|
+
...r,
|
47
|
+
requestInitiator: e.requestInitiator,
|
48
|
+
requestState: u.IN_PROGRESS,
|
49
|
+
abortController: e.abortController
|
50
|
+
};
|
51
|
+
default:
|
52
|
+
throw new Error(`Invalid action type "${e.type}"`);
|
53
|
+
}
|
54
|
+
}
|
55
|
+
function C(r) {
|
56
|
+
const {
|
57
|
+
load: e
|
58
|
+
} = r, [t, l] = I(i, {
|
59
|
+
error: null,
|
60
|
+
items: [],
|
61
|
+
requestInitiator: null,
|
62
|
+
requestState: u.NOT_STARTED,
|
63
|
+
searchInput: ""
|
64
|
+
}), a = async (o, S) => {
|
65
|
+
var E;
|
66
|
+
const R = new AbortController();
|
67
|
+
try {
|
68
|
+
if (o.type === s.SEARCH && t.requestState === u.IN_PROGRESS && t.abortController.abort(), t.requestInitiator === s.LOAD_MORE && t.requestState === u.IN_PROGRESS && o.type === s.LOAD_MORE) {
|
69
|
+
(E = o.abortController) == null || E.abort();
|
70
|
+
return;
|
71
|
+
}
|
72
|
+
l({
|
73
|
+
type: s.SET_LOADING,
|
74
|
+
requestInitiator: o.type,
|
75
|
+
abortController: R
|
76
|
+
});
|
77
|
+
const n = await S({
|
78
|
+
items: t.items.slice(),
|
79
|
+
signal: R.signal,
|
80
|
+
marker: o.type === s.LOAD_MORE ? t.marker : null,
|
81
|
+
searchInput: o.searchInput ?? t.searchInput
|
82
|
+
}), O = n.searchInput ?? o.searchInput ?? t.searchInput;
|
83
|
+
l({
|
84
|
+
type: o.type,
|
85
|
+
...n,
|
86
|
+
searchInput: O,
|
87
|
+
abortController: R
|
88
|
+
});
|
89
|
+
} catch (n) {
|
90
|
+
if ((n == null ? void 0 : n.name) === "AbortError")
|
91
|
+
return;
|
92
|
+
l({
|
93
|
+
type: s.SET_ERROR,
|
94
|
+
error: n,
|
95
|
+
abortController: R
|
96
|
+
});
|
97
|
+
}
|
98
|
+
};
|
99
|
+
return {
|
100
|
+
hasError: t.requestState === u.ERROR,
|
101
|
+
hasNextPage: t.requestState === u.ERROR ? !1 : t.marker != null,
|
102
|
+
isEmpty: t.items.length === 0,
|
103
|
+
isLoading: t.requestState === u.IN_PROGRESS,
|
104
|
+
isReloading: t.requestState === u.IN_PROGRESS && (t.requestInitiator === s.RELOAD || t.requestInitiator === s.SEARCH),
|
105
|
+
items: t.items,
|
106
|
+
loadMore: () => a({
|
107
|
+
type: s.LOAD_MORE
|
108
|
+
}, e),
|
109
|
+
reload: () => {
|
110
|
+
a({
|
111
|
+
type: s.RELOAD
|
112
|
+
}, e);
|
113
|
+
},
|
114
|
+
requestInitiator: t.requestInitiator,
|
115
|
+
searchInput: t.searchInput,
|
116
|
+
search: (o) => a({
|
117
|
+
type: s.SEARCH,
|
118
|
+
searchInput: o
|
119
|
+
}, e)
|
120
|
+
};
|
121
|
+
}
|
122
|
+
export {
|
123
|
+
C as useAsyncList
|
124
|
+
};
|