@mmlogic/components 0.3.10 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{index-BPj2cBXs.js → index-CAzwGt9u.js} +38 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/mosterdcomponents.cjs.js +2 -2
- package/dist/cjs/mrd-boolean-field_23.cjs.entry.js +1280 -1073
- package/dist/collection/collection-manifest.json +23 -23
- package/dist/collection/components/{mrd-document-container/mrd-document-container.scss → documents/mrd-document-container/mrd-document-container.css} +3 -3
- package/dist/collection/components/{mrd-document-container → documents/mrd-document-container}/mrd-document-container.js +54 -8
- package/dist/collection/components/documents/mrd-document-list/folder-tree.js +109 -0
- package/dist/collection/components/{mrd-document-list/mrd-document-list.scss → documents/mrd-document-list/mrd-document-list.css} +17 -4
- package/dist/collection/components/{mrd-document-list → documents/mrd-document-list}/mrd-document-list.js +166 -237
- package/dist/collection/components/documents/mrd-document-list/tree-view.js +75 -0
- package/dist/collection/components/{mrd-document-view/mrd-document-view.scss → documents/mrd-document-view/mrd-document-view.css} +1 -1
- package/dist/collection/components/{mrd-document-view → documents/mrd-document-view}/mrd-document-view.js +4 -4
- package/dist/collection/components/fields/field-helpers.js +17 -0
- package/dist/collection/components/fields/file-upload-common.js +38 -0
- package/dist/collection/components/{mrd-boolean-field/mrd-boolean-field.scss → fields/mrd-boolean-field/mrd-boolean-field.css} +3 -3
- package/dist/collection/components/{mrd-boolean-field → fields/mrd-boolean-field}/mrd-boolean-field.js +1 -1
- package/dist/collection/components/{mrd-currency-field/mrd-currency-field.scss → fields/mrd-currency-field/mrd-currency-field.css} +11 -9
- package/dist/collection/components/{mrd-currency-field → fields/mrd-currency-field}/mrd-currency-field.js +7 -13
- package/dist/collection/components/{mrd-date-field/mrd-date-field.scss → fields/mrd-date-field/mrd-date-field.css} +8 -10
- package/dist/collection/components/{mrd-date-field → fields/mrd-date-field}/mrd-date-field.js +3 -10
- package/dist/collection/components/{mrd-datetime-field/mrd-datetime-field.scss → fields/mrd-datetime-field/mrd-datetime-field.css} +8 -10
- package/dist/collection/components/{mrd-datetime-field → fields/mrd-datetime-field}/mrd-datetime-field.js +3 -10
- package/dist/collection/components/{mrd-email-field/mrd-email-field.scss → fields/mrd-email-field/mrd-email-field.css} +2 -11
- package/dist/collection/components/{mrd-email-field → fields/mrd-email-field}/mrd-email-field.js +6 -13
- package/dist/collection/components/{mrd-file-field/mrd-file-field.scss → fields/mrd-file-field/mrd-file-field.css} +19 -24
- package/dist/collection/components/{mrd-file-field → fields/mrd-file-field}/mrd-file-field.js +13 -24
- package/dist/collection/components/{mrd-hyperlink-field/mrd-hyperlink-field.scss → fields/mrd-hyperlink-field/mrd-hyperlink-field.css} +7 -16
- package/dist/collection/components/{mrd-hyperlink-field → fields/mrd-hyperlink-field}/mrd-hyperlink-field.js +9 -15
- package/dist/collection/components/{mrd-image-field/mrd-image-field.scss → fields/mrd-image-field/mrd-image-field.css} +15 -24
- package/dist/collection/components/{mrd-image-field → fields/mrd-image-field}/mrd-image-field.js +13 -28
- package/dist/collection/components/{mrd-list-field/mrd-list-field.scss → fields/mrd-list-field/mrd-list-field.css} +18 -21
- package/dist/collection/components/{mrd-list-field → fields/mrd-list-field}/mrd-list-field.js +10 -25
- package/dist/collection/components/{mrd-longtext-field/mrd-longtext-field.scss → fields/mrd-longtext-field/mrd-longtext-field.css} +21 -18
- package/dist/collection/components/{mrd-longtext-field → fields/mrd-longtext-field}/mrd-longtext-field.js +3 -10
- package/dist/collection/components/{mrd-number-field/mrd-number-field.scss → fields/mrd-number-field/mrd-number-field.css} +9 -10
- package/dist/collection/components/{mrd-number-field → fields/mrd-number-field}/mrd-number-field.js +7 -6
- package/dist/collection/components/{mrd-relation-field/mrd-relation-field.scss → fields/mrd-relation-field/mrd-relation-field.css} +61 -59
- package/dist/collection/components/{mrd-relation-field → fields/mrd-relation-field}/mrd-relation-field.js +16 -26
- package/dist/collection/components/{mrd-secret-field/mrd-secret-field.scss → fields/mrd-secret-field/mrd-secret-field.css} +7 -10
- package/dist/collection/components/{mrd-secret-field → fields/mrd-secret-field}/mrd-secret-field.js +4 -11
- package/dist/collection/components/{mrd-text-field/mrd-text-field.scss → fields/mrd-text-field/mrd-text-field.css} +2 -11
- package/dist/collection/components/{mrd-text-field → fields/mrd-text-field}/mrd-text-field.js +3 -10
- package/dist/collection/components/{mrd-textarea-field/mrd-textarea-field.scss → fields/mrd-textarea-field/mrd-textarea-field.css} +7 -10
- package/dist/collection/components/{mrd-textarea-field → fields/mrd-textarea-field}/mrd-textarea-field.js +3 -9
- package/dist/collection/components/{mrd-time-field/mrd-time-field.scss → fields/mrd-time-field/mrd-time-field.css} +8 -10
- package/dist/collection/components/{mrd-time-field → fields/mrd-time-field}/mrd-time-field.js +3 -10
- package/dist/collection/components/{mrd-field/mrd-field.scss → form/mrd-field/mrd-field.css} +1 -1
- package/dist/collection/components/{mrd-field → form/mrd-field}/mrd-field.js +3 -3
- package/dist/collection/components/{mrd-form/mrd-form.scss → form/mrd-form/mrd-form.css} +1 -1
- package/dist/collection/components/{mrd-form → form/mrd-form}/mrd-form.js +5 -5
- package/dist/collection/components/layout/mrd-layout-section/field-value.js +111 -0
- package/dist/collection/components/layout/mrd-layout-section/layout-helpers.js +29 -0
- package/dist/collection/components/{mrd-layout-section/mrd-layout-section.scss → layout/mrd-layout-section/mrd-layout-section.css} +4 -4
- package/dist/collection/components/{mrd-layout-section → layout/mrd-layout-section}/mrd-layout-section.js +58 -133
- package/dist/collection/components/{mrd-table/mrd-table.scss → table/mrd-table/mrd-table.css} +11 -13
- package/dist/collection/components/{mrd-table → table/mrd-table}/mrd-table.js +111 -439
- package/dist/collection/components/table/mrd-table/table-filter-popup.js +85 -0
- package/dist/collection/components/table/mrd-table/table-parts.js +110 -0
- package/dist/collection/components/table/mrd-table/table-query.js +178 -0
- package/dist/collection/components/table/mrd-table/virtual-scroll.js +49 -0
- package/dist/collection/dev/app.js +19 -18
- package/dist/collection/dev/example-data.js +58 -43
- package/dist/collection/utils/i18n.js +10 -0
- package/dist/collection/utils/query-params.js +43 -0
- package/dist/components/field-helpers.js +1 -0
- package/dist/components/file-upload-common.js +1 -0
- package/dist/components/i18n.js +1 -1
- package/dist/components/mrd-boolean-field2.js +1 -1
- package/dist/components/mrd-currency-field2.js +1 -1
- package/dist/components/mrd-date-field2.js +1 -1
- package/dist/components/mrd-datetime-field2.js +1 -1
- package/dist/components/mrd-document-container2.js +1 -1
- package/dist/components/mrd-document-list2.js +1 -1
- package/dist/components/mrd-document-view2.js +1 -1
- package/dist/components/mrd-email-field2.js +1 -1
- package/dist/components/mrd-file-field2.js +1 -1
- package/dist/components/mrd-form.js +1 -1
- package/dist/components/mrd-hyperlink-field2.js +1 -1
- package/dist/components/mrd-image-field2.js +1 -1
- package/dist/components/mrd-layout-section.js +1 -1
- package/dist/components/mrd-list-field2.js +1 -1
- package/dist/components/mrd-longtext-field2.js +1 -1
- package/dist/components/mrd-number-field2.js +1 -1
- package/dist/components/mrd-relation-field2.js +1 -1
- package/dist/components/mrd-secret-field2.js +1 -1
- package/dist/components/mrd-table2.js +1 -1
- package/dist/components/mrd-text-field2.js +1 -1
- package/dist/components/mrd-textarea-field2.js +1 -1
- package/dist/components/mrd-time-field2.js +1 -1
- package/dist/components/query-params.js +1 -0
- package/dist/esm/{index-_tsCCkAi.js → index-DiSEJMA8.js} +38 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/mosterdcomponents.js +3 -3
- package/dist/esm/mrd-boolean-field_23.entry.js +1280 -1073
- package/dist/mosterdcomponents/mosterdcomponents.css +1 -1
- package/dist/mosterdcomponents/mosterdcomponents.esm.js +1 -1
- package/dist/mosterdcomponents/p-9b3c0917.entry.js +1 -0
- package/dist/mosterdcomponents/p-DiSEJMA8.js +2 -0
- package/dist/types/components/{mrd-document-container → documents/mrd-document-container}/mrd-document-container.d.ts +7 -2
- package/dist/types/components/documents/mrd-document-list/folder-tree.d.ts +66 -0
- package/dist/types/components/{mrd-document-list → documents/mrd-document-list}/mrd-document-list.d.ts +28 -38
- package/dist/types/components/documents/mrd-document-list/tree-view.d.ts +32 -0
- package/dist/types/components/{mrd-document-view → documents/mrd-document-view}/mrd-document-view.d.ts +2 -2
- package/dist/types/components/fields/field-helpers.d.ts +18 -0
- package/dist/types/components/fields/file-upload-common.d.ts +18 -0
- package/dist/types/components/{mrd-boolean-field → fields/mrd-boolean-field}/mrd-boolean-field.d.ts +1 -1
- package/dist/types/components/{mrd-currency-field → fields/mrd-currency-field}/mrd-currency-field.d.ts +2 -2
- package/dist/types/components/{mrd-date-field → fields/mrd-date-field}/mrd-date-field.d.ts +1 -1
- package/dist/types/components/{mrd-datetime-field → fields/mrd-datetime-field}/mrd-datetime-field.d.ts +1 -1
- package/dist/types/components/{mrd-email-field → fields/mrd-email-field}/mrd-email-field.d.ts +1 -1
- package/dist/types/components/{mrd-file-field → fields/mrd-file-field}/mrd-file-field.d.ts +2 -4
- package/dist/types/components/{mrd-hyperlink-field → fields/mrd-hyperlink-field}/mrd-hyperlink-field.d.ts +2 -2
- package/dist/types/components/{mrd-image-field → fields/mrd-image-field}/mrd-image-field.d.ts +2 -4
- package/dist/types/components/{mrd-list-field → fields/mrd-list-field}/mrd-list-field.d.ts +2 -2
- package/dist/types/components/{mrd-longtext-field → fields/mrd-longtext-field}/mrd-longtext-field.d.ts +1 -1
- package/dist/types/components/{mrd-number-field → fields/mrd-number-field}/mrd-number-field.d.ts +2 -2
- package/dist/types/components/{mrd-relation-field → fields/mrd-relation-field}/mrd-relation-field.d.ts +2 -2
- package/dist/types/components/{mrd-secret-field → fields/mrd-secret-field}/mrd-secret-field.d.ts +1 -1
- package/dist/types/components/{mrd-text-field → fields/mrd-text-field}/mrd-text-field.d.ts +1 -1
- package/dist/types/components/{mrd-textarea-field → fields/mrd-textarea-field}/mrd-textarea-field.d.ts +1 -1
- package/dist/types/components/{mrd-time-field → fields/mrd-time-field}/mrd-time-field.d.ts +1 -1
- package/dist/types/components/{mrd-field → form/mrd-field}/mrd-field.d.ts +2 -2
- package/dist/types/components/{mrd-form → form/mrd-form}/mrd-form.d.ts +2 -2
- package/dist/types/components/layout/mrd-layout-section/field-value.d.ts +22 -0
- package/dist/types/components/layout/mrd-layout-section/layout-helpers.d.ts +8 -0
- package/dist/types/components/{mrd-layout-section → layout/mrd-layout-section}/mrd-layout-section.d.ts +4 -8
- package/dist/types/components/{mrd-table → table/mrd-table}/mrd-table.d.ts +6 -13
- package/dist/types/components/table/mrd-table/table-filter-popup.d.ts +35 -0
- package/dist/types/components/table/mrd-table/table-parts.d.ts +61 -0
- package/dist/types/components/table/mrd-table/table-query.d.ts +50 -0
- package/dist/types/components/table/mrd-table/virtual-scroll.d.ts +26 -0
- package/dist/types/components.d.ts +36 -5
- package/dist/types/types/client-layout.d.ts +5 -0
- package/dist/types/utils/query-params.d.ts +14 -0
- package/package.json +7 -2
- package/dist/components/validation.js +0 -1
- package/dist/mosterdcomponents/cell-renderer-B-AJDBcj.js.map +0 -1
- package/dist/mosterdcomponents/client-layout-ChqRA3AF.js.map +0 -1
- package/dist/mosterdcomponents/format-BAfsQfy1.js.map +0 -1
- package/dist/mosterdcomponents/i18n-s1XrKcD2.js.map +0 -1
- package/dist/mosterdcomponents/index-DkY-NQj0.js.map +0 -1
- package/dist/mosterdcomponents/index-DwF_Sp__.js.map +0 -1
- package/dist/mosterdcomponents/index.esm.js.map +0 -1
- package/dist/mosterdcomponents/mosterdcomponents.esm.js.map +0 -1
- package/dist/mosterdcomponents/p-69452249.entry.js +0 -1
- package/dist/mosterdcomponents/p-_tsCCkAi.js +0 -2
- package/dist/mosterdcomponents/quill-C9pgw_k-.js.map +0 -1
- package/dist/mosterdcomponents/validation-Br9k2Ztw.js.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function t(t,e,n){const o="undefined"!=typeof HTMLElement?HTMLElement.prototype:null;for(;t&&t!==o;){const o=Object.getOwnPropertyDescriptor(t,e);if(o&&(!n||o.get))return o;t=Object.getPrototypeOf(t)}}var e=(e,n)=>{var o;Object.entries(null!=(o=n.o.t)?o:{}).map((([o,[l]])=>{if(31&l||32&l){const l=e[o],i=t(Object.getPrototypeOf(e),o,!0)||Object.getOwnPropertyDescriptor(e,o);i&&Object.defineProperty(e,o,{get(){return i.get.call(this)},set(t){i.set.call(this,t)},configurable:!0,enumerable:!0}),n.l.has(o)?e[o]=n.l.get(o):void 0!==l&&(e[o]=l)}}))},n=t=>{if(t.__stencil__getHostRef)return t.__stencil__getHostRef()},o=(t,n)=>{n&&(t.__stencil__getHostRef=()=>n,n.i=t,512&n.o.u&&e(t,n))},l=(t,e)=>e in t,i=(t,e)=>(0,console.error)(t,e),s=new Map,r=new Map,c="http://www.w3.org/1999/xlink",u="undefined"!=typeof window?window:{},a={u:0,p:"",jmp:t=>t(),raf:t=>requestAnimationFrame(t),ael:(t,e,n,o)=>t.addEventListener(e,n,o),rel:(t,e,n,o)=>t.removeEventListener(e,n,o),ce:(t,e)=>new CustomEvent(t,e)},f=t=>Promise.resolve(t),d=(()=>{try{return!!u.document.adoptedStyleSheets&&(new CSSStyleSheet,"function"==typeof(new CSSStyleSheet).replaceSync)}catch(t){}return!1})(),p=!!d&&(()=>!!u.document&&Object.getOwnPropertyDescriptor(u.document.adoptedStyleSheets,"length").writable)(),h=!1,m=[],v=[],y=(t,e)=>n=>{t.push(n),h||(h=!0,e&&4&a.u?$(w):a.raf(w))},b=t=>{for(let e=0;e<t.length;e++)try{t[e](performance.now())}catch(t){i(t)}t.length=0},w=()=>{b(m),b(v),(h=m.length>0)&&a.raf(w)},$=t=>f().then(t),g=y(v,!0);function j(t){var e,n,o;return null!=(o=null==(n=null==(e=t.head)?void 0:e.querySelector('meta[name="csp-nonce"]'))?void 0:n.getAttribute("content"))?o:void 0}var O,S,k=new WeakMap,E=t=>"sc-"+t.h,M=t=>"object"==(t=typeof t)||"function"===t,C=(t,e,...n)=>{let o=null,l=null,i=!1,s=!1;const r=[],c=e=>{for(let n=0;n<e.length;n++)o=e[n],Array.isArray(o)?c(o):null!=o&&"boolean"!=typeof o&&((i="function"!=typeof t&&!M(o))&&(o+=""),i&&s?r[r.length-1].m+=o:r.push(i?x(null,o):o),s=i)};if(c(n),e){e.key&&(l=e.key);{const t=e.className||e.class;t&&(e.class="object"!=typeof t?t:Object.keys(t).filter((e=>t[e])).join(" "))}}if("function"==typeof t)return t(null===e?{}:e,r,N);const u=x(t,null);return u.v=e,r.length>0&&(u.$=r),u.j=l,u},x=(t,e)=>({u:0,O:t,m:null!=e?e:null,S:null,$:null,v:null,j:null}),L={},N={forEach:(t,e)=>t.map(P).forEach(e),map:(t,e)=>t.map(P).map(e).map(R)},P=t=>({vattrs:t.v,vchildren:t.$,vkey:t.j,vname:t.k,vtag:t.O,vtext:t.m}),R=t=>{if("function"==typeof t.vtag){const e={...t.vattrs};return t.vkey&&(e.key=t.vkey),t.vname&&(e.name=t.vname),C(t.vtag,e,...t.vchildren||[])}const e=x(t.vtag,t.vtext);return e.v=t.vattrs,e.$=t.vchildren,e.j=t.vkey,e.k=t.vname,e},D=(t,e)=>null==t||M(t)?t:4&e?"false"!==t&&(""===t||!!t):2&e?"string"==typeof t?parseFloat(t):"number"==typeof t?t:NaN:1&e?t+"":t,H=t=>{var e;return null==(e=n(t))?void 0:e.$hostElement$},T=(t,e)=>{const n=H(t);return{emit:t=>A(n,e,{bubbles:!0,composed:!0,cancelable:!0,detail:t})}},A=(t,e,n)=>{const o=a.ce(e,n);return t.dispatchEvent(o),o},U=(t,e,o,i,s,r)=>{if(o===i)return;let f=l(t,e),d=e.toLowerCase();if("class"===e){const e=t.classList,n=z(o);let l=z(i);e.remove(...n.filter((t=>t&&!l.includes(t)))),e.add(...l.filter((t=>t&&!n.includes(t))))}else if("style"===e){for(const e in o)i&&null!=i[e]||(e.includes("-")?t.style.removeProperty(e):t.style[e]="");for(const e in i)o&&i[e]===o[e]||(e.includes("-")?t.style.setProperty(e,i[e]):t.style[e]=i[e])}else if("key"===e);else if("ref"===e)i&&tt(i,t);else if(f||"o"!==e[0]||"n"!==e[1]){if("a"===e[0]&&e.startsWith("attr:")){const o=e.slice(5);let l;{const e=n(t);if(e&&e.o&&e.o.t){const t=e.o.t[o];t&&t[1]&&(l=t[1])}}return l||(l=o.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()),void(null==i||!1===i?!1===i&&""!==t.getAttribute(l)||t.removeAttribute(l):t.setAttribute(l,!0===i?"":i))}if("p"===e[0]&&e.startsWith("prop:")){const n=e.slice(5);try{t[n]=i}catch(t){}return}{const n=M(i);if((f||n&&null!==i)&&!s)try{if(t.tagName.includes("-"))t[e]!==i&&(t[e]=i);else{const n=null==i?"":i;"list"===e?f=!1:null!=o&&t[e]===n||("function"==typeof t.__lookupSetter__(e)?t[e]=n:t.setAttribute(e,n))}}catch(t){}let l=!1;d!==(d=d.replace(/^xlink\:?/,""))&&(e=d,l=!0),null==i||!1===i?!1===i&&""!==t.getAttribute(e)||(l?t.removeAttributeNS(c,e):t.removeAttribute(e)):(!f||4&r||s)&&!n&&1===t.nodeType&&(i=!0===i?"":i,l?t.setAttributeNS(c,e,i):t.setAttribute(e,i))}}else if(e="-"===e[2]?e.slice(3):l(u,d)?d.slice(2):d[2]+e.slice(3),o||i){const n=e.endsWith(F);e=e.replace(V,""),o&&a.rel(t,e,o,n),i&&a.ael(t,e,i,n)}},W=/\s/,z=t=>("object"==typeof t&&t&&"baseVal"in t&&(t=t.baseVal),t&&"string"==typeof t?t.split(W):[]),F="Capture",V=RegExp(F+"$"),q=(t,e,n)=>{const o=11===e.S.nodeType&&e.S.host?e.S.host:e.S,l=t&&t.v||{},i=e.v||{};for(const t of G(Object.keys(l)))t in i||U(o,t,l[t],void 0,n,e.u);for(const t of G(Object.keys(i)))U(o,t,l[t],i[t],n,e.u)};function G(t){return t.includes("ref")?[...t.filter((t=>"ref"!==t)),"ref"]:t}var Y=!1,Z=[],_=[],B=(t,e,n)=>{const o=e.$[n];let l,i,s=0;if(null!=o.m)l=o.S=u.document.createTextNode(o.m);else{if(Y||(Y="svg"===o.O),!u.document)throw Error("You are trying to render a Stencil component in an environment that doesn't support the DOM.");if(l=o.S=u.document.createElementNS(Y?"http://www.w3.org/2000/svg":"http://www.w3.org/1999/xhtml",o.O),Y&&"foreignObject"===o.O&&(Y=!1),q(null,o,Y),null!=O&&void 0!==O&&l["s-si"]!==O&&l.classList.add(l["s-si"]=O),o.$){const e="template"===o.O?l.content:l;for(s=0;s<o.$.length;++s)i=B(t,o,s),i&&e.appendChild(i)}"svg"===o.O?Y=!1:"foreignObject"===l.tagName&&(Y=!0)}return l["s-hn"]=S,l},I=(t,e,n,o,l,i)=>{let s,r=t;for("template"===n.O&&(r=r.content);l<=i;++l)o[l]&&(s=B(null,n,l),s&&(o[l].S=s,et(r,s,e)))},J=(t,e,n)=>{for(let o=e;o<=n;++o){const e=t[o];if(e){const t=e.S;X(e),t&&t.remove()}}},K=(t,e,n=!1)=>t.O===e.O&&(n?(n&&!t.j&&e.j&&(t.j=e.j),!0):t.j===e.j),Q=(t,e,n=!1)=>{const o=e.S=t.S,l=t.$,i=e.$,s=e.O,r=e.m;null==r?(q(t,e,Y="svg"===s||"foreignObject"!==s&&Y),null!==l&&null!==i?((t,e,n,o,l=!1)=>{let i,s,r=0,c=0,u=0,a=0,f=e.length-1,d=e[0],p=e[f],h=o.length-1,m=o[0],v=o[h];const y="template"===n.O?t.content:t;for(;r<=f&&c<=h;)if(null==d)d=e[++r];else if(null==p)p=e[--f];else if(null==m)m=o[++c];else if(null==v)v=o[--h];else if(K(d,m,l))Q(d,m,l),d=e[++r],m=o[++c];else if(K(p,v,l))Q(p,v,l),p=e[--f],v=o[--h];else if(K(d,v,l))Q(d,v,l),et(y,d.S,p.S.nextSibling),d=e[++r],v=o[--h];else if(K(p,m,l))Q(p,m,l),et(y,p.S,d.S),p=e[--f],m=o[++c];else{for(u=-1,a=r;a<=f;++a)if(e[a]&&null!==e[a].j&&e[a].j===m.j){u=a;break}u>=0?(s=e[u],s.O!==m.O?i=B(e&&e[c],n,u):(Q(s,m,l),e[u]=void 0,i=s.S),m=o[++c]):(i=B(e&&e[c],n,c),m=o[++c]),i&&et(d.S.parentNode,i,d.S)}r>f?I(t,null==o[h+1]?null:o[h+1].S,n,o,c,h):c>h&&J(e,r,f)})(o,l,e,i,n):null!==i?(null!==t.m&&(o.textContent=""),I(o,null,e,i,0,i.length-1)):!n&&null!==l&&J(l,0,l.length-1),Y&&"svg"===s&&(Y=!1)):t.m!==r&&(o.data=r)},X=t=>{t.v&&t.v.ref&&Z.push((()=>t.v.ref(null))),t.$&&t.$.map(X)},tt=(t,e)=>{_.push((()=>t(e)))},et=(t,e,n)=>t.__insertBefore?t.__insertBefore(e,n):null==t?void 0:t.insertBefore(e,n),nt=(t,e)=>{if(e&&!t.M&&e["s-p"]){const n=e["s-p"].push(new Promise((o=>t.M=()=>{e["s-p"].splice(n-1,1),o()})))}},ot=(t,e)=>{if(t.u|=16,4&t.u)return void(t.u|=512);nt(t,t.C);const n=()=>lt(t,e);if(!e)return g(n);queueMicrotask((()=>{n()}))},lt=(t,e)=>{const n=t.$hostElement$,o=t.i;if(!o)throw Error(`Can't render component <${n.tagName.toLowerCase()} /> with invalid Stencil runtime! Make sure this imported component is compiled with a \`externalRuntime: true\` flag. For more information, please refer to https://stenciljs.com/docs/custom-elements#externalruntime`);let l;return e?(t.L.length&&t.L.forEach((t=>t(n))),l=ft(o,"componentWillLoad",void 0,n)):l=ft(o,"componentWillUpdate",void 0,n),l=it(l,(()=>ft(o,"componentWillRender",void 0,n))),it(l,(()=>rt(t,o,e)))},it=(t,e)=>st(t)?t.then(e).catch((t=>{console.error(t),e()})):e(),st=t=>t instanceof Promise||t&&t.then&&"function"==typeof t.then,rt=async(t,e,n)=>{var o;const l=t.$hostElement$,i=l["s-rc"];n&&(t=>{const e=t.o,n=t.$hostElement$,o=e.u,l=((t,e)=>{var n,o,l;const i=E(e),s=r.get(i);if(!u.document)return i;if(t=11===t.nodeType?t:u.document,s)if("string"==typeof s){let l,r=k.get(t=t.head||t);if(r||k.set(t,r=new Set),!r.has(i)){l=u.document.createElement("style"),l.textContent=s;const c=null!=(n=a.N)?n:j(u.document);if(null!=c&&l.setAttribute("nonce",c),!(1&e.u))if("HEAD"===t.nodeName){const e=t.querySelectorAll("link[rel=preconnect]"),n=e.length>0?e[e.length-1].nextSibling:t.querySelector("style");t.insertBefore(l,(null==n?void 0:n.parentNode)===t?n:null)}else if("host"in t)if(d){const e=new(null!=(o=t.defaultView)?o:t.ownerDocument.defaultView).CSSStyleSheet;e.replaceSync(s),p?t.adoptedStyleSheets.unshift(e):t.adoptedStyleSheets=[e,...t.adoptedStyleSheets]}else{const e=t.querySelector("style");e?e.textContent=s+e.textContent:t.prepend(l)}else t.append(l);1&e.u&&t.insertBefore(l,null),4&e.u&&(l.textContent+="slot-fb{display:contents}slot-fb[hidden]{display:none}"),r&&r.add(i)}}else{let e=k.get(t);if(e||k.set(t,e=new Set),!e.has(i)){const n=null!=(l=t.defaultView)?l:t.ownerDocument.defaultView;let o;if(s.constructor===n.CSSStyleSheet)o=s;else{o=new n.CSSStyleSheet;for(let t=0;t<s.cssRules.length;t++)o.insertRule(s.cssRules[t].cssText,t)}p?t.adoptedStyleSheets.push(o):t.adoptedStyleSheets=[...t.adoptedStyleSheets,o],e.add(i)}}return i})(n.getRootNode(),e);10&o&&(n["s-sc"]=l,n.classList.add(l+"-h"))})(t);ct(t,e,l,n),i&&(i.map((t=>t())),l["s-rc"]=void 0);{const e=null!=(o=l["s-p"])?o:[],n=()=>ut(t);0===e.length?n():(Promise.all(e).then(n).catch(n),t.u|=4,e.length=0)}},ct=(t,e,n,o)=>{try{e=e.render(),t.u&=-17,t.u|=2,((t,e,n=!1)=>{const o=t.$hostElement$,l=t.P||x(null,null),i=(t=>t&&t.O===L)(e)?e:C(null,null,e);if(S=o.tagName,n&&i.v)for(const t of Object.keys(i.v))o.hasAttribute(t)&&!["key","ref","style","class"].includes(t)&&(i.v[t]=o[t]);i.O=null,i.u|=4,t.P=i,i.S=l.S=o,O=o["s-sc"],Q(l,i,n),Z.forEach((t=>t())),Z.length=0,_.forEach((t=>t())),_.length=0})(t,e,o)}catch(e){i(e,t.$hostElement$)}return null},ut=t=>{const e=t.$hostElement$,n=t.i,o=t.C;ft(n,"componentDidRender",void 0,e),64&t.u?ft(n,"componentDidUpdate",void 0,e):(t.u|=64,dt(e),ft(n,"componentDidLoad",void 0,e),t.R(e),o||at()),t.D(e),t.M&&(t.M(),t.M=void 0),512&t.u&&$((()=>ot(t,!1))),t.u&=-517},at=()=>{$((()=>A(u,"appload",{detail:{namespace:"mosterdcomponents"}})))},ft=(t,e,n,o)=>{if(t&&t[e])try{return t[e](n)}catch(t){i(t,o)}},dt=t=>t.classList.add("hydrated"),pt=(t,e,o,l)=>{const s=n(t);if(!s)return;if(!s)throw Error(`Couldn't find host element for "${l.h}" as it is unknown to this Stencil runtime. This usually happens when integrating a 3rd party Stencil component with another Stencil component or application. Please reach out to the maintainers of the 3rd party Stencil component or report this on the Stencil Discord server (https://chat.stenciljs.com) or comment on this similar [GitHub issue](https://github.com/stenciljs/core/issues/5457).`);const r=s.$hostElement$,c=s.l.get(e),u=s.u,a=s.i;if(o=D(o,l.t[e][0]),!(8&u&&void 0!==c||o===c||Number.isNaN(c)&&Number.isNaN(o))){if(s.l.set(e,o),l.H){const t=l.H[e];t&&t.map((t=>{try{const[[n,l]]=Object.entries(t);(128&u||1&l)&&(a?a[n](o,c,e):s.L.push((()=>{s.i[n](o,c,e)})))}catch(t){i(t,r)}}))}if(2&u){if(a.componentShouldUpdate&&!1===a.componentShouldUpdate(o,c,e)&&!(16&u))return;16&u||ot(s,!1)}}},ht=(e,o,l)=>{var i,s;const r=e.prototype;{e.watchers&&!o.H&&(o.H=e.watchers),e.deserializers&&!o.T&&(o.T=e.deserializers),e.serializers&&!o.A&&(o.A=e.serializers);const c=Object.entries(null!=(i=o.t)?i:{});if(c.map((([e,[i]])=>{if(31&i||2&l&&32&i){const{get:s,set:c}=t(r,e)||{};s&&(o.t[e][0]|=2048),c&&(o.t[e][0]|=4096),(1&l||!s)&&Object.defineProperty(r,e,{get(){{if(!(2048&o.t[e][0]))return((t,e)=>n(this).l.get(e))(0,e);const t=n(this),l=t?t.i:r;if(!l)return;return l[e]}},configurable:!0,enumerable:!0}),Object.defineProperty(r,e,{set(t){const s=n(this);if(s){if(c)return void 0===(32&i?this[e]:s.$hostElement$[e])&&s.l.get(e)&&(t=s.l.get(e)),c.call(this,D(t,i)),void pt(this,e,t=32&i?this[e]:s.$hostElement$[e],o);{if(!(1&l&&4096&o.t[e][0]))return pt(this,e,t,o),void(1&l&&!s.i&&s.L.push((()=>{4096&o.t[e][0]&&s.i[e]!==s.l.get(e)&&(s.i[e]=t)})));const n=()=>{const n=s.i[e];!s.l.get(e)&&n&&s.l.set(e,n),s.i[e]=D(t,i),pt(this,e,s.i[e],o)};s.i?n():s.L.push((()=>{n()}))}}}})}else 1&l&&64&i&&Object.defineProperty(r,e,{value(...t){var o;const l=n(this);return null==(o=null==l?void 0:l.U)?void 0:o.then((()=>{var n;return null==(n=l.i)?void 0:n[e](...t)}))}})})),1&l){const t=new Map;r.attributeChangedCallback=function(e,l,i){a.jmp((()=>{var s;const u=t.get(e),a=n(this);if(this.hasOwnProperty(u)&&(i=this[u],delete this[u]),r.hasOwnProperty(u)&&"number"==typeof this[u]&&this[u]==i)return;if(null==u){const t=null==a?void 0:a.u;if(a&&t&&!(8&t)&&i!==l){const n=a.i,r=null==(s=o.H)?void 0:s[e];null==r||r.forEach((o=>{const[[s,r]]=Object.entries(o);null!=n[s]&&(128&t||1&r)&&n[s].call(n,i,l,e)}))}return}const f=c.find((([t])=>t===u));f&&4&f[1][0]&&(i=null!==i&&"false"!==i);const d=Object.getOwnPropertyDescriptor(r,u);i==this[u]||d.get&&!d.set||(this[u]=i)}))},e.observedAttributes=Array.from(new Set([...Object.keys(null!=(s=o.H)?s:{}),...c.filter((([t,e])=>31&e[0])).map((([e,n])=>{const o=n[1]||e;return t.set(o,e),o}))]))}}return e},mt=(t,e)=>{ft(t,"connectedCallback",void 0,e)},vt=(t,e)=>{ft(t,"disconnectedCallback",void 0,e||t)},yt=(t,e={})=>{var o;if(!u.document)return void console.warn("Stencil: No document found. Skipping bootstrapping lazy components.");const l=[],c=e.exclude||[],f=u.customElements,p=u.document.head,h=p.querySelector("meta[charset]"),m=u.document.createElement("style"),v=[];let y,b=!0;if(Object.assign(a,e),a.p=new URL(e.resourcesUrl||"./",u.document.baseURI).href,t.map((t=>{t[1].map((e=>{var o,u,p;const h={u:e[0],h:e[1],t:e[2],W:e[3]};h.t=e[2],h.H=null!=(o=e[4])?o:{},h.A=null!=(u=e[5])?u:{},h.T=null!=(p=e[6])?p:{};const m=h.h,w=class extends HTMLElement{"s-p";"s-rc";hasRegisteredEventListeners=!1;constructor(t){super(t),((t,e)=>{const n={u:0,$hostElement$:t,o:e,l:new Map,F:new Map};n.U=new Promise((t=>n.D=t)),n.V=new Promise((t=>n.R=t)),t["s-p"]=[],t["s-rc"]=[],n.L=[];const o=n;t.__stencil__getHostRef=()=>o})(t=this,h)}connectedCallback(){n(this)&&(this.hasRegisteredEventListeners||(this.hasRegisteredEventListeners=!0),y&&(clearTimeout(y),y=null),b?v.push(this):a.jmp((()=>(t=>{if(!(1&a.u)){const e=n(t);if(!e)return;const o=e.o,l=()=>{};if(1&e.u)(null==e?void 0:e.i)?mt(e.i,t):(null==e?void 0:e.V)&&e.V.then((()=>mt(e.i,t)));else{e.u|=1;{let n=t;for(;n=n.parentNode||n.host;)if(n["s-p"]){nt(e,e.C=n);break}}o.t&&Object.entries(o.t).map((([e,[n]])=>{if(31&n&&Object.prototype.hasOwnProperty.call(t,e)){const n=t[e];delete t[e],t[e]=n}})),(async(t,e,n)=>{let o;try{if(!(32&e.u)){if(e.u|=32,n.q){const l=((t,e)=>{const n=t.h.replace(/-/g,"_"),o=t.q;if(!o)return;const l=s.get(o);return l?l[n]:import(`./${o}.entry.js`).then((t=>(s.set(o,t),t[n])),(t=>{i(t,e.$hostElement$)}))
|
|
2
|
+
/*!__STENCIL_STATIC_IMPORT_SWITCH__*/})(n,e);if(l&&"then"in l){const t=()=>{};o=await l,t()}else o=l;if(!o)throw Error(`Constructor for "${n.h}#${e.G}" was not found`);o.isProxied||(n.H=o.watchers,n.A=o.serializers,n.T=o.deserializers,ht(o,n,2),o.isProxied=!0);const r=()=>{};e.u|=8;try{new o(e)}catch(e){i(e,t)}e.u&=-9,e.u|=128,r(),mt(e.i,t)}else o=t.constructor,customElements.whenDefined(t.localName).then((()=>e.u|=128));if(o&&o.style){let t;"string"==typeof o.style&&(t=o.style);const e=E(n);if(!r.has(e)){const o=()=>{};((t,e,n)=>{let o=r.get(t);d&&n?(o=o||new CSSStyleSheet,"string"==typeof o?o=e:o.replaceSync(e)):o=e,r.set(t,o)})(e,t,!!(1&n.u)),o()}}}const l=e.C,c=()=>ot(e,!0);l&&l["s-rc"]?l["s-rc"].push(c):c()}catch(n){i(n,t),e.M&&(e.M(),e.M=void 0),e.R&&e.R(t)}})(t,e,o)}l()}})(this))))}disconnectedCallback(){a.jmp((()=>(async t=>{if(!(1&a.u)){const e=n(t);(null==e?void 0:e.i)?vt(e.i,t):(null==e?void 0:e.V)&&e.V.then((()=>vt(e.i,t)))}k.has(t)&&k.delete(t),t.shadowRoot&&k.has(t.shadowRoot)&&k.delete(t.shadowRoot)})(this))),a.raf((()=>{var t;const e=n(this);if(!e)return;const o=v.findIndex((t=>t===this));o>-1&&v.splice(o,1),(null==(t=null==e?void 0:e.P)?void 0:t.S)instanceof Node&&!e.P.S.isConnected&&delete e.P.S}))}componentOnReady(){var t;return null==(t=n(this))?void 0:t.V}};h.q=t[0],c.includes(m)||f.get(m)||(l.push(m),f.define(m,ht(w,h,1)))}))})),l.length>0&&(m.textContent+=l.sort()+"{visibility:hidden}.hydrated{visibility:inherit}",m.innerHTML.length)){m.setAttribute("data-styles","");const t=null!=(o=a.N)?o:j(u.document);null!=t&&m.setAttribute("nonce",t),p.insertBefore(m,h?h.nextSibling:p.firstChild)}b=!1,v.length?v.map((t=>t.connectedCallback())):a.jmp((()=>y=setTimeout(at,30)))},bt=t=>a.N=t;export{L as H,yt as b,T as c,H as g,C as h,f as p,o as r,bt as s,g as w}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EventEmitter } from '
|
|
2
|
-
import { ClientArchetype, ClientLayoutItem } from '
|
|
1
|
+
import { EventEmitter } from '../../../stencil-public-runtime';
|
|
2
|
+
import { ClientArchetype, ClientLayoutItem } from '../../../types/client-layout';
|
|
3
3
|
/**
|
|
4
4
|
* Owns a document collection view: a single toolbar (view switch + collection
|
|
5
5
|
* actions like "New folder", and — later — upload / drag-drop) plus the two
|
|
@@ -20,8 +20,13 @@ export declare class MrdDocumentContainer {
|
|
|
20
20
|
archetype: ClientArchetype;
|
|
21
21
|
/** Parent record id — required for RELATED_VIEW path building. */
|
|
22
22
|
parentId: string;
|
|
23
|
+
/** Canonical parent href, forwarded to the folder tree for single-container seeding. */
|
|
24
|
+
containerHref: string;
|
|
23
25
|
/** Lookup key used for the embedded `data-doclist` / `data-view` attributes. */
|
|
24
26
|
viewKey: string;
|
|
27
|
+
/** Fixed height (px) of the scrolling folder-tree body — the toolbar stays put
|
|
28
|
+
* on top, Finder-style. The table manages its own height. */
|
|
29
|
+
height: number;
|
|
25
30
|
locale: string;
|
|
26
31
|
/** Re-emitted from the embedded list/table. `nodeId` present for a folder load. */
|
|
27
32
|
mrdLoadPage: EventEmitter<{
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tree model and pure tree logic for mrd-document-list.
|
|
3
|
+
* Nodes are mutated in place; the component triggers re-renders via bump().
|
|
4
|
+
*/
|
|
5
|
+
/** A distinct value as returned by the /distinct endpoint. */
|
|
6
|
+
export interface DistinctValue {
|
|
7
|
+
/** Relation slot → `{ href, name }`; value slot (folder) → the raw path string. */
|
|
8
|
+
value: {
|
|
9
|
+
href: string;
|
|
10
|
+
name: string;
|
|
11
|
+
} | string | number | null;
|
|
12
|
+
count: number;
|
|
13
|
+
}
|
|
14
|
+
/** A loaded document row (raw data object from the /data endpoint). */
|
|
15
|
+
export type DocRow = Record<string, any>;
|
|
16
|
+
/** Internal tree node. Containers and folders share one shape; the container is
|
|
17
|
+
* the root of its own folder subtree (root docs = the container's direct docs). */
|
|
18
|
+
export interface TreeNode {
|
|
19
|
+
id: string;
|
|
20
|
+
kind: 'container' | 'folder';
|
|
21
|
+
label: string;
|
|
22
|
+
/** Container href — used to filter documents/folders (`{containerField}_href`). */
|
|
23
|
+
href?: string;
|
|
24
|
+
/** Exact distinct folder string this node maps to (present when it holds documents). */
|
|
25
|
+
fullPath?: string;
|
|
26
|
+
/** True when a distinct value maps exactly to this node (it can load documents). */
|
|
27
|
+
hasDocs: boolean;
|
|
28
|
+
/** Direct document count (0 for grouping-only folder nodes). */
|
|
29
|
+
docCount: number;
|
|
30
|
+
/** Aggregate count including descendants — shown in the badge. */
|
|
31
|
+
totalCount: number;
|
|
32
|
+
children: TreeNode[];
|
|
33
|
+
open: boolean;
|
|
34
|
+
loading: boolean;
|
|
35
|
+
/** Container only: folder distinct fetched. */
|
|
36
|
+
foldersLoaded: boolean;
|
|
37
|
+
/** Direct documents fetched. */
|
|
38
|
+
docsLoaded: boolean;
|
|
39
|
+
docs: DocRow[];
|
|
40
|
+
/** Owning container id (folder nodes only) — used to resolve the container for a folder. */
|
|
41
|
+
containerId?: string;
|
|
42
|
+
/** Client-side folder that is not yet materialised on the server (no documents yet). */
|
|
43
|
+
pending?: boolean;
|
|
44
|
+
/** The inline name input is currently shown for this (freshly created) node. */
|
|
45
|
+
editing?: boolean;
|
|
46
|
+
/** Inline validation message shown under the name input. */
|
|
47
|
+
error?: string;
|
|
48
|
+
}
|
|
49
|
+
/** Normalise a folder path: null/""/"/" → root ([]); else split on "/" dropping empties. */
|
|
50
|
+
export declare function splitFolder(path: string | null | undefined): string[];
|
|
51
|
+
export declare function makeContainerNode(href: string, label: string, count: number): TreeNode;
|
|
52
|
+
export declare function makeFolderNode(id: string, label: string, containerId: string): TreeNode;
|
|
53
|
+
/** Recompute totalCount over the subtree; returns the node's aggregate. */
|
|
54
|
+
export declare function computeTotals(node: TreeNode): number;
|
|
55
|
+
/** Folder path segments of a node relative to its container (derived from its id). */
|
|
56
|
+
export declare function segmentsOf(node: TreeNode, container: TreeNode): string[];
|
|
57
|
+
/** Folder string a node represents: the raw distinct value when it holds
|
|
58
|
+
* documents, else derived from its path segments; null for a container root. */
|
|
59
|
+
export declare function folderStringOf(node: TreeNode, container: TreeNode): string | null;
|
|
60
|
+
/** Strip a single trailing extension for the document title. */
|
|
61
|
+
export declare function stripExtension(name: string): string;
|
|
62
|
+
/** Rebuild a container's folder subtree from the /distinct folder strings.
|
|
63
|
+
* New nodes are registered in `nodeIndex`; the container is mutated in place. */
|
|
64
|
+
export declare function applyFolderDistinct(container: TreeNode, values: DistinctValue[], nodeIndex: Map<string, TreeNode>): void;
|
|
65
|
+
/** Optimistic in-place tree update for a document moved between folders. */
|
|
66
|
+
export declare function applyDocMove(doc: DocRow, fromNode: TreeNode, toNode: TreeNode, targetFolder: string | null): void;
|
|
@@ -1,16 +1,6 @@
|
|
|
1
|
-
import { EventEmitter } from '
|
|
2
|
-
import { ClientArchetype, ClientLayoutItem } from '
|
|
3
|
-
|
|
4
|
-
export interface DistinctValue {
|
|
5
|
-
/** Relation slot → `{ href, name }`; value slot (folder) → the raw path string. */
|
|
6
|
-
value: {
|
|
7
|
-
href: string;
|
|
8
|
-
name: string;
|
|
9
|
-
} | string | number | null;
|
|
10
|
-
count: number;
|
|
11
|
-
}
|
|
12
|
-
/** A loaded document row (raw data object from the /data endpoint). */
|
|
13
|
-
export type DocRow = Record<string, any>;
|
|
1
|
+
import { EventEmitter } from '../../../stencil-public-runtime';
|
|
2
|
+
import { ClientArchetype, ClientLayoutItem } from '../../../types/client-layout';
|
|
3
|
+
import { DistinctValue, DocRow } from './folder-tree';
|
|
14
4
|
/**
|
|
15
5
|
* Archetype-driven document collection view. Renders documents as a lazy,
|
|
16
6
|
* file-explorer-style folder tree, grouped by the `commons.document` archetype's
|
|
@@ -36,6 +26,11 @@ export declare class MrdDocumentList {
|
|
|
36
26
|
archetype: ClientArchetype;
|
|
37
27
|
/** Parent record id — required for RELATED_VIEW path building. */
|
|
38
28
|
parentId: string;
|
|
29
|
+
/** Canonical parent href (`/{base}/{tenant}/{fromClass}/{parentId}`) supplied by
|
|
30
|
+
* the host. When the RELATED_VIEW's `inverseRelation` equals the archetype
|
|
31
|
+
* `container` slot, this seeds a single container so an empty dossier still
|
|
32
|
+
* accepts file drops and folder creation. */
|
|
33
|
+
containerHref: string;
|
|
39
34
|
locale: string;
|
|
40
35
|
/** Request distinct values for a field/relation. Host fetches `{path}?{qs}` and calls `setDistinct(nodeId, values)`. */
|
|
41
36
|
mrdLoadDistinct: EventEmitter<{
|
|
@@ -93,6 +88,8 @@ export declare class MrdDocumentList {
|
|
|
93
88
|
private dropTargetId;
|
|
94
89
|
/** Node id showing an "uploading…" indicator while a dropped file is processed. */
|
|
95
90
|
private uploadingNodeId;
|
|
91
|
+
/** Whether a drag is hovering the root drop-zone (single-container area highlight). */
|
|
92
|
+
private rootDropActive;
|
|
96
93
|
private nodeIndex;
|
|
97
94
|
/** The pending node whose inline name input is open (null = not creating). */
|
|
98
95
|
private pendingNode;
|
|
@@ -119,14 +116,29 @@ export declare class MrdDocumentList {
|
|
|
119
116
|
/** The optimistic document row awaiting its self href from the create POST. */
|
|
120
117
|
private lastOptimisticDoc;
|
|
121
118
|
componentDidLoad(): void;
|
|
119
|
+
/** True when the view is a single-container context: a RELATED_VIEW whose
|
|
120
|
+
* `inverseRelation` matches the archetype `container` slot, with a known
|
|
121
|
+
* parent href. The container is then implied by context (not by distinct),
|
|
122
|
+
* so it works even with zero documents. */
|
|
123
|
+
private isSeededSingleContainer;
|
|
124
|
+
/** Seed the single implied container from context and load its folders. */
|
|
125
|
+
private seedSingleContainer;
|
|
122
126
|
componentDidRender(): void;
|
|
123
127
|
private get containerField();
|
|
124
128
|
private get folderField();
|
|
125
129
|
private get titleField();
|
|
126
130
|
private get fileField();
|
|
127
131
|
private get dateField();
|
|
128
|
-
/** VIEW: `/{dataClass}`; RELATED_VIEW: `/{fromClass}/{parentId}/{dataClass}`.
|
|
132
|
+
/** VIEW: `/{dataClass}`; RELATED_VIEW: `/{fromClass}/{parentId}/{dataClass}`.
|
|
133
|
+
* Used for reads (list/distinct): `dataClass`/`relatedClass` may be an abstract
|
|
134
|
+
* type (e.g. "contents"), filtered down to the concrete `filterClass` via the
|
|
135
|
+
* `type` query param — see baseParams(). */
|
|
129
136
|
private buildDataPath;
|
|
137
|
+
/** Path for creating a new document (file-drop). Unlike buildDataPath(), this
|
|
138
|
+
* must target the concrete type: `dataClass`/`relatedClass` can be an abstract
|
|
139
|
+
* base type (e.g. "contents") that cannot be POSTed to directly, so prefer
|
|
140
|
+
* `filterClass` (e.g. "documents") when present. */
|
|
141
|
+
private buildCreatePath;
|
|
130
142
|
/** View-level static filters + filterClass, shared by every request. */
|
|
131
143
|
private baseParams;
|
|
132
144
|
private emitContainerDistinct;
|
|
@@ -139,11 +151,6 @@ export declare class MrdDocumentList {
|
|
|
139
151
|
setDocuments(nodeId: string, docs: DocRow[]): Promise<void>;
|
|
140
152
|
private applyContainers;
|
|
141
153
|
private applyFolders;
|
|
142
|
-
/** Normalise a folder path: null/""/"/" → root ([]); else split on "/" dropping empties. */
|
|
143
|
-
private splitFolder;
|
|
144
|
-
private makeContainerNode;
|
|
145
|
-
private makeFolderNode;
|
|
146
|
-
private computeTotals;
|
|
147
154
|
/** Force a re-render after mutating nodes in place. */
|
|
148
155
|
private bump;
|
|
149
156
|
private toggleContainer;
|
|
@@ -155,8 +162,6 @@ export declare class MrdDocumentList {
|
|
|
155
162
|
/** Start creating a folder under the current target. Called by the host toolbar
|
|
156
163
|
* (mrd-document-container). No-op when there is no valid target. */
|
|
157
164
|
createFolder(): Promise<void>;
|
|
158
|
-
/** Folder path segments of a node relative to its container (derived from its id). */
|
|
159
|
-
private segmentsOf;
|
|
160
165
|
private startCreateFolder;
|
|
161
166
|
private onPendingInput;
|
|
162
167
|
private onPendingKeyDown;
|
|
@@ -175,36 +180,21 @@ export declare class MrdDocumentList {
|
|
|
175
180
|
private onNodeDrop;
|
|
176
181
|
/** Root-zone drop (dossier context): target the single container's root. */
|
|
177
182
|
private onRootDragOver;
|
|
183
|
+
private onRootDragLeave;
|
|
178
184
|
private onRootDrop;
|
|
179
185
|
/** Begin an upload: emit mrdUpload; the host uploads and calls setFileReference. */
|
|
180
186
|
private startFileUpload;
|
|
181
|
-
/** Strip a single trailing extension for the document title. */
|
|
182
|
-
private stripExtension;
|
|
183
187
|
/** Host callback with the uploaded file reference. Builds the create payload
|
|
184
188
|
* from the archetype slots and requests the new document. */
|
|
185
189
|
setFileReference(uri: string): Promise<void>;
|
|
186
190
|
/** Host callback with the created document's self href, so the optimistic row
|
|
187
191
|
* becomes navigable without waiting for a reload. */
|
|
188
192
|
setCreatedHref(href: string): Promise<void>;
|
|
189
|
-
/** Folder string a node represents: the raw distinct value when it holds
|
|
190
|
-
* documents, else derived from its path segments; null for a container root. */
|
|
191
|
-
private folderStringOf;
|
|
192
193
|
private moveDocument;
|
|
193
194
|
/** Recompute a container's subtree totals from docCounts when its folders are
|
|
194
195
|
* loaded; otherwise just nudge the aggregate badge by the delta. */
|
|
195
196
|
private recomputeContainerTotals;
|
|
196
197
|
private openDoc;
|
|
197
|
-
private
|
|
198
|
-
private renderDossierIcon;
|
|
199
|
-
private renderFolderIcon;
|
|
200
|
-
private renderDocIcon;
|
|
201
|
-
private indent;
|
|
202
|
-
private renderDocRow;
|
|
203
|
-
private renderLoadingRow;
|
|
204
|
-
private renderChildren;
|
|
205
|
-
private renderUploadingRow;
|
|
206
|
-
private renderFolderEditRow;
|
|
207
|
-
private renderFolderNode;
|
|
208
|
-
private renderContainerNode;
|
|
198
|
+
private treeCtx;
|
|
209
199
|
render(): any;
|
|
210
200
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { DocRow, TreeNode } from './folder-tree';
|
|
2
|
+
/**
|
|
3
|
+
* Render functions for the mrd-document-list tree. Plain functions (not
|
|
4
|
+
* FunctionalComponents) because the tree renders recursively and the whole
|
|
5
|
+
* context travels as one object; all state and handlers stay in the component.
|
|
6
|
+
*/
|
|
7
|
+
export interface TreeViewContext {
|
|
8
|
+
locale: string;
|
|
9
|
+
titleField: string;
|
|
10
|
+
dateField?: string;
|
|
11
|
+
selectedId: string | null;
|
|
12
|
+
dropTargetId: string | null;
|
|
13
|
+
uploadingNodeId: string | null;
|
|
14
|
+
on: {
|
|
15
|
+
toggleContainer: (node: TreeNode) => void;
|
|
16
|
+
toggleFolder: (container: TreeNode, node: TreeNode) => void;
|
|
17
|
+
openDoc: (doc: DocRow) => void;
|
|
18
|
+
docDragStart: (e: DragEvent, doc: DocRow, node: TreeNode) => void;
|
|
19
|
+
docDragEnd: () => void;
|
|
20
|
+
nodeDragOver: (e: DragEvent, node: TreeNode) => void;
|
|
21
|
+
nodeDragLeave: (node: TreeNode) => void;
|
|
22
|
+
nodeDrop: (e: DragEvent, node: TreeNode, container: TreeNode) => void;
|
|
23
|
+
pendingInput: (e: Event) => void;
|
|
24
|
+
pendingKeyDown: (e: KeyboardEvent) => void;
|
|
25
|
+
cancelFolder: () => void;
|
|
26
|
+
setPendingInputEl: (el: HTMLInputElement) => void;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export declare function renderLoadingRow(ctx: TreeViewContext, depth: number): any;
|
|
30
|
+
export declare function renderNodeChildren(ctx: TreeViewContext, container: TreeNode, node: TreeNode, depth: number): any[];
|
|
31
|
+
export declare function renderFolderNode(ctx: TreeViewContext, container: TreeNode, node: TreeNode, depth: number): any;
|
|
32
|
+
export declare function renderContainerNode(ctx: TreeViewContext, node: TreeNode, depth: number): any;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EventEmitter } from '
|
|
2
|
-
import { ClientArchetype } from '
|
|
1
|
+
import { EventEmitter } from '../../../stencil-public-runtime';
|
|
2
|
+
import { ClientArchetype } from '../../../types/client-layout';
|
|
3
3
|
/**
|
|
4
4
|
* Archetype-driven single-document view. Given a `commons.document` binding and a
|
|
5
5
|
* data record, renders the document recognisably — title, file preview/download,
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { FunctionalComponent } from '../../stencil-public-runtime';
|
|
2
|
+
/**
|
|
3
|
+
* Shared building blocks for the leaf field components.
|
|
4
|
+
* `base` is the BEM block name, e.g. 'mrd-text-field'.
|
|
5
|
+
*/
|
|
6
|
+
export declare const FieldLabel: FunctionalComponent<{
|
|
7
|
+
base: string;
|
|
8
|
+
label: string;
|
|
9
|
+
required: boolean;
|
|
10
|
+
}>;
|
|
11
|
+
export declare const FieldError: FunctionalComponent<{
|
|
12
|
+
base: string;
|
|
13
|
+
error: string;
|
|
14
|
+
}>;
|
|
15
|
+
/** Class string for the form control, with the --error modifier when applicable. */
|
|
16
|
+
export declare function controlClass(base: string, hasError: boolean, element?: string): string;
|
|
17
|
+
/** Returns the localised required-error, or '' when the value passes. */
|
|
18
|
+
export declare function requiredError(value: unknown, required: boolean, locale: string): string;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared upload behaviour for mrd-file-field and mrd-image-field:
|
|
3
|
+
* file validation, drop-zone class building and drag-drop wiring.
|
|
4
|
+
*/
|
|
5
|
+
/** Validates a selected/dropped file; returns a localised error message or '' when accepted. */
|
|
6
|
+
export declare function validateUploadFile(file: File, maxSize: number, locale: string, requireImage?: boolean): string;
|
|
7
|
+
/** BEM class string for the drop zone, e.g. base 'mrd-file-field' → 'mrd-file-field__zone …'. */
|
|
8
|
+
export declare function uploadZoneClass(base: string, opts: {
|
|
9
|
+
dragging: boolean;
|
|
10
|
+
error: boolean;
|
|
11
|
+
disabled: boolean;
|
|
12
|
+
}): string;
|
|
13
|
+
/** Drag-drop handlers for the drop zone; the component owns the dragging state and file handling. */
|
|
14
|
+
export declare function makeDragHandlers(setDragging: (dragging: boolean) => void, onFile: (file: File | null) => void): {
|
|
15
|
+
onDragOver: (e: DragEvent) => void;
|
|
16
|
+
onDragLeave: () => void;
|
|
17
|
+
onDrop: (e: DragEvent) => void;
|
|
18
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EventEmitter } from '
|
|
2
|
-
import { CurrencyValue } from '
|
|
1
|
+
import { EventEmitter } from '../../../stencil-public-runtime';
|
|
2
|
+
import { CurrencyValue } from '../../../types';
|
|
3
3
|
export declare class MrdCurrencyField {
|
|
4
4
|
name: string;
|
|
5
5
|
label: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EventEmitter } from '
|
|
1
|
+
import { EventEmitter } from '../../../stencil-public-runtime';
|
|
2
2
|
export declare class MrdFileField {
|
|
3
3
|
name: string;
|
|
4
4
|
label: string;
|
|
@@ -31,9 +31,7 @@ export declare class MrdFileField {
|
|
|
31
31
|
valueChanged(newVal: unknown): void;
|
|
32
32
|
private handleFile;
|
|
33
33
|
private handleInputChange;
|
|
34
|
-
private
|
|
35
|
-
private handleDragLeave;
|
|
36
|
-
private handleDrop;
|
|
34
|
+
private drag;
|
|
37
35
|
private handleZoneClick;
|
|
38
36
|
private handleClear;
|
|
39
37
|
render(): any;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EventEmitter } from '
|
|
2
|
-
import { HyperlinkValue } from '
|
|
1
|
+
import { EventEmitter } from '../../../stencil-public-runtime';
|
|
2
|
+
import { HyperlinkValue } from '../../../types/client-layout';
|
|
3
3
|
export declare class MrdHyperlinkField {
|
|
4
4
|
name: string;
|
|
5
5
|
label: string;
|
package/dist/types/components/{mrd-image-field → fields/mrd-image-field}/mrd-image-field.d.ts
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EventEmitter } from '
|
|
1
|
+
import { EventEmitter } from '../../../stencil-public-runtime';
|
|
2
2
|
export declare class MrdImageField {
|
|
3
3
|
name: string;
|
|
4
4
|
label: string;
|
|
@@ -32,9 +32,7 @@ export declare class MrdImageField {
|
|
|
32
32
|
valueChanged(newVal: unknown): void;
|
|
33
33
|
private handleFile;
|
|
34
34
|
private handleInputChange;
|
|
35
|
-
private
|
|
36
|
-
private handleDragLeave;
|
|
37
|
-
private handleDrop;
|
|
35
|
+
private drag;
|
|
38
36
|
private handleZoneClick;
|
|
39
37
|
private handleClear;
|
|
40
38
|
render(): any;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EventEmitter } from '
|
|
2
|
-
import { ClientListValue } from '
|
|
1
|
+
import { EventEmitter } from '../../../stencil-public-runtime';
|
|
2
|
+
import { ClientListValue } from '../../../types';
|
|
3
3
|
export declare class MrdListField {
|
|
4
4
|
name: string;
|
|
5
5
|
label: string;
|
package/dist/types/components/{mrd-number-field → fields/mrd-number-field}/mrd-number-field.d.ts
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EventEmitter } from '
|
|
2
|
-
import { ClientLayoutItemFieldDataType } from '
|
|
1
|
+
import { EventEmitter } from '../../../stencil-public-runtime';
|
|
2
|
+
import { ClientLayoutItemFieldDataType } from '../../../types';
|
|
3
3
|
export declare class MrdNumberField {
|
|
4
4
|
name: string;
|
|
5
5
|
label: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EventEmitter } from '
|
|
2
|
-
import { ClientLayoutItemRelationDisplayType, ClientLayoutItemRelationEditBehavior, ClientListValue, RelationSearchResult } from '
|
|
1
|
+
import { EventEmitter } from '../../../stencil-public-runtime';
|
|
2
|
+
import { ClientLayoutItemRelationDisplayType, ClientLayoutItemRelationEditBehavior, ClientListValue, RelationSearchResult } from '../../../types';
|
|
3
3
|
export declare class MrdRelationField {
|
|
4
4
|
el: HTMLElement;
|
|
5
5
|
name: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EventEmitter } from '
|
|
2
|
-
import { ClientLayoutItem } from '
|
|
1
|
+
import { EventEmitter } from '../../../stencil-public-runtime';
|
|
2
|
+
import { ClientLayoutItem } from '../../../types';
|
|
3
3
|
export declare class MrdField {
|
|
4
4
|
el: HTMLElement;
|
|
5
5
|
item: ClientLayoutItem;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EventEmitter } from '
|
|
2
|
-
import { ClientLayout, RelationSearchResult } from '
|
|
1
|
+
import { EventEmitter } from '../../../stencil-public-runtime';
|
|
2
|
+
import { ClientLayout, RelationSearchResult } from '../../../types';
|
|
3
3
|
export declare class MrdForm {
|
|
4
4
|
layout: ClientLayout;
|
|
5
5
|
locale: string;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ClientLayoutItem } from '../../../types/client-layout';
|
|
2
|
+
/**
|
|
3
|
+
* Read-only field rendering for mrd-layout-section. Plain render functions;
|
|
4
|
+
* state (image previews, open history popover) stays in the component and
|
|
5
|
+
* travels in via the context object.
|
|
6
|
+
*/
|
|
7
|
+
export interface FieldViewContext {
|
|
8
|
+
locale: string;
|
|
9
|
+
data: Record<string, unknown>;
|
|
10
|
+
imagePreviews: Record<string, string>;
|
|
11
|
+
openHistoryField: string | null;
|
|
12
|
+
on: {
|
|
13
|
+
download: (detail: {
|
|
14
|
+
href: string;
|
|
15
|
+
fileName: string;
|
|
16
|
+
}) => void;
|
|
17
|
+
openImage: (url: string) => void;
|
|
18
|
+
toggleHistory: (fieldName: string | null) => void;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export declare function renderFieldValue(ctx: FieldViewContext, item: ClientLayoutItem, rawValue: unknown): any;
|
|
22
|
+
export declare function renderField(ctx: FieldViewContext, item: ClientLayoutItem): any;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ClientLayoutItem } from '../../../types/client-layout';
|
|
2
|
+
/** Key an embedded view is addressed by (setViewPage etc.). */
|
|
3
|
+
export declare function viewKeyFor(item: ClientLayoutItem): string;
|
|
4
|
+
/** Depth-first flatten of the SECTION/GROUP tree. */
|
|
5
|
+
export declare function flattenItems(items: ClientLayoutItem[]): ClientLayoutItem[];
|
|
6
|
+
/** Build the canonical parent href `/{base}/{tenant}/{fromClass}/{parentId}` from
|
|
7
|
+
* the object's self href. Empty unless it is a RELATED_VIEW with a fromClass. */
|
|
8
|
+
export declare function buildContainerHref(item: ClientLayoutItem, selfHref: string, parentId: string): string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { EventEmitter } from '
|
|
2
|
-
import { ClientLayoutItem, ClientLayoutItemNavigate, ClientViewMetadata, ClientArchetype, RelationSearchResult } from '
|
|
3
|
-
import { DistinctValue } from '
|
|
1
|
+
import { EventEmitter } from '../../../stencil-public-runtime';
|
|
2
|
+
import { ClientLayoutItem, ClientLayoutItemNavigate, ClientViewMetadata, ClientArchetype, RelationSearchResult } from '../../../types/client-layout';
|
|
3
|
+
import { DistinctValue } from '../../documents/mrd-document-list/folder-tree';
|
|
4
4
|
export declare class MrdLayoutSection {
|
|
5
5
|
el: HTMLElement;
|
|
6
6
|
/** Items from one layout entry in ClientDashboardMetadata.layouts[]. */
|
|
@@ -101,9 +101,7 @@ export declare class MrdLayoutSection {
|
|
|
101
101
|
disconnectedCallback(): void;
|
|
102
102
|
dataChanged(newVal: Record<string, unknown>): void;
|
|
103
103
|
private initEmbeddedTables;
|
|
104
|
-
private viewKeyFor;
|
|
105
104
|
private emitLoadImages;
|
|
106
|
-
private flattenItems;
|
|
107
105
|
/** Inject search results. Pass dataClass to target a specific SEARCH item; omit when there is only one. */
|
|
108
106
|
setSearchResults(results: RelationSearchResult[], dataClass?: string): Promise<void>;
|
|
109
107
|
/**
|
|
@@ -130,9 +128,7 @@ export declare class MrdLayoutSection {
|
|
|
130
128
|
private resolveSearchKey;
|
|
131
129
|
private handleViewLoadPage;
|
|
132
130
|
private handleSearchInput;
|
|
133
|
-
private
|
|
134
|
-
private renderFieldValue;
|
|
135
|
-
private renderHistoryBadge;
|
|
131
|
+
private fieldCtx;
|
|
136
132
|
private renderField;
|
|
137
133
|
private renderRelation;
|
|
138
134
|
private renderSearch;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { EventEmitter } from '
|
|
2
|
-
import { ColumnFilter } from '
|
|
3
|
-
import { AggregationResult, ClientLayoutItem } from '
|
|
1
|
+
import { EventEmitter } from '../../../stencil-public-runtime';
|
|
2
|
+
import { ColumnFilter } from '../../../utils/cell-renderer';
|
|
3
|
+
import { AggregationResult, ClientLayoutItem } from '../../../types/client-layout';
|
|
4
4
|
export declare class MrdTable {
|
|
5
5
|
el: HTMLElement;
|
|
6
6
|
private pendingPages;
|
|
@@ -9,6 +9,8 @@ export declare class MrdTable {
|
|
|
9
9
|
private keydownHandler;
|
|
10
10
|
private createPickerClickHandler;
|
|
11
11
|
private viewPopoverClickHandler;
|
|
12
|
+
/** Guards against scheduling more than one column-width measurement per freeze. */
|
|
13
|
+
private colWidthMeasureScheduled;
|
|
12
14
|
/** The VIEW or RELATED_VIEW layout item. Contains view config, dataClass, fromClass, actions etc. */
|
|
13
15
|
item: ClientLayoutItem | null;
|
|
14
16
|
/** Parent record id — required for RELATED_VIEW to build /{fromClass}/{parentId}/{dataClass}. */
|
|
@@ -152,10 +154,7 @@ export declare class MrdTable {
|
|
|
152
154
|
private isTotalKnown;
|
|
153
155
|
/** Effective total: aggregations-response > totalElements prop > minKnownTotal from setPage(). */
|
|
154
156
|
private get baseTotal();
|
|
155
|
-
private buildAggregationParams;
|
|
156
|
-
private buildAggregationQs;
|
|
157
157
|
private emitLoadAggregations;
|
|
158
|
-
private renderAggregationValue;
|
|
159
158
|
/** Reset pagination state and scroll to top (used after sort or filter change). */
|
|
160
159
|
private resetPages;
|
|
161
160
|
private handleSortClick;
|
|
@@ -174,24 +173,18 @@ export declare class MrdTable {
|
|
|
174
173
|
private closeJsonModal;
|
|
175
174
|
private setPending;
|
|
176
175
|
private togglePendingValue;
|
|
177
|
-
private filterHasValue;
|
|
178
|
-
private dateLocalToUTCStart;
|
|
179
|
-
private dateLocalToUTCEndExclusive;
|
|
180
|
-
private utcISOToLocalDate;
|
|
181
|
-
private utcISOToLocalDateExclusiveEnd;
|
|
182
176
|
private applyFilter;
|
|
183
177
|
private clearFilter;
|
|
184
178
|
private clearAllFilters;
|
|
185
179
|
private handleViewSwitch;
|
|
186
180
|
private toggleViewPopover;
|
|
181
|
+
private closeViewPopover;
|
|
187
182
|
private renderToolbar;
|
|
188
|
-
private renderFilterEditor;
|
|
189
183
|
private renderFilterPopup;
|
|
190
184
|
private renderFooter;
|
|
191
185
|
private renderCell;
|
|
192
186
|
private renderTotalsRow;
|
|
193
187
|
render(): any;
|
|
194
|
-
private renderFilterIcon;
|
|
195
188
|
private renderTextblockModal;
|
|
196
189
|
private renderJsonModal;
|
|
197
190
|
}
|