@fieldia/viewer 0.19.1 → 0.20.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.
Files changed (158) hide show
  1. package/README.md +18 -0
  2. package/bundle/fieldia.ar.js +2 -2
  3. package/bundle/fieldia.ar.js.map +2 -2
  4. package/bundle/fieldia.choice.js +5 -0
  5. package/bundle/fieldia.choice.js.map +7 -0
  6. package/bundle/fieldia.de.js +2 -2
  7. package/bundle/fieldia.de.js.map +2 -2
  8. package/bundle/fieldia.filters.js +5 -0
  9. package/bundle/fieldia.filters.js.map +7 -0
  10. package/bundle/fieldia.fr.js +2 -2
  11. package/bundle/fieldia.fr.js.map +2 -2
  12. package/bundle/fieldia.head.js +5 -0
  13. package/bundle/fieldia.head.js.map +7 -0
  14. package/bundle/fieldia.js +44 -44
  15. package/bundle/fieldia.js.map +4 -4
  16. package/bundle/fieldia.path.js +5 -0
  17. package/bundle/fieldia.path.js.map +7 -0
  18. package/bundle/fieldia.text.js +24 -0
  19. package/bundle/fieldia.text.js.map +7 -0
  20. package/package.json +7 -3
  21. package/src/index.d.mts +2 -1
  22. package/src/index.d.ts +2 -1
  23. package/src/index.js +6 -1
  24. package/src/index.js.map +1 -1
  25. package/src/index.mjs +1 -0
  26. package/src/index.mjs.map +1 -1
  27. package/src/lib/button-parts.d.mts +30 -0
  28. package/src/lib/button-parts.d.ts +30 -0
  29. package/src/lib/button-parts.js +24 -0
  30. package/src/lib/button-parts.js.map +1 -0
  31. package/src/lib/button-parts.mjs +18 -0
  32. package/src/lib/button-parts.mjs.map +1 -0
  33. package/src/lib/dialog-window.d.mts +11 -0
  34. package/src/lib/dialog-window.d.ts +11 -0
  35. package/src/lib/dialog-window.js +86 -0
  36. package/src/lib/dialog-window.js.map +1 -0
  37. package/src/lib/dialog-window.mjs +82 -0
  38. package/src/lib/dialog-window.mjs.map +1 -0
  39. package/src/lib/dialog.d.mts +14 -3
  40. package/src/lib/dialog.d.ts +14 -3
  41. package/src/lib/dialog.js +84 -14
  42. package/src/lib/dialog.js.map +1 -1
  43. package/src/lib/dialog.mjs +85 -15
  44. package/src/lib/dialog.mjs.map +1 -1
  45. package/src/lib/filter-bar.d.mts +39 -0
  46. package/src/lib/filter-bar.d.ts +39 -0
  47. package/src/lib/filter-bar.js +290 -0
  48. package/src/lib/filter-bar.js.map +1 -0
  49. package/src/lib/filter-bar.mjs +287 -0
  50. package/src/lib/filter-bar.mjs.map +1 -0
  51. package/src/lib/filter-styles.d.mts +4 -0
  52. package/src/lib/filter-styles.d.ts +4 -0
  53. package/src/lib/filter-styles.js +63 -0
  54. package/src/lib/filter-styles.js.map +1 -0
  55. package/src/lib/filter-styles.mjs +59 -0
  56. package/src/lib/filter-styles.mjs.map +1 -0
  57. package/src/lib/filters-part.d.mts +8 -0
  58. package/src/lib/filters-part.d.ts +8 -0
  59. package/src/lib/filters-part.js +14 -0
  60. package/src/lib/filters-part.js.map +1 -0
  61. package/src/lib/filters-part.mjs +9 -0
  62. package/src/lib/filters-part.mjs.map +1 -0
  63. package/src/lib/group-styles.d.mts +9 -0
  64. package/src/lib/group-styles.d.ts +9 -0
  65. package/src/lib/group-styles.js +64 -0
  66. package/src/lib/group-styles.js.map +1 -0
  67. package/src/lib/group-styles.mjs +60 -0
  68. package/src/lib/group-styles.mjs.map +1 -0
  69. package/src/lib/head-part.d.mts +15 -0
  70. package/src/lib/head-part.d.ts +15 -0
  71. package/src/lib/head-part.js +26 -0
  72. package/src/lib/head-part.js.map +1 -0
  73. package/src/lib/head-part.mjs +16 -0
  74. package/src/lib/head-part.mjs.map +1 -0
  75. package/src/lib/head-styles.d.mts +28 -0
  76. package/src/lib/head-styles.d.ts +28 -0
  77. package/src/lib/head-styles.js +320 -0
  78. package/src/lib/head-styles.js.map +1 -0
  79. package/src/lib/head-styles.mjs +316 -0
  80. package/src/lib/head-styles.mjs.map +1 -0
  81. package/src/lib/labels.d.mts +29 -0
  82. package/src/lib/labels.d.ts +29 -0
  83. package/src/lib/labels.js +16 -0
  84. package/src/lib/labels.js.map +1 -1
  85. package/src/lib/labels.mjs +16 -0
  86. package/src/lib/labels.mjs.map +1 -1
  87. package/src/lib/list-styles.d.mts +1 -1
  88. package/src/lib/list-styles.d.ts +1 -1
  89. package/src/lib/list-styles.js +88 -1
  90. package/src/lib/list-styles.js.map +1 -1
  91. package/src/lib/list-styles.mjs +88 -1
  92. package/src/lib/list-styles.mjs.map +1 -1
  93. package/src/lib/list.d.mts +16 -1
  94. package/src/lib/list.d.ts +16 -1
  95. package/src/lib/list.js +281 -51
  96. package/src/lib/list.js.map +1 -1
  97. package/src/lib/list.mjs +282 -52
  98. package/src/lib/list.mjs.map +1 -1
  99. package/src/lib/locales/ar.js +16 -0
  100. package/src/lib/locales/ar.js.map +1 -1
  101. package/src/lib/locales/ar.mjs +16 -0
  102. package/src/lib/locales/ar.mjs.map +1 -1
  103. package/src/lib/locales/de.js +16 -0
  104. package/src/lib/locales/de.js.map +1 -1
  105. package/src/lib/locales/de.mjs +16 -0
  106. package/src/lib/locales/de.mjs.map +1 -1
  107. package/src/lib/locales/fr.js +16 -0
  108. package/src/lib/locales/fr.js.map +1 -1
  109. package/src/lib/locales/fr.mjs +16 -0
  110. package/src/lib/locales/fr.mjs.map +1 -1
  111. package/src/lib/look.d.mts +1 -1
  112. package/src/lib/look.d.ts +1 -1
  113. package/src/lib/look.js +3 -0
  114. package/src/lib/look.js.map +1 -1
  115. package/src/lib/look.mjs +3 -0
  116. package/src/lib/look.mjs.map +1 -1
  117. package/src/lib/record-bar.d.mts +10 -1
  118. package/src/lib/record-bar.d.ts +10 -1
  119. package/src/lib/record-bar.js +15 -7
  120. package/src/lib/record-bar.js.map +1 -1
  121. package/src/lib/record-bar.mjs +14 -7
  122. package/src/lib/record-bar.mjs.map +1 -1
  123. package/src/lib/record-head.d.mts +58 -0
  124. package/src/lib/record-head.d.ts +58 -0
  125. package/src/lib/record-head.js +245 -0
  126. package/src/lib/record-head.js.map +1 -0
  127. package/src/lib/record-head.mjs +240 -0
  128. package/src/lib/record-head.mjs.map +1 -0
  129. package/src/lib/rich-button.d.mts +12 -0
  130. package/src/lib/rich-button.d.ts +12 -0
  131. package/src/lib/rich-button.js +186 -0
  132. package/src/lib/rich-button.js.map +1 -0
  133. package/src/lib/rich-button.mjs +183 -0
  134. package/src/lib/rich-button.mjs.map +1 -0
  135. package/src/lib/section-head.d.mts +26 -0
  136. package/src/lib/section-head.d.ts +26 -0
  137. package/src/lib/section-head.js +65 -0
  138. package/src/lib/section-head.js.map +1 -0
  139. package/src/lib/section-head.mjs +56 -0
  140. package/src/lib/section-head.mjs.map +1 -0
  141. package/src/lib/section-tools.d.mts +12 -0
  142. package/src/lib/section-tools.d.ts +12 -0
  143. package/src/lib/section-tools.js +124 -0
  144. package/src/lib/section-tools.js.map +1 -0
  145. package/src/lib/section-tools.mjs +121 -0
  146. package/src/lib/section-tools.mjs.map +1 -0
  147. package/src/lib/viewer-parts.d.mts +33 -0
  148. package/src/lib/viewer-parts.d.ts +33 -0
  149. package/src/lib/viewer-parts.js +75 -0
  150. package/src/lib/viewer-parts.js.map +1 -0
  151. package/src/lib/viewer-parts.mjs +70 -0
  152. package/src/lib/viewer-parts.mjs.map +1 -0
  153. package/src/lib/viewer.d.mts +30 -7
  154. package/src/lib/viewer.d.ts +30 -7
  155. package/src/lib/viewer.js +317 -97
  156. package/src/lib/viewer.js.map +1 -1
  157. package/src/lib/viewer.mjs +319 -99
  158. package/src/lib/viewer.mjs.map +1 -1
