@ship-ui/core 0.19.4 → 0.22.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/README.md +3 -0
- package/assets/mcp/components.json +32 -4212
- package/bin/mcp/index.js +6544 -444
- package/bin/ship-fg-scanner +0 -0
- package/bin/ship-fg.mjs +18 -16
- package/bin/src/subset.ts +3 -1
- package/fesm2022/ship-ui-core-sh-form-field-experimental.mjs +42 -0
- package/fesm2022/ship-ui-core-sh-form-field-experimental.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-accordion.mjs +127 -0
- package/fesm2022/ship-ui-core-ship-accordion.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-alert.mjs +305 -0
- package/fesm2022/ship-ui-core-ship-alert.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-blueprint.mjs +1156 -0
- package/fesm2022/ship-ui-core-ship-blueprint.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-button-group.mjs +41 -0
- package/fesm2022/ship-ui-core-ship-button-group.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-button.mjs +38 -0
- package/fesm2022/ship-ui-core-ship-button.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-card.mjs +35 -0
- package/fesm2022/ship-ui-core-ship-card.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-checkbox.mjs +113 -0
- package/fesm2022/ship-ui-core-ship-checkbox.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-chip.mjs +44 -0
- package/fesm2022/ship-ui-core-ship-chip.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-color-picker.mjs +947 -0
- package/fesm2022/ship-ui-core-ship-color-picker.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-datepicker.mjs +951 -0
- package/fesm2022/ship-ui-core-ship-datepicker.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-dialog.mjs +263 -0
- package/fesm2022/ship-ui-core-ship-dialog.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-divider.mjs +22 -0
- package/fesm2022/ship-ui-core-ship-divider.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-event-card.mjs +50 -0
- package/fesm2022/ship-ui-core-ship-event-card.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-file-upload.mjs +112 -0
- package/fesm2022/ship-ui-core-ship-file-upload.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-form-field.mjs +310 -0
- package/fesm2022/ship-ui-core-ship-form-field.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-icon.mjs +81 -0
- package/fesm2022/ship-ui-core-ship-icon.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-list.mjs +22 -0
- package/fesm2022/ship-ui-core-ship-list.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-menu.mjs +545 -0
- package/fesm2022/ship-ui-core-ship-menu.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-popover.mjs +286 -0
- package/fesm2022/ship-ui-core-ship-popover.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-progress-bar.mjs +37 -0
- package/fesm2022/ship-ui-core-ship-progress-bar.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-radio.mjs +102 -0
- package/fesm2022/ship-ui-core-ship-radio.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-range-slider.mjs +277 -0
- package/fesm2022/ship-ui-core-ship-range-slider.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-select.mjs +971 -0
- package/fesm2022/ship-ui-core-ship-select.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-sidenav.mjs +248 -0
- package/fesm2022/ship-ui-core-ship-sidenav.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-sortable.mjs +485 -0
- package/fesm2022/ship-ui-core-ship-sortable.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-spinner.mjs +28 -0
- package/fesm2022/ship-ui-core-ship-spinner.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-stepper.mjs +76 -0
- package/fesm2022/ship-ui-core-ship-stepper.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-table-filter-bar.mjs +28 -0
- package/fesm2022/ship-ui-core-ship-table-filter-bar.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-table.mjs +442 -0
- package/fesm2022/ship-ui-core-ship-table.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-tabs.mjs +38 -0
- package/fesm2022/ship-ui-core-ship-tabs.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-theme-toggle.mjs +119 -0
- package/fesm2022/ship-ui-core-ship-theme-toggle.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-toggle-card.mjs +75 -0
- package/fesm2022/ship-ui-core-ship-toggle-card.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-toggle.mjs +105 -0
- package/fesm2022/ship-ui-core-ship-toggle.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-virtual-scroll.mjs +186 -0
- package/fesm2022/ship-ui-core-ship-virtual-scroll.mjs.map +1 -0
- package/fesm2022/ship-ui-core.mjs +880 -8782
- package/fesm2022/ship-ui-core.mjs.map +1 -1
- package/package.json +147 -3
- package/styles/core.scss +43 -0
- package/styles/helpers.scss +2 -0
- package/styles/index.scss +12 -123
- package/types/ship-ui-core-sh-form-field-experimental.d.ts +11 -0
- package/types/ship-ui-core-ship-accordion.d.ts +19 -0
- package/types/ship-ui-core-ship-alert.d.ts +68 -0
- package/types/ship-ui-core-ship-blueprint.d.ts +112 -0
- package/types/ship-ui-core-ship-button-group.d.ts +15 -0
- package/types/ship-ui-core-ship-button.d.ts +13 -0
- package/types/ship-ui-core-ship-card.d.ts +11 -0
- package/types/ship-ui-core-ship-checkbox.d.ts +22 -0
- package/types/ship-ui-core-ship-chip.d.ts +15 -0
- package/types/ship-ui-core-ship-color-picker.d.ts +105 -0
- package/types/ship-ui-core-ship-datepicker.d.ts +96 -0
- package/types/ship-ui-core-ship-dialog.d.ts +76 -0
- package/types/ship-ui-core-ship-divider.d.ts +8 -0
- package/types/ship-ui-core-ship-event-card.d.ts +11 -0
- package/types/ship-ui-core-ship-file-upload.d.ts +20 -0
- package/types/ship-ui-core-ship-form-field.d.ts +32 -0
- package/types/ship-ui-core-ship-icon.d.ts +18 -0
- package/types/ship-ui-core-ship-list.d.ts +8 -0
- package/types/ship-ui-core-ship-menu.d.ts +49 -0
- package/types/ship-ui-core-ship-popover.d.ts +40 -0
- package/types/ship-ui-core-ship-progress-bar.d.ts +14 -0
- package/types/ship-ui-core-ship-radio.d.ts +22 -0
- package/types/ship-ui-core-ship-range-slider.d.ts +31 -0
- package/types/ship-ui-core-ship-select.d.ts +81 -0
- package/types/ship-ui-core-ship-sidenav.d.ts +36 -0
- package/types/ship-ui-core-ship-sortable.d.ts +72 -0
- package/types/ship-ui-core-ship-spinner.d.ts +10 -0
- package/types/ship-ui-core-ship-stepper.d.ts +13 -0
- package/types/ship-ui-core-ship-table-filter-bar.d.ts +8 -0
- package/types/ship-ui-core-ship-table.d.ts +69 -0
- package/types/ship-ui-core-ship-tabs.d.ts +14 -0
- package/types/ship-ui-core-ship-theme-toggle.d.ts +28 -0
- package/types/ship-ui-core-ship-toggle-card.d.ts +15 -0
- package/types/ship-ui-core-ship-toggle.d.ts +21 -0
- package/types/ship-ui-core-ship-virtual-scroll.d.ts +22 -0
- package/types/ship-ui-core.d.ts +88 -1070
- package/styles/components/ship-accordion.scss +0 -113
- package/styles/components/ship-alert-container.scss +0 -49
- package/styles/components/ship-alert.scss +0 -177
- package/styles/components/ship-blueprint.scss +0 -242
- package/styles/components/ship-button-group.scss +0 -165
- package/styles/components/ship-button.scss +0 -141
- package/styles/components/ship-card.scss +0 -56
- package/styles/components/ship-checkbox.scss +0 -116
- package/styles/components/ship-chip.scss +0 -104
- package/styles/components/ship-color-picker.scss +0 -150
- package/styles/components/ship-datepicker.scss +0 -317
- package/styles/components/ship-dialog.scss +0 -152
- package/styles/components/ship-divider.scss +0 -27
- package/styles/components/ship-event-card.scss +0 -51
- package/styles/components/ship-file-upload.scss +0 -47
- package/styles/components/ship-form-field.scss +0 -408
- package/styles/components/ship-icon.scss +0 -54
- package/styles/components/ship-list.scss +0 -165
- package/styles/components/ship-menu.scss +0 -237
- package/styles/components/ship-popover.scss +0 -205
- package/styles/components/ship-progress-bar.scss +0 -173
- package/styles/components/ship-radio.scss +0 -113
- package/styles/components/ship-range-slider.scss +0 -421
- package/styles/components/ship-select.scss +0 -153
- package/styles/components/ship-sidenav.scss +0 -195
- package/styles/components/ship-sortable.scss +0 -45
- package/styles/components/ship-spinner.scss +0 -53
- package/styles/components/ship-stepper.scss +0 -158
- package/styles/components/ship-table.scss +0 -443
- package/styles/components/ship-tabs.scss +0 -125
- package/styles/components/ship-theme-toggle.scss +0 -41
- package/styles/components/ship-toggle-card.scss +0 -69
- package/styles/components/ship-toggle.scss +0 -255
- package/styles/components/ship-tooltip.scss +0 -151
- package/styles/components/ship-virtual-scroll.scss +0 -12
package/bin/ship-fg-scanner
CHANGED
|
Binary file
|
package/bin/ship-fg.mjs
CHANGED
|
@@ -199,7 +199,7 @@ var require_compress_binding = __commonJS((exports, module) => {
|
|
|
199
199
|
setWindowTitle = function(title) {
|
|
200
200
|
document.title = title;
|
|
201
201
|
};
|
|
202
|
-
}
|
|
202
|
+
}
|
|
203
203
|
var out = Module["print"] || console.log.bind(console);
|
|
204
204
|
var err = Module["printErr"] || console.warn.bind(console);
|
|
205
205
|
for (key in moduleOverrides) {
|
|
@@ -1083,7 +1083,7 @@ var require_compress_binding = __commonJS((exports, module) => {
|
|
|
1083
1083
|
invokerFnBody += `var ret = retType.fromWireType(rv);
|
|
1084
1084
|
` + `return ret;
|
|
1085
1085
|
`;
|
|
1086
|
-
}
|
|
1086
|
+
}
|
|
1087
1087
|
invokerFnBody += `}
|
|
1088
1088
|
`;
|
|
1089
1089
|
args1.push(invokerFnBody);
|
|
@@ -1805,7 +1805,7 @@ var require_decompress_binding = __commonJS((exports, module) => {
|
|
|
1805
1805
|
setWindowTitle = function(title) {
|
|
1806
1806
|
document.title = title;
|
|
1807
1807
|
};
|
|
1808
|
-
}
|
|
1808
|
+
}
|
|
1809
1809
|
var out = Module["print"] || console.log.bind(console);
|
|
1810
1810
|
var err = Module["printErr"] || console.warn.bind(console);
|
|
1811
1811
|
for (key in moduleOverrides) {
|
|
@@ -2685,7 +2685,7 @@ var require_decompress_binding = __commonJS((exports, module) => {
|
|
|
2685
2685
|
invokerFnBody += `var ret = retType.fromWireType(rv);
|
|
2686
2686
|
` + `return ret;
|
|
2687
2687
|
`;
|
|
2688
|
-
}
|
|
2688
|
+
}
|
|
2689
2689
|
invokerFnBody += `}
|
|
2690
2690
|
`;
|
|
2691
2691
|
args1.push(invokerFnBody);
|
|
@@ -3236,7 +3236,7 @@ import { parseArgs } from "util";
|
|
|
3236
3236
|
import { spawnSync } from "child_process";
|
|
3237
3237
|
import { watch } from "fs";
|
|
3238
3238
|
import { readFile as readFile2, writeFile, readdir, mkdir } from "fs/promises";
|
|
3239
|
-
import { dirname, join, resolve } from "path";
|
|
3239
|
+
import { dirname as dirname2, join, resolve as resolve2 } from "path";
|
|
3240
3240
|
import { fileURLToPath } from "url";
|
|
3241
3241
|
import { gzipSync } from "zlib";
|
|
3242
3242
|
|
|
@@ -3244,12 +3244,14 @@ import { gzipSync } from "zlib";
|
|
|
3244
3244
|
var import_wawoff2 = __toESM(require_wawoff2(), 1);
|
|
3245
3245
|
import { readFile } from "fs/promises";
|
|
3246
3246
|
import { createRequire as createRequire2 } from "module";
|
|
3247
|
+
import { dirname, resolve } from "path";
|
|
3247
3248
|
var require2 = createRequire2(import.meta.url);
|
|
3248
3249
|
var harfbuzzInst = null;
|
|
3249
3250
|
async function loadAndInitializeHarfbuzz() {
|
|
3250
3251
|
if (harfbuzzInst)
|
|
3251
3252
|
return harfbuzzInst;
|
|
3252
|
-
const
|
|
3253
|
+
const mainEntry = require2.resolve("harfbuzzjs");
|
|
3254
|
+
const wasmPath = resolve(dirname(mainEntry), "harfbuzz-subset.wasm");
|
|
3253
3255
|
const wasmBuffer = await readFile(wasmPath);
|
|
3254
3256
|
const { instance } = await WebAssembly.instantiate(wasmBuffer);
|
|
3255
3257
|
const harfbuzzJsWasm = instance.exports;
|
|
@@ -3323,14 +3325,14 @@ function formatFileSize(bytes, dm = 2) {
|
|
|
3323
3325
|
}
|
|
3324
3326
|
|
|
3325
3327
|
// bin/src/ship-fg.ts
|
|
3326
|
-
var _dirname =
|
|
3328
|
+
var _dirname = dirname2(fileURLToPath(import.meta.url));
|
|
3327
3329
|
var CWD_PATH = process.cwd();
|
|
3328
|
-
var PHOSPHOR_SRC_PATH =
|
|
3330
|
+
var PHOSPHOR_SRC_PATH = resolve2(CWD_PATH, "node_modules", "@phosphor-icons", "web", "src");
|
|
3329
3331
|
var jsScannerFallback = async (PROJECT_SRC, shipUiDir, CWD_PATH2) => {
|
|
3330
3332
|
const uniqueIcons = new Set;
|
|
3331
3333
|
const isValidIcon = (s) => /^[a-z0-9-]+$/.test(s);
|
|
3332
3334
|
try {
|
|
3333
|
-
const pkgPath =
|
|
3335
|
+
const pkgPath = resolve2(shipUiDir, "package.json");
|
|
3334
3336
|
const pkgData = JSON.parse(await readFile2(pkgPath, "utf8"));
|
|
3335
3337
|
if (pkgData.libraryIcons) {
|
|
3336
3338
|
pkgData.libraryIcons.forEach((i) => uniqueIcons.add(i));
|
|
@@ -3341,7 +3343,7 @@ var jsScannerFallback = async (PROJECT_SRC, shipUiDir, CWD_PATH2) => {
|
|
|
3341
3343
|
for (const entry of entries) {
|
|
3342
3344
|
if (entry.name === "node_modules" || entry.name.startsWith("."))
|
|
3343
3345
|
continue;
|
|
3344
|
-
const fullPath =
|
|
3346
|
+
const fullPath = resolve2(dir, entry.name);
|
|
3345
3347
|
if (entry.isDirectory()) {
|
|
3346
3348
|
await scanDir(fullPath);
|
|
3347
3349
|
} else if (entry.name.endsWith(".html") || entry.name.endsWith(".ts")) {
|
|
@@ -3372,7 +3374,7 @@ var jsScannerFallback = async (PROJECT_SRC, shipUiDir, CWD_PATH2) => {
|
|
|
3372
3374
|
const glyphMaps = new Map;
|
|
3373
3375
|
for (const variant of variants) {
|
|
3374
3376
|
try {
|
|
3375
|
-
const selPath =
|
|
3377
|
+
const selPath = resolve2(CWD_PATH2, "node_modules", "@phosphor-icons", "web", "src", variant, "selection.json");
|
|
3376
3378
|
const parsed = JSON.parse(await readFile2(selPath, "utf8"));
|
|
3377
3379
|
const isDuotone = variant === "duotone";
|
|
3378
3380
|
for (const icon of parsed.icons || []) {
|
|
@@ -3430,8 +3432,8 @@ var watchers = [];
|
|
|
3430
3432
|
var run = async (PROJECT_SRC, PROJECT_PUBLIC, TARGET_FONT_TYPE, values) => {
|
|
3431
3433
|
const startTime = performance.now();
|
|
3432
3434
|
const actualDir = _dirname;
|
|
3433
|
-
const scannerPath =
|
|
3434
|
-
const shipUiDir =
|
|
3435
|
+
const scannerPath = resolve2(actualDir, "./ship-fg-scanner");
|
|
3436
|
+
const shipUiDir = resolve2(actualDir, "../");
|
|
3435
3437
|
let groupedIcons = {};
|
|
3436
3438
|
let missingIconsArray = [];
|
|
3437
3439
|
try {
|
|
@@ -3589,10 +3591,10 @@ function capitalize(str) {
|
|
|
3589
3591
|
var main = async (values) => {
|
|
3590
3592
|
const TARGET_FONT_TYPE = "woff2";
|
|
3591
3593
|
const actualDir = _dirname;
|
|
3592
|
-
const packageJsonPath =
|
|
3594
|
+
const packageJsonPath = resolve2(actualDir, "../package.json");
|
|
3593
3595
|
const PROJECT_SRC = values.src;
|
|
3594
3596
|
const PROJECT_PUBLIC = values.out;
|
|
3595
|
-
const selectionJsonPath =
|
|
3597
|
+
const selectionJsonPath = resolve2(PHOSPHOR_SRC_PATH, "regular", "selection.json");
|
|
3596
3598
|
const selectionData = await readFile2(selectionJsonPath, "utf8");
|
|
3597
3599
|
const GLYPH_MAP = JSON.parse(selectionData).icons.reduce((acc, iconWrapper) => {
|
|
3598
3600
|
const name = iconWrapper.properties.name;
|
|
@@ -3627,7 +3629,7 @@ Watching for file changes. Press Cmd+C to stop.`);
|
|
|
3627
3629
|
if (values.watch) {
|
|
3628
3630
|
const excludeFolders = ["node_modules", ".git", ".vscode", "bin", "assets"].concat([PROJECT_PUBLIC]);
|
|
3629
3631
|
watchers.push(watch(PROJECT_SRC, { recursive: true }, (_, filename) => {
|
|
3630
|
-
if (filename && !excludeFolders.some((folder) =>
|
|
3632
|
+
if (filename && !excludeFolders.some((folder) => resolve2(join(PROJECT_SRC, filename)).includes(folder))) {
|
|
3631
3633
|
debouncedRun(filename);
|
|
3632
3634
|
}
|
|
3633
3635
|
}));
|
package/bin/src/subset.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { readFile } from 'fs/promises';
|
|
2
2
|
import { createRequire } from 'module';
|
|
3
|
+
import { dirname, resolve } from 'path';
|
|
3
4
|
|
|
4
5
|
const require = createRequire(import.meta.url);
|
|
5
6
|
|
|
@@ -11,7 +12,8 @@ let harfbuzzInst: { harfbuzzJsWasm: any; heapu8: Uint8Array } | null = null;
|
|
|
11
12
|
async function loadAndInitializeHarfbuzz() {
|
|
12
13
|
if (harfbuzzInst) return harfbuzzInst;
|
|
13
14
|
|
|
14
|
-
const
|
|
15
|
+
const mainEntry = require.resolve('harfbuzzjs');
|
|
16
|
+
const wasmPath = resolve(dirname(mainEntry), 'harfbuzz-subset.wasm');
|
|
15
17
|
const wasmBuffer = await readFile(wasmPath);
|
|
16
18
|
const { instance } = await WebAssembly.instantiate(wasmBuffer);
|
|
17
19
|
const harfbuzzJsWasm = instance.exports as any;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { effect, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
import { createFormInputSignal } from '@ship-ui/core';
|
|
4
|
+
|
|
5
|
+
class ShipFormFieldExperimental {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.firstInput = createFormInputSignal();
|
|
8
|
+
this.hello = effect(() => {
|
|
9
|
+
console.log('hello', this.firstInput());
|
|
10
|
+
}, /* @ts-ignore */
|
|
11
|
+
...(ngDevMode ? [{ debugName: "hello" }] : /* istanbul ignore next */ []));
|
|
12
|
+
}
|
|
13
|
+
myClick() {
|
|
14
|
+
this.firstInput.update((x) => x + 'hello');
|
|
15
|
+
}
|
|
16
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ShipFormFieldExperimental, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.0", type: ShipFormFieldExperimental, isStandalone: true, selector: "sh-form-field-experimental", ngImport: i0, template: `
|
|
18
|
+
<ng-content></ng-content>
|
|
19
|
+
|
|
20
|
+
<button (click)="myClick()">hello</button>
|
|
21
|
+
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
22
|
+
}
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ShipFormFieldExperimental, decorators: [{
|
|
24
|
+
type: Component,
|
|
25
|
+
args: [{
|
|
26
|
+
selector: 'sh-form-field-experimental',
|
|
27
|
+
imports: [],
|
|
28
|
+
template: `
|
|
29
|
+
<ng-content></ng-content>
|
|
30
|
+
|
|
31
|
+
<button (click)="myClick()">hello</button>
|
|
32
|
+
`,
|
|
33
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
34
|
+
}]
|
|
35
|
+
}] });
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Generated bundle index. Do not edit.
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
export { ShipFormFieldExperimental };
|
|
42
|
+
//# sourceMappingURL=ship-ui-core-sh-form-field-experimental.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ship-ui-core-sh-form-field-experimental.mjs","sources":["../../../projects/ship-ui/sh-form-field-experimental/sh-form-field-experimental.ts","../../../projects/ship-ui/sh-form-field-experimental/ship-ui-core-sh-form-field-experimental.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, effect } from '@angular/core';\nimport { createFormInputSignal } from '@ship-ui/core';\n\n@Component({\n selector: 'sh-form-field-experimental',\n imports: [],\n template: `\n <ng-content></ng-content>\n\n <button (click)=\"myClick()\">hello</button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ShipFormFieldExperimental {\n firstInput = createFormInputSignal();\n\n hello = effect(() => {\n console.log('hello', this.firstInput());\n });\n\n myClick() {\n this.firstInput.update((x) => x + 'hello');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAaa,yBAAyB,CAAA;AAVtC,IAAA,WAAA,GAAA;QAWE,IAAA,CAAA,UAAU,GAAG,qBAAqB,EAAE;AAEpC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,MAAK;YAClB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QACzC,CAAC;kFAAC;AAKH,IAAA;IAHC,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;IAC5C;8GATW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAP1B;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAVrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE;;;;AAIT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;ACZD;;AAEG;;;;"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { inject, ElementRef, input, model, effect, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
|
|
3
|
+
import { shipComponentClasses, contentProjectionSignal } from '@ship-ui/core';
|
|
4
|
+
|
|
5
|
+
class ShipAccordion {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.selfElement = inject((ElementRef)).nativeElement;
|
|
8
|
+
this.name = input(`sh-accordion-${Math.random().toString(36).substring(2, 9)}`, /* @ts-ignore */
|
|
9
|
+
...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
|
|
10
|
+
this.value = model(null, /* @ts-ignore */
|
|
11
|
+
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
12
|
+
this.allowMultiple = input(false, /* @ts-ignore */
|
|
13
|
+
...(ngDevMode ? [{ debugName: "allowMultiple" }] : /* istanbul ignore next */ []));
|
|
14
|
+
this.variant = input(null, /* @ts-ignore */
|
|
15
|
+
...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
16
|
+
this.size = input(null, /* @ts-ignore */
|
|
17
|
+
...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
18
|
+
this.hostClasses = shipComponentClasses('accordion', {
|
|
19
|
+
variant: this.variant,
|
|
20
|
+
size: this.size,
|
|
21
|
+
});
|
|
22
|
+
this.items = contentProjectionSignal('details', {
|
|
23
|
+
childList: true,
|
|
24
|
+
subtree: true,
|
|
25
|
+
attributes: true,
|
|
26
|
+
attributeFilter: ['open', 'value'],
|
|
27
|
+
});
|
|
28
|
+
this.selfElement.addEventListener('toggle', this.onToggle.bind(this), true);
|
|
29
|
+
effect(() => {
|
|
30
|
+
const isMultiple = this.allowMultiple();
|
|
31
|
+
const groupName = this.name();
|
|
32
|
+
const valStr = this.value();
|
|
33
|
+
const vals = valStr ? valStr.split(',').filter((v) => v !== '') : [];
|
|
34
|
+
this.items().forEach((details) => {
|
|
35
|
+
if (!isMultiple) {
|
|
36
|
+
details.setAttribute('name', groupName);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
details.removeAttribute('name');
|
|
40
|
+
}
|
|
41
|
+
const summary = details.querySelector('summary');
|
|
42
|
+
if (summary && !summary.querySelector('sh-icon')) {
|
|
43
|
+
const icon = document.createElement('sh-icon');
|
|
44
|
+
icon.textContent = 'caret-down';
|
|
45
|
+
summary.appendChild(icon);
|
|
46
|
+
}
|
|
47
|
+
let contentWrapper = details.querySelector(':scope > .content');
|
|
48
|
+
if (!contentWrapper) {
|
|
49
|
+
const newWrapper = document.createElement('div');
|
|
50
|
+
newWrapper.className = 'content';
|
|
51
|
+
const childrenToMove = Array.from(details.childNodes).filter((node) => {
|
|
52
|
+
if (node.nodeType === Node.ELEMENT_NODE && node.tagName.toLowerCase() === 'summary') {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
return true;
|
|
56
|
+
});
|
|
57
|
+
childrenToMove.forEach((child) => newWrapper.appendChild(child));
|
|
58
|
+
details.appendChild(newWrapper);
|
|
59
|
+
contentWrapper = newWrapper;
|
|
60
|
+
}
|
|
61
|
+
const itemVal = details.getAttribute('value');
|
|
62
|
+
if (itemVal && vals.includes(itemVal)) {
|
|
63
|
+
// Avoid triggering endless loops by only setting open if it actually changed
|
|
64
|
+
if (!details.open)
|
|
65
|
+
details.open = true;
|
|
66
|
+
}
|
|
67
|
+
else if (itemVal) {
|
|
68
|
+
if (details.open)
|
|
69
|
+
details.open = false;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
onToggle(event) {
|
|
75
|
+
const target = event.target;
|
|
76
|
+
if (target.tagName !== 'DETAILS')
|
|
77
|
+
return;
|
|
78
|
+
if (!this.selfElement.contains(target))
|
|
79
|
+
return;
|
|
80
|
+
const itemVal = target.getAttribute('value');
|
|
81
|
+
if (!itemVal)
|
|
82
|
+
return; // Uncontrolled details element
|
|
83
|
+
const isOpen = target.open;
|
|
84
|
+
if (this.allowMultiple()) {
|
|
85
|
+
let vals = this.value()
|
|
86
|
+
? this.value()
|
|
87
|
+
.split(',')
|
|
88
|
+
.filter((v) => v !== '')
|
|
89
|
+
: [];
|
|
90
|
+
if (isOpen && !vals.includes(itemVal))
|
|
91
|
+
vals.push(itemVal);
|
|
92
|
+
if (!isOpen)
|
|
93
|
+
vals = vals.filter((v) => v !== itemVal);
|
|
94
|
+
this.value.set(vals.join(','));
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
if (isOpen) {
|
|
98
|
+
this.value.set(itemVal);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
if (this.value() === itemVal) {
|
|
102
|
+
this.value.set(null);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ShipAccordion, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
108
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.0", type: ShipAccordion, isStandalone: true, selector: "sh-accordion", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, allowMultiple: { classPropertyName: "allowMultiple", publicName: "allowMultiple", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { properties: { "class.sh-accordion": "true", "class": "hostClasses()" } }, ngImport: i0, template: `
|
|
109
|
+
<ng-content></ng-content>
|
|
110
|
+
`, isInline: true, styles: ["sh-accordion{--acc-pad: 1rem;--acc-f: var(--paragraph-30);--acc-bc: var(--base-4);--acc-s: var(--shape-2);display:flex;flex-direction:column;border:var(--border-10);border-color:var(--acc-bc);border-radius:var(--acc-s);overflow:hidden;background:var(--base-1)}sh-accordion:empty{display:none}sh-accordion.small{--acc-pad: .75rem;--acc-f: var(--paragraph-40)}sh-accordion.type-b{--acc-s: 0;width:100%;height:100%;border:0;overflow:auto}sh-accordion.type-b>details:last-child{border-bottom:var(--border-10)}sh-accordion details{width:100%}sh-accordion details.disabled{opacity:.5;pointer-events:none}sh-accordion details.disabled summary{cursor:not-allowed}sh-accordion details>summary{list-style:none}sh-accordion details>summary::-webkit-details-marker{display:none}sh-accordion details>summary{display:flex;align-items:center;padding:var(--acc-pad);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .2s;font-weight:500;font-size:var(--acc-f);border-bottom:var(--border-10);border-color:var(--acc-bc)}sh-accordion details>summary:focus-visible{outline:2px solid var(--primary-8);outline-offset:-2px;border-radius:var(--acc-s)}sh-accordion details>summary sh-icon{transition:transform .2s cubic-bezier(.4,0,.2,1);color:var(--mono-11);margin-left:auto}sh-accordion details:last-child>summary{border-bottom:0}sh-accordion details[open]>summary{border-bottom:var(--border-10);border-color:var(--acc-bc)}sh-accordion details[open]>summary sh-icon{transform:rotate(180deg)}sh-accordion details[open]+details{border-top:var(--border-10);border-color:var(--acc-bc)}sh-accordion details>.content{padding:var(--acc-pad);background:var(--base-2)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
111
|
+
}
|
|
112
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ShipAccordion, decorators: [{
|
|
113
|
+
type: Component,
|
|
114
|
+
args: [{ selector: 'sh-accordion', encapsulation: ViewEncapsulation.None, template: `
|
|
115
|
+
<ng-content></ng-content>
|
|
116
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
117
|
+
'[class.sh-accordion]': 'true',
|
|
118
|
+
'[class]': 'hostClasses()',
|
|
119
|
+
}, styles: ["sh-accordion{--acc-pad: 1rem;--acc-f: var(--paragraph-30);--acc-bc: var(--base-4);--acc-s: var(--shape-2);display:flex;flex-direction:column;border:var(--border-10);border-color:var(--acc-bc);border-radius:var(--acc-s);overflow:hidden;background:var(--base-1)}sh-accordion:empty{display:none}sh-accordion.small{--acc-pad: .75rem;--acc-f: var(--paragraph-40)}sh-accordion.type-b{--acc-s: 0;width:100%;height:100%;border:0;overflow:auto}sh-accordion.type-b>details:last-child{border-bottom:var(--border-10)}sh-accordion details{width:100%}sh-accordion details.disabled{opacity:.5;pointer-events:none}sh-accordion details.disabled summary{cursor:not-allowed}sh-accordion details>summary{list-style:none}sh-accordion details>summary::-webkit-details-marker{display:none}sh-accordion details>summary{display:flex;align-items:center;padding:var(--acc-pad);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .2s;font-weight:500;font-size:var(--acc-f);border-bottom:var(--border-10);border-color:var(--acc-bc)}sh-accordion details>summary:focus-visible{outline:2px solid var(--primary-8);outline-offset:-2px;border-radius:var(--acc-s)}sh-accordion details>summary sh-icon{transition:transform .2s cubic-bezier(.4,0,.2,1);color:var(--mono-11);margin-left:auto}sh-accordion details:last-child>summary{border-bottom:0}sh-accordion details[open]>summary{border-bottom:var(--border-10);border-color:var(--acc-bc)}sh-accordion details[open]>summary sh-icon{transform:rotate(180deg)}sh-accordion details[open]+details{border-top:var(--border-10);border-color:var(--acc-bc)}sh-accordion details>.content{padding:var(--acc-pad);background:var(--base-2)}\n"] }]
|
|
120
|
+
}], ctorParameters: () => [], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], allowMultiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowMultiple", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] } });
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Generated bundle index. Do not edit.
|
|
124
|
+
*/
|
|
125
|
+
|
|
126
|
+
export { ShipAccordion };
|
|
127
|
+
//# sourceMappingURL=ship-ui-core-ship-accordion.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ship-ui-core-ship-accordion.mjs","sources":["../../../projects/ship-ui/ship-accordion/ship-accordion.ts","../../../projects/ship-ui/ship-accordion/ship-ui-core-ship-accordion.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n effect,\n ElementRef,\n inject,\n input,\n model,\n ViewEncapsulation,\n} from '@angular/core';\nimport { contentProjectionSignal, shipComponentClasses, ShipVariant } from '@ship-ui/core';\n\n@Component({\n selector: 'sh-accordion',\n styleUrl: './ship-accordion.scss',\n encapsulation: ViewEncapsulation.None,\n template: `\n <ng-content></ng-content>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.sh-accordion]': 'true',\n '[class]': 'hostClasses()',\n },\n})\nexport class ShipAccordion {\n private selfElement = inject(ElementRef<HTMLElement>).nativeElement;\n\n readonly name = input<string>(`sh-accordion-${Math.random().toString(36).substring(2, 9)}`);\n readonly value = model<string | null>(null);\n readonly allowMultiple = input<boolean>(false);\n readonly variant = input<ShipVariant | null>(null);\n readonly size = input<string | null>(null);\n\n hostClasses = shipComponentClasses('accordion', {\n variant: this.variant,\n size: this.size,\n });\n\n protected items = contentProjectionSignal<HTMLDetailsElement>('details', {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['open', 'value'],\n });\n\n constructor() {\n this.selfElement.addEventListener('toggle', this.onToggle.bind(this), true);\n\n effect(() => {\n const isMultiple = this.allowMultiple();\n const groupName = this.name();\n const valStr = this.value();\n const vals = valStr ? valStr.split(',').filter((v) => v !== '') : [];\n\n this.items().forEach((details) => {\n if (!isMultiple) {\n details.setAttribute('name', groupName);\n } else {\n details.removeAttribute('name');\n }\n\n const summary = details.querySelector('summary');\n if (summary && !summary.querySelector('sh-icon')) {\n const icon = document.createElement('sh-icon');\n icon.textContent = 'caret-down';\n summary.appendChild(icon);\n }\n\n let contentWrapper = details.querySelector(':scope > .content');\n\n if (!contentWrapper) {\n const newWrapper = document.createElement('div');\n newWrapper.className = 'content';\n const childrenToMove = Array.from(details.childNodes).filter((node) => {\n if (node.nodeType === Node.ELEMENT_NODE && (node as Element).tagName.toLowerCase() === 'summary') {\n return false;\n }\n return true;\n });\n childrenToMove.forEach((child) => newWrapper.appendChild(child));\n details.appendChild(newWrapper);\n contentWrapper = newWrapper;\n }\n\n const itemVal = details.getAttribute('value');\n if (itemVal && vals.includes(itemVal)) {\n // Avoid triggering endless loops by only setting open if it actually changed\n if (!details.open) details.open = true;\n } else if (itemVal) {\n if (details.open) details.open = false;\n }\n });\n });\n }\n\n onToggle(event: Event) {\n const target = event.target as HTMLDetailsElement;\n if (target.tagName !== 'DETAILS') return;\n if (!this.selfElement.contains(target)) return;\n\n const itemVal = target.getAttribute('value');\n if (!itemVal) return; // Uncontrolled details element\n\n const isOpen = target.open;\n\n if (this.allowMultiple()) {\n let vals = this.value()\n ? this.value()!\n .split(',')\n .filter((v) => v !== '')\n : [];\n if (isOpen && !vals.includes(itemVal)) vals.push(itemVal);\n if (!isOpen) vals = vals.filter((v) => v !== itemVal);\n this.value.set(vals.join(','));\n } else {\n if (isOpen) {\n this.value.set(itemVal);\n } else {\n if (this.value() === itemVal) {\n this.value.set(null);\n }\n }\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|