@prozorro/prozorro-ui 0.0.6-beta → 0.0.8-beta
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/app/assets/{Color-FRDS63T2-Bw_aC6xw.js → Color-FRDS63T2-C5bQ2Iuy.js} +1 -1
- package/dist/app/assets/{Colors.stories-B0HD3yzi.js → Colors.stories-B6EPF0nC.js} +1 -1
- package/dist/app/assets/{DocsRenderer-LL677BLK-HfkRY1rq.js → DocsRenderer-LL677BLK-6m2x0Slf.js} +200 -200
- package/dist/app/assets/{Grid.stories-BxFJTZq8.js → Grid.stories-DCpTvq1h.js} +1 -1
- package/dist/app/assets/PzArrayClamp-K4ObvvOV.css +1 -0
- package/dist/app/assets/PzArrayClamp.stories-DYjTyM_w.js +148 -0
- package/dist/app/assets/PzBreadcrumb-Dcs3weae.css +1 -0
- package/dist/app/assets/PzBreadcrumb.stories-b4V3GARM.js +120 -0
- package/dist/app/assets/PzBtn-Brjbpw1b.js +1 -0
- package/dist/app/assets/PzBtn-CzokGN-c.css +1 -0
- package/dist/app/assets/PzBtn-L_RpjK-U.css +1 -0
- package/dist/app/assets/PzBtn.stories-Bu5qPhtp.js +84 -0
- package/dist/app/assets/PzDomHandler-CRMzxUFs.css +1 -0
- package/dist/app/assets/PzDomHandler.stories-DqW3Mfem.js +170 -0
- package/dist/app/assets/PzDropdown-BnwR1ooa.css +1 -0
- package/dist/app/assets/PzDropdown.stories-CPjzWBvH.js +59 -0
- package/dist/app/assets/{PzGrid.stories-BDlU9tgI.js → PzGrid.stories-C1Y3nz5O.js} +2 -2
- package/dist/app/assets/PzHint-BSVVXtVq.css +1 -0
- package/dist/app/assets/PzHint-BwKGDkUu.js +1 -0
- package/dist/app/assets/PzHint-kEBemRXE.css +1 -0
- package/dist/app/assets/PzHint.stories-B6l3Ocr8.js +75 -0
- package/dist/app/assets/PzIcon-CyZkl7-f.css +1 -0
- package/dist/app/assets/PzIcon-Don8TXO3.js +1 -0
- package/dist/app/assets/PzIcon.stories-DE4e2be_.js +63 -0
- package/dist/app/assets/PzImage-BNrbMHP9.css +1 -0
- package/dist/app/assets/PzImage.stories-DoGwhzIO.js +57 -0
- package/dist/app/assets/PzInfoHint-CtK7BZOs.css +1 -0
- package/dist/app/assets/PzInfoHint.stories-CWDV-k9d.js +38 -0
- package/dist/app/assets/PzLink-BkfNrG4H.js +1 -0
- package/dist/app/assets/PzLink-CLsit3uW.css +1 -0
- package/dist/app/assets/PzLink-pGUmpCAv.css +1 -0
- package/dist/app/assets/PzLink.stories-D1DLILnY.js +99 -0
- package/dist/app/assets/PzModal-X71wpoOT.css +1 -0
- package/dist/app/assets/PzModal.stories-GJIUTcxR.js +168 -0
- package/dist/app/assets/PzNav-DRAXqlz0.css +1 -0
- package/dist/app/assets/PzNav.stories-vqArvp6y.js +197 -0
- package/dist/app/assets/PzPagination-DJVeW9lu.css +1 -0
- package/dist/app/assets/PzPagination.stories-D-kZtPzf.js +83 -0
- package/dist/app/assets/PzRouterLink.stories-CRcNmODE.js +54 -0
- package/dist/app/assets/PzScrollTo-GAEPiQFO.css +1 -0
- package/dist/app/assets/PzScrollTo.stories-C0m8oG4O.js +81 -0
- package/dist/app/assets/PzStatus-DlvKjmG7.css +1 -0
- package/dist/app/assets/PzStatus.stories-u5QAVco_.js +95 -0
- package/dist/app/assets/PzTabs-Cko9ewqz.css +1 -0
- package/dist/app/assets/PzTabs.stories-CEoVVF4Z.js +594 -0
- package/dist/app/assets/PzTag-rwtmuhv6.css +1 -0
- package/dist/app/assets/PzTag.stories-B2WKURWu.js +70 -0
- package/dist/app/assets/{PzText-DlvXMwwn.js → PzText-LfRr6NF7.js} +1 -1
- package/dist/app/assets/{PzText.stories-ZTf0LcVq.js → PzText.stories-CJhqWJtS.js} +6 -6
- package/dist/app/assets/PzTextClamp-BnSHv0R0.css +1 -0
- package/dist/app/assets/PzTextClamp.stories-B-2pPs9u.js +149 -0
- package/dist/app/assets/PzValidatorXSS-B6WBrYex.css +1 -0
- package/dist/app/assets/PzValidatorXSS.stories-DqA_mla7.js +163 -0
- package/dist/app/assets/{Spacing.stories-DgW1yBGY.js → Spacing.stories-55zVSJ08.js} +1 -1
- package/dist/app/assets/{Typography.stories-sQsBS8qV.js → Typography.stories-DEgPTqUk.js} +1 -1
- package/dist/app/assets/{WithTooltip-65CFNBJE-D9-o59O_.js → WithTooltip-65CFNBJE-D3ytr0gE.js} +1 -1
- package/dist/app/assets/floating-vue-ydzBnlRK.js +1 -0
- package/dist/app/assets/formatter-EIJCOSYU-Ca5EM9Pa.js +1 -0
- package/dist/app/assets/iframe-B97zFSkg.css +1 -0
- package/dist/app/assets/iframe-XnrfGA2g.js +1115 -0
- package/dist/app/assets/{syntaxhighlighter-OH4MV7E3-seAhcrC2.js → syntaxhighlighter-OH4MV7E3-meijqKce.js} +1 -1
- package/dist/app/iframe.html +3 -3
- package/dist/app/index.html +1 -1
- package/dist/app/index.json +1 -1
- package/dist/app/project.json +1 -1
- package/dist/app/sb-addons/storybook-2/manager-bundle.js +1 -1
- package/dist/app/sb-manager/globals-runtime.js +1 -1
- package/dist/components/PzArrayClamp/PzArrayClamp.vue.d.ts +36 -0
- package/dist/components/PzArrayClamp/index.d.ts +2 -0
- package/dist/components/PzArrayClamp/types.d.ts +8 -0
- package/dist/components/PzBreadcrumb/PzBreadcrumb.vue.d.ts +35 -0
- package/dist/components/PzBreadcrumb/constants.d.ts +4 -0
- package/dist/components/PzBreadcrumb/index.d.ts +2 -0
- package/dist/components/PzBreadcrumb/types.d.ts +8 -0
- package/dist/components/PzBtn/PzBtn.vue.d.ts +24 -0
- package/dist/components/PzBtn/configs.d.ts +3 -0
- package/dist/components/PzBtn/index.d.ts +2 -0
- package/dist/components/PzBtn/types.d.ts +7 -0
- package/dist/components/PzDropdown/PzDropdown.vue.d.ts +18 -0
- package/dist/components/PzDropdown/index.d.ts +2 -0
- package/dist/components/PzDropdown/types.d.ts +1 -0
- package/dist/components/PzGrid/PzGrid.vue.d.ts +1 -1
- package/dist/components/PzGrid/PzGridItem.vue.d.ts +1 -1
- package/dist/components/PzGrid/configs.d.ts +2 -2
- package/dist/components/PzHint/PzHint.vue.d.ts +24 -0
- package/dist/components/PzHint/index.d.ts +2 -0
- package/dist/components/PzHint/types.d.ts +8 -0
- package/dist/components/PzIcon/PzIcon.vue.d.ts +7 -0
- package/dist/components/PzIcon/configs.d.ts +2 -0
- package/dist/components/PzIcon/index.d.ts +2 -0
- package/dist/components/PzIcon/types.d.ts +9 -0
- package/dist/components/PzImage/PzImage.vue.d.ts +7 -0
- package/dist/components/PzImage/configs.d.ts +3 -0
- package/dist/components/PzImage/index.d.ts +2 -0
- package/dist/components/PzImage/types.d.ts +10 -0
- package/dist/components/PzInfoHint/PzInfoHint.vue.d.ts +7 -0
- package/dist/components/PzInfoHint/index.d.ts +2 -0
- package/dist/components/PzInfoHint/types.d.ts +12 -0
- package/dist/components/PzLink/PzLink.vue.d.ts +29 -0
- package/dist/components/PzLink/configs.d.ts +2 -0
- package/dist/components/PzLink/constants.d.ts +1 -0
- package/dist/components/PzLink/index.d.ts +2 -0
- package/dist/components/PzLink/types.d.ts +13 -0
- package/dist/components/PzModal/PzModal.vue.d.ts +36 -0
- package/dist/components/PzModal/configs.d.ts +1 -0
- package/dist/components/PzModal/constants.d.ts +10 -0
- package/dist/components/PzModal/index.d.ts +2 -0
- package/dist/components/PzModal/types.d.ts +11 -0
- package/dist/components/PzNav/PzNav.vue.d.ts +23 -0
- package/dist/components/PzNav/index.d.ts +2 -0
- package/dist/components/PzNav/types.d.ts +9 -0
- package/dist/components/PzPagination/PzPagination.vue.d.ts +9 -0
- package/dist/components/PzPagination/index.d.ts +2 -0
- package/dist/components/PzPagination/types.d.ts +6 -0
- package/dist/components/PzRouterLink/PzRouterLink.vue.d.ts +30 -0
- package/dist/components/PzRouterLink/index.d.ts +2 -0
- package/dist/components/PzRouterLink/types.d.ts +7 -0
- package/dist/components/PzStatus/PzStatus.vue.d.ts +21 -0
- package/dist/components/PzStatus/configs.d.ts +2 -0
- package/dist/components/PzStatus/constants.d.ts +2 -0
- package/dist/components/PzStatus/index.d.ts +2 -0
- package/dist/components/PzStatus/types.d.ts +6 -0
- package/dist/components/PzTabs/PzTab.vue.d.ts +22 -0
- package/dist/components/PzTabs/PzTabs.vue.d.ts +21 -0
- package/dist/components/PzTabs/configs.d.ts +1 -0
- package/dist/components/PzTabs/constants.d.ts +5 -0
- package/dist/components/PzTabs/index.d.ts +3 -0
- package/dist/components/PzTabs/types.d.ts +14 -0
- package/dist/components/PzTag/PzTag.vue.d.ts +23 -0
- package/dist/components/PzTag/configs.d.ts +2 -0
- package/dist/components/PzTag/index.d.ts +2 -0
- package/dist/components/PzTag/types.d.ts +6 -0
- package/dist/components/PzText/configs.d.ts +1 -1
- package/dist/components/PzTextClamp/PzTextClamp.vue.d.ts +36 -0
- package/dist/components/PzTextClamp/constants.d.ts +2 -0
- package/dist/components/PzTextClamp/index.d.ts +2 -0
- package/dist/components/PzTextClamp/types.d.ts +10 -0
- package/dist/floating-vue.d.ts +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/package.json +8 -2
- package/dist/prozorro-ui.cjs +1 -1
- package/dist/prozorro-ui.js +3397 -43
- package/dist/style.css +1 -1
- package/dist/utils/PzDomHandler/PzDomHandler.d.ts +19 -0
- package/dist/utils/PzDomHandler/constants.d.ts +1 -0
- package/dist/utils/PzDomHandler/index.d.ts +2 -0
- package/dist/utils/PzDomHandler/types.d.ts +4 -0
- package/dist/utils/PzScrollTo/PzScrollTo.d.ts +9 -0
- package/dist/utils/PzScrollTo/configs.d.ts +1 -0
- package/dist/utils/PzScrollTo/constants.d.ts +3 -0
- package/dist/utils/PzScrollTo/index.d.ts +2 -0
- package/dist/utils/PzScrollTo/types.d.ts +8 -0
- package/dist/utils/PzValidatorXSS/PzValidatorXSS.d.ts +20 -0
- package/dist/utils/PzValidatorXSS/index.d.ts +2 -0
- package/dist/utils/PzValidatorXSS/types.d.ts +1 -0
- package/package.json +8 -2
- package/src/styles/abstract/_variables.scss +8 -2
- package/src/styles/main.scss +1 -0
- package/src/styles/vendors/_floating-vue.scss +59 -0
- package/src/styles/vendors/_google-material-icons.scss +6 -3
- package/dist/app/assets/formatter-EIJCOSYU-Yh903Rmh.js +0 -1
- package/dist/app/assets/iframe-DDO2S8nh.js +0 -1107
- package/dist/app/assets/iframe-DIUjqeYQ.css +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{P as a}from"./PzText-
|
|
1
|
+
import{P as a}from"./PzText-LfRr6NF7.js";import"./iframe-XnrfGA2g.js";import"./preload-helper-C1FmrZbK.js";const n=[{title:"Mobile",range:"< 768px",viewport:"375px frame",columns:4,gutter:"16px",margin:"16px",frame:"100%",className:"grid-foundation-demo-mobile"},{title:"Tablet",range:">= 768px",viewport:"768px frame",columns:8,gutter:"24px",margin:"32px",frame:"768px",className:"grid-foundation-demo-tablet"},{title:"Desktop",range:">= 1200px",viewport:"1440px frame",columns:12,gutter:"24px",margin:"80px",frame:"1440px",className:"grid-foundation-demo-desktop"}],d=[{name:".pz-container",type:"Layout",description:"Centered frame with responsive horizontal margins and a max width derived from grid tokens."},{name:".pz-container-fluid",type:"Layout",description:"Full-width container that keeps responsive side padding."},{name:".pz-grid",type:"Layout",description:"Responsive column grid using the active token set for columns and gutter."},{name:".pz-grid-fit",type:"Variant",description:"Auto-fit layout for equal cards when fixed column spans are not needed."},{name:".pz-col-1 ... .pz-col-12",type:"Span",description:"Column span utilities for the current layout context."},{name:".pz-col-md-* / .pz-col-xl-*",type:"Responsive span",description:"Breakpoint overrides for tablet and desktop layout changes."},{name:".pz-start-*",type:"Start",description:"Column start utilities for offset and alignment control."}],s=[{name:"@include pz-container",type:"Mixin",description:"Applies the container width and side padding contract inside component styles."},{name:"@include pz-grid",type:"Mixin",description:"Creates a grid that follows the active token-driven column and gap system."},{name:"@include pz-grid-span($span)",type:"Mixin",description:"Applies a specific column span without reaching for utility classes."}],p={title:"Foundation/Grid",parameters:{prototype:{caption:"Grid system",note:"Responsive layout foundation for containers, columns, spans, and offsets."},docs:{description:{component:"Grid system reference for `@prozorro/prozorro-ui`. The live Figma embed for node `14:221` was unavailable anonymously, so this implementation aligns the grid with the repository breakpoint model and documents the resulting library contract."}}},render:()=>({components:{pzText:a},setup(){return{breakpointSpecs:n,utilityRows:d,mixinRows:s}},template:`
|
|
2
2
|
<div class="grid-foundation">
|
|
3
3
|
<section class="grid-foundation-board">
|
|
4
4
|
<header class="grid-foundation-hero">
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.pz-array-clamp-story{display:grid;gap:24px}.pz-array-clamp-story-hero,.pz-array-clamp-story-card{border:1px solid color-mix(in srgb,var(--pz-color-grey-40) 58%,transparent);border-radius:28px;background:linear-gradient(180deg,color-mix(in srgb,var(--pz-color-white) 98%,transparent),color-mix(in srgb,var(--pz-color-grey-40) 10%,var(--pz-color-white))),linear-gradient(135deg,color-mix(in srgb,var(--pz-color-blue-50) 4%,transparent),transparent 44%);box-shadow:0 18px 60px color-mix(in srgb,var(--pz-color-black-90) 8%,transparent),inset 0 1px color-mix(in srgb,var(--pz-color-white) 96%,transparent)}.pz-array-clamp-story-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,360px);gap:20px;padding:clamp(22px,2vw,30px)}.pz-array-clamp-story-copy,.pz-array-clamp-story-preview,.pz-array-clamp-story-card{display:grid;gap:16px}.pz-array-clamp-story-preview,.pz-array-clamp-story-card{padding:clamp(20px,2vw,24px)}.pz-array-clamp-story-preview{align-content:start;border-radius:22px;background:radial-gradient(circle at top right,color-mix(in srgb,var(--pz-color-blue-50) 8%,transparent),transparent 30%),var(--pz-color-white);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--pz-color-grey-40) 52%,transparent),0 12px 32px color-mix(in srgb,var(--pz-color-black-90) 7%,transparent)}.pz-array-clamp-story-grid{display:grid;gap:16px;grid-template-columns:repeat(2,minmax(0,1fr))}.pz-array-clamp-story-label,.pz-array-clamp-story-eyebrow{display:inline-flex;align-items:center;width:fit-content;font-size:11px;font-weight:700;line-height:1;letter-spacing:.14em;text-transform:uppercase}.pz-array-clamp-story-label,.pz-array-clamp-story-eyebrow{color:var(--pz-color-text-link-hover)}.pz-array-clamp-story-custom-toggle{padding:0;border:0;background:transparent;color:var(--pz-color-text-link);cursor:pointer;font-size:var(--pz-font-size-14);font-weight:400;line-height:1.5}.pz-array-clamp-story-custom-toggle:hover,.pz-array-clamp-story-custom-toggle:focus-visible{color:var(--pz-color-text-link-hover);outline:none}@media (width <= 1024px){.pz-array-clamp-story-hero,.pz-array-clamp-story-grid{grid-template-columns:1fr}}@media (width <= 640px){.pz-array-clamp-story-hero,.pz-array-clamp-story-preview,.pz-array-clamp-story-card{padding:20px;border-radius:22px}}.pz-array-clamp[data-v-82bfa0b2]{margin:0;padding:0;list-style:none;color:var(--pz-color-text-primary);font-size:var(--pz-font-size-14);font-weight:400;line-height:1.5}.pz-array-clamp__item[data-v-82bfa0b2]{margin:0;padding:0}.pz-array-clamp__toggle[data-v-82bfa0b2]{padding:0;border:0;background:transparent;color:var(--pz-color-text-link);cursor:pointer;transition:color .16s ease;font-size:var(--pz-font-size-14);font-weight:400;line-height:1.5}.pz-array-clamp__toggle[data-v-82bfa0b2]:hover,.pz-array-clamp__toggle[data-v-82bfa0b2]:focus-visible{color:var(--pz-color-text-link-hover);outline:none}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import{d as q,i as x,L as E,e as n,F as D,I as F,r as v,h as O,g as r,o,J as U,t as C,y as j,f as J}from"./iframe-XnrfGA2g.js";import{_ as M,P as N}from"./PzText-LfRr6NF7.js";import"./preload-helper-C1FmrZbK.js";const R={class:"pz-array-clamp"},W={key:0,class:"pz-array-clamp__item"},G=3,i=q({name:"PzArrayClamp",__name:"PzArrayClamp",props:{list:{},count:{default:G},expanded:{type:Boolean,default:!1},expandLabel:{default:"Показати більше"},collapseLabel:{default:"Показати менше"},btnClass:{default:""}},emits:["update:expanded"],setup(e,{emit:t}){const a=e,m=t,u=x(a.expanded);E(()=>a.expanded,s=>{u.value=s});const l=r(()=>u.value),I=r(()=>l.value?a.list:a.list.slice(0,a.count)),g=r(()=>Math.max(a.list.length-a.count,0)),B=r(()=>g.value>0),z=()=>{const s=!l.value;u.value=s,m("update:expanded",s)};return(s,X)=>(o(),n("ul",R,[(o(!0),n(D,null,F(I.value,(y,f)=>(o(),n("li",{key:`${String(y)}-${f}`,class:"pz-array-clamp__item"},[v(s.$slots,"default",{item:y,index:f},()=>[U(C(y),1)],!0)]))),128)),B.value?(o(),n("li",W,[v(s.$slots,"toggle",{toggle:z,expanded:l.value,hiddenCount:g.value},()=>[j("button",{type:"button",class:J(["pz-array-clamp__toggle",a.btnClass]),onClick:z},C(l.value?a.collapseLabel:a.expandLabel),3)],!0)])):O("",!0)]))}}),b=M(i,[["__scopeId","data-v-82bfa0b2"]]);i.__docgenInfo=Object.assign({displayName:i.name??i.__name},{name:"PzArrayClamp",exportName:"default",displayName:"PzArrayClamp",description:"",tags:{},props:[{name:"list",required:!0,type:{name:"Array",elements:[{name:"unknown"}]}},{name:"count",required:!1,type:{name:"number"},defaultValue:{func:!1,value:"DEFAULT_VISIBLE_COUNT"}},{name:"expanded",required:!1,type:{name:"boolean"},defaultValue:{func:!1,value:"false"}},{name:"expandLabel",required:!1,type:{name:"string"},defaultValue:{func:!1,value:'"Показати більше"'}},{name:"collapseLabel",required:!1,type:{name:"string"},defaultValue:{func:!1,value:'"Показати менше"'}},{name:"btnClass",required:!1,type:{name:"string"},defaultValue:{func:!1,value:'""'}}],slots:[{name:"default",scoped:!0,bindings:[{name:"item",title:"binding"},{name:"index",title:"binding"}]},{name:"toggle",scoped:!0,bindings:[{name:"toggle",title:"binding"},{name:"expanded",title:"binding"},{name:"hidden-count",title:"binding"}]}],sourceFiles:["/builds/Web-Projects/client-services/prozorro-ui/src/components/PzArrayClamp/PzArrayClamp.vue"]});const h=['251035-П29"','"7519 АК1"','"236-1701082"','"236-1702091"','"236-1115030"'],$=['ТОВ "Центральна ремонтна база"','ТОВ "Укрспецлогістика"','ДП "Технічний сервіс №17"','ТОВ "Промавтодеталь"'],H=e=>`<template>
|
|
2
|
+
<PzArrayClamp ${[`:list='${JSON.stringify(e.list,null,2)}'`,e.count!==3?`:count="${e.count}"`:null,e.expanded?':expanded="true"':null,e.expandLabel!=="Показати більше"?`expand-label="${e.expandLabel}"`:null,e.collapseLabel!=="Показати менше"?`collapse-label="${e.collapseLabel}"`:null].filter(m=>!!m).join(" ")} />
|
|
3
|
+
</template>`,K=()=>`<template>
|
|
4
|
+
<PzArrayClamp :list="items" :count="2">
|
|
5
|
+
<template #default="{ item, index }">
|
|
6
|
+
<span>{{ index + 1 }}. {{ item }}</span>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<template #toggle="{ toggle, expanded, hiddenCount }">
|
|
10
|
+
<button type="button" class="custom-toggle" @click="toggle">
|
|
11
|
+
{{ expanded ? "Згорнути" : \`Ще \${hiddenCount} позиції\` }}
|
|
12
|
+
</button>
|
|
13
|
+
</template>
|
|
14
|
+
</PzArrayClamp>
|
|
15
|
+
</template>`,Q={title:"Components/Text/PzArrayClamp",component:b,parameters:{prototype:{caption:"Array clamp component",note:"Compact vertical list for short repeated values. It stays close to the old array clamp prototype, but uses design-system text and link tokens plus controlled expand state."},docs:{description:{component:"Use `PzArrayClamp` to show a short list of repeated values with a link-like reveal action. Item text defaults to the `body-regular` style, and the component supports item and toggle slots for customization."},source:{transform:(e,t)=>H(t.args??Q.args)}}},args:{list:h,count:3,expanded:!1,expandLabel:"Показати більше",collapseLabel:"Показати менше",btnClass:"",title:"Compact values inside a table cell"},argTypes:{list:{control:"object",description:"Items rendered by the clamp."},count:{control:{type:"number",min:1,max:10,step:1},description:"Number of items visible before the list is expanded."},expanded:{control:"boolean",description:"Controlled expanded state."},expandLabel:{control:"text",description:"Default label shown while collapsed."},collapseLabel:{control:"text",description:"Default label shown while expanded."},btnClass:{control:"text",description:"Additional class names for the default toggle button."},title:{control:"text",description:"Story-only heading.",table:{category:"Story"}}},render:e=>({components:{pzArrayClamp:b,pzText:N},setup(){const t=x(!!e.expanded);return E(()=>e.expanded,a=>{t.value=!!a}),{args:e,expanded:t,supplierNames:$,tenderCodes:h}},template:`
|
|
16
|
+
<div class="pz-array-clamp-story">
|
|
17
|
+
<section class="pz-array-clamp-story-hero">
|
|
18
|
+
<div class="pz-array-clamp-story-copy">
|
|
19
|
+
<span class="pz-array-clamp-story-eyebrow">Body Regular by default</span>
|
|
20
|
+
<pz-text variant="h4-bold">{{ args.title }}</pz-text>
|
|
21
|
+
<pz-text variant="body-regular">
|
|
22
|
+
Designed for compact cells where repeated values should stay readable before expanding into the full list.
|
|
23
|
+
</pz-text>
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<div class="pz-array-clamp-story-preview">
|
|
27
|
+
<span class="pz-array-clamp-story-label">Cell preview</span><pz-array-clamp
|
|
28
|
+
:list="args.list"
|
|
29
|
+
:count="args.count"
|
|
30
|
+
:expanded="expanded"
|
|
31
|
+
:expand-label="args.expandLabel"
|
|
32
|
+
:collapse-label="args.collapseLabel"
|
|
33
|
+
:btn-class="args.btnClass"
|
|
34
|
+
@update:expanded="expanded = $event"
|
|
35
|
+
/>
|
|
36
|
+
</div>
|
|
37
|
+
</section>
|
|
38
|
+
|
|
39
|
+
<section class="pz-array-clamp-story-grid">
|
|
40
|
+
<article class="pz-array-clamp-story-card">
|
|
41
|
+
<span class="pz-array-clamp-story-label">Tender codes</span>
|
|
42
|
+
<pz-array-clamp :list="tenderCodes" :count="3" />
|
|
43
|
+
</article>
|
|
44
|
+
|
|
45
|
+
<article class="pz-array-clamp-story-card">
|
|
46
|
+
<span class="pz-array-clamp-story-label">Suppliers</span>
|
|
47
|
+
<pz-array-clamp :list="supplierNames" :count="2" />
|
|
48
|
+
</article>
|
|
49
|
+
</section>
|
|
50
|
+
</div>
|
|
51
|
+
`})},p={},d={args:{list:$,count:2,title:"Two visible suppliers"}},c={parameters:{docs:{source:{code:K()}}},render:()=>({components:{pzArrayClamp:b,pzText:N},setup(){return{expanded:x(!1),items:['"236-1701082"','"236-1702091"','"236-1115030"','"236-1302024"']}},template:`
|
|
52
|
+
<div class="pz-array-clamp-story">
|
|
53
|
+
<section class="pz-array-clamp-story-hero">
|
|
54
|
+
<div class="pz-array-clamp-story-copy">
|
|
55
|
+
<span class="pz-array-clamp-story-eyebrow">Slots</span>
|
|
56
|
+
<pz-text variant="h4-bold">Custom item and toggle rendering</pz-text>
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
<div class="pz-array-clamp-story-preview">
|
|
60
|
+
<div class="pz-array-clamp-story-cell">
|
|
61
|
+
<pz-array-clamp
|
|
62
|
+
:list="items"
|
|
63
|
+
:count="2"
|
|
64
|
+
:expanded="expanded"
|
|
65
|
+
@update:expanded="expanded = $event"
|
|
66
|
+
>
|
|
67
|
+
<template #default="{ item, index }">
|
|
68
|
+
<span>{{ index + 1 }}. {{ item }}</span>
|
|
69
|
+
</template>
|
|
70
|
+
|
|
71
|
+
<template #toggle="{ toggle, expanded: isExpanded, hiddenCount }">
|
|
72
|
+
<button
|
|
73
|
+
type="button"
|
|
74
|
+
class="pz-array-clamp-story-custom-toggle"
|
|
75
|
+
@click="toggle"
|
|
76
|
+
>
|
|
77
|
+
{{ isExpanded ? "Згорнути" : "Ще " + hiddenCount + " позиції" }}
|
|
78
|
+
</button>
|
|
79
|
+
</template>
|
|
80
|
+
</pz-array-clamp>
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
</section>
|
|
84
|
+
</div>
|
|
85
|
+
`})};var _,L,A;p.parameters={...p.parameters,docs:{...(_=p.parameters)==null?void 0:_.docs,source:{originalSource:"{}",...(A=(L=p.parameters)==null?void 0:L.docs)==null?void 0:A.source}}};var S,w,P;d.parameters={...d.parameters,docs:{...(S=d.parameters)==null?void 0:S.docs,source:{originalSource:`{
|
|
86
|
+
args: {
|
|
87
|
+
list: supplierNames,
|
|
88
|
+
count: 2,
|
|
89
|
+
title: "Two visible suppliers"
|
|
90
|
+
}
|
|
91
|
+
}`,...(P=(w=d.parameters)==null?void 0:w.docs)==null?void 0:P.source}}};var T,V,k;c.parameters={...c.parameters,docs:{...(T=c.parameters)==null?void 0:T.docs,source:{originalSource:`{
|
|
92
|
+
parameters: {
|
|
93
|
+
docs: {
|
|
94
|
+
source: {
|
|
95
|
+
code: buildSlotSource()
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
render: () => ({
|
|
100
|
+
components: {
|
|
101
|
+
pzArrayClamp: PzArrayClamp,
|
|
102
|
+
pzText: PzText
|
|
103
|
+
},
|
|
104
|
+
setup() {
|
|
105
|
+
const expanded = ref(false);
|
|
106
|
+
const items = ['"236-1701082"', '"236-1702091"', '"236-1115030"', '"236-1302024"'];
|
|
107
|
+
return {
|
|
108
|
+
expanded,
|
|
109
|
+
items
|
|
110
|
+
};
|
|
111
|
+
},
|
|
112
|
+
template: \`
|
|
113
|
+
<div class="pz-array-clamp-story">
|
|
114
|
+
<section class="pz-array-clamp-story-hero">
|
|
115
|
+
<div class="pz-array-clamp-story-copy">
|
|
116
|
+
<span class="pz-array-clamp-story-eyebrow">Slots</span>
|
|
117
|
+
<pz-text variant="h4-bold">Custom item and toggle rendering</pz-text>
|
|
118
|
+
</div>
|
|
119
|
+
|
|
120
|
+
<div class="pz-array-clamp-story-preview">
|
|
121
|
+
<div class="pz-array-clamp-story-cell">
|
|
122
|
+
<pz-array-clamp
|
|
123
|
+
:list="items"
|
|
124
|
+
:count="2"
|
|
125
|
+
:expanded="expanded"
|
|
126
|
+
@update:expanded="expanded = $event"
|
|
127
|
+
>
|
|
128
|
+
<template #default="{ item, index }">
|
|
129
|
+
<span>{{ index + 1 }}. {{ item }}</span>
|
|
130
|
+
</template>
|
|
131
|
+
|
|
132
|
+
<template #toggle="{ toggle, expanded: isExpanded, hiddenCount }">
|
|
133
|
+
<button
|
|
134
|
+
type="button"
|
|
135
|
+
class="pz-array-clamp-story-custom-toggle"
|
|
136
|
+
@click="toggle"
|
|
137
|
+
>
|
|
138
|
+
{{ isExpanded ? "Згорнути" : "Ще " + hiddenCount + " позиції" }}
|
|
139
|
+
</button>
|
|
140
|
+
</template>
|
|
141
|
+
</pz-array-clamp>
|
|
142
|
+
</div>
|
|
143
|
+
</div>
|
|
144
|
+
</section>
|
|
145
|
+
</div>
|
|
146
|
+
\`
|
|
147
|
+
})
|
|
148
|
+
}`,...(k=(V=c.parameters)==null?void 0:V.docs)==null?void 0:k.source}}};const ae=["Playground","TwoVisibleItems","CustomSlots"];export{c as CustomSlots,p as Playground,d as TwoVisibleItems,ae as __namedExportsOrder,Q as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@charset "UTF-8";.pz-breadcrumb-story{display:grid;gap:var(--pz-space-24)}.pz-breadcrumb-story-frame{display:grid;gap:var(--pz-space-16);padding:var(--pz-space-24);border:1px solid color-mix(in srgb,var(--pz-color-grey-30) 74%,transparent);border-radius:var(--pz-space-24);background:radial-gradient(circle at top right,color-mix(in srgb,var(--pz-color-blue-50) 8%,transparent),transparent 36%),linear-gradient(180deg,color-mix(in srgb,var(--pz-color-white) 98%,transparent),color-mix(in srgb,var(--pz-color-grey-20) 90%,var(--pz-color-white)))}.pz-breadcrumb-story-header{display:flex;align-items:start;justify-content:space-between;gap:var(--pz-space-16)}.pz-breadcrumb-story-eyebrow,.pz-breadcrumb-story-chip{display:inline-flex;align-items:center;width:fit-content;padding:var(--pz-space-8) var(--pz-space-16);border-radius:999px;background:color-mix(in srgb,var(--pz-color-blue-10) 92%,var(--pz-color-white));color:var(--pz-color-text-link-hover);font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.pz-breadcrumb-story-surface{display:grid;gap:var(--pz-space-20);padding:var(--pz-space-24);border-radius:var(--pz-space-20);background:color-mix(in srgb,var(--pz-color-white) 98%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--pz-color-grey-30) 60%,transparent)}.pz-breadcrumb-story-grid{display:grid;gap:var(--pz-space-16)}.pz-breadcrumb-story-card{display:grid;grid-template-columns:minmax(220px,280px) minmax(0,1fr);gap:var(--pz-space-20);padding:var(--pz-space-20);border:1px solid color-mix(in srgb,var(--pz-color-grey-30) 74%,transparent);border-radius:var(--pz-space-20);background:color-mix(in srgb,var(--pz-color-white) 96%,transparent);box-shadow:0 12px 32px color-mix(in srgb,var(--pz-color-black-90) 5%,transparent)}.pz-breadcrumb-story-copy{display:grid;align-content:start;gap:var(--pz-space-12)}.pz-breadcrumb-story-card-surface{display:grid;gap:var(--pz-space-12);padding:var(--pz-space-20);border-radius:var(--pz-space-16);background:color-mix(in srgb,var(--pz-color-background-frame) 96%,var(--pz-color-white))}@media (width <= 768px){.pz-breadcrumb-story-header{flex-direction:column}.pz-breadcrumb-story-card{grid-template-columns:1fr}}.pz-breadcrumb[data-v-121084ee]{--pz-breadcrumb-link-color: var(--pz-color-text-primary);--pz-breadcrumb-current-color: var(--pz-color-text-secondary);--pz-breadcrumb-separator-color: var(--pz-color-grey-60);width:100%}.pz-breadcrumb__list[data-v-121084ee]{display:flex;flex-wrap:wrap;align-items:center;gap:0;margin:0;padding:0;list-style:none}.pz-breadcrumb__item[data-v-121084ee]{display:inline-flex;align-items:center}.pz-breadcrumb__item[data-v-121084ee]:not(:first-child):before{content:"›";margin:0 10px;color:var(--pz-breadcrumb-separator-color);font-size:var(--pz-font-size-14);line-height:1}.pz-breadcrumb__link[data-v-121084ee]{color:var(--pz-breadcrumb-link-color);text-decoration:none;transition:color .16s ease;font-size:var(--pz-font-size-12);font-weight:400;line-height:1.5}.pz-breadcrumb__link[data-v-121084ee]:hover{color:var(--pz-color-text-link-hover)}.pz-breadcrumb__link--current[data-v-121084ee]{color:var(--pz-breadcrumb-current-color);pointer-events:none}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import{d as A,e as m,y as B,l as L,w as P,k as c,R as x,F,I as q,g as w,o as d,r as b,J as z,t as v,j as D,q as J,E,K as $}from"./iframe-XnrfGA2g.js";import{_ as U,P as O}from"./PzText-LfRr6NF7.js";import"./preload-helper-C1FmrZbK.js";const y={label:"Головна",to:"/"},W={class:"pz-breadcrumb","aria-label":"Breadcrumb"},H={class:"pz-breadcrumb__list"},K={class:"pz-breadcrumb__item"},G={key:0,class:"pz-breadcrumb__link pz-breadcrumb__link--current","aria-current":"page"},l=A({name:"PzBreadcrumb",__name:"PzBreadcrumb",props:{items:{}},setup(a){const n=J(),o=a,_=e=>typeof e!="string"?e:e.split("/").map(t=>{if(!t.startsWith(":"))return t;const r=n.params[t.slice(1)];return Array.isArray(r)?r.join("/"):r??t}).join("/"),V=w(()=>{const e=[];return n.matched.forEach(t=>{const r=t.meta,s=String(r.breadcrumb??r.name??t.name??"").trim();!s||t.path==="/"||e.push({label:s,to:_(t.path)})}),e}),f=w(()=>{var e;return(e=o.items)!=null&&e.length?o.items.map(t=>({...t,to:_(t.to)})):V.value}),g=e=>e===f.value.length-1;return(e,t)=>(d(),m("nav",W,[B("ul",H,[B("li",K,[L(c(x),{to:c(y).to,class:"pz-breadcrumb__link"},{default:P(()=>[b(e.$slots,"home",{data:c(y),index:-1,isCurrent:!1},()=>[z(v(c(y).label),1)],!0)]),_:3},8,["to"])]),(d(!0),m(F,null,q(f.value,(r,s)=>(d(),m("li",{key:`${r.label}-${s}`,class:"pz-breadcrumb__item"},[g(s)||!r.to?(d(),m("span",G,[b(e.$slots,"view",{data:r,isCurrent:g(s)||!r.to,index:s},()=>[z(v(r.label),1)],!0)])):(d(),D(c(x),{key:1,to:r.to,class:"pz-breadcrumb__link"},{default:P(()=>[b(e.$slots,"view",{data:r,isCurrent:!1,index:s},()=>[z(v(r.label),1)],!0)]),_:2},1032,["to"]))]))),128))])]))}}),h=U(l,[["__scopeId","data-v-121084ee"]]);l.__docgenInfo=Object.assign({displayName:l.name??l.__name},{name:"PzBreadcrumb",exportName:"default",displayName:"PzBreadcrumb",description:"",tags:{},props:[{name:"items",required:!1,type:{name:"Array",elements:[{name:"PzBreadcrumbItem"}]}}],slots:[{name:"home",scoped:!0,bindings:[{name:"data",title:"binding"},{name:"index",title:"binding"},{name:"is-current",title:"binding"}]},{name:"view",scoped:!0,bindings:[{name:"data",title:"binding"},{name:"is-current",title:"binding"},{name:"index",title:"binding"}]}],sourceFiles:["/builds/Web-Projects/client-services/prozorro-ui/src/components/PzBreadcrumb/PzBreadcrumb.vue"]});const Q=[{label:"Тендери",to:"/breadcrumbs/tenders"},{label:"Транспорт",to:"/breadcrumbs/tenders/transport"},{label:"Автомобіль ВАЗ 21703"}],X=[{label:"Закупівлі",to:"/breadcrumbs/procedures"},{label:"Товари",to:"/breadcrumbs/procedures/products"},{label:"Легковий транспорт",to:"/breadcrumbs/procedures/products/cars"},{label:"Автомобіль ВАЗ 21703"}],Y=a=>{var o;return(o=a.items)!=null&&o.length?`<template>
|
|
2
|
+
<PzBreadcrumb :items='${JSON.stringify(a.items,null,2)}' />
|
|
3
|
+
</template>`:`<template>
|
|
4
|
+
<PzBreadcrumb />
|
|
5
|
+
</template>`},Z=()=>`<template>
|
|
6
|
+
<PzBreadcrumb>
|
|
7
|
+
<template #home="{ data }">
|
|
8
|
+
<strong>{{ data.label }}</strong>
|
|
9
|
+
</template>
|
|
10
|
+
|
|
11
|
+
<template #view="{ data, isCurrent }">
|
|
12
|
+
<span :style="{ opacity: isCurrent ? 0.7 : 1 }">{{ data.label }}</span>
|
|
13
|
+
</template>
|
|
14
|
+
</PzBreadcrumb>
|
|
15
|
+
</template>`,ee={title:"Components/Navigation/PzBreadcrumb",component:h,parameters:{prototype:{caption:"Breadcrumb component",note:"This version stays close to the old app breadcrumb: the home crumb is rendered first, intermediate crumbs are links, the last crumb is plain text, and route-derived breadcrumbs come from vue-router metadata."},docs:{description:{component:"Use `PzBreadcrumb` with no props to derive crumbs from `route.matched` via `route.meta.breadcrumb` or `route.meta.name`. Pass `items` only when you need to override the route-derived trail."},source:{transform:(a,n)=>Y(n.args??ee.args)}}},args:{items:void 0},argTypes:{items:{control:"object",description:"Optional manual breadcrumb override. If omitted, the component reads crumbs from vue-router."}},render:a=>({components:{pzBreadcrumb:h,pzText:O},setup(){const n=$();return E(async()=>{await n.push("/breadcrumbs/tenders/transport/vaz-21703")}),{args:a,deepItems:X}},template:`
|
|
16
|
+
<div class="pz-breadcrumb-story">
|
|
17
|
+
<section class="pz-breadcrumb-story-frame">
|
|
18
|
+
<div class="pz-breadcrumb-story-header">
|
|
19
|
+
<div>
|
|
20
|
+
<span class="pz-breadcrumb-story-eyebrow">Vue Router</span>
|
|
21
|
+
<pz-text variant="h4-bold">Breadcrumb from route metadata</pz-text>
|
|
22
|
+
</div>
|
|
23
|
+
<span class="pz-breadcrumb-story-chip">node 111:2205</span>
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<div class="pz-breadcrumb-story-surface">
|
|
27
|
+
<pz-breadcrumb :items="args.items" />
|
|
28
|
+
</div>
|
|
29
|
+
</section>
|
|
30
|
+
|
|
31
|
+
<section class="pz-breadcrumb-story-grid">
|
|
32
|
+
<article class="pz-breadcrumb-story-card">
|
|
33
|
+
<div class="pz-breadcrumb-story-copy">
|
|
34
|
+
<pz-text variant="body-semibold">Manual override</pz-text>
|
|
35
|
+
<pz-text variant="small-regular">
|
|
36
|
+
If items is passed, the component renders that list instead of reading vue-router.
|
|
37
|
+
</pz-text>
|
|
38
|
+
</div>
|
|
39
|
+
|
|
40
|
+
<div class="pz-breadcrumb-story-card-surface">
|
|
41
|
+
<pz-breadcrumb :items="deepItems" />
|
|
42
|
+
</div>
|
|
43
|
+
</article>
|
|
44
|
+
</section>
|
|
45
|
+
</div>
|
|
46
|
+
`})},i={},u={args:{items:Q}},p={parameters:{docs:{source:{code:Z()}}},render:()=>({components:{pzBreadcrumb:h,pzText:O},setup(){const a=$();return E(async()=>{await a.push("/breadcrumbs/tenders/transport/vaz-21703")}),{}},template:`
|
|
47
|
+
<div class="pz-breadcrumb-story">
|
|
48
|
+
<section class="pz-breadcrumb-story-frame">
|
|
49
|
+
<div class="pz-breadcrumb-story-header">
|
|
50
|
+
<div>
|
|
51
|
+
<span class="pz-breadcrumb-story-eyebrow">Slots</span>
|
|
52
|
+
<pz-text variant="h4-bold">Custom home and item content</pz-text>
|
|
53
|
+
</div>
|
|
54
|
+
<span class="pz-breadcrumb-story-chip">home + view</span>
|
|
55
|
+
</div>
|
|
56
|
+
|
|
57
|
+
<div class="pz-breadcrumb-story-surface">
|
|
58
|
+
<pz-breadcrumb>
|
|
59
|
+
<template #home="{ data }">
|
|
60
|
+
<span>{{ data.label }}</span>
|
|
61
|
+
</template>
|
|
62
|
+
|
|
63
|
+
<template #view="{ data, isCurrent }">
|
|
64
|
+
<span :style="{ opacity: isCurrent ? 0.65 : 1 }">{{ data.label }}</span>
|
|
65
|
+
</template>
|
|
66
|
+
</pz-breadcrumb>
|
|
67
|
+
</div>
|
|
68
|
+
</section>
|
|
69
|
+
</div>
|
|
70
|
+
`})};var C,S,k;i.parameters={...i.parameters,docs:{...(C=i.parameters)==null?void 0:C.docs,source:{originalSource:"{}",...(k=(S=i.parameters)==null?void 0:S.docs)==null?void 0:k.source}}};var I,R,N;u.parameters={...u.parameters,docs:{...(I=u.parameters)==null?void 0:I.docs,source:{originalSource:`{
|
|
71
|
+
args: {
|
|
72
|
+
items: manualItems
|
|
73
|
+
}
|
|
74
|
+
}`,...(N=(R=u.parameters)==null?void 0:R.docs)==null?void 0:N.source}}};var T,M,j;p.parameters={...p.parameters,docs:{...(T=p.parameters)==null?void 0:T.docs,source:{originalSource:`{
|
|
75
|
+
parameters: {
|
|
76
|
+
docs: {
|
|
77
|
+
source: {
|
|
78
|
+
code: buildSlotSource()
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
render: () => ({
|
|
83
|
+
components: {
|
|
84
|
+
pzBreadcrumb: PzBreadcrumb,
|
|
85
|
+
pzText: PzText
|
|
86
|
+
},
|
|
87
|
+
setup() {
|
|
88
|
+
const router = useRouter();
|
|
89
|
+
onMounted(async () => {
|
|
90
|
+
await router.push("/breadcrumbs/tenders/transport/vaz-21703");
|
|
91
|
+
});
|
|
92
|
+
return {};
|
|
93
|
+
},
|
|
94
|
+
template: \`
|
|
95
|
+
<div class="pz-breadcrumb-story">
|
|
96
|
+
<section class="pz-breadcrumb-story-frame">
|
|
97
|
+
<div class="pz-breadcrumb-story-header">
|
|
98
|
+
<div>
|
|
99
|
+
<span class="pz-breadcrumb-story-eyebrow">Slots</span>
|
|
100
|
+
<pz-text variant="h4-bold">Custom home and item content</pz-text>
|
|
101
|
+
</div>
|
|
102
|
+
<span class="pz-breadcrumb-story-chip">home + view</span>
|
|
103
|
+
</div>
|
|
104
|
+
|
|
105
|
+
<div class="pz-breadcrumb-story-surface">
|
|
106
|
+
<pz-breadcrumb>
|
|
107
|
+
<template #home="{ data }">
|
|
108
|
+
<span>{{ data.label }}</span>
|
|
109
|
+
</template>
|
|
110
|
+
|
|
111
|
+
<template #view="{ data, isCurrent }">
|
|
112
|
+
<span :style="{ opacity: isCurrent ? 0.65 : 1 }">{{ data.label }}</span>
|
|
113
|
+
</template>
|
|
114
|
+
</pz-breadcrumb>
|
|
115
|
+
</div>
|
|
116
|
+
</section>
|
|
117
|
+
</div>
|
|
118
|
+
\`
|
|
119
|
+
})
|
|
120
|
+
}`,...(j=(M=p.parameters)==null?void 0:M.docs)==null?void 0:j.source}}};const se=["Playground","ManualItems","CustomSlots"];export{p as CustomSlots,u as ManualItems,i as Playground,se as __namedExportsOrder,ee as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as i,e as a,r as o,h as l,f as p,o as t}from"./iframe-XnrfGA2g.js";import{_ as u}from"./PzText-LfRr6NF7.js";const d=["type","disabled"],f={key:0,class:"pz-btn-prefix"},m={key:1,class:"pz-btn-content"},c={key:2,class:"pz-btn-suffix"},s=i({name:"PzBtn",__name:"PzBtn",props:{variant:{default:"primary"},type:{default:"button"},disabled:{type:Boolean,default:!1}},setup(r){const n=r;return(e,b)=>(t(),a("button",{type:n.type,disabled:n.disabled,class:p(["pz-btn",`pz-btn--${n.variant}`])},[e.$slots.prefix?(t(),a("span",f,[o(e.$slots,"prefix",{},void 0,!0)])):l("",!0),e.$slots.default?(t(),a("span",m,[o(e.$slots,"default",{},void 0,!0)])):l("",!0),e.$slots.suffix?(t(),a("span",c,[o(e.$slots,"suffix",{},void 0,!0)])):l("",!0)],10,d))}}),z=u(s,[["__scopeId","data-v-1c1e8351"]]);s.__docgenInfo=Object.assign({displayName:s.name??s.__name},{name:"PzBtn",exportName:"default",displayName:"PzBtn",description:"",tags:{},props:[{name:"variant",required:!1,type:{name:"PzBtnVariant"},defaultValue:{func:!1,value:'"primary"'}},{name:"type",required:!1,type:{name:"PzBtnType"},defaultValue:{func:!1,value:'"button"'}},{name:"disabled",required:!1,type:{name:"boolean"},defaultValue:{func:!1,value:"false"}}],slots:[{name:"prefix"},{name:"default"},{name:"suffix"}],sourceFiles:["/builds/Web-Projects/client-services/prozorro-ui/src/components/PzBtn/PzBtn.vue"]});export{z as P};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.pz-btn-story{display:grid;gap:var(--pz-space-24)}.pz-btn-story-board,.pz-btn-story-gallery{display:grid;gap:var(--pz-space-16);padding:var(--pz-space-24);border:1px solid color-mix(in srgb,var(--pz-color-grey-30) 72%,transparent);border-radius:var(--pz-space-24);background:radial-gradient(circle at top right,color-mix(in srgb,var(--pz-color-blue-50) 8%,transparent),transparent 34%),linear-gradient(180deg,color-mix(in srgb,var(--pz-color-white) 98%,transparent),color-mix(in srgb,var(--pz-color-grey-20) 90%,var(--pz-color-white)));box-shadow:0 18px 48px color-mix(in srgb,var(--pz-color-black-90) 7%,transparent),inset 0 1px color-mix(in srgb,var(--pz-color-white) 96%,transparent)}.pz-btn-story-header{display:flex;align-items:start;justify-content:space-between;gap:var(--pz-space-16)}.pz-btn-story-eyebrow,.pz-btn-story-chip{display:inline-flex;align-items:center;width:fit-content;padding:var(--pz-space-8) var(--pz-space-16);border-radius:999px;background:color-mix(in srgb,var(--pz-color-blue-10) 92%,var(--pz-color-white));color:var(--pz-color-text-link-hover);font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.pz-btn-story-preview{display:grid;place-items:center;min-height:180px;padding:var(--pz-space-24);border:1px dashed color-mix(in srgb,var(--pz-color-grey-40) 70%,transparent);border-radius:var(--pz-space-20);background:linear-gradient(color-mix(in srgb,var(--pz-color-blue-50) 4%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--pz-color-blue-50) 4%,transparent) 1px,transparent 1px);background-size:28px 28px}.pz-btn-story-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--pz-space-16)}.pz-btn-story-card{display:grid;gap:var(--pz-space-12);padding:var(--pz-space-20);border:1px solid color-mix(in srgb,var(--pz-color-grey-30) 74%,transparent);border-radius:var(--pz-space-20);background:color-mix(in srgb,var(--pz-color-white) 94%,transparent);box-shadow:0 12px 32px color-mix(in srgb,var(--pz-color-black-90) 5%,transparent)}.pz-btn-story-row{display:flex;align-items:center;gap:var(--pz-space-12);flex-wrap:wrap}.pz-btn-story-label{margin:0;font-size:var(--pz-font-size-12);font-weight:600;color:var(--pz-color-text-secondary);text-transform:uppercase;letter-spacing:.08em}@media (width <= 768px){.pz-btn-story-grid{grid-template-columns:1fr}.pz-btn-story-header{flex-direction:column}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.pz-btn[data-v-1c1e8351]{--pz-btn-color: var(--pz-color-white);--pz-btn-bg: transparent;--pz-btn-hover-color: var(--pz-color-white);--pz-btn-hover-bg: transparent;--pz-btn-border-color: transparent;--pz-btn-hover-border-color: transparent;--pz-btn-disabled-color: var(--pz-color-white);--pz-btn-disabled-bg: var(--pz-color-button-disabled);--pz-btn-disabled-border-color: var(--pz-color-button-disabled);--pz-btn-active-color: var(--pz-btn-color);--pz-btn-active-bg: var(--pz-btn-bg);--pz-btn-active-border-color: var(--pz-btn-border-color);--pz-btn-radius: var(--pz-space-4);--pz-btn-padding-block: var(--pz-space-8);--pz-btn-padding-inline: var(--pz-space-12);--pz-btn-gap: var(--pz-space-8);display:inline-flex;align-items:center;gap:var(--pz-btn-gap);padding:var(--pz-btn-padding-block) var(--pz-btn-padding-inline);border:1px solid var(--pz-btn-border-color);border-radius:var(--pz-btn-radius);background:var(--pz-btn-bg);color:var(--pz-btn-color);cursor:pointer;text-decoration:none;outline:none;transition:color .16s ease,border-color .16s ease,background-color .16s ease,box-shadow .16s ease;font-size:var(--pz-font-size-14);font-weight:600;line-height:1.5}.pz-btn[data-v-1c1e8351]:not(:disabled):hover,.pz-btn[data-v-1c1e8351]:not(:disabled):focus-visible{color:var(--pz-btn-hover-color);background:var(--pz-btn-hover-bg);border-color:var(--pz-btn-hover-border-color)}.pz-btn[data-v-1c1e8351]:not(:disabled):active{color:var(--pz-btn-active-color);background:var(--pz-btn-active-bg);border-color:var(--pz-btn-active-border-color)}.pz-btn[data-v-1c1e8351]:not(:disabled):focus-visible{box-shadow:0 0 0 3px color-mix(in srgb,var(--pz-btn-hover-bg) 28%,transparent)}.pz-btn[data-v-1c1e8351]:disabled{color:var(--pz-btn-disabled-color);background:var(--pz-btn-disabled-bg);border-color:var(--pz-btn-disabled-border-color);cursor:not-allowed}.pz-btn--primary[data-v-1c1e8351]{--pz-btn-color: var(--pz-color-white);--pz-btn-bg: var(--pz-color-button-primary);--pz-btn-hover-color: var(--pz-color-white);--pz-btn-hover-bg: var(--pz-color-button-primary-hover);--pz-btn-border-color: var(--pz-color-button-primary);--pz-btn-hover-border-color: var(--pz-color-button-primary-hover)}.pz-btn--primary-outline[data-v-1c1e8351]{--pz-btn-color: var(--pz-color-button-primary);--pz-btn-bg: transparent;--pz-btn-hover-color: var(--pz-color-white);--pz-btn-hover-bg: var(--pz-color-button-primary-hover);--pz-btn-border-color: var(--pz-color-button-primary);--pz-btn-hover-border-color: var(--pz-color-button-primary-hover);--pz-btn-active-color: var(--pz-color-white);--pz-btn-active-bg: var(--pz-color-button-primary);--pz-btn-active-border-color: var(--pz-color-button-primary);--pz-btn-disabled-color: var(--pz-color-button-disabled);--pz-btn-disabled-bg: transparent;--pz-btn-disabled-border-color: var(--pz-color-button-disabled)}.pz-btn--danger[data-v-1c1e8351]{--pz-btn-color: var(--pz-color-white);--pz-btn-bg: var(--pz-color-button-danger);--pz-btn-hover-color: var(--pz-color-white);--pz-btn-hover-bg: var(--pz-color-button-danger-hover);--pz-btn-border-color: var(--pz-color-button-danger);--pz-btn-hover-border-color: var(--pz-color-button-danger-hover)}.pz-btn--danger-outline[data-v-1c1e8351]{--pz-btn-color: var(--pz-color-button-danger);--pz-btn-bg: transparent;--pz-btn-hover-color: var(--pz-color-white);--pz-btn-hover-bg: var(--pz-color-button-danger-hover);--pz-btn-border-color: var(--pz-color-button-danger);--pz-btn-hover-border-color: var(--pz-color-button-danger-hover);--pz-btn-disabled-color: var(--pz-color-button-disabled);--pz-btn-disabled-bg: transparent;--pz-btn-disabled-border-color: var(--pz-color-button-disabled)}.pz-btn--alert[data-v-1c1e8351]{--pz-btn-color: var(--pz-color-white);--pz-btn-bg: var(--pz-color-button-alert);--pz-btn-hover-color: var(--pz-color-white);--pz-btn-hover-bg: var(--pz-color-button-alert-hover);--pz-btn-border-color: var(--pz-color-button-alert);--pz-btn-hover-border-color: var(--pz-color-button-alert-hover)}.pz-btn--alert-outline[data-v-1c1e8351]{--pz-btn-color: var(--pz-color-button-alert);--pz-btn-bg: transparent;--pz-btn-hover-color: var(--pz-color-white);--pz-btn-hover-bg: var(--pz-color-button-alert-hover);--pz-btn-border-color: var(--pz-color-button-alert);--pz-btn-hover-border-color: var(--pz-color-button-alert-hover);--pz-btn-disabled-color: var(--pz-color-button-disabled);--pz-btn-disabled-bg: transparent;--pz-btn-disabled-border-color: var(--pz-color-button-disabled)}.pz-btn--success[data-v-1c1e8351]{--pz-btn-color: var(--pz-color-white);--pz-btn-bg: var(--pz-color-button-success);--pz-btn-hover-color: var(--pz-color-white);--pz-btn-hover-bg: var(--pz-color-button-success-hover);--pz-btn-border-color: var(--pz-color-button-success);--pz-btn-hover-border-color: var(--pz-color-button-success-hover)}.pz-btn--success-outline[data-v-1c1e8351]{--pz-btn-color: var(--pz-color-button-success);--pz-btn-bg: transparent;--pz-btn-hover-color: var(--pz-color-white);--pz-btn-hover-bg: var(--pz-color-button-success-hover);--pz-btn-border-color: var(--pz-color-button-success);--pz-btn-hover-border-color: var(--pz-color-button-success-hover);--pz-btn-disabled-color: var(--pz-color-button-disabled);--pz-btn-disabled-bg: transparent;--pz-btn-disabled-border-color: var(--pz-color-button-disabled)}.pz-btn--pink[data-v-1c1e8351]{--pz-btn-color: var(--pz-color-white);--pz-btn-bg: var(--pz-color-button-pink);--pz-btn-hover-color: var(--pz-color-white);--pz-btn-hover-bg: var(--pz-color-button-pink-hover);--pz-btn-border-color: var(--pz-color-button-pink);--pz-btn-hover-border-color: var(--pz-color-button-pink-hover)}.pz-btn--pink-outline[data-v-1c1e8351]{--pz-btn-color: var(--pz-color-button-pink);--pz-btn-bg: transparent;--pz-btn-hover-color: var(--pz-color-white);--pz-btn-hover-bg: var(--pz-color-button-pink-hover);--pz-btn-border-color: var(--pz-color-button-pink);--pz-btn-hover-border-color: var(--pz-color-button-pink-hover);--pz-btn-disabled-color: var(--pz-color-button-disabled);--pz-btn-disabled-bg: transparent;--pz-btn-disabled-border-color: var(--pz-color-button-disabled)}.pz-btn--link[data-v-1c1e8351]{--pz-btn-color: var(--pz-color-text-primary);--pz-btn-bg: transparent;--pz-btn-hover-color: var(--pz-color-text-link-hover);--pz-btn-hover-bg: transparent;--pz-btn-border-color: transparent;--pz-btn-hover-border-color: transparent;--pz-btn-disabled-color: var(--pz-color-button-disabled);--pz-btn-disabled-bg: transparent;--pz-btn-disabled-border-color: transparent;--pz-btn-radius: 0}.pz-btn--transparent[data-v-1c1e8351]{--pz-btn-color: var(--pz-color-text-link);--pz-btn-bg: transparent;--pz-btn-hover-color: var(--pz-color-text-link-hover);--pz-btn-hover-bg: transparent;--pz-btn-border-color: transparent;--pz-btn-hover-border-color: transparent;--pz-btn-disabled-color: var(--pz-color-button-disabled);--pz-btn-disabled-bg: transparent;--pz-btn-disabled-border-color: transparent;--pz-btn-padding-block: var(--pz-space-4);--pz-btn-padding-inline: 0}.pz-btn-prefix[data-v-1c1e8351],.pz-btn-suffix[data-v-1c1e8351]{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.pz-btn-prefix[data-v-1c1e8351]:empty,.pz-btn-suffix[data-v-1c1e8351]:empty,.pz-btn-content[data-v-1c1e8351]:empty{display:none}.pz-btn-prefix[data-v-1c1e8351] .pz-icon,.pz-btn-suffix[data-v-1c1e8351] .pz-icon{--pz-icon-color: currentcolor}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import{_ as p}from"./PzIcon-Don8TXO3.js";import{P as c}from"./PzText-LfRr6NF7.js";import{P as n}from"./PzBtn-Brjbpw1b.js";import"./iframe-XnrfGA2g.js";import"./preload-helper-C1FmrZbK.js";const f=["primary","primary-outline","danger","danger-outline","alert","alert-outline","success","success-outline","pink","pink-outline","link","transparent"],b=["button","submit","reset"],m=[{variant:"primary",label:"Підтвердити",prefix:"check"},{variant:"primary-outline",label:"Редагувати",prefix:"edit"},{variant:"danger",label:"Видалити",prefix:"delete"},{variant:"danger-outline",label:"Скасувати",suffix:"close"},{variant:"alert",label:"Попередження",prefix:"warning"},{variant:"alert-outline",label:"Зверніть увагу"},{variant:"success",label:"Підтвердити",prefix:"check"},{variant:"success-outline",label:"Скасувати",suffix:"close"},{variant:"pink",label:"Відгук",prefix:"star"},{variant:"pink-outline",label:"Відгук",prefix:"star"},{variant:"link",label:"Перейти до деталей"},{variant:"transparent",label:"Показати більше"}],d=t=>{const e=[t.variant!=="primary"?`variant="${t.variant}"`:null,t.type!=="button"?`type="${t.type}"`:null,t.disabled?':disabled="true"':null].filter(i=>!!i).join(" "),o=[t.showPrefix?` <template #prefix>
|
|
2
|
+
<PzIcon name="add" size="16" />
|
|
3
|
+
</template>`:null,` ${t.label}`,t.showSuffix?` <template #suffix>
|
|
4
|
+
<PzIcon name="arrow_forward" size="16" />
|
|
5
|
+
</template>`:null].filter(i=>!!i);return`<template>
|
|
6
|
+
${e?`<PzBtn ${e}>`:"<PzBtn>"}
|
|
7
|
+
${o.join(`
|
|
8
|
+
`)}
|
|
9
|
+
</PzBtn>
|
|
10
|
+
</template>`},u={title:"Components/Actions/PzBtn",component:n,parameters:{docs:{description:{component:"Use `PzBtn` for all button actions. Supports filled, outline, link, and transparent treatments via `variant`. Compose prefix or suffix icons through named slots."},source:{transform:(t,e)=>d(e.args??u.args)}}},args:{variant:"primary",type:"button",disabled:!1,label:"Підтвердити дію",showPrefix:!0,showSuffix:!1},argTypes:{variant:{control:"select",options:f,description:"Visual button treatment."},type:{control:"inline-radio",options:b,description:"Native button type attribute."},disabled:{control:"boolean",description:"Disables the button and applies reduced-opacity styling."},label:{control:"text",description:"Slot content preview text.",table:{category:"Slots"}},showPrefix:{control:"boolean",description:"Shows a prefix icon slot in the preview.",table:{category:"Slots"}},showSuffix:{control:"boolean",description:"Shows a suffix icon slot in the preview.",table:{category:"Slots"}}},render:t=>({components:{pzBtn:n,pzIcon:p,pzText:c},setup(){return{args:t,btnReferenceItems:m}},template:`
|
|
11
|
+
<div class="pz-btn-story">
|
|
12
|
+
<section class="pz-btn-story-board">
|
|
13
|
+
<div class="pz-btn-story-header">
|
|
14
|
+
<div>
|
|
15
|
+
<span class="pz-btn-story-eyebrow">Component API</span>
|
|
16
|
+
<pz-text variant="h4-bold">Interactive playground</pz-text>
|
|
17
|
+
</div>
|
|
18
|
+
<span class="pz-btn-story-chip">{{ args.variant }}</span>
|
|
19
|
+
</div>
|
|
20
|
+
|
|
21
|
+
<div class="pz-btn-story-preview">
|
|
22
|
+
<pz-btn
|
|
23
|
+
:variant="args.variant"
|
|
24
|
+
:type="args.type"
|
|
25
|
+
:disabled="args.disabled"
|
|
26
|
+
>
|
|
27
|
+
<template v-if="args.showPrefix" #prefix>
|
|
28
|
+
<pz-icon name="add" size="16" label="Button prefix icon" />
|
|
29
|
+
</template>
|
|
30
|
+
|
|
31
|
+
{{ args.label }}
|
|
32
|
+
|
|
33
|
+
<template v-if="args.showSuffix" #suffix>
|
|
34
|
+
<pz-icon name="arrow_forward" size="16" label="Button suffix icon" />
|
|
35
|
+
</template>
|
|
36
|
+
</pz-btn>
|
|
37
|
+
</div>
|
|
38
|
+
</section>
|
|
39
|
+
|
|
40
|
+
<section class="pz-btn-story-gallery">
|
|
41
|
+
<div class="pz-btn-story-header">
|
|
42
|
+
<div>
|
|
43
|
+
<span class="pz-btn-story-eyebrow">Variants</span>
|
|
44
|
+
<pz-text variant="h4-bold">All button treatments</pz-text>
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
|
|
48
|
+
<div class="pz-btn-story-grid">
|
|
49
|
+
<article
|
|
50
|
+
v-for="item in btnReferenceItems"
|
|
51
|
+
:key="item.variant"
|
|
52
|
+
class="pz-btn-story-card"
|
|
53
|
+
>
|
|
54
|
+
<p class="pz-btn-story-label">{{ item.variant }}</p>
|
|
55
|
+
<div class="pz-btn-story-row">
|
|
56
|
+
<pz-btn :variant="item.variant">
|
|
57
|
+
<template v-if="item.prefix" #prefix>
|
|
58
|
+
<pz-icon :name="item.prefix" size="16" :label="item.label + ' prefix'" />
|
|
59
|
+
</template>
|
|
60
|
+
|
|
61
|
+
{{ item.label }}
|
|
62
|
+
|
|
63
|
+
<template v-if="item.suffix" #suffix>
|
|
64
|
+
<pz-icon :name="item.suffix" size="16" :label="item.label + ' suffix'" />
|
|
65
|
+
</template>
|
|
66
|
+
</pz-btn>
|
|
67
|
+
|
|
68
|
+
<pz-btn :variant="item.variant" disabled>
|
|
69
|
+
<template v-if="item.prefix" #prefix>
|
|
70
|
+
<pz-icon :name="item.prefix" size="16" :label="item.label + ' prefix disabled'" />
|
|
71
|
+
</template>
|
|
72
|
+
|
|
73
|
+
{{ item.label }}
|
|
74
|
+
|
|
75
|
+
<template v-if="item.suffix" #suffix>
|
|
76
|
+
<pz-icon :name="item.suffix" size="16" :label="item.label + ' suffix disabled'" />
|
|
77
|
+
</template>
|
|
78
|
+
</pz-btn>
|
|
79
|
+
</div>
|
|
80
|
+
</article>
|
|
81
|
+
</div>
|
|
82
|
+
</section>
|
|
83
|
+
</div>
|
|
84
|
+
`})},a={};var r,s,l;a.parameters={...a.parameters,docs:{...(r=a.parameters)==null?void 0:r.docs,source:{originalSource:"{}",...(l=(s=a.parameters)==null?void 0:s.docs)==null?void 0:l.source}}};const w=["Playground"];export{a as Playground,w as __namedExportsOrder,u as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.pz-dom-handler-story{padding:40px;max-width:1000px;margin:0 auto;font-family:var(--pz-font-family, sans-serif);color:var(--pz-color-text-primary, #2d3436)}.pz-dom-handler-story__header{margin-bottom:48px;border-bottom:1px solid #eee;padding-bottom:24px}.pz-dom-handler-story__section{margin-bottom:64px}.pz-dom-handler-story__title{margin-bottom:24px;display:block}.pz-dom-handler-story__methods{display:flex;flex-direction:column;gap:24px}.pz-dom-handler-story__method-card{border:1px solid #e0e0e0;padding:24px;border-radius:12px;background:#fff;box-shadow:0 2px 4px #00000005}.pz-dom-handler-story__method-signature{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;background:#f1f2f6;padding:4px 8px;border-radius:4px;font-size:14px;color:#d63031;display:inline-block;margin-bottom:12px}.pz-dom-handler-story__demo-box{padding:32px;background:#f9f9f9;border-radius:16px;border:1px solid #eee;margin-top:16px}.pz-dom-handler-story__bg-sample{padding:24px;border-radius:8px;margin-top:12px;display:flex;align-items:center;justify-content:center;font-weight:700;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.5)}.pz-dom-handler-story__input-row{display:flex;gap:12px;margin-top:12px}.pz-dom-handler-story__input{flex:1;padding:10px 16px;border:1px solid #dfe6e9;border-radius:8px;font-size:14px;outline:none}.pz-dom-handler-story__input:focus{border-color:#0984e3}.pz-dom-handler-story__button{padding:10px 24px;background:#0984e3;color:#fff;border:none;border-radius:8px;cursor:pointer;font-weight:600;font-size:14px;transition:background .2s}.pz-dom-handler-story__button:hover{background:#074b83}.pz-dom-handler-story__button--copied{background:#00b894}.pz-dom-handler-story__button--copied:hover{background:#008f72}.pz-dom-handler-story__code-block{background:#f1f2f6;color:#2d3436;padding:20px;border-radius:8px;font-size:13px;line-height:1.6;overflow-x:auto;margin-top:12px}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import{i as r,E as m}from"./iframe-XnrfGA2g.js";import{P as y}from"./PzText-LfRr6NF7.js";import"./preload-helper-C1FmrZbK.js";const u=["rgba(0, 0, 0, 0)","transparent","initial","inherit","revert","revert-layer","unset"];class o{static async copyToClipboard(t){if(navigator.clipboard)try{await navigator.clipboard.writeText(t);return}catch{}const e=document.createElement("textarea");e.value=t,e.setAttribute("readonly",""),e.style.position="absolute",e.style.left="-9999px",document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)}static getParentNearestBackground(t){if(!t||typeof window>"u")return"#fff";const e=window.getComputedStyle(t).backgroundColor;return u.includes(e)?o.getParentNearestBackground(t.parentElement):e}}const h=2e3,z=a=>`<script setup lang="ts">
|
|
2
|
+
import { PzDomHandler } from "@prozorro/prozorro-ui";
|
|
3
|
+
|
|
4
|
+
const handleCopy = async (): Promise<void> => {
|
|
5
|
+
await PzDomHandler.copyToClipboard("${a.copyText}");
|
|
6
|
+
};
|
|
7
|
+
<\/script>
|
|
8
|
+
|
|
9
|
+
<template>
|
|
10
|
+
<button type="button" @click="handleCopy">Copy to clipboard</button>
|
|
11
|
+
</template>`,g=[{name:"copyToClipboard",signature:"PzDomHandler.copyToClipboard(str: string): Promise<void>",description:"Copies a string to the system clipboard using the modern Clipboard API with a textarea fallback.",params:"`str`: The text string to be copied.",example:'await PzDomHandler.copyToClipboard("Tender-ID-2024-001");'},{name:"getParentNearestBackground",signature:"PzDomHandler.getParentNearestBackground(el?: HTMLElement): string",description:"Recursively finds the nearest parent with a non-transparent background color.",params:"`el`: Starting element (optional).",example:"const bgColor = PzDomHandler.getParentNearestBackground(elementRef.value);"}],T={title:"Utilities/PzDomHandler",component:o,parameters:{layout:"fullscreen",docs:{description:{component:"Utility class for common DOM operations like clipboard interaction and visual styling discovery."}}},argTypes:{copyText:{control:"text",description:"Text used in the clipboard demo."}}},s={args:{copyText:"CPV-001: Building construction work"},render:a=>({components:{pzText:y},setup(){const t=r(a.copyText),e=r(!1),d=r(null),n=r(""),p=async()=>{await o.copyToClipboard(t.value),e.value=!0,setTimeout(()=>{e.value=!1},h)};return m(()=>{d.value&&(n.value=o.getParentNearestBackground(d.value))}),{textToCopy:t,isCopied:e,handleCopy:p,bgSampleRef:d,detectedBg:n,methodDocs:g}},template:`
|
|
12
|
+
<div class="pz-dom-handler-story">
|
|
13
|
+
<header class="pz-dom-handler-story__header">
|
|
14
|
+
<pzText weight="bold" size="large" tag="h1" class="pz-dom-handler-story__title">PzDomHandler Utility</pzText>
|
|
15
|
+
<pzText color="secondary">
|
|
16
|
+
A utility class providing essential DOM interaction methods used across the Prozorro UI library.
|
|
17
|
+
</pzText>
|
|
18
|
+
</header>
|
|
19
|
+
|
|
20
|
+
<section class="pz-dom-handler-story__section">
|
|
21
|
+
<pzText weight="bold" size="medium" tag="h2" class="pz-dom-handler-story__title">Methods Reference</pzText>
|
|
22
|
+
<div class="pz-dom-handler-story__methods">
|
|
23
|
+
<article v-for="method in methodDocs" :key="method.name" class="pz-dom-handler-story__method-card">
|
|
24
|
+
<code class="pz-dom-handler-story__method-signature">{{ method.signature }}</code>
|
|
25
|
+
<pzText size="small" style="display: block; margin-bottom: 12px;">{{ method.description }}</pzText>
|
|
26
|
+
<pzText size="small" color="secondary" style="display: block; margin-bottom: 8px;">
|
|
27
|
+
<strong>Parameter:</strong> {{ method.params }}
|
|
28
|
+
</pzText>
|
|
29
|
+
<pre class="pz-dom-handler-story__code-block">{{ method.example }}</pre>
|
|
30
|
+
</article>
|
|
31
|
+
</div>
|
|
32
|
+
</section>
|
|
33
|
+
|
|
34
|
+
<section class="pz-dom-handler-story__section">
|
|
35
|
+
<pzText weight="bold" size="medium" tag="h2" class="pz-dom-handler-story__title">Copy to Clipboard Demo</pzText>
|
|
36
|
+
<pzText size="small" color="secondary">
|
|
37
|
+
Test the clipboard functionality by entering text below and clicking the copy button.
|
|
38
|
+
</pzText>
|
|
39
|
+
<div class="pz-dom-handler-story__demo-box">
|
|
40
|
+
<div class="pz-dom-handler-story__input-row">
|
|
41
|
+
<input v-model="textToCopy" type="text" class="pz-dom-handler-story__input" />
|
|
42
|
+
<button
|
|
43
|
+
type="button"
|
|
44
|
+
class="pz-dom-handler-story__button"
|
|
45
|
+
:class="{ 'pz-dom-handler-story__button--copied': isCopied }"
|
|
46
|
+
@click="handleCopy"
|
|
47
|
+
>
|
|
48
|
+
{{ isCopied ? 'Copied!' : 'Copy Text' }}
|
|
49
|
+
</button>
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
</section>
|
|
53
|
+
|
|
54
|
+
<section class="pz-dom-handler-story__section">
|
|
55
|
+
<pzText weight="bold" size="medium" tag="h2" class="pz-dom-handler-story__title">Background Detection Demo</pzText>
|
|
56
|
+
<pzText size="small" color="secondary">
|
|
57
|
+
The helper identifies the nearest opaque background, which is useful for components that need to contrast with their environment.
|
|
58
|
+
</pzText>
|
|
59
|
+
<div class="pz-dom-handler-story__demo-box" style="background: #6c5ce7; border-color: #a29bfe;">
|
|
60
|
+
<div style="background: transparent; padding: 20px;">
|
|
61
|
+
<div ref="bgSampleRef" class="pz-dom-handler-story__bg-sample" style="background: transparent; border: 2px dashed #fff;">
|
|
62
|
+
Detected Ancestor BG: {{ detectedBg }}
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
</div>
|
|
66
|
+
</section>
|
|
67
|
+
</div>
|
|
68
|
+
`}),parameters:{docs:{source:{code:z({copyText:"CPV-001: Building construction work"})}}}};var i,l,c;s.parameters={...s.parameters,docs:{...(i=s.parameters)==null?void 0:i.docs,source:{originalSource:`{
|
|
69
|
+
args: {
|
|
70
|
+
copyText: "CPV-001: Building construction work"
|
|
71
|
+
},
|
|
72
|
+
render: args => ({
|
|
73
|
+
components: {
|
|
74
|
+
pzText: PzText
|
|
75
|
+
},
|
|
76
|
+
setup() {
|
|
77
|
+
const textToCopy = ref(args.copyText);
|
|
78
|
+
const isCopied = ref(false);
|
|
79
|
+
const bgSampleRef = ref<HTMLElement | null>(null);
|
|
80
|
+
const detectedBg = ref("");
|
|
81
|
+
const handleCopy = async (): Promise<void> => {
|
|
82
|
+
await PzDomHandler.copyToClipboard(textToCopy.value);
|
|
83
|
+
isCopied.value = true;
|
|
84
|
+
setTimeout(() => {
|
|
85
|
+
isCopied.value = false;
|
|
86
|
+
}, PZ_DOM_HANDLER_COPY_FEEDBACK_DURATION);
|
|
87
|
+
};
|
|
88
|
+
onMounted(() => {
|
|
89
|
+
if (bgSampleRef.value) {
|
|
90
|
+
detectedBg.value = PzDomHandler.getParentNearestBackground(bgSampleRef.value);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
return {
|
|
94
|
+
textToCopy,
|
|
95
|
+
isCopied,
|
|
96
|
+
handleCopy,
|
|
97
|
+
bgSampleRef,
|
|
98
|
+
detectedBg,
|
|
99
|
+
methodDocs
|
|
100
|
+
};
|
|
101
|
+
},
|
|
102
|
+
template: \`
|
|
103
|
+
<div class="pz-dom-handler-story">
|
|
104
|
+
<header class="pz-dom-handler-story__header">
|
|
105
|
+
<pzText weight="bold" size="large" tag="h1" class="pz-dom-handler-story__title">PzDomHandler Utility</pzText>
|
|
106
|
+
<pzText color="secondary">
|
|
107
|
+
A utility class providing essential DOM interaction methods used across the Prozorro UI library.
|
|
108
|
+
</pzText>
|
|
109
|
+
</header>
|
|
110
|
+
|
|
111
|
+
<section class="pz-dom-handler-story__section">
|
|
112
|
+
<pzText weight="bold" size="medium" tag="h2" class="pz-dom-handler-story__title">Methods Reference</pzText>
|
|
113
|
+
<div class="pz-dom-handler-story__methods">
|
|
114
|
+
<article v-for="method in methodDocs" :key="method.name" class="pz-dom-handler-story__method-card">
|
|
115
|
+
<code class="pz-dom-handler-story__method-signature">{{ method.signature }}</code>
|
|
116
|
+
<pzText size="small" style="display: block; margin-bottom: 12px;">{{ method.description }}</pzText>
|
|
117
|
+
<pzText size="small" color="secondary" style="display: block; margin-bottom: 8px;">
|
|
118
|
+
<strong>Parameter:</strong> {{ method.params }}
|
|
119
|
+
</pzText>
|
|
120
|
+
<pre class="pz-dom-handler-story__code-block">{{ method.example }}</pre>
|
|
121
|
+
</article>
|
|
122
|
+
</div>
|
|
123
|
+
</section>
|
|
124
|
+
|
|
125
|
+
<section class="pz-dom-handler-story__section">
|
|
126
|
+
<pzText weight="bold" size="medium" tag="h2" class="pz-dom-handler-story__title">Copy to Clipboard Demo</pzText>
|
|
127
|
+
<pzText size="small" color="secondary">
|
|
128
|
+
Test the clipboard functionality by entering text below and clicking the copy button.
|
|
129
|
+
</pzText>
|
|
130
|
+
<div class="pz-dom-handler-story__demo-box">
|
|
131
|
+
<div class="pz-dom-handler-story__input-row">
|
|
132
|
+
<input v-model="textToCopy" type="text" class="pz-dom-handler-story__input" />
|
|
133
|
+
<button
|
|
134
|
+
type="button"
|
|
135
|
+
class="pz-dom-handler-story__button"
|
|
136
|
+
:class="{ 'pz-dom-handler-story__button--copied': isCopied }"
|
|
137
|
+
@click="handleCopy"
|
|
138
|
+
>
|
|
139
|
+
{{ isCopied ? 'Copied!' : 'Copy Text' }}
|
|
140
|
+
</button>
|
|
141
|
+
</div>
|
|
142
|
+
</div>
|
|
143
|
+
</section>
|
|
144
|
+
|
|
145
|
+
<section class="pz-dom-handler-story__section">
|
|
146
|
+
<pzText weight="bold" size="medium" tag="h2" class="pz-dom-handler-story__title">Background Detection Demo</pzText>
|
|
147
|
+
<pzText size="small" color="secondary">
|
|
148
|
+
The helper identifies the nearest opaque background, which is useful for components that need to contrast with their environment.
|
|
149
|
+
</pzText>
|
|
150
|
+
<div class="pz-dom-handler-story__demo-box" style="background: #6c5ce7; border-color: #a29bfe;">
|
|
151
|
+
<div style="background: transparent; padding: 20px;">
|
|
152
|
+
<div ref="bgSampleRef" class="pz-dom-handler-story__bg-sample" style="background: transparent; border: 2px dashed #fff;">
|
|
153
|
+
Detected Ancestor BG: {{ detectedBg }}
|
|
154
|
+
</div>
|
|
155
|
+
</div>
|
|
156
|
+
</div>
|
|
157
|
+
</section>
|
|
158
|
+
</div>
|
|
159
|
+
\`
|
|
160
|
+
}),
|
|
161
|
+
parameters: {
|
|
162
|
+
docs: {
|
|
163
|
+
source: {
|
|
164
|
+
code: buildSource({
|
|
165
|
+
copyText: "CPV-001: Building construction work"
|
|
166
|
+
})
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}`,...(c=(l=s.parameters)==null?void 0:l.docs)==null?void 0:c.source}}};const v=["Documentation"];export{s as Documentation,v as __namedExportsOrder,T as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.pz-dropdown-story{display:grid;gap:20px;max-width:760px}.pz-dropdown-story-header{display:flex;justify-content:space-between;gap:16px;align-items:start}.pz-dropdown-story-eyebrow,.pz-dropdown-story-chip{display:inline-flex;align-items:center;width:fit-content;padding:6px 10px;border-radius:999px;background:color-mix(in srgb,var(--pz-color-blue-10) 90%,var(--pz-color-white));color:var(--pz-color-text-link-hover);font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.pz-dropdown-story-preview,.pz-dropdown-story-note{padding:24px;border:1px solid color-mix(in srgb,var(--pz-color-grey-30) 72%,transparent);border-radius:24px;background:linear-gradient(180deg,var(--pz-color-white),color-mix(in srgb,var(--pz-color-grey-20) 84%,var(--pz-color-white)));box-shadow:0 18px 60px color-mix(in srgb,var(--pz-color-black-90) 8%,transparent)}.pz-dropdown-story-menu{display:grid;gap:4px;min-width:184px}.pz-dropdown-story-item{display:inline-flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border:0;border-radius:6px;background:transparent;color:var(--pz-color-text-primary);text-align:left;cursor:pointer;transition:background-color .14s ease,color .14s ease}.pz-dropdown-story-item:hover,.pz-dropdown-story-item:focus-visible{background:var(--pz-color-blue-10);outline:none}.pz-dropdown-story-item-danger{color:var(--pz-color-button-danger)}.pz-dropdown-story-item-danger:hover,.pz-dropdown-story-item-danger:focus-visible{background:var(--pz-color-red-30)}.pz-dropdown-story-note{max-width:66ch}.pz-dropdown[data-v-a2315284]{display:inline-flex;vertical-align:top}
|