@searchcraft/javascript-sdk 0.1.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/LICENSE +201 -0
- package/dist/cjs/app-globals-3a1e7e63.js +7 -0
- package/dist/cjs/app-globals-3a1e7e63.js.map +1 -0
- package/dist/cjs/index-0c2339c7.js +1226 -0
- package/dist/cjs/index-0c2339c7.js.map +1 -0
- package/dist/cjs/index.cjs.js +12 -0
- package/dist/cjs/index.cjs.js.map +1 -0
- package/dist/cjs/loader.cjs.js +17 -0
- package/dist/cjs/loader.cjs.js.map +1 -0
- package/dist/cjs/sc-auto-search-form.cjs.entry.js +101 -0
- package/dist/cjs/sc-auto-search-form.cjs.entry.js.map +1 -0
- package/dist/cjs/sc-base-search-form_11.cjs.entry.js +471 -0
- package/dist/cjs/sc-base-search-form_11.cjs.entry.js.map +1 -0
- package/dist/cjs/sc-spinner-light-a3bfc8e6.js +20 -0
- package/dist/cjs/sc-spinner-light-a3bfc8e6.js.map +1 -0
- package/dist/cjs/sc-spinner-light.cjs.entry.js +12 -0
- package/dist/cjs/sc-spinner-light.cjs.entry.js.map +1 -0
- package/dist/cjs/searchcraft-javascript-sdk.cjs.js +27 -0
- package/dist/cjs/searchcraft-javascript-sdk.cjs.js.map +1 -0
- package/dist/cjs/store-6c259dd0.js +251 -0
- package/dist/cjs/store-6c259dd0.js.map +1 -0
- package/dist/collection/assets/ButtonIcons.js +3 -0
- package/dist/collection/assets/ButtonIcons.js.map +1 -0
- package/dist/collection/assets/ClearInputIcon.js +6 -0
- package/dist/collection/assets/ClearInputIcon.js.map +1 -0
- package/dist/collection/assets/SearchIcons.js +6 -0
- package/dist/collection/assets/SearchIcons.js.map +1 -0
- package/dist/collection/collection-manifest.json +24 -0
- package/dist/collection/components/sc-auto-search-form/sc-auto-search-form.js +275 -0
- package/dist/collection/components/sc-auto-search-form/sc-auto-search-form.js.map +1 -0
- package/dist/collection/components/sc-auto-search-form/sc-auto-search-form.module.css +16 -0
- package/dist/collection/components/sc-base-search-form/sc-base-search-form.js +168 -0
- package/dist/collection/components/sc-base-search-form/sc-base-search-form.js.map +1 -0
- package/dist/collection/components/sc-base-search-form/sc-base-search-form.module.css +14 -0
- package/dist/collection/components/sc-base-search-result/sc-base-search-result.js +242 -0
- package/dist/collection/components/sc-base-search-result/sc-base-search-result.js.map +1 -0
- package/dist/collection/components/sc-base-search-result/sc-base-search-result.module.css +170 -0
- package/dist/collection/components/sc-base-search-results/sc-base-search-results.js +58 -0
- package/dist/collection/components/sc-base-search-results/sc-base-search-results.js.map +1 -0
- package/dist/collection/components/sc-base-search-results/sc-base-search-results.module.css +20 -0
- package/dist/collection/components/sc-button/sc-button.js +137 -0
- package/dist/collection/components/sc-button/sc-button.js.map +1 -0
- package/dist/collection/components/sc-button/sc-button.module.css +82 -0
- package/dist/collection/components/sc-clear-input-button/sc-clear-input-button.js +99 -0
- package/dist/collection/components/sc-clear-input-button/sc-clear-input-button.js.map +1 -0
- package/dist/collection/components/sc-clear-input-button/sc-clear-input-button.module.css +31 -0
- package/dist/collection/components/sc-error-message/sc-error-message.js +64 -0
- package/dist/collection/components/sc-error-message/sc-error-message.js.map +1 -0
- package/dist/collection/components/sc-error-message/sc-error-message.module.css +21 -0
- package/dist/collection/components/sc-input/sc-input.js +251 -0
- package/dist/collection/components/sc-input/sc-input.js.map +1 -0
- package/dist/collection/components/sc-input/sc-input.module.css +224 -0
- package/dist/collection/components/sc-input-caption/sc-input-caption.js +122 -0
- package/dist/collection/components/sc-input-caption/sc-input-caption.js.map +1 -0
- package/dist/collection/components/sc-input-caption/sc-input-caption.module.css +79 -0
- package/dist/collection/components/sc-input-icon/sc-input-icon.js +72 -0
- package/dist/collection/components/sc-input-icon/sc-input-icon.js.map +1 -0
- package/dist/collection/components/sc-input-icon/sc-input-icon.module.css +19 -0
- package/dist/collection/components/sc-input-label/sc-input-label.js +74 -0
- package/dist/collection/components/sc-input-label/sc-input-label.js.map +1 -0
- package/dist/collection/components/sc-input-label/sc-input-label.module.css +21 -0
- package/dist/collection/components/sc-spinner-dark/sc-spinner-dark.js +19 -0
- package/dist/collection/components/sc-spinner-dark/sc-spinner-dark.js.map +1 -0
- package/dist/collection/components/sc-spinner-dark/sc-spinner-dark.module.css +35 -0
- package/dist/collection/components/sc-spinner-light/sc-spinner-light.js +19 -0
- package/dist/collection/components/sc-spinner-light/sc-spinner-light.js.map +1 -0
- package/dist/collection/components/sc-spinner-light/sc-spinner-light.module.css +26 -0
- package/dist/collection/index.js +12 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/collection/provider/store.js +68 -0
- package/dist/collection/provider/store.js.map +1 -0
- package/dist/collection/utils/utils.js +1 -0
- package/dist/collection/utils/utils.js.map +1 -0
- package/dist/components/index.d.ts +33 -0
- package/dist/components/index.js +4 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/p-074239f9.js +34 -0
- package/dist/components/p-074239f9.js.map +1 -0
- package/dist/components/p-184d9504.js +61 -0
- package/dist/components/p-184d9504.js.map +1 -0
- package/dist/components/p-23bdbb1f.js +58 -0
- package/dist/components/p-23bdbb1f.js.map +1 -0
- package/dist/components/p-255a89f7.js +62 -0
- package/dist/components/p-255a89f7.js.map +1 -0
- package/dist/components/p-5410e357.js +108 -0
- package/dist/components/p-5410e357.js.map +1 -0
- package/dist/components/p-5b7b903a.js +71 -0
- package/dist/components/p-5b7b903a.js.map +1 -0
- package/dist/components/p-5cdc6210.js +82 -0
- package/dist/components/p-5cdc6210.js.map +1 -0
- package/dist/components/p-6f0eaec6.js +247 -0
- package/dist/components/p-6f0eaec6.js.map +1 -0
- package/dist/components/p-75be555b.js +54 -0
- package/dist/components/p-75be555b.js.map +1 -0
- package/dist/components/p-79564f07.js +41 -0
- package/dist/components/p-79564f07.js.map +1 -0
- package/dist/components/p-a912a224.js +1062 -0
- package/dist/components/p-a912a224.js.map +1 -0
- package/dist/components/p-b05f23e3.js +18 -0
- package/dist/components/p-b05f23e3.js.map +1 -0
- package/dist/components/p-c47cb37f.js +46 -0
- package/dist/components/p-c47cb37f.js.map +1 -0
- package/dist/components/p-c54fdecb.js +164 -0
- package/dist/components/p-c54fdecb.js.map +1 -0
- package/dist/components/p-dfb43eea.js +34 -0
- package/dist/components/p-dfb43eea.js.map +1 -0
- package/dist/components/sc-auto-search-form.d.ts +11 -0
- package/dist/components/sc-auto-search-form.js +152 -0
- package/dist/components/sc-auto-search-form.js.map +1 -0
- package/dist/components/sc-base-search-form.d.ts +11 -0
- package/dist/components/sc-base-search-form.js +135 -0
- package/dist/components/sc-base-search-form.js.map +1 -0
- package/dist/components/sc-base-search-result.d.ts +11 -0
- package/dist/components/sc-base-search-result.js +8 -0
- package/dist/components/sc-base-search-result.js.map +1 -0
- package/dist/components/sc-base-search-results.d.ts +11 -0
- package/dist/components/sc-base-search-results.js +83 -0
- package/dist/components/sc-base-search-results.js.map +1 -0
- package/dist/components/sc-button.d.ts +11 -0
- package/dist/components/sc-button.js +8 -0
- package/dist/components/sc-button.js.map +1 -0
- package/dist/components/sc-clear-input-button.d.ts +11 -0
- package/dist/components/sc-clear-input-button.js +8 -0
- package/dist/components/sc-clear-input-button.js.map +1 -0
- package/dist/components/sc-error-message.d.ts +11 -0
- package/dist/components/sc-error-message.js +8 -0
- package/dist/components/sc-error-message.js.map +1 -0
- package/dist/components/sc-input-caption.d.ts +11 -0
- package/dist/components/sc-input-caption.js +8 -0
- package/dist/components/sc-input-caption.js.map +1 -0
- package/dist/components/sc-input-icon.d.ts +11 -0
- package/dist/components/sc-input-icon.js +8 -0
- package/dist/components/sc-input-icon.js.map +1 -0
- package/dist/components/sc-input-label.d.ts +11 -0
- package/dist/components/sc-input-label.js +8 -0
- package/dist/components/sc-input-label.js.map +1 -0
- package/dist/components/sc-input.d.ts +11 -0
- package/dist/components/sc-input.js +8 -0
- package/dist/components/sc-input.js.map +1 -0
- package/dist/components/sc-spinner-dark.d.ts +11 -0
- package/dist/components/sc-spinner-dark.js +8 -0
- package/dist/components/sc-spinner-dark.js.map +1 -0
- package/dist/components/sc-spinner-light.d.ts +11 -0
- package/dist/components/sc-spinner-light.js +8 -0
- package/dist/components/sc-spinner-light.js.map +1 -0
- package/dist/esm/app-globals-0f993ce5.js +5 -0
- package/dist/esm/app-globals-0f993ce5.js.map +1 -0
- package/dist/esm/index-c97f8c28.js +1198 -0
- package/dist/esm/index-c97f8c28.js.map +1 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/loader.js +13 -0
- package/dist/esm/loader.js.map +1 -0
- package/dist/esm/sc-auto-search-form.entry.js +97 -0
- package/dist/esm/sc-auto-search-form.entry.js.map +1 -0
- package/dist/esm/sc-base-search-form_11.entry.js +457 -0
- package/dist/esm/sc-base-search-form_11.entry.js.map +1 -0
- package/dist/esm/sc-spinner-light-cdb79a33.js +18 -0
- package/dist/esm/sc-spinner-light-cdb79a33.js.map +1 -0
- package/dist/esm/sc-spinner-light.entry.js +4 -0
- package/dist/esm/sc-spinner-light.entry.js.map +1 -0
- package/dist/esm/searchcraft-javascript-sdk.js +22 -0
- package/dist/esm/searchcraft-javascript-sdk.js.map +1 -0
- package/dist/esm/store-2370857c.js +247 -0
- package/dist/esm/store-2370857c.js.map +1 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.js +1 -0
- package/dist/loader/cdn.js +1 -0
- package/dist/loader/index.cjs.js +1 -0
- package/dist/loader/index.d.ts +24 -0
- package/dist/loader/index.es2017.js +1 -0
- package/dist/loader/index.js +2 -0
- package/dist/loader/package.json +11 -0
- package/dist/searchcraft-javascript-sdk/index.esm.js +2 -0
- package/dist/searchcraft-javascript-sdk/index.esm.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/p-6f0eaec6.js +11 -0
- package/dist/searchcraft-javascript-sdk/p-6f0eaec6.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/p-8e9ba2cf.js +3 -0
- package/dist/searchcraft-javascript-sdk/p-8e9ba2cf.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/p-94c68cce.js +2 -0
- package/dist/searchcraft-javascript-sdk/p-94c68cce.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/p-9545c59a.entry.js +7 -0
- package/dist/searchcraft-javascript-sdk/p-9545c59a.entry.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/p-c632f66c.entry.js +2 -0
- package/dist/searchcraft-javascript-sdk/p-c632f66c.entry.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/p-e1255160.js +2 -0
- package/dist/searchcraft-javascript-sdk/p-e1255160.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/p-f7dbb9a8.entry.js +2 -0
- package/dist/searchcraft-javascript-sdk/p-f7dbb9a8.entry.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/searchcraft-javascript-sdk.esm.js +2 -0
- package/dist/searchcraft-javascript-sdk/searchcraft-javascript-sdk.esm.js.map +1 -0
- package/dist/types/assets/ButtonIcons.d.ts +1 -0
- package/dist/types/assets/ClearInputIcon.d.ts +4 -0
- package/dist/types/assets/SearchIcons.d.ts +4 -0
- package/dist/types/components/sc-auto-search-form/sc-auto-search-form.d.ts +41 -0
- package/dist/types/components/sc-base-search-form/sc-base-search-form.d.ts +20 -0
- package/dist/types/components/sc-base-search-result/sc-base-search-result.d.ts +16 -0
- package/dist/types/components/sc-base-search-results/sc-base-search-results.d.ts +9 -0
- package/dist/types/components/sc-button/sc-button.d.ts +13 -0
- package/dist/types/components/sc-clear-input-button/sc-clear-input-button.d.ts +10 -0
- package/dist/types/components/sc-error-message/sc-error-message.d.ts +11 -0
- package/dist/types/components/sc-input/sc-input.d.ts +22 -0
- package/dist/types/components/sc-input-caption/sc-input-caption.d.ts +9 -0
- package/dist/types/components/sc-input-icon/sc-input-icon.d.ts +7 -0
- package/dist/types/components/sc-input-label/sc-input-label.d.ts +7 -0
- package/dist/types/components/sc-spinner-dark/sc-spinner-dark.d.ts +3 -0
- package/dist/types/components/sc-spinner-light/sc-spinner-light.d.ts +3 -0
- package/dist/types/components.d.ts +386 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/provider/store.d.ts +18 -0
- package/dist/types/stencil-public-runtime.d.ts +1680 -0
- package/dist/types/utils/utils.d.ts +0 -0
- package/loader/cdn.js +1 -0
- package/loader/index.cjs.js +1 -0
- package/loader/index.d.ts +24 -0
- package/loader/index.es2017.js +1 -0
- package/loader/index.js +2 -0
- package/loader/package.json +11 -0
- package/package.json +47 -0
- package/readme.md +11 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { p as proxyCustomElement, H, c as createEvent, h } from './p-a912a224.js';
|
|
2
|
+
import { g, u as useSearchcraftStore } from './p-6f0eaec6.js';
|
|
3
|
+
import { d as defineCustomElement$5 } from './p-75be555b.js';
|
|
4
|
+
import { d as defineCustomElement$4 } from './p-5410e357.js';
|
|
5
|
+
import { d as defineCustomElement$3 } from './p-184d9504.js';
|
|
6
|
+
import { d as defineCustomElement$2 } from './p-23bdbb1f.js';
|
|
7
|
+
|
|
8
|
+
const scAutoSearchFormModuleCss = ":root{--font-stack:Helvetica, Arial, sans-serif}.formLTR{text-align:left}.formRTL{text-align:right}.searchContainer{align-items:center;display:flex}";
|
|
9
|
+
const ScAutoSearchFormStyle0 = scAutoSearchFormModuleCss;
|
|
10
|
+
|
|
11
|
+
const ScAutoSearchForm$1 = /*@__PURE__*/ proxyCustomElement(class ScAutoSearchForm extends H {
|
|
12
|
+
constructor() {
|
|
13
|
+
super();
|
|
14
|
+
this.__registerHost();
|
|
15
|
+
this.__attachShadow();
|
|
16
|
+
this.querySubmit = createEvent(this, "querySubmit", 7);
|
|
17
|
+
this.debounceTimeout = null;
|
|
18
|
+
this.debounceDelay = 300; // 300ms debounce delay
|
|
19
|
+
this.componentDidLoad = () => {
|
|
20
|
+
const searchcraft = new g(this.config);
|
|
21
|
+
this.searchStore.initialize(searchcraft, true);
|
|
22
|
+
};
|
|
23
|
+
// Initialize searchStore as a private field
|
|
24
|
+
this.searchStore = useSearchcraftStore.getState();
|
|
25
|
+
/**
|
|
26
|
+
* Handles the input change event from sc-input
|
|
27
|
+
*/
|
|
28
|
+
this.handleInputChange = (event) => {
|
|
29
|
+
console.log(event);
|
|
30
|
+
this.query = event.detail; // Update the query state with input value
|
|
31
|
+
if (this.debounceTimeout) {
|
|
32
|
+
clearTimeout(this.debounceTimeout); // Clear any existing timeout
|
|
33
|
+
}
|
|
34
|
+
// Emit querySubmit immediately for real-time updates
|
|
35
|
+
this.querySubmit.emit(this.query);
|
|
36
|
+
// Set a new debounce timeout to execute search after delay
|
|
37
|
+
this.debounceTimeout = setTimeout(() => {
|
|
38
|
+
this.runSearch(); // Execute search logic after typing stops
|
|
39
|
+
}, this.debounceDelay);
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Handles the clear input event from sc-input
|
|
43
|
+
*/
|
|
44
|
+
this.handleClearInput = () => {
|
|
45
|
+
this.query = '';
|
|
46
|
+
if (typeof this.clearInput === 'function') {
|
|
47
|
+
this.clearInput();
|
|
48
|
+
}
|
|
49
|
+
if (this.debounceTimeout) {
|
|
50
|
+
clearTimeout(this.debounceTimeout); // Clear the debounce timeout
|
|
51
|
+
}
|
|
52
|
+
// Reset error and search results
|
|
53
|
+
this.error = false;
|
|
54
|
+
this.searchResults = '';
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Runs the search logic
|
|
58
|
+
*/
|
|
59
|
+
this.runSearch = async () => {
|
|
60
|
+
if (this.query.trim() === '') {
|
|
61
|
+
this.error = true;
|
|
62
|
+
this.searchResults = '';
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
this.error = false;
|
|
66
|
+
this.searchStore.setQuery(this.query); // Set the query in the searchStore
|
|
67
|
+
await this.searchStore.search(); // Perform the search
|
|
68
|
+
this.searchResults = JSON.stringify(this.searchStore.searchResults); // Store search results as JSON
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Handles the form submission logic
|
|
73
|
+
*/
|
|
74
|
+
this.handleFormSubmit = async (event) => {
|
|
75
|
+
event.preventDefault();
|
|
76
|
+
await this.runSearch(); // Trigger search logic on form submit
|
|
77
|
+
};
|
|
78
|
+
this.autoSearchFormClass = '';
|
|
79
|
+
this.clearInput = () => { };
|
|
80
|
+
this.config = {
|
|
81
|
+
apiKey: '',
|
|
82
|
+
endpointURL: '',
|
|
83
|
+
index: [],
|
|
84
|
+
};
|
|
85
|
+
this.inputCaptionValue = '';
|
|
86
|
+
this.labelForInput = 'Search';
|
|
87
|
+
this.placeholderValue = 'Search here';
|
|
88
|
+
this.rightToLeftOrientation = false;
|
|
89
|
+
this.searchContainerClass = '';
|
|
90
|
+
this.error = false;
|
|
91
|
+
this.query = '';
|
|
92
|
+
this.searchResults = '';
|
|
93
|
+
}
|
|
94
|
+
render() {
|
|
95
|
+
const formClass = this.rightToLeftOrientation ? 'formRTL' : 'formLTR';
|
|
96
|
+
return (h("form", { key: '9c467f62b6464d5976a6cdbb17071777829fcd65', class: `${formClass}`, onSubmit: this.handleFormSubmit }, h("label", { key: '0740487a130c5427a2e7c7c7bf9b112fdd2038f7' }, this.labelForInput), h("div", { key: '1b1816b4c1fa472f1227110d480fc3014782383b', class: 'searchContainer' }, h("sc-input", { key: '2e8bd731c91b75db17f0c177c4e57e04268cb0dd', "placeholder-value": this.placeholderValue, query: this.query, "input-caption-value": this.inputCaptionValue, "right-to-left-orientation": this.rightToLeftOrientation, onSearchInputChange: this.handleInputChange, onClearInput: this.handleClearInput })), this.error && h("p", { key: '82aa93fa1e009d49adf7ba4e6568298686b9b3ec', class: 'error' }, "Please enter a search query."), this.searchResults && h("pre", { key: '3c7e024e7d961418d2330d1ce9d117e2a7f24051', class: 'results' }, this.searchResults)));
|
|
97
|
+
}
|
|
98
|
+
static get style() { return ScAutoSearchFormStyle0; }
|
|
99
|
+
}, [1, "sc-auto-search-form", {
|
|
100
|
+
"autoSearchFormClass": [1, "auto-search-form-class"],
|
|
101
|
+
"clearInput": [16],
|
|
102
|
+
"config": [16],
|
|
103
|
+
"inputCaptionValue": [1, "input-caption-value"],
|
|
104
|
+
"labelForInput": [1, "label-for-input"],
|
|
105
|
+
"placeholderValue": [1, "placeholder-value"],
|
|
106
|
+
"rightToLeftOrientation": [4, "right-to-left-orientation"],
|
|
107
|
+
"searchContainerClass": [1, "search-container-class"],
|
|
108
|
+
"error": [32],
|
|
109
|
+
"query": [32],
|
|
110
|
+
"searchResults": [32]
|
|
111
|
+
}]);
|
|
112
|
+
function defineCustomElement$1() {
|
|
113
|
+
if (typeof customElements === "undefined") {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const components = ["sc-auto-search-form", "sc-clear-input-button", "sc-input", "sc-input-caption", "sc-input-icon"];
|
|
117
|
+
components.forEach(tagName => { switch (tagName) {
|
|
118
|
+
case "sc-auto-search-form":
|
|
119
|
+
if (!customElements.get(tagName)) {
|
|
120
|
+
customElements.define(tagName, ScAutoSearchForm$1);
|
|
121
|
+
}
|
|
122
|
+
break;
|
|
123
|
+
case "sc-clear-input-button":
|
|
124
|
+
if (!customElements.get(tagName)) {
|
|
125
|
+
defineCustomElement$5();
|
|
126
|
+
}
|
|
127
|
+
break;
|
|
128
|
+
case "sc-input":
|
|
129
|
+
if (!customElements.get(tagName)) {
|
|
130
|
+
defineCustomElement$4();
|
|
131
|
+
}
|
|
132
|
+
break;
|
|
133
|
+
case "sc-input-caption":
|
|
134
|
+
if (!customElements.get(tagName)) {
|
|
135
|
+
defineCustomElement$3();
|
|
136
|
+
}
|
|
137
|
+
break;
|
|
138
|
+
case "sc-input-icon":
|
|
139
|
+
if (!customElements.get(tagName)) {
|
|
140
|
+
defineCustomElement$2();
|
|
141
|
+
}
|
|
142
|
+
break;
|
|
143
|
+
} });
|
|
144
|
+
}
|
|
145
|
+
defineCustomElement$1();
|
|
146
|
+
|
|
147
|
+
const ScAutoSearchForm = ScAutoSearchForm$1;
|
|
148
|
+
const defineCustomElement = defineCustomElement$1;
|
|
149
|
+
|
|
150
|
+
export { ScAutoSearchForm, defineCustomElement };
|
|
151
|
+
|
|
152
|
+
//# sourceMappingURL=sc-auto-search-form.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"sc-auto-search-form.js","mappings":"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","names":["ScAutoSearchForm","SearchcraftCore"],"sources":["src/components/sc-auto-search-form/sc-auto-search-form.module.scss?tag=sc-auto-search-form&encapsulation=shadow","src/components/sc-auto-search-form/sc-auto-search-form.tsx"],"sourcesContent":[":root {\n --font-stack: Helvetica, Arial, sans-serif;\n}\n\n.formLTR {\n text-align: left;\n}\n\n.formRTL {\n text-align: right;\n}\n\n.searchContainer {\n align-items: center;\n display: flex;\n}","import {\n Component,\n Prop,\n State,\n Event,\n type EventEmitter,\n h,\n} from '@stencil/core';\nimport {\n type CoreConfigSDK,\n CoreSDK as SearchcraftCore,\n} from '@searchcraft/core';\n\nimport type { ScInputCustomEvent } from '@components/sc-input/sc-input';\nimport { useSearchcraftStore } from '@provider/store';\n\n@Component({\n tag: 'sc-auto-search-form',\n styleUrl: 'sc-auto-search-form.module.scss',\n shadow: true,\n})\nexport class ScAutoSearchForm {\n @Prop() autoSearchFormClass = '';\n @Prop() clearInput: () => void = () => {}; // Default assignment ensures no undefined error\n @Prop() config: CoreConfigSDK = {\n apiKey: '',\n endpointURL: '',\n index: [],\n };\n @Prop() inputCaptionValue = '';\n @Prop() labelForInput = 'Search';\n @Prop() placeholderValue = 'Search here';\n @Prop() rightToLeftOrientation = false;\n @Prop() searchContainerClass = '';\n\n /**\n * Event emitted when the search query changes\n */\n @Event() querySubmit: EventEmitter<string>;\n\n @State() error = false;\n @State() query = '';\n @State() searchResults = '';\n\n private debounceTimeout: ReturnType<typeof setTimeout> | null = null;\n private debounceDelay = 300; // 300ms debounce delay\n\n componentDidLoad = () => {\n const searchcraft = new SearchcraftCore(this.config);\n this.searchStore.initialize(searchcraft, true);\n };\n\n // Initialize searchStore as a private field\n private searchStore = useSearchcraftStore.getState();\n\n /**\n * Handles the input change event from sc-input\n */\n handleInputChange = (event: ScInputCustomEvent<string>) => {\n console.log(event);\n this.query = event.detail; // Update the query state with input value\n\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout); // Clear any existing timeout\n }\n\n // Emit querySubmit immediately for real-time updates\n this.querySubmit.emit(this.query);\n\n // Set a new debounce timeout to execute search after delay\n this.debounceTimeout = setTimeout(() => {\n this.runSearch(); // Execute search logic after typing stops\n }, this.debounceDelay);\n };\n\n /**\n * Handles the clear input event from sc-input\n */\n handleClearInput = () => {\n this.query = '';\n if (typeof this.clearInput === 'function') {\n this.clearInput();\n }\n\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout); // Clear the debounce timeout\n }\n\n // Reset error and search results\n this.error = false;\n this.searchResults = '';\n };\n\n /**\n * Runs the search logic\n */\n private runSearch = async () => {\n if (this.query.trim() === '') {\n this.error = true;\n this.searchResults = '';\n } else {\n this.error = false;\n this.searchStore.setQuery(this.query); // Set the query in the searchStore\n await this.searchStore.search(); // Perform the search\n this.searchResults = JSON.stringify(this.searchStore.searchResults); // Store search results as JSON\n }\n };\n\n /**\n * Handles the form submission logic\n */\n handleFormSubmit = async (event: Event) => {\n event.preventDefault();\n await this.runSearch(); // Trigger search logic on form submit\n };\n\n render() {\n const formClass = this.rightToLeftOrientation ? 'formRTL' : 'formLTR';\n\n return (\n <form class={`${formClass}`} onSubmit={this.handleFormSubmit}>\n <label>{this.labelForInput}</label>\n <div class='searchContainer'>\n <sc-input\n placeholder-value={this.placeholderValue}\n query={this.query}\n input-caption-value={this.inputCaptionValue}\n right-to-left-orientation={this.rightToLeftOrientation}\n onSearchInputChange={this.handleInputChange}\n onClearInput={this.handleClearInput}\n />\n </div>\n {this.error && <p class='error'>Please enter a search query.</p>}\n {this.searchResults && <pre class='results'>{this.searchResults}</pre>}\n </form>\n );\n }\n}\n"],"version":3}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface ScBaseSearchForm extends Components.ScBaseSearchForm, HTMLElement {}
|
|
4
|
+
export const ScBaseSearchForm: {
|
|
5
|
+
prototype: ScBaseSearchForm;
|
|
6
|
+
new (): ScBaseSearchForm;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { p as proxyCustomElement, H, c as createEvent, h } from './p-a912a224.js';
|
|
2
|
+
import { u as useSearchcraftStore, a as useThemeStore, g } from './p-6f0eaec6.js';
|
|
3
|
+
import { d as defineCustomElement$9 } from './p-255a89f7.js';
|
|
4
|
+
import { d as defineCustomElement$8 } from './p-75be555b.js';
|
|
5
|
+
import { d as defineCustomElement$7 } from './p-79564f07.js';
|
|
6
|
+
import { d as defineCustomElement$6 } from './p-5410e357.js';
|
|
7
|
+
import { d as defineCustomElement$5 } from './p-184d9504.js';
|
|
8
|
+
import { d as defineCustomElement$4 } from './p-23bdbb1f.js';
|
|
9
|
+
import { d as defineCustomElement$3 } from './p-c47cb37f.js';
|
|
10
|
+
import { d as defineCustomElement$2 } from './p-dfb43eea.js';
|
|
11
|
+
|
|
12
|
+
const scBaseSearchFormModuleCss = ".formLTR{font-family:Helvetica, Arial, sans-serif;text-align:left}.formRTL{font-family:Helvetica, Arial, sans-serif;text-align:right}.searchContainer{align-items:center;display:flex}";
|
|
13
|
+
const ScBaseSearchFormStyle0 = scBaseSearchFormModuleCss;
|
|
14
|
+
|
|
15
|
+
const ScBaseSearchForm$1 = /*@__PURE__*/ proxyCustomElement(class ScBaseSearchForm extends H {
|
|
16
|
+
constructor() {
|
|
17
|
+
super();
|
|
18
|
+
this.__registerHost();
|
|
19
|
+
this.__attachShadow();
|
|
20
|
+
this.clearInput = createEvent(this, "clearInput", 7);
|
|
21
|
+
this.clearInput = () => { };
|
|
22
|
+
this.searchStore = useSearchcraftStore.getState();
|
|
23
|
+
this.themeStore = useThemeStore.getState();
|
|
24
|
+
this.componentDidLoad = () => {
|
|
25
|
+
const searchcraft = new g(this.config);
|
|
26
|
+
this.searchStore.initialize(searchcraft, true);
|
|
27
|
+
};
|
|
28
|
+
this.handleFormSubmit = async (event) => {
|
|
29
|
+
event.preventDefault();
|
|
30
|
+
if (this.query.trim() === '') {
|
|
31
|
+
this.error = true;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
this.error = false;
|
|
35
|
+
this.searchStore.setQuery(this.query);
|
|
36
|
+
await this.searchStore.search();
|
|
37
|
+
this.searchResults = JSON.stringify(this.searchStore.searchResults);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
this.handleSearchInputChange = (event) => {
|
|
41
|
+
this.query = event.detail;
|
|
42
|
+
};
|
|
43
|
+
this.handleClearInput = () => {
|
|
44
|
+
this.query = '';
|
|
45
|
+
this === null || this === void 0 ? void 0 : this.clearInput();
|
|
46
|
+
};
|
|
47
|
+
this.toggleTheme = () => {
|
|
48
|
+
this.themeStore.toggleTheme();
|
|
49
|
+
};
|
|
50
|
+
this.config = {
|
|
51
|
+
apiKey: '',
|
|
52
|
+
endpointURL: '',
|
|
53
|
+
index: [],
|
|
54
|
+
};
|
|
55
|
+
this.errorMessage = 'Search was unsuccessful';
|
|
56
|
+
this.labelForInput = 'Search';
|
|
57
|
+
this.rightToLeftOrientation = false;
|
|
58
|
+
this.error = false;
|
|
59
|
+
this.query = '';
|
|
60
|
+
this.searchResults = null;
|
|
61
|
+
}
|
|
62
|
+
render() {
|
|
63
|
+
return (h("form", { key: '2f128025b9caa2ab8a888d461da9b162bbc30d2f', class: this.rightToLeftOrientation ? 'formRTL' : 'formLTR', onSubmit: this.handleFormSubmit }, h("sc-input-label", { key: '110f30f0bbd27a0a512d9461a141198b738cc945', label: this.labelForInput }), h("div", { key: '5ec54632aeb5595f76a769d99801c8b92745bb05', class: 'searchContainer' }, this.rightToLeftOrientation && h("sc-button", { key: '753746e7c6bab72006e5a866609934e4738cb096' }), h("sc-input", { key: '823cda15577d253db0f1c30e3c8aa64fc19520ff', onClearInput: this.handleClearInput, rightToLeftOrientation: this.rightToLeftOrientation, onSearchInputChange: this.handleSearchInputChange, query: this.query }), !this.rightToLeftOrientation && (h("sc-button", { key: '99474f1a9fe35c18de0d6cc8ba9e70a4f1471c55', onButtonClick: this.handleFormSubmit }))), this.error && h("sc-error-message", { key: '03da10c2d3c51da69db971a0bfdbc7edbe218e1c', errorMessage: this.errorMessage })));
|
|
64
|
+
}
|
|
65
|
+
static get style() { return ScBaseSearchFormStyle0; }
|
|
66
|
+
}, [1, "sc-base-search-form", {
|
|
67
|
+
"config": [16],
|
|
68
|
+
"errorMessage": [1, "error-message"],
|
|
69
|
+
"labelForInput": [1, "label-for-input"],
|
|
70
|
+
"rightToLeftOrientation": [4, "right-to-left-orientation"],
|
|
71
|
+
"error": [32],
|
|
72
|
+
"query": [32],
|
|
73
|
+
"searchResults": [32]
|
|
74
|
+
}]);
|
|
75
|
+
function defineCustomElement$1() {
|
|
76
|
+
if (typeof customElements === "undefined") {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const components = ["sc-base-search-form", "sc-button", "sc-clear-input-button", "sc-error-message", "sc-input", "sc-input-caption", "sc-input-icon", "sc-input-label", "sc-spinner-dark"];
|
|
80
|
+
components.forEach(tagName => { switch (tagName) {
|
|
81
|
+
case "sc-base-search-form":
|
|
82
|
+
if (!customElements.get(tagName)) {
|
|
83
|
+
customElements.define(tagName, ScBaseSearchForm$1);
|
|
84
|
+
}
|
|
85
|
+
break;
|
|
86
|
+
case "sc-button":
|
|
87
|
+
if (!customElements.get(tagName)) {
|
|
88
|
+
defineCustomElement$9();
|
|
89
|
+
}
|
|
90
|
+
break;
|
|
91
|
+
case "sc-clear-input-button":
|
|
92
|
+
if (!customElements.get(tagName)) {
|
|
93
|
+
defineCustomElement$8();
|
|
94
|
+
}
|
|
95
|
+
break;
|
|
96
|
+
case "sc-error-message":
|
|
97
|
+
if (!customElements.get(tagName)) {
|
|
98
|
+
defineCustomElement$7();
|
|
99
|
+
}
|
|
100
|
+
break;
|
|
101
|
+
case "sc-input":
|
|
102
|
+
if (!customElements.get(tagName)) {
|
|
103
|
+
defineCustomElement$6();
|
|
104
|
+
}
|
|
105
|
+
break;
|
|
106
|
+
case "sc-input-caption":
|
|
107
|
+
if (!customElements.get(tagName)) {
|
|
108
|
+
defineCustomElement$5();
|
|
109
|
+
}
|
|
110
|
+
break;
|
|
111
|
+
case "sc-input-icon":
|
|
112
|
+
if (!customElements.get(tagName)) {
|
|
113
|
+
defineCustomElement$4();
|
|
114
|
+
}
|
|
115
|
+
break;
|
|
116
|
+
case "sc-input-label":
|
|
117
|
+
if (!customElements.get(tagName)) {
|
|
118
|
+
defineCustomElement$3();
|
|
119
|
+
}
|
|
120
|
+
break;
|
|
121
|
+
case "sc-spinner-dark":
|
|
122
|
+
if (!customElements.get(tagName)) {
|
|
123
|
+
defineCustomElement$2();
|
|
124
|
+
}
|
|
125
|
+
break;
|
|
126
|
+
} });
|
|
127
|
+
}
|
|
128
|
+
defineCustomElement$1();
|
|
129
|
+
|
|
130
|
+
const ScBaseSearchForm = ScBaseSearchForm$1;
|
|
131
|
+
const defineCustomElement = defineCustomElement$1;
|
|
132
|
+
|
|
133
|
+
export { ScBaseSearchForm, defineCustomElement };
|
|
134
|
+
|
|
135
|
+
//# sourceMappingURL=sc-base-search-form.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"sc-base-search-form.js","mappings":";;;;;;;;;;;AAAA,MAAM,yBAAyB,GAAG,wLAAwL,CAAC;AAC3N,+BAAe,yBAAyB;;MCc3BA,kBAAgB;;;;;;QAUlB,eAAU,GAAG,SAAQ,CAAC;QAMvB,gBAAW,GAAG,mBAAmB,CAAC,QAAQ,EAAE,CAAC;QAC7C,eAAU,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;QAE9C,qBAAgB,GAAG;YACjB,MAAM,WAAW,GAAG,IAAIC,CAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;SAChD,CAAC;QAEF,qBAAgB,GAAG,OAAO,KAAK;YAC7B,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;aACnB;iBAAM;gBACL,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;gBAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;aACrE;SACF,CAAC;QAEF,4BAAuB,GAAG,CAAC,KAAiC;YAC1D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;SAC3B,CAAC;QAEF,qBAAgB,GAAG;YACjB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAChB,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,EAAE,CAAC;SACpB,CAAC;QAEF,gBAAW,GAAG;YACZ,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;SAC/B,CAAC;sBA9C8B;YAC9B,MAAM,EAAE,EAAE;YACV,WAAW,EAAE,EAAE;YACf,KAAK,EAAE,EAAE;SACV;4BACsB,yBAAyB;6BACxB,QAAQ;sCACC,KAAK;qBAIrB,KAAK;qBACL,EAAE;6BACqB,IAAI;;IAmC5C,MAAM;QACJ,QACE,6DACE,KAAK,EAAE,IAAI,CAAC,sBAAsB,GAAG,SAAS,GAAG,SAAS,EAC1D,QAAQ,EAAE,IAAI,CAAC,gBAAgB,IAE/B,uEAAgB,KAAK,EAAE,IAAI,CAAC,aAAa,GAAI,EAC7C,4DAAK,KAAK,EAAC,iBAAiB,IACzB,IAAI,CAAC,sBAAsB,IAAI,mEAAa,EAC7C,iEACE,YAAY,EAAE,IAAI,CAAC,gBAAgB,EACnC,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,EACnD,mBAAmB,EAAE,IAAI,CAAC,uBAAuB,EACjD,KAAK,EAAE,IAAI,CAAC,KAAK,GACjB,EACD,CAAC,IAAI,CAAC,sBAAsB,KAC3B,kEAAW,aAAa,EAAE,IAAI,CAAC,gBAAgB,GAAI,CACpD,CACG,EACL,IAAI,CAAC,KAAK,IAAI,yEAAkB,YAAY,EAAE,IAAI,CAAC,YAAY,GAAI,CAC/D,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["ScBaseSearchForm","SearchcraftCore"],"sources":["src/components/sc-base-search-form/sc-base-search-form.module.scss?tag=sc-base-search-form&encapsulation=shadow","src/components/sc-base-search-form/sc-base-search-form.tsx"],"sourcesContent":[".formLTR {\n font-family: Helvetica, Arial, sans-serif;\n text-align: left;\n}\n\n.formRTL {\n font-family: Helvetica, Arial, sans-serif;\n text-align: right;\n}\n\n.searchContainer {\n align-items: center;\n display: flex;\n}","import { Component, h, Event, Prop, State } from '@stencil/core';\nimport {\n type CoreConfigSDK,\n CoreSDK as SearchcraftCore,\n} from '@searchcraft/core';\n\nimport { useSearchcraftStore, useThemeStore } from '@provider/store';\n\nimport type { ScInputCustomEvent } from '@components/sc-input/sc-input';\n\n@Component({\n tag: 'sc-base-search-form',\n styleUrl: 'sc-base-search-form.module.scss',\n shadow: true,\n})\nexport class ScBaseSearchForm {\n @Prop() config: CoreConfigSDK = {\n apiKey: '',\n endpointURL: '',\n index: [],\n };\n @Prop() errorMessage = 'Search was unsuccessful';\n @Prop() labelForInput = 'Search';\n @Prop() rightToLeftOrientation = false;\n\n @Event() clearInput = () => {};\n\n @State() error = false;\n @State() query = '';\n @State() searchResults: string | null = null;\n\n private searchStore = useSearchcraftStore.getState();\n private themeStore = useThemeStore.getState();\n\n componentDidLoad = () => {\n const searchcraft = new SearchcraftCore(this.config);\n this.searchStore.initialize(searchcraft, true);\n };\n\n handleFormSubmit = async (event) => {\n event.preventDefault();\n if (this.query.trim() === '') {\n this.error = true;\n } else {\n this.error = false;\n this.searchStore.setQuery(this.query);\n await this.searchStore.search();\n this.searchResults = JSON.stringify(this.searchStore.searchResults);\n }\n };\n\n handleSearchInputChange = (event: ScInputCustomEvent<string>) => {\n this.query = event.detail;\n };\n\n handleClearInput = () => {\n this.query = '';\n this?.clearInput();\n };\n\n toggleTheme = () => {\n this.themeStore.toggleTheme();\n };\n\n render() {\n return (\n <form\n class={this.rightToLeftOrientation ? 'formRTL' : 'formLTR'}\n onSubmit={this.handleFormSubmit}\n >\n <sc-input-label label={this.labelForInput} />\n <div class='searchContainer'>\n {this.rightToLeftOrientation && <sc-button />}\n <sc-input\n onClearInput={this.handleClearInput}\n rightToLeftOrientation={this.rightToLeftOrientation}\n onSearchInputChange={this.handleSearchInputChange}\n query={this.query}\n />\n {!this.rightToLeftOrientation && (\n <sc-button onButtonClick={this.handleFormSubmit} />\n )}\n </div>\n {this.error && <sc-error-message errorMessage={this.errorMessage} />}\n </form>\n );\n }\n}\n"],"version":3}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface ScBaseSearchResult extends Components.ScBaseSearchResult, HTMLElement {}
|
|
4
|
+
export const ScBaseSearchResult: {
|
|
5
|
+
prototype: ScBaseSearchResult;
|
|
6
|
+
new (): ScBaseSearchResult;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { S as ScBaseSearchResult$1, d as defineCustomElement$1 } from './p-5b7b903a.js';
|
|
2
|
+
|
|
3
|
+
const ScBaseSearchResult = ScBaseSearchResult$1;
|
|
4
|
+
const defineCustomElement = defineCustomElement$1;
|
|
5
|
+
|
|
6
|
+
export { ScBaseSearchResult, defineCustomElement };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=sc-base-search-result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"sc-base-search-result.js","mappings":";;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface ScBaseSearchResults extends Components.ScBaseSearchResults, HTMLElement {}
|
|
4
|
+
export const ScBaseSearchResults: {
|
|
5
|
+
prototype: ScBaseSearchResults;
|
|
6
|
+
new (): ScBaseSearchResults;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { p as proxyCustomElement, H, h } from './p-a912a224.js';
|
|
2
|
+
import { u as useSearchcraftStore } from './p-6f0eaec6.js';
|
|
3
|
+
import { d as defineCustomElement$3 } from './p-5b7b903a.js';
|
|
4
|
+
import { d as defineCustomElement$2 } from './p-79564f07.js';
|
|
5
|
+
|
|
6
|
+
const scBaseSearchResultsModuleCss = ":root{--font-stack:Helvetica, Arial, sans-serif}.resultsContainer{display:flex;flex-direction:column;justify-content:center;margin:100px 20px}.resultsContainer>p{align-self:center}.resultsContainer>div{margin-bottom:20px}.resultsContainer>div img{height:300px;width:200px}";
|
|
7
|
+
const ScBaseSearchResultsStyle0 = scBaseSearchResultsModuleCss;
|
|
8
|
+
|
|
9
|
+
const ScBaseSearchResults$1 = /*@__PURE__*/ proxyCustomElement(class ScBaseSearchResults extends H {
|
|
10
|
+
constructor() {
|
|
11
|
+
super();
|
|
12
|
+
this.__registerHost();
|
|
13
|
+
this.__attachShadow();
|
|
14
|
+
this.query = '';
|
|
15
|
+
this.searchResults = null;
|
|
16
|
+
}
|
|
17
|
+
componentDidLoad() {
|
|
18
|
+
// Subscribe to state changes
|
|
19
|
+
this.unsubscribe = useSearchcraftStore.subscribe((state) => {
|
|
20
|
+
console.log('Store updated:', state);
|
|
21
|
+
this.searchResults = Object.assign({}, state.searchResults);
|
|
22
|
+
this.query = state.query;
|
|
23
|
+
});
|
|
24
|
+
// Fetch initial state
|
|
25
|
+
const { searchResults, query } = useSearchcraftStore.getState();
|
|
26
|
+
console.log('Initial state:', searchResults, query);
|
|
27
|
+
this.searchResults = searchResults;
|
|
28
|
+
this.query = query;
|
|
29
|
+
}
|
|
30
|
+
disconnectedCallback() {
|
|
31
|
+
if (this.unsubscribe) {
|
|
32
|
+
this.unsubscribe();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
render() {
|
|
36
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
37
|
+
if (!((_a = this.searchResults) === null || _a === void 0 ? void 0 : _a.data)) {
|
|
38
|
+
console.warn('No search results data available');
|
|
39
|
+
return h("div", null, "No results to display.");
|
|
40
|
+
}
|
|
41
|
+
return (h("div", { class: 'resultsContainer' }, (_d = (_c = (_b = this.searchResults) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.hits) === null || _d === void 0 ? void 0 :
|
|
42
|
+
_d.map((document, index) => {
|
|
43
|
+
const { doc: result } = document;
|
|
44
|
+
return (h("sc-base-search-result", { key: `${result === null || result === void 0 ? void 0 : result.id}-${index}`, "button-label": 'View More', "callback-fn": () => console.log('interactive element'), "button-callback-fn": () => console.log('button callback'), "interactive-result": true, "image-src": result === null || result === void 0 ? void 0 : result.poster, "result-body-content": result === null || result === void 0 ? void 0 : result.overview, "result-heading": result === null || result === void 0 ? void 0 : result.title, "result-subheading": result === null || result === void 0 ? void 0 : result.release_date }));
|
|
45
|
+
}), this.query.length > 0 &&
|
|
46
|
+
((_g = (_f = (_e = this.searchResults) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f.hits) === null || _g === void 0 ? void 0 : _g.length) === 0 && (h("sc-error-message", { "error-message": `No search results found for "${this.query}" query` }))));
|
|
47
|
+
}
|
|
48
|
+
static get style() { return ScBaseSearchResultsStyle0; }
|
|
49
|
+
}, [1, "sc-base-search-results", {
|
|
50
|
+
"query": [32],
|
|
51
|
+
"searchResults": [32]
|
|
52
|
+
}]);
|
|
53
|
+
function defineCustomElement$1() {
|
|
54
|
+
if (typeof customElements === "undefined") {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const components = ["sc-base-search-results", "sc-base-search-result", "sc-error-message"];
|
|
58
|
+
components.forEach(tagName => { switch (tagName) {
|
|
59
|
+
case "sc-base-search-results":
|
|
60
|
+
if (!customElements.get(tagName)) {
|
|
61
|
+
customElements.define(tagName, ScBaseSearchResults$1);
|
|
62
|
+
}
|
|
63
|
+
break;
|
|
64
|
+
case "sc-base-search-result":
|
|
65
|
+
if (!customElements.get(tagName)) {
|
|
66
|
+
defineCustomElement$3();
|
|
67
|
+
}
|
|
68
|
+
break;
|
|
69
|
+
case "sc-error-message":
|
|
70
|
+
if (!customElements.get(tagName)) {
|
|
71
|
+
defineCustomElement$2();
|
|
72
|
+
}
|
|
73
|
+
break;
|
|
74
|
+
} });
|
|
75
|
+
}
|
|
76
|
+
defineCustomElement$1();
|
|
77
|
+
|
|
78
|
+
const ScBaseSearchResults = ScBaseSearchResults$1;
|
|
79
|
+
const defineCustomElement = defineCustomElement$1;
|
|
80
|
+
|
|
81
|
+
export { ScBaseSearchResults, defineCustomElement };
|
|
82
|
+
|
|
83
|
+
//# sourceMappingURL=sc-base-search-results.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"sc-base-search-results.js","mappings":";;;;;AAAA,MAAM,4BAA4B,GAAG,kRAAkR,CAAC;AACxT,kCAAe,4BAA4B;;MCS9BA,qBAAmB;;;;;qBACb,EAAE;6BAC2B,IAAI;;IAGlD,gBAAgB;;QAEd,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC,KAAK;YACrD,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;YACrC,IAAI,CAAC,aAAa,qBAAQ,KAAK,CAAC,aAAa,CAAE,CAAC;YAChD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;SAC1B,CAAC,CAAC;;QAGH,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,mBAAmB,CAAC,QAAQ,EAAE,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;IAED,oBAAoB;QAClB,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;KACF;IAED,MAAM;;QACJ,IAAI,EAAC,MAAA,IAAI,CAAC,aAAa,0CAAE,IAAI,CAAA,EAAE;YAC7B,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YACjD,OAAO,wCAAiC,CAAC;SAC1C;QACD,QACE,WAAK,KAAK,EAAC,kBAAkB,IAC1B,MAAA,MAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,IAAI,0CAAE,IAAI;eAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK;gBACnD,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;gBACjC,QACE,6BACE,GAAG,EAAE,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,IAAI,KAAK,EAAE,kBAChB,WAAW,iBACX,MAAM,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,wBACjC,MAAM,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,wBACpC,IAAI,eACb,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,yBACJ,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,oBACrB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,uBACV,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,GACvC,EACF;aACH,CAAC,EACD,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YACpB,CAAA,MAAA,MAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,IAAI,0CAAE,IAAI,0CAAE,MAAM,MAAK,CAAC,KAC1C,yCACiB,gCAAgC,IAAI,CAAC,KAAK,SAAS,GAClE,CACH,CACC,EACN;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["ScBaseSearchResults"],"sources":["src/components/sc-base-search-results/sc-base-search-results.module.scss?tag=sc-base-search-results&encapsulation=shadow","src/components/sc-base-search-results/sc-base-search-results.tsx"],"sourcesContent":[":root {\n --font-stack: Helvetica, Arial, sans-serif;\n}\n\n.resultsContainer {\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin: 100px 20px;\n\n & > p {\n align-self: center;\n }\n\n & > div {\n margin-bottom: 20px;\n img {\n height: 300px;\n width: 200px;\n }\n }\n}\n","import { Component, h, State } from '@stencil/core';\nimport type { SearchResult } from '@searchcraft/core';\n\nimport { useSearchcraftStore } from '@provider/store';\n\n@Component({\n tag: 'sc-base-search-results',\n styleUrl: 'sc-base-search-results.module.scss',\n shadow: true,\n})\nexport class ScBaseSearchResults {\n @State() query = '';\n @State() searchResults: SearchResult | null = null;\n private unsubscribe: () => void;\n\n componentDidLoad() {\n // Subscribe to state changes\n this.unsubscribe = useSearchcraftStore.subscribe((state) => {\n console.log('Store updated:', state);\n this.searchResults = { ...state.searchResults };\n this.query = state.query;\n });\n\n // Fetch initial state\n const { searchResults, query } = useSearchcraftStore.getState();\n console.log('Initial state:', searchResults, query);\n this.searchResults = searchResults;\n this.query = query;\n }\n\n disconnectedCallback() {\n if (this.unsubscribe) {\n this.unsubscribe();\n }\n }\n\n render() {\n if (!this.searchResults?.data) {\n console.warn('No search results data available');\n return <div>No results to display.</div>;\n }\n return (\n <div class='resultsContainer'>\n {this.searchResults?.data?.hits?.map((document, index) => {\n const { doc: result } = document;\n return (\n <sc-base-search-result\n key={`${result?.id}-${index}`}\n button-label='View More'\n callback-fn={() => console.log('interactive element')}\n button-callback-fn={() => console.log('button callback')}\n interactive-result={true}\n image-src={result?.poster}\n result-body-content={result?.overview}\n result-heading={result?.title}\n result-subheading={result?.release_date}\n />\n );\n })}\n {this.query.length > 0 &&\n this.searchResults?.data?.hits?.length === 0 && (\n <sc-error-message\n error-message={`No search results found for \"${this.query}\" query`}\n />\n )}\n </div>\n );\n }\n}\n"],"version":3}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface ScButton extends Components.ScButton, HTMLElement {}
|
|
4
|
+
export const ScButton: {
|
|
5
|
+
prototype: ScButton;
|
|
6
|
+
new (): ScButton;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"sc-button.js","mappings":";;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface ScClearInputButton extends Components.ScClearInputButton, HTMLElement {}
|
|
4
|
+
export const ScClearInputButton: {
|
|
5
|
+
prototype: ScClearInputButton;
|
|
6
|
+
new (): ScClearInputButton;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { S as ScClearInputButton$1, d as defineCustomElement$1 } from './p-75be555b.js';
|
|
2
|
+
|
|
3
|
+
const ScClearInputButton = ScClearInputButton$1;
|
|
4
|
+
const defineCustomElement = defineCustomElement$1;
|
|
5
|
+
|
|
6
|
+
export { ScClearInputButton, defineCustomElement };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=sc-clear-input-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"sc-clear-input-button.js","mappings":";;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface ScErrorMessage extends Components.ScErrorMessage, HTMLElement {}
|
|
4
|
+
export const ScErrorMessage: {
|
|
5
|
+
prototype: ScErrorMessage;
|
|
6
|
+
new (): ScErrorMessage;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { S as ScErrorMessage$1, d as defineCustomElement$1 } from './p-79564f07.js';
|
|
2
|
+
|
|
3
|
+
const ScErrorMessage = ScErrorMessage$1;
|
|
4
|
+
const defineCustomElement = defineCustomElement$1;
|
|
5
|
+
|
|
6
|
+
export { ScErrorMessage, defineCustomElement };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=sc-error-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"sc-error-message.js","mappings":";;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface ScInputCaption extends Components.ScInputCaption, HTMLElement {}
|
|
4
|
+
export const ScInputCaption: {
|
|
5
|
+
prototype: ScInputCaption;
|
|
6
|
+
new (): ScInputCaption;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { S as ScInputCaption$1, d as defineCustomElement$1 } from './p-184d9504.js';
|
|
2
|
+
|
|
3
|
+
const ScInputCaption = ScInputCaption$1;
|
|
4
|
+
const defineCustomElement = defineCustomElement$1;
|
|
5
|
+
|
|
6
|
+
export { ScInputCaption, defineCustomElement };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=sc-input-caption.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"sc-input-caption.js","mappings":";;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface ScInputIcon extends Components.ScInputIcon, HTMLElement {}
|
|
4
|
+
export const ScInputIcon: {
|
|
5
|
+
prototype: ScInputIcon;
|
|
6
|
+
new (): ScInputIcon;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { S as ScInputIcon$1, d as defineCustomElement$1 } from './p-23bdbb1f.js';
|
|
2
|
+
|
|
3
|
+
const ScInputIcon = ScInputIcon$1;
|
|
4
|
+
const defineCustomElement = defineCustomElement$1;
|
|
5
|
+
|
|
6
|
+
export { ScInputIcon, defineCustomElement };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=sc-input-icon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"sc-input-icon.js","mappings":";;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface ScInputLabel extends Components.ScInputLabel, HTMLElement {}
|
|
4
|
+
export const ScInputLabel: {
|
|
5
|
+
prototype: ScInputLabel;
|
|
6
|
+
new (): ScInputLabel;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { S as ScInputLabel$1, d as defineCustomElement$1 } from './p-c47cb37f.js';
|
|
2
|
+
|
|
3
|
+
const ScInputLabel = ScInputLabel$1;
|
|
4
|
+
const defineCustomElement = defineCustomElement$1;
|
|
5
|
+
|
|
6
|
+
export { ScInputLabel, defineCustomElement };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=sc-input-label.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"sc-input-label.js","mappings":";;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface ScInput extends Components.ScInput, HTMLElement {}
|
|
4
|
+
export const ScInput: {
|
|
5
|
+
prototype: ScInput;
|
|
6
|
+
new (): ScInput;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|