@paperless/core 0.1.0-alpha.357 → 0.1.0-alpha.359

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/{paperless/p-4ab4b747.entry.js → build/p-50789b59.entry.js} +2 -2
  3. package/dist/{paperless/p-c74a98f3.entry.js → build/p-a6cb73df.entry.js} +2 -2
  4. package/dist/build/p-a6cb73df.entry.js.map +1 -0
  5. package/dist/build/{p-5dfab26d.entry.js → p-d644c554.entry.js} +2 -2
  6. package/dist/build/{p-5dfab26d.entry.js.map → p-d644c554.entry.js.map} +1 -1
  7. package/dist/build/{p-5b7d4518.entry.js → p-e20ff8c8.entry.js} +2 -2
  8. package/dist/build/{p-3d68b72f.entry.js → p-e3ae145a.entry.js} +2 -2
  9. package/dist/build/{p-3d68b72f.entry.js.map → p-e3ae145a.entry.js.map} +1 -1
  10. package/dist/build/paperless.esm.js +1 -1
  11. package/dist/cjs/p-attachment.cjs.entry.js +1 -1
  12. package/dist/cjs/p-backdrop.cjs.entry.js +1 -1
  13. package/dist/cjs/p-backdrop.cjs.entry.js.map +1 -1
  14. package/dist/cjs/p-button_3.cjs.entry.js +3 -3
  15. package/dist/cjs/p-button_3.cjs.entry.js.map +1 -1
  16. package/dist/cjs/p-select.cjs.entry.js +14 -6
  17. package/dist/cjs/p-select.cjs.entry.js.map +1 -1
  18. package/dist/cjs/p-tooltip.cjs.entry.js +1 -1
  19. package/dist/collection/components/atoms/backdrop/backdrop.component.css +1 -1
  20. package/dist/collection/components/atoms/button/button.component.css +1 -1
  21. package/dist/collection/components/atoms/icon/icon.component.css +1 -1
  22. package/dist/collection/components/atoms/loader/loader.component.css +1 -1
  23. package/dist/collection/components/atoms/tooltip/tooltip.component.css +1 -1
  24. package/dist/collection/components/molecules/attachment/attachment.component.css +1 -1
  25. package/dist/collection/components/molecules/select/select.component.js +14 -6
  26. package/dist/collection/components/molecules/select/select.component.js.map +1 -1
  27. package/dist/components/backdrop.component.js +1 -1
  28. package/dist/components/backdrop.component.js.map +1 -1
  29. package/dist/components/button.component.js +1 -1
  30. package/dist/components/button.component.js.map +1 -1
  31. package/dist/components/icon.component.js +1 -1
  32. package/dist/components/icon.component.js.map +1 -1
  33. package/dist/components/loader.component.js +1 -1
  34. package/dist/components/loader.component.js.map +1 -1
  35. package/dist/components/p-attachment.js +1 -1
  36. package/dist/components/p-select.js +14 -6
  37. package/dist/components/p-select.js.map +1 -1
  38. package/dist/components/tooltip.component.js +1 -1
  39. package/dist/esm/p-attachment.entry.js +1 -1
  40. package/dist/esm/p-backdrop.entry.js +1 -1
  41. package/dist/esm/p-backdrop.entry.js.map +1 -1
  42. package/dist/esm/p-button_3.entry.js +3 -3
  43. package/dist/esm/p-button_3.entry.js.map +1 -1
  44. package/dist/esm/p-select.entry.js +14 -6
  45. package/dist/esm/p-select.entry.js.map +1 -1
  46. package/dist/esm/p-tooltip.entry.js +1 -1
  47. package/dist/index.html +1 -1
  48. package/dist/{build/p-4ab4b747.entry.js → paperless/p-50789b59.entry.js} +2 -2
  49. package/dist/{build/p-c74a98f3.entry.js → paperless/p-a6cb73df.entry.js} +2 -2
  50. package/dist/paperless/p-a6cb73df.entry.js.map +1 -0
  51. package/dist/paperless/{p-5dfab26d.entry.js → p-d644c554.entry.js} +2 -2
  52. package/dist/paperless/{p-5dfab26d.entry.js.map → p-d644c554.entry.js.map} +1 -1
  53. package/dist/paperless/{p-5b7d4518.entry.js → p-e20ff8c8.entry.js} +2 -2
  54. package/dist/paperless/{p-3d68b72f.entry.js → p-e3ae145a.entry.js} +2 -2
  55. package/dist/paperless/{p-3d68b72f.entry.js.map → p-e3ae145a.entry.js.map} +1 -1
  56. package/dist/paperless/paperless.esm.js +1 -1
  57. package/dist/sw.js +1 -1
  58. package/dist/sw.js.map +1 -1
  59. package/hydrate/index.js +20 -12
  60. package/package.json +1 -1
  61. package/dist/build/p-c74a98f3.entry.js.map +0 -1
  62. package/dist/paperless/p-c74a98f3.entry.js.map +0 -1
  63. /package/dist/build/{p-4ab4b747.entry.js.map → p-50789b59.entry.js.map} +0 -0
  64. /package/dist/build/{p-5b7d4518.entry.js.map → p-e20ff8c8.entry.js.map} +0 -0
  65. /package/dist/paperless/{p-4ab4b747.entry.js.map → p-50789b59.entry.js.map} +0 -0
  66. /package/dist/paperless/{p-5b7d4518.entry.js.map → p-e20ff8c8.entry.js.map} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paperless/core",