@@ -0,0 +1,5 @@
1
+ /*! Fieldia 0.20.0 · filters · MIT · https://fieldia.dev */
2
+ (globalThis.FieldiaParts = globalThis.FieldiaParts || []).push(["filters", "0.20.0", function (__fieldia) {
3
+ "use strict";var part=(()=>{var he=Object.create;var P=Object.defineProperty;var ge=Object.getOwnPropertyDescriptor;var me=Object.getOwnPropertyNames;var be=Object.getPrototypeOf,ve=Object.prototype.hasOwnProperty;var G=(r,l)=>()=>{try{return l||r((l={exports:{}}).exports,l),l.exports}catch(s){throw l=0,s}},we=(r,l)=>{for(var s in l)P(r,s,{get:l[s],enumerable:!0})},Q=(r,l,s,p)=>{if(l&&typeof l=="object"||typeof l=="function")for(let a of me(l))!ve.call(r,a)&&a!==s&&P(r,a,{get:()=>l[a],enumerable:!(p=ge(l,a))||p.enumerable});return r};var X=(r,l,s)=>(s=r!=null?he(be(r)):{},Q(l||!r||!r.__esModule?P(s,"default",{value:r,enumerable:!0}):s,r)),ye=r=>Q(P({},"__esModule",{value:!0}),r);var ee=G((Le,Z)=>{"use strict";Z.exports=__fieldia[0]});var ie=G((Te,te)=>{"use strict";te.exports=__fieldia[5]});var Fe={};we(Fe,{filterBar:()=>ne,installFilterStyles:()=>M});var re=X(ee()),le=X(ie());var ke=".fd-filter-bar{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;flex:1 1 100%;min-width:0;min-height:45px;box-sizing:border-box;padding:6px 8px 6px 16px;padding-inline:16px 8px;background:var(--fd-surface);border-radius:var(--fd-radius);box-shadow:0 3.2px 7.2px #0002,0 .6px 1.8px #0000001c}.fd-filter-search{flex:1 1 200px;min-width:0;display:flex;align-items:center;gap:8px;color:var(--fd-muted)}.fd-filter-icon{width:16px;height:16px;flex:none}.fd-filter-keyword{flex:1;min-width:0;border:0;outline:none;background:none;font:inherit;font-size:14px;color:var(--fd-text);padding:6px 0}.fd-filter-keyword::placeholder{color:var(--fd-muted);opacity:1}.fd-filter-keyword::-webkit-search-cancel-button{display:none}.fd-filter-search:focus-within{box-shadow:inset 0 -2px 0 var(--fd-focus)}.fd-filter-fields{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-inline-start:auto}.fd-filter-field{position:relative;display:inline-flex}.fd-filter-pick{all:unset;box-sizing:border-box;cursor:pointer;display:inline-flex;align-items:center;gap:8px;max-width:220px;min-height:32px;padding-inline:8px;border-radius:2px;font-size:14px;color:var(--fd-muted)}.fd-filter-pick[data-picked]{color:var(--fd-text);font-weight:600}.fd-filter-words{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-filter-chevron{width:16px;height:16px;flex:none;color:var(--fd-muted)}.fd-filter-tool{all:unset;box-sizing:border-box;cursor:pointer;display:inline-grid;place-items:center;width:32px;height:32px;border-radius:2px;color:var(--fd-muted)}.fd-filter-clear{color:var(--fd-text)}.fd-filter-tool svg{width:16px;height:16px}.fd-filter-pick:hover,.fd-filter-tool:hover,.fd-filter-pick[aria-expanded=true],.fd-filter-tool[aria-expanded=true]{background:var(--fd-page)}.fd-filter-pick:focus-visible,.fd-filter-tool:focus-visible{outline:1px solid var(--fd-focus);outline-offset:-1px}.fd-filter-menu{position:absolute;z-index:30;inset-inline-end:0;top:calc(100% + 4px);box-sizing:border-box;min-width:200px;max-width:min(320px,90vw);max-height:320px;overflow:auto;padding-block:4px;background:var(--fd-surface);border-radius:4px;box-shadow:0 3.2px 7.2px #0002,0 .6px 1.8px #0000001c}.fd-filter-option{display:flex;align-items:center;gap:10px;min-height:32px;padding-inline:12px;cursor:pointer;font-size:14px;color:var(--fd-text);outline:none}.fd-filter-option:hover{background:var(--fd-page)}.fd-filter-option:focus-visible,.fd-filter-option:focus{background:var(--fd-page);box-shadow:inset 0 0 0 1px var(--fd-focus)}.fd-filter-box{display:grid;place-items:center;width:16px;height:16px;flex:none;box-sizing:border-box;border:1px solid var(--fd-border-strong);border-radius:2px;color:transparent}.fd-filter-box svg{width:12px;height:12px}.fd-filter-option[aria-checked=true] .fd-filter-box{background:var(--fd-accent);border-color:var(--fd-accent);color:var(--fd-accent-text, #fff)}.fd-filter-option-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-form[data-fd-theme=fluent] .fd-list:has(>.fd-list-bar>.fd-filter-bar){row-gap:16px}.fd-form[data-fd-theme=fluent] .fd-filter-bar{min-height:50px;padding-block:7px 5px;padding-inline-end:10px}.fd-form[data-fd-theme=fluent] .fd-filter-fields{gap:6px}.fd-form[data-fd-theme=fluent] .fd-filter-chevron{position:relative;inset-block-start:-1px;width:22px;height:22px;margin-inline:-3px -1px;stroke-width:1.1;color:var(--fd-muted)}.fd-form[data-fd-theme=fluent] .fd-filter-tool:not(.fd-filter-clear){margin-inline-start:-5px}.fd-form[data-fd-theme=fluent] .fd-filter-tool:not(.fd-filter-clear) svg{width:13px;height:13px}.fd-form[data-fd-theme=fluent] .fd-filter-clear{margin-inline-start:4px}.fd-form[data-fd-theme=fluent] .fd-filter-clear svg{width:19px;height:19px}.fd-form[data-fd-theme=fluent] .fd-list-scroll{border:0;border-radius:4px;box-shadow:0 1.6px 3.6px #0002,0 .3px .9px #0000001c}";function M(r){if(r.getElementById("fd-filter-styles"))return;let l=r.createElement("style");l.id="fd-filter-styles",l.textContent=ke;let s=r.getElementById("fd-list-styles");s?s.after(l):r.head.append(l)}var Ee=250;function ne(r){let{page:l,node:s,doc:p,el:a,labels:u,fill:oe,uid:O}=r;M(p);let B=(s.filterFields??[]).filter(e=>l.fields[e]),k=(e,t)=>{let i=(0,le.drawIcon)(p,e,r.icons);return i?.setAttribute("aria-hidden","true"),t&&i?.classList.add(t),i?[i]:[]},b="",x=new Map,w=[];for(let e of r.facets)e.kind==="field"&&B.includes(e.field)&&e.values.every(i=>i.op==="="||i.op==="contains")?x.set(e.field,e.values.map(i=>({value:i.value,label:i.label}))):w.push(e);let ae=e=>l.fields[e]?.type==="many2many"?"contains":"=",se=e=>[{any:(0,re.suggestions)(e,l,s).map(i=>({field:i.field,op:i.op,value:i.value}))}],de=()=>[...w,...B.flatMap(e=>{let t=x.get(e)??[];return t.length?[{kind:"field",field:e,label:l.fields[e].label,values:t.map(i=>({op:ae(e),value:i.value,label:i.label}))}]:[]}),...b?[{kind:"custom",label:b,filter:se(b)}]:[]],E=()=>{R(),r.onChange(de())},g=a("input",{type:"search",class:"fd-filter-keyword",placeholder:u.filterByKeyword,"aria-label":u.filterByKeyword,autocomplete:"off",enterkeyhint:"search"}),m=null,C=()=>{m&&clearTimeout(m),m=null;let e=g.value.trim();e!==b&&(b=e,E())};g.addEventListener("input",()=>{m&&clearTimeout(m),m=setTimeout(C,Ee)}),g.addEventListener("keydown",e=>{e.isComposing||(e.key==="Enter"?(e.preventDefault(),C()):e.key==="Escape"&&g.value&&(e.preventDefault(),e.stopPropagation(),g.value="",C()))});let $=`filters:${l.id}:${s.id}`,J=()=>{let e=r.preferences.get($);return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]};async function fe(e){let t=l.fields[e];if(t.type==="selection")return t.options.map(n=>({value:n.value,label:n.label}));if(t.type==="boolean")return[{value:!0,label:u.yes},{value:!1,label:u.no}];let i=r.dataSource;return t.type==="many2many"?(await i?.search?.({model:t.relation,query:"",limit:100})??[]).map(d=>({value:d.id,label:d.label})):(await i?.groups?.({model:r.model,field:e,filter:r.fixedFilter()})??[]).filter(n=>n.value!==null&&n.label!=="").map(n=>({value:n.value,label:n.label||String(n.value)}))}let z=(e,t)=>JSON.stringify(e)===JSON.stringify(t),N=[],H=e=>{for(let t of N)t!==e&&t()};function V(e,t,i){let f=()=>[...t.querySelectorAll('[role^="menuitem"]')],n=(o=!1)=>{t.hidden||(t.hidden=!0,e.setAttribute("aria-expanded","false"),o&&e.focus())},d=async(o="checked")=>{if(H(h),t.hidden=!1,e.setAttribute("aria-expanded","true"),await i(),t.hidden)return;let c=f();(o==="last"?c[c.length-1]:o==="checked"?c.find(v=>v.getAttribute("aria-checked")==="true")??c[0]:c[0])?.focus()},h=()=>n();return N.push(h),e.addEventListener("click",()=>t.hidden?void d():n()),e.addEventListener("keydown",o=>{(o.key==="ArrowDown"||o.key==="ArrowUp")&&(o.preventDefault(),d(o.key==="ArrowUp"?"last":"first"))}),t.addEventListener("keydown",o=>{let c=f(),L=c.indexOf(p.activeElement),v={ArrowDown:L+1,ArrowUp:L-1,Home:0,End:c.length-1}[o.key];v!==void 0?(o.preventDefault(),c[(v+c.length)%c.length]?.focus()):o.key===" "||o.key==="Enter"?(o.preventDefault(),p.activeElement?.click()):o.key==="Escape"?(o.preventDefault(),o.stopPropagation(),n(!0)):o.key==="Tab"&&n()}),{close:n}}let _=(e,t,i)=>{let f=a("div",{role:"menuitemcheckbox",class:"fd-filter-option",tabindex:"-1","aria-checked":String(t)},a("span",{class:"fd-filter-box","aria-hidden":"true"},...k("check")),a("span",{class:"fd-filter-option-text"},e));return f.addEventListener("click",i),f},F=B.map(e=>{let t={...l.fields[e],label:s.filterLabels?.[e]??l.fields[e].label},i=O(`${s.id}-filter-${e}`),f=a("span",{class:"fd-filter-words"}),n=a("button",{type:"button",class:"fd-filter-pick","data-field":e,"aria-haspopup":"menu","aria-expanded":"false","aria-controls":i},f,...k("chevron-down","fd-filter-chevron")),d=a("div",{class:"fd-filter-menu",role:"menu",id:i,"aria-label":oe(u.filterNamed,{label:t.label}),hidden:""}),h=[],o=()=>{let v=x.get(e)??[],pe=[...v.filter(y=>!h.some(A=>z(A.value,y.value))),...h];d.replaceChildren(...pe.map(y=>{let A=v.some(D=>z(D.value,y.value));return _(y.label,A,()=>{let D=x.get(e)??[],Y=A?D.filter(xe=>!z(xe.value,y.value)):[...D,y];Y.length?x.set(e,Y):x.delete(e);let ue=[...d.children].indexOf(p.activeElement);E(),o(),d.children[ue]?.focus()})}))},{close:c}=V(n,d,async()=>{h=await fe(e),o()}),L=a("span",{class:"fd-filter-field","data-field":e},n,d);return{field:e,def:t,button:n,words:f,holder:L,close:c}});function R(){let e=new Set(J());for(let{field:t,def:i,button:f,words:n,holder:d}of F){d.hidden=e.has(t);let h=x.get(t)??[];f.toggleAttribute("data-picked",h.length>0),n.replaceChildren(...h.length?[a("span",{class:"fd-sr-only"},`${i.label}: `),h.map(o=>o.label).join(", ")]:[i.label])}I.hidden=!b&&!w.length&&![...x.values()].some(t=>t.length)}let K=O(`${s.id}-filter-settings`),U=a("button",{type:"button",class:"fd-filter-tool","aria-label":u.filterSettings,title:u.filterSettings,"aria-haspopup":"menu","aria-expanded":"false","aria-controls":K},...k("gear")),S=a("div",{class:"fd-filter-menu fd-filter-settings",role:"menu",id:K,"aria-label":u.filterSettings,hidden:""}),q=()=>{let e=new Set(J());S.replaceChildren(...F.map(({field:t,def:i})=>_(i.label,!e.has(t),()=>{let f=e.has(t)?[...e].filter(d=>d!==t):[...e,t];r.preferences.set($,f),!e.has(t)&&x.delete(t)?E():R();let n=[...S.children].indexOf(p.activeElement);q(),S.children[n]?.focus()})))},ce=V(U,S,q),j=a("span",{class:"fd-filter-field"},U,S);j.hidden=F.length===0;let I=a("button",{type:"button",class:"fd-filter-tool fd-filter-clear","aria-label":u.clearFilters,title:u.clearFilters},...k("close"));I.addEventListener("click",()=>{b="",g.value="",x.clear(),w=[],E(),g.focus()});let T=a("div",{class:"fd-filter-bar",role:"search","data-node":`${s.id}-filters`},a("label",{class:"fd-filter-search"},...k("filter-lines","fd-filter-icon"),g),a("div",{class:"fd-filter-fields"},...F.map(e=>e.holder),j,I)),W=e=>{T.contains(e.target)||H()};return p.addEventListener("pointerdown",W),T.addEventListener("focusout",e=>{!T.contains(e.relatedTarget)&&e.relatedTarget&&H()}),R(),{element:T,add(e){let t=e.kind==="custom"?e.label:null;w=[...w.filter(i=>!(t!==null&&i.kind==="custom"&&i.label===t)),e],E()},destroy(){m&&clearTimeout(m),p.removeEventListener("pointerdown",W),ce.close();for(let e of F)e.close()}}}return ye(Fe);})();
4
+ return part; }]);
5
+ //# sourceMappingURL=fieldia.filters.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["fieldia-shared:0", "fieldia-shared:5", "../../../../fieldia.filters.ts", "../../../../libs/viewer/src/lib/filter-bar.ts", "../../../../libs/viewer/src/lib/filter-styles.ts"],
4
+ "sourcesContent": ["module.exports = __fieldia[0];", "module.exports = __fieldia[5];", "export * from \"/home/rthm/IWork/fieldia-dev/fieldia-lanes/wi-join/libs/viewer/src/lib/filters-part.ts\";", "import { suggestions, type DataSource, type Facet, type JsonValue, type ListNode, type Page, type ResolvedFilter } from '@fieldia/core';\nimport { drawIcon, type IconSet, type PreferenceStore } from '@fieldia/widgets';\nimport type { El } from './dom';\nimport { installFilterStyles } from './filter-styles';\nimport type { ViewerLabels } from './labels';\n\ntype FieldFacet = Extract<Facet, { kind: 'field' }>;\ntype Pick = { value: JsonValue; label: string };\n\nexport interface FilterBarContext {\n page: Page;\n node: ListNode;\n doc: Document;\n el: El;\n labels: ViewerLabels;\n fill: (template: string, values: Record<string, string | number>) => string;\n uid: (id: string) => string;\n icons?: IconSet;\n /** Where the fields the bar offers are kept, as the person chose them with its gear. */\n preferences: PreferenceStore;\n dataSource: DataSource | undefined;\n model: string;\n /** Conditions every search keeps: a field's values are listed from the records they let through. */\n fixedFilter: () => ResolvedFilter[];\n /** What the list starts with: a field's values of `filterFields` show picked in its list; the rest apply as they are. */\n facets: Facet[];\n onChange: (facets: Facet[]) => void;\n}\n\n/** How long typing rests before the keyword is looked for. */\nconst KEYWORD_PAUSE = 250;\n\n/**\n * A list's filter bar (`search: \"fields\"`), as a work tracker's backlog has\n * it: \"Filter by keyword\" looks in the list's search fields; each field of\n * `filterFields` has a list of its values to tick, its button in muted words\n * until some are ticked, then the words ticked; \u00D7 clears every filter; the\n * gear chooses which fields the bar offers, each by its own name where the\n * page gives one (`filterLabels`). A field's values are its\n * choices, yes and no, or those its records hold (a link's, through the data\n * source). Keys: \u2193 opens a list, the arrows move, Space ticks, Escape closes.\n */\nexport function filterBar(context: FilterBarContext) {\n const { page, node, doc, el, labels, fill, uid } = context;\n installFilterStyles(doc);\n const fields = (node.filterFields ?? []).filter((name) => page.fields[name]);\n const icon = (name: string, className?: string) => {\n const drawn = drawIcon(doc, name, context.icons);\n drawn?.setAttribute('aria-hidden', 'true');\n if (className) drawn?.classList.add(className);\n return drawn ? [drawn] : [];\n };\n\n // ---- what is asked for: a keyword, each field's values ticked, and anything else the list started with ----\n\n let keyword = '';\n const picks = new Map<string, Pick[]>();\n /** Searches this bar does not draw (the list's default filters, a map's area): they apply until cleared. */\n let others: Facet[] = [];\n for (const facet of context.facets) {\n const own = facet.kind === 'field' && fields.includes(facet.field) && facet.values.every((v) => v.op === '=' || v.op === 'contains');\n if (own) picks.set(facet.field, facet.values.map((v) => ({ value: v.value, label: v.label })));\n else others.push(facet);\n }\n\n const opFor = (field: string) => (page.fields[field]?.type === 'many2many' ? 'contains' : '=');\n /** The keyword in any of the search fields: their words, a choice by its label, a number as it is. */\n const keywordFilter = (text: string): ResolvedFilter[] => {\n const found = suggestions(text, page, node).map((s) => ({ field: s.field, op: s.op, value: s.value }));\n return [{ any: found }];\n };\n const facets = (): Facet[] => [\n ...others,\n ...fields.flatMap((field): FieldFacet[] => {\n const ticked = picks.get(field) ?? [];\n return ticked.length ? [{ kind: 'field', field, label: page.fields[field].label, values: ticked.map((p) => ({ op: opFor(field), value: p.value, label: p.label })) }] : [];\n }),\n ...(keyword ? [{ kind: 'custom' as const, label: keyword, filter: keywordFilter(keyword) }] : []),\n ];\n const changed = () => {\n drawButtons();\n context.onChange(facets());\n };\n\n // ---- the keyword ----------------------------------------------------------------------------------\n\n const input = el('input', { type: 'search', class: 'fd-filter-keyword', placeholder: labels.filterByKeyword, 'aria-label': labels.filterByKeyword, autocomplete: 'off', enterkeyhint: 'search' });\n let pause: ReturnType<typeof setTimeout> | null = null;\n const takeKeyword = () => {\n if (pause) clearTimeout(pause);\n pause = null;\n const next = input.value.trim();\n if (next === keyword) return;\n keyword = next;\n changed();\n };\n input.addEventListener('input', () => {\n if (pause) clearTimeout(pause);\n pause = setTimeout(takeKeyword, KEYWORD_PAUSE);\n });\n input.addEventListener('keydown', (event) => {\n if (event.isComposing) return;\n if (event.key === 'Enter') {\n // Never the form's Enter: a list has nothing to send.\n event.preventDefault();\n takeKeyword();\n } else if (event.key === 'Escape' && input.value) {\n event.preventDefault();\n event.stopPropagation();\n input.value = '';\n takeKeyword();\n }\n });\n\n // ---- a list of values to tick, for each field ---------------------------------------------------------\n\n /** Which fields the bar offers: all unless the person took some away with the gear. */\n const shownKey = `filters:${page.id}:${node.id}`;\n const hiddenFields = (): string[] => {\n const kept = context.preferences.get(shownKey);\n return Array.isArray(kept) ? kept.filter((name): name is string => typeof name === 'string') : [];\n };\n\n /** A field's values to tick: its choices, yes and no, or those its records hold. */\n async function valuesOf(field: string): Promise<Pick[]> {\n const def = page.fields[field];\n if (def.type === 'selection') return def.options.map((option) => ({ value: option.value, label: option.label }));\n if (def.type === 'boolean') return [{ value: true, label: labels.yes }, { value: false, label: labels.no }];\n const source = context.dataSource;\n if (def.type === 'many2many') {\n const found = (await source?.search?.({ model: def.relation, query: '', limit: 100 })) ?? [];\n return found.map((record) => ({ value: record.id, label: record.label }));\n }\n const groups = (await source?.groups?.({ model: context.model, field, filter: context.fixedFilter() })) ?? [];\n return groups.filter((group) => group.value !== null && group.label !== '').map((group) => ({ value: group.value, label: group.label || String(group.value) }));\n }\n\n const same = (a: JsonValue, b: JsonValue) => JSON.stringify(a) === JSON.stringify(b);\n const openMenus: (() => void)[] = [];\n /** Close every list but `keep`. */\n const closeOthers = (keep?: () => void) => {\n for (const close of openMenus) if (close !== keep) close();\n };\n\n function menuFor(button: HTMLButtonElement, menu: HTMLElement, load: () => Promise<void> | void) {\n const items = () => [...menu.querySelectorAll<HTMLElement>('[role^=\"menuitem\"]')];\n const close = (focusBack = false) => {\n if (menu.hidden) return;\n menu.hidden = true;\n button.setAttribute('aria-expanded', 'false');\n if (focusBack) button.focus();\n };\n const open = async (at: 'first' | 'last' | 'checked' = 'checked') => {\n closeOthers(closer);\n menu.hidden = false;\n button.setAttribute('aria-expanded', 'true');\n await load();\n if (menu.hidden) return;\n const all = items();\n const first = at === 'last' ? all[all.length - 1] : at === 'checked' ? (all.find((item) => item.getAttribute('aria-checked') === 'true') ?? all[0]) : all[0];\n first?.focus();\n };\n const closer = () => close();\n openMenus.push(closer);\n button.addEventListener('click', () => (menu.hidden ? void open() : close()));\n button.addEventListener('keydown', (event) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n void open(event.key === 'ArrowUp' ? 'last' : 'first');\n }\n });\n menu.addEventListener('keydown', (event) => {\n const all = items();\n const at = all.indexOf(doc.activeElement as HTMLElement);\n const to = ({ ArrowDown: at + 1, ArrowUp: at - 1, Home: 0, End: all.length - 1 } as Record<string, number>)[event.key];\n if (to !== undefined) {\n event.preventDefault();\n all[(to + all.length) % all.length]?.focus();\n } else if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n (doc.activeElement as HTMLElement | null)?.click();\n } else if (event.key === 'Escape') {\n event.preventDefault();\n // Only the list closes: not a dialog the list is in.\n event.stopPropagation();\n close(true);\n } else if (event.key === 'Tab') close();\n });\n return { close };\n }\n\n /** A row of the list: a box ticked or not, and the value's words. */\n const tickRow = (text: string, checked: boolean, onClick: () => void) => {\n const row = el('div', { role: 'menuitemcheckbox', class: 'fd-filter-option', tabindex: '-1', 'aria-checked': String(checked) }, el('span', { class: 'fd-filter-box', 'aria-hidden': 'true' }, ...icon('check')), el('span', { class: 'fd-filter-option-text' }, text));\n row.addEventListener('click', onClick);\n return row;\n };\n\n const dropdowns = fields.map((field) => {\n // Its own name where the page gives one (\"Iteration\" for Iteration Path): on its button, its list and the gear's.\n const def = { ...page.fields[field], label: node.filterLabels?.[field] ?? page.fields[field].label };\n const menuId = uid(`${node.id}-filter-${field}`);\n const words = el('span', { class: 'fd-filter-words' });\n const button = el('button', { type: 'button', class: 'fd-filter-pick', 'data-field': field, 'aria-haspopup': 'menu', 'aria-expanded': 'false', 'aria-controls': menuId }, words, ...icon('chevron-down', 'fd-filter-chevron'));\n const menu = el('div', { class: 'fd-filter-menu', role: 'menu', id: menuId, 'aria-label': fill(labels.filterNamed, { label: def.label }), hidden: '' });\n let known: Pick[] = [];\n const draw = () => {\n const ticked = picks.get(field) ?? [];\n // What is ticked first, though the records no longer hold it; then the rest, in their order.\n const all = [...ticked.filter((p) => !known.some((k) => same(k.value, p.value))), ...known];\n menu.replaceChildren(\n ...all.map((option) => {\n const on = ticked.some((p) => same(p.value, option.value));\n return tickRow(option.label, on, () => {\n const now = picks.get(field) ?? [];\n const next = on ? now.filter((p) => !same(p.value, option.value)) : [...now, option];\n if (next.length) picks.set(field, next);\n else picks.delete(field);\n const focused = [...menu.children].indexOf(doc.activeElement as Element);\n changed();\n draw();\n (menu.children[focused] as HTMLElement | undefined)?.focus();\n });\n })\n );\n };\n const { close } = menuFor(button, menu, async () => {\n known = await valuesOf(field);\n draw();\n });\n const holder = el('span', { class: 'fd-filter-field', 'data-field': field }, button, menu);\n return { field, def, button, words, holder, close };\n });\n\n function drawButtons() {\n const hidden = new Set(hiddenFields());\n for (const { field, def, button, words, holder } of dropdowns) {\n holder.hidden = hidden.has(field);\n const ticked = picks.get(field) ?? [];\n button.toggleAttribute('data-picked', ticked.length > 0);\n // The field's name read out before what is ticked, which alone shows: \"Work Item Type: Bug\".\n words.replaceChildren(...(ticked.length ? [el('span', { class: 'fd-sr-only' }, `${def.label}: `), ticked.map((p) => p.label).join(', ')] : [def.label]));\n }\n clear.hidden = !keyword && !others.length && ![...picks.values()].some((p) => p.length);\n }\n\n // ---- the gear: which fields the bar offers ------------------------------------------------------------\n\n const settingsId = uid(`${node.id}-filter-settings`);\n const gear = el('button', { type: 'button', class: 'fd-filter-tool', 'aria-label': labels.filterSettings, title: labels.filterSettings, 'aria-haspopup': 'menu', 'aria-expanded': 'false', 'aria-controls': settingsId }, ...icon('gear'));\n const settings = el('div', { class: 'fd-filter-menu fd-filter-settings', role: 'menu', id: settingsId, 'aria-label': labels.filterSettings, hidden: '' });\n const drawSettings = () => {\n const hidden = new Set(hiddenFields());\n settings.replaceChildren(\n ...dropdowns.map(({ field, def }) =>\n tickRow(def.label, !hidden.has(field), () => {\n const next = hidden.has(field) ? [...hidden].filter((f) => f !== field) : [...hidden, field];\n context.preferences.set(shownKey, next);\n // A field taken away from the bar no longer filters the list.\n if (!hidden.has(field) && picks.delete(field)) changed();\n else drawButtons();\n const focused = [...settings.children].indexOf(doc.activeElement as Element);\n drawSettings();\n (settings.children[focused] as HTMLElement | undefined)?.focus();\n })\n )\n );\n };\n const gearMenu = menuFor(gear, settings, drawSettings);\n const gearHolder = el('span', { class: 'fd-filter-field' }, gear, settings);\n gearHolder.hidden = dropdowns.length === 0;\n\n // ---- \u00D7 clears every filter ------------------------------------------------------------------------------\n\n const clear = el('button', { type: 'button', class: 'fd-filter-tool fd-filter-clear', 'aria-label': labels.clearFilters, title: labels.clearFilters }, ...icon('close'));\n clear.addEventListener('click', () => {\n keyword = '';\n input.value = '';\n picks.clear();\n others = [];\n changed();\n input.focus();\n });\n\n const element = el(\n 'div',\n { class: 'fd-filter-bar', role: 'search', 'data-node': `${node.id}-filters` },\n el('label', { class: 'fd-filter-search' }, ...icon('filter-lines', 'fd-filter-icon'), input),\n el('div', { class: 'fd-filter-fields' }, ...dropdowns.map((d) => d.holder), gearHolder, clear)\n );\n // A press anywhere else closes an open list.\n const outside = (event: Event) => {\n if (!element.contains(event.target as Node)) closeOthers();\n };\n doc.addEventListener('pointerdown', outside);\n element.addEventListener('focusout', (event) => {\n if (!element.contains(event.relatedTarget as Node | null) && event.relatedTarget) closeOthers();\n });\n drawButtons();\n\n return {\n element,\n /** A search put in from outside (a map's \"In this area\"): it applies with the rest, one with the same words in its place. */\n add(facet: Facet) {\n const words = facet.kind === 'custom' ? facet.label : null;\n others = [...others.filter((f) => !(words !== null && f.kind === 'custom' && f.label === words)), facet];\n changed();\n },\n destroy() {\n if (pause) clearTimeout(pause);\n doc.removeEventListener('pointerdown', outside);\n gearMenu.close();\n for (const dropdown of dropdowns) dropdown.close();\n },\n };\n}\n", "/** The filter bar (filter-bar.ts): the filters part's sheet, put after the list's own the first time a list draws one. */\nexport const FILTER_CSS = /* css */ `.fd-filter-bar{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;flex:1 1 100%;min-width:0;min-height:45px;box-sizing:border-box;padding:6px 8px 6px 16px;padding-inline:16px 8px;background:var(--fd-surface);border-radius:var(--fd-radius);box-shadow:0 3.2px 7.2px #0002,0 .6px 1.8px #0000001c}.fd-filter-search{flex:1 1 200px;min-width:0;display:flex;align-items:center;gap:8px;color:var(--fd-muted)}.fd-filter-icon{width:16px;height:16px;flex:none}.fd-filter-keyword{flex:1;min-width:0;border:0;outline:none;background:none;font:inherit;font-size:14px;color:var(--fd-text);padding:6px 0}.fd-filter-keyword::placeholder{color:var(--fd-muted);opacity:1}.fd-filter-keyword::-webkit-search-cancel-button{display:none}.fd-filter-search:focus-within{box-shadow:inset 0 -2px 0 var(--fd-focus)}.fd-filter-fields{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-inline-start:auto}.fd-filter-field{position:relative;display:inline-flex}.fd-filter-pick{all:unset;box-sizing:border-box;cursor:pointer;display:inline-flex;align-items:center;gap:8px;max-width:220px;min-height:32px;padding-inline:8px;border-radius:2px;font-size:14px;color:var(--fd-muted)}.fd-filter-pick[data-picked]{color:var(--fd-text);font-weight:600}.fd-filter-words{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-filter-chevron{width:16px;height:16px;flex:none;color:var(--fd-muted)}.fd-filter-tool{all:unset;box-sizing:border-box;cursor:pointer;display:inline-grid;place-items:center;width:32px;height:32px;border-radius:2px;color:var(--fd-muted)}.fd-filter-clear{color:var(--fd-text)}.fd-filter-tool svg{width:16px;height:16px}.fd-filter-pick:hover,.fd-filter-tool:hover,.fd-filter-pick[aria-expanded=true],.fd-filter-tool[aria-expanded=true]{background:var(--fd-page)}.fd-filter-pick:focus-visible,.fd-filter-tool:focus-visible{outline:1px solid var(--fd-focus);outline-offset:-1px}.fd-filter-menu{position:absolute;z-index:30;inset-inline-end:0;top:calc(100% + 4px);box-sizing:border-box;min-width:200px;max-width:min(320px,90vw);max-height:320px;overflow:auto;padding-block:4px;background:var(--fd-surface);border-radius:4px;box-shadow:0 3.2px 7.2px #0002,0 .6px 1.8px #0000001c}.fd-filter-option{display:flex;align-items:center;gap:10px;min-height:32px;padding-inline:12px;cursor:pointer;font-size:14px;color:var(--fd-text);outline:none}.fd-filter-option:hover{background:var(--fd-page)}.fd-filter-option:focus-visible,.fd-filter-option:focus{background:var(--fd-page);box-shadow:inset 0 0 0 1px var(--fd-focus)}.fd-filter-box{display:grid;place-items:center;width:16px;height:16px;flex:none;box-sizing:border-box;border:1px solid var(--fd-border-strong);border-radius:2px;color:transparent}.fd-filter-box svg{width:12px;height:12px}.fd-filter-option[aria-checked=true] .fd-filter-box{background:var(--fd-accent);border-color:var(--fd-accent);color:var(--fd-accent-text, #fff)}.fd-filter-option-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-form[data-fd-theme=fluent] .fd-list:has(>.fd-list-bar>.fd-filter-bar){row-gap:16px}.fd-form[data-fd-theme=fluent] .fd-filter-bar{min-height:50px;padding-block:7px 5px;padding-inline-end:10px}.fd-form[data-fd-theme=fluent] .fd-filter-fields{gap:6px}.fd-form[data-fd-theme=fluent] .fd-filter-chevron{position:relative;inset-block-start:-1px;width:22px;height:22px;margin-inline:-3px -1px;stroke-width:1.1;color:var(--fd-muted)}.fd-form[data-fd-theme=fluent] .fd-filter-tool:not(.fd-filter-clear){margin-inline-start:-5px}.fd-form[data-fd-theme=fluent] .fd-filter-tool:not(.fd-filter-clear) svg{width:13px;height:13px}.fd-form[data-fd-theme=fluent] .fd-filter-clear{margin-inline-start:4px}.fd-form[data-fd-theme=fluent] .fd-filter-clear svg{width:19px;height:19px}.fd-form[data-fd-theme=fluent] .fd-list-scroll{border:0;border-radius:4px;box-shadow:0 1.6px 3.6px #0002,0 .3px .9px #0000001c}`;\n\n/** The sheet in a document, once: after the list's own (list-styles.ts), whose rules it adds to. */\nexport function installFilterStyles(doc: Document): void {\n if (doc.getElementById('fd-filter-styles')) return;\n const style = doc.createElement('style');\n style.id = 'fd-filter-styles';\n style.textContent = FILTER_CSS;\n const list = doc.getElementById('fd-list-styles');\n if (list) list.after(style);\n else doc.head.append(style);\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["require__", "__commonJSMin", "exports", "module", "require__", "__commonJSMin", "exports", "module", "fieldia_filters_exports", "__export", "filterBar", "installFilterStyles", "import_core", "import_widgets", "FILTER_CSS", "installFilterStyles", "doc", "style", "list", "KEYWORD_PAUSE", "filterBar", "context", "page", "node", "doc", "el", "labels", "fill", "uid", "installFilterStyles", "fields", "name", "icon", "className", "drawn", "keyword", "picks", "others", "facet", "v", "opFor", "field", "keywordFilter", "text", "s", "facets", "ticked", "p", "changed", "drawButtons", "input", "pause", "takeKeyword", "next", "event", "shownKey", "hiddenFields", "kept", "valuesOf", "def", "option", "source", "record", "group", "same", "a", "b", "openMenus", "closeOthers", "keep", "close", "menuFor", "button", "menu", "load", "items", "focusBack", "open", "at", "closer", "all", "item", "to", "tickRow", "checked", "onClick", "row", "dropdowns", "menuId", "words", "known", "draw", "k", "on", "now", "focused", "holder", "hidden", "clear", "settingsId", "gear", "settings", "drawSettings", "f", "gearMenu", "gearHolder", "element", "d", "outside", "dropdown"]
7
+ }
@@ -1,3 +1,3 @@
1
- /*! Fieldia 0.19.1 · French · MIT · https://fieldia.dev */
2
- "use strict";(()=>{var t={required:"{label} est obligatoire",maxLength:"{max} caract\xE8res au maximum",pattern:"{label} n'a pas le format attendu",text:"{label} doit \xEAtre du texte",number:"{label} doit \xEAtre un nombre",integer:"{label} doit \xEAtre un nombre entier",min:"{label} doit \xEAtre au moins {min}",max:"{label} doit \xEAtre au plus {max}",decimals:"{digits} d\xE9cimales au maximum",boolean:"{label} doit \xEAtre oui ou non",dateFormat:"Format de date invalide (attendu AAAA-MM-JJ)",dateInvalid:"Date invalide (v\xE9rifiez le mois et le jour)",datetimeFormat:"Format de date et heure invalide (attendu AAAA-MM-JJTHH:MM:SS)",datetimeInvalid:"Date ou heure invalide",choice:"Doit \xEAtre parmi : {options}",choiceOrOther:"Doit \xEAtre parmi : {options}, ou une r\xE9ponse libre",matrix:"{label} attend une r\xE9ponse par ligne",matrixRow:"Les lignes sont : {rows}",matrixRows:"R\xE9pondez \xE0 chaque ligne de {label}",choices:"{label} doit \xEAtre une liste de choix",record:"{label} doit \xEAtre un enregistrement",records:"{label} doit \xEAtre une liste d'enregistrements",reference:"{label} doit pointer vers {models}",file:"{label} doit \xEAtre un fichier",fileSize:"{label} d\xE9passe {size}",fileType:"{label} doit \xEAtre un fichier {types}",minFiles:"Ajoutez au moins {min} fichiers \xE0 {label}",maxFiles:"Trop de fichiers pour {label} : {max} au plus",minLength:"{label} doit comporter au moins {min} caract\xE8res",endsWith:"{label} doit se terminer par {ending}",atLeast:"Choisissez au moins {min} pour {label}",atMost:"Choisissez au plus {max} pour {label}",datePast:"{label} doit \xEAtre dans le pass\xE9",dateFuture:"{label} doit \xEAtre dans le futur",holds:"{label} ne concorde pas avec les autres r\xE9ponses",distinct:"{column} : {value} figure sur plus d\u2019une ligne de {label}",or:"ou",tick:"Cochez cette case pour continuer",email:"Saisissez une adresse e-mail, par exemple nom@exemple.com",url:"Saisissez une adresse web, par exemple exemple.com",phone:"Saisissez un num\xE9ro de t\xE9l\xE9phone, par exemple +33 1 23 45 67 89",time:"Saisissez une heure, par exemple 14:30",before:"{label} : au plus t\xF4t {min}",after:"{label} : au plus tard {max}",weekday:"{label} ne peut pas tomber un {days}",minLines:"Ajoutez au moins {min} \xE0 {label}",maxLines:"Trop d\u2019\xE9l\xE9ments dans {label} : {max} au plus",addressParts:"Adresse|Compl\xE9ment d\u2019adresse|Ville|\xC9tat ou r\xE9gion|Code postal|Pays",archiveConfirm:"Voulez-vous vraiment archiver cet enregistrement ?",deleteConfirm:"Voulez-vous vraiment supprimer cet enregistrement ?",locale:"fr"};var n={search:"Rechercher\u2026",noResults:"Aucun r\xE9sultat",remove:"Retirer {name}",clear:"Effacer {label}",addLine:"Ajouter une ligne",addSection:"Ajouter une section",addNote:"Ajouter une note",deleteLine:"Supprimer la ligne",lineN:"ligne {n}",noLines:"Aucune ligne pour l\u2019instant",total:"Total",lineProblem:"Ligne {n} : {message}",moreProblems:"et {n} de plus",chooseColumns:"Choisir les colonnes",createNamed:"Cr\xE9er \xAB {name} \xBB",createAndEdit:"Cr\xE9er et modifier\u2026",searchMore:"Rechercher plus\u2026",openNamed:"Ouvrir {name}",openLine:"Ouvrir la ligne",chooseLine:"Choisir {name}",chooseAllLines:"Choisir toutes les lignes",linesChosen:"Choisies : {n}",moreSteps:"Plus",timeInStep:"{time} \xE0 cette \xE9tape",chooseDate:"Choisir une date",other:"Autre :",otherAnswer:"Votre propre r\xE9ponse",clearSelection:"Effacer la s\xE9lection",previousMonth:"Mois pr\xE9c\xE9dent",nextMonth:"Mois suivant",weekShort:"Sem.",week:"Semaine",formatting:"Mise en forme",bold:"Gras",italic:"Italique",underline:"Soulign\xE9",textStyle:"Style du texte",paragraph:"Paragraphe",heading:"Titre",subheading:"Sous-titre",bulletList:"Liste \xE0 puces",numberList:"Liste num\xE9rot\xE9e",alignLeft:"Aligner \xE0 gauche",alignCenter:"Centrer",alignRight:"Aligner \xE0 droite",link:"Lien",linkAddress:"Adresse du lien",applyLink:"Appliquer",removeLink:"Supprimer le lien",upload:"T\xE9l\xE9verser un fichier",uploadImage:"Ajouter une photo",replace:"Remplacer",removeFile:"Retirer",dropHere:"ou d\xE9posez-le ici",addFiles:"Ajouter des fichiers",addPhotos:"Ajouter des photos",dropThem:"ou d\xE9posez-les ici",upToSize:"jusqu\u2019\xE0 {size}",upToEach:"jusqu\u2019\xE0 {size} par fichier",upToFiles:"jusqu\u2019\xE0 {max} fichiers",fileCount:"{n} fichiers",oneFile:"1 fichier",fileCountOf:"{n} fichiers sur {max}",tooMany:"{max} fichiers au plus : {n} non ajout\xE9(s)",alreadyAdded:"{name} : d\xE9j\xE0 ajout\xE9",removeAsk:"Retirer {name} ?",keep:"Garder",previous:"Pr\xE9c\xE9dent",next:"Suivant",download:"T\xE9l\xE9charger",close:"Fermer",fileAt:"{n} sur {total}",noPreview:"Pas d\u2019aper\xE7u pour ce type de fichier",showFilesAs:"Affichage des fichiers",asList:"Liste",asCards:"Cartes",asThumbnails:"Vignettes",invalidJson:"JSON invalide",invalidJsonAt:"JSON invalide : ligne {line}, colonne {column}",signaturePad:"Zone de signature : dessinez votre signature",signHere:"Signez ici",typeSignature:"Ou tapez votre nom",clearDrawing:"Effacer",undo:"Annuler",uploadSignature:"Importer une image",notAnswered:"Pas de r\xE9ponse",moveUp:"Monter {label}",moveDown:"Descendre {label}",movedTo:"{label} est maintenant en position {n} sur {total}",addressStreet:"Adresse",addressCity:"Ville",addressLine2:"Compl\xE9ment d\u2019adresse",addressRegion:"\xC9tat ou r\xE9gion",addressPostcode:"Code postal",addressCountry:"Pays",entry:"Entr\xE9e {n}",addAnother:"En ajouter un autre",copy:"Copier {name}",removed:"{name} retir\xE9",loadingChoices:"Chargement des choix\u2026",choicesFailed:"Recharger les choix",notOffered:"{name} : plus propos\xE9",yes:"Oui",no:"Non",upTo:"Jusqu\u2019\xE0 {n}",keepOrder:"Garder cet ordre",ofMax:"{n} sur {max}",charactersLeft:"Caract\xE8res restants : {n}",colourNames:"Aucune couleur|Rouge|Orange|Jaune|Cyan|Pourpre|Amande|Bleu canard|Bleu|Framboise|Vert|Violet",copyValue:"Copier",copied:"Copi\xE9",noDocument:"Pas encore de document",openInNewTab:"Ouvrir dans un nouvel onglet",account:"Compte",share:"Pourcentage",addAccount:"Ajouter un compte",sharesOff:"Les parts font {n}, pas 100 %",untaxed:"Montant hors taxes",paidOn:"Pay\xE9 le {date}",amountDue:"Montant d\xFB",paymentOf:"Paiement de {amount}",journal:"Journal",memo:"Libell\xE9",openPayment:"Ouvrir",addProperty:"Ajouter une propri\xE9t\xE9",propertyName:"Nom de la propri\xE9t\xE9",propertyType:"Type",propertyTypes:"Texte|Texte long|Nombre entier|Nombre|Oui ou non|Date",add:"Ajouter",cancel:"Annuler",loading:"Chargement\u2026",perDay:"/jour",perNight:"/nuit",perWeek:"/semaine",perMonth:"/mois",perYear:"/an"};var o={save:"Enregistrer",edit:"Modifier",done:"Termin\xE9",discard:"Annuler les modifications",saving:"Enregistrement\u2026",saved:"Enregistr\xE9",submit:"Envoyer",next:"Suivant",back:"Retour",skip:"Passer",steps:"\xC9tapes",stepOf:"\xC9tape {n} sur {total}",submitted:"Merci. Vos r\xE9ponses ont \xE9t\xE9 envoy\xE9es.",submitAnother:"Envoyer une autre r\xE9ponse",draftFound:"Vous avez des r\xE9ponses non enregistr\xE9es du {time}.",restore:"Restaurer",discardDraft:"Ignorer",ok:"OK",cancel:"Annuler",loading:"Chargement\u2026",saveClose:"Enregistrer et fermer",close:"Fermer",discardChanges:"Abandonner vos modifications ?",dismiss:"Masquer",helpFor:"Aide sur {label}",quietHint:"Ajouter {label}",quietAnswer:"Votre r\xE9ponse",locked:"Verrouill\xE9 : {label}",retry:"R\xE9essayer",notSaved:"Non enregistr\xE9",notSent:"Non envoy\xE9",checkFields:"{what}. \xC0 v\xE9rifier : {fields}",offline:"Le serveur est injoignable. Vos modifications sont toujours l\xE0.",previousPage:"Page pr\xE9c\xE9dente",nextPage:"Page suivante",range:"{from}\u2013{to} / {total}",selected:"{n} s\xE9lectionn\xE9(s)",clearSelection:"D\xE9s\xE9lectionner",selectAll:"Tout s\xE9lectionner",showAs:"Afficher en",viewList:"Liste",viewMap:"Carte",viewBoth:"Liste et carte",selectRecord:"S\xE9lectionner {name}",noRecords:"Aucun enregistrement ne correspond.",loadFailed:"Impossible de charger les enregistrements.",search:"Rechercher\u2026",searchLabel:"Rechercher",searchFor:"Rechercher {field} : {text}",searchOptions:"Options de recherche",filters:"Filtres",groupBy:"Regrouper par",favourites:"Favoris",or:"ou",removeFacet:"Retirer {label}",addCustomFilter:"Ajouter un filtre personnalis\xE9",field:"Champ",condition:"Condition",value:"Valeur",apply:"Appliquer",saveSearch:"Enregistrer la recherche",searchName:"Nom de la recherche",useByDefault:"Utiliser par d\xE9faut",deleteFavourite:"Supprimer {name}",noFavourites:"Aucune recherche enregistr\xE9e.",opIs:"est",opIsNot:"n\u2019est pas",opContains:"contient",opGreater:"sup\xE9rieur \xE0",opLess:"inf\xE9rieur \xE0",opSet:"est d\xE9fini",opNotSet:"n\u2019est pas d\xE9fini",yes:"Oui",no:"Non",none:"Aucun",loadMore:"Afficher {n} de plus",formMissing:"Le formulaire enregistr\xE9 \xAB {page} \xBB est introuvable.",formInItself:"Le formulaire enregistr\xE9 \xAB {page} \xBB n\u2019est pas affich\xE9 ici : il serait plac\xE9 dans lui-m\xEAme ({chain}).",formNotPlaceable:"Le formulaire enregistr\xE9 \xAB {page} \xBB ne peut pas \xEAtre plac\xE9 ici : seul un formulaire de sections ou d\u2019onglets le peut.",formBroken:"Le formulaire enregistr\xE9 \xAB {page} \xBB ne peut pas \xEAtre affich\xE9.",pageMissing:"La page \xAB {page} \xBB est introuvable.",actions:"Actions",print:"Imprimer",archive:"Archiver",unarchive:"D\xE9sarchiver",duplicate:"Dupliquer",delete:"Supprimer",breadcrumbs:"Fil d\u2019Ariane",newRecord:"Nouveau",records:"Enregistrements",recordAt:"{n} / {total}",previousRecord:"Enregistrement pr\xE9c\xE9dent",nextRecord:"Enregistrement suivant",attachment:"Pi\xE8ce jointe : {name}",openAttachment:"Ouvrir",previousAttachment:"Pi\xE8ce jointe pr\xE9c\xE9dente",nextAttachment:"Pi\xE8ce jointe suivante"};function s(i,a){let e=globalThis,r=e.Fieldia;if(!r?.addLanguage){(e.FieldiaLanguages??(e.FieldiaLanguages=[])).push([i,a]);return}r.VERSION!=="0.19.1"&&console.warn(`Fieldia: fieldia.${i}.js is version 0.19.1 and fieldia.js is ${r.VERSION}: load the same version of both, or some words may show in English.`),r.addLanguage(i,a)}s("fr",{messages:t,widgets:n,viewer:o});})();
1
+ /*! Fieldia 0.20.0 · French · MIT · https://fieldia.dev */
2
+ "use strict";(()=>{var a={required:"{label} est obligatoire",maxLength:"{max} caract\xE8res au maximum",pattern:"{label} n'a pas le format attendu",text:"{label} doit \xEAtre du texte",number:"{label} doit \xEAtre un nombre",integer:"{label} doit \xEAtre un nombre entier",min:"{label} doit \xEAtre au moins {min}",max:"{label} doit \xEAtre au plus {max}",decimals:"{digits} d\xE9cimales au maximum",boolean:"{label} doit \xEAtre oui ou non",dateFormat:"Format de date invalide (attendu AAAA-MM-JJ)",dateInvalid:"Date invalide (v\xE9rifiez le mois et le jour)",datetimeFormat:"Format de date et heure invalide (attendu AAAA-MM-JJTHH:MM:SS)",datetimeInvalid:"Date ou heure invalide",choice:"Doit \xEAtre parmi : {options}",choiceOrOther:"Doit \xEAtre parmi : {options}, ou une r\xE9ponse libre",matrix:"{label} attend une r\xE9ponse par ligne",matrixRow:"Les lignes sont : {rows}",matrixRows:"R\xE9pondez \xE0 chaque ligne de {label}",choices:"{label} doit \xEAtre une liste de choix",record:"{label} doit \xEAtre un enregistrement",records:"{label} doit \xEAtre une liste d'enregistrements",reference:"{label} doit pointer vers {models}",file:"{label} doit \xEAtre un fichier",fileSize:"{label} d\xE9passe {size}",fileType:"{label} doit \xEAtre un fichier {types}",minFiles:"Ajoutez au moins {min} fichiers \xE0 {label}",maxFiles:"Trop de fichiers pour {label} : {max} au plus",minLength:"{label} doit comporter au moins {min} caract\xE8res",endsWith:"{label} doit se terminer par {ending}",atLeast:"Choisissez au moins {min} pour {label}",atMost:"Choisissez au plus {max} pour {label}",datePast:"{label} doit \xEAtre dans le pass\xE9",dateFuture:"{label} doit \xEAtre dans le futur",holds:"{label} ne concorde pas avec les autres r\xE9ponses",distinct:"{column} : {value} figure sur plus d\u2019une ligne de {label}",or:"ou",tick:"Cochez cette case pour continuer",email:"Saisissez une adresse e-mail, par exemple nom@exemple.com",url:"Saisissez une adresse web, par exemple exemple.com",phone:"Saisissez un num\xE9ro de t\xE9l\xE9phone, par exemple +33 1 23 45 67 89",time:"Saisissez une heure, par exemple 14:30",before:"{label} : au plus t\xF4t {min}",after:"{label} : au plus tard {max}",weekday:"{label} ne peut pas tomber un {days}",minLines:"Ajoutez au moins {min} \xE0 {label}",maxLines:"Trop d\u2019\xE9l\xE9ments dans {label} : {max} au plus",addressParts:"Adresse|Compl\xE9ment d\u2019adresse|Ville|\xC9tat ou r\xE9gion|Code postal|Pays",archiveConfirm:"Voulez-vous vraiment archiver cet enregistrement ?",deleteConfirm:"Voulez-vous vraiment supprimer cet enregistrement ?",locale:"fr"};var n={search:"Rechercher\u2026",noResults:"Aucun r\xE9sultat",remove:"Retirer {name}",clear:"Effacer {label}",addLine:"Ajouter une ligne",addSection:"Ajouter une section",addNote:"Ajouter une note",deleteLine:"Supprimer la ligne",lineN:"ligne {n}",noLines:"Aucune ligne pour l\u2019instant",total:"Total",lineProblem:"Ligne {n} : {message}",moreProblems:"et {n} de plus",chooseColumns:"Choisir les colonnes",createNamed:"Cr\xE9er \xAB {name} \xBB",createAndEdit:"Cr\xE9er et modifier\u2026",searchMore:"Rechercher plus\u2026",suggestions:"Suggestions",expandNamed:"D\xE9velopper {name}",collapseNamed:"R\xE9duire {name}",addNamed:"Ajouter {label}",openNamed:"Ouvrir {name}",openLine:"Ouvrir la ligne",chooseLine:"Choisir {name}",chooseAllLines:"Choisir toutes les lignes",linesChosen:"Choisies : {n}",moreSteps:"Plus",timeInStep:"{time} \xE0 cette \xE9tape",chooseDate:"Choisir une date",other:"Autre :",otherAnswer:"Votre propre r\xE9ponse",clearSelection:"Effacer la s\xE9lection",previousMonth:"Mois pr\xE9c\xE9dent",nextMonth:"Mois suivant",weekShort:"Sem.",week:"Semaine",formatting:"Mise en forme",bold:"Gras",italic:"Italique",underline:"Soulign\xE9",textStyle:"Style du texte",paragraph:"Paragraphe",heading:"Titre",subheading:"Sous-titre",bulletList:"Liste \xE0 puces",numberList:"Liste num\xE9rot\xE9e",alignLeft:"Aligner \xE0 gauche",alignCenter:"Centrer",alignRight:"Aligner \xE0 droite",link:"Lien",linkAddress:"Adresse du lien",applyLink:"Appliquer",removeLink:"Supprimer le lien",strike:"Barr\xE9",highlight:"Surligner",textColour:"Couleur du texte",emoji:"\xC9moji",indent:"Augmenter le retrait",outdent:"Diminuer le retrait",textSize:"Taille du texte",code:"Code",mention:"Mentionner une personne",linkRecordNamed:"Lier {kind}",clearFormatting:"Effacer la mise en forme",image:"Ins\xE9rer une image",moreTools:"Plus",switchToMarkdown:"passer \xE0 l\u2019\xE9diteur Markdown",switchToRich:"passer \xE0 l\u2019\xE9diteur de texte enrichi",markdownSupported:"Markdown pris en charge.",pasteOrSelect:"Collez ou s\xE9lectionnez des fichiers \xE0 ins\xE9rer.",preview:"Aper\xE7u",editNamed:"Modifier {name}",doneEditing:"Termin\xE9",maximiseNamed:"Agrandir {name}",foldNamed:"R\xE9duire {name}",unfoldNamed:"D\xE9velopper {name}",addLink:"Ajouter un lien",existingItem:"\xC9l\xE9ment existant",newItem:"Nouvel \xE9l\xE9ment",formattingLost:"Une partie de la mise en forme ne peut pas s\u2019\xE9crire en Markdown et sera perdue. Changer quand m\xEAme ?",taskList:"Liste de contr\xF4le",cursorInLink:"Placez d\u2019abord le curseur dans un lien.",attachFile:"Joindre un fichier",switchAnyway:"Changer",headingLevel:"Titre {n}",upload:"T\xE9l\xE9verser un fichier",uploadImage:"Ajouter une photo",replace:"Remplacer",removeFile:"Retirer",dropHere:"ou d\xE9posez-le ici",addFiles:"Ajouter des fichiers",addPhotos:"Ajouter des photos",dropThem:"ou d\xE9posez-les ici",upToSize:"jusqu\u2019\xE0 {size}",upToEach:"jusqu\u2019\xE0 {size} par fichier",upToFiles:"jusqu\u2019\xE0 {max} fichiers",fileCount:"{n} fichiers",oneFile:"1 fichier",fileCountOf:"{n} fichiers sur {max}",tooMany:"{max} fichiers au plus : {n} non ajout\xE9(s)",alreadyAdded:"{name} : d\xE9j\xE0 ajout\xE9",removeAsk:"Retirer {name} ?",keep:"Garder",previous:"Pr\xE9c\xE9dent",next:"Suivant",download:"T\xE9l\xE9charger",close:"Fermer",fileAt:"{n} sur {total}",noPreview:"Pas d\u2019aper\xE7u pour ce type de fichier",showFilesAs:"Affichage des fichiers",asList:"Liste",asCards:"Cartes",asThumbnails:"Vignettes",invalidJson:"JSON invalide",invalidJsonAt:"JSON invalide : ligne {line}, colonne {column}",signaturePad:"Zone de signature : dessinez votre signature",signHere:"Signez ici",typeSignature:"Ou tapez votre nom",clearDrawing:"Effacer",undo:"Annuler",uploadSignature:"Importer une image",notAnswered:"Pas de r\xE9ponse",moveUp:"Monter {label}",moveDown:"Descendre {label}",movedTo:"{label} est maintenant en position {n} sur {total}",addressStreet:"Adresse",addressCity:"Ville",addressLine2:"Compl\xE9ment d\u2019adresse",addressRegion:"\xC9tat ou r\xE9gion",addressPostcode:"Code postal",addressCountry:"Pays",entry:"Entr\xE9e {n}",addAnother:"En ajouter un autre",copy:"Copier {name}",removed:"{name} retir\xE9",loadingChoices:"Chargement des choix\u2026",choicesFailed:"Recharger les choix",notOffered:"{name} : plus propos\xE9",yes:"Oui",no:"Non",upTo:"Jusqu\u2019\xE0 {n}",keepOrder:"Garder cet ordre",ofMax:"{n} sur {max}",charactersLeft:"Caract\xE8res restants : {n}",colourNames:"Aucune couleur|Rouge|Orange|Jaune|Cyan|Pourpre|Amande|Bleu canard|Bleu|Framboise|Vert|Violet",copyValue:"Copier",copied:"Copi\xE9",noDocument:"Pas encore de document",openInNewTab:"Ouvrir dans un nouvel onglet",account:"Compte",share:"Pourcentage",addAccount:"Ajouter un compte",sharesOff:"Les parts font {n}, pas 100 %",untaxed:"Montant hors taxes",paidOn:"Pay\xE9 le {date}",amountDue:"Montant d\xFB",paymentOf:"Paiement de {amount}",journal:"Journal",memo:"Libell\xE9",openPayment:"Ouvrir",addProperty:"Ajouter une propri\xE9t\xE9",propertyName:"Nom de la propri\xE9t\xE9",propertyType:"Type",propertyTypes:"Texte|Texte long|Nombre entier|Nombre|Oui ou non|Date",add:"Ajouter",cancel:"Annuler",loading:"Chargement\u2026",perDay:"/jour",perNight:"/nuit",perWeek:"/semaine",perMonth:"/mois",perYear:"/an"};var o={save:"Enregistrer",edit:"Modifier",done:"Termin\xE9",discard:"Annuler les modifications",saving:"Enregistrement\u2026",saved:"Enregistr\xE9",submit:"Envoyer",next:"Suivant",back:"Retour",skip:"Passer",steps:"\xC9tapes",stepOf:"\xC9tape {n} sur {total}",submitted:"Merci. Vos r\xE9ponses ont \xE9t\xE9 envoy\xE9es.",submitAnother:"Envoyer une autre r\xE9ponse",draftFound:"Vous avez des r\xE9ponses non enregistr\xE9es du {time}.",restore:"Restaurer",discardDraft:"Ignorer",ok:"OK",cancel:"Annuler",loading:"Chargement\u2026",saveClose:"Enregistrer et fermer",close:"Fermer",maximise:"Agrandir",restoreSize:"Restaurer",resize:"Redimensionner",copyTitle:"Copier le titre",titleCopied:"Titre copi\xE9",moreActions:"Autres actions",optionsFor:"Options de {label}",updatedBy:"Mis \xE0 jour par {name} : {date}",nothingChanged:"Rien n\u2019a chang\xE9.",countOf:"{label}, {count}",discardChanges:"Abandonner vos modifications ?",dismiss:"Masquer",helpFor:"Aide sur {label}",quietHint:"Ajouter {label}",quietAnswer:"Votre r\xE9ponse",locked:"Verrouill\xE9 : {label}",retry:"R\xE9essayer",notSaved:"Non enregistr\xE9",notSent:"Non envoy\xE9",checkFields:"{what}. \xC0 v\xE9rifier : {fields}",offline:"Le serveur est injoignable. Vos modifications sont toujours l\xE0.",previousPage:"Page pr\xE9c\xE9dente",nextPage:"Page suivante",range:"{from}\u2013{to} / {total}",selected:"{n} s\xE9lectionn\xE9(s)",clearSelection:"D\xE9s\xE9lectionner",selectAll:"Tout s\xE9lectionner",showAs:"Afficher en",viewList:"Liste",viewMap:"Carte",viewBoth:"Liste et carte",selectRecord:"S\xE9lectionner {name}",noRecords:"Aucun enregistrement ne correspond.",loadFailed:"Impossible de charger les enregistrements.",search:"Rechercher\u2026",searchLabel:"Rechercher",searchFor:"Rechercher {field} : {text}",searchOptions:"Options de recherche",filters:"Filtres",groupBy:"Regrouper par",favourites:"Favoris",or:"ou",removeFacet:"Retirer {label}",addCustomFilter:"Ajouter un filtre personnalis\xE9",field:"Champ",condition:"Condition",value:"Valeur",apply:"Appliquer",saveSearch:"Enregistrer la recherche",searchName:"Nom de la recherche",useByDefault:"Utiliser par d\xE9faut",deleteFavourite:"Supprimer {name}",noFavourites:"Aucune recherche enregistr\xE9e.",opIs:"est",opIsNot:"n\u2019est pas",opContains:"contient",opGreater:"sup\xE9rieur \xE0",opLess:"inf\xE9rieur \xE0",opSet:"est d\xE9fini",opNotSet:"n\u2019est pas d\xE9fini",yes:"Oui",no:"Non",none:"Aucun",loadMore:"Afficher {n} de plus",filterByKeyword:"Filtrer par mot-cl\xE9",clearFilters:"Effacer les filtres",expandAll:"Tout d\xE9velopper",collapseAll:"Tout r\xE9duire",filterNamed:"Filtrer par {label}",filterSettings:"Param\xE8tres des filtres",formMissing:"Le formulaire enregistr\xE9 \xAB {page} \xBB est introuvable.",formInItself:"Le formulaire enregistr\xE9 \xAB {page} \xBB n\u2019est pas affich\xE9 ici : il serait plac\xE9 dans lui-m\xEAme ({chain}).",formNotPlaceable:"Le formulaire enregistr\xE9 \xAB {page} \xBB ne peut pas \xEAtre plac\xE9 ici : seul un formulaire de sections ou d\u2019onglets le peut.",formBroken:"Le formulaire enregistr\xE9 \xAB {page} \xBB ne peut pas \xEAtre affich\xE9.",pageMissing:"La page \xAB {page} \xBB est introuvable.",actions:"Actions",print:"Imprimer",archive:"Archiver",unarchive:"D\xE9sarchiver",duplicate:"Dupliquer",delete:"Supprimer",breadcrumbs:"Fil d\u2019Ariane",newRecord:"Nouveau",records:"Enregistrements",recordAt:"{n} / {total}",previousRecord:"Enregistrement pr\xE9c\xE9dent",nextRecord:"Enregistrement suivant",attachment:"Pi\xE8ce jointe : {name}",openAttachment:"Ouvrir",previousAttachment:"Pi\xE8ce jointe pr\xE9c\xE9dente",nextAttachment:"Pi\xE8ce jointe suivante"};function s(i,t){let e=globalThis,r=e.Fieldia;if(!r?.addLanguage){(e.FieldiaLanguages??(e.FieldiaLanguages=[])).push([i,t]);return}r.VERSION!=="0.20.0"&&console.warn(`Fieldia: fieldia.${i}.js is version 0.20.0 and fieldia.js is ${r.VERSION}: load the same version of both, or some words may show in English.`),r.addLanguage(i,t)}s("fr",{messages:a,widgets:n,viewer:o});})();
3
3
  //# sourceMappingURL=fieldia.fr.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../libs/core/src/lib/record/locales/fr.ts", "../../../../libs/widgets/src/lib/locales/fr.ts", "../../../../libs/viewer/src/lib/locales/fr.ts", "../../../../tools/script-language.ts", "../../../../fieldia.fr.ts"],
