@infineon/infineon-design-system-stencil 37.2.0 → 38.0.0--canary.1954.f29b2d8edb0fe3ea64fff93b4a103a880db2a074.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/cjs/ifx-alert_2.cjs.entry.js +1 -1
- package/dist/cjs/ifx-basic-table.cjs.entry.js +1 -1
- package/dist/cjs/ifx-faq.cjs.entry.js +1 -1
- package/dist/cjs/ifx-filter-accordion.cjs.entry.js +2 -2
- package/dist/cjs/ifx-filter-bar.cjs.entry.js +1 -1
- package/dist/cjs/ifx-filter-search.cjs.entry.js +1 -1
- package/dist/cjs/ifx-filter-type-group.cjs.entry.js +1 -1
- package/dist/cjs/ifx-list-entry.cjs.entry.js +1 -1
- package/dist/cjs/ifx-multiselect_2.cjs.entry.js +4 -4
- package/dist/cjs/ifx-search-field.cjs.entry.js +349 -12
- package/dist/cjs/ifx-search-field.cjs.entry.js.map +1 -1
- package/dist/cjs/ifx-segment.cjs.entry.js +1 -1
- package/dist/cjs/ifx-segmented-control.cjs.entry.js +2 -2
- package/dist/cjs/ifx-select.cjs.entry.js +2 -2
- package/dist/cjs/ifx-slider.cjs.entry.js +2 -2
- package/dist/cjs/ifx-spinner_2.cjs.entry.js +6 -6
- package/dist/cjs/ifx-status.cjs.entry.js +1 -1
- package/dist/cjs/ifx-step.cjs.entry.js +4 -4
- package/dist/cjs/ifx-stepper.cjs.entry.js +2 -2
- package/dist/cjs/ifx-switch.cjs.entry.js +1 -1
- package/dist/cjs/ifx-tab.cjs.entry.js +1 -1
- package/dist/cjs/ifx-table.cjs.entry.js +2 -2
- package/dist/cjs/ifx-tabs.cjs.entry.js +2 -2
- package/dist/cjs/ifx-tag.cjs.entry.js +1 -1
- package/dist/cjs/ifx-templates-ui.cjs.entry.js +1 -1
- package/dist/cjs/ifx-textarea.cjs.entry.js +1 -1
- package/dist/cjs/ifx-tooltip.cjs.entry.js +4 -4
- package/dist/cjs/ifx-tree-view-item.cjs.entry.js +2 -2
- package/dist/cjs/ifx-tree-view.cjs.entry.js +1 -1
- package/dist/cjs/infineon-design-system-stencil.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/search-field/search-field.css +114 -0
- package/dist/collection/components/search-field/search-field.js +724 -17
- package/dist/collection/components/search-field/search-field.js.map +1 -1
- package/dist/collection/components/search-field/search-field.stories.js +378 -2
- package/dist/collection/components/search-field/search-field.stories.js.map +1 -1
- package/dist/collection/components/segmented-control/segment/segment.js +1 -1
- package/dist/collection/components/segmented-control/segmented-control.js +2 -2
- package/dist/collection/components/select/multi-select/multiselect-option.js +4 -4
- package/dist/collection/components/select/single-select/select.js +2 -2
- package/dist/collection/components/slider/slider.js +2 -2
- package/dist/collection/components/spinner/spinner.js +2 -2
- package/dist/collection/components/status/status.js +1 -1
- package/dist/collection/components/stepper/step/step.js +4 -4
- package/dist/collection/components/stepper/stepper.js +2 -2
- package/dist/collection/components/switch/switch.js +1 -1
- package/dist/collection/components/table-advanced-version/filter-bar/filter-bar.js +1 -1
- package/dist/collection/components/table-advanced-version/filter-type-group/filter-accordion/filter-accordion.js +2 -2
- package/dist/collection/components/table-advanced-version/filter-type-group/filter-search/filter-search.js +1 -1
- package/dist/collection/components/table-advanced-version/filter-type-group/filter-type-group.js +1 -1
- package/dist/collection/components/table-advanced-version/list/list-entry/list-entry.js +1 -1
- package/dist/collection/components/table-advanced-version/table.js +2 -2
- package/dist/collection/components/table-basic-version/table.js +1 -1
- package/dist/collection/components/tabs/tab.js +1 -1
- package/dist/collection/components/tabs/tabs.js +2 -2
- package/dist/collection/components/tag/tag.js +1 -1
- package/dist/collection/components/templates/template/template.js +1 -1
- package/dist/collection/components/templates/templates-ui/templates-ui.js +1 -1
- package/dist/collection/components/text-field/text-field.js +4 -4
- package/dist/collection/components/textarea/textarea.js +1 -1
- package/dist/collection/components/tooltip/tooltip.js +4 -4
- package/dist/collection/components/tree-view/tree-view-item.js +2 -2
- package/dist/collection/components/tree-view/tree-view.js +1 -1
- package/dist/collection/stories/setup-and-installation/faq/faq.js +1 -1
- package/dist/components/ifx-basic-table.js +1 -1
- package/dist/components/ifx-faq.js +1 -1
- package/dist/components/ifx-filter-accordion.js +2 -2
- package/dist/components/ifx-filter-bar.js +1 -1
- package/dist/components/ifx-filter-search.js +2 -2
- package/dist/components/ifx-filter-type-group.js +1 -1
- package/dist/components/ifx-icons-preview.js +1 -1
- package/dist/components/ifx-list-entry.js +1 -1
- package/dist/components/ifx-multiselect-option.js +1 -1
- package/dist/components/ifx-multiselect.js +1 -1
- package/dist/components/ifx-pagination.js +1 -1
- package/dist/components/ifx-search-bar.js +1 -1
- package/dist/components/ifx-search-field.js +1 -1
- package/dist/components/ifx-segment.js +1 -1
- package/dist/components/ifx-segmented-control.js +2 -2
- package/dist/components/ifx-select.js +1 -1
- package/dist/components/ifx-set-filter.js +5 -5
- package/dist/components/ifx-slider.js +2 -2
- package/dist/components/ifx-spinner.js +1 -1
- package/dist/components/ifx-status.js +1 -1
- package/dist/components/ifx-step.js +4 -4
- package/dist/components/ifx-stepper.js +2 -2
- package/dist/components/ifx-switch.js +1 -1
- package/dist/components/ifx-tab.js +1 -1
- package/dist/components/ifx-table.js +4 -4
- package/dist/components/ifx-tabs.js +2 -2
- package/dist/components/ifx-tag.js +1 -1
- package/dist/components/ifx-template.js +1 -1
- package/dist/components/ifx-templates-ui.js +4 -4
- package/dist/components/ifx-text-field.js +1 -1
- package/dist/components/ifx-textarea.js +1 -1
- package/dist/components/ifx-tooltip.js +4 -4
- package/dist/components/ifx-tree-view-item.js +2 -2
- package/dist/components/ifx-tree-view.js +1 -1
- package/dist/components/{p-31696649.js → p-0218abcd.js} +5 -5
- package/dist/components/{p-31696649.js.map → p-0218abcd.js.map} +1 -1
- package/dist/components/{p-6a9e1fb6.js → p-122e79fc.js} +3 -3
- package/dist/components/{p-6a9e1fb6.js.map → p-122e79fc.js.map} +1 -1
- package/dist/components/{p-da273970.js → p-43438af8.js} +4 -4
- package/dist/components/{p-da273970.js.map → p-43438af8.js.map} +1 -1
- package/dist/components/{p-bfc8b82f.js → p-5853a3c8.js} +2 -2
- package/dist/components/{p-bfc8b82f.js.map → p-5853a3c8.js.map} +1 -1
- package/dist/components/{p-cb92983f.js → p-96237222.js} +3 -3
- package/dist/components/{p-cb92983f.js.map → p-96237222.js.map} +1 -1
- package/dist/components/{p-8cbf32a7.js → p-c601034d.js} +2 -2
- package/dist/components/{p-8cbf32a7.js.map → p-c601034d.js.map} +1 -1
- package/dist/components/p-c7297dfd.js +471 -0
- package/dist/components/p-c7297dfd.js.map +1 -0
- package/dist/components/{p-c5f7a0e2.js → p-f9c7ad2e.js} +5 -5
- package/dist/components/{p-c5f7a0e2.js.map → p-f9c7ad2e.js.map} +1 -1
- package/dist/esm/ifx-alert_2.entry.js +1 -1
- package/dist/esm/ifx-basic-table.entry.js +1 -1
- package/dist/esm/ifx-faq.entry.js +1 -1
- package/dist/esm/ifx-filter-accordion.entry.js +2 -2
- package/dist/esm/ifx-filter-bar.entry.js +1 -1
- package/dist/esm/ifx-filter-search.entry.js +1 -1
- package/dist/esm/ifx-filter-type-group.entry.js +1 -1
- package/dist/esm/ifx-list-entry.entry.js +1 -1
- package/dist/esm/ifx-multiselect_2.entry.js +4 -4
- package/dist/esm/ifx-search-field.entry.js +349 -12
- package/dist/esm/ifx-search-field.entry.js.map +1 -1
- package/dist/esm/ifx-segment.entry.js +1 -1
- package/dist/esm/ifx-segmented-control.entry.js +2 -2
- package/dist/esm/ifx-select.entry.js +2 -2
- package/dist/esm/ifx-slider.entry.js +2 -2
- package/dist/esm/ifx-spinner_2.entry.js +6 -6
- package/dist/esm/ifx-status.entry.js +1 -1
- package/dist/esm/ifx-step.entry.js +4 -4
- package/dist/esm/ifx-stepper.entry.js +2 -2
- package/dist/esm/ifx-switch.entry.js +1 -1
- package/dist/esm/ifx-tab.entry.js +1 -1
- package/dist/esm/ifx-table.entry.js +2 -2
- package/dist/esm/ifx-tabs.entry.js +2 -2
- package/dist/esm/ifx-tag.entry.js +1 -1
- package/dist/esm/ifx-templates-ui.entry.js +1 -1
- package/dist/esm/ifx-textarea.entry.js +1 -1
- package/dist/esm/ifx-tooltip.entry.js +4 -4
- package/dist/esm/ifx-tree-view-item.entry.js +2 -2
- package/dist/esm/ifx-tree-view.entry.js +1 -1
- package/dist/esm/infineon-design-system-stencil.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/infineon-design-system-stencil/infineon-design-system-stencil.esm.js +1 -1
- package/dist/infineon-design-system-stencil/infineon-design-system-stencil.esm.js.map +1 -1
- package/dist/infineon-design-system-stencil/{p-7adee2dd.entry.js → p-0cbdafca.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/{p-2d7159a9.entry.js → p-10ef115a.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/{p-f544fb03.entry.js → p-1e7646b7.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/{p-0c1c831c.entry.js → p-253ea47f.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/{p-09a8d63d.entry.js → p-273a91b3.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/{p-3d037fa4.entry.js → p-33b46161.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/{p-a2a44fbe.entry.js → p-37be5d65.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/{p-18a81f5f.entry.js → p-3bce1f22.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/{p-e5091718.entry.js → p-3dd8bdf4.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/{p-6c2698a3.entry.js → p-6ec8258a.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/{p-71e34467.entry.js → p-706a8ead.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/p-7705c159.entry.js +2 -0
- package/dist/infineon-design-system-stencil/{p-1e0d789f.entry.js → p-8e838717.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/{p-4eda4ef3.entry.js → p-8eab207b.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/{p-8ecae73b.entry.js → p-9be0905e.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/{p-90efbef9.entry.js → p-9cfe025d.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/{p-bca4f6c8.entry.js → p-b393c1e7.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/p-b83380f8.entry.js +2 -0
- package/dist/infineon-design-system-stencil/{p-e172e81c.entry.js.map → p-b83380f8.entry.js.map} +1 -1
- package/dist/infineon-design-system-stencil/{p-04d8ea38.entry.js → p-caef0e47.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/{p-36dcebde.entry.js → p-d3d6a562.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/p-d4b4107a.entry.js +2 -0
- package/dist/infineon-design-system-stencil/p-d4b4107a.entry.js.map +1 -0
- package/dist/infineon-design-system-stencil/{p-c36df3ce.entry.js → p-d660ebea.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/{p-59c3ac10.entry.js → p-d8a57524.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/{p-84d4d6a1.entry.js → p-e196740d.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/{p-2e931b0d.entry.js → p-e45d85fc.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/{p-437973f5.entry.js → p-e61d3fc6.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/{p-c7e86c7c.entry.js → p-ed30fb98.entry.js} +2 -2
- package/dist/infineon-design-system-stencil/{p-05d9aa1f.entry.js → p-f84af2e3.entry.js} +2 -2
- package/dist/types/components/search-field/search-field.d.ts +53 -2
- package/dist/types/components/search-field/search-field.stories.d.ts +191 -0
- package/dist/types/components.d.ts +42 -2
- package/package.json +1 -1
- package/dist/components/p-c6e5f94d.js +0 -115
- package/dist/components/p-c6e5f94d.js.map +0 -1
- package/dist/infineon-design-system-stencil/p-c164c83b.entry.js +0 -2
- package/dist/infineon-design-system-stencil/p-c164c83b.entry.js.map +0 -1
- package/dist/infineon-design-system-stencil/p-e172e81c.entry.js +0 -2
- package/dist/infineon-design-system-stencil/p-e571c002.entry.js +0 -2
- /package/dist/infineon-design-system-stencil/{p-7adee2dd.entry.js.map → p-0cbdafca.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-2d7159a9.entry.js.map → p-10ef115a.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-f544fb03.entry.js.map → p-1e7646b7.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-0c1c831c.entry.js.map → p-253ea47f.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-09a8d63d.entry.js.map → p-273a91b3.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-3d037fa4.entry.js.map → p-33b46161.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-a2a44fbe.entry.js.map → p-37be5d65.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-18a81f5f.entry.js.map → p-3bce1f22.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-e5091718.entry.js.map → p-3dd8bdf4.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-6c2698a3.entry.js.map → p-6ec8258a.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-71e34467.entry.js.map → p-706a8ead.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-e571c002.entry.js.map → p-7705c159.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-1e0d789f.entry.js.map → p-8e838717.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-4eda4ef3.entry.js.map → p-8eab207b.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-8ecae73b.entry.js.map → p-9be0905e.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-90efbef9.entry.js.map → p-9cfe025d.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-bca4f6c8.entry.js.map → p-b393c1e7.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-04d8ea38.entry.js.map → p-caef0e47.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-36dcebde.entry.js.map → p-d3d6a562.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-c36df3ce.entry.js.map → p-d660ebea.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-59c3ac10.entry.js.map → p-d8a57524.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-84d4d6a1.entry.js.map → p-e196740d.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-2e931b0d.entry.js.map → p-e45d85fc.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-437973f5.entry.js.map → p-e61d3fc6.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-c7e86c7c.entry.js.map → p-ed30fb98.entry.js.map} +0 -0
- /package/dist/infineon-design-system-stencil/{p-05d9aa1f.entry.js.map → p-f84af2e3.entry.js.map} +0 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"search-field.js","sourceRoot":"","sources":["../../../src/components/search-field/search-field.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, EventEmitter, h, Event, Prop, Watch, State, Listen, Element } from '@stencil/core';\nimport { trackComponent } from '../../global/utils/tracking'; \nimport { isNestedInIfxComponent } from '../../global/utils/dom-utils';\nimport classNames from 'classnames';\n\n@Component({\n tag: 'ifx-search-field',\n styleUrl: 'search-field.scss',\n shadow: true\n})\n\n\nexport class SearchField {\n @Element() el;\n private inputElement: HTMLInputElement;\n @Prop({ mutable: true }) value: string = '';\n\n @Event() ifxInput: EventEmitter<String>;\n @State() insideDropdown: boolean = false;\n\n @Prop() showDeleteIcon: boolean = false;\n @State() showDeleteIconInternalState: boolean = false;\n @Prop() disabled: boolean = false;\n @Prop() size: string = 'l';\n @State() isFocused: boolean = false;\n @Prop() placeholder: string = \"Search...\";\n @Prop() autocomplete: string = \"on\";\n @Prop() maxlength?: number = null; \n\n @Listen('mousedown', { target: 'document' })\n handleOutsideClick(event: MouseEvent) {\n const path = event.composedPath();\n if (!path.includes(this.inputElement)) {\n this.isFocused = false;\n }\n }\n\n @Watch('value')\n valueWatcher(newValue: string) {\n if (newValue !== this.inputElement.value) {\n this.inputElement.value = newValue;\n }\n }\n\n\n handleInput = () => {\n const query = this.inputElement.value;\n this.value = query; // update the value property when input changes\n this.ifxInput.emit(this.value);\n };\n\n handleDelete = () => {\n this.inputElement.value = '';\n this.value = \"\";\n this.ifxInput.emit(this.value);\n }\n\n focusInput() {\n this.inputElement.focus();\n this.isFocused = true;\n }\n\n componentWillLoad() { \n if(!isNestedInIfxComponent(this.el)) { \n trackComponent('ifx-search-field')\n }\n }\n \n componentWillUpdate() {\n if (this.value !== \"\") {\n this.showDeleteIconInternalState = true;\n } else this.showDeleteIconInternalState = false;\n }\n\n render() {\n return (\n <div aria-label=\"a search field for user input\" aria-disabled={this.disabled} aria-value={this.value} class='search-field'>\n <div class={this.getWrapperClassNames()}\n tabindex={1}\n onFocus={() => this.focusInput()}\n onClick={() => this.focusInput()}\n >\n <ifx-icon icon=\"search-16\" class=\"search-icon\"></ifx-icon>\n <input\n ref={(el) => (this.inputElement = el)}\n type=\"text\"\n autocomplete={this.autocomplete}\n onInput={() => this.handleInput()}\n placeholder={this.placeholder}\n disabled={this.disabled}\n maxlength={this.maxlength}\n value={this.value} // bind the value property to input element\n />\n {this.showDeleteIcon && this.showDeleteIconInternalState ? (\n <ifx-icon icon=\"cRemove16\" class=\"delete-icon\" onClick={this.handleDelete}>\n </ifx-icon>\n ) : null}\n </div>\n </div>\n );\n }\n\n getSizeClass() {\n return `${this.size}` === \"s\"\n ? \"search-field__wrapper-s\"\n : \"\";\n }\n\n\n getWrapperClassNames() {\n return classNames(\n `search-field__wrapper`,\n `search-field__wrapper ${this.getSizeClass()}`,\n `${this.isFocused ? 'focused' : \"\"}`\n );\n }\n}"]}
|
1
|
+
{"version":3,"file":"search-field.js","sourceRoot":"","sources":["../../../src/components/search-field/search-field.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, EventEmitter, h, Event, Prop, Watch, State, Listen, Element } from '@stencil/core';\nimport { trackComponent } from '../../global/utils/tracking';\nimport { isNestedInIfxComponent } from '../../global/utils/dom-utils';\nimport classNames from 'classnames';\n\nexport interface SuggestionItem {\n id: string;\n text: string;\n type?: 'suggestion' | 'history';\n scope?: string;\n resultCount?: number;\n metadata?: any;\n}\n\n@Component({\n tag: 'ifx-search-field',\n styleUrl: 'search-field.scss',\n shadow: true\n})\n\nexport class SearchField {\n @Element() el;\n private inputElement: HTMLInputElement;\n private dropdownElement: HTMLDivElement;\n\n @Prop({ mutable: true }) value: string = '';\n @Prop() suggestions: SuggestionItem[] = [];\n @Prop() showSuggestions: boolean = false;\n @Prop() maxSuggestions: number = 10;\n @Prop() maxHistoryItems: number = 5;\n @Prop() enableHistory: boolean = true;\n @Prop() historyKey: string = 'ifx-search-history';\n @Prop() historyHeaderText: string = 'Recent Searches';\n\n // ARIA Labels and Accessibility Props\n @Prop() ariaLabel: string = 'Search field';\n @Prop() ariaLabelledBy?: string;\n @Prop() ariaDescribedBy?: string;\n @Prop() deleteIconAriaLabel: string = 'Clear search';\n @Prop() historyDeleteAriaLabel: string = 'Remove from history';\n @Prop() dropdownAriaLabel: string = 'Search suggestions and history';\n @Prop() suggestionAriaLabel: string = 'Search suggestion';\n @Prop() historyItemAriaLabel: string = 'Search history item';\n\n @Event() ifxInput: EventEmitter<string>;\n @Event() ifxSuggestionRequested: EventEmitter<string>;\n @Event() ifxSuggestionSelected: EventEmitter<SuggestionItem>;\n @Event() ifxFocus: EventEmitter<void>;\n @Event() ifxBlur: EventEmitter<void>;\n\n @State() showDropdown: boolean = false;\n @State() filteredSuggestions: SuggestionItem[] = [];\n @State() selectedSuggestionIndex: number = -1;\n @State() searchHistory: string[] = [];\n\n @Prop() showDeleteIcon: boolean = false;\n @State() showDeleteIconInternalState: boolean = false;\n @Prop() disabled: boolean = false;\n @Prop() size: string = 'l';\n @State() isFocused: boolean = false;\n @Prop() placeholder: string = \"Search...\";\n @Prop() autocomplete: string = \"off\";\n @Prop() maxlength?: number = null;\n\n private focusEmitted: boolean = false;\n\n componentDidLoad() {\n this.loadSearchHistory();\n }\n\n @Listen('mousedown', { target: 'document' })\n handleOutsideClick(event: MouseEvent) {\n const path = event.composedPath();\n if (!path.includes(this.inputElement) && !path.includes(this.dropdownElement)) {\n this.hideDropdown();\n }\n }\n\n @Listen('keydown')\n handleKeyDown(event: KeyboardEvent) {\n if (!this.showDropdown) return;\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.navigateSuggestions(1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.navigateSuggestions(-1);\n break;\n case 'Enter':\n event.preventDefault();\n if (this.selectedSuggestionIndex >= 0) {\n this.selectSuggestion(this.filteredSuggestions[this.selectedSuggestionIndex]);\n } else {\n this.handleSearch();\n }\n break;\n case 'Escape':\n this.hideDropdown();\n break;\n }\n }\n\n @Watch('value')\n valueWatcher(newValue: string) {\n if (this.inputElement && newValue !== this.inputElement.value) {\n this.inputElement.value = newValue;\n }\n this.updateSuggestions();\n }\n\n @Watch('suggestions')\n suggestionsWatcher() {\n this.updateSuggestions();\n }\n\n\n handleInput = () => {\n const query = this.inputElement.value;\n this.value = query;\n this.ifxInput.emit(this.value);\n\n if (this.showSuggestions) {\n this.showDropdown = true;\n this.selectedSuggestionIndex = -1;\n this.requestSuggestions(query);\n }\n };\n\n handleDelete = () => {\n this.inputElement.value = '';\n this.value = \"\";\n this.ifxInput.emit(this.value);\n this.hideDropdown();\n }\n\n handleSearch = () => {\n if (this.value.trim() && this.enableHistory) {\n // Only add to history if there are actual results\n if (this.filteredSuggestions.length > 0) {\n this.addToHistory(this.value);\n }\n }\n this.hideDropdown();\n }\n\n focusInput() {\n // Don't call focus() if the input is already focused to prevent unnecessary operations\n if (document.activeElement !== this.inputElement) {\n this.inputElement.focus();\n }\n\n // Only emit focus event if it hasn't been emitted already\n if (!this.focusEmitted) {\n this.focusEmitted = true;\n this.isFocused = true;\n this.ifxFocus.emit();\n }\n\n if (this.showSuggestions) {\n // On focus without input: Show only history\n if (this.value.length === 0) {\n this.showHistoryDropdown();\n // Only show dropdown if history is actually present\n this.showDropdown = this.enableHistory && this.searchHistory.length > 0;\n } else {\n // With existing input: Normal suggestion logic\n this.updateSuggestions();\n this.showDropdown = this.filteredSuggestions.length > 0;\n }\n }\n }\n\n blurInput() {\n setTimeout(() => {\n this.isFocused = false;\n this.focusEmitted = false; // Reset focus flag when blur occurs\n this.ifxBlur.emit();\n }, 150);\n }\n\n // Public method to update history from external sources\n public loadSearchHistory() {\n if (this.enableHistory && typeof localStorage !== 'undefined') {\n const stored = localStorage.getItem(this.historyKey);\n this.searchHistory = stored ? JSON.parse(stored) : [];\n\n // Update suggestions when history is loaded\n this.updateSuggestions();\n\n // If no input and no history left, close dropdown\n if (this.value.length === 0 && this.searchHistory.length === 0) {\n this.showDropdown = false;\n }\n }\n }\n\n // Public method to completely clear history\n public clearSearchHistory() {\n if (this.enableHistory && typeof localStorage !== 'undefined') {\n // Clear from localStorage\n localStorage.removeItem(this.historyKey);\n\n // Clear internal history\n this.searchHistory = [];\n\n // Reset all dropdown-relevant states\n this.filteredSuggestions = [];\n this.selectedSuggestionIndex = -1;\n this.showDropdown = false;\n\n // Update suggestions after reset\n this.updateSuggestions();\n }\n }\n\n // Suggestion Management Methods\n private addToHistory(term: string) {\n if (!this.enableHistory || !term.trim()) return;\n\n const history = [...this.searchHistory];\n const existingIndex = history.indexOf(term);\n\n if (existingIndex > -1) {\n history.splice(existingIndex, 1);\n }\n\n history.unshift(term);\n // Limit history to maxHistoryItems (default 5)\n this.searchHistory = history.slice(0, this.maxHistoryItems);\n\n if (typeof localStorage !== 'undefined') {\n localStorage.setItem(this.historyKey, JSON.stringify(this.searchHistory));\n }\n }\n\n // Remove individual history entry\n private removeFromHistory(term: string) {\n if (!this.enableHistory) return;\n\n const history = [...this.searchHistory];\n const index = history.indexOf(term);\n\n if (index > -1) {\n history.splice(index, 1);\n this.searchHistory = history;\n\n // Update localStorage\n if (typeof localStorage !== 'undefined') {\n localStorage.setItem(this.historyKey, JSON.stringify(this.searchHistory));\n }\n\n // Update suggestions after removal\n this.updateSuggestions();\n\n // Close dropdown if no history remains\n if (this.searchHistory.length === 0 && this.value.length === 0) {\n this.showDropdown = false;\n }\n }\n }\n\n // Handle click on history delete button\n private handleHistoryDelete = (event: Event, term: string) => {\n event.stopPropagation(); // Prevent selection of the entry\n this.removeFromHistory(term);\n }\n\n private requestSuggestions(query: string) {\n this.ifxSuggestionRequested.emit(query);\n this.updateSuggestions();\n }\n\n private updateSuggestions() {\n const query = this.value.toLowerCase();\n let suggestions: SuggestionItem[] = [];\n\n if (query.length > 0) {\n // For text input: Mix external suggestions and relevant history\n\n // 1. Filter external suggestions\n if (this.suggestions && this.suggestions.length > 0) {\n const filteredExternal = this.suggestions.filter(s =>\n s.text.toLowerCase().includes(query)\n );\n suggestions = [...suggestions, ...filteredExternal];\n }\n\n // 2. Filter relevant history entries\n if (this.enableHistory && this.searchHistory.length > 0) {\n const filteredHistory = this.searchHistory\n .filter(term => term.toLowerCase().includes(query))\n .map((term, index) => ({\n id: `history-${index}`,\n text: term,\n type: 'history' as const\n }));\n suggestions = [...suggestions, ...filteredHistory];\n }\n\n // 3. Sort by relevance (exact matches first, then prefix matches)\n suggestions.sort((a, b) => {\n const aText = a.text.toLowerCase();\n const bText = b.text.toLowerCase();\n\n // Exact match has highest priority\n if (aText === query && bText !== query) return -1;\n if (bText === query && aText !== query) return 1;\n\n // Prefix match has second highest priority\n const aStartsWith = aText.startsWith(query);\n const bStartsWith = bText.startsWith(query);\n\n if (aStartsWith && !bStartsWith) return -1;\n if (bStartsWith && !aStartsWith) return 1;\n\n // With equal relevance: external suggestions before history\n if (a.type === 'suggestion' && b.type === 'history') return -1;\n if (a.type === 'history' && b.type === 'suggestion') return 1;\n\n // Alphabetical sorting as last criterion\n return aText.localeCompare(bText);\n });\n\n } else {\n // For empty query: Show only history (no external suggestions)\n if (this.enableHistory && this.searchHistory.length > 0) {\n const historySuggestions = this.searchHistory.map((term, index) => ({\n id: `history-${index}`,\n text: term,\n type: 'history' as const\n }));\n\n suggestions = historySuggestions;\n }\n // For empty query DO NOT show external suggestions\n }\n\n // Remove duplicates based on text and scope combination (history takes precedence over external)\n const uniqueSuggestions = suggestions.reduce((unique: SuggestionItem[], current) => {\n const existingIndex = unique.findIndex(item =>\n item.text.toLowerCase() === current.text.toLowerCase() &&\n item.scope === current.scope\n );\n if (existingIndex === -1) {\n unique.push(current);\n } else {\n // If already exists, prefer history over external suggestions\n if (current.type === 'history' && unique[existingIndex].type !== 'history') {\n unique[existingIndex] = current;\n }\n }\n return unique;\n }, []);\n\n this.filteredSuggestions = uniqueSuggestions.slice(0, this.maxSuggestions);\n this.selectedSuggestionIndex = -1;\n }\n\n private navigateSuggestions(direction: number) {\n const maxIndex = this.filteredSuggestions.length - 1;\n\n if (direction > 0) {\n this.selectedSuggestionIndex = this.selectedSuggestionIndex < maxIndex\n ? this.selectedSuggestionIndex + 1\n : 0;\n } else {\n this.selectedSuggestionIndex = this.selectedSuggestionIndex > 0\n ? this.selectedSuggestionIndex - 1\n : maxIndex;\n }\n }\n\n private selectSuggestion(suggestion: SuggestionItem) {\n this.value = suggestion.text;\n this.inputElement.value = suggestion.text;\n this.ifxSuggestionSelected.emit(suggestion);\n this.ifxInput.emit(this.value);\n\n if (this.enableHistory) {\n // Always add selected suggestions to history since they are valid results\n this.addToHistory(suggestion.text);\n }\n\n this.hideDropdown();\n }\n\n private hideDropdown() {\n this.showDropdown = false;\n this.selectedSuggestionIndex = -1;\n this.isFocused = false;\n }\n\n // Show only history in dropdown (e.g. on focus without input)\n private showHistoryDropdown() {\n if (this.enableHistory && this.searchHistory.length > 0) {\n // Show only history entries\n const historySuggestions = this.searchHistory.map((term, index) => ({\n id: `history-${index}`,\n text: term,\n type: 'history' as const\n }));\n\n this.filteredSuggestions = historySuggestions.slice(0, this.maxSuggestions);\n this.selectedSuggestionIndex = -1;\n } else {\n this.filteredSuggestions = [];\n }\n }\n\n // Check if only history entries are displayed (without text input)\n private isShowingOnlyHistory(): boolean {\n return this.value.length === 0 &&\n this.filteredSuggestions.length > 0 &&\n this.filteredSuggestions.every(s => s.type === 'history');\n }\n\n // Render text with highlighted matches\n private renderHighlightedText(text: string, query: string) {\n if (!query || query.length === 0) {\n return text;\n }\n\n const lowerText = text.toLowerCase();\n const lowerQuery = query.toLowerCase();\n const index = lowerText.indexOf(lowerQuery);\n\n if (index === -1) {\n return text;\n }\n\n const before = text.substring(0, index);\n const match = text.substring(index, index + query.length);\n const after = text.substring(index + query.length);\n\n return [\n before,\n <strong>{match}</strong>,\n after\n ];\n }\n\n componentWillLoad() {\n if(!isNestedInIfxComponent(this.el)) {\n trackComponent('ifx-search-field')\n }\n }\n\n componentWillUpdate() {\n if (this.value !== \"\") {\n this.showDeleteIconInternalState = true;\n } else this.showDeleteIconInternalState = false;\n }\n\n render() {\n return (\n <div\n aria-label={this.ariaLabel}\n aria-labelledby={this.ariaLabelledBy}\n aria-describedby={this.ariaDescribedBy}\n aria-disabled={this.disabled}\n aria-value={this.value}\n class='search-field'\n >\n <div\n class={this.getWrapperClassNames()}\n tabindex={1}\n onClick={() => this.focusInput()}\n >\n <ifx-icon icon=\"search-16\" class=\"search-icon\"></ifx-icon>\n <input\n ref={(el) => (this.inputElement = el)}\n type=\"text\"\n autocomplete={this.autocomplete}\n onInput={() => this.handleInput()}\n onFocus={() => this.focusInput()}\n onBlur={() => this.blurInput()}\n placeholder={this.placeholder}\n disabled={this.disabled}\n maxlength={this.maxlength}\n value={this.value}\n role=\"combobox\"\n aria-expanded={this.showDropdown}\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-label={this.ariaLabel}\n aria-labelledby={this.ariaLabelledBy}\n aria-describedby={this.ariaDescribedBy}\n aria-owns={this.showDropdown ? 'suggestions-dropdown' : undefined}\n aria-activedescendant={this.selectedSuggestionIndex >= 0 ? `suggestion-${this.selectedSuggestionIndex}` : undefined}\n />\n {this.showDeleteIcon && this.showDeleteIconInternalState ? (\n <ifx-icon\n icon=\"cRemove16\"\n class=\"delete-icon\"\n onClick={this.handleDelete}\n role=\"button\"\n tabindex=\"0\"\n aria-label={this.deleteIconAriaLabel}\n onKeyDown={(event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.handleDelete();\n }\n }}>\n </ifx-icon>\n ) : null}\n </div>\n\n {/* Suggestions Dropdown */}\n {this.showDropdown && this.filteredSuggestions.length > 0 && (\n <div\n ref={(el) => (this.dropdownElement = el)}\n id=\"suggestions-dropdown\"\n class=\"suggestions-dropdown\"\n role=\"listbox\"\n aria-label={this.dropdownAriaLabel}\n >\n {/* History Header - only show when exclusively showing history entries */}\n {this.isShowingOnlyHistory() && (\n <div class=\"suggestions-header\">\n {this.historyHeaderText}\n </div>\n )}\n\n {this.filteredSuggestions.map((suggestion, index) => (\n <div\n key={suggestion.id}\n id={`suggestion-${index}`}\n class={this.getSuggestionClassNames(index)}\n role=\"option\"\n aria-selected={index === this.selectedSuggestionIndex}\n aria-label={`${suggestion.type === 'history' ? this.historyItemAriaLabel : this.suggestionAriaLabel}: ${suggestion.text}${suggestion.scope ? `, ${suggestion.scope}` : ''}${suggestion.resultCount ? `, ${suggestion.resultCount} results` : ''}`}\n onClick={() => this.selectSuggestion(suggestion)}\n onMouseEnter={() => this.selectedSuggestionIndex = index}\n >\n <div class=\"suggestion-content\">\n {suggestion.type === 'history' && (\n <ifx-icon icon=\"history-16\" class=\"suggestion-icon suggestion-icon--history\"></ifx-icon>\n )}\n {suggestion.type === 'suggestion' && (\n <ifx-icon icon=\"search-16\" class=\"suggestion-icon suggestion-icon--suggestion\"></ifx-icon>\n )}\n <span class=\"suggestion-text\">\n <span class=\"suggestion-main-text\">\n {this.renderHighlightedText(suggestion.text, this.value)}\n </span>\n {suggestion.scope && (\n <span class=\"suggestion-scope\">– {suggestion.scope}</span>\n )}\n </span>\n\n {suggestion.resultCount !== undefined && suggestion.scope && (\n <span class=\"suggestion-count\">{suggestion.resultCount}</span>\n )}\n\n {/* Delete Button only for history entries */}\n {suggestion.type === 'history' && (\n <ifx-icon\n icon=\"cross16\"\n class=\"suggestion-delete-icon\"\n role=\"button\"\n tabindex=\"0\"\n aria-label={`${this.historyDeleteAriaLabel}: ${suggestion.text}`}\n onClick={(event) => this.handleHistoryDelete(event, suggestion.text)}\n onKeyDown={(event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.handleHistoryDelete(event, suggestion.text);\n }\n }}\n ></ifx-icon>\n )}\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n }\n\n getSizeClass() {\n return `${this.size}` === \"s\"\n ? \"search-field__wrapper-s\"\n : \"\";\n }\n\n getWrapperClassNames() {\n return classNames(\n `search-field__wrapper`,\n `search-field__wrapper ${this.getSizeClass()}`,\n `${this.isFocused ? 'focused' : \"\"}`,\n `${this.showDropdown ? 'dropdown-open' : \"\"}`\n );\n }\n\n getSuggestionClassNames(index: number) {\n return classNames(\n 'suggestion-item',\n {\n 'suggestion-item--selected': index === this.selectedSuggestionIndex,\n 'suggestion-item--history': this.filteredSuggestions[index]?.type === 'history'\n }\n );\n }\n}\n"]}
|
@@ -1,4 +1,61 @@
|
|
1
1
|
import { action } from "@storybook/addon-actions";
|
2
|
+
// Generic Lorem Ipsum mock suggestions for all stories
|
3
|
+
const genericMockSuggestions = [
|
4
|
+
// Short suggestions without scope
|
5
|
+
{ id: 'short1', text: 'Lorem', type: 'suggestion' },
|
6
|
+
{ id: 'short2', text: 'Ipsum', type: 'suggestion' },
|
7
|
+
{ id: 'short3', text: 'Dolor', type: 'suggestion' },
|
8
|
+
{ id: 'short4', text: 'Sit', type: 'suggestion' },
|
9
|
+
{ id: 'short5', text: 'Amet', type: 'suggestion' },
|
10
|
+
// Medium suggestions with scope
|
11
|
+
{ id: 'medium1', text: 'Lorem ipsum', type: 'suggestion', scope: 'Consectetur', resultCount: 1247 },
|
12
|
+
{ id: 'medium2', text: 'Dolor sit', type: 'suggestion', scope: 'Adipiscing', resultCount: 892 },
|
13
|
+
{ id: 'medium3', text: 'Consectetur adipiscing', type: 'suggestion', scope: 'Elite', resultCount: 567 },
|
14
|
+
{ id: 'medium4', text: 'Sed do eiusmod', type: 'suggestion', scope: 'Tempor', resultCount: 2341 },
|
15
|
+
{ id: 'medium5', text: 'Ut labore', type: 'suggestion', scope: 'Dolore', resultCount: 1098 },
|
16
|
+
// Medium suggestions without scope
|
17
|
+
{ id: 'medium6', text: 'Magna aliqua', type: 'suggestion' },
|
18
|
+
{ id: 'medium7', text: 'Enim ad minim', type: 'suggestion' },
|
19
|
+
{ id: 'medium8', text: 'Veniam quis', type: 'suggestion' },
|
20
|
+
{ id: 'medium9', text: 'Nostrud exercitation', type: 'suggestion' },
|
21
|
+
{ id: 'medium10', text: 'Ullamco laboris', type: 'suggestion' },
|
22
|
+
// Long suggestions with scope and result count
|
23
|
+
{ id: 'long1', text: 'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore', type: 'suggestion', scope: 'Fugiat nulla pariatur', resultCount: 156 },
|
24
|
+
{ id: 'long2', text: 'Excepteur sint occaecat cupidatat non proident sunt in culpa qui officia', type: 'suggestion', scope: 'Deserunt mollit anim', resultCount: 789 },
|
25
|
+
{ id: 'long3', text: 'Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium', type: 'suggestion', scope: 'Doloremque laudantium', resultCount: 234 },
|
26
|
+
// Long suggestions without scope
|
27
|
+
{ id: 'long4', text: 'Totam rem aperiam eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt', type: 'suggestion' },
|
28
|
+
{ id: 'long5', text: 'Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit sed quia consequuntur magni dolores', type: 'suggestion' },
|
29
|
+
// Medium suggestions with scope but no result count
|
30
|
+
{ id: 'scope1', text: 'Neque porro quisquam', type: 'suggestion', scope: 'Adipisci velit' },
|
31
|
+
{ id: 'scope2', text: 'Ut enim ad minima', type: 'suggestion', scope: 'Veniam quis nostrum' },
|
32
|
+
{ id: 'scope3', text: 'Quis autem vel eum', type: 'suggestion', scope: 'Iure reprehenderit' },
|
33
|
+
// Long scope names for truncation testing
|
34
|
+
{ id: 'longscope1', text: 'Temporibus autem', type: 'suggestion', scope: 'Quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet', resultCount: 445 },
|
35
|
+
{ id: 'longscope2', text: 'Et harum quidem', type: 'suggestion', scope: 'Rerum facilis est et expedita distinctio nam libero tempore', resultCount: 1876 },
|
36
|
+
// Very long text for extreme truncation testing
|
37
|
+
{ id: 'extreme1', text: 'At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident', type: 'suggestion', scope: 'Similique sunt in culpa qui officia deserunt mollitia animi id est laborum et dolorum fuga', resultCount: 999 },
|
38
|
+
// Additional variety
|
39
|
+
{ id: 'misc1', text: 'Itaque earum rerum', type: 'suggestion', scope: 'Hic tenetur', resultCount: 1567 },
|
40
|
+
{ id: 'misc2', text: 'Sapiente delectus', type: 'suggestion' },
|
41
|
+
{ id: 'misc3', text: 'Aut reiciendis', type: 'suggestion', scope: 'Voluptatibus maiores', resultCount: 823 },
|
42
|
+
{ id: 'misc4', text: 'Alias consequatur', type: 'suggestion' },
|
43
|
+
{ id: 'misc5', text: 'Aut perferendis', type: 'suggestion', scope: 'Doloribus asperiores', resultCount: 1234 }
|
44
|
+
];
|
45
|
+
// Generic Lorem Ipsum mock history for all stories (limited to 5 items to match maxHistoryItems)
|
46
|
+
const genericMockHistory = [
|
47
|
+
'Lorem ipsum dolor sit amet',
|
48
|
+
'Consectetur adipiscing elit',
|
49
|
+
'Sed do eiusmod tempor',
|
50
|
+
'Ut labore et dolore magna',
|
51
|
+
'Enim ad minim veniam'
|
52
|
+
];
|
53
|
+
// Function to reset history for consistent Storybook demonstrations
|
54
|
+
const resetHistoryForStorybook = (historyKey) => {
|
55
|
+
if (typeof localStorage !== 'undefined') {
|
56
|
+
localStorage.setItem(historyKey, JSON.stringify(genericMockHistory));
|
57
|
+
}
|
58
|
+
};
|
2
59
|
export default {
|
3
60
|
title: 'Components/Search Field',
|
4
61
|
// tags: ['autodocs'],
|
@@ -8,7 +65,19 @@ export default {
|
|
8
65
|
size: 'm',
|
9
66
|
value: '',
|
10
67
|
placeholder: 'Search...',
|
11
|
-
autocomplete: 'on'
|
68
|
+
autocomplete: 'on',
|
69
|
+
showSuggestions: false,
|
70
|
+
enableHistory: true,
|
71
|
+
maxSuggestions: 10,
|
72
|
+
maxHistoryItems: 5,
|
73
|
+
historyKey: 'ifx-search-history',
|
74
|
+
historyHeaderText: 'Recent Searches',
|
75
|
+
ariaLabel: 'Search field',
|
76
|
+
deleteIconAriaLabel: 'Clear search',
|
77
|
+
historyDeleteAriaLabel: 'Remove from history',
|
78
|
+
dropdownAriaLabel: 'Search suggestions and history',
|
79
|
+
suggestionAriaLabel: 'Search suggestion',
|
80
|
+
historyItemAriaLabel: 'Search history item'
|
12
81
|
},
|
13
82
|
argTypes: {
|
14
83
|
showDeleteIcon: {
|
@@ -84,21 +153,328 @@ export default {
|
|
84
153
|
},
|
85
154
|
},
|
86
155
|
},
|
156
|
+
showSuggestions: {
|
157
|
+
description: 'Enables the suggestions dropdown with external suggestions.',
|
158
|
+
control: 'boolean',
|
159
|
+
table: {
|
160
|
+
category: 'Search Suggestions',
|
161
|
+
defaultValue: {
|
162
|
+
summary: false
|
163
|
+
}
|
164
|
+
}
|
165
|
+
},
|
166
|
+
enableHistory: {
|
167
|
+
description: 'Enables search history functionality with localStorage persistence.',
|
168
|
+
control: 'boolean',
|
169
|
+
table: {
|
170
|
+
category: 'Search Suggestions',
|
171
|
+
defaultValue: {
|
172
|
+
summary: true
|
173
|
+
}
|
174
|
+
}
|
175
|
+
},
|
176
|
+
maxSuggestions: {
|
177
|
+
description: 'Maximum number of suggestions to display in the dropdown.',
|
178
|
+
control: 'number',
|
179
|
+
table: {
|
180
|
+
category: 'Search Suggestions',
|
181
|
+
defaultValue: {
|
182
|
+
summary: 10
|
183
|
+
}
|
184
|
+
}
|
185
|
+
},
|
186
|
+
maxHistoryItems: {
|
187
|
+
description: 'Maximum number of history items to store and display.',
|
188
|
+
control: 'number',
|
189
|
+
table: {
|
190
|
+
category: 'Search Suggestions',
|
191
|
+
defaultValue: {
|
192
|
+
summary: 5
|
193
|
+
}
|
194
|
+
}
|
195
|
+
},
|
196
|
+
historyKey: {
|
197
|
+
description: 'LocalStorage key for persisting search history.',
|
198
|
+
control: 'text',
|
199
|
+
table: {
|
200
|
+
category: 'Search Suggestions',
|
201
|
+
defaultValue: {
|
202
|
+
summary: 'ifx-search-history'
|
203
|
+
}
|
204
|
+
}
|
205
|
+
},
|
206
|
+
historyHeaderText: {
|
207
|
+
description: 'Header text displayed above history entries in the dropdown.',
|
208
|
+
control: 'text',
|
209
|
+
table: {
|
210
|
+
category: 'Search Suggestions',
|
211
|
+
defaultValue: {
|
212
|
+
summary: 'Recent Searches'
|
213
|
+
}
|
214
|
+
}
|
215
|
+
},
|
216
|
+
ariaLabel: {
|
217
|
+
description: 'ARIA label for the search field component.',
|
218
|
+
control: 'text',
|
219
|
+
table: {
|
220
|
+
category: 'Accessibility',
|
221
|
+
defaultValue: {
|
222
|
+
summary: 'Search field'
|
223
|
+
}
|
224
|
+
}
|
225
|
+
},
|
226
|
+
ariaLabelledBy: {
|
227
|
+
description: 'ID of element that labels the search field.',
|
228
|
+
control: 'text',
|
229
|
+
table: {
|
230
|
+
category: 'Accessibility'
|
231
|
+
}
|
232
|
+
},
|
233
|
+
ariaDescribedBy: {
|
234
|
+
description: 'ID of element that describes the search field.',
|
235
|
+
control: 'text',
|
236
|
+
table: {
|
237
|
+
category: 'Accessibility'
|
238
|
+
}
|
239
|
+
},
|
240
|
+
deleteIconAriaLabel: {
|
241
|
+
description: 'ARIA label for the delete/clear icon.',
|
242
|
+
control: 'text',
|
243
|
+
table: {
|
244
|
+
category: 'Accessibility',
|
245
|
+
defaultValue: {
|
246
|
+
summary: 'Clear search'
|
247
|
+
}
|
248
|
+
}
|
249
|
+
},
|
250
|
+
historyDeleteAriaLabel: {
|
251
|
+
description: 'ARIA label for history delete buttons.',
|
252
|
+
control: 'text',
|
253
|
+
table: {
|
254
|
+
category: 'Accessibility',
|
255
|
+
defaultValue: {
|
256
|
+
summary: 'Remove from history'
|
257
|
+
}
|
258
|
+
}
|
259
|
+
},
|
260
|
+
dropdownAriaLabel: {
|
261
|
+
description: 'ARIA label for the suggestions dropdown.',
|
262
|
+
control: 'text',
|
263
|
+
table: {
|
264
|
+
category: 'Accessibility',
|
265
|
+
defaultValue: {
|
266
|
+
summary: 'Search suggestions and history'
|
267
|
+
}
|
268
|
+
}
|
269
|
+
},
|
270
|
+
suggestionAriaLabel: {
|
271
|
+
description: 'ARIA label prefix for suggestion items.',
|
272
|
+
control: 'text',
|
273
|
+
table: {
|
274
|
+
category: 'Accessibility',
|
275
|
+
defaultValue: {
|
276
|
+
summary: 'Search suggestion'
|
277
|
+
}
|
278
|
+
}
|
279
|
+
},
|
280
|
+
historyItemAriaLabel: {
|
281
|
+
description: 'ARIA label prefix for history items.',
|
282
|
+
control: 'text',
|
283
|
+
table: {
|
284
|
+
category: 'Accessibility',
|
285
|
+
defaultValue: {
|
286
|
+
summary: 'Search history item'
|
287
|
+
}
|
288
|
+
}
|
289
|
+
},
|
290
|
+
ifxSuggestionRequested: {
|
291
|
+
action: 'ifxSuggestionRequested',
|
292
|
+
description: 'Event triggered when the component requests suggestions for a query.',
|
293
|
+
table: {
|
294
|
+
category: 'custom events',
|
295
|
+
type: {
|
296
|
+
summary: 'Framework integration',
|
297
|
+
detail: 'React: onIfxSuggestionRequested={handleSuggestionRequest}\nVue: @ifxSuggestionRequested="handleSuggestionRequest"\nAngular: (ifxSuggestionRequested)="handleSuggestionRequest()"\nVanillaJs: .addEventListener("ifxSuggestionRequested", (event) => {//handle request});'
|
298
|
+
}
|
299
|
+
}
|
300
|
+
},
|
301
|
+
ifxSuggestionSelected: {
|
302
|
+
action: 'ifxSuggestionSelected',
|
303
|
+
description: 'Event triggered when a suggestion is selected from the dropdown.',
|
304
|
+
table: {
|
305
|
+
category: 'custom events',
|
306
|
+
type: {
|
307
|
+
summary: 'Framework integration',
|
308
|
+
detail: 'React: onIfxSuggestionSelected={handleSuggestionSelection}\nVue: @ifxSuggestionSelected="handleSuggestionSelection"\nAngular: (ifxSuggestionSelected)="handleSuggestionSelection()"\nVanillaJs: .addEventListener("ifxSuggestionSelected", (event) => {//handle selection});'
|
309
|
+
}
|
310
|
+
}
|
311
|
+
},
|
312
|
+
ifxFocus: {
|
313
|
+
action: 'ifxFocus',
|
314
|
+
description: 'Event triggered when the search field receives focus.',
|
315
|
+
table: {
|
316
|
+
category: 'custom events',
|
317
|
+
type: {
|
318
|
+
summary: 'Framework integration',
|
319
|
+
detail: 'React: onIfxFocus={handleFocus}\nVue: @ifxFocus="handleFocus"\nAngular: (ifxFocus)="handleFocus()"\nVanillaJs: .addEventListener("ifxFocus", (event) => {//handle focus});'
|
320
|
+
}
|
321
|
+
}
|
322
|
+
},
|
323
|
+
ifxBlur: {
|
324
|
+
action: 'ifxBlur',
|
325
|
+
description: 'Event triggered when the search field loses focus.',
|
326
|
+
table: {
|
327
|
+
category: 'custom events',
|
328
|
+
type: {
|
329
|
+
summary: 'Framework integration',
|
330
|
+
detail: 'React: onIfxBlur={handleBlur}\nVue: @ifxBlur="handleBlur"\nAngular: (ifxBlur)="handleBlur()"\nVanillaJs: .addEventListener("ifxBlur", (event) => {//handle blur});'
|
331
|
+
}
|
332
|
+
}
|
333
|
+
},
|
87
334
|
},
|
88
335
|
};
|
89
|
-
const DefaultTemplate = ({ disabled, size, showDeleteIcon, placeholder, maxlength, value, autocomplete }) => {
|
336
|
+
const DefaultTemplate = ({ disabled, size, showDeleteIcon, placeholder, maxlength, value, autocomplete, showSuggestions, enableHistory, maxSuggestions, maxHistoryItems, historyKey, historyHeaderText, ariaLabel, ariaLabelledBy, ariaDescribedBy, deleteIconAriaLabel, historyDeleteAriaLabel, dropdownAriaLabel, suggestionAriaLabel, historyItemAriaLabel }) => {
|
90
337
|
const element = document.createElement('ifx-search-field');
|
91
338
|
element.setAttribute('size', size);
|
92
339
|
element.setAttribute('disabled', disabled);
|
93
340
|
element.setAttribute('show-delete-icon', showDeleteIcon);
|
341
|
+
element.setAttribute('show-suggestions', showSuggestions);
|
342
|
+
element.setAttribute('enable-history', enableHistory);
|
343
|
+
element.setAttribute('max-suggestions', maxSuggestions);
|
344
|
+
element.setAttribute('max-history-items', maxHistoryItems);
|
345
|
+
element.setAttribute('history-key', historyKey);
|
346
|
+
element.setAttribute('history-header-text', historyHeaderText);
|
94
347
|
element.setAttribute('value', value);
|
95
348
|
element.setAttribute('autocomplete', autocomplete);
|
96
349
|
if (placeholder != undefined)
|
97
350
|
element.setAttribute('placeholder', placeholder);
|
98
351
|
if (maxlength != undefined)
|
99
352
|
element.setAttribute('maxlength', maxlength);
|
353
|
+
if (ariaLabel != undefined)
|
354
|
+
element.setAttribute('aria-label', ariaLabel);
|
355
|
+
if (ariaLabelledBy != undefined)
|
356
|
+
element.setAttribute('aria-labelledby', ariaLabelledBy);
|
357
|
+
if (ariaDescribedBy != undefined)
|
358
|
+
element.setAttribute('aria-describedby', ariaDescribedBy);
|
359
|
+
if (deleteIconAriaLabel != undefined)
|
360
|
+
element.setAttribute('delete-icon-aria-label', deleteIconAriaLabel);
|
361
|
+
if (historyDeleteAriaLabel != undefined)
|
362
|
+
element.setAttribute('history-delete-aria-label', historyDeleteAriaLabel);
|
363
|
+
if (dropdownAriaLabel != undefined)
|
364
|
+
element.setAttribute('dropdown-aria-label', dropdownAriaLabel);
|
365
|
+
if (suggestionAriaLabel != undefined)
|
366
|
+
element.setAttribute('suggestion-aria-label', suggestionAriaLabel);
|
367
|
+
if (historyItemAriaLabel != undefined)
|
368
|
+
element.setAttribute('history-item-aria-label', historyItemAriaLabel);
|
369
|
+
// Set initial suggestions if showSuggestions is enabled
|
370
|
+
setTimeout(() => {
|
371
|
+
if (showSuggestions) {
|
372
|
+
element.suggestions = genericMockSuggestions;
|
373
|
+
}
|
374
|
+
// Set up initial history if enabled - always reset for consistent demo
|
375
|
+
if (enableHistory && typeof localStorage !== 'undefined') {
|
376
|
+
resetHistoryForStorybook(historyKey);
|
377
|
+
// History will be loaded automatically when the component initializes
|
378
|
+
}
|
379
|
+
}, 100);
|
380
|
+
// Event listeners
|
100
381
|
element.addEventListener('ifxInput', action('ifxInput'));
|
382
|
+
element.addEventListener('ifxSuggestionRequested', action('ifxSuggestionRequested'));
|
383
|
+
element.addEventListener('ifxSuggestionSelected', action('ifxSuggestionSelected'));
|
384
|
+
element.addEventListener('ifxFocus', action('ifxFocus'));
|
385
|
+
element.addEventListener('ifxBlur', action('ifxBlur'));
|
386
|
+
// Handle suggestion requests for Default story
|
387
|
+
element.addEventListener('ifxSuggestionRequested', (event) => {
|
388
|
+
const query = event.detail;
|
389
|
+
if (query && showSuggestions) {
|
390
|
+
// Filter suggestions based on query
|
391
|
+
const filteredSuggestions = genericMockSuggestions.filter(s => s.text.toLowerCase().includes(query.toLowerCase()));
|
392
|
+
element.suggestions = filteredSuggestions;
|
393
|
+
}
|
394
|
+
});
|
101
395
|
return element;
|
102
396
|
};
|
103
397
|
export const Default = DefaultTemplate.bind({});
|
398
|
+
// Template for Dropdown Search Field with suggestions and history
|
399
|
+
const DropdownTemplate = ({ disabled, size, showDeleteIcon, placeholder, maxlength, value, autocomplete, showSuggestions, enableHistory, maxSuggestions, maxHistoryItems, historyKey, historyHeaderText, ariaLabel, ariaLabelledBy, ariaDescribedBy, deleteIconAriaLabel, historyDeleteAriaLabel, dropdownAriaLabel, suggestionAriaLabel, historyItemAriaLabel }) => {
|
400
|
+
const element = document.createElement('ifx-search-field');
|
401
|
+
element.setAttribute('size', size);
|
402
|
+
element.setAttribute('disabled', disabled);
|
403
|
+
element.setAttribute('show-delete-icon', showDeleteIcon);
|
404
|
+
element.setAttribute('show-suggestions', showSuggestions);
|
405
|
+
element.setAttribute('enable-history', enableHistory);
|
406
|
+
element.setAttribute('max-suggestions', maxSuggestions);
|
407
|
+
element.setAttribute('max-history-items', maxHistoryItems);
|
408
|
+
element.setAttribute('history-key', historyKey);
|
409
|
+
element.setAttribute('history-header-text', historyHeaderText);
|
410
|
+
element.setAttribute('value', value);
|
411
|
+
element.setAttribute('autocomplete', autocomplete);
|
412
|
+
if (placeholder != undefined)
|
413
|
+
element.setAttribute('placeholder', placeholder);
|
414
|
+
if (maxlength != undefined)
|
415
|
+
element.setAttribute('maxlength', maxlength);
|
416
|
+
if (ariaLabel != undefined)
|
417
|
+
element.setAttribute('aria-label', ariaLabel);
|
418
|
+
if (ariaLabelledBy != undefined)
|
419
|
+
element.setAttribute('aria-labelledby', ariaLabelledBy);
|
420
|
+
if (ariaDescribedBy != undefined)
|
421
|
+
element.setAttribute('aria-describedby', ariaDescribedBy);
|
422
|
+
if (deleteIconAriaLabel != undefined)
|
423
|
+
element.setAttribute('delete-icon-aria-label', deleteIconAriaLabel);
|
424
|
+
if (historyDeleteAriaLabel != undefined)
|
425
|
+
element.setAttribute('history-delete-aria-label', historyDeleteAriaLabel);
|
426
|
+
if (dropdownAriaLabel != undefined)
|
427
|
+
element.setAttribute('dropdown-aria-label', dropdownAriaLabel);
|
428
|
+
if (suggestionAriaLabel != undefined)
|
429
|
+
element.setAttribute('suggestion-aria-label', suggestionAriaLabel);
|
430
|
+
if (historyItemAriaLabel != undefined)
|
431
|
+
element.setAttribute('history-item-aria-label', historyItemAriaLabel);
|
432
|
+
// Initialize with mock data
|
433
|
+
setTimeout(() => {
|
434
|
+
// Set suggestions - use the same generic mockup as Default story
|
435
|
+
element.suggestions = genericMockSuggestions;
|
436
|
+
// Set up initial history if enabled - always reset for consistent demo
|
437
|
+
if (enableHistory && typeof localStorage !== 'undefined') {
|
438
|
+
resetHistoryForStorybook(historyKey);
|
439
|
+
// History will be loaded automatically when the component initializes
|
440
|
+
}
|
441
|
+
}, 100);
|
442
|
+
// Event listeners
|
443
|
+
element.addEventListener('ifxInput', action('ifxInput'));
|
444
|
+
element.addEventListener('ifxSuggestionRequested', action('ifxSuggestionRequested'));
|
445
|
+
element.addEventListener('ifxSuggestionSelected', action('ifxSuggestionSelected'));
|
446
|
+
element.addEventListener('ifxFocus', action('ifxFocus'));
|
447
|
+
element.addEventListener('ifxBlur', action('ifxBlur'));
|
448
|
+
// Handle suggestion requests
|
449
|
+
element.addEventListener('ifxSuggestionRequested', (event) => {
|
450
|
+
const query = event.detail;
|
451
|
+
if (query) {
|
452
|
+
// Filter suggestions based on query - use the same generic mockup
|
453
|
+
const filteredSuggestions = genericMockSuggestions.filter(s => s.text.toLowerCase().includes(query.toLowerCase()));
|
454
|
+
element.suggestions = filteredSuggestions;
|
455
|
+
}
|
456
|
+
});
|
457
|
+
return element;
|
458
|
+
};
|
459
|
+
export const SearchSuggestions = DropdownTemplate.bind({});
|
460
|
+
SearchSuggestions.args = {
|
461
|
+
showDeleteIcon: true,
|
462
|
+
disabled: false,
|
463
|
+
size: 'm',
|
464
|
+
value: '',
|
465
|
+
placeholder: 'Search with suggestions...',
|
466
|
+
autocomplete: 'off',
|
467
|
+
showSuggestions: true,
|
468
|
+
enableHistory: true,
|
469
|
+
maxSuggestions: 10,
|
470
|
+
maxHistoryItems: 5,
|
471
|
+
historyKey: 'storybook-search-history',
|
472
|
+
historyHeaderText: 'Recent Searches',
|
473
|
+
ariaLabel: 'Search field',
|
474
|
+
deleteIconAriaLabel: 'Clear search',
|
475
|
+
historyDeleteAriaLabel: 'Remove from history',
|
476
|
+
dropdownAriaLabel: 'Search suggestions and history',
|
477
|
+
suggestionAriaLabel: 'Search suggestion',
|
478
|
+
historyItemAriaLabel: 'Search history item'
|
479
|
+
};
|
104
480
|
//# sourceMappingURL=search-field.stories.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"search-field.stories.js","sourceRoot":"","sources":["../../../src/components/search-field/search-field.stories.ts"],"names":[],"mappings":"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","sourcesContent":["import { action } from '@storybook/addon-actions';\n\nexport default {\n title: 'Components/Search Field',\n // tags: ['autodocs'],\n\n args: {\n showDeleteIcon: true,\n disabled: false,\n size: 'm',\n value: '',\n placeholder: 'Search...',\n autocomplete: 'on'\n },\n argTypes: {\n showDeleteIcon: {\n description: 'Determines whether a delete icon is shown in the search field.',\n control: 'boolean',\n table: {\n category: 'ifx-search-field props',\n defaultValue: {\n summary: true\n }\n }\n },\n disabled: {\n description: 'Disables the search field, preventing user interaction.',\n control: 'boolean',\n table: {\n category: 'ifx-search-field props',\n defaultValue: {\n summary: false\n }\n }\n },\n size: {\n description: 'Size options: s (36px) and m (40px) - default: m.',\n control: 'radio',\n options: ['s', 'm'],\n table: {\n category: 'ifx-search-field props',\n defaultValue: {\n summary: 'm'\n }\n }\n },\n placeholder: {\n description: 'Placeholder text displayed in the search field when it is empty.',\n control: 'text',\n table: {\n category: 'ifx-search-field props',\n defaultValue: {\n summary: 'Search...'\n }\n }\n },\n maxlength: {\n description: 'Specifies the maximum number of characters that can be entered into the search field.',\n control: 'number',\n table: {\n category: 'ifx-search-field props'\n }\n },\n value: {\n description: 'The value of the search field. It is used for the form submission.',\n control: 'text',\n table: {\n category: 'ifx-search-field props'\n }\n },\n autocomplete: {\n description: 'Sets the autocomplete attribute. \"on\" by default.',\n control: 'text',\n table: {\n category: 'ifx-search-field props'\n }\n },\n ifxInput: {\n action: 'ifxInput',\n description: 'A custom event triggered whenever there is input in the search field.',\n table: {\n category: 'custom events',\n type: {\n summary: 'Framework integration',\n detail:\n 'React: onIfxInput={handleInput}\\nVue:@ifxInput=\"handleInput\"\\nAngular:(ifxInput)=\"handleInput()\"\\nVanillaJs:.addEventListener(\"ifxInput\", (event) => {//handle input});',\n },\n },\n },\n },\n};\n\nconst DefaultTemplate = ({ disabled, size, showDeleteIcon, placeholder, maxlength, value, autocomplete }) => {\n const element = document.createElement('ifx-search-field');\n element.setAttribute('size', size);\n element.setAttribute('disabled', disabled);\n element.setAttribute('show-delete-icon', showDeleteIcon);\n element.setAttribute('value', value)\n element.setAttribute('autocomplete', autocomplete)\n if (placeholder != undefined) element.setAttribute('placeholder', placeholder);\n if (maxlength != undefined) element.setAttribute('maxlength', maxlength);\n element.addEventListener('ifxInput', action('ifxInput'));\n\n return element;\n};\n\nexport const Default = DefaultTemplate.bind({});\n"]}
|
1
|
+
{"version":3,"file":"search-field.stories.js","sourceRoot":"","sources":["../../../src/components/search-field/search-field.stories.ts"],"names":[],"mappings":"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","sourcesContent":["import { action } from '@storybook/addon-actions';\n\n// Generic Lorem Ipsum mock suggestions for all stories\nconst genericMockSuggestions = [\n // Short suggestions without scope\n { id: 'short1', text: 'Lorem', type: 'suggestion' as const },\n { id: 'short2', text: 'Ipsum', type: 'suggestion' as const },\n { id: 'short3', text: 'Dolor', type: 'suggestion' as const },\n { id: 'short4', text: 'Sit', type: 'suggestion' as const },\n { id: 'short5', text: 'Amet', type: 'suggestion' as const },\n\n // Medium suggestions with scope\n { id: 'medium1', text: 'Lorem ipsum', type: 'suggestion' as const, scope: 'Consectetur', resultCount: 1247 },\n { id: 'medium2', text: 'Dolor sit', type: 'suggestion' as const, scope: 'Adipiscing', resultCount: 892 },\n { id: 'medium3', text: 'Consectetur adipiscing', type: 'suggestion' as const, scope: 'Elite', resultCount: 567 },\n { id: 'medium4', text: 'Sed do eiusmod', type: 'suggestion' as const, scope: 'Tempor', resultCount: 2341 },\n { id: 'medium5', text: 'Ut labore', type: 'suggestion' as const, scope: 'Dolore', resultCount: 1098 },\n\n // Medium suggestions without scope\n { id: 'medium6', text: 'Magna aliqua', type: 'suggestion' as const },\n { id: 'medium7', text: 'Enim ad minim', type: 'suggestion' as const },\n { id: 'medium8', text: 'Veniam quis', type: 'suggestion' as const },\n { id: 'medium9', text: 'Nostrud exercitation', type: 'suggestion' as const },\n { id: 'medium10', text: 'Ullamco laboris', type: 'suggestion' as const },\n\n // Long suggestions with scope and result count\n { id: 'long1', text: 'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore', type: 'suggestion' as const, scope: 'Fugiat nulla pariatur', resultCount: 156 },\n { id: 'long2', text: 'Excepteur sint occaecat cupidatat non proident sunt in culpa qui officia', type: 'suggestion' as const, scope: 'Deserunt mollit anim', resultCount: 789 },\n { id: 'long3', text: 'Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium', type: 'suggestion' as const, scope: 'Doloremque laudantium', resultCount: 234 },\n\n // Long suggestions without scope\n { id: 'long4', text: 'Totam rem aperiam eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt', type: 'suggestion' as const },\n { id: 'long5', text: 'Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit sed quia consequuntur magni dolores', type: 'suggestion' as const },\n\n // Medium suggestions with scope but no result count\n { id: 'scope1', text: 'Neque porro quisquam', type: 'suggestion' as const, scope: 'Adipisci velit' },\n { id: 'scope2', text: 'Ut enim ad minima', type: 'suggestion' as const, scope: 'Veniam quis nostrum' },\n { id: 'scope3', text: 'Quis autem vel eum', type: 'suggestion' as const, scope: 'Iure reprehenderit' },\n\n // Long scope names for truncation testing\n { id: 'longscope1', text: 'Temporibus autem', type: 'suggestion' as const, scope: 'Quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet', resultCount: 445 },\n { id: 'longscope2', text: 'Et harum quidem', type: 'suggestion' as const, scope: 'Rerum facilis est et expedita distinctio nam libero tempore', resultCount: 1876 },\n\n // Very long text for extreme truncation testing\n { id: 'extreme1', text: 'At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident', type: 'suggestion' as const, scope: 'Similique sunt in culpa qui officia deserunt mollitia animi id est laborum et dolorum fuga', resultCount: 999 },\n\n // Additional variety\n { id: 'misc1', text: 'Itaque earum rerum', type: 'suggestion' as const, scope: 'Hic tenetur', resultCount: 1567 },\n { id: 'misc2', text: 'Sapiente delectus', type: 'suggestion' as const },\n { id: 'misc3', text: 'Aut reiciendis', type: 'suggestion' as const, scope: 'Voluptatibus maiores', resultCount: 823 },\n { id: 'misc4', text: 'Alias consequatur', type: 'suggestion' as const },\n { id: 'misc5', text: 'Aut perferendis', type: 'suggestion' as const, scope: 'Doloribus asperiores', resultCount: 1234 }\n];\n\n// Generic Lorem Ipsum mock history for all stories (limited to 5 items to match maxHistoryItems)\nconst genericMockHistory = [\n 'Lorem ipsum dolor sit amet',\n 'Consectetur adipiscing elit',\n 'Sed do eiusmod tempor',\n 'Ut labore et dolore magna',\n 'Enim ad minim veniam'\n];\n\n// Function to reset history for consistent Storybook demonstrations\nconst resetHistoryForStorybook = (historyKey: string) => {\n if (typeof localStorage !== 'undefined') {\n localStorage.setItem(historyKey, JSON.stringify(genericMockHistory));\n }\n};\n\nexport default {\n title: 'Components/Search Field',\n // tags: ['autodocs'],\n\n args: {\n showDeleteIcon: true,\n disabled: false,\n size: 'm',\n value: '',\n placeholder: 'Search...',\n autocomplete: 'on',\n showSuggestions: false,\n enableHistory: true,\n maxSuggestions: 10,\n maxHistoryItems: 5,\n historyKey: 'ifx-search-history',\n historyHeaderText: 'Recent Searches',\n ariaLabel: 'Search field',\n deleteIconAriaLabel: 'Clear search',\n historyDeleteAriaLabel: 'Remove from history',\n dropdownAriaLabel: 'Search suggestions and history',\n suggestionAriaLabel: 'Search suggestion',\n historyItemAriaLabel: 'Search history item'\n },\n argTypes: {\n showDeleteIcon: {\n description: 'Determines whether a delete icon is shown in the search field.',\n control: 'boolean',\n table: {\n category: 'ifx-search-field props',\n defaultValue: {\n summary: true\n }\n }\n },\n disabled: {\n description: 'Disables the search field, preventing user interaction.',\n control: 'boolean',\n table: {\n category: 'ifx-search-field props',\n defaultValue: {\n summary: false\n }\n }\n },\n size: {\n description: 'Size options: s (36px) and m (40px) - default: m.',\n control: 'radio',\n options: ['s', 'm'],\n table: {\n category: 'ifx-search-field props',\n defaultValue: {\n summary: 'm'\n }\n }\n },\n placeholder: {\n description: 'Placeholder text displayed in the search field when it is empty.',\n control: 'text',\n table: {\n category: 'ifx-search-field props',\n defaultValue: {\n summary: 'Search...'\n }\n }\n },\n maxlength: {\n description: 'Specifies the maximum number of characters that can be entered into the search field.',\n control: 'number',\n table: {\n category: 'ifx-search-field props'\n }\n },\n value: {\n description: 'The value of the search field. It is used for the form submission.',\n control: 'text',\n table: {\n category: 'ifx-search-field props'\n }\n },\n autocomplete: {\n description: 'Sets the autocomplete attribute. \"on\" by default.',\n control: 'text',\n table: {\n category: 'ifx-search-field props'\n }\n },\n ifxInput: {\n action: 'ifxInput',\n description: 'A custom event triggered whenever there is input in the search field.',\n table: {\n category: 'custom events',\n type: {\n summary: 'Framework integration',\n detail:\n 'React: onIfxInput={handleInput}\\nVue:@ifxInput=\"handleInput\"\\nAngular:(ifxInput)=\"handleInput()\"\\nVanillaJs:.addEventListener(\"ifxInput\", (event) => {//handle input});',\n },\n },\n },\n showSuggestions: {\n description: 'Enables the suggestions dropdown with external suggestions.',\n control: 'boolean',\n table: {\n category: 'Search Suggestions',\n defaultValue: {\n summary: false\n }\n }\n },\n enableHistory: {\n description: 'Enables search history functionality with localStorage persistence.',\n control: 'boolean',\n table: {\n category: 'Search Suggestions',\n defaultValue: {\n summary: true\n }\n }\n },\n maxSuggestions: {\n description: 'Maximum number of suggestions to display in the dropdown.',\n control: 'number',\n table: {\n category: 'Search Suggestions',\n defaultValue: {\n summary: 10\n }\n }\n },\n maxHistoryItems: {\n description: 'Maximum number of history items to store and display.',\n control: 'number',\n table: {\n category: 'Search Suggestions',\n defaultValue: {\n summary: 5\n }\n }\n },\n historyKey: {\n description: 'LocalStorage key for persisting search history.',\n control: 'text',\n table: {\n category: 'Search Suggestions',\n defaultValue: {\n summary: 'ifx-search-history'\n }\n }\n },\n historyHeaderText: {\n description: 'Header text displayed above history entries in the dropdown.',\n control: 'text',\n table: {\n category: 'Search Suggestions',\n defaultValue: {\n summary: 'Recent Searches'\n }\n }\n },\n ariaLabel: {\n description: 'ARIA label for the search field component.',\n control: 'text',\n table: {\n category: 'Accessibility',\n defaultValue: {\n summary: 'Search field'\n }\n }\n },\n ariaLabelledBy: {\n description: 'ID of element that labels the search field.',\n control: 'text',\n table: {\n category: 'Accessibility'\n }\n },\n ariaDescribedBy: {\n description: 'ID of element that describes the search field.',\n control: 'text',\n table: {\n category: 'Accessibility'\n }\n },\n deleteIconAriaLabel: {\n description: 'ARIA label for the delete/clear icon.',\n control: 'text',\n table: {\n category: 'Accessibility',\n defaultValue: {\n summary: 'Clear search'\n }\n }\n },\n historyDeleteAriaLabel: {\n description: 'ARIA label for history delete buttons.',\n control: 'text',\n table: {\n category: 'Accessibility',\n defaultValue: {\n summary: 'Remove from history'\n }\n }\n },\n dropdownAriaLabel: {\n description: 'ARIA label for the suggestions dropdown.',\n control: 'text',\n table: {\n category: 'Accessibility',\n defaultValue: {\n summary: 'Search suggestions and history'\n }\n }\n },\n suggestionAriaLabel: {\n description: 'ARIA label prefix for suggestion items.',\n control: 'text',\n table: {\n category: 'Accessibility',\n defaultValue: {\n summary: 'Search suggestion'\n }\n }\n },\n historyItemAriaLabel: {\n description: 'ARIA label prefix for history items.',\n control: 'text',\n table: {\n category: 'Accessibility',\n defaultValue: {\n summary: 'Search history item'\n }\n }\n },\n ifxSuggestionRequested: {\n action: 'ifxSuggestionRequested',\n description: 'Event triggered when the component requests suggestions for a query.',\n table: {\n category: 'custom events',\n type: {\n summary: 'Framework integration',\n detail: 'React: onIfxSuggestionRequested={handleSuggestionRequest}\\nVue: @ifxSuggestionRequested=\"handleSuggestionRequest\"\\nAngular: (ifxSuggestionRequested)=\"handleSuggestionRequest()\"\\nVanillaJs: .addEventListener(\"ifxSuggestionRequested\", (event) => {//handle request});'\n }\n }\n },\n ifxSuggestionSelected: {\n action: 'ifxSuggestionSelected',\n description: 'Event triggered when a suggestion is selected from the dropdown.',\n table: {\n category: 'custom events',\n type: {\n summary: 'Framework integration',\n detail: 'React: onIfxSuggestionSelected={handleSuggestionSelection}\\nVue: @ifxSuggestionSelected=\"handleSuggestionSelection\"\\nAngular: (ifxSuggestionSelected)=\"handleSuggestionSelection()\"\\nVanillaJs: .addEventListener(\"ifxSuggestionSelected\", (event) => {//handle selection});'\n }\n }\n },\n ifxFocus: {\n action: 'ifxFocus',\n description: 'Event triggered when the search field receives focus.',\n table: {\n category: 'custom events',\n type: {\n summary: 'Framework integration',\n detail: 'React: onIfxFocus={handleFocus}\\nVue: @ifxFocus=\"handleFocus\"\\nAngular: (ifxFocus)=\"handleFocus()\"\\nVanillaJs: .addEventListener(\"ifxFocus\", (event) => {//handle focus});'\n }\n }\n },\n ifxBlur: {\n action: 'ifxBlur',\n description: 'Event triggered when the search field loses focus.',\n table: {\n category: 'custom events',\n type: {\n summary: 'Framework integration',\n detail: 'React: onIfxBlur={handleBlur}\\nVue: @ifxBlur=\"handleBlur\"\\nAngular: (ifxBlur)=\"handleBlur()\"\\nVanillaJs: .addEventListener(\"ifxBlur\", (event) => {//handle blur});'\n }\n }\n },\n },\n};\n\nconst DefaultTemplate = ({\n disabled,\n size,\n showDeleteIcon,\n placeholder,\n maxlength,\n value,\n autocomplete,\n showSuggestions,\n enableHistory,\n maxSuggestions,\n maxHistoryItems,\n historyKey,\n historyHeaderText,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n deleteIconAriaLabel,\n historyDeleteAriaLabel,\n dropdownAriaLabel,\n suggestionAriaLabel,\n historyItemAriaLabel\n}) => {\n const element = document.createElement('ifx-search-field');\n element.setAttribute('size', size);\n element.setAttribute('disabled', disabled);\n element.setAttribute('show-delete-icon', showDeleteIcon);\n element.setAttribute('show-suggestions', showSuggestions);\n element.setAttribute('enable-history', enableHistory);\n element.setAttribute('max-suggestions', maxSuggestions);\n element.setAttribute('max-history-items', maxHistoryItems);\n element.setAttribute('history-key', historyKey);\n element.setAttribute('history-header-text', historyHeaderText);\n element.setAttribute('value', value);\n element.setAttribute('autocomplete', autocomplete);\n if (placeholder != undefined) element.setAttribute('placeholder', placeholder);\n if (maxlength != undefined) element.setAttribute('maxlength', maxlength);\n if (ariaLabel != undefined) element.setAttribute('aria-label', ariaLabel);\n if (ariaLabelledBy != undefined) element.setAttribute('aria-labelledby', ariaLabelledBy);\n if (ariaDescribedBy != undefined) element.setAttribute('aria-describedby', ariaDescribedBy);\n if (deleteIconAriaLabel != undefined) element.setAttribute('delete-icon-aria-label', deleteIconAriaLabel);\n if (historyDeleteAriaLabel != undefined) element.setAttribute('history-delete-aria-label', historyDeleteAriaLabel);\n if (dropdownAriaLabel != undefined) element.setAttribute('dropdown-aria-label', dropdownAriaLabel);\n if (suggestionAriaLabel != undefined) element.setAttribute('suggestion-aria-label', suggestionAriaLabel);\n if (historyItemAriaLabel != undefined) element.setAttribute('history-item-aria-label', historyItemAriaLabel);\n\n // Set initial suggestions if showSuggestions is enabled\n setTimeout(() => {\n if (showSuggestions) {\n element.suggestions = genericMockSuggestions;\n }\n\n // Set up initial history if enabled - always reset for consistent demo\n if (enableHistory && typeof localStorage !== 'undefined') {\n resetHistoryForStorybook(historyKey);\n // History will be loaded automatically when the component initializes\n }\n }, 100);\n\n // Event listeners\n element.addEventListener('ifxInput', action('ifxInput'));\n element.addEventListener('ifxSuggestionRequested', action('ifxSuggestionRequested'));\n element.addEventListener('ifxSuggestionSelected', action('ifxSuggestionSelected'));\n element.addEventListener('ifxFocus', action('ifxFocus'));\n element.addEventListener('ifxBlur', action('ifxBlur'));\n\n // Handle suggestion requests for Default story\n element.addEventListener('ifxSuggestionRequested', (event) => {\n const query = event.detail;\n if (query && showSuggestions) {\n // Filter suggestions based on query\n const filteredSuggestions = genericMockSuggestions.filter(s =>\n s.text.toLowerCase().includes(query.toLowerCase())\n );\n element.suggestions = filteredSuggestions;\n }\n });\n\n return element;\n};\n\nexport const Default = DefaultTemplate.bind({});\n\n// Template for Dropdown Search Field with suggestions and history\nconst DropdownTemplate = ({\n disabled,\n size,\n showDeleteIcon,\n placeholder,\n maxlength,\n value,\n autocomplete,\n showSuggestions,\n enableHistory,\n maxSuggestions,\n maxHistoryItems,\n historyKey,\n historyHeaderText,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n deleteIconAriaLabel,\n historyDeleteAriaLabel,\n dropdownAriaLabel,\n suggestionAriaLabel,\n historyItemAriaLabel\n}) => {\n const element = document.createElement('ifx-search-field');\n element.setAttribute('size', size);\n element.setAttribute('disabled', disabled);\n element.setAttribute('show-delete-icon', showDeleteIcon);\n element.setAttribute('show-suggestions', showSuggestions);\n element.setAttribute('enable-history', enableHistory);\n element.setAttribute('max-suggestions', maxSuggestions);\n element.setAttribute('max-history-items', maxHistoryItems);\n element.setAttribute('history-key', historyKey);\n element.setAttribute('history-header-text', historyHeaderText);\n element.setAttribute('value', value);\n element.setAttribute('autocomplete', autocomplete);\n if (placeholder != undefined) element.setAttribute('placeholder', placeholder);\n if (maxlength != undefined) element.setAttribute('maxlength', maxlength);\n if (ariaLabel != undefined) element.setAttribute('aria-label', ariaLabel);\n if (ariaLabelledBy != undefined) element.setAttribute('aria-labelledby', ariaLabelledBy);\n if (ariaDescribedBy != undefined) element.setAttribute('aria-describedby', ariaDescribedBy);\n if (deleteIconAriaLabel != undefined) element.setAttribute('delete-icon-aria-label', deleteIconAriaLabel);\n if (historyDeleteAriaLabel != undefined) element.setAttribute('history-delete-aria-label', historyDeleteAriaLabel);\n if (dropdownAriaLabel != undefined) element.setAttribute('dropdown-aria-label', dropdownAriaLabel);\n if (suggestionAriaLabel != undefined) element.setAttribute('suggestion-aria-label', suggestionAriaLabel);\n if (historyItemAriaLabel != undefined) element.setAttribute('history-item-aria-label', historyItemAriaLabel);\n\n // Initialize with mock data\n setTimeout(() => {\n // Set suggestions - use the same generic mockup as Default story\n element.suggestions = genericMockSuggestions;\n\n // Set up initial history if enabled - always reset for consistent demo\n if (enableHistory && typeof localStorage !== 'undefined') {\n resetHistoryForStorybook(historyKey);\n // History will be loaded automatically when the component initializes\n }\n }, 100);\n\n // Event listeners\n element.addEventListener('ifxInput', action('ifxInput'));\n element.addEventListener('ifxSuggestionRequested', action('ifxSuggestionRequested'));\n element.addEventListener('ifxSuggestionSelected', action('ifxSuggestionSelected'));\n element.addEventListener('ifxFocus', action('ifxFocus'));\n element.addEventListener('ifxBlur', action('ifxBlur'));\n\n // Handle suggestion requests\n element.addEventListener('ifxSuggestionRequested', (event) => {\n const query = event.detail;\n if (query) {\n // Filter suggestions based on query - use the same generic mockup\n const filteredSuggestions = genericMockSuggestions.filter(s =>\n s.text.toLowerCase().includes(query.toLowerCase())\n );\n element.suggestions = filteredSuggestions;\n }\n });\n\n return element;\n};\n\nexport const SearchSuggestions = DropdownTemplate.bind({});\nSearchSuggestions.args = {\n showDeleteIcon: true,\n disabled: false,\n size: 'm',\n value: '',\n placeholder: 'Search with suggestions...',\n autocomplete: 'off',\n showSuggestions: true,\n enableHistory: true,\n maxSuggestions: 10,\n maxHistoryItems: 5,\n historyKey: 'storybook-search-history',\n historyHeaderText: 'Recent Searches',\n ariaLabel: 'Search field',\n deleteIconAriaLabel: 'Clear search',\n historyDeleteAriaLabel: 'Remove from history',\n dropdownAriaLabel: 'Search suggestions and history',\n suggestionAriaLabel: 'Search suggestion',\n historyItemAriaLabel: 'Search history item'\n};\n"]}
|
@@ -18,7 +18,7 @@ export class Segment {
|
|
18
18
|
}
|
19
19
|
}
|
20
20
|
render() {
|
21
|
-
return (h("div", { key: '
|
21
|
+
return (h("div", { key: 'cd801960a7ce5e8112b0d544a0122ded889cfc1f', class: `segment ${this.selected ? 'segment--selected' : ''}`, tabIndex: 0, onClick: () => { this.handleSegmentClick(); }, onKeyDown: (e) => { this.handleSegmentKeyDown(e); } }, h("ifx-icon", { key: 'c81cddf4a652f00324cbc0b8a31c3598c1b62a08', icon: this.icon }), " ", h("slot", { key: '7b9786b4b20e69eaf30b5a6d140decff95e04423' })));
|
22
22
|
}
|
23
23
|
static get is() { return "ifx-segment"; }
|
24
24
|
static get encapsulation() { return "shadow"; }
|