scania-digital-design-system / tegel Goto Github PK
View Code? Open in Web Editor NEWTegel Design System
Home Page: https://tegel.scania.com
License: MIT License
Tegel Design System
Home Page: https://tegel.scania.com
License: MIT License
@scania/tegel-angular: 1.6.1
Firefox
Angular
Angular 16.2.0
TdsHeader
and one or more TdsHeaderItem
elements in your html template*ngIf
directive on the TdsHeaderItem
together with slot="end"
*ngIf
directiveHTML template:
<tds-header *ngIf="vm$ | async as vm">
<!-- Other items -->
<tds-header-item slot="end" *ngIf="vm.user" title="Orders">
<a routerLink="/orders">Orders</a>
</tds-header-item>
<!-- Other items -->
</tds-header>
TS component:
export class NavbarComponent {
private readonly document: Document = inject(DOCUMENT);
// KeyPress event to toggle the ngIf directive
private readonly user$ = fromEvent<KeyboardEvent>(
this.document,
'keydown'
).pipe(
filter((e: KeyboardEvent) => e.key === 'x'),
startWith(undefined),
scan((acc: boolean) => !acc, false)
);
// View model for the html template
readonly vm$ = combineLatest({
user: this.user$,
// Other exposed variables
}).pipe(
//concatMap((value) => of(null, value).pipe(delay(0)))
);
}
Please note that I’ve constructed a basic example to illustrate this issue. You can replicate the behavior by copying and pasting the provided code into your environment. Once you’ve done that, press X
in your browser to toggle the value of the *ngIf
directive. Initially, you’ll observe that it renders on the right side. However, upon disabling and re-enabling it, the rendering shifts to the left instead of maintaining its position on the right.
I’ve implemented a temporary workaround for this issue by triggering a ‘re-render’ of the entire TdsHeader
component whenever the view model vm$
emits. However, this is merely a quick fix as it causes all child components to re-render as well. To illustrate this, please uncomment the concatMap
function operator in the pipe. Here’s what happens: when vm$
emits, it first emits a null value. This effectively unrenders the entire TdsHeader
component due to its *ngIf
directive: <tds-header *ngIf="vm$ | async as vm">
. Following this, it emits the actual value, which triggers a re-render of the entire TdsHeader
component. As a result, the TdsHeaderItems
are correctly positioned.
The TdsHeaderItem
element should consistently stay anchored to the right side, regardless of whether the element has been re-rendered or not.
No response
@scania/tegel-angular: 1.8.0
Chrome
Angular
Angular 17
There are 2 bugs
Reproducible on official Tegel Storybook page
No response
When you have not sorted on any column header, there should be double opposite arrows (pointing up and down) on all columns on hover.
Actual initial state: All arrows pointing down on hover.
When event emits "desc" the arrow should end up pointing downwards. When event emits "asc" the arrow should end up pointing upwards.
Actual sorted state: When event emits "desc" the arrow ends up pointing upwards. When event emits "asc" the arrow ends up pointing downwards.
Add warning/error message
Testing
Add dedicated test attributes for selecting interactable elements inside the Tegel components to improve the stability of the automated test. The test attribute should only be added to Tegel components that have nested interactable elements that don't automatically get selected when the component itself is selected. For example, the Tegel table row contains an interactable checkbox and a button to expand the row, and these cannot be interacted with by just selecting the row itself. These two elements could use a test id to provide the testers a stable way to interact with them when writing automated tests.
Our team is using Playwright for testing our user interfaces and we add a dedicated test id attribute (data-test
in our case) to the elements we want our tests to interact with. These are mostly buttons and inputs (elements a user would usually interact with). This makes our tests more stable, since other attributes, such as HTML tag names, CSS classes, and IDs are used for development purposes and can change during the development. Having a dedicated test attribute on an element warns the developer that this element is used in the tests and that they need to be careful not to remove it.
Introduce a custom data attribute that is meant to be used for test automation (for example data-tds-test
or data-test
or data-test-id
). Apply the custom data attribute to interactable elements within Tegel components that cannot be interacted with by just interacting with the wrapper component (for example the checkbox and the "expand" button in the Tegel table row). The new test attribute does not have to be applied to every element that matches the criteria, but it would be great if the developers were able to request these elements to be added where needed (and where it is deemed sensible by the Tegel team).
Improve the reliability of the automated tests by using dedicated test attributes that seldom change during development (and are considered a breaking change if removed). Not every element needs a test attribute at the start, but it would be great to define what the dedicated attribute should be called so the developers can request the attribute to be added to various elements within the Tegel components.
No response
No response
No response
Functionality
Make it possible to remove last accordion item bottom border.
In the SSI team I’m building a filter component using an accordion to group the filters. To fulfill the design I need to hide the last accordion item bottom border.
Add prop for removing the last accordion item bottom border.
The outcome should look like this:
@scania/[email protected]
Chrome
Plain HTML
No response
filter
using the controlsThe dropdown should never open when it is disabled, no matter the variant/type.
No response
@scania/tegel: 1.6.1, @scania/tegel-angular: 1.6.1
Chrome
Angular
Angular 16
No angle bracket to be shown after the last item
N/A
Design
Currently, the border of the expandable table row is applied to the bottom of the main row rather than to the bottom of the expanded section. Here is an example:
This makes it look like the expanded section is a separate row. It looks even more confusing if you also expand one row below so the two rows have the same background color. The dividers on the screenshot below make it seem like the first row does not have an expanded section, the second row has an expanded section above the main row and that the last expanded section is standalone:
Here is how the rows are actually grouped:
Here is how my eyes group the rows above:
We tried building a table with expandable sections using Tegel and we got complaints from the users that we demoed the table to that it was difficult to understand which expanded section belongs to which row.
If the row is expanded make sure that the main row (<tr class="tds-table__row">
) does not have a border-bottom, but the expanded row (<tr class="tds-table__row-expand">
) has the border. Here is an image of the expected result:
No response
No response
No response
No response
Functionality
One utility class that would be really nice to add is outline: none !important;
(maybe more outline options)
Instead of adding outline: none on a
button { outline: none !improtant }
sdds-outline-rm {
outline: none;
}
Should be easy to add in the utility classes https://tegel.scania.com/development/utility-classes
Easy way for maintaining a outline option in CSS
No response
No response
No response
@scania/tegel 0.0.8
Edge (Chromium)
Angular
Angular 15
Added the sdds-toggle component in the html. Tried adding an eventlistener in the .ts ngOnInit(). Got a compile time error "property does not exist on type 'Event" on the event.detail.toggleid and on event.detail.checked. Property detail.
const toggleElement = document.querySelector("sdds-toggle");
toggleElement.addEventListener("sddsToggle", (event) => {
console.log("Toggle with id: ", event.detail.toggleId, " is ", event.detail.checked);
});
Add/Copy screenshot here
detail should be recognized.
error TS2339: Property 'detail' does not exist on type 'Event'.
143 console.log("Toggle with id: ", event.detail.toggleId, " is ", event.detail.checked);
@scania/tegel-angular: 1.8.0
Chrome
Angular
Angular 17
<tds-stepper>
<tds-step [index]="1">
<span slot="label">I appear instantly</span>
</tds-step>
@defer (on timer(200ms)) {
<tds-step [index]="2">
<span slot="label">I appear later</span>
</tds-step>
}
</tds-stepper>
Expected result (when both items are rendered on the initial render):
Actual result (when the second item is rendered after the initial render):
I expect the lines between the steps to be rendered correctly no matter if new steps are added after the initial render.
No console errors.
Functionality
Currently, the tds-table-body-row-expandable
component can only be expanded by clicking on the arrow button to the left of the row, but it cannot be expanded programmatically.
The tds-table-body-row-expandable
should be expandable programmatically.
I have a use case where the first row in the table should be automatically expanded by default. Currently, I am unable to achieve this since the tds-table-body-row-expandable
does not allow me to expand it programmatically.
An isExpanded
prop could be added that would control whether or not the table is expanded. The expanded state should be ignored if the user expands the row on their own.
No response
No response
No response
No response
@scania/tegel-angular: 1.6.1
Chrome
Angular
Angular 15.2.0
<tds-table
table-id="target-table"
compact-design="false"
responsive="false"
style="margin-left: 20px"
cdkDropList
[cdkDropListData]="targetTable"
(cdkDropListDropped)="drop($event)"
<tds-table-header>
<tds-header-cell cell-key="truck" cell-value="Truck Id"></tds-header-cell>
<tds-header-cell
cell-key="driver"
cell-value="Driver name"
></tds-header-cell>
<tds-header-cell
cell-key="description"
cell-value="Description"
></tds-header-cell>
<tds-header-cell
cell-key="department"
cell-value="Department"
></tds-header-cell>
</tds-table-header>
<tds-table-body>
<tds-table-body-row
*ngFor="let target of targetTable"
cdkDropList
cdkDrag
[cdkDragData]="target"
>
<tds-body-cell
cellValue="{{ target.id }}"
cellKey="{{ target.id }}"
disable-padding="false"
></tds-body-cell>
<tds-body-cell
cellValue="{{ target.name }}"
cellKey="{{ target.name }}"
disable-padding="false"
></tds-body-cell>
<tds-body-cell
cellValue="{{ target.description }}"
cellKey="{{ target.description }}"
disable-padding="false"
></tds-body-cell>
<tds-body-cell>
<app-drop-down
[options]="earnCodeOptions"
[placeholder]="earnCodePlaceHolder"
name="earnCodeSelect"
(selectionChange)="earnCodeSelectionChanged($event)"
></app-drop-down>
</tds-body-cell>
</tds-table-body-row>
</tds-table-body>
There should not be any console error while drag row from one table to another.
@scania/[email protected]
Chrome
Angular
Angular 16
<tds-slider min="0" max="500" step="1" value="50" ticks="4" show-tick-numbers snap label="Range" tooltip ngDefaultControl #rangeSlider [(ngModel)]="radius" controls thumb-size="sm" ></tds-slider>
Component "tds-slider" should not log any errors.
cpoi.component.html:72 TypeError: Cannot read properties of null (reading 'getBoundingClientRect')
No response
"@scania/tegel-angular": "^1.6.0"
Chrome
Angular
No response
<ng-container *ngFor="let market of configuratorService.markets; let idx = index">
<tds-dropdown-option [value]="market.code">
{{ market.name }}
1: set default value is not working..
2: drop down select event is throwing error
1: The tds dropdown should work with the default value.
2: The tds dropdown shouldn't throw any errors on dropdown select
ERROR Error: Uncaught (in promise): TypeError: Cannot set properties of undefined (setting 'value')
No response
Functionality
We want to be able to position the tegel tooltip component to a different space in relation to its associated reference element,
Currently the tooltip has the offsets predefined, it opens up with a space of 8 between the tooltip and the reference element and it considers the vertical top position 0 of the browser bar when calculating if the content of the tooltip fits in the viewport
allow developers to pass different numbers to the offset properties of the popover core through teh tds-tooltip component's props
We would like the tooltip to appear with a narrower space between it and the reference element (4 instead of 8) and set the top position to be the height of the navbar in order for the tooltip to consider it when calculating if the content fits between the reference element and the navbar and not appear on top or under the navigation element
No response
No response
@scania/tegel-angular: "^1.6.0"
Chrome
Angular
Angular 17
Validate that the header is found before getting the children.
componentWillRender() {
const headerColumnsNo = this.host.parentElement.querySelector('tds-table-header').children.length;
// multiselect and expended features requires one extra column for controls...
if (this.multiselect || this.expandableRows) {
this.columnsNumber = headerColumnsNo + 1;
}
else {
this.columnsNumber = headerColumnsNo;
}
}
@scania/components
@scania/[email protected]
Chrome
Angular
Angular 15
The text should not conflict with the label inside z-index
Add warning/error message
@scania/[email protected]
Chrome
Angular
No response
Should be 1.7.0.
No response
No response
Release should be 1.7.0.
No response
No response
Functionality
Hello Development support - Tegel,
I want to report two issues when trying to implementing tds-inline-tabs in our Angular project:
Dynamic Indexing Support: I am facing issues with dynamically handling the active TabIndex, especially when tabs may not always be visible due to different conditions (if-statements). This hinders us to create dynamic tabs that adapts to our application's changing data.
The event provided when the tab changes is limited to selectedTabIndex. For a more flexible handling of tab changes, events, such as the selectedTabName, would be beneficial as well. This would improve the flexibility of tab components.
selected-index property binding: I've identified that the selected-index property binding in Angular components within the Tegel library doesn't work. The property binding does not seem to update the selected tab based on the bound property value.
These changes would be a great benefit for us, not just now but for other components as well.
Thanks a lot!
By supporting dynamic indexing and event handling (like selectedTabName), our application can offer scenarios where the visibility and relevance of tabs can change based on user actions or data conditions.
For a more flexible handling of tab changes, events, such as the selectedTabName, would be beneficial as well.
No response
No response
No response
Functionality
Currently there only exists multi row select, however, it would be nice to also have single row selection in line with the Tegel docs: https://tegel.scania.com/components/table
In my case I have a data table with 3-4 actions a user can perform. Each action triggers a unique flow, so multi select doesn't make sense in this regard. Being able to single select one row and then select the correct action to take from the data table toolbar is the flow that is desired.
See https://tegel.scania.com/components/table (Single row selection)
See https://tegel.scania.com/components/table (Single row selection)
No response
https://tegel.scania.com/components/table
Functionality
In sdds-table-body we currently load the table information using the 'body-data' attribute. This allows with a multiselect a way to the end user that the value can be selected.
Using an API, we save this information, and when the next time the user is tries to fetch the selected rows we can populate the table and mark their previously selected choices as a clicked checkbox.
We could have a 'selected-body-data' where I can pass the rows which are selected
We currently do this already by using shadowRoot to mark the selected rows, but on low CPU/slow internet situations it fails to work as the shadowRoot for the individual rows are not ready and we try to mark them as selected. Only possible means is to keep a long enough timeout which seems to be a bad solution going forward as the customer may have to wait a lot of time.
I would like an attribute like 'data-selected-rows' or 'selected-body-data' which could allow me to tell the rows which are selected out of all the rows on the table.
As this issue happened on slow internet/slow CPU and i have a custom solution using shadowRoot which is not so good a programmer experience as it could be functionality which could be entirely in the web component.
No response
No response
@scania/tegel: ^1.6.0
Chrome
Angular
Angular 16
<tds-table
[responsive]="true"
[compactDesign]="true"
[noMinWidth]="true"
>
<tds-table-header>
<tds-header-cell
[cellValue]="A very very long text that keeps going and going and never ends and just keeeps going until the bitter end and never stops because it just keeps going and going and just continues through time and space into eternity and just continues after that too..."
sortable="true"
>
</tds-table-header>
<tds-table-body>
<tds-table-body-row></tds-table-body-row>
</tds-table-body>
</tds-table>
There should be padding at the top and bottom even when the text breaks into multiple rows and when it is in compact mode
Add warning/error message
@scania/components
Chrome
Angular
No response
Add an sdds-textfield with an icon in the sdds-suffix slot.
Set this textfield to read only state.
See as both icons overlap.
My suggestion would be adding a prop to disable the read only icon if needed.
Add/Copy screenshot here
Icons shouldn't overlap.
Add warning/error message
No response
@scania/tegel-angular: 1.6.1
Firefox
Angular
Angular 16.2.0
<tds-text-field>
to html templateformControl
property to ittouched
property<form [formGroup]="testForm">
<tds-text-field
ngDefaultControl
[formControl]="testForm.controls.text"
type="text"
size="lg"
label="Bugreport"
label-position="inside"
placeholder="Bugreport" />
<p>Touched: {{ testForm.controls.text.touched }}</p>
</form>
interface TestForm {
text: FormControl<string | null>;
}
@Component({...})
export class TestComponent {
readonly testForm = this.fb.group<TestForm>({
text: this.fb.control(''),
});
}
Now I have temporarily solved this issue by creating a directive for the tds-text-field
. I manually mark the control as dirty and subsequently mark the view as changed in the tdsBlur()
handle:
@Directive({ selector: 'tds-text-field[tdsExt]' })
export class TdsTextFieldExtDirective implements OnDestroy {
private readonly tdsTextField = inject(TdsTextField);
private readonly cdr = inject(ChangeDetectorRef);
@Input({ alias: 'formControl', required: true }) control!: FormControl;
private readonly tdsBlurSub = this.tdsTextField.tdsBlur
.pipe(
tap(() => {
this.control.markAsTouched();
this.cdr.markForCheck();
})
)
.subscribe();
ngOnDestroy(): void {
this.tdsBlurSub.unsubscribe();
}
// ...
}
When a user focuses on a text field and subsequently unfocuses, the field should be marked as touched
.
No response
@scania/tegel: 1.6.1, @scania/tegel-angular: 1.6.1
Chrome
Angular
Angular 16
...
<tds-breadcrumbs>
<tds-breadcrumb *ngFor="let crumb of breadcrumbs; index as i">
<tds-link>
<label (click)="navigate(crumbPath(i, breadcrumbs))">{{ crumb }}</label>
</tds-link>
</tds-breadcrumb>
</tds-breadcrumbs>
last
class should be added to the last tds-breadcrumb
and not the first.
No errors are shown in the console.
@scania/tegel-angular: ^1.7.0
Chrome
Angular
Angular 17
<tds-button type="button" variant="primary" size="sm" text="button text">
<tds-icon slot="icon" name="plus"></tds-icon>
</tds-button>
The margin between text and icon should always be applied, now it seems that it triggers sometimes but not always. Not sure as to why but it seems like the class "tds-button :not(.only-icon).sm.sc-tds-button-s>[slot=icon]" is not applied when the margin is missing.
Working Workaround : If I use the label slot for my button text it's working as expected.
none
Functionality
I would like to be able to programmatically react to and to trigger opening and closing of tds-expandable-rows in tds-tables. So that it works more like the tds-accordion does.
I added a table with expandable-rows and I would like to possibility to both be able to open or close rows from code, and to be able to react to
Expose event for open/close expandable-row
Add input to force open/close expandable-row, or expose method that can be called to open/close expandable row.
Able to listen to when an expandable row opens/closes
Able to trigger opening/closing of an expandable-row
No response
No response
@scania/tegel-angular: 1.6.1
Firefox
Angular
Angular 16.2.0
TdsDropdown
html element with the 'multiselect' propertyformControl
to itformControl.valueChanges
observable and log the emitted value<tds-dropdown
ngDefaultControl
[formControl]="form.controls.groups"
label="Groups"
label-position="inside"
placeholder="None"
size="lg"
open-direction="auto"
multiselect>
<tds-dropdown-option
*ngFor="let group of groups$ | async"
[value]="group.id">
{{ group.name }}
</tds-dropdown-option>
</tds-dropdown>
export class MyComponent {
private readonly fb = inject(FormBuilder);
readonly groups$ = of([
{ id: 1, name: 'Group 1' },
{ id: 2, name: 'Group 2' },
{ id: 3, name: 'Group 3' },
] satisfies GroupModel[]);
readonly form = this.fb.group({
// Other form properties
groups: this.fb.control<number[]>([]),
});
}
The problem is that when you (de)select something, it emits the value of the item that was clicked, not the entire array of selected values. This means that my form control is invalid.
No response
Component TdsDropdown
with multiselect
should emit all selected values as array on (de)selection of an item.
Example of what it should emit (order of the items in the array does not matter):
Initial state: []
Click 1: [1]
Click 3: [1, 3]
Click 2: [1, 3, 2]
Click 3: [1, 2]
Click 1: [2]
Click 2: []
No response
"@scania/tegel-react": "1.8.1"
Chrome
React
React 18.3.1
Demo:
https://quaspar.github.io/tegel-modal-bug-report/
Code:
https://github.com/quaspar/tegel-modal-bug-report/blob/main/src/App.js
Add/Copy screenshot here
Modal should not close as long as the show prop is true.
Add warning/error message
Functionality
Datetime component is missing the control where we can set it to 24h format or 12h format
To access the 24h format within our web app, windows users seem to need to change regional settings on their system. This isnt ideal for them because we have users in various regions. We want to be able to set the format from within our web app so that it is not tied up with the user's personal system settings
No response
Ideally a simple control in the component where we set 12h or 24h format
Alternatively, it would work for us if it were 24h at all times because this is the format of all other times we display throughout our web app
As soon as possible because our UI is being used on a daily basis by scania troubleshooters
No response
@scania/tegel-angular: 1.7.0
Chrome
Angular
Angular 16
Result: The test will fail saying "Cannot find module 'components'".
Component:
@Component({
selector: 'my-component',
template: `<tds-button
type="button"
variant="ghost"
size="sm">
Click me
</tds-button>`,
standalone: true,
imports: [TegelModule],
})
export class MyComponent{}
Tests:
describe('MyComponent', () => {
let component: MyComponent;
let fixture: ComponentFixture<MyComponent>;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [MyComponent],
});
fixture = TestBed.createComponent(MyComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
It should be possible to test a component using Tegel with Jest.
Add warning/error message
@scania/[email protected]
Chrome
Angular
Angular 16
<tds-text-field type="text" size="lg" state="default" label="Label" label-position="no label" read-only no-min-width placeholder="Placeholder">
<tds-icon slot="suffix" name="truck" size="20px"></tds-icon>
</tds-text-field>
No response
Not override the icons or text
No response
No response
Functionality
As we have a limited ammount of types of buttons, when we have components that work as a dashboard and allow the user to take many actions, with just primary/secondary/ghost options, the experience is very poor.
The need for organizing similar actions into groups and simplify the user interface.
No response
No response
No response
No response
No response
Functionality
Hi guys, not a big issue but I saw you updated the node version.
with the node 20 you no longer need dotenv as dependencies.
you can read a bit more here: https://dev.to/cjreads665/nodejs-2060-say-goodbye-to-dotenv-2ijl
make dependency array as clean as possible :)
No response
No response
No response
No response
Functionality
Implement integration with the angular reactive forms for the Tegel Angular components.
It is enough to ensure that all components serving as inputs are compatible with reactive forms.
Currently, the components TegelAngular module do not support integration with the angular reactive forms module, which makes them cumbersome to use in forms.
According to the Stencil documentation, some additional configuration is needed to make this work.
I managed to implement the forms integration on a smaller project.
Implement the angular reactive forms integration for the Tegel Angular components that serve as inputs.
Here is the list of components that should integrate with angular forms in my opinion:
No response
No response
No response
@scania/tegel-react 1.4.0
Chrome
React
React
No response
No response
Component x should be titled with controls.
Add warning/error message
Functionality
When using datepicker ,right now, there is an event called tdsonchange
, so when clicking and switch date it will trigger on change.
In the picture we want to trigger on change only when click within the green square, not the arrows also
We have a scenario when you switch date it will load data, for example from 8 jan to 9 jan, which does work with current solution.
But the problem is that when you lets say switch month with the arrows on top. That also triggers on change event which will load the date for next month. We only want to trigger on change when clicking a picked date(day), not when switch between month.
In the picture we want to trigger on change only when click within the green square, not the arrows also
Maybe add a seperate event, TdsOnChangeDay, that we can listen to, instead of regular on change event.
Another solution would be that you send in the current event, what is being clicked, so if you click a day or the arrows on the top it will send in the event that data, and we can build a condition around it at least.
We would like only to trigger change on when the user clicks on the dates not on any of the buttons around the datepicker for loading data
Prefer soon :)
No response
No response
Functionality
Expose an api to expand and collapse tds-side-menu-dropdown programmatically
we have a search functionality within the side menu items and it would enhance user experience to show the nested search results if they match what they're looking for
expose the collapsed property or expose a toggleCollapseState function
No response
No response
No response
@scania/tegel: 1.6.1, @scania/tegel-angular: 1.6.1
Chrome
Angular
Angular 16
tds-table
element.tdsSort
event listener for sorting.tds-table-toolbar
element inside tds-table
element.tds-table-header
element inside tds-table
element.tds-header-cell
element inside tds-table-header
element.text-align
attribute to tds-header-cell
element. <tds-table
...
(tdsSort)="sort($event)">
<tds-table-toolbar
filter
(tdsFilter)="handleFilter($event)"></tds-table-toolbar>
<tds-table-header>
...
<tds-header-cell
cell-key="actions"
cell-value=""
text-align="right">
</tds-header-cell>
</tds-table-header>
<tds-table-body>
...
</tds-table-body>
<tds-table-footer
pagination
cols="7"
[pages]="pages"
[paginationValue]="pagingValue"
(tdsPagination)="handlePagination($event)">
</tds-table-footer>
</tds-table>
Contents in column should be aligned correctly initially if text-align
attribute is entered for tds-header-cell
element
Design
A standard progress bar that can be used to indicate to the users as they work on step-by-step task based on the instruction received from a system function. Good to have percentage as an option.
We have a picking solution for line feeding where user needs to pick articles based on the instructions from the application. Would be good to have a progress indicator to encourage and have the user informed of the overall progress.
No response
No response
No response
https://carbondesignsystem.com/components/progress-bar/usage/
Functionality
The components such as cards/tooltip/loaders don't have a loading state, thus they appear from nothing; sometimes some of the data which needs to be populated in these is awaited from the backend or is received asynchronously.
There should be a way to have a loading state while the data is getting populated. Examples shimmer effect used by facebook or pulsing animation by linkedin for example.
This is a modern UX pattern which if available in our design system will be great for Scania's own platforms plus other external developers who intend to use this design system. This will be a good UX where network data is slow.
Corporate UI had a generic loader which could be installed in the places, but modern UXs have the skeletal content of the expected data ad not a generic loader. This could be a good start.
A better UX
No response
@scania/tegel-angular: 1.8.0
Chrome
Angular
Angular 17
The first item has padding to the left:
The last item has padding to the right:
The first tds-step should not have padding to the left, so it can be left-aligned with other items.
The last tds-step should not have padding to the right, so it can be right-aligned with other items.
No console errors
@scania/tegel: 1.6.1
Chrome
Angular
Angular 16
Add/Copy screenshot here
Component x should be able to...
Add warning/error message
No response
Design
Full-width option for all tabs variants (inline, folder, navigation).
I am currently developing a tablet front-end and require tabs for navigation purposes. However, the existing tabs are too small, especially when users need to press them. Additionally, integrating larger tabs would enhance the aesthetic appeal of the page, making them a more prominent and integral component of the user interface.
I have tried setting the width to 100%, but this results in a button flickering on the right side of the screen (the button that enables you to scroll through the tabs if the width exceeds the parent width).
Something that looks like the following (Angular Material modified with Tegel theme):
No response
https://material.angular.io/components/tabs/examples#tab-group-stretched
@scania/tegel 1.8.2
Chrome
React
React 18.2.0
<tds-side-menu collapsed persistent aria-label="Side menu" id="demo-side-menu"><tds-side-menu-item> <button> <tds-icon name="star" size="24px"></tds-icon> Values </button> </tds-side-menu-item></tds-side-menu>
That extra space of 1px should be removed.
No response
Design
There is an issue with the Cell Single component in Figma, when you select Size as "Compact" and Col divider as "Left & right". The right "Divider Vertical" doesn't change it's position when changing the cell width.
To make it work I have to detach the component and make the changes myself. Then I lose the ability to easily change the state of the component.
For "Divider Vertical" (the one in the right side of the cell) the following needs to be done:
No response
No response
No response
@scania/tegel-angular: 1.7.0
Angular
Angular 16+
@scania/tegel-angular
and use a tegel component.ng build --verbose
Then we get the following error
Could not resolve "@scania/tegel-angular"
Reproduction repo exists here: https://github.com/adarean5/tegel-angular-esbuild-issue-repro
It should be possible to use @scania/tegel-angular
with esbuild.
Functionality
I would like the Datetime component to have a labelPosition propetry so you can position the label as how you want it. There exists a label but it seems to be positioned outside.
We are replacing Angular Material components with the Tegel ones and the angular material datetime has a labelPosition property.
No response
labelPosition as exists in eg textfield or dropdown
Before week 27
No response
@scania/tegel: 1.3.3
Chrome
Angular
Angular 16
compactDesign
prop on the tds-table
component to true
.disablePadding
prop on the tds-body-cell
to true
.Result: The padding is still applied to the cell.
<tds-table [compactDesign]="true">
<tds-table-header>
<tds-header-cell
cellKey="description"
cellValue="Description"
></tds-header-cell>
</tds-table-header>
<tds-table-body>
<tds-table-body-row>
<tds-body-cell
cellKey="description"
cellValue="Description"
[disablePadding]="true"
></tds-body-cell>
</tds-table-body-row>
</tds-table-body>
</tds-table>
In the dev console, it can be observed that the compact styling overrides the no-padding styling.
After applying the disablePadding
prop to the cell I would expect the cell not to have padding.
None
Other
Just to stay up to date on all bug fixes and feature updates.
Latest released version: https://github.com/ionic-team/stencil/releases/tag/v4.12.5
Looks like this one fixes some issues in creating standalone components for Angular, which since Angular 17 is the perfered way of creating components.
Always good to be up to date on dependancies. Feels like we did a lot of work to upgrade stencil and node deps and would be a shame if we'd fall behind again.
No response
No response
No response
No response
No response
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.