@cratis/scene.blueprint.default 4.31.0 → 4.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ComponentName.ts +24 -0
- package/defaultBlueprint.ts +2 -1
- package/defaultBlueprintComponentMetadata.ts +2 -0
- package/defaultBlueprintComponents.ts +9 -0
- package/dist/cjs/ComponentName.js +8 -0
- package/dist/cjs/ComponentName.js.map +1 -1
- package/dist/cjs/defaultBlueprint.js +9 -5
- package/dist/cjs/defaultBlueprint.js.map +1 -1
- package/dist/cjs/defaultBlueprintComponentMetadata.js +8 -0
- package/dist/cjs/defaultBlueprintComponentMetadata.js.map +1 -1
- package/dist/cjs/defaultBlueprintComponents.js +21 -1
- package/dist/cjs/defaultBlueprintComponents.js.map +1 -1
- package/dist/cjs/foundation/ActionButton.js +33 -0
- package/dist/cjs/foundation/ActionButton.js.map +1 -0
- package/dist/cjs/foundation/ChartWrapper.js +520 -0
- package/dist/cjs/foundation/ChartWrapper.js.map +1 -0
- package/dist/cjs/foundation/ColumnChooser.js +156 -0
- package/dist/cjs/foundation/ColumnChooser.js.map +1 -0
- package/dist/cjs/foundation/ComponentState.js +42 -0
- package/dist/cjs/foundation/ComponentState.js.map +1 -0
- package/dist/cjs/foundation/EmptyState.js +31 -0
- package/dist/cjs/foundation/EmptyState.js.map +1 -0
- package/dist/cjs/foundation/FilterBuilder.js +307 -0
- package/dist/cjs/foundation/FilterBuilder.js.map +1 -0
- package/dist/cjs/foundation/FoundationIcon.js +58 -0
- package/dist/cjs/foundation/FoundationIcon.js.map +1 -0
- package/dist/cjs/foundation/FoundationStates.js +62 -0
- package/dist/cjs/foundation/FoundationStates.js.map +1 -0
- package/dist/cjs/foundation/PermissionRule.js +22 -0
- package/dist/cjs/foundation/PermissionRule.js.map +1 -0
- package/dist/cjs/foundation/SavedViewsMenu.js +199 -0
- package/dist/cjs/foundation/SavedViewsMenu.js.map +1 -0
- package/dist/cjs/foundation/StatCard.js +61 -0
- package/dist/cjs/foundation/StatCard.js.map +1 -0
- package/dist/cjs/foundation/StateFrame.js +200 -0
- package/dist/cjs/foundation/StateFrame.js.map +1 -0
- package/dist/cjs/foundation/StatusChip.js +64 -0
- package/dist/cjs/foundation/StatusChip.js.map +1 -0
- package/dist/cjs/foundation/TrendChip.js +93 -0
- package/dist/cjs/foundation/TrendChip.js.map +1 -0
- package/dist/cjs/foundation/chartGeometry.js +101 -0
- package/dist/cjs/foundation/chartGeometry.js.map +1 -0
- package/dist/cjs/foundation/columnModel.js +43 -0
- package/dist/cjs/foundation/columnModel.js.map +1 -0
- package/dist/cjs/foundation/filterModel.js +123 -0
- package/dist/cjs/foundation/filterModel.js.map +1 -0
- package/dist/cjs/foundation/formatting.js +85 -0
- package/dist/cjs/foundation/formatting.js.map +1 -0
- package/dist/cjs/foundation/foundationComponentMetadata.js +69 -0
- package/dist/cjs/foundation/foundationComponentMetadata.js.map +1 -0
- package/dist/cjs/foundation/foundationDescriptors.js +385 -0
- package/dist/cjs/foundation/foundationDescriptors.js.map +1 -0
- package/dist/cjs/foundation/foundationSamples.js +201 -0
- package/dist/cjs/foundation/foundationSamples.js.map +1 -0
- package/dist/cjs/foundation/foundationStrings.js +130 -0
- package/dist/cjs/foundation/foundationStrings.js.map +1 -0
- package/dist/cjs/foundation/useElementWidth.js +31 -0
- package/dist/cjs/foundation/useElementWidth.js.map +1 -0
- package/dist/cjs/foundation/viewModel.js +24 -0
- package/dist/cjs/foundation/viewModel.js.map +1 -0
- package/dist/cjs/index.js +90 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/themes/dark.js +9 -1
- package/dist/cjs/themes/dark.js.map +1 -1
- package/dist/cjs/themes/light.js +10 -2
- package/dist/cjs/themes/light.js.map +1 -1
- package/dist/esm/ComponentName.d.ts +9 -1
- package/dist/esm/ComponentName.d.ts.map +1 -1
- package/dist/esm/ComponentName.js +8 -0
- package/dist/esm/ComponentName.js.map +1 -1
- package/dist/esm/defaultBlueprint.d.ts.map +1 -1
- package/dist/esm/defaultBlueprint.js +9 -5
- package/dist/esm/defaultBlueprint.js.map +1 -1
- package/dist/esm/defaultBlueprintComponentMetadata.d.ts.map +1 -1
- package/dist/esm/defaultBlueprintComponentMetadata.js +8 -0
- package/dist/esm/defaultBlueprintComponentMetadata.js.map +1 -1
- package/dist/esm/defaultBlueprintComponents.d.ts.map +1 -1
- package/dist/esm/defaultBlueprintComponents.js +21 -1
- package/dist/esm/defaultBlueprintComponents.js.map +1 -1
- package/dist/esm/foundation/ActionButton.d.ts +13 -0
- package/dist/esm/foundation/ActionButton.d.ts.map +1 -0
- package/dist/esm/foundation/ActionButton.js +31 -0
- package/dist/esm/foundation/ActionButton.js.map +1 -0
- package/dist/esm/foundation/ChartWrapper.d.ts +5 -0
- package/dist/esm/foundation/ChartWrapper.d.ts.map +1 -0
- package/dist/esm/foundation/ChartWrapper.js +517 -0
- package/dist/esm/foundation/ChartWrapper.js.map +1 -0
- package/dist/esm/foundation/ColumnChooser.d.ts +3 -0
- package/dist/esm/foundation/ColumnChooser.d.ts.map +1 -0
- package/dist/esm/foundation/ColumnChooser.js +154 -0
- package/dist/esm/foundation/ColumnChooser.js.map +1 -0
- package/dist/esm/foundation/ComponentState.d.ts +12 -0
- package/dist/esm/foundation/ComponentState.d.ts.map +1 -0
- package/dist/esm/foundation/ComponentState.js +38 -0
- package/dist/esm/foundation/ComponentState.js.map +1 -0
- package/dist/esm/foundation/EmptyState.d.ts +3 -0
- package/dist/esm/foundation/EmptyState.d.ts.map +1 -0
- package/dist/esm/foundation/EmptyState.js +29 -0
- package/dist/esm/foundation/EmptyState.js.map +1 -0
- package/dist/esm/foundation/FilterBuilder.d.ts +3 -0
- package/dist/esm/foundation/FilterBuilder.d.ts.map +1 -0
- package/dist/esm/foundation/FilterBuilder.js +305 -0
- package/dist/esm/foundation/FilterBuilder.js.map +1 -0
- package/dist/esm/foundation/Foundation.stories.d.ts +37 -0
- package/dist/esm/foundation/Foundation.stories.d.ts.map +1 -0
- package/dist/esm/foundation/Foundation.stories.js +34 -0
- package/dist/esm/foundation/Foundation.stories.js.map +1 -0
- package/dist/esm/foundation/FoundationIcon.d.ts +7 -0
- package/dist/esm/foundation/FoundationIcon.d.ts.map +1 -0
- package/dist/esm/foundation/FoundationIcon.js +55 -0
- package/dist/esm/foundation/FoundationIcon.js.map +1 -0
- package/dist/esm/foundation/FoundationStates.d.ts +8 -0
- package/dist/esm/foundation/FoundationStates.d.ts.map +1 -0
- package/dist/esm/foundation/FoundationStates.js +60 -0
- package/dist/esm/foundation/FoundationStates.js.map +1 -0
- package/dist/esm/foundation/PermissionRule.d.ts +8 -0
- package/dist/esm/foundation/PermissionRule.d.ts.map +1 -0
- package/dist/esm/foundation/PermissionRule.js +19 -0
- package/dist/esm/foundation/PermissionRule.js.map +1 -0
- package/dist/esm/foundation/SavedViewsMenu.d.ts +4 -0
- package/dist/esm/foundation/SavedViewsMenu.d.ts.map +1 -0
- package/dist/esm/foundation/SavedViewsMenu.js +196 -0
- package/dist/esm/foundation/SavedViewsMenu.js.map +1 -0
- package/dist/esm/foundation/StatCard.d.ts +3 -0
- package/dist/esm/foundation/StatCard.d.ts.map +1 -0
- package/dist/esm/foundation/StatCard.js +59 -0
- package/dist/esm/foundation/StatCard.js.map +1 -0
- package/dist/esm/foundation/StateFrame.d.ts +15 -0
- package/dist/esm/foundation/StateFrame.d.ts.map +1 -0
- package/dist/esm/foundation/StateFrame.js +197 -0
- package/dist/esm/foundation/StateFrame.js.map +1 -0
- package/dist/esm/foundation/StatusChip.d.ts +13 -0
- package/dist/esm/foundation/StatusChip.d.ts.map +1 -0
- package/dist/esm/foundation/StatusChip.js +59 -0
- package/dist/esm/foundation/StatusChip.js.map +1 -0
- package/dist/esm/foundation/TrendChip.d.ts +18 -0
- package/dist/esm/foundation/TrendChip.d.ts.map +1 -0
- package/dist/esm/foundation/TrendChip.js +88 -0
- package/dist/esm/foundation/TrendChip.js.map +1 -0
- package/dist/esm/foundation/chartGeometry.d.ts +34 -0
- package/dist/esm/foundation/chartGeometry.d.ts.map +1 -0
- package/dist/esm/foundation/chartGeometry.js +93 -0
- package/dist/esm/foundation/chartGeometry.js.map +1 -0
- package/dist/esm/foundation/columnModel.d.ts +11 -0
- package/dist/esm/foundation/columnModel.d.ts.map +1 -0
- package/dist/esm/foundation/columnModel.js +38 -0
- package/dist/esm/foundation/columnModel.js.map +1 -0
- package/dist/esm/foundation/filterModel.d.ts +33 -0
- package/dist/esm/foundation/filterModel.d.ts.map +1 -0
- package/dist/esm/foundation/filterModel.js +112 -0
- package/dist/esm/foundation/filterModel.js.map +1 -0
- package/dist/esm/foundation/formatting.d.ts +13 -0
- package/dist/esm/foundation/formatting.d.ts.map +1 -0
- package/dist/esm/foundation/formatting.js +78 -0
- package/dist/esm/foundation/formatting.js.map +1 -0
- package/dist/esm/foundation/foundationComponentMetadata.d.ts +3 -0
- package/dist/esm/foundation/foundationComponentMetadata.d.ts.map +1 -0
- package/dist/esm/foundation/foundationComponentMetadata.js +67 -0
- package/dist/esm/foundation/foundationComponentMetadata.js.map +1 -0
- package/dist/esm/foundation/foundationDescriptors.d.ts +6 -0
- package/dist/esm/foundation/foundationDescriptors.d.ts.map +1 -0
- package/dist/esm/foundation/foundationDescriptors.js +380 -0
- package/dist/esm/foundation/foundationDescriptors.js.map +1 -0
- package/dist/esm/foundation/foundationSamples.d.ts +10 -0
- package/dist/esm/foundation/foundationSamples.d.ts.map +1 -0
- package/dist/esm/foundation/foundationSamples.js +198 -0
- package/dist/esm/foundation/foundationSamples.js.map +1 -0
- package/dist/esm/foundation/foundationStrings.d.ts +103 -0
- package/dist/esm/foundation/foundationStrings.d.ts.map +1 -0
- package/dist/esm/foundation/foundationStrings.js +126 -0
- package/dist/esm/foundation/foundationStrings.js.map +1 -0
- package/dist/esm/foundation/index.d.ts +25 -0
- package/dist/esm/foundation/index.d.ts.map +1 -0
- package/dist/esm/foundation/index.js +25 -0
- package/dist/esm/foundation/index.js.map +1 -0
- package/dist/esm/foundation/useElementWidth.d.ts +3 -0
- package/dist/esm/foundation/useElementWidth.d.ts.map +1 -0
- package/dist/esm/foundation/useElementWidth.js +29 -0
- package/dist/esm/foundation/useElementWidth.js.map +1 -0
- package/dist/esm/foundation/viewModel.d.ts +7 -0
- package/dist/esm/foundation/viewModel.d.ts.map +1 -0
- package/dist/esm/foundation/viewModel.js +22 -0
- package/dist/esm/foundation/viewModel.js.map +1 -0
- package/dist/esm/gallery/widgets.js +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +24 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/themes/dark.d.ts.map +1 -1
- package/dist/esm/themes/dark.js +9 -1
- package/dist/esm/themes/dark.js.map +1 -1
- package/dist/esm/themes/light.d.ts.map +1 -1
- package/dist/esm/themes/light.js +10 -2
- package/dist/esm/themes/light.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/foundation/ActionButton.tsx +39 -0
- package/foundation/ChartWrapper.tsx +252 -0
- package/foundation/ColumnChooser.tsx +73 -0
- package/foundation/ComponentState.ts +53 -0
- package/foundation/EmptyState.tsx +22 -0
- package/foundation/FilterBuilder.tsx +144 -0
- package/foundation/Foundation.stories.tsx +46 -0
- package/foundation/FoundationIcon.tsx +49 -0
- package/foundation/FoundationStates.tsx +46 -0
- package/foundation/PermissionRule.ts +26 -0
- package/foundation/SavedViewsMenu.tsx +94 -0
- package/foundation/StatCard.tsx +44 -0
- package/foundation/StateFrame.tsx +126 -0
- package/foundation/StatusChip.tsx +51 -0
- package/foundation/TrendChip.tsx +78 -0
- package/foundation/chartGeometry.ts +108 -0
- package/foundation/columnModel.ts +39 -0
- package/foundation/filterModel.ts +111 -0
- package/foundation/formatting.ts +69 -0
- package/foundation/foundationComponentMetadata.ts +21 -0
- package/foundation/foundationDescriptors.ts +204 -0
- package/foundation/foundationSamples.ts +63 -0
- package/foundation/foundationStrings.ts +137 -0
- package/foundation/index.ts +27 -0
- package/foundation/useElementWidth.ts +31 -0
- package/foundation/viewModel.ts +21 -0
- package/index.ts +1 -0
- package/package.json +9 -8
- package/shell/layout.css +526 -0
- package/themes/dark.ts +8 -0
- package/themes/light.ts +9 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterBuilder.js","sources":["../../../foundation/FilterBuilder.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useEffect, useMemo, useState } from 'react';\nimport { RegisteredComponentProps, useValueOutput } from '@cratis/scene.react';\nimport { ComponentState, readComponentState } from './ComponentState';\nimport { ActionButton } from './ActionButton';\nimport {\n FilterCondition, FilterField, emptyFilter, FilterFieldType, FilterGroup, countActiveConditions, filterOperators, maximumFilterDepth, newCondition,\n normalizeFilter, readFilterFields, updateGroupAt, valuelessOperators,\n} from './filterModel';\nimport { FoundationStrings, formatText, readFoundationStrings } from './foundationStrings';\nimport { FoundationFrame } from './StateFrame';\nimport { readPermissionRule } from './PermissionRule';\n\nconst operatorText = (strings: FoundationStrings, operator: string): string => {\n const names: Record<string, string> = {\n contains: strings.opContains, equals: strings.opEquals, notEquals: strings.opNotEquals, startsWith: strings.opStartsWith, isEmpty: strings.opIsEmpty,\n greater: strings.opGreater, greaterOrEqual: strings.opGreaterOrEqual, less: strings.opLess, lessOrEqual: strings.opLessOrEqual,\n before: strings.opBefore, after: strings.opAfter, on: strings.opOn, is: strings.opIs, isNot: strings.opIsNot, true: strings.opTrue, false: strings.opFalse,\n };\n return names[operator] ?? operator;\n};\n\ninterface GroupEditorProps {\n group: FilterGroup;\n path: number[];\n fields: FilterField[];\n strings: FoundationStrings;\n locked: boolean;\n change(path: number[], change: (group: FilterGroup) => FilterGroup): void;\n}\n\nfunction ValueInput({ field, condition, strings, label, disabled, onChange }: { field: FilterField | undefined; condition: FilterCondition; strings: FoundationStrings; label: string; disabled: boolean; onChange(value: string): void }) {\n if (valuelessOperators.includes(condition.operator)) return undefined;\n\n if (field?.type === FilterFieldType.Select) {\n return (\n <select aria-label={`${strings.filterValue}, ${label}`} value={condition.value} disabled={disabled} onChange={event => onChange(event.target.value)}>\n <option value=''>—</option>\n {field.options.map(option => <option key={option} value={option}>{option}</option>)}\n </select>\n );\n }\n\n return <input aria-label={`${strings.filterValue}, ${label}`} type={field?.type === FilterFieldType.Number ? 'number' : field?.type === FilterFieldType.Date ? 'date' : 'text'} value={condition.value} disabled={disabled} onChange={event => onChange(event.target.value)} />;\n}\n\nfunction GroupEditor({ group, path, fields, strings, locked, change }: GroupEditorProps) {\n const label = path.length === 0 ? strings.filterMatchAll.replace(/ \\(.*\\)$/, '') : formatText(strings.filterGroup, { n: path.join('.') });\n const depth = path.length + 1;\n\n return (\n <div className='foundation-filter-group' role='group' aria-label={path.length === 0 ? formatText(countActiveConditions(group) === 1 ? strings.filterSummaryOne : strings.filterSummary, { count: countActiveConditions(group) }) : label} data-depth={depth}>\n <div className='foundation-filter-match'>\n <select aria-label={strings.filterMatchAll} value={group.operator} disabled={locked} onChange={event => change(path, current => ({ ...current, operator: event.target.value === 'or' ? 'or' : 'and' }))}>\n <option value='and'>{strings.filterMatchAll}</option>\n <option value='or'>{strings.filterMatchAny}</option>\n </select>\n {path.length > 0 && !locked && (\n <button type='button' className='foundation-link' onClick={() => change(path.slice(0, -1), parent => ({ ...parent, groups: parent.groups.filter((_, index) => index !== path[path.length - 1]) }))}>{strings.filterRemoveGroup}</button>\n )}\n </div>\n {group.conditions.map((condition, index) => {\n const field = fields.find(candidate => candidate.name === condition.field);\n const conditionLabel = formatText(strings.filterCondition, { n: index + 1 });\n return (\n <div className='foundation-filter-row' role='group' aria-label={conditionLabel} key={index}>\n <select aria-label={`${strings.filterField}, ${conditionLabel}`} value={condition.field} disabled={locked}\n onChange={event => {\n const next = fields.find(candidate => candidate.name === event.target.value);\n change(path, current => ({ ...current, conditions: current.conditions.map((existing, position) => (position === index\n ? { field: event.target.value, operator: next ? filterOperators[next.type][0] : existing.operator, value: '' } : existing)) }));\n }}>\n {fields.map(candidate => <option key={candidate.name} value={candidate.name}>{candidate.label}</option>)}\n </select>\n <select aria-label={`${strings.filterOperator}, ${conditionLabel}`} value={condition.operator} disabled={locked}\n onChange={event => change(path, current => ({ ...current, conditions: current.conditions.map((existing, position) => (position === index ? { ...existing, operator: event.target.value } : existing)) }))}>\n {filterOperators[field?.type ?? FilterFieldType.Text].map(operator => <option key={operator} value={operator}>{operatorText(strings, operator)}</option>)}\n </select>\n <ValueInput field={field} condition={condition} strings={strings} label={conditionLabel} disabled={locked}\n onChange={value => change(path, current => ({ ...current, conditions: current.conditions.map((existing, position) => (position === index ? { ...existing, value } : existing)) }))} />\n {!locked && (\n <button type='button' className='foundation-icon-button' aria-label={`${strings.filterRemove}, ${conditionLabel}`}\n onClick={() => change(path, current => ({ ...current, conditions: current.conditions.filter((_, position) => position !== index) }))}>×</button>\n )}\n </div>\n );\n })}\n {group.groups.map((nested, index) => <GroupEditor key={index} group={nested} path={[...path, index]} fields={fields} strings={strings} locked={locked} change={change} />)}\n {!locked && (\n <div className='foundation-filter-actions'>\n <button type='button' className='foundation-link' onClick={() => change(path, current => ({ ...current, conditions: [...current.conditions, newCondition(fields)] }))}>{strings.filterAdd}</button>\n {depth < maximumFilterDepth && (\n <button type='button' className='foundation-link' onClick={() => change(path, current => ({ ...current, groups: [...current.groups, { operator: 'and', conditions: [newCondition(fields)], groups: [] }] }))}>{strings.filterAddGroup}</button>\n )}\n </div>\n )}\n </div>\n );\n}\n\n/**\n * The `filterBuilder` component: field, operator and value conditions joined by AND or OR, in groups that nest up to three deep.\n *\n * The filter is the component's `value` output - `{ operator, conditions, groups }` - which a list screen binds its query to; the\n * component itself filters nothing. `fields` describe what can be filtered (name, label, type, and options for a select), and\n * the operators on offer follow each field's type. A filter bound in through `value` is read back as the user left it: conditions on\n * fields that no longer exist are dropped rather than shown broken. The component is the filter panel of a list on a desktop and\n * the body of the filter dialog on a phone.\n */\nexport function FilterBuilder({ element, interactions, bindingOutputs }: RegisteredComponentProps) {\n const fields = useMemo(() => readFilterFields(element.properties.fields), [element.properties.fields]);\n const supplied = useMemo(() => normalizeFilter(element.properties.filter, fields), [element.properties.filter, fields]);\n const [filter, setFilter] = useState<FilterGroup>(supplied);\n const strings = readFoundationStrings(element);\n const suppliedKey = JSON.stringify(supplied);\n const state = readComponentState(element, fields.length > 0);\n const locked = readPermissionRule(element, 'editPermission') !== 'enabled';\n\n useEffect(() => setFilter(supplied), [suppliedKey]);\n useValueOutput(bindingOutputs, filter);\n\n const change = (path: number[], apply: (group: FilterGroup) => FilterGroup) => {\n const next = updateGroupAt(filter, path, apply);\n setFilter(next);\n interactions?.onChange?.();\n };\n const active = countActiveConditions(filter);\n\n return (\n <FoundationFrame element={element} interactions={interactions} name='filter-builder' state={state} skeleton={[100, 100]}>\n {state !== ComponentState.Loading && (\n <>\n <GroupEditor group={filter} path={[]} fields={fields} strings={strings} locked={locked} change={change} />\n <div className='foundation-filter-footer'>\n <span className='foundation-filter-summary' aria-live='polite'>{active === 1 ? strings.filterSummaryOne : formatText(strings.filterSummary, { count: active })}</span>\n {active > 0 && !locked && <ActionButton emphasis='quiet' disabledReason={strings.disabledNoPermission} onClick={() => { setFilter(emptyFilter()); interactions?.onChange?.(); }}>{strings.filterClear}</ActionButton>}\n </div>\n </>\n )}\n </FoundationFrame>\n );\n}\n"],"names":["operatorText","strings","operator","names","contains","opContains","equals","opEquals","notEquals","opNotEquals","startsWith","opStartsWith","isEmpty","opIsEmpty","greater","opGreater","greaterOrEqual","opGreaterOrEqual","less","opLess","lessOrEqual","opLessOrEqual","before","opBefore","after","opAfter","on","opOn","is","opIs","isNot","opIsNot","true","opTrue","false","opFalse","ValueInput","field","condition","label","disabled","onChange","valuelessOperators","includes","undefined","type","FilterFieldType","Select","_jsxs","select","aria-label","filterValue","value","event","target","_jsx","option","options","map","input","Number","Date","GroupEditor","group","path","fields","locked","change","length","filterMatchAll","replace","formatText","filterGroup","n","join","depth","div","className","role","countActiveConditions","filterSummaryOne","filterSummary","count","data-depth","current","filterMatchAny","button","onClick","slice","parent","groups","filter","_","index","filterRemoveGroup","conditions","find","candidate","name","conditionLabel","filterCondition","filterField","next","existing","position","filterOperators","filterOperator","Text","filterRemove","nested","newCondition","filterAdd","maximumFilterDepth","filterAddGroup","FilterBuilder","element","interactions","bindingOutputs","useMemo","readFilterFields","properties","supplied","normalizeFilter","setFilter","useState","readFoundationStrings","suppliedKey","JSON","stringify","state","readComponentState","readPermissionRule","useEffect","useValueOutput","apply","updateGroupAt","active","FoundationFrame","skeleton","ComponentState","Loading","_Fragment","span","aria-live","ActionButton","emphasis","disabledReason","disabledNoPermission","emptyFilter","filterClear"],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/react';
|
|
2
|
+
import { FoundationStates } from './FoundationStates';
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: typeof FoundationStates;
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: string;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
export default meta;
|
|
11
|
+
type Story = StoryObj<typeof meta>;
|
|
12
|
+
export declare const EmptyStateLight: Story;
|
|
13
|
+
export declare const EmptyStateDark: Story;
|
|
14
|
+
export declare const StatCardLight: Story;
|
|
15
|
+
export declare const StatCardDark: Story;
|
|
16
|
+
export declare const StatCardRightToLeft: Story;
|
|
17
|
+
export declare const TrendChipLight: Story;
|
|
18
|
+
export declare const TrendChipDark: Story;
|
|
19
|
+
export declare const StatusChipLight: Story;
|
|
20
|
+
export declare const StatusChipDark: Story;
|
|
21
|
+
export declare const ChartLineLight: Story;
|
|
22
|
+
export declare const ChartLineDark: Story;
|
|
23
|
+
export declare const ChartBarLight: Story;
|
|
24
|
+
export declare const ChartBarDark: Story;
|
|
25
|
+
export declare const ChartStackedLight: Story;
|
|
26
|
+
export declare const ChartStackedDark: Story;
|
|
27
|
+
export declare const ChartDonutLight: Story;
|
|
28
|
+
export declare const ChartDonutDark: Story;
|
|
29
|
+
export declare const ChartFunnelLight: Story;
|
|
30
|
+
export declare const ChartFunnelDark: Story;
|
|
31
|
+
export declare const FilterBuilderLight: Story;
|
|
32
|
+
export declare const FilterBuilderDark: Story;
|
|
33
|
+
export declare const ColumnChooserLight: Story;
|
|
34
|
+
export declare const ColumnChooserDark: Story;
|
|
35
|
+
export declare const SavedViewsMenuLight: Story;
|
|
36
|
+
export declare const SavedViewsMenuDark: Story;
|
|
37
|
+
//# sourceMappingURL=Foundation.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Foundation.stories.d.ts","sourceRoot":"","sources":["../../../foundation/Foundation.stories.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAMtD,QAAA,MAAM,IAAI;;;;QAGQ,MAAM;;CACiB,CAAC;eAE3B,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,eAAe,EAAE,KAAyE,CAAC;AACxG,eAAO,MAAM,cAAc,EAAE,KAAwE,CAAC;AACtG,eAAO,MAAM,aAAa,EAAE,KAAuE,CAAC;AACpG,eAAO,MAAM,YAAY,EAAE,KAAsE,CAAC;AAClG,eAAO,MAAM,mBAAmB,EAAE,KAAiJ,CAAC;AACpL,eAAO,MAAM,cAAc,EAAE,KAAwE,CAAC;AACtG,eAAO,MAAM,aAAa,EAAE,KAAuE,CAAC;AACpG,eAAO,MAAM,eAAe,EAAE,KAAyE,CAAC;AACxG,eAAO,MAAM,cAAc,EAAE,KAAwE,CAAC;AACtG,eAAO,MAAM,cAAc,EAAE,KAA2E,CAAC;AACzG,eAAO,MAAM,aAAa,EAAE,KAA0E,CAAC;AACvG,eAAO,MAAM,aAAa,EAAE,KAAwG,CAAC;AACrI,eAAO,MAAM,YAAY,EAAE,KAAuG,CAAC;AACnI,eAAO,MAAM,iBAAiB,EAAE,KAA4G,CAAC;AAC7I,eAAO,MAAM,gBAAgB,EAAE,KAA2G,CAAC;AAC3I,eAAO,MAAM,eAAe,EAAE,KAA0G,CAAC;AACzI,eAAO,MAAM,cAAc,EAAE,KAAyG,CAAC;AACvI,eAAO,MAAM,gBAAgB,EAAE,KAA2N,CAAC;AAC3P,eAAO,MAAM,eAAe,EAAE,KAA0N,CAAC;AACzP,eAAO,MAAM,kBAAkB,EAAE,KAA4E,CAAC;AAC9G,eAAO,MAAM,iBAAiB,EAAE,KAA2E,CAAC;AAC5G,eAAO,MAAM,kBAAkB,EAAE,KAA4E,CAAC;AAC9G,eAAO,MAAM,iBAAiB,EAAE,KAA2E,CAAC;AAC5G,eAAO,MAAM,mBAAmB,EAAE,KAA6E,CAAC;AAChH,eAAO,MAAM,kBAAkB,EAAE,KAA4E,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ComponentName } from '../ComponentName';
|
|
2
|
+
import { FoundationStates } from './FoundationStates';
|
|
3
|
+
const meta = {
|
|
4
|
+
title: 'Blueprint/Foundation components',
|
|
5
|
+
component: FoundationStates,
|
|
6
|
+
parameters: { layout: 'fullscreen' },
|
|
7
|
+
};
|
|
8
|
+
export default meta;
|
|
9
|
+
export const EmptyStateLight = { args: { component: ComponentName.EmptyState, theme: 'light' } };
|
|
10
|
+
export const EmptyStateDark = { args: { component: ComponentName.EmptyState, theme: 'dark' } };
|
|
11
|
+
export const StatCardLight = { args: { component: ComponentName.StatCard, theme: 'light' } };
|
|
12
|
+
export const StatCardDark = { args: { component: ComponentName.StatCard, theme: 'dark' } };
|
|
13
|
+
export const StatCardRightToLeft = { args: { component: ComponentName.StatCard, theme: 'light', rightToLeft: true, properties: { label: 'خط الأنابيب', locale: 'ar-EG' } } };
|
|
14
|
+
export const TrendChipLight = { args: { component: ComponentName.TrendChip, theme: 'light' } };
|
|
15
|
+
export const TrendChipDark = { args: { component: ComponentName.TrendChip, theme: 'dark' } };
|
|
16
|
+
export const StatusChipLight = { args: { component: ComponentName.StatusChip, theme: 'light' } };
|
|
17
|
+
export const StatusChipDark = { args: { component: ComponentName.StatusChip, theme: 'dark' } };
|
|
18
|
+
export const ChartLineLight = { args: { component: ComponentName.ChartWrapper, theme: 'light' } };
|
|
19
|
+
export const ChartLineDark = { args: { component: ComponentName.ChartWrapper, theme: 'dark' } };
|
|
20
|
+
export const ChartBarLight = { args: { component: ComponentName.ChartWrapper, theme: 'light', properties: { kind: 'bar' } } };
|
|
21
|
+
export const ChartBarDark = { args: { component: ComponentName.ChartWrapper, theme: 'dark', properties: { kind: 'bar' } } };
|
|
22
|
+
export const ChartStackedLight = { args: { component: ComponentName.ChartWrapper, theme: 'light', properties: { kind: 'stacked' } } };
|
|
23
|
+
export const ChartStackedDark = { args: { component: ComponentName.ChartWrapper, theme: 'dark', properties: { kind: 'stacked' } } };
|
|
24
|
+
export const ChartDonutLight = { args: { component: ComponentName.ChartWrapper, theme: 'light', properties: { kind: 'donut' } } };
|
|
25
|
+
export const ChartDonutDark = { args: { component: ComponentName.ChartWrapper, theme: 'dark', properties: { kind: 'donut' } } };
|
|
26
|
+
export const ChartFunnelLight = { args: { component: ComponentName.ChartWrapper, theme: 'light', properties: { kind: 'funnel', categories: ['Leads', 'Qualified', 'Proposal', 'Won'], series: [{ name: 'Deals', values: [400, 220, 90, 40] }] } } };
|
|
27
|
+
export const ChartFunnelDark = { args: { component: ComponentName.ChartWrapper, theme: 'dark', properties: { kind: 'funnel', categories: ['Leads', 'Qualified', 'Proposal', 'Won'], series: [{ name: 'Deals', values: [400, 220, 90, 40] }] } } };
|
|
28
|
+
export const FilterBuilderLight = { args: { component: ComponentName.FilterBuilder, theme: 'light' } };
|
|
29
|
+
export const FilterBuilderDark = { args: { component: ComponentName.FilterBuilder, theme: 'dark' } };
|
|
30
|
+
export const ColumnChooserLight = { args: { component: ComponentName.ColumnChooser, theme: 'light' } };
|
|
31
|
+
export const ColumnChooserDark = { args: { component: ComponentName.ColumnChooser, theme: 'dark' } };
|
|
32
|
+
export const SavedViewsMenuLight = { args: { component: ComponentName.SavedViewsMenu, theme: 'light' } };
|
|
33
|
+
export const SavedViewsMenuDark = { args: { component: ComponentName.SavedViewsMenu, theme: 'dark' } };
|
|
34
|
+
//# sourceMappingURL=Foundation.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Foundation.stories.js","sourceRoot":"","sources":["../../../foundation/Foundation.stories.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type FoundationIconName = 'check' | 'close' | 'arrow-up' | 'arrow-down' | 'minus' | 'alert' | 'info' | 'lock' | 'clock' | 'inbox' | 'refresh' | 'plus' | 'chevron-right' | 'chevron-down' | 'upload' | 'file' | 'user' | 'columns' | 'filter' | 'star' | 'circle';
|
|
2
|
+
export declare function isFoundationIcon(name: string): name is FoundationIconName;
|
|
3
|
+
export declare function FoundationIcon({ name, label }: {
|
|
4
|
+
name: FoundationIconName;
|
|
5
|
+
label?: string;
|
|
6
|
+
}): import("react").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=FoundationIcon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FoundationIcon.d.ts","sourceRoot":"","sources":["../../../foundation/FoundationIcon.tsx"],"names":[],"mappings":"AAIA,MAAM,MAAM,kBAAkB,GACxB,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GACnH,MAAM,GAAG,eAAe,GAAG,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AA2BxH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,kBAAkB,CAEzE;AAMD,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,+BAO3F"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
4
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
5
|
+
const paths = {
|
|
6
|
+
check: 'M5 13l4 4L19 7',
|
|
7
|
+
close: 'M6 6l12 12M18 6L6 18',
|
|
8
|
+
'arrow-up': 'M12 19V5M5 12l7-7 7 7',
|
|
9
|
+
'arrow-down': 'M12 5v14M5 12l7 7 7-7',
|
|
10
|
+
minus: 'M5 12h14',
|
|
11
|
+
alert: 'M12 8v5M12 16.5v.5M10.3 3.9L2.5 17.5A2 2 0 004.2 20.5h15.6a2 2 0 001.7-3L13.7 3.9a2 2 0 00-3.4 0z',
|
|
12
|
+
info: 'M12 11v6M12 7.5v.5M12 21a9 9 0 100-18 9 9 0 000 18z',
|
|
13
|
+
lock: 'M7 11V8a5 5 0 0110 0v3M6 11h12a1 1 0 011 1v8a1 1 0 01-1 1H6a1 1 0 01-1-1v-8a1 1 0 011-1z',
|
|
14
|
+
clock: 'M12 7v5l3 2M12 21a9 9 0 100-18 9 9 0 000 18z',
|
|
15
|
+
inbox: 'M3 13l3-8h12l3 8M3 13v6a1 1 0 001 1h16a1 1 0 001-1v-6M3 13h5l1 3h6l1-3h5',
|
|
16
|
+
refresh: 'M20 11a8 8 0 10-2.3 6.3M20 4v7h-7',
|
|
17
|
+
plus: 'M12 5v14M5 12h14',
|
|
18
|
+
'chevron-right': 'M9 5l7 7-7 7',
|
|
19
|
+
'chevron-down': 'M5 9l7 7 7-7',
|
|
20
|
+
upload: 'M12 16V4M7 9l5-5 5 5M4 17v2a1 1 0 001 1h14a1 1 0 001-1v-2',
|
|
21
|
+
file: 'M14 3H7a1 1 0 00-1 1v16a1 1 0 001 1h10a1 1 0 001-1V7l-4-4zM14 3v4h4',
|
|
22
|
+
user: 'M12 12a4 4 0 100-8 4 4 0 000 8zM4 21a8 8 0 0116 0',
|
|
23
|
+
columns: 'M4 5h16v14H4zM9.5 5v14M14.5 5v14',
|
|
24
|
+
filter: 'M4 5h16l-6 8v6l-4-2v-4L4 5z',
|
|
25
|
+
star: 'M12 3l2.7 5.6 6.1.9-4.4 4.3 1 6.1L12 17l-5.4 2.9 1-6.1L3.2 9.5l6.1-.9L12 3z',
|
|
26
|
+
circle: 'M12 20a8 8 0 100-16 8 8 0 000 16z'
|
|
27
|
+
};
|
|
28
|
+
/** Whether a name is one of the icons drawn here. */ function isFoundationIcon(name) {
|
|
29
|
+
return name in paths;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* One icon. It is decorative unless given a label: the meaning an icon carries is always repeated in text, so no status is
|
|
33
|
+
* conveyed by color or shape alone (WCAG 1.4.1).
|
|
34
|
+
*/ function FoundationIcon({ name, label }) {
|
|
35
|
+
return /*#__PURE__*/ jsx("svg", {
|
|
36
|
+
className: "foundation-icon",
|
|
37
|
+
viewBox: "0 0 24 24",
|
|
38
|
+
width: "1em",
|
|
39
|
+
height: "1em",
|
|
40
|
+
fill: "none",
|
|
41
|
+
stroke: "currentColor",
|
|
42
|
+
strokeWidth: "2",
|
|
43
|
+
strokeLinecap: "round",
|
|
44
|
+
strokeLinejoin: "round",
|
|
45
|
+
"aria-hidden": label ? undefined : true,
|
|
46
|
+
role: label ? 'img' : undefined,
|
|
47
|
+
"aria-label": label,
|
|
48
|
+
children: /*#__PURE__*/ jsx("path", {
|
|
49
|
+
d: paths[name]
|
|
50
|
+
})
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export { FoundationIcon, isFoundationIcon };
|
|
55
|
+
//# sourceMappingURL=FoundationIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FoundationIcon.js","sources":["../../../foundation/FoundationIcon.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n/** The icons the foundation components draw themselves, so none of them depends on an icon font being loaded. */\nexport type FoundationIconName =\n | 'check' | 'close' | 'arrow-up' | 'arrow-down' | 'minus' | 'alert' | 'info' | 'lock' | 'clock' | 'inbox' | 'refresh'\n | 'plus' | 'chevron-right' | 'chevron-down' | 'upload' | 'file' | 'user' | 'columns' | 'filter' | 'star' | 'circle';\n\nconst paths: Record<FoundationIconName, string> = {\n check: 'M5 13l4 4L19 7',\n close: 'M6 6l12 12M18 6L6 18',\n 'arrow-up': 'M12 19V5M5 12l7-7 7 7',\n 'arrow-down': 'M12 5v14M5 12l7 7 7-7',\n minus: 'M5 12h14',\n alert: 'M12 8v5M12 16.5v.5M10.3 3.9L2.5 17.5A2 2 0 004.2 20.5h15.6a2 2 0 001.7-3L13.7 3.9a2 2 0 00-3.4 0z',\n info: 'M12 11v6M12 7.5v.5M12 21a9 9 0 100-18 9 9 0 000 18z',\n lock: 'M7 11V8a5 5 0 0110 0v3M6 11h12a1 1 0 011 1v8a1 1 0 01-1 1H6a1 1 0 01-1-1v-8a1 1 0 011-1z',\n clock: 'M12 7v5l3 2M12 21a9 9 0 100-18 9 9 0 000 18z',\n inbox: 'M3 13l3-8h12l3 8M3 13v6a1 1 0 001 1h16a1 1 0 001-1v-6M3 13h5l1 3h6l1-3h5',\n refresh: 'M20 11a8 8 0 10-2.3 6.3M20 4v7h-7',\n plus: 'M12 5v14M5 12h14',\n 'chevron-right': 'M9 5l7 7-7 7',\n 'chevron-down': 'M5 9l7 7 7-7',\n upload: 'M12 16V4M7 9l5-5 5 5M4 17v2a1 1 0 001 1h14a1 1 0 001-1v-2',\n file: 'M14 3H7a1 1 0 00-1 1v16a1 1 0 001 1h10a1 1 0 001-1V7l-4-4zM14 3v4h4',\n user: 'M12 12a4 4 0 100-8 4 4 0 000 8zM4 21a8 8 0 0116 0',\n columns: 'M4 5h16v14H4zM9.5 5v14M14.5 5v14',\n filter: 'M4 5h16l-6 8v6l-4-2v-4L4 5z',\n star: 'M12 3l2.7 5.6 6.1.9-4.4 4.3 1 6.1L12 17l-5.4 2.9 1-6.1L3.2 9.5l6.1-.9L12 3z',\n circle: 'M12 20a8 8 0 100-16 8 8 0 000 16z',\n};\n\n/** Whether a name is one of the icons drawn here. */\nexport function isFoundationIcon(name: string): name is FoundationIconName {\n return name in paths;\n}\n\n/**\n * One icon. It is decorative unless given a label: the meaning an icon carries is always repeated in text, so no status is\n * conveyed by color or shape alone (WCAG 1.4.1).\n */\nexport function FoundationIcon({ name, label }: { name: FoundationIconName; label?: string }) {\n return (\n <svg className='foundation-icon' viewBox='0 0 24 24' width='1em' height='1em' fill='none' stroke='currentColor' strokeWidth='2'\n strokeLinecap='round' strokeLinejoin='round' aria-hidden={label ? undefined : true} role={label ? 'img' : undefined} aria-label={label}>\n <path d={paths[name]} />\n </svg>\n );\n}\n"],"names":["paths","check","close","minus","alert","info","lock","clock","inbox","refresh","plus","upload","file","user","columns","filter","star","circle","isFoundationIcon","name","FoundationIcon","label","_jsx","svg","className","viewBox","width","height","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","aria-hidden","undefined","role","aria-label","path","d"],"mappings":";;AAAA;AACA;AAOA,MAAMA,KAAAA,GAA4C;IAC9CC,KAAAA,EAAO,gBAAA;IACPC,KAAAA,EAAO,sBAAA;IACP,UAAA,EAAY,uBAAA;IACZ,YAAA,EAAc,uBAAA;IACdC,KAAAA,EAAO,UAAA;IACPC,KAAAA,EAAO,mGAAA;IACPC,IAAAA,EAAM,qDAAA;IACNC,IAAAA,EAAM,0FAAA;IACNC,KAAAA,EAAO,8CAAA;IACPC,KAAAA,EAAO,0EAAA;IACPC,OAAAA,EAAS,mCAAA;IACTC,IAAAA,EAAM,kBAAA;IACN,eAAA,EAAiB,cAAA;IACjB,cAAA,EAAgB,cAAA;IAChBC,MAAAA,EAAQ,2DAAA;IACRC,IAAAA,EAAM,qEAAA;IACNC,IAAAA,EAAM,mDAAA;IACNC,OAAAA,EAAS,kCAAA;IACTC,MAAAA,EAAQ,6BAAA;IACRC,IAAAA,EAAM,6EAAA;IACNC,MAAAA,EAAQ;AACZ,CAAA;AAEA,sDACO,SAASC,gBAAAA,CAAiBC,IAAY,EAAA;AACzC,IAAA,OAAOA,IAAAA,IAAQnB,KAAAA;AACnB;AAEA;;;AAGC,IACM,SAASoB,cAAAA,CAAe,EAAED,IAAI,EAAEE,KAAK,EAAgD,EAAA;AACxF,IAAA,qBACIC,GAAA,CAACC,KAAAA,EAAAA;QAAIC,SAAAA,EAAU,iBAAA;QAAkBC,OAAAA,EAAQ,WAAA;QAAYC,KAAAA,EAAM,KAAA;QAAMC,MAAAA,EAAO,KAAA;QAAMC,IAAAA,EAAK,MAAA;QAAOC,MAAAA,EAAO,cAAA;QAAeC,WAAAA,EAAY,GAAA;QACxHC,aAAAA,EAAc,OAAA;QAAQC,cAAAA,EAAe,OAAA;AAAQC,QAAAA,aAAAA,EAAaZ,QAAQa,SAAAA,GAAY,IAAA;AAAMC,QAAAA,IAAAA,EAAMd,QAAQ,KAAA,GAAQa,SAAAA;QAAWE,YAAAA,EAAYf,KAAAA;AACjI,QAAA,QAAA,gBAAAC,GAAA,CAACe,MAAAA,EAAAA;YAAKC,CAAAA,EAAGtC,KAAK,CAACmB,IAAAA;;;AAG3B;;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface FoundationStatesProps {
|
|
2
|
+
component: string;
|
|
3
|
+
theme: 'light' | 'dark';
|
|
4
|
+
properties?: Record<string, unknown>;
|
|
5
|
+
rightToLeft?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function FoundationStates({ component, theme, properties, rightToLeft }: FoundationStatesProps): import("react").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=FoundationStates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FoundationStates.d.ts","sourceRoot":"","sources":["../../../foundation/FoundationStates.tsx"],"names":[],"mappings":"AAUA,MAAM,WAAW,qBAAqB;IAElC,SAAS,EAAE,MAAM,CAAC;IAGlB,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IAGxB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAGrC,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAMD,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,qBAAqB,+BAiBpG"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { componentRegistryKey, SceneThemeProvider } from '@cratis/scene.react';
|
|
3
|
+
import { defaultBlueprintComponents } from '../defaultBlueprintComponents.js';
|
|
4
|
+
import { defaultBlueprintName } from '../packageName.js';
|
|
5
|
+
import { lightTheme } from '../themes/light.js';
|
|
6
|
+
import { darkTheme } from '../themes/dark.js';
|
|
7
|
+
import 'react';
|
|
8
|
+
import { componentStates, ComponentState } from './ComponentState.js';
|
|
9
|
+
import { foundationSamples, foundationElement } from './foundationSamples.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Every standard state of one foundation component side by side in one theme: the preview of spec Part B 6 ("all standard states
|
|
13
|
+
* implemented and previewable"), used by the stories and by the gallery.
|
|
14
|
+
*/ function FoundationStates({ component, theme, properties, rightToLeft }) {
|
|
15
|
+
const Component = defaultBlueprintComponents[componentRegistryKey(defaultBlueprintName, component)];
|
|
16
|
+
const sample = foundationSamples[component];
|
|
17
|
+
const states = sample?.stateful ? componentStates : [
|
|
18
|
+
ComponentState.Ready
|
|
19
|
+
];
|
|
20
|
+
return /*#__PURE__*/ jsx(SceneThemeProvider, {
|
|
21
|
+
theme: theme === 'dark' ? darkTheme : lightTheme,
|
|
22
|
+
children: /*#__PURE__*/ jsx("div", {
|
|
23
|
+
dir: rightToLeft ? 'rtl' : 'ltr',
|
|
24
|
+
className: "foundation-states",
|
|
25
|
+
style: {
|
|
26
|
+
display: 'grid',
|
|
27
|
+
gap: '1rem',
|
|
28
|
+
padding: '1rem',
|
|
29
|
+
gridTemplateColumns: 'repeat(auto-fill, minmax(18rem, 1fr))',
|
|
30
|
+
background: 'var(--scene-surface-background)',
|
|
31
|
+
color: 'var(--scene-text-color)'
|
|
32
|
+
},
|
|
33
|
+
children: states.map((state)=>/*#__PURE__*/ jsxs("figure", {
|
|
34
|
+
style: {
|
|
35
|
+
margin: 0
|
|
36
|
+
},
|
|
37
|
+
children: [
|
|
38
|
+
/*#__PURE__*/ jsx("figcaption", {
|
|
39
|
+
style: {
|
|
40
|
+
fontSize: '0.75rem',
|
|
41
|
+
textTransform: 'uppercase',
|
|
42
|
+
marginBlockEnd: '0.5rem'
|
|
43
|
+
},
|
|
44
|
+
children: state
|
|
45
|
+
}),
|
|
46
|
+
/*#__PURE__*/ jsx(Component, {
|
|
47
|
+
element: foundationElement(component, {
|
|
48
|
+
...sample?.properties,
|
|
49
|
+
...properties
|
|
50
|
+
}, state === ComponentState.Ready ? undefined : state),
|
|
51
|
+
slots: {}
|
|
52
|
+
})
|
|
53
|
+
]
|
|
54
|
+
}, state))
|
|
55
|
+
})
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export { FoundationStates };
|
|
60
|
+
//# sourceMappingURL=FoundationStates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FoundationStates.js","sources":["../../../foundation/FoundationStates.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { componentRegistryKey, SceneThemeProvider } from '@cratis/scene.react';\nimport { defaultBlueprintComponents } from '../defaultBlueprintComponents';\nimport { defaultBlueprintName } from '../packageName';\nimport { darkTheme, lightTheme } from '../themes';\nimport { ComponentState, componentStates } from './ComponentState';\nimport { foundationElement, foundationSamples } from './foundationSamples';\n\nexport interface FoundationStatesProps {\n /** The bare name of the foundation component. */\n component: string;\n\n /** The theme the states are drawn in. */\n theme: 'light' | 'dark';\n\n /** Properties to lay over the sample, to show a variant. */\n properties?: Record<string, unknown>;\n\n /** Whether the page reads right to left. */\n rightToLeft?: boolean;\n}\n\n/**\n * Every standard state of one foundation component side by side in one theme: the preview of spec Part B 6 (\"all standard states\n * implemented and previewable\"), used by the stories and by the gallery.\n */\nexport function FoundationStates({ component, theme, properties, rightToLeft }: FoundationStatesProps) {\n const Component = defaultBlueprintComponents[componentRegistryKey(defaultBlueprintName, component)];\n const sample = foundationSamples[component];\n const states = sample?.stateful ? componentStates : [ComponentState.Ready];\n\n return (\n <SceneThemeProvider theme={theme === 'dark' ? darkTheme : lightTheme}>\n <div dir={rightToLeft ? 'rtl' : 'ltr'} className='foundation-states' style={{ display: 'grid', gap: '1rem', padding: '1rem', gridTemplateColumns: 'repeat(auto-fill, minmax(18rem, 1fr))', background: 'var(--scene-surface-background)', color: 'var(--scene-text-color)' }}>\n {states.map(state => (\n <figure key={state} style={{ margin: 0 }}>\n <figcaption style={{ fontSize: '0.75rem', textTransform: 'uppercase', marginBlockEnd: '0.5rem' }}>{state}</figcaption>\n <Component element={foundationElement(component, { ...sample?.properties, ...properties }, state === ComponentState.Ready ? undefined : state)} slots={{}} />\n </figure>\n ))}\n </div>\n </SceneThemeProvider>\n );\n}\n"],"names":["FoundationStates","component","theme","properties","rightToLeft","Component","defaultBlueprintComponents","componentRegistryKey","defaultBlueprintName","sample","foundationSamples","states","stateful","componentStates","ComponentState","Ready","_jsx","SceneThemeProvider","darkTheme","lightTheme","div","dir","className","style","display","gap","padding","gridTemplateColumns","background","color","map","state","_jsxs","figure","margin","figcaption","fontSize","textTransform","marginBlockEnd","element","foundationElement","undefined","slots"],"mappings":";;;;;;;;;;AAwBA;;;IAIO,SAASA,gBAAAA,CAAiB,EAAEC,SAAS,EAAEC,KAAK,EAAEC,UAAU,EAAEC,WAAW,EAAyB,EAAA;AACjG,IAAA,MAAMC,SAAAA,GAAYC,0BAA0B,CAACC,oBAAAA,CAAqBC,sBAAsBP,SAAAA,CAAAA,CAAW;IACnG,MAAMQ,MAAAA,GAASC,iBAAiB,CAACT,SAAAA,CAAU;IAC3C,MAAMU,MAAAA,GAASF,MAAAA,EAAQG,QAAAA,GAAWC,eAAAA,GAAkB;AAACC,QAAAA,cAAAA,CAAeC;AAAM,KAAA;AAE1E,IAAA,qBACIC,GAAA,CAACC,kBAAAA,EAAAA;QAAmBf,KAAAA,EAAOA,KAAAA,KAAU,SAASgB,SAAAA,GAAYC,UAAAA;AACtD,QAAA,QAAA,gBAAAH,GAAA,CAACI,KAAAA,EAAAA;AAAIC,YAAAA,GAAAA,EAAKjB,cAAc,KAAA,GAAQ,KAAA;YAAOkB,SAAAA,EAAU,mBAAA;YAAoBC,KAAAA,EAAO;gBAAEC,OAAAA,EAAS,MAAA;gBAAQC,GAAAA,EAAK,MAAA;gBAAQC,OAAAA,EAAS,MAAA;gBAAQC,mBAAAA,EAAqB,uCAAA;gBAAyCC,UAAAA,EAAY,iCAAA;gBAAmCC,KAAAA,EAAO;AAA0B,aAAA;AACtQlB,YAAAA,QAAAA,EAAAA,MAAAA,CAAOmB,GAAG,CAACC,CAAAA,KAAAA,iBACRC,IAAA,CAACC,QAAAA,EAAAA;oBAAmBV,KAAAA,EAAO;wBAAEW,MAAAA,EAAQ;AAAE,qBAAA;;sCACnClB,GAAA,CAACmB,YAAAA,EAAAA;4BAAWZ,KAAAA,EAAO;gCAAEa,QAAAA,EAAU,SAAA;gCAAWC,aAAAA,EAAe,WAAA;gCAAaC,cAAAA,EAAgB;AAAS,6BAAA;AAAIP,4BAAAA,QAAAA,EAAAA;;sCACnGf,GAAA,CAACX,SAAAA,EAAAA;AAAUkC,4BAAAA,OAAAA,EAASC,kBAAkBvC,SAAAA,EAAW;AAAE,gCAAA,GAAGQ,QAAQN,UAAU;AAAE,gCAAA,GAAGA;AAAW,6BAAA,EAAG4B,KAAAA,KAAUjB,cAAAA,CAAeC,KAAK,GAAG0B,SAAAA,GAAYV,KAAAA,CAAAA;AAAQW,4BAAAA,KAAAA,EAAO;;;AAF9IX,iBAAAA,EAAAA,KAAAA,CAAAA;;;AAQjC;;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ExternalComponent } from '@cratis/scene.model';
|
|
2
|
+
export declare enum PermissionRule {
|
|
3
|
+
Enabled = "enabled",
|
|
4
|
+
Disabled = "disabled",
|
|
5
|
+
Hidden = "hidden"
|
|
6
|
+
}
|
|
7
|
+
export declare function readPermissionRule(element: ExternalComponent, property?: string): PermissionRule;
|
|
8
|
+
//# sourceMappingURL=PermissionRule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PermissionRule.d.ts","sourceRoot":"","sources":["../../../foundation/PermissionRule.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAOxD,oBAAY,cAAc;IAEtB,OAAO,YAAY;IAGnB,QAAQ,aAAa;IAGrB,MAAM,WAAW;CACpB;AAGD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,SAAe,GAAG,cAAc,CAGtG"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
/**
|
|
4
|
+
* What an action control does when the user lacks the permission it needs (spec Part B 1.5): it is shown and works, shown and
|
|
5
|
+
* refuses, or not shown. A template never assumes a role, so every action declares one of these and the host's permission
|
|
6
|
+
* evaluation sets it.
|
|
7
|
+
*/ var PermissionRule = /*#__PURE__*/ function(PermissionRule) {
|
|
8
|
+
/** The control works. */ PermissionRule["Enabled"] = "enabled";
|
|
9
|
+
/** The control is shown but cannot be used, and says why. */ PermissionRule["Disabled"] = "disabled";
|
|
10
|
+
/** The control is not rendered. */ PermissionRule["Hidden"] = "hidden";
|
|
11
|
+
return PermissionRule;
|
|
12
|
+
}({});
|
|
13
|
+
/** Reads a permission rule from a property, defaulting to Enabled for anything that is not a rule. */ function readPermissionRule(element, property = 'permission') {
|
|
14
|
+
const value = element.properties[property];
|
|
15
|
+
return value === "disabled" || value === "hidden" ? value : "enabled";
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { PermissionRule, readPermissionRule };
|
|
19
|
+
//# sourceMappingURL=PermissionRule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PermissionRule.js","sources":["../../../foundation/PermissionRule.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ExternalComponent } from '@cratis/scene.model';\n\n/**\n * What an action control does when the user lacks the permission it needs (spec Part B 1.5): it is shown and works, shown and\n * refuses, or not shown. A template never assumes a role, so every action declares one of these and the host's permission\n * evaluation sets it.\n */\nexport enum PermissionRule {\n /** The control works. */\n Enabled = 'enabled',\n\n /** The control is shown but cannot be used, and says why. */\n Disabled = 'disabled',\n\n /** The control is not rendered. */\n Hidden = 'hidden',\n}\n\n/** Reads a permission rule from a property, defaulting to Enabled for anything that is not a rule. */\nexport function readPermissionRule(element: ExternalComponent, property = 'permission'): PermissionRule {\n const value = element.properties[property];\n return value === PermissionRule.Disabled || value === PermissionRule.Hidden ? value : PermissionRule.Enabled;\n}\n"],"names":["PermissionRule","readPermissionRule","element","property","value","properties"],"mappings":"AAAA;AACA;AAIA;;;;IAKO,IAAKA,cAAAA,iBAAAA,SAAAA,cAAAA,EAAAA;8BACe,cAAA,CAAA,SAAA,CAAA,GAAA,SAAA;kEAGoC,cAAA,CAAA,UAAA,CAAA,GAAA,UAAA;wCAG1B,cAAA,CAAA,QAAA,CAAA,GAAA,QAAA;AAPzBA,IAAAA,OAAAA,cAAAA;AASX,CAAA,CAAA,EAAA;AAED,uGACO,SAASC,mBAAmBC,OAA0B,EAAEC,WAAW,YAAY,EAAA;AAClF,IAAA,MAAMC,KAAAA,GAAQF,OAAAA,CAAQG,UAAU,CAACF,QAAAA,CAAS;AAC1C,IAAA,OAAOC,wBAAqCA,KAAAA,KAAAA,QAAAA,GAAkCA,KAAAA,GAAAA,SAAAA;AAClF;;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { RegisteredComponentProps } from '@cratis/scene.react';
|
|
2
|
+
export declare const savedViewActionOutput = "action";
|
|
3
|
+
export declare function SavedViewsMenu({ element, interactions, bindingOutputs }: RegisteredComponentProps): import("react").JSX.Element;
|
|
4
|
+
//# sourceMappingURL=SavedViewsMenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SavedViewsMenu.d.ts","sourceRoot":"","sources":["../../../foundation/SavedViewsMenu.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,wBAAwB,EAAkB,MAAM,qBAAqB,CAAC;AAU/E,eAAO,MAAM,qBAAqB,WAAW,CAAC;AAW9C,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,wBAAwB,+BAoEjG"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { useMemo, useState, useId, useRef, useEffect } from 'react';
|
|
3
|
+
import { useValueOutput } from '@cratis/scene.react';
|
|
4
|
+
import { readComponentState, ComponentState } from './ComponentState.js';
|
|
5
|
+
import { FoundationIcon } from './FoundationIcon.js';
|
|
6
|
+
import { readFoundationStrings } from './foundationStrings.js';
|
|
7
|
+
import { readPermissionRule, PermissionRule } from './PermissionRule.js';
|
|
8
|
+
import { FoundationFrame } from './StateFrame.js';
|
|
9
|
+
import { readOptionalString } from '../shell/elementProperties.js';
|
|
10
|
+
import { readViews } from './viewModel.js';
|
|
11
|
+
|
|
12
|
+
/** The output a menu action is published under: `save` or `manage`, which the host acts on. */ const savedViewActionOutput = 'action';
|
|
13
|
+
/**
|
|
14
|
+
* The `savedViewsMenu` component: a list's saved views as a menu button, with the current view as its label.
|
|
15
|
+
*
|
|
16
|
+
* `views` are the choices (id, label, description) and `activeView` the one in force. Choosing a view publishes its id as the `value`
|
|
17
|
+
* output and runs the behaviors attached to the element, so a screen binds its query to the view. The menu follows the ARIA menu
|
|
18
|
+
* pattern: arrows, Home and End move, Enter chooses, Escape closes and returns focus to the button. "Save current view" and
|
|
19
|
+
* "Manage views" publish `save` or `manage` on the `action` output, and each honours its own permission rule (`savePermission`,
|
|
20
|
+
* `managePermission`): hidden, or disabled with the reason.
|
|
21
|
+
*/ function SavedViewsMenu({ element, interactions, bindingOutputs }) {
|
|
22
|
+
const views = useMemo(()=>readViews(element.properties.views), [
|
|
23
|
+
element.properties.views
|
|
24
|
+
]);
|
|
25
|
+
const suppliedActive = readOptionalString(element, 'activeView') ?? views[0]?.id;
|
|
26
|
+
const [active, setActive] = useState(suppliedActive);
|
|
27
|
+
const [open, setOpen] = useState(false);
|
|
28
|
+
const strings = readFoundationStrings(element);
|
|
29
|
+
const state = readComponentState(element, views.length > 0);
|
|
30
|
+
const menuId = useId();
|
|
31
|
+
const button = useRef(null);
|
|
32
|
+
const menu = useRef(null);
|
|
33
|
+
const rules = {
|
|
34
|
+
save: readPermissionRule(element, 'savePermission'),
|
|
35
|
+
manage: readPermissionRule(element, 'managePermission')
|
|
36
|
+
};
|
|
37
|
+
useEffect(()=>setActive(suppliedActive), [
|
|
38
|
+
suppliedActive
|
|
39
|
+
]);
|
|
40
|
+
useValueOutput(bindingOutputs, active);
|
|
41
|
+
useEffect(()=>{
|
|
42
|
+
if (open) menu.current?.querySelector('[role^="menuitem"]:not([aria-disabled="true"])')?.focus();
|
|
43
|
+
}, [
|
|
44
|
+
open
|
|
45
|
+
]);
|
|
46
|
+
const items = ()=>Array.from(menu.current?.querySelectorAll('[role^="menuitem"]:not([aria-disabled="true"])') ?? []);
|
|
47
|
+
const move = (event)=>{
|
|
48
|
+
const entries = items();
|
|
49
|
+
const index = entries.indexOf(document.activeElement);
|
|
50
|
+
const target = event.key === 'ArrowDown' ? (index + 1) % entries.length : event.key === 'ArrowUp' ? (index - 1 + entries.length) % entries.length : event.key === 'Home' ? 0 : event.key === 'End' ? entries.length - 1 : -1;
|
|
51
|
+
if (target >= 0) {
|
|
52
|
+
event.preventDefault();
|
|
53
|
+
entries[target]?.focus();
|
|
54
|
+
}
|
|
55
|
+
if (event.key === 'Escape') {
|
|
56
|
+
setOpen(false);
|
|
57
|
+
button.current?.focus();
|
|
58
|
+
}
|
|
59
|
+
if (event.key === 'Tab') setOpen(false);
|
|
60
|
+
};
|
|
61
|
+
const choose = (id)=>{
|
|
62
|
+
setActive(id);
|
|
63
|
+
setOpen(false);
|
|
64
|
+
button.current?.focus();
|
|
65
|
+
interactions?.onSelect?.();
|
|
66
|
+
};
|
|
67
|
+
const run = (action)=>{
|
|
68
|
+
bindingOutputs?.setOutput(savedViewActionOutput, action);
|
|
69
|
+
setOpen(false);
|
|
70
|
+
button.current?.focus();
|
|
71
|
+
interactions?.onClick?.({
|
|
72
|
+
stopPropagation: ()=>undefined
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
const label = views.find((view)=>view.id === active)?.label ?? strings.viewsDefault;
|
|
76
|
+
return /*#__PURE__*/ jsx(FoundationFrame, {
|
|
77
|
+
element: element,
|
|
78
|
+
interactions: interactions,
|
|
79
|
+
name: "saved-views",
|
|
80
|
+
state: state,
|
|
81
|
+
skeleton: [
|
|
82
|
+
45
|
|
83
|
+
],
|
|
84
|
+
children: state !== ComponentState.Loading && /*#__PURE__*/ jsxs("div", {
|
|
85
|
+
className: "foundation-popover-host",
|
|
86
|
+
children: [
|
|
87
|
+
/*#__PURE__*/ jsxs("button", {
|
|
88
|
+
ref: button,
|
|
89
|
+
type: "button",
|
|
90
|
+
className: "foundation-button",
|
|
91
|
+
"data-emphasis": "secondary",
|
|
92
|
+
"aria-haspopup": "menu",
|
|
93
|
+
"aria-expanded": open,
|
|
94
|
+
"aria-controls": menuId,
|
|
95
|
+
onClick: ()=>setOpen(!open),
|
|
96
|
+
onKeyDown: (event)=>{
|
|
97
|
+
if (event.key === 'ArrowDown' && !open) {
|
|
98
|
+
event.preventDefault();
|
|
99
|
+
setOpen(true);
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
children: [
|
|
103
|
+
/*#__PURE__*/ jsx("span", {
|
|
104
|
+
className: "foundation-visually-hidden",
|
|
105
|
+
children: `${strings.viewsLabel}: `
|
|
106
|
+
}),
|
|
107
|
+
/*#__PURE__*/ jsx("span", {
|
|
108
|
+
children: label
|
|
109
|
+
}),
|
|
110
|
+
/*#__PURE__*/ jsx(FoundationIcon, {
|
|
111
|
+
name: "chevron-down"
|
|
112
|
+
})
|
|
113
|
+
]
|
|
114
|
+
}),
|
|
115
|
+
/*#__PURE__*/ jsxs("div", {
|
|
116
|
+
id: menuId,
|
|
117
|
+
ref: menu,
|
|
118
|
+
className: "foundation-popover",
|
|
119
|
+
role: "menu",
|
|
120
|
+
"aria-label": strings.viewsLabel,
|
|
121
|
+
hidden: !open,
|
|
122
|
+
onKeyDown: move,
|
|
123
|
+
children: [
|
|
124
|
+
views.length === 0 && /*#__PURE__*/ jsx("span", {
|
|
125
|
+
className: "foundation-count",
|
|
126
|
+
children: strings.viewsNone
|
|
127
|
+
}),
|
|
128
|
+
views.map((view)=>/*#__PURE__*/ jsxs("button", {
|
|
129
|
+
type: "button",
|
|
130
|
+
role: "menuitemradio",
|
|
131
|
+
"aria-checked": view.id === active,
|
|
132
|
+
className: "foundation-menu-item",
|
|
133
|
+
tabIndex: -1,
|
|
134
|
+
onClick: ()=>choose(view.id),
|
|
135
|
+
children: [
|
|
136
|
+
/*#__PURE__*/ jsx("span", {
|
|
137
|
+
className: "foundation-menu-check",
|
|
138
|
+
children: view.id === active && /*#__PURE__*/ jsx(FoundationIcon, {
|
|
139
|
+
name: "check"
|
|
140
|
+
})
|
|
141
|
+
}),
|
|
142
|
+
/*#__PURE__*/ jsx("span", {
|
|
143
|
+
children: view.label
|
|
144
|
+
}),
|
|
145
|
+
view.description && /*#__PURE__*/ jsx("span", {
|
|
146
|
+
className: "foundation-count",
|
|
147
|
+
children: view.description
|
|
148
|
+
})
|
|
149
|
+
]
|
|
150
|
+
}, view.id)),
|
|
151
|
+
(rules.save !== PermissionRule.Hidden || rules.manage !== PermissionRule.Hidden) && /*#__PURE__*/ jsx("hr", {
|
|
152
|
+
className: "foundation-separator"
|
|
153
|
+
}),
|
|
154
|
+
rules.save !== PermissionRule.Hidden && /*#__PURE__*/ jsxs("button", {
|
|
155
|
+
type: "button",
|
|
156
|
+
role: "menuitem",
|
|
157
|
+
className: "foundation-menu-item",
|
|
158
|
+
tabIndex: -1,
|
|
159
|
+
"aria-disabled": rules.save === PermissionRule.Disabled || undefined,
|
|
160
|
+
title: rules.save === PermissionRule.Disabled ? strings.disabledNoPermission : undefined,
|
|
161
|
+
onClick: rules.save === PermissionRule.Enabled ? ()=>run('save') : undefined,
|
|
162
|
+
children: [
|
|
163
|
+
/*#__PURE__*/ jsx("span", {
|
|
164
|
+
className: "foundation-menu-check"
|
|
165
|
+
}),
|
|
166
|
+
/*#__PURE__*/ jsx("span", {
|
|
167
|
+
children: strings.viewsSave
|
|
168
|
+
})
|
|
169
|
+
]
|
|
170
|
+
}),
|
|
171
|
+
rules.manage !== PermissionRule.Hidden && /*#__PURE__*/ jsxs("button", {
|
|
172
|
+
type: "button",
|
|
173
|
+
role: "menuitem",
|
|
174
|
+
className: "foundation-menu-item",
|
|
175
|
+
tabIndex: -1,
|
|
176
|
+
"aria-disabled": rules.manage === PermissionRule.Disabled || undefined,
|
|
177
|
+
title: rules.manage === PermissionRule.Disabled ? strings.disabledNoPermission : undefined,
|
|
178
|
+
onClick: rules.manage === PermissionRule.Enabled ? ()=>run('manage') : undefined,
|
|
179
|
+
children: [
|
|
180
|
+
/*#__PURE__*/ jsx("span", {
|
|
181
|
+
className: "foundation-menu-check"
|
|
182
|
+
}),
|
|
183
|
+
/*#__PURE__*/ jsx("span", {
|
|
184
|
+
children: strings.viewsManage
|
|
185
|
+
})
|
|
186
|
+
]
|
|
187
|
+
})
|
|
188
|
+
]
|
|
189
|
+
})
|
|
190
|
+
]
|
|
191
|
+
})
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
export { SavedViewsMenu, savedViewActionOutput };
|
|
196
|
+
//# sourceMappingURL=SavedViewsMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SavedViewsMenu.js","sources":["../../../foundation/SavedViewsMenu.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { KeyboardEvent, useEffect, useId, useMemo, useRef, useState } from 'react';\nimport { RegisteredComponentProps, useValueOutput } from '@cratis/scene.react';\nimport { ComponentState, readComponentState } from './ComponentState';\nimport { FoundationIcon } from './FoundationIcon';\nimport { readFoundationStrings } from './foundationStrings';\nimport { PermissionRule, readPermissionRule } from './PermissionRule';\nimport { FoundationFrame } from './StateFrame';\nimport { readOptionalString } from '../shell/elementProperties';\nimport { readViews } from './viewModel';\n\n/** The output a menu action is published under: `save` or `manage`, which the host acts on. */\nexport const savedViewActionOutput = 'action';\n\n/**\n * The `savedViewsMenu` component: a list's saved views as a menu button, with the current view as its label.\n *\n * `views` are the choices (id, label, description) and `activeView` the one in force. Choosing a view publishes its id as the `value`\n * output and runs the behaviors attached to the element, so a screen binds its query to the view. The menu follows the ARIA menu\n * pattern: arrows, Home and End move, Enter chooses, Escape closes and returns focus to the button. \"Save current view\" and\n * \"Manage views\" publish `save` or `manage` on the `action` output, and each honours its own permission rule (`savePermission`,\n * `managePermission`): hidden, or disabled with the reason.\n */\nexport function SavedViewsMenu({ element, interactions, bindingOutputs }: RegisteredComponentProps) {\n const views = useMemo(() => readViews(element.properties.views), [element.properties.views]);\n const suppliedActive = readOptionalString(element, 'activeView') ?? views[0]?.id;\n const [active, setActive] = useState<string | undefined>(suppliedActive);\n const [open, setOpen] = useState(false);\n const strings = readFoundationStrings(element);\n const state = readComponentState(element, views.length > 0);\n const menuId = useId();\n const button = useRef<HTMLButtonElement>(null);\n const menu = useRef<HTMLDivElement>(null);\n const rules = { save: readPermissionRule(element, 'savePermission'), manage: readPermissionRule(element, 'managePermission') };\n\n useEffect(() => setActive(suppliedActive), [suppliedActive]);\n useValueOutput(bindingOutputs, active);\n useEffect(() => { if (open) menu.current?.querySelector<HTMLElement>('[role^=\"menuitem\"]:not([aria-disabled=\"true\"])')?.focus(); }, [open]);\n\n const items = () => Array.from(menu.current?.querySelectorAll<HTMLElement>('[role^=\"menuitem\"]:not([aria-disabled=\"true\"])') ?? []);\n const move = (event: KeyboardEvent) => {\n const entries = items();\n const index = entries.indexOf(document.activeElement as HTMLElement);\n const target = event.key === 'ArrowDown' ? (index + 1) % entries.length : event.key === 'ArrowUp' ? (index - 1 + entries.length) % entries.length\n : event.key === 'Home' ? 0 : event.key === 'End' ? entries.length - 1 : -1;\n\n if (target >= 0) { event.preventDefault(); entries[target]?.focus(); }\n if (event.key === 'Escape') { setOpen(false); button.current?.focus(); }\n if (event.key === 'Tab') setOpen(false);\n };\n const choose = (id: string) => { setActive(id); setOpen(false); button.current?.focus(); interactions?.onSelect?.(); };\n const run = (action: 'save' | 'manage') => { bindingOutputs?.setOutput(savedViewActionOutput, action); setOpen(false); button.current?.focus(); interactions?.onClick?.({ stopPropagation: () => undefined }); };\n const label = views.find(view => view.id === active)?.label ?? strings.viewsDefault;\n\n return (\n <FoundationFrame element={element} interactions={interactions} name='saved-views' state={state} skeleton={[45]}>\n {state !== ComponentState.Loading && (\n <div className='foundation-popover-host'>\n <button ref={button} type='button' className='foundation-button' data-emphasis='secondary' aria-haspopup='menu' aria-expanded={open} aria-controls={menuId}\n onClick={() => setOpen(!open)} onKeyDown={event => { if (event.key === 'ArrowDown' && !open) { event.preventDefault(); setOpen(true); } }}>\n <span className='foundation-visually-hidden'>{`${strings.viewsLabel}: `}</span>\n <span>{label}</span>\n <FoundationIcon name='chevron-down' />\n </button>\n <div id={menuId} ref={menu} className='foundation-popover' role='menu' aria-label={strings.viewsLabel} hidden={!open} onKeyDown={move}>\n {views.length === 0 && <span className='foundation-count'>{strings.viewsNone}</span>}\n {views.map(view => (\n <button key={view.id} type='button' role='menuitemradio' aria-checked={view.id === active} className='foundation-menu-item' tabIndex={-1} onClick={() => choose(view.id)}>\n <span className='foundation-menu-check'>{view.id === active && <FoundationIcon name='check' />}</span>\n <span>{view.label}</span>\n {view.description && <span className='foundation-count'>{view.description}</span>}\n </button>\n ))}\n {(rules.save !== PermissionRule.Hidden || rules.manage !== PermissionRule.Hidden) && <hr className='foundation-separator' />}\n {rules.save !== PermissionRule.Hidden && (\n <button type='button' role='menuitem' className='foundation-menu-item' tabIndex={-1} aria-disabled={rules.save === PermissionRule.Disabled || undefined}\n title={rules.save === PermissionRule.Disabled ? strings.disabledNoPermission : undefined} onClick={rules.save === PermissionRule.Enabled ? () => run('save') : undefined}>\n <span className='foundation-menu-check' /><span>{strings.viewsSave}</span>\n </button>\n )}\n {rules.manage !== PermissionRule.Hidden && (\n <button type='button' role='menuitem' className='foundation-menu-item' tabIndex={-1} aria-disabled={rules.manage === PermissionRule.Disabled || undefined}\n title={rules.manage === PermissionRule.Disabled ? strings.disabledNoPermission : undefined} onClick={rules.manage === PermissionRule.Enabled ? () => run('manage') : undefined}>\n <span className='foundation-menu-check' /><span>{strings.viewsManage}</span>\n </button>\n )}\n </div>\n </div>\n )}\n </FoundationFrame>\n );\n}\n"],"names":["savedViewActionOutput","SavedViewsMenu","element","interactions","bindingOutputs","views","useMemo","readViews","properties","suppliedActive","readOptionalString","id","active","setActive","useState","open","setOpen","strings","readFoundationStrings","state","readComponentState","length","menuId","useId","button","useRef","menu","rules","save","readPermissionRule","manage","useEffect","useValueOutput","current","querySelector","focus","items","Array","from","querySelectorAll","move","event","entries","index","indexOf","document","activeElement","target","key","preventDefault","choose","onSelect","run","action","setOutput","onClick","stopPropagation","undefined","label","find","view","viewsDefault","_jsx","FoundationFrame","name","skeleton","ComponentState","Loading","_jsxs","div","className","ref","type","data-emphasis","aria-haspopup","aria-expanded","aria-controls","onKeyDown","span","viewsLabel","FoundationIcon","role","aria-label","hidden","viewsNone","map","aria-checked","tabIndex","description","PermissionRule","Hidden","hr","aria-disabled","Disabled","title","disabledNoPermission","Enabled","viewsSave","viewsManage"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatCard.d.ts","sourceRoot":"","sources":["../../../foundation/StatCard.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAgB/D,wBAAgB,QAAQ,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,wBAAwB,+BAwB3E"}
|