ngx-pk-ui 0.0.1 → 1.0.1
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/README.md +4 -0
- package/fesm2022/ngx-pk-ui.mjs +73 -64
- package/fesm2022/ngx-pk-ui.mjs.map +1 -1
- package/package.json +21 -3
- package/styles/pk-grid.css +4 -4
- package/types/ngx-pk-ui.d.ts +141 -136
package/README.md
CHANGED
package/fesm2022/ngx-pk-ui.mjs
CHANGED
|
@@ -1829,6 +1829,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
1829
1829
|
|
|
1830
1830
|
class PkTreeviewNodeComponent {
|
|
1831
1831
|
nodes = [];
|
|
1832
|
+
rootNodes = [];
|
|
1832
1833
|
selection = 'none';
|
|
1833
1834
|
nodeToggled = new EventEmitter();
|
|
1834
1835
|
selectionChanged = new EventEmitter();
|
|
@@ -1848,14 +1849,15 @@ class PkTreeviewNodeComponent {
|
|
|
1848
1849
|
onCheckClick(node, e) {
|
|
1849
1850
|
e.stopPropagation();
|
|
1850
1851
|
if (this.selection === 'single') {
|
|
1851
|
-
this.clearAllSelection(this.nodes);
|
|
1852
|
+
this.clearAllSelection(this.rootNodes.length ? this.rootNodes : this.nodes);
|
|
1852
1853
|
node._selected = true;
|
|
1853
1854
|
}
|
|
1854
1855
|
else if (this.selection === 'multi') {
|
|
1855
1856
|
const newState = !node._selected;
|
|
1856
1857
|
this.setNodeAndChildren(node, newState);
|
|
1857
1858
|
}
|
|
1858
|
-
this.
|
|
1859
|
+
const root = this.rootNodes.length ? this.rootNodes : this.nodes;
|
|
1860
|
+
this.selectionChanged.emit(this.getSelected(root));
|
|
1859
1861
|
}
|
|
1860
1862
|
clearAllSelection(nodes) {
|
|
1861
1863
|
for (const n of nodes) {
|
|
@@ -1883,7 +1885,7 @@ class PkTreeviewNodeComponent {
|
|
|
1883
1885
|
return result;
|
|
1884
1886
|
}
|
|
1885
1887
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: PkTreeviewNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1886
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: PkTreeviewNodeComponent, isStandalone: true, selector: "pk-treeview-node", inputs: { nodes: "nodes", selection: "selection" }, outputs: { nodeToggled: "nodeToggled", selectionChanged: "selectionChanged" }, ngImport: i0, template: `
|
|
1888
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: PkTreeviewNodeComponent, isStandalone: true, selector: "pk-treeview-node", inputs: { nodes: "nodes", rootNodes: "rootNodes", selection: "selection" }, outputs: { nodeToggled: "nodeToggled", selectionChanged: "selectionChanged" }, ngImport: i0, template: `
|
|
1887
1889
|
<ul class="pk-tree-list">
|
|
1888
1890
|
@for (node of nodes; track node) {
|
|
1889
1891
|
<li class="pk-tree-item">
|
|
@@ -1947,6 +1949,7 @@ class PkTreeviewNodeComponent {
|
|
|
1947
1949
|
<div class="pk-tree-children">
|
|
1948
1950
|
<pk-treeview-node
|
|
1949
1951
|
[nodes]="node.children!"
|
|
1952
|
+
[rootNodes]="rootNodes"
|
|
1950
1953
|
[selection]="selection"
|
|
1951
1954
|
(nodeToggled)="nodeToggled.emit($event)"
|
|
1952
1955
|
(selectionChanged)="selectionChanged.emit($event)">
|
|
@@ -1956,11 +1959,11 @@ class PkTreeviewNodeComponent {
|
|
|
1956
1959
|
</li>
|
|
1957
1960
|
}
|
|
1958
1961
|
</ul>
|
|
1959
|
-
`, isInline: true, styles: [".pk-tree-list{list-style:none;margin:0;padding:0}.pk-tree-item{margin:0}.pk-tree-row{display:flex;align-items:center;gap:2px;padding:4px 6px;border-radius:4px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s}.pk-tree-row:hover{background:#f1f5f9}.pk-tree-row--selected{background:#e0f2fe}.pk-tree-toggle{display:inline-flex;align-items:center;width:18px;cursor:pointer;flex-shrink:0}.pk-tree-check{display:inline-flex;align-items:center;flex-shrink:0;margin-right:2px}.pk-tree-icon{display:inline-flex;align-items:center;flex-shrink:0}.pk-tree-label{font-size:14px;color:#1e293b;flex:1}.pk-tree-link{color:inherit;text-decoration:none}.pk-tree-link:hover{text-decoration:underline}.pk-tree-children{padding-left:20px}.pk-tree-cb{width:15px;height:15px;border-radius:3px;border:1.5px solid #94a3b8;background:#fff;display:inline-flex;align-items:center;justify-content:center;transition:border-color .15s,background .15s}.pk-tree-cb--checked{background:#0ea5e9;border-color:#0ea5e9}.pk-tree-cb--indeterminate{border-color:#0ea5e9}.pk-tree-cb-dash{width:8px;height:2px;background:#0ea5e9;border-radius:1px;display:block}.pk-tree-radio{width:14px;height:14px;border-radius:50%;border:1.5px solid #94a3b8;background:#fff;display:inline-flex;align-items:center;justify-content:center;transition:border-color .15s}.pk-tree-radio--checked{border-color:#0ea5e9;box-shadow:inset 0 0 0 3px #0ea5e9}\n"], dependencies: [{ kind: "component", type: PkTreeviewNodeComponent, selector: "pk-treeview-node", inputs: ["nodes", "selection"], outputs: ["nodeToggled", "selectionChanged"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: PkIcon, selector: "pk-icon", inputs: ["name", "iconSet", "size", "color", "fillColor", "viewBox", "strokeWidth", "variant", "fill", "weight", "grade", "opticalSize"] }]
|
|
1962
|
+
`, isInline: true, styles: [".pk-tree-list{list-style:none;margin:0;padding:0}.pk-tree-item{margin:0}.pk-tree-row{display:flex;align-items:center;gap:2px;padding:4px 6px;border-radius:4px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s}.pk-tree-row:hover{background:#f1f5f9}.pk-tree-row--selected{background:#e0f2fe}.pk-tree-toggle{display:inline-flex;align-items:center;width:18px;cursor:pointer;flex-shrink:0}.pk-tree-check{display:inline-flex;align-items:center;flex-shrink:0;margin-right:2px}.pk-tree-icon{display:inline-flex;align-items:center;flex-shrink:0}.pk-tree-label{font-size:14px;color:#1e293b;flex:1}.pk-tree-link{color:inherit;text-decoration:none}.pk-tree-link:hover{text-decoration:underline}.pk-tree-children{padding-left:20px}.pk-tree-cb{width:15px;height:15px;border-radius:3px;border:1.5px solid #94a3b8;background:#fff;display:inline-flex;align-items:center;justify-content:center;transition:border-color .15s,background .15s}.pk-tree-cb--checked{background:#0ea5e9;border-color:#0ea5e9}.pk-tree-cb--indeterminate{border-color:#0ea5e9}.pk-tree-cb-dash{width:8px;height:2px;background:#0ea5e9;border-radius:1px;display:block}.pk-tree-radio{width:14px;height:14px;border-radius:50%;border:1.5px solid #94a3b8;background:#fff;display:inline-flex;align-items:center;justify-content:center;transition:border-color .15s}.pk-tree-radio--checked{border-color:#0ea5e9;box-shadow:inset 0 0 0 3px #0ea5e9}\n"], dependencies: [{ kind: "component", type: PkTreeviewNodeComponent, selector: "pk-treeview-node", inputs: ["nodes", "rootNodes", "selection"], outputs: ["nodeToggled", "selectionChanged"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: PkIcon, selector: "pk-icon", inputs: ["name", "iconSet", "size", "color", "fillColor", "viewBox", "strokeWidth", "variant", "fill", "weight", "grade", "opticalSize"] }] });
|
|
1960
1963
|
}
|
|
1961
1964
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: PkTreeviewNodeComponent, decorators: [{
|
|
1962
1965
|
type: Component,
|
|
1963
|
-
args: [{ selector: 'pk-treeview-node', imports: [RouterModule, PkIcon],
|
|
1966
|
+
args: [{ selector: 'pk-treeview-node', imports: [RouterModule, PkIcon], template: `
|
|
1964
1967
|
<ul class="pk-tree-list">
|
|
1965
1968
|
@for (node of nodes; track node) {
|
|
1966
1969
|
<li class="pk-tree-item">
|
|
@@ -2024,6 +2027,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
2024
2027
|
<div class="pk-tree-children">
|
|
2025
2028
|
<pk-treeview-node
|
|
2026
2029
|
[nodes]="node.children!"
|
|
2030
|
+
[rootNodes]="rootNodes"
|
|
2027
2031
|
[selection]="selection"
|
|
2028
2032
|
(nodeToggled)="nodeToggled.emit($event)"
|
|
2029
2033
|
(selectionChanged)="selectionChanged.emit($event)">
|
|
@@ -2036,6 +2040,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
2036
2040
|
`, styles: [".pk-tree-list{list-style:none;margin:0;padding:0}.pk-tree-item{margin:0}.pk-tree-row{display:flex;align-items:center;gap:2px;padding:4px 6px;border-radius:4px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s}.pk-tree-row:hover{background:#f1f5f9}.pk-tree-row--selected{background:#e0f2fe}.pk-tree-toggle{display:inline-flex;align-items:center;width:18px;cursor:pointer;flex-shrink:0}.pk-tree-check{display:inline-flex;align-items:center;flex-shrink:0;margin-right:2px}.pk-tree-icon{display:inline-flex;align-items:center;flex-shrink:0}.pk-tree-label{font-size:14px;color:#1e293b;flex:1}.pk-tree-link{color:inherit;text-decoration:none}.pk-tree-link:hover{text-decoration:underline}.pk-tree-children{padding-left:20px}.pk-tree-cb{width:15px;height:15px;border-radius:3px;border:1.5px solid #94a3b8;background:#fff;display:inline-flex;align-items:center;justify-content:center;transition:border-color .15s,background .15s}.pk-tree-cb--checked{background:#0ea5e9;border-color:#0ea5e9}.pk-tree-cb--indeterminate{border-color:#0ea5e9}.pk-tree-cb-dash{width:8px;height:2px;background:#0ea5e9;border-radius:1px;display:block}.pk-tree-radio{width:14px;height:14px;border-radius:50%;border:1.5px solid #94a3b8;background:#fff;display:inline-flex;align-items:center;justify-content:center;transition:border-color .15s}.pk-tree-radio--checked{border-color:#0ea5e9;box-shadow:inset 0 0 0 3px #0ea5e9}\n"] }]
|
|
2037
2041
|
}], propDecorators: { nodes: [{
|
|
2038
2042
|
type: Input
|
|
2043
|
+
}], rootNodes: [{
|
|
2044
|
+
type: Input
|
|
2039
2045
|
}], selection: [{
|
|
2040
2046
|
type: Input
|
|
2041
2047
|
}], nodeToggled: [{
|
|
@@ -2214,12 +2220,13 @@ class PkTreeviewComponent {
|
|
|
2214
2220
|
|
|
2215
2221
|
<pk-treeview-node
|
|
2216
2222
|
[nodes]="nodes"
|
|
2223
|
+
[rootNodes]="nodes"
|
|
2217
2224
|
[selection]="selection"
|
|
2218
2225
|
(nodeToggled)="onNodeToggled($event)"
|
|
2219
2226
|
(selectionChanged)="onSelectionChanged($event)">
|
|
2220
2227
|
</pk-treeview-node>
|
|
2221
2228
|
</div>
|
|
2222
|
-
`, isInline: true, styles: [".pk-treeview{font-family:inherit;font-size:14px}.pk-tree-select-all{display:flex;align-items:center;gap:6px;padding:4px 8px 6px;border-bottom:1px solid #e2e8f0;margin-bottom:4px;cursor:pointer}.pk-tree-select-all-label{font-size:13px;color:#475569;font-weight:500;-webkit-user-select:none;user-select:none}.pk-tree-cb{width:15px;height:15px;border-radius:3px;border:1.5px solid #94a3b8;background:#fff;display:inline-flex;align-items:center;justify-content:center;transition:border-color .15s,background .15s;flex-shrink:0}.pk-tree-cb--checked{background:#0ea5e9;border-color:#0ea5e9}.pk-tree-cb--indeterminate{border-color:#0ea5e9}.pk-tree-cb-dash{width:8px;height:2px;background:#0ea5e9;border-radius:1px;display:block}\n"], dependencies: [{ kind: "component", type: PkIcon, selector: "pk-icon", inputs: ["name", "iconSet", "size", "color", "fillColor", "viewBox", "strokeWidth", "variant", "fill", "weight", "grade", "opticalSize"] }, { kind: "component", type: PkTreeviewNodeComponent, selector: "pk-treeview-node", inputs: ["nodes", "selection"], outputs: ["nodeToggled", "selectionChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2229
|
+
`, isInline: true, styles: [".pk-treeview{font-family:inherit;font-size:14px}.pk-tree-select-all{display:flex;align-items:center;gap:6px;padding:4px 8px 6px;border-bottom:1px solid #e2e8f0;margin-bottom:4px;cursor:pointer}.pk-tree-select-all-label{font-size:13px;color:#475569;font-weight:500;-webkit-user-select:none;user-select:none}.pk-tree-cb{width:15px;height:15px;border-radius:3px;border:1.5px solid #94a3b8;background:#fff;display:inline-flex;align-items:center;justify-content:center;transition:border-color .15s,background .15s;flex-shrink:0}.pk-tree-cb--checked{background:#0ea5e9;border-color:#0ea5e9}.pk-tree-cb--indeterminate{border-color:#0ea5e9}.pk-tree-cb-dash{width:8px;height:2px;background:#0ea5e9;border-radius:1px;display:block}\n"], dependencies: [{ kind: "component", type: PkIcon, selector: "pk-icon", inputs: ["name", "iconSet", "size", "color", "fillColor", "viewBox", "strokeWidth", "variant", "fill", "weight", "grade", "opticalSize"] }, { kind: "component", type: PkTreeviewNodeComponent, selector: "pk-treeview-node", inputs: ["nodes", "rootNodes", "selection"], outputs: ["nodeToggled", "selectionChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2223
2230
|
}
|
|
2224
2231
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: PkTreeviewComponent, decorators: [{
|
|
2225
2232
|
type: Component,
|
|
@@ -2246,6 +2253,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
2246
2253
|
|
|
2247
2254
|
<pk-treeview-node
|
|
2248
2255
|
[nodes]="nodes"
|
|
2256
|
+
[rootNodes]="nodes"
|
|
2249
2257
|
[selection]="selection"
|
|
2250
2258
|
(nodeToggled)="onNodeToggled($event)"
|
|
2251
2259
|
(selectionChanged)="onSelectionChanged($event)">
|
|
@@ -2289,6 +2297,8 @@ class PkSelectComponent {
|
|
|
2289
2297
|
labelField = input('label', ...(ngDevMode ? [{ debugName: "labelField" }] : /* istanbul ignore next */ []));
|
|
2290
2298
|
valueField = input('value', ...(ngDevMode ? [{ debugName: "valueField" }] : /* istanbul ignore next */ []));
|
|
2291
2299
|
returnObjects = input(false, ...(ngDevMode ? [{ debugName: "returnObjects" }] : /* istanbul ignore next */ []));
|
|
2300
|
+
customClass = input(null, ...(ngDevMode ? [{ debugName: "customClass" }] : /* istanbul ignore next */ []));
|
|
2301
|
+
customStyle = input(null, ...(ngDevMode ? [{ debugName: "customStyle" }] : /* istanbul ignore next */ []));
|
|
2292
2302
|
change = output();
|
|
2293
2303
|
isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
|
|
2294
2304
|
searchQuery = signal('', ...(ngDevMode ? [{ debugName: "searchQuery" }] : /* istanbul ignore next */ []));
|
|
@@ -2432,18 +2442,19 @@ class PkSelectComponent {
|
|
|
2432
2442
|
return value;
|
|
2433
2443
|
}
|
|
2434
2444
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: PkSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2435
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: PkSelectComponent, isStandalone: true, selector: "pk-select", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, labelField: { classPropertyName: "labelField", publicName: "labelField", isSignal: true, isRequired: false, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: true, isRequired: false, transformFunction: null }, returnObjects: { classPropertyName: "returnObjects", publicName: "returnObjects", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { change: "change" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, providers: [
|
|
2445
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: PkSelectComponent, isStandalone: true, selector: "pk-select", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, labelField: { classPropertyName: "labelField", publicName: "labelField", isSignal: true, isRequired: false, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: true, isRequired: false, transformFunction: null }, returnObjects: { classPropertyName: "returnObjects", publicName: "returnObjects", isSignal: true, isRequired: false, transformFunction: null }, customClass: { classPropertyName: "customClass", publicName: "customClass", isSignal: true, isRequired: false, transformFunction: null }, customStyle: { classPropertyName: "customStyle", publicName: "customStyle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { change: "change" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, providers: [
|
|
2436
2446
|
{
|
|
2437
2447
|
provide: NG_VALUE_ACCESSOR,
|
|
2438
2448
|
useExisting: forwardRef(() => PkSelectComponent),
|
|
2439
2449
|
multi: true
|
|
2440
2450
|
}
|
|
2441
2451
|
], ngImport: i0, template: `
|
|
2442
|
-
<div class="pk-select-container">
|
|
2452
|
+
<div class="pk-select-container" [class]="customClass()">
|
|
2443
2453
|
<div
|
|
2444
2454
|
class="pk-select-trigger"
|
|
2445
2455
|
[class.pk-select-trigger-open]="isOpen()"
|
|
2446
2456
|
[class.pk-select-trigger-disabled]="disabled()"
|
|
2457
|
+
[ngStyle]="customStyle()"
|
|
2447
2458
|
(click)="toggleDropdown()">
|
|
2448
2459
|
<span class="pk-select-value">
|
|
2449
2460
|
@if (displayValue()) {
|
|
@@ -2498,11 +2509,11 @@ class PkSelectComponent {
|
|
|
2498
2509
|
</div>
|
|
2499
2510
|
}
|
|
2500
2511
|
</div>
|
|
2501
|
-
`, isInline: true, styles: [".pk-select-container{position:relative;width:100%}.pk-select-trigger{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;background-color:#fff;cursor:pointer;transition:all .2s
|
|
2512
|
+
`, isInline: true, styles: [".pk-select-container{position:relative;width:100%}.pk-select-trigger{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;background-color:#fff;cursor:pointer;transition:all .2s}.pk-select-trigger:hover:not(.pk-select-trigger-disabled){border-color:#3b82f6}.pk-select-trigger-open{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.pk-select-trigger-disabled{background-color:#f3f4f6;cursor:not-allowed;opacity:.6}.pk-select-value{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pk-select-placeholder{color:#9ca3af}.pk-select-arrow{margin-left:8px;font-size:12px;color:#6b7280;transition:transform .2s}.pk-select-arrow-open{transform:rotate(180deg)}.pk-select-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background-color:#fff;border:1px solid #d1d5db;border-radius:6px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;z-index:1000;max-height:300px;overflow:hidden;display:flex;flex-direction:column}.pk-select-search{padding:8px;border-bottom:1px solid #e5e7eb}.pk-select-search-input{width:100%;padding:6px 10px;border:1px solid #d1d5db;border-radius:4px;font-size:14px;outline:none}.pk-select-search-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.pk-select-options{overflow-y:auto;max-height:250px}.pk-select-option{display:flex;align-items:center;padding:8px 12px;cursor:pointer;transition:background-color .2s}.pk-select-option:hover:not(.pk-select-option-disabled){background-color:#f3f4f6}.pk-select-option-selected{background-color:#dbeafe;color:#1e40af}.pk-select-option-disabled{opacity:.5;cursor:not-allowed}.pk-select-checkbox{margin-right:8px;cursor:pointer}.pk-select-option-label{flex:1}.pk-select-no-options{padding:16px 12px;text-align:center;color:#9ca3af;font-size:14px}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
2502
2513
|
}
|
|
2503
2514
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: PkSelectComponent, decorators: [{
|
|
2504
2515
|
type: Component,
|
|
2505
|
-
args: [{ selector: 'pk-select', standalone: true, imports: [], providers: [
|
|
2516
|
+
args: [{ selector: 'pk-select', standalone: true, imports: [NgStyle], providers: [
|
|
2506
2517
|
{
|
|
2507
2518
|
provide: NG_VALUE_ACCESSOR,
|
|
2508
2519
|
useExisting: forwardRef(() => PkSelectComponent),
|
|
@@ -2511,11 +2522,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
2511
2522
|
], host: {
|
|
2512
2523
|
'(document:click)': 'onDocumentClick($event)'
|
|
2513
2524
|
}, template: `
|
|
2514
|
-
<div class="pk-select-container">
|
|
2525
|
+
<div class="pk-select-container" [class]="customClass()">
|
|
2515
2526
|
<div
|
|
2516
2527
|
class="pk-select-trigger"
|
|
2517
2528
|
[class.pk-select-trigger-open]="isOpen()"
|
|
2518
2529
|
[class.pk-select-trigger-disabled]="disabled()"
|
|
2530
|
+
[ngStyle]="customStyle()"
|
|
2519
2531
|
(click)="toggleDropdown()">
|
|
2520
2532
|
<span class="pk-select-value">
|
|
2521
2533
|
@if (displayValue()) {
|
|
@@ -2570,8 +2582,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
2570
2582
|
</div>
|
|
2571
2583
|
}
|
|
2572
2584
|
</div>
|
|
2573
|
-
`, styles: [".pk-select-container{position:relative;width:100%}.pk-select-trigger{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;background-color:#fff;cursor:pointer;transition:all .2s
|
|
2574
|
-
}], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: true }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], labelField: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelField", required: false }] }], valueField: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueField", required: false }] }], returnObjects: [{ type: i0.Input, args: [{ isSignal: true, alias: "returnObjects", required: false }] }], change: [{ type: i0.Output, args: ["change"] }] } });
|
|
2585
|
+
`, styles: [".pk-select-container{position:relative;width:100%}.pk-select-trigger{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;background-color:#fff;cursor:pointer;transition:all .2s}.pk-select-trigger:hover:not(.pk-select-trigger-disabled){border-color:#3b82f6}.pk-select-trigger-open{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.pk-select-trigger-disabled{background-color:#f3f4f6;cursor:not-allowed;opacity:.6}.pk-select-value{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pk-select-placeholder{color:#9ca3af}.pk-select-arrow{margin-left:8px;font-size:12px;color:#6b7280;transition:transform .2s}.pk-select-arrow-open{transform:rotate(180deg)}.pk-select-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background-color:#fff;border:1px solid #d1d5db;border-radius:6px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;z-index:1000;max-height:300px;overflow:hidden;display:flex;flex-direction:column}.pk-select-search{padding:8px;border-bottom:1px solid #e5e7eb}.pk-select-search-input{width:100%;padding:6px 10px;border:1px solid #d1d5db;border-radius:4px;font-size:14px;outline:none}.pk-select-search-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.pk-select-options{overflow-y:auto;max-height:250px}.pk-select-option{display:flex;align-items:center;padding:8px 12px;cursor:pointer;transition:background-color .2s}.pk-select-option:hover:not(.pk-select-option-disabled){background-color:#f3f4f6}.pk-select-option-selected{background-color:#dbeafe;color:#1e40af}.pk-select-option-disabled{opacity:.5;cursor:not-allowed}.pk-select-checkbox{margin-right:8px;cursor:pointer}.pk-select-option-label{flex:1}.pk-select-no-options{padding:16px 12px;text-align:center;color:#9ca3af;font-size:14px}\n"] }]
|
|
2586
|
+
}], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: true }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], labelField: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelField", required: false }] }], valueField: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueField", required: false }] }], returnObjects: [{ type: i0.Input, args: [{ isSignal: true, alias: "returnObjects", required: false }] }], customClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "customClass", required: false }] }], customStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "customStyle", required: false }] }], change: [{ type: i0.Output, args: ["change"] }] } });
|
|
2575
2587
|
|
|
2576
2588
|
class PkAutocompleteComponent {
|
|
2577
2589
|
elementRef = inject(ElementRef);
|
|
@@ -2583,6 +2595,8 @@ class PkAutocompleteComponent {
|
|
|
2583
2595
|
debounceTime = input(300, ...(ngDevMode ? [{ debugName: "debounceTime" }] : /* istanbul ignore next */ []));
|
|
2584
2596
|
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
2585
2597
|
displayKey = input('label', ...(ngDevMode ? [{ debugName: "displayKey" }] : /* istanbul ignore next */ []));
|
|
2598
|
+
customClass = input('', ...(ngDevMode ? [{ debugName: "customClass" }] : /* istanbul ignore next */ []));
|
|
2599
|
+
customStyle = input(null, ...(ngDevMode ? [{ debugName: "customStyle" }] : /* istanbul ignore next */ []));
|
|
2586
2600
|
// State
|
|
2587
2601
|
searchTerm = signal('', ...(ngDevMode ? [{ debugName: "searchTerm" }] : /* istanbul ignore next */ []));
|
|
2588
2602
|
isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
|
|
@@ -2758,16 +2772,16 @@ class PkAutocompleteComponent {
|
|
|
2758
2772
|
// Handled by input() signal
|
|
2759
2773
|
}
|
|
2760
2774
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: PkAutocompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2761
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: PkAutocompleteComponent, isStandalone: true, selector: "pk-autocomplete", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, fetchFn: { classPropertyName: "fetchFn", publicName: "fetchFn", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, minChars: { classPropertyName: "minChars", publicName: "minChars", isSignal: true, isRequired: false, transformFunction: null }, debounceTime: { classPropertyName: "debounceTime", publicName: "debounceTime", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, displayKey: { classPropertyName: "displayKey", publicName: "displayKey", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:click": "onClickOutside($event)" } }, providers: [
|
|
2775
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: PkAutocompleteComponent, isStandalone: true, selector: "pk-autocomplete", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, fetchFn: { classPropertyName: "fetchFn", publicName: "fetchFn", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, minChars: { classPropertyName: "minChars", publicName: "minChars", isSignal: true, isRequired: false, transformFunction: null }, debounceTime: { classPropertyName: "debounceTime", publicName: "debounceTime", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, displayKey: { classPropertyName: "displayKey", publicName: "displayKey", isSignal: true, isRequired: false, transformFunction: null }, customClass: { classPropertyName: "customClass", publicName: "customClass", isSignal: true, isRequired: false, transformFunction: null }, customStyle: { classPropertyName: "customStyle", publicName: "customStyle", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:click": "onClickOutside($event)" } }, providers: [
|
|
2762
2776
|
{
|
|
2763
2777
|
provide: NG_VALUE_ACCESSOR,
|
|
2764
2778
|
useExisting: forwardRef(() => PkAutocompleteComponent),
|
|
2765
2779
|
multi: true,
|
|
2766
2780
|
},
|
|
2767
2781
|
], ngImport: i0, template: `
|
|
2768
|
-
<div class="
|
|
2782
|
+
<div class="pk-autocomplete" [ngClass]="customClass()" [ngStyle]="customStyle()">
|
|
2769
2783
|
<!-- Input -->
|
|
2770
|
-
<div class="
|
|
2784
|
+
<div class="pk-autocomplete__input-wrap">
|
|
2771
2785
|
<input
|
|
2772
2786
|
#inputElement
|
|
2773
2787
|
type="text"
|
|
@@ -2777,21 +2791,22 @@ class PkAutocompleteComponent {
|
|
|
2777
2791
|
(keydown)="onKeyDown($event)"
|
|
2778
2792
|
[placeholder]="placeholder()"
|
|
2779
2793
|
[disabled]="disabled()"
|
|
2780
|
-
|
|
2781
|
-
|
|
2794
|
+
[ngStyle]="customStyle()"
|
|
2795
|
+
class="pk-autocomplete__input"
|
|
2796
|
+
[class.pk-autocomplete__input--with-action]="loading() || (searchTerm() && !loading())"
|
|
2782
2797
|
/>
|
|
2783
2798
|
|
|
2784
2799
|
<!-- Loading Spinner or Clear Button -->
|
|
2785
2800
|
@if (loading()) {
|
|
2786
|
-
<div class="
|
|
2801
|
+
<div class="pk-autocomplete__action">
|
|
2787
2802
|
<div class="pk-spinner pk-spinner-sm"></div>
|
|
2788
2803
|
</div>
|
|
2789
2804
|
} @else if (searchTerm() && !disabled()) {
|
|
2790
2805
|
<button
|
|
2791
2806
|
type="button"
|
|
2792
2807
|
(click)="clear()"
|
|
2793
|
-
class="
|
|
2794
|
-
<svg class="
|
|
2808
|
+
class="pk-autocomplete__clear-btn">
|
|
2809
|
+
<svg class="pk-autocomplete__clear-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
2795
2810
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/>
|
|
2796
2811
|
</svg>
|
|
2797
2812
|
</button>
|
|
@@ -2800,20 +2815,20 @@ class PkAutocompleteComponent {
|
|
|
2800
2815
|
|
|
2801
2816
|
<!-- Dropdown -->
|
|
2802
2817
|
@if (isOpen() && !disabled()) {
|
|
2803
|
-
<div class="
|
|
2818
|
+
<div class="pk-autocomplete__dropdown">
|
|
2804
2819
|
@if (loading()) {
|
|
2805
|
-
<div class="
|
|
2806
|
-
<div class="pk-spinner pk-spinner-sm
|
|
2807
|
-
<p
|
|
2820
|
+
<div class="pk-autocomplete__state">
|
|
2821
|
+
<div class="pk-spinner pk-spinner-sm"></div>
|
|
2822
|
+
<p>กำลังค้นหา...</p>
|
|
2808
2823
|
</div>
|
|
2809
2824
|
} @else if (filteredOptions().length === 0) {
|
|
2810
|
-
<div class="
|
|
2811
|
-
<svg class="
|
|
2825
|
+
<div class="pk-autocomplete__state">
|
|
2826
|
+
<svg class="pk-autocomplete__empty-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
2812
2827
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.172 16.172a4 4 0 015.656 0M9 10h.01M15 10h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/>
|
|
2813
2828
|
</svg>
|
|
2814
|
-
<p
|
|
2829
|
+
<p>ไม่พบข้อมูล</p>
|
|
2815
2830
|
@if (searchTerm()) {
|
|
2816
|
-
<p class="
|
|
2831
|
+
<p class="pk-autocomplete__subtext">ลองค้นหาด้วยคำอื่น</p>
|
|
2817
2832
|
}
|
|
2818
2833
|
</div>
|
|
2819
2834
|
} @else {
|
|
@@ -2822,12 +2837,12 @@ class PkAutocompleteComponent {
|
|
|
2822
2837
|
type="button"
|
|
2823
2838
|
(click)="selectOption(option)"
|
|
2824
2839
|
[disabled]="option.disabled"
|
|
2825
|
-
class="
|
|
2826
|
-
[class.
|
|
2827
|
-
[class.
|
|
2840
|
+
class="pk-autocomplete__option"
|
|
2841
|
+
[class.pk-autocomplete__option--active]="highlightedIndex() === idx"
|
|
2842
|
+
[class.pk-autocomplete__option--selected]="isSelected(option)">
|
|
2828
2843
|
{{ option.label }}
|
|
2829
2844
|
@if (isSelected(option)) {
|
|
2830
|
-
<span class="
|
|
2845
|
+
<span class="pk-autocomplete__check">✓</span>
|
|
2831
2846
|
}
|
|
2832
2847
|
</button>
|
|
2833
2848
|
}
|
|
@@ -2835,25 +2850,20 @@ class PkAutocompleteComponent {
|
|
|
2835
2850
|
</div>
|
|
2836
2851
|
}
|
|
2837
2852
|
</div>
|
|
2838
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2853
|
+
`, isInline: true, styles: [".pk-autocomplete{position:relative;width:100%}.pk-autocomplete__input-wrap{position:relative}.pk-autocomplete__input{width:100%;height:40px;padding:0 14px;border:1px solid #d5d9e0;border-radius:10px;background:#fff;color:#1f2937;font-size:14px;line-height:1;transition:border-color .18s ease,box-shadow .18s ease,background-color .18s ease}.pk-autocomplete__input::placeholder{color:#9aa3af}.pk-autocomplete__input:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb24}.pk-autocomplete__input:disabled{background:#f4f6f8;color:#9aa3af;cursor:not-allowed}.pk-autocomplete__input--with-action{padding-right:40px}.pk-autocomplete__action,.pk-autocomplete__clear-btn{position:absolute;right:10px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center}.pk-autocomplete__clear-btn{width:24px;height:24px;border:none;border-radius:999px;background:transparent;color:#98a2b3;cursor:pointer;transition:background-color .15s ease,color .15s ease}.pk-autocomplete__clear-btn:hover{background:#eef2f7;color:#4b5563}.pk-autocomplete__clear-icon{width:16px;height:16px}.pk-autocomplete__dropdown{position:absolute;z-index:50;width:100%;margin-top:6px;background:#fff;border:1px solid #dbe1e8;border-radius:12px;box-shadow:0 14px 30px #0f172a24;max-height:260px;overflow:auto}.pk-autocomplete__state{min-height:110px;padding:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:#6b7280;font-size:13px}.pk-autocomplete__empty-icon{width:34px;height:34px;color:#c2cad4}.pk-autocomplete__subtext{margin:0;color:#9aa3af;font-size:12px}.pk-autocomplete__option{width:100%;padding:10px 14px;border:none;background:transparent;color:#1f2937;font-size:14px;text-align:left;display:flex;align-items:center;justify-content:space-between;cursor:pointer;transition:background-color .12s ease}.pk-autocomplete__option:hover{background:#f1f5ff}.pk-autocomplete__option--active{background:#e7efff}.pk-autocomplete__option--selected{font-weight:600}.pk-autocomplete__option:disabled{opacity:.45;cursor:not-allowed}.pk-autocomplete__check{color:#2563eb}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2839
2854
|
}
|
|
2840
2855
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: PkAutocompleteComponent, decorators: [{
|
|
2841
2856
|
type: Component,
|
|
2842
|
-
args: [{
|
|
2843
|
-
selector: 'pk-autocomplete',
|
|
2844
|
-
standalone: true,
|
|
2845
|
-
imports: [FormsModule],
|
|
2846
|
-
providers: [
|
|
2857
|
+
args: [{ selector: 'pk-autocomplete', standalone: true, imports: [FormsModule, NgClass, NgStyle], providers: [
|
|
2847
2858
|
{
|
|
2848
2859
|
provide: NG_VALUE_ACCESSOR,
|
|
2849
2860
|
useExisting: forwardRef(() => PkAutocompleteComponent),
|
|
2850
2861
|
multi: true,
|
|
2851
2862
|
},
|
|
2852
|
-
],
|
|
2853
|
-
|
|
2854
|
-
<div class="relative w-full">
|
|
2863
|
+
], template: `
|
|
2864
|
+
<div class="pk-autocomplete" [ngClass]="customClass()" [ngStyle]="customStyle()">
|
|
2855
2865
|
<!-- Input -->
|
|
2856
|
-
<div class="
|
|
2866
|
+
<div class="pk-autocomplete__input-wrap">
|
|
2857
2867
|
<input
|
|
2858
2868
|
#inputElement
|
|
2859
2869
|
type="text"
|
|
@@ -2863,21 +2873,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
2863
2873
|
(keydown)="onKeyDown($event)"
|
|
2864
2874
|
[placeholder]="placeholder()"
|
|
2865
2875
|
[disabled]="disabled()"
|
|
2866
|
-
|
|
2867
|
-
|
|
2876
|
+
[ngStyle]="customStyle()"
|
|
2877
|
+
class="pk-autocomplete__input"
|
|
2878
|
+
[class.pk-autocomplete__input--with-action]="loading() || (searchTerm() && !loading())"
|
|
2868
2879
|
/>
|
|
2869
2880
|
|
|
2870
2881
|
<!-- Loading Spinner or Clear Button -->
|
|
2871
2882
|
@if (loading()) {
|
|
2872
|
-
<div class="
|
|
2883
|
+
<div class="pk-autocomplete__action">
|
|
2873
2884
|
<div class="pk-spinner pk-spinner-sm"></div>
|
|
2874
2885
|
</div>
|
|
2875
2886
|
} @else if (searchTerm() && !disabled()) {
|
|
2876
2887
|
<button
|
|
2877
2888
|
type="button"
|
|
2878
2889
|
(click)="clear()"
|
|
2879
|
-
class="
|
|
2880
|
-
<svg class="
|
|
2890
|
+
class="pk-autocomplete__clear-btn">
|
|
2891
|
+
<svg class="pk-autocomplete__clear-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
2881
2892
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/>
|
|
2882
2893
|
</svg>
|
|
2883
2894
|
</button>
|
|
@@ -2886,20 +2897,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
2886
2897
|
|
|
2887
2898
|
<!-- Dropdown -->
|
|
2888
2899
|
@if (isOpen() && !disabled()) {
|
|
2889
|
-
<div class="
|
|
2900
|
+
<div class="pk-autocomplete__dropdown">
|
|
2890
2901
|
@if (loading()) {
|
|
2891
|
-
<div class="
|
|
2892
|
-
<div class="pk-spinner pk-spinner-sm
|
|
2893
|
-
<p
|
|
2902
|
+
<div class="pk-autocomplete__state">
|
|
2903
|
+
<div class="pk-spinner pk-spinner-sm"></div>
|
|
2904
|
+
<p>กำลังค้นหา...</p>
|
|
2894
2905
|
</div>
|
|
2895
2906
|
} @else if (filteredOptions().length === 0) {
|
|
2896
|
-
<div class="
|
|
2897
|
-
<svg class="
|
|
2907
|
+
<div class="pk-autocomplete__state">
|
|
2908
|
+
<svg class="pk-autocomplete__empty-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
2898
2909
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.172 16.172a4 4 0 015.656 0M9 10h.01M15 10h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/>
|
|
2899
2910
|
</svg>
|
|
2900
|
-
<p
|
|
2911
|
+
<p>ไม่พบข้อมูล</p>
|
|
2901
2912
|
@if (searchTerm()) {
|
|
2902
|
-
<p class="
|
|
2913
|
+
<p class="pk-autocomplete__subtext">ลองค้นหาด้วยคำอื่น</p>
|
|
2903
2914
|
}
|
|
2904
2915
|
</div>
|
|
2905
2916
|
} @else {
|
|
@@ -2908,12 +2919,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
2908
2919
|
type="button"
|
|
2909
2920
|
(click)="selectOption(option)"
|
|
2910
2921
|
[disabled]="option.disabled"
|
|
2911
|
-
class="
|
|
2912
|
-
[class.
|
|
2913
|
-
[class.
|
|
2922
|
+
class="pk-autocomplete__option"
|
|
2923
|
+
[class.pk-autocomplete__option--active]="highlightedIndex() === idx"
|
|
2924
|
+
[class.pk-autocomplete__option--selected]="isSelected(option)">
|
|
2914
2925
|
{{ option.label }}
|
|
2915
2926
|
@if (isSelected(option)) {
|
|
2916
|
-
<span class="
|
|
2927
|
+
<span class="pk-autocomplete__check">✓</span>
|
|
2917
2928
|
}
|
|
2918
2929
|
</button>
|
|
2919
2930
|
}
|
|
@@ -2921,10 +2932,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
2921
2932
|
</div>
|
|
2922
2933
|
}
|
|
2923
2934
|
</div>
|
|
2924
|
-
`,
|
|
2925
|
-
|
|
2926
|
-
}]
|
|
2927
|
-
}], ctorParameters: () => [], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], fetchFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "fetchFn", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], minChars: [{ type: i0.Input, args: [{ isSignal: true, alias: "minChars", required: false }] }], debounceTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "debounceTime", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], displayKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "displayKey", required: false }] }], onClickOutside: [{
|
|
2935
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".pk-autocomplete{position:relative;width:100%}.pk-autocomplete__input-wrap{position:relative}.pk-autocomplete__input{width:100%;height:40px;padding:0 14px;border:1px solid #d5d9e0;border-radius:10px;background:#fff;color:#1f2937;font-size:14px;line-height:1;transition:border-color .18s ease,box-shadow .18s ease,background-color .18s ease}.pk-autocomplete__input::placeholder{color:#9aa3af}.pk-autocomplete__input:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb24}.pk-autocomplete__input:disabled{background:#f4f6f8;color:#9aa3af;cursor:not-allowed}.pk-autocomplete__input--with-action{padding-right:40px}.pk-autocomplete__action,.pk-autocomplete__clear-btn{position:absolute;right:10px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center}.pk-autocomplete__clear-btn{width:24px;height:24px;border:none;border-radius:999px;background:transparent;color:#98a2b3;cursor:pointer;transition:background-color .15s ease,color .15s ease}.pk-autocomplete__clear-btn:hover{background:#eef2f7;color:#4b5563}.pk-autocomplete__clear-icon{width:16px;height:16px}.pk-autocomplete__dropdown{position:absolute;z-index:50;width:100%;margin-top:6px;background:#fff;border:1px solid #dbe1e8;border-radius:12px;box-shadow:0 14px 30px #0f172a24;max-height:260px;overflow:auto}.pk-autocomplete__state{min-height:110px;padding:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:#6b7280;font-size:13px}.pk-autocomplete__empty-icon{width:34px;height:34px;color:#c2cad4}.pk-autocomplete__subtext{margin:0;color:#9aa3af;font-size:12px}.pk-autocomplete__option{width:100%;padding:10px 14px;border:none;background:transparent;color:#1f2937;font-size:14px;text-align:left;display:flex;align-items:center;justify-content:space-between;cursor:pointer;transition:background-color .12s ease}.pk-autocomplete__option:hover{background:#f1f5ff}.pk-autocomplete__option--active{background:#e7efff}.pk-autocomplete__option--selected{font-weight:600}.pk-autocomplete__option:disabled{opacity:.45;cursor:not-allowed}.pk-autocomplete__check{color:#2563eb}\n"] }]
|
|
2936
|
+
}], ctorParameters: () => [], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], fetchFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "fetchFn", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], minChars: [{ type: i0.Input, args: [{ isSignal: true, alias: "minChars", required: false }] }], debounceTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "debounceTime", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], displayKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "displayKey", required: false }] }], customClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "customClass", required: false }] }], customStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "customStyle", required: false }] }], onClickOutside: [{
|
|
2928
2937
|
type: HostListener,
|
|
2929
2938
|
args: ['document:click', ['$event']]
|
|
2930
2939
|
}] } });
|