@webx-ui/module-delivery 0.1.0 → 0.2.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.
@@ -1 +1 @@
1
- {"version":3,"file":"PopularPage-CSrvVg4o.js","sources":["../src/PopularPage.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport {\n toast,\n WxAction,\n WxAlert,\n WxBadge,\n WxCard,\n WxEmpty,\n WxSkeleton,\n WxSortableList,\n} from '@webx-ui/core'\nimport { useAdmin, useErrorText, WxListScreen } from '@webx-ui/module-admin'\nimport { createDeliveryApi } from './api'\nimport { useDeliveryWords } from './i18n'\nimport LocalitySearch from './LocalitySearch.vue'\nimport type { LocalityBrief } from './types'\n\n/**\n * The popular towns of the checkout's dialog (decision 40): one list for the site, the buttons\n * under the search in the order dragged here. «Add» searches the shared geography; a locality\n * switched off stays in the list, marked — the dialog skips it until it is on again.\n */\nconst context = useAdmin()\nconst api = createDeliveryApi(context)\nconst t = useDeliveryWords()\nconst message = useErrorText()\n\nconst rows = ref<LocalityBrief[]>([])\nconst loading = ref(true)\nconst canManage = computed(() => context.can('delivery.manage'))\n\nconst title = computed(\n () =>\n context.state.manifest?.modules.find((module) => module.id === 'delivery-popular')?.title ??\n t('sections.popular'),\n)\n\nasync function load(): Promise<void> {\n loading.value = true\n\n try {\n rows.value = await api.popular()\n } catch (error) {\n toast.danger(message(error))\n } finally {\n loading.value = false\n }\n}\n\nvoid load()\n\nasync function add(locality: LocalityBrief): Promise<void> {\n if (rows.value.some((row) => row.id === locality.id)) {\n toast.info(t('popular.already'))\n\n return\n }\n\n try {\n rows.value = await api.addPopular(locality.id)\n toast.success(t('popular.added'))\n } catch (error) {\n toast.danger(message(error))\n }\n}\n\nasync function remove(row: LocalityBrief): Promise<void> {\n try {\n rows.value = await api.removePopular(row.id)\n toast.success(t('popular.removed'))\n } catch (error) {\n toast.danger(message(error))\n }\n}\n\nasync function reorder(): Promise<void> {\n try {\n rows.value = await api.setPopular(rows.value.map((row) => row.id))\n } catch (error) {\n toast.danger(message(error, t('common.order-failed')))\n await load()\n }\n}\n</script>\n\n<template>\n <wx-list-screen :title=\"title\" :card=\"false\">\n <wx-card class=\"wx-delivery-popular\">\n <div v-if=\"canManage\" class=\"wx-delivery-popular__add\">\n <locality-search\n creatable\n :exclude=\"rows.map((row) => row.id)\"\n :placeholder=\"t('popular.add')\"\n @pick=\"add\"\n />\n <span class=\"wx-delivery-popular__help\">{{ t('popular.add-help') }}</span>\n </div>\n\n <wx-skeleton v-if=\"loading && rows.length === 0\" :rows=\"4\" />\n\n <wx-empty\n v-else-if=\"rows.length === 0\"\n :title=\"t('popular.empty')\"\n :description=\"t('popular.empty-help')\"\n />\n\n <template v-else>\n <wx-sortable-list\n v-model=\"rows\"\n class=\"wx-delivery-popular__list\"\n hoverable\n plain\n item-key=\"id\"\n :handle=\"canManage ? 'grip' : 'row'\"\n :item-label=\"(item: LocalityBrief) => item.name\"\n :disabled=\"!canManage\"\n data-test=\"popular-list\"\n @move=\"reorder\"\n >\n <template #default=\"{ item }\">\n <span class=\"wx-delivery-popular__row\">\n <span class=\"wx-delivery-popular__name\">{{ item.name }}</span>\n <span class=\"wx-delivery-popular__label\">{{ item.label }}</span>\n <wx-badge v-if=\"!item.active\" size=\"sm\" type=\"warning\" dot>\n {{ t('popular.hidden') }}\n </wx-badge>\n </span>\n </template>\n\n <!-- Asked first, with the red bin the panel removes a row of a list by (blog → rubrics). -->\n <template v-if=\"canManage\" #actions=\"{ item }\">\n <wx-action\n type=\"remove\"\n size=\"sm\"\n :title=\"t('popular.remove')\"\n :confirm=\"t('popular.remove-title', { name: item.name })\"\n :confirm-text=\"t('popular.remove')\"\n :cancel-text=\"t('common.cancel')\"\n data-test=\"popular-remove\"\n @click=\"remove(item)\"\n />\n </template>\n </wx-sortable-list>\n\n <wx-alert\n v-if=\"canManage && rows.length > 1\"\n class=\"wx-delivery-popular__note\"\n type=\"info\"\n :description=\"t('common.drag')\"\n />\n </template>\n </wx-card>\n </wx-list-screen>\n</template>\n\n<style scoped>\n.wx-delivery-popular__add {\n display: flex;\n flex-direction: column;\n gap: var(--wx-space-4);\n max-width: 480px;\n margin-bottom: var(--wx-space-16);\n}\n\n.wx-delivery-popular__help {\n color: var(--wx-text-muted);\n font-size: var(--wx-font-size-sm);\n}\n\n/* Off the card's edge on both sides: the bin at the end gets room, as the grip at the start has. */\n.wx-delivery-popular__list :deep(.wx-sortable-list__row) {\n gap: var(--wx-space-8);\n padding-inline: var(--wx-space-4) var(--wx-space-8);\n}\n\n.wx-delivery-popular__row {\n display: flex;\n flex: 1 1 auto;\n flex-wrap: wrap;\n align-items: baseline;\n gap: var(--wx-space-4) var(--wx-space-8);\n min-width: 0;\n padding-block: var(--wx-space-8);\n}\n\n.wx-delivery-popular__name {\n font-weight: var(--wx-font-weight-medium);\n}\n\n.wx-delivery-popular__label {\n min-width: 0;\n color: var(--wx-text-muted);\n font-size: var(--wx-font-size-sm);\n}\n\n.wx-delivery-popular__note {\n margin-top: var(--wx-space-12);\n}\n</style>\n"],"names":["context","useAdmin","api","createDeliveryApi","t","useDeliveryWords","message","useErrorText","rows","ref","loading","canManage","computed","title","module","load","error","toast","add","locality","row","remove","reorder","_createBlock","_unref","WxListScreen","_createVNode","WxCard","_openBlock","_createElementBlock","_hoisted_1","LocalitySearch","_createElementVNode","_hoisted_2","_toDisplayString","WxSkeleton","WxEmpty","_Fragment","WxSortableList","$event","item","_withCtx","_hoisted_3","_hoisted_4","_hoisted_5","WxBadge","WxAction","WxAlert"],"mappings":"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"}
1
+ {"version":3,"file":"PopularPage-CaN3vwKt.js","sources":["../src/PopularPage.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport {\n toast,\n WxAction,\n WxAlert,\n WxBadge,\n WxCard,\n WxEmpty,\n WxSkeleton,\n WxSortableList,\n} from '@webx-ui/core'\nimport { useAdmin, useErrorText, WxListScreen } from '@webx-ui/module-admin'\nimport { createDeliveryApi } from './api'\nimport { useDeliveryWords } from './i18n'\nimport LocalitySearch from './LocalitySearch.vue'\nimport type { LocalityBrief } from './types'\n\n/**\n * The popular towns of the checkout's dialog (decision 40): one list for the site, the buttons\n * under the search in the order dragged here. «Add» searches the shared geography; a locality\n * switched off stays in the list, marked — the dialog skips it until it is on again.\n */\nconst context = useAdmin()\nconst api = createDeliveryApi(context)\nconst t = useDeliveryWords()\nconst message = useErrorText()\n\nconst rows = ref<LocalityBrief[]>([])\nconst loading = ref(true)\nconst canManage = computed(() => context.can('delivery.manage'))\n\nconst title = computed(\n () =>\n context.state.manifest?.modules.find((module) => module.id === 'delivery-popular')?.title ??\n t('sections.popular'),\n)\n\nasync function load(): Promise<void> {\n loading.value = true\n\n try {\n rows.value = await api.popular()\n } catch (error) {\n toast.danger(message(error))\n } finally {\n loading.value = false\n }\n}\n\nvoid load()\n\nasync function add(locality: LocalityBrief): Promise<void> {\n if (rows.value.some((row) => row.id === locality.id)) {\n toast.info(t('popular.already'))\n\n return\n }\n\n try {\n rows.value = await api.addPopular(locality.id)\n toast.success(t('popular.added'))\n } catch (error) {\n toast.danger(message(error))\n }\n}\n\nasync function remove(row: LocalityBrief): Promise<void> {\n try {\n rows.value = await api.removePopular(row.id)\n toast.success(t('popular.removed'))\n } catch (error) {\n toast.danger(message(error))\n }\n}\n\nasync function reorder(): Promise<void> {\n try {\n rows.value = await api.setPopular(rows.value.map((row) => row.id))\n } catch (error) {\n toast.danger(message(error, t('common.order-failed')))\n await load()\n }\n}\n</script>\n\n<template>\n <wx-list-screen :title=\"title\" :card=\"false\">\n <wx-card class=\"wx-delivery-popular\">\n <div v-if=\"canManage\" class=\"wx-delivery-popular__add\">\n <locality-search\n creatable\n :exclude=\"rows.map((row) => row.id)\"\n :placeholder=\"t('popular.add')\"\n @pick=\"add\"\n />\n <span class=\"wx-delivery-popular__help\">{{ t('popular.add-help') }}</span>\n </div>\n\n <wx-skeleton v-if=\"loading && rows.length === 0\" :rows=\"4\" />\n\n <wx-empty\n v-else-if=\"rows.length === 0\"\n :title=\"t('popular.empty')\"\n :description=\"t('popular.empty-help')\"\n />\n\n <template v-else>\n <wx-sortable-list\n v-model=\"rows\"\n class=\"wx-delivery-popular__list\"\n hoverable\n plain\n item-key=\"id\"\n :handle=\"canManage ? 'grip' : 'row'\"\n :item-label=\"(item: LocalityBrief) => item.name\"\n :disabled=\"!canManage\"\n data-test=\"popular-list\"\n @move=\"reorder\"\n >\n <template #default=\"{ item }\">\n <span class=\"wx-delivery-popular__row\">\n <span class=\"wx-delivery-popular__name\">{{ item.name }}</span>\n <span class=\"wx-delivery-popular__label\">{{ item.label }}</span>\n <wx-badge v-if=\"!item.active\" size=\"sm\" type=\"warning\" dot>\n {{ t('popular.hidden') }}\n </wx-badge>\n </span>\n </template>\n\n <!-- Asked first, with the red bin the panel removes a row of a list by (blog → rubrics). -->\n <template v-if=\"canManage\" #actions=\"{ item }\">\n <wx-action\n type=\"remove\"\n size=\"sm\"\n :title=\"t('popular.remove')\"\n :confirm=\"t('popular.remove-title', { name: item.name })\"\n :confirm-text=\"t('popular.remove')\"\n :cancel-text=\"t('common.cancel')\"\n data-test=\"popular-remove\"\n @click=\"remove(item)\"\n />\n </template>\n </wx-sortable-list>\n\n <wx-alert\n v-if=\"canManage && rows.length > 1\"\n class=\"wx-delivery-popular__note\"\n type=\"info\"\n :description=\"t('common.drag')\"\n />\n </template>\n </wx-card>\n </wx-list-screen>\n</template>\n\n<style scoped>\n.wx-delivery-popular__add {\n display: flex;\n flex-direction: column;\n gap: var(--wx-space-4);\n max-width: 480px;\n margin-bottom: var(--wx-space-16);\n}\n\n.wx-delivery-popular__help {\n color: var(--wx-text-muted);\n font-size: var(--wx-font-size-sm);\n}\n\n/* Off the card's edge on both sides: the bin at the end gets room, as the grip at the start has. */\n.wx-delivery-popular__list :deep(.wx-sortable-list__row) {\n gap: var(--wx-space-8);\n padding-inline: var(--wx-space-4) var(--wx-space-8);\n}\n\n.wx-delivery-popular__row {\n display: flex;\n flex: 1 1 auto;\n flex-wrap: wrap;\n align-items: baseline;\n gap: var(--wx-space-4) var(--wx-space-8);\n min-width: 0;\n padding-block: var(--wx-space-8);\n}\n\n.wx-delivery-popular__name {\n font-weight: var(--wx-font-weight-medium);\n}\n\n.wx-delivery-popular__label {\n min-width: 0;\n color: var(--wx-text-muted);\n font-size: var(--wx-font-size-sm);\n}\n\n.wx-delivery-popular__note {\n margin-top: var(--wx-space-12);\n}\n</style>\n"],"names":["context","useAdmin","api","createDeliveryApi","t","useDeliveryWords","message","useErrorText","rows","ref","loading","canManage","computed","title","module","load","error","toast","add","locality","row","remove","reorder","_createBlock","_unref","WxListScreen","_createVNode","WxCard","_openBlock","_createElementBlock","_hoisted_1","LocalitySearch","_createElementVNode","_hoisted_2","_toDisplayString","WxSkeleton","WxEmpty","_Fragment","WxSortableList","$event","item","_withCtx","_hoisted_3","_hoisted_4","_hoisted_5","WxBadge","WxAction","WxAlert"],"mappings":";;;;;;;;;;AAuBA,UAAMA,IAAUC,EAAA,GACVC,IAAMC,EAAkBH,CAAO,GAC/BI,IAAIC,EAAA,GACJC,IAAUC,EAAA,GAEVC,IAAOC,EAAqB,EAAE,GAC9BC,IAAUD,EAAI,EAAI,GAClBE,IAAYC,EAAS,MAAMZ,EAAQ,IAAI,iBAAiB,CAAC,GAEzDa,IAAQD;AAAA,MACZ,MACEZ,EAAQ,MAAM,UAAU,QAAQ,KAAK,CAACc,MAAWA,EAAO,OAAO,kBAAkB,GAAG,SACpFV,EAAE,kBAAkB;AAAA,IAAA;AAGxB,mBAAeW,IAAsB;AACnC,MAAAL,EAAQ,QAAQ;AAEhB,UAAI;AACF,QAAAF,EAAK,QAAQ,MAAMN,EAAI,QAAA;AAAA,MACzB,SAASc,GAAO;AACd,QAAAC,EAAM,OAAOX,EAAQU,CAAK,CAAC;AAAA,MAC7B,UAAA;AACE,QAAAN,EAAQ,QAAQ;AAAA,MAClB;AAAA,IACF;AAEA,IAAKK,EAAA;AAEL,mBAAeG,EAAIC,GAAwC;AACzD,UAAIX,EAAK,MAAM,KAAK,CAACY,MAAQA,EAAI,OAAOD,EAAS,EAAE,GAAG;AACpD,QAAAF,EAAM,KAAKb,EAAE,iBAAiB,CAAC;AAE/B;AAAA,MACF;AAEA,UAAI;AACF,QAAAI,EAAK,QAAQ,MAAMN,EAAI,WAAWiB,EAAS,EAAE,GAC7CF,EAAM,QAAQb,EAAE,eAAe,CAAC;AAAA,MAClC,SAASY,GAAO;AACd,QAAAC,EAAM,OAAOX,EAAQU,CAAK,CAAC;AAAA,MAC7B;AAAA,IACF;AAEA,mBAAeK,EAAOD,GAAmC;AACvD,UAAI;AACF,QAAAZ,EAAK,QAAQ,MAAMN,EAAI,cAAckB,EAAI,EAAE,GAC3CH,EAAM,QAAQb,EAAE,iBAAiB,CAAC;AAAA,MACpC,SAASY,GAAO;AACd,QAAAC,EAAM,OAAOX,EAAQU,CAAK,CAAC;AAAA,MAC7B;AAAA,IACF;AAEA,mBAAeM,IAAyB;AACtC,UAAI;AACF,QAAAd,EAAK,QAAQ,MAAMN,EAAI,WAAWM,EAAK,MAAM,IAAI,CAACY,MAAQA,EAAI,EAAE,CAAC;AAAA,MACnE,SAASJ,GAAO;AACd,QAAAC,EAAM,OAAOX,EAAQU,GAAOZ,EAAE,qBAAqB,CAAC,CAAC,GACrD,MAAMW,EAAA;AAAA,MACR;AAAA,IACF;2BAIEQ,EAkEiBC,EAAAC,CAAA,GAAA;AAAA,MAlEA,OAAOZ,EAAA;AAAA,MAAQ,MAAM;AAAA,IAAA;iBACpC,MAgEU;AAAA,QAhEVa,EAgEUF,EAAAG,CAAA,GAAA,EAhED,OAAM,yBAAqB;AAAA,qBAClC,MAQM;AAAA,YARKhB,EAAA,SAAXiB,EAAA,GAAAC,EAQM,OARNC,GAQM;AAAA,cAPJJ,EAKEK,GAAA;AAAA,gBAJA,WAAA;AAAA,gBACC,SAASvB,QAAK,KAAKY,MAAQA,EAAI,EAAE;AAAA,gBACjC,aAAaI,EAAApB,CAAA,EAAC,aAAA;AAAA,gBACd,QAAMc;AAAA,cAAA;cAETc,EAA0E,QAA1EC,GAA0EC,EAA/BV,EAAApB,CAAA,EAAC,kBAAA,CAAA,GAAA,CAAA;AAAA,YAAA;YAG3BM,EAAA,SAAWF,EAAA,MAAK,WAAM,UAAzCe,EAA6DC,EAAAW,CAAA,GAAA;AAAA;cAAX,MAAM;AAAA,YAAA,MAG3C3B,EAAA,MAAK,WAAM,UADxBe,EAIEC,EAAAY,CAAA,GAAA;AAAA;cAFC,OAAOZ,EAAApB,CAAA,EAAC,eAAA;AAAA,cACR,aAAaoB,EAAApB,CAAA,EAAC,oBAAA;AAAA,YAAA,+CAGjByB,EA4CWQ,GAAA,EAAA,KAAA,KAAA;AAAA,cA3CTX,EAmCmBF,EAAAc,CAAA,GAAA;AAAA,4BAlCR9B,EAAA;AAAA,8DAAAA,EAAI,QAAA+B;AAAA,gBACb,OAAM;AAAA,gBACN,WAAA;AAAA,gBACA,OAAA;AAAA,gBACA,YAAS;AAAA,gBACR,QAAQ5B,EAAA,QAAS,SAAA;AAAA,gBACjB,cAAU,CAAG6B,MAAwBA,EAAK;AAAA,gBAC1C,WAAW7B,EAAA;AAAA,gBACZ,aAAU;AAAA,gBACT,QAAMW;AAAA,cAAA;gBAEI,SAAOmB,EAChB,CAMO,EAPa,MAAAD,QAAI;AAAA,kBACxBR,EAMO,QANPU,GAMO;AAAA,oBALLV,EAA8D,QAA9DW,GAA8DT,EAAnBM,EAAK,IAAI,GAAA,CAAA;AAAA,oBACpDR,EAAgE,QAAhEY,GAAgEV,EAApBM,EAAK,KAAK,GAAA,CAAA;AAAA,oBACrCA,EAAK,2BAAtBjB,EAEWC,EAAAqB,CAAA,GAAA;AAAA;sBAFmB,MAAK;AAAA,sBAAK,MAAK;AAAA,sBAAU,KAAA;AAAA,oBAAA;iCACrD,MAAyB;AAAA,4BAAtBrB,EAAApB,CAAA,EAAC,gBAAA,CAAA,GAAA,CAAA;AAAA,sBAAA;;;;;;;gBAMMO,EAAA;wBAAY;AAAA,kBAC1B,IAAA8B,EAAA,CASE,EAVmC,MAAAD,QAAI;AAAA,oBACzCd,EASEF,EAAAsB,CAAA,GAAA;AAAA,sBARA,MAAK;AAAA,sBACL,MAAK;AAAA,sBACJ,OAAOtB,EAAApB,CAAA,EAAC,gBAAA;AAAA,sBACR,SAASoB,EAAApB,CAAA,EAAC,wBAAA,EAAA,MAAiCoC,EAAK,MAAI;AAAA,sBACpD,gBAAchB,EAAApB,CAAA,EAAC,gBAAA;AAAA,sBACf,eAAaoB,EAAApB,CAAA,EAAC,eAAA;AAAA,sBACf,aAAU;AAAA,sBACT,SAAK,CAAAmC,MAAElB,EAAOmB,CAAI;AAAA,oBAAA;;;;;cAMjB7B,EAAA,SAAaH,EAAA,MAAK,SAAM,UADhCe,EAKEC,EAAAuB,CAAA,GAAA;AAAA;gBAHA,OAAM;AAAA,gBACN,MAAK;AAAA,gBACJ,aAAavB,EAAApB,CAAA,EAAC,aAAA;AAAA,cAAA;;;;;;;;;;"}