@simplysm/sd-claude 14.0.50 → 14.0.52
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/claude/references/sd-frontend-design.md +10 -9
- package/claude/references/sd-simplysm-v14/angular/README.md +497 -0
- package/claude/references/sd-simplysm-v14/angular/bootstrap/provide-sd-angular.md +37 -0
- package/claude/references/sd-simplysm-v14/angular/bootstrap/sd-angular-config-provider.md +16 -0
- package/claude/references/sd-simplysm-v14/angular/directives/sd-command-directive.md +27 -0
- package/claude/references/sd-simplysm-v14/angular/directives/sd-events.md +25 -0
- package/claude/references/sd-simplysm-v14/angular/directives/sd-intersection-directive.md +36 -0
- package/claude/references/sd-simplysm-v14/angular/directives/sd-invalid.md +24 -0
- package/claude/references/sd-simplysm-v14/angular/directives/sd-resize-directive.md +42 -0
- package/claude/references/sd-simplysm-v14/angular/directives/sd-ripple.md +23 -0
- package/claude/references/sd-simplysm-v14/angular/directives/sd-router-link.md +38 -0
- package/claude/references/sd-simplysm-v14/angular/directives/sd-show-effect.md +18 -0
- package/claude/references/sd-simplysm-v14/angular/directives/sd-typed-template.md +69 -0
- package/claude/references/sd-simplysm-v14/angular/features/sd-address-search-modal.md +50 -0
- package/claude/references/sd-simplysm-v14/angular/features/sd-permission-table.md +20 -0
- package/claude/references/sd-simplysm-v14/angular/features/sd-shared-data-components.md +158 -0
- package/claude/references/sd-simplysm-v14/angular/features/sd-tiptap-editor.md +26 -0
- package/claude/references/sd-simplysm-v14/angular/pipes/format-pipe.md +41 -0
- package/claude/references/sd-simplysm-v14/angular/plugins/sd-global-error-handler.md +23 -0
- package/claude/references/sd-simplysm-v14/angular/plugins/sd-option-event-plugin.md +34 -0
- package/claude/references/sd-simplysm-v14/angular/provider-types/sd-menu.md +65 -0
- package/claude/references/sd-simplysm-v14/angular/provider-types/sd-modal-content-def.md +148 -0
- package/claude/references/sd-simplysm-v14/angular/provider-types/sd-toast-content-def.md +73 -0
- package/claude/references/sd-simplysm-v14/angular/provider-types/shared-data-base.md +59 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-activated-modal-provider.md +34 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-app-structure-provider.md +81 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-busy-provider.md +18 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-file-dialog-provider.md +40 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-local-storage-provider.md +20 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-modal-provider.md +67 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-navigate-window-provider.md +18 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-print-provider.md +25 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-service-client-factory-provider.md +43 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-shared-data-provider.md +64 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-system-config-provider.md +46 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-system-log-provider.md +18 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-theme-provider.md +38 -0
- package/claude/references/sd-simplysm-v14/angular/providers/sd-toast-provider.md +65 -0
- package/claude/references/sd-simplysm-v14/angular/recipes/_common-rules.md +336 -0
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-a-edit-save.md +191 -0
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-b-delete-restore.md +103 -0
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-c-modal-view.md +198 -0
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-d-control-view.md +109 -0
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-e-auxiliary.md +87 -0
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-f-complex-detail.md +202 -0
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail.md +280 -0
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-a-inline-edit.md +386 -0
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-b-selection.md +215 -0
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-c-inline-delete.md +64 -0
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-d-select-modal.md +193 -0
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-e-readonly-modal.md +140 -0
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-f-modal-edit.md +123 -0
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-g-excel.md +145 -0
- package/claude/references/sd-simplysm-v14/angular/recipes/crud-list.md +377 -0
- package/claude/references/sd-simplysm-v14/angular/recipes/data-select-button.md +368 -0
- package/claude/references/sd-simplysm-v14/angular/recipes/page-modal-container.md +238 -0
- package/claude/references/sd-simplysm-v14/angular/styling/classes.md +149 -0
- package/claude/references/sd-simplysm-v14/angular/styling/mixins.md +100 -0
- package/claude/references/sd-simplysm-v14/angular/styling/themes.md +35 -0
- package/claude/references/sd-simplysm-v14/angular/styling/variables.md +147 -0
- package/claude/references/sd-simplysm-v14/angular/type-utilities/directive-input-signals.md +232 -0
- package/claude/references/sd-simplysm-v14/angular/ui-data/sd-list.md +37 -0
- package/claude/references/sd-simplysm-v14/angular/ui-data/sd-sheet.md +212 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-additional-button.md +26 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-anchor.md +31 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-button.md +103 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-checkbox-group.md +39 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-checkbox.md +81 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-date-range-picker.md +27 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-form.md +89 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-modal-select-button.md +54 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-numpad.md +26 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-range.md +26 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-select.md +68 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-shared-data-select.md +52 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-state-preset.md +37 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-switch.md +27 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-textarea.md +33 -0
- package/claude/references/sd-simplysm-v14/angular/ui-form/sd-textfield.md +145 -0
- package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-dock-container.md +64 -0
- package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-dock.md +37 -0
- package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-gap.md +26 -0
- package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-kanban-board.md +96 -0
- package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-kanban-lane.md +34 -0
- package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-kanban.md +29 -0
- package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-collapse.md +35 -0
- package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-pagination.md +26 -0
- package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-sidebar-container.md +49 -0
- package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-sidebar-menu.md +22 -0
- package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-sidebar-user.md +43 -0
- package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-tab.md +51 -0
- package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-topbar-container.md +97 -0
- package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-topbar-menu.md +23 -0
- package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-topbar-user.md +38 -0
- package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-topbar.md +30 -0
- package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-busy-container.md +69 -0
- package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-confirm-modal.md +30 -0
- package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-dropdown.md +40 -0
- package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-modal.md +34 -0
- package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-prompt-modal.md +30 -0
- package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-toast.md +35 -0
- package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-barcode.md +36 -0
- package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-calendar.md +34 -0
- package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-echarts.md +32 -0
- package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-label.md +24 -0
- package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-note.md +23 -0
- package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-progress.md +23 -0
- package/claude/references/sd-simplysm-v14/angular/utils/inject-routing-signals.md +161 -0
- package/claude/references/sd-simplysm-v14/angular/utils/inject-sd-system-config-resource.md +35 -0
- package/claude/references/sd-simplysm-v14/angular/utils/mark.md +43 -0
- package/claude/references/sd-simplysm-v14/angular/utils/selection-managers.md +96 -0
- package/claude/references/sd-simplysm-v14/angular/utils/set-safe-style.md +19 -0
- package/claude/references/sd-simplysm-v14/angular/utils/setup-functions.md +93 -0
- package/claude/references/sd-simplysm-v14/capacitor-plugin-auto-update/README.md +38 -0
- package/claude/references/sd-simplysm-v14/capacitor-plugin-auto-update/apk-installer/apk-installer.md +115 -0
- package/claude/references/sd-simplysm-v14/capacitor-plugin-auto-update/auto-update/auto-update.md +113 -0
- package/claude/references/sd-simplysm-v14/capacitor-plugin-file-system/README.md +197 -0
- package/claude/references/sd-simplysm-v14/capacitor-plugin-intent/README.md +235 -0
- package/claude/references/sd-simplysm-v14/capacitor-plugin-usb-storage/README.md +251 -0
- package/claude/references/sd-simplysm-v14/core-browser/README.md +52 -0
- package/claude/references/sd-simplysm-v14/core-browser/extensions/copy-paste.md +59 -0
- package/claude/references/sd-simplysm-v14/core-browser/extensions/element-prototype-extensions.md +137 -0
- package/claude/references/sd-simplysm-v14/core-browser/extensions/get-bounds.md +84 -0
- package/claude/references/sd-simplysm-v14/core-browser/utils/download-blob.md +59 -0
- package/claude/references/sd-simplysm-v14/core-browser/utils/fetch-url-bytes.md +91 -0
- package/claude/references/sd-simplysm-v14/core-browser/utils/indexed-db-store.md +131 -0
- package/claude/references/sd-simplysm-v14/core-browser/utils/indexed-db-virtual-fs.md +121 -0
- package/claude/references/sd-simplysm-v14/core-browser/utils/open-file-dialog.md +60 -0
- package/claude/references/sd-simplysm-v14/core-common/README.md +179 -0
- package/claude/references/sd-simplysm-v14/core-common/errors/argument-error.md +26 -0
- package/claude/references/sd-simplysm-v14/core-common/errors/not-implemented-error.md +33 -0
- package/claude/references/sd-simplysm-v14/core-common/errors/sd-error.md +38 -0
- package/claude/references/sd-simplysm-v14/core-common/errors/timeout-error.md +36 -0
- package/claude/references/sd-simplysm-v14/core-common/extensions/array.md +125 -0
- package/claude/references/sd-simplysm-v14/core-common/extensions/map.md +43 -0
- package/claude/references/sd-simplysm-v14/core-common/extensions/set.md +35 -0
- package/claude/references/sd-simplysm-v14/core-common/features/debounce-queue.md +48 -0
- package/claude/references/sd-simplysm-v14/core-common/features/event-emitter.md +52 -0
- package/claude/references/sd-simplysm-v14/core-common/features/serial-queue.md +44 -0
- package/claude/references/sd-simplysm-v14/core-common/type-utils/common-types.md +100 -0
- package/claude/references/sd-simplysm-v14/core-common/type-utils/env.md +42 -0
- package/claude/references/sd-simplysm-v14/core-common/types/date-only.md +86 -0
- package/claude/references/sd-simplysm-v14/core-common/types/date-time.md +106 -0
- package/claude/references/sd-simplysm-v14/core-common/types/lazy-gc-map.md +59 -0
- package/claude/references/sd-simplysm-v14/core-common/types/time.md +62 -0
- package/claude/references/sd-simplysm-v14/core-common/types/uuid.md +41 -0
- package/claude/references/sd-simplysm-v14/core-common/utils/bytes.md +36 -0
- package/claude/references/sd-simplysm-v14/core-common/utils/dt.md +60 -0
- package/claude/references/sd-simplysm-v14/core-common/utils/err.md +26 -0
- package/claude/references/sd-simplysm-v14/core-common/utils/json.md +58 -0
- package/claude/references/sd-simplysm-v14/core-common/utils/num.md +56 -0
- package/claude/references/sd-simplysm-v14/core-common/utils/obj.md +107 -0
- package/claude/references/sd-simplysm-v14/core-common/utils/path.md +30 -0
- package/claude/references/sd-simplysm-v14/core-common/utils/primitive.md +28 -0
- package/claude/references/sd-simplysm-v14/core-common/utils/str.md +63 -0
- package/claude/references/sd-simplysm-v14/core-common/utils/template-strings.md +49 -0
- package/claude/references/sd-simplysm-v14/core-common/utils/transfer.md +35 -0
- package/claude/references/sd-simplysm-v14/core-common/utils/wait.md +35 -0
- package/claude/references/sd-simplysm-v14/core-common/utils/xml.md +49 -0
- package/claude/references/sd-simplysm-v14/core-common/utils/zip-archive.md +77 -0
- package/claude/references/sd-simplysm-v14/core-node/README.md +59 -0
- package/claude/references/sd-simplysm-v14/core-node/features/fs-watcher.md +110 -0
- package/claude/references/sd-simplysm-v14/core-node/logging/create-file-reporter.md +78 -0
- package/claude/references/sd-simplysm-v14/core-node/logging/pretty-reporter.md +38 -0
- package/claude/references/sd-simplysm-v14/core-node/logging/setup-consola.md +77 -0
- package/claude/references/sd-simplysm-v14/core-node/utils/cpx.md +128 -0
- package/claude/references/sd-simplysm-v14/core-node/utils/fsx.md +168 -0
- package/claude/references/sd-simplysm-v14/core-node/utils/pathx.md +73 -0
- package/claude/references/sd-simplysm-v14/core-node/worker/create-worker.md +85 -0
- package/claude/references/sd-simplysm-v14/core-node/worker/worker.md +160 -0
- package/claude/references/sd-simplysm-v14/excel/README.md +66 -0
- package/claude/references/sd-simplysm-v14/excel/core-classes/excel-cell.md +79 -0
- package/claude/references/sd-simplysm-v14/excel/core-classes/excel-col.md +36 -0
- package/claude/references/sd-simplysm-v14/excel/core-classes/excel-row.md +34 -0
- package/claude/references/sd-simplysm-v14/excel/core-classes/excel-workbook.md +93 -0
- package/claude/references/sd-simplysm-v14/excel/core-classes/excel-worksheet.md +147 -0
- package/claude/references/sd-simplysm-v14/excel/types/excel-address-point.md +33 -0
- package/claude/references/sd-simplysm-v14/excel/types/excel-style-options.md +57 -0
- package/claude/references/sd-simplysm-v14/excel/types/excel-value-type.md +28 -0
- package/claude/references/sd-simplysm-v14/excel/types/excel-xml-content-type-data.md +23 -0
- package/claude/references/sd-simplysm-v14/excel/types/excel-xml-drawing-data.md +29 -0
- package/claude/references/sd-simplysm-v14/excel/types/excel-xml-relationship-data.md +39 -0
- package/claude/references/sd-simplysm-v14/excel/types/excel-xml-shared-string-data.md +42 -0
- package/claude/references/sd-simplysm-v14/excel/types/excel-xml-style-data.md +97 -0
- package/claude/references/sd-simplysm-v14/excel/types/excel-xml-workbook-data.md +22 -0
- package/claude/references/sd-simplysm-v14/excel/types/excel-xml-worksheet-data.md +68 -0
- package/claude/references/sd-simplysm-v14/excel/types/excel-xml.md +15 -0
- package/claude/references/sd-simplysm-v14/excel/utilities/excel-utils.md +101 -0
- package/claude/references/sd-simplysm-v14/excel/wrapper/excel-wrapper.md +108 -0
- package/claude/references/sd-simplysm-v14/lint/README.md +183 -0
- package/claude/references/sd-simplysm-v14/orm-common/README.md +156 -0
- package/claude/references/sd-simplysm-v14/orm-common/core/db-context.md +208 -0
- package/claude/references/sd-simplysm-v14/orm-common/core/db-transaction-error.md +64 -0
- package/claude/references/sd-simplysm-v14/orm-common/expression/expr-unit.md +62 -0
- package/claude/references/sd-simplysm-v14/orm-common/expression/expr.md +198 -0
- package/claude/references/sd-simplysm-v14/orm-common/models/migration.md +37 -0
- package/claude/references/sd-simplysm-v14/orm-common/query-builder/create-query-builder.md +80 -0
- package/claude/references/sd-simplysm-v14/orm-common/queryable-executable/executable.md +54 -0
- package/claude/references/sd-simplysm-v14/orm-common/queryable-executable/parse-search-query.md +75 -0
- package/claude/references/sd-simplysm-v14/orm-common/queryable-executable/queryable.md +238 -0
- package/claude/references/sd-simplysm-v14/orm-common/schema-builders/column-builder.md +63 -0
- package/claude/references/sd-simplysm-v14/orm-common/schema-builders/foreign-key-builder.md +137 -0
- package/claude/references/sd-simplysm-v14/orm-common/schema-builders/index-builder.md +54 -0
- package/claude/references/sd-simplysm-v14/orm-common/schema-builders/procedure.md +67 -0
- package/claude/references/sd-simplysm-v14/orm-common/schema-builders/table.md +95 -0
- package/claude/references/sd-simplysm-v14/orm-common/schema-builders/view.md +71 -0
- package/claude/references/sd-simplysm-v14/orm-common/types/data-type.md +146 -0
- package/claude/references/sd-simplysm-v14/orm-common/types/dialect.md +151 -0
- package/claude/references/sd-simplysm-v14/orm-common/types/expr.md +175 -0
- package/claude/references/sd-simplysm-v14/orm-common/types/parse-query-result.md +58 -0
- package/claude/references/sd-simplysm-v14/orm-common/types/query-def.md +224 -0
- package/claude/references/sd-simplysm-v14/orm-node/README.md +65 -0
- package/claude/references/sd-simplysm-v14/orm-node/connections/mssql-db-conn.md +85 -0
- package/claude/references/sd-simplysm-v14/orm-node/connections/mysql-db-conn.md +83 -0
- package/claude/references/sd-simplysm-v14/orm-node/connections/postgresql-db-conn.md +86 -0
- package/claude/references/sd-simplysm-v14/orm-node/core/create-db-conn.md +62 -0
- package/claude/references/sd-simplysm-v14/orm-node/core/create-orm.md +107 -0
- package/claude/references/sd-simplysm-v14/orm-node/core/node-db-context-executor.md +50 -0
- package/claude/references/sd-simplysm-v14/orm-node/types/db-conn-config.md +91 -0
- package/claude/references/sd-simplysm-v14/orm-node/types/db-conn-constants.md +33 -0
- package/claude/references/sd-simplysm-v14/orm-node/types/db-conn.md +60 -0
- package/claude/references/sd-simplysm-v14/orm-node/types/get-dialect-from-config.md +17 -0
- package/{README.md → claude/references/sd-simplysm-v14/sd-claude/README.md} +85 -84
- package/{docs → claude/references/sd-simplysm-v14/sd-claude}/assets.md +2 -2
- package/{docs → claude/references/sd-simplysm-v14/sd-claude}/hooks.md +15 -1
- package/claude/references/sd-simplysm-v14/sd-cli/README.md +138 -0
- package/claude/references/sd-simplysm-v14/sd-cli/angular-vite-plugin/sd-angular-plugin.md +60 -0
- package/claude/references/sd-simplysm-v14/sd-cli/config/build-target.md +31 -0
- package/claude/references/sd-simplysm-v14/sd-cli/config/npm-config.md +27 -0
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-browser-support-config.md +19 -0
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-build-package-config.md +21 -0
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-capacitor-config.md +109 -0
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-client-package-config.md +33 -0
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-config.md +78 -0
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-electron-config.md +27 -0
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-package-config.md +18 -0
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-post-publish-script-config.md +19 -0
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-publish-config.md +72 -0
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-pwa-config.md +41 -0
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-scripts-package-config.md +19 -0
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-server-package-config.md +32 -0
- package/claude/references/sd-simplysm-v14/sd-cli/config/sd-watch-hook-config.md +19 -0
- package/claude/references/sd-simplysm-v14/sd-cli/ts-compiler/sd-ts-compiler.md +158 -0
- package/claude/references/sd-simplysm-v14/service-client/README.md +74 -0
- package/claude/references/sd-simplysm-v14/service-client/features/event-client.md +93 -0
- package/claude/references/sd-simplysm-v14/service-client/features/file-client.md +63 -0
- package/claude/references/sd-simplysm-v14/service-client/features/orm-client-connector.md +89 -0
- package/claude/references/sd-simplysm-v14/service-client/features/orm-client-db-context-executor.md +31 -0
- package/claude/references/sd-simplysm-v14/service-client/main/service-client.md +206 -0
- package/claude/references/sd-simplysm-v14/service-client/protocol/client-protocol-wrapper.md +64 -0
- package/claude/references/sd-simplysm-v14/service-client/transport/service-transport.md +68 -0
- package/claude/references/sd-simplysm-v14/service-client/transport/socket-provider.md +100 -0
- package/claude/references/sd-simplysm-v14/service-client/types/blob-input.md +7 -0
- package/claude/references/sd-simplysm-v14/service-client/types/browser-worker.md +47 -0
- package/claude/references/sd-simplysm-v14/service-client/types/file-collection.md +21 -0
- package/claude/references/sd-simplysm-v14/service-client/types/service-connection-options.md +22 -0
- package/claude/references/sd-simplysm-v14/service-client/types/service-progress.md +39 -0
- package/claude/references/sd-simplysm-v14/service-common/README.md +161 -0
- package/claude/references/sd-simplysm-v14/service-common/app-structure/app-structure-item.md +107 -0
- package/claude/references/sd-simplysm-v14/service-common/app-structure/get-flat-permissions.md +57 -0
- package/claude/references/sd-simplysm-v14/service-common/app-structure/is-usable-modules-chain.md +23 -0
- package/claude/references/sd-simplysm-v14/service-common/app-structure/is-usable-modules.md +42 -0
- package/claude/references/sd-simplysm-v14/service-common/events/define-event.md +68 -0
- package/claude/references/sd-simplysm-v14/service-common/protocol/create-service-protocol.md +93 -0
- package/claude/references/sd-simplysm-v14/service-common/protocol/protocol-config.md +21 -0
- package/claude/references/sd-simplysm-v14/service-common/protocol/service-add-event-listener-message.md +23 -0
- package/claude/references/sd-simplysm-v14/service-common/protocol/service-auth-message.md +17 -0
- package/claude/references/sd-simplysm-v14/service-common/protocol/service-emit-event-message.md +21 -0
- package/claude/references/sd-simplysm-v14/service-common/protocol/service-error-message.md +29 -0
- package/claude/references/sd-simplysm-v14/service-common/protocol/service-event-message.md +21 -0
- package/claude/references/sd-simplysm-v14/service-common/protocol/service-get-event-listener-infos-message.md +19 -0
- package/claude/references/sd-simplysm-v14/service-common/protocol/service-message.md +52 -0
- package/claude/references/sd-simplysm-v14/service-common/protocol/service-progress-message.md +21 -0
- package/claude/references/sd-simplysm-v14/service-common/protocol/service-remove-event-listener-message.md +19 -0
- package/claude/references/sd-simplysm-v14/service-common/protocol/service-request-message.md +17 -0
- package/claude/references/sd-simplysm-v14/service-common/protocol/service-response-message.md +17 -0
- package/claude/references/sd-simplysm-v14/service-common/service-types/app-structure-service.md +15 -0
- package/claude/references/sd-simplysm-v14/service-common/service-types/auto-update-service.md +20 -0
- package/claude/references/sd-simplysm-v14/service-common/service-types/orm-service.md +61 -0
- package/claude/references/sd-simplysm-v14/service-common/types/service-upload-result.md +19 -0
- package/claude/references/sd-simplysm-v14/service-server/README.md +162 -0
- package/claude/references/sd-simplysm-v14/service-server/auth/auth-token-payload.md +18 -0
- package/claude/references/sd-simplysm-v14/service-server/auth/sign-jwt.md +30 -0
- package/claude/references/sd-simplysm-v14/service-server/auth/verify-jwt.md +35 -0
- package/claude/references/sd-simplysm-v14/service-server/core/auth.md +64 -0
- package/claude/references/sd-simplysm-v14/service-server/core/define-service.md +81 -0
- package/claude/references/sd-simplysm-v14/service-server/core/execute-service-method.md +43 -0
- package/claude/references/sd-simplysm-v14/service-server/core/service-context.md +79 -0
- package/claude/references/sd-simplysm-v14/service-server/legacy/handle-v1-connection.md +25 -0
- package/claude/references/sd-simplysm-v14/service-server/main/create-service-server.md +32 -0
- package/claude/references/sd-simplysm-v14/service-server/main/service-server.md +113 -0
- package/claude/references/sd-simplysm-v14/service-server/protocol/server-protocol-wrapper.md +35 -0
- package/claude/references/sd-simplysm-v14/service-server/services/app-structure-service.md +59 -0
- package/claude/references/sd-simplysm-v14/service-server/services/auto-update-service.md +34 -0
- package/claude/references/sd-simplysm-v14/service-server/services/orm-service.md +43 -0
- package/claude/references/sd-simplysm-v14/service-server/transport-http/handle-http-request.md +33 -0
- package/claude/references/sd-simplysm-v14/service-server/transport-http/handle-static-file.md +29 -0
- package/claude/references/sd-simplysm-v14/service-server/transport-http/handle-upload.md +33 -0
- package/claude/references/sd-simplysm-v14/service-server/transport-socket/service-socket.md +64 -0
- package/claude/references/sd-simplysm-v14/service-server/transport-socket/websocket-handler.md +57 -0
- package/claude/references/sd-simplysm-v14/service-server/types/service-server-options.md +36 -0
- package/claude/references/sd-simplysm-v14/service-server/utils/get-config.md +29 -0
- package/claude/references/sd-simplysm-v14/storage/README.md +99 -0
- package/claude/references/sd-simplysm-v14/storage/clients/ftp-storage-client.md +99 -0
- package/claude/references/sd-simplysm-v14/storage/clients/sftp-storage-client.md +108 -0
- package/claude/references/sd-simplysm-v14/storage/factory/storage-factory.md +114 -0
- package/claude/references/sd-simplysm-v14/storage/types/file-info.md +32 -0
- package/claude/references/sd-simplysm-v14/storage/types/storage-client.md +55 -0
- package/claude/references/sd-simplysm-v14/storage/types/storage-conn-config.md +34 -0
- package/claude/rules/sd-claude-rules.md +8 -8
- package/claude/rules/sd-simplysm-v14.md +33 -0
- package/claude/skills/sd-claude-docs/SKILL.md +41 -24
- package/claude/skills/sd-claude-docs/references/package-docs.md +240 -116
- package/claude/skills/sd-inner-debug/SKILL.md +1 -1
- package/claude/skills/sd-inner-review/SKILL.md +4 -2
- package/package.json +2 -3
- /package/{docs → claude/references/sd-simplysm-v14/sd-claude}/cli.md +0 -0
- /package/{docs → claude/references/sd-simplysm-v14/sd-claude}/scripts.md +0 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# `SdIntersectionDirective`
|
|
2
|
+
|
|
3
|
+
IntersectionObserver 기반 intersection output 이벤트 디렉티브.
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
@Directive({ selector: "[sdIntersection]" })
|
|
7
|
+
class SdIntersectionDirective {
|
|
8
|
+
sdIntersection = output<SdIntersectionEvent>();
|
|
9
|
+
}
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Members
|
|
13
|
+
|
|
14
|
+
| Member | Kind | Type | Description |
|
|
15
|
+
|--------|------|------|-------------|
|
|
16
|
+
| `sdIntersection` | output | `SdIntersectionEvent` | 뷰포트와의 교차 변경 시 발생 |
|
|
17
|
+
|
|
18
|
+
## Related Types
|
|
19
|
+
|
|
20
|
+
### `SdIntersectionEvent`
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
interface SdIntersectionEvent {
|
|
24
|
+
entry: IntersectionObserverEntry;
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
| Field | Type | Description |
|
|
29
|
+
|-------|------|-------------|
|
|
30
|
+
| `entry` | `IntersectionObserverEntry` | 마지막 IntersectionObserver 엔트리 |
|
|
31
|
+
|
|
32
|
+
## Usage
|
|
33
|
+
|
|
34
|
+
```html
|
|
35
|
+
<div (sdIntersection)="onIntersect($event)"></div>
|
|
36
|
+
```
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# `SdInvalid`
|
|
2
|
+
|
|
3
|
+
호스트 요소에 유효성 검증 표시기를 추가하는 디렉티브. 빨간 점 표시기와 숨겨진 input으로 구성.
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
@Directive({ selector: "[sdInvalid]" })
|
|
7
|
+
class SdInvalid {
|
|
8
|
+
invalidMessage = input.required<string>({ alias: "sdInvalid" });
|
|
9
|
+
}
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Members
|
|
13
|
+
|
|
14
|
+
| Member | Kind | Type | Description |
|
|
15
|
+
|--------|------|------|-------------|
|
|
16
|
+
| `invalidMessage` (`sdInvalid`) | input (required) | `string` | 유효성 오류 메시지. 빈 문자열이면 유효, 비어있지 않으면 무효 |
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
```html
|
|
21
|
+
<div [sdInvalid]="name이 비어있습니다">
|
|
22
|
+
<!-- 메시지가 있으면 빨간 점 표시기 노출 -->
|
|
23
|
+
</div>
|
|
24
|
+
```
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# `SdResizeDirective`
|
|
2
|
+
|
|
3
|
+
ResizeObserver 기반 resize output 이벤트 디렉티브. `requestAnimationFrame`으로 디바운스.
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
@Directive({ selector: "[sdResize]" })
|
|
7
|
+
class SdResizeDirective {
|
|
8
|
+
sdResize = output<SdResizeEvent>();
|
|
9
|
+
}
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Members
|
|
13
|
+
|
|
14
|
+
| Member | Kind | Type | Description |
|
|
15
|
+
|--------|------|------|-------------|
|
|
16
|
+
| `sdResize` | output | `SdResizeEvent` | 요소 크기 변경 시 발생 |
|
|
17
|
+
|
|
18
|
+
## Related Types
|
|
19
|
+
|
|
20
|
+
### `SdResizeEvent`
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
interface SdResizeEvent {
|
|
24
|
+
heightChanged: boolean;
|
|
25
|
+
widthChanged: boolean;
|
|
26
|
+
target: HTMLElement;
|
|
27
|
+
contentRect: DOMRectReadOnly;
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
| Field | Type | Description |
|
|
32
|
+
|-------|------|-------------|
|
|
33
|
+
| `heightChanged` | `boolean` | 높이 변경 여부 |
|
|
34
|
+
| `widthChanged` | `boolean` | 너비 변경 여부 |
|
|
35
|
+
| `target` | `HTMLElement` | 대상 요소 |
|
|
36
|
+
| `contentRect` | `DOMRectReadOnly` | 컨텐츠 영역 크기 |
|
|
37
|
+
|
|
38
|
+
## Usage
|
|
39
|
+
|
|
40
|
+
```html
|
|
41
|
+
<div (sdResize)="onResize($event)"></div>
|
|
42
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# `SdRipple`
|
|
2
|
+
|
|
3
|
+
호스트 요소에 리플 효과를 추가하는 디렉티브.
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
@Directive({ selector: "[sdRipple]" })
|
|
7
|
+
class SdRipple {
|
|
8
|
+
enabled = input.required({ alias: "sdRipple", transform: booleanAttribute });
|
|
9
|
+
}
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Members
|
|
13
|
+
|
|
14
|
+
| Member | Kind | Type | Description |
|
|
15
|
+
|--------|------|------|-------------|
|
|
16
|
+
| `enabled` (`sdRipple`) | input (required) | `boolean` | 리플 효과 활성화 여부 |
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
```html
|
|
21
|
+
<div [sdRipple]="true">리플 효과 있음</div>
|
|
22
|
+
<div sdRipple>리플 효과 있음 (boolean attribute)</div>
|
|
23
|
+
```
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# `SdRouterLink`
|
|
2
|
+
|
|
3
|
+
라우터 네비게이션 디렉티브. 일반 클릭은 라우터 네비게이션, Ctrl/Shift+클릭은 새 창, 팝업 윈도우에서는 팝업 형태로 열린다.
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
@Directive({
|
|
7
|
+
selector: "[sdRouterLink]",
|
|
8
|
+
host: {
|
|
9
|
+
"[style.cursor]": "option() ? 'pointer' : ''",
|
|
10
|
+
"(click)": "onClick($event)",
|
|
11
|
+
},
|
|
12
|
+
})
|
|
13
|
+
class SdRouterLink {
|
|
14
|
+
option = input<{
|
|
15
|
+
link: string;
|
|
16
|
+
params?: Record<string, string>;
|
|
17
|
+
window?: { width?: number; height?: number };
|
|
18
|
+
outletName?: string;
|
|
19
|
+
queryParams?: Record<string, string>;
|
|
20
|
+
} | undefined>(undefined, { alias: "sdRouterLink" });
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Members
|
|
25
|
+
|
|
26
|
+
| Member | Kind | Type | Description |
|
|
27
|
+
|--------|------|------|-------------|
|
|
28
|
+
| `option` (`sdRouterLink`) | input | `{ link, params?, window?, outletName?, queryParams? } \| undefined` | 라우터 링크 옵션 |
|
|
29
|
+
|
|
30
|
+
## Option Fields
|
|
31
|
+
|
|
32
|
+
| Field | Type | Description |
|
|
33
|
+
|-------|------|-------------|
|
|
34
|
+
| `link` | `string` | 네비게이션 경로 |
|
|
35
|
+
| `params` | `Record<string, string> \| undefined` | 라우터 파라미터 |
|
|
36
|
+
| `window` | `{ width?, height? } \| undefined` | 팝업 윈도우 크기 (설정 시 팝업으로 열림) |
|
|
37
|
+
| `outletName` | `string \| undefined` | named outlet |
|
|
38
|
+
| `queryParams` | `Record<string, string> \| undefined` | 쿼리 파라미터 |
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# `SdShowEffect`
|
|
2
|
+
|
|
3
|
+
뷰포트에 진입할 때 reveal 애니메이션을 적용하는 디렉티브. IntersectionObserver 사용.
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
@Directive({ selector: "[sdShowEffect]" })
|
|
7
|
+
class SdShowEffect {
|
|
8
|
+
enabled = input.required({ alias: "sdShowEffect", transform: booleanAttribute });
|
|
9
|
+
sdShowEffectType = input<"l2r" | "t2b">("t2b");
|
|
10
|
+
}
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Members
|
|
14
|
+
|
|
15
|
+
| Member | Kind | Type | Default | Description |
|
|
16
|
+
|--------|------|------|---------|-------------|
|
|
17
|
+
| `enabled` (`sdShowEffect`) | input (required) | `boolean` | - | 효과 활성화 여부 |
|
|
18
|
+
| `sdShowEffectType` | input | `"l2r" \| "t2b"` | `"t2b"` | 애니메이션 방향 (좌→우 / 위→아래) |
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# `SdTypedTemplate`
|
|
2
|
+
|
|
3
|
+
`ng-template`의 컨텍스트 타입을 지정하는 디렉티브. 타입 가드를 통해 템플릿 내부에서 정확한 타입을 사용할 수 있다.
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
@Directive({ selector: "ng-template[typed]" })
|
|
7
|
+
class SdTypedTemplate<T> {
|
|
8
|
+
typed = input.required<T>();
|
|
9
|
+
|
|
10
|
+
static ngTemplateContextGuard<TypeToken>(
|
|
11
|
+
_dir: SdTypedTemplate<TypeToken>,
|
|
12
|
+
_ctx: unknown,
|
|
13
|
+
): _ctx is TypeToken;
|
|
14
|
+
}
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Members
|
|
18
|
+
|
|
19
|
+
| Member | Kind | Type | Description |
|
|
20
|
+
|--------|------|------|-------------|
|
|
21
|
+
| `typed` | input (required) | `T` | 컨텍스트 타입 토큰 |
|
|
22
|
+
|
|
23
|
+
## Related Types
|
|
24
|
+
|
|
25
|
+
### `SdItemOfTemplate`
|
|
26
|
+
|
|
27
|
+
항목 반복 템플릿의 컨텍스트 타입을 지정하는 디렉티브.
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
@Directive({ selector: "ng-template[itemOf]" })
|
|
31
|
+
class SdItemOfTemplate<TItem> {
|
|
32
|
+
itemOf = input.required<TItem[]>();
|
|
33
|
+
|
|
34
|
+
static ngTemplateContextGuard<TContextItem>(
|
|
35
|
+
_dir: SdItemOfTemplate<TContextItem>,
|
|
36
|
+
_ctx: unknown,
|
|
37
|
+
): _ctx is SdItemOfTemplateContext<TContextItem>;
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### `SdItemOfTemplateContext`
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
interface SdItemOfTemplateContext<TItem> {
|
|
45
|
+
$implicit: TItem;
|
|
46
|
+
item: TItem;
|
|
47
|
+
index: number;
|
|
48
|
+
depth: number;
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
| Field | Type | Description |
|
|
53
|
+
|-------|------|-------------|
|
|
54
|
+
| `$implicit` | `TItem` | 현재 항목 (let-item으로 접근) |
|
|
55
|
+
| `item` | `TItem` | 현재 항목 (명시적 접근) |
|
|
56
|
+
| `index` | `number` | 인덱스 |
|
|
57
|
+
| `depth` | `number` | 깊이 (트리 구조에서 사용) |
|
|
58
|
+
|
|
59
|
+
## Usage
|
|
60
|
+
|
|
61
|
+
```html
|
|
62
|
+
<ng-template [typed]="typedVar" let-item>
|
|
63
|
+
<!-- item의 타입이 typeof typedVar -->
|
|
64
|
+
</ng-template>
|
|
65
|
+
|
|
66
|
+
<ng-template [itemOf]="items()" let-item let-index="index">
|
|
67
|
+
{{ item.name }}
|
|
68
|
+
</ng-template>
|
|
69
|
+
```
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# `SdAddressSearchModal`
|
|
2
|
+
|
|
3
|
+
Daum Postcode API를 사용한 주소 검색 모달. `SdModalContentDef<Address>`를 구현한다.
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
@Component({ selector: "sd-address-search-modal" })
|
|
7
|
+
class SdAddressSearchModal implements SdModalContentDef<Address>, OnInit {
|
|
8
|
+
close = output<Address>();
|
|
9
|
+
initialized = signal(false);
|
|
10
|
+
}
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Members
|
|
14
|
+
|
|
15
|
+
| Member | Kind | Type | Description |
|
|
16
|
+
|--------|------|------|-------------|
|
|
17
|
+
| `close` | output | `Address` | 주소 선택 완료 시 발생 |
|
|
18
|
+
| `initialized` | signal | `boolean` | 초기화 완료 여부 |
|
|
19
|
+
|
|
20
|
+
## Related Types
|
|
21
|
+
|
|
22
|
+
### `Address`
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
interface Address {
|
|
26
|
+
postNumber: string | undefined;
|
|
27
|
+
address: string | undefined;
|
|
28
|
+
buildingName: string | undefined;
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
| Field | Type | Description |
|
|
33
|
+
|-------|------|-------------|
|
|
34
|
+
| `postNumber` | `string \| undefined` | 우편번호 |
|
|
35
|
+
| `address` | `string \| undefined` | 주소 |
|
|
36
|
+
| `buildingName` | `string \| undefined` | 건물명 |
|
|
37
|
+
|
|
38
|
+
## Usage
|
|
39
|
+
|
|
40
|
+
```typescript
|
|
41
|
+
const result = await this._sdModal.showAsync({
|
|
42
|
+
title: "주소 검색",
|
|
43
|
+
type: SdAddressSearchModal,
|
|
44
|
+
inputs: {},
|
|
45
|
+
});
|
|
46
|
+
if (result != null) {
|
|
47
|
+
this.data().address = result.address;
|
|
48
|
+
mark(this.data);
|
|
49
|
+
}
|
|
50
|
+
```
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# `SdPermissionTable`
|
|
2
|
+
|
|
3
|
+
권한 매트릭스 테이블. `SdPermission` 트리를 테이블로 렌더링하여 use/edit 체크박스를 표시한다.
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
@Component({ selector: "sd-permission-table" })
|
|
7
|
+
class SdPermissionTable<TModule = unknown> {
|
|
8
|
+
value = model<Record<string, boolean>>({});
|
|
9
|
+
items = input<SdPermission<TModule>[]>([]);
|
|
10
|
+
disabled = input(false, { transform: booleanAttribute });
|
|
11
|
+
}
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Members
|
|
15
|
+
|
|
16
|
+
| Member | Kind | Type | Default | Description |
|
|
17
|
+
|--------|------|------|---------|-------------|
|
|
18
|
+
| `value` | model | `Record<string, boolean>` | `{}` | 권한 레코드 (two-way). 키는 `codeChain.join(".") + ".use"` 또는 `".edit"` 형태 |
|
|
19
|
+
| `items` | input | `SdPermission<TModule>[]` | `[]` | 권한 트리 |
|
|
20
|
+
| `disabled` | input | `boolean` | `false` | 비활성화 |
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# Shared Data Components
|
|
2
|
+
|
|
3
|
+
공유 데이터(`SdSharedDataProvider`)와 연동하는 UI 컴포넌트 모음.
|
|
4
|
+
|
|
5
|
+
## `SdSharedDataSelect`
|
|
6
|
+
|
|
7
|
+
공유 데이터 드롭다운 선택 컴포넌트. 검색 기능 포함.
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
@Component({ selector: "sd-shared-data-select" })
|
|
11
|
+
class SdSharedDataSelect<
|
|
12
|
+
TItem extends SharedDataBase<string | number>,
|
|
13
|
+
TMode extends keyof SelectModeValue<...>,
|
|
14
|
+
TModal extends SdSelectModal<any>
|
|
15
|
+
> {
|
|
16
|
+
value = model<SelectModeValue<TItem["__valueKey"] | undefined>[TMode]>();
|
|
17
|
+
items = input.required<TItem[]>();
|
|
18
|
+
disabled = input(false, { transform: booleanAttribute });
|
|
19
|
+
required = input(false, { transform: booleanAttribute });
|
|
20
|
+
useUndefined = input(false, { transform: booleanAttribute });
|
|
21
|
+
inset = input(false, { transform: booleanAttribute });
|
|
22
|
+
inline = input(false, { transform: booleanAttribute });
|
|
23
|
+
size = input<"sm" | "lg">();
|
|
24
|
+
selectMode = input("single" as TMode);
|
|
25
|
+
filterFn = input<(item: TItem, index: number, ...params: any[]) => boolean>();
|
|
26
|
+
filterFnParams = input<any[]>();
|
|
27
|
+
modal = input<SdSelectModalInfo<TModal>>();
|
|
28
|
+
editModal = input<SdModalInfo<SdModalContentDef<boolean>>>();
|
|
29
|
+
selectClass = input<string>();
|
|
30
|
+
multiSelectionDisplayDirection = input<"vertical">();
|
|
31
|
+
getIsHiddenFn = input<(item: TItem, index: number) => boolean>();
|
|
32
|
+
getSearchTextFn = input<(item: TItem, index: number) => string>();
|
|
33
|
+
displayOrderKeyProp = input<string>();
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Members
|
|
38
|
+
|
|
39
|
+
| Member | Kind | Type | Default | Description |
|
|
40
|
+
|--------|------|------|---------|-------------|
|
|
41
|
+
| `value` | model | `SelectModeValue<TItem["__valueKey"] \| undefined>[TMode]` | - | 선택된 값 (two-way) |
|
|
42
|
+
| `items` | input (required) | `TItem[]` | - | 공유 데이터 항목 |
|
|
43
|
+
| `disabled` | input | `boolean` | `false` | 비활성화 |
|
|
44
|
+
| `required` | input | `boolean` | `false` | 필수 |
|
|
45
|
+
| `useUndefined` | input | `boolean` | `false` | undefined 항목 포함 |
|
|
46
|
+
| `inset` | input | `boolean` | `false` | 삽입 스타일 |
|
|
47
|
+
| `inline` | input | `boolean` | `false` | 인라인 표시 |
|
|
48
|
+
| `size` | input | `"sm" \| "lg" \| undefined` | `undefined` | 크기 |
|
|
49
|
+
| `selectMode` | input | `TMode` | `"single"` | 선택 모드 |
|
|
50
|
+
| `filterFn` | input | `((item, index, ...params) => boolean) \| undefined` | `undefined` | 필터 함수 |
|
|
51
|
+
| `modal` | input | `SdSelectModalInfo<TModal> \| undefined` | `undefined` | 모달 선택 정보 |
|
|
52
|
+
|
|
53
|
+
### 시트 셀 내 사용 패턴
|
|
54
|
+
|
|
55
|
+
```html
|
|
56
|
+
<sd-sheet-column [header]="'거래처'" [key]="'vendorId'">
|
|
57
|
+
<ng-template [cell]="items()" let-item let-edit="edit">
|
|
58
|
+
<sd-shared-data-select
|
|
59
|
+
[items]="sharedVendors()"
|
|
60
|
+
[inset]="true"
|
|
61
|
+
[size]="'sm'"
|
|
62
|
+
[disabled]="!canEdit()"
|
|
63
|
+
[readonly]="!edit"
|
|
64
|
+
[(value)]="item.vendorId"
|
|
65
|
+
(valueChange)="mark(items)"
|
|
66
|
+
>
|
|
67
|
+
<ng-template [itemOf]="sharedVendors()">
|
|
68
|
+
<div class="flex-row gap-sm">
|
|
69
|
+
<div>{{ item.__searchText }}</div>
|
|
70
|
+
</div>
|
|
71
|
+
</ng-template>
|
|
72
|
+
</sd-shared-data-select>
|
|
73
|
+
</ng-template>
|
|
74
|
+
</sd-sheet-column>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
시트 셀 내 사용 시 `[inset]="true" [size]="'sm'"`을 반드시 지정한다.
|
|
78
|
+
|
|
79
|
+
## `SdSharedDataSelectButton`
|
|
80
|
+
|
|
81
|
+
공유 데이터 모달 선택 버튼. `<sd-modal-select-button>`을 컴포지션하여 공유 데이터 항목을 표시한다.
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
@Component({ selector: "sd-shared-data-select-button" })
|
|
85
|
+
class SdSharedDataSelectButton<
|
|
86
|
+
TItem extends SharedDataBase<string | number>,
|
|
87
|
+
TMode extends keyof SelectModeValue<string | number>,
|
|
88
|
+
TModal extends SdSelectModal<any>
|
|
89
|
+
> {
|
|
90
|
+
value = model<SelectModeValue<string | number>[TMode]>();
|
|
91
|
+
items = input<TItem[]>([]);
|
|
92
|
+
modal = input.required<SdSelectModalInfo<TModal>>();
|
|
93
|
+
selectMode = input<TMode>("single" as TMode);
|
|
94
|
+
disabled = input(false, { transform: booleanAttribute });
|
|
95
|
+
required = input(false, { transform: booleanAttribute });
|
|
96
|
+
inset = input(false, { transform: booleanAttribute });
|
|
97
|
+
size = input<"sm" | "lg">();
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Members
|
|
102
|
+
|
|
103
|
+
| Member | Kind | Type | Default | Description |
|
|
104
|
+
|--------|------|------|---------|-------------|
|
|
105
|
+
| `value` | model | `SelectModeValue<string \| number>[TMode]` | - | 선택된 값 (two-way) |
|
|
106
|
+
| `items` | input | `TItem[]` | `[]` | 공유 데이터 항목 |
|
|
107
|
+
| `modal` | input (required) | `SdSelectModalInfo<TModal>` | - | 모달 정보 |
|
|
108
|
+
| `selectMode` | input | `TMode` | `"single"` | 선택 모드 |
|
|
109
|
+
| `disabled` | input | `boolean` | `false` | 비활성화 |
|
|
110
|
+
| `required` | input | `boolean` | `false` | 필수 |
|
|
111
|
+
|
|
112
|
+
## `SdSharedDataSelectList`
|
|
113
|
+
|
|
114
|
+
공유 데이터 목록형 선택 컴포넌트. 검색, 페이지네이션, 외부 링크 기능을 포함한다.
|
|
115
|
+
|
|
116
|
+
```typescript
|
|
117
|
+
@Component({ selector: "sd-shared-data-select-list" })
|
|
118
|
+
class SdSharedDataSelectList<
|
|
119
|
+
TItem extends SharedDataBase<string | number>,
|
|
120
|
+
TModal extends SdSelectModal<any>
|
|
121
|
+
> {
|
|
122
|
+
selectedItem = model<TItem>();
|
|
123
|
+
canChangeFn = input<(item: TItem | undefined) => boolean | Promise<boolean>>(() => true);
|
|
124
|
+
items = input.required<TItem[]>();
|
|
125
|
+
selectedIcon = input<string>();
|
|
126
|
+
useUndefined = input(false, { transform: booleanAttribute });
|
|
127
|
+
filterFn = input<(item: TItem, index: number) => boolean>();
|
|
128
|
+
modal = input<SdSelectModalInfo<TModal>>();
|
|
129
|
+
header = input<string>();
|
|
130
|
+
pageItemCount = input<number>();
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Members
|
|
135
|
+
|
|
136
|
+
| Member | Kind | Type | Default | Description |
|
|
137
|
+
|--------|------|------|---------|-------------|
|
|
138
|
+
| `selectedItem` | model | `TItem \| undefined` | - | 선택된 항목 (two-way) |
|
|
139
|
+
| `canChangeFn` | input | `(item) => boolean \| Promise<boolean>` | `() => true` | 선택 변경 가능 여부 함수 |
|
|
140
|
+
| `items` | input (required) | `TItem[]` | - | 공유 데이터 항목 |
|
|
141
|
+
| `selectedIcon` | input | `string \| undefined` | `undefined` | 선택됨 아이콘 |
|
|
142
|
+
| `useUndefined` | input | `boolean` | `false` | undefined 항목 포함 |
|
|
143
|
+
| `filterFn` | input | `((item, index) => boolean) \| undefined` | `undefined` | 필터 함수 |
|
|
144
|
+
| `modal` | input | `SdSelectModalInfo<TModal> \| undefined` | `undefined` | 모달 선택 정보 |
|
|
145
|
+
| `header` | input | `string \| undefined` | `undefined` | 헤더 텍스트 |
|
|
146
|
+
| `pageItemCount` | input | `number \| undefined` | `undefined` | 페이지당 항목 수 |
|
|
147
|
+
|
|
148
|
+
Content children: `#headerTpl`, `#filterTpl`, `SdItemOfTemplate`, `#undefinedTpl`
|
|
149
|
+
|
|
150
|
+
## `matchesSearchText`
|
|
151
|
+
|
|
152
|
+
공백 구분 AND 조건 텍스트 검색 매칭 함수.
|
|
153
|
+
|
|
154
|
+
```typescript
|
|
155
|
+
function matchesSearchText(itemText: string, searchQuery: string | undefined): boolean
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
모든 검색어(공백으로 분할)가 `itemText`에 포함되면 `true`. `searchQuery`가 undefined이거나 빈 문자열이면 항상 `true`.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# `SdTiptapEditor`
|
|
2
|
+
|
|
3
|
+
TipTap 기반 리치 텍스트 에디터 컴포넌트. 툴바를 통해 텍스트 서식(제목, 굵게, 기울임, 색상, 정렬 등)을 제어한다.
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
@Component({ selector: "sd-tiptap-editor", ... })
|
|
7
|
+
export class SdTiptapEditor
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
## Members
|
|
11
|
+
|
|
12
|
+
| Member | Kind | Type | Description |
|
|
13
|
+
|--------|------|------|-------------|
|
|
14
|
+
| `value` | model | `string \| undefined` | HTML 콘텐츠 |
|
|
15
|
+
| `disabled` | input | `boolean` | 비활성화 — 툴바 숨김, 편집 불가 (기본값: `false`) |
|
|
16
|
+
| `readonly` | input | `boolean` | 읽기 전용 — 편집 불가, 툴바 표시 (기본값: `false`) |
|
|
17
|
+
| `required` | input | `boolean` | 필수 여부 (기본값: `false`) |
|
|
18
|
+
| `placeholder` | input | `string \| undefined` | 플레이스홀더 텍스트 |
|
|
19
|
+
| `validatorFn` | input | `(value: string \| undefined) => string \| undefined` | 커스텀 유효성 검사 함수 |
|
|
20
|
+
| `extensions` | input | `AnyExtension[] \| undefined` | 추가 TipTap 확장 (기본 확장: StarterKit, TextStyle, Color, Highlight, TextAlign, Image, Underline, Placeholder) |
|
|
21
|
+
|
|
22
|
+
## Usage
|
|
23
|
+
|
|
24
|
+
```html
|
|
25
|
+
<sd-tiptap-editor [(value)]="content" [placeholder]="'내용을 입력하세요'" />
|
|
26
|
+
```
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# `FormatPipe`
|
|
2
|
+
|
|
3
|
+
DateTime, DateOnly, string 값을 포맷팅하는 파이프. 파이프명: `format`
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
@Pipe({ name: "format" })
|
|
7
|
+
class FormatPipe implements PipeTransform {
|
|
8
|
+
transform(value: string | DateTime | DateOnly | undefined, format: string): string;
|
|
9
|
+
}
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Parameters
|
|
13
|
+
|
|
14
|
+
| Param | Type | Description |
|
|
15
|
+
|-------|------|-------------|
|
|
16
|
+
| `value` | `string \| DateTime \| DateOnly \| undefined` | 포맷팅할 값 |
|
|
17
|
+
| `format` | `string` | 포맷 문자열 |
|
|
18
|
+
|
|
19
|
+
## Returns
|
|
20
|
+
|
|
21
|
+
`string` — 포맷팅된 문자열. `undefined` 또는 `null` 입력 시 빈 문자열 반환.
|
|
22
|
+
|
|
23
|
+
## Usage
|
|
24
|
+
|
|
25
|
+
### DateTime / DateOnly
|
|
26
|
+
|
|
27
|
+
`value.toFormatString(format)`을 호출한다.
|
|
28
|
+
|
|
29
|
+
```html
|
|
30
|
+
{{ someDateTime | format: "yyyy-MM-dd HH:mm" }}
|
|
31
|
+
{{ someDateOnly | format: "yyyy년 MM월 dd일" }}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### String
|
|
35
|
+
|
|
36
|
+
format 문자열에서 `X` 문자를 값의 문자로 치환한다. `|`로 구분된 여러 포맷 중 길이가 일치하는 것을 사용한다.
|
|
37
|
+
|
|
38
|
+
```html
|
|
39
|
+
<!-- "01012345678" → "010-1234-5678" -->
|
|
40
|
+
{{ phone | format: "XXX-XXXX-XXXX|XX-XXX-XXXX|XX-XXXX-XXXX" }}
|
|
41
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# `SdGlobalErrorHandlerPlugin`
|
|
2
|
+
|
|
3
|
+
글로벌 에러 핸들러. Angular `ErrorHandler`를 구현하여 처리되지 않은 에러를 포착하고 화면에 표시한다.
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
@Injectable({ providedIn: null })
|
|
7
|
+
export class SdGlobalErrorHandlerPlugin implements ErrorHandler
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
`provideSdAngular()`에 의해 자동 등록된다. 직접 등록할 필요 없다.
|
|
11
|
+
|
|
12
|
+
## Members
|
|
13
|
+
|
|
14
|
+
| Member | Kind | Type | Description |
|
|
15
|
+
|--------|------|------|-------------|
|
|
16
|
+
| `handleError(event)` | method | `(any) => void` | 에러 처리. `PromiseRejectionEvent`, `ErrorEvent`, `Error` 등을 구분하여 처리 |
|
|
17
|
+
|
|
18
|
+
## 동작
|
|
19
|
+
|
|
20
|
+
- `PromiseRejectionEvent` → reason이 `Error`면 메시지+스택, 객체면 JSON 표시
|
|
21
|
+
- `ErrorEvent` → error가 `Error`면 메시지+스택, string이면 그대로 표시
|
|
22
|
+
- `Error` → 메시지+스택 표시
|
|
23
|
+
- devMode에서는 toast로, prodMode에서는 alert로 표시 (중복 표시 방지)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# `SdOptionEventPlugin`
|
|
2
|
+
|
|
3
|
+
`.capture`, `.passive`, `.once` 이벤트 수식어 플러그인. 네이티브 DOM 이벤트에 addEventListener options를 적용한다. [`provideSdAngular`](../bootstrap/provide-sd-angular.md)에서 자동 등록된다.
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
class SdOptionEventPlugin extends EventManagerPlugin {
|
|
7
|
+
supports(eventName: string): boolean; // /\.(capture|passive|once)/ 매칭
|
|
8
|
+
}
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```html
|
|
14
|
+
<div (scroll.passive)="onScroll($event)">...</div>
|
|
15
|
+
<div (click.capture.once)="onClick($event)">...</div>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Related Types
|
|
19
|
+
|
|
20
|
+
### `SdGlobalErrorHandlerPlugin`
|
|
21
|
+
|
|
22
|
+
글로벌 에러 핸들러. Angular의 `ErrorHandler`를 구현하여 PromiseRejectionEvent, ErrorEvent, Error 등을 처리한다.
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
class SdGlobalErrorHandlerPlugin implements ErrorHandler {
|
|
26
|
+
handleError(event: any): false;
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
에러 발생 시:
|
|
31
|
+
1. `SdSystemLogProvider.writeAsync()`로 로그 기록
|
|
32
|
+
2. 전체 화면 에러 메시지 표시 (검은 배경 + 흰 텍스트)
|
|
33
|
+
3. `ApplicationRef.destroy()` 호출하여 앱 정지
|
|
34
|
+
4. 클릭 시 페이지 리로드 (프로덕션에서는 `location.hash = "/"` 후 리로드)
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# `SdMenu`
|
|
2
|
+
|
|
3
|
+
메뉴 트리 노드.
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
interface SdMenu {
|
|
7
|
+
title: string;
|
|
8
|
+
codeChain: string[];
|
|
9
|
+
url?: string;
|
|
10
|
+
icon?: string;
|
|
11
|
+
children?: SdMenu[];
|
|
12
|
+
}
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Fields
|
|
16
|
+
|
|
17
|
+
| Field | Type | Description |
|
|
18
|
+
|-------|------|-------------|
|
|
19
|
+
| `title` | `string` | 메뉴 제목 |
|
|
20
|
+
| `codeChain` | `string[]` | 코드 체인 (루트부터 현재까지) |
|
|
21
|
+
| `url` | `string \| undefined` | 외부 URL |
|
|
22
|
+
| `icon` | `string \| undefined` | 아이콘 |
|
|
23
|
+
| `children` | `SdMenu[] \| undefined` | 하위 메뉴 |
|
|
24
|
+
|
|
25
|
+
## Related Types
|
|
26
|
+
|
|
27
|
+
### `SdFlatMenu`
|
|
28
|
+
|
|
29
|
+
플랫 메뉴 항목 (리프만).
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
interface SdFlatMenu<TModule = unknown> {
|
|
33
|
+
titleChain: string[];
|
|
34
|
+
codeChain: string[];
|
|
35
|
+
modulesChain: TModule[][];
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
| Field | Type | Description |
|
|
40
|
+
|-------|------|-------------|
|
|
41
|
+
| `titleChain` | `string[]` | 타이틀 체인 |
|
|
42
|
+
| `codeChain` | `string[]` | 코드 체인 |
|
|
43
|
+
| `modulesChain` | `TModule[][]` | 모듈 체인 |
|
|
44
|
+
|
|
45
|
+
### `SdPermission`
|
|
46
|
+
|
|
47
|
+
권한 트리 노드.
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
interface SdPermission<TModule = unknown> {
|
|
51
|
+
title: string;
|
|
52
|
+
codeChain: string[];
|
|
53
|
+
modules: TModule[] | undefined;
|
|
54
|
+
perms: ("use" | "edit")[] | undefined;
|
|
55
|
+
children: SdPermission<TModule>[] | undefined;
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
| Field | Type | Description |
|
|
60
|
+
|-------|------|-------------|
|
|
61
|
+
| `title` | `string` | 권한 제목 |
|
|
62
|
+
| `codeChain` | `string[]` | 코드 체인 |
|
|
63
|
+
| `modules` | `TModule[] \| undefined` | 모듈 제한 |
|
|
64
|
+
| `perms` | `("use" \| "edit")[] \| undefined` | 권한 목록 |
|
|
65
|
+
| `children` | `SdPermission<TModule>[] \| undefined` | 하위 권한 |
|