@haiilo/catalyst 2.4.8 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/dist/catalyst/catalyst.esm.js +1 -1
  2. package/dist/catalyst/catalyst.esm.js.map +1 -1
  3. package/dist/catalyst/index.cdn.js +1 -0
  4. package/dist/catalyst/index.esm.js +1 -1
  5. package/dist/catalyst/p-2fdb52c9.entry.js +2 -0
  6. package/dist/catalyst/p-2fdb52c9.entry.js.map +1 -0
  7. package/dist/catalyst/p-ccfebe33.js +2 -0
  8. package/dist/catalyst/p-ccfebe33.js.map +1 -0
  9. package/dist/catalyst/scss/_variables.scss +11 -11
  10. package/dist/cjs/{cat-alert_23.cjs.entry.js → cat-alert_24.cjs.entry.js} +65 -10
  11. package/dist/cjs/cat-alert_24.cjs.entry.js.map +1 -0
  12. package/dist/cjs/{cat-icon-registry-32ed379a.js → cat-icon-registry-671af264.js} +60 -32
  13. package/dist/cjs/cat-icon-registry-671af264.js.map +1 -0
  14. package/dist/cjs/catalyst.cjs.js +1 -1
  15. package/dist/cjs/index.cjs.js +1 -1
  16. package/dist/cjs/loader.cjs.js +1 -1
  17. package/dist/collection/collection-manifest.json +1 -0
  18. package/dist/collection/components/cat-form-group/cat-form-group.css +3 -0
  19. package/dist/collection/components/cat-form-group/cat-form-group.js +66 -0
  20. package/dist/collection/components/cat-form-group/cat-form-group.js.map +1 -0
  21. package/dist/collection/components/cat-i18n/cat-i18n-registry.js +28 -7
  22. package/dist/collection/components/cat-i18n/cat-i18n-registry.js.map +1 -1
  23. package/dist/collection/components/cat-icon/cat-icon-registry.js +31 -24
  24. package/dist/collection/components/cat-icon/cat-icon-registry.js.map +1 -1
  25. package/dist/collection/components/cat-icon/cat-icon.js +2 -3
  26. package/dist/collection/components/cat-icon/cat-icon.js.map +1 -1
  27. package/dist/collection/components/cat-input/cat-input.js +27 -1
  28. package/dist/collection/components/cat-input/cat-input.js.map +1 -1
  29. package/dist/collection/components/cat-label/cat-label.js +27 -1
  30. package/dist/collection/components/cat-label/cat-label.js.map +1 -1
  31. package/dist/collection/components/cat-select/cat-select.js +47 -4
  32. package/dist/collection/components/cat-select/cat-select.js.map +1 -1
  33. package/dist/collection/components/cat-select-demo/cat-select-demo.js +1 -1
  34. package/dist/collection/components/cat-select-demo/cat-select-demo.js.map +1 -1
  35. package/dist/collection/components/cat-textarea/cat-textarea.js +31 -1
  36. package/dist/collection/components/cat-textarea/cat-textarea.js.map +1 -1
  37. package/dist/collection/index.cdn.js +1 -0
  38. package/dist/collection/scss/_variables.scss +11 -11
  39. package/dist/components/cat-form-group.d.ts +11 -0
  40. package/dist/components/cat-form-group.js +64 -0
  41. package/dist/components/cat-form-group.js.map +1 -0
  42. package/dist/components/cat-i18n-registry.js +28 -7
  43. package/dist/components/cat-i18n-registry.js.map +1 -1
  44. package/dist/components/cat-icon2.js +32 -26
  45. package/dist/components/cat-icon2.js.map +1 -1
  46. package/dist/components/cat-input.js +6 -1
  47. package/dist/components/cat-input.js.map +1 -1
  48. package/dist/components/cat-label.js +6 -1
  49. package/dist/components/cat-label.js.map +1 -1
  50. package/dist/components/cat-select-demo.js +1 -1
  51. package/dist/components/cat-select-demo.js.map +1 -1
  52. package/dist/components/cat-select2.js +8 -2
  53. package/dist/components/cat-select2.js.map +1 -1
  54. package/dist/components/cat-textarea.js +7 -1
  55. package/dist/components/cat-textarea.js.map +1 -1
  56. package/dist/components/index.d.ts +1 -0
  57. package/dist/components/index.js +1 -0
  58. package/dist/components/index.js.map +1 -1
  59. package/dist/esm/{cat-alert_23.entry.js → cat-alert_24.entry.js} +65 -11
  60. package/dist/esm/cat-alert_24.entry.js.map +1 -0
  61. package/dist/esm/{cat-icon-registry-7c4007ff.js → cat-icon-registry-d6b80490.js} +60 -32
  62. package/dist/esm/cat-icon-registry-d6b80490.js.map +1 -0
  63. package/dist/esm/catalyst.js +1 -1
  64. package/dist/esm/index.js +2 -2
  65. package/dist/esm/loader.js +1 -1
  66. package/dist/types/components/cat-form-group/cat-form-group.d.ts +16 -0
  67. package/dist/types/components/cat-i18n/cat-i18n-registry.d.ts +3 -2
  68. package/dist/types/components/cat-icon/cat-icon-registry.d.ts +3 -5
  69. package/dist/types/components/cat-icon/cat-icon.d.ts +0 -1
  70. package/dist/types/components/cat-input/cat-input.d.ts +4 -0
  71. package/dist/types/components/cat-label/cat-label.d.ts +4 -0
  72. package/dist/types/components/cat-select/cat-select.d.ts +13 -5
  73. package/dist/types/components/cat-textarea/cat-textarea.d.ts +4 -0
  74. package/dist/types/components.d.ts +63 -2
  75. package/package.json +2 -2
  76. package/dist/catalyst/p-5362e648.js +0 -2
  77. package/dist/catalyst/p-5362e648.js.map +0 -1
  78. package/dist/catalyst/p-c2bf7e26.entry.js +0 -2
  79. package/dist/catalyst/p-c2bf7e26.entry.js.map +0 -1
  80. package/dist/cjs/cat-alert_23.cjs.entry.js.map +0 -1
  81. package/dist/cjs/cat-icon-registry-32ed379a.js.map +0 -1
  82. package/dist/esm/cat-alert_23.entry.js.map +0 -1
  83. package/dist/esm/cat-icon-registry-7c4007ff.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"cat-icon.js","sourceRoot":"","sources":["../../../src/components/cat-icon/cat-icon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;;;GAKG;AAMH,MAAM,OAAO,OAAO;EALpB;IAMmB,iBAAY,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;IAE9D;;OAEG;IACK,SAAI,GAAG,EAAE,CAAC;IAElB;;OAEG;IACK,SAAI,GAA6C,GAAG,CAAC;GAsB9D;EAdC,MAAM;IACJ,OAAO,CACL,YACE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBACnC,IAAI,CAAC,SAAS,iBACb,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAC3C,IAAI,EAAC,MAAM,EACX,KAAK,EAAE;QACL,IAAI,EAAE,IAAI;QACV,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ;OAC9C,GACK,CACT,CAAC;EACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, h, Prop } from '@stencil/core';\nimport { CatIconRegistry } from './cat-icon-registry';\n\n/**\n * Icons are used to provide additional meaning or in places where text label\n * doesn't fit.\n *\n * @part icon - The span element wrapping the SVG icon.\n */\n@Component({\n tag: 'cat-icon',\n styleUrl: 'cat-icon.scss',\n shadow: true\n})\nexport class CatIcon {\n private readonly iconRegistry = CatIconRegistry.getInstance();\n\n /**\n * The name of the icon.\n */\n @Prop() icon = '';\n\n /**\n * The size of the icon.\n */\n @Prop() size: 'xs' | 's' | 'm' | 'l' | 'xl' | 'inline' = 'm';\n\n /**\n * Adds accessible label for the icon that is only shown for screen\n * readers. The `aria-hidden` attribute will be set if no label is present.\n */\n @Prop({ attribute: 'a11y-label' }) a11yLabel?: string;\n\n render() {\n return (\n <span\n innerHTML={this.iconRegistry.getIcon(this.icon)}\n aria-label={this.a11yLabel}\n aria-hidden={this.a11yLabel ? null : 'true'}\n part=\"icon\"\n class={{\n icon: true,\n [`icon-${this.size}`]: this.size !== 'inline'\n }}\n ></span>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"cat-icon.js","sourceRoot":"","sources":["../../../src/components/cat-icon/cat-icon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,IAAI,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE/D;;;;;GAKG;AAMH,MAAM,OAAO,OAAO;EALpB;IAME;;OAEG;IACK,SAAI,GAAG,EAAE,CAAC;IAElB;;OAEG;IACK,SAAI,GAA6C,GAAG,CAAC;GAsB9D;EAdC,MAAM;IACJ,OAAO,CACL,YACE,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBACvB,IAAI,CAAC,SAAS,iBACb,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAC3C,IAAI,EAAC,MAAM,EACX,KAAK,EAAE;QACL,IAAI,EAAE,IAAI;QACV,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ;OAC9C,GACK,CACT,CAAC;EACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, h, Prop } from '@stencil/core';\nimport { catIconRegistry as icons } from './cat-icon-registry';\n\n/**\n * Icons are used to provide additional meaning or in places where text label\n * doesn't fit.\n *\n * @part icon - The span element wrapping the SVG icon.\n */\n@Component({\n tag: 'cat-icon',\n styleUrl: 'cat-icon.scss',\n shadow: true\n})\nexport class CatIcon {\n /**\n * The name of the icon.\n */\n @Prop() icon = '';\n\n /**\n * The size of the icon.\n */\n @Prop() size: 'xs' | 's' | 'm' | 'l' | 'xl' | 'inline' = 'm';\n\n /**\n * Adds accessible label for the icon that is only shown for screen\n * readers. The `aria-hidden` attribute will be set if no label is present.\n */\n @Prop({ attribute: 'a11y-label' }) a11yLabel?: string;\n\n render() {\n return (\n <span\n innerHTML={icons.getIcon(this.icon)}\n aria-label={this.a11yLabel}\n aria-hidden={this.a11yLabel ? null : 'true'}\n part=\"icon\"\n class={{\n icon: true,\n [`icon-${this.size}`]: this.size !== 'inline'\n }}\n ></span>\n );\n }\n}\n"]}
@@ -18,6 +18,10 @@ export class CatInput {
18
18
  constructor() {
19
19
  this._id = `cat-input-${nextUniqueId++}`;
20
20
  this.hasSlottedLabel = false;
21
+ /**
22
+ * Whether the label need a marker to shown if the input is required or optional.
23
+ */
24
+ this.requiredMarker = 'optional';
21
25
  /**
22
26
  * Whether the input should show a clear button.
23
27
  */
@@ -98,9 +102,13 @@ export class CatInput {
98
102
  (this.hasSlottedLabel || this.label) && (h("label", { htmlFor: this.id, class: { hidden: this.labelHidden } },
99
103
  h("span", { part: "label" },
100
104
  (this.hasSlottedLabel && h("slot", { name: "label" })) || this.label,
101
- !this.required && (h("span", { class: "input-optional", "aria-hidden": "true" },
105
+ !this.required && this.requiredMarker.startsWith('optional') && (h("span", { class: "input-optional", "aria-hidden": "true" },
102
106
  "(",
103
107
  i18n.t('input.optional'),
108
+ ")")),
109
+ this.required && this.requiredMarker.startsWith('required') && (h("span", { class: "input-optional", "aria-hidden": "true" },
110
+ "(",
111
+ i18n.t('input.required'),
104
112
  ")"))))),
105
113
  h("div", { class: {
106
114
  'input-wrapper': true,
@@ -141,6 +149,24 @@ export class CatInput {
141
149
  "$": ["cat-input.css"]
142
150
  }; }
143
151
  static get properties() { return {
152
+ "requiredMarker": {
153
+ "type": "string",
154
+ "mutable": false,
155
+ "complexType": {
156
+ "original": "'none' | 'required' | 'optional' | 'none!' | 'optional!' | 'required!'",
157
+ "resolved": "\"none!\" | \"none\" | \"optional!\" | \"optional\" | \"required!\" | \"required\"",
158
+ "references": {}
159
+ },
160
+ "required": false,
161
+ "optional": false,
162
+ "docs": {
163
+ "tags": [],
164
+ "text": "Whether the label need a marker to shown if the input is required or optional."
165
+ },
166
+ "attribute": "required-marker",
167
+ "reflect": false,
168
+ "defaultValue": "'optional'"
169
+ },
144
170
  "autoComplete": {
145
171
  "type": "string",
146
172
  "mutable": false,
@@ -1 +1 @@
1
- {"version":3,"file":"cat-input.js","sourceRoot":"","sources":["../../../src/components/cat-input/cat-input.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Host, Method, Prop, State } from '@stencil/core';\nimport log from 'loglevel';\nimport { CatFormHint } from '../cat-form-hint/cat-form-hint';\nimport { catI18nRegistry as i18n } from '../cat-i18n/cat-i18n-registry';\nimport { InputType } from './input-type';\n\nlet nextUniqueId = 0;\n\n/**\n * Inputs are used to allow users to provide text input when the expected input\n * is short. As well as plain text, Input supports various types of text,\n * including passwords and numbers.\n *\n * @slot hint - Optional hint element to be displayed with the input.\n * @slot label - The slotted label. If both the label property and the label slot are present, only the label slot will be displayed.\n * @part label - The label content.\n * @part prefix - The text prefix.\n * @part suffix - The text suffix.\n */\n@Component({\n tag: 'cat-input',\n styleUrl: 'cat-input.scss',\n shadow: true\n})\nexport class CatInput {\n private readonly _id = `cat-input-${nextUniqueId++}`;\n private get id() {\n return this.identifier || this._id;\n }\n\n private input!: HTMLInputElement;\n\n @Element() hostElement!: HTMLElement;\n\n @State() hasSlottedLabel = false;\n\n /**\n * Hint for form autofill feature.\n */\n @Prop() autoComplete?: string;\n\n /**\n * Whether the input should show a clear button.\n */\n @Prop() clearable = false;\n\n /**\n * Whether the input is disabled.\n */\n @Prop() disabled = false;\n\n /**\n * Optional hint text(s) to be displayed with the input.\n */\n @Prop() hint?: string | string[];\n\n /**\n * The name of an icon to be displayed in the input.\n */\n @Prop() icon?: string;\n\n /**\n * Display the icon on the right.\n */\n @Prop() iconRight = false;\n\n /**\n * A unique identifier for the input.\n */\n @Prop() identifier?: string;\n\n /**\n * The label for the input.\n */\n @Prop() label = '';\n\n /**\n * Visually hide the label, but still show it to assistive technologies like screen readers.\n */\n @Prop() labelHidden = false;\n\n /**\n * A maximum value for date, time and numeric values.\n */\n @Prop() max?: number | string;\n\n /**\n * A maximum length (number of characters) for textual values.\n */\n @Prop() maxLength?: number;\n\n /**\n * A minimum value for date, time and numeric values.\n */\n @Prop() min?: number | string;\n\n /**\n * A minimum length (number of characters) for textual values.\n */\n @Prop() minLength?: number;\n\n /**\n * The name of the form control. Submitted with the form as part of a name/value pair.\n */\n @Prop() name?: string;\n\n /**\n * The placeholder text to display within the input.\n */\n @Prop() placeholder?: string;\n\n /**\n * A textual prefix to be displayed in the input.\n */\n @Prop() textPrefix?: string;\n\n /**\n * A textual suffix to be displayed in the input.\n */\n @Prop() textSuffix?: string;\n\n /**\n * The value is not editable.\n */\n @Prop() readonly = false;\n\n /**\n * A value is required or must be check for the form to be submittable.\n */\n @Prop() required = false;\n\n /**\n * Use round input edges.\n */\n @Prop() round = false;\n\n /**\n * Type of form control.\n */\n @Prop() type: InputType = 'text';\n\n /**\n * The value of the control.\n */\n @Prop({ mutable: true }) value?: string | number;\n\n /**\n * Emitted when the value is changed.\n */\n @Event() catChange!: EventEmitter;\n\n /**\n * Emitted when the input received focus.\n */\n @Event() catFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the input loses focus.\n */\n @Event() catBlur!: EventEmitter<FocusEvent>;\n\n componentWillRender(): void {\n this.hasSlottedLabel = !!this.hostElement.querySelector('[slot=\"label\"]');\n if (!this.label && !this.hasSlottedLabel) {\n log.warn('[A11y] Missing ARIA label on input', this);\n }\n }\n\n /**\n * Programmatically move focus to the input. Use this method instead of\n * `input.focus()`.\n *\n * @param options An optional object providing options to control aspects of\n * the focusing process.\n */\n @Method()\n async doFocus(options?: FocusOptions): Promise<void> {\n this.input.focus(options);\n }\n\n /**\n * Programmatically remove focus from the input. Use this method instead of\n * `input.blur()`.\n */\n @Method()\n async doBlur(): Promise<void> {\n this.input.blur();\n }\n\n /**\n * Programmatically simulate a click on the input.\n */\n @Method()\n async doClick(): Promise<void> {\n this.input.click();\n }\n\n /**\n * Clear the input.\n */\n @Method()\n async clear(): Promise<void> {\n this.value = '';\n }\n\n render() {\n return (\n <Host>\n {(this.hasSlottedLabel || this.label) && (\n <label htmlFor={this.id} class={{ hidden: this.labelHidden }}>\n <span part=\"label\">\n {(this.hasSlottedLabel && <slot name=\"label\"></slot>) || this.label}\n {!this.required && (\n <span class=\"input-optional\" aria-hidden=\"true\">\n ({i18n.t('input.optional')})\n </span>\n )}\n </span>\n </label>\n )}\n <div\n class={{\n 'input-wrapper': true,\n 'input-round': this.round,\n 'input-disabled': this.disabled\n }}\n onClick={() => this.input.focus()}\n >\n {this.textPrefix && (\n <span class=\"text-prefix\" part=\"prefix\">\n {this.textPrefix}\n </span>\n )}\n {this.icon && !this.iconRight && <cat-icon icon={this.icon} class=\"icon-prefix\" size=\"l\"></cat-icon>}\n <div class=\"input-inner-wrapper\">\n <input\n ref={el => (this.input = el as HTMLInputElement)}\n id={this.id}\n class={{\n 'has-clearable': this.clearable && !this.disabled\n }}\n autocomplete={this.autoComplete}\n disabled={this.disabled}\n max={this.max}\n maxlength={this.maxLength}\n min={this.min}\n minlength={this.minLength}\n name={this.name}\n placeholder={this.placeholder}\n readonly={this.readonly}\n required={this.required}\n type={this.type}\n value={this.value}\n onInput={this.onInput.bind(this)}\n onFocus={this.onFocus.bind(this)}\n onBlur={this.onBlur.bind(this)}\n ></input>\n {this.clearable && !this.disabled && this.value && (\n <cat-button\n class=\"clearable\"\n icon=\"cross-circle-outlined\"\n icon-only=\"true\"\n size=\"s\"\n variant=\"text\"\n a11y-label={i18n.t('input.clear')}\n onClick={this.clear.bind(this)}\n ></cat-button>\n )}\n </div>\n {this.icon && this.iconRight && <cat-icon icon={this.icon} class=\"icon-suffix\" size=\"l\"></cat-icon>}\n {this.textSuffix && (\n <span class=\"text-suffix\" part=\"suffix\">\n {this.textSuffix}\n </span>\n )}\n </div>\n {this.hintSection}\n </Host>\n );\n }\n\n private get hintSection() {\n const hasSlottedHint = !!this.hostElement.querySelector('[slot=\"hint\"]');\n return (\n (this.hint || hasSlottedHint) && (\n <CatFormHint hint={this.hint} slottedHint={hasSlottedHint && <slot name=\"hint\"></slot>} />\n )\n );\n }\n\n private onInput(event: Event) {\n this.value = this.input.value;\n this.catChange.emit(event);\n }\n\n private onFocus(event: FocusEvent) {\n this.catFocus.emit(event);\n }\n\n private onBlur(event: FocusEvent) {\n this.catBlur.emit(event);\n }\n}\n"]}
1
+ {"version":3,"file":"cat-input.js","sourceRoot":"","sources":["../../../src/components/cat-input/cat-input.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Host, Method, Prop, State } from '@stencil/core';\nimport log from 'loglevel';\nimport { CatFormHint } from '../cat-form-hint/cat-form-hint';\nimport { catI18nRegistry as i18n } from '../cat-i18n/cat-i18n-registry';\nimport { InputType } from './input-type';\n\nlet nextUniqueId = 0;\n\n/**\n * Inputs are used to allow users to provide text input when the expected input\n * is short. As well as plain text, Input supports various types of text,\n * including passwords and numbers.\n *\n * @slot hint - Optional hint element to be displayed with the input.\n * @slot label - The slotted label. If both the label property and the label slot are present, only the label slot will be displayed.\n * @part label - The label content.\n * @part prefix - The text prefix.\n * @part suffix - The text suffix.\n */\n@Component({\n tag: 'cat-input',\n styleUrl: 'cat-input.scss',\n shadow: true\n})\nexport class CatInput {\n private readonly _id = `cat-input-${nextUniqueId++}`;\n private get id() {\n return this.identifier || this._id;\n }\n\n private input!: HTMLInputElement;\n\n @Element() hostElement!: HTMLElement;\n\n @State() hasSlottedLabel = false;\n\n /**\n * Whether the label need a marker to shown if the input is required or optional.\n */\n @Prop() requiredMarker: 'none' | 'required' | 'optional' | 'none!' | 'optional!' | 'required!' = 'optional';\n\n /**\n * Hint for form autofill feature.\n */\n @Prop() autoComplete?: string;\n\n /**\n * Whether the input should show a clear button.\n */\n @Prop() clearable = false;\n\n /**\n * Whether the input is disabled.\n */\n @Prop() disabled = false;\n\n /**\n * Optional hint text(s) to be displayed with the input.\n */\n @Prop() hint?: string | string[];\n\n /**\n * The name of an icon to be displayed in the input.\n */\n @Prop() icon?: string;\n\n /**\n * Display the icon on the right.\n */\n @Prop() iconRight = false;\n\n /**\n * A unique identifier for the input.\n */\n @Prop() identifier?: string;\n\n /**\n * The label for the input.\n */\n @Prop() label = '';\n\n /**\n * Visually hide the label, but still show it to assistive technologies like screen readers.\n */\n @Prop() labelHidden = false;\n\n /**\n * A maximum value for date, time and numeric values.\n */\n @Prop() max?: number | string;\n\n /**\n * A maximum length (number of characters) for textual values.\n */\n @Prop() maxLength?: number;\n\n /**\n * A minimum value for date, time and numeric values.\n */\n @Prop() min?: number | string;\n\n /**\n * A minimum length (number of characters) for textual values.\n */\n @Prop() minLength?: number;\n\n /**\n * The name of the form control. Submitted with the form as part of a name/value pair.\n */\n @Prop() name?: string;\n\n /**\n * The placeholder text to display within the input.\n */\n @Prop() placeholder?: string;\n\n /**\n * A textual prefix to be displayed in the input.\n */\n @Prop() textPrefix?: string;\n\n /**\n * A textual suffix to be displayed in the input.\n */\n @Prop() textSuffix?: string;\n\n /**\n * The value is not editable.\n */\n @Prop() readonly = false;\n\n /**\n * A value is required or must be check for the form to be submittable.\n */\n @Prop() required = false;\n\n /**\n * Use round input edges.\n */\n @Prop() round = false;\n\n /**\n * Type of form control.\n */\n @Prop() type: InputType = 'text';\n\n /**\n * The value of the control.\n */\n @Prop({ mutable: true }) value?: string | number;\n\n /**\n * Emitted when the value is changed.\n */\n @Event() catChange!: EventEmitter;\n\n /**\n * Emitted when the input received focus.\n */\n @Event() catFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the input loses focus.\n */\n @Event() catBlur!: EventEmitter<FocusEvent>;\n\n componentWillRender(): void {\n this.hasSlottedLabel = !!this.hostElement.querySelector('[slot=\"label\"]');\n if (!this.label && !this.hasSlottedLabel) {\n log.warn('[A11y] Missing ARIA label on input', this);\n }\n }\n\n /**\n * Programmatically move focus to the input. Use this method instead of\n * `input.focus()`.\n *\n * @param options An optional object providing options to control aspects of\n * the focusing process.\n */\n @Method()\n async doFocus(options?: FocusOptions): Promise<void> {\n this.input.focus(options);\n }\n\n /**\n * Programmatically remove focus from the input. Use this method instead of\n * `input.blur()`.\n */\n @Method()\n async doBlur(): Promise<void> {\n this.input.blur();\n }\n\n /**\n * Programmatically simulate a click on the input.\n */\n @Method()\n async doClick(): Promise<void> {\n this.input.click();\n }\n\n /**\n * Clear the input.\n */\n @Method()\n async clear(): Promise<void> {\n this.value = '';\n }\n\n render() {\n return (\n <Host>\n {(this.hasSlottedLabel || this.label) && (\n <label htmlFor={this.id} class={{ hidden: this.labelHidden }}>\n <span part=\"label\">\n {(this.hasSlottedLabel && <slot name=\"label\"></slot>) || this.label}\n {!this.required && this.requiredMarker.startsWith('optional') && (\n <span class=\"input-optional\" aria-hidden=\"true\">\n ({i18n.t('input.optional')})\n </span>\n )}\n {this.required && this.requiredMarker.startsWith('required') && (\n <span class=\"input-optional\" aria-hidden=\"true\">\n ({i18n.t('input.required')})\n </span>\n )}\n </span>\n </label>\n )}\n <div\n class={{\n 'input-wrapper': true,\n 'input-round': this.round,\n 'input-disabled': this.disabled\n }}\n onClick={() => this.input.focus()}\n >\n {this.textPrefix && (\n <span class=\"text-prefix\" part=\"prefix\">\n {this.textPrefix}\n </span>\n )}\n {this.icon && !this.iconRight && <cat-icon icon={this.icon} class=\"icon-prefix\" size=\"l\"></cat-icon>}\n <div class=\"input-inner-wrapper\">\n <input\n ref={el => (this.input = el as HTMLInputElement)}\n id={this.id}\n class={{\n 'has-clearable': this.clearable && !this.disabled\n }}\n autocomplete={this.autoComplete}\n disabled={this.disabled}\n max={this.max}\n maxlength={this.maxLength}\n min={this.min}\n minlength={this.minLength}\n name={this.name}\n placeholder={this.placeholder}\n readonly={this.readonly}\n required={this.required}\n type={this.type}\n value={this.value}\n onInput={this.onInput.bind(this)}\n onFocus={this.onFocus.bind(this)}\n onBlur={this.onBlur.bind(this)}\n ></input>\n {this.clearable && !this.disabled && this.value && (\n <cat-button\n class=\"clearable\"\n icon=\"cross-circle-outlined\"\n icon-only=\"true\"\n size=\"s\"\n variant=\"text\"\n a11y-label={i18n.t('input.clear')}\n onClick={this.clear.bind(this)}\n ></cat-button>\n )}\n </div>\n {this.icon && this.iconRight && <cat-icon icon={this.icon} class=\"icon-suffix\" size=\"l\"></cat-icon>}\n {this.textSuffix && (\n <span class=\"text-suffix\" part=\"suffix\">\n {this.textSuffix}\n </span>\n )}\n </div>\n {this.hintSection}\n </Host>\n );\n }\n\n private get hintSection() {\n const hasSlottedHint = !!this.hostElement.querySelector('[slot=\"hint\"]');\n return (\n (this.hint || hasSlottedHint) && (\n <CatFormHint hint={this.hint} slottedHint={hasSlottedHint && <slot name=\"hint\"></slot>} />\n )\n );\n }\n\n private onInput(event: Event) {\n this.value = this.input.value;\n this.catChange.emit(event);\n }\n\n private onFocus(event: FocusEvent) {\n this.catFocus.emit(event);\n }\n\n private onBlur(event: FocusEvent) {\n this.catBlur.emit(event);\n }\n}\n"]}
@@ -5,6 +5,10 @@ import { catI18nRegistry as i18n } from '../cat-i18n/cat-i18n-registry';
5
5
  */
6
6
  export class CatLabel {
7
7
  constructor() {
8
+ /**
9
+ * Whether the label need a marker to shown if the input is required or optional.
10
+ */
11
+ this.requiredMarker = 'optional';
8
12
  /**
9
13
  * A value is required or must be check for the form to be submittable.
10
14
  */
@@ -21,9 +25,13 @@ export class CatLabel {
21
25
  return (h(Host, null,
22
26
  h("label", { htmlFor: this.for, onClick: this.onClick.bind(this) },
23
27
  h("slot", null),
24
- !this.required && (h("span", { class: "input-optional", "aria-hidden": "true" },
28
+ !this.required && this.requiredMarker.startsWith('optional') && (h("span", { class: "input-optional", "aria-hidden": "true" },
25
29
  "(",
26
30
  i18n.t('input.optional'),
31
+ ")")),
32
+ this.required && this.requiredMarker.startsWith('required') && (h("span", { class: "input-optional", "aria-hidden": "true" },
33
+ "(",
34
+ i18n.t('input.required'),
27
35
  ")")))));
28
36
  }
29
37
  findShadowTarget(id) {
@@ -48,6 +56,24 @@ export class CatLabel {
48
56
  "$": ["cat-label.css"]
49
57
  }; }
50
58
  static get properties() { return {
59
+ "requiredMarker": {
60
+ "type": "string",
61
+ "mutable": false,
62
+ "complexType": {
63
+ "original": "'none' | 'required' | 'optional' | 'none!' | 'optional!' | 'required!'",
64
+ "resolved": "\"none!\" | \"none\" | \"optional!\" | \"optional\" | \"required!\" | \"required\"",
65
+ "references": {}
66
+ },
67
+ "required": false,
68
+ "optional": false,
69
+ "docs": {
70
+ "tags": [],
71
+ "text": "Whether the label need a marker to shown if the input is required or optional."
72
+ },
73
+ "attribute": "required-marker",
74
+ "reflect": false,
75
+ "defaultValue": "'optional'"
76
+ },
51
77
  "for": {
52
78
  "type": "string",
53
79
  "mutable": false,
@@ -1 +1 @@
1
- {"version":3,"file":"cat-label.js","sourceRoot":"","sources":["../../../src/components/cat-label/cat-label.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,eAAe,IAAI,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAExE;;GAEG;AAMH,MAAM,OAAO,QAAQ;EALrB;IAoBE;;OAEG;IACK,aAAQ,GAAG,KAAK,CAAC;GAoC1B;EAlCC,OAAO;;IACL,IAAI,IAAI,CAAC,GAAG,EAAE;MACZ,4DAA4D;MAC5D,MAAA,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,0CAAE,KAAK,EAAE,CAAC;KACjF;EACH,CAAC;EAED,MAAM;IACJ,OAAO,CACL,EAAC,IAAI;MACH,aAAO,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACxD,eAAa;QACZ,CAAC,IAAI,CAAC,QAAQ,IAAI,CACjB,YAAM,KAAK,EAAC,gBAAgB,iBAAa,MAAM;;UAC3C,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC;cACrB,CACR,CACK,CACH,CACR,CAAC;EACJ,CAAC;EAEO,gBAAgB,CAAC,EAAU;;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;MACxE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,MAAA,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,0CAAE,cAAc,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,MAAM,EAAE;UACV,OAAO,MAAM,CAAC;SACf;OACF;KACF;IACD,OAAO,IAAI,CAAC;EACd,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AApDuB,uBAAc,GAAG;EACvC,WAAW;EACX,cAAc;EACd,cAAc;EACd,YAAY;EACZ,WAAW;EACX,YAAY;CACZ,CAAA","sourcesContent":["import { Component, h, Host, Prop } from '@stencil/core';\nimport { catI18nRegistry as i18n } from '../cat-i18n/cat-i18n-registry';\n\n/**\n * Labels are used to provide a short description of an input or form element.\n */\n@Component({\n tag: 'cat-label',\n styleUrl: 'cat-label.scss',\n shadow: true\n})\nexport class CatLabel {\n private static readonly SHADOW_TARGETS = [\n 'CAT-INPUT',\n 'CAT-TEXTAREA',\n 'CAT-CHECKBOX',\n 'CAT-TOGGLE',\n 'CAT-RADIO',\n 'CAT-SELECT'\n ];\n\n /**\n * The unique identifier for a referenced input.\n */\n @Prop() for?: string;\n\n /**\n * A value is required or must be check for the form to be submittable.\n */\n @Prop() required = false;\n\n onClick() {\n if (this.for) {\n // focus target that is possibly hidden inside a shadow root\n (document.getElementById(this.for) || this.findShadowTarget(this.for))?.focus();\n }\n }\n\n render() {\n return (\n <Host>\n <label htmlFor={this.for} onClick={this.onClick.bind(this)}>\n <slot></slot>\n {!this.required && (\n <span class=\"input-optional\" aria-hidden=\"true\">\n ({i18n.t('input.optional')})\n </span>\n )}\n </label>\n </Host>\n );\n }\n\n private findShadowTarget(id: string): HTMLElement | null {\n for (let i = 0; i < CatLabel.SHADOW_TARGETS.length; i++) {\n const elems = document.getElementsByTagName(CatLabel.SHADOW_TARGETS[i]);\n for (let i = 0; i < elems.length; i++) {\n const target = elems[i].shadowRoot?.getElementById(id);\n if (target) {\n return target;\n }\n }\n }\n return null;\n }\n}\n"]}
1
+ {"version":3,"file":"cat-label.js","sourceRoot":"","sources":["../../../src/components/cat-label/cat-label.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,eAAe,IAAI,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAExE;;GAEG;AAMH,MAAM,OAAO,QAAQ;EALrB;IAeE;;OAEG;IACK,mBAAc,GAA2E,UAAU,CAAC;IAO5G;;OAEG;IACK,aAAQ,GAAG,KAAK,CAAC;GAyC1B;EAvCC,OAAO;;IACL,IAAI,IAAI,CAAC,GAAG,EAAE;MACZ,4DAA4D;MAC5D,MAAA,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,0CAAE,KAAK,EAAE,CAAC;KACjF;EACH,CAAC;EAED,MAAM;IACJ,OAAO,CACL,EAAC,IAAI;MACH,aAAO,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACxD,eAAa;QACZ,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAC/D,YAAM,KAAK,EAAC,gBAAgB,iBAAa,MAAM;;UAC3C,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC;cACrB,CACR;QACA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAC9D,YAAM,KAAK,EAAC,gBAAgB,iBAAa,MAAM;;UAC3C,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC;cACrB,CACR,CACK,CACH,CACR,CAAC;EACJ,CAAC;EAEO,gBAAgB,CAAC,EAAU;;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;MACxE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,MAAA,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,0CAAE,cAAc,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,MAAM,EAAE;UACV,OAAO,MAAM,CAAC;SACf;OACF;KACF;IACD,OAAO,IAAI,CAAC;EACd,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA9DuB,uBAAc,GAAG;EACvC,WAAW;EACX,cAAc;EACd,cAAc;EACd,YAAY;EACZ,WAAW;EACX,YAAY;CACZ,CAAA","sourcesContent":["import { Component, h, Host, Prop } from '@stencil/core';\nimport { catI18nRegistry as i18n } from '../cat-i18n/cat-i18n-registry';\n\n/**\n * Labels are used to provide a short description of an input or form element.\n */\n@Component({\n tag: 'cat-label',\n styleUrl: 'cat-label.scss',\n shadow: true\n})\nexport class CatLabel {\n private static readonly SHADOW_TARGETS = [\n 'CAT-INPUT',\n 'CAT-TEXTAREA',\n 'CAT-CHECKBOX',\n 'CAT-TOGGLE',\n 'CAT-RADIO',\n 'CAT-SELECT'\n ];\n\n /**\n * Whether the label need a marker to shown if the input is required or optional.\n */\n @Prop() requiredMarker: 'none' | 'required' | 'optional' | 'none!' | 'optional!' | 'required!' = 'optional';\n\n /**\n * The unique identifier for a referenced input.\n */\n @Prop() for?: string;\n\n /**\n * A value is required or must be check for the form to be submittable.\n */\n @Prop() required = false;\n\n onClick() {\n if (this.for) {\n // focus target that is possibly hidden inside a shadow root\n (document.getElementById(this.for) || this.findShadowTarget(this.for))?.focus();\n }\n }\n\n render() {\n return (\n <Host>\n <label htmlFor={this.for} onClick={this.onClick.bind(this)}>\n <slot></slot>\n {!this.required && this.requiredMarker.startsWith('optional') && (\n <span class=\"input-optional\" aria-hidden=\"true\">\n ({i18n.t('input.optional')})\n </span>\n )}\n {this.required && this.requiredMarker.startsWith('required') && (\n <span class=\"input-optional\" aria-hidden=\"true\">\n ({i18n.t('input.required')})\n </span>\n )}\n </label>\n </Host>\n );\n }\n\n private findShadowTarget(id: string): HTMLElement | null {\n for (let i = 0; i < CatLabel.SHADOW_TARGETS.length; i++) {\n const elems = document.getElementsByTagName(CatLabel.SHADOW_TARGETS[i]);\n for (let i = 0; i < elems.length; i++) {\n const target = elems[i].shadowRoot?.getElementById(id);\n if (target) {\n return target;\n }\n }\n }\n return null;\n }\n}\n"]}
@@ -33,6 +33,10 @@ export class CatSelect {
33
33
  this.valueChangedBySelection = false;
34
34
  this.state = INIT_STATE;
35
35
  this.hasSlottedLabel = false;
36
+ /**
37
+ * Whether the label need a marker to shown if the select is required or optional.
38
+ */
39
+ this.requiredMarker = 'optional';
36
40
  /**
37
41
  * Enable multiple selection.
38
42
  */
@@ -270,11 +274,15 @@ export class CatSelect {
270
274
  (this.hasSlottedLabel || this.label) && (h("label", { htmlFor: this.id, class: { hidden: this.labelHidden } },
271
275
  h("span", { part: "label" },
272
276
  (this.hasSlottedLabel && h("slot", { name: "label" })) || this.label,
273
- !this.required && (h("span", { class: "input-optional", "aria-hidden": "true" },
277
+ !this.required && this.requiredMarker.startsWith('optional') && (h("span", { class: "input-optional", "aria-hidden": "true" },
274
278
  "(",
275
279
  i18n.t('input.optional'),
280
+ ")")),
281
+ this.required && this.requiredMarker.startsWith('required') && (h("span", { class: "input-optional", "aria-hidden": "true" },
282
+ "(",
283
+ i18n.t('input.required'),
276
284
  ")"))))),
277
- h("div", { class: { 'select-wrapper': true, 'select-disabled': this.disabled }, ref: el => (this.trigger = el), id: this.id, role: "combobox", "aria-expanded": this.state.isOpen || this.isPillboxActive(), "aria-controls": this.isPillboxActive() ? `select-pillbox-${this.id}` : `select-listbox-${this.id}`, "aria-required": this.required, "aria-activedescendant": this.activeDescendant, onClick: e => this.onClick(e) },
285
+ h("div", { class: { 'select-wrapper': true, 'select-disabled': this.disabled }, ref: el => (this.trigger = el), id: this.id, role: "combobox", "aria-expanded": this.state.isOpen || this.isPillboxActive(), "aria-controls": this.isPillboxActive() ? `select-pillbox-${this.id}` : `select-listbox-${this.id}`, "aria-required": this.required ? 'true' : false, "aria-activedescendant": this.activeDescendant, onClick: e => this.onClick(e) },
278
286
  h("div", { class: "select-wrapper-inner" },
279
287
  this.multiple && this.state.selection.length ? (h("div", { id: `select-pillbox-${this.id}`, role: "listbox", "aria-orientation": "horizontal", class: "select-pills" }, this.state.selection.map((item, i) => (h("span", { class: {
280
288
  pill: true,
@@ -300,7 +308,7 @@ export class CatSelect {
300
308
  h("cat-skeleton", { variant: "body", lines: 1 }),
301
309
  h("cat-skeleton", { variant: "body", lines: 1 }))))
302
310
  : !this.state.options.length &&
303
- !this.tags && h("li", { class: "select-option-empty" }, i18n.t('select.empty'))))))));
311
+ !this.tags && (h("li", { class: "select-option-empty" }, this.noItems ? this.noItems : i18n.t('select.empty')))))))));
304
312
  }
305
313
  get optionsList() {
306
314
  return this.state.options.map((item, i) => {
@@ -628,6 +636,24 @@ export class CatSelect {
628
636
  "$": ["cat-select.css"]
629
637
  }; }
630
638
  static get properties() { return {
639
+ "requiredMarker": {
640
+ "type": "string",
641
+ "mutable": false,
642
+ "complexType": {
643
+ "original": "'none' | 'required' | 'optional' | 'none!' | 'optional!' | 'required!'",
644
+ "resolved": "\"none!\" | \"none\" | \"optional!\" | \"optional\" | \"required!\" | \"required\"",
645
+ "references": {}
646
+ },
647
+ "required": false,
648
+ "optional": false,
649
+ "docs": {
650
+ "tags": [],
651
+ "text": "Whether the label need a marker to shown if the select is required or optional."
652
+ },
653
+ "attribute": "required-marker",
654
+ "reflect": false,
655
+ "defaultValue": "'optional'"
656
+ },
631
657
  "multiple": {
632
658
  "type": "boolean",
633
659
  "mutable": false,
@@ -706,7 +732,7 @@ export class CatSelect {
706
732
  "optional": true,
707
733
  "docs": {
708
734
  "tags": [],
709
- "text": "The value of the select.\n\nThe value of the select depends on whether it is allowed to choose a single item or several items.\nWhen only one item can be selected, the value is the id of the item, in case several items can be selected, the value is an array of ids of the selected items.\n\nIn case the user can add new items to the select (tags activated), the value in the single select is an object (CatSelectTaggingValue) with the id of the item or the name of the created item,\nin the case of multiple select, it is an object (CatSelectMultipleTaggingValue) with the array of the ids of the items selected and the array of the names of the items created"
735
+ "text": "The value of the select. <br />\n<br />\nThe value of the select depends on whether it is allowed to choose a single item or several items. <br />\nWhen only one item can be selected, the value is the id of the item, in case several items can be selected, the value is an array of ids of the selected items. <br />\n<br />\nIn case the user can add new items to the select (tags activated), the value in the single select is an object (CatSelectTaggingValue) with the id of the item or the name of the created item,\nin the case of multiple select, it is an object (CatSelectMultipleTaggingValue) with the array of the ids of the items selected and the array of the names of the items created"
710
736
  },
711
737
  "attribute": "value",
712
738
  "reflect": false
@@ -903,6 +929,23 @@ export class CatSelect {
903
929
  },
904
930
  "attribute": "tag-hint",
905
931
  "reflect": false
932
+ },
933
+ "noItems": {
934
+ "type": "string",
935
+ "mutable": false,
936
+ "complexType": {
937
+ "original": "string",
938
+ "resolved": "string | undefined",
939
+ "references": {}
940
+ },
941
+ "required": false,
942
+ "optional": true,
943
+ "docs": {
944
+ "tags": [],
945
+ "text": "The text to display in the dropdown if no results are found."
946
+ },
947
+ "attribute": "no-items",
948
+ "reflect": false
906
949
  }
907
950
  }; }
908
951
  static get states() { return {
@@ -1 +1 @@
1
- {"version":3,"file":"cat-select.js","sourceRoot":"","sources":["../../../src/components/cat-select/cat-select.tsx"],"names":[],"mappings":"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","sourcesContent":["import { autoUpdate, computePosition, offset, Placement } from '@floating-ui/dom';\nimport { Component, Element, Event, EventEmitter, h, Host, Listen, Method, Prop, State, Watch } from '@stencil/core';\nimport autosizeInput from 'autosize-input';\nimport log from 'loglevel';\nimport {\n catchError,\n debounce,\n distinctUntilChanged,\n filter,\n first,\n Observable,\n of,\n scan,\n startWith,\n Subject,\n Subscription,\n switchMap,\n takeWhile,\n tap,\n timer\n} from 'rxjs';\nimport { CatFormHint } from '../cat-form-hint/cat-form-hint';\nimport { catI18nRegistry as i18n } from '../cat-i18n/cat-i18n-registry';\n\nexport interface Item {\n id: string;\n}\n\nexport interface Page<T> {\n content: T[];\n last: boolean;\n totalElements?: number;\n}\n\nexport interface RenderInfo {\n label: string;\n description?: string;\n avatar?: {\n src?: string;\n round?: boolean;\n };\n}\n\n/**\n * @property customId - Change the id of item for the given one.\n * @property resolve - Resolves the value of the select.\n * @property retrieve - Retrieves the options of the select.\n * @property render - Renders the items of the select.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface CatSelectConnector<T extends Item = any> {\n customId?: (item: T) => string;\n resolve: (ids: string[]) => Observable<T[]>;\n retrieve: (term: string, page: number) => Observable<Page<T>>;\n render: (item: T) => RenderInfo;\n}\n\nexport interface CatSelectState {\n term: string;\n isOpen: boolean;\n isLoading: boolean;\n isResolving: boolean;\n options: { item: Item; render: RenderInfo }[];\n selection: { item: Item; render: RenderInfo }[];\n activeOptionIndex: number;\n activeSelectionIndex: number;\n totalElements?: number;\n}\n\nexport interface CatSelectMultipleTaggingValue {\n ids: string[];\n tags: string[];\n}\n\nexport interface CatSelectTaggingValue {\n id: string;\n tag: string;\n}\n\nconst INIT_STATE: CatSelectState = {\n term: '',\n isOpen: false,\n isLoading: false,\n isResolving: false,\n options: [],\n selection: [],\n activeOptionIndex: -1,\n activeSelectionIndex: -1\n};\n\nlet nextUniqueId = 0;\n\n/**\n * Select lets user choose one option from an options' menu. Consider using\n * select when you have 6 or more options. Select component supports any content\n * type.\n *\n * @slot hint - Optional hint element to be displayed with the select.\n * @slot label - The slotted label. If both the label property and the label slot are present, only the label slot will be displayed.\n * @part label - The label content.\n */\n@Component({\n tag: 'cat-select',\n styleUrl: 'cat-select.scss',\n shadow: true\n})\nexport class CatSelect {\n private static readonly SKELETON_COUNT = 4;\n private static readonly DROPDOWN_OFFSET = 4;\n private readonly _id = `cat-input-${nextUniqueId++}`;\n private get id() {\n return this.identifier || this._id;\n }\n\n private dropdown?: HTMLElement;\n private trigger?: HTMLElement;\n private input?: HTMLInputElement;\n\n private subscription?: Subscription;\n private term$: Subject<string> = new Subject();\n private more$: Subject<void> = new Subject();\n private valueChangedBySelection = false;\n\n @Element() hostElement!: HTMLElement;\n\n @State() connector?: CatSelectConnector;\n\n @State() state: CatSelectState = INIT_STATE;\n\n @State() hasSlottedLabel = false;\n\n /**\n * Enable multiple selection.\n */\n @Prop() multiple = false;\n\n /**\n * The debounce time for the search.\n */\n @Prop() debounce = 250;\n\n /**\n * The placement of the select.\n */\n @Prop() placement: Placement = 'bottom-start';\n\n /**\n * The value of the select.\n *\n * The value of the select depends on whether it is allowed to choose a single item or several items.\n * When only one item can be selected, the value is the id of the item, in case several items can be selected, the value is an array of ids of the selected items.\n *\n * In case the user can add new items to the select (tags activated), the value in the single select is an object (CatSelectTaggingValue) with the id of the item or the name of the created item,\n * in the case of multiple select, it is an object (CatSelectMultipleTaggingValue) with the array of the ids of the items selected and the array of the names of the items created\n */\n @Prop({ mutable: true }) value?: string | string[] | CatSelectTaggingValue | CatSelectMultipleTaggingValue;\n\n /**\n * Whether the select is disabled.\n */\n @Prop() disabled = false;\n\n /**\n * The placeholder text to display within the select.\n */\n @Prop() placeholder?: string;\n\n /**\n * Optional hint text(s) to be displayed with the select.\n */\n @Prop() hint?: string | string[];\n\n /**\n * A unique identifier for the input.\n */\n @Prop() identifier?: string;\n\n /**\n * The label for the select.\n */\n @Prop() label = '';\n\n /**\n * The name of the form control. Submitted with the form as part of a name/value pair.\n */\n @Prop() name?: string;\n\n /**\n * Visually hide the label, but still show it to assistive technologies like screen readers.\n */\n @Prop() labelHidden = false;\n\n /**\n * A value is required or must be checked for the form to be submittable.\n */\n @Prop() required = false;\n\n /**\n * Whether the select should show a clear button.\n */\n @Prop() clearable = false;\n\n /**\n * Whether the select should add new items.\n */\n @Prop() tags = false;\n\n /**\n * Optional hint text to be displayed on the new item to be added.\n */\n @Prop() tagHint?: string;\n\n @Watch('connector')\n onConnectorChange(connector: CatSelectConnector) {\n this.reset(connector);\n this.resolve();\n }\n\n @Watch('value')\n onValueChange() {\n !this.valueChangedBySelection ? this.resolve() : (this.valueChangedBySelection = false);\n }\n\n @Watch('state')\n onStateChange(newState: CatSelectState, oldState: CatSelectState) {\n const changed = (key: keyof CatSelectState) => newState[key] !== oldState[key];\n if (changed('activeOptionIndex')) {\n if (this.state.activeOptionIndex >= 0) {\n const option = this.dropdown?.querySelector(`#select-${this.id}-option-${this.state.activeOptionIndex}`);\n option?.scrollIntoView({ block: 'nearest' });\n }\n }\n\n if (changed('selection')) {\n let newValue;\n if (!this.multiple && this.state.selection.length) {\n this.hide();\n }\n const idsSelected = this.state.selection.map(item => item.item.id);\n if (!this.tags) {\n if (this.multiple) {\n newValue = idsSelected;\n } else {\n newValue = idsSelected.length ? idsSelected[0] : '';\n }\n } else {\n const ids = idsSelected.filter(id => !id.startsWith(`select-${this.id}-tag`));\n const tags = this.state.selection\n .filter(item => item.item.id.startsWith(`select-${this.id}-tag`))\n .map(item => item.render.label);\n if (this.multiple) {\n newValue = { ids, tags };\n } else {\n newValue = { id: ids.length ? ids[0] : '', tag: tags.length ? tags[0] : '' };\n }\n }\n\n if (!oldState.isResolving) {\n this.valueChangedBySelection = true;\n this.value = newValue;\n }\n this.catChange.emit();\n }\n }\n\n /**\n * Emitted when the select dropdown is opened.\n */\n @Event() catOpen!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the select dropdown is closed.\n */\n @Event() catClose!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the value is changed.\n */\n @Event() catChange!: EventEmitter;\n\n /**\n * Emitted when the select loses the focus.\n */\n @Event() catBlur!: EventEmitter<FocusEvent>;\n\n componentDidLoad(): void {\n if (this.input) {\n autosizeInput(this.input);\n }\n if (this.trigger && this.dropdown) {\n autoUpdate(this.trigger, this.dropdown, () => this.update());\n }\n }\n\n componentWillRender(): void {\n this.hasSlottedLabel = !!this.hostElement.querySelector('[slot=\"label\"]');\n if (!this.label && !this.hasSlottedLabel) {\n log.warn('[A11y] Missing ARIA label on select', this);\n }\n }\n\n @Listen('blur')\n onBlur(event: FocusEvent): void {\n if (!this.multiple && this.state.activeOptionIndex >= 0) {\n if (this.tags && this.state.options[this.state.activeOptionIndex].item.id === `select-${this.id}-option-tag`) {\n this.createTag(this.state.term);\n } else {\n this.select(this.state.options[this.state.activeOptionIndex]);\n }\n }\n this.hide();\n this.patchState({ activeSelectionIndex: -1 });\n this.catBlur.emit(event);\n }\n\n @Listen('keydown')\n onKeyDown(event: KeyboardEvent): void {\n const isInputFocused = this.hostElement.shadowRoot?.activeElement === this.input;\n\n if (['ArrowDown', 'ArrowUp', 'ArrowLeft', 'ArrowRight'].includes(event.key)) {\n this.onArrowKeyDown(event);\n } else if (['Enter', ' '].includes(event.key) && isInputFocused) {\n if (\n this.tags &&\n this.state.activeOptionIndex === 0 &&\n this.state.options[0].item.id === `select-${this.id}-option-tag`\n ) {\n event.preventDefault();\n if (this.multiple) {\n this.toggleTag(this.state.options[0]);\n } else {\n this.createTag(this.state.options[0].render.label);\n }\n } else if (this.state.activeOptionIndex >= 0) {\n event.preventDefault();\n if (this.multiple) {\n this.toggle(this.state.options[this.state.activeOptionIndex]);\n } else {\n this.select(this.state.options[this.state.activeOptionIndex]);\n }\n } else if (this.tags && event.key === 'Enter' && this.state.activeOptionIndex < 0) {\n this.createTag(this.state.term);\n }\n } else if (event.key === 'Escape') {\n this.hide();\n } else if (event.key === 'Backspace' || event.key === 'Delete') {\n this.input?.focus();\n if (!this.multiple || !this.state.term || (this.input?.selectionStart === 0 && event.key === 'Backspace')) {\n if (this.state.activeSelectionIndex >= 0) {\n this.deselect(this.state.selection[this.state.activeSelectionIndex].item.id);\n } else if (this.state.selection.length) {\n const selectionClone = [...this.state.selection];\n selectionClone.pop();\n this.patchState({ selection: selectionClone });\n }\n }\n } else if (event.key === 'Tab') {\n this.trigger?.setAttribute('tabindex', '-1');\n if (this.multiple) {\n this.patchState({ activeSelectionIndex: -1, activeOptionIndex: -1 });\n } else if (this.state.activeOptionIndex >= 0) {\n if (this.tags && this.state.options[this.state.activeOptionIndex].item.id === `select-${this.id}-option-tag`) {\n this.createTag(this.state.term);\n } else {\n this.select(this.state.options[this.state.activeOptionIndex]);\n }\n }\n } else if (event.key.length === 1) {\n this.input?.focus();\n }\n }\n\n @Listen('keyup')\n onKeyUp(event: KeyboardEvent): void {\n if (event.key === 'Tab' && !event.shiftKey) {\n this.hostElement.shadowRoot?.activeElement === this.trigger && this.input?.focus();\n if (this.hostElement.shadowRoot?.activeElement === this.input) {\n this.show();\n }\n } else if (event.key === 'Tab' && event.shiftKey) {\n const clearButton = this.trigger?.querySelector(`#select-clear-btn-${this.id}`);\n\n if (clearButton) {\n this.hostElement.shadowRoot?.activeElement === clearButton && this.show();\n } else {\n this.show();\n }\n }\n }\n\n /**\n * Connect the functions of the select\n *\n * @param connector - The {@link CatSelectConnector} of the select.\n */\n @Method()\n async connect(connector: CatSelectConnector): Promise<void> {\n this.connector = connector;\n let number$: Observable<number>;\n this.subscription?.unsubscribe();\n this.subscription = this.term$\n .asObservable()\n .pipe(\n debounce(term => (term ? timer(this.debounce) : of(0))),\n distinctUntilChanged(),\n tap(\n () =>\n (number$ = this.more$.pipe(\n filter(() => !this.state.isLoading),\n scan(n => n + 1, 0),\n startWith(0)\n ))\n ),\n tap(() => this.patchState({ options: [] })),\n switchMap(term =>\n number$.pipe(\n tap(() => this.patchState({ isLoading: true })),\n switchMap(number => this.connectorSafe.retrieve(term, number)),\n tap(page => this.patchState({ isLoading: false, totalElements: page.totalElements })),\n takeWhile(page => !page.last, true),\n scan((items, page) => [...items, ...page.content], [] as Item[])\n )\n )\n )\n .subscribe(items => {\n const options = this.toSelectItems(items);\n\n if (\n this.tags &&\n this.state.term.trim().length &&\n !options.find(value1 => value1.render.label.toLowerCase() === this.state.term.toLowerCase())\n ) {\n let label;\n if (this.isTagSelected(this.state.term)) {\n label = this.state.selection.find(item => item.render.label.toLowerCase() === this.state.term.toLowerCase())\n ?.render.label;\n }\n options.unshift({\n item: { id: `select-${this.id}-option-tag` },\n render: { label: label ? label : this.state.term }\n });\n }\n this.patchState({\n options\n });\n });\n }\n\n render() {\n return (\n <Host>\n {(this.hasSlottedLabel || this.label) && (\n <label htmlFor={this.id} class={{ hidden: this.labelHidden }}>\n <span part=\"label\">\n {(this.hasSlottedLabel && <slot name=\"label\"></slot>) || this.label}\n {!this.required && (\n <span class=\"input-optional\" aria-hidden=\"true\">\n ({i18n.t('input.optional')})\n </span>\n )}\n </span>\n </label>\n )}\n <div\n class={{ 'select-wrapper': true, 'select-disabled': this.disabled }}\n ref={el => (this.trigger = el)}\n id={this.id}\n role=\"combobox\"\n aria-expanded={this.state.isOpen || this.isPillboxActive()}\n aria-controls={this.isPillboxActive() ? `select-pillbox-${this.id}` : `select-listbox-${this.id}`}\n aria-required={this.required}\n aria-activedescendant={this.activeDescendant}\n onClick={e => this.onClick(e)}\n >\n <div class=\"select-wrapper-inner\">\n {this.multiple && this.state.selection.length ? (\n <div id={`select-pillbox-${this.id}`} role=\"listbox\" aria-orientation=\"horizontal\" class=\"select-pills\">\n {this.state.selection.map((item, i) => (\n <span\n class={{\n pill: true,\n 'select-no-open': true,\n 'select-option-active': this.state.activeSelectionIndex === i\n }}\n role=\"option\"\n aria-selected=\"true\"\n id={`select-${this.id}-selection-${i}`}\n >\n {item.render.avatar ? (\n <cat-avatar\n label={item.render.label}\n round={item.render.avatar.round}\n src={item.render.avatar.src}\n initials={''}\n ></cat-avatar>\n ) : null}\n <span>{item.render.label}</span>\n {!this.disabled && (\n <cat-button\n size=\"xs\"\n variant=\"text\"\n icon=\"16-cross\"\n iconOnly\n a11yLabel={i18n.t('select.deselect')}\n onClick={() => this.deselect(item.item.id)}\n tabIndex={-1}\n ></cat-button>\n )}\n </span>\n ))}\n </div>\n ) : this.state.selection.length && this.state.selection[0].render.avatar ? (\n <cat-avatar\n label={this.state.selection[0].render.label}\n round={this.state.selection[0].render.avatar.round}\n src={this.state.selection[0].render.avatar.src}\n initials={''}\n ></cat-avatar>\n ) : null}\n <input\n class=\"select-input\"\n ref={el => (this.input = el)}\n aria-controls={this.isPillboxActive() ? `select-pillbox-${this.id}` : `select-listbox-${this.id}`}\n aria-activedescendant={this.activeDescendant}\n onInput={() => this.onInput()}\n value={!this.multiple ? this.state.term : undefined}\n placeholder={this.placeholder}\n disabled={this.disabled || this.state.isResolving}\n ></input>\n </div>\n {this.state.isResolving && <cat-spinner></cat-spinner>}\n {(this.state.selection.length || this.state.term.length) &&\n !this.disabled &&\n !this.state.isResolving &&\n this.clearable ? (\n <cat-button\n id={`select-clear-btn-${this.id}`}\n iconOnly\n icon=\"cross-circle-outlined\"\n variant=\"text\"\n size=\"s\"\n a11yLabel={i18n.t('input.clear')}\n onClick={() => this.clear()}\n ></cat-button>\n ) : null}\n {!this.state.isResolving && (\n <cat-button\n iconOnly\n icon=\"chevron-down-outlined\"\n class={{ 'select-btn': true, 'select-btn-open': this.state.isOpen }}\n variant=\"text\"\n size=\"s\"\n a11yLabel={this.state.isOpen ? i18n.t('select.close') : i18n.t('select.open')}\n aria-controls={`select-listbox-${this.id}`}\n aria-expanded={this.state.isOpen}\n tabIndex={-1}\n disabled={this.disabled || this.state.isResolving}\n ></cat-button>\n )}\n </div>\n {this.hintSection}\n <div\n class=\"select-dropdown\"\n ref={el => (this.dropdown = el)}\n style={{ display: this.state.isOpen ? 'block' : undefined }}\n >\n {this.state.isOpen && (\n <cat-scrollable\n class=\"select-options-wrapper\"\n scrolledBuffer={56}\n noOverflowX\n noOverscroll\n noScrolledInit\n onScrolledBottom={() => this.more$.next()}\n >\n <ul\n class=\"select-options\"\n role=\"listbox\"\n aria-multiselectable={this.multiple}\n aria-setsize={this.state.totalElements}\n id={`select-listbox-${this.id}`}\n >\n {this.optionsList}\n {this.state.isLoading\n ? Array.from(Array(CatSelect.SKELETON_COUNT)).map(() => (\n <li class=\"select-option-loading\">\n <cat-skeleton variant=\"body\" lines={1}></cat-skeleton>\n <cat-skeleton variant=\"body\" lines={1}></cat-skeleton>\n </li>\n ))\n : !this.state.options.length &&\n !this.tags && <li class=\"select-option-empty\">{i18n.t('select.empty')}</li>}\n </ul>\n </cat-scrollable>\n )}\n </div>\n </Host>\n );\n }\n\n private get optionsList() {\n return this.state.options.map((item, i) => {\n const isTagOption = this.tags && item.item.id === `select-${this.id}-option-tag`;\n\n const isOptionSelected = this.isSelected(item.item.id) || (this.tags && this.isTagSelected(item.render.label));\n\n const getLabel = () => {\n if (isTagOption) {\n return item.render.label + this.tagTextHelp;\n }\n return item.render.label;\n };\n\n return (\n <li\n role=\"option\"\n class=\"select-option\"\n id={`select-${this.id}-option-${i}`}\n aria-selected={isOptionSelected ? 'true' : 'false'}\n >\n {this.multiple ? (\n <cat-checkbox\n class={{ 'select-option-active': this.state.activeOptionIndex === i }}\n checked={isOptionSelected}\n tabIndex={-1}\n labelLeft\n onFocus={() => this.input?.focus()}\n onCatChange={e => {\n !isTagOption ? this.toggle(item) : this.toggleTag(item);\n e.stopPropagation();\n }}\n >\n <span slot=\"label\" class=\"select-option-inner\">\n {item.render.avatar ? (\n <cat-avatar\n label={item.render.label}\n round={item.render.avatar.round}\n src={item.render.avatar.src}\n initials={''}\n ></cat-avatar>\n ) : null}\n <span class=\"select-option-text\">\n <span class=\"select-option-label\">{getLabel()}</span>\n <span class=\"select-option-description\">{item.render.description}</span>\n </span>\n </span>\n </cat-checkbox>\n ) : (\n <div\n class={{\n 'select-option-inner': true,\n 'select-option-single': true,\n 'select-option-active': this.state.activeOptionIndex === i\n }}\n onFocus={() => this.input?.focus()}\n onClick={() => (isTagOption ? this.createTag(item.render.label) : this.select(item))}\n tabIndex={-1}\n >\n {item.render.avatar ? (\n <cat-avatar\n label={item.render.label}\n round={item.render.avatar.round}\n src={item.render.avatar.src}\n initials={''}\n ></cat-avatar>\n ) : null}\n <span class=\"select-option-text\">\n <span class=\"select-option-label\">{getLabel()}</span>\n <span class=\"select-option-description\">{item.render.description}</span>\n </span>\n </div>\n )}\n </li>\n );\n });\n }\n\n private get hintSection() {\n const hasSlottedHint = !!this.hostElement.querySelector('[slot=\"hint\"]');\n return (\n (this.hint || hasSlottedHint) && (\n <CatFormHint hint={this.hint} slottedHint={hasSlottedHint && <slot name=\"hint\"></slot>} />\n )\n );\n }\n\n private get connectorSafe(): CatSelectConnector {\n if (this.connector) {\n return this.connector;\n }\n throw new Error('CatSelectConnector not set');\n }\n\n private resolve() {\n this.patchState({ isResolving: true });\n\n const ids = this.initIds();\n let tags: string[];\n\n if (this.tags) {\n tags = this.initTags();\n }\n\n const data$ = ids.length ? this.connectorSafe.resolve(ids).pipe(first()) : of([]);\n data$.pipe(catchError(() => of([]))).subscribe(items => {\n const selection = items.length ? this.toSelectItems(items) : [];\n if (this.tags) {\n tags\n ?.filter(tag => !this.isTagSelected(tag, selection))\n .forEach((tag, index) => {\n const item = { id: `select-${this.id}-tag-${index}`, name: tag };\n selection.push({ item, render: { label: item.name } });\n });\n }\n this.patchState({\n isResolving: false,\n selection,\n term: !this.multiple && selection.length ? selection[0].render.label : ''\n });\n });\n }\n\n private toSelectItems(items: Item[]) {\n return items?.map(item => ({\n item: { ...item, id: this.connectorSafe.customId ? this.connectorSafe.customId(item) : item.id },\n render: this.connectorSafe.render(item)\n }));\n }\n\n private show() {\n if (!this.state.isOpen) {\n this.patchState({ isOpen: true });\n this.catOpen.emit();\n this.term$.next(this.state.term);\n this.input?.classList.remove('select-input-transparent-caret');\n }\n }\n\n private hide() {\n if (this.state.isOpen) {\n this.patchState({ isOpen: false, activeOptionIndex: -1 });\n this.catClose.emit();\n }\n }\n\n private search(term: string) {\n this.patchState({ term, activeOptionIndex: -1, activeSelectionIndex: -1 });\n this.term$.next(term);\n }\n\n private isSelected(id: string) {\n return this.state.selection.findIndex(s => s.item.id === id) >= 0;\n }\n\n private select(item: { item: Item; render: RenderInfo }) {\n if (!this.isSelected(item.item.id)) {\n let newSelection;\n if (this.multiple) {\n newSelection = [...this.state.selection, item];\n } else {\n newSelection = [item];\n this.search(item.render.label);\n }\n this.patchState({ selection: newSelection });\n\n if (this.multiple && this.state.term.trim() && this.input) {\n this.patchState({ term: '', activeOptionIndex: -1 });\n this.term$.next('');\n this.input.value = '';\n }\n }\n this.setTransparentCaret();\n }\n\n private deselect(id: string) {\n if (this.isSelected(id)) {\n this.patchState({\n selection: this.state.selection.filter(item => item.item.id !== id),\n activeSelectionIndex: -1\n });\n }\n }\n\n private toggle(item: { item: Item; render: RenderInfo }) {\n this.isSelected(item.item.id)\n ? this.deselect(item.item.id)\n : this.tags && this.isTagSelected(item.render.label)\n ? this.removeTag(item.render.label)\n : this.select(item);\n }\n\n private clear() {\n if (this.input && this.state.term) {\n this.patchState({ selection: [], options: [], term: '', activeOptionIndex: -1 });\n this.term$.next('');\n this.input.value = '';\n } else {\n this.patchState({ selection: [] });\n }\n }\n\n private reset(connector?: CatSelectConnector) {\n this.connector = connector ?? this.connector;\n this.subscription?.unsubscribe();\n this.subscription = undefined;\n this.state = INIT_STATE;\n }\n\n private onClick(event: MouseEvent) {\n if (this.disabled) {\n return;\n }\n const elem = event.target as Element;\n this.trigger?.setAttribute('tabindex', '0');\n this.input?.focus();\n if (\n elem === this.trigger ||\n elem === this.input ||\n elem.classList.contains('select-btn') ||\n elem.nodeName === 'SPAN'\n ) {\n this.state.isOpen ? this.hide() : this.show();\n }\n }\n\n private onInput() {\n this.search(this.input?.value.trim() || '');\n if (!this.multiple && this.state.selection.length) {\n const selectionClone = [...this.state.selection];\n selectionClone.pop();\n this.patchState({ selection: selectionClone });\n }\n this.show();\n }\n\n private update() {\n if (this.trigger && this.dropdown) {\n computePosition(this.trigger, this.dropdown, {\n placement: this.placement,\n middleware: [offset(CatSelect.DROPDOWN_OFFSET)]\n }).then(({ x, y }) => {\n if (this.dropdown) {\n Object.assign(this.dropdown.style, {\n left: `${x}px`,\n top: `${y}px`\n });\n }\n });\n }\n }\n\n private patchState(update: Partial<CatSelectState>) {\n this.state = { ...this.state, ...update };\n }\n\n private isPillboxActive() {\n return this.state.activeSelectionIndex >= 0;\n }\n\n private get activeDescendant() {\n let activeDescendant = undefined;\n if (this.state.activeOptionIndex >= 0) {\n activeDescendant = `select-${this.id}-option-${this.state.activeOptionIndex}`;\n } else if (this.state.activeSelectionIndex >= 0) {\n activeDescendant = `select-${this.id}-selection-${this.state.activeSelectionIndex}`;\n }\n return activeDescendant;\n }\n\n private onArrowKeyDown(event: KeyboardEvent) {\n let preventDefault = false;\n this.input?.focus();\n\n switch (event.key) {\n case 'ArrowDown':\n preventDefault = true;\n this.state.isOpen\n ? this.patchState({\n activeOptionIndex: Math.min(this.state.activeOptionIndex + 1, this.state.options.length - 1),\n activeSelectionIndex: -1\n })\n : this.show();\n break;\n case 'ArrowUp':\n preventDefault = true;\n this.state.activeOptionIndex >= 0\n ? this.patchState({\n activeOptionIndex: Math.max(this.state.activeOptionIndex - 1, -1),\n activeSelectionIndex: -1\n })\n : this.hide();\n break;\n case 'ArrowLeft':\n if (this.input?.selectionStart === 0) {\n preventDefault = true;\n let index;\n this.state.activeSelectionIndex > 0\n ? (index = Math.max(this.state.activeSelectionIndex - 1, -1))\n : (index = this.state.selection.length - 1);\n this.patchState({ activeSelectionIndex: index, activeOptionIndex: -1 });\n }\n break;\n case 'ArrowRight':\n if (this.state.activeSelectionIndex >= 0) {\n preventDefault = true;\n let index = -1;\n if (this.state.activeSelectionIndex < this.state.selection.length - 1) {\n index = Math.min(this.state.activeSelectionIndex + 1, this.state.selection.length - 1);\n } else if (!this.state.term) {\n index = 0;\n }\n this.patchState({ activeSelectionIndex: index, activeOptionIndex: -1 });\n }\n }\n\n if (preventDefault) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n private get tagTextHelp() {\n return this.tagHint && !this.isTagSelected(this.state.term) ? ' (' + this.tagHint + ')' : '';\n }\n\n private isTagSelected(term: string, selection: { item: Item; render: RenderInfo }[] = this.state.selection) {\n return selection.findIndex(item => item.render.label.toLowerCase() === term.toLowerCase()) >= 0;\n }\n\n private createTag(term: string) {\n if (term.trim().length && !this.isTagSelected(term)) {\n const value = this.value as CatSelectMultipleTaggingValue;\n const tags = value?.tags;\n const tag = { id: `select-${this.id}-tag-${tags ? tags.length : 0}`, name: term };\n this.select({ item: tag, render: { label: tag.name } });\n }\n this.setTransparentCaret();\n }\n\n private removeTag(label: string) {\n if (this.isTagSelected(label)) {\n const item = this.state.selection.find(item => item.render.label.toLowerCase() === label.toLowerCase());\n item && this.deselect(item.item.id);\n }\n }\n\n private toggleTag(item: { item: Item; render: RenderInfo }) {\n this.isTagSelected(item.render.label) ? this.removeTag(item.render.label) : this.createTag(item.render.label);\n }\n\n private initIds() {\n let ids: string[] = [];\n if (this.value) {\n if (!this.tags) {\n if (this.multiple) {\n ids = this.value as string[];\n } else {\n ids = [this.value as string];\n }\n } else {\n if (this.multiple) {\n const value = this.value as CatSelectMultipleTaggingValue;\n ids = value.ids ? value.ids : [];\n } else {\n const value = this.value as CatSelectTaggingValue;\n ids = value.id ? [value.id] : [];\n }\n }\n }\n return ids;\n }\n\n private initTags() {\n let tags: string[] = [];\n if (this.value) {\n if (this.multiple) {\n const value = this.value as CatSelectMultipleTaggingValue;\n tags = value.tags ? value.tags : [];\n } else {\n const value = this.value as CatSelectTaggingValue;\n tags = value.tag ? [value.tag] : [];\n }\n }\n return tags;\n }\n\n private setTransparentCaret() {\n if (!this.multiple) {\n this.hide();\n this.input?.classList.add('select-input-transparent-caret');\n }\n }\n}\n"]}
1
+ {"version":3,"file":"cat-select.js","sourceRoot":"","sources":["../../../src/components/cat-select/cat-select.tsx"],"names":[],"mappings":"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","sourcesContent":["import { autoUpdate, computePosition, offset, Placement } from '@floating-ui/dom';\nimport { Component, Element, Event, EventEmitter, h, Host, Listen, Method, Prop, State, Watch } from '@stencil/core';\nimport autosizeInput from 'autosize-input';\nimport log from 'loglevel';\nimport {\n catchError,\n debounce,\n distinctUntilChanged,\n filter,\n first,\n Observable,\n of,\n scan,\n startWith,\n Subject,\n Subscription,\n switchMap,\n takeWhile,\n tap,\n timer\n} from 'rxjs';\nimport { CatFormHint } from '../cat-form-hint/cat-form-hint';\nimport { catI18nRegistry as i18n } from '../cat-i18n/cat-i18n-registry';\n\nexport interface Item {\n id: string;\n}\n\nexport interface Page<T> {\n content: T[];\n last: boolean;\n totalElements?: number;\n}\n\nexport interface RenderInfo {\n label: string;\n description?: string;\n avatar?: {\n src?: string;\n round?: boolean;\n };\n}\n\n/**\n * @property customId - Change the id of item for the given one.\n * @property resolve - Resolves the value of the select.\n * @property retrieve - Retrieves the options of the select.\n * @property render - Renders the items of the select.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface CatSelectConnector<T extends Item = any> {\n customId?: (item: T) => string;\n resolve: (ids: string[]) => Observable<T[]>;\n retrieve: (term: string, page: number) => Observable<Page<T>>;\n render: (item: T) => RenderInfo;\n}\n\nexport interface CatSelectState {\n term: string;\n isOpen: boolean;\n isLoading: boolean;\n isResolving: boolean;\n options: { item: Item; render: RenderInfo }[];\n selection: { item: Item; render: RenderInfo }[];\n activeOptionIndex: number;\n activeSelectionIndex: number;\n totalElements?: number;\n}\n\nexport interface CatSelectMultipleTaggingValue {\n ids: string[];\n tags: string[];\n}\n\nexport interface CatSelectTaggingValue {\n id: string;\n tag: string;\n}\n\nconst INIT_STATE: CatSelectState = {\n term: '',\n isOpen: false,\n isLoading: false,\n isResolving: false,\n options: [],\n selection: [],\n activeOptionIndex: -1,\n activeSelectionIndex: -1\n};\n\nlet nextUniqueId = 0;\n\n/**\n * Select lets user choose one option from an options' menu. Consider using\n * select when you have 6 or more options. Select component supports any content\n * type.\n *\n * @slot hint - Optional hint element to be displayed with the select.\n * @slot label - The slotted label. If both the label property and the label slot are present, only the label slot will be displayed.\n * @part label - The label content.\n */\n@Component({\n tag: 'cat-select',\n styleUrl: 'cat-select.scss',\n shadow: true\n})\nexport class CatSelect {\n private static readonly SKELETON_COUNT = 4;\n private static readonly DROPDOWN_OFFSET = 4;\n private readonly _id = `cat-input-${nextUniqueId++}`;\n private get id() {\n return this.identifier || this._id;\n }\n\n private dropdown?: HTMLElement;\n private trigger?: HTMLElement;\n private input?: HTMLInputElement;\n\n private subscription?: Subscription;\n private term$: Subject<string> = new Subject();\n private more$: Subject<void> = new Subject();\n private valueChangedBySelection = false;\n\n @Element() hostElement!: HTMLElement;\n\n @State() connector?: CatSelectConnector;\n\n @State() state: CatSelectState = INIT_STATE;\n\n @State() hasSlottedLabel = false;\n\n /**\n * Whether the label need a marker to shown if the select is required or optional.\n */\n @Prop() requiredMarker: 'none' | 'required' | 'optional' | 'none!' | 'optional!' | 'required!' = 'optional';\n\n /**\n * Enable multiple selection.\n */\n @Prop() multiple = false;\n\n /**\n * The debounce time for the search.\n */\n @Prop() debounce = 250;\n\n /**\n * The placement of the select.\n */\n @Prop() placement: Placement = 'bottom-start';\n\n /**\n * The value of the select. <br />\n * <br />\n * The value of the select depends on whether it is allowed to choose a single item or several items. <br />\n * When only one item can be selected, the value is the id of the item, in case several items can be selected, the value is an array of ids of the selected items. <br />\n * <br />\n * In case the user can add new items to the select (tags activated), the value in the single select is an object (CatSelectTaggingValue) with the id of the item or the name of the created item,\n * in the case of multiple select, it is an object (CatSelectMultipleTaggingValue) with the array of the ids of the items selected and the array of the names of the items created\n */\n @Prop({ mutable: true }) value?: string | string[] | CatSelectTaggingValue | CatSelectMultipleTaggingValue;\n\n /**\n * Whether the select is disabled.\n */\n @Prop() disabled = false;\n\n /**\n * The placeholder text to display within the select.\n */\n @Prop() placeholder?: string;\n\n /**\n * Optional hint text(s) to be displayed with the select.\n */\n @Prop() hint?: string | string[];\n\n /**\n * A unique identifier for the input.\n */\n @Prop() identifier?: string;\n\n /**\n * The label for the select.\n */\n @Prop() label = '';\n\n /**\n * The name of the form control. Submitted with the form as part of a name/value pair.\n */\n @Prop() name?: string;\n\n /**\n * Visually hide the label, but still show it to assistive technologies like screen readers.\n */\n @Prop() labelHidden = false;\n\n /**\n * A value is required or must be checked for the form to be submittable.\n */\n @Prop() required = false;\n\n /**\n * Whether the select should show a clear button.\n */\n @Prop() clearable = false;\n\n /**\n * Whether the select should add new items.\n */\n @Prop() tags = false;\n\n /**\n * Optional hint text to be displayed on the new item to be added.\n */\n @Prop() tagHint?: string;\n\n /**\n * The text to display in the dropdown if no results are found.\n */\n @Prop() noItems?: string;\n\n @Watch('connector')\n onConnectorChange(connector: CatSelectConnector) {\n this.reset(connector);\n this.resolve();\n }\n\n @Watch('value')\n onValueChange() {\n !this.valueChangedBySelection ? this.resolve() : (this.valueChangedBySelection = false);\n }\n\n @Watch('state')\n onStateChange(newState: CatSelectState, oldState: CatSelectState) {\n const changed = (key: keyof CatSelectState) => newState[key] !== oldState[key];\n if (changed('activeOptionIndex')) {\n if (this.state.activeOptionIndex >= 0) {\n const option = this.dropdown?.querySelector(`#select-${this.id}-option-${this.state.activeOptionIndex}`);\n option?.scrollIntoView({ block: 'nearest' });\n }\n }\n\n if (changed('selection')) {\n let newValue;\n if (!this.multiple && this.state.selection.length) {\n this.hide();\n }\n const idsSelected = this.state.selection.map(item => item.item.id);\n if (!this.tags) {\n if (this.multiple) {\n newValue = idsSelected;\n } else {\n newValue = idsSelected.length ? idsSelected[0] : '';\n }\n } else {\n const ids = idsSelected.filter(id => !id.startsWith(`select-${this.id}-tag`));\n const tags = this.state.selection\n .filter(item => item.item.id.startsWith(`select-${this.id}-tag`))\n .map(item => item.render.label);\n if (this.multiple) {\n newValue = { ids, tags };\n } else {\n newValue = { id: ids.length ? ids[0] : '', tag: tags.length ? tags[0] : '' };\n }\n }\n\n if (!oldState.isResolving) {\n this.valueChangedBySelection = true;\n this.value = newValue;\n }\n this.catChange.emit();\n }\n }\n\n /**\n * Emitted when the select dropdown is opened.\n */\n @Event() catOpen!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the select dropdown is closed.\n */\n @Event() catClose!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the value is changed.\n */\n @Event() catChange!: EventEmitter;\n\n /**\n * Emitted when the select loses the focus.\n */\n @Event() catBlur!: EventEmitter<FocusEvent>;\n\n componentDidLoad(): void {\n if (this.input) {\n autosizeInput(this.input);\n }\n if (this.trigger && this.dropdown) {\n autoUpdate(this.trigger, this.dropdown, () => this.update());\n }\n }\n\n componentWillRender(): void {\n this.hasSlottedLabel = !!this.hostElement.querySelector('[slot=\"label\"]');\n if (!this.label && !this.hasSlottedLabel) {\n log.warn('[A11y] Missing ARIA label on select', this);\n }\n }\n\n @Listen('blur')\n onBlur(event: FocusEvent): void {\n if (!this.multiple && this.state.activeOptionIndex >= 0) {\n if (this.tags && this.state.options[this.state.activeOptionIndex].item.id === `select-${this.id}-option-tag`) {\n this.createTag(this.state.term);\n } else {\n this.select(this.state.options[this.state.activeOptionIndex]);\n }\n }\n this.hide();\n this.patchState({ activeSelectionIndex: -1 });\n this.catBlur.emit(event);\n }\n\n @Listen('keydown')\n onKeyDown(event: KeyboardEvent): void {\n const isInputFocused = this.hostElement.shadowRoot?.activeElement === this.input;\n\n if (['ArrowDown', 'ArrowUp', 'ArrowLeft', 'ArrowRight'].includes(event.key)) {\n this.onArrowKeyDown(event);\n } else if (['Enter', ' '].includes(event.key) && isInputFocused) {\n if (\n this.tags &&\n this.state.activeOptionIndex === 0 &&\n this.state.options[0].item.id === `select-${this.id}-option-tag`\n ) {\n event.preventDefault();\n if (this.multiple) {\n this.toggleTag(this.state.options[0]);\n } else {\n this.createTag(this.state.options[0].render.label);\n }\n } else if (this.state.activeOptionIndex >= 0) {\n event.preventDefault();\n if (this.multiple) {\n this.toggle(this.state.options[this.state.activeOptionIndex]);\n } else {\n this.select(this.state.options[this.state.activeOptionIndex]);\n }\n } else if (this.tags && event.key === 'Enter' && this.state.activeOptionIndex < 0) {\n this.createTag(this.state.term);\n }\n } else if (event.key === 'Escape') {\n this.hide();\n } else if (event.key === 'Backspace' || event.key === 'Delete') {\n this.input?.focus();\n if (!this.multiple || !this.state.term || (this.input?.selectionStart === 0 && event.key === 'Backspace')) {\n if (this.state.activeSelectionIndex >= 0) {\n this.deselect(this.state.selection[this.state.activeSelectionIndex].item.id);\n } else if (this.state.selection.length) {\n const selectionClone = [...this.state.selection];\n selectionClone.pop();\n this.patchState({ selection: selectionClone });\n }\n }\n } else if (event.key === 'Tab') {\n this.trigger?.setAttribute('tabindex', '-1');\n if (this.multiple) {\n this.patchState({ activeSelectionIndex: -1, activeOptionIndex: -1 });\n } else if (this.state.activeOptionIndex >= 0) {\n if (this.tags && this.state.options[this.state.activeOptionIndex].item.id === `select-${this.id}-option-tag`) {\n this.createTag(this.state.term);\n } else {\n this.select(this.state.options[this.state.activeOptionIndex]);\n }\n }\n } else if (event.key.length === 1) {\n this.input?.focus();\n }\n }\n\n @Listen('keyup')\n onKeyUp(event: KeyboardEvent): void {\n if (event.key === 'Tab' && !event.shiftKey) {\n this.hostElement.shadowRoot?.activeElement === this.trigger && this.input?.focus();\n if (this.hostElement.shadowRoot?.activeElement === this.input) {\n this.show();\n }\n } else if (event.key === 'Tab' && event.shiftKey) {\n const clearButton = this.trigger?.querySelector(`#select-clear-btn-${this.id}`);\n\n if (clearButton) {\n this.hostElement.shadowRoot?.activeElement === clearButton && this.show();\n } else {\n this.show();\n }\n }\n }\n\n /**\n * Connect the functions of the select\n *\n * @param connector - The {@link CatSelectConnector} of the select.\n */\n @Method()\n async connect(connector: CatSelectConnector): Promise<void> {\n this.connector = connector;\n let number$: Observable<number>;\n this.subscription?.unsubscribe();\n this.subscription = this.term$\n .asObservable()\n .pipe(\n debounce(term => (term ? timer(this.debounce) : of(0))),\n distinctUntilChanged(),\n tap(\n () =>\n (number$ = this.more$.pipe(\n filter(() => !this.state.isLoading),\n scan(n => n + 1, 0),\n startWith(0)\n ))\n ),\n tap(() => this.patchState({ options: [] })),\n switchMap(term =>\n number$.pipe(\n tap(() => this.patchState({ isLoading: true })),\n switchMap(number => this.connectorSafe.retrieve(term, number)),\n tap(page => this.patchState({ isLoading: false, totalElements: page.totalElements })),\n takeWhile(page => !page.last, true),\n scan((items, page) => [...items, ...page.content], [] as Item[])\n )\n )\n )\n .subscribe(items => {\n const options = this.toSelectItems(items);\n\n if (\n this.tags &&\n this.state.term.trim().length &&\n !options.find(value1 => value1.render.label.toLowerCase() === this.state.term.toLowerCase())\n ) {\n let label;\n if (this.isTagSelected(this.state.term)) {\n label = this.state.selection.find(item => item.render.label.toLowerCase() === this.state.term.toLowerCase())\n ?.render.label;\n }\n options.unshift({\n item: { id: `select-${this.id}-option-tag` },\n render: { label: label ? label : this.state.term }\n });\n }\n this.patchState({\n options\n });\n });\n }\n\n render() {\n return (\n <Host>\n {(this.hasSlottedLabel || this.label) && (\n <label htmlFor={this.id} class={{ hidden: this.labelHidden }}>\n <span part=\"label\">\n {(this.hasSlottedLabel && <slot name=\"label\"></slot>) || this.label}\n {!this.required && this.requiredMarker.startsWith('optional') && (\n <span class=\"input-optional\" aria-hidden=\"true\">\n ({i18n.t('input.optional')})\n </span>\n )}\n {this.required && this.requiredMarker.startsWith('required') && (\n <span class=\"input-optional\" aria-hidden=\"true\">\n ({i18n.t('input.required')})\n </span>\n )}\n </span>\n </label>\n )}\n <div\n class={{ 'select-wrapper': true, 'select-disabled': this.disabled }}\n ref={el => (this.trigger = el)}\n id={this.id}\n role=\"combobox\"\n aria-expanded={this.state.isOpen || this.isPillboxActive()}\n aria-controls={this.isPillboxActive() ? `select-pillbox-${this.id}` : `select-listbox-${this.id}`}\n aria-required={this.required ? 'true' : false}\n aria-activedescendant={this.activeDescendant}\n onClick={e => this.onClick(e)}\n >\n <div class=\"select-wrapper-inner\">\n {this.multiple && this.state.selection.length ? (\n <div id={`select-pillbox-${this.id}`} role=\"listbox\" aria-orientation=\"horizontal\" class=\"select-pills\">\n {this.state.selection.map((item, i) => (\n <span\n class={{\n pill: true,\n 'select-no-open': true,\n 'select-option-active': this.state.activeSelectionIndex === i\n }}\n role=\"option\"\n aria-selected=\"true\"\n id={`select-${this.id}-selection-${i}`}\n >\n {item.render.avatar ? (\n <cat-avatar\n label={item.render.label}\n round={item.render.avatar.round}\n src={item.render.avatar.src}\n initials={''}\n ></cat-avatar>\n ) : null}\n <span>{item.render.label}</span>\n {!this.disabled && (\n <cat-button\n size=\"xs\"\n variant=\"text\"\n icon=\"16-cross\"\n iconOnly\n a11yLabel={i18n.t('select.deselect')}\n onClick={() => this.deselect(item.item.id)}\n tabIndex={-1}\n ></cat-button>\n )}\n </span>\n ))}\n </div>\n ) : this.state.selection.length && this.state.selection[0].render.avatar ? (\n <cat-avatar\n label={this.state.selection[0].render.label}\n round={this.state.selection[0].render.avatar.round}\n src={this.state.selection[0].render.avatar.src}\n initials={''}\n ></cat-avatar>\n ) : null}\n <input\n class=\"select-input\"\n ref={el => (this.input = el)}\n aria-controls={this.isPillboxActive() ? `select-pillbox-${this.id}` : `select-listbox-${this.id}`}\n aria-activedescendant={this.activeDescendant}\n onInput={() => this.onInput()}\n value={!this.multiple ? this.state.term : undefined}\n placeholder={this.placeholder}\n disabled={this.disabled || this.state.isResolving}\n ></input>\n </div>\n {this.state.isResolving && <cat-spinner></cat-spinner>}\n {(this.state.selection.length || this.state.term.length) &&\n !this.disabled &&\n !this.state.isResolving &&\n this.clearable ? (\n <cat-button\n id={`select-clear-btn-${this.id}`}\n iconOnly\n icon=\"cross-circle-outlined\"\n variant=\"text\"\n size=\"s\"\n a11yLabel={i18n.t('input.clear')}\n onClick={() => this.clear()}\n ></cat-button>\n ) : null}\n {!this.state.isResolving && (\n <cat-button\n iconOnly\n icon=\"chevron-down-outlined\"\n class={{ 'select-btn': true, 'select-btn-open': this.state.isOpen }}\n variant=\"text\"\n size=\"s\"\n a11yLabel={this.state.isOpen ? i18n.t('select.close') : i18n.t('select.open')}\n aria-controls={`select-listbox-${this.id}`}\n aria-expanded={this.state.isOpen}\n tabIndex={-1}\n disabled={this.disabled || this.state.isResolving}\n ></cat-button>\n )}\n </div>\n {this.hintSection}\n <div\n class=\"select-dropdown\"\n ref={el => (this.dropdown = el)}\n style={{ display: this.state.isOpen ? 'block' : undefined }}\n >\n {this.state.isOpen && (\n <cat-scrollable\n class=\"select-options-wrapper\"\n scrolledBuffer={56}\n noOverflowX\n noOverscroll\n noScrolledInit\n onScrolledBottom={() => this.more$.next()}\n >\n <ul\n class=\"select-options\"\n role=\"listbox\"\n aria-multiselectable={this.multiple}\n aria-setsize={this.state.totalElements}\n id={`select-listbox-${this.id}`}\n >\n {this.optionsList}\n {this.state.isLoading\n ? Array.from(Array(CatSelect.SKELETON_COUNT)).map(() => (\n <li class=\"select-option-loading\">\n <cat-skeleton variant=\"body\" lines={1}></cat-skeleton>\n <cat-skeleton variant=\"body\" lines={1}></cat-skeleton>\n </li>\n ))\n : !this.state.options.length &&\n !this.tags && (\n <li class=\"select-option-empty\">{this.noItems ? this.noItems : i18n.t('select.empty')}</li>\n )}\n </ul>\n </cat-scrollable>\n )}\n </div>\n </Host>\n );\n }\n\n private get optionsList() {\n return this.state.options.map((item, i) => {\n const isTagOption = this.tags && item.item.id === `select-${this.id}-option-tag`;\n\n const isOptionSelected = this.isSelected(item.item.id) || (this.tags && this.isTagSelected(item.render.label));\n\n const getLabel = () => {\n if (isTagOption) {\n return item.render.label + this.tagTextHelp;\n }\n return item.render.label;\n };\n\n return (\n <li\n role=\"option\"\n class=\"select-option\"\n id={`select-${this.id}-option-${i}`}\n aria-selected={isOptionSelected ? 'true' : 'false'}\n >\n {this.multiple ? (\n <cat-checkbox\n class={{ 'select-option-active': this.state.activeOptionIndex === i }}\n checked={isOptionSelected}\n tabIndex={-1}\n labelLeft\n onFocus={() => this.input?.focus()}\n onCatChange={e => {\n !isTagOption ? this.toggle(item) : this.toggleTag(item);\n e.stopPropagation();\n }}\n >\n <span slot=\"label\" class=\"select-option-inner\">\n {item.render.avatar ? (\n <cat-avatar\n label={item.render.label}\n round={item.render.avatar.round}\n src={item.render.avatar.src}\n initials={''}\n ></cat-avatar>\n ) : null}\n <span class=\"select-option-text\">\n <span class=\"select-option-label\">{getLabel()}</span>\n <span class=\"select-option-description\">{item.render.description}</span>\n </span>\n </span>\n </cat-checkbox>\n ) : (\n <div\n class={{\n 'select-option-inner': true,\n 'select-option-single': true,\n 'select-option-active': this.state.activeOptionIndex === i\n }}\n onFocus={() => this.input?.focus()}\n onClick={() => (isTagOption ? this.createTag(item.render.label) : this.select(item))}\n tabIndex={-1}\n >\n {item.render.avatar ? (\n <cat-avatar\n label={item.render.label}\n round={item.render.avatar.round}\n src={item.render.avatar.src}\n initials={''}\n ></cat-avatar>\n ) : null}\n <span class=\"select-option-text\">\n <span class=\"select-option-label\">{getLabel()}</span>\n <span class=\"select-option-description\">{item.render.description}</span>\n </span>\n </div>\n )}\n </li>\n );\n });\n }\n\n private get hintSection() {\n const hasSlottedHint = !!this.hostElement.querySelector('[slot=\"hint\"]');\n return (\n (this.hint || hasSlottedHint) && (\n <CatFormHint hint={this.hint} slottedHint={hasSlottedHint && <slot name=\"hint\"></slot>} />\n )\n );\n }\n\n private get connectorSafe(): CatSelectConnector {\n if (this.connector) {\n return this.connector;\n }\n throw new Error('CatSelectConnector not set');\n }\n\n private resolve() {\n this.patchState({ isResolving: true });\n\n const ids = this.initIds();\n let tags: string[];\n\n if (this.tags) {\n tags = this.initTags();\n }\n\n const data$ = ids.length ? this.connectorSafe.resolve(ids).pipe(first()) : of([]);\n data$.pipe(catchError(() => of([]))).subscribe(items => {\n const selection = items.length ? this.toSelectItems(items) : [];\n if (this.tags) {\n tags\n ?.filter(tag => !this.isTagSelected(tag, selection))\n .forEach((tag, index) => {\n const item = { id: `select-${this.id}-tag-${index}`, name: tag };\n selection.push({ item, render: { label: item.name } });\n });\n }\n this.patchState({\n isResolving: false,\n selection,\n term: !this.multiple && selection.length ? selection[0].render.label : ''\n });\n });\n }\n\n private toSelectItems(items: Item[]) {\n return items?.map(item => ({\n item: { ...item, id: this.connectorSafe.customId ? this.connectorSafe.customId(item) : item.id },\n render: this.connectorSafe.render(item)\n }));\n }\n\n private show() {\n if (!this.state.isOpen) {\n this.patchState({ isOpen: true });\n this.catOpen.emit();\n this.term$.next(this.state.term);\n this.input?.classList.remove('select-input-transparent-caret');\n }\n }\n\n private hide() {\n if (this.state.isOpen) {\n this.patchState({ isOpen: false, activeOptionIndex: -1 });\n this.catClose.emit();\n }\n }\n\n private search(term: string) {\n this.patchState({ term, activeOptionIndex: -1, activeSelectionIndex: -1 });\n this.term$.next(term);\n }\n\n private isSelected(id: string) {\n return this.state.selection.findIndex(s => s.item.id === id) >= 0;\n }\n\n private select(item: { item: Item; render: RenderInfo }) {\n if (!this.isSelected(item.item.id)) {\n let newSelection;\n if (this.multiple) {\n newSelection = [...this.state.selection, item];\n } else {\n newSelection = [item];\n this.search(item.render.label);\n }\n this.patchState({ selection: newSelection });\n\n if (this.multiple && this.state.term.trim() && this.input) {\n this.patchState({ term: '', activeOptionIndex: -1 });\n this.term$.next('');\n this.input.value = '';\n }\n }\n this.setTransparentCaret();\n }\n\n private deselect(id: string) {\n if (this.isSelected(id)) {\n this.patchState({\n selection: this.state.selection.filter(item => item.item.id !== id),\n activeSelectionIndex: -1\n });\n }\n }\n\n private toggle(item: { item: Item; render: RenderInfo }) {\n this.isSelected(item.item.id)\n ? this.deselect(item.item.id)\n : this.tags && this.isTagSelected(item.render.label)\n ? this.removeTag(item.render.label)\n : this.select(item);\n }\n\n private clear() {\n if (this.input && this.state.term) {\n this.patchState({ selection: [], options: [], term: '', activeOptionIndex: -1 });\n this.term$.next('');\n this.input.value = '';\n } else {\n this.patchState({ selection: [] });\n }\n }\n\n private reset(connector?: CatSelectConnector) {\n this.connector = connector ?? this.connector;\n this.subscription?.unsubscribe();\n this.subscription = undefined;\n this.state = INIT_STATE;\n }\n\n private onClick(event: MouseEvent) {\n if (this.disabled) {\n return;\n }\n const elem = event.target as Element;\n this.trigger?.setAttribute('tabindex', '0');\n this.input?.focus();\n if (\n elem === this.trigger ||\n elem === this.input ||\n elem.classList.contains('select-btn') ||\n elem.nodeName === 'SPAN'\n ) {\n this.state.isOpen ? this.hide() : this.show();\n }\n }\n\n private onInput() {\n this.search(this.input?.value.trim() || '');\n if (!this.multiple && this.state.selection.length) {\n const selectionClone = [...this.state.selection];\n selectionClone.pop();\n this.patchState({ selection: selectionClone });\n }\n this.show();\n }\n\n private update() {\n if (this.trigger && this.dropdown) {\n computePosition(this.trigger, this.dropdown, {\n placement: this.placement,\n middleware: [offset(CatSelect.DROPDOWN_OFFSET)]\n }).then(({ x, y }) => {\n if (this.dropdown) {\n Object.assign(this.dropdown.style, {\n left: `${x}px`,\n top: `${y}px`\n });\n }\n });\n }\n }\n\n private patchState(update: Partial<CatSelectState>) {\n this.state = { ...this.state, ...update };\n }\n\n private isPillboxActive() {\n return this.state.activeSelectionIndex >= 0;\n }\n\n private get activeDescendant() {\n let activeDescendant = undefined;\n if (this.state.activeOptionIndex >= 0) {\n activeDescendant = `select-${this.id}-option-${this.state.activeOptionIndex}`;\n } else if (this.state.activeSelectionIndex >= 0) {\n activeDescendant = `select-${this.id}-selection-${this.state.activeSelectionIndex}`;\n }\n return activeDescendant;\n }\n\n private onArrowKeyDown(event: KeyboardEvent) {\n let preventDefault = false;\n this.input?.focus();\n\n switch (event.key) {\n case 'ArrowDown':\n preventDefault = true;\n this.state.isOpen\n ? this.patchState({\n activeOptionIndex: Math.min(this.state.activeOptionIndex + 1, this.state.options.length - 1),\n activeSelectionIndex: -1\n })\n : this.show();\n break;\n case 'ArrowUp':\n preventDefault = true;\n this.state.activeOptionIndex >= 0\n ? this.patchState({\n activeOptionIndex: Math.max(this.state.activeOptionIndex - 1, -1),\n activeSelectionIndex: -1\n })\n : this.hide();\n break;\n case 'ArrowLeft':\n if (this.input?.selectionStart === 0) {\n preventDefault = true;\n let index;\n this.state.activeSelectionIndex > 0\n ? (index = Math.max(this.state.activeSelectionIndex - 1, -1))\n : (index = this.state.selection.length - 1);\n this.patchState({ activeSelectionIndex: index, activeOptionIndex: -1 });\n }\n break;\n case 'ArrowRight':\n if (this.state.activeSelectionIndex >= 0) {\n preventDefault = true;\n let index = -1;\n if (this.state.activeSelectionIndex < this.state.selection.length - 1) {\n index = Math.min(this.state.activeSelectionIndex + 1, this.state.selection.length - 1);\n } else if (!this.state.term) {\n index = 0;\n }\n this.patchState({ activeSelectionIndex: index, activeOptionIndex: -1 });\n }\n }\n\n if (preventDefault) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n private get tagTextHelp() {\n return this.tagHint && !this.isTagSelected(this.state.term) ? ' (' + this.tagHint + ')' : '';\n }\n\n private isTagSelected(term: string, selection: { item: Item; render: RenderInfo }[] = this.state.selection) {\n return selection.findIndex(item => item.render.label.toLowerCase() === term.toLowerCase()) >= 0;\n }\n\n private createTag(term: string) {\n if (term.trim().length && !this.isTagSelected(term)) {\n const value = this.value as CatSelectMultipleTaggingValue;\n const tags = value?.tags;\n const tag = { id: `select-${this.id}-tag-${tags ? tags.length : 0}`, name: term };\n this.select({ item: tag, render: { label: tag.name } });\n }\n this.setTransparentCaret();\n }\n\n private removeTag(label: string) {\n if (this.isTagSelected(label)) {\n const item = this.state.selection.find(item => item.render.label.toLowerCase() === label.toLowerCase());\n item && this.deselect(item.item.id);\n }\n }\n\n private toggleTag(item: { item: Item; render: RenderInfo }) {\n this.isTagSelected(item.render.label) ? this.removeTag(item.render.label) : this.createTag(item.render.label);\n }\n\n private initIds() {\n let ids: string[] = [];\n if (this.value) {\n if (!this.tags) {\n if (this.multiple) {\n ids = this.value as string[];\n } else {\n ids = [this.value as string];\n }\n } else {\n if (this.multiple) {\n const value = this.value as CatSelectMultipleTaggingValue;\n ids = value.ids ? value.ids : [];\n } else {\n const value = this.value as CatSelectTaggingValue;\n ids = value.id ? [value.id] : [];\n }\n }\n }\n return ids;\n }\n\n private initTags() {\n let tags: string[] = [];\n if (this.value) {\n if (this.multiple) {\n const value = this.value as CatSelectMultipleTaggingValue;\n tags = value.tags ? value.tags : [];\n } else {\n const value = this.value as CatSelectTaggingValue;\n tags = value.tag ? [value.tag] : [];\n }\n }\n return tags;\n }\n\n private setTransparentCaret() {\n if (!this.multiple) {\n this.hide();\n this.input?.classList.add('select-input-transparent-caret');\n }\n }\n}\n"]}