@ai-table/grid 0.0.9 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. package/components/cell-editors/abstract-cell-editor.component.d.ts +6 -4
  2. package/components/cell-editors/abstract-cell-editor.component.d.ts.map +1 -1
  3. package/components/cell-editors/cell-editor.scss +1 -1
  4. package/components/cell-editors/date/date-editor.component.d.ts +11 -0
  5. package/components/cell-editors/date/date-editor.component.d.ts.map +1 -0
  6. package/components/cell-editors/progress/progress-editor.component.d.ts +1 -3
  7. package/components/cell-editors/progress/progress-editor.component.d.ts.map +1 -1
  8. package/components/cell-editors/select/select-editor.component.d.ts +2 -1
  9. package/components/cell-editors/select/select-editor.component.d.ts.map +1 -1
  10. package/components/field-menu/field-menu.component.d.ts +1 -0
  11. package/components/field-menu/field-menu.component.d.ts.map +1 -1
  12. package/components/field-property-editor/field-property-editor.component.d.ts +4 -4
  13. package/components/field-property-editor/field-property-editor.component.d.ts.map +1 -1
  14. package/components/index.d.ts +1 -1
  15. package/components/index.d.ts.map +1 -1
  16. package/constants/field.d.ts.map +1 -1
  17. package/core/action/field.d.ts +1 -1
  18. package/core/action/field.d.ts.map +1 -1
  19. package/core/constants/field.d.ts +2 -35
  20. package/core/constants/field.d.ts.map +1 -1
  21. package/core/types/core.d.ts +13 -7
  22. package/core/types/core.d.ts.map +1 -1
  23. package/core/utils/common.d.ts.map +1 -1
  24. package/core/utils/field.d.ts +4 -2
  25. package/core/utils/field.d.ts.map +1 -1
  26. package/esm2022/components/cell-editors/abstract-cell-editor.component.mjs +15 -5
  27. package/esm2022/components/cell-editors/date/date-editor.component.mjs +78 -0
  28. package/esm2022/components/cell-editors/progress/progress-editor.component.mjs +7 -7
  29. package/esm2022/components/cell-editors/select/select-editor.component.mjs +17 -3
  30. package/esm2022/components/cell-views/select/option.component.mjs +3 -3
  31. package/esm2022/components/field-menu/field-menu.component.mjs +12 -7
  32. package/esm2022/components/field-property-editor/field-property-editor.component.mjs +7 -10
  33. package/esm2022/components/index.mjs +2 -2
  34. package/esm2022/constants/editor.mjs +3 -3
  35. package/esm2022/constants/field.mjs +2 -3
  36. package/esm2022/core/action/field.mjs +2 -2
  37. package/esm2022/core/constants/field.mjs +2 -6
  38. package/esm2022/core/types/core.mjs +5 -5
  39. package/esm2022/core/utils/common.mjs +14 -2
  40. package/esm2022/core/utils/field.mjs +17 -15
  41. package/esm2022/grid.component.mjs +15 -9
  42. package/esm2022/pipes/grid.pipe.mjs +3 -3
  43. package/esm2022/public-api.mjs +1 -2
  44. package/esm2022/services/event.service.mjs +4 -7
  45. package/esm2022/services/field.service.mjs +1 -1
  46. package/fesm2022/ai-table-grid.mjs +135 -118
  47. package/fesm2022/ai-table-grid.mjs.map +1 -1
  48. package/grid.component.d.ts +4 -3
  49. package/grid.component.d.ts.map +1 -1
  50. package/package.json +1 -1
  51. package/public-api.d.ts +0 -1
  52. package/public-api.d.ts.map +1 -1
  53. package/services/event.service.d.ts.map +1 -1
  54. package/services/field.service.d.ts +2 -2
  55. package/services/field.service.d.ts.map +1 -1
  56. package/components/cell-editors/date-time/date-time-editor.component.d.ts +0 -13
  57. package/components/cell-editors/date-time/date-time-editor.component.d.ts.map +0 -1
  58. package/esm2022/components/cell-editors/date-time/date-time-editor.component.mjs +0 -82
  59. package/esm2022/utils/build.mjs +0 -16
  60. package/esm2022/utils/cell.mjs +0 -7
  61. package/esm2022/utils/index.mjs +0 -3
  62. package/utils/build.d.ts +0 -4
  63. package/utils/build.d.ts.map +0 -1
  64. package/utils/cell.d.ts +0 -4
  65. package/utils/cell.d.ts.map +0 -1
  66. package/utils/index.d.ts +0 -3
  67. package/utils/index.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ai-table-grid.mjs","sources":["../../../packages/grid/src/core/types/core.ts","../../../packages/grid/src/core/types/action.ts","../../../packages/grid/src/core/utils/id-creator.ts","../../../packages/grid/src/core/constants/field.ts","../../../packages/grid/src/core/utils/field.ts","../../../packages/grid/src/core/utils/weak-map.ts","../../../packages/grid/src/core/utils/common.ts","../../../packages/grid/src/core/utils/record.ts","../../../packages/grid/src/core/utils/queries.ts","../../../packages/grid/src/core/action/field.ts","../../../packages/grid/src/core/action/general.ts","../../../packages/grid/src/core/action/record.ts","../../../packages/grid/src/core/action/index.ts","../../../packages/grid/src/components/cell-editors/abstract-cell-editor.component.ts","../../../packages/grid/src/components/cell-editors/date-time/date-time-editor.component.ts","../../../packages/grid/src/components/cell-editors/link/number-editor.component.ts","../../../packages/grid/src/components/cell-editors/number/number-editor.component.ts","../../../packages/grid/src/components/cell-editors/progress/progress-editor.component.ts","../../../packages/grid/src/components/cell-editors/rating/rating-editor.component.ts","../../../packages/grid/src/components/cell-editors/text/text-editor.component.ts","../../../packages/grid/src/components/cell-views/select/option.component.ts","../../../packages/grid/src/components/cell-views/select/option.component.html","../../../packages/grid/src/components/field-property-editor/field-property-editor.component.ts","../../../packages/grid/src/components/field-property-editor/field-property-editor.component.html","../../../packages/grid/src/utils/build.ts","../../../packages/grid/src/utils/cell.ts","../../../packages/grid/src/components/field-menu/field-menu.component.ts","../../../packages/grid/src/components/field-menu/field-menu.component.html","../../../packages/grid/src/constants/grid.ts","../../../packages/grid/src/services/field.service.ts","../../../packages/grid/src/constants/field.ts","../../../packages/grid/src/pipes/grid.pipe.ts","../../../packages/grid/src/components/cell-editors/select/select-editor.component.ts","../../../packages/grid/src/components/cell-editors/select/select-editor.component.html","../../../packages/grid/src/constants/editor.ts","../../../packages/grid/src/services/event.service.ts","../../../packages/grid/src/services/selection.service.ts","../../../packages/grid/src/grid.component.ts","../../../packages/grid/src/grid.component.html","../../../packages/grid/src/ai-table-grid.ts"],"sourcesContent":["import { WritableSignal } from '@angular/core';\nimport { Id } from 'ngx-tethys/types';\nimport { AITableSelection } from '../../types';\nimport { AITableAction } from './action';\n\nexport enum AITableFieldType {\n text = 'text', // 包含多行文本\n richText = 'rich_text', // 包含多行文本\n select = 'select', // 包含单选和多选\n number = 'number',\n date = 'date',\n member = 'member', // 包含单个和多个\n // cascadeSelect = 'cascade_select', // 包含单选和多选,参数复杂后续再进行设计\n progress = 'progress',\n rate = 'rate',\n link = 'link',\n createdAt = 'created_at',\n updatedAt = 'updated_at',\n createdBy = 'created_by',\n updatedBy = 'updated_by'\n}\n\nexport enum AITableStatType {\n None = 0,\n CountAll = 1,\n Empty = 2,\n Filled = 3,\n Unique = 4,\n PercentEmpty = 5,\n PercentFilled = 6,\n PercentUnique = 7,\n Sum = 8,\n Average = 9,\n Max = 10,\n Min = 11,\n DateRangeOfDays = 12,\n DateRangeOfMonths = 13,\n Checked = 14,\n UnChecked = 15,\n PercentChecked = 16,\n PercentUnChecked = 17\n}\n\nexport interface AITableBaseField {\n name: string;\n type: AITableFieldType;\n icon: string;\n width?: number;\n settings?: AITableFieldSettings;\n}\n\nexport interface AITableField {\n _id: string;\n name: string;\n type: AITableFieldType;\n icon?: string;\n width?: number;\n hidden?: boolean;\n frozen?: boolean;\n stat_type?: AITableStatType;\n settings?: AITableFieldSettings;\n}\n\nexport type AITableFieldSettings = TextSettings | RichTextSettings | SelectSettings | MemberSettings;\n\nexport interface TextSettings { }\n\nexport interface RichTextSettings { }\n\nexport interface SelectSettings extends IsMultiple {\n option_style?: AITableSelectOptionStyle;\n options: AITableSelectOption[];\n}\n\nexport interface MemberSettings extends IsMultiple { }\n\nexport interface IsMultiple {\n is_multiple?: boolean;\n}\n\nexport interface AITableSelectOption {\n _id: string;\n text: string;\n icon?: string;\n color?: string;\n bg_color?: string;\n}\n\nexport enum AITableSelectOptionStyle {\n text = 'text',\n tag = 'tag',\n dot = 'dot',\n piece = 'piece'\n}\n\nexport type TextFieldValue = string;\n\nexport type SelectFieldValue = Id[]; // 数字\n\nexport type NumberFieldValue = number;\n\nexport type DateFieldValue = { timestamp: number }; // 时间戳\n\nexport type MemberFieldValue = Id[];\n\nexport type ProgressFieldValue = number; // [0,1]\n\nexport type RateFieldValue = 1 | 2 | 3 | 4 | 5;\n\nexport type FieldValue =\n | TextFieldValue\n | SelectFieldValue\n | NumberFieldValue\n | DateFieldValue\n | MemberFieldValue\n | ProgressFieldValue\n | RateFieldValue\n | any;\n\nexport interface AITableRecord {\n _id: string;\n values: Record<string, FieldValue>;\n}\n\nexport type AITableRecords = AITableRecord[];\n\nexport type AITableFields = AITableField[];\n\nexport interface AITableValue {\n records: AITableRecords;\n fields: AITableFields;\n}\n\nexport interface AITable {\n records: WritableSignal<AITableRecords>;\n fields: WritableSignal<AITableFields>;\n actions: AITableAction[];\n selection: WritableSignal<AITableSelection>;\n onChange: () => void;\n apply: (action: AITableAction) => void;\n}\n\nexport interface AITableChangeOptions {\n records: AITableRecord[];\n fields: AITableField[];\n actions: AITableAction[];\n}\n\nexport type AIPlugin = (aiTable: AITable) => AITable;\n","import { AITableField, AITableRecord } from './core';\n\nexport type AIRecordPath = [number];\n\nexport type AIRecordIdPath = [string];\n\nexport type AIFieldPath = [number];\n\nexport type AIFieldIdPath = [string];\n\nexport type AIFieldValueIdPath = [string, string];\n\nexport type Path = AIRecordPath | AIFieldPath | AIFieldIdPath | AIRecordIdPath | AIFieldValueIdPath;\n\nexport enum ActionName {\n UpdateFieldValue = 'update_field_value',\n AddRecord = 'add_record',\n AddField = 'add_field',\n MoveField = 'move_field',\n MoveRecord = 'move_record',\n RemoveField = 'remove_field',\n RemoveRecord = 'remove_record',\n SetField = 'set_field'\n}\n\nexport enum ExecuteType {\n Execute,\n Undo,\n Redo\n}\n\nexport type UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue;\n path: AIFieldValueIdPath;\n fieldValue: any;\n newFieldValue: any;\n};\n\nexport type AddRecordAction = {\n type: ActionName.AddRecord;\n path: AIRecordPath;\n record: AITableRecord;\n};\n\nexport type AddFieldAction = {\n type: ActionName.AddField;\n path: AIFieldPath;\n field: AITableField;\n};\n\nexport type MoveFieldAction = {\n type: ActionName.MoveField;\n path: AIFieldPath;\n newPath: AIFieldPath;\n};\n\nexport type MoveRecordAction = {\n type: ActionName.MoveRecord;\n path: AIRecordPath;\n newPath: AIRecordPath;\n};\n\nexport type RemoveFieldAction = {\n type: ActionName.RemoveField;\n path: AIFieldIdPath;\n};\n\nexport type RemoveRecordAction = {\n type: ActionName.RemoveRecord;\n path: AIRecordIdPath;\n};\n\nexport type SetFieldAction = {\n type: ActionName.SetField;\n path: AIFieldIdPath;\n properties: Partial<AITableField>;\n newProperties: Partial<AITableField>;\n};\n\nexport type AITableAction =\n | UpdateFieldValueAction\n | AddRecordAction\n | AddFieldAction\n | RemoveRecordAction\n | RemoveFieldAction\n | SetFieldAction\n | MoveFieldAction\n | MoveRecordAction;\n","import ObjectID from 'bson-objectid';\n\nexport function idCreator() {\n return ObjectID().toHexString();\n}\n","import { helpers } from 'ngx-tethys/util';\nimport { AITableBaseField, AITableFieldType } from '../types';\n\nexport const BasicFields = [\n {\n type: AITableFieldType.text,\n name: '单行文本',\n icon: 'font',\n width: 300\n },\n // 多行文本\n {\n type: AITableFieldType.select,\n name: '单选',\n icon: 'check-circle',\n width: 200\n },\n {\n type: AITableFieldType.select,\n name: '多选',\n icon: 'list-check',\n width: 200,\n settings: {\n is_multiple: true\n }\n },\n {\n type: AITableFieldType.number,\n name: '数字',\n icon: 'hashtag',\n width: 200\n },\n {\n type: AITableFieldType.date,\n name: '日期',\n icon: 'calendar',\n width: 200\n },\n {\n type: AITableFieldType.member,\n name: '成员',\n icon: 'user',\n width: 200,\n settings: {\n is_multiple: true\n }\n },\n // 级联单选\n // 级联多选\n {\n type: AITableFieldType.progress,\n name: '进度',\n icon: 'progress',\n width: 200\n },\n {\n type: AITableFieldType.rate,\n name: '评分',\n icon: 'star-circle',\n width: 200\n },\n {\n type: AITableFieldType.link,\n name: '链接',\n icon: 'link-insert',\n width: 300\n },\n {\n type: AITableFieldType.createdBy,\n name: '创建人',\n icon: 'user',\n width: 200\n },\n {\n type: AITableFieldType.createdAt,\n name: '创建时间',\n icon: 'calendar',\n width: 200\n },\n {\n type: AITableFieldType.updatedBy,\n name: '更新人',\n icon: 'user',\n width: 200\n },\n {\n type: AITableFieldType.updatedAt,\n name: '更新时间',\n icon: 'calendar',\n width: 200\n }\n];\n\nexport const Fields: AITableBaseField[] = [...BasicFields];\n\nexport const FieldsMap = helpers.keyBy([...BasicFields], 'type');\n\nexport const FieldsIncludeIsMultiple = [AITableFieldType.select, AITableFieldType.member];","import { FieldsMap, FieldsIncludeIsMultiple, Fields } from '../constants/field';\nimport { AITable, AITableField, AITableFieldType, IsMultiple } from '../types';\nimport { idCreator } from './id-creator';\n\nexport function getDefaultFieldValue(field: AITableField) {\n if ([AITableFieldType.select, AITableFieldType.member, AITableFieldType.createdBy, AITableFieldType.updatedBy].includes(field.type)) {\n return [];\n }\n return '';\n}\n\nexport function createDefaultFieldName(aiTable: AITable, field: Partial<AITableField>) {\n if (!field.type) {\n return FieldsMap[AITableFieldType.text].name;\n }\n const isMultiple = FieldsIncludeIsMultiple.includes(field.type!) ? !!(field.settings as IsMultiple)?.is_multiple : false\n const fields = aiTable.fields();\n const count = fields.filter((item) => {\n return item.type === field.type && (!FieldsIncludeIsMultiple.includes(field.type) || !!(item.settings as IsMultiple)?.is_multiple === isMultiple);\n }).length;\n\n if (FieldsIncludeIsMultiple.includes(field.type!)) {\n const basicField = Fields.find(item => item.type === field.type && !!(item.settings as IsMultiple)?.is_multiple === isMultiple)!;\n return count === 0 ? basicField.name! : basicField.name! + ' ' + count;\n }\n return count === 0 ? FieldsMap[field.type!].name : FieldsMap[field.type!].name + ' ' + count;\n}\n\nexport function createDefaultField(aiTable: AITable, type: AITableFieldType = AITableFieldType.text) {\n return { _id: idCreator(), type, name: createDefaultFieldName(aiTable, { type }) };\n}\n","import { AITable } from '../types';\n\nexport const FLUSHING = new WeakMap<AITable, boolean>();\n","import { Actions } from '../action';\nimport { AITable, AITableAction, AITableFields, AITableRecords, Path } from '../types';\nimport { FLUSHING } from './weak-map';\nimport { WritableSignal, signal } from '@angular/core';\n\nexport function createAITable(records: WritableSignal<AITableRecords>, fields: WritableSignal<AITableFields>): AITable {\n const aiTable: AITable = {\n records,\n fields,\n actions: [],\n selection: signal({\n selectedRecords: new Map(),\n selectedFields: new Map(),\n selectedCells: new Map()\n }),\n onChange: () => {},\n apply: (action: AITableAction) => {\n aiTable.actions.push(action);\n Actions.transform(aiTable, action);\n\n if (!FLUSHING.get(aiTable)) {\n FLUSHING.set(aiTable, true);\n Promise.resolve().then(() => {\n FLUSHING.set(aiTable, false);\n aiTable.onChange();\n aiTable.actions = [];\n });\n }\n }\n };\n return aiTable;\n}\n\nexport function isPathEqual(path: Path, another: Path): boolean {\n return path.length === another.length && path.every((n, i) => n === another[i]);\n}\n","import { AITableFields, AITableRecord } from '../types';\nimport { getDefaultFieldValue } from './field';\nimport { idCreator } from './id-creator';\n\nexport function getDefaultRecord(fields: AITableFields) {\n const newRow: AITableRecord = {\n _id: idCreator(),\n values: {}\n };\n fields.map((item) => {\n newRow.values[item._id] = getDefaultFieldValue(item);\n });\n return newRow;\n}\n","import { isUndefinedOrNull } from 'ngx-tethys/util';\nimport { AITable, AITableField, AITableRecord, AIFieldValueIdPath, AIRecordPath, AIFieldPath, AIFieldIdPath } from '../types';\n\nexport const AITableQueries = {\n findRecordPath(aiTable: AITable, record: AITableRecord) {\n const recordIndex = record && aiTable.records().indexOf(record);\n if (!isUndefinedOrNull(recordIndex) && recordIndex > -1) {\n return [recordIndex] as AIRecordPath;\n }\n throw new Error(`can not find the record path: ${JSON.stringify({ ...(record || {}) })}`);\n },\n findFieldPath(aiTable: AITable, field: AITableField) {\n const fieldIndex = field && aiTable.fields().indexOf(field);\n if (!isUndefinedOrNull(fieldIndex) && fieldIndex > -1) {\n return [fieldIndex] as AIFieldPath;\n }\n throw new Error(`can not find the field path: ${JSON.stringify({ ...(field || {}) })}`);\n },\n getFieldValue(aiTable: AITable, path: AIFieldValueIdPath): any {\n if (!aiTable) {\n throw new Error(`aiTable does not exist`);\n }\n if (!aiTable.records()) {\n throw new Error(`aiTable has no records`);\n }\n if (!aiTable.fields()) {\n throw new Error(`aiTable has no fields`);\n }\n if (!path) {\n throw new Error(`path does not exist as path [${path}]`);\n }\n const recordIndex = aiTable.records().findIndex((item) => item._id === path[0]);\n if (recordIndex < 0) {\n throw new Error(`can not find record at path [${path}]`);\n }\n return aiTable.records()[recordIndex].values[path[1]];\n },\n\n getField(aiTable: AITable, path: AIFieldIdPath): AITableField | undefined {\n if (!aiTable) {\n throw new Error(`aiTable does not exist`);\n }\n if (!path) {\n throw new Error(`path does not exist as path [${path}]`);\n }\n return aiTable.fields().find(item=> item._id === path[0]);\n },\n\n getRecord(aiTable: AITable, path: AIRecordPath): AITableRecord {\n if (!aiTable) {\n throw new Error(`aiTable does not exist`);\n }\n if (!path) {\n throw new Error(`path does not exist as path [${path}]`);\n }\n return aiTable.records()[path[0]];\n }\n};\n","import {\n ActionName,\n AddFieldAction,\n AIFieldIdPath,\n AIFieldPath,\n AITable,\n AITableField,\n MoveFieldAction,\n RemoveFieldAction,\n SetFieldAction\n} from '../types';\nimport { AITableQueries } from '../utils';\n\nexport function addField(aiTable: AITable, field: AITableField, path: AIFieldPath) {\n const operation: AddFieldAction = {\n type: ActionName.AddField,\n field,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function moveField(aiTable: AITable, path: AIFieldPath, newPath: AIFieldPath) {\n const operation: MoveFieldAction = {\n type: ActionName.MoveField,\n path,\n newPath\n };\n aiTable.apply(operation);\n}\n\nexport function removeField(aiTable: AITable, path: AIFieldIdPath) {\n const operation: RemoveFieldAction = {\n type: ActionName.RemoveField,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function setField(aiTable: AITable, value: Partial<AITableField>, path: AIFieldIdPath) {\n const field = AITableQueries.getField(aiTable, path);\n if (field) {\n const properties: Partial<AITableField> = {};\n const newProperties: Partial<AITableField> = {};\n for (const key in value) {\n const k = key as keyof AITableField;\n if (field[k]?.toString() !== value[k]?.toString()) {\n if (field.hasOwnProperty(k)) {\n properties[k] = field[k] as any;\n }\n if (newProperties[k] !== null) {\n newProperties[k] = value[k] as any;\n }\n }\n }\n\n const operation: SetFieldAction = {\n type: ActionName.SetField,\n properties,\n newProperties,\n path\n };\n\n aiTable.apply(operation);\n }\n}\n\nexport const FieldActions = {\n addField,\n moveField,\n removeField,\n setField\n};\n","import { ActionName, AITable, AITableAction, AITableField, AITableFields, AITableRecords } from '../types';\nimport { createDraft, finishDraft } from 'immer';\nimport { getDefaultFieldValue, isPathEqual } from '../utils';\n\nconst apply = (aiTable: AITable, records: AITableRecords, fields: AITableFields, action: AITableAction) => {\n switch (action.type) {\n case ActionName.UpdateFieldValue: {\n const [recordId, fieldId] = action.path;\n if (recordId && fieldId) {\n const recordIndex = aiTable.records().findIndex((item) => item._id === recordId);\n records[recordIndex].values[fieldId] = action.newFieldValue;\n }\n break;\n }\n case ActionName.AddRecord: {\n const [recordIndex] = action.path;\n if (recordIndex > -1) {\n records.splice(recordIndex, 0, action.record);\n }\n break;\n }\n case ActionName.AddField: {\n const [fieldIndex] = action.path;\n if (fieldIndex > -1) {\n const newField = action.field;\n fields.splice(fieldIndex, 0, newField);\n const newRecord = {\n [newField._id]: getDefaultFieldValue(action.field)\n };\n records.forEach((item) => {\n item.values = {\n ...item.values,\n ...newRecord\n };\n });\n }\n\n break;\n }\n case ActionName.MoveRecord: {\n if (isPathEqual(action.path, action.newPath)) {\n return;\n }\n const record = records[action.path[0]];\n records.splice(action.path[0], 1);\n records.splice(action.newPath[0], 0, record);\n break;\n }\n case ActionName.MoveField: {\n if (isPathEqual(action.path, action.newPath)) {\n return;\n }\n const field = fields[action.path[0]];\n fields.splice(action.path[0], 1);\n fields.splice(action.newPath[0], 0, field);\n\n break;\n }\n case ActionName.RemoveField: {\n const [fieldId] = action.path;\n const fieldIndex = aiTable.fields().findIndex((item) => item._id === fieldId);\n if (fieldIndex > -1) {\n fields.splice(fieldIndex, 1);\n records.forEach((item) => {\n delete item.values[fieldId];\n });\n }\n break;\n }\n case ActionName.RemoveRecord: {\n const [recordId] = action.path;\n const recordIndex = aiTable.records().findIndex((item) => item._id === recordId);\n if (recordIndex > -1) {\n records.splice(recordIndex, 1);\n }\n break;\n }\n\n case ActionName.SetField: {\n const field = fields.find((item) => item._id === action.path[0]) as AITableField;\n if (field) {\n for (const key in action.newProperties) {\n const k = key as keyof AITableField;\n const value = action.newProperties[k];\n if (value == null) {\n delete field[k];\n } else {\n (field[k] as any) = value;\n }\n }\n\n // properties that were previously defined, but are now missing, must be deleted\n for (const key in action.properties) {\n if (!action.newProperties.hasOwnProperty(key)) {\n delete field[<keyof AITableField>key];\n }\n }\n }\n break;\n }\n }\n return {\n records,\n fields\n };\n};\n\nexport const GeneralActions = {\n transform(aiTable: AITable, action: AITableAction): void {\n const records = createDraft(aiTable.records());\n const fields = createDraft(aiTable.fields());\n apply(aiTable, records, fields, action);\n aiTable.fields.update(() => {\n return finishDraft(fields);\n });\n aiTable.records.update(() => {\n return finishDraft(records);\n });\n }\n};\n","import {\n ActionName,\n AddRecordAction,\n AIRecordPath,\n UpdateFieldValueAction,\n AITable,\n AITableRecord,\n AIFieldValueIdPath,\n MoveRecordAction,\n RemoveRecordAction,\n AIRecordIdPath\n} from '../types';\nimport { AITableQueries } from '../utils';\n\nexport function updateFieldValue(aiTable: AITable, value: any, path: AIFieldValueIdPath) {\n const field = AITableQueries.getFieldValue(aiTable, path);\n if (field !== value) {\n const operation: UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue,\n fieldValue: field,\n newFieldValue: value,\n path\n };\n aiTable.apply(operation);\n }\n}\n\nexport function addRecord(aiTable: AITable, record: AITableRecord, path: AIRecordPath) {\n const operation: AddRecordAction = {\n type: ActionName.AddRecord,\n record,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function moveRecord(aiTable: AITable, path: AIRecordPath, newPath: AIRecordPath) {\n const operation: MoveRecordAction = {\n type: ActionName.MoveRecord,\n path,\n newPath\n };\n aiTable.apply(operation);\n}\n\nexport function removeRecord(aiTable: AITable, path: AIRecordIdPath) {\n const operation: RemoveRecordAction = {\n type: ActionName.RemoveRecord,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const RecordActions = {\n addRecord,\n updateFieldValue,\n moveRecord,\n removeRecord\n};\n","import { FieldActions } from './field';\nimport { GeneralActions } from './general';\nimport { RecordActions } from './record';\n\nexport const Actions = {\n ...GeneralActions,\n ...RecordActions,\n ...FieldActions\n};\n","import { ChangeDetectionStrategy, Component, computed, inject, Input, input, OnInit } from '@angular/core';\nimport { ThyPopoverRef } from 'ngx-tethys/popover';\nimport { Actions, AITable, AITableField, AITableQueries, AITableRecord } from '../../core';\n\n@Component({\n selector: 'abstract-edit-cell',\n template: ``,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport abstract class AbstractEditCellEditor<TValue, TFieldType extends AITableField = AITableField> implements OnInit {\n field = input.required<TFieldType>();\n\n record = input.required<AITableRecord>();\n\n @Input({ required: true }) aiTable!: AITable;\n\n modelValue!: TValue;\n\n protected thyPopoverRef = inject(ThyPopoverRef<AbstractEditCellEditor<TValue>>);\n\n ngOnInit(): void {\n this.modelValue = computed(() => {\n return AITableQueries.getFieldValue(this.aiTable, [this.record()._id, this.field()._id]);\n })();\n }\n\n updateFieldValue() {\n Actions.updateFieldValue(this.aiTable, this.modelValue, [this.record()._id, this.field()._id]);\n }\n\n closePopover() {\n this.thyPopoverRef?.close();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DateEntry, ThyDatePicker } from 'ngx-tethys/date-picker';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\nimport { ThyTimePickerModule } from 'ngx-tethys/time-picker';\n\n@Component({\n selector: 'date-time-cell-editor',\n template: `\n <thy-date-picker\n class=\"h-100\"\n thyTimestampPrecision=\"milliseconds\"\n thyPlaceHolder=\"选择时间\"\n [(ngModel)]=\"modelValue\"\n (ngModelChange)=\"updateValue()\"\n (thyOpenChange)=\"thyOpenChange($event)\"\n [thyAllowClear]=\"true\"\n [thyShowShortcut]=\"true\"\n [thyHasBackdrop]=\"false\"\n [thyShowTime]=\"dateShowTime()\"\n [thyOpen]=\"true\"\n [thyFormat]=\"dateFormat\"\n >\n </thy-date-picker>\n `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ThyDatePicker, ThyTimePickerModule],\n host: {\n class: 'date-time-cell-editor'\n }\n})\nexport class DateTimeCellEditorComponent extends AbstractEditCellEditor<DateEntry> {\n dateShowTime = input<boolean>(false);\n\n dateFormat = computed(() => {\n return this.dateShowTime() ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd';\n })();\n\n override ngOnInit(): void {\n super.ngOnInit();\n if (!this.modelValue && this.dateShowTime()) {\n this.modelValue = {\n date: 0,\n with_time: 1\n };\n }\n }\n\n updateValue() {\n this.updateFieldValue();\n this.closePopover();\n }\n\n thyOpenChange(isOpen: Boolean) {\n if (!isOpen) {\n this.closePopover();\n }\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyInputNumber } from 'ngx-tethys/input-number';\nimport { ThyAutofocusDirective, ThyEnterDirective } from 'ngx-tethys/shared';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\n\n@Component({\n selector: 'link-cell-editor',\n template: ``,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ThyAutofocusDirective, ThyEnterDirective, ThyInputNumber]\n})\nexport class LinkCellEditorComponent extends AbstractEditCellEditor<number> {\n updateValue() {\n this.updateFieldValue();\n this.closePopover();\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyInputNumber } from 'ngx-tethys/input-number';\nimport { ThyAutofocusDirective, ThyEnterDirective } from 'ngx-tethys/shared';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\n\n@Component({\n selector: 'number-cell-editor',\n template: `<thy-input-number\n class=\"h-100\"\n [thyAutoFocus]=\"true\"\n [(ngModel)]=\"modelValue\"\n (thyEnter)=\"updateValue()\"\n (thyBlur)=\"updateValue()\"\n /> `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ThyAutofocusDirective, ThyEnterDirective, ThyInputNumber],\n host: {\n class: 'number-cell-editor'\n }\n})\nexport class NumberCellEditorComponent extends AbstractEditCellEditor<number> {\n updateValue() {\n this.updateFieldValue();\n this.closePopover();\n }\n}\n","import { ChangeDetectionStrategy, Component, HostListener, OnInit } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThySlider, ThySliderSize, ThySliderType } from 'ngx-tethys/slider';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\n\nexport interface AITableProgressConfig {\n max?: number;\n min?: number;\n step?: number;\n progressType?: ThySliderType;\n suffix?: string;\n size?: ThySliderSize;\n}\n\n@Component({\n selector: 'progress-editor',\n template: `\n <thy-slider\n [(ngModel)]=\"modelValue\"\n [thyMax]=\"config?.max || 100\"\n [thyMin]=\"config?.min || 0\"\n [thyStep]=\"config?.step || 1\"\n [thyType]=\"config?.progressType || 'success'\"\n [thySize]=\"config?.size || 'md'\"\n (ngModelChange)=\"updateValue($event)\"\n (mousedown)=\"sliderMousedownHandler($event)\"\n ></thy-slider>\n <span class=\"progress-text\">{{ modelValue }}{{ config?.suffix || '%' }}</span>\n `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ThySlider],\n host: {\n class: 'grid-cell progress-editor',\n '[attr.type]': 'field().type',\n '[attr.fieldId]': 'field()._id',\n '[attr.recordId]': 'record()._id'\n }\n})\nexport class ProgressEditorComponent extends AbstractEditCellEditor<number> implements OnInit {\n config: Partial<AITableProgressConfig | undefined> = {\n max: 100,\n min: 0,\n step: 1,\n progressType: 'success',\n suffix: '%',\n size: 'md'\n };\n\n @HostListener('mousedown', ['$event'])\n mousedownHandler(event: Event) {\n event.preventDefault();\n }\n\n constructor() {\n super();\n }\n\n sliderMousedownHandler(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n updateValue(value: number) {\n this.updateFieldValue();\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyRate } from 'ngx-tethys/rate';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\n\n@Component({\n selector: 'rating-cell-editor',\n template: ` <thy-rate [(ngModel)]=\"modelValue\" (ngModelChange)=\"updateValue()\"></thy-rate> `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ThyRate],\n host: {\n class: 'd-flex align-items-center h-100 px-3'\n }\n})\nexport class RatingCellEditorComponent extends AbstractEditCellEditor<number> {\n updateValue() {\n this.updateFieldValue();\n }\n}\n","import { NgIf } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, inject, Renderer2 } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyInputDirective } from 'ngx-tethys/input';\nimport { ThyAutofocusDirective, ThyEnterDirective } from 'ngx-tethys/shared';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\n\n@Component({\n selector: 'text-cell-editor',\n template: `\n <textarea\n placeholder=\"\"\n rows=\"1\"\n thyInput\n [thyAutofocus]=\"true\"\n [(ngModel)]=\"modelValue\"\n (ngModelChange)=\"valueChange()\"\n (thyEnter)=\"updateValue()\"\n (blur)=\"updateValue()\"\n ></textarea>\n `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgIf, FormsModule, ThyAutofocusDirective, ThyInputDirective, ThyEnterDirective],\n host: {\n class: 'text-cell-editor'\n }\n})\nexport class TextCellEditorComponent extends AbstractEditCellEditor<string> implements AfterViewInit {\n private elementRef = inject(ElementRef);\n\n private render2 = inject(Renderer2);\n\n private maxHeight = 148;\n\n constructor() {\n super();\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.updateStyle();\n });\n }\n\n updateStyle() {\n const textarea = this.elementRef.nativeElement.querySelector('textarea');\n const height = textarea.scrollHeight < this.maxHeight ? textarea.scrollHeight : this.maxHeight;\n\n this.render2.setStyle(textarea, 'height', `${height}px`);\n this.render2.setStyle(textarea, 'min-height', `44px`);\n this.render2.setStyle(textarea, 'max-height', `${this.maxHeight}px`);\n this.render2.setStyle(textarea, 'resize', 'none');\n }\n\n valueChange() {\n this.updateStyle();\n }\n\n updateValue() {\n this.updateFieldValue();\n this.closePopover();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { ThyDot } from 'ngx-tethys/dot';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyTag } from 'ngx-tethys/tag';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\nimport { AITableField, AITableSelectOption, AITableSelectOptionStyle } from '../../../core';\nimport { AITableSelectField } from '../../../types';\n@Component({\n selector: 'select-option',\n templateUrl: './option.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'd-flex align-items-center select-option'\n },\n imports: [ThyTag, ThyIcon, ThyTooltipModule, ThyDot, ThyFlexibleText]\n})\nexport class SelectOptionComponent {\n field = input.required<AITableField>();\n\n displayOption = input.required<AITableSelectOption>();\n\n optionStyle = computed(() => {\n return (this.field() as AITableSelectField).settings.option_style || AITableSelectOptionStyle.tag;\n });\n\n AITableSelectOptionStyle = AITableSelectOptionStyle;\n}\n","@if (displayOption(); as displayOption) {\n @switch (optionStyle()) {\n @case (AITableSelectOptionStyle.dot) {\n @if (displayOption.bg_color) {\n <thy-dot [thyColor]=\"displayOption.bg_color\" [thySize]=\"'sm'\" class=\"mr-2\"></thy-dot>\n }\n <span thyFlexibleText [thyTooltipContent]=\"displayOption.text\">{{ displayOption.text }}</span>\n }\n @case (AITableSelectOptionStyle.tag) {\n @if (displayOption.bg_color || displayOption.color; as color) {\n <thy-tag thyTheme=\"fill\" thyShape=\"pill\" [thyColor]=\"color\">\n @if (displayOption['icon']) {\n <thy-icon class=\"text-white\" [thyIconName]=\"displayOption['icon']\"></thy-icon>\n }\n <span thyFlexibleText [thyTooltipContent]=\"displayOption.text\">{{ displayOption.text }}</span>\n </thy-tag>\n }\n }\n @case (AITableSelectOptionStyle.piece) {\n @if (displayOption.bg_color || displayOption.color; as color) {\n <thy-dot thyShape=\"square\" [thyColor]=\"color\" [thySize]=\"'sm'\" class=\"mr-2\"></thy-dot>\n }\n <span thyFlexibleText [thyTooltipContent]=\"displayOption.text\">{{ displayOption.text }}</span>\n }\n @default {\n @if (displayOption['icon']) {\n <thy-icon [thyIconName]=\"displayOption['icon']\" [style.color]=\"displayOption.color\"></thy-icon>\n }\n <span thyFlexibleText [thyTooltipContent]=\"displayOption.text\">{{ displayOption.text }}</span>\n }\n }\n}\n","import { NgForOf, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef, booleanAttribute, computed, inject, model } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyInput, ThyInputCount, ThyInputGroup, ThyInputDirective } from 'ngx-tethys/input';\nimport { ThyConfirmValidatorDirective, ThyUniqueCheckValidator, ThyFormValidatorConfig, ThyFormModule } from 'ngx-tethys/form';\nimport {\n ThyDropdownDirective,\n ThyDropdownMenuComponent,\n ThyDropdownMenuItemDirective,\n ThyDropdownMenuItemNameDirective,\n ThyDropdownMenuItemIconDirective\n} from 'ngx-tethys/dropdown';\nimport { ThyButton } from 'ngx-tethys/button';\nimport { AITable, AITableField, Actions, Fields, FieldsIncludeIsMultiple, FieldsMap, IsMultiple, createDefaultFieldName } from '../../core';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyPopoverRef } from 'ngx-tethys/popover';\nimport { ThyListItem } from 'ngx-tethys/list';\nimport { of } from 'rxjs';\nimport { ThyAutofocusDirective } from 'ngx-tethys/shared';\n\n@Component({\n selector: 'ai-table-field-property-editor',\n templateUrl: './field-property-editor.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgIf,\n NgForOf,\n FormsModule,\n ThyIcon,\n ThyInput,\n ThyInputGroup,\n ThyInputCount,\n ThyInputDirective,\n ThyConfirmValidatorDirective,\n ThyUniqueCheckValidator,\n ThyDropdownDirective,\n ThyDropdownMenuComponent,\n ThyDropdownMenuItemDirective,\n ThyDropdownMenuItemNameDirective,\n ThyDropdownMenuItemIconDirective,\n ThyButton,\n ThyFormModule,\n ThyListItem,\n NgTemplateOutlet,\n ThyAutofocusDirective\n ],\n host: {\n class: 'field-property-editor d-block pl-5 pr-5 pb-5 pt-4'\n },\n styles: [\n `\n :host {\n width: 350px;\n }\n `\n ]\n})\nexport class AITableFieldPropertyEditor {\n aiEditField = model.required<AITableField>();\n\n @Input({ required: true }) aiTable!: AITable;\n\n @Input() aiExternalTemplate: TemplateRef<any> | null = null;\n\n @Input({ transform: booleanAttribute }) isUpdate!: boolean;\n\n fieldType = computed(() => {\n if (FieldsIncludeIsMultiple.includes(this.aiEditField().type!)) {\n return Fields.find(item => item.type === this.aiEditField().type && !!(item.settings as IsMultiple)?.is_multiple === !!(this.aiEditField().settings as IsMultiple)?.is_multiple)!;\n }\n return FieldsMap[this.aiEditField().type];\n });\n\n fieldMaxLength = 32;\n\n validatorConfig: ThyFormValidatorConfig = {\n validationMessages: {\n fieldName: {\n required: '列名不能为空',\n thyUniqueCheck: '列名已存在'\n }\n }\n };\n\n selectableFields = Fields;\n\n protected thyPopoverRef = inject(ThyPopoverRef<AITableFieldPropertyEditor>);\n\n checkUniqueName = (fieldName: string) => {\n fieldName = fieldName?.trim();\n return of(!!this.aiTable.fields()?.find((field) => field.name === fieldName && this.aiEditField()?._id !== field._id));\n };\n\n selectFieldType(field: Partial<AITableField>) {\n this.aiEditField.update((item) => {\n const width = item.width ?? field.width;\n const settings = field.settings || {};\n const name = createDefaultFieldName(this.aiTable, field);\n return { ...item, ...field, width, name, settings };\n });\n }\n\n editFieldProperty() {\n if (this.isUpdate) {\n Actions.setField(this.aiTable, this.aiEditField(), [this.aiEditField()._id]);\n } else {\n Actions.addField(this.aiTable, this.aiEditField(), [this.aiTable.fields().length]);\n }\n this.thyPopoverRef.close();\n }\n\n cancel() {\n this.thyPopoverRef.close();\n }\n}\n","<form thyForm name=\"createPropertyForm\" [thyFormValidatorConfig]=\"validatorConfig\" thyLayout=\"vertical\">\n <thy-form-group thyLabelRequired thyLabelText=\"表格列名\">\n <thy-input-group>\n <input\n thyInput\n [thyAutofocus]=\"true\"\n name=\"fieldName\"\n [maxlength]=\"fieldMaxLength\"\n [(ngModel)]=\"aiEditField().name\"\n required\n placeholder=\"输入列名称\"\n [thyUniqueCheck]=\"checkUniqueName\"\n />\n <ng-template #suffix>\n <thy-input-count></thy-input-count>\n </ng-template>\n </thy-input-group>\n </thy-form-group>\n <thy-form-group thyLabelText=\"列类型\">\n <div class=\"ml-n5 mr-n5\">\n <thy-list-item [thyDropdown]=\"menu\" thyTrigger=\"hover\" thyPlacement=\"right\" class=\"justify-content-between\">\n <span>\n <thy-icon [thyIconName]=\"fieldType().icon\" class=\"text-desc mr-2\"></thy-icon>\n <span>{{ fieldType().name }}</span>\n </span>\n <thy-icon thyIconName=\"angle-right\" class=\"text-desc\"></thy-icon>\n </thy-list-item>\n </div>\n </thy-form-group>\n <ng-container *ngIf=\"aiExternalTemplate; else defaultTemplate\">\n <ng-container *ngTemplateOutlet=\"aiExternalTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultTemplate>\n <!-- TODO: 内部属性渲染 -->\n </ng-template>\n <thy-form-group-footer thyAlign=\"right\">\n <button thyButton=\"link-secondary\" (click)=\"cancel()\" thySize=\"sm\">取消</button>\n <button thyButton=\"primary\" (thyFormSubmit)=\"editFieldProperty()\" thySize=\"sm\">确定</button>\n </thy-form-group-footer>\n</form>\n\n<thy-dropdown-menu #menu>\n @for (item of selectableFields; track $index) {\n <a thyDropdownMenuItem href=\"javascript:;\" (click)=\"selectFieldType(item)\">\n <thy-icon [thyIconName]=\"item.icon!\"></thy-icon>\n <span thyDropdownMenuItemName>{{ item.name }}</span>\n </a>\n }\n</thy-dropdown-menu>\n","import { AITableFields, AITableRecords, FieldsMap } from '../core';\nimport { AITableGridData } from '../types';\n\nexport const buildGridData = (recordValue: AITableRecords, fieldsValue: AITableFields): AITableGridData => {\n const fields = fieldsValue.map((item) => {\n return {\n ...item,\n icon: item.icon || FieldsMap[item.type].icon,\n width: item.width || FieldsMap[item.type].width\n };\n });\n return {\n type: 'grid',\n fields,\n records: recordValue\n };\n};\n","import { computed, Signal } from '@angular/core';\nimport { AITableField, AITableFields, AITableRecord, AITableRecords } from '../core';\n\nexport function getRecordOrField(value: Signal<AITableRecords | AITableFields>, _id: string): Signal<AITableField | AITableRecord> {\n return computed(() => {\n return value().find((item) => item._id === _id)!;\n });\n}\n","import { Component, ChangeDetectionStrategy, Input, ElementRef, Signal } from '@angular/core';\nimport { AITableFieldMenuItem } from '../../types/field';\nimport { AITable, AITableField } from '../../core';\nimport {\n ThyDropdownMenuItemDirective,\n ThyDropdownMenuItemNameDirective,\n ThyDropdownMenuItemIconDirective,\n ThyDropdownMenuComponent\n} from 'ngx-tethys/dropdown';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyDivider } from 'ngx-tethys/divider';\nimport { getRecordOrField } from '../../utils';\n\n@Component({\n selector: 'field-menu',\n templateUrl: './field-menu.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ThyIcon,\n ThyDivider,\n ThyDropdownMenuComponent,\n ThyDropdownMenuItemDirective,\n ThyDropdownMenuItemNameDirective,\n ThyDropdownMenuItemIconDirective\n ]\n})\nexport class FieldMenu {\n @Input({ required: true }) fieldId!: string;\n\n @Input({ required: true }) aiTable!: AITable;\n\n @Input({ required: true }) fieldMenus!: AITableFieldMenuItem[];\n\n @Input() origin!: HTMLElement | ElementRef<any>;\n\n execute(menu: AITableFieldMenuItem) {\n const field = getRecordOrField(this.aiTable.fields, this.fieldId) as Signal<AITableField>;\n menu.exec && menu.exec(this.aiTable, field, this.origin);\n }\n}\n","@for (menu of fieldMenus; track index; let index = $index) {\n @if (menu.type === 'divider') {\n <thy-divider [thyStyle]=\"'solid'\"></thy-divider>\n } @else {\n <a thyDropdownMenuItem href=\"javascript:;\" (click)=\"execute(menu)\">\n <thy-icon [thyIconName]=\"menu.icon!\"></thy-icon>\n <span>{{ menu.name! }}</span>\n </a>\n }\n}\n","import { AITableFieldType } from '../core';\n\nexport const DEFAULT_COLUMN_WIDTH = 200;\n\nexport const MIN_COLUMN_WIDTH = 80;\n\nexport const DBL_CLICK_EDIT_TYPE = [\n AITableFieldType.text,\n AITableFieldType.number,\n AITableFieldType.select,\n AITableFieldType.date,\n AITableFieldType.member\n];\n\nexport const MOUSEOVER_EDIT_TYPE = [AITableFieldType.progress];\n\nexport const RowHeight = {\n Short: 32,\n Medium: 57,\n Tall: 104,\n ExtraTall: 152\n};\n","import { ElementRef, Injectable, ModelSignal, WritableSignal } from '@angular/core';\nimport { ThyPopover } from 'ngx-tethys/popover';\nimport { AITable, AITableField, AITableFields } from '../core';\nimport { AITableFieldPropertyEditor } from '../components';\nimport { AIFieldConfig } from '../types';\n\nexport const AI_TABLE_GRID_FIELD_SERVICE_MAP = new WeakMap<AITable, AITableGridFieldService>();\n\n@Injectable()\nexport class AITableGridFieldService {\n aiFieldConfig: AIFieldConfig | undefined;\n\n constructor(private thyPopover: ThyPopover) {}\n\n initAIFieldConfig(aiFieldConfig: AIFieldConfig | undefined) {\n this.aiFieldConfig = aiFieldConfig;\n }\n\n editFieldProperty(origin: HTMLElement | ElementRef<any>, aiTable: AITable, aiEditField: WritableSignal<AITableField>, isUpdate: boolean) {\n const component = this.aiFieldConfig?.fieldPropertyEditor ?? AITableFieldPropertyEditor;\n this.thyPopover.open(component, {\n origin: origin,\n manualClosure: true,\n placement: 'bottomLeft',\n initialState: {\n aiTable,\n aiEditField,\n isUpdate\n }\n });\n }\n}\n","import { Actions, AIFieldPath, AITable, AITableField, AITableQueries } from '../core';\nimport { AI_TABLE_GRID_FIELD_SERVICE_MAP } from '../services/field.service';\nimport { ElementRef, signal, Signal, WritableSignal } from '@angular/core';\nimport { AITableFieldMenuItem } from '../types';\n\nexport const DividerMenuItem = {\n type: 'divider'\n};\n\nexport const EditFieldPropertyItem = {\n type: 'editFieldProperty',\n name: '编辑列',\n icon: 'edit',\n exec: (aiTable: AITable, field: Signal<AITableField>, origin?: HTMLElement | ElementRef<any>) => {\n const fieldService = AI_TABLE_GRID_FIELD_SERVICE_MAP.get(aiTable);\n const copyField: WritableSignal<AITableField> = signal(JSON.parse(JSON.stringify(field())));\n origin && fieldService?.editFieldProperty(origin, aiTable, copyField, true);\n }\n};\n\nexport const RemoveFieldItem = {\n type: 'removeField',\n name: '删除列',\n icon: 'trash',\n exec: (aiTable: AITable, field: Signal<AITableField>) => {\n Actions.removeField(aiTable, [field()._id]);\n }\n};\n\nexport const DefaultFieldMenus: AITableFieldMenuItem[] = [EditFieldPropertyItem, RemoveFieldItem];\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { AITableFieldSettings, AITableSelectOption, MemberSettings, SelectSettings } from '../core';\nimport { AITableReferences, AITableSelection } from '../types';\n\n@Pipe({\n name: 'selectOption',\n standalone: true\n})\nexport class SelectOptionPipe implements PipeTransform {\n transform(_id: string, options: AITableSelectOption[]) {\n return options.length && options.find((item) => item._id === _id);\n }\n}\n\n@Pipe({\n name: 'selectOptions',\n standalone: true\n})\nexport class SelectOptionsPipe implements PipeTransform {\n transform(ids: string[], options: AITableSelectOption[] = []) {\n return (\n (ids.length &&\n ids.map((id: string) => {\n return options.find((item) => item._id === id);\n })) ||\n []\n );\n }\n}\n\n@Pipe({\n name: 'isSelectRecord',\n standalone: true\n})\nexport class IsSelectRecordPipe implements PipeTransform {\n transform(recordId: string, selection: AITableSelection) {\n return selection.selectedRecords.has(recordId);\n }\n}\n\n@Pipe({\n name: 'user',\n standalone: true\n})\nexport class UserPipe implements PipeTransform {\n transform(values: string[], references: AITableReferences) {\n return (\n (values.length &&\n values.map((item) => {\n return references.members[item] || {};\n })) ||\n []\n );\n }\n}\n\n@Pipe({\n name: 'selectSetting',\n standalone: true\n})\nexport class SelectSettingPipe implements PipeTransform {\n transform(settings: AITableFieldSettings) {\n return settings as SelectSettings;\n }\n}\n\n@Pipe({\n name: 'memberSetting',\n standalone: true\n})\nexport class MemberSettingPipe implements PipeTransform {\n transform(settings: AITableFieldSettings) {\n return settings as MemberSettings;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyDot } from 'ngx-tethys/dot';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThySelect } from 'ngx-tethys/select';\nimport { ThyOption } from 'ngx-tethys/shared';\nimport { ThyTag } from 'ngx-tethys/tag';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\nimport { SelectOptionPipe } from '../../../pipes';\nimport { AITableSelectField } from '../../../types';\nimport { SelectOptionComponent } from '../../cell-views/select/option.component';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\nimport { AITableSelectOptionStyle } from '../../../core';\n\n@Component({\n selector: 'select-cell-editor',\n templateUrl: './select-editor.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'd-block h-100 select-cell-editor',\n '[class.tag]': 'field()!.settings.option_style === AITableSelectOptionStyle.tag'\n },\n imports: [\n FormsModule,\n NgTemplateOutlet,\n ThySelect,\n ThyOption,\n ThyTag,\n ThyIcon,\n ThyTooltipModule,\n ThyDot,\n ThyFlexibleText,\n SelectOptionPipe,\n SelectOptionComponent\n ]\n})\nexport class SelectCellEditorComponent extends AbstractEditCellEditor<string, AITableSelectField> {\n selectOptions = computed(() => {\n return this.field().settings.options;\n });\n\n optionStyle = computed(() => {\n return (this.field() as AITableSelectField).settings.option_style || AITableSelectOptionStyle.tag;\n });\n\n AITableSelectOptionStyle = AITableSelectOptionStyle;\n\n constructor() {\n super();\n }\n\n updateValue(value: boolean) {\n if (!value) {\n this.updateFieldValue();\n this.closePopover();\n }\n }\n}\n","<thy-select\n [(ngModel)]=\"modelValue\"\n [thyAutoExpand]=\"true\"\n [thyAllowClear]=\"true\"\n [thyMode]=\"field().settings.is_multiple ? 'multiple' : ''\"\n [thyPreset]=\"'tag'\"\n (thyOnExpandStatusChange)=\"updateValue($event)\"\n>\n <ng-template #selectedDisplay let-option>\n @if (optionStyle() === AITableSelectOptionStyle.tag) {\n <select-option [field]=\"field()\" [displayOption]=\"option\"></select-option>\n } @else {\n <div thyTag class=\"mb-1 mr-1\">\n <select-option [field]=\"field()\" [displayOption]=\"option\"></select-option>\n </div>\n }\n </ng-template>\n @for (option of selectOptions(); track option._id) {\n <thy-option [thyValue]=\"option._id\" [thyRawValue]=\"option\" [thyShowOptionCustom]=\"true\" [thyLabelText]=\"option.text\">\n <select-option [field]=\"field()\" [displayOption]=\"option\"></select-option>\n </thy-option>\n }\n</thy-select>\n","import {\n DateTimeCellEditorComponent,\n LinkCellEditorComponent,\n NumberCellEditorComponent,\n ProgressEditorComponent,\n RatingCellEditorComponent,\n TextCellEditorComponent\n} from '../components';\nimport { SelectCellEditorComponent } from '../components/cell-editors/select/select-editor.component';\nimport { AITableFieldType } from '../core';\n\nexport const GRID_CELL_EDITOR_MAP: Partial<Record<AITableFieldType, any>> = {\n [AITableFieldType.text]: TextCellEditorComponent,\n [AITableFieldType.richText]: TextCellEditorComponent,\n [AITableFieldType.select]: SelectCellEditorComponent,\n [AITableFieldType.number]: NumberCellEditorComponent,\n [AITableFieldType.date]: DateTimeCellEditorComponent,\n [AITableFieldType.rate]: RatingCellEditorComponent,\n [AITableFieldType.link]: LinkCellEditorComponent,\n [AITableFieldType.progress]: ProgressEditorComponent\n};\n","import { DestroyRef, inject, Injectable, Signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ThyPopover } from 'ngx-tethys/popover';\nimport { debounceTime, fromEvent, Subject } from 'rxjs';\nimport { GRID_CELL_EDITOR_MAP } from '../constants/editor';\nimport { AITable, AITableField, AITableFieldType, AITableRecord } from '../core';\nimport { AITableGridCellRenderSchema } from '../types';\nimport { getRecordOrField } from '../utils';\nimport { Overlay } from '@angular/cdk/overlay';\n\n@Injectable()\nexport class AITableGridEventService {\n aiTable!: AITable;\n\n aiFieldRenderers?: Partial<Record<AITableFieldType, AITableGridCellRenderSchema>>;\n\n dblClickEvent$ = new Subject<MouseEvent>();\n\n mousedownEvent$ = new Subject<MouseEvent>();\n\n mouseoverEvent$ = new Subject<MouseEvent>();\n\n globalMouseoverEvent$ = new Subject<MouseEvent>();\n\n globalMousedownEvent$ = new Subject<MouseEvent>();\n\n private destroyRef = inject(DestroyRef);\n\n private overlay = inject(Overlay);\n\n private thyPopover = inject(ThyPopover);\n\n initialize(aiTable: AITable, aiFieldRenderers?: Partial<Record<AITableFieldType, AITableGridCellRenderSchema>>) {\n this.aiTable = aiTable;\n this.aiFieldRenderers = aiFieldRenderers;\n }\n\n registerEvents(element: HTMLElement) {\n fromEvent<MouseEvent>(element, 'dblclick')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n this.dblClickEvent$.next(event);\n });\n\n fromEvent<MouseEvent>(element, 'mouseover')\n .pipe(debounceTime(80), takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n this.mouseoverEvent$.next(event);\n });\n\n fromEvent<MouseEvent>(document, 'mouseover')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n this.globalMouseoverEvent$.next(event);\n });\n\n fromEvent<MouseEvent>(element, 'mousedown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n this.mousedownEvent$.next(event);\n });\n\n fromEvent<MouseEvent>(document, 'mousedown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n this.globalMousedownEvent$.next(event as MouseEvent);\n });\n }\n\n private getEditorComponent(type: AITableFieldType) {\n if (this.aiFieldRenderers && this.aiFieldRenderers[type]) {\n return this.aiFieldRenderers[type]!.editor;\n }\n return GRID_CELL_EDITOR_MAP[type];\n }\n\n openEdit(cellDom: HTMLElement) {\n const { x, y, width, height } = cellDom.getBoundingClientRect();\n const fieldId = cellDom.getAttribute('fieldId')!;\n const recordId = cellDom.getAttribute('recordId')!;\n const field = getRecordOrField(this.aiTable.fields, fieldId) as Signal<AITableField>;\n const record = getRecordOrField(this.aiTable.records, recordId) as Signal<AITableRecord>;\n const component = this.getEditorComponent(field().type);\n const ref = this.thyPopover.open(component, {\n origin: cellDom,\n originPosition: {\n x: x - 1,\n y: y + 1,\n width: width + 2,\n height: height + 2\n },\n width: width + 1 + 'px',\n height: height + 2 + 'px',\n placement: 'top',\n offset: -(height + 4),\n minWidth: width,\n initialState: {\n field: field,\n record: record,\n aiTable: this.aiTable\n },\n panelClass: 'grid-cell-editor',\n outsideClosable: false,\n hasBackdrop: false,\n manualClosure: true,\n animationDisabled: true,\n autoAdaptive: true,\n scrollStrategy: this.overlay.scrollStrategies.close()\n });\n return ref;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AITable } from '../core';\n\n@Injectable()\nexport class AITableGridSelectionService {\n aiTable!: AITable;\n\n constructor() {}\n\n initialize(aiTable: AITable) {\n this.aiTable = aiTable;\n }\n\n clearSelection() {\n this.aiTable.selection.set({\n selectedRecords: new Map(),\n selectedFields: new Map(),\n selectedCells: new Map()\n });\n }\n\n selectCell(recordId: string, fieldId: string) {\n this.clearSelection();\n this.aiTable.selection().selectedCells.set(recordId, { [fieldId]: true });\n }\n\n selectField(fieldId: string) {\n this.clearSelection();\n this.aiTable.selection().selectedFields.set(fieldId, true);\n }\n\n selectRecord(recordId: string) {\n if (this.aiTable.selection().selectedRecords.has(recordId)) {\n this.aiTable.selection().selectedRecords.delete(recordId);\n } else {\n this.aiTable.selection().selectedRecords.set(recordId, true);\n }\n this.aiTable.selection.set({\n selectedRecords: this.aiTable.selection().selectedRecords,\n selectedFields: new Map(),\n selectedCells: new Map()\n });\n }\n\n toggleSelectAll(checked: boolean) {\n this.clearSelection();\n if (checked) {\n this.aiTable.records().forEach((item) => {\n this.selectRecord(item._id);\n });\n }\n }\n\n updateSelect(event: MouseEvent) {\n const target = event?.target as HTMLElement;\n if (!target) {\n return;\n }\n const cellDom = target.closest('.grid-cell');\n const colDom = target.closest('.grid-field');\n const checkbox = target.tagName === 'INPUT' && (target as HTMLInputElement).type === 'checkbox' && target.closest('.grid-checkbox');\n const fieldAction = target.closest('.grid-field-action');\n if (cellDom) {\n const fieldId = cellDom.getAttribute('fieldId');\n const recordId = cellDom.getAttribute('recordId');\n fieldId && recordId && this.selectCell(recordId, fieldId);\n }\n if (colDom && !fieldAction) {\n const fieldId = colDom.getAttribute('fieldId');\n fieldId && this.selectField(fieldId);\n }\n if (!cellDom && !colDom && !checkbox) {\n this.clearSelection();\n }\n }\n}\n","import { CommonModule, NgClass, NgComponentOutlet, NgForOf, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n model,\n NgZone,\n OnInit,\n output,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { ThyAction } from 'ngx-tethys/action';\nimport { ThyAvatarModule } from 'ngx-tethys/avatar';\nimport { ThyCheckboxModule } from 'ngx-tethys/checkbox';\nimport { ThyDatePickerFormatPipe } from 'ngx-tethys/date-picker';\nimport { ThyDropdownDirective, ThyDropdownMenuComponent } from 'ngx-tethys/dropdown';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyPopoverModule, ThyPopoverRef } from 'ngx-tethys/popover';\nimport { ThyProgress } from 'ngx-tethys/progress';\nimport { ThyRate } from 'ngx-tethys/rate';\nimport { ThyStopPropagationDirective } from 'ngx-tethys/shared';\nimport { ThyTag } from 'ngx-tethys/tag';\nimport { mergeWith } from 'rxjs/operators';\nimport { ProgressEditorComponent, SelectOptionComponent } from './components';\nimport { FieldMenu } from './components/field-menu/field-menu.component';\nimport { AITableFieldPropertyEditor } from './components/field-property-editor/field-property-editor.component';\nimport { DBL_CLICK_EDIT_TYPE, DefaultFieldMenus, MOUSEOVER_EDIT_TYPE } from './constants';\nimport {\n Actions,\n AIPlugin,\n AITable,\n AITableChangeOptions,\n AITableFields,\n AITableFieldType,\n AITableRecords,\n AITableSelectOptionStyle,\n createAITable,\n createDefaultField,\n getDefaultRecord\n} from './core';\nimport { IsSelectRecordPipe, MemberSettingPipe, SelectOptionPipe, SelectOptionsPipe, SelectSettingPipe, UserPipe } from './pipes/grid.pipe';\nimport { AITableGridEventService } from './services/event.service';\nimport { AI_TABLE_GRID_FIELD_SERVICE_MAP, AITableGridFieldService } from './services/field.service';\nimport { AITableGridSelectionService } from './services/selection.service';\nimport { AIFieldConfig, AITableFieldMenuItem, AITableReferences } from './types';\nimport { buildGridData } from './utils';\n\n@Component({\n selector: 'ai-table-grid',\n templateUrl: './grid.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ai-table-grid'\n },\n imports: [\n NgForOf,\n NgClass,\n NgComponentOutlet,\n CommonModule,\n FormsModule,\n SelectOptionPipe,\n SelectOptionsPipe,\n ThyTag,\n ThyPopoverModule,\n ThyIcon,\n ThyRate,\n ThyProgress,\n AITableFieldPropertyEditor,\n ThyDatePickerFormatPipe,\n ThyFlexibleText,\n ThyStopPropagationDirective,\n FieldMenu,\n ThyAction,\n ThyDropdownDirective,\n ThyDropdownMenuComponent,\n ThyCheckboxModule,\n ProgressEditorComponent,\n ThyAvatarModule,\n NgTemplateOutlet,\n IsSelectRecordPipe,\n ProgressEditorComponent,\n SelectOptionComponent,\n UserPipe,\n SelectSettingPipe,\n MemberSettingPipe\n ],\n providers: [AITableGridEventService, AITableGridFieldService, AITableGridSelectionService]\n})\nexport class AITableGrid implements OnInit {\n aiRecords = model.required<AITableRecords>();\n\n aiFields = model.required<AITableFields>();\n\n aiFieldConfig = input<AIFieldConfig>();\n\n aiReadonly = input<boolean>();\n\n aiPlugins = input<AIPlugin[]>();\n\n aiReferences = input<AITableReferences>();\n\n AITableFieldType = AITableFieldType;\n\n AITableSelectOptionStyle = AITableSelectOptionStyle;\n\n aiTable!: AITable;\n\n isSelectedAll = computed(() => {\n return this.aiTable.selection().selectedRecords.size === this.aiRecords().length;\n });\n\n onChange = output<AITableChangeOptions>();\n\n aiTableInitialized = output<AITable>();\n\n fieldMenus!: AITableFieldMenuItem[];\n\n mouseoverRef!: ThyPopoverRef<any>;\n\n gridData = computed(() => {\n return buildGridData(this.aiRecords(), this.aiFields());\n });\n\n private ngZone = inject(NgZone);\n private elementRef = inject(ElementRef);\n private destroyRef = inject(DestroyRef);\n private aiTableGridFieldService = inject(AITableGridFieldService);\n private aiTableGridEventService = inject(AITableGridEventService);\n public aiTableGridSelectionService = inject(AITableGridSelectionService);\n\n ngOnInit(): void {\n this.initAITable();\n this.initService();\n this.buildFieldMenus();\n this.subscribeEvents();\n }\n\n initAITable() {\n this.aiTable = createAITable(this.aiRecords, this.aiFields);\n this.aiPlugins()?.forEach((plugin) => {\n this.aiTable = plugin(this.aiTable);\n });\n this.aiTableInitialized.emit(this.aiTable);\n this.aiTable.onChange = () => {\n this.onChange.emit({\n records: this.aiRecords(),\n fields: this.aiFields(),\n actions: this.aiTable.actions\n });\n };\n }\n\n initService() {\n this.aiTableGridEventService.initialize(this.aiTable, this.aiFieldConfig()?.fieldPropertyEditor);\n this.aiTableGridSelectionService.initialize(this.aiTable);\n this.aiTableGridEventService.registerEvents(this.elementRef.nativeElement);\n this.aiTableGridFieldService.initAIFieldConfig(this.aiFieldConfig());\n AI_TABLE_GRID_FIELD_SERVICE_MAP.set(this.aiTable, this.aiTableGridFieldService);\n }\n\n buildFieldMenus() {\n this.fieldMenus = this.aiFieldConfig()?.fieldMenus ?? DefaultFieldMenus;\n }\n\n addRecord() {\n Actions.addRecord(this.aiTable, getDefaultRecord(this.aiFields()), [this.aiRecords().length]);\n }\n\n selectRecord(recordId: string) {\n this.aiTableGridSelectionService.selectRecord(recordId);\n }\n\n toggleSelectAll(checked: boolean) {\n this.aiTableGridSelectionService.toggleSelectAll(checked);\n }\n\n addField(gridColumnBlank: HTMLElement) {\n const field = signal(createDefaultField(this.aiTable, AITableFieldType.text));\n this.aiTableGridFieldService.editFieldProperty(gridColumnBlank, this.aiTable, field, false);\n }\n\n private subscribeEvents() {\n this.ngZone.runOutsideAngular(() => {\n this.aiTableGridEventService.dblClickEvent$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n this.dblClick(event);\n });\n this.aiTableGridEventService.mousedownEvent$\n .pipe(mergeWith(this.aiTableGridEventService.globalMousedownEvent$), takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n this.aiTableGridSelectionService.updateSelect(event);\n });\n\n this.aiTableGridEventService.mouseoverEvent$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n this.mouseoverHandle(event);\n });\n this.aiTableGridEventService.globalMouseoverEvent$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n this.closeHoverCellEditor(event);\n });\n });\n }\n\n private dblClick(event: MouseEvent) {\n const cellDom = (event.target as HTMLElement).closest('.grid-cell') as HTMLElement;\n const type = cellDom && (cellDom.getAttribute('type')! as AITableFieldType);\n if (type && DBL_CLICK_EDIT_TYPE.includes(type)) {\n this.aiTableGridEventService.openEdit(cellDom);\n }\n }\n\n private mouseoverHandle(event: MouseEvent) {\n if (this.mouseoverRef) {\n this.mouseoverRef?.close();\n }\n const cellDom = (event.target as HTMLElement).closest('.grid-cell') as HTMLElement;\n const type = cellDom && (cellDom.getAttribute('type')! as AITableFieldType);\n if (type && MOUSEOVER_EDIT_TYPE.includes(type)) {\n this.mouseoverRef = this.aiTableGridEventService.openEdit(cellDom);\n }\n }\n\n private closeHoverCellEditor(e: MouseEvent) {\n if (this.mouseoverRef) {\n const hasGrid = e.target && (e.target as HTMLElement).closest('.ai-table-grid');\n const hasCellEditor = e.target && (e.target as HTMLElement).closest('.grid-cell-editor');\n if (!hasGrid && !hasCellEditor) {\n this.mouseoverRef.close();\n }\n }\n }\n}\n","<div class=\"grid-header d-flex\">\n <div class=\"grid-column-checkbox grid-cell grid-checkbox\">\n <label thyCheckbox thyLabelText=\"\" [ngModel]=\"isSelectedAll()\" (ngModelChange)=\"toggleSelectAll($event)\"></label>\n </div>\n @for (field of gridData().fields; track field._id) {\n <div\n class=\"grid-cell grid-field\"\n #fieldAction\n [attr.fieldId]=\"field._id\"\n [ngClass]=\"{ highlight: aiTable.selection().selectedFields.has(field._id) }\"\n [ngStyle]=\"{ width: field.width + 'px' }\"\n >\n <span class=\"text-truncate\">\n <thy-icon [thyIconName]=\"field.icon!\" class=\"mr-2 text-muted\"></thy-icon>\n <span>{{ field.name }}</span>\n </span>\n <a\n class=\"grid-field-action\"\n thyAction\n thyActiveClass=\"active\"\n thyIcon=\"more-vertical\"\n [thyDropdown]=\"fieldMenu\"\n href=\"javascript:;\"\n >\n <thy-dropdown-menu #fieldMenu>\n <field-menu [origin]=\"fieldAction\" [fieldId]=\"field._id\" [aiTable]=\"aiTable\" [fieldMenus]=\"fieldMenus\"></field-menu>\n </thy-dropdown-menu>\n </a>\n </div>\n }\n <div class=\"grid-column-blank cursor-pointer\" #gridColumnBlank (click)=\"addField(gridColumnBlank)\">\n <thy-icon thyIconName=\"plus\"></thy-icon>\n </div>\n</div>\n<div class=\"grid-body d-flex\">\n @for (record of gridData().records; track record._id; let index = $index) {\n <div class=\"grid-row d-flex\" [ngClass]=\"{ highlight: (record._id | isSelectRecord: aiTable.selection()) }\">\n <div class=\"grid-row-index grid-checkbox\">\n <label\n [ngClass]=\"(record._id | isSelectRecord: aiTable.selection()) ? 'checked-box' : 'unchecked-box'\"\n thyCheckbox\n thyLabelText=\"\"\n [ngModel]=\"record._id | isSelectRecord: aiTable.selection()\"\n (ngModelChange)=\"selectRecord(record._id)\"\n ></label>\n <span [ngClass]=\"(record._id | isSelectRecord: aiTable.selection()) ? 'grid-row-no-number' : 'grid-row-number'\">\n {{ index + 1 }}\n </span>\n </div>\n @for (field of gridData().fields; track field._id) {\n <div\n #cell\n class=\"grid-cell\"\n [ngClass]=\"{\n highlight: aiTable.selection().selectedCells.has(record._id) || aiTable.selection().selectedFields.has(field._id),\n selected: aiTable.selection().selectedCells.get(record._id)?.hasOwnProperty(field._id)\n }\"\n [attr.type]=\"[field.type]\"\n [attr.fieldId]=\"[field._id]\"\n [attr.recordId]=\"[record._id]\"\n [ngStyle]=\"{ width: field.width + 'px' }\"\n >\n @switch (field.type) {\n @case (AITableFieldType.select) {\n @let fieldValue = record.values[field._id];\n @let settings = field.settings! | selectSetting;\n @let options = settings['options'];\n @let optionStyle = settings['option_style'] || AITableSelectOptionStyle.tag;\n @let isTagStyle = optionStyle === AITableSelectOptionStyle.tag;\n\n @if (!settings['is_multiple'] && fieldValue | selectOption: options; as selectedOption) {\n @if (isTagStyle) {\n <select-option class=\"mb-1 mr-1\" [field]=\"field\" [displayOption]=\"selectedOption\"></select-option>\n } @else {\n <div thyTag class=\"mb-1 mr-1\">\n <select-option [field]=\"field\" [displayOption]=\"selectedOption\"></select-option>\n </div>\n }\n } @else {\n @let maxShowCount = 2;\n\n <div class=\"d-flex\">\n @if (fieldValue | selectOptions: options; as selectedOptions) {\n @for (option of selectedOptions; track option!._id; let i = $index) {\n @if (i + 1 <= maxShowCount) {\n @if (isTagStyle) {\n <select-option\n class=\"mb-1 mr-1\"\n [field]=\"field\"\n [displayOption]=\"option!\"\n ></select-option>\n } @else {\n <div thyTag class=\"mb-1 mr-1\">\n <select-option [field]=\"field\" [displayOption]=\"option!\"></select-option>\n </div>\n }\n }\n }\n\n @let selectedLength = selectedOptions.length || 0;\n @if (selectedOptions && maxShowCount < selectedLength) {\n @let shape = isTagStyle ? 'pill' : 'rectangle';\n @let isHidden = maxShowCount >= selectedLength;\n\n <thy-tag\n class=\"cursor-pointer\"\n [class.multi-property-value-hidden]=\"isHidden\"\n [thyShape]=\"shape\"\n >\n <span class=\"text-truncate\"> +{{ selectedLength - maxShowCount }} </span>\n </thy-tag>\n }\n }\n </div>\n }\n }\n @case (AITableFieldType.date) {\n {{ record.values[field._id] | thyDatePickerFormat }}\n }\n @case (AITableFieldType.updatedAt) {\n <div class=\"d-block user-select-none\">\n <span class=\"text-truncate\">\n {{ record.values[field._id] | thyDatePickerFormat: 'yyyy-MM-dd HH:mm' }}\n </span>\n </div>\n }\n @case (AITableFieldType.createdAt) {\n <div class=\"d-block user-select-none\">\n <span class=\"text-truncate\">\n {{ record.values[field._id] | thyDatePickerFormat: 'yyyy-MM-dd HH:mm' }}\n </span>\n </div>\n }\n @case (AITableFieldType.rate) {\n <thy-rate [ngModel]=\"record.values[field._id]\"></thy-rate>\n }\n @case (AITableFieldType.link) {\n <a\n class=\"d-block\"\n target=\"_blank\"\n [href]=\"record.values[field._id]?.url\"\n thyStopPropagation\n thyFlexibleText\n [thyTooltipContent]=\"record.values[field._id]?.text\"\n >\n {{ record.values[field._id]?.text }}\n </a>\n }\n @case (AITableFieldType.progress) {\n <thy-progress\n class=\"w-100\"\n [thyValue]=\"record.values[field._id] || 0\"\n [thySize]=\"record.values[field._id]?.config?.size || 'md'\"\n [thyMax]=\"record.values[field._id]?.config?.max || 100\"\n [thyType]=\"record.values[field._id]?.config?.progressType || 'success'\"\n >\n <span> {{ record.values[field._id] || 0 }}{{ record.values[field._id]?.config?.suffix || '%' }} </span>\n </thy-progress>\n }\n @case (AITableFieldType.member) {\n @let settings = field.settings! | memberSetting;\n\n @if (!settings!['is_multiple']) {\n @let recordValues = record.values[field._id] | user: aiReferences()!;\n\n @if (recordValues && recordValues.length) {\n <thy-avatar\n [thyName]=\"recordValues[0].display_name!\"\n [thySrc]=\"recordValues[0].avatar!\"\n thySize=\"xs\"\n thyShowName=\"true\"\n ></thy-avatar>\n }\n } @else {\n @let recordValues = record.values[field._id] | user: aiReferences()!;\n\n <thy-avatar-list thyAvatarSize=\"xs\">\n @for (item of recordValues; track $index) {\n <thy-avatar [thyName]=\"item.display_name!\" [thySrc]=\"item.avatar!\"></thy-avatar>\n }\n </thy-avatar-list>\n }\n }\n @case (AITableFieldType.createdBy) {\n @let recordValues = record.values[field._id] | user: aiReferences()!;\n\n @if (recordValues && recordValues.length) {\n <thy-avatar\n [thyName]=\"recordValues[0].display_name!\"\n [thySrc]=\"recordValues[0].avatar!\"\n thySize=\"xs\"\n thyShowName=\"true\"\n ></thy-avatar>\n }\n }\n @case (AITableFieldType.updatedBy) {\n @let recordValues = record.values[field._id] | user: aiReferences()!;\n\n @if (recordValues && recordValues.length) {\n <thy-avatar\n [thyName]=\"recordValues[0].display_name!\"\n [thySrc]=\"recordValues[0].avatar!\"\n thySize=\"xs\"\n thyShowName=\"true\"\n ></thy-avatar>\n }\n }\n @default {\n <span class=\"text-truncate\"> {{ record.values[field._id] }}</span>\n }\n }\n <div class=\"autofill-container\"></div>\n </div>\n }\n <div class=\"grid-column-blank\"></div>\n </div>\n }\n <div class=\"grid-row-insert grid-row cursor-pointer\" (click)=\"addRecord()\">\n <thy-icon thyIconName=\"plus\"></thy-icon>\n </div>\n</div>\n\n<div #activeBorder class=\"active-border\"></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"ai-table-grid.mjs","sources":["../../../packages/grid/src/core/types/core.ts","../../../packages/grid/src/core/types/action.ts","../../../packages/grid/src/core/utils/id-creator.ts","../../../packages/grid/src/core/constants/field.ts","../../../packages/grid/src/core/utils/field.ts","../../../packages/grid/src/core/utils/weak-map.ts","../../../packages/grid/src/core/utils/common.ts","../../../packages/grid/src/core/utils/record.ts","../../../packages/grid/src/core/utils/queries.ts","../../../packages/grid/src/core/action/field.ts","../../../packages/grid/src/core/action/general.ts","../../../packages/grid/src/core/action/record.ts","../../../packages/grid/src/core/action/index.ts","../../../packages/grid/src/components/cell-editors/abstract-cell-editor.component.ts","../../../packages/grid/src/components/cell-editors/date/date-editor.component.ts","../../../packages/grid/src/components/cell-editors/link/number-editor.component.ts","../../../packages/grid/src/components/cell-editors/number/number-editor.component.ts","../../../packages/grid/src/components/cell-editors/progress/progress-editor.component.ts","../../../packages/grid/src/components/cell-editors/rating/rating-editor.component.ts","../../../packages/grid/src/components/cell-editors/text/text-editor.component.ts","../../../packages/grid/src/components/cell-views/select/option.component.ts","../../../packages/grid/src/components/cell-views/select/option.component.html","../../../packages/grid/src/components/field-property-editor/field-property-editor.component.ts","../../../packages/grid/src/components/field-property-editor/field-property-editor.component.html","../../../packages/grid/src/components/field-menu/field-menu.component.ts","../../../packages/grid/src/components/field-menu/field-menu.component.html","../../../packages/grid/src/constants/grid.ts","../../../packages/grid/src/services/field.service.ts","../../../packages/grid/src/constants/field.ts","../../../packages/grid/src/pipes/grid.pipe.ts","../../../packages/grid/src/components/cell-editors/select/select-editor.component.ts","../../../packages/grid/src/components/cell-editors/select/select-editor.component.html","../../../packages/grid/src/constants/editor.ts","../../../packages/grid/src/services/event.service.ts","../../../packages/grid/src/services/selection.service.ts","../../../packages/grid/src/grid.component.ts","../../../packages/grid/src/grid.component.html","../../../packages/grid/src/ai-table-grid.ts"],"sourcesContent":["import { Signal, WritableSignal } from '@angular/core';\nimport { Id } from 'ngx-tethys/types';\nimport { AITableSelection } from '../../types';\nimport { AITableAction } from './action';\n\nexport enum AITableFieldType {\n text = 'text', // 包含多行文本\n richText = 'rich_text', // 包含多行文本\n select = 'select', // 包含单选和多选\n number = 'number',\n date = 'date',\n member = 'member', // 包含单个和多个\n // cascadeSelect = 'cascade_select', // 包含单选和多选,参数复杂后续再进行设计\n progress = 'progress',\n rate = 'rate',\n link = 'link',\n createdAt = 'created_at',\n updatedAt = 'updated_at',\n createdBy = 'created_by',\n updatedBy = 'updated_by'\n}\n\nexport enum AITableStatType {\n None = 0,\n CountAll = 1,\n Empty = 2,\n Filled = 3,\n Unique = 4,\n PercentEmpty = 5,\n PercentFilled = 6,\n PercentUnique = 7,\n Sum = 8,\n Average = 9,\n Max = 10,\n Min = 11,\n DateRangeOfDays = 12,\n DateRangeOfMonths = 13,\n Checked = 14,\n UnChecked = 15,\n PercentChecked = 16,\n PercentUnChecked = 17\n}\n\nexport interface AITableFieldOption {\n name: string;\n type: AITableFieldType;\n icon: string;\n width: number;\n settings?: AITableFieldSettings;\n}\n\nexport interface AITableField {\n _id: string;\n name: string;\n type: AITableFieldType;\n icon?: string;\n width?: number;\n hidden?: boolean;\n frozen?: boolean;\n stat_type?: AITableStatType;\n settings?: AITableFieldSettings;\n}\n\nexport type AITableFieldSettings = TextSettings | RichTextSettings | SelectSettings | MemberSettings;\n\nexport interface TextSettings {}\n\nexport interface RichTextSettings {}\n\nexport interface SelectSettings extends IsMultiple {\n option_style?: AITableSelectOptionStyle;\n options: AITableSelectOption[];\n}\n\nexport interface MemberSettings extends IsMultiple {}\n\nexport interface IsMultiple {\n is_multiple?: boolean;\n}\n\nexport interface AITableSelectOption {\n _id: string;\n text: string;\n icon?: string;\n color?: string;\n bg_color?: string;\n}\n\nexport enum AITableSelectOptionStyle {\n text = 1,\n tag = 2,\n dot = 3,\n piece = 4\n}\n\nexport type TextFieldValue = string;\n\nexport type SelectFieldValue = Id[]; // 数字\n\nexport type NumberFieldValue = number;\n\nexport type DateFieldValue = { timestamp: number }; // 时间戳\n\nexport type MemberFieldValue = Id[];\n\nexport type ProgressFieldValue = number; // [0,1]\n\nexport type RateFieldValue = 1 | 2 | 3 | 4 | 5;\n\nexport type FieldValue =\n | TextFieldValue\n | SelectFieldValue\n | NumberFieldValue\n | DateFieldValue\n | MemberFieldValue\n | ProgressFieldValue\n | RateFieldValue\n | any;\n\nexport interface AITableRecord {\n _id: string;\n values: Record<string, FieldValue>;\n}\n\nexport type AITableRecords = AITableRecord[];\n\nexport type AITableFields = AITableField[];\n\nexport interface AITableValue {\n records: AITableRecords;\n fields: AITableFields;\n}\n\nexport interface AITable {\n records: WritableSignal<AITableRecords>;\n fields: WritableSignal<AITableFields>;\n actions: AITableAction[];\n selection: WritableSignal<AITableSelection>;\n recordsMap: Signal<{ [kay: string]: AITableRecord }>;\n fieldsMap: Signal<{ [kay: string]: AITableField }>;\n onChange: () => void;\n apply: (action: AITableAction) => void;\n}\n\nexport interface AITableChangeOptions {\n records: AITableRecord[];\n fields: AITableField[];\n actions: AITableAction[];\n}\n\nexport type AIPlugin = (aiTable: AITable) => AITable;\n","import { AITableField, AITableRecord } from './core';\n\nexport type AIRecordPath = [number];\n\nexport type AIRecordIdPath = [string];\n\nexport type AIFieldPath = [number];\n\nexport type AIFieldIdPath = [string];\n\nexport type AIFieldValueIdPath = [string, string];\n\nexport type Path = AIRecordPath | AIFieldPath | AIFieldIdPath | AIRecordIdPath | AIFieldValueIdPath;\n\nexport enum ActionName {\n UpdateFieldValue = 'update_field_value',\n AddRecord = 'add_record',\n AddField = 'add_field',\n MoveField = 'move_field',\n MoveRecord = 'move_record',\n RemoveField = 'remove_field',\n RemoveRecord = 'remove_record',\n SetField = 'set_field'\n}\n\nexport enum ExecuteType {\n Execute,\n Undo,\n Redo\n}\n\nexport type UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue;\n path: AIFieldValueIdPath;\n fieldValue: any;\n newFieldValue: any;\n};\n\nexport type AddRecordAction = {\n type: ActionName.AddRecord;\n path: AIRecordPath;\n record: AITableRecord;\n};\n\nexport type AddFieldAction = {\n type: ActionName.AddField;\n path: AIFieldPath;\n field: AITableField;\n};\n\nexport type MoveFieldAction = {\n type: ActionName.MoveField;\n path: AIFieldPath;\n newPath: AIFieldPath;\n};\n\nexport type MoveRecordAction = {\n type: ActionName.MoveRecord;\n path: AIRecordPath;\n newPath: AIRecordPath;\n};\n\nexport type RemoveFieldAction = {\n type: ActionName.RemoveField;\n path: AIFieldIdPath;\n};\n\nexport type RemoveRecordAction = {\n type: ActionName.RemoveRecord;\n path: AIRecordIdPath;\n};\n\nexport type SetFieldAction = {\n type: ActionName.SetField;\n path: AIFieldIdPath;\n properties: Partial<AITableField>;\n newProperties: Partial<AITableField>;\n};\n\nexport type AITableAction =\n | UpdateFieldValueAction\n | AddRecordAction\n | AddFieldAction\n | RemoveRecordAction\n | RemoveFieldAction\n | SetFieldAction\n | MoveFieldAction\n | MoveRecordAction;\n","import ObjectID from 'bson-objectid';\n\nexport function idCreator() {\n return ObjectID().toHexString();\n}\n","import { AITableFieldOption, AITableFieldType } from '../types';\n\nexport const FieldOptions: AITableFieldOption[] = [\n {\n type: AITableFieldType.text,\n name: '单行文本',\n icon: 'font',\n width: 300\n },\n // 多行文本\n {\n type: AITableFieldType.select,\n name: '单选',\n icon: 'check-circle',\n width: 200\n },\n {\n type: AITableFieldType.select,\n name: '多选',\n icon: 'list-check',\n width: 200,\n settings: {\n is_multiple: true\n }\n },\n {\n type: AITableFieldType.number,\n name: '数字',\n icon: 'hashtag',\n width: 200\n },\n {\n type: AITableFieldType.date,\n name: '日期',\n icon: 'calendar',\n width: 200\n },\n {\n type: AITableFieldType.member,\n name: '成员',\n icon: 'user',\n width: 200,\n settings: {\n is_multiple: true\n }\n },\n // 级联单选\n // 级联多选\n {\n type: AITableFieldType.progress,\n name: '进度',\n icon: 'progress',\n width: 200\n },\n {\n type: AITableFieldType.rate,\n name: '评分',\n icon: 'star-circle',\n width: 200\n },\n {\n type: AITableFieldType.link,\n name: '链接',\n icon: 'link-insert',\n width: 300\n },\n {\n type: AITableFieldType.createdBy,\n name: '创建人',\n icon: 'user',\n width: 200\n },\n {\n type: AITableFieldType.createdAt,\n name: '创建时间',\n icon: 'calendar',\n width: 200\n },\n {\n type: AITableFieldType.updatedBy,\n name: '更新人',\n icon: 'user',\n width: 200\n },\n {\n type: AITableFieldType.updatedAt,\n name: '更新时间',\n icon: 'calendar',\n width: 200\n }\n];","import { FieldOptions } from '../constants/field';\nimport { AITable, AITableField, AITableFieldOption, AITableFieldType, IsMultiple } from '../types';\nimport { idCreator } from './id-creator';\n\nexport function getDefaultFieldValue(field: AITableField) {\n if ([AITableFieldType.select, AITableFieldType.member, AITableFieldType.createdBy, AITableFieldType.updatedBy].includes(field.type)) {\n return [];\n }\n return '';\n}\n\nexport function createDefaultFieldName(aiTable: AITable, field: AITableFieldOption) {\n const fieldOption = getFieldOptionByField(field);\n if(fieldOption){\n const count = aiTable.fields().filter((item) => {\n return isSameFieldOption(field, item)\n }).length;\n return count === 0 ? fieldOption.name :fieldOption.name + ' ' + count;\n }\n return FieldOptions[0].name;\n}\n\nexport function getFieldOptionByField(field: Partial<AITableField>){\n return FieldOptions.find(item=> isSameFieldOption(item, field));\n}\n\nexport function isSameFieldOption(fieldOption: AITableFieldOption, field: Partial<AITableField>): boolean {\n return fieldOption.type === field.type && (fieldOption.type === AITableFieldType.select ? !!(fieldOption.settings as IsMultiple)?.is_multiple === !!(field.settings as IsMultiple)?.is_multiple : true)\n}\n\nexport function createDefaultField(aiTable: AITable, type: AITableFieldType = AITableFieldType.text) {\n const fieldOption = FieldOptions.find(item=> item.type === type)!;\n return { _id: idCreator(), type, name: createDefaultFieldName(aiTable, fieldOption) };\n}\n","import { AITable } from '../types';\n\nexport const FLUSHING = new WeakMap<AITable, boolean>();\n","import { Actions } from '../action';\nimport { AITable, AITableAction, AITableField, AITableFields, AITableRecord, AITableRecords, Path } from '../types';\nimport { FLUSHING } from './weak-map';\nimport { WritableSignal, computed, signal } from '@angular/core';\n\nexport function createAITable(records: WritableSignal<AITableRecords>, fields: WritableSignal<AITableFields>): AITable {\n const aiTable: AITable = {\n records,\n fields,\n actions: [],\n selection: signal({\n selectedRecords: new Map(),\n selectedFields: new Map(),\n selectedCells: new Map()\n }),\n recordsMap: computed(() => {\n return records().reduce(\n (object, item) => {\n object[item._id] = item;\n return object;\n },\n {} as { [kay: string]: AITableRecord }\n );\n }),\n fieldsMap: computed(() => {\n return fields().reduce(\n (object, item) => {\n object[item._id] = item;\n return object;\n },\n {} as { [kay: string]: AITableField }\n );\n }),\n onChange: () => {},\n apply: (action: AITableAction) => {\n aiTable.actions.push(action);\n Actions.transform(aiTable, action);\n\n if (!FLUSHING.get(aiTable)) {\n FLUSHING.set(aiTable, true);\n Promise.resolve().then(() => {\n FLUSHING.set(aiTable, false);\n aiTable.onChange();\n aiTable.actions = [];\n });\n }\n }\n };\n return aiTable;\n}\n\nexport function isPathEqual(path: Path, another: Path): boolean {\n return path.length === another.length && path.every((n, i) => n === another[i]);\n}","import { AITableFields, AITableRecord } from '../types';\nimport { getDefaultFieldValue } from './field';\nimport { idCreator } from './id-creator';\n\nexport function getDefaultRecord(fields: AITableFields) {\n const newRow: AITableRecord = {\n _id: idCreator(),\n values: {}\n };\n fields.map((item) => {\n newRow.values[item._id] = getDefaultFieldValue(item);\n });\n return newRow;\n}\n","import { isUndefinedOrNull } from 'ngx-tethys/util';\nimport { AITable, AITableField, AITableRecord, AIFieldValueIdPath, AIRecordPath, AIFieldPath, AIFieldIdPath } from '../types';\n\nexport const AITableQueries = {\n findRecordPath(aiTable: AITable, record: AITableRecord) {\n const recordIndex = record && aiTable.records().indexOf(record);\n if (!isUndefinedOrNull(recordIndex) && recordIndex > -1) {\n return [recordIndex] as AIRecordPath;\n }\n throw new Error(`can not find the record path: ${JSON.stringify({ ...(record || {}) })}`);\n },\n findFieldPath(aiTable: AITable, field: AITableField) {\n const fieldIndex = field && aiTable.fields().indexOf(field);\n if (!isUndefinedOrNull(fieldIndex) && fieldIndex > -1) {\n return [fieldIndex] as AIFieldPath;\n }\n throw new Error(`can not find the field path: ${JSON.stringify({ ...(field || {}) })}`);\n },\n getFieldValue(aiTable: AITable, path: AIFieldValueIdPath): any {\n if (!aiTable) {\n throw new Error(`aiTable does not exist`);\n }\n if (!aiTable.records()) {\n throw new Error(`aiTable has no records`);\n }\n if (!aiTable.fields()) {\n throw new Error(`aiTable has no fields`);\n }\n if (!path) {\n throw new Error(`path does not exist as path [${path}]`);\n }\n const recordIndex = aiTable.records().findIndex((item) => item._id === path[0]);\n if (recordIndex < 0) {\n throw new Error(`can not find record at path [${path}]`);\n }\n return aiTable.records()[recordIndex].values[path[1]];\n },\n\n getField(aiTable: AITable, path: AIFieldIdPath): AITableField | undefined {\n if (!aiTable) {\n throw new Error(`aiTable does not exist`);\n }\n if (!path) {\n throw new Error(`path does not exist as path [${path}]`);\n }\n return aiTable.fields().find(item=> item._id === path[0]);\n },\n\n getRecord(aiTable: AITable, path: AIRecordPath): AITableRecord {\n if (!aiTable) {\n throw new Error(`aiTable does not exist`);\n }\n if (!path) {\n throw new Error(`path does not exist as path [${path}]`);\n }\n return aiTable.records()[path[0]];\n }\n};\n","import {\n ActionName,\n AddFieldAction,\n AIFieldIdPath,\n AIFieldPath,\n AITable,\n AITableField,\n MoveFieldAction,\n RemoveFieldAction,\n SetFieldAction\n} from '../types';\nimport { AITableQueries } from '../utils';\n\nexport function addField(aiTable: AITable, field: AITableField, path: AIFieldPath) {\n const operation: AddFieldAction = {\n type: ActionName.AddField,\n field,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function moveField(aiTable: AITable, path: AIFieldPath, newPath: AIFieldPath) {\n const operation: MoveFieldAction = {\n type: ActionName.MoveField,\n path,\n newPath\n };\n aiTable.apply(operation);\n}\n\nexport function removeField(aiTable: AITable, path: AIFieldIdPath) {\n const operation: RemoveFieldAction = {\n type: ActionName.RemoveField,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function setField<T extends AITableField = AITableField>(aiTable: AITable, value: Partial<T>, path: AIFieldIdPath) {\n const field = AITableQueries.getField(aiTable, path) as T;\n if (field) {\n const properties: Partial<T> = {};\n const newProperties: Partial<T> = {};\n for (const key in value) {\n const k = key as keyof T;\n if (JSON.stringify(field[k]) !== JSON.stringify(value[k])) {\n if (field.hasOwnProperty(k)) {\n properties[k] = field[k] as any;\n }\n if (newProperties[k] !== null) {\n newProperties[k] = value[k] as any;\n }\n }\n }\n\n const operation: SetFieldAction = {\n type: ActionName.SetField,\n properties,\n newProperties,\n path\n };\n\n aiTable.apply(operation);\n }\n}\n\nexport const FieldActions = {\n addField,\n moveField,\n removeField,\n setField\n};\n","import { ActionName, AITable, AITableAction, AITableField, AITableFields, AITableRecords } from '../types';\nimport { createDraft, finishDraft } from 'immer';\nimport { getDefaultFieldValue, isPathEqual } from '../utils';\n\nconst apply = (aiTable: AITable, records: AITableRecords, fields: AITableFields, action: AITableAction) => {\n switch (action.type) {\n case ActionName.UpdateFieldValue: {\n const [recordId, fieldId] = action.path;\n if (recordId && fieldId) {\n const recordIndex = aiTable.records().findIndex((item) => item._id === recordId);\n records[recordIndex].values[fieldId] = action.newFieldValue;\n }\n break;\n }\n case ActionName.AddRecord: {\n const [recordIndex] = action.path;\n if (recordIndex > -1) {\n records.splice(recordIndex, 0, action.record);\n }\n break;\n }\n case ActionName.AddField: {\n const [fieldIndex] = action.path;\n if (fieldIndex > -1) {\n const newField = action.field;\n fields.splice(fieldIndex, 0, newField);\n const newRecord = {\n [newField._id]: getDefaultFieldValue(action.field)\n };\n records.forEach((item) => {\n item.values = {\n ...item.values,\n ...newRecord\n };\n });\n }\n\n break;\n }\n case ActionName.MoveRecord: {\n if (isPathEqual(action.path, action.newPath)) {\n return;\n }\n const record = records[action.path[0]];\n records.splice(action.path[0], 1);\n records.splice(action.newPath[0], 0, record);\n break;\n }\n case ActionName.MoveField: {\n if (isPathEqual(action.path, action.newPath)) {\n return;\n }\n const field = fields[action.path[0]];\n fields.splice(action.path[0], 1);\n fields.splice(action.newPath[0], 0, field);\n\n break;\n }\n case ActionName.RemoveField: {\n const [fieldId] = action.path;\n const fieldIndex = aiTable.fields().findIndex((item) => item._id === fieldId);\n if (fieldIndex > -1) {\n fields.splice(fieldIndex, 1);\n records.forEach((item) => {\n delete item.values[fieldId];\n });\n }\n break;\n }\n case ActionName.RemoveRecord: {\n const [recordId] = action.path;\n const recordIndex = aiTable.records().findIndex((item) => item._id === recordId);\n if (recordIndex > -1) {\n records.splice(recordIndex, 1);\n }\n break;\n }\n\n case ActionName.SetField: {\n const field = fields.find((item) => item._id === action.path[0]) as AITableField;\n if (field) {\n for (const key in action.newProperties) {\n const k = key as keyof AITableField;\n const value = action.newProperties[k];\n if (value == null) {\n delete field[k];\n } else {\n (field[k] as any) = value;\n }\n }\n\n // properties that were previously defined, but are now missing, must be deleted\n for (const key in action.properties) {\n if (!action.newProperties.hasOwnProperty(key)) {\n delete field[<keyof AITableField>key];\n }\n }\n }\n break;\n }\n }\n return {\n records,\n fields\n };\n};\n\nexport const GeneralActions = {\n transform(aiTable: AITable, action: AITableAction): void {\n const records = createDraft(aiTable.records());\n const fields = createDraft(aiTable.fields());\n apply(aiTable, records, fields, action);\n aiTable.fields.update(() => {\n return finishDraft(fields);\n });\n aiTable.records.update(() => {\n return finishDraft(records);\n });\n }\n};\n","import {\n ActionName,\n AddRecordAction,\n AIRecordPath,\n UpdateFieldValueAction,\n AITable,\n AITableRecord,\n AIFieldValueIdPath,\n MoveRecordAction,\n RemoveRecordAction,\n AIRecordIdPath\n} from '../types';\nimport { AITableQueries } from '../utils';\n\nexport function updateFieldValue(aiTable: AITable, value: any, path: AIFieldValueIdPath) {\n const field = AITableQueries.getFieldValue(aiTable, path);\n if (field !== value) {\n const operation: UpdateFieldValueAction = {\n type: ActionName.UpdateFieldValue,\n fieldValue: field,\n newFieldValue: value,\n path\n };\n aiTable.apply(operation);\n }\n}\n\nexport function addRecord(aiTable: AITable, record: AITableRecord, path: AIRecordPath) {\n const operation: AddRecordAction = {\n type: ActionName.AddRecord,\n record,\n path\n };\n aiTable.apply(operation);\n}\n\nexport function moveRecord(aiTable: AITable, path: AIRecordPath, newPath: AIRecordPath) {\n const operation: MoveRecordAction = {\n type: ActionName.MoveRecord,\n path,\n newPath\n };\n aiTable.apply(operation);\n}\n\nexport function removeRecord(aiTable: AITable, path: AIRecordIdPath) {\n const operation: RemoveRecordAction = {\n type: ActionName.RemoveRecord,\n path\n };\n aiTable.apply(operation);\n}\n\nexport const RecordActions = {\n addRecord,\n updateFieldValue,\n moveRecord,\n removeRecord\n};\n","import { FieldActions } from './field';\nimport { GeneralActions } from './general';\nimport { RecordActions } from './record';\n\nexport const Actions = {\n ...GeneralActions,\n ...RecordActions,\n ...FieldActions\n};\n","import { ChangeDetectionStrategy, Component, computed, inject, Input, OnInit } from '@angular/core';\nimport { ThyPopoverRef } from 'ngx-tethys/popover';\nimport { Actions, AITable, AITableField, AITableQueries } from '../../core';\n\n@Component({\n selector: 'abstract-edit-cell',\n template: ``,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport abstract class AbstractEditCellEditor<TValue, TFieldType extends AITableField = AITableField> implements OnInit {\n @Input({ required: true }) aiTable!: AITable;\n\n @Input({ required: true }) fieldId!: string;\n\n @Input({ required: true }) recordId!: string;\n\n modelValue!: TValue;\n\n field = computed(() => {\n return this.aiTable.fieldsMap()[this.fieldId] as TFieldType;\n });\n\n record = computed(() => {\n return this.aiTable.recordsMap()[this.recordId];\n });\n\n protected thyPopoverRef = inject(ThyPopoverRef<AbstractEditCellEditor<TValue>>);\n\n ngOnInit(): void {\n this.modelValue = computed(() => {\n return AITableQueries.getFieldValue(this.aiTable, [this.record()._id, this.field()._id]);\n })();\n }\n\n updateFieldValue() {\n Actions.updateFieldValue(this.aiTable, this.modelValue, [this.record()._id, this.field()._id]);\n }\n\n closePopover() {\n this.thyPopoverRef?.close();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyDatePicker } from 'ngx-tethys/date-picker';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\nimport { ThyTimePickerModule } from 'ngx-tethys/time-picker';\nimport { Actions, AITableQueries, DateFieldValue } from '../../../core';\n\n@Component({\n selector: 'date-cell-editor',\n template: `\n <thy-date-picker\n class=\"h-100\"\n thyTimestampPrecision=\"seconds\"\n thyPlaceHolder=\"选择时间\"\n [ngModel]=\"modelValue.timestamp\"\n (ngModelChange)=\"updateValue($event)\"\n (thyOpenChange)=\"thyOpenChange($event)\"\n [thyAllowClear]=\"true\"\n [thyShowShortcut]=\"true\"\n [thyHasBackdrop]=\"false\"\n [thyShowTime]=\"false\"\n [thyOpen]=\"true\"\n thyFormat=\"yyyy-MM-dd\"\n >\n </thy-date-picker>\n `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ThyDatePicker, ThyTimePickerModule],\n host: {\n class: 'date-cell-editor'\n }\n})\nexport class DateCellEditorComponent extends AbstractEditCellEditor<DateFieldValue> {\n override ngOnInit(): void {\n this.modelValue = computed(() => {\n const value = AITableQueries.getFieldValue(this.aiTable, [this.record()._id, this.field()._id]);\n if (!value) {\n return {\n timestamp: 0\n };\n }\n return value;\n })();\n }\n\n updateValue(value: number) {\n Actions.updateFieldValue(this.aiTable, { timestamp: value }, [this.record()._id, this.field()._id]);\n this.closePopover();\n }\n\n thyOpenChange(isOpen: Boolean) {\n if (!isOpen) {\n this.closePopover();\n }\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyInputNumber } from 'ngx-tethys/input-number';\nimport { ThyAutofocusDirective, ThyEnterDirective } from 'ngx-tethys/shared';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\n\n@Component({\n selector: 'link-cell-editor',\n template: ``,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ThyAutofocusDirective, ThyEnterDirective, ThyInputNumber]\n})\nexport class LinkCellEditorComponent extends AbstractEditCellEditor<number> {\n updateValue() {\n this.updateFieldValue();\n this.closePopover();\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyInputNumber } from 'ngx-tethys/input-number';\nimport { ThyAutofocusDirective, ThyEnterDirective } from 'ngx-tethys/shared';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\n\n@Component({\n selector: 'number-cell-editor',\n template: `<thy-input-number\n class=\"h-100\"\n [thyAutoFocus]=\"true\"\n [(ngModel)]=\"modelValue\"\n (thyEnter)=\"updateValue()\"\n (thyBlur)=\"updateValue()\"\n /> `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ThyAutofocusDirective, ThyEnterDirective, ThyInputNumber],\n host: {\n class: 'number-cell-editor'\n }\n})\nexport class NumberCellEditorComponent extends AbstractEditCellEditor<number> {\n updateValue() {\n this.updateFieldValue();\n this.closePopover();\n }\n}\n","import { ChangeDetectionStrategy, Component, HostListener, OnInit } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThySlider, ThySliderSize, ThySliderType } from 'ngx-tethys/slider';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\n\nexport interface AITableProgressConfig {\n max?: number;\n min?: number;\n step?: number;\n progressType?: ThySliderType;\n suffix?: string;\n size?: ThySliderSize;\n}\n\n@Component({\n selector: 'progress-editor',\n template: `\n <thy-slider\n [(ngModel)]=\"modelValue\"\n [thyMax]=\"config?.max || 100\"\n [thyMin]=\"config?.min || 0\"\n [thyStep]=\"config?.step || 1\"\n [thyType]=\"config?.progressType || 'success'\"\n [thySize]=\"config?.size || 'md'\"\n (ngModelChange)=\"updateValue($event)\"\n (mousedown)=\"sliderMousedownHandler($event)\"\n ></thy-slider>\n <span class=\"progress-text\">{{ modelValue }}{{ config?.suffix || '%' }}</span>\n `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ThySlider],\n host: {\n class: 'grid-cell progress-editor',\n '[attr.type]': 'field().type',\n '[attr.fieldId]': 'field()._id',\n '[attr.recordId]': 'record()._id'\n }\n})\nexport class ProgressEditorComponent extends AbstractEditCellEditor<number> {\n config: Partial<AITableProgressConfig | undefined> = {\n max: 100,\n min: 0,\n step: 1,\n progressType: 'success',\n suffix: '%',\n size: 'md'\n };\n\n @HostListener('mousedown', ['$event'])\n mousedownHandler(event: Event) {\n event.preventDefault();\n }\n\n sliderMousedownHandler(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n updateValue(value: number) {\n this.updateFieldValue();\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyRate } from 'ngx-tethys/rate';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\n\n@Component({\n selector: 'rating-cell-editor',\n template: ` <thy-rate [(ngModel)]=\"modelValue\" (ngModelChange)=\"updateValue()\"></thy-rate> `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ThyRate],\n host: {\n class: 'd-flex align-items-center h-100 px-3'\n }\n})\nexport class RatingCellEditorComponent extends AbstractEditCellEditor<number> {\n updateValue() {\n this.updateFieldValue();\n }\n}\n","import { NgIf } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, inject, Renderer2 } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyInputDirective } from 'ngx-tethys/input';\nimport { ThyAutofocusDirective, ThyEnterDirective } from 'ngx-tethys/shared';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\n\n@Component({\n selector: 'text-cell-editor',\n template: `\n <textarea\n placeholder=\"\"\n rows=\"1\"\n thyInput\n [thyAutofocus]=\"true\"\n [(ngModel)]=\"modelValue\"\n (ngModelChange)=\"valueChange()\"\n (thyEnter)=\"updateValue()\"\n (blur)=\"updateValue()\"\n ></textarea>\n `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgIf, FormsModule, ThyAutofocusDirective, ThyInputDirective, ThyEnterDirective],\n host: {\n class: 'text-cell-editor'\n }\n})\nexport class TextCellEditorComponent extends AbstractEditCellEditor<string> implements AfterViewInit {\n private elementRef = inject(ElementRef);\n\n private render2 = inject(Renderer2);\n\n private maxHeight = 148;\n\n constructor() {\n super();\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.updateStyle();\n });\n }\n\n updateStyle() {\n const textarea = this.elementRef.nativeElement.querySelector('textarea');\n const height = textarea.scrollHeight < this.maxHeight ? textarea.scrollHeight : this.maxHeight;\n\n this.render2.setStyle(textarea, 'height', `${height}px`);\n this.render2.setStyle(textarea, 'min-height', `44px`);\n this.render2.setStyle(textarea, 'max-height', `${this.maxHeight}px`);\n this.render2.setStyle(textarea, 'resize', 'none');\n }\n\n valueChange() {\n this.updateStyle();\n }\n\n updateValue() {\n this.updateFieldValue();\n this.closePopover();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { ThyDot } from 'ngx-tethys/dot';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyTag } from 'ngx-tethys/tag';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\nimport { AITableField, AITableSelectOption, AITableSelectOptionStyle } from '../../../core';\nimport { AITableSelectField } from '../../../types';\n@Component({\n selector: 'select-option',\n templateUrl: './option.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'd-flex align-items-center select-option'\n },\n imports: [ThyTag, ThyIcon, ThyTooltipModule, ThyDot, ThyFlexibleText]\n})\nexport class SelectOptionComponent {\n field = input.required<AITableField>();\n\n displayOption = input.required<AITableSelectOption>();\n\n optionStyle = computed(() => {\n return (this.field() as AITableSelectField).settings.option_style || AITableSelectOptionStyle.tag;\n });\n\n AITableSelectOptionStyle = AITableSelectOptionStyle;\n}\n","@if (displayOption(); as displayOption) {\n @switch (optionStyle()) {\n @case (AITableSelectOptionStyle.dot) {\n @if (displayOption.bg_color) {\n <thy-dot [thyColor]=\"displayOption.bg_color\" [thySize]=\"'sm'\" class=\"mr-2\"></thy-dot>\n }\n <span thyFlexibleText [thyTooltipContent]=\"displayOption.text\">{{ displayOption.text }}</span>\n }\n @case (AITableSelectOptionStyle.tag) {\n @if (displayOption.bg_color || displayOption.color || 'default'; as color) {\n <thy-tag thyTheme=\"fill\" thyShape=\"pill\" [thyColor]=\"color\">\n @if (displayOption['icon']) {\n <thy-icon class=\"text-white\" [thyIconName]=\"displayOption['icon']\"></thy-icon>\n }\n <span thyFlexibleText [thyTooltipContent]=\"displayOption.text\">{{ displayOption.text }}</span>\n </thy-tag>\n }\n }\n @case (AITableSelectOptionStyle.piece) {\n @if (displayOption.bg_color || displayOption.color; as color) {\n <thy-dot thyShape=\"square\" [thyColor]=\"color\" [thySize]=\"'sm'\" class=\"mr-2\"></thy-dot>\n }\n <span thyFlexibleText [thyTooltipContent]=\"displayOption.text\">{{ displayOption.text }}</span>\n }\n @default {\n @if (displayOption['icon']) {\n <thy-icon [thyIconName]=\"displayOption['icon']\" [style.color]=\"displayOption.color\"></thy-icon>\n }\n <span thyFlexibleText [thyTooltipContent]=\"displayOption.text\">{{ displayOption.text }}</span>\n }\n }\n}\n","import { NgForOf, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef, booleanAttribute, computed, inject, model } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyInput, ThyInputCount, ThyInputGroup, ThyInputDirective } from 'ngx-tethys/input';\nimport { ThyConfirmValidatorDirective, ThyUniqueCheckValidator, ThyFormValidatorConfig, ThyFormModule } from 'ngx-tethys/form';\nimport {\n ThyDropdownDirective,\n ThyDropdownMenuComponent,\n ThyDropdownMenuItemDirective,\n ThyDropdownMenuItemNameDirective,\n ThyDropdownMenuItemIconDirective\n} from 'ngx-tethys/dropdown';\nimport { ThyButton } from 'ngx-tethys/button';\nimport { AITable, AITableField, Actions, FieldOptions, createDefaultFieldName, AITableFieldOption, getFieldOptionByField } from '../../core';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyPopoverRef } from 'ngx-tethys/popover';\nimport { ThyListItem } from 'ngx-tethys/list';\nimport { of } from 'rxjs';\nimport { ThyAutofocusDirective } from 'ngx-tethys/shared';\n\n@Component({\n selector: 'ai-table-field-property-editor',\n templateUrl: './field-property-editor.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgIf,\n NgForOf,\n FormsModule,\n ThyIcon,\n ThyInput,\n ThyInputGroup,\n ThyInputCount,\n ThyInputDirective,\n ThyConfirmValidatorDirective,\n ThyUniqueCheckValidator,\n ThyDropdownDirective,\n ThyDropdownMenuComponent,\n ThyDropdownMenuItemDirective,\n ThyDropdownMenuItemNameDirective,\n ThyDropdownMenuItemIconDirective,\n ThyButton,\n ThyFormModule,\n ThyListItem,\n NgTemplateOutlet,\n ThyAutofocusDirective\n ],\n host: {\n class: 'field-property-editor d-block pl-5 pr-5 pb-5 pt-4'\n },\n styles: [\n `\n :host {\n width: 350px;\n }\n `\n ]\n})\nexport class AITableFieldPropertyEditor {\n aiEditField = model.required<AITableField>();\n\n @Input({ required: true }) aiTable!: AITable;\n\n @Input() aiExternalTemplate: TemplateRef<any> | null = null;\n\n @Input({ transform: booleanAttribute }) isUpdate!: boolean;\n\n selectedFieldOption = computed(() => {\n return getFieldOptionByField(this.aiEditField())!\n });\n\n fieldMaxLength = 32;\n\n validatorConfig: ThyFormValidatorConfig = {\n validationMessages: {\n fieldName: {\n required: '列名不能为空',\n thyUniqueCheck: '列名已存在'\n }\n }\n };\n\n fieldOptions = FieldOptions;\n\n protected thyPopoverRef = inject(ThyPopoverRef<AITableFieldPropertyEditor>);\n\n checkUniqueName = (fieldName: string) => {\n fieldName = fieldName?.trim();\n return of(!!this.aiTable.fields()?.find((field) => field.name === fieldName && this.aiEditField()?._id !== field._id));\n };\n\n selectFieldType(field: AITableFieldOption) {\n this.aiEditField.update((item) => {\n const width = item.width ?? field.width;\n const settings = field.settings || {};\n const name = createDefaultFieldName(this.aiTable, field);\n return { ...item, ...field, width, name, settings };\n });\n }\n\n editFieldProperty() {\n if (this.isUpdate) {\n Actions.setField(this.aiTable, this.aiEditField(), [this.aiEditField()._id]);\n } else {\n Actions.addField(this.aiTable, this.aiEditField(), [this.aiTable.fields().length]);\n }\n this.thyPopoverRef.close();\n }\n\n cancel() {\n this.thyPopoverRef.close();\n }\n}\n","<form thyForm name=\"createPropertyForm\" [thyFormValidatorConfig]=\"validatorConfig\" thyLayout=\"vertical\">\n <thy-form-group thyLabelRequired thyLabelText=\"表格列名\">\n <thy-input-group>\n <input\n thyInput\n [thyAutofocus]=\"true\"\n name=\"fieldName\"\n [maxlength]=\"fieldMaxLength\"\n [(ngModel)]=\"aiEditField().name\"\n required\n placeholder=\"输入列名称\"\n [thyUniqueCheck]=\"checkUniqueName\"\n />\n <ng-template #suffix>\n <thy-input-count></thy-input-count>\n </ng-template>\n </thy-input-group>\n </thy-form-group>\n <thy-form-group thyLabelText=\"列类型\">\n <div class=\"ml-n5 mr-n5\">\n <thy-list-item [thyDropdown]=\"menu\" thyTrigger=\"hover\" thyPlacement=\"right\" class=\"justify-content-between\">\n <span>\n <thy-icon [thyIconName]=\"selectedFieldOption().icon\" class=\"text-desc mr-2\"></thy-icon>\n <span>{{ selectedFieldOption().name }}</span>\n </span>\n <thy-icon thyIconName=\"angle-right\" class=\"text-desc\"></thy-icon>\n </thy-list-item>\n </div>\n </thy-form-group>\n <ng-container *ngIf=\"aiExternalTemplate; else defaultTemplate\">\n <ng-container *ngTemplateOutlet=\"aiExternalTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultTemplate>\n <!-- TODO: 内部属性渲染 -->\n </ng-template>\n <thy-form-group-footer thyAlign=\"right\">\n <button thyButton=\"link-secondary\" (click)=\"cancel()\" thySize=\"sm\">取消</button>\n <button thyButton=\"primary\" (thyFormSubmit)=\"editFieldProperty()\" thySize=\"sm\">确定</button>\n </thy-form-group-footer>\n</form>\n\n<thy-dropdown-menu #menu>\n @for (item of fieldOptions; track $index) {\n <a thyDropdownMenuItem href=\"javascript:;\" (click)=\"selectFieldType(item)\">\n <thy-icon [thyIconName]=\"item.icon!\"></thy-icon>\n <span thyDropdownMenuItemName>{{ item.name }}</span>\n </a>\n }\n</thy-dropdown-menu>\n","import { Component, ChangeDetectionStrategy, Input, ElementRef, computed } from '@angular/core';\nimport { AITableFieldMenuItem } from '../../types/field';\nimport { AITable } from '../../core';\nimport {\n ThyDropdownMenuItemDirective,\n ThyDropdownMenuItemNameDirective,\n ThyDropdownMenuItemIconDirective,\n ThyDropdownMenuComponent\n} from 'ngx-tethys/dropdown';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyDivider } from 'ngx-tethys/divider';\n\n@Component({\n selector: 'field-menu',\n templateUrl: './field-menu.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ThyIcon,\n ThyDivider,\n ThyDropdownMenuComponent,\n ThyDropdownMenuItemDirective,\n ThyDropdownMenuItemNameDirective,\n ThyDropdownMenuItemIconDirective\n ]\n})\nexport class FieldMenu {\n @Input({ required: true }) fieldId!: string;\n\n @Input({ required: true }) aiTable!: AITable;\n\n @Input({ required: true }) fieldMenus!: AITableFieldMenuItem[];\n\n @Input() origin!: HTMLElement | ElementRef<any>;\n\n field = computed(() => {\n return this.aiTable.fields().find((item) => item._id === this.fieldId)!;\n });\n\n execute(menu: AITableFieldMenuItem) {\n if ((menu.disabled && !menu.disabled(this.aiTable, this.field)) || !menu.disabled) {\n menu.exec && menu.exec(this.aiTable, this.field, this.origin);\n }\n }\n}\n","@for (menu of fieldMenus; track index; let index = $index) {\n @if (menu.type === 'divider') {\n <thy-divider [thyStyle]=\"'solid'\"></thy-divider>\n } @else {\n @if ((menu.hidden && !menu.hidden(aiTable, field)) || !menu.hidden) {\n <a thyDropdownMenuItem href=\"javascript:;\" (click)=\"execute(menu)\">\n <thy-icon [thyIconName]=\"menu.icon!\"></thy-icon>\n <span>{{ menu.name! }}</span>\n </a>\n }\n }\n}\n","import { AITableFieldType } from '../core';\n\nexport const DEFAULT_COLUMN_WIDTH = 200;\n\nexport const MIN_COLUMN_WIDTH = 80;\n\nexport const DBL_CLICK_EDIT_TYPE = [\n AITableFieldType.text,\n AITableFieldType.number,\n AITableFieldType.select,\n AITableFieldType.date,\n AITableFieldType.member\n];\n\nexport const MOUSEOVER_EDIT_TYPE = [AITableFieldType.progress];\n\nexport const RowHeight = {\n Short: 32,\n Medium: 57,\n Tall: 104,\n ExtraTall: 152\n};\n","import { ElementRef, Injectable } from '@angular/core';\nimport { ThyPopover } from 'ngx-tethys/popover';\nimport { AITable, AITableField } from '../core';\nimport { AITableFieldPropertyEditor } from '../components';\nimport { AIFieldConfig } from '../types';\n\nexport const AI_TABLE_GRID_FIELD_SERVICE_MAP = new WeakMap<AITable, AITableGridFieldService>();\n\n@Injectable()\nexport class AITableGridFieldService {\n aiFieldConfig: AIFieldConfig | undefined;\n\n constructor(private thyPopover: ThyPopover) {}\n\n initAIFieldConfig(aiFieldConfig: AIFieldConfig | undefined) {\n this.aiFieldConfig = aiFieldConfig;\n }\n\n editFieldProperty(origin: HTMLElement | ElementRef<any>, aiTable: AITable, aiEditField: AITableField, isUpdate: boolean) {\n const component = this.aiFieldConfig?.fieldPropertyEditor ?? AITableFieldPropertyEditor;\n this.thyPopover.open(component, {\n origin: origin,\n manualClosure: true,\n placement: 'bottomLeft',\n initialState: {\n aiTable,\n aiEditField,\n isUpdate\n }\n });\n }\n}\n","import { Actions, AITable, AITableField } from '../core';\nimport { AI_TABLE_GRID_FIELD_SERVICE_MAP } from '../services/field.service';\nimport { ElementRef, Signal } from '@angular/core';\nimport { AITableFieldMenuItem } from '../types';\n\nexport const DividerMenuItem = {\n type: 'divider'\n};\n\nexport const EditFieldPropertyItem = {\n type: 'editFieldProperty',\n name: '编辑列',\n icon: 'edit',\n exec: (aiTable: AITable, field: Signal<AITableField>, origin?: HTMLElement | ElementRef<any>) => {\n const fieldService = AI_TABLE_GRID_FIELD_SERVICE_MAP.get(aiTable);\n const copyField: AITableField = JSON.parse(JSON.stringify(field()));\n origin && fieldService?.editFieldProperty(origin, aiTable, copyField, true);\n }\n};\n\nexport const RemoveFieldItem = {\n type: 'removeField',\n name: '删除列',\n icon: 'trash',\n exec: (aiTable: AITable, field: Signal<AITableField>) => {\n Actions.removeField(aiTable, [field()._id]);\n }\n};\n\nexport const DefaultFieldMenus: AITableFieldMenuItem[] = [EditFieldPropertyItem, RemoveFieldItem];\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { AITableFieldSettings, AITableSelectOption, MemberSettings, SelectSettings } from '../core';\nimport { AITableReferences, AITableSelection } from '../types';\n\n@Pipe({\n name: 'selectOption',\n standalone: true\n})\nexport class SelectOptionPipe implements PipeTransform {\n transform(_id: string, options: AITableSelectOption[]) {\n return options?.length && options.find((item) => item._id === _id);\n }\n}\n\n@Pipe({\n name: 'selectOptions',\n standalone: true\n})\nexport class SelectOptionsPipe implements PipeTransform {\n transform(ids: string[], options: AITableSelectOption[] = []) {\n return (\n (ids?.length &&\n ids.map((id: string) => {\n return options.find((item) => item._id === id);\n })) ||\n []\n );\n }\n}\n\n@Pipe({\n name: 'isSelectRecord',\n standalone: true\n})\nexport class IsSelectRecordPipe implements PipeTransform {\n transform(recordId: string, selection: AITableSelection) {\n return selection.selectedRecords.has(recordId);\n }\n}\n\n@Pipe({\n name: 'user',\n standalone: true\n})\nexport class UserPipe implements PipeTransform {\n transform(values: string[], references: AITableReferences) {\n return (\n (values.length &&\n values.map((item) => {\n return references.members[item] || {};\n })) ||\n []\n );\n }\n}\n\n@Pipe({\n name: 'selectSetting',\n standalone: true\n})\nexport class SelectSettingPipe implements PipeTransform {\n transform(settings: AITableFieldSettings) {\n return settings as SelectSettings;\n }\n}\n\n@Pipe({\n name: 'memberSetting',\n standalone: true\n})\nexport class MemberSettingPipe implements PipeTransform {\n transform(settings: AITableFieldSettings) {\n return settings as MemberSettings;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyDot } from 'ngx-tethys/dot';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThySelect } from 'ngx-tethys/select';\nimport { ThyOption } from 'ngx-tethys/shared';\nimport { ThyTag } from 'ngx-tethys/tag';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\nimport { SelectOptionPipe } from '../../../pipes';\nimport { AITableSelectField } from '../../../types';\nimport { SelectOptionComponent } from '../../cell-views/select/option.component';\nimport { AbstractEditCellEditor } from '../abstract-cell-editor.component';\nimport { Actions, AITableQueries, AITableSelectOptionStyle } from '../../../core';\n\n@Component({\n selector: 'select-cell-editor',\n templateUrl: './select-editor.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'd-block h-100 select-cell-editor',\n '[class.tag]': 'field()!.settings.option_style === AITableSelectOptionStyle.tag'\n },\n imports: [\n FormsModule,\n NgTemplateOutlet,\n ThySelect,\n ThyOption,\n ThyTag,\n ThyIcon,\n ThyTooltipModule,\n ThyDot,\n ThyFlexibleText,\n SelectOptionPipe,\n SelectOptionComponent\n ]\n})\nexport class SelectCellEditorComponent extends AbstractEditCellEditor<string[], AITableSelectField> {\n selectOptions = computed(() => {\n return this.field().settings.options;\n });\n\n optionStyle = computed(() => {\n return (this.field() as AITableSelectField).settings.option_style || AITableSelectOptionStyle.tag;\n });\n\n AITableSelectOptionStyle = AITableSelectOptionStyle;\n\n constructor() {\n super();\n }\n\n override ngOnInit(): void {\n this.modelValue = computed(() => {\n const value = AITableQueries.getFieldValue(this.aiTable, [this.record()._id, this.field()._id]);\n if (!this.field().settings.is_multiple) {\n return value[0];\n }\n return value || [];\n })();\n }\n\n updateValue(value: boolean) {\n if (!value) {\n if (!this.field().settings.is_multiple) {\n Actions.updateFieldValue(this.aiTable, [this.modelValue], [this.record()._id, this.field()._id]);\n } else {\n this.updateFieldValue();\n }\n this.closePopover();\n }\n }\n}\n","<thy-select\n [(ngModel)]=\"modelValue\"\n [thyAutoExpand]=\"true\"\n [thyAllowClear]=\"true\"\n [thyMode]=\"field().settings.is_multiple ? 'multiple' : ''\"\n [thyPreset]=\"'tag'\"\n (thyOnExpandStatusChange)=\"updateValue($event)\"\n>\n <ng-template #selectedDisplay let-option>\n @if (optionStyle() === AITableSelectOptionStyle.tag) {\n <select-option [field]=\"field()\" [displayOption]=\"option\"></select-option>\n } @else {\n <div thyTag class=\"mb-1 mr-1\">\n <select-option [field]=\"field()\" [displayOption]=\"option\"></select-option>\n </div>\n }\n </ng-template>\n @for (option of selectOptions(); track option._id) {\n <thy-option [thyValue]=\"option._id\" [thyRawValue]=\"option\" [thyShowOptionCustom]=\"true\" [thyLabelText]=\"option.text\">\n <select-option [field]=\"field()\" [displayOption]=\"option\"></select-option>\n </thy-option>\n }\n</thy-select>\n","import {\n DateCellEditorComponent,\n LinkCellEditorComponent,\n NumberCellEditorComponent,\n ProgressEditorComponent,\n RatingCellEditorComponent,\n TextCellEditorComponent\n} from '../components';\nimport { SelectCellEditorComponent } from '../components/cell-editors/select/select-editor.component';\nimport { AITableFieldType } from '../core';\n\nexport const GRID_CELL_EDITOR_MAP: Partial<Record<AITableFieldType, any>> = {\n [AITableFieldType.text]: TextCellEditorComponent,\n [AITableFieldType.richText]: TextCellEditorComponent,\n [AITableFieldType.select]: SelectCellEditorComponent,\n [AITableFieldType.number]: NumberCellEditorComponent,\n [AITableFieldType.date]: DateCellEditorComponent,\n [AITableFieldType.rate]: RatingCellEditorComponent,\n [AITableFieldType.link]: LinkCellEditorComponent,\n [AITableFieldType.progress]: ProgressEditorComponent\n};\n","import { DestroyRef, inject, Injectable } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ThyPopover } from 'ngx-tethys/popover';\nimport { debounceTime, fromEvent, Subject } from 'rxjs';\nimport { GRID_CELL_EDITOR_MAP } from '../constants/editor';\nimport { AITable, AITableFieldType } from '../core';\nimport { AITableGridCellRenderSchema } from '../types';\nimport { Overlay } from '@angular/cdk/overlay';\n\n@Injectable()\nexport class AITableGridEventService {\n aiTable!: AITable;\n\n aiFieldRenderers?: Partial<Record<AITableFieldType, AITableGridCellRenderSchema>>;\n\n dblClickEvent$ = new Subject<MouseEvent>();\n\n mousedownEvent$ = new Subject<MouseEvent>();\n\n mouseoverEvent$ = new Subject<MouseEvent>();\n\n globalMouseoverEvent$ = new Subject<MouseEvent>();\n\n globalMousedownEvent$ = new Subject<MouseEvent>();\n\n private destroyRef = inject(DestroyRef);\n\n private overlay = inject(Overlay);\n\n private thyPopover = inject(ThyPopover);\n\n initialize(aiTable: AITable, aiFieldRenderers?: Partial<Record<AITableFieldType, AITableGridCellRenderSchema>>) {\n this.aiTable = aiTable;\n this.aiFieldRenderers = aiFieldRenderers;\n }\n\n registerEvents(element: HTMLElement) {\n fromEvent<MouseEvent>(element, 'dblclick')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n this.dblClickEvent$.next(event);\n });\n\n fromEvent<MouseEvent>(element, 'mouseover')\n .pipe(debounceTime(80), takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n this.mouseoverEvent$.next(event);\n });\n\n fromEvent<MouseEvent>(document, 'mouseover')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n this.globalMouseoverEvent$.next(event);\n });\n\n fromEvent<MouseEvent>(element, 'mousedown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n this.mousedownEvent$.next(event);\n });\n\n fromEvent<MouseEvent>(document, 'mousedown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n this.globalMousedownEvent$.next(event as MouseEvent);\n });\n }\n\n private getEditorComponent(type: AITableFieldType) {\n if (this.aiFieldRenderers && this.aiFieldRenderers[type]) {\n return this.aiFieldRenderers[type]!.editor;\n }\n return GRID_CELL_EDITOR_MAP[type];\n }\n\n openEdit(cellDom: HTMLElement) {\n const { x, y, width, height } = cellDom.getBoundingClientRect();\n const fieldId = cellDom.getAttribute('fieldId')!;\n const recordId = cellDom.getAttribute('recordId')!;\n const component = this.getEditorComponent(this.aiTable.fieldsMap()[fieldId].type);\n const ref = this.thyPopover.open(component, {\n origin: cellDom,\n originPosition: {\n x: x - 1,\n y: y + 1,\n width: width + 2,\n height: height + 2\n },\n width: width + 1 + 'px',\n height: height + 2 + 'px',\n placement: 'top',\n offset: -(height + 4),\n minWidth: width,\n initialState: {\n fieldId: fieldId,\n recordId: recordId,\n aiTable: this.aiTable\n },\n panelClass: 'grid-cell-editor',\n outsideClosable: false,\n hasBackdrop: false,\n manualClosure: true,\n animationDisabled: true,\n autoAdaptive: true,\n scrollStrategy: this.overlay.scrollStrategies.close()\n });\n return ref;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AITable } from '../core';\n\n@Injectable()\nexport class AITableGridSelectionService {\n aiTable!: AITable;\n\n constructor() {}\n\n initialize(aiTable: AITable) {\n this.aiTable = aiTable;\n }\n\n clearSelection() {\n this.aiTable.selection.set({\n selectedRecords: new Map(),\n selectedFields: new Map(),\n selectedCells: new Map()\n });\n }\n\n selectCell(recordId: string, fieldId: string) {\n this.clearSelection();\n this.aiTable.selection().selectedCells.set(recordId, { [fieldId]: true });\n }\n\n selectField(fieldId: string) {\n this.clearSelection();\n this.aiTable.selection().selectedFields.set(fieldId, true);\n }\n\n selectRecord(recordId: string) {\n if (this.aiTable.selection().selectedRecords.has(recordId)) {\n this.aiTable.selection().selectedRecords.delete(recordId);\n } else {\n this.aiTable.selection().selectedRecords.set(recordId, true);\n }\n this.aiTable.selection.set({\n selectedRecords: this.aiTable.selection().selectedRecords,\n selectedFields: new Map(),\n selectedCells: new Map()\n });\n }\n\n toggleSelectAll(checked: boolean) {\n this.clearSelection();\n if (checked) {\n this.aiTable.records().forEach((item) => {\n this.selectRecord(item._id);\n });\n }\n }\n\n updateSelect(event: MouseEvent) {\n const target = event?.target as HTMLElement;\n if (!target) {\n return;\n }\n const cellDom = target.closest('.grid-cell');\n const colDom = target.closest('.grid-field');\n const checkbox = target.tagName === 'INPUT' && (target as HTMLInputElement).type === 'checkbox' && target.closest('.grid-checkbox');\n const fieldAction = target.closest('.grid-field-action');\n if (cellDom) {\n const fieldId = cellDom.getAttribute('fieldId');\n const recordId = cellDom.getAttribute('recordId');\n fieldId && recordId && this.selectCell(recordId, fieldId);\n }\n if (colDom && !fieldAction) {\n const fieldId = colDom.getAttribute('fieldId');\n fieldId && this.selectField(fieldId);\n }\n if (!cellDom && !colDom && !checkbox) {\n this.clearSelection();\n }\n }\n}\n","import { CommonModule, NgClass, NgComponentOutlet, NgForOf, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n model,\n NgZone,\n OnInit,\n output,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { ThyAction } from 'ngx-tethys/action';\nimport { ThyAvatarModule } from 'ngx-tethys/avatar';\nimport { ThyCheckboxModule } from 'ngx-tethys/checkbox';\nimport { ThyDatePickerFormatPipe } from 'ngx-tethys/date-picker';\nimport { ThyDropdownDirective, ThyDropdownMenuComponent } from 'ngx-tethys/dropdown';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyPopoverModule, ThyPopoverRef } from 'ngx-tethys/popover';\nimport { ThyProgress } from 'ngx-tethys/progress';\nimport { ThyRate } from 'ngx-tethys/rate';\nimport { ThyStopPropagationDirective } from 'ngx-tethys/shared';\nimport { ThyTag } from 'ngx-tethys/tag';\nimport { mergeWith } from 'rxjs/operators';\nimport { ProgressEditorComponent, SelectOptionComponent } from './components';\nimport { FieldMenu } from './components/field-menu/field-menu.component';\nimport { AITableFieldPropertyEditor } from './components/field-property-editor/field-property-editor.component';\nimport { DBL_CLICK_EDIT_TYPE, DefaultFieldMenus, MOUSEOVER_EDIT_TYPE } from './constants';\nimport {\n Actions,\n AIPlugin,\n AITable,\n AITableChangeOptions,\n AITableFields,\n AITableFieldType,\n AITableRecords,\n AITableSelectOptionStyle,\n AITableValue,\n createAITable,\n createDefaultField,\n getDefaultRecord\n} from './core';\nimport { IsSelectRecordPipe, MemberSettingPipe, SelectOptionPipe, SelectOptionsPipe, SelectSettingPipe, UserPipe } from './pipes/grid.pipe';\nimport { AITableGridEventService } from './services/event.service';\nimport { AI_TABLE_GRID_FIELD_SERVICE_MAP, AITableGridFieldService } from './services/field.service';\nimport { AITableGridSelectionService } from './services/selection.service';\nimport { AIFieldConfig, AITableFieldMenuItem, AITableReferences } from './types';\n\n@Component({\n selector: 'ai-table-grid',\n templateUrl: './grid.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ai-table-grid'\n },\n imports: [\n NgForOf,\n NgClass,\n NgComponentOutlet,\n CommonModule,\n FormsModule,\n SelectOptionPipe,\n SelectOptionsPipe,\n ThyTag,\n ThyPopoverModule,\n ThyIcon,\n ThyRate,\n ThyProgress,\n AITableFieldPropertyEditor,\n ThyDatePickerFormatPipe,\n ThyFlexibleText,\n ThyStopPropagationDirective,\n FieldMenu,\n ThyAction,\n ThyDropdownDirective,\n ThyDropdownMenuComponent,\n ThyCheckboxModule,\n ProgressEditorComponent,\n ThyAvatarModule,\n NgTemplateOutlet,\n IsSelectRecordPipe,\n ProgressEditorComponent,\n SelectOptionComponent,\n UserPipe,\n SelectSettingPipe,\n MemberSettingPipe\n ],\n providers: [AITableGridEventService, AITableGridFieldService, AITableGridSelectionService]\n})\nexport class AITableGrid implements OnInit {\n aiRecords = model.required<AITableRecords>();\n\n aiFields = model.required<AITableFields>();\n\n aiFieldConfig = input<AIFieldConfig>();\n\n aiReadonly = input<boolean>();\n\n aiPlugins = input<AIPlugin[]>();\n\n aiReferences = input<AITableReferences>();\n\n aiBuildRenderDataFn = input<(aiTable: AITable) => AITableValue>();\n\n AITableFieldType = AITableFieldType;\n\n AITableSelectOptionStyle = AITableSelectOptionStyle;\n\n aiTable!: AITable;\n\n gridData = computed(() => {\n if (this.aiBuildRenderDataFn && this.aiBuildRenderDataFn() && this.aiTable) {\n return this.aiBuildRenderDataFn()!(this.aiTable);\n }\n return {\n records: this.aiRecords(),\n fields: this.aiFields()\n };\n });\n\n isSelectedAll = computed(() => {\n return this.aiTable.selection().selectedRecords.size === this.aiRecords().length;\n });\n\n onChange = output<AITableChangeOptions>();\n\n aiTableInitialized = output<AITable>();\n\n fieldMenus!: AITableFieldMenuItem[];\n\n mouseoverRef!: ThyPopoverRef<any>;\n\n private ngZone = inject(NgZone);\n\n private elementRef = inject(ElementRef);\n\n private destroyRef = inject(DestroyRef);\n\n private aiTableGridFieldService = inject(AITableGridFieldService);\n\n private aiTableGridEventService = inject(AITableGridEventService);\n\n public aiTableGridSelectionService = inject(AITableGridSelectionService);\n\n ngOnInit(): void {\n this.initAITable();\n this.initService();\n this.buildFieldMenus();\n this.subscribeEvents();\n }\n\n initAITable() {\n this.aiTable = createAITable(this.aiRecords, this.aiFields);\n this.aiPlugins()?.forEach((plugin) => {\n this.aiTable = plugin(this.aiTable);\n });\n this.aiTableInitialized.emit(this.aiTable);\n this.aiTable.onChange = () => {\n this.onChange.emit({\n records: this.aiRecords(),\n fields: this.aiFields(),\n actions: this.aiTable.actions\n });\n };\n }\n\n initService() {\n this.aiTableGridEventService.initialize(this.aiTable, this.aiFieldConfig()?.fieldPropertyEditor);\n this.aiTableGridSelectionService.initialize(this.aiTable);\n this.aiTableGridEventService.registerEvents(this.elementRef.nativeElement);\n this.aiTableGridFieldService.initAIFieldConfig(this.aiFieldConfig());\n AI_TABLE_GRID_FIELD_SERVICE_MAP.set(this.aiTable, this.aiTableGridFieldService);\n }\n\n buildFieldMenus() {\n this.fieldMenus = this.aiFieldConfig()?.fieldMenus ?? DefaultFieldMenus;\n }\n\n addRecord() {\n Actions.addRecord(this.aiTable, getDefaultRecord(this.aiFields()), [this.aiRecords().length]);\n }\n\n selectRecord(recordId: string) {\n this.aiTableGridSelectionService.selectRecord(recordId);\n }\n\n toggleSelectAll(checked: boolean) {\n this.aiTableGridSelectionService.toggleSelectAll(checked);\n }\n\n addField(gridColumnBlank: HTMLElement) {\n const field = createDefaultField(this.aiTable, AITableFieldType.text);\n this.aiTableGridFieldService.editFieldProperty(gridColumnBlank, this.aiTable, field, false);\n }\n\n private subscribeEvents() {\n this.ngZone.runOutsideAngular(() => {\n this.aiTableGridEventService.dblClickEvent$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n this.dblClick(event);\n });\n this.aiTableGridEventService.mousedownEvent$\n .pipe(mergeWith(this.aiTableGridEventService.globalMousedownEvent$), takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n this.aiTableGridSelectionService.updateSelect(event);\n });\n\n this.aiTableGridEventService.mouseoverEvent$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n this.mouseoverHandle(event);\n });\n this.aiTableGridEventService.globalMouseoverEvent$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n this.closeHoverCellEditor(event);\n });\n });\n }\n\n private dblClick(event: MouseEvent) {\n const cellDom = (event.target as HTMLElement).closest('.grid-cell') as HTMLElement;\n const type = cellDom && (cellDom.getAttribute('type')! as AITableFieldType);\n if (type && DBL_CLICK_EDIT_TYPE.includes(type)) {\n this.aiTableGridEventService.openEdit(cellDom);\n }\n }\n\n private mouseoverHandle(event: MouseEvent) {\n if (this.mouseoverRef) {\n this.mouseoverRef?.close();\n }\n const cellDom = (event.target as HTMLElement).closest('.grid-cell') as HTMLElement;\n const type = cellDom && (cellDom.getAttribute('type')! as AITableFieldType);\n if (type && MOUSEOVER_EDIT_TYPE.includes(type)) {\n this.mouseoverRef = this.aiTableGridEventService.openEdit(cellDom);\n }\n }\n\n private closeHoverCellEditor(e: MouseEvent) {\n if (this.mouseoverRef) {\n const hasGrid = e.target && (e.target as HTMLElement).closest('.ai-table-grid');\n const hasCellEditor = e.target && (e.target as HTMLElement).closest('.grid-cell-editor');\n if (!hasGrid && !hasCellEditor) {\n this.mouseoverRef.close();\n }\n }\n }\n}\n","<div class=\"grid-header d-flex\">\n <div class=\"grid-column-checkbox grid-cell grid-checkbox\">\n <label thyCheckbox thyLabelText=\"\" [ngModel]=\"isSelectedAll()\" (ngModelChange)=\"toggleSelectAll($event)\"></label>\n </div>\n @for (field of gridData().fields; track field._id) {\n <div\n class=\"grid-cell grid-field\"\n #fieldAction\n [attr.fieldId]=\"field._id\"\n [ngClass]=\"{ highlight: aiTable.selection().selectedFields.has(field._id) }\"\n [ngStyle]=\"{ width: field.width + 'px' }\"\n >\n <span class=\"text-truncate\">\n <thy-icon [thyIconName]=\"field.icon!\" class=\"mr-2 text-muted\"></thy-icon>\n <span>{{ field.name }}</span>\n </span>\n <a\n class=\"grid-field-action\"\n thyAction\n thyActiveClass=\"active\"\n thyIcon=\"more-vertical\"\n [thyDropdown]=\"fieldMenu\"\n href=\"javascript:;\"\n >\n <thy-dropdown-menu #fieldMenu>\n <field-menu [origin]=\"fieldAction\" [fieldId]=\"field._id\" [aiTable]=\"aiTable\" [fieldMenus]=\"fieldMenus\"></field-menu>\n </thy-dropdown-menu>\n </a>\n </div>\n }\n <div class=\"grid-column-blank cursor-pointer\" #gridColumnBlank (click)=\"addField(gridColumnBlank)\">\n <thy-icon thyIconName=\"plus\"></thy-icon>\n </div>\n</div>\n<div class=\"grid-body d-flex\">\n @for (record of gridData().records; track record._id; let index = $index) {\n <div class=\"grid-row d-flex\" [ngClass]=\"{ highlight: (record._id | isSelectRecord: aiTable.selection()) }\">\n <div class=\"grid-row-index grid-checkbox\">\n <label\n [ngClass]=\"(record._id | isSelectRecord: aiTable.selection()) ? 'checked-box' : 'unchecked-box'\"\n thyCheckbox\n thyLabelText=\"\"\n [ngModel]=\"record._id | isSelectRecord: aiTable.selection()\"\n (ngModelChange)=\"selectRecord(record._id)\"\n ></label>\n <span [ngClass]=\"(record._id | isSelectRecord: aiTable.selection()) ? 'grid-row-no-number' : 'grid-row-number'\">\n {{ index + 1 }}\n </span>\n </div>\n @for (field of gridData().fields; track field._id) {\n <div\n #cell\n class=\"grid-cell\"\n [ngClass]=\"{\n highlight: aiTable.selection().selectedCells.has(record._id) || aiTable.selection().selectedFields.has(field._id),\n selected: aiTable.selection().selectedCells.get(record._id)?.hasOwnProperty(field._id)\n }\"\n [attr.type]=\"[field.type]\"\n [attr.fieldId]=\"[field._id]\"\n [attr.recordId]=\"[record._id]\"\n [ngStyle]=\"{ width: field.width + 'px' }\"\n >\n @switch (field.type) {\n @case (AITableFieldType.select) {\n @let fieldValue = record.values[field._id];\n @let settings = field.settings! | selectSetting;\n @let options = settings['options'];\n @let optionStyle = settings['option_style'] || AITableSelectOptionStyle.tag;\n @let isTagStyle = optionStyle === AITableSelectOptionStyle.tag;\n\n @if (!settings['is_multiple'] && fieldValue | selectOption: options; as selectedOption) {\n @if (isTagStyle) {\n <select-option class=\"mb-1 mr-1\" [field]=\"field\" [displayOption]=\"selectedOption\"></select-option>\n } @else {\n <div thyTag class=\"mb-1 mr-1\">\n <select-option [field]=\"field\" [displayOption]=\"selectedOption\"></select-option>\n </div>\n }\n } @else {\n @let maxShowCount = 2;\n\n <div class=\"d-flex\">\n @if (fieldValue | selectOptions: options; as selectedOptions) {\n @for (option of selectedOptions; track option!._id; let i = $index) {\n @if (i + 1 <= maxShowCount) {\n @if (isTagStyle) {\n <select-option\n class=\"mb-1 mr-1\"\n [field]=\"field\"\n [displayOption]=\"option!\"\n ></select-option>\n } @else {\n <div thyTag class=\"mb-1 mr-1\">\n <select-option [field]=\"field\" [displayOption]=\"option!\"></select-option>\n </div>\n }\n }\n }\n\n @let selectedLength = selectedOptions.length || 0;\n @if (selectedOptions && maxShowCount < selectedLength) {\n @let shape = isTagStyle ? 'pill' : 'rectangle';\n @let isHidden = maxShowCount >= selectedLength;\n\n <thy-tag\n class=\"cursor-pointer\"\n [class.multi-property-value-hidden]=\"isHidden\"\n [thyShape]=\"shape\"\n >\n <span class=\"text-truncate\"> +{{ selectedLength - maxShowCount }} </span>\n </thy-tag>\n }\n }\n </div>\n }\n }\n @case (AITableFieldType.date) {\n {{ record.values[field._id].timestamp | thyDatePickerFormat }}\n }\n @case (AITableFieldType.updatedAt) {\n <div class=\"d-block user-select-none\">\n <span class=\"text-truncate\">\n {{ record.values[field._id] | thyDatePickerFormat: 'yyyy-MM-dd HH:mm' }}\n </span>\n </div>\n }\n @case (AITableFieldType.createdAt) {\n <div class=\"d-block user-select-none\">\n <span class=\"text-truncate\">\n {{ record.values[field._id] | thyDatePickerFormat: 'yyyy-MM-dd HH:mm' }}\n </span>\n </div>\n }\n @case (AITableFieldType.rate) {\n <thy-rate [ngModel]=\"record.values[field._id]\"></thy-rate>\n }\n @case (AITableFieldType.link) {\n <a\n class=\"d-block\"\n target=\"_blank\"\n [href]=\"record.values[field._id]?.url\"\n thyStopPropagation\n thyFlexibleText\n [thyTooltipContent]=\"record.values[field._id]?.text\"\n >\n {{ record.values[field._id]?.text }}\n </a>\n }\n @case (AITableFieldType.progress) {\n <thy-progress\n class=\"w-100\"\n [thyValue]=\"record.values[field._id] || 0\"\n [thySize]=\"record.values[field._id]?.config?.size || 'md'\"\n [thyMax]=\"record.values[field._id]?.config?.max || 100\"\n [thyType]=\"record.values[field._id]?.config?.progressType || 'success'\"\n >\n <span> {{ record.values[field._id] || 0 }}{{ record.values[field._id]?.config?.suffix || '%' }} </span>\n </thy-progress>\n }\n @case (AITableFieldType.member) {\n @let settings = field.settings! | memberSetting;\n\n @if (!settings!['is_multiple']) {\n @let recordValues = record.values[field._id] | user: aiReferences()!;\n\n @if (recordValues && recordValues.length) {\n <thy-avatar\n [thyName]=\"recordValues[0].display_name!\"\n [thySrc]=\"recordValues[0].avatar!\"\n thySize=\"xs\"\n thyShowName=\"true\"\n ></thy-avatar>\n }\n } @else {\n @let recordValues = record.values[field._id] | user: aiReferences()!;\n\n <thy-avatar-list thyAvatarSize=\"xs\">\n @for (item of recordValues; track $index) {\n <thy-avatar [thyName]=\"item.display_name!\" [thySrc]=\"item.avatar!\"></thy-avatar>\n }\n </thy-avatar-list>\n }\n }\n @case (AITableFieldType.createdBy) {\n @let recordValues = record.values[field._id] | user: aiReferences()!;\n\n @if (recordValues && recordValues.length) {\n <thy-avatar\n [thyName]=\"recordValues[0].display_name!\"\n [thySrc]=\"recordValues[0].avatar!\"\n thySize=\"xs\"\n thyShowName=\"true\"\n ></thy-avatar>\n }\n }\n @case (AITableFieldType.updatedBy) {\n @let recordValues = record.values[field._id] | user: aiReferences()!;\n\n @if (recordValues && recordValues.length) {\n <thy-avatar\n [thyName]=\"recordValues[0].display_name!\"\n [thySrc]=\"recordValues[0].avatar!\"\n thySize=\"xs\"\n thyShowName=\"true\"\n ></thy-avatar>\n }\n }\n @default {\n <span class=\"text-truncate\"> {{ record.values[field._id] }}</span>\n }\n }\n <div class=\"autofill-container\"></div>\n </div>\n }\n <div class=\"grid-column-blank\"></div>\n </div>\n }\n <div class=\"grid-row-insert grid-row cursor-pointer\" (click)=\"addRecord()\">\n <thy-icon thyIconName=\"plus\"></thy-icon>\n </div>\n</div>\n\n<div #activeBorder class=\"active-border\"></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}