@webx-ui/module-delivery 0.0.0-stage → 0.1.1
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 +21 -0
- package/README.md +58 -2
- package/dist/BindingsPage-DiVZys4B.js +280 -0
- package/dist/BindingsPage-DiVZys4B.js.map +1 -0
- package/dist/BindingsPage.d.ts +2 -0
- package/dist/CarrierDialog.d.ts +26 -0
- package/dist/CarriersPage-DlaIE-2K.js +650 -0
- package/dist/CarriersPage-DlaIE-2K.js.map +1 -0
- package/dist/CarriersPage.d.ts +2 -0
- package/dist/GeographyPage-T3vwSyud.js +750 -0
- package/dist/GeographyPage-T3vwSyud.js.map +1 -0
- package/dist/GeographyPage.d.ts +2 -0
- package/dist/LocalityDialog.d.ts +39 -0
- package/dist/LocalitySearch.d.ts +33 -0
- package/dist/MethodPane.d.ts +29 -0
- package/dist/MethodsPage-DrrRpjVY.js +415 -0
- package/dist/MethodsPage-DrrRpjVY.js.map +1 -0
- package/dist/MethodsPage.d.ts +2 -0
- package/dist/OrderChangeDialog.d.ts +7 -0
- package/dist/OrderDeliveryNode.d.ts +2 -0
- package/dist/PointDialog.d.ts +22 -0
- package/dist/PointsPage-C16GT-YH.js +336 -0
- package/dist/PointsPage-C16GT-YH.js.map +1 -0
- package/dist/PointsPage.d.ts +2 -0
- package/dist/PopularPage-BdE59dwB.js +141 -0
- package/dist/PopularPage-BdE59dwB.js.map +1 -0
- package/dist/PopularPage.d.ts +2 -0
- package/dist/RegionDialog.d.ts +11 -0
- package/dist/WaybillDialog.d.ts +8 -0
- package/dist/api.d.ts +151 -0
- package/dist/fields/CountryField.d.ts +14 -0
- package/dist/fields/LocalitiesField.d.ts +14 -0
- package/dist/fields/LocalityField.d.ts +16 -0
- package/dist/fields/PointKindField.d.ts +20 -0
- package/dist/fields/RegionField.d.ts +19 -0
- package/dist/fields/ScheduleField.d.ts +24 -0
- package/dist/i18n.d.ts +5 -0
- package/dist/index-CuhwaAcG.js +2540 -0
- package/dist/index-CuhwaAcG.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/messages.d.ts +7 -0
- package/dist/module.d.ts +19 -0
- package/dist/style.css +1 -0
- package/dist/types.d.ts +467 -0
- package/package.json +64 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CarriersPage-DlaIE-2K.js","sources":["../src/CarrierDialog.vue","../src/CarriersPage.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\nimport {\n toast,\n WxBadge,\n WxButton,\n WxDialog,\n WxForm,\n WxFormItem,\n WxInput,\n WxInputNumber,\n WxSelect,\n WxSkeleton,\n WxSpace,\n WxSwitch,\n type SelectOption,\n} from '@webx-ui/core'\nimport { useAdmin, useErrorText, WxDate } from '@webx-ui/module-admin'\nimport { createDeliveryApi } from './api'\nimport { useDeliveryWords } from './i18n'\nimport type { CarrierDetail, CarrierField, SettingOption } from './types'\n\n/**\n * One carrier's settings and keys (§13.2), and its runs.\n *\n * A key is never sent to the panel: the dialog says whether each one is set, and an empty field\n * means «leave it» — typing a new value replaces it, «Clear» removes it. «Check the connection»\n * tries the stored keys with whatever is typed over them, without saving.\n *\n * A field with `options: 'carrier'` is a select whose options come from the carrier's account\n * (`ProvidesSettingOptions`): it waits for the key and for the fields it `depends` on, a change\n * empties the fields that depend on it, a `search` field asks as the admin types. The label of the\n * chosen value is kept beside it (`_labels`), so the field shows it even when the carrier is down.\n */\nconst props = defineProps<{ carrier: string | null }>()\n\nconst open = defineModel<boolean>('open', { default: false })\n\nconst emit = defineEmits<{ saved: [] }>()\n\nconst LABELS = '_labels'\n\nconst context = useAdmin()\nconst api = createDeliveryApi(context)\nconst t = useDeliveryWords()\nconst message = useErrorText()\n\nconst detail = ref<CarrierDetail | null>(null)\nconst settings = ref<Record<string, unknown>>({})\nconst typed = ref<Record<string, string>>({})\nconst loading = ref(false)\nconst saving = ref(false)\nconst testing = ref(false)\nconst errors = ref<Record<string, string>>({})\n\n/** Options from the carrier's account by field, what is being asked, and why a list did not come. */\nconst choices = ref<Record<string, SettingOption[]>>({})\nconst asking = ref<Record<string, boolean>>({})\nconst failures = ref<Record<string, string>>({})\nconst refreshing = ref(false)\n\nconst canManage = computed(() => context.can('delivery.manage'))\n\nconst fields = computed(() => detail.value?.settings.fields ?? [])\nconst fromAccount = computed(() => fields.value.filter(isFromAccount))\n\n/** Options from the account are asked with the stored key: none set — nothing to ask with. */\nconst keyed = computed(\n () =>\n !detail.value ||\n detail.value.credentials.length === 0 ||\n detail.value.credentials.some((one) => one.set),\n)\n\nfunction isFromAccount(field: CarrierField): boolean {\n return field.options === 'carrier'\n}\n\nfunction label(field: CarrierField): string {\n if (typeof field.label === 'string') return field.label\n if (field.label && typeof field.label === 'object') {\n const locale = context.i18n.state.locale\n\n return field.label[locale] ?? Object.values(field.label)[0] ?? field.name\n }\n\n return field.name\n}\n\n/** A key the carrier gave no label: words, never its code name. */\nfunction keyLabel(field: CarrierField, index: number, count: number): string {\n if (field.label) return label(field)\n\n return count > 1 ? `${t('carrier.key')} ${index + 1}` : t('carrier.key')\n}\n\n/*\n * A field left empty takes the carrier's default when it is used (the waybill's weight, the\n * description of the cargo): the placeholder says which, without storing it as a choice.\n */\nfunction defaultOf(field: CarrierField): string | undefined {\n return typeof field.default === 'number' || typeof field.default === 'string'\n ? String(field.default)\n : undefined\n}\n\nfunction byName(name: string): CarrierField | undefined {\n return fields.value.find((one) => one.name === name)\n}\n\nconst blank = (value: unknown) => value === null || value === undefined || value === ''\n\nfunction labels(): Record<string, string> {\n const stored = settings.value[LABELS]\n\n return stored && typeof stored === 'object' ? (stored as Record<string, string>) : {}\n}\n\n/** The first field this one waits for, or null — it may be asked. */\nfunction waitingFor(field: CarrierField): CarrierField | null {\n for (const parent of field.depends ?? []) {\n if (blank(settings.value[parent])) return byName(parent) ?? { name: parent }\n }\n\n return null\n}\n\nfunction dependsValues(field: CarrierField): Record<string, unknown> {\n return Object.fromEntries((field.depends ?? []).map((name) => [name, settings.value[name]]))\n}\n\n/** Why the field cannot be chosen now, in words; null — it can. */\nfunction blocked(field: CarrierField): string | null {\n if (!keyed.value) return t('options.no-key')\n\n const parent = waitingFor(field)\n\n if (parent) return t('options.choose-first', { field: label(parent) })\n\n return failures.value[field.name] ?? null\n}\n\n/** The options to draw: what the account gave, and the chosen value by its stored label. */\nfunction optionsOf(field: CarrierField): SelectOption[] {\n const list: SelectOption[] = (choices.value[field.name] ?? []).map((one) => ({\n value: one.value,\n label: one.hint ? `${one.label} · ${one.hint}` : one.label,\n }))\n const value = settings.value[field.name]\n\n if (!blank(value) && !list.some((one) => one.value === String(value))) {\n list.unshift({ value: String(value), label: labels()[field.name] ?? String(value) })\n }\n\n return list\n}\n\nasync function ask(field: CarrierField, q?: string, fresh = false): Promise<void> {\n if (!props.carrier || !keyed.value || waitingFor(field)) return\n\n // A search field shows its chosen value by its label until the admin types.\n if (field.search && !q) return\n\n asking.value = { ...asking.value, [field.name]: true }\n\n try {\n const list = await api.carrierOptions(props.carrier, field.name, {\n values: dependsValues(field),\n q,\n fresh,\n })\n\n choices.value = { ...choices.value, [field.name]: list }\n failures.value = Object.fromEntries(\n Object.entries(failures.value).filter(([name]) => name !== field.name),\n )\n } catch (error) {\n failures.value = { ...failures.value, [field.name]: message(error) }\n } finally {\n asking.value = { ...asking.value, [field.name]: false }\n }\n}\n\n/** Every field that waits for nothing, as the dialog opens or «Refresh lists» is pressed. */\nasync function askAll(fresh = false): Promise<void> {\n await Promise.all(fromAccount.value.map((field) => ask(field, undefined, fresh)))\n}\n\nasync function refresh(): Promise<void> {\n refreshing.value = true\n failures.value = {}\n\n try {\n await askAll(true)\n } finally {\n refreshing.value = false\n }\n}\n\n/** The fields that depend on this one, and those that depend on them, in their order. */\nfunction children(name: string): CarrierField[] {\n const found: CarrierField[] = []\n const walk = (parent: string) => {\n for (const field of fields.value) {\n if ((field.depends ?? []).includes(parent) && !found.includes(field)) {\n found.push(field)\n walk(field.name)\n }\n }\n }\n\n walk(name)\n\n return found\n}\n\nfunction choose(field: CarrierField, value: unknown): void {\n const picked = (choices.value[field.name] ?? []).find((one) => one.value === value)\n const nextLabels = { ...labels() }\n\n settings.value[field.name] = value\n\n if (picked) nextLabels[field.name] = picked.label\n else if (blank(value)) delete nextLabels[field.name]\n\n // A new sender has other contacts: whatever stood on the old one is emptied down the chain.\n for (const child of children(field.name)) {\n settings.value[child.name] = null\n delete nextLabels[child.name]\n choices.value = { ...choices.value, [child.name]: [] }\n }\n\n settings.value[LABELS] = nextLabels\n\n for (const child of children(field.name)) void ask(child)\n}\n\nconst timers: Record<string, ReturnType<typeof setTimeout>> = {}\n\nfunction search(field: CarrierField, q: string): void {\n clearTimeout(timers[field.name])\n\n if (q.trim().length < 2) return\n\n timers[field.name] = setTimeout(() => void ask(field, q.trim()), 250)\n}\n\n/**\n * Under the field: why it is off, a value gone from the account, or nothing. «Type to search» is\n * the placeholder of a search field already — said twice under it, it only adds a line.\n */\nfunction helpOf(field: CarrierField): string | undefined {\n if (!isFromAccount(field)) return undefined\n\n const missing = detail.value?.settings.missing?.[field.name]\n\n return blocked(field) ?? (missing ? t('options.missing', { label: missing }) : undefined)\n}\n\nasync function load(): Promise<void> {\n if (!props.carrier) return\n\n loading.value = true\n typed.value = {}\n errors.value = {}\n choices.value = {}\n failures.value = {}\n\n try {\n detail.value = await api.carrier(props.carrier)\n settings.value = { ...detail.value.settings.values }\n } catch (error) {\n toast.danger(message(error))\n open.value = false\n\n return\n } finally {\n loading.value = false\n }\n\n void askAll()\n}\n\nwatch(open, (now) => {\n if (now) void load()\n})\n\nfunction credentials(): Record<string, string> {\n return Object.fromEntries(Object.entries(typed.value).filter(([, value]) => value.trim() !== ''))\n}\n\nasync function save(clear: string[] = []): Promise<void> {\n if (!props.carrier) return\n\n saving.value = true\n errors.value = {}\n\n try {\n // The labels are the server's to write: it takes them from the carrier's list.\n const values = Object.fromEntries(\n Object.entries(settings.value).filter(([name]) => name !== LABELS),\n )\n\n detail.value = await api.saveCarrier(props.carrier, {\n settings: values,\n credentials: credentials(),\n clear,\n })\n settings.value = { ...detail.value.settings.values }\n typed.value = {}\n toast.success(t('carrier.saved'))\n emit('saved')\n void askAll()\n } catch (error) {\n const found = (error as { errors?: Record<string, string[]> }).errors ?? {}\n\n errors.value = Object.fromEntries(\n Object.entries(found).map(([key, list]) => [key.replace(/^settings\\./, ''), list[0] ?? '']),\n )\n toast.danger(message(error))\n } finally {\n saving.value = false\n }\n}\n\nasync function test(): Promise<void> {\n if (!props.carrier) return\n\n testing.value = true\n\n try {\n const result = await api.testCarrier(props.carrier, credentials())\n\n if (result.ok) toast.success(result.message ?? t('carrier.test-ok'))\n else toast.danger(t('carrier.test-failed', { message: result.message ?? '' }))\n } catch (error) {\n toast.danger(message(error))\n } finally {\n testing.value = false\n }\n}\n\nconst statusType = {\n running: 'primary',\n succeeded: 'success',\n failed: 'danger',\n held: 'warning',\n} as const\n</script>\n\n<template>\n <wx-dialog\n v-model:open=\"open\"\n :title=\"detail?.title ?? t('carrier.choose')\"\n :width=\"640\"\n scroll=\"body\"\n >\n <wx-skeleton v-if=\"loading || !detail\" :rows=\"5\" />\n\n <div v-else class=\"wx-delivery-carrier-form\">\n <section v-if=\"detail.settings.fields.length > 0\">\n <div class=\"wx-delivery-carrier-form__head\">\n <h4 class=\"wx-delivery-carrier-form__title\">{{ t('carrier.settings') }}</h4>\n <wx-button\n v-if=\"fromAccount.length > 0 && keyed\"\n size=\"sm\"\n variant=\"text\"\n icon=\"refresh\"\n :loading=\"refreshing\"\n data-test=\"options-refresh\"\n @click=\"refresh\"\n >\n {{ t('options.refresh') }}\n </wx-button>\n </div>\n <!-- The form keeps the panel's rhythm between fields; a bare list of items has none. -->\n <wx-form>\n <wx-form-item\n v-for=\"field in detail.settings.fields\"\n :key=\"field.name\"\n :label=\"label(field)\"\n :help=\"helpOf(field)\"\n :error=\"errors[field.name]\"\n :data-test=\"`setting-${field.name}`\"\n >\n <div v-if=\"isFromAccount(field)\" class=\"wx-delivery-carrier-form__choice\">\n <!-- A wrapper takes the row: the select's own root carries no scoped attribute. -->\n <div class=\"wx-delivery-carrier-form__select\">\n <wx-select\n :model-value=\"(settings[field.name] as string | null) ?? null\"\n :options=\"optionsOf(field)\"\n :filterable=\"field.search === true\"\n :disabled=\"!canManage || blocked(field) !== null || asking[field.name] === true\"\n :status=\"detail.settings.missing?.[field.name] ? 'warning' : undefined\"\n :placeholder=\"field.search ? t('options.search') : undefined\"\n clearable\n @update:model-value=\"choose(field, $event)\"\n @search=\"search(field, $event)\"\n />\n </div>\n <wx-button\n v-if=\"failures[field.name] && canManage\"\n size=\"sm\"\n variant=\"outline\"\n @click=\"ask(field, undefined, true)\"\n >\n {{ t('options.retry') }}\n </wx-button>\n </div>\n <wx-switch\n v-else-if=\"field.type === 'boolean'\"\n v-model=\"settings[field.name] as boolean\"\n :disabled=\"!canManage\"\n />\n <wx-input-number\n v-else-if=\"field.type === 'number'\"\n v-model=\"settings[field.name] as number\"\n :step=\"field.step\"\n :precision=\"field.precision\"\n :min=\"field.min\"\n :max=\"field.max\"\n :placeholder=\"defaultOf(field)\"\n :disabled=\"!canManage\"\n />\n <wx-select\n v-else-if=\"field.type === 'select'\"\n v-model=\"settings[field.name] as string\"\n :options=\"Array.isArray(field.options) ? field.options : []\"\n :disabled=\"!canManage\"\n />\n <wx-input\n v-else\n v-model=\"settings[field.name] as string\"\n :placeholder=\"defaultOf(field)\"\n :disabled=\"!canManage\"\n />\n </wx-form-item>\n </wx-form>\n </section>\n\n <section v-if=\"detail.credentials.length > 0\" data-test=\"credentials\">\n <h4 class=\"wx-delivery-carrier-form__title\">{{ t('carrier.credentials') }}</h4>\n <wx-form>\n <wx-form-item\n v-for=\"(field, index) in detail.credentials\"\n :key=\"field.name\"\n :label=\"keyLabel(field, index, detail.credentials.length)\"\n >\n <div class=\"wx-delivery-carrier-form__secret\">\n <wx-badge :type=\"field.set ? 'success' : 'default'\" dot>\n {{ field.set ? t('carrier.set') : t('carrier.not-set') }}\n </wx-badge>\n <wx-input\n v-model=\"typed[field.name]\"\n type=\"password\"\n autocomplete=\"new-password\"\n :placeholder=\"t('carrier.replace')\"\n :disabled=\"!canManage\"\n class=\"wx-delivery-carrier-form__key\"\n />\n <wx-button\n v-if=\"field.set && canManage\"\n size=\"sm\"\n variant=\"text\"\n @click=\"save([field.name])\"\n >\n {{ t('carrier.clear') }}\n </wx-button>\n </div>\n </wx-form-item>\n </wx-form>\n </section>\n\n <section>\n <h4 class=\"wx-delivery-carrier-form__title\">{{ t('carrier.runs') }}</h4>\n <p v-if=\"detail.runs.length === 0\" class=\"wx-delivery-carrier-form__muted\">\n {{ t('carrier.never') }}\n </p>\n <ul v-else class=\"wx-delivery-carrier-form__runs\">\n <li v-for=\"run in detail.runs\" :key=\"run.id\">\n <wx-badge :type=\"statusType[run.status]\" size=\"sm\">\n {{ t(`carrier.statuses.${run.status}`) }}\n </wx-badge>\n <span>{{ t(`carrier.directories.${run.directory}`) }}</span>\n <wx-date v-if=\"run.started_at\" :value=\"run.started_at\" />\n <span class=\"wx-delivery-carrier-form__muted\">\n {{ t('carrier.seen') }}: {{ run.seen }} · +{{ run.created }} · −{{ run.removed }}\n </span>\n <span v-if=\"run.error\" class=\"wx-delivery-carrier-form__error\">{{ run.error }}</span>\n </li>\n </ul>\n </section>\n </div>\n\n <template v-if=\"canManage && detail\" #footer>\n <wx-space size=\"sm\">\n <wx-button\n v-if=\"detail.credentials.length > 0\"\n variant=\"outline\"\n :loading=\"testing\"\n @click=\"test\"\n >\n {{ t('carrier.test') }}\n </wx-button>\n <wx-button type=\"primary\" :loading=\"saving\" data-test=\"carrier-save\" @click=\"save()\">\n {{ t('common.save') }}\n </wx-button>\n </wx-space>\n </template>\n </wx-dialog>\n</template>\n\n<style scoped>\n.wx-delivery-carrier-form {\n display: flex;\n flex-direction: column;\n gap: var(--wx-space-16);\n}\n\n.wx-delivery-carrier-form__head {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--wx-space-8);\n margin-bottom: var(--wx-space-8);\n}\n\n.wx-delivery-carrier-form__head .wx-delivery-carrier-form__title {\n margin: 0;\n}\n\n.wx-delivery-carrier-form__title {\n margin: 0 0 var(--wx-space-8);\n font-size: var(--wx-font-size-sm);\n font-weight: var(--wx-font-weight-medium);\n}\n\n.wx-delivery-carrier-form__choice {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wx-space-8);\n width: 100%;\n}\n\n.wx-delivery-carrier-form__select {\n flex: 1 1 200px;\n min-width: 0;\n}\n\n.wx-delivery-carrier-form__secret {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wx-space-8);\n width: 100%;\n}\n\n.wx-delivery-carrier-form__key {\n flex: 1 1 200px;\n min-width: 0;\n}\n\n.wx-delivery-carrier-form__runs {\n display: flex;\n flex-direction: column;\n gap: var(--wx-space-6);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.wx-delivery-carrier-form__runs li {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wx-space-8);\n font-size: var(--wx-font-size-sm);\n}\n\n.wx-delivery-carrier-form__muted {\n color: var(--wx-text-muted);\n}\n\n.wx-delivery-carrier-form__error {\n flex-basis: 100%;\n color: var(--wx-color-danger);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { RouterLink } from 'vue-router'\nimport { toast, WxBadge, WxButton, WxCard, WxEmpty, WxSkeleton, WxSwitch } from '@webx-ui/core'\nimport { useAdmin, useErrorText, WxDate, WxListScreen } from '@webx-ui/module-admin'\nimport { createDeliveryApi } from './api'\nimport CarrierDialog from './CarrierDialog.vue'\nimport { useDeliveryWords } from './i18n'\nimport type { CarrierDirectory, CarrierRow } from './types'\n\n/**\n * The carriers (§14.2): each on or off, and each of its directories — localities, points,\n * streets — with its last success, a run going on, a pass held at the threshold, whether it is\n * stale, how many records it has, and the remarks of its last pass. «Run» sends a directory to\n * the queue; «Confirm removal» lets a held pass remove what the carrier no longer has. The\n * settings and keys of a carrier, and its runs, open in a dialog.\n */\nconst context = useAdmin()\nconst api = createDeliveryApi(context)\nconst t = useDeliveryWords()\nconst message = useErrorText()\n\nconst rows = ref<CarrierRow[]>([])\nconst loading = ref(true)\nconst busy = ref<string | null>(null)\nconst editing = ref<string | null>(null)\nconst editorOpen = ref(false)\n\nconst canManage = computed(() => context.can('delivery.manage'))\nconst title = computed(\n () =>\n context.state.manifest?.modules.find((module) => module.id === 'delivery-carriers')?.title ??\n t('sections.carriers'),\n)\n\nasync function load(): Promise<void> {\n loading.value = true\n\n try {\n rows.value = await api.carriers()\n } catch (error) {\n toast.danger(message(error))\n } finally {\n loading.value = false\n }\n}\n\nvoid load()\n\nasync function toggle(row: CarrierRow, on: boolean): Promise<void> {\n try {\n await api.saveCarrier(row.key, { enabled: on })\n await load()\n } catch (error) {\n toast.danger(message(error))\n }\n}\n\nasync function run(row: CarrierRow, directory: CarrierDirectory): Promise<void> {\n busy.value = `${row.key}:${directory.directory}`\n\n try {\n const { queued } = await api.runSync(row.key, directory.directory)\n\n toast.success(\n t('carrier.queued', {\n list: queued.map((one) => t(`carrier.directories.${one}`)).join(', '),\n }),\n )\n await load()\n } catch (error) {\n toast.danger(message(error))\n } finally {\n busy.value = null\n }\n}\n\nasync function confirmRemoval(row: CarrierRow, directory: CarrierDirectory): Promise<void> {\n busy.value = `${row.key}:${directory.directory}`\n\n try {\n await api.confirmRemoval(row.key, directory.directory)\n toast.success(t('carrier.confirmed'))\n await load()\n } catch (error) {\n toast.danger(message(error))\n } finally {\n busy.value = null\n }\n}\n\n/* The server's words first; a reason nobody named is still said in words, never as its key. */\nfunction remark(item: { key: string; count: number; label?: string }): string {\n if (item.label) return item.label\n\n const key = `carrier.remarks.${item.key.replace('.', '-')}`\n const line = t(key, { count: item.count })\n\n return line.endsWith(key) ? t('carrier.remarks.skipped-other', { count: item.count }) : line\n}\n\nfunction open(key: string): void {\n editing.value = key\n editorOpen.value = true\n}\n</script>\n\n<template>\n <wx-list-screen :title=\"title\" :card=\"false\">\n <wx-skeleton v-if=\"loading && rows.length === 0\" :rows=\"4\" />\n\n <wx-card v-else-if=\"rows.length === 0\">\n <wx-empty :title=\"t('carrier.empty')\" :description=\"t('carrier.empty-help')\" />\n </wx-card>\n\n <div v-else class=\"wx-delivery-carriers\">\n <wx-card v-for=\"row in rows\" :key=\"row.key\" :title=\"row.title\" class=\"wx-delivery-carrier\">\n <template #extra>\n <span class=\"wx-delivery-carrier__head\">\n <wx-switch\n :model-value=\"row.enabled\"\n :disabled=\"!canManage\"\n :aria-label=\"t('carrier.enabled')\"\n @update:model-value=\"toggle(row, Boolean($event))\"\n />\n <wx-button size=\"sm\" variant=\"outline\" @click=\"open(row.key)\">\n {{ t('carrier.settings') }}\n </wx-button>\n </span>\n </template>\n\n <p\n v-if=\"row.missing && row.missing.length > 0\"\n class=\"wx-delivery-carrier__missing\"\n data-test=\"carrier-missing\"\n >\n {{ t('options.missing-list', { list: row.missing.join(', ') }) }}\n </p>\n\n <p v-if=\"row.queue > 0\" class=\"wx-delivery-carrier__queue\">\n {{ t('carrier.queue') }}: <strong>{{ row.queue }}</strong>\n <router-link :to=\"{ name: 'webx.delivery.bindings', query: { carrier: row.key } }\"\n >→</router-link\n >\n </p>\n\n <div v-for=\"dir in row.directories\" :key=\"dir.directory\" class=\"wx-delivery-dir\">\n <div class=\"wx-delivery-dir__main\">\n <span class=\"wx-delivery-dir__name\">{{\n t(`carrier.directories.${dir.directory}`)\n }}</span>\n <span class=\"wx-delivery-dir__facts\">\n {{ t('carrier.records') }}: {{ dir.records }} · {{ t('carrier.schedule') }}:\n <!-- A cron line is code; «By hand only» is words. -->\n <code v-if=\"dir.cron\">{{ dir.cron }}</code>\n <template v-else>{{ t('carrier.manual') }}</template>\n </span>\n <span class=\"wx-delivery-dir__facts\">\n {{ t('carrier.last-success') }}:\n <wx-date v-if=\"dir.last_success\" :value=\"dir.last_success\" />\n <template v-else>{{ t('carrier.never') }}</template>\n </span>\n <span class=\"wx-delivery-dir__badges\">\n <wx-badge v-if=\"dir.running\" type=\"primary\" dot>{{ t('carrier.running') }}</wx-badge>\n <wx-badge v-if=\"dir.held !== null\" type=\"warning\" dot>\n {{ t('carrier.held', { count: dir.held }) }}\n </wx-badge>\n <wx-badge v-if=\"dir.stale\" type=\"danger\" dot>{{ t('carrier.stale') }}</wx-badge>\n <wx-badge v-if=\"dir.latest?.status === 'failed'\" type=\"danger\" size=\"sm\">\n {{ t('carrier.statuses.failed') }}\n </wx-badge>\n </span>\n <span v-for=\"item in dir.remarks\" :key=\"item.key\" class=\"wx-delivery-dir__remark\">\n {{ remark(item) }}\n </span>\n </div>\n\n <span v-if=\"canManage\" class=\"wx-delivery-dir__actions\">\n <wx-button\n v-if=\"dir.held !== null\"\n size=\"sm\"\n type=\"warning\"\n :loading=\"busy === `${row.key}:${dir.directory}`\"\n @click=\"confirmRemoval(row, dir)\"\n >\n {{ t('carrier.confirm') }}\n </wx-button>\n <wx-button\n size=\"sm\"\n icon=\"refresh\"\n :disabled=\"dir.running || !row.enabled\"\n :loading=\"busy === `${row.key}:${dir.directory}`\"\n :data-test=\"`run-${row.key}-${dir.directory}`\"\n @click=\"run(row, dir)\"\n >\n {{ t('carrier.run') }}\n </wx-button>\n </span>\n </div>\n </wx-card>\n </div>\n\n <carrier-dialog v-model:open=\"editorOpen\" :carrier=\"editing\" @saved=\"load\" />\n </wx-list-screen>\n</template>\n\n<style scoped>\n.wx-delivery-carriers {\n display: flex;\n flex-direction: column;\n gap: var(--wx-space-16);\n}\n\n.wx-delivery-carrier__head {\n display: inline-flex;\n align-items: center;\n gap: var(--wx-space-12);\n}\n\n.wx-delivery-carrier__queue {\n margin: 0 0 var(--wx-space-12);\n}\n\n.wx-delivery-carrier__missing {\n margin: 0 0 var(--wx-space-12);\n color: var(--wx-color-warning);\n}\n\n.wx-delivery-dir {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wx-space-8) var(--wx-space-16);\n padding: var(--wx-space-12) 0;\n border-top: 1px solid var(--wx-border-default);\n}\n\n.wx-delivery-dir__main {\n display: flex;\n flex: 1 1 280px;\n flex-direction: column;\n gap: var(--wx-space-4);\n min-width: 0;\n}\n\n.wx-delivery-dir__name {\n font-weight: var(--wx-font-weight-medium);\n}\n\n.wx-delivery-dir__facts,\n.wx-delivery-dir__remark {\n color: var(--wx-text-muted);\n font-size: var(--wx-font-size-sm);\n}\n\n.wx-delivery-dir__remark {\n color: var(--wx-color-warning);\n}\n\n.wx-delivery-dir__badges {\n display: flex;\n flex-wrap: wrap;\n gap: var(--wx-space-6);\n}\n\n.wx-delivery-dir__badges:empty {\n display: none;\n}\n\n.wx-delivery-dir__actions {\n display: inline-flex;\n flex-wrap: wrap;\n gap: var(--wx-space-8);\n}\n</style>\n"],"names":["LABELS","props","__props","open","_useModel","emit","__emit","context","useAdmin","api","createDeliveryApi","t","useDeliveryWords","message","useErrorText","detail","ref","settings","typed","loading","saving","testing","errors","choices","asking","failures","refreshing","canManage","computed","fields","fromAccount","isFromAccount","keyed","one","field","label","locale","keyLabel","index","count","defaultOf","byName","name","blank","value","labels","stored","waitingFor","parent","dependsValues","blocked","optionsOf","list","ask","q","fresh","error","askAll","refresh","children","found","walk","choose","picked","nextLabels","child","timers","search","helpOf","missing","load","toast","watch","now","credentials","save","clear","values","key","test","result","statusType","_createBlock","_unref","WxDialog","$event","WxSkeleton","_openBlock","_createElementBlock","_hoisted_1","_hoisted_2","_createElementVNode","_hoisted_3","_hoisted_4","_toDisplayString","WxButton","_createVNode","WxForm","_Fragment","WxFormItem","_hoisted_5","_hoisted_6","WxSelect","WxSwitch","WxInputNumber","WxInput","_hoisted_7","_hoisted_8","_hoisted_9","WxBadge","_createTextVNode","_hoisted_10","_hoisted_11","_hoisted_12","_renderList","run","WxDate","_hoisted_13","_hoisted_14","WxSpace","rows","busy","editing","editorOpen","title","module","toggle","row","on","directory","queued","confirmRemoval","remark","item","line","WxListScreen","WxCard","WxEmpty","RouterLink","_cache","dir","CarrierDialog"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
|
|
2
|
+
export default _default;
|