4
- "sourcesContent": ["import type { Messages } from '../messages';\n\n/** The validation messages in French. */\nexport const fr: Messages = {\n required: '{label} est obligatoire',\n maxLength: '{max} caract\u00E8res au maximum',\n pattern: \"{label} n'a pas le format attendu\",\n text: '{label} doit \u00EAtre du texte',\n number: '{label} doit \u00EAtre un nombre',\n integer: '{label} doit \u00EAtre un nombre entier',\n min: '{label} doit \u00EAtre au moins {min}',\n max: '{label} doit \u00EAtre au plus {max}',\n decimals: '{digits} d\u00E9cimales au maximum',\n boolean: '{label} doit \u00EAtre oui ou non',\n dateFormat: 'Format de date invalide (attendu AAAA-MM-JJ)',\n dateInvalid: 'Date invalide (v\u00E9rifiez le mois et le jour)',\n datetimeFormat: 'Format de date et heure invalide (attendu AAAA-MM-JJTHH:MM:SS)',\n datetimeInvalid: 'Date ou heure invalide',\n choice: 'Doit \u00EAtre parmi : {options}',\n choiceOrOther: 'Doit \u00EAtre parmi : {options}, ou une r\u00E9ponse libre',\n matrix: '{label} attend une r\u00E9ponse par ligne',\n matrixRow: 'Les lignes sont : {rows}',\n matrixRows: 'R\u00E9pondez \u00E0 chaque ligne de {label}',\n choices: '{label} doit \u00EAtre une liste de choix',\n record: '{label} doit \u00EAtre un enregistrement',\n records: \"{label} doit \u00EAtre une liste d'enregistrements\",\n reference: '{label} doit pointer vers {models}',\n file: '{label} doit \u00EAtre un fichier',\n fileSize: '{label} d\u00E9passe {size}',\n fileType: '{label} doit \u00EAtre un fichier {types}',\n minFiles: 'Ajoutez au moins {min} fichiers \u00E0 {label}',\n maxFiles: 'Trop de fichiers pour {label} : {max} au plus',\n minLength: '{label} doit comporter au moins {min} caract\u00E8res',\n endsWith: '{label} doit se terminer par {ending}',\n atLeast: 'Choisissez au moins {min} pour {label}',\n atMost: 'Choisissez au plus {max} pour {label}',\n datePast: '{label} doit \u00EAtre dans le pass\u00E9',\n dateFuture: '{label} doit \u00EAtre dans le futur',\n holds: '{label} ne concorde pas avec les autres r\u00E9ponses',\n distinct: '{column} : {value} figure sur plus d\u2019une ligne de {label}',\n or: 'ou',\n tick: 'Cochez cette case pour continuer',\n email: 'Saisissez une adresse e-mail, par exemple nom@exemple.com',\n url: 'Saisissez une adresse web, par exemple exemple.com',\n phone: 'Saisissez un num\u00E9ro de t\u00E9l\u00E9phone, par exemple +33 1 23 45 67 89',\n time: 'Saisissez une heure, par exemple 14:30',\n before: '{label} : au plus t\u00F4t {min}',\n after: '{label} : au plus tard {max}',\n weekday: '{label} ne peut pas tomber un {days}',\n minLines: 'Ajoutez au moins {min} \u00E0 {label}',\n maxLines: 'Trop d\u2019\u00E9l\u00E9ments dans {label} : {max} au plus',\n addressParts: 'Adresse|Compl\u00E9ment d\u2019adresse|Ville|\u00C9tat ou r\u00E9gion|Code postal|Pays',\n archiveConfirm: 'Voulez-vous vraiment archiver cet enregistrement ?',\n deleteConfirm: 'Voulez-vous vraiment supprimer cet enregistrement ?',\n locale: 'fr',\n};\n", "import type { WidgetLabels } from '../labels';\n\n/** The widgets\u2019 own words in French. */\nexport const fr: WidgetLabels = {\n search: 'Rechercher\u2026',\n noResults: 'Aucun r\u00E9sultat',\n remove: 'Retirer {name}',\n clear: 'Effacer {label}',\n addLine: 'Ajouter une ligne',\n addSection: 'Ajouter une section',\n addNote: 'Ajouter une note',\n deleteLine: 'Supprimer la ligne',\n lineN: 'ligne {n}',\n noLines: 'Aucune ligne pour l\u2019instant',\n total: 'Total',\n lineProblem: 'Ligne {n} : {message}',\n moreProblems: 'et {n} de plus',\n chooseColumns: 'Choisir les colonnes',\n createNamed: 'Cr\u00E9er \u00AB {name} \u00BB',\n createAndEdit: 'Cr\u00E9er et modifier\u2026',\n searchMore: 'Rechercher plus\u2026',\n openNamed: 'Ouvrir {name}',\n openLine: 'Ouvrir la ligne',\n chooseLine: 'Choisir {name}',\n chooseAllLines: 'Choisir toutes les lignes',\n linesChosen: 'Choisies : {n}',\n moreSteps: 'Plus',\n timeInStep: '{time} \u00E0 cette \u00E9tape',\n chooseDate: 'Choisir une date',\n other: 'Autre :',\n otherAnswer: 'Votre propre r\u00E9ponse',\n clearSelection: 'Effacer la s\u00E9lection',\n previousMonth: 'Mois pr\u00E9c\u00E9dent',\n nextMonth: 'Mois suivant',\n weekShort: 'Sem.',\n week: 'Semaine',\n formatting: 'Mise en forme',\n bold: 'Gras',\n italic: 'Italique',\n underline: 'Soulign\u00E9',\n textStyle: 'Style du texte',\n paragraph: 'Paragraphe',\n heading: 'Titre',\n subheading: 'Sous-titre',\n bulletList: 'Liste \u00E0 puces',\n numberList: 'Liste num\u00E9rot\u00E9e',\n alignLeft: 'Aligner \u00E0 gauche',\n alignCenter: 'Centrer',\n alignRight: 'Aligner \u00E0 droite',\n link: 'Lien',\n linkAddress: 'Adresse du lien',\n applyLink: 'Appliquer',\n removeLink: 'Supprimer le lien',\n upload: 'T\u00E9l\u00E9verser un fichier',\n uploadImage: 'Ajouter une photo',\n replace: 'Remplacer',\n removeFile: 'Retirer',\n dropHere: 'ou d\u00E9posez-le ici',\n addFiles: 'Ajouter des fichiers',\n addPhotos: 'Ajouter des photos',\n dropThem: 'ou d\u00E9posez-les ici',\n upToSize: 'jusqu\u2019\u00E0 {size}',\n upToEach: 'jusqu\u2019\u00E0 {size} par fichier',\n upToFiles: 'jusqu\u2019\u00E0 {max} fichiers',\n fileCount: '{n} fichiers',\n oneFile: '1 fichier',\n fileCountOf: '{n} fichiers sur {max}',\n tooMany: '{max} fichiers au plus : {n} non ajout\u00E9(s)',\n alreadyAdded: '{name} : d\u00E9j\u00E0 ajout\u00E9',\n removeAsk: 'Retirer {name} ?',\n keep: 'Garder',\n previous: 'Pr\u00E9c\u00E9dent',\n next: 'Suivant',\n download: 'T\u00E9l\u00E9charger',\n close: 'Fermer',\n fileAt: '{n} sur {total}',\n noPreview: 'Pas d\u2019aper\u00E7u pour ce type de fichier',\n showFilesAs: 'Affichage des fichiers',\n asList: 'Liste',\n asCards: 'Cartes',\n asThumbnails: 'Vignettes',\n invalidJson: 'JSON invalide',\n invalidJsonAt: 'JSON invalide : ligne {line}, colonne {column}',\n signaturePad: 'Zone de signature : dessinez votre signature',\n signHere: 'Signez ici',\n typeSignature: 'Ou tapez votre nom',\n clearDrawing: 'Effacer',\n undo: 'Annuler',\n uploadSignature: 'Importer une image',\n notAnswered: 'Pas de r\u00E9ponse',\n moveUp: 'Monter {label}',\n moveDown: 'Descendre {label}',\n movedTo: '{label} est maintenant en position {n} sur {total}',\n addressStreet: 'Adresse',\n addressCity: 'Ville',\n addressLine2: 'Compl\u00E9ment d\u2019adresse',\n addressRegion: '\u00C9tat ou r\u00E9gion',\n addressPostcode: 'Code postal',\n addressCountry: 'Pays',\n entry: 'Entr\u00E9e {n}',\n addAnother: 'En ajouter un autre',\n copy: 'Copier {name}',\n removed: '{name} retir\u00E9',\n loadingChoices: 'Chargement des choix\u2026',\n choicesFailed: 'Recharger les choix',\n notOffered: '{name} : plus propos\u00E9',\n yes: 'Oui',\n no: 'Non',\n upTo: 'Jusqu\u2019\u00E0 {n}',\n keepOrder: 'Garder cet ordre',\n ofMax: '{n} sur {max}',\n charactersLeft: 'Caract\u00E8res restants : {n}',\n colourNames: 'Aucune couleur|Rouge|Orange|Jaune|Cyan|Pourpre|Amande|Bleu canard|Bleu|Framboise|Vert|Violet',\n copyValue: 'Copier',\n copied: 'Copi\u00E9',\n noDocument: 'Pas encore de document',\n openInNewTab: 'Ouvrir dans un nouvel onglet',\n account: 'Compte',\n share: 'Pourcentage',\n addAccount: 'Ajouter un compte',\n sharesOff: 'Les parts font {n}, pas 100 %',\n untaxed: 'Montant hors taxes',\n paidOn: 'Pay\u00E9 le {date}',\n amountDue: 'Montant d\u00FB',\n paymentOf: 'Paiement de {amount}',\n journal: 'Journal',\n memo: 'Libell\u00E9',\n openPayment: 'Ouvrir',\n addProperty: 'Ajouter une propri\u00E9t\u00E9',\n propertyName: 'Nom de la propri\u00E9t\u00E9',\n propertyType: 'Type',\n propertyTypes: 'Texte|Texte long|Nombre entier|Nombre|Oui ou non|Date',\n add: 'Ajouter',\n cancel: 'Annuler',\n loading: 'Chargement\u2026',\n perDay: '/jour',\n perNight: '/nuit',\n perWeek: '/semaine',\n perMonth: '/mois',\n perYear: '/an',\n};\n", "import type { ViewerLabels } from '../labels';\n\n/** The viewer\u2019s own words in French. */\nexport const fr: ViewerLabels = {\n save: 'Enregistrer',\n edit: 'Modifier',\n done: 'Termin\u00E9',\n discard: 'Annuler les modifications',\n saving: 'Enregistrement\u2026',\n saved: 'Enregistr\u00E9',\n submit: 'Envoyer',\n next: 'Suivant',\n back: 'Retour',\n skip: 'Passer',\n steps: '\u00C9tapes',\n stepOf: '\u00C9tape {n} sur {total}',\n submitted: 'Merci. Vos r\u00E9ponses ont \u00E9t\u00E9 envoy\u00E9es.',\n submitAnother: 'Envoyer une autre r\u00E9ponse',\n draftFound: 'Vous avez des r\u00E9ponses non enregistr\u00E9es du {time}.',\n restore: 'Restaurer',\n discardDraft: 'Ignorer',\n ok: 'OK',\n cancel: 'Annuler',\n loading: 'Chargement\u2026',\n saveClose: 'Enregistrer et fermer',\n close: 'Fermer',\n discardChanges: 'Abandonner vos modifications ?',\n dismiss: 'Masquer',\n helpFor: 'Aide sur {label}',\n quietHint: 'Ajouter {label}',\n quietAnswer: 'Votre r\u00E9ponse',\n locked: 'Verrouill\u00E9 : {label}',\n retry: 'R\u00E9essayer',\n notSaved: 'Non enregistr\u00E9',\n notSent: 'Non envoy\u00E9',\n checkFields: '{what}. \u00C0 v\u00E9rifier : {fields}',\n offline: 'Le serveur est injoignable. Vos modifications sont toujours l\u00E0.',\n previousPage: 'Page pr\u00E9c\u00E9dente',\n nextPage: 'Page suivante',\n range: '{from}\u2013{to} / {total}',\n selected: '{n} s\u00E9lectionn\u00E9(s)',\n clearSelection: 'D\u00E9s\u00E9lectionner',\n selectAll: 'Tout s\u00E9lectionner',\n showAs: 'Afficher en',\n viewList: 'Liste',\n viewMap: 'Carte',\n viewBoth: 'Liste et carte',\n selectRecord: 'S\u00E9lectionner {name}',\n noRecords: 'Aucun enregistrement ne correspond.',\n loadFailed: 'Impossible de charger les enregistrements.',\n search: 'Rechercher\u2026',\n searchLabel: 'Rechercher',\n searchFor: 'Rechercher {field} : {text}',\n searchOptions: 'Options de recherche',\n filters: 'Filtres',\n groupBy: 'Regrouper par',\n favourites: 'Favoris',\n or: 'ou',\n removeFacet: 'Retirer {label}',\n addCustomFilter: 'Ajouter un filtre personnalis\u00E9',\n field: 'Champ',\n condition: 'Condition',\n value: 'Valeur',\n apply: 'Appliquer',\n saveSearch: 'Enregistrer la recherche',\n searchName: 'Nom de la recherche',\n useByDefault: 'Utiliser par d\u00E9faut',\n deleteFavourite: 'Supprimer {name}',\n noFavourites: 'Aucune recherche enregistr\u00E9e.',\n opIs: 'est',\n opIsNot: 'n\u2019est pas',\n opContains: 'contient',\n opGreater: 'sup\u00E9rieur \u00E0',\n opLess: 'inf\u00E9rieur \u00E0',\n opSet: 'est d\u00E9fini',\n opNotSet: 'n\u2019est pas d\u00E9fini',\n yes: 'Oui',\n no: 'Non',\n none: 'Aucun',\n loadMore: 'Afficher {n} de plus',\n formMissing: 'Le formulaire enregistr\u00E9 \u00AB {page} \u00BB est introuvable.',\n formInItself: 'Le formulaire enregistr\u00E9 \u00AB {page} \u00BB n\u2019est pas affich\u00E9 ici : il serait plac\u00E9 dans lui-m\u00EAme ({chain}).',\n formNotPlaceable: 'Le formulaire enregistr\u00E9 \u00AB {page} \u00BB ne peut pas \u00EAtre plac\u00E9 ici : seul un formulaire de sections ou d\u2019onglets le peut.',\n formBroken: 'Le formulaire enregistr\u00E9 \u00AB {page} \u00BB ne peut pas \u00EAtre affich\u00E9.',\n pageMissing: 'La page \u00AB {page} \u00BB est introuvable.',\n actions: 'Actions',\n print: 'Imprimer',\n archive: 'Archiver',\n unarchive: 'D\u00E9sarchiver',\n duplicate: 'Dupliquer',\n delete: 'Supprimer',\n breadcrumbs: 'Fil d\u2019Ariane',\n newRecord: 'Nouveau',\n records: 'Enregistrements',\n recordAt: '{n} / {total}',\n previousRecord: 'Enregistrement pr\u00E9c\u00E9dent',\n nextRecord: 'Enregistrement suivant',\n attachment: 'Pi\u00E8ce jointe : {name}',\n openAttachment: 'Ouvrir',\n previousAttachment: 'Pi\u00E8ce jointe pr\u00E9c\u00E9dente',\n nextAttachment: 'Pi\u00E8ce jointe suivante',\n};\n", "/**\n * What a language's add-on script does (`fieldia.ar.js`, `fieldia.de.js`,\n * `fieldia.fr.js`, built by tools/script-bundle.mjs): hand that language's\n * words to the one-tag script's `Fieldia.addLanguage`. It carries the words\n * alone \u2014 never a second copy of Fieldia \u2014 so it needs fieldia.js on the page.\n *\n * Loaded before fieldia.js (an `async` script may be), it leaves its words in\n * `FieldiaLanguages`, where fieldia.js takes them as it starts.\n */\nimport type { Locale } from '@fieldia/core';\nimport type { LanguageWords } from '@fieldia/viewer';\n\ndeclare const __FIELDIA_VERSION__: string;\n\nexport interface LanguageHost {\n Fieldia?: { VERSION?: string; addLanguage?: (locale: Locale, words: LanguageWords) => void };\n FieldiaLanguages?: [Locale, LanguageWords][];\n}\n\nexport function addOn(locale: Locale, words: LanguageWords): void {\n const host = globalThis as LanguageHost;\n const fieldia = host.Fieldia;\n if (!fieldia?.addLanguage) {\n (host.FieldiaLanguages ??= []).push([locale, words]);\n return;\n }\n if (fieldia.VERSION !== __FIELDIA_VERSION__) {\n console.warn(`Fieldia: fieldia.${locale}.js is version ${__FIELDIA_VERSION__} and fieldia.js is ${fieldia.VERSION}: load the same version of both, or some words may show in English.`);\n }\n fieldia.addLanguage(locale, words);\n}\n", "import { fr as messages } from './libs/core/src/lib/record/locales/fr';\nimport { fr as widgets } from './libs/widgets/src/lib/locales/fr';\nimport { fr as viewer } from './libs/viewer/src/lib/locales/fr';\nimport { addOn } from './tools/script-language';\naddOn('fr', { messages, widgets, viewer });"],
5
- "mappings": ";mBAGO,IAAMA,EAAe,CAC1B,SAAU,0BACV,UAAW,iCACX,QAAS,oCACT,KAAM,gCACN,OAAQ,iCACR,QAAS,wCACT,IAAK,sCACL,IAAK,qCACL,SAAU,mCACV,QAAS,kCACT,WAAY,+CACZ,YAAa,iDACb,eAAgB,iEAChB,gBAAiB,yBACjB,OAAQ,iCACR,cAAe,0DACf,OAAQ,0CACR,UAAW,2BACX,WAAY,2CACZ,QAAS,0CACT,OAAQ,yCACR,QAAS,mDACT,UAAW,qCACX,KAAM,kCACN,SAAU,4BACV,SAAU,0CACV,SAAU,+CACV,SAAU,gDACV,UAAW,sDACX,SAAU,wCACV,QAAS,yCACT,OAAQ,wCACR,SAAU,wCACV,WAAY,qCACZ,MAAO,sDACP,SAAU,iEACV,GAAI,KACJ,KAAM,mCACN,MAAO,4DACP,IAAK,qDACL,MAAO,2EACP,KAAM,yCACN,OAAQ,iCACR,MAAO,+BACP,QAAS,uCACT,SAAU,sCACV,SAAU,0DACV,aAAc,mFACd,eAAgB,qDAChB,cAAe,sDACf,OAAQ,IACV,ECpDO,IAAMC,EAAmB,CAC9B,OAAQ,mBACR,UAAW,oBACX,OAAQ,iBACR,MAAO,kBACP,QAAS,oBACT,WAAY,sBACZ,QAAS,mBACT,WAAY,qBACZ,MAAO,YACP,QAAS,mCACT,MAAO,QACP,YAAa,wBACb,aAAc,iBACd,cAAe,uBACf,YAAa,4BACb,cAAe,6BACf,WAAY,wBACZ,UAAW,gBACX,SAAU,kBACV,WAAY,iBACZ,eAAgB,4BAChB,YAAa,iBACb,UAAW,OACX,WAAY,6BACZ,WAAY,mBACZ,MAAO,UACP,YAAa,0BACb,eAAgB,0BAChB,cAAe,uBACf,UAAW,eACX,UAAW,OACX,KAAM,UACN,WAAY,gBACZ,KAAM,OACN,OAAQ,WACR,UAAW,cACX,UAAW,iBACX,UAAW,aACX,QAAS,QACT,WAAY,aACZ,WAAY,mBACZ,WAAY,wBACZ,UAAW,sBACX,YAAa,UACb,WAAY,sBACZ,KAAM,OACN,YAAa,kBACb,UAAW,YACX,WAAY,oBACZ,OAAQ,8BACR,YAAa,oBACb,QAAS,YACT,WAAY,UACZ,SAAU,uBACV,SAAU,uBACV,UAAW,qBACX,SAAU,wBACV,SAAU,yBACV,SAAU,qCACV,UAAW,iCACX,UAAW,eACX,QAAS,YACT,YAAa,yBACb,QAAS,gDACT,aAAc,gCACd,UAAW,mBACX,KAAM,SACN,SAAU,kBACV,KAAM,UACN,SAAU,oBACV,MAAO,SACP,OAAQ,kBACR,UAAW,+CACX,YAAa,yBACb,OAAQ,QACR,QAAS,SACT,aAAc,YACd,YAAa,gBACb,cAAe,iDACf,aAAc,+CACd,SAAU,aACV,cAAe,qBACf,aAAc,UACd,KAAM,UACN,gBAAiB,qBACjB,YAAa,oBACb,OAAQ,iBACR,SAAU,oBACV,QAAS,qDACT,cAAe,UACf,YAAa,QACb,aAAc,+BACd,cAAe,uBACf,gBAAiB,cACjB,eAAgB,OAChB,MAAO,gBACP,WAAY,sBACZ,KAAM,gBACN,QAAS,mBACT,eAAgB,6BAChB,cAAe,sBACf,WAAY,2BACZ,IAAK,MACL,GAAI,MACJ,KAAM,sBACN,UAAW,mBACX,MAAO,gBACP,eAAgB,+BAChB,YAAa,+FACb,UAAW,SACX,OAAQ,WACR,WAAY,yBACZ,aAAc,+BACd,QAAS,SACT,MAAO,cACP,WAAY,oBACZ,UAAW,gCACX,QAAS,qBACT,OAAQ,oBACR,UAAW,gBACX,UAAW,uBACX,QAAS,UACT,KAAM,aACN,YAAa,SACb,YAAa,8BACb,aAAc,4BACd,aAAc,OACd,cAAe,wDACf,IAAK,UACL,OAAQ,UACR,QAAS,mBACT,OAAQ,QACR,SAAU,QACV,QAAS,WACT,SAAU,QACV,QAAS,KACX,ECzIO,IAAMC,EAAmB,CAC9B,KAAM,cACN,KAAM,WACN,KAAM,aACN,QAAS,4BACT,OAAQ,uBACR,MAAO,gBACP,OAAQ,UACR,KAAM,UACN,KAAM,SACN,KAAM,SACN,MAAO,YACP,OAAQ,2BACR,UAAW,oDACX,cAAe,+BACf,WAAY,2DACZ,QAAS,YACT,aAAc,UACd,GAAI,KACJ,OAAQ,UACR,QAAS,mBACT,UAAW,wBACX,MAAO,SACP,eAAgB,iCAChB,QAAS,UACT,QAAS,mBACT,UAAW,kBACX,YAAa,mBACb,OAAQ,0BACR,MAAO,eACP,SAAU,oBACV,QAAS,gBACT,YAAa,sCACb,QAAS,qEACT,aAAc,wBACd,SAAU,gBACV,MAAO,6BACP,SAAU,2BACV,eAAgB,uBAChB,UAAW,uBACX,OAAQ,cACR,SAAU,QACV,QAAS,QACT,SAAU,iBACV,aAAc,yBACd,UAAW,sCACX,WAAY,6CACZ,OAAQ,mBACR,YAAa,aACb,UAAW,8BACX,cAAe,uBACf,QAAS,UACT,QAAS,gBACT,WAAY,UACZ,GAAI,KACJ,YAAa,kBACb,gBAAiB,oCACjB,MAAO,QACP,UAAW,YACX,MAAO,SACP,MAAO,YACP,WAAY,2BACZ,WAAY,sBACZ,aAAc,yBACd,gBAAiB,mBACjB,aAAc,mCACd,KAAM,MACN,QAAS,iBACT,WAAY,WACZ,UAAW,oBACX,OAAQ,oBACR,MAAO,gBACP,SAAU,2BACV,IAAK,MACL,GAAI,MACJ,KAAM,QACN,SAAU,uBACV,YAAa,gEACb,aAAc,8HACd,iBAAkB,4IAClB,WAAY,+EACZ,YAAa,4CACb,QAAS,UACT,MAAO,WACP,QAAS,WACT,UAAW,iBACX,UAAW,YACX,OAAQ,YACR,YAAa,oBACb,UAAW,UACX,QAAS,kBACT,SAAU,gBACV,eAAgB,iCAChB,WAAY,yBACZ,WAAY,2BACZ,eAAgB,SAChB,mBAAoB,mCACpB,eAAgB,0BAClB,EClFO,SAASC,EAAMC,EAAgBC,EAA4B,CAChE,IAAMC,EAAO,WACPC,EAAUD,EAAK,QACrB,GAAI,CAACC,GAAS,YAAa,EACxBD,EAAK,mBAALA,EAAK,iBAAqB,CAAC,IAAG,KAAK,CAACF,EAAQC,CAAK,CAAC,EACnD,MACF,CACIE,EAAQ,UAAY,UACtB,QAAQ,KAAK,oBAAoBH,CAAM,2CAA2DG,EAAQ,OAAO,qEAAqE,EAExLA,EAAQ,YAAYH,EAAQC,CAAK,CACnC,CC1BAG,EAAM,KAAM,CAAE,SAAAC,EAAU,QAAAA,EAAS,OAAAA,CAAO,CAAC",
4
+ "sourcesContent": ["import type { Messages } from '../messages';\n\n/** The validation messages in French. */\nexport const fr: Messages = {\n required: '{label} est obligatoire',\n maxLength: '{max} caract\u00E8res au maximum',\n pattern: \"{label} n'a pas le format attendu\",\n text: '{label} doit \u00EAtre du texte',\n number: '{label} doit \u00EAtre un nombre',\n integer: '{label} doit \u00EAtre un nombre entier',\n min: '{label} doit \u00EAtre au moins {min}',\n max: '{label} doit \u00EAtre au plus {max}',\n decimals: '{digits} d\u00E9cimales au maximum',\n boolean: '{label} doit \u00EAtre oui ou non',\n dateFormat: 'Format de date invalide (attendu AAAA-MM-JJ)',\n dateInvalid: 'Date invalide (v\u00E9rifiez le mois et le jour)',\n datetimeFormat: 'Format de date et heure invalide (attendu AAAA-MM-JJTHH:MM:SS)',\n datetimeInvalid: 'Date ou heure invalide',\n choice: 'Doit \u00EAtre parmi : {options}',\n choiceOrOther: 'Doit \u00EAtre parmi : {options}, ou une r\u00E9ponse libre',\n matrix: '{label} attend une r\u00E9ponse par ligne',\n matrixRow: 'Les lignes sont : {rows}',\n matrixRows: 'R\u00E9pondez \u00E0 chaque ligne de {label}',\n choices: '{label} doit \u00EAtre une liste de choix',\n record: '{label} doit \u00EAtre un enregistrement',\n records: \"{label} doit \u00EAtre une liste d'enregistrements\",\n reference: '{label} doit pointer vers {models}',\n file: '{label} doit \u00EAtre un fichier',\n fileSize: '{label} d\u00E9passe {size}',\n fileType: '{label} doit \u00EAtre un fichier {types}',\n minFiles: 'Ajoutez au moins {min} fichiers \u00E0 {label}',\n maxFiles: 'Trop de fichiers pour {label} : {max} au plus',\n minLength: '{label} doit comporter au moins {min} caract\u00E8res',\n endsWith: '{label} doit se terminer par {ending}',\n atLeast: 'Choisissez au moins {min} pour {label}',\n atMost: 'Choisissez au plus {max} pour {label}',\n datePast: '{label} doit \u00EAtre dans le pass\u00E9',\n dateFuture: '{label} doit \u00EAtre dans le futur',\n holds: '{label} ne concorde pas avec les autres r\u00E9ponses',\n distinct: '{column} : {value} figure sur plus d\u2019une ligne de {label}',\n or: 'ou',\n tick: 'Cochez cette case pour continuer',\n email: 'Saisissez une adresse e-mail, par exemple nom@exemple.com',\n url: 'Saisissez une adresse web, par exemple exemple.com',\n phone: 'Saisissez un num\u00E9ro de t\u00E9l\u00E9phone, par exemple +33 1 23 45 67 89',\n time: 'Saisissez une heure, par exemple 14:30',\n before: '{label} : au plus t\u00F4t {min}',\n after: '{label} : au plus tard {max}',\n weekday: '{label} ne peut pas tomber un {days}',\n minLines: 'Ajoutez au moins {min} \u00E0 {label}',\n maxLines: 'Trop d\u2019\u00E9l\u00E9ments dans {label} : {max} au plus',\n addressParts: 'Adresse|Compl\u00E9ment d\u2019adresse|Ville|\u00C9tat ou r\u00E9gion|Code postal|Pays',\n archiveConfirm: 'Voulez-vous vraiment archiver cet enregistrement ?',\n deleteConfirm: 'Voulez-vous vraiment supprimer cet enregistrement ?',\n locale: 'fr',\n};\n", "import type { WidgetLabels } from '../labels';\n\n/** The widgets\u2019 own words in French. */\nexport const fr: WidgetLabels = {\n search: 'Rechercher\u2026',\n noResults: 'Aucun r\u00E9sultat',\n remove: 'Retirer {name}',\n clear: 'Effacer {label}',\n addLine: 'Ajouter une ligne',\n addSection: 'Ajouter une section',\n addNote: 'Ajouter une note',\n deleteLine: 'Supprimer la ligne',\n lineN: 'ligne {n}',\n noLines: 'Aucune ligne pour l\u2019instant',\n total: 'Total',\n lineProblem: 'Ligne {n} : {message}',\n moreProblems: 'et {n} de plus',\n chooseColumns: 'Choisir les colonnes',\n createNamed: 'Cr\u00E9er \u00AB {name} \u00BB',\n createAndEdit: 'Cr\u00E9er et modifier\u2026',\n searchMore: 'Rechercher plus\u2026',\n suggestions: 'Suggestions',\n expandNamed: 'D\u00E9velopper {name}',\n collapseNamed: 'R\u00E9duire {name}',\n addNamed: 'Ajouter {label}',\n openNamed: 'Ouvrir {name}',\n openLine: 'Ouvrir la ligne',\n chooseLine: 'Choisir {name}',\n chooseAllLines: 'Choisir toutes les lignes',\n linesChosen: 'Choisies : {n}',\n moreSteps: 'Plus',\n timeInStep: '{time} \u00E0 cette \u00E9tape',\n chooseDate: 'Choisir une date',\n other: 'Autre :',\n otherAnswer: 'Votre propre r\u00E9ponse',\n clearSelection: 'Effacer la s\u00E9lection',\n previousMonth: 'Mois pr\u00E9c\u00E9dent',\n nextMonth: 'Mois suivant',\n weekShort: 'Sem.',\n week: 'Semaine',\n formatting: 'Mise en forme',\n bold: 'Gras',\n italic: 'Italique',\n underline: 'Soulign\u00E9',\n textStyle: 'Style du texte',\n paragraph: 'Paragraphe',\n heading: 'Titre',\n subheading: 'Sous-titre',\n bulletList: 'Liste \u00E0 puces',\n numberList: 'Liste num\u00E9rot\u00E9e',\n alignLeft: 'Aligner \u00E0 gauche',\n alignCenter: 'Centrer',\n alignRight: 'Aligner \u00E0 droite',\n link: 'Lien',\n linkAddress: 'Adresse du lien',\n applyLink: 'Appliquer',\n removeLink: 'Supprimer le lien',\n strike: 'Barr\u00E9',\n highlight: 'Surligner',\n textColour: 'Couleur du texte',\n emoji: '\u00C9moji',\n indent: 'Augmenter le retrait',\n outdent: 'Diminuer le retrait',\n textSize: 'Taille du texte',\n code: 'Code',\n mention: 'Mentionner une personne',\n linkRecordNamed: 'Lier {kind}',\n clearFormatting: 'Effacer la mise en forme',\n image: 'Ins\u00E9rer une image',\n moreTools: 'Plus',\n switchToMarkdown: 'passer \u00E0 l\u2019\u00E9diteur Markdown',\n switchToRich: 'passer \u00E0 l\u2019\u00E9diteur de texte enrichi',\n markdownSupported: 'Markdown pris en charge.',\n pasteOrSelect: 'Collez ou s\u00E9lectionnez des fichiers \u00E0 ins\u00E9rer.',\n preview: 'Aper\u00E7u',\n editNamed: 'Modifier {name}',\n doneEditing: 'Termin\u00E9',\n maximiseNamed: 'Agrandir {name}',\n foldNamed: 'R\u00E9duire {name}',\n unfoldNamed: 'D\u00E9velopper {name}',\n addLink: 'Ajouter un lien',\n existingItem: '\u00C9l\u00E9ment existant',\n newItem: 'Nouvel \u00E9l\u00E9ment',\n formattingLost: 'Une partie de la mise en forme ne peut pas s\u2019\u00E9crire en Markdown et sera perdue. Changer quand m\u00EAme ?',\n taskList: 'Liste de contr\u00F4le',\n cursorInLink: 'Placez d\u2019abord le curseur dans un lien.',\n attachFile: 'Joindre un fichier',\n switchAnyway: 'Changer',\n headingLevel: 'Titre {n}',\n upload: 'T\u00E9l\u00E9verser un fichier',\n uploadImage: 'Ajouter une photo',\n replace: 'Remplacer',\n removeFile: 'Retirer',\n dropHere: 'ou d\u00E9posez-le ici',\n addFiles: 'Ajouter des fichiers',\n addPhotos: 'Ajouter des photos',\n dropThem: 'ou d\u00E9posez-les ici',\n upToSize: 'jusqu\u2019\u00E0 {size}',\n upToEach: 'jusqu\u2019\u00E0 {size} par fichier',\n upToFiles: 'jusqu\u2019\u00E0 {max} fichiers',\n fileCount: '{n} fichiers',\n oneFile: '1 fichier',\n fileCountOf: '{n} fichiers sur {max}',\n tooMany: '{max} fichiers au plus : {n} non ajout\u00E9(s)',\n alreadyAdded: '{name} : d\u00E9j\u00E0 ajout\u00E9',\n removeAsk: 'Retirer {name} ?',\n keep: 'Garder',\n previous: 'Pr\u00E9c\u00E9dent',\n next: 'Suivant',\n download: 'T\u00E9l\u00E9charger',\n close: 'Fermer',\n fileAt: '{n} sur {total}',\n noPreview: 'Pas d\u2019aper\u00E7u pour ce type de fichier',\n showFilesAs: 'Affichage des fichiers',\n asList: 'Liste',\n asCards: 'Cartes',\n asThumbnails: 'Vignettes',\n invalidJson: 'JSON invalide',\n invalidJsonAt: 'JSON invalide : ligne {line}, colonne {column}',\n signaturePad: 'Zone de signature : dessinez votre signature',\n signHere: 'Signez ici',\n typeSignature: 'Ou tapez votre nom',\n clearDrawing: 'Effacer',\n undo: 'Annuler',\n uploadSignature: 'Importer une image',\n notAnswered: 'Pas de r\u00E9ponse',\n moveUp: 'Monter {label}',\n moveDown: 'Descendre {label}',\n movedTo: '{label} est maintenant en position {n} sur {total}',\n addressStreet: 'Adresse',\n addressCity: 'Ville',\n addressLine2: 'Compl\u00E9ment d\u2019adresse',\n addressRegion: '\u00C9tat ou r\u00E9gion',\n addressPostcode: 'Code postal',\n addressCountry: 'Pays',\n entry: 'Entr\u00E9e {n}',\n addAnother: 'En ajouter un autre',\n copy: 'Copier {name}',\n removed: '{name} retir\u00E9',\n loadingChoices: 'Chargement des choix\u2026',\n choicesFailed: 'Recharger les choix',\n notOffered: '{name} : plus propos\u00E9',\n yes: 'Oui',\n no: 'Non',\n upTo: 'Jusqu\u2019\u00E0 {n}',\n keepOrder: 'Garder cet ordre',\n ofMax: '{n} sur {max}',\n charactersLeft: 'Caract\u00E8res restants : {n}',\n colourNames: 'Aucune couleur|Rouge|Orange|Jaune|Cyan|Pourpre|Amande|Bleu canard|Bleu|Framboise|Vert|Violet',\n copyValue: 'Copier',\n copied: 'Copi\u00E9',\n noDocument: 'Pas encore de document',\n openInNewTab: 'Ouvrir dans un nouvel onglet',\n account: 'Compte',\n share: 'Pourcentage',\n addAccount: 'Ajouter un compte',\n sharesOff: 'Les parts font {n}, pas 100 %',\n untaxed: 'Montant hors taxes',\n paidOn: 'Pay\u00E9 le {date}',\n amountDue: 'Montant d\u00FB',\n paymentOf: 'Paiement de {amount}',\n journal: 'Journal',\n memo: 'Libell\u00E9',\n openPayment: 'Ouvrir',\n addProperty: 'Ajouter une propri\u00E9t\u00E9',\n propertyName: 'Nom de la propri\u00E9t\u00E9',\n propertyType: 'Type',\n propertyTypes: 'Texte|Texte long|Nombre entier|Nombre|Oui ou non|Date',\n add: 'Ajouter',\n cancel: 'Annuler',\n loading: 'Chargement\u2026',\n perDay: '/jour',\n perNight: '/nuit',\n perWeek: '/semaine',\n perMonth: '/mois',\n perYear: '/an',\n};\n", "import type { ViewerLabels } from '../labels';\n\n/** The viewer\u2019s own words in French. */\nexport const fr: ViewerLabels = {\n save: 'Enregistrer',\n edit: 'Modifier',\n done: 'Termin\u00E9',\n discard: 'Annuler les modifications',\n saving: 'Enregistrement\u2026',\n saved: 'Enregistr\u00E9',\n submit: 'Envoyer',\n next: 'Suivant',\n back: 'Retour',\n skip: 'Passer',\n steps: '\u00C9tapes',\n stepOf: '\u00C9tape {n} sur {total}',\n submitted: 'Merci. Vos r\u00E9ponses ont \u00E9t\u00E9 envoy\u00E9es.',\n submitAnother: 'Envoyer une autre r\u00E9ponse',\n draftFound: 'Vous avez des r\u00E9ponses non enregistr\u00E9es du {time}.',\n restore: 'Restaurer',\n discardDraft: 'Ignorer',\n ok: 'OK',\n cancel: 'Annuler',\n loading: 'Chargement\u2026',\n saveClose: 'Enregistrer et fermer',\n close: 'Fermer',\n maximise: 'Agrandir',\n restoreSize: 'Restaurer',\n resize: 'Redimensionner',\n copyTitle: 'Copier le titre',\n titleCopied: 'Titre copi\u00E9',\n moreActions: 'Autres actions',\n optionsFor: 'Options de {label}',\n updatedBy: 'Mis \u00E0 jour par {name} : {date}',\n nothingChanged: 'Rien n\u2019a chang\u00E9.',\n countOf: '{label}, {count}',\n discardChanges: 'Abandonner vos modifications ?',\n dismiss: 'Masquer',\n helpFor: 'Aide sur {label}',\n quietHint: 'Ajouter {label}',\n quietAnswer: 'Votre r\u00E9ponse',\n locked: 'Verrouill\u00E9 : {label}',\n retry: 'R\u00E9essayer',\n notSaved: 'Non enregistr\u00E9',\n notSent: 'Non envoy\u00E9',\n checkFields: '{what}. \u00C0 v\u00E9rifier : {fields}',\n offline: 'Le serveur est injoignable. Vos modifications sont toujours l\u00E0.',\n previousPage: 'Page pr\u00E9c\u00E9dente',\n nextPage: 'Page suivante',\n range: '{from}\u2013{to} / {total}',\n selected: '{n} s\u00E9lectionn\u00E9(s)',\n clearSelection: 'D\u00E9s\u00E9lectionner',\n selectAll: 'Tout s\u00E9lectionner',\n showAs: 'Afficher en',\n viewList: 'Liste',\n viewMap: 'Carte',\n viewBoth: 'Liste et carte',\n selectRecord: 'S\u00E9lectionner {name}',\n noRecords: 'Aucun enregistrement ne correspond.',\n loadFailed: 'Impossible de charger les enregistrements.',\n search: 'Rechercher\u2026',\n searchLabel: 'Rechercher',\n searchFor: 'Rechercher {field} : {text}',\n searchOptions: 'Options de recherche',\n filters: 'Filtres',\n groupBy: 'Regrouper par',\n favourites: 'Favoris',\n or: 'ou',\n removeFacet: 'Retirer {label}',\n addCustomFilter: 'Ajouter un filtre personnalis\u00E9',\n field: 'Champ',\n condition: 'Condition',\n value: 'Valeur',\n apply: 'Appliquer',\n saveSearch: 'Enregistrer la recherche',\n searchName: 'Nom de la recherche',\n useByDefault: 'Utiliser par d\u00E9faut',\n deleteFavourite: 'Supprimer {name}',\n noFavourites: 'Aucune recherche enregistr\u00E9e.',\n opIs: 'est',\n opIsNot: 'n\u2019est pas',\n opContains: 'contient',\n opGreater: 'sup\u00E9rieur \u00E0',\n opLess: 'inf\u00E9rieur \u00E0',\n opSet: 'est d\u00E9fini',\n opNotSet: 'n\u2019est pas d\u00E9fini',\n yes: 'Oui',\n no: 'Non',\n none: 'Aucun',\n loadMore: 'Afficher {n} de plus',\n filterByKeyword: 'Filtrer par mot-cl\u00E9',\n clearFilters: 'Effacer les filtres',\n expandAll: 'Tout d\u00E9velopper',\n collapseAll: 'Tout r\u00E9duire',\n filterNamed: 'Filtrer par {label}',\n filterSettings: 'Param\u00E8tres des filtres',\n formMissing: 'Le formulaire enregistr\u00E9 \u00AB {page} \u00BB est introuvable.',\n formInItself: 'Le formulaire enregistr\u00E9 \u00AB {page} \u00BB n\u2019est pas affich\u00E9 ici : il serait plac\u00E9 dans lui-m\u00EAme ({chain}).',\n formNotPlaceable: 'Le formulaire enregistr\u00E9 \u00AB {page} \u00BB ne peut pas \u00EAtre plac\u00E9 ici : seul un formulaire de sections ou d\u2019onglets le peut.',\n formBroken: 'Le formulaire enregistr\u00E9 \u00AB {page} \u00BB ne peut pas \u00EAtre affich\u00E9.',\n pageMissing: 'La page \u00AB {page} \u00BB est introuvable.',\n actions: 'Actions',\n print: 'Imprimer',\n archive: 'Archiver',\n unarchive: 'D\u00E9sarchiver',\n duplicate: 'Dupliquer',\n delete: 'Supprimer',\n breadcrumbs: 'Fil d\u2019Ariane',\n newRecord: 'Nouveau',\n records: 'Enregistrements',\n recordAt: '{n} / {total}',\n previousRecord: 'Enregistrement pr\u00E9c\u00E9dent',\n nextRecord: 'Enregistrement suivant',\n attachment: 'Pi\u00E8ce jointe : {name}',\n openAttachment: 'Ouvrir',\n previousAttachment: 'Pi\u00E8ce jointe pr\u00E9c\u00E9dente',\n nextAttachment: 'Pi\u00E8ce jointe suivante',\n};\n", "/**\n * What a language's add-on script does (`fieldia.ar.js`, `fieldia.de.js`,\n * `fieldia.fr.js`, built by tools/script-bundle.mjs): hand that language's\n * words to the one-tag script's `Fieldia.addLanguage`. It carries the words\n * alone \u2014 never a second copy of Fieldia \u2014 so it needs fieldia.js on the page.\n *\n * Loaded before fieldia.js (an `async` script may be), it leaves its words in\n * `FieldiaLanguages`, where fieldia.js takes them as it starts.\n */\nimport type { Locale } from '@fieldia/core';\nimport type { LanguageWords } from '@fieldia/viewer';\n\ndeclare const __FIELDIA_VERSION__: string;\n\nexport interface LanguageHost {\n Fieldia?: { VERSION?: string; addLanguage?: (locale: Locale, words: LanguageWords) => void };\n FieldiaLanguages?: [Locale, LanguageWords][];\n}\n\nexport function addOn(locale: Locale, words: LanguageWords): void {\n const host = globalThis as LanguageHost;\n const fieldia = host.Fieldia;\n if (!fieldia?.addLanguage) {\n (host.FieldiaLanguages ??= []).push([locale, words]);\n return;\n }\n if (fieldia.VERSION !== __FIELDIA_VERSION__) {\n console.warn(`Fieldia: fieldia.${locale}.js is version ${__FIELDIA_VERSION__} and fieldia.js is ${fieldia.VERSION}: load the same version of both, or some words may show in English.`);\n }\n fieldia.addLanguage(locale, words);\n}\n", "import { fr as messages } from './libs/core/src/lib/record/locales/fr';\nimport { fr as widgets } from './libs/widgets/src/lib/locales/fr';\nimport { fr as viewer } from './libs/viewer/src/lib/locales/fr';\nimport { addOn } from './tools/script-language';\naddOn('fr', { messages, widgets, viewer });"],
5
+ "mappings": "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",
6
6
  "names": ["fr", "fr", "fr", "addOn", "locale", "words", "host", "fieldia", "addOn", "fr"]
