@ai-matrx/records-ui 0.102.16 → 0.102.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/dist/index.cjs +2218 -2161
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -24
- package/dist/index.d.ts +3 -24
- package/dist/index.js +117 -60
- package/dist/index.js.map +1 -1
- package/dist/pickers.cjs +26 -5
- package/dist/pickers.cjs.map +1 -1
- package/dist/pickers.js +27 -6
- package/dist/pickers.js.map +1 -1
- package/package.json +4 -4
package/dist/index.d.cts
CHANGED
|
@@ -7131,29 +7131,6 @@ type EntityRow = Record<string, unknown> & {
|
|
|
7131
7131
|
id: string;
|
|
7132
7132
|
};
|
|
7133
7133
|
|
|
7134
|
-
/**
|
|
7135
|
-
* THE LOADING FRAME OF EVERY RECORDS SURFACE (lane STABLE-TABLES).
|
|
7136
|
-
*
|
|
7137
|
-
* Arman, 2026-10-06: "The tables do not properly show a loading state so they are jumpy … They
|
|
7138
|
-
* must properly show skeletons and they should not cause shifts … all must have proper loading,
|
|
7139
|
-
* empty state, etc." Measured before this file: a table page went route placeholder → a line of
|
|
7140
|
-
* text → a 160px grey box → a grid frame with 23px rows and its footer under them → the real grid
|
|
7141
|
-
* with 35px rows and its footer 580px lower. Four frames, four geometries.
|
|
7142
|
-
*
|
|
7143
|
-
* ONE skeleton per surface, chosen by a named option, drawn in the frame the loaded surface uses:
|
|
7144
|
-
* · the toolbar row is the page's own toolbar row (`TABLE_TOOLBAR_ROW_CLASS`), at its height;
|
|
7145
|
-
* · `grid` is the data table itself in its loading state — the same header, the same row
|
|
7146
|
-
* height, the same pinned footer — so its geometry is the loaded grid's by construction;
|
|
7147
|
-
* · `kanban`, `gallery`, `list`, `calendar`, `timeline` paint their columns, cards, rows or
|
|
7148
|
-
* cells where the loaded layout puts them;
|
|
7149
|
-
* · `form` and `record` paint the field stack and the body; `chart` reserves the chart's box.
|
|
7150
|
-
*
|
|
7151
|
-
* THE COUNT WHEN NOBODY KNOWS IT. A page frame fills to its edge (Airtable's rule: the grid never
|
|
7152
|
-
* starts short and grows); an embedded frame paints the rows the table had last time, else five
|
|
7153
|
-
* (Notion's inline database paints a short run) — see `rememberedRows.ts`.
|
|
7154
|
-
*
|
|
7155
|
-
* Hosts never style a placeholder of their own: they render this, with a layout.
|
|
7156
|
-
*/
|
|
7157
7134
|
/** Every place a records surface shows while its first read is out. */
|
|
7158
7135
|
type RecordsSkeletonLayout = "grid" | "kanban" | "gallery" | "list" | "calendar" | "timeline" | "form" | "record" | "chart" | "home";
|
|
7159
7136
|
declare const RECORDS_SKELETON_LAYOUTS: readonly RecordsSkeletonLayout[];
|
|
@@ -7174,6 +7151,8 @@ interface RecordsSkeletonProps {
|
|
|
7174
7151
|
embedded?: boolean;
|
|
7175
7152
|
/** Rows to paint; default — page: to the frame's edge, embedded: five. */
|
|
7176
7153
|
rows?: number | "fill";
|
|
7154
|
+
/** The table this page is for: a page frame then paints the rows that table showed last visit. */
|
|
7155
|
+
tableId?: string;
|
|
7177
7156
|
className?: string;
|
|
7178
7157
|
}
|
|
7179
7158
|
/** The body of a layout while its first read is out — where the loaded layout's body will be. */
|
|
@@ -7183,6 +7162,6 @@ declare function RecordsSkeleton({ layout, embedded, rows, className }: RecordsS
|
|
|
7183
7162
|
* at its height (the view, the layout, filter, then the search and the add buttons at the end),
|
|
7184
7163
|
* and the layout's body skeleton below — the boxes the loaded page fills, nothing else.
|
|
7185
7164
|
*/
|
|
7186
|
-
declare function TablePageSkeleton({ layout, embedded, rows, className, }: RecordsSkeletonProps): react.JSX.Element;
|
|
7165
|
+
declare function TablePageSkeleton({ layout, embedded, rows, tableId, className, }: RecordsSkeletonProps): react.JSX.Element;
|
|
7187
7166
|
|
|
7188
7167
|
export { ABSENCE_WORD_LABEL, ABSENCE_WORD_VALUES, ACTION_KINDS, ARCHIVED_NEVER_DESTROYED, ARCHIVE_MEANS, ASK_EXAMPLE, type AbsenceWord, AccentSwatches, type AccentSwatchesProps, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, type AnnounceTableArchived, type AppletPageBlock, ArchiveDeliberatelyDialog, type ArchiveDeliberatelyDialogProps, ArchivedDisclosure, type ArchivedDisclosureProps, ArchivedPortals, type ArchivedPortalsProps, ArchivedView, type ArchivedViewProps, type AskRead, BODY_COLUMN_NAME, BODY_SAVE_PAUSE_MS, BOOKING_NOT_HERE_LINE, BOOKING_PAGE_STATE_LABEL, BOOKING_PAGE_STATE_VALUES, BookingBuilder, type BookingBuilderProps, type BookingPageState, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, type ButtonPageBlock, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CHECKLIST_REQUIREMENT_KINDS, CHECKLIST_REQUIREMENT_LABEL, CONDITION_OPS, CONTEXT_POLICY_LABEL, ADDABLE_TYPES as CUSTOM_FIELD_ADDABLE_TYPES, type CalendarMode, CalendarView, type CalendarViewProps, type CaptureMode, type CaptureQueuePort, CaptureRun, type CaptureRunProps, CaptureSheet, type CaptureSheetProps, type CellAddress, type CellRefusal, type CellState, ChartBlock, type ChartBlockProps, type ChartConfig, ChartFrame, type ChartKind, ChartLegendContent, type ChartPageBlock, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, type ChoiceAddition, type ChoiceAsk, ChoiceAskButtons, ChoiceListEditor, type ChoiceListRow, type CombinedRows, CommentThread, type CommentThreadProps, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, type CustomFieldAddRequest, type CustomFieldAddResult, type CustomFieldSetResult, type CustomFieldValuesRequest, type CustomFieldsAgentDoor, type CustomFieldsAgentState, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FOOTER, DEFAULT_VIEW_NAME, DUE_STATE_LABEL, DashboardCanvas, type DashboardCanvasProps, DigestScheduler, type DigestSchedulerProps, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, ENGINEER_TEXT, ENTITY_REFERENCE_KINDS_MISSING, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, EntityBoard, type EntityBoardProps, EntityChartBlock, type EntityChartBlockProps, type EntityColumn, EntityDataScope, EntityGrid, type EntityLayout, EntityReferenceKindPicker, type EntityReferenceKindPickerProps, type EntityRow, type EntitySource, type EntityTable, EntityTablePage, type EntityTablePageProps, ExportMenu, type ExportMenuProps, FIELD_RULE_KIND_LABEL, FIELD_RULE_KIND_VALUES, FIELD_SENSITIVITY_LABEL, FIELD_TYPE_CATALOGUE, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FOOTER_WORDS, FORMULA_OP_JOINS, FORMULA_OP_LABEL, FORMULA_OP_VALUES, FORM_FLOWS, FORM_NOT_HERE_LINE, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldRuleKindValue, type FieldTypeChoice, FilePicker, type FilePickerProps, type FilterPageBlock, type FooterPlacement, type FormAsked, FormBuilder, type FormBuilderProps, type FormFlow, type FormLook, FormLookFrame, type FormLookFrameProps, FormLookLogo, type FormLookView, type FormPageBlock, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, type FormulaOp, Grid, GridCell, type GridContextRecord, type GridContextSnapshot, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, GuessedFieldType, type HeadingPageBlock, HistoryPanel, type HistoryPanelProps, type HostLayout, INBOX_GROUPINGS, INBOX_VIEWS, IN_MEMORY_QUEUE_REASON, ImportNotice, type ImportNoticeProps, type ImportSource, ImportWizard, type ImportWizardProps, InTableToolbar, type InboxGroup, type InboxGrouping, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LOOK_WORDS, type LabelLookup, type LinkRail, type ListPageBlock, MACHINE_IDENTITY, MANUAL_SORT, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, MOST_NEW_COLUMNS, type MainView, type MoveWritten, MyChecklistSteps, NEEDS_A_SENTENCE, NEW_COLUMN_TYPES, NOT_DRAWN_HERE, NO_AGENT_PORT, NO_CHAT_REASON, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_RULES_YET, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewColumn, type NewColumnType, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, ObjectAction, ObjectActionContextMenuItems, ObjectActionGlyph, ObjectActionIcon, ObjectActionMenuItems, type ObjectActionMenuItemsProps, type OpenRecordsAsk, type OrganizationMember, PAGE_BLOCK_KINDS, PAGE_BLOCK_LABEL, PAGE_KIND, PAGE_VIEWS, PAGE_VIEW_LABEL, PARITY_LABEL, PARITY_MADE_OF, PORTAL_NOT_HERE_LINE, PROPOSED_CHANGE_ACT_LABEL, PROPOSED_CHANGE_ACT_VALUES, type PageBlock, type PageBlockKind, PageScreen, type PageScreenProps, type PageView, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, PickOrAdd, type PickOrAddItem, type PickOrAddProps, type PickableFieldType, type PickerTable, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, PortalCardView, type PortalCardViewProps, PortalLookEditor, type PortalLookEditorProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, type ProposedChangeAct, ProvenanceBadge, PublicPicturePicker, type PublicPicturePickerProps, PublicViewPage, type PublicViewPageProps, QUESTION_OPS, QUESTION_SURFACE, type QuestionAnswer, QuestionAnswerView, type QuestionGroup, type QuestionMeasure, type QuestionOp, QuestionPanel, type QuestionPanelProps, type QuestionRow, type QuestionShow, type QuestionSpec, RECORDS_GRID_ROW_PX, RECORDS_SKELETON_LAYOUTS, ROLLUP_AGG_LABEL, ROLLUP_AGG_VALUES, RULE_NOT_HERE_LINE, type ReaskContext, type ReasonGroup, type RecordActionHost, RecordActionMenu, type RecordActionMenuProps, type RecordActionSubject, type RecordActionsInput, RecordBody, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, type RecordMoves, type RecordPageBlock, RecordPanel, type RecordPanelProps, RecordValue, RecordsMount, type RecordsMountProps, RecordsSkeleton, type RecordsSkeletonLayout, type RecordsSkeletonProps, RecordsTableCard, type RecordsTableCardProps, type RecordsUiHost, RecordsUiProvider, ReferenceBuilder, type ReferenceBuilderProps, type ReferenceChoice, RefusalLine, RefusalNotice, type RefusedRow, type RelationFieldType, RelationPicker, type RelationPickerProps, type RenderTextSlot, type ResolveName, type RichTextEditProps, type RollupAgg, SAVED_VIEWS_UNAVAILABLE, SAVE_TO_TABLE_TYPES, SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS, SECTIONS_UNKNOWN, SERIES_COLORS, SHARE_NOT_YOURS_LINE, SIGNED_WORD, SOMEBODY, STAGE_RULE_ON_FAIL_LABEL, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, STORE_KEEPS_TIMELINE, STORE_KEPT_LAYOUTS, SUBSCRIPTION_CADENCES, SUBSCRIPTION_CADENCE_LABEL, SUBSCRIPTION_CHANNEL_LABEL, SUBSCRIPTION_CHANNEL_VALUES, SaveToTable, type SaveToTableProps, type SaveToTableSource, type SavedDashboard, type SavedForm, type SavedQuestion, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, ShowListsToggle, type ShownViewReport, SignBlock, type SignBlockProps, SignaturePad, SignatureValue, type SnoozeChoice, type SortStateAction, SortStateControl, type SortStateControlProps, StageRulesSection, type StageRulesSectionProps, type StandardColumn, StandardRecordForm, type StandardRecordFormProps, StepRow, type SubscriptionChannel, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NAME_MAX, TABLE_NOT_REACHABLE, TABLE_TOOLBAR_ROW_CLASS, THE_SYSTEM, TIMELINE_ZOOMS, TableActionHost, TableAsk, type TableAskProps, TableDetails, TableDuplicateDialog, type TableDuplicateDialogProps, TableFoundationSwitch, type TableLane, type TableOpening, TablePage, type TablePageActionHost, type TablePageHeaderChrome, type TablePageProps, TablePageSkeleton, type TablePageSource, type TablePickerEntries, type TablePickerEntry, TableReferenceDialog, TableRenameDialog, TableRestoreRefused, type TableRights, TableSettings, type TableSettingsProps, TableShape, TableToolbarSlotContext, TablesHome, type TablesHomeProps, TemplatePreview, type TemplatePreviewProps, type TextPageBlock, type ThroughCondition, type TimelineSettings, TimelineView, type TimelineViewProps, type TimelineZoom, type TitleRepeats, type TrackedVersion, UNREAD_RECORD_LABEL, type UseSystemTableState, VIEW_ADDRESS_KEYS, VIEW_KEYS, VIEW_LAYOUTS, VIEW_NEEDS, VIEW_NOT_SAVED_YET, VISIBILITY_LANES, VISIBILITY_LANE_TITLE, type ViewAddressSort, type ViewAddressState, ViewBar, type ViewBarProps, type ViewKeyDeclaration, type ViewKeyLayout, type ViewKeyWriter, type ViewLayout, type ViewLook, type ViewNeed, type ViewNeedKind, ViewNeeds, type ViewNeedsProps, type ViewSettings, type ViewSettingsPatch, type ViewSort, type ViewSortKey, ViewSwitcher, type ViewSwitcherProps, type VisibilityLane, WITHHELD_RECORD_LABEL, WITHHELD_WORD, WORK_APPROVAL_STATES, WORK_APPROVAL_STATE_LABEL, WORK_DUE_STATES, WORK_INBOX_KINDS, WORK_INBOX_KIND_GROUP_LABEL, WORK_INBOX_KIND_LABEL, WhatYouMayDo, WhereItLives, type WhereItLivesProps, type WhoChanged, WhoChangedSource, WithheldValue, actorBadge, actorWords, addDays, announceTableArchived, applyLook, archiveConfirmSentence, archivedRowLine, asRefusal, askExampleFor, askQuestion, askableFields, blockFromSpec, bodyFieldOf, bodyForReading, bodyFromKeys, calendarDayLabel, calendarDayOf, cameFromLine, cardTitleField, cardWords, carriesTimeOfDay, cellState, choiceAddition, choiceAskSentence, choiceListPatch, choiceNudgeOf, choiceRowsFrom, chooseSurface, codeDependsRefusal, colorFromTheValue, columnDeclarationFor, columnForField, columnFromName, columnNamesFrom, columnsFrom, combineFilter, combineRows, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, copyNameFor, currencyCodeFor, customFieldRequestProblems, dashboardDeclareArgs, dashboardFromSummary, dateFormatFor, dateText, dayAt, dayKeyOf, daysBetween, declareView, defaultViewOf, descriptionPatch, designatedLayoutOf, drawnBelowOnPage, drawnSignatureOf, drillDimensionsOf, drillMeasuresOf, drillPathsOf, drillWhere, duplicateProgressWords, editorKindFor, ensureSystemTable, entityCellValue, entityChoiceColumns, entityNameColumn, entityReferenceSpec, entityShownColumns, entityTableColumns, entityTitleColumn, entityValueText, envelopeFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, fieldsForNewColumns, filterTargets, flatWhere, footerOf, formDeclareArgs, formFromSummary, formLookDocument, formLookFromDocument, formLookView, formPresentation, formatForField, freeColumnName, freshFormName, gridContextKey, gridContextSnapshot, groupInbox, groupLabel, groupReasons, groupableFields, handOrderLine, handOrderSortState, hasTimePart, hintForAPerson, hintIsMachineIdentity, idsOf, isChoiceAddition, isDateField, isEngineerText, isFoundationTable, isId, isKeptTable, isMachineIdentity, isPage, isParityFieldType, isPlainFieldType, isRelationFieldType, isSignatureField, isValueSet, isViewAddressEmpty, keepLook, keptByTheApp, keyFor, kindsWithNoChoice, laneFor, lastChangeSentence, lookDiffers, lookDocument, lookFromDocument, lookPart, looksLikeId, machineIdentityIn, mayNotRestoreLine, measurableFields, memberName, moveRecordValue, newQuestion, nextInWords, nextSummaryAt, notAChoiceSentence, onlyCandidate, openingRail, openingView, packOverlaps, pageBlocksOf, pagePresentation, pageViewFromParam, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pickableTypeOf, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, previewWords, publiclyAnswerable, questionArchive, questionFromDefinition, questionFromWords, questionSave, questionsOf, railFromParam, readLooks, recordActions, recordLink, recordName, recordNameIn, recordsDataSource, refusal, refusalForAPerson, refusalFromThrown, refusalLineForAPerson, refusalOr, refusedFileName, refusedRowsCsv, renderValue, rescheduledValue, resolveTableStyle, revokeConsequence, rowLabelChoices, rowName, rowNameIn, runToNotice, sameRecordLikely, sameViewAddress, saveToViewPlan, saveViewPatch, scalarText, seedIsSatisfied, shapesOfSource, shareUnavailableReason, signatureFileIn, signatureFileOf, signatureWords, singularNoun, skeletonLayoutFor, snoozeChoices, specFromBlock, standardTokenOf, starterPageBlocks, storeDecidesRights, storeKeepsLayout, storePublishesKind, styleFromDecorations, submissionStamp, surfaceChosen, tableName, tableNameProblem, tableOpening, tablePickerEntries, tableReferenceChoices, tableRightsAt, titleRepeats, unknownRailLine, unknownViewLine, unreadableKeys, useCanShare, useChoiceNudge, useDrill, useDrillAnswers, useDrillDefinition, useEmbedHandshake, useEnrichCells, useEntityTable, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, usePickerTables, useRecordActionHost, useRecordLabels, useRecordMoves, useRecordRights, useRecordsUi, useRowColorBy, useRowRights, useSystemTable, useTableRights, useTableToolbarSlot, useTemplatePreview, useViewRecords, useWhoChanged, viewActions, viewAddressFromParams, viewAddressToParams, viewDocument, viewFromRow, viewKeysFor, viewNeedFor, viewPatchDocument, viewSettings, viewSettingsFor, viewSettingsPatch, visibilityLaneFor, whatIsMissing, whatIsMissingForEntityReference, whatTheChoiceListIsMissing, whenWords, whyNotAskable, withheldNoticeOf, withheldSentence, withoutAddition, wordsList };
|
package/dist/index.d.ts
CHANGED
|
@@ -7131,29 +7131,6 @@ type EntityRow = Record<string, unknown> & {
|
|
|
7131
7131
|
id: string;
|
|
7132
7132
|
};
|
|
7133
7133
|
|
|
7134
|
-
/**
|
|
7135
|
-
* THE LOADING FRAME OF EVERY RECORDS SURFACE (lane STABLE-TABLES).
|
|
7136
|
-
*
|
|
7137
|
-
* Arman, 2026-10-06: "The tables do not properly show a loading state so they are jumpy … They
|
|
7138
|
-
* must properly show skeletons and they should not cause shifts … all must have proper loading,
|
|
7139
|
-
* empty state, etc." Measured before this file: a table page went route placeholder → a line of
|
|
7140
|
-
* text → a 160px grey box → a grid frame with 23px rows and its footer under them → the real grid
|
|
7141
|
-
* with 35px rows and its footer 580px lower. Four frames, four geometries.
|
|
7142
|
-
*
|
|
7143
|
-
* ONE skeleton per surface, chosen by a named option, drawn in the frame the loaded surface uses:
|
|
7144
|
-
* · the toolbar row is the page's own toolbar row (`TABLE_TOOLBAR_ROW_CLASS`), at its height;
|
|
7145
|
-
* · `grid` is the data table itself in its loading state — the same header, the same row
|
|
7146
|
-
* height, the same pinned footer — so its geometry is the loaded grid's by construction;
|
|
7147
|
-
* · `kanban`, `gallery`, `list`, `calendar`, `timeline` paint their columns, cards, rows or
|
|
7148
|
-
* cells where the loaded layout puts them;
|
|
7149
|
-
* · `form` and `record` paint the field stack and the body; `chart` reserves the chart's box.
|
|
7150
|
-
*
|
|
7151
|
-
* THE COUNT WHEN NOBODY KNOWS IT. A page frame fills to its edge (Airtable's rule: the grid never
|
|
7152
|
-
* starts short and grows); an embedded frame paints the rows the table had last time, else five
|
|
7153
|
-
* (Notion's inline database paints a short run) — see `rememberedRows.ts`.
|
|
7154
|
-
*
|
|
7155
|
-
* Hosts never style a placeholder of their own: they render this, with a layout.
|
|
7156
|
-
*/
|
|
7157
7134
|
/** Every place a records surface shows while its first read is out. */
|
|
7158
7135
|
type RecordsSkeletonLayout = "grid" | "kanban" | "gallery" | "list" | "calendar" | "timeline" | "form" | "record" | "chart" | "home";
|
|
7159
7136
|
declare const RECORDS_SKELETON_LAYOUTS: readonly RecordsSkeletonLayout[];
|
|
@@ -7174,6 +7151,8 @@ interface RecordsSkeletonProps {
|
|
|
7174
7151
|
embedded?: boolean;
|
|
7175
7152
|
/** Rows to paint; default — page: to the frame's edge, embedded: five. */
|
|
7176
7153
|
rows?: number | "fill";
|
|
7154
|
+
/** The table this page is for: a page frame then paints the rows that table showed last visit. */
|
|
7155
|
+
tableId?: string;
|
|
7177
7156
|
className?: string;
|
|
7178
7157
|
}
|
|
7179
7158
|
/** The body of a layout while its first read is out — where the loaded layout's body will be. */
|
|
@@ -7183,6 +7162,6 @@ declare function RecordsSkeleton({ layout, embedded, rows, className }: RecordsS
|
|
|
7183
7162
|
* at its height (the view, the layout, filter, then the search and the add buttons at the end),
|
|
7184
7163
|
* and the layout's body skeleton below — the boxes the loaded page fills, nothing else.
|
|
7185
7164
|
*/
|
|
7186
|
-
declare function TablePageSkeleton({ layout, embedded, rows, className, }: RecordsSkeletonProps): react.JSX.Element;
|
|
7165
|
+
declare function TablePageSkeleton({ layout, embedded, rows, tableId, className, }: RecordsSkeletonProps): react.JSX.Element;
|
|
7187
7166
|
|
|
7188
7167
|
export { ABSENCE_WORD_LABEL, ABSENCE_WORD_VALUES, ACTION_KINDS, ARCHIVED_NEVER_DESTROYED, ARCHIVE_MEANS, ASK_EXAMPLE, type AbsenceWord, AccentSwatches, type AccentSwatchesProps, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, type AnnounceTableArchived, type AppletPageBlock, ArchiveDeliberatelyDialog, type ArchiveDeliberatelyDialogProps, ArchivedDisclosure, type ArchivedDisclosureProps, ArchivedPortals, type ArchivedPortalsProps, ArchivedView, type ArchivedViewProps, type AskRead, BODY_COLUMN_NAME, BODY_SAVE_PAUSE_MS, BOOKING_NOT_HERE_LINE, BOOKING_PAGE_STATE_LABEL, BOOKING_PAGE_STATE_VALUES, BookingBuilder, type BookingBuilderProps, type BookingPageState, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, type ButtonPageBlock, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CHECKLIST_REQUIREMENT_KINDS, CHECKLIST_REQUIREMENT_LABEL, CONDITION_OPS, CONTEXT_POLICY_LABEL, ADDABLE_TYPES as CUSTOM_FIELD_ADDABLE_TYPES, type CalendarMode, CalendarView, type CalendarViewProps, type CaptureMode, type CaptureQueuePort, CaptureRun, type CaptureRunProps, CaptureSheet, type CaptureSheetProps, type CellAddress, type CellRefusal, type CellState, ChartBlock, type ChartBlockProps, type ChartConfig, ChartFrame, type ChartKind, ChartLegendContent, type ChartPageBlock, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, type ChoiceAddition, type ChoiceAsk, ChoiceAskButtons, ChoiceListEditor, type ChoiceListRow, type CombinedRows, CommentThread, type CommentThreadProps, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, type CustomFieldAddRequest, type CustomFieldAddResult, type CustomFieldSetResult, type CustomFieldValuesRequest, type CustomFieldsAgentDoor, type CustomFieldsAgentState, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FOOTER, DEFAULT_VIEW_NAME, DUE_STATE_LABEL, DashboardCanvas, type DashboardCanvasProps, DigestScheduler, type DigestSchedulerProps, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, ENGINEER_TEXT, ENTITY_REFERENCE_KINDS_MISSING, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, EntityBoard, type EntityBoardProps, EntityChartBlock, type EntityChartBlockProps, type EntityColumn, EntityDataScope, EntityGrid, type EntityLayout, EntityReferenceKindPicker, type EntityReferenceKindPickerProps, type EntityRow, type EntitySource, type EntityTable, EntityTablePage, type EntityTablePageProps, ExportMenu, type ExportMenuProps, FIELD_RULE_KIND_LABEL, FIELD_RULE_KIND_VALUES, FIELD_SENSITIVITY_LABEL, FIELD_TYPE_CATALOGUE, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FOOTER_WORDS, FORMULA_OP_JOINS, FORMULA_OP_LABEL, FORMULA_OP_VALUES, FORM_FLOWS, FORM_NOT_HERE_LINE, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldRuleKindValue, type FieldTypeChoice, FilePicker, type FilePickerProps, type FilterPageBlock, type FooterPlacement, type FormAsked, FormBuilder, type FormBuilderProps, type FormFlow, type FormLook, FormLookFrame, type FormLookFrameProps, FormLookLogo, type FormLookView, type FormPageBlock, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, type FormulaOp, Grid, GridCell, type GridContextRecord, type GridContextSnapshot, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, GuessedFieldType, type HeadingPageBlock, HistoryPanel, type HistoryPanelProps, type HostLayout, INBOX_GROUPINGS, INBOX_VIEWS, IN_MEMORY_QUEUE_REASON, ImportNotice, type ImportNoticeProps, type ImportSource, ImportWizard, type ImportWizardProps, InTableToolbar, type InboxGroup, type InboxGrouping, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LOOK_WORDS, type LabelLookup, type LinkRail, type ListPageBlock, MACHINE_IDENTITY, MANUAL_SORT, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, MOST_NEW_COLUMNS, type MainView, type MoveWritten, MyChecklistSteps, NEEDS_A_SENTENCE, NEW_COLUMN_TYPES, NOT_DRAWN_HERE, NO_AGENT_PORT, NO_CHAT_REASON, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_RULES_YET, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewColumn, type NewColumnType, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, ObjectAction, ObjectActionContextMenuItems, ObjectActionGlyph, ObjectActionIcon, ObjectActionMenuItems, type ObjectActionMenuItemsProps, type OpenRecordsAsk, type OrganizationMember, PAGE_BLOCK_KINDS, PAGE_BLOCK_LABEL, PAGE_KIND, PAGE_VIEWS, PAGE_VIEW_LABEL, PARITY_LABEL, PARITY_MADE_OF, PORTAL_NOT_HERE_LINE, PROPOSED_CHANGE_ACT_LABEL, PROPOSED_CHANGE_ACT_VALUES, type PageBlock, type PageBlockKind, PageScreen, type PageScreenProps, type PageView, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, PickOrAdd, type PickOrAddItem, type PickOrAddProps, type PickableFieldType, type PickerTable, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, PortalCardView, type PortalCardViewProps, PortalLookEditor, type PortalLookEditorProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, type ProposedChangeAct, ProvenanceBadge, PublicPicturePicker, type PublicPicturePickerProps, PublicViewPage, type PublicViewPageProps, QUESTION_OPS, QUESTION_SURFACE, type QuestionAnswer, QuestionAnswerView, type QuestionGroup, type QuestionMeasure, type QuestionOp, QuestionPanel, type QuestionPanelProps, type QuestionRow, type QuestionShow, type QuestionSpec, RECORDS_GRID_ROW_PX, RECORDS_SKELETON_LAYOUTS, ROLLUP_AGG_LABEL, ROLLUP_AGG_VALUES, RULE_NOT_HERE_LINE, type ReaskContext, type ReasonGroup, type RecordActionHost, RecordActionMenu, type RecordActionMenuProps, type RecordActionSubject, type RecordActionsInput, RecordBody, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, type RecordMoves, type RecordPageBlock, RecordPanel, type RecordPanelProps, RecordValue, RecordsMount, type RecordsMountProps, RecordsSkeleton, type RecordsSkeletonLayout, type RecordsSkeletonProps, RecordsTableCard, type RecordsTableCardProps, type RecordsUiHost, RecordsUiProvider, ReferenceBuilder, type ReferenceBuilderProps, type ReferenceChoice, RefusalLine, RefusalNotice, type RefusedRow, type RelationFieldType, RelationPicker, type RelationPickerProps, type RenderTextSlot, type ResolveName, type RichTextEditProps, type RollupAgg, SAVED_VIEWS_UNAVAILABLE, SAVE_TO_TABLE_TYPES, SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS, SECTIONS_UNKNOWN, SERIES_COLORS, SHARE_NOT_YOURS_LINE, SIGNED_WORD, SOMEBODY, STAGE_RULE_ON_FAIL_LABEL, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, STORE_KEEPS_TIMELINE, STORE_KEPT_LAYOUTS, SUBSCRIPTION_CADENCES, SUBSCRIPTION_CADENCE_LABEL, SUBSCRIPTION_CHANNEL_LABEL, SUBSCRIPTION_CHANNEL_VALUES, SaveToTable, type SaveToTableProps, type SaveToTableSource, type SavedDashboard, type SavedForm, type SavedQuestion, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, ShowListsToggle, type ShownViewReport, SignBlock, type SignBlockProps, SignaturePad, SignatureValue, type SnoozeChoice, type SortStateAction, SortStateControl, type SortStateControlProps, StageRulesSection, type StageRulesSectionProps, type StandardColumn, StandardRecordForm, type StandardRecordFormProps, StepRow, type SubscriptionChannel, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NAME_MAX, TABLE_NOT_REACHABLE, TABLE_TOOLBAR_ROW_CLASS, THE_SYSTEM, TIMELINE_ZOOMS, TableActionHost, TableAsk, type TableAskProps, TableDetails, TableDuplicateDialog, type TableDuplicateDialogProps, TableFoundationSwitch, type TableLane, type TableOpening, TablePage, type TablePageActionHost, type TablePageHeaderChrome, type TablePageProps, TablePageSkeleton, type TablePageSource, type TablePickerEntries, type TablePickerEntry, TableReferenceDialog, TableRenameDialog, TableRestoreRefused, type TableRights, TableSettings, type TableSettingsProps, TableShape, TableToolbarSlotContext, TablesHome, type TablesHomeProps, TemplatePreview, type TemplatePreviewProps, type TextPageBlock, type ThroughCondition, type TimelineSettings, TimelineView, type TimelineViewProps, type TimelineZoom, type TitleRepeats, type TrackedVersion, UNREAD_RECORD_LABEL, type UseSystemTableState, VIEW_ADDRESS_KEYS, VIEW_KEYS, VIEW_LAYOUTS, VIEW_NEEDS, VIEW_NOT_SAVED_YET, VISIBILITY_LANES, VISIBILITY_LANE_TITLE, type ViewAddressSort, type ViewAddressState, ViewBar, type ViewBarProps, type ViewKeyDeclaration, type ViewKeyLayout, type ViewKeyWriter, type ViewLayout, type ViewLook, type ViewNeed, type ViewNeedKind, ViewNeeds, type ViewNeedsProps, type ViewSettings, type ViewSettingsPatch, type ViewSort, type ViewSortKey, ViewSwitcher, type ViewSwitcherProps, type VisibilityLane, WITHHELD_RECORD_LABEL, WITHHELD_WORD, WORK_APPROVAL_STATES, WORK_APPROVAL_STATE_LABEL, WORK_DUE_STATES, WORK_INBOX_KINDS, WORK_INBOX_KIND_GROUP_LABEL, WORK_INBOX_KIND_LABEL, WhatYouMayDo, WhereItLives, type WhereItLivesProps, type WhoChanged, WhoChangedSource, WithheldValue, actorBadge, actorWords, addDays, announceTableArchived, applyLook, archiveConfirmSentence, archivedRowLine, asRefusal, askExampleFor, askQuestion, askableFields, blockFromSpec, bodyFieldOf, bodyForReading, bodyFromKeys, calendarDayLabel, calendarDayOf, cameFromLine, cardTitleField, cardWords, carriesTimeOfDay, cellState, choiceAddition, choiceAskSentence, choiceListPatch, choiceNudgeOf, choiceRowsFrom, chooseSurface, codeDependsRefusal, colorFromTheValue, columnDeclarationFor, columnForField, columnFromName, columnNamesFrom, columnsFrom, combineFilter, combineRows, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, copyNameFor, currencyCodeFor, customFieldRequestProblems, dashboardDeclareArgs, dashboardFromSummary, dateFormatFor, dateText, dayAt, dayKeyOf, daysBetween, declareView, defaultViewOf, descriptionPatch, designatedLayoutOf, drawnBelowOnPage, drawnSignatureOf, drillDimensionsOf, drillMeasuresOf, drillPathsOf, drillWhere, duplicateProgressWords, editorKindFor, ensureSystemTable, entityCellValue, entityChoiceColumns, entityNameColumn, entityReferenceSpec, entityShownColumns, entityTableColumns, entityTitleColumn, entityValueText, envelopeFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, fieldsForNewColumns, filterTargets, flatWhere, footerOf, formDeclareArgs, formFromSummary, formLookDocument, formLookFromDocument, formLookView, formPresentation, formatForField, freeColumnName, freshFormName, gridContextKey, gridContextSnapshot, groupInbox, groupLabel, groupReasons, groupableFields, handOrderLine, handOrderSortState, hasTimePart, hintForAPerson, hintIsMachineIdentity, idsOf, isChoiceAddition, isDateField, isEngineerText, isFoundationTable, isId, isKeptTable, isMachineIdentity, isPage, isParityFieldType, isPlainFieldType, isRelationFieldType, isSignatureField, isValueSet, isViewAddressEmpty, keepLook, keptByTheApp, keyFor, kindsWithNoChoice, laneFor, lastChangeSentence, lookDiffers, lookDocument, lookFromDocument, lookPart, looksLikeId, machineIdentityIn, mayNotRestoreLine, measurableFields, memberName, moveRecordValue, newQuestion, nextInWords, nextSummaryAt, notAChoiceSentence, onlyCandidate, openingRail, openingView, packOverlaps, pageBlocksOf, pagePresentation, pageViewFromParam, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pickableTypeOf, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, previewWords, publiclyAnswerable, questionArchive, questionFromDefinition, questionFromWords, questionSave, questionsOf, railFromParam, readLooks, recordActions, recordLink, recordName, recordNameIn, recordsDataSource, refusal, refusalForAPerson, refusalFromThrown, refusalLineForAPerson, refusalOr, refusedFileName, refusedRowsCsv, renderValue, rescheduledValue, resolveTableStyle, revokeConsequence, rowLabelChoices, rowName, rowNameIn, runToNotice, sameRecordLikely, sameViewAddress, saveToViewPlan, saveViewPatch, scalarText, seedIsSatisfied, shapesOfSource, shareUnavailableReason, signatureFileIn, signatureFileOf, signatureWords, singularNoun, skeletonLayoutFor, snoozeChoices, specFromBlock, standardTokenOf, starterPageBlocks, storeDecidesRights, storeKeepsLayout, storePublishesKind, styleFromDecorations, submissionStamp, surfaceChosen, tableName, tableNameProblem, tableOpening, tablePickerEntries, tableReferenceChoices, tableRightsAt, titleRepeats, unknownRailLine, unknownViewLine, unreadableKeys, useCanShare, useChoiceNudge, useDrill, useDrillAnswers, useDrillDefinition, useEmbedHandshake, useEnrichCells, useEntityTable, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, usePickerTables, useRecordActionHost, useRecordLabels, useRecordMoves, useRecordRights, useRecordsUi, useRowColorBy, useRowRights, useSystemTable, useTableRights, useTableToolbarSlot, useTemplatePreview, useViewRecords, useWhoChanged, viewActions, viewAddressFromParams, viewAddressToParams, viewDocument, viewFromRow, viewKeysFor, viewNeedFor, viewPatchDocument, viewSettings, viewSettingsFor, viewSettingsPatch, visibilityLaneFor, whatIsMissing, whatIsMissingForEntityReference, whatTheChoiceListIsMissing, whenWords, whyNotAskable, withheldNoticeOf, withheldSentence, withoutAddition, wordsList };
|
package/dist/index.js
CHANGED
|
@@ -2116,7 +2116,7 @@ function fieldOptionsOnce(client, fieldId) {
|
|
|
2116
2116
|
}
|
|
2117
2117
|
|
|
2118
2118
|
// src/editors.tsx
|
|
2119
|
-
import { useCallback as useCallback6, useEffect as useEffect11, useRef as useRef11, useState as useState16 } from "react";
|
|
2119
|
+
import { useCallback as useCallback6, useEffect as useEffect11, useLayoutEffect, useRef as useRef11, useState as useState16 } from "react";
|
|
2120
2120
|
import { allowsOtherValues, choiceValuesOf, coerceTypedAnswer, newerKindOf as newerKindOf4, decideTypedChoice, isTheChosen, optionKey as optionKey2, rankTypedMatches as rankTypedMatches3, readTypedTime as readTypedTime2, typedDateText as typedDateText2, typedTimeText as typedTimeText2 } from "@ai-matrx/records";
|
|
2121
2121
|
import { useOptionalRecordsClient as useOptionalRecordsClient7 } from "@ai-matrx/records/react";
|
|
2122
2122
|
import {
|
|
@@ -4109,7 +4109,13 @@ function ClockGlyph() {
|
|
|
4109
4109
|
/* @__PURE__ */ jsx18("path", { d: "M12 6v6l4 2" })
|
|
4110
4110
|
] });
|
|
4111
4111
|
}
|
|
4112
|
-
function TypedDateHelper({
|
|
4112
|
+
function TypedDateHelper({
|
|
4113
|
+
kind,
|
|
4114
|
+
text,
|
|
4115
|
+
onText,
|
|
4116
|
+
label,
|
|
4117
|
+
onPicked
|
|
4118
|
+
}) {
|
|
4113
4119
|
const [open, setOpen] = useState14(false);
|
|
4114
4120
|
const held = readBox(text, kind);
|
|
4115
4121
|
const today = /* @__PURE__ */ new Date();
|
|
@@ -4124,12 +4130,16 @@ function TypedDateHelper({ kind, text, onText, label }) {
|
|
|
4124
4130
|
const pickDay = (d) => {
|
|
4125
4131
|
const day = `${shown4.y}-${pad2(shown4.m + 1)}-${pad2(d)}`;
|
|
4126
4132
|
onText(wordsFor(kind, day, held.time));
|
|
4127
|
-
if (kind === "date")
|
|
4133
|
+
if (kind === "date") {
|
|
4134
|
+
setOpen(false);
|
|
4135
|
+
onPicked?.();
|
|
4136
|
+
}
|
|
4128
4137
|
};
|
|
4129
4138
|
const pickTime = (t) => {
|
|
4130
4139
|
const day = kind === "datetime" ? held.day ?? todayKey : null;
|
|
4131
4140
|
onText(wordsFor(kind, day, t));
|
|
4132
4141
|
setOpen(false);
|
|
4142
|
+
onPicked?.();
|
|
4133
4143
|
};
|
|
4134
4144
|
const turn = (by) => {
|
|
4135
4145
|
const at = new Date(shown4.y, shown4.m + by, 1);
|
|
@@ -4418,6 +4428,17 @@ function draftFromTyping(field2, seed) {
|
|
|
4418
4428
|
if (opens === "words") return seed;
|
|
4419
4429
|
return { typedDraft: true, text: seed, judged: judgeTyped(field2, seed) };
|
|
4420
4430
|
}
|
|
4431
|
+
function ReadsAsNote({ typed: typed2, always, children }) {
|
|
4432
|
+
const note = useRef11(null);
|
|
4433
|
+
const [repeats, setRepeats] = useState16(false);
|
|
4434
|
+
useLayoutEffect(() => {
|
|
4435
|
+
if (always) return;
|
|
4436
|
+
const words2 = (t) => (t ?? "").replace(/^Reads as/, "").replace(/\s+/g, "").toLowerCase();
|
|
4437
|
+
setRepeats(words2(note.current?.textContent) === words2(typed2));
|
|
4438
|
+
}, [typed2, always]);
|
|
4439
|
+
if (repeats) return null;
|
|
4440
|
+
return /* @__PURE__ */ jsx19("span", { ref: note, "data-records-typed-reads-as": "", "data-records-cell-note": "", className: "text-[10px] text-muted-foreground", children });
|
|
4441
|
+
}
|
|
4421
4442
|
function TypedTextControl({ field: field2, value, onChange, disabled, id, onCommit, onCancel }) {
|
|
4422
4443
|
const client = useOptionalRecordsClient7();
|
|
4423
4444
|
const kind = String(editorKindFor(field2));
|
|
@@ -4461,7 +4482,7 @@ function TypedTextControl({ field: field2, value, onChange, disabled, id, onComm
|
|
|
4461
4482
|
return /* @__PURE__ */ jsxs17("span", { className: "flex flex-col gap-0.5", children: [
|
|
4462
4483
|
helper && !disabled ? /* @__PURE__ */ jsxs17("span", { className: "flex min-w-0 items-center gap-0.5", children: [
|
|
4463
4484
|
box,
|
|
4464
|
-
/* @__PURE__ */ jsx19(TypedDateHelper, { kind: helper, text: value.text, onText: retype, label: fieldName(field2) })
|
|
4485
|
+
/* @__PURE__ */ jsx19(TypedDateHelper, { kind: helper, text: value.text, onText: retype, label: fieldName(field2), onPicked: onCommit })
|
|
4465
4486
|
] }) : box,
|
|
4466
4487
|
judged === null ? /* @__PURE__ */ jsxs17("span", { "data-records-cell-note": "", className: "text-[10px] text-muted-foreground", children: [
|
|
4467
4488
|
"Reading ",
|
|
@@ -4495,7 +4516,7 @@ function TypedTextControl({ field: field2, value, onChange, disabled, id, onComm
|
|
|
4495
4516
|
}
|
|
4496
4517
|
),
|
|
4497
4518
|
judged.cancelOnly && onCancel ? /* @__PURE__ */ jsx19("span", { "data-records-choice-ask": "", children: /* @__PURE__ */ jsx19(Button8, { type: "button", size: "sm", variant: "ghost", className: "h-6 px-2 text-xs", onClick: () => onCancel(), children: "Cancel" }) }) : null
|
|
4498
|
-
] }) : judged.value === null || judged.value === void 0 ? null : /* @__PURE__ */ jsxs17(
|
|
4519
|
+
] }) : judged.value === null || judged.value === void 0 ? null : /* @__PURE__ */ jsxs17(ReadsAsNote, { typed: value.text, always: isChoiceAddition(judged.value), children: [
|
|
4499
4520
|
isChoiceAddition(judged.value) ? `Adds ${quoted(judged.value.add)} to the choices for ${fieldName(field2)}. ` : null,
|
|
4500
4521
|
"Reads as",
|
|
4501
4522
|
" ",
|
|
@@ -4508,7 +4529,7 @@ function TypedTextControl({ field: field2, value, onChange, disabled, id, onComm
|
|
|
4508
4529
|
const shown4 = format ?? (kind === "datetime" ? { id: carriesTimeOfDay(field2, judged.value) ? "datetime" : "date" } : void 0);
|
|
4509
4530
|
return shown4 ? /* @__PURE__ */ jsx19(FormattedValue, { value: judged.value, format: shown4 }) : String(judged.value);
|
|
4510
4531
|
})()
|
|
4511
|
-
] })
|
|
4532
|
+
] }, value.text)
|
|
4512
4533
|
] });
|
|
4513
4534
|
}
|
|
4514
4535
|
function isPersonsName(field2) {
|
|
@@ -5750,7 +5771,7 @@ function KindValueCell({
|
|
|
5750
5771
|
}
|
|
5751
5772
|
|
|
5752
5773
|
// src/ClampedChips.tsx
|
|
5753
|
-
import { useCallback as useCallback8, useLayoutEffect, useRef as useRef13, useState as useState19 } from "react";
|
|
5774
|
+
import { useCallback as useCallback8, useLayoutEffect as useLayoutEffect2, useRef as useRef13, useState as useState19 } from "react";
|
|
5754
5775
|
import { Popover as Popover4, PopoverContent as PopoverContent4, PopoverTrigger as PopoverTrigger4, cn as cn17 } from "@ai-matrx/design-system";
|
|
5755
5776
|
import { jsx as jsx24, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
5756
5777
|
var GAP = 4;
|
|
@@ -5791,13 +5812,13 @@ function ClampedChips({
|
|
|
5791
5812
|
setMeasuring(false);
|
|
5792
5813
|
}, [stands]);
|
|
5793
5814
|
const key = items.map((i) => i.key).join("|");
|
|
5794
|
-
|
|
5815
|
+
useLayoutEffect2(() => {
|
|
5795
5816
|
setMeasuring(true);
|
|
5796
5817
|
}, [key, total]);
|
|
5797
|
-
|
|
5818
|
+
useLayoutEffect2(() => {
|
|
5798
5819
|
if (measuring) measure();
|
|
5799
5820
|
}, [measuring, measure]);
|
|
5800
|
-
|
|
5821
|
+
useLayoutEffect2(() => {
|
|
5801
5822
|
const el = box.current;
|
|
5802
5823
|
if (!el || typeof ResizeObserver === "undefined") return;
|
|
5803
5824
|
let last = el.clientWidth;
|
|
@@ -7225,18 +7246,23 @@ function GridCell({
|
|
|
7225
7246
|
const editable = Boolean(editing) && canWrite && fieldIsEditable(field2);
|
|
7226
7247
|
if (open && editing) {
|
|
7227
7248
|
return /* @__PURE__ */ jsxs23("span", { "data-records-open-cell": "", className: "relative block w-full min-w-0", children: [
|
|
7228
|
-
/* @__PURE__ */
|
|
7229
|
-
|
|
7230
|
-
|
|
7231
|
-
|
|
7232
|
-
|
|
7233
|
-
|
|
7234
|
-
|
|
7235
|
-
|
|
7236
|
-
|
|
7237
|
-
|
|
7238
|
-
|
|
7239
|
-
|
|
7249
|
+
/* @__PURE__ */ jsxs23("span", { "aria-hidden": "true", inert: true, "data-records-cell-ghost": "", className: "pointer-events-none invisible flex w-full min-w-0 select-none items-center gap-1", children: [
|
|
7250
|
+
/* @__PURE__ */ jsx28("span", { className: "block min-w-0 flex-1 truncate px-1 py-0.5", children: /* @__PURE__ */ jsx28(
|
|
7251
|
+
RecordValue,
|
|
7252
|
+
{
|
|
7253
|
+
inCell: true,
|
|
7254
|
+
field: field2,
|
|
7255
|
+
value: row.document?.[field2.key],
|
|
7256
|
+
document: row.document,
|
|
7257
|
+
recordId: row.id,
|
|
7258
|
+
withheld: withheldNoticeOf(row.hidden, field2.key),
|
|
7259
|
+
...format ? { format } : {}
|
|
7260
|
+
}
|
|
7261
|
+
) }),
|
|
7262
|
+
onAskWhoChanged ? /* @__PURE__ */ jsx28(WhoBadge, { field: field2, row, onAskWhoChanged: () => {
|
|
7263
|
+
}, onPressedTwice: () => {
|
|
7264
|
+
} }) : null
|
|
7265
|
+
] }),
|
|
7240
7266
|
/* @__PURE__ */ jsx28(
|
|
7241
7267
|
OpenCell,
|
|
7242
7268
|
{
|
|
@@ -7267,7 +7293,7 @@ function GridCell({
|
|
|
7267
7293
|
}
|
|
7268
7294
|
if (editorKindFor(field2) === "checkbox") {
|
|
7269
7295
|
const answered = value === true || value === false;
|
|
7270
|
-
return /* @__PURE__ */ jsxs23("span", { "data-matrx-cell-control": "", className: "flex w-full flex-wrap items-center gap-1.5", children: [
|
|
7296
|
+
return /* @__PURE__ */ jsxs23("span", { "data-matrx-cell-control": "", className: "relative flex w-full flex-wrap items-center gap-1.5", children: [
|
|
7271
7297
|
/* @__PURE__ */ jsx28(
|
|
7272
7298
|
Checkbox4,
|
|
7273
7299
|
{
|
|
@@ -7284,9 +7310,9 @@ function GridCell({
|
|
|
7284
7310
|
] });
|
|
7285
7311
|
}
|
|
7286
7312
|
if (editable && format?.id === "rating") {
|
|
7287
|
-
return /* @__PURE__ */ jsxs23("span", { "data-matrx-cell-control": "", className: "flex w-full flex-wrap items-center gap-1.5", children: [
|
|
7313
|
+
return /* @__PURE__ */ jsxs23("span", { "data-matrx-cell-control": "", className: "relative flex w-full flex-wrap items-center gap-1.5", children: [
|
|
7288
7314
|
/* @__PURE__ */ jsx28(FormattedValue, { value, format, onRate: (next) => editing?.setCell(row.id, field2.key, next), selectFirst: true }),
|
|
7289
|
-
state === "saving" ? /* @__PURE__ */ jsx28("span", { className: "text-[10px] text-muted-foreground", children: "Saving\u2026" }) : null,
|
|
7315
|
+
state === "saving" ? /* @__PURE__ */ jsx28("span", { "data-records-cell-saving": "", className: "pointer-events-none absolute right-1 top-1/2 z-10 -translate-y-1/2 rounded bg-card/90 px-1 text-[10px] text-muted-foreground", children: "Saving\u2026" }) : null,
|
|
7290
7316
|
refusal4 ? /* @__PURE__ */ jsx28(CellRefusalNotice, { refusal: refusal4, field: field2, row, editing, typed: false }) : null
|
|
7291
7317
|
] });
|
|
7292
7318
|
}
|
|
@@ -7399,7 +7425,7 @@ function GridCell({
|
|
|
7399
7425
|
}
|
|
7400
7426
|
) : null
|
|
7401
7427
|
] }),
|
|
7402
|
-
state === "saving" ? /* @__PURE__ */ jsx28("span", { className: "px-1 text-[10px] text-muted-foreground", children: "Saving\u2026" }) : null,
|
|
7428
|
+
state === "saving" ? /* @__PURE__ */ jsx28("span", { "data-records-cell-saving": "", className: "pointer-events-none absolute right-1 top-1/2 z-10 -translate-y-1/2 rounded bg-card/90 px-1 text-[10px] text-muted-foreground", children: "Saving\u2026" }) : null,
|
|
7403
7429
|
refusal4 ? /* @__PURE__ */ jsx28(CellRefusalNotice, { refusal: refusal4, field: field2, row, editing, typed: true }) : null
|
|
7404
7430
|
]
|
|
7405
7431
|
}
|
|
@@ -7447,8 +7473,9 @@ function CellRefusalNotice({
|
|
|
7447
7473
|
type: "button",
|
|
7448
7474
|
"data-records-cell-refusal-line": "",
|
|
7449
7475
|
title: line,
|
|
7450
|
-
|
|
7451
|
-
|
|
7476
|
+
"aria-label": line,
|
|
7477
|
+
className: "absolute right-1 top-1/2 z-10 flex h-4 w-4 -translate-y-1/2 items-center justify-center rounded-full bg-destructive text-[10px] font-bold leading-none text-destructive-foreground",
|
|
7478
|
+
children: "!"
|
|
7452
7479
|
}
|
|
7453
7480
|
) }),
|
|
7454
7481
|
/* @__PURE__ */ jsx28(
|
|
@@ -7483,12 +7510,12 @@ function WhoBadge({
|
|
|
7483
7510
|
{
|
|
7484
7511
|
type: "button",
|
|
7485
7512
|
"data-records-who-badge": "",
|
|
7486
|
-
"data-who-text": who.badge ?? "
|
|
7513
|
+
"data-who-text": who.badge ?? "",
|
|
7487
7514
|
"aria-hidden": "true",
|
|
7488
7515
|
tabIndex: -1,
|
|
7489
7516
|
"aria-label": `Who changed ${fieldName(field2)}?`,
|
|
7490
7517
|
title: who.sentence ?? `Who changed ${fieldName(field2)}? (Option-Shift-H)`,
|
|
7491
|
-
className: "hidden max-w-[9rem] shrink-0 select-none truncate rounded px-1 text-[10px] leading-4 text-muted-foreground before:content-[attr(data-who-text)] hover:bg-muted in-data-[matrx-cell-active=true]:inline-flex",
|
|
7518
|
+
className: "hidden max-w-[9rem] shrink-0 select-none items-center truncate rounded px-1 text-[10px] leading-4 text-muted-foreground before:content-[attr(data-who-text)] hover:bg-muted in-data-[matrx-cell-active=true]:inline-flex",
|
|
7492
7519
|
onMouseEnter: ask,
|
|
7493
7520
|
onClick: (event) => {
|
|
7494
7521
|
event.preventDefault();
|
|
@@ -7500,7 +7527,11 @@ function WhoBadge({
|
|
|
7500
7527
|
event.preventDefault();
|
|
7501
7528
|
event.stopPropagation();
|
|
7502
7529
|
onPressedTwice();
|
|
7503
|
-
}
|
|
7530
|
+
},
|
|
7531
|
+
children: who.badge ? null : /* @__PURE__ */ jsxs23("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", width: "12", height: "12", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "data-records-who-glyph": "", children: [
|
|
7532
|
+
/* @__PURE__ */ jsx28("circle", { cx: "12", cy: "12", r: "9" }),
|
|
7533
|
+
/* @__PURE__ */ jsx28("path", { d: "M12 7v5l3 2" })
|
|
7534
|
+
] })
|
|
7504
7535
|
}
|
|
7505
7536
|
)
|
|
7506
7537
|
);
|
|
@@ -7675,7 +7706,7 @@ function OpenCell({
|
|
|
7675
7706
|
}
|
|
7676
7707
|
),
|
|
7677
7708
|
/* @__PURE__ */ jsxs23("span", { "data-records-cell-tray": "", className: FLOATING_CELL_TRAY_CLASS, children: [
|
|
7678
|
-
picker || asksAboutAChoice(draft) ? null : blurCommits ?
|
|
7709
|
+
picker || asksAboutAChoice(draft) ? null : blurCommits ? null : /* @__PURE__ */ jsxs23("span", { className: cn19("flex items-center gap-1", FLOATING_CELL_TRAY_PIECE_CLASS), children: [
|
|
7679
7710
|
/* @__PURE__ */ jsx28(Button10, { size: "sm", onClick: () => once(() => onCommit(null, "pick")), children: "Save" }),
|
|
7680
7711
|
/* @__PURE__ */ jsx28(Button10, { size: "sm", variant: "ghost", onClick: () => once(() => onCancel("pick")), children: "Cancel" })
|
|
7681
7712
|
] }),
|
|
@@ -7710,9 +7741,19 @@ function rememberRowCount(key, count) {
|
|
|
7710
7741
|
}
|
|
7711
7742
|
|
|
7712
7743
|
// src/RecordsSkeleton.tsx
|
|
7744
|
+
import { useSyncExternalStore } from "react";
|
|
7713
7745
|
import { cn as cn20, Skeleton as Skeleton2 } from "@ai-matrx/design-system";
|
|
7714
7746
|
import { MatrxDataTable } from "@ai-matrx/design-system/data-table";
|
|
7715
7747
|
import { Fragment as Fragment8, jsx as jsx29, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
7748
|
+
var NEVER = () => () => {
|
|
7749
|
+
};
|
|
7750
|
+
function useRememberedPageRows(tableId) {
|
|
7751
|
+
return useSyncExternalStore(
|
|
7752
|
+
NEVER,
|
|
7753
|
+
() => tableId ? rememberedRowCount(`${tableId}:page:last`, 100, "fill") : "fill",
|
|
7754
|
+
() => "fill"
|
|
7755
|
+
);
|
|
7756
|
+
}
|
|
7716
7757
|
var RECORDS_SKELETON_LAYOUTS = [
|
|
7717
7758
|
"grid",
|
|
7718
7759
|
"kanban",
|
|
@@ -7850,8 +7891,11 @@ function TablePageSkeleton({
|
|
|
7850
7891
|
layout = "grid",
|
|
7851
7892
|
embedded = false,
|
|
7852
7893
|
rows,
|
|
7894
|
+
tableId,
|
|
7853
7895
|
className
|
|
7854
7896
|
}) {
|
|
7897
|
+
const remembered = useRememberedPageRows(embedded ? void 0 : tableId);
|
|
7898
|
+
const painted = rows ?? (remembered === "fill" ? void 0 : remembered);
|
|
7855
7899
|
return /* @__PURE__ */ jsx29("div", { className: cn20(TABLE_PAGE_FRAME_CLASS, className), "data-records-skeleton-page": layout, children: /* @__PURE__ */ jsxs24("div", { className: TABLE_PAGE_COLUMN_CLASS, children: [
|
|
7856
7900
|
/* @__PURE__ */ jsxs24("div", { className: TABLE_TOOLBAR_ROW_CLASS, "data-table-toolbar": "", "data-records-skeleton-part": "toolbar", "aria-hidden": "true", children: [
|
|
7857
7901
|
/* @__PURE__ */ jsx29(Skeleton2, { shape: "control", width: "sm", className: "w-28" }),
|
|
@@ -7862,7 +7906,7 @@ function TablePageSkeleton({
|
|
|
7862
7906
|
/* @__PURE__ */ jsx29(Skeleton2, { shape: "control", className: "w-24" })
|
|
7863
7907
|
] })
|
|
7864
7908
|
] }),
|
|
7865
|
-
/* @__PURE__ */ jsx29("div", { className: "flex min-h-0 flex-1 flex-col gap-2", "data-table-records": "", children: /* @__PURE__ */ jsx29(RecordsSkeleton, { layout, embedded, ...
|
|
7909
|
+
/* @__PURE__ */ jsx29("div", { className: "flex min-h-0 flex-1 flex-col gap-2", "data-table-records": "", children: /* @__PURE__ */ jsx29(RecordsSkeleton, { layout, embedded, ...painted !== void 0 ? { rows: painted } : {} }) })
|
|
7866
7910
|
] }) });
|
|
7867
7911
|
}
|
|
7868
7912
|
|
|
@@ -16318,7 +16362,7 @@ function useEnrichCells(tableId, recordIds) {
|
|
|
16318
16362
|
}, [refresh]);
|
|
16319
16363
|
return { cells, refresh, error };
|
|
16320
16364
|
}
|
|
16321
|
-
var
|
|
16365
|
+
var NEVER2 = "Fill it in once and leave it alone";
|
|
16322
16366
|
function EnrichPanel({ tableId, fieldId, className }) {
|
|
16323
16367
|
const client = useRecordsClient30();
|
|
16324
16368
|
const host = useRecordsUi();
|
|
@@ -16441,7 +16485,7 @@ function EnrichPanel({ tableId, fieldId, className }) {
|
|
|
16441
16485
|
{
|
|
16442
16486
|
id: "new-every",
|
|
16443
16487
|
value: setup.every,
|
|
16444
|
-
placeholder:
|
|
16488
|
+
placeholder: NEVER2,
|
|
16445
16489
|
onChange: (e) => setDraft((prev) => ({ ...prev, [fieldId]: { ...setup, every: e.target.value } }))
|
|
16446
16490
|
}
|
|
16447
16491
|
)
|
|
@@ -16536,14 +16580,14 @@ function EnrichPanel({ tableId, fieldId, className }) {
|
|
|
16536
16580
|
id: `every-${row.field_id}`,
|
|
16537
16581
|
value: d.every,
|
|
16538
16582
|
disabled: !rights.admin,
|
|
16539
|
-
placeholder:
|
|
16583
|
+
placeholder: NEVER2,
|
|
16540
16584
|
onChange: (e) => setDraft((prev) => ({
|
|
16541
16585
|
...prev,
|
|
16542
16586
|
[row.field_id]: { ...d, every: e.target.value }
|
|
16543
16587
|
}))
|
|
16544
16588
|
}
|
|
16545
16589
|
),
|
|
16546
|
-
/* @__PURE__ */ jsx57("p", { className: "text-[11px] text-muted-foreground", children: d.every ? `${d.every} days` :
|
|
16590
|
+
/* @__PURE__ */ jsx57("p", { className: "text-[11px] text-muted-foreground", children: d.every ? `${d.every} days` : NEVER2 })
|
|
16547
16591
|
] })
|
|
16548
16592
|
] }),
|
|
16549
16593
|
/* @__PURE__ */ jsxs52("p", { className: "text-xs text-muted-foreground", children: [
|
|
@@ -16889,7 +16933,7 @@ function withTypeMark(field2, header) {
|
|
|
16889
16933
|
}
|
|
16890
16934
|
|
|
16891
16935
|
// src/ReverseColumns.tsx
|
|
16892
|
-
import { useCallback as useCallback21, useEffect as useEffect40, useMemo as useMemo27, useRef as useRef26, useState as useState49, useSyncExternalStore } from "react";
|
|
16936
|
+
import { useCallback as useCallback21, useEffect as useEffect40, useMemo as useMemo27, useRef as useRef26, useState as useState49, useSyncExternalStore as useSyncExternalStore2 } from "react";
|
|
16893
16937
|
import { useFields as useFields6, useReverseColumns as useReverseColumns3, useReverseLinks, useTable as useTable4 } from "@ai-matrx/records/react";
|
|
16894
16938
|
import { Button as Button34, Dialog as Dialog10, DialogContent as DialogContent10, DialogHeader as DialogHeader10, DialogTitle as DialogTitle10, Separator as Separator4, Skeleton as Skeleton5, cn as cn33 } from "@ai-matrx/design-system";
|
|
16895
16939
|
import { Fragment as Fragment17, jsx as jsx59, jsxs as jsxs54 } from "react/jsx-runtime";
|
|
@@ -17009,8 +17053,8 @@ function ReverseCell({ held, column, rowId, tableId }) {
|
|
|
17009
17053
|
},
|
|
17010
17054
|
[held]
|
|
17011
17055
|
);
|
|
17012
|
-
const answer =
|
|
17013
|
-
const reading =
|
|
17056
|
+
const answer = useSyncExternalStore2(subscribe, () => held.answers?.[column.key]?.[rowId]);
|
|
17057
|
+
const reading = useSyncExternalStore2(subscribe, () => held.reading);
|
|
17014
17058
|
return /* @__PURE__ */ jsx59(ReverseLinkChips, { column, answer, loading: reading, clamp: { tableId, recordId: rowId } });
|
|
17015
17059
|
}
|
|
17016
17060
|
var EMPTY_COLUMNS = [];
|
|
@@ -19976,7 +20020,7 @@ function useGroupLabel(fields, groupKey) {
|
|
|
19976
20020
|
}
|
|
19977
20021
|
|
|
19978
20022
|
// src/gridUndo.tsx
|
|
19979
|
-
import { useCallback as useCallback23, useEffect as useEffect44, useLayoutEffect as
|
|
20023
|
+
import { useCallback as useCallback23, useEffect as useEffect44, useLayoutEffect as useLayoutEffect3, useMemo as useMemo31, useRef as useRef28, useState as useState54, useSyncExternalStore as useSyncExternalStore3 } from "react";
|
|
19980
20024
|
import { tableShapeChanged as tableShapeChanged5, useRecordsClient as useRecordsClient34 } from "@ai-matrx/records/react";
|
|
19981
20025
|
import { announceRecordChanged as announceRecordChanged2 } from "@ai-matrx/records/core";
|
|
19982
20026
|
import { Button as Button38 } from "@ai-matrx/design-system";
|
|
@@ -20131,7 +20175,7 @@ function useUndoSource(undo) {
|
|
|
20131
20175
|
);
|
|
20132
20176
|
const { back, forward } = undo.depth;
|
|
20133
20177
|
const busy = undo.busy;
|
|
20134
|
-
|
|
20178
|
+
useLayoutEffect3(() => {
|
|
20135
20179
|
const held = box.current.face;
|
|
20136
20180
|
if (held.back === back && held.forward === forward && held.busy === busy) return;
|
|
20137
20181
|
box.current.face = { back, forward, busy };
|
|
@@ -20140,7 +20184,7 @@ function useUndoSource(undo) {
|
|
|
20140
20184
|
return source;
|
|
20141
20185
|
}
|
|
20142
20186
|
function UndoRedoLive({ source }) {
|
|
20143
|
-
const face =
|
|
20187
|
+
const face = useSyncExternalStore3(source.subscribe, source.face, source.face);
|
|
20144
20188
|
return /* @__PURE__ */ jsx66(UndoRedoPair, { face, onUndo: source.undo, onRedo: source.redo });
|
|
20145
20189
|
}
|
|
20146
20190
|
function UndoRedoPair({ face, onUndo, onRedo }) {
|
|
@@ -23043,8 +23087,11 @@ function GridBody({
|
|
|
23043
23087
|
const rowMemoryKey = `${tableId}:${embedded ? "embedded" : "page"}:${openingKey}`;
|
|
23044
23088
|
const rowsAnswered = Boolean(records.data) && !records.loading && !table.loading && !fields.loading;
|
|
23045
23089
|
useEffect47(() => {
|
|
23046
|
-
if (rowsAnswered)
|
|
23047
|
-
|
|
23090
|
+
if (rowsAnswered) {
|
|
23091
|
+
rememberRowCount(rowMemoryKey, rows.length);
|
|
23092
|
+
if (!embedded) rememberRowCount(`${tableId}:page:last`, rows.length);
|
|
23093
|
+
}
|
|
23094
|
+
}, [rowsAnswered, rowMemoryKey, rows.length, embedded, tableId]);
|
|
23048
23095
|
if (table.error) return /* @__PURE__ */ jsx70(RefusalNotice, { error: table.error, className });
|
|
23049
23096
|
if (fields.error) return /* @__PURE__ */ jsx70(RefusalNotice, { error: fields.error, className });
|
|
23050
23097
|
const nothingToShowYet = table.loading || fields.loading || !rights.known || records.loading && rows.length === 0 || // The page read has neither answered nor refused: nothing has been said yet, so nothing is empty.
|
|
@@ -24818,6 +24865,7 @@ import { BasicInput as BasicInput16, Button as Button50, Select as Select10, Sel
|
|
|
24818
24865
|
|
|
24819
24866
|
// src/newTableColumns.ts
|
|
24820
24867
|
import { RESOLVABLE_FIELD_TYPE_WORDS } from "@ai-matrx/records/templates";
|
|
24868
|
+
import { parseDelimited as parseDelimited2 } from "@ai-matrx/kit/delimited";
|
|
24821
24869
|
var NEW_COLUMN_TYPES = [
|
|
24822
24870
|
{ type: "text", words: "Text" },
|
|
24823
24871
|
{ type: "rich_text", words: "Formatted text" },
|
|
@@ -24914,7 +24962,7 @@ function specsFrom(text) {
|
|
|
24914
24962
|
let parts;
|
|
24915
24963
|
const firstLine = trimmed.split(/\r?\n/)[0];
|
|
24916
24964
|
if (firstLine.includes(" ")) {
|
|
24917
|
-
parts =
|
|
24965
|
+
parts = parseDelimited2(trimmed, { delimiter: " ", strayQuotes: "literal" }).data[0] ?? [];
|
|
24918
24966
|
} else if (/\r?\n/.test(trimmed)) {
|
|
24919
24967
|
parts = trimmed.split(/\r?\n/).map((line) => line.replace(BULLET, ""));
|
|
24920
24968
|
} else {
|
|
@@ -47302,6 +47350,13 @@ var RAIL_TITLE = {
|
|
|
47302
47350
|
"who-changed": "Who changed this",
|
|
47303
47351
|
export: "Export"
|
|
47304
47352
|
};
|
|
47353
|
+
function LookGlyph() {
|
|
47354
|
+
return /* @__PURE__ */ jsxs144("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", width: "14", height: "14", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
47355
|
+
/* @__PURE__ */ jsx155("path", { d: "M4 7h10M18 7h2M4 17h2M10 17h10" }),
|
|
47356
|
+
/* @__PURE__ */ jsx155("circle", { cx: "16", cy: "7", r: "2" }),
|
|
47357
|
+
/* @__PURE__ */ jsx155("circle", { cx: "8", cy: "17", r: "2" })
|
|
47358
|
+
] });
|
|
47359
|
+
}
|
|
47305
47360
|
function RailFrame({
|
|
47306
47361
|
phone,
|
|
47307
47362
|
title,
|
|
@@ -48133,7 +48188,7 @@ function TablePage({
|
|
|
48133
48188
|
if (table.loading && !table.data) {
|
|
48134
48189
|
return /* @__PURE__ */ jsxs144(Fragment64, { children: [
|
|
48135
48190
|
headerNode,
|
|
48136
|
-
/* @__PURE__ */ jsx155(TablePageSkeleton, { layout: skeletonLayoutFor(hostLayout ? "grid" : shownLayout), embedded, ...className ? { className } : {} })
|
|
48191
|
+
/* @__PURE__ */ jsx155(TablePageSkeleton, { layout: skeletonLayoutFor(hostLayout ? "grid" : shownLayout), embedded, tableId, ...className ? { className } : {} })
|
|
48137
48192
|
] });
|
|
48138
48193
|
}
|
|
48139
48194
|
if (!table.data) {
|
|
@@ -48247,16 +48302,11 @@ function TablePage({
|
|
|
48247
48302
|
) : null,
|
|
48248
48303
|
main === "records" && !hostLayout && !(controlsInSheet && shownLayout === "grid") ? /* @__PURE__ */ jsx155(ViewFilter, { tableId, view: shown4, onApply: (where) => void patchView({ where }) }) : null,
|
|
48249
48304
|
lookShowing && main === "records" && !namingLook ? /* @__PURE__ */ jsx155("span", { className: "flex shrink-0 items-center", "data-view-look": "", "data-view-look-folded": "", "data-toolbar-fit": "look", children: /* @__PURE__ */ jsxs144(DropdownMenu9, { children: [
|
|
48250
|
-
/* @__PURE__ */ jsx155(DropdownMenuTrigger9, { asChild: true, children: /* @__PURE__ */ jsxs144(Button105, { size: "sm", variant: "outline", className: "h-8
|
|
48251
|
-
/* @__PURE__ */ jsx155(
|
|
48252
|
-
|
|
48253
|
-
/* @__PURE__ */ jsxs144("span", { className: "sr-only", children: [
|
|
48254
|
-
": ",
|
|
48255
|
-
LOOK_WORDS.yours
|
|
48256
|
-
] })
|
|
48305
|
+
/* @__PURE__ */ jsx155(DropdownMenuTrigger9, { asChild: true, children: /* @__PURE__ */ jsxs144(Button105, { size: "sm", variant: "outline", className: "relative h-8 w-8 shrink-0 px-0", title: LOOK_WORDS.folded, "aria-label": LOOK_WORDS.folded, "data-view-look-menu": "", children: [
|
|
48306
|
+
/* @__PURE__ */ jsx155(LookGlyph, {}),
|
|
48307
|
+
/* @__PURE__ */ jsx155("span", { "aria-hidden": "true", className: "absolute right-1 top-1 h-1.5 w-1.5 rounded-full bg-primary" })
|
|
48257
48308
|
] }) }),
|
|
48258
48309
|
/* @__PURE__ */ jsxs144(DropdownMenuContent9, { align: "start", className: "w-60", "data-view-look-menu-content": "", children: [
|
|
48259
|
-
/* @__PURE__ */ jsx155(DropdownMenuLabel3, { className: "text-xs font-normal text-muted-foreground", title: LOOK_WORDS.yours, children: LOOK_WORDS.yoursLabel }),
|
|
48260
48310
|
lookSavable ? /* @__PURE__ */ jsx155(DropdownMenuItem7, { onSelect: () => void saveLookToView(), "data-view-look-save": "", children: LOOK_WORDS.saveToView }) : null,
|
|
48261
48311
|
rights.write ? /* @__PURE__ */ jsx155(DropdownMenuItem7, { onSelect: () => setNamingLook(true), "data-view-look-save-new": "", children: LOOK_WORDS.saveAsNew }) : null,
|
|
48262
48312
|
/* @__PURE__ */ jsx155(DropdownMenuItem7, { onSelect: () => void resetLook(), "data-view-look-reset": "", children: LOOK_WORDS.reset })
|
|
@@ -48265,10 +48315,7 @@ function TablePage({
|
|
|
48265
48315
|
/* The reserved place keeps its full width at every row width (STABLE-TABLES): when it
|
|
48266
48316
|
shrank on a narrow row, the look arriving on a sort pushed every control after it.
|
|
48267
48317
|
A row too narrow for it scrolls sideways, as the row already does. */
|
|
48268
|
-
/* @__PURE__ */ jsx155("span", { "aria-hidden": "true", className: "invisible flex shrink-0 items-center overflow-hidden", "data-view-look-place": "", "data-toolbar-fit-gives": "", children: /* @__PURE__ */
|
|
48269
|
-
/* @__PURE__ */ jsx155("span", { className: "h-1.5 w-1.5 shrink-0 rounded-full" }),
|
|
48270
|
-
LOOK_WORDS.folded
|
|
48271
|
-
] }) })
|
|
48318
|
+
/* @__PURE__ */ jsx155("span", { "aria-hidden": "true", className: "invisible flex shrink-0 items-center overflow-hidden", "data-view-look-place": "", "data-toolbar-fit-gives": "", children: /* @__PURE__ */ jsx155(Button105, { size: "sm", variant: "outline", className: "h-8 w-8 shrink-0 px-0", tabIndex: -1, children: /* @__PURE__ */ jsx155(LookGlyph, {}) }) })
|
|
48272
48319
|
) : lookShowing && main === "records" ? /* @__PURE__ */ jsxs144("span", { className: "flex shrink-0 items-center gap-1", "data-view-look": "", "data-toolbar-fit": "look", title: LOOK_WORDS.yours, children: [
|
|
48273
48320
|
/* @__PURE__ */ jsx155("span", { className: "sr-only", children: LOOK_WORDS.yours }),
|
|
48274
48321
|
/* @__PURE__ */ jsx155("span", { "aria-hidden": "true", className: "h-1.5 w-1.5 shrink-0 rounded-full bg-primary" }),
|
|
@@ -48422,7 +48469,17 @@ function TablePage({
|
|
|
48422
48469
|
children: cameFromLine(cameFrom, activeGroupField ?? null, askedInWords)
|
|
48423
48470
|
}
|
|
48424
48471
|
) : null,
|
|
48425
|
-
faceUnknown ?
|
|
48472
|
+
faceUnknown ? (
|
|
48473
|
+
/* REVIEW-FIX 10: a full page paints the rows this table showed last time (else fills). */
|
|
48474
|
+
/* @__PURE__ */ jsx155(
|
|
48475
|
+
RecordsSkeleton,
|
|
48476
|
+
{
|
|
48477
|
+
layout: skeletonLayoutFor(shownLayout),
|
|
48478
|
+
embedded,
|
|
48479
|
+
...embedded ? {} : { rows: rememberedRowCount(`${tableId}:page:last`, 100, "fill") }
|
|
48480
|
+
}
|
|
48481
|
+
)
|
|
48482
|
+
) : /* @__PURE__ */ jsx155(
|
|
48426
48483
|
ViewSwitcher,
|
|
48427
48484
|
{
|
|
48428
48485
|
chooser: false,
|