3
- "version": "0.1.0-alpha.357",
3
+ "version": "0.1.0-alpha.359",
4
4
  "description": "Stencil Component Starter",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.js",
@@ -1 +0,0 @@
1
- {"version":3,"names":["selectComponentCss","Select","this","_isAutoCompleting","_items","items","loading","JSON","parse","displayKey","valueKey","map","str","value","text","_a","query","length","asyncFilter","filter","item","queryKey","_checkvalue","_identifierKey","slice","maxDisplayedItems","_displayValue","_selectedItem","_placeholder","autocompletePlaceholder","placeholder","identifierKey","componentDidLoad","_valueChange","autoSelectFirst","render","h","Host","class","disableTriggerClick","calculateWidth","insideClick","show","_showDropdown","slot","icon","size","prefix","label","helper","error","disabled","focused","type","onFocus","_onFocus","onMouseDown","ev","_onMouseDown","onClick","_onClick","onInput","_onChange","ref","_inputRef","showChevron","variant","_getLoadingItems","_getItems","documentClickHandler","target","childOf","_el","_preselectItem","itemChanges","_showDropdownChanges","dropdownShown","emit","undefined","parsedValue","stringify","find","i","_selectValue","valueChange","console","log","_onBlur","enableAutocomplete","blur","preventDefault","force","queryChange","key","_b","toString","toLowerCase","indexOf","_c","active","enableHover"],"sources":["./src/components/molecules/select/select.component.scss?tag=p-select","./src/components/molecules/select/select.component.tsx"],"sourcesContent":[":host {\n @apply flex flex-col;\n\n input.read-only {\n @apply text-ellipsis;\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { childOf } from '../../../utils';\nimport { IconVariant } from '../../atoms/icon/icon.component';\n\n@Component({\n tag: 'p-select',\n styleUrl: 'select.component.scss',\n shadow: false,\n})\nexport class Select {\n /**\n * The items to show in the dropdown\n */\n @Prop() items: string | any[];\n\n /**\n * Icon of the select box\n */\n @Prop() icon: IconVariant;\n\n /**\n * The current query\n */\n @Prop() query: string;\n\n /**\n * The placeholder of the input\n */\n @Prop() placeholder: string;\n\n /**\n * The placeholder of the input when auto completing\n */\n @Prop() autocompletePlaceholder: string;\n\n /**\n * The current value\n */\n @Prop() value: any;\n\n /**\n * The key of the object to display\n */\n @Prop() displayKey: string = 'text';\n\n /**\n * The key of the object to return\n */\n @Prop() valueKey: string = 'value';\n\n /**\n * The key to identify an object\n */\n @Prop() identifierKey: string;\n\n /**\n * The key of the object to display\n */\n @Prop() queryKey?: string;\n\n /**\n * Wether to automatically select the first item\n */\n @Prop() autoSelectFirst: boolean = true;\n\n /**\n * Wether to show the chevron or not\n */\n @Prop() showChevron: boolean = true;\n\n /**\n * The maximum amount of items to display\n */\n @Prop() maxDisplayedItems: number = 10;\n\n /**\n * Wether to enable autocomplete\n */\n @Prop() enableAutocomplete: boolean = true;\n\n /**\n * Wether the input uses async filtering\n */\n @Prop() asyncFilter: boolean = false;\n\n /**\n * Wether to show loading items\n */\n @Prop() loading: boolean = false;\n\n /**\n * Event when the query of the autocomplete changes\n */\n @Event() queryChange: EventEmitter<string>;\n\n /**\n * Event when the value changes\n */\n @Event() valueChange: EventEmitter<any>;\n\n /**\n * Event when the dropdown shows\n */\n @Event() dropdownShown: EventEmitter<any>;\n\n /**\n * The size of the input group used by the select\n */\n @Prop() size: 'small' | 'medium' = 'medium';\n\n /**\n * The prefix of the input group used by the select\n */\n @Prop() prefix: string;\n\n /**\n * The label of the input group used by the select\n */\n @Prop() label: string;\n\n /**\n * The helper of the input group used by the select\n */\n @Prop() helper: string;\n\n /**\n * The helper of the input group used by the select\n */\n @Prop({ reflect: true }) error: string;\n\n /**\n * Wether the input group is disabled used by the select\n */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /**\n * The host element\n */\n @Element() private _el: HTMLElement;\n\n @State() private _showDropdown: any = false;\n @State() private _selectedItem: any = null;\n\n private _isAutoCompleting: boolean = false;\n\n private _inputRef: HTMLInputElement;\n\n get _items() {\n if (!this.items || this.loading) {\n return [];\n }\n\n let items =\n typeof this.items === 'string'\n ? JSON.parse(this.items)\n : this.items;\n\n if (typeof items?.[0] === 'string') {\n this.displayKey = 'text';\n this.valueKey = 'value';\n\n items = items.map((str) => ({\n value: str,\n text: str,\n }));\n }\n\n if (this._isAutoCompleting && this.query?.length && !this.asyncFilter) {\n items = items.filter((item) => {\n if (this.queryKey) {\n return this._checkvalue(this.queryKey, item);\n }\n\n return (\n this._checkvalue(this._identifierKey, item) ||\n this._checkvalue(this.displayKey, item)\n );\n });\n }\n\n return items?.slice(0, this.maxDisplayedItems);\n }\n\n get _displayValue() {\n if (this._isAutoCompleting) {\n return this.query;\n }\n\n return this._selectedItem?.[this.displayKey];\n }\n\n get _placeholder() {\n return this._isAutoCompleting && this.autocompletePlaceholder?.length\n ? this.autocompletePlaceholder\n : this.placeholder;\n }\n\n get _identifierKey() {\n return this.identifierKey ?? this.valueKey;\n }\n\n componentDidLoad() {\n if (this.value) {\n this._valueChange(this.value);\n return;\n }\n\n if (this.autoSelectFirst) {\n this._selectedItem = this._items?.[0];\n }\n }\n\n render() {\n return (\n <Host class=\"p-select\">\n <p-dropdown\n disableTriggerClick={true}\n calculateWidth={true}\n insideClick={true}\n show={\n this._showDropdown &&\n (!!this._items.length || this.loading)\n }\n >\n <p-input-group\n slot=\"trigger\"\n icon={this.icon}\n size={this.size}\n prefix={this.prefix}\n label={this.label}\n helper={this.helper}\n error={this.error}\n disabled={this.disabled}\n focused={this._showDropdown}\n >\n <input\n slot=\"input\"\n type=\"text\"\n placeholder={this._placeholder}\n value={this._displayValue}\n class={`p-input cursor-pointer ${\n !this._isAutoCompleting && 'read-only'\n }`}\n onFocus={() => this._onFocus()}\n onMouseDown={(ev) => this._onMouseDown(ev)}\n onClick={() => this._onClick()}\n onInput={(ev) => this._onChange(ev)}\n ref={(ref) => (this._inputRef = ref)}\n />\n\n {this.showChevron && (\n <p-icon variant=\"chevron\" slot=\"suffix\" />\n )}\n </p-input-group>\n <div slot=\"items\">\n {this.loading\n ? this._getLoadingItems()\n : this._getItems()}\n </div>\n </p-dropdown>\n </Host>\n );\n }\n\n @Listen('click', { target: 'document', capture: true })\n protected documentClickHandler({ target }) {\n if (!this._showDropdown || childOf(target, this._el)) {\n return;\n }\n\n this._showDropdown = false;\n this._isAutoCompleting = false;\n }\n\n @Watch('value')\n private _valueChange(value: any) {\n this._preselectItem(value);\n }\n\n @Watch('items')\n public itemChanges() {\n this._preselectItem();\n }\n\n @Watch('_showDropdown')\n public _showDropdownChanges() {\n this.dropdownShown.emit({\n value: this._showDropdown,\n query: this.query,\n });\n }\n\n private _preselectItem(value?: any) {\n value = value === undefined ? null : value;\n value = !!this.value ? this.value : value;\n value =\n !!this.valueKey?.length && this.valueKey !== 'false'\n ? value\n : value[this._identifierKey];\n const parsedValue = JSON.stringify(value);\n\n if (\n this._selectedItem &&\n JSON.stringify(this._selectedItem[this._identifierKey]) ===\n parsedValue\n ) {\n return;\n }\n\n const item = this._items.find(\n (i) => JSON.stringify(i?.[this._identifierKey]) === parsedValue\n );\n\n this._selectedItem = item;\n }\n\n private _selectValue(item) {\n this._selectedItem = item;\n const value =\n !!this.valueKey?.length && this.valueKey !== 'false'\n ? item[this.valueKey]\n : item;\n\n this.value = value;\n this.valueChange.emit(this.value);\n\n console.log(this.value);\n this._onBlur(true);\n }\n\n private _onFocus() {\n if (!this.enableAutocomplete) {\n this._inputRef.blur();\n if (!this._showDropdown) {\n this._showDropdown = true;\n }\n return;\n }\n\n this._isAutoCompleting = true;\n\n this._showDropdown = true;\n }\n\n private _onMouseDown(ev) {\n if (this.enableAutocomplete) {\n return;\n }\n\n ev.preventDefault();\n }\n\n private _onClick() {\n if (this.enableAutocomplete) {\n return;\n }\n\n this._showDropdown = !this._showDropdown;\n }\n\n private _onBlur(force = false) {\n if (!this.enableAutocomplete && !force) {\n return;\n }\n\n this._isAutoCompleting = false;\n this._showDropdown = false;\n }\n\n private _onChange(ev) {\n if (!this._isAutoCompleting) {\n return;\n }\n\n this.query = ev.target.value;\n this.queryChange.emit(this.query);\n }\n\n private _checkvalue(key, item) {\n return (\n item?.[key]\n ?.toString()\n ?.toLowerCase()\n .indexOf(this.query?.toLowerCase()) >= 0\n );\n }\n\n private _getItems() {\n return this._items.map((item) => (\n <p-dropdown-menu-item\n onClick={() => this._selectValue(item)}\n active={\n item[this._identifierKey] ===\n this._selectedItem?.[this._identifierKey]\n }\n >\n {item[this.displayKey]}\n </p-dropdown-menu-item>\n ));\n }\n\n private _getLoadingItems() {\n return [0, 0, 0].map(() => (\n <p-dropdown-menu-item enableHover={false}>\n <p-loader variant=\"ghost\" class=\"h-6 w-full rounded\" />\n </p-dropdown-menu-item>\n ));\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["selectComponentCss","Select","this","_isAutoCompleting","_items","items","loading","JSON","parse","displayKey","valueKey","map","str","value","text","_a","query","length","asyncFilter","filter","item","queryKey","_checkvalue","_identifierKey","slice","maxDisplayedItems","_displayValue","_selectedItem","_placeholder","autocompletePlaceholder","placeholder","identifierKey","componentDidLoad","_valueChange","autoSelectFirst","render","h","Host","class","disableTriggerClick","calculateWidth","insideClick","show","_showDropdown","slot","icon","size","prefix","label","helper","error","disabled","focused","type","onFocus","_onFocus","onMouseDown","ev","_onMouseDown","onClick","_onClick","onInput","_onChange","ref","_inputRef","showChevron","variant","_getLoadingItems","_getItems","documentClickHandler","target","childOf","_el","_preselectItem","itemChanges","_showDropdownChanges","dropdownShown","emit","undefined","parsedValue","stringify","find","i","_selectValue","valueChange","console","log","_onBlur","enableAutocomplete","blur","preventDefault","force","queryChange","key","_b","toString","toLowerCase","indexOf","_c","active","enableHover"],"sources":["./src/components/molecules/select/select.component.scss?tag=p-select","./src/components/molecules/select/select.component.tsx"],"sourcesContent":[":host {\n @apply flex flex-col;\n\n input.read-only {\n @apply text-ellipsis;\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { childOf } from '../../../utils';\nimport { IconVariant } from '../../atoms/icon/icon.component';\n\n@Component({\n tag: 'p-select',\n styleUrl: 'select.component.scss',\n shadow: false,\n})\nexport class Select {\n /**\n * The items to show in the dropdown\n */\n @Prop() items: string | any[];\n\n /**\n * Icon of the select box\n */\n @Prop() icon: IconVariant;\n\n /**\n * The current query\n */\n @Prop() query: string;\n\n /**\n * The placeholder of the input\n */\n @Prop() placeholder: string;\n\n /**\n * The placeholder of the input when auto completing\n */\n @Prop() autocompletePlaceholder: string;\n\n /**\n * The current value\n */\n @Prop() value: any;\n\n /**\n * The key of the object to display\n */\n @Prop() displayKey: string = 'text';\n\n /**\n * The key of the object to return\n */\n @Prop() valueKey: string = 'value';\n\n /**\n * The key to identify an object\n */\n @Prop() identifierKey: string;\n\n /**\n * The key of the object to display\n */\n @Prop() queryKey?: string;\n\n /**\n * Wether to automatically select the first item\n */\n @Prop() autoSelectFirst: boolean = true;\n\n /**\n * Wether to show the chevron or not\n */\n @Prop() showChevron: boolean = true;\n\n /**\n * The maximum amount of items to display\n */\n @Prop() maxDisplayedItems: number = 10;\n\n /**\n * Wether to enable autocomplete\n */\n @Prop() enableAutocomplete: boolean = true;\n\n /**\n * Wether the input uses async filtering\n */\n @Prop() asyncFilter: boolean = false;\n\n /**\n * Wether to show loading items\n */\n @Prop() loading: boolean = false;\n\n /**\n * Event when the query of the autocomplete changes\n */\n @Event() queryChange: EventEmitter<string>;\n\n /**\n * Event when the value changes\n */\n @Event() valueChange: EventEmitter<any>;\n\n /**\n * Event when the dropdown shows\n */\n @Event() dropdownShown: EventEmitter<any>;\n\n /**\n * The size of the input group used by the select\n */\n @Prop() size: 'small' | 'medium' = 'medium';\n\n /**\n * The prefix of the input group used by the select\n */\n @Prop() prefix: string;\n\n /**\n * The label of the input group used by the select\n */\n @Prop() label: string;\n\n /**\n * The helper of the input group used by the select\n */\n @Prop() helper: string;\n\n /**\n * The helper of the input group used by the select\n */\n @Prop({ reflect: true }) error: string;\n\n /**\n * Wether the input group is disabled used by the select\n */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /**\n * The host element\n */\n @Element() private _el: HTMLElement;\n\n @State() private _showDropdown: any = false;\n @State() private _selectedItem: any = null;\n\n private _isAutoCompleting: boolean = false;\n\n private _inputRef: HTMLInputElement;\n\n get _items() {\n if (!this.items || this.loading) {\n return [];\n }\n\n let items =\n typeof this.items === 'string'\n ? JSON.parse(this.items)\n : this.items;\n\n if (typeof items?.[0] === 'string') {\n this.displayKey = 'text';\n this.valueKey = 'value';\n\n items = items.map((str) => ({\n value: str,\n text: str,\n }));\n }\n\n if (this._isAutoCompleting && this.query?.length && !this.asyncFilter) {\n items = items.filter((item) => {\n if (this.queryKey) {\n return this._checkvalue(this.queryKey, item);\n }\n\n return (\n this._checkvalue(this._identifierKey, item) ||\n this._checkvalue(this.displayKey, item)\n );\n });\n }\n\n return items?.slice(0, this.maxDisplayedItems);\n }\n\n get _displayValue() {\n if (this._isAutoCompleting) {\n return this.query;\n }\n\n return this._selectedItem?.[this.displayKey];\n }\n\n get _placeholder() {\n return this._isAutoCompleting && this.autocompletePlaceholder?.length\n ? this.autocompletePlaceholder\n : this.placeholder;\n }\n\n get _identifierKey() {\n return this.identifierKey ?? this.valueKey;\n }\n\n componentDidLoad() {\n if (this.value) {\n this._valueChange(this.value);\n return;\n }\n\n if (this.autoSelectFirst) {\n this._selectedItem = this._items?.[0];\n }\n }\n\n render() {\n return (\n <Host class=\"p-select\">\n <p-dropdown\n disableTriggerClick={true}\n calculateWidth={true}\n insideClick={true}\n show={\n this._showDropdown &&\n (!!this._items.length || this.loading)\n }\n >\n <p-input-group\n slot=\"trigger\"\n icon={this.icon}\n size={this.size}\n prefix={this.prefix}\n label={this.label}\n helper={this.helper}\n error={this.error}\n disabled={this.disabled}\n focused={this._showDropdown}\n >\n <input\n slot=\"input\"\n type=\"text\"\n placeholder={this._placeholder}\n value={this._displayValue}\n class={`p-input cursor-pointer ${\n !this._isAutoCompleting && 'read-only'\n }`}\n onFocus={() => this._onFocus()}\n onMouseDown={(ev) => this._onMouseDown(ev)}\n onClick={() => this._onClick()}\n onInput={(ev) => this._onChange(ev)}\n ref={(ref) => (this._inputRef = ref)}\n />\n\n {this.showChevron && (\n <p-icon variant=\"chevron\" slot=\"suffix\" />\n )}\n </p-input-group>\n <div slot=\"items\">\n {this.loading\n ? this._getLoadingItems()\n : this._getItems()}\n </div>\n </p-dropdown>\n </Host>\n );\n }\n\n @Listen('click', { target: 'document', capture: true })\n protected documentClickHandler({ target }) {\n if (!this._showDropdown || childOf(target, this._el)) {\n return;\n }\n\n this._showDropdown = false;\n this._isAutoCompleting = false;\n }\n\n @Watch('value')\n private _valueChange(value: any) {\n this._preselectItem(value);\n }\n\n @Watch('items')\n public itemChanges() {\n this._preselectItem();\n }\n\n @Watch('_showDropdown')\n public _showDropdownChanges() {\n this.dropdownShown.emit({\n value: this._showDropdown,\n query: this.query,\n });\n }\n\n private _preselectItem(value?: any) {\n value = value === undefined ? null : value;\n value = !!this.value ? this.value : value;\n value =\n !!this.valueKey?.length && this.valueKey !== 'false'\n ? value\n : value[this._identifierKey];\n const parsedValue = JSON.stringify(value);\n\n if (\n this._selectedItem &&\n JSON.stringify(this._selectedItem[this._identifierKey]) ===\n parsedValue\n ) {\n return;\n }\n\n const item = this._items.find(\n (i) => JSON.stringify(i?.[this._identifierKey]) === parsedValue\n );\n\n this._selectedItem = item;\n }\n\n private _selectValue(item) {\n this._selectedItem = item;\n const value =\n !!this.valueKey?.length && this.valueKey !== 'false'\n ? item[this.valueKey]\n : item;\n\n this.value = value;\n this.valueChange.emit(this.value);\n\n console.log(this.value);\n this._onBlur(true);\n }\n\n private _onFocus() {\n if (!this.enableAutocomplete) {\n this._inputRef.blur();\n if (!this._showDropdown) {\n this._showDropdown = true;\n }\n return;\n }\n\n this._isAutoCompleting = true;\n\n this._showDropdown = true;\n }\n\n private _onMouseDown(ev) {\n if (this.enableAutocomplete) {\n return;\n }\n\n ev.preventDefault();\n }\n\n private _onClick() {\n if (this.enableAutocomplete) {\n return;\n }\n\n this._showDropdown = !this._showDropdown;\n }\n\n private _onBlur(force = false) {\n if (!this.enableAutocomplete && !force) {\n return;\n }\n\n this._isAutoCompleting = false;\n this._showDropdown = false;\n }\n\n private _onChange(ev) {\n if (!this._isAutoCompleting) {\n return;\n }\n\n this.query = ev.target.value;\n this.queryChange.emit(this.query);\n }\n\n private _checkvalue(key, item) {\n return (\n item?.[key]\n ?.toString()\n ?.toLowerCase()\n .indexOf(this.query?.toLowerCase()) >= 0\n );\n }\n\n private _getItems() {\n return this._items.map((item) => (\n <p-dropdown-menu-item\n onClick={() => this._selectValue(item)}\n active={\n item[this._identifierKey] ===\n this._selectedItem?.[this._identifierKey]\n }\n >\n {item[this.displayKey]}\n </p-dropdown-menu-item>\n ));\n }\n\n private _getLoadingItems() {\n return [0, 0, 0].map(() => (\n <p-dropdown-menu-item enableHover={false}>\n <p-loader variant=\"ghost\" class=\"h-6 w-full rounded\" />\n </p-dropdown-menu-item>\n ));\n }\n}\n"],"mappings":"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"}