@dso-toolkit/core 58.0.0 → 58.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -41,7 +41,8 @@ const Autosuggest = class {
41
41
  this.inputValue = "";
42
42
  this.onInput = (event) => {
43
43
  if (!(event.target instanceof HTMLInputElement)) {
44
- throw new Error("event.target is not instanceof HTMLInputElement");
44
+ return;
45
+ // throw new Error("event.target is not instanceof HTMLInputElement"); #2293
45
46
  }
46
47
  this.showLoading = !this.loadingDelayed;
47
48
  this.inputValue = event.target.value;
@@ -120,7 +121,8 @@ const Autosuggest = class {
120
121
  setTimeout(() => {
121
122
  const input = this.host.querySelector('input[type="text"]');
122
123
  if (!(input instanceof HTMLInputElement)) {
123
- throw new ReferenceError("Mandatory text input not found");
124
+ return;
125
+ // throw new ReferenceError("Mandatory text input not found"); #2293
124
126
  }
125
127
  this.input = input;
126
128
  if (input.id) {
@@ -130,7 +132,8 @@ const Autosuggest = class {
130
132
  input.id = this.inputId;
131
133
  }
132
134
  if (!this.input.labels || this.input.labels.length < 1) {
133
- throw new ReferenceError("Mandatory label for text input not found");
135
+ return;
136
+ // throw new ReferenceError("Mandatory label for text input not found"); #2293
134
137
  }
135
138
  const label = this.input.labels[0];
136
139
  if (label === null || label === void 0 ? void 0 : label.id) {
@@ -1 +1 @@
1
- {"file":"dso-autosuggest.entry.cjs.js","mappings":";;;;;;;;AAAe,SAAS,kBAAkB,CAAC,MAAM,EAAE;AACnD,CAAC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACjC,EAAE,MAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC;AAC3C,EAAE;AACF;AACA;AACA;AACA,CAAC,OAAO,MAAM;AACd,GAAG,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;AACzC,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC1B;;ACVA,MAAM,cAAc,GAAG,w4BAAw4B;;MCYl5B,WAAW;;;;;;IA6Fd,cAAS,GAAWA,KAAE,EAAE,CAAC;IAEzB,YAAO,GAAWA,KAAE,EAAE,CAAC;IAEvB,YAAO,GAAWA,KAAE,EAAE,CAAC;IAEvB,uBAAkB,GAAGC,kBAAQ,CAAC,CAAC,KAAa;MAClD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;MAC3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B,EAAE,GAAG,CAAC,CAAC;IAEA,yBAAoB,GAAGA,kBAAQ,CAAC;MACtC,IAAI,IAAI,CAAC,UAAU,EAAE;QACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;OACzB;KACF,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAEhB,eAAU,GAAG,EAAE,CAAC;IAEhB,YAAO,GAAG,CAAC,KAAY;MAC7B,IAAI,EAAE,KAAK,CAAC,MAAM,YAAY,gBAAgB,CAAC,EAAE;QAC/C,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;OACpE;MAED,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;MACxC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;MACrC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;KACvF,CAAC;IAEM,cAAS,GAAG;MAClB,IAAI,IAAI,CAAC,cAAc,EAAE;QACvB,IAAI,CAAC,eAAe,EAAE,CAAC;OACxB;KACF,CAAC;IAiLM,cAAS,GAAG,CAAC,KAAoB;MACvC,IAAI,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,EAAE;QAC1C,OAAO;OACR;MAED,QAAQ,KAAK,CAAC,GAAG;QACf,KAAK,WAAW;UACd,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;WAC/B;eAAM;YACL,IAAI,CAAC,oBAAoB,EAAE,CAAC;WAC7B;UAED,MAAM;QAER,KAAK,SAAS;UACZ,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;WAC9B;eAAM;YACL,IAAI,CAAC,wBAAwB,EAAE,CAAC;WACjC;UAED,MAAM;QAER,KAAK,KAAK;UACR,IAAI,CAAC,gBAAgB,EAAE,CAAC;UACxB,OAAO;QAET,KAAK,QAAQ;UACX,IAAI,CAAC,gBAAgB,EAAE,CAAC;UACxB,MAAM;QAER,KAAK,OAAO;UACV,IAAI,CAAC,iBAAiB,EAAE,CAAC;UACzB,MAAM;QAER;UACE,OAAO;OACV;MAED,KAAK,CAAC,cAAc,EAAE,CAAC;KACxB,CAAC;uBA7U0C,IAAI;mBAMtC,KAAK;wBAMS,oBAAoB;;;0BAkB3B,KAAK;2BA0BJ,KAAK;;oBAMZ,KAAK;uBAGF,KAAK;;EAGnB,kBAAkB;IAChB,IAAI,CAAC,uBAAuB,EAAE,CAAC;IAE/B,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,UAAU,EAAE;MAChE,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;SAAM,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE;MACtE,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;GACF;EA0CD,eAAe,CAAC,KAAiB;IAC/B,IACE,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ;MACtC,IAAI,CAAC,OAAO;MACZ,KAAK,CAAC,MAAM,YAAY,IAAI;MAC5B,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;MACpC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,EAC3B;MACA,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;GACF;EAED,iBAAiB;IACf,UAAU,CAAC;MACT,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;MAC5D,IAAI,EAAE,KAAK,YAAY,gBAAgB,CAAC,EAAE;QACxC,MAAM,IAAI,cAAc,CAAC,gCAAgC,CAAC,CAAC;OAC5D;MAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;MACnB,IAAI,KAAK,CAAC,EAAE,EAAE;QACZ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;OACzB;WAAM;QACL,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;OACzB;MAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QACtD,MAAM,IAAI,cAAc,CAAC,0CAA0C,CAAC,CAAC;OACtE;MAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;MACnC,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,EAAE,EAAE;QACb,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;OACzB;WAAM,IAAI,KAAK,EAAE;QAChB,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;OACzB;MAED,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;MAC5C,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;MACpD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;MACzD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;MAClD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;MAC/C,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;MACrD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;MACrD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;MACnD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;MACvD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;KACxD,CAAC,CAAC;GACJ;EAED,oBAAoB;;IAClB,MAAA,IAAI,CAAC,KAAK,0CAAE,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACvD,MAAA,IAAI,CAAC,KAAK,0CAAE,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3D,MAAA,IAAI,CAAC,KAAK,0CAAE,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;GAC5D;EAEO,SAAS,CAAC,eAAuB,EAAE,KAAe;IACxD,IAAI,CAAC,eAAe,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;MAC9E,OAAO,CAAC,EAAE,CAAC,CAAC;KACb;IAED,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAExE,OAAO,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,SAAiB;MAC5D,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,EAAE,CAAC;OACX;MAED,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;QAC7B,OAAOC,sBAAO,SAAS,CAAQ,CAAC;OACjC;MAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,OAAOA,sBAAO,SAAS,CAAQ,CAAC;OACjC;MAED,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAClD,CAAC,CAAC;GACJ;EAEO,gBAAgB,CAAC,UAAsB;;IAC7C,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC;IAErC,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;GACnF;EAEO,qBAAqB;;IAC3B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;MACrB,OAAO;KACR;IAED,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAE9C,IAAI,IAAI,CAAC,kBAAkB,EAAE;MAC3B,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;KAChG;GACF;EAEO,oBAAoB;;IAC1B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;MACrB,OAAO;KACR;IAED,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAExE,IAAI,IAAI,CAAC,kBAAkB,EAAE;MAC3B,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;KAChG;GACF;EAEO,oBAAoB;;IAC1B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;MACrB,OAAO;KACR;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IAE/F,IAAI,CAAC,kBAAkB,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,mCAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAE7E,IAAI,IAAI,CAAC,kBAAkB,EAAE;MAC3B,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;KAChG;GACF;EAEO,wBAAwB;;IAC9B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;MACrB,OAAO;KACR;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAE9F,IAAI,CAAC,kBAAkB,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,mCAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEvG,IAAI,IAAI,CAAC,kBAAkB,EAAE;MAC3B,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;KAChG;GACF;EAEO,uBAAuB;;IAC7B,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;IACxC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACtB,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;IACpC,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;GACvD;EAEO,eAAe,CAAC,gBAAmC;;IACzD,IAAI,CAAC,eAAe,GAAG,OAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,mCAAI,KAAK,CAAC;IAClF,IAAI,CAAC,QAAQ,GAAG,MAAA,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,MAAM,MAAK,CAAC,mCAAI,KAAK,CAAC;IACxD,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE9F,IAAI,IAAI,CAAC,eAAe,IAAI,gBAAgB,KAAK,OAAO,EAAE;MACxD,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;SAAM,IAAI,IAAI,CAAC,eAAe,IAAI,gBAAgB,KAAK,MAAM,EAAE;MAC9D,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;GACF;EAEO,gBAAgB;;IACtB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC7B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACtB,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACnD,IAAI,CAAC,qBAAqB,EAAE,CAAC;GAC9B;EAEO,iBAAiB;;IACvB,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,eAAe,EAAE;MACnD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;KAC9C;SAAM;MACL,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAA,IAAI,CAAC,KAAK,0CAAE,KAAK,CAAC,CAAC;KACxC;IAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;GACzB;EA6CO,aAAa,CAAC,UAAsB;IAC1C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;MACrB,OAAO,EAAE,CAAC;KACX;IACD,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;GACtE;EAED,MAAM;;IACJ,MAAM,KAAK,GAAG,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mCAAI,EAAE,CAAC;IAElE,QACEA,8BACEA,qBAAQ,EACP,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,IAC/BA,iBAAK,KAAK,EAAC,0BAA0B,IACnCA,oCAAwB,KAAK,EAAE,IAAI,CAAC,YAAY,GAA2B,CACvE,KAENA,gBACE,IAAI,EAAC,SAAS,EACd,EAAE,EAAE,IAAI,CAAC,SAAS,qBACD,IAAI,CAAC,OAAO,EAC7B,GAAG,EAAE,CAAC,OAAO,MAAM,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,EAC1C,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,QAAQ,IAE9C,CAAC,IAAI,CAAC,eAAe;MACpB,IAAI,CAAC,WAAW;MAChB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,MAC9BA,gBACE,IAAI,EAAC,QAAQ,EACb,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAClC,GAAG,EAAE,UAAU,CAAC,KAAK,EACrB,YAAY,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EACrD,YAAY,EAAE,MAAM,IAAI,CAAC,uBAAuB,EAAE,EAClD,OAAO,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE,mBACxB,CAAC,UAAU,KAAK,IAAI,CAAC,kBAAkB,EAAE,QAAQ,EAAE,gBACtD,UAAU,CAAC,KAAK,IAE5BA,kBAAM,KAAK,EAAC,OAAO,IAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAQ,EACnE,UAAU,CAAC,IAAI,GAAGA,kBAAM,KAAK,EAAC,MAAM,IAAE,UAAU,CAAC,IAAI,CAAQ,GAAG,SAAS,CACvE,CACN,CAAC;OACD,IAAI,CAAC,QAAQ,KACZA,oBACEA,kBAAM,KAAK,EAAC,OAAO,IAChB,CAAC,IAAI,CAAC,aAAa,IAClB,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,UAAU,oBAAoB,EAAE,KAAK,CAAC,KAE7DA,sBAAO,IAAI,CAAC,aAAa,CAAQ,CAClC,CACI,CACJ,CACN,CAAC,CACD,CACN,CACA,EACH;GACH;;;;;;;;;;","names":["v4","debounce","h"],"sources":["../../node_modules/escape-string-regexp/index.js","./src/components/autosuggest/autosuggest.scss?tag=dso-autosuggest&encapsulation=scoped","./src/components/autosuggest/autosuggest.tsx"],"sourcesContent":["export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","@use \"~dso-toolkit/src/variables/units\";\r\n@use \"~dso-toolkit/src/variables/colors\";\r\n@use \"~dso-toolkit/src/variables/scaffolding\";\r\n@use \"~dso-toolkit/src/variables/zindex\";\r\n\r\n@use \"autosuggest.variables\" as core-autosuggest-variables;\r\n\r\n:host {\r\n display: block;\r\n position: relative;\r\n}\r\n\r\nul,\r\n.autosuggest-progress-box {\r\n background-clip: padding-box;\r\n background-color: core-autosuggest-variables.$background-color;\r\n border: 1px solid core-autosuggest-variables.$border-color;\r\n border-radius: scaffolding.$border-radius-base;\r\n box-shadow: core-autosuggest-variables.$box-shadow;\r\n list-style-type: none;\r\n margin-top: 2px;\r\n padding: units.$u1 * 0.5 0;\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 100%;\r\n z-index: zindex.$autosuggest;\r\n}\r\n\r\n.autosuggest-progress-box {\r\n padding: units.$u1 * 1.5 units.$u1;\r\n}\r\n\r\nul {\r\n padding: units.$u1 0;\r\n\r\n li {\r\n display: flex;\r\n justify-content: space-between;\r\n padding: units.$u1 * 0.5 units.$u2;\r\n }\r\n}\r\n\r\nli[aria-selected=\"true\"] {\r\n cursor: pointer;\r\n background-color: colors.$grasgroen;\r\n\r\n &,\r\n .type {\r\n color: colors.$wit;\r\n }\r\n}\r\n\r\nmark {\r\n font-weight: 700;\r\n background-color: inherit;\r\n color: inherit;\r\n padding: 0;\r\n}\r\n\r\n.type {\r\n color: colors.$grijs-60;\r\n}\r\n","import { Component, Element, h, Listen, Prop, State, Fragment, Event, EventEmitter, VNode, Watch } from \"@stencil/core\";\r\nimport debounce from \"debounce\";\r\nimport { v4 } from \"uuid\";\r\nimport escapeStringRegexp from \"escape-string-regexp\";\r\n\r\nimport { Suggestion } from \"./autosuggest.interfaces\";\r\n\r\n@Component({\r\n tag: \"dso-autosuggest\",\r\n styleUrl: \"autosuggest.scss\",\r\n scoped: true,\r\n})\r\nexport class Autosuggest {\r\n /**\r\n * The suggestions for the value of the slotted input element. Optionally a\r\n * Suggestion can have a `type` and `item`.\r\n *\r\n * The `type` is used to style the suggestion. `item` can be use to reference\r\n * the original object that was used to create the suggestion.\r\n *\r\n * The value should be null when no suggestions have been fetched.\r\n */\r\n @Prop()\r\n readonly suggestions: Suggestion[] | null = null;\r\n\r\n /**\r\n * Shows progress indicator when fetching results.\r\n */\r\n @Prop()\r\n loading = false;\r\n\r\n /**\r\n * To override progress indicator's default loading label.\r\n */\r\n @Prop()\r\n loadingLabel?: string = \"Een moment geduld.\";\r\n\r\n /**\r\n * To delay progress indicator showing (in ms).\r\n */\r\n @Prop()\r\n loadingDelayed?: number;\r\n\r\n /**\r\n * To show text when no results are found.\r\n */\r\n @Prop()\r\n notFoundLabel?: string;\r\n\r\n /**\r\n * Whether the previous suggestions will be presented when the input gets focus again.\r\n */\r\n @Prop()\r\n suggestOnFocus = false;\r\n\r\n /**\r\n * Emitted when a suggestion is selected.\r\n * The `detail` property of the `CustomEvent` will contain the selected suggestion.\r\n */\r\n @Event()\r\n dsoSelect!: EventEmitter<Suggestion>;\r\n\r\n /**\r\n * This is emitted debounced for every change for the slotted input type=text element.\r\n */\r\n @Event()\r\n dsoChange!: EventEmitter<string>;\r\n\r\n /**\r\n * Emitted when enter is pressed.\r\n * The `detail` property of the `CustomEvent` will contain the input text.\r\n */\r\n @Event()\r\n dsoSearch!: EventEmitter<string>;\r\n\r\n @Element()\r\n host!: HTMLDsoAutosuggestElement;\r\n\r\n @State()\r\n showSuggestions = false;\r\n\r\n @State()\r\n selectedSuggestion: Suggestion | undefined;\r\n\r\n @State()\r\n notFound = false;\r\n\r\n @State()\r\n showLoading = false;\r\n\r\n @Watch(\"suggestions\")\r\n suggestionsWatcher() {\r\n this.resetSelectedSuggestion();\r\n\r\n if ((!this.showSuggestions || !this.notFound) && this.inputValue) {\r\n this.openSuggestions();\r\n } else if ((this.showSuggestions || this.notFound) && !this.inputValue) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n private input?: HTMLInputElement;\r\n\r\n private listbox: HTMLUListElement | undefined;\r\n\r\n private listboxId: string = v4();\r\n\r\n private inputId: string = v4();\r\n\r\n private labelId: string = v4();\r\n\r\n private debouncedEmitValue = debounce((value: string) => {\r\n this.dsoChange.emit(value);\r\n this.debouncedShowLoading();\r\n }, 200);\r\n\r\n private debouncedShowLoading = debounce(() => {\r\n if (this.inputValue) {\r\n this.showLoading = true;\r\n }\r\n }, this.loadingDelayed);\r\n\r\n private inputValue = \"\";\r\n\r\n private onInput = (event: Event) => {\r\n if (!(event.target instanceof HTMLInputElement)) {\r\n throw new Error(\"event.target is not instanceof HTMLInputElement\");\r\n }\r\n\r\n this.showLoading = !this.loadingDelayed;\r\n this.inputValue = event.target.value;\r\n this.debouncedEmitValue(event.target.value.match(/(\\S+)/g) ? event.target.value : \"\");\r\n };\r\n\r\n private onFocusIn = () => {\r\n if (this.suggestOnFocus) {\r\n this.openSuggestions();\r\n }\r\n };\r\n\r\n @Listen(\"click\", { target: \"document\" })\r\n onDocumentClick(event: MouseEvent) {\r\n if (\r\n (this.showSuggestions || this.notFound) &&\r\n this.listbox &&\r\n event.target instanceof Node &&\r\n !this.listbox.contains(event.target) &&\r\n this.input !== event.target\r\n ) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n connectedCallback() {\r\n setTimeout(() => {\r\n const input = this.host.querySelector('input[type=\"text\"]');\r\n if (!(input instanceof HTMLInputElement)) {\r\n throw new ReferenceError(\"Mandatory text input not found\");\r\n }\r\n\r\n this.input = input;\r\n if (input.id) {\r\n this.inputId = input.id;\r\n } else {\r\n input.id = this.inputId;\r\n }\r\n\r\n if (!this.input.labels || this.input.labels.length < 1) {\r\n throw new ReferenceError(\"Mandatory label for text input not found\");\r\n }\r\n\r\n const label = this.input.labels[0];\r\n if (label?.id) {\r\n this.labelId = label.id;\r\n } else if (label) {\r\n label.id = this.labelId;\r\n }\r\n\r\n this.input.setAttribute(\"role\", \"combobox\");\r\n this.input.setAttribute(\"aria-haspopup\", \"listbox\");\r\n this.input.setAttribute(\"aria-controls\", this.listboxId);\r\n this.input.setAttribute(\"aria-expanded\", \"false\");\r\n this.input.setAttribute(\"autocomplete\", \"off\");\r\n this.input.setAttribute(\"aria-autocomplete\", \"list\");\r\n this.input.setAttribute(\"aria-activedescendant\", \"\");\r\n this.input.addEventListener(\"input\", this.onInput);\r\n this.input.addEventListener(\"keydown\", this.onKeyDown);\r\n this.input.addEventListener(\"focusin\", this.onFocusIn);\r\n });\r\n }\r\n\r\n disconnectedCallback() {\r\n this.input?.removeEventListener(\"input\", this.onInput);\r\n this.input?.removeEventListener(\"keydown\", this.onKeyDown);\r\n this.input?.removeEventListener(\"focusin\", this.onFocusIn);\r\n }\r\n\r\n private markTerms(suggestionValue: string, terms: string[]): (VNode | string)[] {\r\n if (!suggestionValue || !terms || terms.length === 0 || terms[0] === undefined) {\r\n return [\"\"];\r\n }\r\n\r\n const termRegex = new RegExp(`(${escapeStringRegexp(terms[0])})`, \"gi\");\r\n\r\n return suggestionValue.split(termRegex).map((valuePart: string) => {\r\n if (!valuePart) {\r\n return \"\";\r\n }\r\n\r\n if (termRegex.test(valuePart)) {\r\n return <mark>{valuePart}</mark>;\r\n }\r\n\r\n if (terms.length === 1) {\r\n return <span>{valuePart}</span>;\r\n }\r\n\r\n return this.markTerms(valuePart, terms.slice(1));\r\n });\r\n }\r\n\r\n private selectSuggestion(suggestion: Suggestion) {\r\n this.selectedSuggestion = suggestion;\r\n\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(suggestion));\r\n }\r\n\r\n private selectFirstSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n this.selectedSuggestion = this.suggestions[0];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectLastSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n this.selectedSuggestion = this.suggestions[this.suggestions.length - 1];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectNextSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : -1;\r\n\r\n this.selectedSuggestion = this.suggestions[index + 1] ?? this.suggestions[0];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectPreviousSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : 0;\r\n\r\n this.selectedSuggestion = this.suggestions[index - 1] ?? this.suggestions[this.suggestions.length - 1];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private resetSelectedSuggestion() {\r\n this.showLoading = !this.loadingDelayed;\r\n this.notFound = false;\r\n this.selectedSuggestion = undefined;\r\n this.input?.setAttribute(\"aria-activedescendant\", \"\");\r\n }\r\n\r\n private openSuggestions(selectSuggestion?: \"first\" | \"last\") {\r\n this.showSuggestions = (this.suggestions && this.suggestions.length > 0) ?? false;\r\n this.notFound = this.suggestions?.length === 0 ?? false;\r\n this.input?.setAttribute(\"aria-expanded\", (this.showSuggestions || this.notFound).toString());\r\n\r\n if (this.showSuggestions && selectSuggestion === \"first\") {\r\n this.selectFirstSuggestion();\r\n } else if (this.showSuggestions && selectSuggestion === \"last\") {\r\n this.selectLastSuggestion();\r\n }\r\n }\r\n\r\n private closeSuggestions() {\r\n this.showSuggestions = false;\r\n this.notFound = false;\r\n this.input?.setAttribute(\"aria-expanded\", \"false\");\r\n this.selectFirstSuggestion();\r\n }\r\n\r\n private pickSelectedValue() {\r\n if (this.selectedSuggestion && this.showSuggestions) {\r\n this.dsoSelect.emit(this.selectedSuggestion);\r\n } else {\r\n this.dsoSearch.emit(this.input?.value);\r\n }\r\n\r\n this.closeSuggestions();\r\n }\r\n\r\n private onKeyDown = (event: KeyboardEvent) => {\r\n if (event.defaultPrevented || this.loading) {\r\n return;\r\n }\r\n\r\n switch (event.key) {\r\n case \"ArrowDown\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"first\");\r\n } else {\r\n this.selectNextSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"ArrowUp\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"last\");\r\n } else {\r\n this.selectPreviousSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"Tab\":\r\n this.closeSuggestions();\r\n return;\r\n\r\n case \"Escape\":\r\n this.closeSuggestions();\r\n break;\r\n\r\n case \"Enter\":\r\n this.pickSelectedValue();\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n };\r\n\r\n private listboxItemId(suggestion: Suggestion): string {\r\n if (!this.suggestions) {\r\n return \"\";\r\n }\r\n return `${this.inputId}-${this.suggestions.indexOf(suggestion) + 1}`;\r\n }\r\n\r\n render() {\r\n const terms = this.input?.value.split(\" \").filter((t) => t) ?? [];\r\n\r\n return (\r\n <>\r\n <slot />\r\n {this.loading && this.showLoading ? (\r\n <div class=\"autosuggest-progress-box\">\r\n <dso-progress-indicator label={this.loadingLabel}></dso-progress-indicator>\r\n </div>\r\n ) : (\r\n <ul\r\n role=\"listbox\"\r\n id={this.listboxId}\r\n aria-labelledby={this.labelId}\r\n ref={(element) => (this.listbox = element)}\r\n hidden={!this.showSuggestions && !this.notFound}\r\n >\r\n {(this.showSuggestions &&\r\n this.suggestions &&\r\n this.suggestions.map((suggestion) => (\r\n <li\r\n role=\"option\"\r\n id={this.listboxItemId(suggestion)}\r\n key={suggestion.value}\r\n onMouseEnter={() => this.selectSuggestion(suggestion)}\r\n onMouseLeave={() => this.resetSelectedSuggestion()}\r\n onClick={() => this.pickSelectedValue()}\r\n aria-selected={(suggestion === this.selectedSuggestion).toString()}\r\n aria-label={suggestion.value}\r\n >\r\n <span class=\"value\">{this.markTerms(suggestion.value, terms)}</span>\r\n {suggestion.type ? <span class=\"type\">{suggestion.type}</span> : undefined}\r\n </li>\r\n ))) ||\r\n (this.notFound && (\r\n <li>\r\n <span class=\"value\">\r\n {!this.notFoundLabel ? (\r\n this.markTerms(`${this.inputValue} is niet gevonden.`, terms)\r\n ) : (\r\n <span>{this.notFoundLabel}</span>\r\n )}\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n"],"version":3}
1
+ {"file":"dso-autosuggest.entry.cjs.js","mappings":"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","names":["v4","debounce","h"],"sources":["../../node_modules/escape-string-regexp/index.js","./src/components/autosuggest/autosuggest.scss?tag=dso-autosuggest&encapsulation=scoped","./src/components/autosuggest/autosuggest.tsx"],"sourcesContent":["export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","@use \"~dso-toolkit/src/variables/units\";\r\n@use \"~dso-toolkit/src/variables/colors\";\r\n@use \"~dso-toolkit/src/variables/scaffolding\";\r\n@use \"~dso-toolkit/src/variables/zindex\";\r\n\r\n@use \"autosuggest.variables\" as core-autosuggest-variables;\r\n\r\n:host {\r\n display: block;\r\n position: relative;\r\n}\r\n\r\nul,\r\n.autosuggest-progress-box {\r\n background-clip: padding-box;\r\n background-color: core-autosuggest-variables.$background-color;\r\n border: 1px solid core-autosuggest-variables.$border-color;\r\n border-radius: scaffolding.$border-radius-base;\r\n box-shadow: core-autosuggest-variables.$box-shadow;\r\n list-style-type: none;\r\n margin-top: 2px;\r\n padding: units.$u1 * 0.5 0;\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 100%;\r\n z-index: zindex.$autosuggest;\r\n}\r\n\r\n.autosuggest-progress-box {\r\n padding: units.$u1 * 1.5 units.$u1;\r\n}\r\n\r\nul {\r\n padding: units.$u1 0;\r\n\r\n li {\r\n display: flex;\r\n justify-content: space-between;\r\n padding: units.$u1 * 0.5 units.$u2;\r\n }\r\n}\r\n\r\nli[aria-selected=\"true\"] {\r\n cursor: pointer;\r\n background-color: colors.$grasgroen;\r\n\r\n &,\r\n .type {\r\n color: colors.$wit;\r\n }\r\n}\r\n\r\nmark {\r\n font-weight: 700;\r\n background-color: inherit;\r\n color: inherit;\r\n padding: 0;\r\n}\r\n\r\n.type {\r\n color: colors.$grijs-60;\r\n}\r\n","import { Component, Element, h, Listen, Prop, State, Fragment, Event, EventEmitter, VNode, Watch } from \"@stencil/core\";\r\nimport debounce from \"debounce\";\r\nimport { v4 } from \"uuid\";\r\nimport escapeStringRegexp from \"escape-string-regexp\";\r\n\r\nimport { Suggestion } from \"./autosuggest.interfaces\";\r\n\r\n@Component({\r\n tag: \"dso-autosuggest\",\r\n styleUrl: \"autosuggest.scss\",\r\n scoped: true,\r\n})\r\nexport class Autosuggest {\r\n /**\r\n * The suggestions for the value of the slotted input element. Optionally a\r\n * Suggestion can have a `type` and `item`.\r\n *\r\n * The `type` is used to style the suggestion. `item` can be use to reference\r\n * the original object that was used to create the suggestion.\r\n *\r\n * The value should be null when no suggestions have been fetched.\r\n */\r\n @Prop()\r\n readonly suggestions: Suggestion[] | null = null;\r\n\r\n /**\r\n * Shows progress indicator when fetching results.\r\n */\r\n @Prop()\r\n loading = false;\r\n\r\n /**\r\n * To override progress indicator's default loading label.\r\n */\r\n @Prop()\r\n loadingLabel?: string = \"Een moment geduld.\";\r\n\r\n /**\r\n * To delay progress indicator showing (in ms).\r\n */\r\n @Prop()\r\n loadingDelayed?: number;\r\n\r\n /**\r\n * To show text when no results are found.\r\n */\r\n @Prop()\r\n notFoundLabel?: string;\r\n\r\n /**\r\n * Whether the previous suggestions will be presented when the input gets focus again.\r\n */\r\n @Prop()\r\n suggestOnFocus = false;\r\n\r\n /**\r\n * Emitted when a suggestion is selected.\r\n * The `detail` property of the `CustomEvent` will contain the selected suggestion.\r\n */\r\n @Event()\r\n dsoSelect!: EventEmitter<Suggestion>;\r\n\r\n /**\r\n * This is emitted debounced for every change for the slotted input type=text element.\r\n */\r\n @Event()\r\n dsoChange!: EventEmitter<string>;\r\n\r\n /**\r\n * Emitted when enter is pressed.\r\n * The `detail` property of the `CustomEvent` will contain the input text.\r\n */\r\n @Event()\r\n dsoSearch!: EventEmitter<string>;\r\n\r\n @Element()\r\n host!: HTMLDsoAutosuggestElement;\r\n\r\n @State()\r\n showSuggestions = false;\r\n\r\n @State()\r\n selectedSuggestion: Suggestion | undefined;\r\n\r\n @State()\r\n notFound = false;\r\n\r\n @State()\r\n showLoading = false;\r\n\r\n @Watch(\"suggestions\")\r\n suggestionsWatcher() {\r\n this.resetSelectedSuggestion();\r\n\r\n if ((!this.showSuggestions || !this.notFound) && this.inputValue) {\r\n this.openSuggestions();\r\n } else if ((this.showSuggestions || this.notFound) && !this.inputValue) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n private input?: HTMLInputElement;\r\n\r\n private listbox: HTMLUListElement | undefined;\r\n\r\n private listboxId: string = v4();\r\n\r\n private inputId: string = v4();\r\n\r\n private labelId: string = v4();\r\n\r\n private debouncedEmitValue = debounce((value: string) => {\r\n this.dsoChange.emit(value);\r\n this.debouncedShowLoading();\r\n }, 200);\r\n\r\n private debouncedShowLoading = debounce(() => {\r\n if (this.inputValue) {\r\n this.showLoading = true;\r\n }\r\n }, this.loadingDelayed);\r\n\r\n private inputValue = \"\";\r\n\r\n private onInput = (event: Event) => {\r\n if (!(event.target instanceof HTMLInputElement)) {\r\n return;\r\n // throw new Error(\"event.target is not instanceof HTMLInputElement\"); #2293\r\n }\r\n\r\n this.showLoading = !this.loadingDelayed;\r\n this.inputValue = event.target.value;\r\n this.debouncedEmitValue(event.target.value.match(/(\\S+)/g) ? event.target.value : \"\");\r\n };\r\n\r\n private onFocusIn = () => {\r\n if (this.suggestOnFocus) {\r\n this.openSuggestions();\r\n }\r\n };\r\n\r\n @Listen(\"click\", { target: \"document\" })\r\n onDocumentClick(event: MouseEvent) {\r\n if (\r\n (this.showSuggestions || this.notFound) &&\r\n this.listbox &&\r\n event.target instanceof Node &&\r\n !this.listbox.contains(event.target) &&\r\n this.input !== event.target\r\n ) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n connectedCallback() {\r\n setTimeout(() => {\r\n const input = this.host.querySelector('input[type=\"text\"]');\r\n if (!(input instanceof HTMLInputElement)) {\r\n return;\r\n // throw new ReferenceError(\"Mandatory text input not found\"); #2293\r\n }\r\n\r\n this.input = input;\r\n if (input.id) {\r\n this.inputId = input.id;\r\n } else {\r\n input.id = this.inputId;\r\n }\r\n\r\n if (!this.input.labels || this.input.labels.length < 1) {\r\n return;\r\n // throw new ReferenceError(\"Mandatory label for text input not found\"); #2293\r\n }\r\n\r\n const label = this.input.labels[0];\r\n if (label?.id) {\r\n this.labelId = label.id;\r\n } else if (label) {\r\n label.id = this.labelId;\r\n }\r\n\r\n this.input.setAttribute(\"role\", \"combobox\");\r\n this.input.setAttribute(\"aria-haspopup\", \"listbox\");\r\n this.input.setAttribute(\"aria-controls\", this.listboxId);\r\n this.input.setAttribute(\"aria-expanded\", \"false\");\r\n this.input.setAttribute(\"autocomplete\", \"off\");\r\n this.input.setAttribute(\"aria-autocomplete\", \"list\");\r\n this.input.setAttribute(\"aria-activedescendant\", \"\");\r\n this.input.addEventListener(\"input\", this.onInput);\r\n this.input.addEventListener(\"keydown\", this.onKeyDown);\r\n this.input.addEventListener(\"focusin\", this.onFocusIn);\r\n });\r\n }\r\n\r\n disconnectedCallback() {\r\n this.input?.removeEventListener(\"input\", this.onInput);\r\n this.input?.removeEventListener(\"keydown\", this.onKeyDown);\r\n this.input?.removeEventListener(\"focusin\", this.onFocusIn);\r\n }\r\n\r\n private markTerms(suggestionValue: string, terms: string[]): (VNode | string)[] {\r\n if (!suggestionValue || !terms || terms.length === 0 || terms[0] === undefined) {\r\n return [\"\"];\r\n }\r\n\r\n const termRegex = new RegExp(`(${escapeStringRegexp(terms[0])})`, \"gi\");\r\n\r\n return suggestionValue.split(termRegex).map((valuePart: string) => {\r\n if (!valuePart) {\r\n return \"\";\r\n }\r\n\r\n if (termRegex.test(valuePart)) {\r\n return <mark>{valuePart}</mark>;\r\n }\r\n\r\n if (terms.length === 1) {\r\n return <span>{valuePart}</span>;\r\n }\r\n\r\n return this.markTerms(valuePart, terms.slice(1));\r\n });\r\n }\r\n\r\n private selectSuggestion(suggestion: Suggestion) {\r\n this.selectedSuggestion = suggestion;\r\n\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(suggestion));\r\n }\r\n\r\n private selectFirstSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n this.selectedSuggestion = this.suggestions[0];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectLastSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n this.selectedSuggestion = this.suggestions[this.suggestions.length - 1];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectNextSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : -1;\r\n\r\n this.selectedSuggestion = this.suggestions[index + 1] ?? this.suggestions[0];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectPreviousSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : 0;\r\n\r\n this.selectedSuggestion = this.suggestions[index - 1] ?? this.suggestions[this.suggestions.length - 1];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private resetSelectedSuggestion() {\r\n this.showLoading = !this.loadingDelayed;\r\n this.notFound = false;\r\n this.selectedSuggestion = undefined;\r\n this.input?.setAttribute(\"aria-activedescendant\", \"\");\r\n }\r\n\r\n private openSuggestions(selectSuggestion?: \"first\" | \"last\") {\r\n this.showSuggestions = (this.suggestions && this.suggestions.length > 0) ?? false;\r\n this.notFound = this.suggestions?.length === 0 ?? false;\r\n this.input?.setAttribute(\"aria-expanded\", (this.showSuggestions || this.notFound).toString());\r\n\r\n if (this.showSuggestions && selectSuggestion === \"first\") {\r\n this.selectFirstSuggestion();\r\n } else if (this.showSuggestions && selectSuggestion === \"last\") {\r\n this.selectLastSuggestion();\r\n }\r\n }\r\n\r\n private closeSuggestions() {\r\n this.showSuggestions = false;\r\n this.notFound = false;\r\n this.input?.setAttribute(\"aria-expanded\", \"false\");\r\n this.selectFirstSuggestion();\r\n }\r\n\r\n private pickSelectedValue() {\r\n if (this.selectedSuggestion && this.showSuggestions) {\r\n this.dsoSelect.emit(this.selectedSuggestion);\r\n } else {\r\n this.dsoSearch.emit(this.input?.value);\r\n }\r\n\r\n this.closeSuggestions();\r\n }\r\n\r\n private onKeyDown = (event: KeyboardEvent) => {\r\n if (event.defaultPrevented || this.loading) {\r\n return;\r\n }\r\n\r\n switch (event.key) {\r\n case \"ArrowDown\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"first\");\r\n } else {\r\n this.selectNextSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"ArrowUp\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"last\");\r\n } else {\r\n this.selectPreviousSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"Tab\":\r\n this.closeSuggestions();\r\n return;\r\n\r\n case \"Escape\":\r\n this.closeSuggestions();\r\n break;\r\n\r\n case \"Enter\":\r\n this.pickSelectedValue();\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n };\r\n\r\n private listboxItemId(suggestion: Suggestion): string {\r\n if (!this.suggestions) {\r\n return \"\";\r\n }\r\n return `${this.inputId}-${this.suggestions.indexOf(suggestion) + 1}`;\r\n }\r\n\r\n render() {\r\n const terms = this.input?.value.split(\" \").filter((t) => t) ?? [];\r\n\r\n return (\r\n <>\r\n <slot />\r\n {this.loading && this.showLoading ? (\r\n <div class=\"autosuggest-progress-box\">\r\n <dso-progress-indicator label={this.loadingLabel}></dso-progress-indicator>\r\n </div>\r\n ) : (\r\n <ul\r\n role=\"listbox\"\r\n id={this.listboxId}\r\n aria-labelledby={this.labelId}\r\n ref={(element) => (this.listbox = element)}\r\n hidden={!this.showSuggestions && !this.notFound}\r\n >\r\n {(this.showSuggestions &&\r\n this.suggestions &&\r\n this.suggestions.map((suggestion) => (\r\n <li\r\n role=\"option\"\r\n id={this.listboxItemId(suggestion)}\r\n key={suggestion.value}\r\n onMouseEnter={() => this.selectSuggestion(suggestion)}\r\n onMouseLeave={() => this.resetSelectedSuggestion()}\r\n onClick={() => this.pickSelectedValue()}\r\n aria-selected={(suggestion === this.selectedSuggestion).toString()}\r\n aria-label={suggestion.value}\r\n >\r\n <span class=\"value\">{this.markTerms(suggestion.value, terms)}</span>\r\n {suggestion.type ? <span class=\"type\">{suggestion.type}</span> : undefined}\r\n </li>\r\n ))) ||\r\n (this.notFound && (\r\n <li>\r\n <span class=\"value\">\r\n {!this.notFoundLabel ? (\r\n this.markTerms(`${this.inputValue} is niet gevonden.`, terms)\r\n ) : (\r\n <span>{this.notFoundLabel}</span>\r\n )}\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n"],"version":3}
@@ -19,7 +19,8 @@ export class Autosuggest {
19
19
  this.inputValue = "";
20
20
  this.onInput = (event) => {
21
21
  if (!(event.target instanceof HTMLInputElement)) {
22
- throw new Error("event.target is not instanceof HTMLInputElement");
22
+ return;
23
+ // throw new Error("event.target is not instanceof HTMLInputElement"); #2293
23
24
  }
24
25
  this.showLoading = !this.loadingDelayed;
25
26
  this.inputValue = event.target.value;
@@ -98,7 +99,8 @@ export class Autosuggest {
98
99
  setTimeout(() => {
99
100
  const input = this.host.querySelector('input[type="text"]');
100
101
  if (!(input instanceof HTMLInputElement)) {
101
- throw new ReferenceError("Mandatory text input not found");
102
+ return;
103
+ // throw new ReferenceError("Mandatory text input not found"); #2293
102
104
  }
103
105
  this.input = input;
104
106
  if (input.id) {
@@ -108,7 +110,8 @@ export class Autosuggest {
108
110
  input.id = this.inputId;
109
111
  }
110
112
  if (!this.input.labels || this.input.labels.length < 1) {
111
- throw new ReferenceError("Mandatory label for text input not found");
113
+ return;
114
+ // throw new ReferenceError("Mandatory label for text input not found"); #2293
112
115
  }
113
116
  const label = this.input.labels[0];
114
117
  if (label === null || label === void 0 ? void 0 : label.id) {
@@ -1 +1 @@
1
- {"version":3,"file":"autosuggest.js","sourceRoot":"","sources":["../../../src/components/autosuggest/autosuggest.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, h, Listen, Prop, State, Fragment, Event, EventEmitter, VNode, Watch } from \"@stencil/core\";\r\nimport debounce from \"debounce\";\r\nimport { v4 } from \"uuid\";\r\nimport escapeStringRegexp from \"escape-string-regexp\";\r\n\r\nimport { Suggestion } from \"./autosuggest.interfaces\";\r\n\r\n@Component({\r\n tag: \"dso-autosuggest\",\r\n styleUrl: \"autosuggest.scss\",\r\n scoped: true,\r\n})\r\nexport class Autosuggest {\r\n /**\r\n * The suggestions for the value of the slotted input element. Optionally a\r\n * Suggestion can have a `type` and `item`.\r\n *\r\n * The `type` is used to style the suggestion. `item` can be use to reference\r\n * the original object that was used to create the suggestion.\r\n *\r\n * The value should be null when no suggestions have been fetched.\r\n */\r\n @Prop()\r\n readonly suggestions: Suggestion[] | null = null;\r\n\r\n /**\r\n * Shows progress indicator when fetching results.\r\n */\r\n @Prop()\r\n loading = false;\r\n\r\n /**\r\n * To override progress indicator's default loading label.\r\n */\r\n @Prop()\r\n loadingLabel?: string = \"Een moment geduld.\";\r\n\r\n /**\r\n * To delay progress indicator showing (in ms).\r\n */\r\n @Prop()\r\n loadingDelayed?: number;\r\n\r\n /**\r\n * To show text when no results are found.\r\n */\r\n @Prop()\r\n notFoundLabel?: string;\r\n\r\n /**\r\n * Whether the previous suggestions will be presented when the input gets focus again.\r\n */\r\n @Prop()\r\n suggestOnFocus = false;\r\n\r\n /**\r\n * Emitted when a suggestion is selected.\r\n * The `detail` property of the `CustomEvent` will contain the selected suggestion.\r\n */\r\n @Event()\r\n dsoSelect!: EventEmitter<Suggestion>;\r\n\r\n /**\r\n * This is emitted debounced for every change for the slotted input type=text element.\r\n */\r\n @Event()\r\n dsoChange!: EventEmitter<string>;\r\n\r\n /**\r\n * Emitted when enter is pressed.\r\n * The `detail` property of the `CustomEvent` will contain the input text.\r\n */\r\n @Event()\r\n dsoSearch!: EventEmitter<string>;\r\n\r\n @Element()\r\n host!: HTMLDsoAutosuggestElement;\r\n\r\n @State()\r\n showSuggestions = false;\r\n\r\n @State()\r\n selectedSuggestion: Suggestion | undefined;\r\n\r\n @State()\r\n notFound = false;\r\n\r\n @State()\r\n showLoading = false;\r\n\r\n @Watch(\"suggestions\")\r\n suggestionsWatcher() {\r\n this.resetSelectedSuggestion();\r\n\r\n if ((!this.showSuggestions || !this.notFound) && this.inputValue) {\r\n this.openSuggestions();\r\n } else if ((this.showSuggestions || this.notFound) && !this.inputValue) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n private input?: HTMLInputElement;\r\n\r\n private listbox: HTMLUListElement | undefined;\r\n\r\n private listboxId: string = v4();\r\n\r\n private inputId: string = v4();\r\n\r\n private labelId: string = v4();\r\n\r\n private debouncedEmitValue = debounce((value: string) => {\r\n this.dsoChange.emit(value);\r\n this.debouncedShowLoading();\r\n }, 200);\r\n\r\n private debouncedShowLoading = debounce(() => {\r\n if (this.inputValue) {\r\n this.showLoading = true;\r\n }\r\n }, this.loadingDelayed);\r\n\r\n private inputValue = \"\";\r\n\r\n private onInput = (event: Event) => {\r\n if (!(event.target instanceof HTMLInputElement)) {\r\n throw new Error(\"event.target is not instanceof HTMLInputElement\");\r\n }\r\n\r\n this.showLoading = !this.loadingDelayed;\r\n this.inputValue = event.target.value;\r\n this.debouncedEmitValue(event.target.value.match(/(\\S+)/g) ? event.target.value : \"\");\r\n };\r\n\r\n private onFocusIn = () => {\r\n if (this.suggestOnFocus) {\r\n this.openSuggestions();\r\n }\r\n };\r\n\r\n @Listen(\"click\", { target: \"document\" })\r\n onDocumentClick(event: MouseEvent) {\r\n if (\r\n (this.showSuggestions || this.notFound) &&\r\n this.listbox &&\r\n event.target instanceof Node &&\r\n !this.listbox.contains(event.target) &&\r\n this.input !== event.target\r\n ) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n connectedCallback() {\r\n setTimeout(() => {\r\n const input = this.host.querySelector('input[type=\"text\"]');\r\n if (!(input instanceof HTMLInputElement)) {\r\n throw new ReferenceError(\"Mandatory text input not found\");\r\n }\r\n\r\n this.input = input;\r\n if (input.id) {\r\n this.inputId = input.id;\r\n } else {\r\n input.id = this.inputId;\r\n }\r\n\r\n if (!this.input.labels || this.input.labels.length < 1) {\r\n throw new ReferenceError(\"Mandatory label for text input not found\");\r\n }\r\n\r\n const label = this.input.labels[0];\r\n if (label?.id) {\r\n this.labelId = label.id;\r\n } else if (label) {\r\n label.id = this.labelId;\r\n }\r\n\r\n this.input.setAttribute(\"role\", \"combobox\");\r\n this.input.setAttribute(\"aria-haspopup\", \"listbox\");\r\n this.input.setAttribute(\"aria-controls\", this.listboxId);\r\n this.input.setAttribute(\"aria-expanded\", \"false\");\r\n this.input.setAttribute(\"autocomplete\", \"off\");\r\n this.input.setAttribute(\"aria-autocomplete\", \"list\");\r\n this.input.setAttribute(\"aria-activedescendant\", \"\");\r\n this.input.addEventListener(\"input\", this.onInput);\r\n this.input.addEventListener(\"keydown\", this.onKeyDown);\r\n this.input.addEventListener(\"focusin\", this.onFocusIn);\r\n });\r\n }\r\n\r\n disconnectedCallback() {\r\n this.input?.removeEventListener(\"input\", this.onInput);\r\n this.input?.removeEventListener(\"keydown\", this.onKeyDown);\r\n this.input?.removeEventListener(\"focusin\", this.onFocusIn);\r\n }\r\n\r\n private markTerms(suggestionValue: string, terms: string[]): (VNode | string)[] {\r\n if (!suggestionValue || !terms || terms.length === 0 || terms[0] === undefined) {\r\n return [\"\"];\r\n }\r\n\r\n const termRegex = new RegExp(`(${escapeStringRegexp(terms[0])})`, \"gi\");\r\n\r\n return suggestionValue.split(termRegex).map((valuePart: string) => {\r\n if (!valuePart) {\r\n return \"\";\r\n }\r\n\r\n if (termRegex.test(valuePart)) {\r\n return <mark>{valuePart}</mark>;\r\n }\r\n\r\n if (terms.length === 1) {\r\n return <span>{valuePart}</span>;\r\n }\r\n\r\n return this.markTerms(valuePart, terms.slice(1));\r\n });\r\n }\r\n\r\n private selectSuggestion(suggestion: Suggestion) {\r\n this.selectedSuggestion = suggestion;\r\n\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(suggestion));\r\n }\r\n\r\n private selectFirstSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n this.selectedSuggestion = this.suggestions[0];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectLastSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n this.selectedSuggestion = this.suggestions[this.suggestions.length - 1];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectNextSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : -1;\r\n\r\n this.selectedSuggestion = this.suggestions[index + 1] ?? this.suggestions[0];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectPreviousSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : 0;\r\n\r\n this.selectedSuggestion = this.suggestions[index - 1] ?? this.suggestions[this.suggestions.length - 1];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private resetSelectedSuggestion() {\r\n this.showLoading = !this.loadingDelayed;\r\n this.notFound = false;\r\n this.selectedSuggestion = undefined;\r\n this.input?.setAttribute(\"aria-activedescendant\", \"\");\r\n }\r\n\r\n private openSuggestions(selectSuggestion?: \"first\" | \"last\") {\r\n this.showSuggestions = (this.suggestions && this.suggestions.length > 0) ?? false;\r\n this.notFound = this.suggestions?.length === 0 ?? false;\r\n this.input?.setAttribute(\"aria-expanded\", (this.showSuggestions || this.notFound).toString());\r\n\r\n if (this.showSuggestions && selectSuggestion === \"first\") {\r\n this.selectFirstSuggestion();\r\n } else if (this.showSuggestions && selectSuggestion === \"last\") {\r\n this.selectLastSuggestion();\r\n }\r\n }\r\n\r\n private closeSuggestions() {\r\n this.showSuggestions = false;\r\n this.notFound = false;\r\n this.input?.setAttribute(\"aria-expanded\", \"false\");\r\n this.selectFirstSuggestion();\r\n }\r\n\r\n private pickSelectedValue() {\r\n if (this.selectedSuggestion && this.showSuggestions) {\r\n this.dsoSelect.emit(this.selectedSuggestion);\r\n } else {\r\n this.dsoSearch.emit(this.input?.value);\r\n }\r\n\r\n this.closeSuggestions();\r\n }\r\n\r\n private onKeyDown = (event: KeyboardEvent) => {\r\n if (event.defaultPrevented || this.loading) {\r\n return;\r\n }\r\n\r\n switch (event.key) {\r\n case \"ArrowDown\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"first\");\r\n } else {\r\n this.selectNextSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"ArrowUp\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"last\");\r\n } else {\r\n this.selectPreviousSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"Tab\":\r\n this.closeSuggestions();\r\n return;\r\n\r\n case \"Escape\":\r\n this.closeSuggestions();\r\n break;\r\n\r\n case \"Enter\":\r\n this.pickSelectedValue();\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n };\r\n\r\n private listboxItemId(suggestion: Suggestion): string {\r\n if (!this.suggestions) {\r\n return \"\";\r\n }\r\n return `${this.inputId}-${this.suggestions.indexOf(suggestion) + 1}`;\r\n }\r\n\r\n render() {\r\n const terms = this.input?.value.split(\" \").filter((t) => t) ?? [];\r\n\r\n return (\r\n <>\r\n <slot />\r\n {this.loading && this.showLoading ? (\r\n <div class=\"autosuggest-progress-box\">\r\n <dso-progress-indicator label={this.loadingLabel}></dso-progress-indicator>\r\n </div>\r\n ) : (\r\n <ul\r\n role=\"listbox\"\r\n id={this.listboxId}\r\n aria-labelledby={this.labelId}\r\n ref={(element) => (this.listbox = element)}\r\n hidden={!this.showSuggestions && !this.notFound}\r\n >\r\n {(this.showSuggestions &&\r\n this.suggestions &&\r\n this.suggestions.map((suggestion) => (\r\n <li\r\n role=\"option\"\r\n id={this.listboxItemId(suggestion)}\r\n key={suggestion.value}\r\n onMouseEnter={() => this.selectSuggestion(suggestion)}\r\n onMouseLeave={() => this.resetSelectedSuggestion()}\r\n onClick={() => this.pickSelectedValue()}\r\n aria-selected={(suggestion === this.selectedSuggestion).toString()}\r\n aria-label={suggestion.value}\r\n >\r\n <span class=\"value\">{this.markTerms(suggestion.value, terms)}</span>\r\n {suggestion.type ? <span class=\"type\">{suggestion.type}</span> : undefined}\r\n </li>\r\n ))) ||\r\n (this.notFound && (\r\n <li>\r\n <span class=\"value\">\r\n {!this.notFoundLabel ? (\r\n this.markTerms(`${this.inputValue} is niet gevonden.`, terms)\r\n ) : (\r\n <span>{this.notFoundLabel}</span>\r\n )}\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"autosuggest.js","sourceRoot":"","sources":["../../../src/components/autosuggest/autosuggest.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, h, Listen, Prop, State, Fragment, Event, EventEmitter, VNode, Watch } from \"@stencil/core\";\r\nimport debounce from \"debounce\";\r\nimport { v4 } from \"uuid\";\r\nimport escapeStringRegexp from \"escape-string-regexp\";\r\n\r\nimport { Suggestion } from \"./autosuggest.interfaces\";\r\n\r\n@Component({\r\n tag: \"dso-autosuggest\",\r\n styleUrl: \"autosuggest.scss\",\r\n scoped: true,\r\n})\r\nexport class Autosuggest {\r\n /**\r\n * The suggestions for the value of the slotted input element. Optionally a\r\n * Suggestion can have a `type` and `item`.\r\n *\r\n * The `type` is used to style the suggestion. `item` can be use to reference\r\n * the original object that was used to create the suggestion.\r\n *\r\n * The value should be null when no suggestions have been fetched.\r\n */\r\n @Prop()\r\n readonly suggestions: Suggestion[] | null = null;\r\n\r\n /**\r\n * Shows progress indicator when fetching results.\r\n */\r\n @Prop()\r\n loading = false;\r\n\r\n /**\r\n * To override progress indicator's default loading label.\r\n */\r\n @Prop()\r\n loadingLabel?: string = \"Een moment geduld.\";\r\n\r\n /**\r\n * To delay progress indicator showing (in ms).\r\n */\r\n @Prop()\r\n loadingDelayed?: number;\r\n\r\n /**\r\n * To show text when no results are found.\r\n */\r\n @Prop()\r\n notFoundLabel?: string;\r\n\r\n /**\r\n * Whether the previous suggestions will be presented when the input gets focus again.\r\n */\r\n @Prop()\r\n suggestOnFocus = false;\r\n\r\n /**\r\n * Emitted when a suggestion is selected.\r\n * The `detail` property of the `CustomEvent` will contain the selected suggestion.\r\n */\r\n @Event()\r\n dsoSelect!: EventEmitter<Suggestion>;\r\n\r\n /**\r\n * This is emitted debounced for every change for the slotted input type=text element.\r\n */\r\n @Event()\r\n dsoChange!: EventEmitter<string>;\r\n\r\n /**\r\n * Emitted when enter is pressed.\r\n * The `detail` property of the `CustomEvent` will contain the input text.\r\n */\r\n @Event()\r\n dsoSearch!: EventEmitter<string>;\r\n\r\n @Element()\r\n host!: HTMLDsoAutosuggestElement;\r\n\r\n @State()\r\n showSuggestions = false;\r\n\r\n @State()\r\n selectedSuggestion: Suggestion | undefined;\r\n\r\n @State()\r\n notFound = false;\r\n\r\n @State()\r\n showLoading = false;\r\n\r\n @Watch(\"suggestions\")\r\n suggestionsWatcher() {\r\n this.resetSelectedSuggestion();\r\n\r\n if ((!this.showSuggestions || !this.notFound) && this.inputValue) {\r\n this.openSuggestions();\r\n } else if ((this.showSuggestions || this.notFound) && !this.inputValue) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n private input?: HTMLInputElement;\r\n\r\n private listbox: HTMLUListElement | undefined;\r\n\r\n private listboxId: string = v4();\r\n\r\n private inputId: string = v4();\r\n\r\n private labelId: string = v4();\r\n\r\n private debouncedEmitValue = debounce((value: string) => {\r\n this.dsoChange.emit(value);\r\n this.debouncedShowLoading();\r\n }, 200);\r\n\r\n private debouncedShowLoading = debounce(() => {\r\n if (this.inputValue) {\r\n this.showLoading = true;\r\n }\r\n }, this.loadingDelayed);\r\n\r\n private inputValue = \"\";\r\n\r\n private onInput = (event: Event) => {\r\n if (!(event.target instanceof HTMLInputElement)) {\r\n return;\r\n // throw new Error(\"event.target is not instanceof HTMLInputElement\"); #2293\r\n }\r\n\r\n this.showLoading = !this.loadingDelayed;\r\n this.inputValue = event.target.value;\r\n this.debouncedEmitValue(event.target.value.match(/(\\S+)/g) ? event.target.value : \"\");\r\n };\r\n\r\n private onFocusIn = () => {\r\n if (this.suggestOnFocus) {\r\n this.openSuggestions();\r\n }\r\n };\r\n\r\n @Listen(\"click\", { target: \"document\" })\r\n onDocumentClick(event: MouseEvent) {\r\n if (\r\n (this.showSuggestions || this.notFound) &&\r\n this.listbox &&\r\n event.target instanceof Node &&\r\n !this.listbox.contains(event.target) &&\r\n this.input !== event.target\r\n ) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n connectedCallback() {\r\n setTimeout(() => {\r\n const input = this.host.querySelector('input[type=\"text\"]');\r\n if (!(input instanceof HTMLInputElement)) {\r\n return;\r\n // throw new ReferenceError(\"Mandatory text input not found\"); #2293\r\n }\r\n\r\n this.input = input;\r\n if (input.id) {\r\n this.inputId = input.id;\r\n } else {\r\n input.id = this.inputId;\r\n }\r\n\r\n if (!this.input.labels || this.input.labels.length < 1) {\r\n return;\r\n // throw new ReferenceError(\"Mandatory label for text input not found\"); #2293\r\n }\r\n\r\n const label = this.input.labels[0];\r\n if (label?.id) {\r\n this.labelId = label.id;\r\n } else if (label) {\r\n label.id = this.labelId;\r\n }\r\n\r\n this.input.setAttribute(\"role\", \"combobox\");\r\n this.input.setAttribute(\"aria-haspopup\", \"listbox\");\r\n this.input.setAttribute(\"aria-controls\", this.listboxId);\r\n this.input.setAttribute(\"aria-expanded\", \"false\");\r\n this.input.setAttribute(\"autocomplete\", \"off\");\r\n this.input.setAttribute(\"aria-autocomplete\", \"list\");\r\n this.input.setAttribute(\"aria-activedescendant\", \"\");\r\n this.input.addEventListener(\"input\", this.onInput);\r\n this.input.addEventListener(\"keydown\", this.onKeyDown);\r\n this.input.addEventListener(\"focusin\", this.onFocusIn);\r\n });\r\n }\r\n\r\n disconnectedCallback() {\r\n this.input?.removeEventListener(\"input\", this.onInput);\r\n this.input?.removeEventListener(\"keydown\", this.onKeyDown);\r\n this.input?.removeEventListener(\"focusin\", this.onFocusIn);\r\n }\r\n\r\n private markTerms(suggestionValue: string, terms: string[]): (VNode | string)[] {\r\n if (!suggestionValue || !terms || terms.length === 0 || terms[0] === undefined) {\r\n return [\"\"];\r\n }\r\n\r\n const termRegex = new RegExp(`(${escapeStringRegexp(terms[0])})`, \"gi\");\r\n\r\n return suggestionValue.split(termRegex).map((valuePart: string) => {\r\n if (!valuePart) {\r\n return \"\";\r\n }\r\n\r\n if (termRegex.test(valuePart)) {\r\n return <mark>{valuePart}</mark>;\r\n }\r\n\r\n if (terms.length === 1) {\r\n return <span>{valuePart}</span>;\r\n }\r\n\r\n return this.markTerms(valuePart, terms.slice(1));\r\n });\r\n }\r\n\r\n private selectSuggestion(suggestion: Suggestion) {\r\n this.selectedSuggestion = suggestion;\r\n\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(suggestion));\r\n }\r\n\r\n private selectFirstSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n this.selectedSuggestion = this.suggestions[0];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectLastSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n this.selectedSuggestion = this.suggestions[this.suggestions.length - 1];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectNextSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : -1;\r\n\r\n this.selectedSuggestion = this.suggestions[index + 1] ?? this.suggestions[0];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectPreviousSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : 0;\r\n\r\n this.selectedSuggestion = this.suggestions[index - 1] ?? this.suggestions[this.suggestions.length - 1];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private resetSelectedSuggestion() {\r\n this.showLoading = !this.loadingDelayed;\r\n this.notFound = false;\r\n this.selectedSuggestion = undefined;\r\n this.input?.setAttribute(\"aria-activedescendant\", \"\");\r\n }\r\n\r\n private openSuggestions(selectSuggestion?: \"first\" | \"last\") {\r\n this.showSuggestions = (this.suggestions && this.suggestions.length > 0) ?? false;\r\n this.notFound = this.suggestions?.length === 0 ?? false;\r\n this.input?.setAttribute(\"aria-expanded\", (this.showSuggestions || this.notFound).toString());\r\n\r\n if (this.showSuggestions && selectSuggestion === \"first\") {\r\n this.selectFirstSuggestion();\r\n } else if (this.showSuggestions && selectSuggestion === \"last\") {\r\n this.selectLastSuggestion();\r\n }\r\n }\r\n\r\n private closeSuggestions() {\r\n this.showSuggestions = false;\r\n this.notFound = false;\r\n this.input?.setAttribute(\"aria-expanded\", \"false\");\r\n this.selectFirstSuggestion();\r\n }\r\n\r\n private pickSelectedValue() {\r\n if (this.selectedSuggestion && this.showSuggestions) {\r\n this.dsoSelect.emit(this.selectedSuggestion);\r\n } else {\r\n this.dsoSearch.emit(this.input?.value);\r\n }\r\n\r\n this.closeSuggestions();\r\n }\r\n\r\n private onKeyDown = (event: KeyboardEvent) => {\r\n if (event.defaultPrevented || this.loading) {\r\n return;\r\n }\r\n\r\n switch (event.key) {\r\n case \"ArrowDown\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"first\");\r\n } else {\r\n this.selectNextSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"ArrowUp\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"last\");\r\n } else {\r\n this.selectPreviousSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"Tab\":\r\n this.closeSuggestions();\r\n return;\r\n\r\n case \"Escape\":\r\n this.closeSuggestions();\r\n break;\r\n\r\n case \"Enter\":\r\n this.pickSelectedValue();\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n };\r\n\r\n private listboxItemId(suggestion: Suggestion): string {\r\n if (!this.suggestions) {\r\n return \"\";\r\n }\r\n return `${this.inputId}-${this.suggestions.indexOf(suggestion) + 1}`;\r\n }\r\n\r\n render() {\r\n const terms = this.input?.value.split(\" \").filter((t) => t) ?? [];\r\n\r\n return (\r\n <>\r\n <slot />\r\n {this.loading && this.showLoading ? (\r\n <div class=\"autosuggest-progress-box\">\r\n <dso-progress-indicator label={this.loadingLabel}></dso-progress-indicator>\r\n </div>\r\n ) : (\r\n <ul\r\n role=\"listbox\"\r\n id={this.listboxId}\r\n aria-labelledby={this.labelId}\r\n ref={(element) => (this.listbox = element)}\r\n hidden={!this.showSuggestions && !this.notFound}\r\n >\r\n {(this.showSuggestions &&\r\n this.suggestions &&\r\n this.suggestions.map((suggestion) => (\r\n <li\r\n role=\"option\"\r\n id={this.listboxItemId(suggestion)}\r\n key={suggestion.value}\r\n onMouseEnter={() => this.selectSuggestion(suggestion)}\r\n onMouseLeave={() => this.resetSelectedSuggestion()}\r\n onClick={() => this.pickSelectedValue()}\r\n aria-selected={(suggestion === this.selectedSuggestion).toString()}\r\n aria-label={suggestion.value}\r\n >\r\n <span class=\"value\">{this.markTerms(suggestion.value, terms)}</span>\r\n {suggestion.type ? <span class=\"type\">{suggestion.type}</span> : undefined}\r\n </li>\r\n ))) ||\r\n (this.notFound && (\r\n <li>\r\n <span class=\"value\">\r\n {!this.notFoundLabel ? (\r\n this.markTerms(`${this.inputValue} is niet gevonden.`, terms)\r\n ) : (\r\n <span>{this.notFoundLabel}</span>\r\n )}\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n"]}
@@ -39,7 +39,8 @@ const Autosuggest = /*@__PURE__*/ proxyCustomElement(class Autosuggest extends H
39
39
  this.inputValue = "";
40
40
  this.onInput = (event) => {
41
41
  if (!(event.target instanceof HTMLInputElement)) {
42
- throw new Error("event.target is not instanceof HTMLInputElement");
42
+ return;
43
+ // throw new Error("event.target is not instanceof HTMLInputElement"); #2293
43
44
  }
44
45
  this.showLoading = !this.loadingDelayed;
45
46
  this.inputValue = event.target.value;
@@ -118,7 +119,8 @@ const Autosuggest = /*@__PURE__*/ proxyCustomElement(class Autosuggest extends H
118
119
  setTimeout(() => {
119
120
  const input = this.host.querySelector('input[type="text"]');
120
121
  if (!(input instanceof HTMLInputElement)) {
121
- throw new ReferenceError("Mandatory text input not found");
122
+ return;
123
+ // throw new ReferenceError("Mandatory text input not found"); #2293
122
124
  }
123
125
  this.input = input;
124
126
  if (input.id) {
@@ -128,7 +130,8 @@ const Autosuggest = /*@__PURE__*/ proxyCustomElement(class Autosuggest extends H
128
130
  input.id = this.inputId;
129
131
  }
130
132
  if (!this.input.labels || this.input.labels.length < 1) {
131
- throw new ReferenceError("Mandatory label for text input not found");
133
+ return;
134
+ // throw new ReferenceError("Mandatory label for text input not found"); #2293
132
135
  }
133
136
  const label = this.input.labels[0];
134
137
  if (label === null || label === void 0 ? void 0 : label.id) {
@@ -1 +1 @@
1
- {"file":"dso-autosuggest.js","mappings":"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","names":["debounce"],"sources":["../../node_modules/escape-string-regexp/index.js","./src/components/autosuggest/autosuggest.scss?tag=dso-autosuggest&encapsulation=scoped","./src/components/autosuggest/autosuggest.tsx"],"sourcesContent":["export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","@use \"~dso-toolkit/src/variables/units\";\r\n@use \"~dso-toolkit/src/variables/colors\";\r\n@use \"~dso-toolkit/src/variables/scaffolding\";\r\n@use \"~dso-toolkit/src/variables/zindex\";\r\n\r\n@use \"autosuggest.variables\" as core-autosuggest-variables;\r\n\r\n:host {\r\n display: block;\r\n position: relative;\r\n}\r\n\r\nul,\r\n.autosuggest-progress-box {\r\n background-clip: padding-box;\r\n background-color: core-autosuggest-variables.$background-color;\r\n border: 1px solid core-autosuggest-variables.$border-color;\r\n border-radius: scaffolding.$border-radius-base;\r\n box-shadow: core-autosuggest-variables.$box-shadow;\r\n list-style-type: none;\r\n margin-top: 2px;\r\n padding: units.$u1 * 0.5 0;\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 100%;\r\n z-index: zindex.$autosuggest;\r\n}\r\n\r\n.autosuggest-progress-box {\r\n padding: units.$u1 * 1.5 units.$u1;\r\n}\r\n\r\nul {\r\n padding: units.$u1 0;\r\n\r\n li {\r\n display: flex;\r\n justify-content: space-between;\r\n padding: units.$u1 * 0.5 units.$u2;\r\n }\r\n}\r\n\r\nli[aria-selected=\"true\"] {\r\n cursor: pointer;\r\n background-color: colors.$grasgroen;\r\n\r\n &,\r\n .type {\r\n color: colors.$wit;\r\n }\r\n}\r\n\r\nmark {\r\n font-weight: 700;\r\n background-color: inherit;\r\n color: inherit;\r\n padding: 0;\r\n}\r\n\r\n.type {\r\n color: colors.$grijs-60;\r\n}\r\n","import { Component, Element, h, Listen, Prop, State, Fragment, Event, EventEmitter, VNode, Watch } from \"@stencil/core\";\r\nimport debounce from \"debounce\";\r\nimport { v4 } from \"uuid\";\r\nimport escapeStringRegexp from \"escape-string-regexp\";\r\n\r\nimport { Suggestion } from \"./autosuggest.interfaces\";\r\n\r\n@Component({\r\n tag: \"dso-autosuggest\",\r\n styleUrl: \"autosuggest.scss\",\r\n scoped: true,\r\n})\r\nexport class Autosuggest {\r\n /**\r\n * The suggestions for the value of the slotted input element. Optionally a\r\n * Suggestion can have a `type` and `item`.\r\n *\r\n * The `type` is used to style the suggestion. `item` can be use to reference\r\n * the original object that was used to create the suggestion.\r\n *\r\n * The value should be null when no suggestions have been fetched.\r\n */\r\n @Prop()\r\n readonly suggestions: Suggestion[] | null = null;\r\n\r\n /**\r\n * Shows progress indicator when fetching results.\r\n */\r\n @Prop()\r\n loading = false;\r\n\r\n /**\r\n * To override progress indicator's default loading label.\r\n */\r\n @Prop()\r\n loadingLabel?: string = \"Een moment geduld.\";\r\n\r\n /**\r\n * To delay progress indicator showing (in ms).\r\n */\r\n @Prop()\r\n loadingDelayed?: number;\r\n\r\n /**\r\n * To show text when no results are found.\r\n */\r\n @Prop()\r\n notFoundLabel?: string;\r\n\r\n /**\r\n * Whether the previous suggestions will be presented when the input gets focus again.\r\n */\r\n @Prop()\r\n suggestOnFocus = false;\r\n\r\n /**\r\n * Emitted when a suggestion is selected.\r\n * The `detail` property of the `CustomEvent` will contain the selected suggestion.\r\n */\r\n @Event()\r\n dsoSelect!: EventEmitter<Suggestion>;\r\n\r\n /**\r\n * This is emitted debounced for every change for the slotted input type=text element.\r\n */\r\n @Event()\r\n dsoChange!: EventEmitter<string>;\r\n\r\n /**\r\n * Emitted when enter is pressed.\r\n * The `detail` property of the `CustomEvent` will contain the input text.\r\n */\r\n @Event()\r\n dsoSearch!: EventEmitter<string>;\r\n\r\n @Element()\r\n host!: HTMLDsoAutosuggestElement;\r\n\r\n @State()\r\n showSuggestions = false;\r\n\r\n @State()\r\n selectedSuggestion: Suggestion | undefined;\r\n\r\n @State()\r\n notFound = false;\r\n\r\n @State()\r\n showLoading = false;\r\n\r\n @Watch(\"suggestions\")\r\n suggestionsWatcher() {\r\n this.resetSelectedSuggestion();\r\n\r\n if ((!this.showSuggestions || !this.notFound) && this.inputValue) {\r\n this.openSuggestions();\r\n } else if ((this.showSuggestions || this.notFound) && !this.inputValue) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n private input?: HTMLInputElement;\r\n\r\n private listbox: HTMLUListElement | undefined;\r\n\r\n private listboxId: string = v4();\r\n\r\n private inputId: string = v4();\r\n\r\n private labelId: string = v4();\r\n\r\n private debouncedEmitValue = debounce((value: string) => {\r\n this.dsoChange.emit(value);\r\n this.debouncedShowLoading();\r\n }, 200);\r\n\r\n private debouncedShowLoading = debounce(() => {\r\n if (this.inputValue) {\r\n this.showLoading = true;\r\n }\r\n }, this.loadingDelayed);\r\n\r\n private inputValue = \"\";\r\n\r\n private onInput = (event: Event) => {\r\n if (!(event.target instanceof HTMLInputElement)) {\r\n throw new Error(\"event.target is not instanceof HTMLInputElement\");\r\n }\r\n\r\n this.showLoading = !this.loadingDelayed;\r\n this.inputValue = event.target.value;\r\n this.debouncedEmitValue(event.target.value.match(/(\\S+)/g) ? event.target.value : \"\");\r\n };\r\n\r\n private onFocusIn = () => {\r\n if (this.suggestOnFocus) {\r\n this.openSuggestions();\r\n }\r\n };\r\n\r\n @Listen(\"click\", { target: \"document\" })\r\n onDocumentClick(event: MouseEvent) {\r\n if (\r\n (this.showSuggestions || this.notFound) &&\r\n this.listbox &&\r\n event.target instanceof Node &&\r\n !this.listbox.contains(event.target) &&\r\n this.input !== event.target\r\n ) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n connectedCallback() {\r\n setTimeout(() => {\r\n const input = this.host.querySelector('input[type=\"text\"]');\r\n if (!(input instanceof HTMLInputElement)) {\r\n throw new ReferenceError(\"Mandatory text input not found\");\r\n }\r\n\r\n this.input = input;\r\n if (input.id) {\r\n this.inputId = input.id;\r\n } else {\r\n input.id = this.inputId;\r\n }\r\n\r\n if (!this.input.labels || this.input.labels.length < 1) {\r\n throw new ReferenceError(\"Mandatory label for text input not found\");\r\n }\r\n\r\n const label = this.input.labels[0];\r\n if (label?.id) {\r\n this.labelId = label.id;\r\n } else if (label) {\r\n label.id = this.labelId;\r\n }\r\n\r\n this.input.setAttribute(\"role\", \"combobox\");\r\n this.input.setAttribute(\"aria-haspopup\", \"listbox\");\r\n this.input.setAttribute(\"aria-controls\", this.listboxId);\r\n this.input.setAttribute(\"aria-expanded\", \"false\");\r\n this.input.setAttribute(\"autocomplete\", \"off\");\r\n this.input.setAttribute(\"aria-autocomplete\", \"list\");\r\n this.input.setAttribute(\"aria-activedescendant\", \"\");\r\n this.input.addEventListener(\"input\", this.onInput);\r\n this.input.addEventListener(\"keydown\", this.onKeyDown);\r\n this.input.addEventListener(\"focusin\", this.onFocusIn);\r\n });\r\n }\r\n\r\n disconnectedCallback() {\r\n this.input?.removeEventListener(\"input\", this.onInput);\r\n this.input?.removeEventListener(\"keydown\", this.onKeyDown);\r\n this.input?.removeEventListener(\"focusin\", this.onFocusIn);\r\n }\r\n\r\n private markTerms(suggestionValue: string, terms: string[]): (VNode | string)[] {\r\n if (!suggestionValue || !terms || terms.length === 0 || terms[0] === undefined) {\r\n return [\"\"];\r\n }\r\n\r\n const termRegex = new RegExp(`(${escapeStringRegexp(terms[0])})`, \"gi\");\r\n\r\n return suggestionValue.split(termRegex).map((valuePart: string) => {\r\n if (!valuePart) {\r\n return \"\";\r\n }\r\n\r\n if (termRegex.test(valuePart)) {\r\n return <mark>{valuePart}</mark>;\r\n }\r\n\r\n if (terms.length === 1) {\r\n return <span>{valuePart}</span>;\r\n }\r\n\r\n return this.markTerms(valuePart, terms.slice(1));\r\n });\r\n }\r\n\r\n private selectSuggestion(suggestion: Suggestion) {\r\n this.selectedSuggestion = suggestion;\r\n\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(suggestion));\r\n }\r\n\r\n private selectFirstSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n this.selectedSuggestion = this.suggestions[0];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectLastSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n this.selectedSuggestion = this.suggestions[this.suggestions.length - 1];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectNextSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : -1;\r\n\r\n this.selectedSuggestion = this.suggestions[index + 1] ?? this.suggestions[0];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectPreviousSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : 0;\r\n\r\n this.selectedSuggestion = this.suggestions[index - 1] ?? this.suggestions[this.suggestions.length - 1];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private resetSelectedSuggestion() {\r\n this.showLoading = !this.loadingDelayed;\r\n this.notFound = false;\r\n this.selectedSuggestion = undefined;\r\n this.input?.setAttribute(\"aria-activedescendant\", \"\");\r\n }\r\n\r\n private openSuggestions(selectSuggestion?: \"first\" | \"last\") {\r\n this.showSuggestions = (this.suggestions && this.suggestions.length > 0) ?? false;\r\n this.notFound = this.suggestions?.length === 0 ?? false;\r\n this.input?.setAttribute(\"aria-expanded\", (this.showSuggestions || this.notFound).toString());\r\n\r\n if (this.showSuggestions && selectSuggestion === \"first\") {\r\n this.selectFirstSuggestion();\r\n } else if (this.showSuggestions && selectSuggestion === \"last\") {\r\n this.selectLastSuggestion();\r\n }\r\n }\r\n\r\n private closeSuggestions() {\r\n this.showSuggestions = false;\r\n this.notFound = false;\r\n this.input?.setAttribute(\"aria-expanded\", \"false\");\r\n this.selectFirstSuggestion();\r\n }\r\n\r\n private pickSelectedValue() {\r\n if (this.selectedSuggestion && this.showSuggestions) {\r\n this.dsoSelect.emit(this.selectedSuggestion);\r\n } else {\r\n this.dsoSearch.emit(this.input?.value);\r\n }\r\n\r\n this.closeSuggestions();\r\n }\r\n\r\n private onKeyDown = (event: KeyboardEvent) => {\r\n if (event.defaultPrevented || this.loading) {\r\n return;\r\n }\r\n\r\n switch (event.key) {\r\n case \"ArrowDown\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"first\");\r\n } else {\r\n this.selectNextSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"ArrowUp\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"last\");\r\n } else {\r\n this.selectPreviousSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"Tab\":\r\n this.closeSuggestions();\r\n return;\r\n\r\n case \"Escape\":\r\n this.closeSuggestions();\r\n break;\r\n\r\n case \"Enter\":\r\n this.pickSelectedValue();\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n };\r\n\r\n private listboxItemId(suggestion: Suggestion): string {\r\n if (!this.suggestions) {\r\n return \"\";\r\n }\r\n return `${this.inputId}-${this.suggestions.indexOf(suggestion) + 1}`;\r\n }\r\n\r\n render() {\r\n const terms = this.input?.value.split(\" \").filter((t) => t) ?? [];\r\n\r\n return (\r\n <>\r\n <slot />\r\n {this.loading && this.showLoading ? (\r\n <div class=\"autosuggest-progress-box\">\r\n <dso-progress-indicator label={this.loadingLabel}></dso-progress-indicator>\r\n </div>\r\n ) : (\r\n <ul\r\n role=\"listbox\"\r\n id={this.listboxId}\r\n aria-labelledby={this.labelId}\r\n ref={(element) => (this.listbox = element)}\r\n hidden={!this.showSuggestions && !this.notFound}\r\n >\r\n {(this.showSuggestions &&\r\n this.suggestions &&\r\n this.suggestions.map((suggestion) => (\r\n <li\r\n role=\"option\"\r\n id={this.listboxItemId(suggestion)}\r\n key={suggestion.value}\r\n onMouseEnter={() => this.selectSuggestion(suggestion)}\r\n onMouseLeave={() => this.resetSelectedSuggestion()}\r\n onClick={() => this.pickSelectedValue()}\r\n aria-selected={(suggestion === this.selectedSuggestion).toString()}\r\n aria-label={suggestion.value}\r\n >\r\n <span class=\"value\">{this.markTerms(suggestion.value, terms)}</span>\r\n {suggestion.type ? <span class=\"type\">{suggestion.type}</span> : undefined}\r\n </li>\r\n ))) ||\r\n (this.notFound && (\r\n <li>\r\n <span class=\"value\">\r\n {!this.notFoundLabel ? (\r\n this.markTerms(`${this.inputValue} is niet gevonden.`, terms)\r\n ) : (\r\n <span>{this.notFoundLabel}</span>\r\n )}\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n"],"version":3}
1
+ {"file":"dso-autosuggest.js","mappings":"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","names":["debounce"],"sources":["../../node_modules/escape-string-regexp/index.js","./src/components/autosuggest/autosuggest.scss?tag=dso-autosuggest&encapsulation=scoped","./src/components/autosuggest/autosuggest.tsx"],"sourcesContent":["export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","@use \"~dso-toolkit/src/variables/units\";\r\n@use \"~dso-toolkit/src/variables/colors\";\r\n@use \"~dso-toolkit/src/variables/scaffolding\";\r\n@use \"~dso-toolkit/src/variables/zindex\";\r\n\r\n@use \"autosuggest.variables\" as core-autosuggest-variables;\r\n\r\n:host {\r\n display: block;\r\n position: relative;\r\n}\r\n\r\nul,\r\n.autosuggest-progress-box {\r\n background-clip: padding-box;\r\n background-color: core-autosuggest-variables.$background-color;\r\n border: 1px solid core-autosuggest-variables.$border-color;\r\n border-radius: scaffolding.$border-radius-base;\r\n box-shadow: core-autosuggest-variables.$box-shadow;\r\n list-style-type: none;\r\n margin-top: 2px;\r\n padding: units.$u1 * 0.5 0;\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 100%;\r\n z-index: zindex.$autosuggest;\r\n}\r\n\r\n.autosuggest-progress-box {\r\n padding: units.$u1 * 1.5 units.$u1;\r\n}\r\n\r\nul {\r\n padding: units.$u1 0;\r\n\r\n li {\r\n display: flex;\r\n justify-content: space-between;\r\n padding: units.$u1 * 0.5 units.$u2;\r\n }\r\n}\r\n\r\nli[aria-selected=\"true\"] {\r\n cursor: pointer;\r\n background-color: colors.$grasgroen;\r\n\r\n &,\r\n .type {\r\n color: colors.$wit;\r\n }\r\n}\r\n\r\nmark {\r\n font-weight: 700;\r\n background-color: inherit;\r\n color: inherit;\r\n padding: 0;\r\n}\r\n\r\n.type {\r\n color: colors.$grijs-60;\r\n}\r\n","import { Component, Element, h, Listen, Prop, State, Fragment, Event, EventEmitter, VNode, Watch } from \"@stencil/core\";\r\nimport debounce from \"debounce\";\r\nimport { v4 } from \"uuid\";\r\nimport escapeStringRegexp from \"escape-string-regexp\";\r\n\r\nimport { Suggestion } from \"./autosuggest.interfaces\";\r\n\r\n@Component({\r\n tag: \"dso-autosuggest\",\r\n styleUrl: \"autosuggest.scss\",\r\n scoped: true,\r\n})\r\nexport class Autosuggest {\r\n /**\r\n * The suggestions for the value of the slotted input element. Optionally a\r\n * Suggestion can have a `type` and `item`.\r\n *\r\n * The `type` is used to style the suggestion. `item` can be use to reference\r\n * the original object that was used to create the suggestion.\r\n *\r\n * The value should be null when no suggestions have been fetched.\r\n */\r\n @Prop()\r\n readonly suggestions: Suggestion[] | null = null;\r\n\r\n /**\r\n * Shows progress indicator when fetching results.\r\n */\r\n @Prop()\r\n loading = false;\r\n\r\n /**\r\n * To override progress indicator's default loading label.\r\n */\r\n @Prop()\r\n loadingLabel?: string = \"Een moment geduld.\";\r\n\r\n /**\r\n * To delay progress indicator showing (in ms).\r\n */\r\n @Prop()\r\n loadingDelayed?: number;\r\n\r\n /**\r\n * To show text when no results are found.\r\n */\r\n @Prop()\r\n notFoundLabel?: string;\r\n\r\n /**\r\n * Whether the previous suggestions will be presented when the input gets focus again.\r\n */\r\n @Prop()\r\n suggestOnFocus = false;\r\n\r\n /**\r\n * Emitted when a suggestion is selected.\r\n * The `detail` property of the `CustomEvent` will contain the selected suggestion.\r\n */\r\n @Event()\r\n dsoSelect!: EventEmitter<Suggestion>;\r\n\r\n /**\r\n * This is emitted debounced for every change for the slotted input type=text element.\r\n */\r\n @Event()\r\n dsoChange!: EventEmitter<string>;\r\n\r\n /**\r\n * Emitted when enter is pressed.\r\n * The `detail` property of the `CustomEvent` will contain the input text.\r\n */\r\n @Event()\r\n dsoSearch!: EventEmitter<string>;\r\n\r\n @Element()\r\n host!: HTMLDsoAutosuggestElement;\r\n\r\n @State()\r\n showSuggestions = false;\r\n\r\n @State()\r\n selectedSuggestion: Suggestion | undefined;\r\n\r\n @State()\r\n notFound = false;\r\n\r\n @State()\r\n showLoading = false;\r\n\r\n @Watch(\"suggestions\")\r\n suggestionsWatcher() {\r\n this.resetSelectedSuggestion();\r\n\r\n if ((!this.showSuggestions || !this.notFound) && this.inputValue) {\r\n this.openSuggestions();\r\n } else if ((this.showSuggestions || this.notFound) && !this.inputValue) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n private input?: HTMLInputElement;\r\n\r\n private listbox: HTMLUListElement | undefined;\r\n\r\n private listboxId: string = v4();\r\n\r\n private inputId: string = v4();\r\n\r\n private labelId: string = v4();\r\n\r\n private debouncedEmitValue = debounce((value: string) => {\r\n this.dsoChange.emit(value);\r\n this.debouncedShowLoading();\r\n }, 200);\r\n\r\n private debouncedShowLoading = debounce(() => {\r\n if (this.inputValue) {\r\n this.showLoading = true;\r\n }\r\n }, this.loadingDelayed);\r\n\r\n private inputValue = \"\";\r\n\r\n private onInput = (event: Event) => {\r\n if (!(event.target instanceof HTMLInputElement)) {\r\n return;\r\n // throw new Error(\"event.target is not instanceof HTMLInputElement\"); #2293\r\n }\r\n\r\n this.showLoading = !this.loadingDelayed;\r\n this.inputValue = event.target.value;\r\n this.debouncedEmitValue(event.target.value.match(/(\\S+)/g) ? event.target.value : \"\");\r\n };\r\n\r\n private onFocusIn = () => {\r\n if (this.suggestOnFocus) {\r\n this.openSuggestions();\r\n }\r\n };\r\n\r\n @Listen(\"click\", { target: \"document\" })\r\n onDocumentClick(event: MouseEvent) {\r\n if (\r\n (this.showSuggestions || this.notFound) &&\r\n this.listbox &&\r\n event.target instanceof Node &&\r\n !this.listbox.contains(event.target) &&\r\n this.input !== event.target\r\n ) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n connectedCallback() {\r\n setTimeout(() => {\r\n const input = this.host.querySelector('input[type=\"text\"]');\r\n if (!(input instanceof HTMLInputElement)) {\r\n return;\r\n // throw new ReferenceError(\"Mandatory text input not found\"); #2293\r\n }\r\n\r\n this.input = input;\r\n if (input.id) {\r\n this.inputId = input.id;\r\n } else {\r\n input.id = this.inputId;\r\n }\r\n\r\n if (!this.input.labels || this.input.labels.length < 1) {\r\n return;\r\n // throw new ReferenceError(\"Mandatory label for text input not found\"); #2293\r\n }\r\n\r\n const label = this.input.labels[0];\r\n if (label?.id) {\r\n this.labelId = label.id;\r\n } else if (label) {\r\n label.id = this.labelId;\r\n }\r\n\r\n this.input.setAttribute(\"role\", \"combobox\");\r\n this.input.setAttribute(\"aria-haspopup\", \"listbox\");\r\n this.input.setAttribute(\"aria-controls\", this.listboxId);\r\n this.input.setAttribute(\"aria-expanded\", \"false\");\r\n this.input.setAttribute(\"autocomplete\", \"off\");\r\n this.input.setAttribute(\"aria-autocomplete\", \"list\");\r\n this.input.setAttribute(\"aria-activedescendant\", \"\");\r\n this.input.addEventListener(\"input\", this.onInput);\r\n this.input.addEventListener(\"keydown\", this.onKeyDown);\r\n this.input.addEventListener(\"focusin\", this.onFocusIn);\r\n });\r\n }\r\n\r\n disconnectedCallback() {\r\n this.input?.removeEventListener(\"input\", this.onInput);\r\n this.input?.removeEventListener(\"keydown\", this.onKeyDown);\r\n this.input?.removeEventListener(\"focusin\", this.onFocusIn);\r\n }\r\n\r\n private markTerms(suggestionValue: string, terms: string[]): (VNode | string)[] {\r\n if (!suggestionValue || !terms || terms.length === 0 || terms[0] === undefined) {\r\n return [\"\"];\r\n }\r\n\r\n const termRegex = new RegExp(`(${escapeStringRegexp(terms[0])})`, \"gi\");\r\n\r\n return suggestionValue.split(termRegex).map((valuePart: string) => {\r\n if (!valuePart) {\r\n return \"\";\r\n }\r\n\r\n if (termRegex.test(valuePart)) {\r\n return <mark>{valuePart}</mark>;\r\n }\r\n\r\n if (terms.length === 1) {\r\n return <span>{valuePart}</span>;\r\n }\r\n\r\n return this.markTerms(valuePart, terms.slice(1));\r\n });\r\n }\r\n\r\n private selectSuggestion(suggestion: Suggestion) {\r\n this.selectedSuggestion = suggestion;\r\n\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(suggestion));\r\n }\r\n\r\n private selectFirstSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n this.selectedSuggestion = this.suggestions[0];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectLastSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n this.selectedSuggestion = this.suggestions[this.suggestions.length - 1];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectNextSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : -1;\r\n\r\n this.selectedSuggestion = this.suggestions[index + 1] ?? this.suggestions[0];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectPreviousSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : 0;\r\n\r\n this.selectedSuggestion = this.suggestions[index - 1] ?? this.suggestions[this.suggestions.length - 1];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private resetSelectedSuggestion() {\r\n this.showLoading = !this.loadingDelayed;\r\n this.notFound = false;\r\n this.selectedSuggestion = undefined;\r\n this.input?.setAttribute(\"aria-activedescendant\", \"\");\r\n }\r\n\r\n private openSuggestions(selectSuggestion?: \"first\" | \"last\") {\r\n this.showSuggestions = (this.suggestions && this.suggestions.length > 0) ?? false;\r\n this.notFound = this.suggestions?.length === 0 ?? false;\r\n this.input?.setAttribute(\"aria-expanded\", (this.showSuggestions || this.notFound).toString());\r\n\r\n if (this.showSuggestions && selectSuggestion === \"first\") {\r\n this.selectFirstSuggestion();\r\n } else if (this.showSuggestions && selectSuggestion === \"last\") {\r\n this.selectLastSuggestion();\r\n }\r\n }\r\n\r\n private closeSuggestions() {\r\n this.showSuggestions = false;\r\n this.notFound = false;\r\n this.input?.setAttribute(\"aria-expanded\", \"false\");\r\n this.selectFirstSuggestion();\r\n }\r\n\r\n private pickSelectedValue() {\r\n if (this.selectedSuggestion && this.showSuggestions) {\r\n this.dsoSelect.emit(this.selectedSuggestion);\r\n } else {\r\n this.dsoSearch.emit(this.input?.value);\r\n }\r\n\r\n this.closeSuggestions();\r\n }\r\n\r\n private onKeyDown = (event: KeyboardEvent) => {\r\n if (event.defaultPrevented || this.loading) {\r\n return;\r\n }\r\n\r\n switch (event.key) {\r\n case \"ArrowDown\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"first\");\r\n } else {\r\n this.selectNextSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"ArrowUp\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"last\");\r\n } else {\r\n this.selectPreviousSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"Tab\":\r\n this.closeSuggestions();\r\n return;\r\n\r\n case \"Escape\":\r\n this.closeSuggestions();\r\n break;\r\n\r\n case \"Enter\":\r\n this.pickSelectedValue();\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n };\r\n\r\n private listboxItemId(suggestion: Suggestion): string {\r\n if (!this.suggestions) {\r\n return \"\";\r\n }\r\n return `${this.inputId}-${this.suggestions.indexOf(suggestion) + 1}`;\r\n }\r\n\r\n render() {\r\n const terms = this.input?.value.split(\" \").filter((t) => t) ?? [];\r\n\r\n return (\r\n <>\r\n <slot />\r\n {this.loading && this.showLoading ? (\r\n <div class=\"autosuggest-progress-box\">\r\n <dso-progress-indicator label={this.loadingLabel}></dso-progress-indicator>\r\n </div>\r\n ) : (\r\n <ul\r\n role=\"listbox\"\r\n id={this.listboxId}\r\n aria-labelledby={this.labelId}\r\n ref={(element) => (this.listbox = element)}\r\n hidden={!this.showSuggestions && !this.notFound}\r\n >\r\n {(this.showSuggestions &&\r\n this.suggestions &&\r\n this.suggestions.map((suggestion) => (\r\n <li\r\n role=\"option\"\r\n id={this.listboxItemId(suggestion)}\r\n key={suggestion.value}\r\n onMouseEnter={() => this.selectSuggestion(suggestion)}\r\n onMouseLeave={() => this.resetSelectedSuggestion()}\r\n onClick={() => this.pickSelectedValue()}\r\n aria-selected={(suggestion === this.selectedSuggestion).toString()}\r\n aria-label={suggestion.value}\r\n >\r\n <span class=\"value\">{this.markTerms(suggestion.value, terms)}</span>\r\n {suggestion.type ? <span class=\"type\">{suggestion.type}</span> : undefined}\r\n </li>\r\n ))) ||\r\n (this.notFound && (\r\n <li>\r\n <span class=\"value\">\r\n {!this.notFoundLabel ? (\r\n this.markTerms(`${this.inputValue} is niet gevonden.`, terms)\r\n ) : (\r\n <span>{this.notFoundLabel}</span>\r\n )}\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n"],"version":3}
@@ -1,2 +1,2 @@
1
- import{p as e,b as o}from"./p-1a1a43fd.js";export{s as setNonce}from"./p-1a1a43fd.js";const t=()=>{const o=import.meta.url;const t={};if(o!==""){t.resourcesUrl=new URL(".",o).href}return e(t)};t().then((e=>o([["p-22baee8e",[[0,"dsot-document-component-demo",{response:[32],open:[32],openedAnnotation:[32],filtered:[32],notApplicable:[32],activeAnnotationSelectables:[32]}]]],["p-1c721290",[[1,"dso-map-base-layers",{group:[1],baseLayers:[16]}]]],["p-51f19c06",[[1,"dso-map-overlays",{group:[1],overlays:[16]}]]],["p-3d4308ba",[[1,"dso-toggletip",{label:[1],position:[1],small:[4],secondary:[4],active:[32]}]]],["p-604eb60b",[[1,"dso-accordion-section",{handleTitle:[1,"handle-title"],heading:[1],handleUrl:[1,"handle-url"],status:[1],attachmentCount:[2,"attachment-count"],icon:[1],statusDescription:[1,"status-description"],open:[516],hasNestedAccordion:[32],hover:[32]}]]],["p-b9d441d5",[[6,"dso-header",{mainMenu:[16],useDropDownMenu:[1,"use-drop-down-menu"],authStatus:[1,"auth-status"],loginUrl:[1,"login-url"],logoutUrl:[1,"logout-url"],userProfileName:[1,"user-profile-name"],userProfileUrl:[1,"user-profile-url"],userHomeUrl:[1,"user-home-url"],userHomeActive:[4,"user-home-active"],showDropDown:[32],hasSubLogo:[32],overflowMenuItems:[32],dropdownOptionsOffset:[32]}]]],["p-bc9e3037",[[1,"dso-map-controls",{open:[1540],disableZoom:[1,"disable-zoom"],hideContent:[32],toggleVisibility:[64]}]]],["p-712fca2c",[[1,"dso-modal",{fullscreen:[516],modalTitle:[1,"modal-title"],role:[1],showCloseButton:[4,"show-close-button"],ariaId:[32],hasFooter:[32]}]]],["p-440fc4ae",[[1,"dso-pagination",{totalPages:[2,"total-pages"],currentPage:[2,"current-page"],formatHref:[16],availablePositions:[32]},[[0,"dsoSizeChange","sizeChangeHandler"]]]]],["p-745b6678",[[1,"dso-tree-view",{collection:[16],focusItem:[64]}]]],["p-54c65314",[[1,"dso-action-list-item",{step:[2],itemTitle:[1,"item-title"],flowLine:[4,"flow-line"],warning:[4],divider:[4]}]]],["p-5ee79846",[[1,"dso-attachments-counter",{count:[2]}]]],["p-b76768a5",[[6,"dso-autosuggest",{suggestions:[16],loading:[4],loadingLabel:[1,"loading-label"],loadingDelayed:[2,"loading-delayed"],notFoundLabel:[1,"not-found-label"],suggestOnFocus:[4,"suggest-on-focus"],showSuggestions:[32],selectedSuggestion:[32],notFound:[32],showLoading:[32]},[[4,"click","onDocumentClick"]]]]],["p-4da2fa8b",[[2,"dso-date-picker",{name:[1],identifier:[1],disabled:[516],role:[1],direction:[1],required:[4],invalid:[516],describedBy:[1,"described-by"],dsoAutofocus:[4,"dso-autofocus"],value:[1537],min:[1],max:[1],activeFocus:[32],focusedDay:[32],open:[32],visible:[32],setFocus:[64],show:[64],hide:[64]},[[6,"click","handleDocumentClick"]]]]],["p-8b77b083",[[1,"dso-helpcenter-panel",{label:[1],url:[1],visibility:[32],isOpen:[32],slideState:[32],loadIframe:[32]},[[8,"keydown","keyDownListener"]]]]],["p-0dffb117",[[1,"dso-image-overlay",{active:[32],zoomable:[32]},[[2,"load","loadListener"]]]]],["p-98f7ede6",[[1,"dso-list-button",{label:[1],sublabel:[1],count:[2],min:[8],max:[8],checked:[516],disabled:[516],manual:[4],manualInputWrapperElement:[32],manualCount:[32]}]]],["p-5e5302ef",[[1,"dso-table",{noModal:[516,"no-modal"],isResponsive:[516,"is-responsive"],modalActive:[32],placeholderHeight:[32]}]]],["p-a00c4003",[[1,"dso-accordion",{variant:[513],reverseAlign:[516,"reverse-align"],_getState:[64]}]]],["p-420e0d23",[[1,"dso-action-list",{listTitle:[1,"list-title"]}]]],["p-49bce8b2",[[1,"dso-banner",{status:[513]}]]],["p-a0798096",[[1,"dso-card",{isSelectable:[516,"is-selectable"],hasImage:[516,"has-image"],clickable:[4],imageShape:[513,"image-shape"]}]]],["p-a1060560",[[1,"dso-card-container",{mode:[513]}]]],["p-b34f24b4",[[1,"dso-highlight-box",{yellow:[4],border:[4],white:[4],dropShadow:[4,"drop-shadow"],step:[2]}]]],["p-7a6be9c1",[[1,"dso-progress-bar",{progress:[2],min:[2],max:[2]}]]],["p-918bcdbe",[[1,"dso-viewer-grid",{filterpanelOpen:[516,"filterpanel-open"],overlayOpen:[516,"overlay-open"],initialMainSize:[1,"initial-main-size"],mainSize:[32],tabView:[32],activeTab:[32]}]]],["p-3cbf8b97",[[1,"dso-dropdown-menu",{open:[1540],dropdownAlign:[1,"dropdown-align"],dropdownOptionsOffset:[2,"dropdown-options-offset"],checkable:[4],boundary:[1],strategy:[1]}]]],["p-423fa057",[[1,"dso-progress-indicator",{label:[1],size:[513],block:[4]}]]],["p-bcecc743",[[1,"dso-scrollable",{scrollPosition:[32],_setScrollState:[64]}]]],["p-4bc67e5c",[[1,"dso-expandable",{open:[516],enableAnimation:[4,"enable-animation"],minimumHeight:[2,"minimum-height"],animationReady:[32]}]]],["p-e69d7e62",[[1,"dso-responsive-element",{sizeAlias:[32],sizeWidth:[32],getSize:[64]}]]],["p-f21e4ccc",[[1,"dso-info-button",{active:[1540],secondary:[4],label:[1],hover:[32],setFocus:[64]}]]],["p-8f8dd254",[[1,"dso-tooltip",{descriptive:[516],position:[1],strategy:[1],noArrow:[4,"no-arrow"],stateless:[4],small:[4],active:[1540],hidden:[32],activate:[64],deactivate:[64]}]]],["p-4e86089d",[[1,"dso-icon",{icon:[1]}]]],["p-2ccbf58d",[[6,"dso-selectable",{type:[1],identifier:[1],name:[1],value:[1],invalid:[4],describedById:[1,"described-by-id"],labelledById:[1,"labelled-by-id"],disabled:[4],required:[4],checked:[4],indeterminate:[4],infoFixed:[4,"info-fixed"],infoActive:[32],keyboardFocus:[32],toggleInfo:[64]}],[1,"dso-info",{fixed:[516],active:[516]}]]],["p-669c3743",[[1,"dso-label",{compact:[4],removable:[4],status:[1],truncate:[4],removeHover:[32],removeFocus:[32],textHover:[32],textFocus:[32],isTruncated:[32],labelText:[32],_truncateLabel:[64]},[[4,"keydown","keyDownListener"]]],[1,"dso-alert",{status:[1],roleAlert:[4,"role-alert"]}],[0,"dso-annotation-button",{identifier:[1],open:[4]}],[1,"dso-badge",{status:[1]}],[1,"dso-ozon-content",{content:[1],inline:[516],deleted:[516],interactive:[520],state:[32]}]]],["p-14aa091d",[[1,"dso-document-component",{heading:[1],label:[1],nummer:[1],opschrift:[1],inhoud:[1],open:[516],filtered:[516],notApplicable:[516,"not-applicable"],genesteOntwerpInformatie:[516,"geneste-ontwerp-informatie"],bevatOntwerpInformatie:[516,"bevat-ontwerp-informatie"],annotated:[516],gereserveerd:[4],vervallen:[4],openAnnotation:[4,"open-annotation"],alternativeTitle:[1,"alternative-title"],type:[513],wijzigactie:[513]}],[4,"dso-annotation-output",{identifier:[513],annotationPrefix:[513,"annotation-prefix"],open:[516]}],[4,"dso-slide-toggle",{checked:[4],disabled:[4],accessibleLabel:[1,"accessible-label"],labelledbyId:[1,"labelledby-id"],identifier:[1],hasVisibleLabel:[32]}]]]],e)));
1
+ import{p as e,b as o}from"./p-1a1a43fd.js";export{s as setNonce}from"./p-1a1a43fd.js";const t=()=>{const o=import.meta.url;const t={};if(o!==""){t.resourcesUrl=new URL(".",o).href}return e(t)};t().then((e=>o([["p-22baee8e",[[0,"dsot-document-component-demo",{response:[32],open:[32],openedAnnotation:[32],filtered:[32],notApplicable:[32],activeAnnotationSelectables:[32]}]]],["p-1c721290",[[1,"dso-map-base-layers",{group:[1],baseLayers:[16]}]]],["p-51f19c06",[[1,"dso-map-overlays",{group:[1],overlays:[16]}]]],["p-3d4308ba",[[1,"dso-toggletip",{label:[1],position:[1],small:[4],secondary:[4],active:[32]}]]],["p-604eb60b",[[1,"dso-accordion-section",{handleTitle:[1,"handle-title"],heading:[1],handleUrl:[1,"handle-url"],status:[1],attachmentCount:[2,"attachment-count"],icon:[1],statusDescription:[1,"status-description"],open:[516],hasNestedAccordion:[32],hover:[32]}]]],["p-b9d441d5",[[6,"dso-header",{mainMenu:[16],useDropDownMenu:[1,"use-drop-down-menu"],authStatus:[1,"auth-status"],loginUrl:[1,"login-url"],logoutUrl:[1,"logout-url"],userProfileName:[1,"user-profile-name"],userProfileUrl:[1,"user-profile-url"],userHomeUrl:[1,"user-home-url"],userHomeActive:[4,"user-home-active"],showDropDown:[32],hasSubLogo:[32],overflowMenuItems:[32],dropdownOptionsOffset:[32]}]]],["p-bc9e3037",[[1,"dso-map-controls",{open:[1540],disableZoom:[1,"disable-zoom"],hideContent:[32],toggleVisibility:[64]}]]],["p-712fca2c",[[1,"dso-modal",{fullscreen:[516],modalTitle:[1,"modal-title"],role:[1],showCloseButton:[4,"show-close-button"],ariaId:[32],hasFooter:[32]}]]],["p-440fc4ae",[[1,"dso-pagination",{totalPages:[2,"total-pages"],currentPage:[2,"current-page"],formatHref:[16],availablePositions:[32]},[[0,"dsoSizeChange","sizeChangeHandler"]]]]],["p-745b6678",[[1,"dso-tree-view",{collection:[16],focusItem:[64]}]]],["p-54c65314",[[1,"dso-action-list-item",{step:[2],itemTitle:[1,"item-title"],flowLine:[4,"flow-line"],warning:[4],divider:[4]}]]],["p-5ee79846",[[1,"dso-attachments-counter",{count:[2]}]]],["p-a4d423fd",[[6,"dso-autosuggest",{suggestions:[16],loading:[4],loadingLabel:[1,"loading-label"],loadingDelayed:[2,"loading-delayed"],notFoundLabel:[1,"not-found-label"],suggestOnFocus:[4,"suggest-on-focus"],showSuggestions:[32],selectedSuggestion:[32],notFound:[32],showLoading:[32]},[[4,"click","onDocumentClick"]]]]],["p-4da2fa8b",[[2,"dso-date-picker",{name:[1],identifier:[1],disabled:[516],role:[1],direction:[1],required:[4],invalid:[516],describedBy:[1,"described-by"],dsoAutofocus:[4,"dso-autofocus"],value:[1537],min:[1],max:[1],activeFocus:[32],focusedDay:[32],open:[32],visible:[32],setFocus:[64],show:[64],hide:[64]},[[6,"click","handleDocumentClick"]]]]],["p-8b77b083",[[1,"dso-helpcenter-panel",{label:[1],url:[1],visibility:[32],isOpen:[32],slideState:[32],loadIframe:[32]},[[8,"keydown","keyDownListener"]]]]],["p-0dffb117",[[1,"dso-image-overlay",{active:[32],zoomable:[32]},[[2,"load","loadListener"]]]]],["p-98f7ede6",[[1,"dso-list-button",{label:[1],sublabel:[1],count:[2],min:[8],max:[8],checked:[516],disabled:[516],manual:[4],manualInputWrapperElement:[32],manualCount:[32]}]]],["p-5e5302ef",[[1,"dso-table",{noModal:[516,"no-modal"],isResponsive:[516,"is-responsive"],modalActive:[32],placeholderHeight:[32]}]]],["p-a00c4003",[[1,"dso-accordion",{variant:[513],reverseAlign:[516,"reverse-align"],_getState:[64]}]]],["p-420e0d23",[[1,"dso-action-list",{listTitle:[1,"list-title"]}]]],["p-49bce8b2",[[1,"dso-banner",{status:[513]}]]],["p-a0798096",[[1,"dso-card",{isSelectable:[516,"is-selectable"],hasImage:[516,"has-image"],clickable:[4],imageShape:[513,"image-shape"]}]]],["p-a1060560",[[1,"dso-card-container",{mode:[513]}]]],["p-b34f24b4",[[1,"dso-highlight-box",{yellow:[4],border:[4],white:[4],dropShadow:[4,"drop-shadow"],step:[2]}]]],["p-7a6be9c1",[[1,"dso-progress-bar",{progress:[2],min:[2],max:[2]}]]],["p-918bcdbe",[[1,"dso-viewer-grid",{filterpanelOpen:[516,"filterpanel-open"],overlayOpen:[516,"overlay-open"],initialMainSize:[1,"initial-main-size"],mainSize:[32],tabView:[32],activeTab:[32]}]]],["p-3cbf8b97",[[1,"dso-dropdown-menu",{open:[1540],dropdownAlign:[1,"dropdown-align"],dropdownOptionsOffset:[2,"dropdown-options-offset"],checkable:[4],boundary:[1],strategy:[1]}]]],["p-423fa057",[[1,"dso-progress-indicator",{label:[1],size:[513],block:[4]}]]],["p-bcecc743",[[1,"dso-scrollable",{scrollPosition:[32],_setScrollState:[64]}]]],["p-4bc67e5c",[[1,"dso-expandable",{open:[516],enableAnimation:[4,"enable-animation"],minimumHeight:[2,"minimum-height"],animationReady:[32]}]]],["p-e69d7e62",[[1,"dso-responsive-element",{sizeAlias:[32],sizeWidth:[32],getSize:[64]}]]],["p-f21e4ccc",[[1,"dso-info-button",{active:[1540],secondary:[4],label:[1],hover:[32],setFocus:[64]}]]],["p-8f8dd254",[[1,"dso-tooltip",{descriptive:[516],position:[1],strategy:[1],noArrow:[4,"no-arrow"],stateless:[4],small:[4],active:[1540],hidden:[32],activate:[64],deactivate:[64]}]]],["p-4e86089d",[[1,"dso-icon",{icon:[1]}]]],["p-2ccbf58d",[[6,"dso-selectable",{type:[1],identifier:[1],name:[1],value:[1],invalid:[4],describedById:[1,"described-by-id"],labelledById:[1,"labelled-by-id"],disabled:[4],required:[4],checked:[4],indeterminate:[4],infoFixed:[4,"info-fixed"],infoActive:[32],keyboardFocus:[32],toggleInfo:[64]}],[1,"dso-info",{fixed:[516],active:[516]}]]],["p-669c3743",[[1,"dso-label",{compact:[4],removable:[4],status:[1],truncate:[4],removeHover:[32],removeFocus:[32],textHover:[32],textFocus:[32],isTruncated:[32],labelText:[32],_truncateLabel:[64]},[[4,"keydown","keyDownListener"]]],[1,"dso-alert",{status:[1],roleAlert:[4,"role-alert"]}],[0,"dso-annotation-button",{identifier:[1],open:[4]}],[1,"dso-badge",{status:[1]}],[1,"dso-ozon-content",{content:[1],inline:[516],deleted:[516],interactive:[520],state:[32]}]]],["p-14aa091d",[[1,"dso-document-component",{heading:[1],label:[1],nummer:[1],opschrift:[1],inhoud:[1],open:[516],filtered:[516],notApplicable:[516,"not-applicable"],genesteOntwerpInformatie:[516,"geneste-ontwerp-informatie"],bevatOntwerpInformatie:[516,"bevat-ontwerp-informatie"],annotated:[516],gereserveerd:[4],vervallen:[4],openAnnotation:[4,"open-annotation"],alternativeTitle:[1,"alternative-title"],type:[513],wijzigactie:[513]}],[4,"dso-annotation-output",{identifier:[513],annotationPrefix:[513,"annotation-prefix"],open:[516]}],[4,"dso-slide-toggle",{checked:[4],disabled:[4],accessibleLabel:[1,"accessible-label"],labelledbyId:[1,"labelledby-id"],identifier:[1],hasVisibleLabel:[32]}]]]],e)));
2
2
  //# sourceMappingURL=dso-toolkit.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{r as s,c as t,h as i,F as e,a as h}from"./p-1a1a43fd.js";import{d as o}from"./p-1805f5b0.js";import{v as a}from"./p-5d7f4ff2.js";function n(s){if(typeof s!=="string"){throw new TypeError("Expected a string")}return s.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const r=".sc-dso-autosuggest-h{display:block;position:relative}ul.sc-dso-autosuggest,.autosuggest-progress-box.sc-dso-autosuggest{background-clip:padding-box;background-color:#fff;border:1px solid rgba(0, 0, 0, 0.15);border-radius:4px;box-shadow:0 6px 12px rgba(0, 0, 0, 0.175);list-style-type:none;margin-top:2px;padding:4px 0;position:absolute;left:0;right:0;top:100%;z-index:200}.autosuggest-progress-box.sc-dso-autosuggest{padding:12px 8px}ul.sc-dso-autosuggest{padding:8px 0}ul.sc-dso-autosuggest li.sc-dso-autosuggest{display:flex;justify-content:space-between;padding:4px 16px}li[aria-selected=true].sc-dso-autosuggest{cursor:pointer;background-color:#39870c}li[aria-selected=true].sc-dso-autosuggest,li[aria-selected=true].sc-dso-autosuggest .type.sc-dso-autosuggest{color:#fff}mark.sc-dso-autosuggest{font-weight:700;background-color:inherit;color:inherit;padding:0}.type.sc-dso-autosuggest{color:#666}";const l=class{constructor(i){s(this,i);this.dsoSelect=t(this,"dsoSelect",7);this.dsoChange=t(this,"dsoChange",7);this.dsoSearch=t(this,"dsoSearch",7);this.listboxId=a();this.inputId=a();this.labelId=a();this.debouncedEmitValue=o((s=>{this.dsoChange.emit(s);this.debouncedShowLoading()}),200);this.debouncedShowLoading=o((()=>{if(this.inputValue){this.showLoading=true}}),this.loadingDelayed);this.inputValue="";this.onInput=s=>{if(!(s.target instanceof HTMLInputElement)){return}this.showLoading=!this.loadingDelayed;this.inputValue=s.target.value;this.debouncedEmitValue(s.target.value.match(/(\S+)/g)?s.target.value:"")};this.onFocusIn=()=>{if(this.suggestOnFocus){this.openSuggestions()}};this.onKeyDown=s=>{if(s.defaultPrevented||this.loading){return}switch(s.key){case"ArrowDown":if(!this.showSuggestions){this.openSuggestions("first")}else{this.selectNextSuggestion()}break;case"ArrowUp":if(!this.showSuggestions){this.openSuggestions("last")}else{this.selectPreviousSuggestion()}break;case"Tab":this.closeSuggestions();return;case"Escape":this.closeSuggestions();break;case"Enter":this.pickSelectedValue();break;default:return}s.preventDefault()};this.suggestions=null;this.loading=false;this.loadingLabel="Een moment geduld.";this.loadingDelayed=undefined;this.notFoundLabel=undefined;this.suggestOnFocus=false;this.showSuggestions=false;this.selectedSuggestion=undefined;this.notFound=false;this.showLoading=false}suggestionsWatcher(){this.resetSelectedSuggestion();if((!this.showSuggestions||!this.notFound)&&this.inputValue){this.openSuggestions()}else if((this.showSuggestions||this.notFound)&&!this.inputValue){this.closeSuggestions()}}onDocumentClick(s){if((this.showSuggestions||this.notFound)&&this.listbox&&s.target instanceof Node&&!this.listbox.contains(s.target)&&this.input!==s.target){this.closeSuggestions()}}connectedCallback(){setTimeout((()=>{const s=this.host.querySelector('input[type="text"]');if(!(s instanceof HTMLInputElement)){return}this.input=s;if(s.id){this.inputId=s.id}else{s.id=this.inputId}if(!this.input.labels||this.input.labels.length<1){return}const t=this.input.labels[0];if(t===null||t===void 0?void 0:t.id){this.labelId=t.id}else if(t){t.id=this.labelId}this.input.setAttribute("role","combobox");this.input.setAttribute("aria-haspopup","listbox");this.input.setAttribute("aria-controls",this.listboxId);this.input.setAttribute("aria-expanded","false");this.input.setAttribute("autocomplete","off");this.input.setAttribute("aria-autocomplete","list");this.input.setAttribute("aria-activedescendant","");this.input.addEventListener("input",this.onInput);this.input.addEventListener("keydown",this.onKeyDown);this.input.addEventListener("focusin",this.onFocusIn)}))}disconnectedCallback(){var s,t,i;(s=this.input)===null||s===void 0?void 0:s.removeEventListener("input",this.onInput);(t=this.input)===null||t===void 0?void 0:t.removeEventListener("keydown",this.onKeyDown);(i=this.input)===null||i===void 0?void 0:i.removeEventListener("focusin",this.onFocusIn)}markTerms(s,t){if(!s||!t||t.length===0||t[0]===undefined){return[""]}const e=new RegExp(`(${n(t[0])})`,"gi");return s.split(e).map((s=>{if(!s){return""}if(e.test(s)){return i("mark",null,s)}if(t.length===1){return i("span",null,s)}return this.markTerms(s,t.slice(1))}))}selectSuggestion(s){var t;this.selectedSuggestion=s;(t=this.input)===null||t===void 0?void 0:t.setAttribute("aria-activedescendant",this.listboxItemId(s))}selectFirstSuggestion(){var s;if(!this.suggestions){return}this.selectedSuggestion=this.suggestions[0];if(this.selectedSuggestion){(s=this.input)===null||s===void 0?void 0:s.setAttribute("aria-activedescendant",this.listboxItemId(this.selectedSuggestion))}}selectLastSuggestion(){var s;if(!this.suggestions){return}this.selectedSuggestion=this.suggestions[this.suggestions.length-1];if(this.selectedSuggestion){(s=this.input)===null||s===void 0?void 0:s.setAttribute("aria-activedescendant",this.listboxItemId(this.selectedSuggestion))}}selectNextSuggestion(){var s,t;if(!this.suggestions){return}const i=this.selectedSuggestion?this.suggestions.indexOf(this.selectedSuggestion):-1;this.selectedSuggestion=(s=this.suggestions[i+1])!==null&&s!==void 0?s:this.suggestions[0];if(this.selectedSuggestion){(t=this.input)===null||t===void 0?void 0:t.setAttribute("aria-activedescendant",this.listboxItemId(this.selectedSuggestion))}}selectPreviousSuggestion(){var s,t;if(!this.suggestions){return}const i=this.selectedSuggestion?this.suggestions.indexOf(this.selectedSuggestion):0;this.selectedSuggestion=(s=this.suggestions[i-1])!==null&&s!==void 0?s:this.suggestions[this.suggestions.length-1];if(this.selectedSuggestion){(t=this.input)===null||t===void 0?void 0:t.setAttribute("aria-activedescendant",this.listboxItemId(this.selectedSuggestion))}}resetSelectedSuggestion(){var s;this.showLoading=!this.loadingDelayed;this.notFound=false;this.selectedSuggestion=undefined;(s=this.input)===null||s===void 0?void 0:s.setAttribute("aria-activedescendant","")}openSuggestions(s){var t,i,e,h;this.showSuggestions=(t=this.suggestions&&this.suggestions.length>0)!==null&&t!==void 0?t:false;this.notFound=(e=((i=this.suggestions)===null||i===void 0?void 0:i.length)===0)!==null&&e!==void 0?e:false;(h=this.input)===null||h===void 0?void 0:h.setAttribute("aria-expanded",(this.showSuggestions||this.notFound).toString());if(this.showSuggestions&&s==="first"){this.selectFirstSuggestion()}else if(this.showSuggestions&&s==="last"){this.selectLastSuggestion()}}closeSuggestions(){var s;this.showSuggestions=false;this.notFound=false;(s=this.input)===null||s===void 0?void 0:s.setAttribute("aria-expanded","false");this.selectFirstSuggestion()}pickSelectedValue(){var s;if(this.selectedSuggestion&&this.showSuggestions){this.dsoSelect.emit(this.selectedSuggestion)}else{this.dsoSearch.emit((s=this.input)===null||s===void 0?void 0:s.value)}this.closeSuggestions()}listboxItemId(s){if(!this.suggestions){return""}return`${this.inputId}-${this.suggestions.indexOf(s)+1}`}render(){var s,t;const h=(t=(s=this.input)===null||s===void 0?void 0:s.value.split(" ").filter((s=>s)))!==null&&t!==void 0?t:[];return i(e,null,i("slot",null),this.loading&&this.showLoading?i("div",{class:"autosuggest-progress-box"},i("dso-progress-indicator",{label:this.loadingLabel})):i("ul",{role:"listbox",id:this.listboxId,"aria-labelledby":this.labelId,ref:s=>this.listbox=s,hidden:!this.showSuggestions&&!this.notFound},this.showSuggestions&&this.suggestions&&this.suggestions.map((s=>i("li",{role:"option",id:this.listboxItemId(s),key:s.value,onMouseEnter:()=>this.selectSuggestion(s),onMouseLeave:()=>this.resetSelectedSuggestion(),onClick:()=>this.pickSelectedValue(),"aria-selected":(s===this.selectedSuggestion).toString(),"aria-label":s.value},i("span",{class:"value"},this.markTerms(s.value,h)),s.type?i("span",{class:"type"},s.type):undefined)))||this.notFound&&i("li",null,i("span",{class:"value"},!this.notFoundLabel?this.markTerms(`${this.inputValue} is niet gevonden.`,h):i("span",null,this.notFoundLabel)))))}get host(){return h(this)}static get watchers(){return{suggestions:["suggestionsWatcher"]}}};l.style=r;export{l as dso_autosuggest};
2
+ //# sourceMappingURL=p-a4d423fd.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["escapeStringRegexp","string","TypeError","replace","autosuggestCss","Autosuggest","this","listboxId","v4","inputId","labelId","debouncedEmitValue","debounce","value","dsoChange","emit","debouncedShowLoading","inputValue","showLoading","loadingDelayed","onInput","event","target","HTMLInputElement","match","onFocusIn","suggestOnFocus","openSuggestions","onKeyDown","defaultPrevented","loading","key","showSuggestions","selectNextSuggestion","selectPreviousSuggestion","closeSuggestions","pickSelectedValue","preventDefault","suggestionsWatcher","resetSelectedSuggestion","notFound","onDocumentClick","listbox","Node","contains","input","connectedCallback","setTimeout","host","querySelector","id","labels","length","label","setAttribute","addEventListener","disconnectedCallback","_a","removeEventListener","_b","_c","markTerms","suggestionValue","terms","undefined","termRegex","RegExp","split","map","valuePart","test","h","slice","selectSuggestion","suggestion","selectedSuggestion","listboxItemId","selectFirstSuggestion","suggestions","selectLastSuggestion","index","indexOf","_d","toString","dsoSelect","dsoSearch","render","filter","t","Fragment","class","loadingLabel","role","ref","element","hidden","onMouseEnter","onMouseLeave","onClick","type","notFoundLabel"],"sources":["../../node_modules/escape-string-regexp/index.js","./src/components/autosuggest/autosuggest.scss?tag=dso-autosuggest&encapsulation=scoped","./src/components/autosuggest/autosuggest.tsx"],"sourcesContent":["export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","@use \"~dso-toolkit/src/variables/units\";\r\n@use \"~dso-toolkit/src/variables/colors\";\r\n@use \"~dso-toolkit/src/variables/scaffolding\";\r\n@use \"~dso-toolkit/src/variables/zindex\";\r\n\r\n@use \"autosuggest.variables\" as core-autosuggest-variables;\r\n\r\n:host {\r\n display: block;\r\n position: relative;\r\n}\r\n\r\nul,\r\n.autosuggest-progress-box {\r\n background-clip: padding-box;\r\n background-color: core-autosuggest-variables.$background-color;\r\n border: 1px solid core-autosuggest-variables.$border-color;\r\n border-radius: scaffolding.$border-radius-base;\r\n box-shadow: core-autosuggest-variables.$box-shadow;\r\n list-style-type: none;\r\n margin-top: 2px;\r\n padding: units.$u1 * 0.5 0;\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 100%;\r\n z-index: zindex.$autosuggest;\r\n}\r\n\r\n.autosuggest-progress-box {\r\n padding: units.$u1 * 1.5 units.$u1;\r\n}\r\n\r\nul {\r\n padding: units.$u1 0;\r\n\r\n li {\r\n display: flex;\r\n justify-content: space-between;\r\n padding: units.$u1 * 0.5 units.$u2;\r\n }\r\n}\r\n\r\nli[aria-selected=\"true\"] {\r\n cursor: pointer;\r\n background-color: colors.$grasgroen;\r\n\r\n &,\r\n .type {\r\n color: colors.$wit;\r\n }\r\n}\r\n\r\nmark {\r\n font-weight: 700;\r\n background-color: inherit;\r\n color: inherit;\r\n padding: 0;\r\n}\r\n\r\n.type {\r\n color: colors.$grijs-60;\r\n}\r\n","import { Component, Element, h, Listen, Prop, State, Fragment, Event, EventEmitter, VNode, Watch } from \"@stencil/core\";\r\nimport debounce from \"debounce\";\r\nimport { v4 } from \"uuid\";\r\nimport escapeStringRegexp from \"escape-string-regexp\";\r\n\r\nimport { Suggestion } from \"./autosuggest.interfaces\";\r\n\r\n@Component({\r\n tag: \"dso-autosuggest\",\r\n styleUrl: \"autosuggest.scss\",\r\n scoped: true,\r\n})\r\nexport class Autosuggest {\r\n /**\r\n * The suggestions for the value of the slotted input element. Optionally a\r\n * Suggestion can have a `type` and `item`.\r\n *\r\n * The `type` is used to style the suggestion. `item` can be use to reference\r\n * the original object that was used to create the suggestion.\r\n *\r\n * The value should be null when no suggestions have been fetched.\r\n */\r\n @Prop()\r\n readonly suggestions: Suggestion[] | null = null;\r\n\r\n /**\r\n * Shows progress indicator when fetching results.\r\n */\r\n @Prop()\r\n loading = false;\r\n\r\n /**\r\n * To override progress indicator's default loading label.\r\n */\r\n @Prop()\r\n loadingLabel?: string = \"Een moment geduld.\";\r\n\r\n /**\r\n * To delay progress indicator showing (in ms).\r\n */\r\n @Prop()\r\n loadingDelayed?: number;\r\n\r\n /**\r\n * To show text when no results are found.\r\n */\r\n @Prop()\r\n notFoundLabel?: string;\r\n\r\n /**\r\n * Whether the previous suggestions will be presented when the input gets focus again.\r\n */\r\n @Prop()\r\n suggestOnFocus = false;\r\n\r\n /**\r\n * Emitted when a suggestion is selected.\r\n * The `detail` property of the `CustomEvent` will contain the selected suggestion.\r\n */\r\n @Event()\r\n dsoSelect!: EventEmitter<Suggestion>;\r\n\r\n /**\r\n * This is emitted debounced for every change for the slotted input type=text element.\r\n */\r\n @Event()\r\n dsoChange!: EventEmitter<string>;\r\n\r\n /**\r\n * Emitted when enter is pressed.\r\n * The `detail` property of the `CustomEvent` will contain the input text.\r\n */\r\n @Event()\r\n dsoSearch!: EventEmitter<string>;\r\n\r\n @Element()\r\n host!: HTMLDsoAutosuggestElement;\r\n\r\n @State()\r\n showSuggestions = false;\r\n\r\n @State()\r\n selectedSuggestion: Suggestion | undefined;\r\n\r\n @State()\r\n notFound = false;\r\n\r\n @State()\r\n showLoading = false;\r\n\r\n @Watch(\"suggestions\")\r\n suggestionsWatcher() {\r\n this.resetSelectedSuggestion();\r\n\r\n if ((!this.showSuggestions || !this.notFound) && this.inputValue) {\r\n this.openSuggestions();\r\n } else if ((this.showSuggestions || this.notFound) && !this.inputValue) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n private input?: HTMLInputElement;\r\n\r\n private listbox: HTMLUListElement | undefined;\r\n\r\n private listboxId: string = v4();\r\n\r\n private inputId: string = v4();\r\n\r\n private labelId: string = v4();\r\n\r\n private debouncedEmitValue = debounce((value: string) => {\r\n this.dsoChange.emit(value);\r\n this.debouncedShowLoading();\r\n }, 200);\r\n\r\n private debouncedShowLoading = debounce(() => {\r\n if (this.inputValue) {\r\n this.showLoading = true;\r\n }\r\n }, this.loadingDelayed);\r\n\r\n private inputValue = \"\";\r\n\r\n private onInput = (event: Event) => {\r\n if (!(event.target instanceof HTMLInputElement)) {\r\n return;\r\n // throw new Error(\"event.target is not instanceof HTMLInputElement\"); #2293\r\n }\r\n\r\n this.showLoading = !this.loadingDelayed;\r\n this.inputValue = event.target.value;\r\n this.debouncedEmitValue(event.target.value.match(/(\\S+)/g) ? event.target.value : \"\");\r\n };\r\n\r\n private onFocusIn = () => {\r\n if (this.suggestOnFocus) {\r\n this.openSuggestions();\r\n }\r\n };\r\n\r\n @Listen(\"click\", { target: \"document\" })\r\n onDocumentClick(event: MouseEvent) {\r\n if (\r\n (this.showSuggestions || this.notFound) &&\r\n this.listbox &&\r\n event.target instanceof Node &&\r\n !this.listbox.contains(event.target) &&\r\n this.input !== event.target\r\n ) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n connectedCallback() {\r\n setTimeout(() => {\r\n const input = this.host.querySelector('input[type=\"text\"]');\r\n if (!(input instanceof HTMLInputElement)) {\r\n return;\r\n // throw new ReferenceError(\"Mandatory text input not found\"); #2293\r\n }\r\n\r\n this.input = input;\r\n if (input.id) {\r\n this.inputId = input.id;\r\n } else {\r\n input.id = this.inputId;\r\n }\r\n\r\n if (!this.input.labels || this.input.labels.length < 1) {\r\n return;\r\n // throw new ReferenceError(\"Mandatory label for text input not found\"); #2293\r\n }\r\n\r\n const label = this.input.labels[0];\r\n if (label?.id) {\r\n this.labelId = label.id;\r\n } else if (label) {\r\n label.id = this.labelId;\r\n }\r\n\r\n this.input.setAttribute(\"role\", \"combobox\");\r\n this.input.setAttribute(\"aria-haspopup\", \"listbox\");\r\n this.input.setAttribute(\"aria-controls\", this.listboxId);\r\n this.input.setAttribute(\"aria-expanded\", \"false\");\r\n this.input.setAttribute(\"autocomplete\", \"off\");\r\n this.input.setAttribute(\"aria-autocomplete\", \"list\");\r\n this.input.setAttribute(\"aria-activedescendant\", \"\");\r\n this.input.addEventListener(\"input\", this.onInput);\r\n this.input.addEventListener(\"keydown\", this.onKeyDown);\r\n this.input.addEventListener(\"focusin\", this.onFocusIn);\r\n });\r\n }\r\n\r\n disconnectedCallback() {\r\n this.input?.removeEventListener(\"input\", this.onInput);\r\n this.input?.removeEventListener(\"keydown\", this.onKeyDown);\r\n this.input?.removeEventListener(\"focusin\", this.onFocusIn);\r\n }\r\n\r\n private markTerms(suggestionValue: string, terms: string[]): (VNode | string)[] {\r\n if (!suggestionValue || !terms || terms.length === 0 || terms[0] === undefined) {\r\n return [\"\"];\r\n }\r\n\r\n const termRegex = new RegExp(`(${escapeStringRegexp(terms[0])})`, \"gi\");\r\n\r\n return suggestionValue.split(termRegex).map((valuePart: string) => {\r\n if (!valuePart) {\r\n return \"\";\r\n }\r\n\r\n if (termRegex.test(valuePart)) {\r\n return <mark>{valuePart}</mark>;\r\n }\r\n\r\n if (terms.length === 1) {\r\n return <span>{valuePart}</span>;\r\n }\r\n\r\n return this.markTerms(valuePart, terms.slice(1));\r\n });\r\n }\r\n\r\n private selectSuggestion(suggestion: Suggestion) {\r\n this.selectedSuggestion = suggestion;\r\n\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(suggestion));\r\n }\r\n\r\n private selectFirstSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n this.selectedSuggestion = this.suggestions[0];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectLastSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n this.selectedSuggestion = this.suggestions[this.suggestions.length - 1];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectNextSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : -1;\r\n\r\n this.selectedSuggestion = this.suggestions[index + 1] ?? this.suggestions[0];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectPreviousSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : 0;\r\n\r\n this.selectedSuggestion = this.suggestions[index - 1] ?? this.suggestions[this.suggestions.length - 1];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private resetSelectedSuggestion() {\r\n this.showLoading = !this.loadingDelayed;\r\n this.notFound = false;\r\n this.selectedSuggestion = undefined;\r\n this.input?.setAttribute(\"aria-activedescendant\", \"\");\r\n }\r\n\r\n private openSuggestions(selectSuggestion?: \"first\" | \"last\") {\r\n this.showSuggestions = (this.suggestions && this.suggestions.length > 0) ?? false;\r\n this.notFound = this.suggestions?.length === 0 ?? false;\r\n this.input?.setAttribute(\"aria-expanded\", (this.showSuggestions || this.notFound).toString());\r\n\r\n if (this.showSuggestions && selectSuggestion === \"first\") {\r\n this.selectFirstSuggestion();\r\n } else if (this.showSuggestions && selectSuggestion === \"last\") {\r\n this.selectLastSuggestion();\r\n }\r\n }\r\n\r\n private closeSuggestions() {\r\n this.showSuggestions = false;\r\n this.notFound = false;\r\n this.input?.setAttribute(\"aria-expanded\", \"false\");\r\n this.selectFirstSuggestion();\r\n }\r\n\r\n private pickSelectedValue() {\r\n if (this.selectedSuggestion && this.showSuggestions) {\r\n this.dsoSelect.emit(this.selectedSuggestion);\r\n } else {\r\n this.dsoSearch.emit(this.input?.value);\r\n }\r\n\r\n this.closeSuggestions();\r\n }\r\n\r\n private onKeyDown = (event: KeyboardEvent) => {\r\n if (event.defaultPrevented || this.loading) {\r\n return;\r\n }\r\n\r\n switch (event.key) {\r\n case \"ArrowDown\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"first\");\r\n } else {\r\n this.selectNextSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"ArrowUp\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"last\");\r\n } else {\r\n this.selectPreviousSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"Tab\":\r\n this.closeSuggestions();\r\n return;\r\n\r\n case \"Escape\":\r\n this.closeSuggestions();\r\n break;\r\n\r\n case \"Enter\":\r\n this.pickSelectedValue();\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n };\r\n\r\n private listboxItemId(suggestion: Suggestion): string {\r\n if (!this.suggestions) {\r\n return \"\";\r\n }\r\n return `${this.inputId}-${this.suggestions.indexOf(suggestion) + 1}`;\r\n }\r\n\r\n render() {\r\n const terms = this.input?.value.split(\" \").filter((t) => t) ?? [];\r\n\r\n return (\r\n <>\r\n <slot />\r\n {this.loading && this.showLoading ? (\r\n <div class=\"autosuggest-progress-box\">\r\n <dso-progress-indicator label={this.loadingLabel}></dso-progress-indicator>\r\n </div>\r\n ) : (\r\n <ul\r\n role=\"listbox\"\r\n id={this.listboxId}\r\n aria-labelledby={this.labelId}\r\n ref={(element) => (this.listbox = element)}\r\n hidden={!this.showSuggestions && !this.notFound}\r\n >\r\n {(this.showSuggestions &&\r\n this.suggestions &&\r\n this.suggestions.map((suggestion) => (\r\n <li\r\n role=\"option\"\r\n id={this.listboxItemId(suggestion)}\r\n key={suggestion.value}\r\n onMouseEnter={() => this.selectSuggestion(suggestion)}\r\n onMouseLeave={() => this.resetSelectedSuggestion()}\r\n onClick={() => this.pickSelectedValue()}\r\n aria-selected={(suggestion === this.selectedSuggestion).toString()}\r\n aria-label={suggestion.value}\r\n >\r\n <span class=\"value\">{this.markTerms(suggestion.value, terms)}</span>\r\n {suggestion.type ? <span class=\"type\">{suggestion.type}</span> : undefined}\r\n </li>\r\n ))) ||\r\n (this.notFound && (\r\n <li>\r\n <span class=\"value\">\r\n {!this.notFoundLabel ? (\r\n this.markTerms(`${this.inputValue} is niet gevonden.`, terms)\r\n ) : (\r\n <span>{this.notFoundLabel}</span>\r\n )}\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n"],"mappings":"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"}
@@ -37,7 +37,8 @@ const Autosuggest = class {
37
37
  this.inputValue = "";
38
38
  this.onInput = (event) => {
39
39
  if (!(event.target instanceof HTMLInputElement)) {
40
- throw new Error("event.target is not instanceof HTMLInputElement");
40
+ return;
41
+ // throw new Error("event.target is not instanceof HTMLInputElement"); #2293
41
42
  }
42
43
  this.showLoading = !this.loadingDelayed;
43
44
  this.inputValue = event.target.value;
@@ -116,7 +117,8 @@ const Autosuggest = class {
116
117
  setTimeout(() => {
117
118
  const input = this.host.querySelector('input[type="text"]');
118
119
  if (!(input instanceof HTMLInputElement)) {
119
- throw new ReferenceError("Mandatory text input not found");
120
+ return;
121
+ // throw new ReferenceError("Mandatory text input not found"); #2293
120
122
  }
121
123
  this.input = input;
122
124
  if (input.id) {
@@ -126,7 +128,8 @@ const Autosuggest = class {
126
128
  input.id = this.inputId;
127
129
  }
128
130
  if (!this.input.labels || this.input.labels.length < 1) {
129
- throw new ReferenceError("Mandatory label for text input not found");
131
+ return;
132
+ // throw new ReferenceError("Mandatory label for text input not found"); #2293
130
133
  }
131
134
  const label = this.input.labels[0];
132
135
  if (label === null || label === void 0 ? void 0 : label.id) {
@@ -1 +1 @@
1
- {"file":"dso-autosuggest.entry.js","mappings":";;;;AAAe,SAAS,kBAAkB,CAAC,MAAM,EAAE;AACnD,CAAC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACjC,EAAE,MAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC;AAC3C,EAAE;AACF;AACA;AACA;AACA,CAAC,OAAO,MAAM;AACd,GAAG,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;AACzC,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC1B;;ACVA,MAAM,cAAc,GAAG,w4BAAw4B;;MCYl5B,WAAW;;;;;;IA6Fd,cAAS,GAAW,EAAE,EAAE,CAAC;IAEzB,YAAO,GAAW,EAAE,EAAE,CAAC;IAEvB,YAAO,GAAW,EAAE,EAAE,CAAC;IAEvB,uBAAkB,GAAGA,UAAQ,CAAC,CAAC,KAAa;MAClD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;MAC3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B,EAAE,GAAG,CAAC,CAAC;IAEA,yBAAoB,GAAGA,UAAQ,CAAC;MACtC,IAAI,IAAI,CAAC,UAAU,EAAE;QACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;OACzB;KACF,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAEhB,eAAU,GAAG,EAAE,CAAC;IAEhB,YAAO,GAAG,CAAC,KAAY;MAC7B,IAAI,EAAE,KAAK,CAAC,MAAM,YAAY,gBAAgB,CAAC,EAAE;QAC/C,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;OACpE;MAED,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;MACxC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;MACrC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;KACvF,CAAC;IAEM,cAAS,GAAG;MAClB,IAAI,IAAI,CAAC,cAAc,EAAE;QACvB,IAAI,CAAC,eAAe,EAAE,CAAC;OACxB;KACF,CAAC;IAiLM,cAAS,GAAG,CAAC,KAAoB;MACvC,IAAI,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,EAAE;QAC1C,OAAO;OACR;MAED,QAAQ,KAAK,CAAC,GAAG;QACf,KAAK,WAAW;UACd,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;WAC/B;eAAM;YACL,IAAI,CAAC,oBAAoB,EAAE,CAAC;WAC7B;UAED,MAAM;QAER,KAAK,SAAS;UACZ,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;WAC9B;eAAM;YACL,IAAI,CAAC,wBAAwB,EAAE,CAAC;WACjC;UAED,MAAM;QAER,KAAK,KAAK;UACR,IAAI,CAAC,gBAAgB,EAAE,CAAC;UACxB,OAAO;QAET,KAAK,QAAQ;UACX,IAAI,CAAC,gBAAgB,EAAE,CAAC;UACxB,MAAM;QAER,KAAK,OAAO;UACV,IAAI,CAAC,iBAAiB,EAAE,CAAC;UACzB,MAAM;QAER;UACE,OAAO;OACV;MAED,KAAK,CAAC,cAAc,EAAE,CAAC;KACxB,CAAC;uBA7U0C,IAAI;mBAMtC,KAAK;wBAMS,oBAAoB;;;0BAkB3B,KAAK;2BA0BJ,KAAK;;oBAMZ,KAAK;uBAGF,KAAK;;EAGnB,kBAAkB;IAChB,IAAI,CAAC,uBAAuB,EAAE,CAAC;IAE/B,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,UAAU,EAAE;MAChE,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;SAAM,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE;MACtE,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;GACF;EA0CD,eAAe,CAAC,KAAiB;IAC/B,IACE,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ;MACtC,IAAI,CAAC,OAAO;MACZ,KAAK,CAAC,MAAM,YAAY,IAAI;MAC5B,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;MACpC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,EAC3B;MACA,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;GACF;EAED,iBAAiB;IACf,UAAU,CAAC;MACT,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;MAC5D,IAAI,EAAE,KAAK,YAAY,gBAAgB,CAAC,EAAE;QACxC,MAAM,IAAI,cAAc,CAAC,gCAAgC,CAAC,CAAC;OAC5D;MAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;MACnB,IAAI,KAAK,CAAC,EAAE,EAAE;QACZ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;OACzB;WAAM;QACL,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;OACzB;MAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QACtD,MAAM,IAAI,cAAc,CAAC,0CAA0C,CAAC,CAAC;OACtE;MAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;MACnC,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,EAAE,EAAE;QACb,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;OACzB;WAAM,IAAI,KAAK,EAAE;QAChB,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;OACzB;MAED,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;MAC5C,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;MACpD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;MACzD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;MAClD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;MAC/C,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;MACrD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;MACrD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;MACnD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;MACvD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;KACxD,CAAC,CAAC;GACJ;EAED,oBAAoB;;IAClB,MAAA,IAAI,CAAC,KAAK,0CAAE,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACvD,MAAA,IAAI,CAAC,KAAK,0CAAE,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3D,MAAA,IAAI,CAAC,KAAK,0CAAE,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;GAC5D;EAEO,SAAS,CAAC,eAAuB,EAAE,KAAe;IACxD,IAAI,CAAC,eAAe,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;MAC9E,OAAO,CAAC,EAAE,CAAC,CAAC;KACb;IAED,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAExE,OAAO,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,SAAiB;MAC5D,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,EAAE,CAAC;OACX;MAED,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;QAC7B,OAAO,gBAAO,SAAS,CAAQ,CAAC;OACjC;MAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,OAAO,gBAAO,SAAS,CAAQ,CAAC;OACjC;MAED,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAClD,CAAC,CAAC;GACJ;EAEO,gBAAgB,CAAC,UAAsB;;IAC7C,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC;IAErC,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;GACnF;EAEO,qBAAqB;;IAC3B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;MACrB,OAAO;KACR;IAED,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAE9C,IAAI,IAAI,CAAC,kBAAkB,EAAE;MAC3B,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;KAChG;GACF;EAEO,oBAAoB;;IAC1B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;MACrB,OAAO;KACR;IAED,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAExE,IAAI,IAAI,CAAC,kBAAkB,EAAE;MAC3B,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;KAChG;GACF;EAEO,oBAAoB;;IAC1B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;MACrB,OAAO;KACR;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IAE/F,IAAI,CAAC,kBAAkB,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,mCAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAE7E,IAAI,IAAI,CAAC,kBAAkB,EAAE;MAC3B,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;KAChG;GACF;EAEO,wBAAwB;;IAC9B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;MACrB,OAAO;KACR;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAE9F,IAAI,CAAC,kBAAkB,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,mCAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEvG,IAAI,IAAI,CAAC,kBAAkB,EAAE;MAC3B,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;KAChG;GACF;EAEO,uBAAuB;;IAC7B,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;IACxC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACtB,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;IACpC,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;GACvD;EAEO,eAAe,CAAC,gBAAmC;;IACzD,IAAI,CAAC,eAAe,GAAG,OAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,mCAAI,KAAK,CAAC;IAClF,IAAI,CAAC,QAAQ,GAAG,MAAA,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,MAAM,MAAK,CAAC,mCAAI,KAAK,CAAC;IACxD,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE9F,IAAI,IAAI,CAAC,eAAe,IAAI,gBAAgB,KAAK,OAAO,EAAE;MACxD,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;SAAM,IAAI,IAAI,CAAC,eAAe,IAAI,gBAAgB,KAAK,MAAM,EAAE;MAC9D,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;GACF;EAEO,gBAAgB;;IACtB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC7B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACtB,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACnD,IAAI,CAAC,qBAAqB,EAAE,CAAC;GAC9B;EAEO,iBAAiB;;IACvB,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,eAAe,EAAE;MACnD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;KAC9C;SAAM;MACL,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAA,IAAI,CAAC,KAAK,0CAAE,KAAK,CAAC,CAAC;KACxC;IAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;GACzB;EA6CO,aAAa,CAAC,UAAsB;IAC1C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;MACrB,OAAO,EAAE,CAAC;KACX;IACD,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;GACtE;EAED,MAAM;;IACJ,MAAM,KAAK,GAAG,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mCAAI,EAAE,CAAC;IAElE,QACE,kBACE,eAAQ,EACP,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,IAC/B,WAAK,KAAK,EAAC,0BAA0B,IACnC,8BAAwB,KAAK,EAAE,IAAI,CAAC,YAAY,GAA2B,CACvE,KAEN,UACE,IAAI,EAAC,SAAS,EACd,EAAE,EAAE,IAAI,CAAC,SAAS,qBACD,IAAI,CAAC,OAAO,EAC7B,GAAG,EAAE,CAAC,OAAO,MAAM,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,EAC1C,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,QAAQ,IAE9C,CAAC,IAAI,CAAC,eAAe;MACpB,IAAI,CAAC,WAAW;MAChB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,MAC9B,UACE,IAAI,EAAC,QAAQ,EACb,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAClC,GAAG,EAAE,UAAU,CAAC,KAAK,EACrB,YAAY,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EACrD,YAAY,EAAE,MAAM,IAAI,CAAC,uBAAuB,EAAE,EAClD,OAAO,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE,mBACxB,CAAC,UAAU,KAAK,IAAI,CAAC,kBAAkB,EAAE,QAAQ,EAAE,gBACtD,UAAU,CAAC,KAAK,IAE5B,YAAM,KAAK,EAAC,OAAO,IAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAQ,EACnE,UAAU,CAAC,IAAI,GAAG,YAAM,KAAK,EAAC,MAAM,IAAE,UAAU,CAAC,IAAI,CAAQ,GAAG,SAAS,CACvE,CACN,CAAC;OACD,IAAI,CAAC,QAAQ,KACZ,cACE,YAAM,KAAK,EAAC,OAAO,IAChB,CAAC,IAAI,CAAC,aAAa,IAClB,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,UAAU,oBAAoB,EAAE,KAAK,CAAC,KAE7D,gBAAO,IAAI,CAAC,aAAa,CAAQ,CAClC,CACI,CACJ,CACN,CAAC,CACD,CACN,CACA,EACH;GACH;;;;;;;;;;","names":["debounce"],"sources":["../../node_modules/escape-string-regexp/index.js","./src/components/autosuggest/autosuggest.scss?tag=dso-autosuggest&encapsulation=scoped","./src/components/autosuggest/autosuggest.tsx"],"sourcesContent":["export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","@use \"~dso-toolkit/src/variables/units\";\r\n@use \"~dso-toolkit/src/variables/colors\";\r\n@use \"~dso-toolkit/src/variables/scaffolding\";\r\n@use \"~dso-toolkit/src/variables/zindex\";\r\n\r\n@use \"autosuggest.variables\" as core-autosuggest-variables;\r\n\r\n:host {\r\n display: block;\r\n position: relative;\r\n}\r\n\r\nul,\r\n.autosuggest-progress-box {\r\n background-clip: padding-box;\r\n background-color: core-autosuggest-variables.$background-color;\r\n border: 1px solid core-autosuggest-variables.$border-color;\r\n border-radius: scaffolding.$border-radius-base;\r\n box-shadow: core-autosuggest-variables.$box-shadow;\r\n list-style-type: none;\r\n margin-top: 2px;\r\n padding: units.$u1 * 0.5 0;\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 100%;\r\n z-index: zindex.$autosuggest;\r\n}\r\n\r\n.autosuggest-progress-box {\r\n padding: units.$u1 * 1.5 units.$u1;\r\n}\r\n\r\nul {\r\n padding: units.$u1 0;\r\n\r\n li {\r\n display: flex;\r\n justify-content: space-between;\r\n padding: units.$u1 * 0.5 units.$u2;\r\n }\r\n}\r\n\r\nli[aria-selected=\"true\"] {\r\n cursor: pointer;\r\n background-color: colors.$grasgroen;\r\n\r\n &,\r\n .type {\r\n color: colors.$wit;\r\n }\r\n}\r\n\r\nmark {\r\n font-weight: 700;\r\n background-color: inherit;\r\n color: inherit;\r\n padding: 0;\r\n}\r\n\r\n.type {\r\n color: colors.$grijs-60;\r\n}\r\n","import { Component, Element, h, Listen, Prop, State, Fragment, Event, EventEmitter, VNode, Watch } from \"@stencil/core\";\r\nimport debounce from \"debounce\";\r\nimport { v4 } from \"uuid\";\r\nimport escapeStringRegexp from \"escape-string-regexp\";\r\n\r\nimport { Suggestion } from \"./autosuggest.interfaces\";\r\n\r\n@Component({\r\n tag: \"dso-autosuggest\",\r\n styleUrl: \"autosuggest.scss\",\r\n scoped: true,\r\n})\r\nexport class Autosuggest {\r\n /**\r\n * The suggestions for the value of the slotted input element. Optionally a\r\n * Suggestion can have a `type` and `item`.\r\n *\r\n * The `type` is used to style the suggestion. `item` can be use to reference\r\n * the original object that was used to create the suggestion.\r\n *\r\n * The value should be null when no suggestions have been fetched.\r\n */\r\n @Prop()\r\n readonly suggestions: Suggestion[] | null = null;\r\n\r\n /**\r\n * Shows progress indicator when fetching results.\r\n */\r\n @Prop()\r\n loading = false;\r\n\r\n /**\r\n * To override progress indicator's default loading label.\r\n */\r\n @Prop()\r\n loadingLabel?: string = \"Een moment geduld.\";\r\n\r\n /**\r\n * To delay progress indicator showing (in ms).\r\n */\r\n @Prop()\r\n loadingDelayed?: number;\r\n\r\n /**\r\n * To show text when no results are found.\r\n */\r\n @Prop()\r\n notFoundLabel?: string;\r\n\r\n /**\r\n * Whether the previous suggestions will be presented when the input gets focus again.\r\n */\r\n @Prop()\r\n suggestOnFocus = false;\r\n\r\n /**\r\n * Emitted when a suggestion is selected.\r\n * The `detail` property of the `CustomEvent` will contain the selected suggestion.\r\n */\r\n @Event()\r\n dsoSelect!: EventEmitter<Suggestion>;\r\n\r\n /**\r\n * This is emitted debounced for every change for the slotted input type=text element.\r\n */\r\n @Event()\r\n dsoChange!: EventEmitter<string>;\r\n\r\n /**\r\n * Emitted when enter is pressed.\r\n * The `detail` property of the `CustomEvent` will contain the input text.\r\n */\r\n @Event()\r\n dsoSearch!: EventEmitter<string>;\r\n\r\n @Element()\r\n host!: HTMLDsoAutosuggestElement;\r\n\r\n @State()\r\n showSuggestions = false;\r\n\r\n @State()\r\n selectedSuggestion: Suggestion | undefined;\r\n\r\n @State()\r\n notFound = false;\r\n\r\n @State()\r\n showLoading = false;\r\n\r\n @Watch(\"suggestions\")\r\n suggestionsWatcher() {\r\n this.resetSelectedSuggestion();\r\n\r\n if ((!this.showSuggestions || !this.notFound) && this.inputValue) {\r\n this.openSuggestions();\r\n } else if ((this.showSuggestions || this.notFound) && !this.inputValue) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n private input?: HTMLInputElement;\r\n\r\n private listbox: HTMLUListElement | undefined;\r\n\r\n private listboxId: string = v4();\r\n\r\n private inputId: string = v4();\r\n\r\n private labelId: string = v4();\r\n\r\n private debouncedEmitValue = debounce((value: string) => {\r\n this.dsoChange.emit(value);\r\n this.debouncedShowLoading();\r\n }, 200);\r\n\r\n private debouncedShowLoading = debounce(() => {\r\n if (this.inputValue) {\r\n this.showLoading = true;\r\n }\r\n }, this.loadingDelayed);\r\n\r\n private inputValue = \"\";\r\n\r\n private onInput = (event: Event) => {\r\n if (!(event.target instanceof HTMLInputElement)) {\r\n throw new Error(\"event.target is not instanceof HTMLInputElement\");\r\n }\r\n\r\n this.showLoading = !this.loadingDelayed;\r\n this.inputValue = event.target.value;\r\n this.debouncedEmitValue(event.target.value.match(/(\\S+)/g) ? event.target.value : \"\");\r\n };\r\n\r\n private onFocusIn = () => {\r\n if (this.suggestOnFocus) {\r\n this.openSuggestions();\r\n }\r\n };\r\n\r\n @Listen(\"click\", { target: \"document\" })\r\n onDocumentClick(event: MouseEvent) {\r\n if (\r\n (this.showSuggestions || this.notFound) &&\r\n this.listbox &&\r\n event.target instanceof Node &&\r\n !this.listbox.contains(event.target) &&\r\n this.input !== event.target\r\n ) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n connectedCallback() {\r\n setTimeout(() => {\r\n const input = this.host.querySelector('input[type=\"text\"]');\r\n if (!(input instanceof HTMLInputElement)) {\r\n throw new ReferenceError(\"Mandatory text input not found\");\r\n }\r\n\r\n this.input = input;\r\n if (input.id) {\r\n this.inputId = input.id;\r\n } else {\r\n input.id = this.inputId;\r\n }\r\n\r\n if (!this.input.labels || this.input.labels.length < 1) {\r\n throw new ReferenceError(\"Mandatory label for text input not found\");\r\n }\r\n\r\n const label = this.input.labels[0];\r\n if (label?.id) {\r\n this.labelId = label.id;\r\n } else if (label) {\r\n label.id = this.labelId;\r\n }\r\n\r\n this.input.setAttribute(\"role\", \"combobox\");\r\n this.input.setAttribute(\"aria-haspopup\", \"listbox\");\r\n this.input.setAttribute(\"aria-controls\", this.listboxId);\r\n this.input.setAttribute(\"aria-expanded\", \"false\");\r\n this.input.setAttribute(\"autocomplete\", \"off\");\r\n this.input.setAttribute(\"aria-autocomplete\", \"list\");\r\n this.input.setAttribute(\"aria-activedescendant\", \"\");\r\n this.input.addEventListener(\"input\", this.onInput);\r\n this.input.addEventListener(\"keydown\", this.onKeyDown);\r\n this.input.addEventListener(\"focusin\", this.onFocusIn);\r\n });\r\n }\r\n\r\n disconnectedCallback() {\r\n this.input?.removeEventListener(\"input\", this.onInput);\r\n this.input?.removeEventListener(\"keydown\", this.onKeyDown);\r\n this.input?.removeEventListener(\"focusin\", this.onFocusIn);\r\n }\r\n\r\n private markTerms(suggestionValue: string, terms: string[]): (VNode | string)[] {\r\n if (!suggestionValue || !terms || terms.length === 0 || terms[0] === undefined) {\r\n return [\"\"];\r\n }\r\n\r\n const termRegex = new RegExp(`(${escapeStringRegexp(terms[0])})`, \"gi\");\r\n\r\n return suggestionValue.split(termRegex).map((valuePart: string) => {\r\n if (!valuePart) {\r\n return \"\";\r\n }\r\n\r\n if (termRegex.test(valuePart)) {\r\n return <mark>{valuePart}</mark>;\r\n }\r\n\r\n if (terms.length === 1) {\r\n return <span>{valuePart}</span>;\r\n }\r\n\r\n return this.markTerms(valuePart, terms.slice(1));\r\n });\r\n }\r\n\r\n private selectSuggestion(suggestion: Suggestion) {\r\n this.selectedSuggestion = suggestion;\r\n\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(suggestion));\r\n }\r\n\r\n private selectFirstSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n this.selectedSuggestion = this.suggestions[0];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectLastSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n this.selectedSuggestion = this.suggestions[this.suggestions.length - 1];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectNextSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : -1;\r\n\r\n this.selectedSuggestion = this.suggestions[index + 1] ?? this.suggestions[0];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectPreviousSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : 0;\r\n\r\n this.selectedSuggestion = this.suggestions[index - 1] ?? this.suggestions[this.suggestions.length - 1];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private resetSelectedSuggestion() {\r\n this.showLoading = !this.loadingDelayed;\r\n this.notFound = false;\r\n this.selectedSuggestion = undefined;\r\n this.input?.setAttribute(\"aria-activedescendant\", \"\");\r\n }\r\n\r\n private openSuggestions(selectSuggestion?: \"first\" | \"last\") {\r\n this.showSuggestions = (this.suggestions && this.suggestions.length > 0) ?? false;\r\n this.notFound = this.suggestions?.length === 0 ?? false;\r\n this.input?.setAttribute(\"aria-expanded\", (this.showSuggestions || this.notFound).toString());\r\n\r\n if (this.showSuggestions && selectSuggestion === \"first\") {\r\n this.selectFirstSuggestion();\r\n } else if (this.showSuggestions && selectSuggestion === \"last\") {\r\n this.selectLastSuggestion();\r\n }\r\n }\r\n\r\n private closeSuggestions() {\r\n this.showSuggestions = false;\r\n this.notFound = false;\r\n this.input?.setAttribute(\"aria-expanded\", \"false\");\r\n this.selectFirstSuggestion();\r\n }\r\n\r\n private pickSelectedValue() {\r\n if (this.selectedSuggestion && this.showSuggestions) {\r\n this.dsoSelect.emit(this.selectedSuggestion);\r\n } else {\r\n this.dsoSearch.emit(this.input?.value);\r\n }\r\n\r\n this.closeSuggestions();\r\n }\r\n\r\n private onKeyDown = (event: KeyboardEvent) => {\r\n if (event.defaultPrevented || this.loading) {\r\n return;\r\n }\r\n\r\n switch (event.key) {\r\n case \"ArrowDown\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"first\");\r\n } else {\r\n this.selectNextSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"ArrowUp\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"last\");\r\n } else {\r\n this.selectPreviousSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"Tab\":\r\n this.closeSuggestions();\r\n return;\r\n\r\n case \"Escape\":\r\n this.closeSuggestions();\r\n break;\r\n\r\n case \"Enter\":\r\n this.pickSelectedValue();\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n };\r\n\r\n private listboxItemId(suggestion: Suggestion): string {\r\n if (!this.suggestions) {\r\n return \"\";\r\n }\r\n return `${this.inputId}-${this.suggestions.indexOf(suggestion) + 1}`;\r\n }\r\n\r\n render() {\r\n const terms = this.input?.value.split(\" \").filter((t) => t) ?? [];\r\n\r\n return (\r\n <>\r\n <slot />\r\n {this.loading && this.showLoading ? (\r\n <div class=\"autosuggest-progress-box\">\r\n <dso-progress-indicator label={this.loadingLabel}></dso-progress-indicator>\r\n </div>\r\n ) : (\r\n <ul\r\n role=\"listbox\"\r\n id={this.listboxId}\r\n aria-labelledby={this.labelId}\r\n ref={(element) => (this.listbox = element)}\r\n hidden={!this.showSuggestions && !this.notFound}\r\n >\r\n {(this.showSuggestions &&\r\n this.suggestions &&\r\n this.suggestions.map((suggestion) => (\r\n <li\r\n role=\"option\"\r\n id={this.listboxItemId(suggestion)}\r\n key={suggestion.value}\r\n onMouseEnter={() => this.selectSuggestion(suggestion)}\r\n onMouseLeave={() => this.resetSelectedSuggestion()}\r\n onClick={() => this.pickSelectedValue()}\r\n aria-selected={(suggestion === this.selectedSuggestion).toString()}\r\n aria-label={suggestion.value}\r\n >\r\n <span class=\"value\">{this.markTerms(suggestion.value, terms)}</span>\r\n {suggestion.type ? <span class=\"type\">{suggestion.type}</span> : undefined}\r\n </li>\r\n ))) ||\r\n (this.notFound && (\r\n <li>\r\n <span class=\"value\">\r\n {!this.notFoundLabel ? (\r\n this.markTerms(`${this.inputValue} is niet gevonden.`, terms)\r\n ) : (\r\n <span>{this.notFoundLabel}</span>\r\n )}\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n"],"version":3}
1
+ {"file":"dso-autosuggest.entry.js","mappings":";;;;AAAe,SAAS,kBAAkB,CAAC,MAAM,EAAE;AACnD,CAAC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACjC,EAAE,MAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC;AAC3C,EAAE;AACF;AACA;AACA;AACA,CAAC,OAAO,MAAM;AACd,GAAG,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;AACzC,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC1B;;ACVA,MAAM,cAAc,GAAG,w4BAAw4B;;MCYl5B,WAAW;;;;;;IA6Fd,cAAS,GAAW,EAAE,EAAE,CAAC;IAEzB,YAAO,GAAW,EAAE,EAAE,CAAC;IAEvB,YAAO,GAAW,EAAE,EAAE,CAAC;IAEvB,uBAAkB,GAAGA,UAAQ,CAAC,CAAC,KAAa;MAClD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;MAC3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B,EAAE,GAAG,CAAC,CAAC;IAEA,yBAAoB,GAAGA,UAAQ,CAAC;MACtC,IAAI,IAAI,CAAC,UAAU,EAAE;QACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;OACzB;KACF,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAEhB,eAAU,GAAG,EAAE,CAAC;IAEhB,YAAO,GAAG,CAAC,KAAY;MAC7B,IAAI,EAAE,KAAK,CAAC,MAAM,YAAY,gBAAgB,CAAC,EAAE;QAC/C,OAAO;;OAER;MAED,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;MACxC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;MACrC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;KACvF,CAAC;IAEM,cAAS,GAAG;MAClB,IAAI,IAAI,CAAC,cAAc,EAAE;QACvB,IAAI,CAAC,eAAe,EAAE,CAAC;OACxB;KACF,CAAC;IAmLM,cAAS,GAAG,CAAC,KAAoB;MACvC,IAAI,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,EAAE;QAC1C,OAAO;OACR;MAED,QAAQ,KAAK,CAAC,GAAG;QACf,KAAK,WAAW;UACd,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;WAC/B;eAAM;YACL,IAAI,CAAC,oBAAoB,EAAE,CAAC;WAC7B;UAED,MAAM;QAER,KAAK,SAAS;UACZ,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;WAC9B;eAAM;YACL,IAAI,CAAC,wBAAwB,EAAE,CAAC;WACjC;UAED,MAAM;QAER,KAAK,KAAK;UACR,IAAI,CAAC,gBAAgB,EAAE,CAAC;UACxB,OAAO;QAET,KAAK,QAAQ;UACX,IAAI,CAAC,gBAAgB,EAAE,CAAC;UACxB,MAAM;QAER,KAAK,OAAO;UACV,IAAI,CAAC,iBAAiB,EAAE,CAAC;UACzB,MAAM;QAER;UACE,OAAO;OACV;MAED,KAAK,CAAC,cAAc,EAAE,CAAC;KACxB,CAAC;uBAhV0C,IAAI;mBAMtC,KAAK;wBAMS,oBAAoB;;;0BAkB3B,KAAK;2BA0BJ,KAAK;;oBAMZ,KAAK;uBAGF,KAAK;;EAGnB,kBAAkB;IAChB,IAAI,CAAC,uBAAuB,EAAE,CAAC;IAE/B,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,UAAU,EAAE;MAChE,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;SAAM,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE;MACtE,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;GACF;EA2CD,eAAe,CAAC,KAAiB;IAC/B,IACE,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ;MACtC,IAAI,CAAC,OAAO;MACZ,KAAK,CAAC,MAAM,YAAY,IAAI;MAC5B,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;MACpC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,EAC3B;MACA,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;GACF;EAED,iBAAiB;IACf,UAAU,CAAC;MACT,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;MAC5D,IAAI,EAAE,KAAK,YAAY,gBAAgB,CAAC,EAAE;QACxC,OAAO;;OAER;MAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;MACnB,IAAI,KAAK,CAAC,EAAE,EAAE;QACZ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;OACzB;WAAM;QACL,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;OACzB;MAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QACtD,OAAO;;OAER;MAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;MACnC,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,EAAE,EAAE;QACb,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;OACzB;WAAM,IAAI,KAAK,EAAE;QAChB,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;OACzB;MAED,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;MAC5C,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;MACpD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;MACzD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;MAClD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;MAC/C,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;MACrD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;MACrD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;MACnD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;MACvD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;KACxD,CAAC,CAAC;GACJ;EAED,oBAAoB;;IAClB,MAAA,IAAI,CAAC,KAAK,0CAAE,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACvD,MAAA,IAAI,CAAC,KAAK,0CAAE,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3D,MAAA,IAAI,CAAC,KAAK,0CAAE,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;GAC5D;EAEO,SAAS,CAAC,eAAuB,EAAE,KAAe;IACxD,IAAI,CAAC,eAAe,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;MAC9E,OAAO,CAAC,EAAE,CAAC,CAAC;KACb;IAED,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAExE,OAAO,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,SAAiB;MAC5D,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,EAAE,CAAC;OACX;MAED,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;QAC7B,OAAO,gBAAO,SAAS,CAAQ,CAAC;OACjC;MAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,OAAO,gBAAO,SAAS,CAAQ,CAAC;OACjC;MAED,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAClD,CAAC,CAAC;GACJ;EAEO,gBAAgB,CAAC,UAAsB;;IAC7C,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC;IAErC,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;GACnF;EAEO,qBAAqB;;IAC3B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;MACrB,OAAO;KACR;IAED,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAE9C,IAAI,IAAI,CAAC,kBAAkB,EAAE;MAC3B,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;KAChG;GACF;EAEO,oBAAoB;;IAC1B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;MACrB,OAAO;KACR;IAED,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAExE,IAAI,IAAI,CAAC,kBAAkB,EAAE;MAC3B,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;KAChG;GACF;EAEO,oBAAoB;;IAC1B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;MACrB,OAAO;KACR;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IAE/F,IAAI,CAAC,kBAAkB,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,mCAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAE7E,IAAI,IAAI,CAAC,kBAAkB,EAAE;MAC3B,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;KAChG;GACF;EAEO,wBAAwB;;IAC9B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;MACrB,OAAO;KACR;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAE9F,IAAI,CAAC,kBAAkB,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,mCAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEvG,IAAI,IAAI,CAAC,kBAAkB,EAAE;MAC3B,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;KAChG;GACF;EAEO,uBAAuB;;IAC7B,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;IACxC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACtB,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;IACpC,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;GACvD;EAEO,eAAe,CAAC,gBAAmC;;IACzD,IAAI,CAAC,eAAe,GAAG,OAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,mCAAI,KAAK,CAAC;IAClF,IAAI,CAAC,QAAQ,GAAG,MAAA,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,MAAM,MAAK,CAAC,mCAAI,KAAK,CAAC;IACxD,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE9F,IAAI,IAAI,CAAC,eAAe,IAAI,gBAAgB,KAAK,OAAO,EAAE;MACxD,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;SAAM,IAAI,IAAI,CAAC,eAAe,IAAI,gBAAgB,KAAK,MAAM,EAAE;MAC9D,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;GACF;EAEO,gBAAgB;;IACtB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC7B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACtB,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACnD,IAAI,CAAC,qBAAqB,EAAE,CAAC;GAC9B;EAEO,iBAAiB;;IACvB,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,eAAe,EAAE;MACnD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;KAC9C;SAAM;MACL,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAA,IAAI,CAAC,KAAK,0CAAE,KAAK,CAAC,CAAC;KACxC;IAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;GACzB;EA6CO,aAAa,CAAC,UAAsB;IAC1C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;MACrB,OAAO,EAAE,CAAC;KACX;IACD,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;GACtE;EAED,MAAM;;IACJ,MAAM,KAAK,GAAG,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mCAAI,EAAE,CAAC;IAElE,QACE,kBACE,eAAQ,EACP,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,IAC/B,WAAK,KAAK,EAAC,0BAA0B,IACnC,8BAAwB,KAAK,EAAE,IAAI,CAAC,YAAY,GAA2B,CACvE,KAEN,UACE,IAAI,EAAC,SAAS,EACd,EAAE,EAAE,IAAI,CAAC,SAAS,qBACD,IAAI,CAAC,OAAO,EAC7B,GAAG,EAAE,CAAC,OAAO,MAAM,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,EAC1C,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,QAAQ,IAE9C,CAAC,IAAI,CAAC,eAAe;MACpB,IAAI,CAAC,WAAW;MAChB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,MAC9B,UACE,IAAI,EAAC,QAAQ,EACb,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAClC,GAAG,EAAE,UAAU,CAAC,KAAK,EACrB,YAAY,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EACrD,YAAY,EAAE,MAAM,IAAI,CAAC,uBAAuB,EAAE,EAClD,OAAO,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE,mBACxB,CAAC,UAAU,KAAK,IAAI,CAAC,kBAAkB,EAAE,QAAQ,EAAE,gBACtD,UAAU,CAAC,KAAK,IAE5B,YAAM,KAAK,EAAC,OAAO,IAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAQ,EACnE,UAAU,CAAC,IAAI,GAAG,YAAM,KAAK,EAAC,MAAM,IAAE,UAAU,CAAC,IAAI,CAAQ,GAAG,SAAS,CACvE,CACN,CAAC;OACD,IAAI,CAAC,QAAQ,KACZ,cACE,YAAM,KAAK,EAAC,OAAO,IAChB,CAAC,IAAI,CAAC,aAAa,IAClB,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,UAAU,oBAAoB,EAAE,KAAK,CAAC,KAE7D,gBAAO,IAAI,CAAC,aAAa,CAAQ,CAClC,CACI,CACJ,CACN,CAAC,CACD,CACN,CACA,EACH;GACH;;;;;;;;;;","names":["debounce"],"sources":["../../node_modules/escape-string-regexp/index.js","./src/components/autosuggest/autosuggest.scss?tag=dso-autosuggest&encapsulation=scoped","./src/components/autosuggest/autosuggest.tsx"],"sourcesContent":["export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","@use \"~dso-toolkit/src/variables/units\";\r\n@use \"~dso-toolkit/src/variables/colors\";\r\n@use \"~dso-toolkit/src/variables/scaffolding\";\r\n@use \"~dso-toolkit/src/variables/zindex\";\r\n\r\n@use \"autosuggest.variables\" as core-autosuggest-variables;\r\n\r\n:host {\r\n display: block;\r\n position: relative;\r\n}\r\n\r\nul,\r\n.autosuggest-progress-box {\r\n background-clip: padding-box;\r\n background-color: core-autosuggest-variables.$background-color;\r\n border: 1px solid core-autosuggest-variables.$border-color;\r\n border-radius: scaffolding.$border-radius-base;\r\n box-shadow: core-autosuggest-variables.$box-shadow;\r\n list-style-type: none;\r\n margin-top: 2px;\r\n padding: units.$u1 * 0.5 0;\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 100%;\r\n z-index: zindex.$autosuggest;\r\n}\r\n\r\n.autosuggest-progress-box {\r\n padding: units.$u1 * 1.5 units.$u1;\r\n}\r\n\r\nul {\r\n padding: units.$u1 0;\r\n\r\n li {\r\n display: flex;\r\n justify-content: space-between;\r\n padding: units.$u1 * 0.5 units.$u2;\r\n }\r\n}\r\n\r\nli[aria-selected=\"true\"] {\r\n cursor: pointer;\r\n background-color: colors.$grasgroen;\r\n\r\n &,\r\n .type {\r\n color: colors.$wit;\r\n }\r\n}\r\n\r\nmark {\r\n font-weight: 700;\r\n background-color: inherit;\r\n color: inherit;\r\n padding: 0;\r\n}\r\n\r\n.type {\r\n color: colors.$grijs-60;\r\n}\r\n","import { Component, Element, h, Listen, Prop, State, Fragment, Event, EventEmitter, VNode, Watch } from \"@stencil/core\";\r\nimport debounce from \"debounce\";\r\nimport { v4 } from \"uuid\";\r\nimport escapeStringRegexp from \"escape-string-regexp\";\r\n\r\nimport { Suggestion } from \"./autosuggest.interfaces\";\r\n\r\n@Component({\r\n tag: \"dso-autosuggest\",\r\n styleUrl: \"autosuggest.scss\",\r\n scoped: true,\r\n})\r\nexport class Autosuggest {\r\n /**\r\n * The suggestions for the value of the slotted input element. Optionally a\r\n * Suggestion can have a `type` and `item`.\r\n *\r\n * The `type` is used to style the suggestion. `item` can be use to reference\r\n * the original object that was used to create the suggestion.\r\n *\r\n * The value should be null when no suggestions have been fetched.\r\n */\r\n @Prop()\r\n readonly suggestions: Suggestion[] | null = null;\r\n\r\n /**\r\n * Shows progress indicator when fetching results.\r\n */\r\n @Prop()\r\n loading = false;\r\n\r\n /**\r\n * To override progress indicator's default loading label.\r\n */\r\n @Prop()\r\n loadingLabel?: string = \"Een moment geduld.\";\r\n\r\n /**\r\n * To delay progress indicator showing (in ms).\r\n */\r\n @Prop()\r\n loadingDelayed?: number;\r\n\r\n /**\r\n * To show text when no results are found.\r\n */\r\n @Prop()\r\n notFoundLabel?: string;\r\n\r\n /**\r\n * Whether the previous suggestions will be presented when the input gets focus again.\r\n */\r\n @Prop()\r\n suggestOnFocus = false;\r\n\r\n /**\r\n * Emitted when a suggestion is selected.\r\n * The `detail` property of the `CustomEvent` will contain the selected suggestion.\r\n */\r\n @Event()\r\n dsoSelect!: EventEmitter<Suggestion>;\r\n\r\n /**\r\n * This is emitted debounced for every change for the slotted input type=text element.\r\n */\r\n @Event()\r\n dsoChange!: EventEmitter<string>;\r\n\r\n /**\r\n * Emitted when enter is pressed.\r\n * The `detail` property of the `CustomEvent` will contain the input text.\r\n */\r\n @Event()\r\n dsoSearch!: EventEmitter<string>;\r\n\r\n @Element()\r\n host!: HTMLDsoAutosuggestElement;\r\n\r\n @State()\r\n showSuggestions = false;\r\n\r\n @State()\r\n selectedSuggestion: Suggestion | undefined;\r\n\r\n @State()\r\n notFound = false;\r\n\r\n @State()\r\n showLoading = false;\r\n\r\n @Watch(\"suggestions\")\r\n suggestionsWatcher() {\r\n this.resetSelectedSuggestion();\r\n\r\n if ((!this.showSuggestions || !this.notFound) && this.inputValue) {\r\n this.openSuggestions();\r\n } else if ((this.showSuggestions || this.notFound) && !this.inputValue) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n private input?: HTMLInputElement;\r\n\r\n private listbox: HTMLUListElement | undefined;\r\n\r\n private listboxId: string = v4();\r\n\r\n private inputId: string = v4();\r\n\r\n private labelId: string = v4();\r\n\r\n private debouncedEmitValue = debounce((value: string) => {\r\n this.dsoChange.emit(value);\r\n this.debouncedShowLoading();\r\n }, 200);\r\n\r\n private debouncedShowLoading = debounce(() => {\r\n if (this.inputValue) {\r\n this.showLoading = true;\r\n }\r\n }, this.loadingDelayed);\r\n\r\n private inputValue = \"\";\r\n\r\n private onInput = (event: Event) => {\r\n if (!(event.target instanceof HTMLInputElement)) {\r\n return;\r\n // throw new Error(\"event.target is not instanceof HTMLInputElement\"); #2293\r\n }\r\n\r\n this.showLoading = !this.loadingDelayed;\r\n this.inputValue = event.target.value;\r\n this.debouncedEmitValue(event.target.value.match(/(\\S+)/g) ? event.target.value : \"\");\r\n };\r\n\r\n private onFocusIn = () => {\r\n if (this.suggestOnFocus) {\r\n this.openSuggestions();\r\n }\r\n };\r\n\r\n @Listen(\"click\", { target: \"document\" })\r\n onDocumentClick(event: MouseEvent) {\r\n if (\r\n (this.showSuggestions || this.notFound) &&\r\n this.listbox &&\r\n event.target instanceof Node &&\r\n !this.listbox.contains(event.target) &&\r\n this.input !== event.target\r\n ) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n connectedCallback() {\r\n setTimeout(() => {\r\n const input = this.host.querySelector('input[type=\"text\"]');\r\n if (!(input instanceof HTMLInputElement)) {\r\n return;\r\n // throw new ReferenceError(\"Mandatory text input not found\"); #2293\r\n }\r\n\r\n this.input = input;\r\n if (input.id) {\r\n this.inputId = input.id;\r\n } else {\r\n input.id = this.inputId;\r\n }\r\n\r\n if (!this.input.labels || this.input.labels.length < 1) {\r\n return;\r\n // throw new ReferenceError(\"Mandatory label for text input not found\"); #2293\r\n }\r\n\r\n const label = this.input.labels[0];\r\n if (label?.id) {\r\n this.labelId = label.id;\r\n } else if (label) {\r\n label.id = this.labelId;\r\n }\r\n\r\n this.input.setAttribute(\"role\", \"combobox\");\r\n this.input.setAttribute(\"aria-haspopup\", \"listbox\");\r\n this.input.setAttribute(\"aria-controls\", this.listboxId);\r\n this.input.setAttribute(\"aria-expanded\", \"false\");\r\n this.input.setAttribute(\"autocomplete\", \"off\");\r\n this.input.setAttribute(\"aria-autocomplete\", \"list\");\r\n this.input.setAttribute(\"aria-activedescendant\", \"\");\r\n this.input.addEventListener(\"input\", this.onInput);\r\n this.input.addEventListener(\"keydown\", this.onKeyDown);\r\n this.input.addEventListener(\"focusin\", this.onFocusIn);\r\n });\r\n }\r\n\r\n disconnectedCallback() {\r\n this.input?.removeEventListener(\"input\", this.onInput);\r\n this.input?.removeEventListener(\"keydown\", this.onKeyDown);\r\n this.input?.removeEventListener(\"focusin\", this.onFocusIn);\r\n }\r\n\r\n private markTerms(suggestionValue: string, terms: string[]): (VNode | string)[] {\r\n if (!suggestionValue || !terms || terms.length === 0 || terms[0] === undefined) {\r\n return [\"\"];\r\n }\r\n\r\n const termRegex = new RegExp(`(${escapeStringRegexp(terms[0])})`, \"gi\");\r\n\r\n return suggestionValue.split(termRegex).map((valuePart: string) => {\r\n if (!valuePart) {\r\n return \"\";\r\n }\r\n\r\n if (termRegex.test(valuePart)) {\r\n return <mark>{valuePart}</mark>;\r\n }\r\n\r\n if (terms.length === 1) {\r\n return <span>{valuePart}</span>;\r\n }\r\n\r\n return this.markTerms(valuePart, terms.slice(1));\r\n });\r\n }\r\n\r\n private selectSuggestion(suggestion: Suggestion) {\r\n this.selectedSuggestion = suggestion;\r\n\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(suggestion));\r\n }\r\n\r\n private selectFirstSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n this.selectedSuggestion = this.suggestions[0];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectLastSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n this.selectedSuggestion = this.suggestions[this.suggestions.length - 1];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectNextSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : -1;\r\n\r\n this.selectedSuggestion = this.suggestions[index + 1] ?? this.suggestions[0];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectPreviousSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : 0;\r\n\r\n this.selectedSuggestion = this.suggestions[index - 1] ?? this.suggestions[this.suggestions.length - 1];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private resetSelectedSuggestion() {\r\n this.showLoading = !this.loadingDelayed;\r\n this.notFound = false;\r\n this.selectedSuggestion = undefined;\r\n this.input?.setAttribute(\"aria-activedescendant\", \"\");\r\n }\r\n\r\n private openSuggestions(selectSuggestion?: \"first\" | \"last\") {\r\n this.showSuggestions = (this.suggestions && this.suggestions.length > 0) ?? false;\r\n this.notFound = this.suggestions?.length === 0 ?? false;\r\n this.input?.setAttribute(\"aria-expanded\", (this.showSuggestions || this.notFound).toString());\r\n\r\n if (this.showSuggestions && selectSuggestion === \"first\") {\r\n this.selectFirstSuggestion();\r\n } else if (this.showSuggestions && selectSuggestion === \"last\") {\r\n this.selectLastSuggestion();\r\n }\r\n }\r\n\r\n private closeSuggestions() {\r\n this.showSuggestions = false;\r\n this.notFound = false;\r\n this.input?.setAttribute(\"aria-expanded\", \"false\");\r\n this.selectFirstSuggestion();\r\n }\r\n\r\n private pickSelectedValue() {\r\n if (this.selectedSuggestion && this.showSuggestions) {\r\n this.dsoSelect.emit(this.selectedSuggestion);\r\n } else {\r\n this.dsoSearch.emit(this.input?.value);\r\n }\r\n\r\n this.closeSuggestions();\r\n }\r\n\r\n private onKeyDown = (event: KeyboardEvent) => {\r\n if (event.defaultPrevented || this.loading) {\r\n return;\r\n }\r\n\r\n switch (event.key) {\r\n case \"ArrowDown\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"first\");\r\n } else {\r\n this.selectNextSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"ArrowUp\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"last\");\r\n } else {\r\n this.selectPreviousSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"Tab\":\r\n this.closeSuggestions();\r\n return;\r\n\r\n case \"Escape\":\r\n this.closeSuggestions();\r\n break;\r\n\r\n case \"Enter\":\r\n this.pickSelectedValue();\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n };\r\n\r\n private listboxItemId(suggestion: Suggestion): string {\r\n if (!this.suggestions) {\r\n return \"\";\r\n }\r\n return `${this.inputId}-${this.suggestions.indexOf(suggestion) + 1}`;\r\n }\r\n\r\n render() {\r\n const terms = this.input?.value.split(\" \").filter((t) => t) ?? [];\r\n\r\n return (\r\n <>\r\n <slot />\r\n {this.loading && this.showLoading ? (\r\n <div class=\"autosuggest-progress-box\">\r\n <dso-progress-indicator label={this.loadingLabel}></dso-progress-indicator>\r\n </div>\r\n ) : (\r\n <ul\r\n role=\"listbox\"\r\n id={this.listboxId}\r\n aria-labelledby={this.labelId}\r\n ref={(element) => (this.listbox = element)}\r\n hidden={!this.showSuggestions && !this.notFound}\r\n >\r\n {(this.showSuggestions &&\r\n this.suggestions &&\r\n this.suggestions.map((suggestion) => (\r\n <li\r\n role=\"option\"\r\n id={this.listboxItemId(suggestion)}\r\n key={suggestion.value}\r\n onMouseEnter={() => this.selectSuggestion(suggestion)}\r\n onMouseLeave={() => this.resetSelectedSuggestion()}\r\n onClick={() => this.pickSelectedValue()}\r\n aria-selected={(suggestion === this.selectedSuggestion).toString()}\r\n aria-label={suggestion.value}\r\n >\r\n <span class=\"value\">{this.markTerms(suggestion.value, terms)}</span>\r\n {suggestion.type ? <span class=\"type\">{suggestion.type}</span> : undefined}\r\n </li>\r\n ))) ||\r\n (this.notFound && (\r\n <li>\r\n <span class=\"value\">\r\n {!this.notFoundLabel ? (\r\n this.markTerms(`${this.inputValue} is niet gevonden.`, terms)\r\n ) : (\r\n <span>{this.notFoundLabel}</span>\r\n )}\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n"],"version":3}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dso-toolkit/core",
3
- "version": "58.0.0",
3
+ "version": "58.0.1",
4
4
  "description": "DSO Toolkit Web Components",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/components/index.js",
@@ -25,7 +25,7 @@
25
25
  "@types/animejs": "^3.1.7",
26
26
  "animejs": "3.2.1",
27
27
  "clsx": "^1.2.1",
28
- "dso-toolkit": "^58.0.0",
28
+ "dso-toolkit": "^58.0.1",
29
29
  "escape-string-regexp": "^5.0.0",
30
30
  "focus-trap": "^7.4.3",
31
31
  "popper-max-size-modifier": "^0.2.0",
@@ -1,2 +0,0 @@
1
- import{r as s,c as t,h as i,F as e,a as h}from"./p-1a1a43fd.js";import{d as o}from"./p-1805f5b0.js";import{v as n}from"./p-5d7f4ff2.js";function a(s){if(typeof s!=="string"){throw new TypeError("Expected a string")}return s.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const r=".sc-dso-autosuggest-h{display:block;position:relative}ul.sc-dso-autosuggest,.autosuggest-progress-box.sc-dso-autosuggest{background-clip:padding-box;background-color:#fff;border:1px solid rgba(0, 0, 0, 0.15);border-radius:4px;box-shadow:0 6px 12px rgba(0, 0, 0, 0.175);list-style-type:none;margin-top:2px;padding:4px 0;position:absolute;left:0;right:0;top:100%;z-index:200}.autosuggest-progress-box.sc-dso-autosuggest{padding:12px 8px}ul.sc-dso-autosuggest{padding:8px 0}ul.sc-dso-autosuggest li.sc-dso-autosuggest{display:flex;justify-content:space-between;padding:4px 16px}li[aria-selected=true].sc-dso-autosuggest{cursor:pointer;background-color:#39870c}li[aria-selected=true].sc-dso-autosuggest,li[aria-selected=true].sc-dso-autosuggest .type.sc-dso-autosuggest{color:#fff}mark.sc-dso-autosuggest{font-weight:700;background-color:inherit;color:inherit;padding:0}.type.sc-dso-autosuggest{color:#666}";const l=class{constructor(i){s(this,i);this.dsoSelect=t(this,"dsoSelect",7);this.dsoChange=t(this,"dsoChange",7);this.dsoSearch=t(this,"dsoSearch",7);this.listboxId=n();this.inputId=n();this.labelId=n();this.debouncedEmitValue=o((s=>{this.dsoChange.emit(s);this.debouncedShowLoading()}),200);this.debouncedShowLoading=o((()=>{if(this.inputValue){this.showLoading=true}}),this.loadingDelayed);this.inputValue="";this.onInput=s=>{if(!(s.target instanceof HTMLInputElement)){throw new Error("event.target is not instanceof HTMLInputElement")}this.showLoading=!this.loadingDelayed;this.inputValue=s.target.value;this.debouncedEmitValue(s.target.value.match(/(\S+)/g)?s.target.value:"")};this.onFocusIn=()=>{if(this.suggestOnFocus){this.openSuggestions()}};this.onKeyDown=s=>{if(s.defaultPrevented||this.loading){return}switch(s.key){case"ArrowDown":if(!this.showSuggestions){this.openSuggestions("first")}else{this.selectNextSuggestion()}break;case"ArrowUp":if(!this.showSuggestions){this.openSuggestions("last")}else{this.selectPreviousSuggestion()}break;case"Tab":this.closeSuggestions();return;case"Escape":this.closeSuggestions();break;case"Enter":this.pickSelectedValue();break;default:return}s.preventDefault()};this.suggestions=null;this.loading=false;this.loadingLabel="Een moment geduld.";this.loadingDelayed=undefined;this.notFoundLabel=undefined;this.suggestOnFocus=false;this.showSuggestions=false;this.selectedSuggestion=undefined;this.notFound=false;this.showLoading=false}suggestionsWatcher(){this.resetSelectedSuggestion();if((!this.showSuggestions||!this.notFound)&&this.inputValue){this.openSuggestions()}else if((this.showSuggestions||this.notFound)&&!this.inputValue){this.closeSuggestions()}}onDocumentClick(s){if((this.showSuggestions||this.notFound)&&this.listbox&&s.target instanceof Node&&!this.listbox.contains(s.target)&&this.input!==s.target){this.closeSuggestions()}}connectedCallback(){setTimeout((()=>{const s=this.host.querySelector('input[type="text"]');if(!(s instanceof HTMLInputElement)){throw new ReferenceError("Mandatory text input not found")}this.input=s;if(s.id){this.inputId=s.id}else{s.id=this.inputId}if(!this.input.labels||this.input.labels.length<1){throw new ReferenceError("Mandatory label for text input not found")}const t=this.input.labels[0];if(t===null||t===void 0?void 0:t.id){this.labelId=t.id}else if(t){t.id=this.labelId}this.input.setAttribute("role","combobox");this.input.setAttribute("aria-haspopup","listbox");this.input.setAttribute("aria-controls",this.listboxId);this.input.setAttribute("aria-expanded","false");this.input.setAttribute("autocomplete","off");this.input.setAttribute("aria-autocomplete","list");this.input.setAttribute("aria-activedescendant","");this.input.addEventListener("input",this.onInput);this.input.addEventListener("keydown",this.onKeyDown);this.input.addEventListener("focusin",this.onFocusIn)}))}disconnectedCallback(){var s,t,i;(s=this.input)===null||s===void 0?void 0:s.removeEventListener("input",this.onInput);(t=this.input)===null||t===void 0?void 0:t.removeEventListener("keydown",this.onKeyDown);(i=this.input)===null||i===void 0?void 0:i.removeEventListener("focusin",this.onFocusIn)}markTerms(s,t){if(!s||!t||t.length===0||t[0]===undefined){return[""]}const e=new RegExp(`(${a(t[0])})`,"gi");return s.split(e).map((s=>{if(!s){return""}if(e.test(s)){return i("mark",null,s)}if(t.length===1){return i("span",null,s)}return this.markTerms(s,t.slice(1))}))}selectSuggestion(s){var t;this.selectedSuggestion=s;(t=this.input)===null||t===void 0?void 0:t.setAttribute("aria-activedescendant",this.listboxItemId(s))}selectFirstSuggestion(){var s;if(!this.suggestions){return}this.selectedSuggestion=this.suggestions[0];if(this.selectedSuggestion){(s=this.input)===null||s===void 0?void 0:s.setAttribute("aria-activedescendant",this.listboxItemId(this.selectedSuggestion))}}selectLastSuggestion(){var s;if(!this.suggestions){return}this.selectedSuggestion=this.suggestions[this.suggestions.length-1];if(this.selectedSuggestion){(s=this.input)===null||s===void 0?void 0:s.setAttribute("aria-activedescendant",this.listboxItemId(this.selectedSuggestion))}}selectNextSuggestion(){var s,t;if(!this.suggestions){return}const i=this.selectedSuggestion?this.suggestions.indexOf(this.selectedSuggestion):-1;this.selectedSuggestion=(s=this.suggestions[i+1])!==null&&s!==void 0?s:this.suggestions[0];if(this.selectedSuggestion){(t=this.input)===null||t===void 0?void 0:t.setAttribute("aria-activedescendant",this.listboxItemId(this.selectedSuggestion))}}selectPreviousSuggestion(){var s,t;if(!this.suggestions){return}const i=this.selectedSuggestion?this.suggestions.indexOf(this.selectedSuggestion):0;this.selectedSuggestion=(s=this.suggestions[i-1])!==null&&s!==void 0?s:this.suggestions[this.suggestions.length-1];if(this.selectedSuggestion){(t=this.input)===null||t===void 0?void 0:t.setAttribute("aria-activedescendant",this.listboxItemId(this.selectedSuggestion))}}resetSelectedSuggestion(){var s;this.showLoading=!this.loadingDelayed;this.notFound=false;this.selectedSuggestion=undefined;(s=this.input)===null||s===void 0?void 0:s.setAttribute("aria-activedescendant","")}openSuggestions(s){var t,i,e,h;this.showSuggestions=(t=this.suggestions&&this.suggestions.length>0)!==null&&t!==void 0?t:false;this.notFound=(e=((i=this.suggestions)===null||i===void 0?void 0:i.length)===0)!==null&&e!==void 0?e:false;(h=this.input)===null||h===void 0?void 0:h.setAttribute("aria-expanded",(this.showSuggestions||this.notFound).toString());if(this.showSuggestions&&s==="first"){this.selectFirstSuggestion()}else if(this.showSuggestions&&s==="last"){this.selectLastSuggestion()}}closeSuggestions(){var s;this.showSuggestions=false;this.notFound=false;(s=this.input)===null||s===void 0?void 0:s.setAttribute("aria-expanded","false");this.selectFirstSuggestion()}pickSelectedValue(){var s;if(this.selectedSuggestion&&this.showSuggestions){this.dsoSelect.emit(this.selectedSuggestion)}else{this.dsoSearch.emit((s=this.input)===null||s===void 0?void 0:s.value)}this.closeSuggestions()}listboxItemId(s){if(!this.suggestions){return""}return`${this.inputId}-${this.suggestions.indexOf(s)+1}`}render(){var s,t;const h=(t=(s=this.input)===null||s===void 0?void 0:s.value.split(" ").filter((s=>s)))!==null&&t!==void 0?t:[];return i(e,null,i("slot",null),this.loading&&this.showLoading?i("div",{class:"autosuggest-progress-box"},i("dso-progress-indicator",{label:this.loadingLabel})):i("ul",{role:"listbox",id:this.listboxId,"aria-labelledby":this.labelId,ref:s=>this.listbox=s,hidden:!this.showSuggestions&&!this.notFound},this.showSuggestions&&this.suggestions&&this.suggestions.map((s=>i("li",{role:"option",id:this.listboxItemId(s),key:s.value,onMouseEnter:()=>this.selectSuggestion(s),onMouseLeave:()=>this.resetSelectedSuggestion(),onClick:()=>this.pickSelectedValue(),"aria-selected":(s===this.selectedSuggestion).toString(),"aria-label":s.value},i("span",{class:"value"},this.markTerms(s.value,h)),s.type?i("span",{class:"type"},s.type):undefined)))||this.notFound&&i("li",null,i("span",{class:"value"},!this.notFoundLabel?this.markTerms(`${this.inputValue} is niet gevonden.`,h):i("span",null,this.notFoundLabel)))))}get host(){return h(this)}static get watchers(){return{suggestions:["suggestionsWatcher"]}}};l.style=r;export{l as dso_autosuggest};
2
- //# sourceMappingURL=p-b76768a5.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["escapeStringRegexp","string","TypeError","replace","autosuggestCss","Autosuggest","this","listboxId","v4","inputId","labelId","debouncedEmitValue","debounce","value","dsoChange","emit","debouncedShowLoading","inputValue","showLoading","loadingDelayed","onInput","event","target","HTMLInputElement","Error","match","onFocusIn","suggestOnFocus","openSuggestions","onKeyDown","defaultPrevented","loading","key","showSuggestions","selectNextSuggestion","selectPreviousSuggestion","closeSuggestions","pickSelectedValue","preventDefault","suggestionsWatcher","resetSelectedSuggestion","notFound","onDocumentClick","listbox","Node","contains","input","connectedCallback","setTimeout","host","querySelector","ReferenceError","id","labels","length","label","setAttribute","addEventListener","disconnectedCallback","_a","removeEventListener","_b","_c","markTerms","suggestionValue","terms","undefined","termRegex","RegExp","split","map","valuePart","test","h","slice","selectSuggestion","suggestion","selectedSuggestion","listboxItemId","selectFirstSuggestion","suggestions","selectLastSuggestion","index","indexOf","_d","toString","dsoSelect","dsoSearch","render","filter","t","Fragment","class","loadingLabel","role","ref","element","hidden","onMouseEnter","onMouseLeave","onClick","type","notFoundLabel"],"sources":["../../node_modules/escape-string-regexp/index.js","./src/components/autosuggest/autosuggest.scss?tag=dso-autosuggest&encapsulation=scoped","./src/components/autosuggest/autosuggest.tsx"],"sourcesContent":["export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","@use \"~dso-toolkit/src/variables/units\";\r\n@use \"~dso-toolkit/src/variables/colors\";\r\n@use \"~dso-toolkit/src/variables/scaffolding\";\r\n@use \"~dso-toolkit/src/variables/zindex\";\r\n\r\n@use \"autosuggest.variables\" as core-autosuggest-variables;\r\n\r\n:host {\r\n display: block;\r\n position: relative;\r\n}\r\n\r\nul,\r\n.autosuggest-progress-box {\r\n background-clip: padding-box;\r\n background-color: core-autosuggest-variables.$background-color;\r\n border: 1px solid core-autosuggest-variables.$border-color;\r\n border-radius: scaffolding.$border-radius-base;\r\n box-shadow: core-autosuggest-variables.$box-shadow;\r\n list-style-type: none;\r\n margin-top: 2px;\r\n padding: units.$u1 * 0.5 0;\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 100%;\r\n z-index: zindex.$autosuggest;\r\n}\r\n\r\n.autosuggest-progress-box {\r\n padding: units.$u1 * 1.5 units.$u1;\r\n}\r\n\r\nul {\r\n padding: units.$u1 0;\r\n\r\n li {\r\n display: flex;\r\n justify-content: space-between;\r\n padding: units.$u1 * 0.5 units.$u2;\r\n }\r\n}\r\n\r\nli[aria-selected=\"true\"] {\r\n cursor: pointer;\r\n background-color: colors.$grasgroen;\r\n\r\n &,\r\n .type {\r\n color: colors.$wit;\r\n }\r\n}\r\n\r\nmark {\r\n font-weight: 700;\r\n background-color: inherit;\r\n color: inherit;\r\n padding: 0;\r\n}\r\n\r\n.type {\r\n color: colors.$grijs-60;\r\n}\r\n","import { Component, Element, h, Listen, Prop, State, Fragment, Event, EventEmitter, VNode, Watch } from \"@stencil/core\";\r\nimport debounce from \"debounce\";\r\nimport { v4 } from \"uuid\";\r\nimport escapeStringRegexp from \"escape-string-regexp\";\r\n\r\nimport { Suggestion } from \"./autosuggest.interfaces\";\r\n\r\n@Component({\r\n tag: \"dso-autosuggest\",\r\n styleUrl: \"autosuggest.scss\",\r\n scoped: true,\r\n})\r\nexport class Autosuggest {\r\n /**\r\n * The suggestions for the value of the slotted input element. Optionally a\r\n * Suggestion can have a `type` and `item`.\r\n *\r\n * The `type` is used to style the suggestion. `item` can be use to reference\r\n * the original object that was used to create the suggestion.\r\n *\r\n * The value should be null when no suggestions have been fetched.\r\n */\r\n @Prop()\r\n readonly suggestions: Suggestion[] | null = null;\r\n\r\n /**\r\n * Shows progress indicator when fetching results.\r\n */\r\n @Prop()\r\n loading = false;\r\n\r\n /**\r\n * To override progress indicator's default loading label.\r\n */\r\n @Prop()\r\n loadingLabel?: string = \"Een moment geduld.\";\r\n\r\n /**\r\n * To delay progress indicator showing (in ms).\r\n */\r\n @Prop()\r\n loadingDelayed?: number;\r\n\r\n /**\r\n * To show text when no results are found.\r\n */\r\n @Prop()\r\n notFoundLabel?: string;\r\n\r\n /**\r\n * Whether the previous suggestions will be presented when the input gets focus again.\r\n */\r\n @Prop()\r\n suggestOnFocus = false;\r\n\r\n /**\r\n * Emitted when a suggestion is selected.\r\n * The `detail` property of the `CustomEvent` will contain the selected suggestion.\r\n */\r\n @Event()\r\n dsoSelect!: EventEmitter<Suggestion>;\r\n\r\n /**\r\n * This is emitted debounced for every change for the slotted input type=text element.\r\n */\r\n @Event()\r\n dsoChange!: EventEmitter<string>;\r\n\r\n /**\r\n * Emitted when enter is pressed.\r\n * The `detail` property of the `CustomEvent` will contain the input text.\r\n */\r\n @Event()\r\n dsoSearch!: EventEmitter<string>;\r\n\r\n @Element()\r\n host!: HTMLDsoAutosuggestElement;\r\n\r\n @State()\r\n showSuggestions = false;\r\n\r\n @State()\r\n selectedSuggestion: Suggestion | undefined;\r\n\r\n @State()\r\n notFound = false;\r\n\r\n @State()\r\n showLoading = false;\r\n\r\n @Watch(\"suggestions\")\r\n suggestionsWatcher() {\r\n this.resetSelectedSuggestion();\r\n\r\n if ((!this.showSuggestions || !this.notFound) && this.inputValue) {\r\n this.openSuggestions();\r\n } else if ((this.showSuggestions || this.notFound) && !this.inputValue) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n private input?: HTMLInputElement;\r\n\r\n private listbox: HTMLUListElement | undefined;\r\n\r\n private listboxId: string = v4();\r\n\r\n private inputId: string = v4();\r\n\r\n private labelId: string = v4();\r\n\r\n private debouncedEmitValue = debounce((value: string) => {\r\n this.dsoChange.emit(value);\r\n this.debouncedShowLoading();\r\n }, 200);\r\n\r\n private debouncedShowLoading = debounce(() => {\r\n if (this.inputValue) {\r\n this.showLoading = true;\r\n }\r\n }, this.loadingDelayed);\r\n\r\n private inputValue = \"\";\r\n\r\n private onInput = (event: Event) => {\r\n if (!(event.target instanceof HTMLInputElement)) {\r\n throw new Error(\"event.target is not instanceof HTMLInputElement\");\r\n }\r\n\r\n this.showLoading = !this.loadingDelayed;\r\n this.inputValue = event.target.value;\r\n this.debouncedEmitValue(event.target.value.match(/(\\S+)/g) ? event.target.value : \"\");\r\n };\r\n\r\n private onFocusIn = () => {\r\n if (this.suggestOnFocus) {\r\n this.openSuggestions();\r\n }\r\n };\r\n\r\n @Listen(\"click\", { target: \"document\" })\r\n onDocumentClick(event: MouseEvent) {\r\n if (\r\n (this.showSuggestions || this.notFound) &&\r\n this.listbox &&\r\n event.target instanceof Node &&\r\n !this.listbox.contains(event.target) &&\r\n this.input !== event.target\r\n ) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n connectedCallback() {\r\n setTimeout(() => {\r\n const input = this.host.querySelector('input[type=\"text\"]');\r\n if (!(input instanceof HTMLInputElement)) {\r\n throw new ReferenceError(\"Mandatory text input not found\");\r\n }\r\n\r\n this.input = input;\r\n if (input.id) {\r\n this.inputId = input.id;\r\n } else {\r\n input.id = this.inputId;\r\n }\r\n\r\n if (!this.input.labels || this.input.labels.length < 1) {\r\n throw new ReferenceError(\"Mandatory label for text input not found\");\r\n }\r\n\r\n const label = this.input.labels[0];\r\n if (label?.id) {\r\n this.labelId = label.id;\r\n } else if (label) {\r\n label.id = this.labelId;\r\n }\r\n\r\n this.input.setAttribute(\"role\", \"combobox\");\r\n this.input.setAttribute(\"aria-haspopup\", \"listbox\");\r\n this.input.setAttribute(\"aria-controls\", this.listboxId);\r\n this.input.setAttribute(\"aria-expanded\", \"false\");\r\n this.input.setAttribute(\"autocomplete\", \"off\");\r\n this.input.setAttribute(\"aria-autocomplete\", \"list\");\r\n this.input.setAttribute(\"aria-activedescendant\", \"\");\r\n this.input.addEventListener(\"input\", this.onInput);\r\n this.input.addEventListener(\"keydown\", this.onKeyDown);\r\n this.input.addEventListener(\"focusin\", this.onFocusIn);\r\n });\r\n }\r\n\r\n disconnectedCallback() {\r\n this.input?.removeEventListener(\"input\", this.onInput);\r\n this.input?.removeEventListener(\"keydown\", this.onKeyDown);\r\n this.input?.removeEventListener(\"focusin\", this.onFocusIn);\r\n }\r\n\r\n private markTerms(suggestionValue: string, terms: string[]): (VNode | string)[] {\r\n if (!suggestionValue || !terms || terms.length === 0 || terms[0] === undefined) {\r\n return [\"\"];\r\n }\r\n\r\n const termRegex = new RegExp(`(${escapeStringRegexp(terms[0])})`, \"gi\");\r\n\r\n return suggestionValue.split(termRegex).map((valuePart: string) => {\r\n if (!valuePart) {\r\n return \"\";\r\n }\r\n\r\n if (termRegex.test(valuePart)) {\r\n return <mark>{valuePart}</mark>;\r\n }\r\n\r\n if (terms.length === 1) {\r\n return <span>{valuePart}</span>;\r\n }\r\n\r\n return this.markTerms(valuePart, terms.slice(1));\r\n });\r\n }\r\n\r\n private selectSuggestion(suggestion: Suggestion) {\r\n this.selectedSuggestion = suggestion;\r\n\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(suggestion));\r\n }\r\n\r\n private selectFirstSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n this.selectedSuggestion = this.suggestions[0];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectLastSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n this.selectedSuggestion = this.suggestions[this.suggestions.length - 1];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectNextSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : -1;\r\n\r\n this.selectedSuggestion = this.suggestions[index + 1] ?? this.suggestions[0];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private selectPreviousSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : 0;\r\n\r\n this.selectedSuggestion = this.suggestions[index - 1] ?? this.suggestions[this.suggestions.length - 1];\r\n\r\n if (this.selectedSuggestion) {\r\n this.input?.setAttribute(\"aria-activedescendant\", this.listboxItemId(this.selectedSuggestion));\r\n }\r\n }\r\n\r\n private resetSelectedSuggestion() {\r\n this.showLoading = !this.loadingDelayed;\r\n this.notFound = false;\r\n this.selectedSuggestion = undefined;\r\n this.input?.setAttribute(\"aria-activedescendant\", \"\");\r\n }\r\n\r\n private openSuggestions(selectSuggestion?: \"first\" | \"last\") {\r\n this.showSuggestions = (this.suggestions && this.suggestions.length > 0) ?? false;\r\n this.notFound = this.suggestions?.length === 0 ?? false;\r\n this.input?.setAttribute(\"aria-expanded\", (this.showSuggestions || this.notFound).toString());\r\n\r\n if (this.showSuggestions && selectSuggestion === \"first\") {\r\n this.selectFirstSuggestion();\r\n } else if (this.showSuggestions && selectSuggestion === \"last\") {\r\n this.selectLastSuggestion();\r\n }\r\n }\r\n\r\n private closeSuggestions() {\r\n this.showSuggestions = false;\r\n this.notFound = false;\r\n this.input?.setAttribute(\"aria-expanded\", \"false\");\r\n this.selectFirstSuggestion();\r\n }\r\n\r\n private pickSelectedValue() {\r\n if (this.selectedSuggestion && this.showSuggestions) {\r\n this.dsoSelect.emit(this.selectedSuggestion);\r\n } else {\r\n this.dsoSearch.emit(this.input?.value);\r\n }\r\n\r\n this.closeSuggestions();\r\n }\r\n\r\n private onKeyDown = (event: KeyboardEvent) => {\r\n if (event.defaultPrevented || this.loading) {\r\n return;\r\n }\r\n\r\n switch (event.key) {\r\n case \"ArrowDown\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"first\");\r\n } else {\r\n this.selectNextSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"ArrowUp\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"last\");\r\n } else {\r\n this.selectPreviousSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"Tab\":\r\n this.closeSuggestions();\r\n return;\r\n\r\n case \"Escape\":\r\n this.closeSuggestions();\r\n break;\r\n\r\n case \"Enter\":\r\n this.pickSelectedValue();\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n };\r\n\r\n private listboxItemId(suggestion: Suggestion): string {\r\n if (!this.suggestions) {\r\n return \"\";\r\n }\r\n return `${this.inputId}-${this.suggestions.indexOf(suggestion) + 1}`;\r\n }\r\n\r\n render() {\r\n const terms = this.input?.value.split(\" \").filter((t) => t) ?? [];\r\n\r\n return (\r\n <>\r\n <slot />\r\n {this.loading && this.showLoading ? (\r\n <div class=\"autosuggest-progress-box\">\r\n <dso-progress-indicator label={this.loadingLabel}></dso-progress-indicator>\r\n </div>\r\n ) : (\r\n <ul\r\n role=\"listbox\"\r\n id={this.listboxId}\r\n aria-labelledby={this.labelId}\r\n ref={(element) => (this.listbox = element)}\r\n hidden={!this.showSuggestions && !this.notFound}\r\n >\r\n {(this.showSuggestions &&\r\n this.suggestions &&\r\n this.suggestions.map((suggestion) => (\r\n <li\r\n role=\"option\"\r\n id={this.listboxItemId(suggestion)}\r\n key={suggestion.value}\r\n onMouseEnter={() => this.selectSuggestion(suggestion)}\r\n onMouseLeave={() => this.resetSelectedSuggestion()}\r\n onClick={() => this.pickSelectedValue()}\r\n aria-selected={(suggestion === this.selectedSuggestion).toString()}\r\n aria-label={suggestion.value}\r\n >\r\n <span class=\"value\">{this.markTerms(suggestion.value, terms)}</span>\r\n {suggestion.type ? <span class=\"type\">{suggestion.type}</span> : undefined}\r\n </li>\r\n ))) ||\r\n (this.notFound && (\r\n <li>\r\n <span class=\"value\">\r\n {!this.notFoundLabel ? (\r\n this.markTerms(`${this.inputValue} is niet gevonden.`, terms)\r\n ) : (\r\n <span>{this.notFoundLabel}</span>\r\n )}\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n"],"mappings":"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"}