7
7
  }
@@ -0,0 +1,5 @@
1
+ /*! Fieldia 0.20.0 · head · MIT · https://fieldia.dev */
2
+ (globalThis.FieldiaParts = globalThis.FieldiaParts || []).push(["head", "0.20.0", function (__fieldia) {
3
+ "use strict";var part=(()=>{var Se=Object.create;var O=Object.defineProperty;var Ae=Object.getOwnPropertyDescriptor;var Me=Object.getOwnPropertyNames;var ze=Object.getPrototypeOf,Ne=Object.prototype.hasOwnProperty;var W=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(n){throw e=0,n}},Ie=(t,e)=>{for(var n in e)O(t,n,{get:e[n],enumerable:!0})},te=(t,e,n,l)=>{if(e&&typeof e=="object"||typeof e=="function")for(let f of Me(e))!Ne.call(t,f)&&f!==n&&O(t,f,{get:()=>e[f],enumerable:!(l=Ae(e,f))||l.enumerable});return t};var N=(t,e,n)=>(n=t!=null?Se(ze(t)):{},te(e||!t||!t.__esModule?O(n,"default",{value:t,enumerable:!0}):n,t)),Re=t=>te(O({},"__esModule",{value:!0}),t);var B=W((Ve,de)=>{"use strict";de.exports=__fieldia[5]});var Z=W((qe,ie)=>{"use strict";ie.exports=__fieldia[2]});var ne=W((Ge,ae)=>{"use strict";ae.exports=__fieldia[4]});var se=W((Ke,le)=>{"use strict";le.exports=__fieldia[1]});var ce=W((Ue,fe)=>{"use strict";fe.exports=__fieldia[3]});var _e={};Ie(_e,{installGroupStyles:()=>Y,installHeadStyles:()=>G,recordHead:()=>re,richButton:()=>he,sectionHeading:()=>ge,wireGrip:()=>ye,wireMaximise:()=>we});var V=N(B()),z=N(Z()),oe=N(ne());var K=N(B()),Pe='.fd-dialog-backdrop.fd-backdrop-clear{background:transparent}.fd-form-dialog.fd-size-inset{position:fixed;inset:46px 96px;width:auto;height:auto;max-width:none;max-height:none;border-radius:4px;background:var(--fd-surface);box-shadow:0 0 0 1px var(--fd-edge, transparent),0 25.6px 57.6px #00000038,0 4.8px 14.4px #0000002e}@media(max-width:759.98px){.fd-form-dialog.fd-size-inset{inset:0;border-radius:0}.fd-form-dialog.fd-size-inset :is(.fd-dialog-max,.fd-dialog-grip){display:none!important}}.fd-form-dialog[data-resized]{position:fixed;max-width:none;max-height:none;margin:0}.fd-form-dialog[data-maximised]{position:fixed;inset:0!important;width:auto!important;height:auto!important;max-width:none;max-height:none;border-radius:0}.fd-form-dialog[data-maximised]>.fd-dialog-grip{display:none}.fd-dialog-max{display:inline-grid;place-items:center;border:none;background:none;cursor:pointer;padding:2px 8px;border-radius:4px;color:var(--fd-muted)}.fd-dialog-max:hover{background:var(--fd-page);color:var(--fd-text)}.fd-dialog-max .fd-icon{width:16px;height:16px;margin:0}.fd-form-dialog :is(.fd-dialog-max,.fd-head-window .fd-dialog-close){display:inline-grid;place-items:center;width:32px;height:32px;padding:0;font-size:16px;color:var(--fd-text);border-radius:2px}.fd-form-dialog :is(.fd-dialog-max,.fd-head-window .fd-dialog-close) .fd-icon{width:16px;height:16px;margin:0}.fd-dialog-grip{position:absolute;inset-inline-end:0;inset-block-end:0;width:16px;height:16px;padding:0;border:0;z-index:2;background:none;cursor:nwse-resize;color:color-mix(in srgb,var(--fd-text) 90%,var(--fd-surface));border-end-end-radius:4px}.fd-dialog-grip:dir(rtl){cursor:nesw-resize}.fd-dialog-grip:before{content:"";position:absolute;inset-inline-end:4px;inset-block-end:4px;box-sizing:border-box;width:7px;height:7px;border-inline-end:1.5px solid currentColor;border-block-end:1.5px solid currentColor;background:linear-gradient(to top left,transparent calc(50% - .75px),currentColor calc(50% - .75px) calc(50% + .75px),transparent calc(50% + .75px))}.fd-dialog-grip:dir(rtl):before{background:linear-gradient(to top right,transparent calc(50% - .75px),currentColor calc(50% - .75px) calc(50% + .75px),transparent calc(50% + .75px))}.fd-form-dialog:has(>.fd-dialog-grip){position:relative}.fd-form-dialog[data-headed]:not([data-maximised]):has(>.fd-dialog-grip)>.fd-form-dialog-body{padding-block-end:18px;--fd-history-foot: 20px}@media(max-width:759.98px){.fd-form-dialog.fd-size-inset[data-headed]:has(>.fd-dialog-grip)>.fd-form-dialog-body{padding-block-end:0;--fd-history-foot: 38px}}.fd-form-dialog.fd-size-inset:has(>.fd-dialog-grip),.fd-form-dialog[data-resized]{position:fixed}.fd-form-dialog[data-headed]>.fd-form-dialog-body{display:flex;flex-direction:column;overflow:hidden;padding:0;background:var(--fd-surface)}.fd-form-dialog[data-headed]>.fd-form-dialog-body>.fd-form{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.fd-form-dialog[data-headed]>.fd-form-dialog-body>.fd-form>.fd-content{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.fd-form-dialog[data-headed] .fd-head-page{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.fd-form-dialog[data-headed] .fd-head-page>.fd-head{flex:none}.fd-form-dialog[data-headed] .fd-head-page>:is(.fd-head-body,.fd-head-layout){flex:1 1 auto;min-height:0;overflow:auto}.fd-head-page ::-webkit-scrollbar{width:15px;height:15px}.fd-head-page ::-webkit-scrollbar-track,.fd-head-page ::-webkit-scrollbar-corner{background:color-mix(in srgb,var(--fd-text) 2.2%,var(--fd-surface))}.fd-head-page ::-webkit-scrollbar-track:vertical{border-left:1px solid color-mix(in srgb,var(--fd-text) 10%,var(--fd-surface));border-right:1px solid color-mix(in srgb,var(--fd-text) 7.5%,var(--fd-surface))}[dir=rtl] .fd-head-page ::-webkit-scrollbar-track:vertical{border-left-color:color-mix(in srgb,var(--fd-text) 7.5%,var(--fd-surface));border-right-color:color-mix(in srgb,var(--fd-text) 10%,var(--fd-surface))}.fd-head-page ::-webkit-scrollbar-track:horizontal{border-top:1px solid color-mix(in srgb,var(--fd-text) 10%,var(--fd-surface));border-bottom:1px solid color-mix(in srgb,var(--fd-text) 7.5%,var(--fd-surface))}.fd-head-page ::-webkit-scrollbar-thumb{border:solid transparent;border-width:3px 3px 3px 4px;border-radius:8px;background:color-mix(in srgb,var(--fd-text) 24.5%,var(--fd-surface)) padding-box}.fd-head-page ::-webkit-scrollbar-thumb:horizontal{border-width:4px 3px 3px}[dir=rtl] .fd-head-page ::-webkit-scrollbar-thumb:vertical{border-width:3px 4px 3px 3px}.fd-head-page ::-webkit-scrollbar-thumb:hover{background-color:color-mix(in srgb,var(--fd-text) 40%,var(--fd-surface))}.fd-head-page ::-webkit-scrollbar-button{display:none}.fd-head-page{padding:0;background:var(--fd-surface)}.fd-head{--fd-head-edge: color-mix(in srgb, var(--fd-text) 16.2%, var(--fd-surface));--fd-head-pill: color-mix(in srgb, var(--fd-text) 8.7%, var(--fd-surface));--fd-head-pressed: color-mix(in srgb, var(--fd-text) 19.7%, var(--fd-surface));--fd-head-fill: var(--fd-fill, color-mix(in srgb, var(--fd-text) 5.7%, var(--fd-surface)));--fd-head-icon: color-mix(in srgb, var(--fd-text) 79%, var(--fd-surface));--fd-head-link: var(--fd-link, var(--fd-accent));--fd-control-height: 32px;container:fd-head / inline-size;position:relative;background:var(--fd-surface);color:var(--fd-text);font-size:14px}.fd-head-top{position:relative;padding-block-end:6px}.fd-head-strip{position:absolute;inset-block:0;inset-inline-start:0;width:10px;background:var(--fd-kind, transparent)}.fd-head:not([data-kind]) .fd-head-strip{display:none}.fd-head-badge-row{display:flex;align-items:center;justify-content:space-between;gap:8px;height:42px;padding-inline:20px 4px}.fd-head-badge{display:inline-flex;align-items:center;gap:7px;font-size:12px;line-height:16px;color:var(--fd-head-link);white-space:nowrap}.fd-head-badge-icon{display:inline-grid;color:var(--fd-kind, var(--fd-head-link))}.fd-head-badge-icon .fd-icon{width:14px;height:14px;margin:0;margin-inline-start:-2px;stroke-width:2.2}.fd-head-window{display:inline-flex;align-items:center;gap:3px;margin-inline-start:auto}.fd-head-title{display:flex;align-items:center;min-height:32px;margin-block-start:1px;padding-inline:19px 8px}.fd-head-number{flex:none;min-inline-size:40px;margin-inline-end:5px;font-size:18px;line-height:24px;color:color-mix(in srgb,var(--fd-text) 85%,#000);font-variant-numeric:tabular-nums}.fd-form .fd-head-title>.fd-field{flex:1 1 auto;min-width:0;display:block}.fd-form .fd-head-title>.fd-title-side{flex:none}.fd-form .fd-head-title>.fd-field>.fd-input{width:100%;height:32px;font-size:18px;padding-inline:11px;color:var(--fd-text)}.fd-head-copy{flex:none;display:inline-grid;place-items:center;width:34px;height:32px;padding:0;border:0;border-radius:2px;background:var(--fd-head-fill);color:var(--fd-head-icon);cursor:pointer;visibility:hidden}.fd-head-copy .fd-icon{width:16px;height:16px;margin:0}.fd-head-title:focus-within>.fd-head-copy{visibility:visible}@media(hover:hover){.fd-head-title:hover>.fd-head-copy{visibility:visible}}@media(hover:none){.fd-head-copy{visibility:visible}}.fd-head-copy:hover{background:var(--fd-head-pressed)}.fd-head-row{display:flex;align-items:center;justify-content:space-between;gap:8px 16px;min-height:32px;margin-block-start:9px;padding-inline:21px 6px}.fd-head-meta{display:flex;align-items:center;gap:6px;min-width:0;flex:1 1 auto}.fd-form .fd-head-meta>.fd-field{flex:0 1 269px;min-width:0}.fd-form .fd-head-meta>.fd-field:is([data-type=many2many],[data-widget=tags]){flex:0 1 auto}.fd-form .fd-head-meta .fd-field[data-quiet] .fd-tags:has(>.fd-tags-adder:not([hidden])){padding-inline:0}.fd-head-link{display:inline-flex;align-items:center;gap:2px;padding:0 2px;border:0;background:none;cursor:pointer;font:inherit;font-size:14px;color:var(--fd-head-link);white-space:nowrap;border-radius:2px}.fd-head-link .fd-icon{width:16px;height:16px;margin:0}.fd-head-link:has(>.fd-icon:first-child){padding-inline-start:0}button.fd-head-link:hover .fd-head-link-words{text-decoration:underline}span.fd-head-link{cursor:default;color:var(--fd-text)}.fd-head-actions{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:10px;flex:none}.fd-head .fd-button,.fd-split>.fd-button{min-height:32px;height:32px;padding:0 12px;gap:10px;border:0;border-radius:2px;font-size:14px;font-weight:600;white-space:nowrap}.fd-head .fd-button .fd-icon,.fd-split>.fd-button .fd-icon{width:16px;height:16px;margin:0;flex:none}.fd-button.fd-button-subtle{background:var(--fd-head-fill, var(--fd-fill, var(--fd-page)));color:var(--fd-text);border-color:transparent}.fd-button.fd-button-subtle:hover{background:color-mix(in srgb,var(--fd-text) 9%,var(--fd-surface));color:var(--fd-text)}.fd-button.fd-button-subtle[aria-expanded=true],.fd-button.fd-button-subtle:active{background:var(--fd-head-pressed, var(--fd-border))}.fd-head .fd-button-secondary{background:var(--fd-head-fill);color:var(--fd-text)}.fd-head .fd-button-secondary:hover{background:color-mix(in srgb,var(--fd-text) 9%,var(--fd-surface));color:var(--fd-text)}.fd-head .fd-button-primary,.fd-split[data-look=primary]>.fd-button{background:var(--fd-accent);color:var(--fd-accent-text)}.fd-head .fd-button-primary:hover{filter:none;background:var(--fd-accent-hover, var(--fd-accent));color:var(--fd-accent-text)}.fd-button.fd-button-icon-only{width:34px;padding:0;justify-content:center}.fd-head .fd-button.fd-button-icon-only:not(.fd-button-primary){background:none;color:var(--fd-head-icon)}.fd-head .fd-button.fd-button-icon-only:not(.fd-button-primary):hover{background:var(--fd-head-fill)}.fd-head .fd-record-actions{position:relative}.fd-head .fd-head-more{width:34px;padding:0;background:none;color:var(--fd-head-icon)}.fd-head .fd-head-more:hover{background:var(--fd-head-fill)}.fd-head .fd-head-more[aria-expanded=true]{background:var(--fd-head-pressed)}.fd-head .fd-button.fd-button-icon-only[data-idle]:not(.fd-button-primary){color:color-mix(in srgb,var(--fd-text) 48%,var(--fd-surface))}.fd-head .fd-icon[data-icon=undo]:dir(rtl){transform:scaleX(-1)}.fd-head .fd-button[aria-pressed=true]:not(.fd-button-primary){color:var(--fd-text)}.fd-split{position:relative;display:inline-flex;align-items:stretch;flex:none}.fd-split>.fd-split-rule{width:1px;background:var(--fd-head-pressed, var(--fd-border))}.fd-split[data-look=primary]>.fd-split-rule{background:color-mix(in srgb,var(--fd-accent-text) 35%,var(--fd-accent))}.fd-split>.fd-button:first-child:not(:last-of-type){border-start-end-radius:0;border-end-end-radius:0}.fd-split>.fd-split-more{padding:0;width:30px;border-start-start-radius:0;border-end-start-radius:0}.fd-split>.fd-split-more:has(>.fd-icon:not([data-icon=chevron-down])){width:34px}.fd-split>.fd-split-more>.fd-icon[data-icon=chevron-down]{width:20px;height:20px;stroke-width:1.3}.fd-split>.fd-split-more>.fd-icon:not([data-icon=chevron-down]){width:13px;height:13px}.fd-split-alone>.fd-button .fd-split-icon{width:14px;height:14px}.fd-split>.fd-button-menu{position:absolute;inset-block-start:calc(100% + 2px);inset-inline-start:0;z-index:40}.fd-split>.fd-button-menu[data-end]{inset-inline-start:auto;inset-inline-end:0}.fd-head-band{display:flex;align-items:stretch;gap:9px;min-height:78px;background:var(--fd-band, color-mix(in srgb, var(--fd-text) 3%, var(--fd-surface)));padding-inline:16px 8px}.fd-head-fields{--fd-head-label: 76px;flex:1 1 auto;min-width:0;display:grid;grid-template-columns:var(--fd-head-tracks, 1fr 1fr);grid-auto-rows:minmax(32px,auto);column-gap:8px;row-gap:1px;align-content:start;padding-block:7px 6px}.fd-form .fd-head-fields>.fd-field[data-labels]{display:grid;grid-template-columns:calc(var(--fd-head-label) - 24px) 24px minmax(0,1fr);align-items:center;gap:0;container-type:normal;min-width:0}.fd-form .fd-head-fields>.fd-field[data-labels]>.fd-label{grid-column:1 / 3;grid-row:1;align-self:center;padding:0;margin:0;font-size:12px;line-height:16px;font-weight:400;color:var(--fd-muted);white-space:nowrap;overflow:hidden;text-overflow:clip}.fd-form .fd-head-fields>.fd-field[data-labels]>:not(.fd-label){grid-column:3}.fd-form .fd-head-fields>.fd-field[data-labels]>.fd-label+*{grid-row:1}.fd-form .fd-head-fields>.fd-field[data-labels]>.fd-lock-wrap{grid-column:2;grid-row:1;justify-self:center;margin:0;margin-inline-start:4px;z-index:1}.fd-form .fd-head-fields>.fd-field[data-labels]>.fd-lock-wrap+*{grid-row:1}.fd-head-fields .fd-lock .fd-icon{width:16px;height:16px}.fd-head-fields .fd-lock{color:var(--fd-text)}.fd-form .fd-head-fields>.fd-field>.fd-read-text{line-height:20px}.fd-form .fd-head :is(input,select).fd-input{box-sizing:border-box;height:32px;min-height:32px}.fd-form .fd-head .fd-field[data-quiet] :is(.fd-input:not(.fd-tags *),.fd-tags,.fd-dot-box){border-radius:2px}.fd-form .fd-head-fields>.fd-field[data-quiet]{--fd-quiet-pad: 11px;font-size:14px}.fd-form .fd-head-fields>.fd-field>.fd-input,.fd-form .fd-head-fields>.fd-field .fd-input{font-size:14px}.fd-form .fd-head-fields .fd-field[data-quiet] .fd-dot-box{box-sizing:border-box;gap:0;padding-inline-start:11px;height:32px;min-height:32px}.fd-form .fd-head-fields .fd-field[data-quiet] .fd-dot-button{width:24px;height:32px;margin-inline:-36px 12px}.fd-form .fd-head-fields .fd-dot-button>.fd-dot{width:10px;height:10px}@media(hover:hover){.fd-form .fd-head .fd-field[data-quiet]>:hover :is(.fd-input:not(.fd-tags *),.fd-tags):not([readonly],:disabled,[contenteditable=false],:focus,:focus-within),.fd-form .fd-head .fd-field[data-quiet]>:is(.fd-input,.fd-tags,.fd-dot-box:not(:has(:disabled))):not([readonly],:disabled,[contenteditable=false],:focus,:focus-within):hover{border-color:var(--fd-border-strong)}}.fd-head-aside{flex:none;display:flex;flex-direction:column;align-items:flex-end;justify-content:space-between;gap:4px;padding-block-start:4px;min-width:0}.fd-head-updated{font:inherit;font-size:12px;line-height:16px;color:var(--fd-muted);white-space:nowrap;padding:0;border:0;background:none}button.fd-head-updated{cursor:pointer;border-radius:2px}button.fd-head-updated:hover{text-decoration:underline}.fd-head-tabs{display:flex;min-width:0;max-width:100%}.fd-head-tabs .fd-tabbar{min-width:0}.fd-head-tabs .fd-tablist{gap:0;border:0}.fd-head-tabs .fd-tab{position:relative;display:inline-flex;align-items:center;gap:6px;height:36px;margin:0;padding:0 8px;border:1px solid var(--fd-head-edge);border-block-end:0;border-radius:0;background:transparent;font:inherit;font-size:14px;font-weight:400;color:var(--fd-text);white-space:nowrap}.fd-head-tabs .fd-tab:has(>.fd-tab-count){padding-inline-end:8px}.fd-head-tabs .fd-tab .fd-icon{width:16px;height:16px;margin:0}.fd-head-tabs .fd-tab-icon-only>.fd-icon{margin-block-end:3px;stroke-width:1.5}.fd-head-tabs .fd-tab-icon-only>.fd-icon[data-icon=link]{width:14px;height:14px;stroke-width:1.7}.fd-head-tabs .fd-tab-icon-only>.fd-icon[data-icon=attach]:not(:only-child){margin-inline-end:-2px}.fd-head-tabs .fd-tab-icon-only>.fd-icon:only-child{margin-inline:3px}.fd-head-tabs .fd-tab[aria-selected=true]{font-weight:600;color:var(--fd-text);border-color:var(--fd-head-edge)}.fd-head-tabs .fd-tab[aria-selected=true] .fd-icon{stroke-width:2.3}.fd-head-tabs .fd-tab[aria-selected=true]:after{content:"";position:absolute;inset-inline:8px;inset-block-end:4px;height:2px;background:var(--fd-accent);border-radius:1px}.fd-head-tabs .fd-tab:has(>.fd-tab-count)[aria-selected=true]:after{inset-inline-end:8px}.fd-head-tabs .fd-tab:hover{background:color-mix(in srgb,var(--fd-text) 4%,transparent)}.fd-tab-count{display:inline-grid;place-items:center;min-width:25px;height:19px;padding:0 6px;border-radius:10px;background:var(--fd-head-pill, var(--fd-accent-soft));font-size:12px;font-weight:600;line-height:19px;color:var(--fd-text)}.fd-tabs:not(.fd-tabs-in-head) .fd-tab-count{margin-inline-start:6px}.fd-head-body{padding:0 12px 12px;background:var(--fd-surface);min-width:0}.fd-head-body>.fd-alert{margin-block:12px 0}.fd-tabs.fd-tabs-in-head>.fd-tabpanel{padding-block:0}.fd-form-dialog[data-headed] .fd-tabs.fd-tabs-in-head>.fd-tabpanel:not(:has(.fd-history)){padding-block-end:30px}.fd-head-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}@media(min-width:1534px){.fd-head-layout:has(>.fd-side){grid-template-columns:minmax(0,1fr) minmax(320px,.6fr)}}.fd-form-dialog .fd-head-layout>.fd-side{display:none}@container fd-head (max-width: 760px){.fd-head-row{flex-wrap:wrap}.fd-head-meta{flex-wrap:wrap;flex-basis:100%}.fd-head-actions{flex:1 1 100%;justify-content:flex-start;gap:8px}.fd-head-band{flex-direction:column;gap:4px;padding-inline:12px 8px}.fd-head-fields{grid-template-columns:minmax(0,1fr);padding-block-end:0}.fd-head-aside{align-items:stretch;padding-block-start:0}.fd-head-updated{align-self:flex-start;white-space:normal;text-align:start}.fd-head-tabs{align-self:flex-start}}';function G(t){(0,K.installPartStyles)(t,"fieldia-head-styles",Pe,K.PART_RANK.head)}function re(t){let{el:e,form:n,page:l,sheet:f,head:i,labels:p,doc:o}=t;G(o);let x=t.uid("head"),b=t.watch,s=e("span",{class:"fd-head-strip","aria-hidden":"true"}),E=e("bdi",{class:"fd-head-badge-words"}),k=e("span",{class:"fd-head-badge-icon","aria-hidden":"true"}),D=e("span",{class:"fd-head-badge",id:`${x}-badge`,"data-head-name":""},k,E),u=e("span",{class:"fd-head-window"}),y=e("div",{class:"fd-head-badge-row"},i.kind?D:e("span"),u),w=e("div",{class:"fd-head-top"},s,y),h=f.title;if(h){let d=e("div",{class:"fd-head-title"}),c=i.kind?.numberField,r=v=>{if(v.field===c){let _=e("span",{class:"fd-head-number","data-node":v.id});return b(X=>{(0,z.setHidden)(_,n.node(v.id).invisible),(0,z.setText)(_,Q(X))}),_}let S=t.fieldItem(v,"hidden");return S.classList.add("fd-title-side"),S},g=t.fieldItem({type:"field",id:"#title",field:h.field,placeholder:h.placeholder,...h.placeholderWhen?{placeholderWhen:h.placeholderWhen}:{},...h.focus?{focus:!0}:{}},"hidden");g.classList.add("fd-title-name"),d.append(...(h.before??[]).map(r),g);let A=e("span",{class:"fd-sr-only",id:`${x}-title`,"data-head-name":""});if(b(v=>(0,z.setText)(A,String(v.values[h.field]??""))),i.copyTitle!==!1){let v=e("button",{type:"button",class:"fd-head-copy","aria-label":p.copyTitle,title:p.copyTitle}),S=(0,V.drawIcon)(o,"copy",t.icons);S&&v.append(S),v.addEventListener("click",()=>{He(String(n.getState().values[h.field]??""))}),d.append(v)}d.append(...(h.after??[]).map(r),A),w.append(d)}let H=e("div",{class:"fd-head-row"}),I=e("div",{class:"fd-head-meta"},...(i.meta??[]).map(d=>d.type==="link"?Le(d):t.fieldItem(d,"hidden"))),L=e("div",{class:"fd-head-actions"},...(i.actions??[]).map(d=>t.buttonItem(d))),M=f.toolbar?.menu??[];if(M.length){let d=[];L.append((0,oe.recordMenu)({doc:o,el:e,form:n,labels:p,uid:t.uid,withIcon:t.withIcon,press:t.press},M,d,t.cleanups,"more")),b(()=>d.forEach(c=>c()))}H.append(I,L),w.append(H);let F=i.band,R=e("div",{class:"fd-head-fields"}),q=F?.tracks??["1fr","1fr"];R.style.setProperty("--fd-head-tracks",q.join(" ")),F?.labelWidth&&R.style.setProperty("--fd-head-label",`${F.labelWidth}px`),R.append(...(F?.children??[]).map(d=>t.item(d,{columns:q.length,onPage:!1,labels:"beside",quiet:!0})));let a=e("div",{class:"fd-head-aside"}),m=i.updated?Ee(i.updated):null;m&&a.append(m);let T=e("div",{class:"fd-head-tabs"});a.append(T);let $=e("div",{class:"fd-head-band"},R,a),P=e("div",{class:"fd-head",id:x},w,$);if(i.kind){let d="";b(c=>{let r=ke(c);(0,z.setAttr)(P,"data-kind",r.key||(r.colour?"":null)),r.colour?P.style.setProperty("--fd-kind",r.colour):P.style.removeProperty("--fd-kind"),r.icon!==d&&(d=r.icon??"",k.replaceChildren(...[(0,V.drawIcon)(o,r.icon,t.icons)].filter(g=>!!g))),(0,z.setText)(E,r.words)})}return{element:P,tabs:T,window:u};function ke(d){let c=i.kind??{},r=c.field?d.values[c.field]:void 0,g=c.field?l.fields[c.field]:void 0,A=r==null?"":typeof r=="object"&&!Array.isArray(r)&&"id"in r?String(r.id):String(r),v=A?c.looks?.[A]:void 0,_=[((g&&A?(0,V.displayValue)(g,r,d.values,t.locale):"")||c.label||"").toLocaleUpperCase(t.locale),Q(d)].filter(Boolean).join(" ");return{key:A,colour:v?.colour??c.colour??null,icon:v?.icon??c.icon,words:_}}function Q(d){let c=i.kind?.numberField,r=c?d.values[c]:d.recordId;return r==null||r===""?"":String(r)}function Le(d){let c=e("span",{class:"fd-head-link-words"}),r=!!d.target||!!d.steps?.length,g=e(r?"button":"span",{...r?{type:"button"}:{},class:"fd-head-link","data-node":d.id},...[(0,V.drawIcon)(o,d.icon,t.icons)].filter(v=>!!v),c),A=new Intl.PluralRules(t.locale);return g.addEventListener("click",()=>{d.steps?.length&&t.press(g,()=>n.runAction(d.id)),d.target&&Te(d.target)}),b(v=>{(0,z.setHidden)(g,n.node(d.id).invisible);let S=v.values[d.field],_=typeof S=="number"?S:Number(S??0)||0,X=A.select(_);(0,z.setText)(c,`${_} ${d.words[X]??d.words.other}`)}),g}function Ee(d){let c=d.opens?"button":"span",r=e(c,{class:"fd-head-updated",...c==="button"?{type:"button"}:{}});if(d.opens){let g=d.opens;r.addEventListener("click",()=>{t.showTab(g)&&t.root().querySelector(`.fd-tab[data-node="${g}"]`)?.focus()})}return b(g=>{let A=(0,V.displayValue)(l.fields[d.byField],g.values[d.byField],g.values,t.locale),v=g.values[d.atField],S=typeof v=="string"&&v?De(v,t.locale):"";(0,z.setHidden)(r,!A||!S),(0,z.setText)(r,A&&S?t.fill(p.updatedBy,{name:A,date:S}):"")}),r}async function He(d){let c=o.defaultView?.navigator.clipboard;(c?await c.writeText(d).then(()=>!0,()=>ee(d)):ee(d))&&t.say(p.titleCopied,"info")}function ee(d){let c=o.activeElement,r=e("textarea",{class:"fd-sr-only","aria-hidden":"true",tabindex:"-1"});r.value=d,o.body.append(r),r.select();let g=!1;try{g=o.execCommand("copy")}catch{}return r.remove(),c?.focus(),g}function Te(d){for(let g of Ce(l.layout,d))t.showTab(g);let c=t.root().querySelector(`[data-node="${d}"]`);if(!c)return;t.unfold(c),c.scrollIntoView?.({block:"nearest",behavior:"smooth"}),(c.querySelector('input:not([type="hidden"]), textarea, select, [contenteditable="true"], button, [tabindex="0"]')??c).focus?.({preventScroll:!0})}}function Ce(t,e){let n=(f,i)=>{for(let p of f){if(p.id===e)return i;if(p.type==="section"){let o=n(p.children,i);if(o)return o}if(p.type==="tabs")for(let o of p.children){if(o.id===e)return[...i,o.id];let x=n(o.children,[...i,o.id]);if(x)return x}}return null};if(t.type==="list")return[];if(t.type==="tabs")return n([t],[])??[];let l=t.type==="wizard"?t.children.flatMap(f=>f.children):t.children;return n(l,[])??[]}function De(t,e,n=new Date){let l=/^\d{4}-\d{2}-\d{2}$/.test(t)?new Date(`${t}T12:00:00`):new Date(t);if(Number.isNaN(l.getTime()))return t;let f=l.getFullYear()!==n.getFullYear(),i=e==="ar"?"ar-u-nu-latn":e;return new Intl.DateTimeFormat(i,{month:"short",day:"numeric",...f?{year:"numeric"}:{}}).format(l)}var J=N(B()),j=N(se()),C=N(Z());var pe=N(ce());function he(t,e){let{el:n,form:l,labels:f}=t;G(t.doc);let i=!!e.steps?.length||e.action!==void 0,p=e.menu?.length?e.menu:null,o=()=>e.primaryWhenChanged?l.getState().dirty.length?"primary":"subtle":e.style??"secondary",x=n("bdi",{class:"fd-button-words"},e.label),b=(0,J.drawIcon)(t.doc,e.icon,t.icons),s=n("button",{type:"button",class:"fd-button","data-node":p&&i?void 0:e.id});b&&s.append(b),e.iconOnly?(s.classList.add("fd-button-icon-only"),s.setAttribute("aria-label",e.label),s.title=e.label):s.append(x),e.hotkey&&(0,pe.hotkeyOn)(s,e.hotkey,e.label);let E=()=>{let a=l.getState();if(e.primaryWhenChanged&&!a.dirty.length&&a.recordId!=null&&e.steps?.some(m=>m.do==="save")){let m=[...(e.steps??[]).filter(T=>T.do!=="save"),...e.action!==void 0?[{do:"call",action:e.action,...e.params?{params:e.params}:{}}]:[]];return l.run(m,{id:e.id})}return l.runAction(e.id)};if(!p)return s.classList.add(`fd-button-${o()}`),s.addEventListener("click",()=>{(0,j.nothingToUndo)(e,l,t.say,f)||t.press(s,E)}),t.watch(()=>q(s)),s;let k=t.uid(`${e.id}-menu`),D=(0,J.drawIcon)(t.doc,e.menuIcon??"chevron-down",t.icons),u=i?n("button",{type:"button",class:"fd-button fd-split-more",id:`${k}-button`,"aria-haspopup":"menu","aria-expanded":"false","aria-controls":k}):s,y=e.menuLabel??f.optionsFor.replace("{label}",e.label);if(i)u.setAttribute("aria-label",y),u.title=y;else{u.id=`${k}-button`;for(let[a,m]of Object.entries({"aria-haspopup":"menu","aria-expanded":"false","aria-controls":k}))u.setAttribute(a,m)}D&&(D.classList.add("fd-split-icon"),u.append(D));let w=n("div",{class:"fd-record-menu fd-button-menu",role:"menu",id:k,"aria-labelledby":u.id,hidden:""}),h=p.map(a=>{let m=n("button",{type:"button",role:"menuitem",tabindex:"-1",class:"fd-record-menu-item","data-node":a.id},...t.withIcon(a.icon,a.label??a.id));return m.addEventListener("click",()=>{R(!0),t.press(u,()=>l.runAction(a.id))}),{item:a,button:m}});w.append(...h.map(a=>a.button));let H=i?[s,n("span",{class:"fd-split-rule","aria-hidden":"true"}),u]:[s],I=n("div",{class:`fd-split${i?"":" fd-split-alone"}`,"data-node":e.id,role:i?"group":void 0,"aria-label":i?e.label:void 0},...H,w),L=()=>h.filter(a=>!a.button.hidden).map(a=>a.button),M=a=>{I.contains(a.target)||R(!1)};function F(a){if(!w.hidden)return;w.hidden=!1,w.removeAttribute("data-end");let m=w.getBoundingClientRect();(m.right>t.doc.documentElement.clientWidth-4||m.left<4)&&w.setAttribute("data-end",""),u.setAttribute("aria-expanded","true"),t.doc.addEventListener("pointerdown",M,!0);let T=L();(a==="first"?T[0]:T[T.length-1])?.focus()}function R(a){w.hidden||(w.hidden=!0,u.setAttribute("aria-expanded","false"),t.doc.removeEventListener("pointerdown",M,!0),a&&u.focus())}return t.cleanups.push(()=>t.doc.removeEventListener("pointerdown",M,!0)),u.addEventListener("click",()=>w.hidden?F("first"):R(!1)),u.addEventListener("keydown",a=>{a.key!=="ArrowDown"&&a.key!=="ArrowUp"||(a.preventDefault(),F(a.key==="ArrowDown"?"first":"last"))}),i&&s.addEventListener("click",()=>{(0,j.nothingToUndo)(e,l,t.say,f)||t.press(s,E)}),w.addEventListener("keydown",a=>{let m=L(),T=m.indexOf(t.doc.activeElement),$={ArrowDown:T+1,ArrowUp:T-1,Home:0,End:m.length-1}[a.key];$!==void 0?(a.preventDefault(),m[($+m.length)%m.length]?.focus()):a.key==="Escape"?(a.preventDefault(),a.stopPropagation(),R(!0)):a.key==="Tab"&&R(!1)}),t.watch(()=>{q(s),i&&q(u),I.setAttribute("data-look",o());for(let{item:a,button:m}of h)(0,C.setHidden)(m,l.node(a.id).invisible);(0,C.setHidden)(u,!h.some(a=>!a.button.hidden)&&i)}),I;function q(a){let m=l.node(e.id);(a===s||!i)&&(0,C.setHidden)(p?I:a,m.invisible);for(let P of["primary","secondary","subtle","danger","link"])a.classList.toggle(`fd-button-${P}`,P===o());if(a===s&&(0,j.onlyResets)(e.steps,e.action)){let P=!l.getState().dirty.length;(0,C.setAttr)(s,"data-idle",P?"":null),e.iconOnly&&(s.title=P?`${e.label} \u2014 ${f.nothingChanged}`:e.label)}if(e.pressed===void 0||a!==s)return;let T=m.pressed===!0;(0,C.setAttr)(s,"aria-pressed",String(T));let $=T&&e.pressedLabel?e.pressedLabel:e.label;e.iconOnly?((0,C.setAttr)(s,"aria-label",$),s.title=$):(0,C.setText)(x,$)}}var me=N(B());var U=N(B()),Fe=".fd-form .fd-section[data-head]{gap:0;--fd-group-inset: 8px}.fd-form .fd-section[data-head]>.fd-section-title{display:flex;align-items:center;float:none;width:100%;box-sizing:border-box;min-height:51px;margin:0;padding:0;border-block-end:1px solid var(--fd-border);font-size:16px;font-weight:600;line-height:22px;color:var(--fd-heading, var(--fd-text));text-transform:none;letter-spacing:0}.fd-form .fd-section[data-head]>.fd-section-title>.fd-section-name{flex:1 1 auto;min-width:0;overflow-wrap:anywhere}.fd-form .fd-section[data-head]>.fd-section-title .fd-icon{margin-inline-end:.4em}.fd-form .fd-section[data-head]>.fd-grid{padding:4px var(--fd-group-inset) 0;row-gap:7px}.fd-form .fd-section[data-head]{--fd-pad-x: 6px;--fd-control-height: 32px}.fd-form .fd-section[data-head]>.fd-grid>.fd-field{gap:0;line-height:20px}.fd-form .fd-section[data-head]>.fd-grid>.fd-field>.fd-label{font-size:12px;line-height:16px;font-weight:400;color:var(--fd-muted)}.fd-form .fd-section[data-head]>.fd-grid>.fd-field:is([data-type=integer],[data-type=float])>input.fd-input{height:22px;min-height:22px;padding-block:0}.fd-form .fd-section[data-head]>.fd-grid>.fd-field .fd-lock{color:var(--fd-text)}.fd-form .fd-section[data-head]>.fd-grid>.fd-field .fd-lock .fd-icon{width:15px;height:15px}.fd-form .fd-section[data-head]>.fd-grid>.fd-field[data-lock-at=value]>.fd-lock-wrap{margin-inline-start:-2px;inset-block-start:-1.5px}.fd-form .fd-grid:has(>.fd-section[data-head]){row-gap:11px}.fd-section-tools{display:flex;align-items:center;gap:2px;margin-inline-start:auto;flex:none;opacity:0;transition:opacity .1s ease}.fd-form .fd-section[data-head]>.fd-section-title .fd-section-tools{align-self:flex-end;margin-block-end:1px;margin-inline-end:-2px}.fd-form .fd-section[data-head]:is(:hover,:focus-within,.fd-section-folded,[data-maximised])>.fd-section-title .fd-section-tools{opacity:1}@media(hover:none){.fd-section-tools{opacity:1}}.fd-section-tool{display:inline-grid;place-items:center;width:32px;height:32px;padding:0;border:0;border-radius:2px;background:none;color:var(--fd-text);cursor:pointer;font:inherit}.fd-section-tool:hover{background:var(--fd-text-hover)}.fd-section-tool:active{background:var(--fd-text-pressed)}.fd-section-tool:focus-visible{outline:1px solid var(--fd-focus);outline-offset:-1px}.fd-section-tool svg{width:18px;height:18px;stroke-width:1.34}.fd-section-title .fd-section-tools .fd-icon{color:inherit}.fd-form [data-unshown]{display:none!important}.fd-form .fd-grid[data-maximising]{grid-template-columns:minmax(0,1fr)!important}.fd-form .fd-grid[data-maximising]>*{grid-column:1 / -1!important}.fd-form .fd-section[data-maximised]{min-height:60vh}";function Y(t){(0,U.installPartStyles)(t,"fieldia-group-styles",Fe,U.PART_RANK.groups)}var ue=(t,e)=>t.replace(/\{(\w+)\}/g,(n,l)=>e[l]??"");function ge(t,e,n,l,f,i){let{el:p,doc:o,labels:x}=t;Y(o);let b=e.title??"",s=p("span",{class:"fd-section-tools"}),E=p("legend",{class:"fd-section-title fd-section-head"},p("span",{class:"fd-section-name"},...t.withIcon(e.icon,b)),s);n.setAttribute("data-head","");let k=L=>(0,me.drawIcon)(o,L,t.icons)??"",D=(L,M)=>p("button",{type:"button",class:"fd-section-tool","data-tool":L,"aria-label":M,title:M}),u=null,y=e.maximise?D("maximise",ue(x.maximiseNamed,{name:b})):null,w=()=>{u?.(),u=null,y&&(y.setAttribute("aria-pressed","false"),y.replaceChildren(k("maximise")))};y&&(y.setAttribute("aria-pressed","false"),y.append(k("maximise")),y.addEventListener("click",()=>{if(u)return w();u=$e(n),y.setAttribute("aria-pressed","true"),y.replaceChildren(k("restore")),y.focus()}),n.addEventListener("keydown",L=>{L.key!=="Escape"||!u||L.defaultPrevented||(L.preventDefault(),L.stopPropagation(),w(),y.focus())}),s.append(y));let h=e.collapsed!==!0,H=e.collapsible?D("fold",""):null,I=L=>{if(h=L,H){let M=ue(h?x.foldNamed:x.unfoldNamed,{name:b});H.setAttribute("aria-label",M),H.title=M,H.setAttribute("aria-expanded",String(h)),H.replaceChildren(k(h?"chevron-up":"chevron-down"))}l.hidden=!h,f&&(f.hidden=!h),n.classList.toggle("fd-section-folded",!h),!h&&u&&w()};return H&&(H.setAttribute("aria-controls",l.id),H.addEventListener("click",()=>I(!h)),s.append(H)),s.append(...i),I(h),{legend:E,show:I,isOpen:()=>h}}function $e(t){let e=t.closest(".fd-tabpanel")??t.closest(".fd-content")??t.closest(".fd-form"),n=[],l=[],f=t;for(;f!==e&&f.parentElement;){let i=f.parentElement;for(let p of[...i.children])p===f||p.tagName==="LEGEND"||p.hasAttribute("data-unshown")||(p.setAttribute("data-unshown",""),n.push(p));i.classList.contains("fd-grid")&&(i.setAttribute("data-maximising",""),l.push(i)),f=i}return t.setAttribute("data-maximised",""),t.scrollIntoView?.({block:"nearest"}),()=>{for(let i of n)i.removeAttribute("data-unshown");for(let i of l)i.removeAttribute("data-maximising");t.removeAttribute("data-maximised")}}var ve=N(B()),be=16,xe={width:320,height:240};function we(t,e,n,l){let f=i=>{let p=i?n.restoreSize:n.maximise;e.setAttribute("aria-label",p),e.title=p,e.replaceChildren(...[(0,ve.drawIcon)(l,i?"restore":"maximise")].filter(o=>!!o))};f(!1),e.addEventListener("click",()=>{let i=!t.hasAttribute("data-maximised");t.toggleAttribute("data-maximised",i),f(i)})}function ye(t,e,n){let l=n.defaultView,f=()=>getComputedStyle(t).direction==="rtl",i=()=>{let o=t.getBoundingClientRect();return t.setAttribute("data-resized",""),t.style.top=`${o.top}px`,f()?(t.style.right=`${l.innerWidth-o.right}px`,t.style.left="auto"):(t.style.left=`${o.left}px`,t.style.right="auto"),t.style.bottom="auto",o},p=(o,x)=>{let b=t.getBoundingClientRect(),s=f()?b.right:l.innerWidth-b.left,E=l.innerHeight-b.top;t.style.width=`${Math.round(Math.max(xe.width,Math.min(o,s)))}px`,t.style.height=`${Math.round(Math.max(xe.height,Math.min(x,E)))}px`};e.addEventListener("pointerdown",o=>{if(t.hasAttribute("data-maximised"))return;o.preventDefault();let x=i(),b={x:o.clientX,y:o.clientY};e.setPointerCapture?.(o.pointerId);let s=k=>p(x.width+(k.clientX-b.x)*(f()?-1:1),x.height+(k.clientY-b.y)),E=()=>{e.removeEventListener("pointermove",s),e.removeEventListener("pointerup",E),e.removeEventListener("pointercancel",E)};e.addEventListener("pointermove",s),e.addEventListener("pointerup",E),e.addEventListener("pointercancel",E)}),e.addEventListener("keydown",o=>{let x={ArrowRight:[1,0],ArrowLeft:[-1,0],ArrowDown:[0,1],ArrowUp:[0,-1]}[o.key];if(!x||t.hasAttribute("data-maximised"))return;o.preventDefault();let b=i();p(b.width+x[0]*be*(f()?-1:1),b.height+x[1]*be)})}return Re(_e);})();
4
+ return part; }]);
5
+ //# sourceMappingURL=fieldia.head.js.map