@haiilo/catalyst 2.1.3 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/catalyst/catalyst.css +1 -1
- package/dist/catalyst/catalyst.esm.js +1 -1
- package/dist/catalyst/catalyst.esm.js.map +1 -1
- package/dist/catalyst/p-e5f9669a.entry.js +2 -0
- package/dist/catalyst/p-e5f9669a.entry.js.map +1 -0
- package/dist/catalyst/scss/core/_typography.scss +11 -5
- package/dist/cjs/{cat-alert_22.cjs.entry.js → cat-alert_23.cjs.entry.js} +71 -29
- package/dist/cjs/cat-alert_23.cjs.entry.js.map +1 -0
- package/dist/cjs/catalyst.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/cat-alert/cat-alert.js +2 -3
- package/dist/collection/components/cat-alert/cat-alert.js.map +1 -1
- package/dist/collection/components/cat-badge/cat-badge.js +5 -11
- package/dist/collection/components/cat-badge/cat-badge.js.map +1 -1
- package/dist/collection/components/cat-checkbox/cat-checkbox.js +21 -1
- package/dist/collection/components/cat-checkbox/cat-checkbox.js.map +1 -1
- package/dist/collection/components/cat-input/cat-input.js +24 -9
- package/dist/collection/components/cat-input/cat-input.js.map +1 -1
- package/dist/collection/components/cat-label/cat-label.css +16 -0
- package/dist/collection/components/cat-label/cat-label.js +96 -0
- package/dist/collection/components/cat-label/cat-label.js.map +1 -0
- package/dist/collection/components/cat-radio/cat-radio.js +22 -2
- package/dist/collection/components/cat-radio/cat-radio.js.map +1 -1
- package/dist/collection/components/cat-select/cat-select.js +24 -9
- package/dist/collection/components/cat-select/cat-select.js.map +1 -1
- package/dist/collection/components/cat-textarea/cat-textarea.js +24 -9
- package/dist/collection/components/cat-textarea/cat-textarea.js.map +1 -1
- package/dist/collection/components/cat-toggle/cat-toggle.js +21 -1
- package/dist/collection/components/cat-toggle/cat-toggle.js.map +1 -1
- package/dist/collection/scss/core/_typography.scss +11 -5
- package/dist/collection/utils/setDefault.js +2 -2
- package/dist/collection/utils/setDefault.js.map +1 -1
- package/dist/components/cat-alert.js +7 -3
- package/dist/components/cat-alert.js.map +1 -1
- package/dist/components/cat-badge.js +5 -11
- package/dist/components/cat-badge.js.map +1 -1
- package/dist/components/cat-checkbox2.js +5 -1
- package/dist/components/cat-checkbox2.js.map +1 -1
- package/dist/components/cat-dropdown2.js.map +1 -1
- package/dist/components/cat-input.js +5 -5
- package/dist/components/cat-input.js.map +1 -1
- package/dist/components/cat-label.d.ts +11 -0
- package/dist/components/cat-label.js +71 -0
- package/dist/components/cat-label.js.map +1 -0
- package/dist/components/cat-radio.js +6 -2
- package/dist/components/cat-radio.js.map +1 -1
- package/dist/components/cat-select2.js +5 -5
- package/dist/components/cat-select2.js.map +1 -1
- package/dist/components/cat-textarea.js +5 -5
- package/dist/components/cat-textarea.js.map +1 -1
- package/dist/components/cat-toggle.js +5 -1
- package/dist/components/cat-toggle.js.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/dist/esm/{cat-alert_22.entry.js → cat-alert_23.entry.js} +71 -30
- package/dist/esm/cat-alert_23.entry.js.map +1 -0
- package/dist/esm/catalyst.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/cat-badge/cat-badge.d.ts +0 -1
- package/dist/types/components/cat-checkbox/cat-checkbox.d.ts +6 -1
- package/dist/types/components/cat-input/cat-input.d.ts +7 -2
- package/dist/types/components/cat-label/cat-label.d.ts +17 -0
- package/dist/types/components/cat-radio/cat-radio.d.ts +6 -1
- package/dist/types/components/cat-select/cat-select.d.ts +7 -2
- package/dist/types/components/cat-textarea/cat-textarea.d.ts +7 -2
- package/dist/types/components/cat-toggle/cat-toggle.d.ts +6 -1
- package/dist/types/components.d.ts +80 -3
- package/dist/types/utils/setDefault.d.ts +2 -2
- package/package.json +2 -2
- package/dist/catalyst/p-c0ccf7d1.entry.js +0 -2
- package/dist/catalyst/p-c0ccf7d1.entry.js.map +0 -1
- package/dist/cjs/cat-alert_22.cjs.entry.js.map +0 -1
- package/dist/components/setDefault.js +0 -12
- package/dist/components/setDefault.js.map +0 -1
- package/dist/esm/cat-alert_22.entry.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cat-radio.js","sourceRoot":"","sources":["../../../src/components/cat-radio/cat-radio.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtG,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7D,IAAI,YAAY,GAAG,CAAC,CAAC;AAErB;;;;;;;GAOG;AAMH,MAAM,OAAO,QAAQ;EALrB;IAMmB,
|
|
1
|
+
{"version":3,"file":"cat-radio.js","sourceRoot":"","sources":["../../../src/components/cat-radio/cat-radio.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';\n\nlet nextUniqueId = 0;\n\n/**\n * Radio Buttons are graphical interface elements that allow user to choose\n * only one of a predefined set of mutually exclusive options.\n *\n * @slot hint - Optional hint element to be displayed with the radio.\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-radio',\n styleUrl: 'cat-radio.scss',\n shadow: true\n})\nexport class CatRadio {\n private readonly _id = `cat-radio-${++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 this radio is checked.\n */\n @Prop({ mutable: true }) checked = false;\n\n /**\n * Whether this radio is disabled.\n */\n @Prop() disabled = false;\n\n /**\n * A unique identifier for the input.\n */\n @Prop() identifier?: string;\n\n /**\n * The label of the radio that is visible.\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 * The name of the radio component.\n */\n @Prop() name?: string;\n\n /**\n * Whether the radio is required.\n */\n @Prop() required = false;\n\n /**\n * The value of the radio component.\n */\n @Prop() value?: string;\n\n /**\n * Optional hint text(s) to be displayed with the radio.\n */\n @Prop() hint?: string | string[];\n\n /**\n * Whether the label should appear to the left of the radio component.\n */\n @Prop() labelLeft = false;\n\n /**\n * Emitted when the radio is changed.\n */\n @Event() catChange!: EventEmitter;\n\n /**\n * Emitted when the radio received focus.\n */\n @Event() catFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the radio 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 radio', this);\n }\n }\n\n /**\n * Programmatically move focus to the radio button. 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 radio button. Use this method\n * instead of `input.blur()`.\n */\n @Method()\n async doBlur(): Promise<void> {\n this.input.blur();\n }\n\n /**\n * Programmatically simulate a click on the radio button.\n */\n @Method()\n async doClick(): Promise<void> {\n this.input.click();\n }\n\n render() {\n return (\n <Host>\n <label\n htmlFor={this.id}\n class={{ 'is-hidden': this.labelHidden, 'is-disabled': this.disabled, 'label-left': this.labelLeft }}\n role=\"radio\"\n aria-checked={this.checked ? 'true' : 'false'}\n >\n <span class=\"radio\">\n <input\n ref={el => (this.input = el as HTMLInputElement)}\n id={this.identifier || this.id}\n type=\"radio\"\n name={this.name}\n value={this.value}\n checked={this.checked}\n required={this.required}\n disabled={this.disabled}\n onInput={this.onChange.bind(this)}\n onFocus={this.onFocus.bind(this)}\n onBlur={this.onBlur.bind(this)}\n />\n <span class=\"circle\"></span>\n </span>\n <span class=\"label\" part=\"label\">\n {(this.hasSlottedLabel && <slot name=\"label\"></slot>) || this.label}\n </span>\n </label>\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 onChange(event: Event) {\n this.checked = true;\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"]}
|
|
@@ -27,7 +27,7 @@ let nextUniqueId = 0;
|
|
|
27
27
|
*/
|
|
28
28
|
export class CatSelect {
|
|
29
29
|
constructor() {
|
|
30
|
-
this.
|
|
30
|
+
this._id = `cat-input-${nextUniqueId++}`;
|
|
31
31
|
this.term$ = new Subject();
|
|
32
32
|
this.more$ = new Subject();
|
|
33
33
|
this.state = INIT_STATE;
|
|
@@ -52,10 +52,6 @@ export class CatSelect {
|
|
|
52
52
|
* The label for the select.
|
|
53
53
|
*/
|
|
54
54
|
this.label = '';
|
|
55
|
-
/**
|
|
56
|
-
* The name of the form control. Submitted with the form as part of a name/value pair.
|
|
57
|
-
*/
|
|
58
|
-
this.name = '';
|
|
59
55
|
/**
|
|
60
56
|
* Visually hide the label, but still show it to assistive technologies like screen readers.
|
|
61
57
|
*/
|
|
@@ -73,6 +69,9 @@ export class CatSelect {
|
|
|
73
69
|
*/
|
|
74
70
|
this.tags = false;
|
|
75
71
|
}
|
|
72
|
+
get id() {
|
|
73
|
+
return this.identifier || this._id;
|
|
74
|
+
}
|
|
76
75
|
onConnectorChange(connector) {
|
|
77
76
|
this.reset(connector);
|
|
78
77
|
this.resolve();
|
|
@@ -755,6 +754,23 @@ export class CatSelect {
|
|
|
755
754
|
"attribute": "hint",
|
|
756
755
|
"reflect": false
|
|
757
756
|
},
|
|
757
|
+
"identifier": {
|
|
758
|
+
"type": "string",
|
|
759
|
+
"mutable": false,
|
|
760
|
+
"complexType": {
|
|
761
|
+
"original": "string",
|
|
762
|
+
"resolved": "string | undefined",
|
|
763
|
+
"references": {}
|
|
764
|
+
},
|
|
765
|
+
"required": false,
|
|
766
|
+
"optional": true,
|
|
767
|
+
"docs": {
|
|
768
|
+
"tags": [],
|
|
769
|
+
"text": "A unique identifier for the input."
|
|
770
|
+
},
|
|
771
|
+
"attribute": "identifier",
|
|
772
|
+
"reflect": false
|
|
773
|
+
},
|
|
758
774
|
"label": {
|
|
759
775
|
"type": "string",
|
|
760
776
|
"mutable": false,
|
|
@@ -778,18 +794,17 @@ export class CatSelect {
|
|
|
778
794
|
"mutable": false,
|
|
779
795
|
"complexType": {
|
|
780
796
|
"original": "string",
|
|
781
|
-
"resolved": "string",
|
|
797
|
+
"resolved": "string | undefined",
|
|
782
798
|
"references": {}
|
|
783
799
|
},
|
|
784
800
|
"required": false,
|
|
785
|
-
"optional":
|
|
801
|
+
"optional": true,
|
|
786
802
|
"docs": {
|
|
787
803
|
"tags": [],
|
|
788
804
|
"text": "The name of the form control. Submitted with the form as part of a name/value pair."
|
|
789
805
|
},
|
|
790
806
|
"attribute": "name",
|
|
791
|
-
"reflect": false
|
|
792
|
-
"defaultValue": "''"
|
|
807
|
+
"reflect": false
|
|
793
808
|
},
|
|
794
809
|
"labelHidden": {
|
|
795
810
|
"type": "boolean",
|
|
@@ -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\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\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 * 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 = '';\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('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 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 this.value = idsSelected;\n } else {\n this.value = 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 this.value = { ids, tags };\n } else {\n this.value = { id: ids.length ? ids[0] : '', tag: tags.length ? tags[0] : '' };\n }\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\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('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 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 this.value = idsSelected;\n } else {\n this.value = 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 this.value = { ids, tags };\n } else {\n this.value = { id: ids.length ? ids[0] : '', tag: tags.length ? tags[0] : '' };\n }\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"]}
|
|
@@ -14,7 +14,7 @@ let nextUniqueId = 0;
|
|
|
14
14
|
*/
|
|
15
15
|
export class CatTextarea {
|
|
16
16
|
constructor() {
|
|
17
|
-
this.
|
|
17
|
+
this._id = `cat-textarea-${nextUniqueId++}`;
|
|
18
18
|
this.hasSlottedLabel = false;
|
|
19
19
|
/**
|
|
20
20
|
* Whether the textarea is disabled.
|
|
@@ -28,10 +28,6 @@ export class CatTextarea {
|
|
|
28
28
|
* Visually hide the label, but still show it to assistive technologies like screen readers.
|
|
29
29
|
*/
|
|
30
30
|
this.labelHidden = false;
|
|
31
|
-
/**
|
|
32
|
-
* The name of the form control. Submitted with the form as part of a name/value pair.
|
|
33
|
-
*/
|
|
34
|
-
this.name = '';
|
|
35
31
|
/**
|
|
36
32
|
* The value is not editable.
|
|
37
33
|
*/
|
|
@@ -45,6 +41,9 @@ export class CatTextarea {
|
|
|
45
41
|
*/
|
|
46
42
|
this.rows = 3;
|
|
47
43
|
}
|
|
44
|
+
get id() {
|
|
45
|
+
return this.identifier || this._id;
|
|
46
|
+
}
|
|
48
47
|
componentWillRender() {
|
|
49
48
|
this.hasSlottedLabel = !!this.hostElement.querySelector('[slot="label"]');
|
|
50
49
|
if (!this.label && !this.hasSlottedLabel) {
|
|
@@ -144,6 +143,23 @@ export class CatTextarea {
|
|
|
144
143
|
"attribute": "hint",
|
|
145
144
|
"reflect": false
|
|
146
145
|
},
|
|
146
|
+
"identifier": {
|
|
147
|
+
"type": "string",
|
|
148
|
+
"mutable": false,
|
|
149
|
+
"complexType": {
|
|
150
|
+
"original": "string",
|
|
151
|
+
"resolved": "string | undefined",
|
|
152
|
+
"references": {}
|
|
153
|
+
},
|
|
154
|
+
"required": false,
|
|
155
|
+
"optional": true,
|
|
156
|
+
"docs": {
|
|
157
|
+
"tags": [],
|
|
158
|
+
"text": "A unique identifier for the input."
|
|
159
|
+
},
|
|
160
|
+
"attribute": "identifier",
|
|
161
|
+
"reflect": false
|
|
162
|
+
},
|
|
147
163
|
"label": {
|
|
148
164
|
"type": "string",
|
|
149
165
|
"mutable": false,
|
|
@@ -219,18 +235,17 @@ export class CatTextarea {
|
|
|
219
235
|
"mutable": false,
|
|
220
236
|
"complexType": {
|
|
221
237
|
"original": "string",
|
|
222
|
-
"resolved": "string",
|
|
238
|
+
"resolved": "string | undefined",
|
|
223
239
|
"references": {}
|
|
224
240
|
},
|
|
225
241
|
"required": false,
|
|
226
|
-
"optional":
|
|
242
|
+
"optional": true,
|
|
227
243
|
"docs": {
|
|
228
244
|
"tags": [],
|
|
229
245
|
"text": "The name of the form control. Submitted with the form as part of a name/value pair."
|
|
230
246
|
},
|
|
231
247
|
"attribute": "name",
|
|
232
|
-
"reflect": false
|
|
233
|
-
"defaultValue": "''"
|
|
248
|
+
"reflect": false
|
|
234
249
|
},
|
|
235
250
|
"placeholder": {
|
|
236
251
|
"type": "string",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cat-textarea.js","sourceRoot":"","sources":["../../../src/components/cat-textarea/cat-textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtG,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7D,IAAI,YAAY,GAAG,CAAC,CAAC;AAErB;;;;;;;;GAQG;AAMH,MAAM,OAAO,WAAW;EALxB;IAMmB,
|
|
1
|
+
{"version":3,"file":"cat-textarea.js","sourceRoot":"","sources":["../../../src/components/cat-textarea/cat-textarea.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Host, Method, Prop, State } from '@stencil/core';\nimport autosize from 'autosize';\nimport log from 'loglevel';\nimport { CatFormHint } from '../cat-form-hint/cat-form-hint';\n\nlet nextUniqueId = 0;\n\n/**\n * Textarea specifies a control that allows user to write text over multiple\n * rows. Used when the expected user input is long. For shorter input, use the\n * input component.\n *\n * @slot hint - Optional hint element to be displayed with the textarea.\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-textarea',\n styleUrl: 'cat-textarea.scss',\n shadow: true\n})\nexport class CatTextarea {\n private readonly _id = `cat-textarea-${nextUniqueId++}`;\n private get id() {\n return this.identifier || this._id;\n }\n\n private textarea!: HTMLTextAreaElement;\n\n @Element() hostElement!: HTMLElement;\n\n @State() hasSlottedLabel = false;\n\n /**\n * Whether the textarea is disabled.\n */\n @Prop() disabled = false;\n\n /**\n * Optional hint text(s) to be displayed with the textarea.\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 textarea.\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 length (number of characters) for textual values.\n */\n @Prop() maxLength?: number;\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 * 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 * Specifies the initial number of lines in the textarea.\n */\n @Prop() rows = 3;\n\n /**\n * The initial 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 textarea received focus.\n */\n @Event() catFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the textarea 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 textarea', this);\n }\n }\n\n componentDidLoad(): void {\n autosize(this.textarea);\n }\n\n /**\n * Programmatically move focus to the textarea. Use this method instead of\n * `textarea.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.textarea.focus(options);\n }\n\n /**\n * Programmatically remove focus from the textarea. Use this method instead of\n * `textarea.blur()`.\n */\n @Method()\n async doBlur(): Promise<void> {\n this.textarea.blur();\n }\n\n /**\n * Programmatically simulate a click on the textarea.\n */\n @Method()\n async doClick(): Promise<void> {\n this.textarea.click();\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 (Optional)\n </span>\n )}\n </span>\n </label>\n )}\n <textarea\n ref={el => (this.textarea = el as HTMLTextAreaElement)}\n id={this.id}\n disabled={this.disabled}\n maxlength={this.maxLength}\n minlength={this.minLength}\n name={this.name}\n placeholder={this.placeholder}\n readonly={this.readonly}\n required={this.required}\n rows={this.rows}\n value={this.value}\n onInput={this.onInput.bind(this)}\n onFocus={this.onFocus.bind(this)}\n onBlur={this.onBlur.bind(this)}\n ></textarea>\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.textarea.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"]}
|
|
@@ -13,7 +13,7 @@ let nextUniqueId = 0;
|
|
|
13
13
|
*/
|
|
14
14
|
export class CatToggle {
|
|
15
15
|
constructor() {
|
|
16
|
-
this.
|
|
16
|
+
this._id = `cat-toggle-${nextUniqueId++}`;
|
|
17
17
|
this.hasSlottedLabel = false;
|
|
18
18
|
/**
|
|
19
19
|
* Checked state of the toggle.
|
|
@@ -40,6 +40,9 @@ export class CatToggle {
|
|
|
40
40
|
*/
|
|
41
41
|
this.labelLeft = false;
|
|
42
42
|
}
|
|
43
|
+
get id() {
|
|
44
|
+
return this.identifier || this._id;
|
|
45
|
+
}
|
|
43
46
|
componentWillRender() {
|
|
44
47
|
this.hasSlottedLabel = !!this.hostElement.querySelector('[slot="label"]');
|
|
45
48
|
if (!this.label && !this.hasSlottedLabel) {
|
|
@@ -139,6 +142,23 @@ export class CatToggle {
|
|
|
139
142
|
"reflect": false,
|
|
140
143
|
"defaultValue": "false"
|
|
141
144
|
},
|
|
145
|
+
"identifier": {
|
|
146
|
+
"type": "string",
|
|
147
|
+
"mutable": false,
|
|
148
|
+
"complexType": {
|
|
149
|
+
"original": "string",
|
|
150
|
+
"resolved": "string | undefined",
|
|
151
|
+
"references": {}
|
|
152
|
+
},
|
|
153
|
+
"required": false,
|
|
154
|
+
"optional": true,
|
|
155
|
+
"docs": {
|
|
156
|
+
"tags": [],
|
|
157
|
+
"text": "A unique identifier for the input."
|
|
158
|
+
},
|
|
159
|
+
"attribute": "identifier",
|
|
160
|
+
"reflect": false
|
|
161
|
+
},
|
|
142
162
|
"label": {
|
|
143
163
|
"type": "string",
|
|
144
164
|
"mutable": false,
|