@descope/web-components-ui 1.0.362 → 1.0.364

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -3071,18 +3071,9 @@ class PasscodeInternal extends BaseInputClass$7 {
3071
3071
  }
3072
3072
 
3073
3073
  initInputs() {
3074
- let currentInput;
3075
-
3076
3074
  this.inputs.forEach((input) => {
3077
3075
  input.shadowRoot.appendChild(createInputMaskStyle());
3078
3076
 
3079
- input.addEventListener('change', (e) => {
3080
- if (currentInput !== e.target) {
3081
- this.parseInputValue(input, input.value);
3082
- this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));
3083
- }
3084
- });
3085
-
3086
3077
  const handleParseInput = (val) => {
3087
3078
  this.parseInputValue(input, val);
3088
3079
  toggleMaskVisibility(input);
@@ -3098,16 +3089,7 @@ class PasscodeInternal extends BaseInputClass$7 {
3098
3089
  toggleMaskVisibility(input, input.value[0]);
3099
3090
  }
3100
3091
 
3101
- // when using iPhone's code autofill we get only `change` events.
3102
- // In other scenarios we get `input` AND `change` events.
3103
- // In order to be parse the digits properly in iPhone, we need to listen to `change` event
3104
- // and validate it was not preceeded by an `input` event.
3105
- // To do so, we're keeping a reference to the input element in `input` events,
3106
- // and only if there the reference is null, then we're assuming no `input` event was preceeding,
3107
- // and we're parsing the digits.
3108
- currentInput = e.target;
3109
3092
  setTimeout(() => {
3110
- currentInput = null;
3111
3093
  if (e?.inputType === 'deleteContentBackward') {
3112
3094
  focusElement(this.getPrevInput(input));
3113
3095
  }
@@ -8783,33 +8765,44 @@ const isValidDataType = (data) => {
8783
8765
 
8784
8766
  const isPlainObject = (value) => value?.constructor === Object;
8785
8767
 
8768
+ const isXml = (str) => /^\s*<[\s\S]*>/.test(str);
8769
+
8770
+ const escapeXML = (s) => {
8771
+ const dom = document.createElement('div');
8772
+ dom.textContent = s;
8773
+ return dom.innerHTML;
8774
+ };
8775
+
8786
8776
  const getValueType = (value) => {
8787
8777
  if (isPlainObject(value)) return 'object';
8788
8778
  if (Array.isArray(value)) return 'array';
8779
+ if (isXml(value)) return 'xml';
8789
8780
 
8790
8781
  return 'text';
8791
8782
  };
8792
8783
 
8793
- const renderCodeSnippet = (value) =>
8794
- `<descope-code-snippet lang="json" class="row-details__value json">${JSON.stringify(
8795
- value,
8796
- null,
8797
- 2
8798
- )}</descope-code-snippet>`;
8784
+ const renderCodeSnippet = (value, lang) =>
8785
+ `<descope-code-snippet lang="${lang}" class="row-details__value code">${value}</descope-code-snippet>`;
8799
8786
 
8800
8787
  const renderText = (text) =>
8801
8788
  `<div class="row-details__value text" title="${text}">${text}</div>`;
8789
+ const renderJson = (value) => renderCodeSnippet(JSON.stringify(value, null, 2), 'json');
8790
+ const renderXml = (value) => renderCodeSnippet(escapeXML(value), 'xml');
8802
8791
 
8803
8792
  const defaultRowDetailsValueRenderer = (value) => {
8804
8793
  const valueType = getValueType(value);
8805
8794
 
8806
8795
  if (valueType === 'object') {
8807
- return renderCodeSnippet(value);
8796
+ return renderJson(value);
8797
+ }
8798
+
8799
+ if (valueType === 'xml') {
8800
+ return renderXml(value);
8808
8801
  }
8809
8802
 
8810
8803
  if (valueType === 'array') {
8811
8804
  if (value.some((v) => getValueType(v) === 'object')) {
8812
- return renderCodeSnippet(value);
8805
+ return renderJson(value);
8813
8806
  }
8814
8807
  return renderText(value.join(',\n'));
8815
8808
  }
@@ -9166,7 +9159,7 @@ const GridClass = compose(
9166
9159
  grid-template-columns: repeat(auto-fit, minmax(max(200px, calc(100%/4 - var(${GridClass.cssVarList.detailsPanelItemsGap}))), 1fr));
9167
9160
  width: 100%;
9168
9161
  }
9169
- vaadin-grid .row-details__item:has(.row-details__value.json) {
9162
+ vaadin-grid .row-details__item:has(.row-details__value.code) {
9170
9163
  grid-column: 1 / -1;
9171
9164
  order: 2;
9172
9165
  }
@@ -9175,7 +9168,7 @@ const GridClass = compose(
9175
9168
  text-overflow: ellipsis;
9176
9169
  white-space: pre;
9177
9170
  }
9178
- vaadin-grid .row-details__value.json {
9171
+ vaadin-grid .row-details__value.code {
9179
9172
  margin-top: 5px;
9180
9173
  max-height: 120px;
9181
9174
  overflow: scroll;